@memberjunction/ng-core-entity-forms 6.1.0-edge.1 → 6.1.0-edge.3

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 (533) hide show
  1. package/LICENSE +180 -4
  2. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.d.ts +12 -0
  3. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.d.ts.map +1 -0
  4. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js +138 -0
  5. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js.map +1 -0
  6. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts +20 -0
  7. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts.map +1 -0
  8. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js +173 -0
  9. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js.map +1 -0
  10. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts +19 -2
  11. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts.map +1 -1
  12. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +50 -9
  13. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -1
  14. package/dist/lib/custom/AIAgents/agent-form-tabs.d.ts +59 -0
  15. package/dist/lib/custom/AIAgents/agent-form-tabs.d.ts.map +1 -0
  16. package/dist/lib/custom/AIAgents/agent-form-tabs.js +53 -0
  17. package/dist/lib/custom/AIAgents/agent-form-tabs.js.map +1 -0
  18. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +54 -0
  19. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  20. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1300 -1143
  21. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  22. package/dist/lib/custom/Actions/action-execution-log-form.component.js +193 -182
  23. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  24. package/dist/lib/custom/Companies/company-header.panel.d.ts +12 -0
  25. package/dist/lib/custom/Companies/company-header.panel.d.ts.map +1 -0
  26. package/dist/lib/custom/Companies/company-header.panel.js +190 -0
  27. package/dist/lib/custom/Companies/company-header.panel.js.map +1 -0
  28. package/dist/lib/custom/Companies/company-overview.panel.d.ts +21 -0
  29. package/dist/lib/custom/Companies/company-overview.panel.d.ts.map +1 -0
  30. package/dist/lib/custom/Companies/company-overview.panel.js +180 -0
  31. package/dist/lib/custom/Companies/company-overview.panel.js.map +1 -0
  32. package/dist/lib/custom/Conversations/conversation-header.panel.d.ts +12 -0
  33. package/dist/lib/custom/Conversations/conversation-header.panel.d.ts.map +1 -0
  34. package/dist/lib/custom/Conversations/conversation-header.panel.js +150 -0
  35. package/dist/lib/custom/Conversations/conversation-header.panel.js.map +1 -0
  36. package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts +23 -0
  37. package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts.map +1 -0
  38. package/dist/lib/custom/Conversations/conversation-overview.panel.js +199 -0
  39. package/dist/lib/custom/Conversations/conversation-overview.panel.js.map +1 -0
  40. package/dist/lib/custom/Employees/employee-header.panel.d.ts +12 -0
  41. package/dist/lib/custom/Employees/employee-header.panel.d.ts.map +1 -0
  42. package/dist/lib/custom/Employees/employee-header.panel.js +180 -0
  43. package/dist/lib/custom/Employees/employee-header.panel.js.map +1 -0
  44. package/dist/lib/custom/Employees/employee-overview.panel.d.ts +21 -0
  45. package/dist/lib/custom/Employees/employee-overview.panel.d.ts.map +1 -0
  46. package/dist/lib/custom/Employees/employee-overview.panel.js +180 -0
  47. package/dist/lib/custom/Employees/employee-overview.panel.js.map +1 -0
  48. package/dist/lib/custom/Entities/entity-form.component.d.ts +4 -1
  49. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  50. package/dist/lib/custom/Entities/entity-form.component.js +216 -173
  51. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  52. package/dist/lib/custom/Files/file-form.component.d.ts +40 -0
  53. package/dist/lib/custom/Files/file-form.component.d.ts.map +1 -0
  54. package/dist/lib/custom/Files/file-form.component.js +654 -0
  55. package/dist/lib/custom/Files/file-form.component.js.map +1 -0
  56. package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.d.ts +101 -0
  57. package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.d.ts.map +1 -0
  58. package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.js +1202 -0
  59. package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.js.map +1 -0
  60. package/dist/lib/custom/Users/user-header.panel.d.ts +12 -0
  61. package/dist/lib/custom/Users/user-header.panel.d.ts.map +1 -0
  62. package/dist/lib/custom/Users/user-header.panel.js +164 -0
  63. package/dist/lib/custom/Users/user-header.panel.js.map +1 -0
  64. package/dist/lib/custom/Users/user-overview.panel.d.ts +19 -0
  65. package/dist/lib/custom/Users/user-overview.panel.d.ts.map +1 -0
  66. package/dist/lib/custom/Users/user-overview.panel.js +172 -0
  67. package/dist/lib/custom/Users/user-overview.panel.js.map +1 -0
  68. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +25 -1
  69. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
  70. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +228 -170
  71. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  72. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +49 -2
  73. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
  74. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +272 -157
  75. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
  76. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts +9 -0
  77. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
  78. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +86 -51
  79. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
  80. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +118 -4
  81. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
  82. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +263 -14
  83. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  84. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +49 -1
  85. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  86. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +384 -265
  87. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  88. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts +10 -1
  89. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts.map +1 -1
  90. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js +25 -3
  91. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js.map +1 -1
  92. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts +21 -1
  93. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts.map +1 -1
  94. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js +11 -0
  95. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js.map +1 -1
  96. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts +28 -0
  97. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts.map +1 -0
  98. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js +120 -0
  99. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js.map +1 -0
  100. package/dist/lib/custom/ai-agent-run/run-tree-timeline-projection.d.ts +98 -0
  101. package/dist/lib/custom/ai-agent-run/run-tree-timeline-projection.d.ts.map +1 -0
  102. package/dist/lib/custom/ai-agent-run/run-tree-timeline-projection.js +403 -0
  103. package/dist/lib/custom/ai-agent-run/run-tree-timeline-projection.js.map +1 -0
  104. package/dist/lib/custom/custom-forms.module.d.ts +33 -29
  105. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  106. package/dist/lib/custom/custom-forms.module.js +27 -9
  107. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  108. package/dist/lib/generated/Entities/MJAIAction/mjaiaction.form.component.js +3 -3
  109. package/dist/lib/generated/Entities/MJAIAction/mjaiaction.form.component.js.map +1 -1
  110. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +300 -294
  111. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  112. package/dist/lib/generated/Entities/MJAIAgentCategory/mjaiagentcategory.form.component.js +31 -23
  113. package/dist/lib/generated/Entities/MJAIAgentCategory/mjaiagentcategory.form.component.js.map +1 -1
  114. package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js +3 -3
  115. package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js.map +1 -1
  116. package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js +14 -16
  117. package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js.map +1 -1
  118. package/dist/lib/generated/Entities/MJAIAgentNoteType/mjaiagentnotetype.form.component.js +2 -2
  119. package/dist/lib/generated/Entities/MJAIAgentNoteType/mjaiagentnotetype.form.component.js.map +1 -1
  120. package/dist/lib/generated/Entities/MJAIAgentRequest/mjaiagentrequest.form.component.js +8 -6
  121. package/dist/lib/generated/Entities/MJAIAgentRequest/mjaiagentrequest.form.component.js.map +1 -1
  122. package/dist/lib/generated/Entities/MJAIAgentRequestType/mjaiagentrequesttype.form.component.js +2 -2
  123. package/dist/lib/generated/Entities/MJAIAgentRequestType/mjaiagentrequesttype.form.component.js.map +1 -1
  124. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +123 -117
  125. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
  126. package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js +35 -27
  127. package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js.map +1 -1
  128. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +47 -49
  129. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -1
  130. package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js +2 -2
  131. package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js.map +1 -1
  132. package/dist/lib/generated/Entities/MJAIAgentStep/mjaiagentstep.form.component.js +3 -3
  133. package/dist/lib/generated/Entities/MJAIAgentStep/mjaiagentstep.form.component.js.map +1 -1
  134. package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js +3 -3
  135. package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js.map +1 -1
  136. package/dist/lib/generated/Entities/MJAIArchitecture/mjaiarchitecture.form.component.js +30 -22
  137. package/dist/lib/generated/Entities/MJAIArchitecture/mjaiarchitecture.form.component.js.map +1 -1
  138. package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js +4 -4
  139. package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js.map +1 -1
  140. package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.js +2 -2
  141. package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.js.map +1 -1
  142. package/dist/lib/generated/Entities/MJAIConfiguration/mjaiconfiguration.form.component.js +72 -64
  143. package/dist/lib/generated/Entities/MJAIConfiguration/mjaiconfiguration.form.component.js.map +1 -1
  144. package/dist/lib/generated/Entities/MJAIModality/mjaimodality.form.component.js +8 -8
  145. package/dist/lib/generated/Entities/MJAIModality/mjaimodality.form.component.js.map +1 -1
  146. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js +198 -196
  147. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js.map +1 -1
  148. package/dist/lib/generated/Entities/MJAIModelPriceType/mjaimodelpricetype.form.component.js +2 -2
  149. package/dist/lib/generated/Entities/MJAIModelPriceType/mjaimodelpricetype.form.component.js.map +1 -1
  150. package/dist/lib/generated/Entities/MJAIModelPriceUnitType/mjaimodelpriceunittype.form.component.js +2 -2
  151. package/dist/lib/generated/Entities/MJAIModelPriceUnitType/mjaimodelpriceunittype.form.component.js.map +1 -1
  152. package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.js +27 -25
  153. package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.js.map +1 -1
  154. package/dist/lib/generated/Entities/MJAIModelVendor/mjaimodelvendor.form.component.js +16 -14
  155. package/dist/lib/generated/Entities/MJAIModelVendor/mjaimodelvendor.form.component.js.map +1 -1
  156. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
  157. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +162 -146
  158. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
  159. package/dist/lib/generated/Entities/MJAIPromptCategory/mjaipromptcategory.form.component.d.ts.map +1 -1
  160. package/dist/lib/generated/Entities/MJAIPromptCategory/mjaipromptcategory.form.component.js +33 -19
  161. package/dist/lib/generated/Entities/MJAIPromptCategory/mjaipromptcategory.form.component.js.map +1 -1
  162. package/dist/lib/generated/Entities/MJAIPromptModel/mjaipromptmodel.form.component.js +2 -2
  163. package/dist/lib/generated/Entities/MJAIPromptModel/mjaipromptmodel.form.component.js.map +1 -1
  164. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +85 -79
  165. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
  166. package/dist/lib/generated/Entities/MJAIPromptRunMedia/mjaipromptrunmedia.form.component.js +2 -2
  167. package/dist/lib/generated/Entities/MJAIPromptRunMedia/mjaipromptrunmedia.form.component.js.map +1 -1
  168. package/dist/lib/generated/Entities/MJAIPromptType/mjaiprompttype.form.component.js +2 -2
  169. package/dist/lib/generated/Entities/MJAIPromptType/mjaiprompttype.form.component.js.map +1 -1
  170. package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js +7 -7
  171. package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js.map +1 -1
  172. package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js +11 -11
  173. package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js.map +1 -1
  174. package/dist/lib/generated/Entities/MJAIVendorTypeDefinition/mjaivendortypedefinition.form.component.js +3 -3
  175. package/dist/lib/generated/Entities/MJAIVendorTypeDefinition/mjaivendortypedefinition.form.component.js.map +1 -1
  176. package/dist/lib/generated/Entities/MJAPIApplication/mjapiapplication.form.component.js +4 -4
  177. package/dist/lib/generated/Entities/MJAPIApplication/mjapiapplication.form.component.js.map +1 -1
  178. package/dist/lib/generated/Entities/MJAPIKey/mjapikey.form.component.js +4 -4
  179. package/dist/lib/generated/Entities/MJAPIKey/mjapikey.form.component.js.map +1 -1
  180. package/dist/lib/generated/Entities/MJAPIScope/mjapiscope.form.component.js +36 -28
  181. package/dist/lib/generated/Entities/MJAPIScope/mjapiscope.form.component.js.map +1 -1
  182. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
  183. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +121 -95
  184. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
  185. package/dist/lib/generated/Entities/MJActionCategory/mjactioncategory.form.component.js +36 -28
  186. package/dist/lib/generated/Entities/MJActionCategory/mjactioncategory.form.component.js.map +1 -1
  187. package/dist/lib/generated/Entities/MJActionContextType/mjactioncontexttype.form.component.js +2 -2
  188. package/dist/lib/generated/Entities/MJActionContextType/mjactioncontexttype.form.component.js.map +1 -1
  189. package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js +13 -13
  190. package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js.map +1 -1
  191. package/dist/lib/generated/Entities/MJActionFilter/mjactionfilter.form.component.js +2 -2
  192. package/dist/lib/generated/Entities/MJActionFilter/mjactionfilter.form.component.js.map +1 -1
  193. package/dist/lib/generated/Entities/MJActionParam/mjactionparam.form.component.js +2 -2
  194. package/dist/lib/generated/Entities/MJActionParam/mjactionparam.form.component.js.map +1 -1
  195. package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js +11 -11
  196. package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js.map +1 -1
  197. package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js +3 -3
  198. package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js.map +1 -1
  199. package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js +2 -2
  200. package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js.map +1 -1
  201. package/dist/lib/generated/Entities/MJArtifact/mjartifact.form.component.js +4 -4
  202. package/dist/lib/generated/Entities/MJArtifact/mjartifact.form.component.js.map +1 -1
  203. package/dist/lib/generated/Entities/MJArtifactType/mjartifacttype.form.component.js +48 -40
  204. package/dist/lib/generated/Entities/MJArtifactType/mjartifacttype.form.component.js.map +1 -1
  205. package/dist/lib/generated/Entities/MJArtifactVersion/mjartifactversion.form.component.js +7 -7
  206. package/dist/lib/generated/Entities/MJArtifactVersion/mjartifactversion.form.component.js.map +1 -1
  207. package/dist/lib/generated/Entities/MJAuditLogType/mjauditlogtype.form.component.js +29 -21
  208. package/dist/lib/generated/Entities/MJAuditLogType/mjauditlogtype.form.component.js.map +1 -1
  209. package/dist/lib/generated/Entities/MJAuthenticationProvider/mjauthenticationprovider.form.component.d.ts +10 -0
  210. package/dist/lib/generated/Entities/MJAuthenticationProvider/mjauthenticationprovider.form.component.d.ts.map +1 -0
  211. package/dist/lib/generated/Entities/MJAuthenticationProvider/mjauthenticationprovider.form.component.js +108 -0
  212. package/dist/lib/generated/Entities/MJAuthenticationProvider/mjauthenticationprovider.form.component.js.map +1 -0
  213. package/dist/lib/generated/Entities/MJAuthorization/mjauthorization.form.component.js +50 -42
  214. package/dist/lib/generated/Entities/MJAuthorization/mjauthorization.form.component.js.map +1 -1
  215. package/dist/lib/generated/Entities/MJClusterAnalysis/mjclusteranalysis.form.component.js +2 -2
  216. package/dist/lib/generated/Entities/MJClusterAnalysis/mjclusteranalysis.form.component.js.map +1 -1
  217. package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js +44 -36
  218. package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js.map +1 -1
  219. package/dist/lib/generated/Entities/MJCommunicationBaseMessageType/mjcommunicationbasemessagetype.form.component.js +3 -3
  220. package/dist/lib/generated/Entities/MJCommunicationBaseMessageType/mjcommunicationbasemessagetype.form.component.js.map +1 -1
  221. package/dist/lib/generated/Entities/MJCommunicationProvider/mjcommunicationprovider.form.component.js +2 -2
  222. package/dist/lib/generated/Entities/MJCommunicationProvider/mjcommunicationprovider.form.component.js.map +1 -1
  223. package/dist/lib/generated/Entities/MJCommunicationProviderMessageType/mjcommunicationprovidermessagetype.form.component.js +2 -2
  224. package/dist/lib/generated/Entities/MJCommunicationProviderMessageType/mjcommunicationprovidermessagetype.form.component.js.map +1 -1
  225. package/dist/lib/generated/Entities/MJCommunicationRun/mjcommunicationrun.form.component.js +2 -2
  226. package/dist/lib/generated/Entities/MJCommunicationRun/mjcommunicationrun.form.component.js.map +1 -1
  227. package/dist/lib/generated/Entities/MJCompany/mjcompany.form.component.js +7 -7
  228. package/dist/lib/generated/Entities/MJCompany/mjcompany.form.component.js.map +1 -1
  229. package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.d.ts.map +1 -1
  230. package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js +32 -14
  231. package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js.map +1 -1
  232. package/dist/lib/generated/Entities/MJCompanyIntegrationEntityMap/mjcompanyintegrationentitymap.form.component.js +3 -3
  233. package/dist/lib/generated/Entities/MJCompanyIntegrationEntityMap/mjcompanyintegrationentitymap.form.component.js.map +1 -1
  234. package/dist/lib/generated/Entities/MJCompanyIntegrationRun/mjcompanyintegrationrun.form.component.d.ts.map +1 -1
  235. package/dist/lib/generated/Entities/MJCompanyIntegrationRun/mjcompanyintegrationrun.form.component.js +44 -26
  236. package/dist/lib/generated/Entities/MJCompanyIntegrationRun/mjcompanyintegrationrun.form.component.js.map +1 -1
  237. package/dist/lib/generated/Entities/MJCompanyIntegrationRunDetail/mjcompanyintegrationrundetail.form.component.js +2 -2
  238. package/dist/lib/generated/Entities/MJCompanyIntegrationRunDetail/mjcompanyintegrationrundetail.form.component.js.map +1 -1
  239. package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js +5 -5
  240. package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js.map +1 -1
  241. package/dist/lib/generated/Entities/MJComponentLibrary/mjcomponentlibrary.form.component.js +2 -2
  242. package/dist/lib/generated/Entities/MJComponentLibrary/mjcomponentlibrary.form.component.js.map +1 -1
  243. package/dist/lib/generated/Entities/MJComponentRegistry/mjcomponentregistry.form.component.js +2 -2
  244. package/dist/lib/generated/Entities/MJComponentRegistry/mjcomponentregistry.form.component.js.map +1 -1
  245. package/dist/lib/generated/Entities/MJContentFileType/mjcontentfiletype.form.component.js +3 -3
  246. package/dist/lib/generated/Entities/MJContentFileType/mjcontentfiletype.form.component.js.map +1 -1
  247. package/dist/lib/generated/Entities/MJContentItem/mjcontentitem.form.component.js +60 -52
  248. package/dist/lib/generated/Entities/MJContentItem/mjcontentitem.form.component.js.map +1 -1
  249. package/dist/lib/generated/Entities/MJContentItemChunk/mjcontentitemchunk.form.component.js +28 -20
  250. package/dist/lib/generated/Entities/MJContentItemChunk/mjcontentitemchunk.form.component.js.map +1 -1
  251. package/dist/lib/generated/Entities/MJContentProcessRun/mjcontentprocessrun.form.component.js +2 -2
  252. package/dist/lib/generated/Entities/MJContentProcessRun/mjcontentprocessrun.form.component.js.map +1 -1
  253. package/dist/lib/generated/Entities/MJContentProcessRunDetail/mjcontentprocessrundetail.form.component.js +2 -2
  254. package/dist/lib/generated/Entities/MJContentProcessRunDetail/mjcontentprocessrundetail.form.component.js.map +1 -1
  255. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js +6 -6
  256. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js.map +1 -1
  257. package/dist/lib/generated/Entities/MJContentSourceType/mjcontentsourcetype.form.component.js +4 -4
  258. package/dist/lib/generated/Entities/MJContentSourceType/mjcontentsourcetype.form.component.js.map +1 -1
  259. package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js +3 -3
  260. package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js.map +1 -1
  261. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +77 -79
  262. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
  263. package/dist/lib/generated/Entities/MJConversationArtifact/mjconversationartifact.form.component.js +4 -4
  264. package/dist/lib/generated/Entities/MJConversationArtifact/mjconversationartifact.form.component.js.map +1 -1
  265. package/dist/lib/generated/Entities/MJConversationArtifactVersion/mjconversationartifactversion.form.component.js +2 -2
  266. package/dist/lib/generated/Entities/MJConversationArtifactVersion/mjconversationartifactversion.form.component.js.map +1 -1
  267. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +76 -68
  268. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
  269. package/dist/lib/generated/Entities/MJCountry/mjcountry.form.component.js +3 -3
  270. package/dist/lib/generated/Entities/MJCountry/mjcountry.form.component.js.map +1 -1
  271. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.d.ts.map +1 -1
  272. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +42 -24
  273. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
  274. package/dist/lib/generated/Entities/MJCredentialCategory/mjcredentialcategory.form.component.d.ts.map +1 -1
  275. package/dist/lib/generated/Entities/MJCredentialCategory/mjcredentialcategory.form.component.js +33 -19
  276. package/dist/lib/generated/Entities/MJCredentialCategory/mjcredentialcategory.form.component.js.map +1 -1
  277. package/dist/lib/generated/Entities/MJCredentialType/mjcredentialtype.form.component.js +6 -6
  278. package/dist/lib/generated/Entities/MJCredentialType/mjcredentialtype.form.component.js.map +1 -1
  279. package/dist/lib/generated/Entities/MJDashboard/mjdashboard.form.component.js +5 -5
  280. package/dist/lib/generated/Entities/MJDashboard/mjdashboard.form.component.js.map +1 -1
  281. package/dist/lib/generated/Entities/MJDashboardCategory/mjdashboardcategory.form.component.d.ts.map +1 -1
  282. package/dist/lib/generated/Entities/MJDashboardCategory/mjdashboardcategory.form.component.js +47 -33
  283. package/dist/lib/generated/Entities/MJDashboardCategory/mjdashboardcategory.form.component.js.map +1 -1
  284. package/dist/lib/generated/Entities/MJDataContext/mjdatacontext.form.component.js +3 -3
  285. package/dist/lib/generated/Entities/MJDataContext/mjdatacontext.form.component.js.map +1 -1
  286. package/dist/lib/generated/Entities/MJDataset/mjdataset.form.component.js +2 -2
  287. package/dist/lib/generated/Entities/MJDataset/mjdataset.form.component.js.map +1 -1
  288. package/dist/lib/generated/Entities/MJDuplicateRun/mjduplicaterun.form.component.js +2 -2
  289. package/dist/lib/generated/Entities/MJDuplicateRun/mjduplicaterun.form.component.js.map +1 -1
  290. package/dist/lib/generated/Entities/MJDuplicateRunDetail/mjduplicaterundetail.form.component.js +2 -2
  291. package/dist/lib/generated/Entities/MJDuplicateRunDetail/mjduplicaterundetail.form.component.js.map +1 -1
  292. package/dist/lib/generated/Entities/MJEmployee/mjemployee.form.component.js +6 -6
  293. package/dist/lib/generated/Entities/MJEmployee/mjemployee.form.component.js.map +1 -1
  294. package/dist/lib/generated/Entities/MJEncryptionAlgorithm/mjencryptionalgorithm.form.component.js +2 -2
  295. package/dist/lib/generated/Entities/MJEncryptionAlgorithm/mjencryptionalgorithm.form.component.js.map +1 -1
  296. package/dist/lib/generated/Entities/MJEncryptionKey/mjencryptionkey.form.component.js +2 -2
  297. package/dist/lib/generated/Entities/MJEncryptionKey/mjencryptionkey.form.component.js.map +1 -1
  298. package/dist/lib/generated/Entities/MJEncryptionKeySource/mjencryptionkeysource.form.component.js +2 -2
  299. package/dist/lib/generated/Entities/MJEncryptionKeySource/mjencryptionkeysource.form.component.js.map +1 -1
  300. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  301. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +604 -530
  302. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  303. package/dist/lib/generated/Entities/MJEntityAction/mjentityaction.form.component.js +42 -40
  304. package/dist/lib/generated/Entities/MJEntityAction/mjentityaction.form.component.js.map +1 -1
  305. package/dist/lib/generated/Entities/MJEntityActionInvocationType/mjentityactioninvocationtype.form.component.js +3 -3
  306. package/dist/lib/generated/Entities/MJEntityActionInvocationType/mjentityactioninvocationtype.form.component.js.map +1 -1
  307. package/dist/lib/generated/Entities/MJEntityActionParam/mjentityactionparam.form.component.d.ts.map +1 -1
  308. package/dist/lib/generated/Entities/MJEntityActionParam/mjentityactionparam.form.component.js +7 -13
  309. package/dist/lib/generated/Entities/MJEntityActionParam/mjentityactionparam.form.component.js.map +1 -1
  310. package/dist/lib/generated/Entities/MJEntityCommunicationMessageType/mjentitycommunicationmessagetype.form.component.js +2 -2
  311. package/dist/lib/generated/Entities/MJEntityCommunicationMessageType/mjentitycommunicationmessagetype.form.component.js.map +1 -1
  312. package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js +5 -5
  313. package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js.map +1 -1
  314. package/dist/lib/generated/Entities/MJEntityDocumentType/mjentitydocumenttype.form.component.js +2 -2
  315. package/dist/lib/generated/Entities/MJEntityDocumentType/mjentitydocumenttype.form.component.js.map +1 -1
  316. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.d.ts.map +1 -1
  317. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js +28 -18
  318. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js.map +1 -1
  319. package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js +2 -2
  320. package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js.map +1 -1
  321. package/dist/lib/generated/Entities/MJEntityRecordDocument/mjentityrecorddocument.form.component.js +2 -2
  322. package/dist/lib/generated/Entities/MJEntityRecordDocument/mjentityrecorddocument.form.component.js.map +1 -1
  323. package/dist/lib/generated/Entities/MJEntityRelationship/mjentityrelationship.form.component.js +10 -8
  324. package/dist/lib/generated/Entities/MJEntityRelationship/mjentityrelationship.form.component.js.map +1 -1
  325. package/dist/lib/generated/Entities/MJEntityRelationshipDisplayComponent/mjentityrelationshipdisplaycomponent.form.component.js +2 -2
  326. package/dist/lib/generated/Entities/MJEntityRelationshipDisplayComponent/mjentityrelationshipdisplaycomponent.form.component.js.map +1 -1
  327. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js +8 -8
  328. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js.map +1 -1
  329. package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js +2 -2
  330. package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js.map +1 -1
  331. package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js +2 -2
  332. package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js.map +1 -1
  333. package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.js +2 -2
  334. package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.js.map +1 -1
  335. package/dist/lib/generated/Entities/MJExternalDataSource/mjexternaldatasource.form.component.js +3 -3
  336. package/dist/lib/generated/Entities/MJExternalDataSource/mjexternaldatasource.form.component.js.map +1 -1
  337. package/dist/lib/generated/Entities/MJExternalDataSourceType/mjexternaldatasourcetype.form.component.js +2 -2
  338. package/dist/lib/generated/Entities/MJExternalDataSourceType/mjexternaldatasourcetype.form.component.js.map +1 -1
  339. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +9 -9
  340. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
  341. package/dist/lib/generated/Entities/MJFileCategory/mjfilecategory.form.component.d.ts.map +1 -1
  342. package/dist/lib/generated/Entities/MJFileCategory/mjfilecategory.form.component.js +33 -19
  343. package/dist/lib/generated/Entities/MJFileCategory/mjfilecategory.form.component.js.map +1 -1
  344. package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.js +7 -7
  345. package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.js.map +1 -1
  346. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js +6 -6
  347. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
  348. package/dist/lib/generated/Entities/MJFormChromeRule/mjformchromerule.form.component.d.ts +10 -0
  349. package/dist/lib/generated/Entities/MJFormChromeRule/mjformchromerule.form.component.d.ts.map +1 -0
  350. package/dist/lib/generated/Entities/MJFormChromeRule/mjformchromerule.form.component.js +82 -0
  351. package/dist/lib/generated/Entities/MJFormChromeRule/mjformchromerule.form.component.js.map +1 -0
  352. package/dist/lib/generated/Entities/MJGeneratedCodeCategory/mjgeneratedcodecategory.form.component.d.ts.map +1 -1
  353. package/dist/lib/generated/Entities/MJGeneratedCodeCategory/mjgeneratedcodecategory.form.component.js +33 -19
  354. package/dist/lib/generated/Entities/MJGeneratedCodeCategory/mjgeneratedcodecategory.form.component.js.map +1 -1
  355. package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js +5 -5
  356. package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js.map +1 -1
  357. package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js +3 -3
  358. package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js.map +1 -1
  359. package/dist/lib/generated/Entities/MJIntegrationSourceType/mjintegrationsourcetype.form.component.js +2 -2
  360. package/dist/lib/generated/Entities/MJIntegrationSourceType/mjintegrationsourcetype.form.component.js.map +1 -1
  361. package/dist/lib/generated/Entities/MJLibrary/mjlibrary.form.component.js +3 -3
  362. package/dist/lib/generated/Entities/MJLibrary/mjlibrary.form.component.js.map +1 -1
  363. package/dist/lib/generated/Entities/MJList/mjlist.form.component.js +6 -6
  364. package/dist/lib/generated/Entities/MJList/mjlist.form.component.js.map +1 -1
  365. package/dist/lib/generated/Entities/MJListCategory/mjlistcategory.form.component.d.ts.map +1 -1
  366. package/dist/lib/generated/Entities/MJListCategory/mjlistcategory.form.component.js +33 -19
  367. package/dist/lib/generated/Entities/MJListCategory/mjlistcategory.form.component.js.map +1 -1
  368. package/dist/lib/generated/Entities/MJMCPServer/mjmcpserver.form.component.js +4 -4
  369. package/dist/lib/generated/Entities/MJMCPServer/mjmcpserver.form.component.js.map +1 -1
  370. package/dist/lib/generated/Entities/MJMCPServerConnection/mjmcpserverconnection.form.component.js +7 -7
  371. package/dist/lib/generated/Entities/MJMCPServerConnection/mjmcpserverconnection.form.component.js.map +1 -1
  372. package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js +4 -4
  373. package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js.map +1 -1
  374. package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js +5 -5
  375. package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js.map +1 -1
  376. package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js +2 -2
  377. package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js.map +1 -1
  378. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js +3 -3
  379. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js.map +1 -1
  380. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js +3 -3
  381. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js.map +1 -1
  382. package/dist/lib/generated/Entities/MJMagicLinkInvite/mjmagiclinkinvite.form.component.js +6 -6
  383. package/dist/lib/generated/Entities/MJMagicLinkInvite/mjmagiclinkinvite.form.component.js.map +1 -1
  384. package/dist/lib/generated/Entities/MJMaterializedResult/mjmaterializedresult.form.component.d.ts +10 -0
  385. package/dist/lib/generated/Entities/MJMaterializedResult/mjmaterializedresult.form.component.d.ts.map +1 -0
  386. package/dist/lib/generated/Entities/MJMaterializedResult/mjmaterializedresult.form.component.js +117 -0
  387. package/dist/lib/generated/Entities/MJMaterializedResult/mjmaterializedresult.form.component.js.map +1 -0
  388. package/dist/lib/generated/Entities/MJMaterializedResultQuery/mjmaterializedresultquery.form.component.d.ts +10 -0
  389. package/dist/lib/generated/Entities/MJMaterializedResultQuery/mjmaterializedresultquery.form.component.d.ts.map +1 -0
  390. package/dist/lib/generated/Entities/MJMaterializedResultQuery/mjmaterializedresultquery.form.component.js +58 -0
  391. package/dist/lib/generated/Entities/MJMaterializedResultQuery/mjmaterializedresultquery.form.component.js.map +1 -0
  392. package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js +4 -4
  393. package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js.map +1 -1
  394. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +2 -2
  395. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -1
  396. package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js +38 -30
  397. package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js.map +1 -1
  398. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.d.ts.map +1 -1
  399. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js +85 -65
  400. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js.map +1 -1
  401. package/dist/lib/generated/Entities/MJQueryCategory/mjquerycategory.form.component.d.ts.map +1 -1
  402. package/dist/lib/generated/Entities/MJQueryCategory/mjquerycategory.form.component.js +33 -19
  403. package/dist/lib/generated/Entities/MJQueryCategory/mjquerycategory.form.component.js.map +1 -1
  404. package/dist/lib/generated/Entities/MJQueue/mjqueue.form.component.js +2 -2
  405. package/dist/lib/generated/Entities/MJQueue/mjqueue.form.component.js.map +1 -1
  406. package/dist/lib/generated/Entities/MJQueueType/mjqueuetype.form.component.js +2 -2
  407. package/dist/lib/generated/Entities/MJQueueType/mjqueuetype.form.component.js.map +1 -1
  408. package/dist/lib/generated/Entities/MJRSUPendingWork/mjrsupendingwork.form.component.d.ts +10 -0
  409. package/dist/lib/generated/Entities/MJRSUPendingWork/mjrsupendingwork.form.component.d.ts.map +1 -0
  410. package/dist/lib/generated/Entities/MJRSUPendingWork/mjrsupendingwork.form.component.js +64 -0
  411. package/dist/lib/generated/Entities/MJRSUPendingWork/mjrsupendingwork.form.component.js.map +1 -0
  412. package/dist/lib/generated/Entities/MJRecommendation/mjrecommendation.form.component.js +2 -2
  413. package/dist/lib/generated/Entities/MJRecommendation/mjrecommendation.form.component.js.map +1 -1
  414. package/dist/lib/generated/Entities/MJRecommendationProvider/mjrecommendationprovider.form.component.js +2 -2
  415. package/dist/lib/generated/Entities/MJRecommendationProvider/mjrecommendationprovider.form.component.js.map +1 -1
  416. package/dist/lib/generated/Entities/MJRecommendationRun/mjrecommendationrun.form.component.js +2 -2
  417. package/dist/lib/generated/Entities/MJRecommendationRun/mjrecommendationrun.form.component.js.map +1 -1
  418. package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js +21 -23
  419. package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js.map +1 -1
  420. package/dist/lib/generated/Entities/MJRecordChangeReplayRun/mjrecordchangereplayrun.form.component.js +2 -2
  421. package/dist/lib/generated/Entities/MJRecordChangeReplayRun/mjrecordchangereplayrun.form.component.js.map +1 -1
  422. package/dist/lib/generated/Entities/MJRecordMergeLog/mjrecordmergelog.form.component.js +3 -3
  423. package/dist/lib/generated/Entities/MJRecordMergeLog/mjrecordmergelog.form.component.js.map +1 -1
  424. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +4 -4
  425. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
  426. package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.d.ts.map +1 -1
  427. package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.js +33 -19
  428. package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.js.map +1 -1
  429. package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.d.ts.map +1 -1
  430. package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.js +33 -19
  431. package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.js.map +1 -1
  432. package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js +6 -6
  433. package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js.map +1 -1
  434. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js +17 -17
  435. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js.map +1 -1
  436. package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js +7 -7
  437. package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js.map +1 -1
  438. package/dist/lib/generated/Entities/MJSQLDialect/mjsqldialect.form.component.js +3 -3
  439. package/dist/lib/generated/Entities/MJSQLDialect/mjsqldialect.form.component.js.map +1 -1
  440. package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js +4 -4
  441. package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js.map +1 -1
  442. package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js +4 -4
  443. package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js.map +1 -1
  444. package/dist/lib/generated/Entities/MJScheduledJobType/mjscheduledjobtype.form.component.js +2 -2
  445. package/dist/lib/generated/Entities/MJScheduledJobType/mjscheduledjobtype.form.component.js.map +1 -1
  446. package/dist/lib/generated/Entities/MJSearchProvider/mjsearchprovider.form.component.js +2 -2
  447. package/dist/lib/generated/Entities/MJSearchProvider/mjsearchprovider.form.component.js.map +1 -1
  448. package/dist/lib/generated/Entities/MJSearchScope/mjsearchscope.form.component.js +10 -10
  449. package/dist/lib/generated/Entities/MJSearchScope/mjsearchscope.form.component.js.map +1 -1
  450. package/dist/lib/generated/Entities/MJSignatureAccount/mjsignatureaccount.form.component.js +2 -2
  451. package/dist/lib/generated/Entities/MJSignatureAccount/mjsignatureaccount.form.component.js.map +1 -1
  452. package/dist/lib/generated/Entities/MJSignatureProvider/mjsignatureprovider.form.component.js +2 -2
  453. package/dist/lib/generated/Entities/MJSignatureProvider/mjsignatureprovider.form.component.js.map +1 -1
  454. package/dist/lib/generated/Entities/MJSignatureRequest/mjsignaturerequest.form.component.js +4 -4
  455. package/dist/lib/generated/Entities/MJSignatureRequest/mjsignaturerequest.form.component.js.map +1 -1
  456. package/dist/lib/generated/Entities/MJSkill/mjskill.form.component.js +29 -21
  457. package/dist/lib/generated/Entities/MJSkill/mjskill.form.component.js.map +1 -1
  458. package/dist/lib/generated/Entities/MJStateProvince/mjstateprovince.form.component.js +2 -2
  459. package/dist/lib/generated/Entities/MJStateProvince/mjstateprovince.form.component.js.map +1 -1
  460. package/dist/lib/generated/Entities/MJTag/mjtag.form.component.d.ts.map +1 -1
  461. package/dist/lib/generated/Entities/MJTag/mjtag.form.component.js +104 -92
  462. package/dist/lib/generated/Entities/MJTag/mjtag.form.component.js.map +1 -1
  463. package/dist/lib/generated/Entities/MJTask/mjtask.form.component.d.ts.map +1 -1
  464. package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js +69 -29
  465. package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js.map +1 -1
  466. package/dist/lib/generated/Entities/MJTaskDependency/mjtaskdependency.form.component.d.ts.map +1 -1
  467. package/dist/lib/generated/Entities/MJTaskDependency/mjtaskdependency.form.component.js +16 -4
  468. package/dist/lib/generated/Entities/MJTaskDependency/mjtaskdependency.form.component.js.map +1 -1
  469. package/dist/lib/generated/Entities/MJTaskType/mjtasktype.form.component.js +2 -2
  470. package/dist/lib/generated/Entities/MJTaskType/mjtasktype.form.component.js.map +1 -1
  471. package/dist/lib/generated/Entities/MJTemplate/mjtemplate.form.component.js +10 -10
  472. package/dist/lib/generated/Entities/MJTemplate/mjtemplate.form.component.js.map +1 -1
  473. package/dist/lib/generated/Entities/MJTemplateCategory/mjtemplatecategory.form.component.d.ts.map +1 -1
  474. package/dist/lib/generated/Entities/MJTemplateCategory/mjtemplatecategory.form.component.js +33 -19
  475. package/dist/lib/generated/Entities/MJTemplateCategory/mjtemplatecategory.form.component.js.map +1 -1
  476. package/dist/lib/generated/Entities/MJTemplateContent/mjtemplatecontent.form.component.js +2 -2
  477. package/dist/lib/generated/Entities/MJTemplateContent/mjtemplatecontent.form.component.js.map +1 -1
  478. package/dist/lib/generated/Entities/MJTemplateContentType/mjtemplatecontenttype.form.component.js +2 -2
  479. package/dist/lib/generated/Entities/MJTemplateContentType/mjtemplatecontenttype.form.component.js.map +1 -1
  480. package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js +3 -3
  481. package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js.map +1 -1
  482. package/dist/lib/generated/Entities/MJTestRun/mjtestrun.form.component.js +7 -7
  483. package/dist/lib/generated/Entities/MJTestRun/mjtestrun.form.component.js.map +1 -1
  484. package/dist/lib/generated/Entities/MJTestRunOutputType/mjtestrunoutputtype.form.component.js +2 -2
  485. package/dist/lib/generated/Entities/MJTestRunOutputType/mjtestrunoutputtype.form.component.js.map +1 -1
  486. package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js +39 -31
  487. package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js.map +1 -1
  488. package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js +2 -2
  489. package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js.map +1 -1
  490. package/dist/lib/generated/Entities/MJTestType/mjtesttype.form.component.js +3 -3
  491. package/dist/lib/generated/Entities/MJTestType/mjtesttype.form.component.js.map +1 -1
  492. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +105 -105
  493. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  494. package/dist/lib/generated/Entities/MJUserApplication/mjuserapplication.form.component.js +2 -2
  495. package/dist/lib/generated/Entities/MJUserApplication/mjuserapplication.form.component.js.map +1 -1
  496. package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js +3 -3
  497. package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js.map +1 -1
  498. package/dist/lib/generated/Entities/MJUserRoutine/mjuserroutine.form.component.js +3 -3
  499. package/dist/lib/generated/Entities/MJUserRoutine/mjuserroutine.form.component.js.map +1 -1
  500. package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js +6 -6
  501. package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js.map +1 -1
  502. package/dist/lib/generated/Entities/MJUserViewCategory/mjuserviewcategory.form.component.d.ts.map +1 -1
  503. package/dist/lib/generated/Entities/MJUserViewCategory/mjuserviewcategory.form.component.js +33 -19
  504. package/dist/lib/generated/Entities/MJUserViewCategory/mjuserviewcategory.form.component.js.map +1 -1
  505. package/dist/lib/generated/Entities/MJUserViewRun/mjuserviewrun.form.component.js +2 -2
  506. package/dist/lib/generated/Entities/MJUserViewRun/mjuserviewrun.form.component.js.map +1 -1
  507. package/dist/lib/generated/Entities/MJVectorDatabase/mjvectordatabase.form.component.js +3 -3
  508. package/dist/lib/generated/Entities/MJVectorDatabase/mjvectordatabase.form.component.js.map +1 -1
  509. package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js +6 -6
  510. package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js.map +1 -1
  511. package/dist/lib/generated/Entities/MJVersionLabel/mjversionlabel.form.component.js +44 -36
  512. package/dist/lib/generated/Entities/MJVersionLabel/mjversionlabel.form.component.js.map +1 -1
  513. package/dist/lib/generated/Entities/MJViewType/mjviewtype.form.component.js +2 -2
  514. package/dist/lib/generated/Entities/MJViewType/mjviewtype.form.component.js.map +1 -1
  515. package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.js +2 -2
  516. package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.js.map +1 -1
  517. package/dist/lib/generated/generated-forms.module.d.ts +290 -285
  518. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  519. package/dist/lib/generated/generated-forms.module.js +126 -111
  520. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  521. package/dist/lib/panels/form-chrome/entity-form-chrome-editor.component.d.ts +37 -0
  522. package/dist/lib/panels/form-chrome/entity-form-chrome-editor.component.d.ts.map +1 -0
  523. package/dist/lib/panels/form-chrome/entity-form-chrome-editor.component.js +185 -0
  524. package/dist/lib/panels/form-chrome/entity-form-chrome-editor.component.js.map +1 -0
  525. package/dist/lib/panels/form-chrome/entity-relationship-form-role.panel.d.ts +20 -0
  526. package/dist/lib/panels/form-chrome/entity-relationship-form-role.panel.d.ts.map +1 -0
  527. package/dist/lib/panels/form-chrome/entity-relationship-form-role.panel.js +87 -0
  528. package/dist/lib/panels/form-chrome/entity-relationship-form-role.panel.js.map +1 -0
  529. package/dist/public-api.d.ts +12 -0
  530. package/dist/public-api.d.ts.map +1 -1
  531. package/dist/public-api.js +14 -2
  532. package/dist/public-api.js.map +1 -1
  533. package/package.json +44 -42
