@memberjunction/ng-core-entity-forms 6.2.0-edge.0 → 6.2.0-edge.1

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 (275) hide show
  1. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts +1 -1
  2. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js +2 -2
  3. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js.map +1 -1
  4. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
  5. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts +90 -16
  6. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
  7. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +218 -70
  8. package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
  9. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts +80 -16
  10. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
  11. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +146 -46
  12. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
  13. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +329 -27
  14. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  15. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +794 -262
  16. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  17. package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts +76 -0
  18. package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts.map +1 -1
  19. package/dist/lib/custom/AIAgents/ai-agent-management.service.js +77 -33
  20. package/dist/lib/custom/AIAgents/ai-agent-management.service.js.map +1 -1
  21. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts +69 -15
  22. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
  23. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +182 -74
  24. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
  25. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts +105 -25
  26. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
  27. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +272 -112
  28. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
  29. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts +32 -6
  30. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -1
  31. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +71 -19
  32. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
  33. package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts +10 -0
  34. package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts.map +1 -1
  35. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +27 -7
  36. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -1
  37. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts +65 -15
  38. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
  39. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +152 -52
  40. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
  41. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts +81 -15
  42. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
  43. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +145 -45
  44. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
  45. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +71 -17
  46. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
  47. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +175 -67
  48. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
  49. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +173 -27
  50. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  51. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +385 -93
  52. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  53. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts +64 -4
  54. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts.map +1 -1
  55. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +129 -29
  56. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
  57. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +260 -27
  58. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
  59. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +686 -238
  60. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  61. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts +10 -0
  62. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts.map +1 -1
  63. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js +17 -9
  64. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js.map +1 -1
  65. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts +74 -16
  66. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts.map +1 -1
  67. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +174 -58
  68. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
  69. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +108 -14
  70. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
  71. package/dist/lib/custom/Actions/action-execution-log-form.component.js +258 -70
  72. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  73. package/dist/lib/custom/Actions/action-form.component.d.ts +198 -14
  74. package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
  75. package/dist/lib/custom/Actions/action-form.component.js +387 -107
  76. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  77. package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts +12 -6
  78. package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts.map +1 -1
  79. package/dist/lib/custom/BridgeProviders/bridge-provider-features.js +41 -29
  80. package/dist/lib/custom/BridgeProviders/bridge-provider-features.js.map +1 -1
  81. package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js +14 -14
  82. package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js.map +1 -1
  83. package/dist/lib/custom/Companies/company-overview.panel.d.ts +1 -1
  84. package/dist/lib/custom/Companies/company-overview.panel.js +2 -2
  85. package/dist/lib/custom/Companies/company-overview.panel.js.map +1 -1
  86. package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts +1 -1
  87. package/dist/lib/custom/Conversations/conversation-overview.panel.js +2 -2
  88. package/dist/lib/custom/Conversations/conversation-overview.panel.js.map +1 -1
  89. package/dist/lib/custom/Employees/employee-overview.panel.d.ts +1 -1
  90. package/dist/lib/custom/Employees/employee-overview.panel.js +2 -2
  91. package/dist/lib/custom/Employees/employee-overview.panel.js.map +1 -1
  92. package/dist/lib/custom/Entities/entity-form.component.d.ts +209 -28
  93. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  94. package/dist/lib/custom/Entities/entity-form.component.js +494 -138
  95. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  96. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts +5 -1
  97. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts.map +1 -1
  98. package/dist/lib/custom/EntityActions/entityaction.form.component.js +10 -2
  99. package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
  100. package/dist/lib/custom/Files/file-form.component.d.ts +1 -1
  101. package/dist/lib/custom/Files/file-form.component.js +2 -2
  102. package/dist/lib/custom/Files/file-form.component.js.map +1 -1
  103. package/dist/lib/custom/Lists/list-form.component.d.ts +300 -36
  104. package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
  105. package/dist/lib/custom/Lists/list-form.component.js +664 -208
  106. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  107. package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +31 -0
  108. package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -1
  109. package/dist/lib/custom/MLModels/ml-model-view-models.js +52 -16
  110. package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -1
  111. package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +107 -10
  112. package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -1
  113. package/dist/lib/custom/MLModels/ps-model-detail.component.js +291 -101
  114. package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -1
  115. package/dist/lib/custom/Queries/query-form.component.d.ts +201 -26
  116. package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
  117. package/dist/lib/custom/Queries/query-form.component.js +429 -109
  118. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  119. package/dist/lib/custom/Queries/query-run-dialog.component.d.ts +107 -14
  120. package/dist/lib/custom/Queries/query-run-dialog.component.d.ts.map +1 -1
  121. package/dist/lib/custom/Queries/query-run-dialog.component.js +249 -79
  122. package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
  123. package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts +110 -4
  124. package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -1
  125. package/dist/lib/custom/RecordProcesses/record-process-form.component.js +858 -86
  126. package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -1
  127. package/dist/lib/custom/SearchScopes/searchscope-form.component.d.ts +1 -1
  128. package/dist/lib/custom/SearchScopes/searchscope-form.component.js +4 -4
  129. package/dist/lib/custom/SearchScopes/searchscope-form.component.js.map +1 -1
  130. package/dist/lib/custom/SessionBridges/session-bridge-form.component.js.map +1 -1
  131. package/dist/lib/custom/Templates/template-param-dialog.component.d.ts +77 -13
  132. package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
  133. package/dist/lib/custom/Templates/template-param-dialog.component.js +196 -78
  134. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  135. package/dist/lib/custom/Templates/template-params-grid.component.d.ts +49 -7
  136. package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
  137. package/dist/lib/custom/Templates/template-params-grid.component.js +132 -44
  138. package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
  139. package/dist/lib/custom/Templates/templates-form.component.d.ts +142 -17
  140. package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
  141. package/dist/lib/custom/Templates/templates-form.component.js +333 -113
  142. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  143. package/dist/lib/custom/Tests/entity-link-pill.component.d.ts +24 -4
  144. package/dist/lib/custom/Tests/entity-link-pill.component.d.ts.map +1 -1
  145. package/dist/lib/custom/Tests/entity-link-pill.component.js +64 -20
  146. package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
  147. package/dist/lib/custom/Tests/test-form.component.d.ts +217 -27
  148. package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
  149. package/dist/lib/custom/Tests/test-form.component.js +549 -169
  150. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  151. package/dist/lib/custom/Tests/test-run-checks.d.ts +2 -0
  152. package/dist/lib/custom/Tests/test-run-checks.d.ts.map +1 -1
  153. package/dist/lib/custom/Tests/test-run-checks.js +5 -1
  154. package/dist/lib/custom/Tests/test-run-checks.js.map +1 -1
  155. package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts +2 -0
  156. package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts.map +1 -1
  157. package/dist/lib/custom/Tests/test-run-feedback-form.component.js +5 -1
  158. package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
  159. package/dist/lib/custom/Tests/test-run-form.component.d.ts +146 -18
  160. package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
  161. package/dist/lib/custom/Tests/test-run-form.component.js +362 -106
  162. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  163. package/dist/lib/custom/Tests/test-suite-form.component.d.ts +390 -47
  164. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  165. package/dist/lib/custom/Tests/test-suite-form.component.js +1015 -343
  166. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  167. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +214 -26
  168. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
  169. package/dist/lib/custom/Tests/test-suite-run-form.component.js +535 -159
  170. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  171. package/dist/lib/custom/Users/user-overview.panel.d.ts +1 -1
  172. package/dist/lib/custom/Users/user-overview.panel.js +2 -2
  173. package/dist/lib/custom/Users/user-overview.panel.js.map +1 -1
  174. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +208 -29
  175. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
  176. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +446 -138
  177. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  178. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts +6 -0
  179. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts.map +1 -1
  180. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js +16 -4
  181. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js.map +1 -1
  182. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts +50 -6
  183. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -1
  184. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +84 -12
  185. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -1
  186. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +89 -5
  187. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
  188. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +216 -70
  189. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
  190. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts +62 -3
  191. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
  192. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +140 -42
  193. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
  194. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +81 -10
  195. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
  196. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +165 -37
  197. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  198. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +140 -15
  199. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  200. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +326 -100
  201. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  202. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts +101 -15
  203. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts.map +1 -1
  204. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js +281 -97
  205. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js.map +1 -1
  206. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts +43 -25
  207. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts.map +1 -1
  208. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js +100 -64
  209. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js.map +1 -1
  210. package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts +14 -2
  211. package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts.map +1 -1
  212. package/dist/lib/custom/ai-agent-run/flow/constellation.component.js +71 -53
  213. package/dist/lib/custom/ai-agent-run/flow/constellation.component.js.map +1 -1
  214. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts +14 -2
  215. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts.map +1 -1
  216. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js +70 -52
  217. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js.map +1 -1
  218. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts +8 -0
  219. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts.map +1 -1
  220. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js +22 -6
  221. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js.map +1 -1
  222. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts +24 -2
  223. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts.map +1 -1
  224. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js +91 -59
  225. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js.map +1 -1
  226. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts +10 -2
  227. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts.map +1 -1
  228. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js +33 -17
  229. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js.map +1 -1
  230. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts +2 -0
  231. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts.map +1 -1
  232. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js +34 -30
  233. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js.map +1 -1
  234. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts +14 -2
  235. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts.map +1 -1
  236. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js +69 -51
  237. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js.map +1 -1
  238. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +38 -12
  239. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
  240. package/dist/lib/custom/shared/entity-selector-dialog.component.js +103 -51
  241. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  242. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
  243. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +59 -51
  244. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
  245. package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js +76 -74
  246. package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js.map +1 -1
  247. package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js +27 -25
  248. package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js.map +1 -1
  249. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  250. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +155 -119
  251. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  252. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts +5 -1
  253. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts.map +1 -1
  254. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +11 -3
  255. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -1
  256. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.d.ts +2 -0
  257. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.d.ts.map +1 -1
  258. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js +16 -12
  259. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js.map +1 -1
  260. package/dist/lib/panels/content-sources/website-crawler-settings.panel.d.ts +1 -1
  261. package/dist/lib/panels/content-sources/website-crawler-settings.panel.js +2 -2
  262. package/dist/lib/panels/content-sources/website-crawler-settings.panel.js.map +1 -1
  263. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +45 -19
  264. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
  265. package/dist/lib/panels/model-predictions/model-prediction.logic.js +95 -43
  266. package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
  267. package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +20 -16
  268. package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -1
  269. package/dist/lib/panels/model-predictions/model-prediction.panel.js +73 -65
  270. package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -1
  271. package/dist/lib/shared/components/template-editor.component.d.ts +133 -14
  272. package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
  273. package/dist/lib/shared/components/template-editor.component.js +322 -124
  274. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  275. package/package.json +43 -42
