@memberjunction/ng-core-entity-forms 6.1.4 → 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 (327) hide show
  1. package/README.md +22 -0
  2. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts +1 -1
  3. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js +2 -2
  4. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js.map +1 -1
  5. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
  6. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts +90 -16
  7. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
  8. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +218 -70
  9. package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
  10. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts +80 -16
  11. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
  12. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +146 -46
  13. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
  14. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +329 -27
  15. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  16. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +794 -262
  17. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  18. package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts +76 -0
  19. package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts.map +1 -1
  20. package/dist/lib/custom/AIAgents/ai-agent-management.service.js +77 -33
  21. package/dist/lib/custom/AIAgents/ai-agent-management.service.js.map +1 -1
  22. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts +69 -15
  23. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
  24. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +182 -74
  25. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
  26. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts +105 -25
  27. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
  28. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +272 -112
  29. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
  30. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts +32 -6
  31. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -1
  32. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +71 -19
  33. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
  34. package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts +10 -0
  35. package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts.map +1 -1
  36. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +27 -7
  37. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -1
  38. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts +65 -15
  39. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
  40. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +152 -52
  41. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
  42. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts +81 -15
  43. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
  44. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +145 -45
  45. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
  46. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +71 -17
  47. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
  48. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +175 -67
  49. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
  50. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +173 -27
  51. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  52. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +385 -93
  53. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  54. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts +64 -4
  55. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts.map +1 -1
  56. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +129 -29
  57. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
  58. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +260 -27
  59. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
  60. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +686 -238
  61. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  62. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts +10 -0
  63. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts.map +1 -1
  64. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js +17 -9
  65. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js.map +1 -1
  66. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts +74 -16
  67. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts.map +1 -1
  68. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +174 -58
  69. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
  70. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +108 -14
  71. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
  72. package/dist/lib/custom/Actions/action-execution-log-form.component.js +258 -70
  73. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  74. package/dist/lib/custom/Actions/action-form.component.d.ts +198 -14
  75. package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
  76. package/dist/lib/custom/Actions/action-form.component.js +387 -107
  77. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  78. package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts +12 -6
  79. package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts.map +1 -1
  80. package/dist/lib/custom/BridgeProviders/bridge-provider-features.js +41 -29
  81. package/dist/lib/custom/BridgeProviders/bridge-provider-features.js.map +1 -1
  82. package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js +14 -14
  83. package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js.map +1 -1
  84. package/dist/lib/custom/Companies/company-overview.panel.d.ts +1 -1
  85. package/dist/lib/custom/Companies/company-overview.panel.js +2 -2
  86. package/dist/lib/custom/Companies/company-overview.panel.js.map +1 -1
  87. package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts +1 -1
  88. package/dist/lib/custom/Conversations/conversation-overview.panel.js +2 -2
  89. package/dist/lib/custom/Conversations/conversation-overview.panel.js.map +1 -1
  90. package/dist/lib/custom/Employees/employee-overview.panel.d.ts +1 -1
  91. package/dist/lib/custom/Employees/employee-overview.panel.js +2 -2
  92. package/dist/lib/custom/Employees/employee-overview.panel.js.map +1 -1
  93. package/dist/lib/custom/Entities/entity-form.component.d.ts +209 -28
  94. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  95. package/dist/lib/custom/Entities/entity-form.component.js +494 -138
  96. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  97. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts +5 -1
  98. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts.map +1 -1
  99. package/dist/lib/custom/EntityActions/entityaction.form.component.js +10 -2
  100. package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
  101. package/dist/lib/custom/Files/file-form.component.d.ts +1 -1
  102. package/dist/lib/custom/Files/file-form.component.js +2 -2
  103. package/dist/lib/custom/Files/file-form.component.js.map +1 -1
  104. package/dist/lib/custom/Lists/list-form.component.d.ts +300 -36
  105. package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
  106. package/dist/lib/custom/Lists/list-form.component.js +664 -208
  107. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  108. package/dist/lib/custom/MLModels/ml-model-form.component.d.ts +27 -0
  109. package/dist/lib/custom/MLModels/ml-model-form.component.d.ts.map +1 -0
  110. package/dist/lib/custom/MLModels/ml-model-form.component.js +193 -0
  111. package/dist/lib/custom/MLModels/ml-model-form.component.js.map +1 -0
  112. package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +75 -0
  113. package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -0
  114. package/dist/lib/custom/MLModels/ml-model-view-models.js +244 -0
  115. package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -0
  116. package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +173 -0
  117. package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -0
  118. package/dist/lib/custom/MLModels/ps-model-detail.component.js +883 -0
  119. package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -0
  120. package/dist/lib/custom/Queries/query-form.component.d.ts +201 -26
  121. package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
  122. package/dist/lib/custom/Queries/query-form.component.js +429 -109
  123. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  124. package/dist/lib/custom/Queries/query-run-dialog.component.d.ts +107 -14
  125. package/dist/lib/custom/Queries/query-run-dialog.component.d.ts.map +1 -1
  126. package/dist/lib/custom/Queries/query-run-dialog.component.js +249 -79
  127. package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
  128. package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts +133 -7
  129. package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -1
  130. package/dist/lib/custom/RecordProcesses/record-process-form.component.js +1268 -19
  131. package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -1
  132. package/dist/lib/custom/SearchScopes/searchscope-form.component.d.ts +1 -1
  133. package/dist/lib/custom/SearchScopes/searchscope-form.component.js +4 -4
  134. package/dist/lib/custom/SearchScopes/searchscope-form.component.js.map +1 -1
  135. package/dist/lib/custom/SessionBridges/session-bridge-form.component.js.map +1 -1
  136. package/dist/lib/custom/Templates/template-param-dialog.component.d.ts +77 -13
  137. package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
  138. package/dist/lib/custom/Templates/template-param-dialog.component.js +196 -78
  139. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  140. package/dist/lib/custom/Templates/template-params-grid.component.d.ts +49 -7
  141. package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
  142. package/dist/lib/custom/Templates/template-params-grid.component.js +132 -44
  143. package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
  144. package/dist/lib/custom/Templates/templates-form.component.d.ts +142 -17
  145. package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
  146. package/dist/lib/custom/Templates/templates-form.component.js +333 -113
  147. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  148. package/dist/lib/custom/Tests/entity-link-pill.component.d.ts +24 -4
  149. package/dist/lib/custom/Tests/entity-link-pill.component.d.ts.map +1 -1
  150. package/dist/lib/custom/Tests/entity-link-pill.component.js +64 -20
  151. package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
  152. package/dist/lib/custom/Tests/test-form.component.d.ts +217 -27
  153. package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
  154. package/dist/lib/custom/Tests/test-form.component.js +549 -169
  155. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  156. package/dist/lib/custom/Tests/test-run-checks.d.ts +2 -0
  157. package/dist/lib/custom/Tests/test-run-checks.d.ts.map +1 -1
  158. package/dist/lib/custom/Tests/test-run-checks.js +5 -1
  159. package/dist/lib/custom/Tests/test-run-checks.js.map +1 -1
  160. package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts +2 -0
  161. package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts.map +1 -1
  162. package/dist/lib/custom/Tests/test-run-feedback-form.component.js +5 -1
  163. package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
  164. package/dist/lib/custom/Tests/test-run-form.component.d.ts +146 -18
  165. package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
  166. package/dist/lib/custom/Tests/test-run-form.component.js +362 -106
  167. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  168. package/dist/lib/custom/Tests/test-suite-form.component.d.ts +390 -47
  169. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  170. package/dist/lib/custom/Tests/test-suite-form.component.js +1015 -343
  171. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  172. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +214 -26
  173. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
  174. package/dist/lib/custom/Tests/test-suite-run-form.component.js +535 -159
  175. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  176. package/dist/lib/custom/Users/user-overview.panel.d.ts +1 -1
  177. package/dist/lib/custom/Users/user-overview.panel.js +2 -2
  178. package/dist/lib/custom/Users/user-overview.panel.js.map +1 -1
  179. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +208 -29
  180. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
  181. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +446 -138
  182. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  183. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts +6 -0
  184. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts.map +1 -1
  185. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js +16 -4
  186. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js.map +1 -1
  187. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts +50 -6
  188. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -1
  189. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +84 -12
  190. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -1
  191. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +89 -5
  192. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
  193. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +216 -70
  194. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
  195. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts +62 -3
  196. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
  197. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +140 -42
  198. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
  199. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +81 -10
  200. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
  201. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +165 -37
  202. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  203. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +121 -14
  204. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  205. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +287 -79
  206. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  207. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts +101 -15
  208. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts.map +1 -1
  209. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js +281 -97
  210. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js.map +1 -1
  211. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts +43 -25
  212. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts.map +1 -1
  213. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js +100 -64
  214. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js.map +1 -1
  215. package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts +14 -2
  216. package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts.map +1 -1
  217. package/dist/lib/custom/ai-agent-run/flow/constellation.component.js +71 -53
  218. package/dist/lib/custom/ai-agent-run/flow/constellation.component.js.map +1 -1
  219. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts +14 -2
  220. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts.map +1 -1
  221. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js +70 -52
  222. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js.map +1 -1
  223. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts +8 -0
  224. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts.map +1 -1
  225. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js +22 -6
  226. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js.map +1 -1
  227. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts +24 -2
  228. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts.map +1 -1
  229. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js +91 -59
  230. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js.map +1 -1
  231. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts +10 -2
  232. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts.map +1 -1
  233. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js +33 -17
  234. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js.map +1 -1
  235. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts +2 -0
  236. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts.map +1 -1
  237. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js +34 -30
  238. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js.map +1 -1
  239. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts +14 -2
  240. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts.map +1 -1
  241. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js +69 -51
  242. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js.map +1 -1
  243. package/dist/lib/custom/custom-forms.module.d.ts +32 -30
  244. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  245. package/dist/lib/custom/custom-forms.module.js +21 -4
  246. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  247. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +38 -12
  248. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
  249. package/dist/lib/custom/shared/entity-selector-dialog.component.js +103 -51
  250. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  251. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
  252. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +62 -26
  253. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
  254. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
  255. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +59 -51
  256. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
  257. package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js +76 -74
  258. package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js.map +1 -1
  259. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.d.ts.map +1 -1
  260. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +33 -15
  261. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
  262. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  263. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +100 -82
  264. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  265. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js +24 -20
  266. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js.map +1 -1
  267. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts +10 -0
  268. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts.map +1 -0
  269. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js +122 -0
  270. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js.map +1 -0
  271. package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.d.ts +10 -0
  272. package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.d.ts.map +1 -0
  273. package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.js +125 -0
  274. package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.js.map +1 -0
  275. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.d.ts.map +1 -1
  276. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +23 -5
  277. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -1
  278. package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.d.ts.map +1 -1
  279. package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js +25 -6
  280. package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js.map +1 -1
  281. package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js +27 -25
  282. package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js.map +1 -1
  283. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.d.ts.map +1 -1
  284. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js +11 -15
  285. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js.map +1 -1
  286. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
  287. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +43 -7
  288. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
  289. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  290. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +155 -119
  291. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  292. package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.d.ts +10 -0
  293. package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.d.ts.map +1 -0
  294. package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.js +78 -0
  295. package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.js.map +1 -0
  296. package/dist/lib/generated/generated-forms.module.d.ts +240 -237
  297. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  298. package/dist/lib/generated/generated-forms.module.js +11 -2
  299. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  300. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts +5 -1
  301. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts.map +1 -1
  302. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +11 -3
  303. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -1
  304. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.d.ts +2 -0
  305. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.d.ts.map +1 -1
  306. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js +16 -12
  307. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js.map +1 -1
  308. package/dist/lib/panels/content-sources/website-crawler-settings.panel.d.ts +1 -1
  309. package/dist/lib/panels/content-sources/website-crawler-settings.panel.js +2 -2
  310. package/dist/lib/panels/content-sources/website-crawler-settings.panel.js.map +1 -1
  311. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +122 -1
  312. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
  313. package/dist/lib/panels/model-predictions/model-prediction.logic.js +236 -11
  314. package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
  315. package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +72 -13
  316. package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -1
  317. package/dist/lib/panels/model-predictions/model-prediction.panel.js +577 -78
  318. package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -1
  319. package/dist/lib/shared/components/template-editor.component.d.ts +133 -14
  320. package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
  321. package/dist/lib/shared/components/template-editor.component.js +322 -124
  322. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  323. package/dist/public-api.d.ts +4 -0
  324. package/dist/public-api.d.ts.map +1 -1
  325. package/dist/public-api.js +4 -0
  326. package/dist/public-api.js.map +1 -1
  327. package/package.json +43 -41