@@ -1 +1 @@
1
- {"version":3,"file":"ai-agent-run.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run.component.ts","../../../../src/lib/custom/ai-agent-run/ai-agent-run.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ViewChild, inject } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { BaseEntity, BaseEntityEvent, CompositeKey, Metadata } from '@memberjunction/core';\nimport { MJAIAgentRunEntityExtended, MJAIAgentEntityExtended } from '@memberjunction/ai-core-plus';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { MJGlobal, MJEvent, MJEventType, RegisterClass, UUIDsEqual } from '@memberjunction/global';\nimport { SharedService, NavigationService } from '@memberjunction/ng-shared';\nimport { TimelineItem, AIAgentRunTimelineComponent } from './ai-agent-run-timeline.component';\nimport { MJAIAgentRunFormComponent } from '../../generated/Entities/MJAIAgentRun/mjaiagentrun.form.component';\nimport { ParseJSONRecursive, ParseJSONOptions } from '@memberjunction/global';\nimport { AIAgentRunAnalyticsComponent } from './ai-agent-run-analytics.component';\nimport { AIAgentRunCostService, AgentRunCostMetrics } from './ai-agent-run-cost.service';\nimport { AIAgentRunDataHelper } from './ai-agent-run-data.service';\nimport { ApplicationManager } from '@memberjunction/ng-base-application';\n\n@RegisterClass(BaseFormComponent, 'MJ: AI Agent Runs') \n@Component({\n standalone: false,\n selector: 'mj-ai-agent-run-form',\n templateUrl: './ai-agent-run.component.html',\n styleUrls: ['./ai-agent-run.component.css']\n})\nexport class MJAIAgentRunFormComponentExtended extends MJAIAgentRunFormComponent implements OnInit, OnDestroy {\n public record!: MJAIAgentRunEntityExtended;\n \n private destroy$ = new Subject<void>();\n\n // MJGlobal BaseEntity event subscription — fires on both local Save()\n // and server-side remote-invalidate events. While the run is Running,\n // this is how we hear about new steps and status changes without\n // polling the DB on a timer. Only attached when Status === 'Running'.\n private entityEventSubscription: Subscription | null = null;\n private refreshInFlight = false;\n\n // UI state\n activeTab = 'timeline';\n selectedTimelineItem: TimelineItem | null = null;\n jsonPanelExpanded = false;\n loading = false;\n error: string | null = null;\n analyticsLoaded = false;\n visualizationLoaded = false;\n \n agent: MJAIAgentEntityExtended | null = null;\n \n // Cost metrics using shared service\n costMetrics: AgentRunCostMetrics | null = null;\n \n // Cached parsed results to prevent redundant JSON parsing\n private _cachedParsedResult: string | null = null;\n private _cachedParsedStartingPayload: string | null = null;\n private _cachedParsedFinalPayload: string | null = null;\n private _cachedParsedData: string | null = null;\n \n // Simple parsing state - true when all parsing is complete\n private _allParsingComplete = false;\n \n @ViewChild(AIAgentRunTimelineComponent) timelineComponent?: AIAgentRunTimelineComponent;\n @ViewChild(AIAgentRunAnalyticsComponent) analyticsComponent?: AIAgentRunAnalyticsComponent;\n\n // Field injections\n private navigationService = inject(NavigationService);\n private costService = inject(AIAgentRunCostService);\n private appManager = inject(ApplicationManager);\n\n // Instance of data helper per component\n public dataHelper = new AIAgentRunDataHelper();\n \n async ngOnInit() {\n await super.ngOnInit();\n \n if (this.record && this.record.ID) {\n await this.dataHelper.loadAgentRunData(this.record.ID);\n await this.loadAgent();\n await this.loadCostMetrics();\n\n // Parse all JSON fields on form load for instant access later\n this.parseAllFields();\n\n // If the run is in progress, subscribe to BaseEntity events so we\n // pick up new steps / status changes the moment AgentRunner saves\n // them — no 30s polling timer. Same pattern used by the Form\n // Builder cockpit. See `handleEntityEvent` below for filtering.\n if (this.record.Status === 'Running') {\n this.subscribeToRunEvents();\n }\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.entityEventSubscription?.unsubscribe();\n this.entityEventSubscription = null;\n this.clearParsedCache();\n this.dataHelper.clearData();\n this.costMetrics = null;\n this.agent = null;\n }\n\n private subscribeToRunEvents(): void {\n if (this.entityEventSubscription) return;\n this.entityEventSubscription = MJGlobal.Instance.GetEventListener(false)\n .subscribe(mjEvent => this.handleEntityEvent(mjEvent));\n }\n\n private unsubscribeFromRunEvents(): void {\n this.entityEventSubscription?.unsubscribe();\n this.entityEventSubscription = null;\n }\n\n /**\n * Filter the global BaseEntity event firehose down to saves on the\n * current Agent Run row, its Steps, or its Prompt Runs — and only when\n * AgentRunID matches `this.record.ID`. Local `save` events come from\n * the in-process AgentRunner (dev/same-tab case, which is the primary\n * use case here); `remote-invalidate` covers writes from a separate\n * server process if GraphQL cache-invalidation is wired up.\n */\n private handleEntityEvent(mjEvent: MJEvent): void {\n if (mjEvent.event !== MJEventType.ComponentEvent) return;\n if (mjEvent.eventCode !== BaseEntity.BaseEventCode) return;\n const evt = mjEvent.args as BaseEntityEvent | undefined;\n if (!evt) return;\n if (evt.type !== 'save' && evt.type !== 'remote-invalidate') return;\n\n const entityName = evt.entityName ?? evt.baseEntity?.EntityInfo?.Name;\n if (!entityName) return;\n\n const runId = this.record?.ID;\n if (!runId) return;\n\n if (entityName === 'MJ: AI Agent Runs') {\n // Status change on THIS run row.\n const savedID = this.resolveEventID(evt);\n if (savedID && UUIDsEqual(savedID, runId)) {\n this.refreshData();\n // If the run completed, drop the subscription — no further\n // writes are expected and we don't want to hold the listener.\n const newStatus = this.resolveEventField<string>(evt, 'Status');\n if (newStatus && newStatus !== 'Running') {\n this.unsubscribeFromRunEvents();\n }\n }\n return;\n }\n\n // Steps still carry AgentRunID, so a step write can be correlated exactly to this run.\n if (entityName === 'MJ: AI Agent Run Steps') {\n const childAgentRunId = this.resolveEventField<string>(evt, 'AgentRunID');\n if (childAgentRunId && UUIDsEqual(childAgentRunId, runId)) {\n this.refreshRunDataDebounced();\n }\n return;\n }\n\n // Prompt runs and action logs expose no AgentRunID to correlate on: AIPromptRun.AgentRunID was\n // dropped in v5.50 (Break_CodeGen_Cycle_Remove_PromptRun_AgentRunID) and ActionExecutionLog never\n // had one. Correlating on it made this branch dead for action logs from the start, and for prompt\n // runs from v5.50 — the form simply stopped live-refreshing. Refresh unconditionally instead,\n // which is what the original comment described: the reload is debounced and re-reads only THIS\n // run, and the subscription is dropped once the run leaves 'Running', so a foreign write costs at\n // most one collapsed reload while a run is open on screen.\n if (entityName === 'MJ: AI Prompt Runs' || entityName === 'MJ: Action Execution Logs') {\n this.refreshRunDataDebounced();\n }\n }\n\n private resolveEventID(evt: BaseEntityEvent): string | null {\n if (evt.baseEntity) {\n return evt.baseEntity.PrimaryKey?.ToConcatenatedString() ?? null;\n }\n const payload = evt.payload as { primaryKeyValues?: string | null; recordData?: string | null } | undefined;\n if (!payload) return null;\n try {\n if (payload.primaryKeyValues) {\n const pk = JSON.parse(payload.primaryKeyValues) as Record<string, unknown> | unknown[];\n if (Array.isArray(pk)) {\n const idPair = pk.find(p => (p as { FieldName?: string }).FieldName === 'ID') as { Value?: unknown } | undefined;\n if (idPair?.Value != null) return String(idPair.Value);\n } else if (pk && typeof pk === 'object' && 'ID' in pk) {\n const v = (pk as { ID?: unknown }).ID;\n if (v != null) return String(v);\n }\n }\n } catch {\n // bad JSON — fall through to recordData\n }\n try {\n if (payload.recordData) {\n const row = JSON.parse(payload.recordData) as Record<string, unknown>;\n if (typeof row?.ID === 'string') return row.ID;\n }\n } catch {\n // ignore\n }\n return null;\n }\n\n private resolveEventField<T>(evt: BaseEntityEvent, fieldName: string): T | null {\n if (evt.baseEntity) {\n const val = evt.baseEntity.Get?.(fieldName) as T | undefined;\n return val ?? null;\n }\n const payload = evt.payload as { recordData?: string | null } | undefined;\n if (!payload?.recordData) return null;\n try {\n const row = JSON.parse(payload.recordData) as Record<string, unknown>;\n const v = row?.[fieldName];\n return (v ?? null) as T | null;\n } catch {\n return null;\n }\n }\n\n /**\n * Collapse rapid bursts of step/prompt/action events into a single\n * reload — AgentRunner often saves several rows in quick succession.\n */\n private refreshRunDataDebounced(): void {\n if (this.refreshInFlight) return;\n this.refreshInFlight = true;\n queueMicrotask(() => {\n this.refreshInFlight = false;\n if (!this.record?.ID) return;\n this.dataHelper.loadAgentRunData(this.record.ID, true);\n });\n }\n \n private async loadAgent() {\n if (!this.record?.AgentID) return;\n \n try {\n const md = this.ProviderToUse;\n const agent = await md.GetEntityObject<MJAIAgentEntityExtended>('MJ: AI Agents');\n if (agent && await agent.Load(this.record.AgentID)) {\n this.agent = agent;\n this.cdr.detectChanges();\n }\n } catch (error) {\n console.error('Error loading agent:', error);\n }\n }\n\n private async loadCostMetrics() {\n if (!this.record?.ID) return;\n \n try {\n this.costMetrics = await this.costService.getAgentRunCostMetrics(this.record.ID);\n this.cdr.markForCheck();\n } catch (error) {\n console.error('Error loading cost metrics:', error);\n this.costMetrics = {\n totalCost: 0,\n totalPrompts: 0,\n totalTokensInput: 0,\n totalTokensOutput: 0,\n isLoading: false,\n error: 'Failed to load cost data'\n };\n }\n }\n \n changeTab(tab: string) {\n this.activeTab = tab;\n \n // Lazy load the Visualization (playable + static flow) view on first access\n if (tab === 'visualization' && !this.visualizationLoaded) {\n this.visualizationLoaded = true;\n this.cdr.markForCheck();\n }\n \n // Lazy load analytics when the tab is first accessed\n if (tab === 'analytics' && !this.analyticsLoaded) {\n this.analyticsLoaded = true;\n this.cdr.markForCheck();\n }\n }\n \n \n calculateDuration(start: Date, end?: Date | null): string {\n if (!end) return 'Running...';\n \n const ms = end.getTime() - start.getTime();\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n if (ms < 3600000) return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`;\n return `${Math.floor(ms / 3600000)}h ${Math.floor((ms % 3600000) / 60000)}m`;\n }\n \n selectTimelineItem(item: TimelineItem) {\n this.selectedTimelineItem = item;\n this.jsonPanelExpanded = true;\n this.cdr.markForCheck();\n }\n \n closeJsonPanel() {\n this.selectedTimelineItem = null;\n this.cdr.markForCheck();\n }\n \n navigateToSubRun(runId: string) {\n SharedService.Instance.OpenEntityRecord(\"MJ: AI Agent Runs\", CompositeKey.FromID(runId));\n }\n\n navigateToParentRun() {\n if (this.record.ParentRunID) {\n SharedService.Instance.OpenEntityRecord(\"MJ: AI Agent Runs\", CompositeKey.FromID(this.record.ParentRunID));\n }\n }\n \n navigateToActionLog(logId: string) {\n SharedService.Instance.OpenEntityRecord(\"MJ: Action Execution Logs\", CompositeKey.FromID(logId));\n }\n \n openEntityRecord(entityName: string, recordId: string | null) {\n if (recordId) {\n SharedService.Instance.OpenEntityRecord(entityName, CompositeKey.FromID(recordId));\n }\n }\n \n navigateToEntityRecord(event: { entityName: string; recordId: string }) {\n SharedService.Instance.OpenEntityRecord(event.entityName, CompositeKey.FromID(event.recordId));\n }\n\n /**\n * Navigate to the conversation in the Chat application\n */\n navigateToConversation() {\n if (!this.record?.ConversationID) return;\n\n // Find the Chat app\n const chatApp = this.appManager.GetAllApps().find(app => app.Name === 'Chat');\n if (!chatApp) {\n console.warn('Chat application not found');\n return;\n }\n\n // Navigate to the Conversations nav item with the conversationId parameter\n this.navigationService.OpenNavItemByName(\n 'Conversations',\n { conversationId: this.record.ConversationID },\n chatApp.ID\n );\n }\n \n refreshData() {\n // Reload the agent run record to get latest status\n if (this.record?.ID) {\n // Clear parsed cache when refreshing data\n this.clearParsedCache();\n \n // No panel states to reset in simplified approach\n \n this.record.Load(this.record.ID).then(() => {\n // Clear cost cache and reload\n this.costService.clearCache(this.record.ID);\n this.loadCostMetrics();\n \n // Reload data through helper - this will update all components (force reload for refresh)\n this.dataHelper.loadAgentRunData(this.record.ID, true);\n \n // Trigger analytics refresh\n if (this.analyticsComponent) {\n this.analyticsComponent.loadData();\n }\n });\n }\n }\n \n \n getStatusIcon(status: string): string {\n const iconMap: Record<string, string> = {\n 'Running': 'fa-circle-notch fa-spin',\n 'Completed': 'fa-check-circle',\n 'Failed': 'fa-times-circle',\n 'Cancelled': 'fa-ban',\n 'Paused': 'fa-pause-circle'\n };\n return iconMap[status] || 'fa-question-circle';\n }\n \n async copyToClipboard(text: string) {\n try {\n await navigator.clipboard.writeText(text);\n // Could show a toast notification here\n } catch (err) {\n console.error('Failed to copy to clipboard:', err);\n }\n }\n \n /**\n * Get the Result field with recursive JSON parsing applied\n */\n get parsedResult(): string {\n if (!this.record?.Result) {\n return '';\n }\n \n // Return cached result if available\n if (this._cachedParsedResult !== null) {\n return this._cachedParsedResult;\n }\n \n \n try {\n // First, check if Result is a JSON string that needs to be parsed\n let resultData = this.record.Result;\n try {\n // If Result is a JSON string, parse it first\n resultData = JSON.parse(this.record.Result);\n } catch {\n // If it's not valid JSON, use it as-is\n resultData = this.record.Result;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false // Disable debug logging - regex issue fixed\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n const parsed = ParseJSONRecursive(resultData, parseOptions);\n const result = JSON.stringify(parsed, null, 2);\n \n // Cache the result\n this._cachedParsedResult = result;\n \n return result;\n } catch (e) {\n const fallbackResult = this.record.Result;\n this._cachedParsedResult = fallbackResult;\n return fallbackResult;\n }\n }\n \n /**\n * Get the Starting Payload field with recursive JSON parsing applied\n */\n get parsedStartingPayload(): string {\n if (!this.record?.StartingPayload) {\n return '';\n }\n \n // Return cached result if available\n if (this._cachedParsedStartingPayload !== null) {\n return this._cachedParsedStartingPayload;\n }\n \n \n try {\n // First, check if StartingPayload is a JSON string that needs to be parsed\n let payloadData = this.record.StartingPayload;\n try {\n // If StartingPayload is a JSON string, parse it first\n payloadData = JSON.parse(this.record.StartingPayload);\n } catch {\n // If it's not valid JSON, use it as-is\n payloadData = this.record.StartingPayload;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n const parsed = ParseJSONRecursive(payloadData, parseOptions);\n const result = JSON.stringify(parsed, null, 2);\n \n // Cache the result\n this._cachedParsedStartingPayload = result;\n \n return result;\n } catch (e) {\n const fallbackResult = this.record.StartingPayload;\n this._cachedParsedStartingPayload = fallbackResult;\n return fallbackResult;\n }\n }\n\n /**\n * Get the Final Payload (state) field with recursive JSON parsing applied\n */\n get parsedFinalPayload(): string {\n if (!this.record?.FinalPayload) return '';\n \n // Return cached result if available\n if (this._cachedParsedFinalPayload !== null) {\n return this._cachedParsedFinalPayload;\n }\n \n try {\n // First, check if FinalPayload is a JSON string that needs to be parsed\n let payloadData = this.record.FinalPayload;\n try {\n // If FinalPayload is a JSON string, parse it first\n payloadData = JSON.parse(this.record.FinalPayload);\n } catch {\n // If it's not valid JSON, use it as-is\n payloadData = this.record.FinalPayload;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false // Disable debug logging - regex issue fixed\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n const parsed = ParseJSONRecursive(payloadData, parseOptions);\n const result = JSON.stringify(parsed, null, 2);\n \n // Cache the result\n this._cachedParsedFinalPayload = result;\n \n return result;\n } catch (e) {\n const fallbackResult = this.record.FinalPayload;\n this._cachedParsedFinalPayload = fallbackResult;\n return fallbackResult;\n }\n }\n\n /**\n * Get the Data field with recursive JSON parsing applied\n */\n get parsedData(): string {\n if (!this.record?.Data) return '';\n \n // Return cached result if available\n if (this._cachedParsedData !== null) {\n return this._cachedParsedData;\n }\n \n try {\n // First, check if Data is a JSON string that needs to be parsed\n let data = this.record.Data;\n try {\n // If Data is a JSON string, parse it first\n data = JSON.parse(this.record.Data);\n } catch {\n // If it's not valid JSON, use it as-is\n data = this.record.Data;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n const parsed = ParseJSONRecursive(data, parseOptions);\n const result = JSON.stringify(parsed, null, 2);\n \n // Cache the result\n this._cachedParsedData = result;\n \n return result;\n } catch (e) {\n const fallbackResult = this.record.Data;\n this._cachedParsedData = fallbackResult;\n return fallbackResult;\n }\n }\n \n /**\n * Get parsed Starting Payload as an object for deep diff\n */\n get startingPayloadObject(): any {\n if (!this.record?.StartingPayload) return null;\n \n try {\n // First, check if StartingPayload is a JSON string that needs to be parsed\n let payloadData = this.record.StartingPayload;\n try {\n // If StartingPayload is a JSON string, parse it first\n payloadData = JSON.parse(this.record.StartingPayload);\n } catch {\n // If it's not valid JSON, use it as-is\n payloadData = this.record.StartingPayload;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n return ParseJSONRecursive(payloadData, parseOptions);\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Get parsed Final Payload as an object for deep diff\n */\n get finalPayloadObject(): any {\n if (!this.record?.FinalPayload) return null;\n \n try {\n // First, check if FinalPayload is a JSON string that needs to be parsed\n let payloadData = this.record.FinalPayload;\n try {\n // If FinalPayload is a JSON string, parse it first\n payloadData = JSON.parse(this.record.FinalPayload);\n } catch {\n // If it's not valid JSON, use it as-is\n payloadData = this.record.FinalPayload;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n return ParseJSONRecursive(payloadData, parseOptions);\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Clear all cached parsed results\n */\n private clearParsedCache(): void {\n this._cachedParsedResult = null;\n this._cachedParsedStartingPayload = null;\n this._cachedParsedFinalPayload = null;\n this._cachedParsedData = null;\n this._allParsingComplete = false;\n }\n \n /**\n * Parse all JSON fields at once and cache results\n */\n private parseAllFields(): void {\n try {\n let parsedCount = 0;\n \n // Parse all fields that exist\n if (this.record?.Result) {\n this.parsedResult; // Triggers parsing and caching\n parsedCount++;\n }\n \n if (this.record?.StartingPayload) {\n this.parsedStartingPayload; // Triggers parsing and caching\n parsedCount++;\n }\n \n if (this.record?.FinalPayload) {\n this.parsedFinalPayload; // Triggers parsing and caching\n parsedCount++;\n }\n \n if (this.record?.Data) {\n this.parsedData; // Triggers parsing and caching\n parsedCount++;\n }\n \n this._allParsingComplete = true;\n \n } catch (error) {\n console.error('Error during JSON parsing:', error);\n }\n }\n \n /**\n * Check if all parsing is complete - used by template\n */\n get isParsingComplete(): boolean {\n return this._allParsingComplete;\n }\n\n /**\n * Check if we have both payloads to show diff\n */\n get showPayloadDiff(): boolean {\n return !!(this.record?.StartingPayload && this.record?.FinalPayload);\n }\n\n /**\n * Check if selected timeline item is a step with payload changes\n */\n get showStepPayloadDiff(): boolean {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return false;\n }\n \n const stepData = this.selectedTimelineItem.data;\n if (stepData && (stepData.PayloadAtStart?.trim().length > 0 \n || stepData.PayloadAtEnd?.trim().length > 0)) {\n return stepData.PayloadAtStart !== stepData.PayloadAtEnd;\n }\n else {\n return false;\n }\n }\n\n /**\n * Get parsed PayloadAtStart for the selected step\n */\n get stepPayloadAtStartObject(): any {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return null;\n }\n \n const stepData = this.selectedTimelineItem.data;\n if (!stepData || !stepData.PayloadAtStart) {\n return null;\n }\n \n try {\n let payloadData = stepData.PayloadAtStart;\n try {\n payloadData = JSON.parse(stepData.PayloadAtStart);\n } catch {\n payloadData = stepData.PayloadAtStart;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n return ParseJSONRecursive(payloadData, parseOptions);\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Get parsed PayloadAtEnd for the selected step\n */\n get stepPayloadAtEndObject(): any {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return null;\n }\n \n const stepData = this.selectedTimelineItem.data;\n if (!stepData || !stepData.PayloadAtEnd) {\n return null;\n }\n \n try {\n let payloadData = stepData.PayloadAtEnd;\n try {\n payloadData = JSON.parse(stepData.PayloadAtEnd);\n } catch {\n payloadData = stepData.PayloadAtEnd;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n return ParseJSONRecursive(payloadData, parseOptions);\n } catch (e) {\n return null;\n }\n }\n}\n","<div class=\"record-form-container ai-agent-run-form\">\n <div class=\"record-form\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"icon-wrapper\">\n @if (agent && agent.LogoURL) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name || 'Agent'\" class=\"agent-logo\" />\n }\n @if (agent && !agent.LogoURL && agent.IconClass) {\n <i class=\"fas\" [ngClass]=\"agent.IconClass\"></i>\n }\n @if (!agent || (!agent.LogoURL && !agent.IconClass)) {\n <i class=\"fas fa-robot\"></i>\n }\n </div>\n <div class=\"header-info\">\n <h2>AI Agent Run</h2>\n <div class=\"meta-info\">\n @if (agent) {\n <span class=\"agent-name\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agents', record.AgentID)\">\n {{ agent.Name }}\n </a>\n </span>\n }\n <span class=\"run-id\">{{ record.ID }}</span>\n @if (record.ParentRunID) {\n <span class=\"parent-run\">\n <i class=\"fas fa-level-up-alt\"></i>\n <a (click)=\"navigateToParentRun()\" class=\"parent-link\">Parent Run</a>\n </span>\n }\n <!-- Conversation Link Pill -->\n @if (record.ConversationID) {\n <span class=\"conversation-pill\" (click)=\"navigateToConversation()\" title=\"Open conversation in Chat app\">\n <i class=\"fas fa-comments\"></i>\n <span>Conversation</span>\n <i class=\"fas fa-external-link-alt pill-action\"></i>\n </span>\n }\n </div>\n </div>\n </div>\n <div class=\"header-right\">\n @if (record.PlanMode) {\n <div class=\"plan-mode-badge\" title=\"This run executed in Plan Mode — the agent presented a plan for human approval before executing actions or sub-agents\">\n <i class=\"fas fa-clipboard-check\"></i>\n Plan Mode\n </div>\n }\n <div class=\"status-badge\" [attr.data-status]=\"record.Status\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon(record.Status || '')\"></i>\n {{ record.Status }}\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-icon\" (click)=\"refreshData()\" title=\"Refresh\">\n <i class=\"fas fa-sync-alt\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat\">\n <span class=\"label\">Started</span>\n <span class=\"value\">{{ record.StartedAt | date:'medium' }}</span>\n </div>\n @if (record.CompletedAt) {\n <div class=\"stat\">\n <span class=\"label\">Completed</span>\n <span class=\"value\">{{ record.CompletedAt | date:'medium' }}</span>\n </div>\n }\n @if (record.CompletedAt) {\n <div class=\"stat\">\n <span class=\"label\">Duration</span>\n <span class=\"value\">{{ calculateDuration(record.StartedAt, record.CompletedAt) }}</span>\n </div>\n }\n @if (record.Success !== null && record.CompletedAt !== null) {\n <div class=\"stat\">\n <span class=\"label\">Result</span>\n <span class=\"value\" [class.success]=\"record.Success\" [class.error]=\"!record.Success\">\n {{ record.Success ? 'Success' : 'Failed' }}\n </span>\n </div>\n }\n @if (costMetrics && (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) > 0) {\n <div class=\"stat\">\n <span class=\"label\">Tokens</span>\n @if (!costMetrics.isLoading) {\n <span class=\"value\">{{ (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) | number:'1.0-0' }}</span>\n }\n @if (costMetrics.isLoading) {\n <span class=\"value loading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n }\n </div>\n }\n @if (costMetrics && costMetrics.totalCost > 0) {\n <div class=\"stat\">\n <span class=\"label\">Cost</span>\n @if (!costMetrics.isLoading) {\n <span class=\"value\">${{ costMetrics.totalCost | number:'1.2-4' }}</span>\n }\n @if (costMetrics.isLoading) {\n <span class=\"value loading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n }\n </div>\n }\n @if (record.EffortLevel) {\n <div class=\"stat\">\n <span class=\"label\">Effort Level</span>\n <span class=\"value\">{{ record.EffortLevel }}</span>\n </div>\n }\n </div>\n\n <!-- Configuration Bar (shown below header stats when ConfigurationID exists) -->\n @if (record.ConfigurationID) {\n <div class=\"configuration-bar\">\n <div class=\"config-item\">\n <i class=\"fas fa-cog\"></i>\n <div class=\"config-content\">\n <div class=\"config-label\">Configuration</div>\n <div class=\"config-value\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'Unknown' }}\n </a>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\" [class.active]=\"activeTab === 'timeline'\" (click)=\"changeTab('timeline')\">\n <i class=\"fas fa-stream\"></i> Timeline\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'visualization'\" (click)=\"changeTab('visualization')\">\n <i class=\"fas fa-diagram-project\"></i> Visualization\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'analytics'\" (click)=\"changeTab('analytics')\">\n <i class=\"fas fa-chart-line\"></i> Analytics\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'details'\" (click)=\"changeTab('details')\">\n <i class=\"fas fa-info-circle\"></i> Details\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"content-area\">\n <!-- Timeline Tab -->\n @if (activeTab === 'timeline') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n <as-split direction=\"horizontal\" style=\"height: 100%;\">\n <!-- Timeline Pane -->\n <as-split-area [size]=\"selectedTimelineItem ? 55 : 100\">\n <mj-ai-agent-run-timeline\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n (itemSelected)=\"selectTimelineItem($event)\"\n (navigateToEntity)=\"navigateToEntityRecord($event)\">\n </mj-ai-agent-run-timeline>\n </as-split-area>\n <!-- JSON Detail Pane -->\n @if (selectedTimelineItem) {\n <as-split-area [size]=\"45\">\n <mj-ai-agent-run-step-detail\n [selectedTimelineItem]=\"selectedTimelineItem\"\n (closePanel)=\"closeJsonPanel()\"\n (navigateToActionLog)=\"navigateToActionLog($event)\"\n (copyToClipboard)=\"copyToClipboard($event)\">\n </mj-ai-agent-run-step-detail>\n </as-split-area>\n }\n </as-split>\n </div>\n }\n\n <!-- Visualization Tab (animated flow views + static flowchart) -->\n @if (activeTab === 'visualization') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n @if (visualizationLoaded) {\n <mj-ai-agent-run-flow\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n [agentName]=\"agent?.Name || null\"\n [runStatus]=\"record.Status || ''\"\n [agentIconClass]=\"agent?.IconClass || null\"\n [agentLogoUrl]=\"agent?.LogoURL || null\">\n </mj-ai-agent-run-flow>\n }\n </div>\n }\n\n <!-- Analytics Tab -->\n @if (activeTab === 'analytics') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n @if (analyticsLoaded) {\n <mj-ai-agent-run-analytics\n #analyticsComponent\n [agentRunId]=\"record.ID\"\n >\n </mj-ai-agent-run-analytics>\n }\n </div>\n }\n\n <!-- Details Tab -->\n @if (activeTab === 'details') {\n <div class=\"tab-content\">\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-info-circle\"></i> General Information\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Agent</label>\n <span>\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agents', record.AgentID)\">\n {{ agent?.Name || 'N/A' }}\n </a>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Parent Run ID</label>\n <span>\n @if (record.ParentRunID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.ParentRunID)\">\n {{ record.ParentRunID }}\n </a>\n }\n @if (!record.ParentRunID) {\n <span>None (Root)</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Last Run ID</label>\n <span>\n @if (record.LastRunID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.LastRunID)\">\n {{ record.LastRunID }}\n </a>\n }\n @if (!record.LastRunID) {\n <span>None</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Conversation ID</label>\n <span>\n @if (record.ConversationID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: Conversations', record.ConversationID)\">\n {{ record.ConversationID }}\n </a>\n }\n @if (!record.ConversationID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>User</label>\n <span>\n @if (record.UserID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: Users', record.UserID)\">\n {{ record.User || 'N/A' }}\n </a>\n }\n @if (!record.UserID) {\n <span>N/A</span>\n }\n </span>\n </div>\n </div>\n </mj-accordion-panel>\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-cogs\"></i> Execution Settings\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Override Model</label>\n <span>\n @if (record.OverrideModelID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Models', record.OverrideModelID)\">\n {{ record.OverrideModel || 'N/A' }}\n </a>\n }\n @if (!record.OverrideModelID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Override Vendor</label>\n <span>\n @if (record.OverrideVendorID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Vendors', record.OverrideVendorID)\">\n {{ record.OverrideVendor || 'N/A' }}\n </a>\n }\n @if (!record.OverrideVendorID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Verbose Logging</label>\n <span>{{ record.Verbose ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </mj-accordion-panel>\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-tasks\"></i> Execution Status\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Status</label>\n <span class=\"status-badge\" [attr.data-status]=\"record.Status\">\n {{ record.Status }}\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Success</label>\n @if (record.Success === null) {\n <span>In Progress</span>\n }\n @else if (record.Success) {\n <span class=\"success\">Yes</span>\n }\n @else {\n <span class=\"error-message\">No</span>\n }\n </div>\n @if (record.Message) {\n <div class=\"detail-item full-width\">\n <label>Message</label>\n <div class=\"message\">{{ record.Message }}</div>\n </div>\n }\n @if (record.ErrorMessage) {\n <div class=\"detail-item full-width\">\n <label>Error Message</label>\n <div class=\"error-message\">{{ record.ErrorMessage }}</div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-dollar-sign\"></i> Usage &amp; Cost\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Total Tokens Used</label>\n <span>{{ record.TotalTokensUsed ? (record.TotalTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Prompt Tokens</label>\n <span>{{ record.TotalPromptTokensUsed ? (record.TotalPromptTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Completion Tokens</label>\n <span>{{ record.TotalCompletionTokensUsed ? (record.TotalCompletionTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Cost</label>\n <span>{{ record.TotalCost != null ? ('$' + (record.TotalCost | number:'1.2-4')) : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Prompt Iterations</label>\n <span>{{ record.TotalPromptIterations != null ? (record.TotalPromptIterations | number:'1.0-0') : 'N/A' }}</span>\n </div>\n </div>\n </mj-accordion-panel>\n @if (record.Result) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-code\"></i> Result\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading result data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (record.StartingPayload) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-upload\"></i> Starting Payload\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedStartingPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (record.Data) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-database\"></i> Execution Data\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedData\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading execution data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (record.FinalPayload) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-download\"></i> Final Payload\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedFinalPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading final payload data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (showPayloadDiff) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-code-compare\"></i> Payload Diff\n </ng-template>\n <div style=\"padding: 20px; background: var(--mj-bg-surface-card);\">\n @if (isParsingComplete) {\n <mj-deep-diff\n [oldValue]=\"startingPayloadObject\"\n [newValue]=\"finalPayloadObject\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"false\"\n [maxDepth]=\"10\"\n [maxStringLength]=\"200\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload diff...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n </div>\n }\n</div>\n</div>\n</div>"]}
1
+ {"version":3,"file":"ai-agent-run.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run.component.ts","../../../../src/lib/custom/ai-agent-run/ai-agent-run.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ViewChild, inject } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { BaseEntity, BaseEntityEvent, CompositeKey, Metadata } from '@memberjunction/core';\nimport {\n LoadAgentRunTree,\n MAX_AGENT_RUN_TREE_DEPTH,\n MJAIAgentRunEntityExtended,\n MJAIAgentEntityExtended,\n WalkAgentRunTree,\n type AgentRunTreeNode,\n} from '@memberjunction/ai-core-plus';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { MJGlobal, MJEvent, MJEventType, RegisterClass, UUIDsEqual } from '@memberjunction/global';\nimport { SharedService, NavigationService } from '@memberjunction/ng-shared';\nimport { TimelineItem, AIAgentRunTimelineComponent } from './ai-agent-run-timeline.component';\nimport { MJAIAgentRunFormComponent } from '../../generated/Entities/MJAIAgentRun/mjaiagentrun.form.component';\nimport { ParseJSONRecursive, ParseJSONOptions } from '@memberjunction/global';\nimport { AIAgentRunAnalyticsComponent } from './ai-agent-run-analytics.component';\nimport { AIAgentRunCostService, AgentRunCostMetrics } from './ai-agent-run-cost.service';\nimport { AIAgentRunDataHelper } from './ai-agent-run-data.service';\nimport { ApplicationManager } from '@memberjunction/ng-base-application';\n\n/**\n * Task statuses that mean the step is finished with. Anything else means the workflow is still\n * moving — see `WorkflowStillRunning`.\n */\nconst TERMINAL_TASK_STATUSES = new Set(['Complete', 'Failed', 'Cancelled', 'Skipped', 'Blocked']);\n\n/**\n * How often to re-read the tree while a detached workflow runs.\n *\n * Human-scale rather than aggressive: a workflow step takes seconds at least, and the query walks\n * the whole tree. Fast enough that a watcher sees progress, slow enough that leaving the tab open on\n * a long workflow is not a load problem.\n */\nconst WORKFLOW_POLL_INTERVAL_MS = 4000;\n\n@RegisterClass(BaseFormComponent, 'MJ: AI Agent Runs')\n@Component({\n standalone: false,\n selector: 'mj-ai-agent-run-form',\n templateUrl: './ai-agent-run.component.html',\n styleUrls: ['./ai-agent-run.component.css']\n})\nexport class MJAIAgentRunFormComponentExtended extends MJAIAgentRunFormComponent implements OnInit, OnDestroy {\n public record!: MJAIAgentRunEntityExtended;\n \n private destroy$ = new Subject<void>();\n\n // MJGlobal BaseEntity event subscription — fires on both local Save()\n // and server-side remote-invalidate events. While the run is Running,\n // this is how we hear about new steps and status changes without\n // polling the DB on a timer. Only attached when Status === 'Running'.\n private entityEventSubscription: Subscription | null = null;\n private refreshInFlight = false;\n\n /** Pending re-read of the run tree while a detached workflow is still running. */\n private workflowPollTimer: ReturnType<typeof setTimeout> | null = null;\n\n // UI state\n activeTab = 'timeline';\n selectedTimelineItem: TimelineItem | null = null;\n jsonPanelExpanded = false;\n loading = false;\n error: string | null = null;\n analyticsLoaded = false;\n visualizationLoaded = false;\n \n agent: MJAIAgentEntityExtended | null = null;\n \n // Cost metrics using shared service\n costMetrics: AgentRunCostMetrics | null = null;\n \n // Cached parsed results to prevent redundant JSON parsing\n private _cachedParsedResult: string | null = null;\n private _cachedParsedStartingPayload: string | null = null;\n private _cachedParsedFinalPayload: string | null = null;\n private _cachedParsedData: string | null = null;\n \n // Simple parsing state - true when all parsing is complete\n private _allParsingComplete = false;\n \n @ViewChild(AIAgentRunTimelineComponent) timelineComponent?: AIAgentRunTimelineComponent;\n @ViewChild(AIAgentRunAnalyticsComponent) analyticsComponent?: AIAgentRunAnalyticsComponent;\n\n // Field injections\n private navigationService = inject(NavigationService);\n private costService = inject(AIAgentRunCostService);\n private appManager = inject(ApplicationManager);\n\n // Instance of data helper per component\n public dataHelper = new AIAgentRunDataHelper();\n\n /**\n * The run's complete execution tree — loaded ONCE here and shared with every tab.\n *\n * **One load, one shape, one refresh.** The timeline, the three flow renderers and analytics all\n * need the same structure; letting each fetch its own would issue the same recursive query three\n * times, and — worse — let the tabs disagree, because a tab that loaded a second earlier shows a\n * different run than the one beside it. Sharing it also means a refresh updates all three at once\n * rather than whichever one the user happens to open next.\n */\n public runTree: AgentRunTreeNode | null = null;\n\n /** True while the tree is loading, so a tab can say so rather than render an empty run. */\n public runTreeLoading = false;\n\n /** Why the tree could not be loaded, or null. Surfaced rather than swallowed. */\n public runTreeError: string | null = null;\n\n /**\n * Loads (or reloads) the shared run tree.\n *\n * Errors are held rather than thrown: a run whose tree cannot be read still has fields worth\n * looking at, and taking the whole form down over one query would hide them.\n */\n private async loadRunTree(): Promise<void> {\n if (!this.record?.ID) return;\n this.runTreeLoading = true;\n this.runTreeError = null;\n try {\n const result = await LoadAgentRunTree(this.record.ID, this.RunQueryToUse);\n this.runTree = result.Root;\n this.runTreeError = result.ErrorMessage;\n if (result.Truncated) {\n this.runTreeError =\n `This run nests deeper than ${MAX_AGENT_RUN_TREE_DEPTH} levels; what is shown is truncated.`;\n }\n } catch (e) {\n this.runTreeError = e instanceof Error ? e.message : String(e);\n this.runTree = null;\n } finally {\n this.runTreeLoading = false;\n this.scheduleWorkflowPoll();\n }\n }\n\n /**\n * True when this run submitted a workflow that has not finished.\n *\n * **The run being \"Completed\" says nothing about this.** A task graph is submit-and-detach: the\n * step that submits it completes as soon as the graph is persisted, and the run completes with it\n * — while the dispatcher goes on executing for seconds or minutes afterwards. One observed run\n * finished in 225ms and its workflow ran for a further eighteen seconds.\n *\n * Without this the form showed a green COMPLETED header above steps sitting at Pending, and the\n * only available reading was that something had failed. Nothing had; the page was simply a\n * snapshot of a moving thing, with nothing saying so.\n */\n public get WorkflowStillRunning(): boolean {\n if (!this.runTree) return false;\n for (const node of WalkAgentRunTree(this.runTree)) {\n if (node.NodeType !== 'Task' && node.NodeType !== 'TaskGraph') continue;\n if (!TERMINAL_TASK_STATUSES.has(node.Status)) return true;\n }\n return false;\n }\n\n /**\n * Re-reads the tree while a detached workflow is still moving, and stops when it settles.\n *\n * Polling rather than the BaseEntity event subscription this form already has, because that\n * subscription cannot see this work for two independent reasons: it is only attached while the RUN\n * is `Running` (a detached graph outlives that), and the dispatcher advances tasks through the\n * claim protocol's direct SQL, which fires no entity events at all.\n *\n * Self-cancelling: each load reschedules only if work remains, so a settled run costs nothing.\n */\n private scheduleWorkflowPoll(): void {\n this.clearWorkflowPoll();\n if (!this.WorkflowStillRunning) return;\n this.workflowPollTimer = setTimeout(() => {\n this.workflowPollTimer = null;\n void this.loadRunTree();\n }, WORKFLOW_POLL_INTERVAL_MS);\n }\n\n private clearWorkflowPoll(): void {\n if (this.workflowPollTimer !== null) {\n clearTimeout(this.workflowPollTimer);\n this.workflowPollTimer = null;\n }\n }\n \n async ngOnInit() {\n await super.ngOnInit();\n \n if (this.record && this.record.ID) {\n await this.dataHelper.loadAgentRunData(this.record.ID);\n await this.loadRunTree();\n await this.loadAgent();\n await this.loadCostMetrics();\n\n // Parse all JSON fields on form load for instant access later\n this.parseAllFields();\n\n // If the run is in progress, subscribe to BaseEntity events so we\n // pick up new steps / status changes the moment AgentRunner saves\n // them — no 30s polling timer. Same pattern used by the Form\n // Builder cockpit. See `handleEntityEvent` below for filtering.\n if (this.record.Status === 'Running') {\n this.subscribeToRunEvents();\n }\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.clearWorkflowPoll();\n this.entityEventSubscription?.unsubscribe();\n this.entityEventSubscription = null;\n this.clearParsedCache();\n this.dataHelper.clearData();\n this.costMetrics = null;\n this.agent = null;\n }\n\n private subscribeToRunEvents(): void {\n if (this.entityEventSubscription) return;\n this.entityEventSubscription = MJGlobal.Instance.GetEventListener(false)\n .subscribe(mjEvent => this.handleEntityEvent(mjEvent));\n }\n\n private unsubscribeFromRunEvents(): void {\n this.entityEventSubscription?.unsubscribe();\n this.entityEventSubscription = null;\n }\n\n /**\n * Filter the global BaseEntity event firehose down to saves on the\n * current Agent Run row, its Steps, or its Prompt Runs — and only when\n * AgentRunID matches `this.record.ID`. Local `save` events come from\n * the in-process AgentRunner (dev/same-tab case, which is the primary\n * use case here); `remote-invalidate` covers writes from a separate\n * server process if GraphQL cache-invalidation is wired up.\n */\n private handleEntityEvent(mjEvent: MJEvent): void {\n if (mjEvent.event !== MJEventType.ComponentEvent) return;\n if (mjEvent.eventCode !== BaseEntity.BaseEventCode) return;\n const evt = mjEvent.args as BaseEntityEvent | undefined;\n if (!evt) return;\n if (evt.type !== 'save' && evt.type !== 'remote-invalidate') return;\n\n const entityName = evt.entityName ?? evt.baseEntity?.EntityInfo?.Name;\n if (!entityName) return;\n\n const runId = this.record?.ID;\n if (!runId) return;\n\n if (entityName === 'MJ: AI Agent Runs') {\n // Status change on THIS run row.\n const savedID = this.resolveEventID(evt);\n if (savedID && UUIDsEqual(savedID, runId)) {\n this.refreshData();\n // If the run completed, drop the subscription — no further\n // writes are expected and we don't want to hold the listener.\n const newStatus = this.resolveEventField<string>(evt, 'Status');\n if (newStatus && newStatus !== 'Running') {\n this.unsubscribeFromRunEvents();\n }\n }\n return;\n }\n\n // Steps still carry AgentRunID, so a step write can be correlated exactly to this run.\n if (entityName === 'MJ: AI Agent Run Steps') {\n const childAgentRunId = this.resolveEventField<string>(evt, 'AgentRunID');\n if (childAgentRunId && UUIDsEqual(childAgentRunId, runId)) {\n this.refreshRunDataDebounced();\n }\n return;\n }\n\n // Prompt runs and action logs expose no AgentRunID to correlate on: AIPromptRun.AgentRunID was\n // dropped in v5.50 (Break_CodeGen_Cycle_Remove_PromptRun_AgentRunID) and ActionExecutionLog never\n // had one. Correlating on it made this branch dead for action logs from the start, and for prompt\n // runs from v5.50 — the form simply stopped live-refreshing. Refresh unconditionally instead,\n // which is what the original comment described: the reload is debounced and re-reads only THIS\n // run, and the subscription is dropped once the run leaves 'Running', so a foreign write costs at\n // most one collapsed reload while a run is open on screen.\n if (entityName === 'MJ: AI Prompt Runs' || entityName === 'MJ: Action Execution Logs') {\n this.refreshRunDataDebounced();\n }\n }\n\n private resolveEventID(evt: BaseEntityEvent): string | null {\n if (evt.baseEntity) {\n return evt.baseEntity.PrimaryKey?.ToConcatenatedString() ?? null;\n }\n const payload = evt.payload as { primaryKeyValues?: string | null; recordData?: string | null } | undefined;\n if (!payload) return null;\n try {\n if (payload.primaryKeyValues) {\n const pk = JSON.parse(payload.primaryKeyValues) as Record<string, unknown> | unknown[];\n if (Array.isArray(pk)) {\n const idPair = pk.find(p => (p as { FieldName?: string }).FieldName === 'ID') as { Value?: unknown } | undefined;\n if (idPair?.Value != null) return String(idPair.Value);\n } else if (pk && typeof pk === 'object' && 'ID' in pk) {\n const v = (pk as { ID?: unknown }).ID;\n if (v != null) return String(v);\n }\n }\n } catch {\n // bad JSON — fall through to recordData\n }\n try {\n if (payload.recordData) {\n const row = JSON.parse(payload.recordData) as Record<string, unknown>;\n if (typeof row?.ID === 'string') return row.ID;\n }\n } catch {\n // ignore\n }\n return null;\n }\n\n private resolveEventField<T>(evt: BaseEntityEvent, fieldName: string): T | null {\n if (evt.baseEntity) {\n const val = evt.baseEntity.Get?.(fieldName) as T | undefined;\n return val ?? null;\n }\n const payload = evt.payload as { recordData?: string | null } | undefined;\n if (!payload?.recordData) return null;\n try {\n const row = JSON.parse(payload.recordData) as Record<string, unknown>;\n const v = row?.[fieldName];\n return (v ?? null) as T | null;\n } catch {\n return null;\n }\n }\n\n /**\n * Collapse rapid bursts of step/prompt/action events into a single\n * reload — AgentRunner often saves several rows in quick succession.\n */\n private refreshRunDataDebounced(): void {\n if (this.refreshInFlight) return;\n this.refreshInFlight = true;\n queueMicrotask(() => {\n this.refreshInFlight = false;\n if (!this.record?.ID) return;\n this.dataHelper.loadAgentRunData(this.record.ID, true);\n });\n }\n \n private async loadAgent() {\n if (!this.record?.AgentID) return;\n \n try {\n const md = this.ProviderToUse;\n const agent = await md.GetEntityObject<MJAIAgentEntityExtended>('MJ: AI Agents');\n if (agent && await agent.Load(this.record.AgentID)) {\n this.agent = agent;\n this.cdr.detectChanges();\n }\n } catch (error) {\n console.error('Error loading agent:', error);\n }\n }\n\n private async loadCostMetrics() {\n if (!this.record?.ID) return;\n \n try {\n this.costMetrics = await this.costService.getAgentRunCostMetrics(this.record.ID);\n this.cdr.markForCheck();\n } catch (error) {\n console.error('Error loading cost metrics:', error);\n this.costMetrics = {\n totalCost: 0,\n totalPrompts: 0,\n totalTokensInput: 0,\n totalTokensOutput: 0,\n isLoading: false,\n error: 'Failed to load cost data'\n };\n }\n }\n \n changeTab(tab: string) {\n this.activeTab = tab;\n \n // Lazy load the Visualization (playable + static flow) view on first access\n if (tab === 'visualization' && !this.visualizationLoaded) {\n this.visualizationLoaded = true;\n this.cdr.markForCheck();\n }\n \n // Lazy load analytics when the tab is first accessed\n if (tab === 'analytics' && !this.analyticsLoaded) {\n this.analyticsLoaded = true;\n this.cdr.markForCheck();\n }\n }\n \n \n calculateDuration(start: Date, end?: Date | null): string {\n if (!end) return 'Running...';\n \n const ms = end.getTime() - start.getTime();\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n if (ms < 3600000) return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`;\n return `${Math.floor(ms / 3600000)}h ${Math.floor((ms % 3600000) / 60000)}m`;\n }\n \n selectTimelineItem(item: TimelineItem) {\n this.selectedTimelineItem = item;\n this.jsonPanelExpanded = true;\n this.cdr.markForCheck();\n }\n \n closeJsonPanel() {\n this.selectedTimelineItem = null;\n this.cdr.markForCheck();\n }\n \n navigateToSubRun(runId: string) {\n SharedService.Instance.OpenEntityRecord(\"MJ: AI Agent Runs\", CompositeKey.FromID(runId));\n }\n\n navigateToParentRun() {\n if (this.record.ParentRunID) {\n SharedService.Instance.OpenEntityRecord(\"MJ: AI Agent Runs\", CompositeKey.FromID(this.record.ParentRunID));\n }\n }\n \n navigateToActionLog(logId: string) {\n SharedService.Instance.OpenEntityRecord(\"MJ: Action Execution Logs\", CompositeKey.FromID(logId));\n }\n \n openEntityRecord(entityName: string, recordId: string | null) {\n if (recordId) {\n SharedService.Instance.OpenEntityRecord(entityName, CompositeKey.FromID(recordId));\n }\n }\n \n navigateToEntityRecord(event: { entityName: string; recordId: string }) {\n SharedService.Instance.OpenEntityRecord(event.entityName, CompositeKey.FromID(event.recordId));\n }\n\n /**\n * Navigate to the conversation in the Chat application\n */\n navigateToConversation() {\n if (!this.record?.ConversationID) return;\n\n // Find the Chat app\n const chatApp = this.appManager.GetAllApps().find(app => app.Name === 'Chat');\n if (!chatApp) {\n console.warn('Chat application not found');\n return;\n }\n\n // Navigate to the Conversations nav item with the conversationId parameter\n this.navigationService.OpenNavItemByName(\n 'Conversations',\n { conversationId: this.record.ConversationID },\n chatApp.ID\n );\n }\n \n refreshData() {\n // Reload the agent run record to get latest status\n if (this.record?.ID) {\n // Clear parsed cache when refreshing data\n this.clearParsedCache();\n \n // No panel states to reset in simplified approach\n \n this.record.Load(this.record.ID).then(() => {\n // Clear cost cache and reload\n this.costService.clearCache(this.record.ID);\n this.loadCostMetrics();\n \n // Reload data through helper - this will update all components (force reload for refresh)\n this.dataHelper.loadAgentRunData(this.record.ID, true);\n void this.loadRunTree();\n \n // Trigger analytics refresh\n if (this.analyticsComponent) {\n this.analyticsComponent.loadData();\n }\n });\n }\n }\n \n \n getStatusIcon(status: string): string {\n const iconMap: Record<string, string> = {\n 'Running': 'fa-circle-notch fa-spin',\n 'Completed': 'fa-check-circle',\n 'Failed': 'fa-times-circle',\n 'Cancelled': 'fa-ban',\n 'Paused': 'fa-pause-circle'\n };\n return iconMap[status] || 'fa-question-circle';\n }\n \n async copyToClipboard(text: string) {\n try {\n await navigator.clipboard.writeText(text);\n // Could show a toast notification here\n } catch (err) {\n console.error('Failed to copy to clipboard:', err);\n }\n }\n \n /**\n * Get the Result field with recursive JSON parsing applied\n */\n get parsedResult(): string {\n if (!this.record?.Result) {\n return '';\n }\n \n // Return cached result if available\n if (this._cachedParsedResult !== null) {\n return this._cachedParsedResult;\n }\n \n \n try {\n // First, check if Result is a JSON string that needs to be parsed\n let resultData = this.record.Result;\n try {\n // If Result is a JSON string, parse it first\n resultData = JSON.parse(this.record.Result);\n } catch {\n // If it's not valid JSON, use it as-is\n resultData = this.record.Result;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false // Disable debug logging - regex issue fixed\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n const parsed = ParseJSONRecursive(resultData, parseOptions);\n const result = JSON.stringify(parsed, null, 2);\n \n // Cache the result\n this._cachedParsedResult = result;\n \n return result;\n } catch (e) {\n const fallbackResult = this.record.Result;\n this._cachedParsedResult = fallbackResult;\n return fallbackResult;\n }\n }\n \n /**\n * Get the Starting Payload field with recursive JSON parsing applied\n */\n get parsedStartingPayload(): string {\n if (!this.record?.StartingPayload) {\n return '';\n }\n \n // Return cached result if available\n if (this._cachedParsedStartingPayload !== null) {\n return this._cachedParsedStartingPayload;\n }\n \n \n try {\n // First, check if StartingPayload is a JSON string that needs to be parsed\n let payloadData = this.record.StartingPayload;\n try {\n // If StartingPayload is a JSON string, parse it first\n payloadData = JSON.parse(this.record.StartingPayload);\n } catch {\n // If it's not valid JSON, use it as-is\n payloadData = this.record.StartingPayload;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n const parsed = ParseJSONRecursive(payloadData, parseOptions);\n const result = JSON.stringify(parsed, null, 2);\n \n // Cache the result\n this._cachedParsedStartingPayload = result;\n \n return result;\n } catch (e) {\n const fallbackResult = this.record.StartingPayload;\n this._cachedParsedStartingPayload = fallbackResult;\n return fallbackResult;\n }\n }\n\n /**\n * Get the Final Payload (state) field with recursive JSON parsing applied\n */\n get parsedFinalPayload(): string {\n if (!this.record?.FinalPayload) return '';\n \n // Return cached result if available\n if (this._cachedParsedFinalPayload !== null) {\n return this._cachedParsedFinalPayload;\n }\n \n try {\n // First, check if FinalPayload is a JSON string that needs to be parsed\n let payloadData = this.record.FinalPayload;\n try {\n // If FinalPayload is a JSON string, parse it first\n payloadData = JSON.parse(this.record.FinalPayload);\n } catch {\n // If it's not valid JSON, use it as-is\n payloadData = this.record.FinalPayload;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false // Disable debug logging - regex issue fixed\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n const parsed = ParseJSONRecursive(payloadData, parseOptions);\n const result = JSON.stringify(parsed, null, 2);\n \n // Cache the result\n this._cachedParsedFinalPayload = result;\n \n return result;\n } catch (e) {\n const fallbackResult = this.record.FinalPayload;\n this._cachedParsedFinalPayload = fallbackResult;\n return fallbackResult;\n }\n }\n\n /**\n * Get the Data field with recursive JSON parsing applied\n */\n get parsedData(): string {\n if (!this.record?.Data) return '';\n \n // Return cached result if available\n if (this._cachedParsedData !== null) {\n return this._cachedParsedData;\n }\n \n try {\n // First, check if Data is a JSON string that needs to be parsed\n let data = this.record.Data;\n try {\n // If Data is a JSON string, parse it first\n data = JSON.parse(this.record.Data);\n } catch {\n // If it's not valid JSON, use it as-is\n data = this.record.Data;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n const parsed = ParseJSONRecursive(data, parseOptions);\n const result = JSON.stringify(parsed, null, 2);\n \n // Cache the result\n this._cachedParsedData = result;\n \n return result;\n } catch (e) {\n const fallbackResult = this.record.Data;\n this._cachedParsedData = fallbackResult;\n return fallbackResult;\n }\n }\n \n /**\n * Get parsed Starting Payload as an object for deep diff\n */\n get startingPayloadObject(): any {\n if (!this.record?.StartingPayload) return null;\n \n try {\n // First, check if StartingPayload is a JSON string that needs to be parsed\n let payloadData = this.record.StartingPayload;\n try {\n // If StartingPayload is a JSON string, parse it first\n payloadData = JSON.parse(this.record.StartingPayload);\n } catch {\n // If it's not valid JSON, use it as-is\n payloadData = this.record.StartingPayload;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n return ParseJSONRecursive(payloadData, parseOptions);\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Get parsed Final Payload as an object for deep diff\n */\n get finalPayloadObject(): any {\n if (!this.record?.FinalPayload) return null;\n \n try {\n // First, check if FinalPayload is a JSON string that needs to be parsed\n let payloadData = this.record.FinalPayload;\n try {\n // If FinalPayload is a JSON string, parse it first\n payloadData = JSON.parse(this.record.FinalPayload);\n } catch {\n // If it's not valid JSON, use it as-is\n payloadData = this.record.FinalPayload;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n return ParseJSONRecursive(payloadData, parseOptions);\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Clear all cached parsed results\n */\n private clearParsedCache(): void {\n this._cachedParsedResult = null;\n this._cachedParsedStartingPayload = null;\n this._cachedParsedFinalPayload = null;\n this._cachedParsedData = null;\n this._allParsingComplete = false;\n }\n \n /**\n * Parse all JSON fields at once and cache results\n */\n private parseAllFields(): void {\n try {\n let parsedCount = 0;\n \n // Parse all fields that exist\n if (this.record?.Result) {\n this.parsedResult; // Triggers parsing and caching\n parsedCount++;\n }\n \n if (this.record?.StartingPayload) {\n this.parsedStartingPayload; // Triggers parsing and caching\n parsedCount++;\n }\n \n if (this.record?.FinalPayload) {\n this.parsedFinalPayload; // Triggers parsing and caching\n parsedCount++;\n }\n \n if (this.record?.Data) {\n this.parsedData; // Triggers parsing and caching\n parsedCount++;\n }\n \n this._allParsingComplete = true;\n \n } catch (error) {\n console.error('Error during JSON parsing:', error);\n }\n }\n \n /**\n * Check if all parsing is complete - used by template\n */\n get isParsingComplete(): boolean {\n return this._allParsingComplete;\n }\n\n /**\n * Check if we have both payloads to show diff\n */\n get showPayloadDiff(): boolean {\n return !!(this.record?.StartingPayload && this.record?.FinalPayload);\n }\n\n /**\n * Check if selected timeline item is a step with payload changes\n */\n get showStepPayloadDiff(): boolean {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return false;\n }\n \n const stepData = this.selectedTimelineItem.data;\n if (stepData && (stepData.PayloadAtStart?.trim().length > 0 \n || stepData.PayloadAtEnd?.trim().length > 0)) {\n return stepData.PayloadAtStart !== stepData.PayloadAtEnd;\n }\n else {\n return false;\n }\n }\n\n /**\n * Get parsed PayloadAtStart for the selected step\n */\n get stepPayloadAtStartObject(): any {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return null;\n }\n \n const stepData = this.selectedTimelineItem.data;\n if (!stepData || !stepData.PayloadAtStart) {\n return null;\n }\n \n try {\n let payloadData = stepData.PayloadAtStart;\n try {\n payloadData = JSON.parse(stepData.PayloadAtStart);\n } catch {\n payloadData = stepData.PayloadAtStart;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n return ParseJSONRecursive(payloadData, parseOptions);\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Get parsed PayloadAtEnd for the selected step\n */\n get stepPayloadAtEndObject(): any {\n if (!this.selectedTimelineItem || this.selectedTimelineItem.type !== 'step') {\n return null;\n }\n \n const stepData = this.selectedTimelineItem.data;\n if (!stepData || !stepData.PayloadAtEnd) {\n return null;\n }\n \n try {\n let payloadData = stepData.PayloadAtEnd;\n try {\n payloadData = JSON.parse(stepData.PayloadAtEnd);\n } catch {\n payloadData = stepData.PayloadAtEnd;\n }\n \n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n // Re-enabled ParseJSONRecursive with performance optimizations\n return ParseJSONRecursive(payloadData, parseOptions);\n } catch (e) {\n return null;\n }\n }\n}\n","<div class=\"record-form-container ai-agent-run-form\">\n <div class=\"record-form\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"icon-wrapper\">\n @if (agent && agent.LogoURL) {\n <img [src]=\"agent.LogoURL\" [alt]=\"agent.Name || 'Agent'\" class=\"agent-logo\" />\n }\n @if (agent && !agent.LogoURL && agent.IconClass) {\n <i class=\"fas\" [ngClass]=\"agent.IconClass\"></i>\n }\n @if (!agent || (!agent.LogoURL && !agent.IconClass)) {\n <i class=\"fas fa-robot\"></i>\n }\n </div>\n <div class=\"header-info\">\n <h2>AI Agent Run</h2>\n <div class=\"meta-info\">\n @if (agent) {\n <span class=\"agent-name\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agents', record.AgentID)\">\n {{ agent.Name }}\n </a>\n </span>\n }\n <span class=\"run-id\">{{ record.ID }}</span>\n @if (record.ParentRunID) {\n <span class=\"parent-run\">\n <i class=\"fas fa-level-up-alt\"></i>\n <a (click)=\"navigateToParentRun()\" class=\"parent-link\">Parent Run</a>\n </span>\n }\n <!-- Conversation Link Pill -->\n @if (record.ConversationID) {\n <span class=\"conversation-pill\" (click)=\"navigateToConversation()\" title=\"Open conversation in Chat app\">\n <i class=\"fas fa-comments\"></i>\n <span>Conversation</span>\n <i class=\"fas fa-external-link-alt pill-action\"></i>\n </span>\n }\n </div>\n </div>\n </div>\n <div class=\"header-right\">\n @if (record.PlanMode) {\n <div class=\"plan-mode-badge\" title=\"This run executed in Plan Mode — the agent presented a plan for human approval before executing actions or sub-agents\">\n <i class=\"fas fa-clipboard-check\"></i>\n Plan Mode\n </div>\n }\n <div class=\"status-badge\" [attr.data-status]=\"record.Status\">\n <i class=\"fas\" [ngClass]=\"getStatusIcon(record.Status || '')\"></i>\n {{ record.Status }}\n </div>\n <!-- A workflow outlives the run that submitted it, so a Completed run can still have work\n in flight. Said beside the status rather than instead of it — both are true. -->\n @if (WorkflowStillRunning) {\n <div class=\"workflow-running-badge\"\n title=\"This run submitted a workflow that runs on the dispatcher. The run finished when the workflow was submitted; the workflow itself is still going. This view refreshes on its own.\">\n <i class=\"fas fa-circle-notch fa-spin\"></i>\n Workflow still running\n </div>\n }\n <div class=\"header-actions\">\n <button class=\"btn-icon\" (click)=\"refreshData()\" title=\"Refresh\">\n <i class=\"fas fa-sync-alt\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat\">\n <span class=\"label\">Started</span>\n <span class=\"value\">{{ record.StartedAt | date:'medium' }}</span>\n </div>\n @if (record.CompletedAt) {\n <div class=\"stat\">\n <span class=\"label\">Completed</span>\n <span class=\"value\">{{ record.CompletedAt | date:'medium' }}</span>\n </div>\n }\n @if (record.CompletedAt) {\n <div class=\"stat\">\n <span class=\"label\">Duration</span>\n <span class=\"value\">{{ calculateDuration(record.StartedAt, record.CompletedAt) }}</span>\n </div>\n }\n @if (record.Success !== null && record.CompletedAt !== null) {\n <div class=\"stat\">\n <span class=\"label\">Result</span>\n <span class=\"value\" [class.success]=\"record.Success\" [class.error]=\"!record.Success\">\n {{ record.Success ? 'Success' : 'Failed' }}\n </span>\n </div>\n }\n @if (costMetrics && (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) > 0) {\n <div class=\"stat\">\n <span class=\"label\">Tokens</span>\n @if (!costMetrics.isLoading) {\n <span class=\"value\">{{ (costMetrics.totalTokensInput + costMetrics.totalTokensOutput) | number:'1.0-0' }}</span>\n }\n @if (costMetrics.isLoading) {\n <span class=\"value loading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n }\n </div>\n }\n @if (costMetrics && costMetrics.totalCost > 0) {\n <div class=\"stat\">\n <span class=\"label\">Cost</span>\n @if (!costMetrics.isLoading) {\n <span class=\"value\">${{ costMetrics.totalCost | number:'1.2-4' }}</span>\n }\n @if (costMetrics.isLoading) {\n <span class=\"value loading\"><i class=\"fas fa-spinner fa-spin\"></i></span>\n }\n </div>\n }\n @if (record.EffortLevel) {\n <div class=\"stat\">\n <span class=\"label\">Effort Level</span>\n <span class=\"value\">{{ record.EffortLevel }}</span>\n </div>\n }\n </div>\n\n <!-- Configuration Bar (shown below header stats when ConfigurationID exists) -->\n @if (record.ConfigurationID) {\n <div class=\"configuration-bar\">\n <div class=\"config-item\">\n <i class=\"fas fa-cog\"></i>\n <div class=\"config-content\">\n <div class=\"config-label\">Configuration</div>\n <div class=\"config-value\">\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Configurations', record.ConfigurationID)\">\n {{ record.Configuration || 'Unknown' }}\n </a>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\" [class.active]=\"activeTab === 'timeline'\" (click)=\"changeTab('timeline')\">\n <i class=\"fas fa-stream\"></i> Timeline\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'visualization'\" (click)=\"changeTab('visualization')\">\n <i class=\"fas fa-diagram-project\"></i> Visualization\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'analytics'\" (click)=\"changeTab('analytics')\">\n <i class=\"fas fa-chart-line\"></i> Analytics\n </button>\n <button class=\"tab\" [class.active]=\"activeTab === 'details'\" (click)=\"changeTab('details')\">\n <i class=\"fas fa-info-circle\"></i> Details\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"content-area\">\n <!-- Timeline Tab -->\n @if (activeTab === 'timeline') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n <as-split direction=\"horizontal\" style=\"height: 100%;\">\n <!-- Timeline Pane -->\n <as-split-area [size]=\"selectedTimelineItem ? 55 : 100\">\n <mj-ai-agent-run-timeline\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n [RunTree]=\"runTree\"\n (itemSelected)=\"selectTimelineItem($event)\"\n (navigateToEntity)=\"navigateToEntityRecord($event)\">\n </mj-ai-agent-run-timeline>\n </as-split-area>\n <!-- JSON Detail Pane -->\n @if (selectedTimelineItem) {\n <as-split-area [size]=\"45\">\n <mj-ai-agent-run-step-detail\n [selectedTimelineItem]=\"selectedTimelineItem\"\n [Provider]=\"ProviderToUse\"\n (closePanel)=\"closeJsonPanel()\"\n (navigateToActionLog)=\"navigateToActionLog($event)\"\n (copyToClipboard)=\"copyToClipboard($event)\">\n </mj-ai-agent-run-step-detail>\n </as-split-area>\n }\n </as-split>\n </div>\n }\n\n <!-- Visualization Tab (animated flow views + static flowchart) -->\n @if (activeTab === 'visualization') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n @if (visualizationLoaded) {\n <mj-ai-agent-run-flow\n [aiAgentRunId]=\"record.ID\"\n [dataHelper]=\"dataHelper\"\n [agentName]=\"agent?.Name || null\"\n [runStatus]=\"record.Status || ''\"\n [agentIconClass]=\"agent?.IconClass || null\"\n [agentLogoUrl]=\"agent?.LogoURL || null\"\n [RunTree]=\"runTree\">\n </mj-ai-agent-run-flow>\n }\n </div>\n }\n\n <!-- Analytics Tab -->\n @if (activeTab === 'analytics') {\n <div class=\"tab-content\" style=\"height: 100%;\">\n @if (analyticsLoaded) {\n <mj-ai-agent-run-analytics\n #analyticsComponent\n [agentRunId]=\"record.ID\"\n [RunTree]=\"runTree\"\n >\n </mj-ai-agent-run-analytics>\n }\n </div>\n }\n\n <!-- Details Tab -->\n @if (activeTab === 'details') {\n <div class=\"tab-content\">\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-info-circle\"></i> General Information\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Agent</label>\n <span>\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agents', record.AgentID)\">\n {{ agent?.Name || 'N/A' }}\n </a>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Parent Run ID</label>\n <span>\n @if (record.ParentRunID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.ParentRunID)\">\n {{ record.ParentRunID }}\n </a>\n }\n @if (!record.ParentRunID) {\n <span>None (Root)</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Last Run ID</label>\n <span>\n @if (record.LastRunID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Agent Runs', record.LastRunID)\">\n {{ record.LastRunID }}\n </a>\n }\n @if (!record.LastRunID) {\n <span>None</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Conversation ID</label>\n <span>\n @if (record.ConversationID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: Conversations', record.ConversationID)\">\n {{ record.ConversationID }}\n </a>\n }\n @if (!record.ConversationID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>User</label>\n <span>\n @if (record.UserID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: Users', record.UserID)\">\n {{ record.User || 'N/A' }}\n </a>\n }\n @if (!record.UserID) {\n <span>N/A</span>\n }\n </span>\n </div>\n </div>\n </mj-accordion-panel>\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-cogs\"></i> Execution Settings\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Override Model</label>\n <span>\n @if (record.OverrideModelID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Models', record.OverrideModelID)\">\n {{ record.OverrideModel || 'N/A' }}\n </a>\n }\n @if (!record.OverrideModelID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Override Vendor</label>\n <span>\n @if (record.OverrideVendorID) {\n <a href=\"javascript:void(0)\" class=\"entity-link\" (click)=\"openEntityRecord('MJ: AI Vendors', record.OverrideVendorID)\">\n {{ record.OverrideVendor || 'N/A' }}\n </a>\n }\n @if (!record.OverrideVendorID) {\n <span>N/A</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Verbose Logging</label>\n <span>{{ record.Verbose ? 'Yes' : 'No' }}</span>\n </div>\n </div>\n </mj-accordion-panel>\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-tasks\"></i> Execution Status\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Status</label>\n <span class=\"status-badge\" [attr.data-status]=\"record.Status\">\n {{ record.Status }}\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Success</label>\n @if (record.Success === null) {\n <span>In Progress</span>\n }\n @else if (record.Success) {\n <span class=\"success\">Yes</span>\n }\n @else {\n <span class=\"error-message\">No</span>\n }\n </div>\n @if (record.Message) {\n <div class=\"detail-item full-width\">\n <label>Message</label>\n <div class=\"message\">{{ record.Message }}</div>\n </div>\n }\n @if (record.ErrorMessage) {\n <div class=\"detail-item full-width\">\n <label>Error Message</label>\n <div class=\"error-message\">{{ record.ErrorMessage }}</div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-dollar-sign\"></i> Usage &amp; Cost\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Total Tokens Used</label>\n <span>{{ record.TotalTokensUsed ? (record.TotalTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Prompt Tokens</label>\n <span>{{ record.TotalPromptTokensUsed ? (record.TotalPromptTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Completion Tokens</label>\n <span>{{ record.TotalCompletionTokensUsed ? (record.TotalCompletionTokensUsed | number:'1.0-0') : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Cost</label>\n <span>{{ record.TotalCost != null ? ('$' + (record.TotalCost | number:'1.2-4')) : 'N/A' }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Total Prompt Iterations</label>\n <span>{{ record.TotalPromptIterations != null ? (record.TotalPromptIterations | number:'1.0-0') : 'N/A' }}</span>\n </div>\n </div>\n </mj-accordion-panel>\n @if (record.Result) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-code\"></i> Result\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading result data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (record.StartingPayload) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-upload\"></i> Starting Payload\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedStartingPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (record.Data) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-database\"></i> Execution Data\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedData\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading execution data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (record.FinalPayload) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-download\"></i> Final Payload\n </ng-template>\n <div class=\"result-viewer\">\n @if (isParsingComplete) {\n <mj-code-editor\n [ngModel]=\"parsedFinalPayload\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading final payload data...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n @if (showPayloadDiff) {\n <mj-accordion-panel [Expanded]=\"false\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-code-compare\"></i> Payload Diff\n </ng-template>\n <div style=\"padding: 20px; background: var(--mj-bg-surface-card);\">\n @if (isParsingComplete) {\n <mj-deep-diff\n [oldValue]=\"startingPayloadObject\"\n [newValue]=\"finalPayloadObject\"\n [title]=\"''\"\n [showSummary]=\"true\"\n [showUnchanged]=\"false\"\n [expandAll]=\"false\"\n [maxDepth]=\"10\"\n [maxStringLength]=\"200\"\n [treatNullAsUndefined]=\"true\">\n </mj-deep-diff>\n } @else {\n <div style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading payload diff...\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n </div>\n }\n</div>\n</div>\n</div>"]}
@@ -2,6 +2,7 @@ import { OnDestroy, AfterViewInit } from '@angular/core';
2
2
  import { AIAgentRunDataHelper } from '../ai-agent-run-data.service';