@@ -6,10 +6,10 @@ import { CompositeKey } from '@memberjunction/core';
6
6
  import { SharedService } from '@memberjunction/ng-shared';
7
7
  import { AIEngineBase } from '@memberjunction/ai-engine-base';
8
8
  import { UserInfoEngine } from '@memberjunction/core-entities';
9
- import { buildFlowModel, activeLeaf, ancestors, formatDuration, shortLabel, FLOW_COLORS, FLOW_EMOJI, FLOW_LABEL } from './agent-run-flow.model';
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
+ import { BuildFlowModelFromTree } from './run-tree-flow-projection';
13
13
  import { ConstellationComponent } from './constellation.component';
14
14
  import { FlowchartComponent } from './flowchart.component';
15
15
  import * as i0 from "@angular/core";
@@ -210,30 +210,30 @@ function AIAgentRunFlowComponent_Conditional_18_Template(rf, ctx) { if (rf & 1)
210
210
  */
211
211
  export class AIAgentRunFlowComponent {
212
212
  constructor() {
213
- this.agentName = null;
214
- this.runStatus = '';
215
- this.agentIconClass = null;
216
- this.agentLogoUrl = null;
213
+ this.AgentName = null;
214
+ this.RunStatus = '';
215
+ this.AgentIconClass = null;
216
+ this.AgentLogoUrl = null;
217
217
  this.runTree = null;
218
- this.modes = [
218
+ this.Modes = [
219
219
  { key: 'subway', label: 'Subway Lines', icon: 'fa-train-subway', enabled: true },
220
220
  { key: 'constellation', label: 'Constellation', icon: 'fa-star', enabled: true },
221
221
  { key: 'flow', label: 'Flow', icon: 'fa-diagram-project', enabled: true },
222
222
  { key: 'flame', label: 'Flame Cascade', icon: 'fa-fire', enabled: true }
223
223
  ];
224
- this.mode = 'subway';
224
+ this.Mode = 'subway';
225
225
  this.model = null;
226
- this.playing = false;
227
- this.speed = 1;
228
- this.loading = true;
229
- this.hasData = false;
226
+ this.Playing = false;
227
+ this.Speed = 1;
228
+ this.Loading = true;
229
+ this.HasData = false;
230
230
  /** Selected node detail (any mode). */
231
- this.selectedStepItem = null;
231
+ this.SelectedStepItem = null;
232
232
  this.selectedNodeId = -1;
233
233
  this.logRows = new Map();
234
234
  this.lastActiveRowId = -1;
235
235
  /** Right-panel width (rail / inspector), resizable + persisted per user. Default is 50px wider than the old fixed panel. */
236
- this.panelWidth = 410;
236
+ this.PanelWidth = 410;
237
237
  this.PANEL_KEY = 'mj.agentRunFlow.panelWidth.v1';
238
238
  this.resizing = false;
239
239
  this.resizeStartX = 0;
@@ -249,6 +249,54 @@ export class AIAgentRunFlowComponent {
249
249
  this.zone = inject(NgZone);
250
250
  this.cdr = inject(ChangeDetectorRef);
251
251
  }
252
+ /** @deprecated Use {@link AiAgentRunId}. */
253
+ set aiAgentRunId(value) {
254
+ this.AiAgentRunId = value;
255
+ }
256
+ /** @deprecated Use {@link AiAgentRunId}. */
257
+ get aiAgentRunId() {
258
+ return this.AiAgentRunId;
259
+ }
260
+ /** @deprecated Use {@link DataHelper}. */
261
+ set dataHelper(value) {
262
+ this.DataHelper = value;
263
+ }
264
+ /** @deprecated Use {@link DataHelper}. */
265
+ get dataHelper() {
266
+ return this.DataHelper;
267
+ }
268
+ /** @deprecated Use {@link AgentName}. */
269
+ set agentName(value) {
270
+ this.AgentName = value;
271
+ }
272
+ /** @deprecated Use {@link AgentName}. */
273
+ get agentName() {
274
+ return this.AgentName;
275
+ }
276
+ /** @deprecated Use {@link RunStatus}. */
277
+ set runStatus(value) {
278
+ this.RunStatus = value;
279
+ }
280
+ /** @deprecated Use {@link RunStatus}. */
281
+ get runStatus() {
282
+ return this.RunStatus;
283
+ }
284
+ /** @deprecated Use {@link AgentIconClass}. */
285
+ set agentIconClass(value) {
286
+ this.AgentIconClass = value;
287
+ }
288
+ /** @deprecated Use {@link AgentIconClass}. */
289
+ get agentIconClass() {
290
+ return this.AgentIconClass;
291
+ }
292
+ /** @deprecated Use {@link AgentLogoUrl}. */
293
+ set agentLogoUrl(value) {
294
+ this.AgentLogoUrl = value;
295
+ }
296
+ /** @deprecated Use {@link AgentLogoUrl}. */
297
+ get agentLogoUrl() {
298
+ return this.AgentLogoUrl;
299
+ }
252
300
  /**
253
301
  * The run's execution tree, loaded once by the form and shared with every tab.
254
302
  *
@@ -259,22 +307,94 @@ export class AIAgentRunFlowComponent {
259
307
  this.runTree = value;
260
308
  void this.rebuildModel();
261
309
  }
310
+ /** @deprecated Use {@link Modes}. */
311
+ get modes() {
312
+ return this.Modes;
313
+ }
314
+ /** @deprecated Use {@link Modes}. */
315
+ set modes(value) {
316
+ this.Modes = value;
317
+ }
318
+ /** @deprecated Use {@link Mode}. */
319
+ get mode() {
320
+ return this.Mode;
321
+ }
322
+ /** @deprecated Use {@link Mode}. */
323
+ set mode(value) {
324
+ this.Mode = value;
325
+ }
326
+ /** @deprecated Use {@link Playing}. */
327
+ get playing() {
328
+ return this.Playing;
329
+ }
330
+ /** @deprecated Use {@link Playing}. */
331
+ set playing(value) {
332
+ this.Playing = value;
333
+ }
334
+ /** @deprecated Use {@link Speed}. */
335
+ get speed() {
336
+ return this.Speed;
337
+ }
338
+ /** @deprecated Use {@link Speed}. */
339
+ set speed(value) {
340
+ this.Speed = value;
341
+ }
342
+ /** @deprecated Use {@link Loading}. */
343
+ get loading() {
344
+ return this.Loading;
345
+ }
346
+ /** @deprecated Use {@link Loading}. */
347
+ set loading(value) {
348
+ this.Loading = value;
349
+ }
350
+ /** @deprecated Use {@link HasData}. */
351
+ get hasData() {
352
+ return this.HasData;
353
+ }
354
+ /** @deprecated Use {@link HasData}. */
355
+ set hasData(value) {
356
+ this.HasData = value;
357
+ }
358
+ /** @deprecated Use {@link SelectedStepItem}. */
359
+ get selectedStepItem() {
360
+ return this.SelectedStepItem;
361
+ }
362
+ /** @deprecated Use {@link SelectedStepItem}. */
363
+ set selectedStepItem(value) {
364
+ this.SelectedStepItem = value;
365
+ }
262
366
  /** The animated modes share the master clock + narration rail; Flow is static. */
263
- get isAnimated() { return this.mode !== 'flow'; }
367
+ get IsAnimated() { return this.Mode !== 'flow'; }
368
+ /** @deprecated Use {@link IsAnimated}. */
369
+ get isAnimated() {
370
+ return this.IsAnimated;
371
+ }
264
372
  /** Rail (now-executing + log tree) shows only for animated modes with nothing selected. */
265
- get showRail() { return this.isAnimated && !this.selectedStepItem; }
373
+ get ShowRail() { return this.IsAnimated && !this.SelectedStepItem; }
374
+ /** @deprecated Use {@link ShowRail}. */
375
+ get showRail() {
376
+ return this.ShowRail;
377
+ }
378
+ /** @deprecated Use {@link PanelWidth}. */
379
+ get panelWidth() {
380
+ return this.PanelWidth;
381
+ }
382
+ /** @deprecated Use {@link PanelWidth}. */
383
+ set panelWidth(value) {
384
+ this.PanelWidth = value;
385
+ }
266
386
  ngAfterViewInit() {
267
387
  this.viewReady = true;
268
388
  const savedW = UserInfoEngine.Instance.GetSetting(this.PANEL_KEY);
269
389
  if (savedW) {
270
390
  const n = +savedW;
271
391
  if (n >= 280)
272
- this.panelWidth = Math.min(n, this.maxPanelWidth());
392
+ this.PanelWidth = Math.min(n, this.maxPanelWidth());
273
393
  }
274
- combineLatest([this.dataHelper.steps$, this.dataHelper.loading$])
394
+ combineLatest([this.DataHelper.steps$, this.DataHelper.loading$])
275
395
  .pipe(takeUntil(this.destroy$))
276
396
  .subscribe(([steps, loading]) => {
277
- this.loading = loading && steps.length === 0;
397
+ this.Loading = loading && steps.length === 0;
278
398
  if (!loading || steps.length > 0)
279
399
  this.rebuildModel();
280
400
  this.cdr.markForCheck();
@@ -292,54 +412,74 @@ export class AIAgentRunFlowComponent {
292
412
  async rebuildModel() {
293
413
  const wasEmpty = !this.model;
294
414
  await AIEngineBase.Instance.EnsureLoaded(); // agent icons/logos read synchronously during build
295
- const rootIcon = { iconClass: this.agentIconClass || 'fa-robot', logoUrl: this.agentLogoUrl };
415
+ const rootIcon = { iconClass: this.AgentIconClass || 'fa-robot', logoUrl: this.AgentLogoUrl };
296
416
  // The TREE is the source. It carries the run's steps AND any task-graph work those steps
297
417
  // submitted — which the step-row builder cannot see at all, because a workflow's steps live in
298
418
  // MJ: Tasks rather than in the run's step list. Falling back to the step builder when the tree
299
419
  // has not arrived keeps the view populated on first paint rather than flashing empty.
300
420
  const model = this.runTree
301
- ? buildFlowModelFromTree(this.runTree, this.agentName ?? '', this.runStatus, rootIcon)
302
- : await buildFlowModel(this.agentName ?? '', this.runStatus, rootIcon, this.dataHelper);
421
+ ? BuildFlowModelFromTree(this.runTree, this.AgentName ?? '', this.RunStatus, rootIcon)
422
+ : await BuildFlowModel(this.AgentName ?? '', this.RunStatus, rootIcon, this.DataHelper);
303
423
  if (!model)
304
424
  return;
305
425
  this.model = model;
306
- this.hasData = model.leaves.length > 0;
426
+ this.HasData = model.Leaves.length > 0;
307
427
  if (wasEmpty)
308
428
  this.p = 0;
309
429
  this.lastLeafId = -1;
310
430
  this.cdr.markForCheck();
311
431
  }
312
432
  /* -------------------------------- transport ------------------------------- */
313
- togglePlay() {
314
- if (!this.hasData)
433
+ TogglePlay() {
434
+ if (!this.HasData)
315
435
  return;
316
436
  if (this.p >= 1)
317
437
  this.p = 0;
318
- this.playing = !this.playing;
438
+ this.Playing = !this.Playing;
319
439
  this.lastTs = 0;
320
440
  }
321
- restart() {
322
- if (!this.hasData)
441
+ /** @deprecated Use {@link TogglePlay}. */
442
+ togglePlay() {
443
+ return this.TogglePlay();
444
+ }
445
+ Restart() {
446
+ if (!this.HasData)
323
447
  return;
324
448
  this.p = 0;
325
- this.playing = true;
449
+ this.Playing = true;
326
450
  this.lastTs = 0;
327
451
  this.lastLeafId = -1;
328
452
  }
329
- onScrub(value) {
453
+ /** @deprecated Use {@link Restart}. */
454
+ restart() {
455
+ return this.Restart();
456
+ }
457
+ OnScrub(value) {
330
458
  this.p = (+value) / 1000;
331
- this.playing = false;
459
+ this.Playing = false;
332
460
  }
333
- onSpeed(value) { this.speed = (+value) / 100; }
334
- selectMode(m) {
461
+ /** @deprecated Use {@link OnScrub}. */
462
+ onScrub(value) {
463
+ return this.OnScrub(value);
464
+ }
465
+ OnSpeed(value) { this.Speed = (+value) / 100; }
466
+ /** @deprecated Use {@link OnSpeed}. */
467
+ onSpeed(value) {
468
+ return this.OnSpeed(value);
469
+ }
470
+ SelectMode(m) {
335
471
  if (!m.enabled)
336
472
  return;
337
- this.mode = m.key;
473
+ this.Mode = m.key;
338
474
  this.applyRendererSelection(this.selectedNodeId === -1 ? null : this.selectedNodeId);
339
475
  this.currentRenderer?.ReapplyView?.(); // ensure the now-visible renderer shows its OWN (per-type) zoom
340
476
  }
477
+ /** @deprecated Use {@link SelectMode}. */
478
+ selectMode(m) {
479
+ return this.SelectMode(m);
480
+ }
341
481
  get currentRenderer() {
342
- switch (this.mode) {
482
+ switch (this.Mode) {
343
483
  case 'flame': return this.flame;
344
484
  case 'subway': return this.subway;
345
485
  case 'constellation': return this.constellation;
@@ -348,90 +488,122 @@ export class AIAgentRunFlowComponent {
348
488
  }
349
489
  }
350
490
  /* --------------------------- zoom (shared toolbar) ------------------------ */
351
- zoomIn() { this.currentRenderer?.ZoomIn?.(); }
352
- zoomOut() { this.currentRenderer?.ZoomOut?.(); }
353
- fitReset() { this.currentRenderer?.FitReset?.(); }
491
+ ZoomIn() { this.currentRenderer?.ZoomIn?.(); }
492
+ /** @deprecated Use {@link ZoomIn}. */
493
+ zoomIn() {
494
+ return this.ZoomIn();
495
+ }
496
+ ZoomOut() { this.currentRenderer?.ZoomOut?.(); }
497
+ /** @deprecated Use {@link ZoomOut}. */
498
+ zoomOut() {
499
+ return this.ZoomOut();
500
+ }
501
+ FitReset() { this.currentRenderer?.FitReset?.(); }
502
+ /** @deprecated Use {@link FitReset}. */
503
+ fitReset() {
504
+ return this.FitReset();
505
+ }
354
506
  /* ---------------------------- panel resize ------------------------------- */
355
507
  /** Cap the right panel at 75% of the viewport width. */
356
508
  maxPanelWidth() { return Math.max(360, window.innerWidth * 0.75); }
357
- startResize(e) {
509
+ StartResize(e) {
358
510
  e.preventDefault();
359
511
  this.resizing = true;
360
512
  this.resizeStartX = e.clientX;
361
- this.resizeStartW = this.panelWidth;
513
+ this.resizeStartW = this.PanelWidth;
362
514
  const move = (ev) => {
363
515
  if (!this.resizing)
364
516
  return;
365
517
  const w = this.resizeStartW + (this.resizeStartX - ev.clientX); // drag left → wider
366
- this.panelWidth = Math.max(280, Math.min(this.maxPanelWidth(), w));
518
+ this.PanelWidth = Math.max(280, Math.min(this.maxPanelWidth(), w));
367
519
  this.cdr.markForCheck();
368
520
  };
369
521
  const up = () => {
370
522
  this.resizing = false;
371
523
  window.removeEventListener('mousemove', move);
372
524
  window.removeEventListener('mouseup', up);
373
- UserInfoEngine.Instance.SetSettingDebounced(this.PANEL_KEY, String(Math.round(this.panelWidth)));
525
+ UserInfoEngine.Instance.SetSettingDebounced(this.PANEL_KEY, String(Math.round(this.PanelWidth)));
374
526
  };
375
527
  window.addEventListener('mousemove', move);
376
528
  window.addEventListener('mouseup', up);
377
529
  }
530
+ /** @deprecated Use {@link StartResize}. */
531
+ startResize(e) {
532
+ return this.StartResize(e);
533
+ }
378
534
  /* -------------------------------- selection ------------------------------ */
379
535
  /** A node was clicked in any renderer (or a log row) — highlight it everywhere and show its detail. */
380
- selectStep(n) {
536
+ SelectStep(n) {
381
537
  this.zone.run(() => {
382
- this.selectedNodeId = n.id;
383
- this.selectedStepItem = this.toTimelineItem(n);
538
+ this.selectedNodeId = n.Id;
539
+ this.SelectedStepItem = this.toTimelineItem(n);
384
540
  this.cdr.markForCheck();
385
541
  });
386
- this.applyRendererSelection(n.id);
542
+ this.applyRendererSelection(n.Id);
387
543
  }
388
- closeDetail() {
389
- this.zone.run(() => { this.selectedStepItem = null; this.selectedNodeId = -1; this.cdr.markForCheck(); });
544
+ /** @deprecated Use {@link SelectStep}. */
545
+ selectStep(n) {
546
+ return this.SelectStep(n);
547
+ }
548
+ CloseDetail() {
549
+ this.zone.run(() => { this.SelectedStepItem = null; this.selectedNodeId = -1; this.cdr.markForCheck(); });
390
550
  this.applyRendererSelection(null);
391
551
  this.flowchart?.Deselect();
392
552
  }
553
+ /** @deprecated Use {@link CloseDetail}. */
554
+ closeDetail() {
555
+ return this.CloseDetail();
556
+ }
393
557
  applyRendererSelection(id) {
394
558
  this.flame?.SetSelected(id);
395
559
  this.subway?.SetSelected(id);
396
560
  this.constellation?.SetSelected(id);
397
561
  }
398
- onDetailNavigateActionLog(logId) {
562
+ OnDetailNavigateActionLog(logId) {
399
563
  SharedService.Instance.OpenEntityRecord('MJ: Action Execution Logs', CompositeKey.FromID(logId));
400
564
  }
401
- async onDetailCopy(text) {
565
+ /** @deprecated Use {@link OnDetailNavigateActionLog}. */
566
+ onDetailNavigateActionLog(logId) {
567
+ return this.OnDetailNavigateActionLog(logId);
568
+ }
569
+ async OnDetailCopy(text) {
402
570
  try {
403
571
  await navigator.clipboard.writeText(text);
404
572
  }
405
573
  catch { /* clipboard unavailable */ }
406
574
  }
575
+ /** @deprecated Use {@link OnDetailCopy}. */
576
+ async onDetailCopy(text) {
577
+ return this.OnDetailCopy(text);
578
+ }
407
579
  toTimelineItem(n) {
408
- if (!n.raw)
580
+ if (!n.Raw)
409
581
  return null;
410
582
  return {
411
- id: n.raw.ID, type: 'step', title: n.name, subtitle: `Type: ${n.raw.StepType}`,
412
- status: n.status, startTime: n.raw.StartedAt, endTime: n.raw.CompletedAt || undefined,
413
- duration: formatDuration(n.realDur), icon: 'fa-circle', color: '', data: n.raw, level: n.depth
583
+ id: n.Raw.ID, type: 'step', title: n.Name, subtitle: `Type: ${n.Raw.StepType}`,
584
+ status: n.Status, startTime: n.Raw.StartedAt, endTime: n.Raw.CompletedAt || undefined,
585
+ duration: FormatDuration(n.RealDur), icon: 'fa-circle', color: '', data: n.Raw, level: n.Depth
414
586
  };
415
587
  }
416
588
  /* ------------------------------- master loop ------------------------------ */
417
589
  tick(ts) {
418
- const animated = this.isAnimated;
419
- if (animated && this.playing && this.hasData) {
590
+ const animated = this.IsAnimated;
591
+ if (animated && this.Playing && this.HasData) {
420
592
  if (!this.lastTs)
421
593
  this.lastTs = ts;
422
594
  const dt = ts - this.lastTs;
423
595
  this.lastTs = ts;
424
- this.p += dt / (this.PLAY_MS / this.speed);
596
+ this.p += dt / (this.PLAY_MS / this.Speed);
425
597
  if (this.p >= 1) {
426
598
  this.p = 1;
427
- this.playing = false;
599
+ this.Playing = false;
428
600
  this.zone.run(() => this.cdr.markForCheck());
429
601
  }
430
602
  }
431
603
  else {
432
604
  this.lastTs = 0;
433
605
  }
434
- if (this.viewReady && this.model && this.hasData) {
606
+ if (this.viewReady && this.model && this.HasData) {
435
607
  if (animated) {
436
608
  this.currentRenderer?.Render(this.p, ts);
437
609
  this.updateRail(ts);
@@ -450,48 +622,48 @@ export class AIAgentRunFlowComponent {
450
622
  // (the @if remounted it with template defaults) or the model changed. Without
451
623
  // this, a remount at run-completion leaves an empty log + a blank now-card.
452
624
  if (this.loglistRef &&
453
- (this.logModelRef !== m || (this.loglistRef.nativeElement.childElementCount === 0 && m.nodes.length > 1))) {
625
+ (this.logModelRef !== m || (this.loglistRef.nativeElement.childElementCount === 0 && m.Nodes.length > 1))) {
454
626
  this.buildLogTree();
455
627
  this.logModelRef = m;
456
628
  this.lastLeafId = -1; // force the now-card to repopulate the fresh DOM
457
629
  }
458
- const leaf = activeLeaf(m, this.p);
459
- const prog = this.p >= leaf.t1 ? 1 : Math.max(0, (this.p - leaf.t0) / (leaf.t1 - leaf.t0));
630
+ const leaf = ActiveLeaf(m, this.p);
631
+ const prog = this.p >= leaf.T1 ? 1 : Math.max(0, (this.p - leaf.T0) / (leaf.T1 - leaf.T0));
460
632
  if (this.scrubRef)
461
633
  this.scrubRef.nativeElement.value = String(Math.round(this.p * 1000));
462
634
  if (this.clockRef) {
463
- const realT = this.p >= 1 ? m.total : leaf.r0 + prog * leaf.realDur;
464
- this.clockRef.nativeElement.textContent = `${formatDuration(realT)} / ${formatDuration(m.total)}`;
635
+ const realT = this.p >= 1 ? m.Total : leaf.R0 + prog * leaf.RealDur;
636
+ this.clockRef.nativeElement.textContent = `${FormatDuration(realT)} / ${FormatDuration(m.Total)}`;
465
637
  }
466
638
  if (this.nowBarRef)
467
639
  this.nowBarRef.nativeElement.style.width = `${prog * 100}%`;
468
- if (leaf.id !== this.lastLeafId) {
469
- this.lastLeafId = leaf.id;
640
+ if (leaf.Id !== this.lastLeafId) {
641
+ this.lastLeafId = leaf.Id;
470
642
  this.refreshNowCard(leaf);
471
643
  }
472
644
  if (this.nowStatRef) {
473
- this.nowStatRef.nativeElement.textContent = this.p >= 1 ? 'done' : (this.p > leaf.t0 ? 'running' : 'starting');
645
+ this.nowStatRef.nativeElement.textContent = this.p >= 1 ? 'done' : (this.p > leaf.T0 ? 'running' : 'starting');
474
646
  }
475
647
  if (this.loglistRef)
476
648
  this.updateLogTree();
477
649
  }
478
650
  refreshNowCard(leaf) {
479
- const col = FLOW_COLORS[leaf.type];
651
+ const col = FLOW_COLORS[leaf.Type];
480
652
  if (this.nowIcoRef)
481
- this.nowIcoRef.nativeElement.textContent = FLOW_EMOJI[leaf.type];
653
+ this.nowIcoRef.nativeElement.textContent = FLOW_EMOJI[leaf.Type];
482
654
  if (this.nowNameRef)
483
- this.nowNameRef.nativeElement.textContent = leaf.name;
655
+ this.nowNameRef.nativeElement.textContent = leaf.Name;
484
656
  if (this.nowTypeRef) {
485
- this.nowTypeRef.nativeElement.textContent = FLOW_LABEL[leaf.type];
657
+ this.nowTypeRef.nativeElement.textContent = FLOW_LABEL[leaf.Type];
486
658
  this.nowTypeRef.nativeElement.style.color = col;
487
659
  }
488
660
  if (this.nowDurRef)
489
- this.nowDurRef.nativeElement.textContent = formatDuration(leaf.realDur);
661
+ this.nowDurRef.nativeElement.textContent = FormatDuration(leaf.RealDur);
490
662
  if (this.nowModelRef)
491
- this.nowModelRef.nativeElement.textContent = leaf.model ?? '—';
663
+ this.nowModelRef.nativeElement.textContent = leaf.Model ?? '—';
492
664
  if (this.crumbRef) {
493
- const chain = ancestors(leaf);
494
- this.crumbRef.nativeElement.innerHTML = chain.map((n, i) => `${i ? '<span class="sep">›</span>' : ''}<span style="color:${FLOW_COLORS[n.type]}">${FLOW_EMOJI[n.type]} ${this.escape(n.name)}</span>`).join('');
665
+ const chain = Ancestors(leaf);
666
+ this.crumbRef.nativeElement.innerHTML = chain.map((n, i) => `${i ? '<span class="sep">›</span>' : ''}<span style="color:${FLOW_COLORS[n.Type]}">${FLOW_EMOJI[n.Type]} ${this.escape(n.Name)}</span>`).join('');
495
667
  }
496
668
  }
497
669
  /* ------------------------------ log tree (rail) --------------------------- */
@@ -502,41 +674,41 @@ export class AIAgentRunFlowComponent {
502
674
  this.logRows.clear();
503
675
  this.lastActiveRowId = -1;
504
676
  const m = this.model;
505
- for (const n of m.nodes) {
506
- if (n.depth === 0)
677
+ for (const n of m.Nodes) {
678
+ if (n.Depth === 0)
507
679
  continue; // skip the synthetic root (it's the header)
508
- const col = FLOW_COLORS[n.type];
680
+ const col = FLOW_COLORS[n.Type];
509
681
  const row = document.createElement('div');
510
682
  row.className = 'ftree-row';
511
- row.style.paddingLeft = `${6 + (n.depth - 1) * 15}px`;
512
- const ico = n.logoUrl
513
- ? `<img class="ftree-logo" src="${this.escape(n.logoUrl)}" alt=""/>`
514
- : `<i class="ftree-ico fa-solid ${this.escape(n.iconClass)}" style="color:${col}"></i>`;
683
+ row.style.paddingLeft = `${6 + (n.Depth - 1) * 15}px`;
684
+ const ico = n.LogoUrl
685
+ ? `<img class="ftree-logo" src="${this.escape(n.LogoUrl)}" alt=""/>`
686
+ : `<i class="ftree-ico fa-solid ${this.escape(n.IconClass)}" style="color:${col}"></i>`;
515
687
  row.innerHTML = ico +
516
- `<span class="ftree-name">${this.escape(shortLabel(n))}</span>` +
517
- `<span class="ftree-dur">${formatDuration(n.realDur)}</span>`;
518
- row.addEventListener('click', () => this.selectStep(n));
688
+ `<span class="ftree-name">${this.escape(ShortLabel(n))}</span>` +
689
+ `<span class="ftree-dur">${FormatDuration(n.RealDur)}</span>`;
690
+ row.addEventListener('click', () => this.SelectStep(n));
519
691
  list.appendChild(row);
520
- this.logRows.set(n.id, row);
692
+ this.logRows.set(n.Id, row);
521
693
  }
522
694
  }
523
695
  /** Sync each log row's state (pending / running / done / selected) with the clock. */
524
696
  updateLogTree() {
525
697
  const m = this.model;
526
- for (const n of m.nodes) {
527
- if (n.depth === 0)
698
+ for (const n of m.Nodes) {
699
+ if (n.Depth === 0)
528
700
  continue;
529
- const row = this.logRows.get(n.id);
701
+ const row = this.logRows.get(n.Id);
530
702
  if (!row)
531
703
  continue;
532
- const started = this.p >= n.t0;
533
- const active = started && this.p < n.t1;
704
+ const started = this.p >= n.T0;
705
+ const active = started && this.p < n.T1;
534
706
  row.classList.toggle('ftree-pending', !started);
535
707
  row.classList.toggle('ftree-active', active);
536
- row.classList.toggle('ftree-done', this.p >= n.t1);
537
- row.classList.toggle('ftree-selected', n.id === this.selectedNodeId);
538
- if (active && n.id !== this.lastActiveRowId && !n.children.length) {
539
- this.lastActiveRowId = n.id;
708
+ row.classList.toggle('ftree-done', this.p >= n.T1);
709
+ row.classList.toggle('ftree-selected', n.Id === this.selectedNodeId);
710
+ if (active && n.Id !== this.lastActiveRowId && !n.Children.length) {
711
+ this.lastActiveRowId = n.Id;
540
712
  row.scrollIntoView({ block: 'nearest' });
541
713
  }
542
714
  }
@@ -564,7 +736,7 @@ export class AIAgentRunFlowComponent {
564
736
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nowStatRef = _t.first);
565
737
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nowBarRef = _t.first);
566
738
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loglistRef = _t.first);
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) {
739
+ } }, inputs: { AiAgentRunId: "AiAgentRunId", aiAgentRunId: "aiAgentRunId", DataHelper: "DataHelper", dataHelper: "dataHelper", AgentName: "AgentName", agentName: "agentName", RunStatus: "RunStatus", runStatus: "runStatus", AgentIconClass: "AgentIconClass", agentIconClass: "agentIconClass", AgentLogoUrl: "AgentLogoUrl", 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) {
568
740
  i0.ɵɵelementStart(0, "div", 11)(1, "div", 12);
569
741
  i0.ɵɵrepeaterCreate(2, AIAgentRunFlowComponent_For_3_Template, 5, 9, "button", 13, _forTrack0);
570
742
  i0.ɵɵelementEnd();
@@ -623,16 +795,28 @@ export class AIAgentRunFlowComponent {
623
795
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIAgentRunFlowComponent, [{
624
796
  type: Component,
625
797
  args: [{ standalone: false, selector: 'mj-ai-agent-run-flow', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flow-cockpit\">\n <!-- mode segmented control -->\n <div class=\"flow-modes\">\n @for (m of modes; track m.key) {\n <button class=\"flow-mode\" [class.on]=\"mode === m.key\" [class.soon]=\"!m.enabled\"\n [disabled]=\"!m.enabled\" (click)=\"selectMode(m)\"\n [title]=\"m.enabled ? m.label : m.label + ' \u2014 coming soon'\">\n <i class=\"fas\" [ngClass]=\"m.icon\"></i>\n <span>{{ m.label }}</span>\n @if (!m.enabled) { <span class=\"soon-tag\">Soon</span> }\n </button>\n }\n </div>\n\n <div class=\"flow-main\">\n <!-- stage -->\n <div class=\"flow-stage\">\n @if (loading) {\n <div class=\"flow-overlay\"><mj-loading text=\"Building flow\u2026\"></mj-loading></div>\n } @else if (!hasData) {\n <div class=\"flow-overlay flow-empty\">\n <i class=\"fas fa-wind\"></i>\n <p>No steps recorded for this run yet.</p>\n </div>\n }\n\n <mj-agent-flow-flame [class.flow-hidden]=\"mode !== 'flame'\" [Model]=\"model\" (nodeSelected)=\"selectStep($event)\"></mj-agent-flow-flame>\n <mj-agent-flow-subway [class.flow-hidden]=\"mode !== 'subway'\" [Model]=\"model\" (nodeSelected)=\"selectStep($event)\"></mj-agent-flow-subway>\n <mj-agent-flow-constellation [class.flow-hidden]=\"mode !== 'constellation'\" [Model]=\"model\" (nodeSelected)=\"selectStep($event)\"></mj-agent-flow-constellation>\n <mj-agent-flow-flowchart [class.flow-hidden]=\"mode !== 'flow'\" [Model]=\"model\"\n (nodeSelected)=\"selectStep($event)\"\n (selectionCleared)=\"closeDetail()\"></mj-agent-flow-flowchart>\n\n @if (hasData) {\n <div class=\"flow-zoom\">\n <button class=\"fz-btn\" (click)=\"zoomIn()\" title=\"Zoom in\"><i class=\"fas fa-magnifying-glass-plus\"></i></button>\n <button class=\"fz-btn\" (click)=\"zoomOut()\" title=\"Zoom out\"><i class=\"fas fa-magnifying-glass-minus\"></i></button>\n <button class=\"fz-btn\" (click)=\"fitReset()\" title=\"Fit to view\"><i class=\"fas fa-expand\"></i></button>\n </div>\n }\n </div>\n\n <!-- narration rail (animated modes, nothing selected) -->\n @if (showRail) {\n <aside class=\"flow-rail\" [style.width.px]=\"panelWidth\">\n <div class=\"flow-resizer\" (mousedown)=\"startResize($event)\" title=\"Drag to resize\"></div>\n <div class=\"now\">\n <div class=\"rail-lbl\">Now executing</div>\n <div class=\"breadcrumb\" #crumb></div>\n <div class=\"nowcard\">\n <div class=\"ico\" #nowIco>\uD83E\uDD16</div>\n <h3 #nowName>\u2014</h3>\n <div class=\"type\" #nowType>Agent run</div>\n <div class=\"meta\">\n <div>Duration<b #nowDur>\u2014</b></div>\n <div>Status<b #nowStat>\u2014</b></div>\n <div>Model<b #nowModel>\u2014</b></div>\n </div>\n <div class=\"barbg\"><div class=\"barfg\" #nowBar></div></div>\n </div>\n </div>\n <div class=\"log\">\n <div class=\"rail-lbl sticky\">Execution log</div>\n <div #loglist class=\"loglist\"></div>\n </div>\n </aside>\n }\n\n <!-- step inspector (any mode) -->\n @if (selectedStepItem) {\n <aside class=\"flow-detail\" [style.width.px]=\"panelWidth\">\n <div class=\"flow-resizer\" (mousedown)=\"startResize($event)\" title=\"Drag to resize\"></div>\n <mj-ai-agent-run-step-detail\n [selectedTimelineItem]=\"selectedStepItem\"\n (closePanel)=\"closeDetail()\"\n (navigateToActionLog)=\"onDetailNavigateActionLog($event)\"\n (copyToClipboard)=\"onDetailCopy($event)\">\n </mj-ai-agent-run-step-detail>\n </aside>\n }\n </div>\n\n <!-- transport (animated modes only) -->\n @if (isAnimated) {\n <div class=\"flow-transport\">\n <button class=\"pbtn\" (click)=\"togglePlay()\" [disabled]=\"!hasData\" [title]=\"playing ? 'Pause' : 'Play'\">\n <i class=\"fas\" [ngClass]=\"playing ? 'fa-pause' : 'fa-play'\"></i>\n </button>\n <button class=\"ibtn\" (click)=\"restart()\" [disabled]=\"!hasData\" title=\"Restart\">\n <i class=\"fas fa-rotate-left\"></i>\n </button>\n <input #scrub class=\"scrub\" type=\"range\" min=\"0\" max=\"1000\" value=\"0\"\n [disabled]=\"!hasData\" (input)=\"onScrub(scrub.value)\"/>\n <div class=\"clock\" #clock>0s / 0s</div>\n <div class=\"speedbox\">\n <i class=\"fas fa-gauge-high\"></i>\n <input class=\"speed\" type=\"range\" min=\"25\" max=\"300\" value=\"100\" (input)=\"onSpeed($any($event.target).value)\"/>\n <span class=\"spdval\">{{ speed.toFixed(1) }}\u00D7</span>\n </div>\n </div>\n }\n\n <!-- legend / hint -->\n <div class=\"flow-legend\">\n @if (isAnimated) {\n <span><i class=\"lg\" style=\"background: var(--mj-text-muted)\"></i>Hint:</span>\n <span class=\"legend-note\">Playback is compressed so every step is visible \u2014 real duration shows through heat, size &amp; speed, not literal width.</span>\n } @else {\n <span><i class=\"lg\" style=\"background: var(--mj-text-muted)\"></i>Tip:</span>\n <span class=\"legend-note\">Drag to pan, scroll to zoom, click any node to inspect it. Layout is the full execution tree, top to bottom.</span>\n }\n </div>\n</div>\n", styles: [":host { display: block; height: 100%; }\n\n.flow-cockpit {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n/* ---------------- mode segmented control ---------------- */\n.flow-modes {\n display: flex;\n gap: 6px;\n padding: 10px 14px;\n flex-wrap: wrap;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n.flow-mode {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 7px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 999px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n font-weight: 600;\n font-size: 12.5px;\n cursor: pointer;\n transition: 0.15s;\n}\n.flow-mode:hover:not(:disabled) { color: var(--mj-text-primary); border-color: var(--mj-brand-primary); }\n.flow-mode.on {\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 14px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n.flow-mode.soon { cursor: not-allowed; opacity: 0.6; }\n.soon-tag {\n font-size: 9px;\n font-weight: 700;\n letter-spacing: 0.5px;\n text-transform: uppercase;\n padding: 2px 6px;\n border-radius: 6px;\n background: color-mix(in srgb, var(--mj-text-muted) 20%, transparent);\n color: var(--mj-text-muted);\n}\n\n/* ---------------- main: stage + rail ---------------- */\n.flow-main { flex: 1; display: flex; min-height: 0; }\n\n.flow-stage {\n flex: 1;\n position: relative;\n overflow: hidden;\n background:\n radial-gradient(900px 520px at 72% -8%,\n color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface-sunken)) 0%,\n var(--mj-bg-surface-sunken) 60%);\n}\n.flow-stage mj-agent-flow-flame,\n.flow-stage mj-agent-flow-subway,\n.flow-stage mj-agent-flow-constellation {\n display: block;\n position: absolute;\n inset: 0;\n padding: 10px 14px;\n}\n.flow-stage mj-agent-flow-flowchart {\n display: block;\n position: absolute;\n inset: 0;\n}\n.flow-hidden { display: none !important; }\n\n/* shared zoom toolbar (all modes) */\n.flow-zoom {\n position: absolute;\n top: 12px;\n right: 14px;\n z-index: 5;\n display: flex;\n gap: 6px;\n}\n.fz-btn {\n width: 34px;\n height: 34px;\n border-radius: 9px;\n border: 1px solid var(--mj-border-default);\n background: color-mix(in srgb, var(--mj-bg-surface-card) 88%, transparent);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: grid;\n place-items: center;\n font-size: 13px;\n backdrop-filter: blur(4px);\n}\n.fz-btn:hover { color: var(--mj-text-primary); border-color: var(--mj-brand-primary); }\n\n/* draggable resize handle on the left edge of the right panel */\n.flow-resizer {\n position: absolute;\n left: -3px;\n top: 0;\n width: 7px;\n height: 100%;\n cursor: col-resize;\n z-index: 6;\n}\n.flow-resizer:hover { background: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent); }\n\n/* step inspector (Flow / static mode) */\n.flow-detail {\n position: relative;\n flex-shrink: 0;\n border-left: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n overflow: hidden;\n display: flex;\n}\n/* size only the content child \u2014 NOT the absolutely-positioned resize handle,\n which a universal `> *` selector would balloon to full width and trap clicks */\n.flow-detail > mj-ai-agent-run-step-detail { flex: 1 1 auto; min-width: 0; }\n\n.flow-overlay {\n position: absolute;\n inset: 0;\n z-index: 4;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n background: color-mix(in srgb, var(--mj-bg-surface-sunken) 70%, transparent);\n}\n.flow-empty { color: var(--mj-text-muted); }\n.flow-empty i { font-size: 34px; opacity: 0.5; }\n\n/* ---------------- narration rail ---------------- */\n.flow-rail {\n position: relative;\n flex-shrink: 0;\n border-left: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n.now { padding: 16px; }\n.rail-lbl {\n font-size: 10px;\n letter-spacing: 1.4px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n}\n.breadcrumb {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin: 8px 0 12px;\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n.breadcrumb .sep { opacity: 0.5; }\n.nowcard {\n border: 1px solid var(--mj-border-default);\n border-radius: 14px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n}\n.nowcard .ico { font-size: 26px; line-height: 1; }\n.nowcard h3 { margin: 8px 0 2px; font-size: 17px; color: var(--mj-text-primary); }\n.nowcard .type { font-size: 12px; font-weight: 600; color: var(--mj-text-secondary); }\n.nowcard .meta { display: flex; gap: 14px; margin-top: 12px; font-size: 12px; color: var(--mj-text-secondary); }\n.nowcard .meta b { display: block; color: var(--mj-text-primary); font-size: 15px; font-variant-numeric: tabular-nums; }\n.barbg { height: 6px; border-radius: 6px; background: var(--mj-border-default); margin-top: 14px; overflow: hidden; }\n.barfg {\n height: 100%;\n width: 0;\n background: linear-gradient(90deg, var(--mj-brand-primary), color-mix(in srgb, var(--mj-brand-primary) 40%, var(--mj-bg-surface)));\n}\n.log { flex: 1; overflow: auto; padding: 0 14px 16px; }\n.rail-lbl.sticky { position: sticky; top: 0; background: var(--mj-bg-surface); padding: 10px 0 8px; z-index: 1; }\n\n/* Log rows are injected via innerHTML (no Angular encapsulation attribute),\n so these must pierce emulated encapsulation with ::ng-deep. */\n:host ::ng-deep .flogitem {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 9px;\n border-radius: 8px;\n margin-bottom: 3px;\n font-size: 11.5px;\n line-height: 1.25;\n border: 1px solid transparent;\n}\n:host ::ng-deep .flogitem .flog-ico { flex: 0 0 auto; font-size: 11px; }\n:host ::ng-deep .flogitem .flog-name {\n flex: 1 1 auto;\n min-width: 0;\n color: var(--mj-text-secondary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n:host ::ng-deep .flogitem .flog-dur {\n flex: 0 0 auto;\n color: var(--mj-text-muted);\n font-variant-numeric: tabular-nums;\n font-size: 10.5px;\n}\n:host ::ng-deep .flogitem.heat {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-warning) 35%, transparent);\n}\n:host ::ng-deep .breadcrumb .sep { opacity: 0.5; margin: 0 1px; }\n\n/* clickable indented log tree (rows injected via innerHTML) */\n:host ::ng-deep .ftree-row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 5px 8px;\n border-radius: 7px;\n margin-bottom: 1px;\n font-size: 11.5px;\n line-height: 1.25;\n cursor: pointer;\n border-left: 2px solid transparent;\n}\n:host ::ng-deep .ftree-row:hover { background: var(--mj-bg-surface-hover); }\n:host ::ng-deep .ftree-ico { flex: 0 0 14px; width: 14px; text-align: center; font-size: 11px; }\n:host ::ng-deep .ftree-logo { flex: 0 0 14px; width: 14px; height: 14px; border-radius: 50%; object-fit: cover; }\n:host ::ng-deep .ftree-name {\n flex: 1 1 auto; min-width: 0;\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n color: var(--mj-text-secondary);\n}\n:host ::ng-deep .ftree-dur { flex: 0 0 auto; color: var(--mj-text-muted); font-size: 10.5px; font-variant-numeric: tabular-nums; }\n:host ::ng-deep .ftree-row.ftree-pending { opacity: 0.5; }\n:host ::ng-deep .ftree-row.ftree-active {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n border-left-color: var(--mj-brand-primary);\n}\n:host ::ng-deep .ftree-row.ftree-active .ftree-name { color: var(--mj-text-primary); font-weight: 600; }\n:host ::ng-deep .ftree-row.ftree-selected {\n background: var(--mj-bg-surface-hover);\n border-left-color: var(--mj-brand-primary);\n}\n:host ::ng-deep .ftree-row.ftree-selected .ftree-name { color: var(--mj-text-primary); }\n\n/* ---------------- transport ---------------- */\n.flow-transport {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 12px 18px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n}\n.pbtn {\n width: 42px;\n height: 42px;\n border-radius: 50%;\n border: none;\n cursor: pointer;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: 15px;\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n transition: 0.15s;\n}\n.pbtn:hover:not(:disabled) { transform: translateY(-1px); }\n.pbtn:disabled, .ibtn:disabled { opacity: 0.45; cursor: not-allowed; }\n.ibtn {\n width: 38px;\n height: 38px;\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n cursor: pointer;\n}\n.ibtn:hover:not(:disabled) { color: var(--mj-text-primary); border-color: var(--mj-brand-primary); }\n\ninput[type=range].scrub, input[type=range].speed {\n -webkit-appearance: none;\n appearance: none;\n height: 6px;\n border-radius: 6px;\n background: var(--mj-border-default);\n outline: none;\n cursor: pointer;\n}\ninput[type=range].scrub { flex: 1; }\ninput[type=range].speed { width: 90px; }\ninput[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--mj-bg-surface);\n border: 3px solid var(--mj-brand-primary);\n cursor: pointer;\n box-shadow: 0 0 8px color-mix(in srgb, var(--mj-brand-primary) 60%, transparent);\n}\ninput[type=range]::-moz-range-thumb {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--mj-bg-surface);\n border: 3px solid var(--mj-brand-primary);\n cursor: pointer;\n}\n.clock {\n font-variant-numeric: tabular-nums;\n font-weight: 700;\n font-size: 14px;\n min-width: 116px;\n text-align: center;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 9px;\n padding: 7px 10px;\n}\n.speedbox { display: flex; align-items: center; gap: 8px; color: var(--mj-text-muted); font-size: 12px; }\n.spdval { min-width: 34px; font-variant-numeric: tabular-nums; }\n\n/* ---------------- legend ---------------- */\n.flow-legend {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 18px;\n border-top: 1px solid var(--mj-border-subtle);\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n.flow-legend .lg { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }\n.legend-note { color: var(--mj-text-muted); }\n"] }]
626
- }], null, { aiAgentRunId: [{
798
+ }], null, { AiAgentRunId: [{
799
+ type: Input
800
+ }], aiAgentRunId: [{
801
+ type: Input
802
+ }], DataHelper: [{
627
803
  type: Input
628
804
  }], dataHelper: [{
629
805
  type: Input
806
+ }], AgentName: [{
807
+ type: Input
630
808
  }], agentName: [{
631
809
  type: Input
810
+ }], RunStatus: [{
811
+ type: Input
632
812
  }], runStatus: [{
633
813
  type: Input
814
+ }], AgentIconClass: [{
815
+ type: Input
634
816
  }], agentIconClass: [{
635
817
  type: Input
818
+ }], AgentLogoUrl: [{
819
+ type: Input
636
820
  }], agentLogoUrl: [{
637
821
  type: Input
638
822
  }], RunTree: [{