@@ -1,6 +1,6 @@
1
1
  import { Component, Input, Output, EventEmitter, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
2
- import { FLOW_COLORS, agentOf, agentShortName, shortLabel, activeLeaf, formatDuration } from './agent-run-flow.model';
3
- import { svgEl, clip, appendIcon, appendTitle } from './flow-svg.util';
2
+ import { FLOW_COLORS, AgentOf, AgentShortName, ShortLabel, ActiveLeaf, FormatDuration } from './agent-run-flow.model';
3
+ import { SvgEl, Clip, AppendIcon, AppendTitle } from './flow-svg.util';
4
4
  import { PanZoomController } from './pan-zoom';
5
5
  import * as i0 from "@angular/core";
6
6
  const _c0 = ["svg"];
@@ -12,7 +12,15 @@ const _c0 = ["svg"];
12
12
  */
13
13
  export class SubwayLinesComponent {
14
14
  constructor() {
15
- this.nodeSelected = new EventEmitter();
15
+ this.NodeSelected = new EventEmitter();
16
+ /**
17
+ * @deprecated Use {@link NodeSelected}.
18
+ *
19
+ * The same emitter under the old binding name, so a template still binding
20
+ * (nodeSelected) keeps working. Must stay AFTER NodeSelected: class fields
21
+ * initialise in order, and the other way round this captures undefined.
22
+ */
23
+ this.nodeSelected = this.NodeSelected;
16
24
  this._model = null;
17
25
  this.built = false;
18
26
  this.stations = new Map();
@@ -25,6 +33,14 @@ export class SubwayLinesComponent {
25
33
  this.DWELL = 0.6;
26
34
  this.MIN_LABEL_GAP = 40;
27
35
  }
36
+ /** @deprecated Use {@link SvgRef}. */
37
+ get svgRef() {
38
+ return this.SvgRef;
39
+ }
40
+ /** @deprecated Use {@link SvgRef}. */
41
+ set svgRef(value) {
42
+ this.SvgRef = value;
43
+ }
28
44
  ZoomIn() { this.pz?.ZoomIn(); }
29
45
  ZoomOut() { this.pz?.ZoomOut(); }
30
46
  FitReset() { this.pz?.Reset(); }
@@ -45,7 +61,7 @@ export class SubwayLinesComponent {
45
61
  clear() {
46
62
  this.pz?.Detach();
47
63
  this.pz = undefined;
48
- const svg = this.svgRef?.nativeElement;
64
+ const svg = this.SvgRef?.nativeElement;
49
65
  if (svg)
50
66
  while (svg.firstChild)
51
67
  svg.removeChild(svg.firstChild);
@@ -53,71 +69,71 @@ export class SubwayLinesComponent {
53
69
  this.connectors = [];
54
70
  }
55
71
  build() {
56
- const svg = this.svgRef.nativeElement;
72
+ const svg = this.SvgRef.nativeElement;
57
73
  const m = this._model;
58
- const agents = m.nodes.filter(n => n.type === 'agent' || n.type === 'subagent');
74
+ const agents = m.Nodes.filter(n => n.Type === 'agent' || n.Type === 'subagent');
59
75
  const lineY = new Map();
60
- agents.forEach((a, i) => lineY.set(a.id, this.TOP + i * this.LINE_GAP));
76
+ agents.forEach((a, i) => lineY.set(a.Id, this.TOP + i * this.LINE_GAP));
61
77
  const VH = this.TOP + Math.max(1, agents.length) * this.LINE_GAP + 30;
62
78
  svg.setAttribute('viewBox', `0 0 ${this.VW} ${VH}`);
63
- const main = svgEl('g', {}, svg);
64
- const lineG = svgEl('g', {}, main);
65
- const connG = svgEl('g', {}, main);
66
- const stationG = svgEl('g', {}, main);
67
- const trainG = svgEl('g', {}, main);
68
- const sx = (l) => this.PAD + l.tmid * this.IW;
69
- const sy = (l) => lineY.get(agentOf(l).id) ?? this.TOP;
70
- const radius = (l) => Math.min(17, 8 + Math.sqrt(l.realDur) * 1.4);
79
+ const main = SvgEl('g', {}, svg);
80
+ const lineG = SvgEl('g', {}, main);
81
+ const connG = SvgEl('g', {}, main);
82
+ const stationG = SvgEl('g', {}, main);
83
+ const trainG = SvgEl('g', {}, main);
84
+ const sx = (l) => this.PAD + l.Tmid * this.IW;
85
+ const sy = (l) => lineY.get(AgentOf(l).Id) ?? this.TOP;
86
+ const radius = (l) => Math.min(17, 8 + Math.sqrt(l.RealDur) * 1.4);
71
87
  // line backbones + agent labels (left gutter, with the agent's icon)
72
88
  for (const a of agents) {
73
- const kids = m.leaves.filter(l => agentOf(l) === a);
74
- const y = lineY.get(a.id);
75
- const col = FLOW_COLORS[a.type];
89
+ const kids = m.Leaves.filter(l => AgentOf(l) === a);
90
+ const y = lineY.get(a.Id);
91
+ const col = FLOW_COLORS[a.Type];
76
92
  if (kids.length) {
77
93
  const x0 = Math.min(...kids.map(sx)) - 32, x1 = Math.max(...kids.map(sx)) + 32;
78
- svgEl('line', { x1: x0, y1: y, x2: x1, y2: y, stroke: col, 'stroke-width': 7, opacity: 0.32, 'stroke-linecap': 'round' }, lineG);
94
+ SvgEl('line', { x1: x0, y1: y, x2: x1, y2: y, stroke: col, 'stroke-width': 7, opacity: 0.32, 'stroke-linecap': 'round' }, lineG);
79
95
  }
80
- appendIcon(lineG, 14, y - 11, 22, a.iconClass, a.logoUrl, col);
81
- svgEl('text', { x: 44, y: y - 6, 'font-size': 13, 'font-weight': 700, fill: col, 'dominant-baseline': 'middle', text: clip(agentShortName(a), 18) }, lineG);
82
- svgEl('text', { x: 44, y: y + 10, 'font-size': 9.5, 'dominant-baseline': 'middle', class: 'ftxt-muted', text: `${kids.length} step${kids.length === 1 ? '' : 's'} · ${formatDuration(a.realDur)}` }, lineG);
96
+ AppendIcon(lineG, 14, y - 11, 22, a.IconClass, a.LogoUrl, col);
97
+ SvgEl('text', { x: 44, y: y - 6, 'font-size': 13, 'font-weight': 700, fill: col, 'dominant-baseline': 'middle', text: Clip(AgentShortName(a), 18) }, lineG);
98
+ SvgEl('text', { x: 44, y: y + 10, 'font-size': 9.5, 'dominant-baseline': 'middle', class: 'ftxt-muted', text: `${kids.length} step${kids.length === 1 ? '' : 's'} · ${FormatDuration(a.RealDur)}` }, lineG);
83
99
  }
84
100
  // connectors carry the destination line's (agent's) colour
85
- for (let i = 0; i < m.leaves.length - 1; i++) {
86
- const a = m.leaves[i], b = m.leaves[i + 1];
101
+ for (let i = 0; i < m.Leaves.length - 1; i++) {
102
+ const a = m.Leaves[i], b = m.Leaves[i + 1];
87
103
  const ax = sx(a), ay = sy(a), bx = sx(b), by = sy(b);
88
104
  const mx = (ax + bx) / 2;
89
105
  const d = ay === by ? `M${ax},${ay} L${bx},${by}` : `M${ax},${ay} L${mx},${ay} L${mx},${by} L${bx},${by}`;
90
- const path = svgEl('path', { d, fill: 'none', stroke: FLOW_COLORS[agentOf(b).type], 'stroke-width': 3, opacity: 0.14, 'stroke-linejoin': 'round', 'stroke-linecap': 'round' }, connG);
106
+ const path = SvgEl('path', { d, fill: 'none', stroke: FLOW_COLORS[AgentOf(b).Type], 'stroke-width': 3, opacity: 0.14, 'stroke-linejoin': 'round', 'stroke-linecap': 'round' }, connG);
91
107
  this.connectors.push({ path, to: b, len: path.getTotalLength() });
92
108
  }
93
109
  // stations: ring + step icon; angled abbreviated label (thinned when dense)
94
110
  let lastLabelX = -1e9;
95
- m.leaves.forEach((l) => {
111
+ m.Leaves.forEach((l) => {
96
112
  const x = sx(l), y = sy(l), r = radius(l);
97
- const col = FLOW_COLORS[l.type];
98
- const grp = svgEl('g', {}, stationG);
113
+ const col = FLOW_COLORS[l.Type];
114
+ const grp = SvgEl('g', {}, stationG);
99
115
  grp.style.color = col;
100
116
  grp.style.cursor = 'pointer';
101
- appendTitle(grp, `${l.name} · ${formatDuration(l.realDur)}`);
102
- const ring = svgEl('circle', { cx: x, cy: y, r, fill: 'var(--mj-bg-surface)', stroke: col, 'stroke-width': 3.2 }, grp);
103
- appendIcon(grp, x - r * 0.62, y - r * 0.62, r * 1.24, l.iconClass, l.logoUrl, col);
104
- const show = (x - lastLabelX >= this.MIN_LABEL_GAP) || l.heat >= 2;
117
+ AppendTitle(grp, `${l.Name} · ${FormatDuration(l.RealDur)}`);
118
+ const ring = SvgEl('circle', { cx: x, cy: y, r, fill: 'var(--mj-bg-surface)', stroke: col, 'stroke-width': 3.2 }, grp);
119
+ AppendIcon(grp, x - r * 0.62, y - r * 0.62, r * 1.24, l.IconClass, l.LogoUrl, col);
120
+ const show = (x - lastLabelX >= this.MIN_LABEL_GAP) || l.Heat >= 2;
105
121
  let lab;
106
122
  if (show) {
107
123
  lastLabelX = x;
108
124
  const lx = x, ly = y - r - 8;
109
- lab = svgEl('text', {
125
+ lab = SvgEl('text', {
110
126
  x: lx, y: ly, 'font-size': 10.5, 'font-weight': 600, 'text-anchor': 'start',
111
127
  transform: `rotate(-30 ${lx} ${ly})`, class: 'ftxt-secondary', opacity: 0.7,
112
- text: `${clip(shortLabel(l), 22)} · ${formatDuration(l.realDur)}`
128
+ text: `${Clip(ShortLabel(l), 22)} · ${FormatDuration(l.RealDur)}`
113
129
  }, grp);
114
130
  }
115
131
  grp.addEventListener('click', () => { if (!this.pz?.moved)
116
- this.nodeSelected.emit(l); });
117
- this.stations.set(l.id, { ring, lab, leaf: l, r, sx: x, sy: y });
132
+ this.NodeSelected.emit(l); });
133
+ this.stations.set(l.Id, { ring, lab, leaf: l, r, sx: x, sy: y });
118
134
  });
119
- this.trainHalo = svgEl('circle', { r: 17, opacity: 0, class: 'fhand-dot' }, trainG);
120
- this.train = svgEl('circle', { r: 9, opacity: 0, stroke: 'var(--mj-bg-surface)', 'stroke-width': 2.5 }, trainG);
135
+ this.trainHalo = SvgEl('circle', { r: 17, opacity: 0, class: 'fhand-dot' }, trainG);
136
+ this.train = SvgEl('circle', { r: 9, opacity: 0, stroke: 'var(--mj-bg-surface)', 'stroke-width': 2.5 }, trainG);
121
137
  this.pz = new PanZoomController(svg, main, 'mj.agentRunFlow.view.subway.v1');
122
138
  this.pz.Load();
123
139
  this.pz.Attach();
@@ -125,24 +141,24 @@ export class SubwayLinesComponent {
125
141
  update(p, ts) {
126
142
  const m = this._model;
127
143
  this.stations.forEach(({ ring, lab, leaf, r }) => {
128
- const started = p >= leaf.t0;
129
- const active = started && p < leaf.t1;
130
- const selected = leaf.id === this.selectedId;
131
- ring.setAttribute('class', selected ? 'glow2' : active ? 'glow' + Math.max(1, leaf.heat) : '');
144
+ const started = p >= leaf.T0;
145
+ const active = started && p < leaf.T1;
146
+ const selected = leaf.Id === this.selectedId;
147
+ ring.setAttribute('class', selected ? 'glow2' : active ? 'glow' + Math.max(1, leaf.Heat) : '');
132
148
  ring.setAttribute('stroke-width', selected ? '4.5' : '3.2');
133
149
  ring.setAttribute('r', String(active ? r + 2 * Math.abs(Math.sin(ts / 220)) : r));
134
150
  ring.setAttribute('fill-opacity', started ? '1' : '0.55');
135
151
  lab?.setAttribute('opacity', active || selected ? '1' : started ? '0.85' : '0.6');
136
152
  });
137
153
  this.connectors.forEach(({ path, to }) => {
138
- const done = p >= to.t1, lit = p >= to.t0;
154
+ const done = p >= to.T1, lit = p >= to.T0;
139
155
  path.setAttribute('opacity', done ? '0.7' : lit ? '0.45' : '0.14');
140
156
  path.setAttribute('stroke-width', lit ? '3.6' : '3');
141
157
  });
142
- const leaf = activeLeaf(m, p);
143
- const idx = m.leaves.indexOf(leaf);
144
- const frac = p >= leaf.t1 ? 1 : Math.max(0, (p - leaf.t0) / (leaf.t1 - leaf.t0));
145
- const here = this.stations.get(leaf.id);
158
+ const leaf = ActiveLeaf(m, p);
159
+ const idx = m.Leaves.indexOf(leaf);
160
+ const frac = p >= leaf.T1 ? 1 : Math.max(0, (p - leaf.T0) / (leaf.T1 - leaf.T0));
161
+ const here = this.stations.get(leaf.Id);
146
162
  let tx = here?.sx ?? 0, ty = here?.sy ?? 0;
147
163
  if (here && idx >= 0 && idx < this.connectors.length && frac >= this.DWELL) {
148
164
  const conn = this.connectors[idx];
@@ -152,7 +168,7 @@ export class SubwayLinesComponent {
152
168
  ty = pt.y;
153
169
  }
154
170
  const live = p > 0 && p < 1;
155
- const lineCol = FLOW_COLORS[agentOf(leaf).type];
171
+ const lineCol = FLOW_COLORS[AgentOf(leaf).Type];
156
172
  if (this.train) {
157
173
  this.train.setAttribute('cx', String(tx));
158
174
  this.train.setAttribute('cy', String(ty));
@@ -172,8 +188,8 @@ export class SubwayLinesComponent {
172
188
  i0.ɵɵviewQuery(_c0, 7);
173
189
  } if (rf & 2) {
174
190
  let _t;
175
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.svgRef = _t.first);
176
- } }, inputs: { Model: "Model" }, outputs: { nodeSelected: "nodeSelected" }, standalone: false, decls: 2, vars: 0, consts: [["svg", ""], ["preserveAspectRatio", "xMidYMid meet", 1, "flow-svg"]], template: function SubwayLinesComponent_Template(rf, ctx) { if (rf & 1) {
191
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.SvgRef = _t.first);
192
+ } }, inputs: { Model: "Model" }, outputs: { NodeSelected: "NodeSelected", nodeSelected: "nodeSelected" }, standalone: false, decls: 2, vars: 0, consts: [["svg", ""], ["preserveAspectRatio", "xMidYMid meet", 1, "flow-svg"]], template: function SubwayLinesComponent_Template(rf, ctx) { if (rf & 1) {
177
193
  i0.ɵɵnamespaceSVG();
178
194
  i0.ɵɵelement(0, "svg", 1, 0);
179
195
  } }, styles: ["/* Shared chrome for every flow renderer's <svg> host.\n These components use ViewEncapsulation.None so this CSS reaches SVG nodes\n created imperatively via createElementNS (which never receive Angular's\n emulated-encapsulation scoping attribute). Everything is namespaced under\n `.flow-svg` to avoid leaking into the rest of the app. */\n.flow-svg {\n width: 100%;\n height: 100%;\n display: block;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n}\n\n.flow-svg text { fill: var(--mj-text-primary); }\n.flow-svg .ftxt-secondary { fill: var(--mj-text-secondary); }\n.flow-svg .ftxt-muted { fill: var(--mj-text-muted); }\n.flow-svg .ftxt-on { fill: var(--mj-text-inverse); }\n.flow-svg .fgrid { stroke: var(--mj-border-subtle); }\n.flow-svg .fhand { stroke: var(--mj-text-secondary); }\n.flow-svg .fhand-dot { fill: var(--mj-text-primary); }\n.flow-svg .fstar-bg { fill: var(--mj-text-muted); }\n/* outlined label for legibility over edges / busy fields */\n.flow-svg .fhalo { paint-order: stroke; stroke: var(--mj-bg-page); stroke-width: 3.5px; stroke-linejoin: round; }\n\n/* Heat / activity glow tiers \u2014 driven by `currentColor` (the node's category color). */\n.flow-svg .glow1 { filter: drop-shadow(0 0 4px currentColor); }\n.flow-svg .glow2 { filter: drop-shadow(0 0 9px currentColor); }\n.flow-svg .glow3 { filter: drop-shadow(0 0 16px currentColor); }\n"], encapsulation: 2, changeDetection: 0 }); }
@@ -181,9 +197,11 @@ export class SubwayLinesComponent {
181
197
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SubwayLinesComponent, [{
182
198
  type: Component,
183
199
  args: [{ standalone: false, selector: 'mj-agent-flow-subway', template: `<svg #svg class="flow-svg" preserveAspectRatio="xMidYMid meet"></svg>`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["/* Shared chrome for every flow renderer's <svg> host.\n These components use ViewEncapsulation.None so this CSS reaches SVG nodes\n created imperatively via createElementNS (which never receive Angular's\n emulated-encapsulation scoping attribute). Everything is namespaced under\n `.flow-svg` to avoid leaking into the rest of the app. */\n.flow-svg {\n width: 100%;\n height: 100%;\n display: block;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n}\n\n.flow-svg text { fill: var(--mj-text-primary); }\n.flow-svg .ftxt-secondary { fill: var(--mj-text-secondary); }\n.flow-svg .ftxt-muted { fill: var(--mj-text-muted); }\n.flow-svg .ftxt-on { fill: var(--mj-text-inverse); }\n.flow-svg .fgrid { stroke: var(--mj-border-subtle); }\n.flow-svg .fhand { stroke: var(--mj-text-secondary); }\n.flow-svg .fhand-dot { fill: var(--mj-text-primary); }\n.flow-svg .fstar-bg { fill: var(--mj-text-muted); }\n/* outlined label for legibility over edges / busy fields */\n.flow-svg .fhalo { paint-order: stroke; stroke: var(--mj-bg-page); stroke-width: 3.5px; stroke-linejoin: round; }\n\n/* Heat / activity glow tiers \u2014 driven by `currentColor` (the node's category color). */\n.flow-svg .glow1 { filter: drop-shadow(0 0 4px currentColor); }\n.flow-svg .glow2 { filter: drop-shadow(0 0 9px currentColor); }\n.flow-svg .glow3 { filter: drop-shadow(0 0 16px currentColor); }\n"] }]
184
- }], null, { svgRef: [{
200
+ }], null, { SvgRef: [{
185
201
  type: ViewChild,
186
202
  args: ['svg', { static: true }]
203
+ }], NodeSelected: [{
204
+ type: Output
187
205
  }], nodeSelected: [{
188
206
  type: Output
189
207
  }], Model: [{
@@ -1 +1 @@
1
- {"version":3,"file":"subway-lines.component.js","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/subway-lines.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ElementRef, Input, Output, EventEmitter, ViewChild, OnDestroy, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\nimport {\n FlowModel, FlowNode, FLOW_COLORS, agentOf, agentShortName, shortLabel, activeLeaf, formatDuration\n} from './agent-run-flow.model';\nimport { svgEl, clip, appendIcon, appendTitle } from './flow-svg.util';\nimport { PanZoomController } from './pan-zoom';\n\ninterface Station { ring: SVGElement; lab?: SVGElement; leaf: FlowNode; r: number; sx: number; sy: number; }\ninterface Connector { path: SVGGraphicsElement; to: FlowNode; len: number; }\n\n/**\n * Subway Lines — each agent is a transit line; sub-agents branch off and rejoin.\n * Connectors carry the line's (agent's) colour and brighten as the train passes,\n * so you can follow a sub-agent's route end to end. Stations show the real step\n * icon; labels are abbreviated and angled 30° so dense lines stay readable.\n */\n@Component({\n standalone: false,\n selector: 'mj-agent-flow-subway',\n template: `<svg #svg class=\"flow-svg\" preserveAspectRatio=\"xMidYMid meet\"></svg>`,\n styleUrls: ['./flow-shared.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SubwayLinesComponent implements OnDestroy {\n @ViewChild('svg', { static: true }) svgRef!: ElementRef<SVGSVGElement>;\n @Output() nodeSelected = new EventEmitter<FlowNode>();\n\n private _model: FlowModel | null = null;\n private built = false;\n private stations = new Map<number, Station>();\n private connectors: Connector[] = [];\n private train?: SVGElement;\n private trainHalo?: SVGElement;\n private selectedId = -1;\n private pz?: PanZoomController;\n\n public ZoomIn(): void { this.pz?.ZoomIn(); }\n public ZoomOut(): void { this.pz?.ZoomOut(); }\n public FitReset(): void { this.pz?.Reset(); }\n public ReapplyView(): void { this.pz?.Reapply(); }\n ngOnDestroy(): void { this.pz?.Detach(); }\n\n private readonly VW = 1280;\n private readonly PAD = 188;\n private readonly TOP = 132;\n private readonly LINE_GAP = 168;\n private readonly DWELL = 0.6;\n private readonly MIN_LABEL_GAP = 40;\n private get IW(): number { return this.VW - this.PAD - 90; }\n\n public SetSelected(id: number | null): void { this.selectedId = id ?? -1; }\n\n @Input() set Model(m: FlowModel | null) { this._model = m; this.built = false; this.clear(); }\n\n public Render(p: number, ts: number): void {\n if (!this._model) return;\n if (!this.built) { this.build(); this.built = true; }\n this.update(p, ts);\n }\n\n private clear(): void {\n this.pz?.Detach(); this.pz = undefined;\n const svg = this.svgRef?.nativeElement;\n if (svg) while (svg.firstChild) svg.removeChild(svg.firstChild);\n this.stations.clear(); this.connectors = [];\n }\n\n private build(): void {\n const svg = this.svgRef.nativeElement;\n const m = this._model!;\n const agents = m.nodes.filter(n => n.type === 'agent' || n.type === 'subagent');\n const lineY = new Map<number, number>();\n agents.forEach((a, i) => lineY.set(a.id, this.TOP + i * this.LINE_GAP));\n const VH = this.TOP + Math.max(1, agents.length) * this.LINE_GAP + 30;\n svg.setAttribute('viewBox', `0 0 ${this.VW} ${VH}`);\n\n const main = svgEl('g', {}, svg);\n const lineG = svgEl('g', {}, main);\n const connG = svgEl('g', {}, main);\n const stationG = svgEl('g', {}, main);\n const trainG = svgEl('g', {}, main);\n\n const sx = (l: FlowNode) => this.PAD + l.tmid * this.IW;\n const sy = (l: FlowNode) => lineY.get(agentOf(l).id) ?? this.TOP;\n const radius = (l: FlowNode) => Math.min(17, 8 + Math.sqrt(l.realDur) * 1.4);\n\n // line backbones + agent labels (left gutter, with the agent's icon)\n for (const a of agents) {\n const kids = m.leaves.filter(l => agentOf(l) === a);\n const y = lineY.get(a.id)!;\n const col = FLOW_COLORS[a.type];\n if (kids.length) {\n const x0 = Math.min(...kids.map(sx)) - 32, x1 = Math.max(...kids.map(sx)) + 32;\n svgEl('line', { x1: x0, y1: y, x2: x1, y2: y, stroke: col, 'stroke-width': 7, opacity: 0.32, 'stroke-linecap': 'round' }, lineG);\n }\n appendIcon(lineG, 14, y - 11, 22, a.iconClass, a.logoUrl, col);\n svgEl('text', { x: 44, y: y - 6, 'font-size': 13, 'font-weight': 700, fill: col, 'dominant-baseline': 'middle', text: clip(agentShortName(a), 18) }, lineG);\n svgEl('text', { x: 44, y: y + 10, 'font-size': 9.5, 'dominant-baseline': 'middle', class: 'ftxt-muted', text: `${kids.length} step${kids.length === 1 ? '' : 's'} · ${formatDuration(a.realDur)}` }, lineG);\n }\n\n // connectors carry the destination line's (agent's) colour\n for (let i = 0; i < m.leaves.length - 1; i++) {\n const a = m.leaves[i], b = m.leaves[i + 1];\n const ax = sx(a), ay = sy(a), bx = sx(b), by = sy(b);\n const mx = (ax + bx) / 2;\n const d = ay === by ? `M${ax},${ay} L${bx},${by}` : `M${ax},${ay} L${mx},${ay} L${mx},${by} L${bx},${by}`;\n const path = svgEl('path', { d, fill: 'none', stroke: FLOW_COLORS[agentOf(b).type], 'stroke-width': 3, opacity: 0.14, 'stroke-linejoin': 'round', 'stroke-linecap': 'round' }, connG) as SVGGraphicsElement;\n this.connectors.push({ path, to: b, len: (path as unknown as SVGPathElement).getTotalLength() });\n }\n\n // stations: ring + step icon; angled abbreviated label (thinned when dense)\n let lastLabelX = -1e9;\n m.leaves.forEach((l) => {\n const x = sx(l), y = sy(l), r = radius(l);\n const col = FLOW_COLORS[l.type];\n const grp = svgEl('g', {}, stationG);\n (grp as SVGElement & { style: CSSStyleDeclaration }).style.color = col;\n (grp as SVGElement & { style: CSSStyleDeclaration }).style.cursor = 'pointer';\n appendTitle(grp, `${l.name} · ${formatDuration(l.realDur)}`);\n const ring = svgEl('circle', { cx: x, cy: y, r, fill: 'var(--mj-bg-surface)', stroke: col, 'stroke-width': 3.2 }, grp);\n appendIcon(grp, x - r * 0.62, y - r * 0.62, r * 1.24, l.iconClass, l.logoUrl, col);\n\n const show = (x - lastLabelX >= this.MIN_LABEL_GAP) || l.heat >= 2;\n let lab: SVGElement | undefined;\n if (show) {\n lastLabelX = x;\n const lx = x, ly = y - r - 8;\n lab = svgEl('text', {\n x: lx, y: ly, 'font-size': 10.5, 'font-weight': 600, 'text-anchor': 'start',\n transform: `rotate(-30 ${lx} ${ly})`, class: 'ftxt-secondary', opacity: 0.7,\n text: `${clip(shortLabel(l), 22)} · ${formatDuration(l.realDur)}`\n }, grp);\n }\n grp.addEventListener('click', () => { if (!this.pz?.moved) this.nodeSelected.emit(l); });\n this.stations.set(l.id, { ring, lab, leaf: l, r, sx: x, sy: y });\n });\n\n this.trainHalo = svgEl('circle', { r: 17, opacity: 0, class: 'fhand-dot' }, trainG);\n this.train = svgEl('circle', { r: 9, opacity: 0, stroke: 'var(--mj-bg-surface)', 'stroke-width': 2.5 }, trainG);\n\n this.pz = new PanZoomController(svg, main, 'mj.agentRunFlow.view.subway.v1');\n this.pz.Load(); this.pz.Attach();\n }\n\n private update(p: number, ts: number): void {\n const m = this._model!;\n this.stations.forEach(({ ring, lab, leaf, r }) => {\n const started = p >= leaf.t0;\n const active = started && p < leaf.t1;\n const selected = leaf.id === this.selectedId;\n ring.setAttribute('class', selected ? 'glow2' : active ? 'glow' + Math.max(1, leaf.heat) : '');\n ring.setAttribute('stroke-width', selected ? '4.5' : '3.2');\n ring.setAttribute('r', String(active ? r + 2 * Math.abs(Math.sin(ts / 220)) : r));\n ring.setAttribute('fill-opacity', started ? '1' : '0.55');\n lab?.setAttribute('opacity', active || selected ? '1' : started ? '0.85' : '0.6');\n });\n this.connectors.forEach(({ path, to }) => {\n const done = p >= to.t1, lit = p >= to.t0;\n path.setAttribute('opacity', done ? '0.7' : lit ? '0.45' : '0.14');\n path.setAttribute('stroke-width', lit ? '3.6' : '3');\n });\n\n const leaf = activeLeaf(m, p);\n const idx = m.leaves.indexOf(leaf);\n const frac = p >= leaf.t1 ? 1 : Math.max(0, (p - leaf.t0) / (leaf.t1 - leaf.t0));\n const here = this.stations.get(leaf.id);\n let tx = here?.sx ?? 0, ty = here?.sy ?? 0;\n if (here && idx >= 0 && idx < this.connectors.length && frac >= this.DWELL) {\n const conn = this.connectors[idx];\n const lt = (frac - this.DWELL) / (1 - this.DWELL);\n const pt = (conn.path as unknown as SVGPathElement).getPointAtLength(lt * conn.len);\n tx = pt.x; ty = pt.y;\n }\n const live = p > 0 && p < 1;\n const lineCol = FLOW_COLORS[agentOf(leaf).type];\n if (this.train) {\n this.train.setAttribute('cx', String(tx)); this.train.setAttribute('cy', String(ty));\n this.train.setAttribute('opacity', live ? '1' : '0');\n this.train.setAttribute('fill', lineCol);\n this.train.setAttribute('class', live ? 'glow2' : '');\n (this.train as SVGElement & { style: CSSStyleDeclaration }).style.color = lineCol;\n }\n if (this.trainHalo) {\n this.trainHalo.setAttribute('cx', String(tx)); this.trainHalo.setAttribute('cy', String(ty));\n this.trainHalo.setAttribute('opacity', live ? String(0.16 + 0.08 * Math.sin(ts / 200)) : '0');\n }\n }\n}\n"]}
1
+ {"version":3,"file":"subway-lines.component.js","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/subway-lines.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ElementRef, Input, Output, EventEmitter, ViewChild, OnDestroy, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\nimport {\n FlowModel, FlowNode, FLOW_COLORS, AgentOf, AgentShortName, ShortLabel, ActiveLeaf, FormatDuration\n} from './agent-run-flow.model';\nimport { SvgEl, Clip, AppendIcon, AppendTitle } from './flow-svg.util';\nimport { PanZoomController } from './pan-zoom';\n\ninterface Station { ring: SVGElement; lab?: SVGElement; leaf: FlowNode; r: number; sx: number; sy: number; }\ninterface Connector { path: SVGGraphicsElement; to: FlowNode; len: number; }\n\n/**\n * Subway Lines — each agent is a transit line; sub-agents branch off and rejoin.\n * Connectors carry the line's (agent's) colour and brighten as the train passes,\n * so you can follow a sub-agent's route end to end. Stations show the real step\n * icon; labels are abbreviated and angled 30° so dense lines stay readable.\n */\n@Component({\n standalone: false,\n selector: 'mj-agent-flow-subway',\n template: `<svg #svg class=\"flow-svg\" preserveAspectRatio=\"xMidYMid meet\"></svg>`,\n styleUrls: ['./flow-shared.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SubwayLinesComponent implements OnDestroy {\n @ViewChild('svg', { static: true }) SvgRef!: ElementRef<SVGSVGElement>;\n\n /** @deprecated Use {@link SvgRef}. */\n get svgRef(): ElementRef<SVGSVGElement> {\n return this.SvgRef;\n }\n /** @deprecated Use {@link SvgRef}. */\n set svgRef(value: ElementRef<SVGSVGElement>) {\n this.SvgRef = value;\n }\n @Output() NodeSelected = new EventEmitter<FlowNode>();\n\n /**\n * @deprecated Use {@link NodeSelected}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (nodeSelected) keeps working. Must stay AFTER NodeSelected: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() nodeSelected = this.NodeSelected;\n\n private _model: FlowModel | null = null;\n private built = false;\n private stations = new Map<number, Station>();\n private connectors: Connector[] = [];\n private train?: SVGElement;\n private trainHalo?: SVGElement;\n private selectedId = -1;\n private pz?: PanZoomController;\n\n public ZoomIn(): void { this.pz?.ZoomIn(); }\n public ZoomOut(): void { this.pz?.ZoomOut(); }\n public FitReset(): void { this.pz?.Reset(); }\n public ReapplyView(): void { this.pz?.Reapply(); }\n ngOnDestroy(): void { this.pz?.Detach(); }\n\n private readonly VW = 1280;\n private readonly PAD = 188;\n private readonly TOP = 132;\n private readonly LINE_GAP = 168;\n private readonly DWELL = 0.6;\n private readonly MIN_LABEL_GAP = 40;\n private get IW(): number { return this.VW - this.PAD - 90; }\n\n public SetSelected(id: number | null): void { this.selectedId = id ?? -1; }\n\n @Input() set Model(m: FlowModel | null) { this._model = m; this.built = false; this.clear(); }\n\n public Render(p: number, ts: number): void {\n if (!this._model) return;\n if (!this.built) { this.build(); this.built = true; }\n this.update(p, ts);\n }\n\n private clear(): void {\n this.pz?.Detach(); this.pz = undefined;\n const svg = this.SvgRef?.nativeElement;\n if (svg) while (svg.firstChild) svg.removeChild(svg.firstChild);\n this.stations.clear(); this.connectors = [];\n }\n\n private build(): void {\n const svg = this.SvgRef.nativeElement;\n const m = this._model!;\n const agents = m.Nodes.filter(n => n.Type === 'agent' || n.Type === 'subagent');\n const lineY = new Map<number, number>();\n agents.forEach((a, i) => lineY.set(a.Id, this.TOP + i * this.LINE_GAP));\n const VH = this.TOP + Math.max(1, agents.length) * this.LINE_GAP + 30;\n svg.setAttribute('viewBox', `0 0 ${this.VW} ${VH}`);\n\n const main = SvgEl('g', {}, svg);\n const lineG = SvgEl('g', {}, main);\n const connG = SvgEl('g', {}, main);\n const stationG = SvgEl('g', {}, main);\n const trainG = SvgEl('g', {}, main);\n\n const sx = (l: FlowNode) => this.PAD + l.Tmid * this.IW;\n const sy = (l: FlowNode) => lineY.get(AgentOf(l).Id) ?? this.TOP;\n const radius = (l: FlowNode) => Math.min(17, 8 + Math.sqrt(l.RealDur) * 1.4);\n\n // line backbones + agent labels (left gutter, with the agent's icon)\n for (const a of agents) {\n const kids = m.Leaves.filter(l => AgentOf(l) === a);\n const y = lineY.get(a.Id)!;\n const col = FLOW_COLORS[a.Type];\n if (kids.length) {\n const x0 = Math.min(...kids.map(sx)) - 32, x1 = Math.max(...kids.map(sx)) + 32;\n SvgEl('line', { x1: x0, y1: y, x2: x1, y2: y, stroke: col, 'stroke-width': 7, opacity: 0.32, 'stroke-linecap': 'round' }, lineG);\n }\n AppendIcon(lineG, 14, y - 11, 22, a.IconClass, a.LogoUrl, col);\n SvgEl('text', { x: 44, y: y - 6, 'font-size': 13, 'font-weight': 700, fill: col, 'dominant-baseline': 'middle', text: Clip(AgentShortName(a), 18) }, lineG);\n SvgEl('text', { x: 44, y: y + 10, 'font-size': 9.5, 'dominant-baseline': 'middle', class: 'ftxt-muted', text: `${kids.length} step${kids.length === 1 ? '' : 's'} · ${FormatDuration(a.RealDur)}` }, lineG);\n }\n\n // connectors carry the destination line's (agent's) colour\n for (let i = 0; i < m.Leaves.length - 1; i++) {\n const a = m.Leaves[i], b = m.Leaves[i + 1];\n const ax = sx(a), ay = sy(a), bx = sx(b), by = sy(b);\n const mx = (ax + bx) / 2;\n const d = ay === by ? `M${ax},${ay} L${bx},${by}` : `M${ax},${ay} L${mx},${ay} L${mx},${by} L${bx},${by}`;\n const path = SvgEl('path', { d, fill: 'none', stroke: FLOW_COLORS[AgentOf(b).Type], 'stroke-width': 3, opacity: 0.14, 'stroke-linejoin': 'round', 'stroke-linecap': 'round' }, connG) as SVGGraphicsElement;\n this.connectors.push({ path, to: b, len: (path as unknown as SVGPathElement).getTotalLength() });\n }\n\n // stations: ring + step icon; angled abbreviated label (thinned when dense)\n let lastLabelX = -1e9;\n m.Leaves.forEach((l) => {\n const x = sx(l), y = sy(l), r = radius(l);\n const col = FLOW_COLORS[l.Type];\n const grp = SvgEl('g', {}, stationG);\n (grp as SVGElement & { style: CSSStyleDeclaration }).style.color = col;\n (grp as SVGElement & { style: CSSStyleDeclaration }).style.cursor = 'pointer';\n AppendTitle(grp, `${l.Name} · ${FormatDuration(l.RealDur)}`);\n const ring = SvgEl('circle', { cx: x, cy: y, r, fill: 'var(--mj-bg-surface)', stroke: col, 'stroke-width': 3.2 }, grp);\n AppendIcon(grp, x - r * 0.62, y - r * 0.62, r * 1.24, l.IconClass, l.LogoUrl, col);\n\n const show = (x - lastLabelX >= this.MIN_LABEL_GAP) || l.Heat >= 2;\n let lab: SVGElement | undefined;\n if (show) {\n lastLabelX = x;\n const lx = x, ly = y - r - 8;\n lab = SvgEl('text', {\n x: lx, y: ly, 'font-size': 10.5, 'font-weight': 600, 'text-anchor': 'start',\n transform: `rotate(-30 ${lx} ${ly})`, class: 'ftxt-secondary', opacity: 0.7,\n text: `${Clip(ShortLabel(l), 22)} · ${FormatDuration(l.RealDur)}`\n }, grp);\n }\n grp.addEventListener('click', () => { if (!this.pz?.moved) this.NodeSelected.emit(l); });\n this.stations.set(l.Id, { ring, lab, leaf: l, r, sx: x, sy: y });\n });\n\n this.trainHalo = SvgEl('circle', { r: 17, opacity: 0, class: 'fhand-dot' }, trainG);\n this.train = SvgEl('circle', { r: 9, opacity: 0, stroke: 'var(--mj-bg-surface)', 'stroke-width': 2.5 }, trainG);\n\n this.pz = new PanZoomController(svg, main, 'mj.agentRunFlow.view.subway.v1');\n this.pz.Load(); this.pz.Attach();\n }\n\n private update(p: number, ts: number): void {\n const m = this._model!;\n this.stations.forEach(({ ring, lab, leaf, r }) => {\n const started = p >= leaf.T0;\n const active = started && p < leaf.T1;\n const selected = leaf.Id === this.selectedId;\n ring.setAttribute('class', selected ? 'glow2' : active ? 'glow' + Math.max(1, leaf.Heat) : '');\n ring.setAttribute('stroke-width', selected ? '4.5' : '3.2');\n ring.setAttribute('r', String(active ? r + 2 * Math.abs(Math.sin(ts / 220)) : r));\n ring.setAttribute('fill-opacity', started ? '1' : '0.55');\n lab?.setAttribute('opacity', active || selected ? '1' : started ? '0.85' : '0.6');\n });\n this.connectors.forEach(({ path, to }) => {\n const done = p >= to.T1, lit = p >= to.T0;\n path.setAttribute('opacity', done ? '0.7' : lit ? '0.45' : '0.14');\n path.setAttribute('stroke-width', lit ? '3.6' : '3');\n });\n\n const leaf = ActiveLeaf(m, p);\n const idx = m.Leaves.indexOf(leaf);\n const frac = p >= leaf.T1 ? 1 : Math.max(0, (p - leaf.T0) / (leaf.T1 - leaf.T0));\n const here = this.stations.get(leaf.Id);\n let tx = here?.sx ?? 0, ty = here?.sy ?? 0;\n if (here && idx >= 0 && idx < this.connectors.length && frac >= this.DWELL) {\n const conn = this.connectors[idx];\n const lt = (frac - this.DWELL) / (1 - this.DWELL);\n const pt = (conn.path as unknown as SVGPathElement).getPointAtLength(lt * conn.len);\n tx = pt.x; ty = pt.y;\n }\n const live = p > 0 && p < 1;\n const lineCol = FLOW_COLORS[AgentOf(leaf).Type];\n if (this.train) {\n this.train.setAttribute('cx', String(tx)); this.train.setAttribute('cy', String(ty));\n this.train.setAttribute('opacity', live ? '1' : '0');\n this.train.setAttribute('fill', lineCol);\n this.train.setAttribute('class', live ? 'glow2' : '');\n (this.train as SVGElement & { style: CSSStyleDeclaration }).style.color = lineCol;\n }\n if (this.trainHalo) {\n this.trainHalo.setAttribute('cx', String(tx)); this.trainHalo.setAttribute('cy', String(ty));\n this.trainHalo.setAttribute('opacity', live ? String(0.16 + 0.08 * Math.sin(ts / 200)) : '0');\n }\n }\n}\n"]}
@@ -57,38 +57,40 @@ import * as i55 from "./RecordProcesses/record-process-form.component";
57
57
  import * as i56 from "../panels/form-chrome/entity-form-chrome-editor.component";
58
58
  import * as i57 from "../panels/form-chrome/entity-relationship-form-role.panel";
59
59
  import * as i58 from "./Files/file-form.component";
60
- import * as i59 from "@angular/common";
61
- import * as i60 from "@angular/forms";
62
- import * as i61 from "@angular/cdk/drag-drop";
63
- import * as i62 from "ag-grid-angular";
64
- import * as i63 from "@memberjunction/ng-ui-components";
65
- import * as i64 from "@memberjunction/ng-link-directives";
66
- import * as i65 from "@memberjunction/ng-join-grid";
67
- import * as i66 from "@memberjunction/ng-base-forms";
68
- import * as i67 from "@memberjunction/ng-tabstrip";
69
- import * as i68 from "@memberjunction/ng-code-editor";
70
- import * as i69 from "@memberjunction/ng-deep-diff";
71
- import * as i70 from "@memberjunction/ng-ai-test-harness";
72
- import * as i71 from "@memberjunction/ng-action-gallery";
73
- import * as i72 from "@memberjunction/ng-testing";
74
- import * as i73 from "@memberjunction/ng-flow-editor";
75
- import * as i74 from "@memberjunction/ng-task-graph-editor";
76
- import * as i75 from "@memberjunction/ng-shared-generic";
77
- import * as i76 from "@memberjunction/ng-entity-relationship-diagram";
78
- import * as i77 from "@memberjunction/ng-list-management";
79
- import * as i78 from "@memberjunction/ng-actions";
80
- import * as i79 from "@memberjunction/ng-agents";
81
- import * as i80 from "@memberjunction/ng-entity-viewer";
82
- import * as i81 from "@memberjunction/ng-markdown";
83
- import * as i82 from "@memberjunction/ng-trees";
84
- import * as i83 from "angular-split";
85
- import * as i84 from "@memberjunction/ng-search";
86
- import * as i85 from "@memberjunction/ng-record-process-studio";
87
- import * as i86 from "@memberjunction/ng-resource-permissions";
88
- import * as i87 from "./HierarchyPanels/hierarchy-form-panels";
60
+ import * as i59 from "./MLModels/ml-model-form.component";
61
+ import * as i60 from "@angular/common";
62
+ import * as i61 from "@angular/forms";
63
+ import * as i62 from "@angular/cdk/drag-drop";
64
+ import * as i63 from "ag-grid-angular";
65
+ import * as i64 from "./MLModels/ps-model-detail.component";
66
+ import * as i65 from "@memberjunction/ng-ui-components";
67
+ import * as i66 from "@memberjunction/ng-link-directives";
68
+ import * as i67 from "@memberjunction/ng-join-grid";
69
+ import * as i68 from "@memberjunction/ng-base-forms";
70
+ import * as i69 from "@memberjunction/ng-tabstrip";
71
+ import * as i70 from "@memberjunction/ng-code-editor";
72
+ import * as i71 from "@memberjunction/ng-deep-diff";
73
+ import * as i72 from "@memberjunction/ng-ai-test-harness";
74
+ import * as i73 from "@memberjunction/ng-action-gallery";
75
+ import * as i74 from "@memberjunction/ng-testing";
76
+ import * as i75 from "@memberjunction/ng-flow-editor";
77
+ import * as i76 from "@memberjunction/ng-task-graph-editor";
78
+ import * as i77 from "@memberjunction/ng-shared-generic";
79
+ import * as i78 from "@memberjunction/ng-entity-relationship-diagram";
80
+ import * as i79 from "@memberjunction/ng-list-management";
81
+ import * as i80 from "@memberjunction/ng-actions";
82
+ import * as i81 from "@memberjunction/ng-agents";
83
+ import * as i82 from "@memberjunction/ng-entity-viewer";
84
+ import * as i83 from "@memberjunction/ng-markdown";
85
+ import * as i84 from "@memberjunction/ng-trees";
86
+ import * as i85 from "angular-split";
87
+ import * as i86 from "@memberjunction/ng-search";
88
+ import * as i87 from "@memberjunction/ng-record-process-studio";
89
+ import * as i88 from "@memberjunction/ng-resource-permissions";
90
+ import * as i89 from "./HierarchyPanels/hierarchy-form-panels";
89
91
  export declare class MemberJunctionCoreEntityFormsModule {
90
92
  static ɵfac: i0.ɵɵFactoryDeclaration<MemberJunctionCoreEntityFormsModule, never>;
91
- static ɵmod: i0.ɵɵNgModuleDeclaration<MemberJunctionCoreEntityFormsModule, [typeof i1.MJEntityFormComponentExtended, typeof i2.MJEntityActionFormComponentExtended, typeof i3.MJTemplateFormComponentExtended, typeof i4.TemplateParamDialogComponent, typeof i5.TemplateParamsGridComponent, typeof i6.TemplateEditorComponent, typeof i7.MJAIPromptFormComponentExtended, typeof i8.MJAIAgentFormComponentExtended, typeof i9.NewAgentDialogComponent, typeof i10.AddActionDialogComponent, typeof i11.PromptSelectorDialogComponent, typeof i12.AgentPromptAdvancedSettingsDialogComponent, typeof i13.SubAgentAdvancedSettingsDialogComponent, typeof i14.SubAgentSelectorDialogComponent, typeof i15.CreatePromptDialogComponent, typeof i16.CreateSubAgentDialogComponent, typeof i17.EntitySelectorDialogComponent, typeof i18.MJAIPromptRunFormComponentExtended, typeof i19.ChatMessageViewerComponent, typeof i20.MJActionFormComponentExtended, typeof i21.MJActionExecutionLogFormComponentExtended, typeof i22.MJAIAgentRunFormComponentExtended, typeof i23.AIAgentRunTimelineComponent, typeof i24.AIAgentRunStepNodeComponent, typeof i25.AIAgentRunAnalyticsComponent, typeof i26.AIAgentRunStepDetailComponent, typeof i27.AIAgentRunFlowComponent, typeof i28.FlameCascadeComponent, typeof i29.SubwayLinesComponent, typeof i30.ConstellationComponent, typeof i31.FlowchartComponent, typeof i32.MJQueryFormComponentExtended, typeof i33.QueryRunDialogComponent, typeof i34.FlowAgentFormSectionComponent, typeof i35.MJTestRunFormComponentExtended, typeof i36.MJTestFormComponentExtended, typeof i37.MJTestSuiteRunFormComponentExtended, typeof i38.MJTestSuiteFormComponentExtended, typeof i39.MJTestRunFeedbackFormComponentExtended, typeof i40.MJTestRubricFormComponentExtended, typeof i41.EntityLinkPillComponent, typeof i42.MJListFormComponentExtended, typeof i43.TagPipelineConfigurationPanel, typeof i44.WebsiteCrawlerSettingsPanel, typeof i45.ModelPredictionPanel, typeof i46.AISkillSharingPanel, typeof i47.MJSearchScopeFormComponentExtended, typeof i48.MJSearchScopeProviderFormComponentExtended, typeof i49.MJAIAgentSessionFormComponentExtended, typeof i50.MJAIAgentChannelFormComponentExtended, typeof i51.MJAIBridgeProviderFormComponentExtended, typeof i52.MJAIAgentSessionBridgeFormComponentExtended, typeof i53.MJAIBridgeAgentIdentityFormComponentExtended, typeof i54.AgentRealtimePanel, typeof i55.RecordProcessFormComponentExtended, typeof i56.EntityFormChromeEditorComponent, typeof i57.EntityRelationshipFormRolePanel, typeof i58.MJFileFormComponentExtended], [typeof i59.CommonModule, typeof i60.FormsModule, typeof i60.ReactiveFormsModule, typeof i61.DragDropModule, typeof i62.AgGridModule, typeof i63.MJEmptyStateComponent, typeof i63.MJAlertComponent, typeof i63.MJTabNavComponent, typeof i63.MJButtonDirective, typeof i63.MJAccordionModule, typeof i63.MJDropdownComponent, typeof i63.MJComboboxComponent, typeof i63.MJSwitchComponent, typeof i63.MJDialogComponent, typeof i63.MJDialogTitlebarComponent, typeof i63.MJDialogActionsComponent, typeof i63.MJNumericInputComponent, typeof i63.MJWindowComponent, typeof i63.MJWindowTitlebarComponent, typeof i63.MJProgressBarComponent, typeof i64.LinkDirectivesModule, typeof i65.JoinGridModule, typeof i66.BaseFormsModule, typeof i67.MJTabStripModule, typeof i68.CodeEditorModule, typeof i69.DeepDiffModule, typeof i70.AITestHarnessModule, typeof i71.ActionGalleryModule, typeof i72.TestingModule, typeof i73.FlowEditorModule, typeof i74.TaskGraphEditorModule, typeof i75.SharedGenericModule, typeof i76.EntityRelationshipDiagramModule, typeof i77.ListManagementModule, typeof i78.ActionsModule, typeof i79.AgentsModule, typeof i80.EntityViewerModule, typeof i81.MarkdownModule, typeof i82.NgTreesModule, typeof i83.AngularSplitModule, typeof i63.MjSlidePanelComponent, typeof i66.MjFormDialogComponent, typeof i84.SearchModule, typeof i85.RecordProcessEditorComponent, typeof i86.ResourcePermissionsModule, typeof i87.AIAgentCategoryHierarchyPanel, typeof i87.AIPromptCategoryHierarchyPanel, typeof i87.ActionCategoryHierarchyPanel, typeof i87.DashboardCategoryHierarchyPanel, typeof i87.QueryCategoryHierarchyPanel, typeof i87.TagHierarchyPanel, typeof i87.ProjectHierarchyPanel, typeof i87.ContentItemHierarchyPanel, typeof i87.FileCategoryHierarchyPanel, typeof i87.ListCategoryHierarchyPanel, typeof i87.RecordProcessCategoryHierarchyPanel, typeof i87.SkillHierarchyPanel, typeof i87.TemplateCategoryHierarchyPanel, typeof i87.TestSuiteHierarchyPanel, typeof i87.UserViewCategoryHierarchyPanel], [typeof i87.AIAgentCategoryHierarchyPanel, typeof i87.AIPromptCategoryHierarchyPanel, typeof i87.ActionCategoryHierarchyPanel, typeof i87.DashboardCategoryHierarchyPanel, typeof i87.QueryCategoryHierarchyPanel, typeof i87.TagHierarchyPanel, typeof i87.ProjectHierarchyPanel, typeof i87.ContentItemHierarchyPanel, typeof i87.FileCategoryHierarchyPanel, typeof i87.ListCategoryHierarchyPanel, typeof i87.RecordProcessCategoryHierarchyPanel, typeof i87.SkillHierarchyPanel, typeof i87.TemplateCategoryHierarchyPanel, typeof i87.TestSuiteHierarchyPanel, typeof i87.UserViewCategoryHierarchyPanel, typeof i1.MJEntityFormComponentExtended, typeof i58.MJFileFormComponentExtended, typeof i2.MJEntityActionFormComponentExtended, typeof i3.MJTemplateFormComponentExtended, typeof i6.TemplateEditorComponent, typeof i7.MJAIPromptFormComponentExtended, typeof i8.MJAIAgentFormComponentExtended, typeof i18.MJAIPromptRunFormComponentExtended, typeof i19.ChatMessageViewerComponent, typeof i20.MJActionFormComponentExtended, typeof i21.MJActionExecutionLogFormComponentExtended, typeof i22.MJAIAgentRunFormComponentExtended, typeof i23.AIAgentRunTimelineComponent, typeof i24.AIAgentRunStepNodeComponent, typeof i25.AIAgentRunAnalyticsComponent, typeof i32.MJQueryFormComponentExtended, typeof i34.FlowAgentFormSectionComponent, typeof i35.MJTestRunFormComponentExtended, typeof i36.MJTestFormComponentExtended, typeof i37.MJTestSuiteRunFormComponentExtended, typeof i38.MJTestSuiteFormComponentExtended, typeof i39.MJTestRunFeedbackFormComponentExtended, typeof i40.MJTestRubricFormComponentExtended, typeof i41.EntityLinkPillComponent, typeof i42.MJListFormComponentExtended, typeof i43.TagPipelineConfigurationPanel, typeof i44.WebsiteCrawlerSettingsPanel, typeof i45.ModelPredictionPanel, typeof i46.AISkillSharingPanel, typeof i47.MJSearchScopeFormComponentExtended, typeof i48.MJSearchScopeProviderFormComponentExtended, typeof i49.MJAIAgentSessionFormComponentExtended, typeof i50.MJAIAgentChannelFormComponentExtended, typeof i51.MJAIBridgeProviderFormComponentExtended, typeof i52.MJAIAgentSessionBridgeFormComponentExtended, typeof i53.MJAIBridgeAgentIdentityFormComponentExtended, typeof i54.AgentRealtimePanel, typeof i78.ActionsModule, typeof i55.RecordProcessFormComponentExtended]>;
93
+ static ɵmod: i0.ɵɵNgModuleDeclaration<MemberJunctionCoreEntityFormsModule, [typeof i1.MJEntityFormComponentExtended, typeof i2.MJEntityActionFormComponentExtended, typeof i3.MJTemplateFormComponentExtended, typeof i4.TemplateParamDialogComponent, typeof i5.TemplateParamsGridComponent, typeof i6.TemplateEditorComponent, typeof i7.MJAIPromptFormComponentExtended, typeof i8.MJAIAgentFormComponentExtended, typeof i9.NewAgentDialogComponent, typeof i10.AddActionDialogComponent, typeof i11.PromptSelectorDialogComponent, typeof i12.AgentPromptAdvancedSettingsDialogComponent, typeof i13.SubAgentAdvancedSettingsDialogComponent, typeof i14.SubAgentSelectorDialogComponent, typeof i15.CreatePromptDialogComponent, typeof i16.CreateSubAgentDialogComponent, typeof i17.EntitySelectorDialogComponent, typeof i18.MJAIPromptRunFormComponentExtended, typeof i19.ChatMessageViewerComponent, typeof i20.MJActionFormComponentExtended, typeof i21.MJActionExecutionLogFormComponentExtended, typeof i22.MJAIAgentRunFormComponentExtended, typeof i23.AIAgentRunTimelineComponent, typeof i24.AIAgentRunStepNodeComponent, typeof i25.AIAgentRunAnalyticsComponent, typeof i26.AIAgentRunStepDetailComponent, typeof i27.AIAgentRunFlowComponent, typeof i28.FlameCascadeComponent, typeof i29.SubwayLinesComponent, typeof i30.ConstellationComponent, typeof i31.FlowchartComponent, typeof i32.MJQueryFormComponentExtended, typeof i33.QueryRunDialogComponent, typeof i34.FlowAgentFormSectionComponent, typeof i35.MJTestRunFormComponentExtended, typeof i36.MJTestFormComponentExtended, typeof i37.MJTestSuiteRunFormComponentExtended, typeof i38.MJTestSuiteFormComponentExtended, typeof i39.MJTestRunFeedbackFormComponentExtended, typeof i40.MJTestRubricFormComponentExtended, typeof i41.EntityLinkPillComponent, typeof i42.MJListFormComponentExtended, typeof i43.TagPipelineConfigurationPanel, typeof i44.WebsiteCrawlerSettingsPanel, typeof i45.ModelPredictionPanel, typeof i46.AISkillSharingPanel, typeof i47.MJSearchScopeFormComponentExtended, typeof i48.MJSearchScopeProviderFormComponentExtended, typeof i49.MJAIAgentSessionFormComponentExtended, typeof i50.MJAIAgentChannelFormComponentExtended, typeof i51.MJAIBridgeProviderFormComponentExtended, typeof i52.MJAIAgentSessionBridgeFormComponentExtended, typeof i53.MJAIBridgeAgentIdentityFormComponentExtended, typeof i54.AgentRealtimePanel, typeof i55.RecordProcessFormComponentExtended, typeof i56.EntityFormChromeEditorComponent, typeof i57.EntityRelationshipFormRolePanel, typeof i58.MJFileFormComponentExtended, typeof i59.MLModelFormComponentExtended], [typeof i60.CommonModule, typeof i61.FormsModule, typeof i61.ReactiveFormsModule, typeof i62.DragDropModule, typeof i63.AgGridModule, typeof i64.PSModelDetailComponent, typeof i65.MJEmptyStateComponent, typeof i65.MJAlertComponent, typeof i65.MJTabNavComponent, typeof i65.MJButtonDirective, typeof i65.MJAccordionModule, typeof i65.MJDropdownComponent, typeof i65.MJComboboxComponent, typeof i65.MJSwitchComponent, typeof i65.MJDialogComponent, typeof i65.MJDialogTitlebarComponent, typeof i65.MJDialogActionsComponent, typeof i65.MJNumericInputComponent, typeof i65.MJWindowComponent, typeof i65.MJWindowTitlebarComponent, typeof i65.MJProgressBarComponent, typeof i66.LinkDirectivesModule, typeof i67.JoinGridModule, typeof i68.BaseFormsModule, typeof i69.MJTabStripModule, typeof i70.CodeEditorModule, typeof i71.DeepDiffModule, typeof i72.AITestHarnessModule, typeof i73.ActionGalleryModule, typeof i74.TestingModule, typeof i75.FlowEditorModule, typeof i76.TaskGraphEditorModule, typeof i77.SharedGenericModule, typeof i78.EntityRelationshipDiagramModule, typeof i79.ListManagementModule, typeof i80.ActionsModule, typeof i81.AgentsModule, typeof i82.EntityViewerModule, typeof i83.MarkdownModule, typeof i84.NgTreesModule, typeof i85.AngularSplitModule, typeof i65.MjSlidePanelComponent, typeof i68.MjFormDialogComponent, typeof i86.SearchModule, typeof i87.RecordProcessEditorComponent, typeof i87.FeaturePipelineBuilderComponent, typeof i87.RecordProcessHistoryComponent, typeof i88.ResourcePermissionsModule, typeof i89.AIAgentCategoryHierarchyPanel, typeof i89.AIPromptCategoryHierarchyPanel, typeof i89.ActionCategoryHierarchyPanel, typeof i89.DashboardCategoryHierarchyPanel, typeof i89.QueryCategoryHierarchyPanel, typeof i89.TagHierarchyPanel, typeof i89.ProjectHierarchyPanel, typeof i89.ContentItemHierarchyPanel, typeof i89.FileCategoryHierarchyPanel, typeof i89.ListCategoryHierarchyPanel, typeof i89.RecordProcessCategoryHierarchyPanel, typeof i89.SkillHierarchyPanel, typeof i89.TemplateCategoryHierarchyPanel, typeof i89.TestSuiteHierarchyPanel, typeof i89.UserViewCategoryHierarchyPanel], [typeof i89.AIAgentCategoryHierarchyPanel, typeof i89.AIPromptCategoryHierarchyPanel, typeof i89.ActionCategoryHierarchyPanel, typeof i89.DashboardCategoryHierarchyPanel, typeof i89.QueryCategoryHierarchyPanel, typeof i89.TagHierarchyPanel, typeof i89.ProjectHierarchyPanel, typeof i89.ContentItemHierarchyPanel, typeof i89.FileCategoryHierarchyPanel, typeof i89.ListCategoryHierarchyPanel, typeof i89.RecordProcessCategoryHierarchyPanel, typeof i89.SkillHierarchyPanel, typeof i89.TemplateCategoryHierarchyPanel, typeof i89.TestSuiteHierarchyPanel, typeof i89.UserViewCategoryHierarchyPanel, typeof i1.MJEntityFormComponentExtended, typeof i58.MJFileFormComponentExtended, typeof i2.MJEntityActionFormComponentExtended, typeof i3.MJTemplateFormComponentExtended, typeof i6.TemplateEditorComponent, typeof i7.MJAIPromptFormComponentExtended, typeof i8.MJAIAgentFormComponentExtended, typeof i18.MJAIPromptRunFormComponentExtended, typeof i19.ChatMessageViewerComponent, typeof i20.MJActionFormComponentExtended, typeof i21.MJActionExecutionLogFormComponentExtended, typeof i22.MJAIAgentRunFormComponentExtended, typeof i23.AIAgentRunTimelineComponent, typeof i24.AIAgentRunStepNodeComponent, typeof i25.AIAgentRunAnalyticsComponent, typeof i32.MJQueryFormComponentExtended, typeof i34.FlowAgentFormSectionComponent, typeof i35.MJTestRunFormComponentExtended, typeof i36.MJTestFormComponentExtended, typeof i37.MJTestSuiteRunFormComponentExtended, typeof i38.MJTestSuiteFormComponentExtended, typeof i39.MJTestRunFeedbackFormComponentExtended, typeof i40.MJTestRubricFormComponentExtended, typeof i41.EntityLinkPillComponent, typeof i42.MJListFormComponentExtended, typeof i43.TagPipelineConfigurationPanel, typeof i44.WebsiteCrawlerSettingsPanel, typeof i45.ModelPredictionPanel, typeof i46.AISkillSharingPanel, typeof i47.MJSearchScopeFormComponentExtended, typeof i48.MJSearchScopeProviderFormComponentExtended, typeof i49.MJAIAgentSessionFormComponentExtended, typeof i50.MJAIAgentChannelFormComponentExtended, typeof i51.MJAIBridgeProviderFormComponentExtended, typeof i52.MJAIAgentSessionBridgeFormComponentExtended, typeof i53.MJAIBridgeAgentIdentityFormComponentExtended, typeof i54.AgentRealtimePanel, typeof i80.ActionsModule, typeof i55.RecordProcessFormComponentExtended, typeof i59.MLModelFormComponentExtended, typeof i64.PSModelDetailComponent]>;
92
94
  static ɵinj: i0.ɵɵInjectorDeclaration<MemberJunctionCoreEntityFormsModule>;
93
95
  }
94
96
  //# sourceMappingURL=custom-forms.module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"custom-forms.module.d.ts","sourceRoot":"","sources":["../../../src/lib/custom/custom-forms.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0GA,qBA8Ja,mCAAmC;yCAAnC,mCAAmC;0CAAnC,mCAAmC;0CAAnC,mCAAmC;CAAI"}
1
+ {"version":3,"file":"custom-forms.module.d.ts","sourceRoot":"","sources":["../../../src/lib/custom/custom-forms.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4GA,qBAoKa,mCAAmC;yCAAnC,mCAAmC;0CAAnC,mCAAmC;0CAAnC,mCAAmC;CAAI"}
@@ -86,7 +86,7 @@ import { MJAIAgentChannelFormComponentExtended } from "./AIAgentChannels/ai-agen
86
86
  import { MJAIBridgeProviderFormComponentExtended } from "./BridgeProviders/bridge-provider-form.component";
87
87
  import { MJAIAgentSessionBridgeFormComponentExtended } from "./SessionBridges/session-bridge-form.component";
88
88
  import { RecordProcessFormComponentExtended } from "./RecordProcesses/record-process-form.component";
89
- import { RecordProcessEditorComponent } from "@memberjunction/ng-record-process-studio";
89
+ import { RecordProcessEditorComponent, FeaturePipelineBuilderComponent, RecordProcessHistoryComponent } from "@memberjunction/ng-record-process-studio";
90
90
  import { MJAIBridgeAgentIdentityFormComponentExtended } from "./BridgeAgentIdentities/bridge-agent-identity-form.component";
91
91
  // AI Agent "Realtime" panel (Pattern 1 — BaseFormPanel slot). Imported so the
92
92
  // @RegisterClassEx decorator runs at module load (Angular tree-shaking guard).
@@ -103,6 +103,8 @@ import { AISkillSharingPanel } from "../panels/ai-skill-sharing/ai-skill-sharing
103
103
  import { EntityFormChromeEditorComponent } from "../panels/form-chrome/entity-form-chrome-editor.component";
104
104
  import { EntityRelationshipFormRolePanel } from "../panels/form-chrome/entity-relationship-form-role.panel";
105
105
  import { ResourcePermissionsModule } from "@memberjunction/ng-resource-permissions";
106
+ import { MLModelFormComponentExtended } from "./MLModels/ml-model-form.component";
107
+ import { PSModelDetailComponent } from "./MLModels/ps-model-detail.component";
106
108
  import * as i0 from "@angular/core";
107
109
  import * as i1 from "./HierarchyPanels/hierarchy-form-panels";
108
110
  import * as i2 from "@angular/common";
@@ -118,6 +120,7 @@ export class MemberJunctionCoreEntityFormsModule {
118
120
  ReactiveFormsModule,
119
121
  DragDropModule,
120
122
  AgGridModule,
123
+ PSModelDetailComponent,
121
124
  MJEmptyStateComponent,
122
125
  MJAlertComponent,
123
126
  MJTabNavComponent,
@@ -156,6 +159,8 @@ export class MemberJunctionCoreEntityFormsModule {
156
159
  MjFormDialogComponent,
157
160
  SearchModule,
158
161
  RecordProcessEditorComponent,
162
+ FeaturePipelineBuilderComponent,
163
+ RecordProcessHistoryComponent,
159
164
  ResourcePermissionsModule, HIERARCHY_FORM_PANELS, ActionsModule] }); }
160
165
  }
161
166
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MemberJunctionCoreEntityFormsModule, [{
@@ -222,6 +227,7 @@ export class MemberJunctionCoreEntityFormsModule {
222
227
  EntityFormChromeEditorComponent,
223
228
  EntityRelationshipFormRolePanel,
224
229
  MJFileFormComponentExtended,
230
+ MLModelFormComponentExtended,
225
231
  ],
226
232
  imports: [
227
233
  CommonModule,
@@ -229,6 +235,7 @@ export class MemberJunctionCoreEntityFormsModule {
229
235
  ReactiveFormsModule,
230
236
  DragDropModule,
231
237
  AgGridModule,
238
+ PSModelDetailComponent,
232
239
  MJEmptyStateComponent,
233
240
  MJAlertComponent,
234
241
  MJTabNavComponent,
@@ -268,6 +275,8 @@ export class MemberJunctionCoreEntityFormsModule {
268
275
  MjFormDialogComponent,
269
276
  SearchModule,
270
277
  RecordProcessEditorComponent,
278
+ FeaturePipelineBuilderComponent,
279
+ RecordProcessHistoryComponent,
271
280
  ResourcePermissionsModule,
272
281
  ...HIERARCHY_FORM_PANELS
273
282
  ],
@@ -311,7 +320,9 @@ export class MemberJunctionCoreEntityFormsModule {
311
320
  MJAIBridgeAgentIdentityFormComponentExtended,
312
321
  AgentRealtimePanel,
313
322
  ActionsModule,
314
- RecordProcessFormComponentExtended
323
+ RecordProcessFormComponentExtended,
324
+ MLModelFormComponentExtended,
325
+ PSModelDetailComponent
315
326
  ],
316
327
  providers: [
317
328
  NewAgentDialogService,
@@ -378,11 +389,13 @@ export class MemberJunctionCoreEntityFormsModule {
378
389
  RecordProcessFormComponentExtended,
379
390
  EntityFormChromeEditorComponent,
380
391
  EntityRelationshipFormRolePanel,
381
- MJFileFormComponentExtended], imports: [CommonModule,
392
+ MJFileFormComponentExtended,
393
+ MLModelFormComponentExtended], imports: [CommonModule,
382
394
  FormsModule,
383
395
  ReactiveFormsModule,
384
396
  DragDropModule,
385
397
  AgGridModule,
398
+ PSModelDetailComponent,
386
399
  MJEmptyStateComponent,
387
400
  MJAlertComponent,
388
401
  MJTabNavComponent,
@@ -422,6 +435,8 @@ export class MemberJunctionCoreEntityFormsModule {
422
435
  MjFormDialogComponent,
423
436
  SearchModule,
424
437
  RecordProcessEditorComponent,
438
+ FeaturePipelineBuilderComponent,
439
+ RecordProcessHistoryComponent,
425
440
  ResourcePermissionsModule, i1.AIAgentCategoryHierarchyPanel, i1.AIPromptCategoryHierarchyPanel, i1.ActionCategoryHierarchyPanel, i1.DashboardCategoryHierarchyPanel, i1.QueryCategoryHierarchyPanel, i1.TagHierarchyPanel, i1.ProjectHierarchyPanel, i1.ContentItemHierarchyPanel, i1.FileCategoryHierarchyPanel, i1.ListCategoryHierarchyPanel, i1.RecordProcessCategoryHierarchyPanel, i1.SkillHierarchyPanel, i1.TemplateCategoryHierarchyPanel, i1.TestSuiteHierarchyPanel, i1.UserViewCategoryHierarchyPanel], exports: [i1.AIAgentCategoryHierarchyPanel, i1.AIPromptCategoryHierarchyPanel, i1.ActionCategoryHierarchyPanel, i1.DashboardCategoryHierarchyPanel, i1.QueryCategoryHierarchyPanel, i1.TagHierarchyPanel, i1.ProjectHierarchyPanel, i1.ContentItemHierarchyPanel, i1.FileCategoryHierarchyPanel, i1.ListCategoryHierarchyPanel, i1.RecordProcessCategoryHierarchyPanel, i1.SkillHierarchyPanel, i1.TemplateCategoryHierarchyPanel, i1.TestSuiteHierarchyPanel, i1.UserViewCategoryHierarchyPanel, MJEntityFormComponentExtended,
426
441
  MJFileFormComponentExtended,
427
442
  MJEntityActionFormComponentExtended,
@@ -460,7 +475,9 @@ export class MemberJunctionCoreEntityFormsModule {
460
475
  MJAIBridgeAgentIdentityFormComponentExtended,
461
476
  AgentRealtimePanel,
462
477
  ActionsModule,
463
- RecordProcessFormComponentExtended] }); })();
478
+ RecordProcessFormComponentExtended,
479
+ MLModelFormComponentExtended,
480
+ PSModelDetailComponent] }); })();
464
481
  i0.ɵɵsetComponentScope(AIAgentRunTimelineComponent, [i2.NgTemplateOutlet, MJEmptyStateComponent, i3.LoadingComponent, AIAgentRunTimelineComponent,
465
482
  AIAgentRunStepNodeComponent], [i2.AsyncPipe]);
466
483
  //# sourceMappingURL=custom-forms.module.js.map