3
3
  import { TimelineItem } from '../ai-agent-run-timeline.component';
4
4
  import { FlowModel, FlowNode } from './agent-run-flow.model';
5
+ import type { AgentRunTreeNode } from '@memberjunction/ai-core-plus';
5
6
  import * as i0 from "@angular/core";
6
7
  interface FlowMode {
7
8
  key: string;
@@ -24,6 +25,14 @@ export declare class AIAgentRunFlowComponent implements AfterViewInit, OnDestroy
24
25
  runStatus: string;
25
26
  agentIconClass: string | null;
26
27
  agentLogoUrl: string | null;
28
+ /**
29
+ * The run's execution tree, loaded once by the form and shared with every tab.
30
+ *
31
+ * Setter-based so a refresh upstream rebuilds all three renderers immediately — they share one
32
+ * model, so one rebuild updates whichever is on screen and every one behind it.
33
+ */
34
+ set RunTree(value: AgentRunTreeNode | null);
35
+ private runTree;
27
36
  modes: FlowMode[];
28
37
  mode: string;
29
38
  model: FlowModel | null;
@@ -102,7 +111,7 @@ export declare class AIAgentRunFlowComponent implements AfterViewInit, OnDestroy
102
111
  private updateLogTree;
103
112
  private escape;
104
113
  static ɵfac: i0.ɵɵFactoryDeclaration<AIAgentRunFlowComponent, never>;
105
- static ɵcmp: i0.ɵɵComponentDeclaration<AIAgentRunFlowComponent, "mj-ai-agent-run-flow", never, { "aiAgentRunId": { "alias": "aiAgentRunId"; "required": false; }; "dataHelper": { "alias": "dataHelper"; "required": false; }; "agentName": { "alias": "agentName"; "required": false; }; "runStatus": { "alias": "runStatus"; "required": false; }; "agentIconClass": { "alias": "agentIconClass"; "required": false; }; "agentLogoUrl": { "alias": "agentLogoUrl"; "required": false; }; }, {}, never, never, false, never>;
114
+ static ɵcmp: i0.ɵɵComponentDeclaration<AIAgentRunFlowComponent, "mj-ai-agent-run-flow", never, { "aiAgentRunId": { "alias": "aiAgentRunId"; "required": false; }; "dataHelper": { "alias": "dataHelper"; "required": false; }; "agentName": { "alias": "agentName"; "required": false; }; "runStatus": { "alias": "runStatus"; "required": false; }; "agentIconClass": { "alias": "agentIconClass"; "required": false; }; "agentLogoUrl": { "alias": "agentLogoUrl"; "required": false; }; "RunTree": { "alias": "RunTree"; "required": false; }; }, {}, never, never, false, never>;
106
115
  }
107
116
  export {};
108
117
  //# sourceMappingURL=agent-run-flow.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-run-flow.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/agent-run-flow.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-run-flow.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/agent-run-flow.component.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import { UserInfoEngine } from '@memberjunction/core-entities';
9
9
  import { buildFlowModel, activeLeaf, ancestors, formatDuration, shortLabel, FLOW_COLORS, FLOW_EMOJI, FLOW_LABEL } from './agent-run-flow.model';
10
10
  import { FlameCascadeComponent } from './flame-cascade.component';
11
11
  import { SubwayLinesComponent } from './subway-lines.component';
12
+ import { buildFlowModelFromTree } from './run-tree-flow-projection';
12
13
  import { ConstellationComponent } from './constellation.component';
13
14
  import { FlowchartComponent } from './flowchart.component';
14
15
  import * as i0 from "@angular/core";
@@ -213,6 +214,7 @@ export class AIAgentRunFlowComponent {
213
214
  this.runStatus = '';
214
215
  this.agentIconClass = null;
215
216
  this.agentLogoUrl = null;
217
+ this.runTree = null;
216
218
  this.modes = [
217
219
  { key: 'subway', label: 'Subway Lines', icon: 'fa-train-subway', enabled: true },
218
220
  { key: 'constellation', label: 'Constellation', icon: 'fa-star', enabled: true },
@@ -247,6 +249,16 @@ export class AIAgentRunFlowComponent {
247
249
  this.zone = inject(NgZone);
248
250
  this.cdr = inject(ChangeDetectorRef);
249
251
  }
252
+ /**
253
+ * The run's execution tree, loaded once by the form and shared with every tab.
254
+ *
255
+ * Setter-based so a refresh upstream rebuilds all three renderers immediately — they share one
256
+ * model, so one rebuild updates whichever is on screen and every one behind it.
257
+ */
258
+ set RunTree(value) {
259
+ this.runTree = value;
260
+ void this.rebuildModel();
261
+ }
250
262
  /** The animated modes share the master clock + narration rail; Flow is static. */
251
263
  get isAnimated() { return this.mode !== 'flow'; }
252
264
  /** Rail (now-executing + log tree) shows only for animated modes with nothing selected. */
@@ -281,7 +293,15 @@ export class AIAgentRunFlowComponent {
281
293
  const wasEmpty = !this.model;
282
294
  await AIEngineBase.Instance.EnsureLoaded(); // agent icons/logos read synchronously during build
283
295
  const rootIcon = { iconClass: this.agentIconClass || 'fa-robot', logoUrl: this.agentLogoUrl };
284
- const model = await buildFlowModel(this.agentName ?? '', this.runStatus, rootIcon, this.dataHelper);
296
+ // The TREE is the source. It carries the run's steps AND any task-graph work those steps
297
+ // submitted — which the step-row builder cannot see at all, because a workflow's steps live in
298
+ // MJ: Tasks rather than in the run's step list. Falling back to the step builder when the tree
299
+ // has not arrived keeps the view populated on first paint rather than flashing empty.
300
+ const model = this.runTree
301
+ ? buildFlowModelFromTree(this.runTree, this.agentName ?? '', this.runStatus, rootIcon)
302
+ : await buildFlowModel(this.agentName ?? '', this.runStatus, rootIcon, this.dataHelper);
303
+ if (!model)
304
+ return;
285
305
  this.model = model;
286
306
  this.hasData = model.leaves.length > 0;
287
307
  if (wasEmpty)
@@ -544,7 +564,7 @@ export class AIAgentRunFlowComponent {
544
564
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nowStatRef = _t.first);
545
565
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nowBarRef = _t.first);
546
566
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loglistRef = _t.first);
547
- } }, inputs: { aiAgentRunId: "aiAgentRunId", dataHelper: "dataHelper", agentName: "agentName", runStatus: "runStatus", agentIconClass: "agentIconClass", agentLogoUrl: "agentLogoUrl" }, standalone: false, decls: 19, vars: 18, consts: [["crumb", ""], ["nowIco", ""], ["nowName", ""], ["nowType", ""], ["nowDur", ""], ["nowStat", ""], ["nowModel", ""], ["nowBar", ""], ["loglist", ""], ["scrub", ""], ["clock", ""], [1, "flow-cockpit"], [1, "flow-modes"], [1, "flow-mode", 3, "on", "soon", "disabled", "title"], [1, "flow-main"], [1, "flow-stage"], [1, "flow-overlay"], [1, "flow-overlay", "flow-empty"], [3, "nodeSelected", "Model"], [3, "nodeSelected", "selectionCleared", "Model"], [1, "flow-zoom"], [1, "flow-rail", 3, "width"], [1, "flow-detail", 3, "width"], [1, "flow-transport"], [1, "flow-legend"], [1, "flow-mode", 3, "click", "disabled", "title"], [1, "fas", 3, "ngClass"], [1, "soon-tag"], ["text", "Building flow\u2026"], [1, "fas", "fa-wind"], ["title", "Zoom in", 1, "fz-btn", 3, "click"], [1, "fas", "fa-magnifying-glass-plus"], ["title", "Zoom out", 1, "fz-btn", 3, "click"], [1, "fas", "fa-magnifying-glass-minus"], ["title", "Fit to view", 1, "fz-btn", 3, "click"], [1, "fas", "fa-expand"], [1, "flow-rail"], ["title", "Drag to resize", 1, "flow-resizer", 3, "mousedown"], [1, "now"], [1, "rail-lbl"], [1, "breadcrumb"], [1, "nowcard"], [1, "ico"], [1, "type"], [1, "meta"], [1, "barbg"], [1, "barfg"], [1, "log"], [1, "rail-lbl", "sticky"], [1, "loglist"], [1, "flow-detail"], [3, "closePanel", "navigateToActionLog", "copyToClipboard", "selectedTimelineItem"], [1, "pbtn", 3, "click", "disabled", "title"], ["title", "Restart", 1, "ibtn", 3, "click", "disabled"], [1, "fas", "fa-rotate-left"], ["type", "range", "min", "0", "max", "1000", "value", "0", 1, "scrub", 3, "input", "disabled"], [1, "clock"], [1, "speedbox"], [1, "fas", "fa-gauge-high"], ["type", "range", "min", "25", "max", "300", "value", "100", 1, "speed", 3, "input"], [1, "spdval"], [1, "lg", 2, "background", "var(--mj-text-muted)"], [1, "legend-note"]], template: function AIAgentRunFlowComponent_Template(rf, ctx) { if (rf & 1) {
567
+ } }, inputs: { aiAgentRunId: "aiAgentRunId", dataHelper: "dataHelper", agentName: "agentName", runStatus: "runStatus", agentIconClass: "agentIconClass", agentLogoUrl: "agentLogoUrl", RunTree: "RunTree" }, standalone: false, decls: 19, vars: 18, consts: [["crumb", ""], ["nowIco", ""], ["nowName", ""], ["nowType", ""], ["nowDur", ""], ["nowStat", ""], ["nowModel", ""], ["nowBar", ""], ["loglist", ""], ["scrub", ""], ["clock", ""], [1, "flow-cockpit"], [1, "flow-modes"], [1, "flow-mode", 3, "on", "soon", "disabled", "title"], [1, "flow-main"], [1, "flow-stage"], [1, "flow-overlay"], [1, "flow-overlay", "flow-empty"], [3, "nodeSelected", "Model"], [3, "nodeSelected", "selectionCleared", "Model"], [1, "flow-zoom"], [1, "flow-rail", 3, "width"], [1, "flow-detail", 3, "width"], [1, "flow-transport"], [1, "flow-legend"], [1, "flow-mode", 3, "click", "disabled", "title"], [1, "fas", 3, "ngClass"], [1, "soon-tag"], ["text", "Building flow\u2026"], [1, "fas", "fa-wind"], ["title", "Zoom in", 1, "fz-btn", 3, "click"], [1, "fas", "fa-magnifying-glass-plus"], ["title", "Zoom out", 1, "fz-btn", 3, "click"], [1, "fas", "fa-magnifying-glass-minus"], ["title", "Fit to view", 1, "fz-btn", 3, "click"], [1, "fas", "fa-expand"], [1, "flow-rail"], ["title", "Drag to resize", 1, "flow-resizer", 3, "mousedown"], [1, "now"], [1, "rail-lbl"], [1, "breadcrumb"], [1, "nowcard"], [1, "ico"], [1, "type"], [1, "meta"], [1, "barbg"], [1, "barfg"], [1, "log"], [1, "rail-lbl", "sticky"], [1, "loglist"], [1, "flow-detail"], [3, "closePanel", "navigateToActionLog", "copyToClipboard", "selectedTimelineItem"], [1, "pbtn", 3, "click", "disabled", "title"], ["title", "Restart", 1, "ibtn", 3, "click", "disabled"], [1, "fas", "fa-rotate-left"], ["type", "range", "min", "0", "max", "1000", "value", "0", 1, "scrub", 3, "input", "disabled"], [1, "clock"], [1, "speedbox"], [1, "fas", "fa-gauge-high"], ["type", "range", "min", "25", "max", "300", "value", "100", 1, "speed", 3, "input"], [1, "spdval"], [1, "lg", 2, "background", "var(--mj-text-muted)"], [1, "legend-note"]], template: function AIAgentRunFlowComponent_Template(rf, ctx) { if (rf & 1) {
548
568
  i0.ɵɵelementStart(0, "div", 11)(1, "div", 12);
549
569
  i0.ɵɵrepeaterCreate(2, AIAgentRunFlowComponent_For_3_Template, 5, 9, "button", 13, _forTrack0);
550
570
  i0.ɵɵelementEnd();
@@ -615,6 +635,8 @@ export class AIAgentRunFlowComponent {
615
635
  type: Input
616
636
  }], agentLogoUrl: [{
617
637
  type: Input
638
+ }], RunTree: [{
639
+ type: Input
618
640
  }], flame: [{
619
641
  type: ViewChild,
620
642
  args: [FlameCascadeComponent]
@@ -661,5 +683,5 @@ export class AIAgentRunFlowComponent {
661
683
  type: ViewChild,
662
684
  args: ['loglist']
663
685
  }] }); })();
664
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAgentRunFlowComponent, { className: "AIAgentRunFlowComponent", filePath: "src/lib/custom/ai-agent-run/flow/agent-run-flow.component.ts", lineNumber: 40 }); })();
686
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAgentRunFlowComponent, { className: "AIAgentRunFlowComponent", filePath: "src/lib/custom/ai-agent-run/flow/agent-run-flow.component.ts", lineNumber: 42 }); })();
665
687
  //# sourceMappingURL=agent-run-flow.component.js.map