@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
@@ -1 +1 @@
1
- {"version":3,"file":"searchscope-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/SearchScopes/searchscope-form.component.ts","../../../../src/lib/custom/SearchScopes/searchscope-form.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * Custom SearchScope form (P2D.7 Angular half).\n *\n * Adds a \"Reranker\" custom section that:\n * - Renders a dropdown of registered rerankers — currently a hardcoded list\n * mirroring `BaseReRanker.GetAvailableRerankers()` server-side, with each\n * option's HasCost flag surfaced inline so authors can see at a glance\n * which options will incur API spend.\n * - Reads / writes the current selection from `record.ScopeConfig` JSON's\n * `reRanker.driverClass` key — same path the SearchEngine reads at runtime.\n *\n * **Discovery follow-up:** the canonical source of available rerankers is\n * `BaseReRanker.GetAvailableRerankers()` in `@memberjunction/search-engine`,\n * but that's a Node-only package and can't be imported in the browser.\n * A small GraphQL query (e.g. `AvailableRerankers`) on MJServer that calls\n * the helper server-side would let this dropdown auto-discover any\n * third-party reranker registered with ClassFactory. Tracked as a follow-up\n * — for now the hardcoded list covers the 5 rerankers shipped in Phase 2D.\n *\n * The CodeGen-generated `RerankerBudgetCents` numeric input is already on\n * the form (in the \"Details\" section); we don't need to recreate it.\n * The dropdown above + budget input below give scope authors the full\n * Phase 2D configuration surface.\n */\nimport { Component, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { LogError, RunView } from '@memberjunction/core';\nimport { MJSearchScopeEntity, MJSearchExecutionLogEntityType } from '@memberjunction/core-entities';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { SearchService, SearchResultItem, StreamingProviderStatus } from '@memberjunction/ng-search';\nimport { MJSearchScopeFormComponent } from '../../generated/Entities/MJSearchScope/mjsearchscope.form.component';\n\ninterface FusionWeightRow {\n /** Source-type key the SearchEngine matches against (e.g. 'vector', 'fulltext'). */\n Key: string;\n /** Friendly label for the slider — same value as Key today, kept separate for future i18n. */\n Label: string;\n /** Working value of the slider (1-decimal precision) — bound via two-way. */\n Weight: number;\n}\n\n/**\n * Built-in source types the SearchEngine ships. New 3rd-party provider\n * SourceTypes (e.g. external clusters) won't appear here unless the scope\n * author adds them via the JSON Scope Config block — by design, since the\n * fusion-weights UI is for the four canonical built-ins.\n */\nconst BUILT_IN_SOURCE_TYPES: string[] = ['vector', 'fulltext', 'entity', 'storage'];\n\ninterface RerankerOption {\n DriverClass: string;\n Name: string;\n HasCost: boolean;\n}\n\n/**\n * Hardcoded list mirroring the rerankers `@memberjunction/search-engine`\n * registers with ClassFactory. Update when adding a new built-in reranker\n * or when the GraphQL discovery query lands.\n */\nconst BUILT_IN_RERANKERS: RerankerOption[] = [\n { DriverClass: 'NoopReRanker', Name: 'NoopReRanker (pass-through)', HasCost: false },\n { DriverClass: 'CohereReRanker', Name: 'Cohere (rerank-v3.5)', HasCost: true },\n { DriverClass: 'VoyageReRanker', Name: 'Voyage (rerank-2)', HasCost: true },\n { DriverClass: 'OpenAIReRanker', Name: 'OpenAI (gpt-4o-mini judge)', HasCost: true },\n { DriverClass: 'BGEReRanker', Name: 'BGE (local, free)', HasCost: false },\n];\n\n@RegisterClass(BaseFormComponent, 'MJ: Search Scopes')\n@Component({\n standalone: false,\n selector: 'mj-searchscope-form-extended',\n templateUrl: './searchscope-form.component.html',\n styleUrls: ['./searchscope-form.component.css'],\n})\nexport class MJSearchScopeFormComponentExtended extends MJSearchScopeFormComponent implements OnDestroy {\n public override record!: MJSearchScopeEntity;\n\n public readonly AvailableRerankers: RerankerOption[] = BUILT_IN_RERANKERS;\n\n /** Live-preview state (P4.1). */\n public PreviewQuery = '';\n public PreviewIsRunning = false;\n public PreviewResults: SearchResultItem[] = [];\n public PreviewProviders: StreamingProviderStatus[] = [];\n public PreviewElapsedMs: number | null = null;\n public PreviewError: string | null = null;\n private previewSubscription: Subscription | null = null;\n private searchService = new SearchService();\n\n /**\n * P4.3 — A/B comparison via Kendall-tau between consecutive preview runs.\n * After RunPreview completes, the previous run's RecordIDs are diffed\n * against the current run and the rank-correlation similarity is shown\n * inline (\"82% similar to last run\"). Authors use this to immediately\n * see how much a reranker swap or fusion-weight tweak shifted the ranking.\n */\n private PreviousRunRecordIDs: string[] = [];\n public LastRunSimilarityPercent: number | null = null;\n\n public override ngOnDestroy(): void {\n this.previewSubscription?.unsubscribe();\n this.previewSubscription = null;\n }\n\n /**\n * P4.1 — run a streaming preview against this scope. Uses the same\n * SearchService.StreamSearch path the production search UI uses, scoped\n * to just this scope's ID. Renders progressively as each provider\n * reports back so authors can see chip-by-chip what each tuning change\n * actually affects.\n */\n public RunPreview(): void {\n if (!this.record?.ID || this.PreviewIsRunning) return;\n const query = this.PreviewQuery.trim();\n if (!query) return;\n\n // Tear down any previous run before starting a new one.\n this.previewSubscription?.unsubscribe();\n this.PreviewIsRunning = true;\n this.PreviewResults = [];\n this.PreviewProviders = [];\n this.PreviewElapsedMs = null;\n this.PreviewError = null;\n\n this.previewSubscription = this.searchService.StreamSearch({\n Query: query,\n MaxResults: 25,\n ActiveFilters: {},\n IncludeSources: ['vector', 'fulltext', 'entity', 'storage'],\n ScopeIDs: [this.record.ID],\n }).subscribe({\n next: (event) => {\n if (event.Phase === 'provider' && event.ProviderName) {\n this.PreviewProviders = [\n ...this.PreviewProviders,\n {\n Name: event.ProviderName,\n Count: event.Results?.length ?? 0,\n ElapsedMs: event.ElapsedMs ?? 0,\n State: 'Completed',\n },\n ];\n if (event.Results) {\n this.PreviewResults = [...this.PreviewResults, ...event.Results].sort((a, b) => b.Score - a.Score);\n }\n } else if (event.Phase === 'final' && event.Results) {\n this.PreviewResults = [...event.Results].sort((a, b) => b.Score - a.Score);\n this.PreviewElapsedMs = event.ElapsedMs ?? null;\n }\n },\n error: (err: Error) => {\n this.PreviewError = err.message ?? String(err);\n this.PreviewIsRunning = false;\n },\n complete: () => {\n this.PreviewIsRunning = false;\n // Compute Kendall-tau against the prior run, then capture this\n // run's order as the next baseline.\n const currentIDs = this.PreviewResults.map(r => r.RecordID);\n if (this.PreviousRunRecordIDs.length > 0 && currentIDs.length > 0) {\n const tau = MJSearchScopeFormComponentExtended.kendallTauOnSharedItems(\n this.PreviousRunRecordIDs,\n currentIDs,\n );\n if (tau !== null) {\n // Map [-1, 1] tau onto a [0, 100] \"% similar\" gauge so non-stats\n // authors can read it. -1 (reverse) = 0%, 0 (uncorrelated) = 50%,\n // +1 (identical) = 100%.\n this.LastRunSimilarityPercent = Math.round((tau + 1) * 50);\n }\n }\n this.PreviousRunRecordIDs = currentIDs;\n },\n });\n }\n\n public CancelPreview(): void {\n this.previewSubscription?.unsubscribe();\n this.previewSubscription = null;\n this.PreviewIsRunning = false;\n }\n\n /**\n * Compute Kendall-tau rank correlation on the items present in both lists.\n * Items only in one list are ignored (partial-overlap handling). Returns\n * null when the shared overlap is too small (< 2 items) to be meaningful.\n *\n * Tau formula: (concordant - discordant) / (N * (N-1) / 2)\n * where concordant = pairs ranked in the same order in both lists,\n * discordant = pairs ranked in opposite order, N = shared item count.\n */\n private static kendallTauOnSharedItems(listA: string[], listB: string[]): number | null {\n const rankA = new Map(listA.map((id, i) => [id, i]));\n const rankB = new Map(listB.map((id, i) => [id, i]));\n const shared = listA.filter(id => rankB.has(id));\n const n = shared.length;\n if (n < 2) return null;\n let concordant = 0;\n let discordant = 0;\n for (let i = 0; i < n; i++) {\n for (let j = i + 1; j < n; j++) {\n const a = (rankA.get(shared[i])! - rankA.get(shared[j])!);\n const b = (rankB.get(shared[i])! - rankB.get(shared[j])!);\n const product = a * b;\n if (product > 0) concordant++;\n else if (product < 0) discordant++;\n // Ties (product === 0) ignored — items at same rank\n }\n }\n const totalPairs = (n * (n - 1)) / 2;\n if (totalPairs === 0) return null;\n return (concordant - discordant) / totalPairs;\n }\n\n /**\n * Override the section list to include the new \"Reranker\" section before\n * \"Details\". The generated `initSections()` doesn't know about our custom\n * section so we replace the list. Order matches the template's render order.\n */\n public override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n this.initSections([\n { sectionKey: 'scopeDefinition', sectionName: 'Scope Definition', isExpanded: true },\n { sectionKey: 'scopeConfiguration', sectionName: 'Scope Configuration', isExpanded: true },\n { sectionKey: 'accessControl', sectionName: 'Access Control', isExpanded: false },\n { sectionKey: 'lifecycleManagement', sectionName: 'Lifecycle Management', isExpanded: false },\n { sectionKey: 'technicalConfiguration', sectionName: 'Technical Configuration', isExpanded: false },\n { sectionKey: 'fusionWeights', sectionName: 'Fusion Weights', isExpanded: false },\n { sectionKey: 'reranker', sectionName: 'Reranker', isExpanded: false },\n { sectionKey: 'livePreview', sectionName: 'Live Preview', isExpanded: false },\n { sectionKey: 'details', sectionName: 'Details', isExpanded: false },\n { sectionKey: 'systemMetadata', sectionName: 'System Metadata', isExpanded: false },\n { sectionKey: 'mJSearchScopeTestQueries', sectionName: 'Search Scope Test Queries', isExpanded: false },\n { sectionKey: 'mJSearchScopeStorageAccounts', sectionName: 'Search Scope Storage Accounts', isExpanded: false },\n { sectionKey: 'mJSearchScopeEntities', sectionName: 'Search Scope Entities', isExpanded: false },\n { sectionKey: 'mJSearchScopeExternalIndexes', sectionName: 'Search Scope External Indexes', isExpanded: false },\n { sectionKey: 'mJSearchScopeProviders', sectionName: 'Search Scope Providers', isExpanded: false },\n { sectionKey: 'mJAIAgentSearchScopes', sectionName: 'AI Agent Search Scopes', isExpanded: false },\n { sectionKey: 'mJSearchScopePermissions', sectionName: 'Search Scope Permissions', isExpanded: false },\n ]);\n }\n\n /**\n * Currently-selected reranker driver class, parsed from `record.ScopeConfig`.\n * Empty string means \"no reranker explicitly chosen\" — runtime defaults\n * to NoopReRanker. Stored as `ScopeConfig.reRanker.driverClass`.\n */\n public get SelectedRerankerDriverClass(): string {\n const cfg = this.parseScopeConfig();\n return (cfg?.['reRanker'] as { driverClass?: string } | undefined)?.driverClass ?? '';\n }\n\n public set SelectedRerankerDriverClass(value: string) {\n const cfg = this.parseScopeConfig() ?? {};\n const reRanker = (cfg['reRanker'] as Record<string, unknown> | undefined) ?? {};\n if (value && value.trim().length > 0) {\n reRanker['driverClass'] = value;\n } else {\n delete reRanker['driverClass'];\n }\n cfg['reRanker'] = reRanker;\n this.record.ScopeConfig = JSON.stringify(cfg, null, 2);\n }\n\n /**\n * Whether the currently-selected reranker incurs API cost — used to render\n * an inline cost-warning indicator next to the dropdown.\n */\n public get SelectedRerankerHasCost(): boolean {\n const driver = this.SelectedRerankerDriverClass;\n return BUILT_IN_RERANKERS.find(r => r.DriverClass === driver)?.HasCost ?? false;\n }\n\n /**\n * Whether the CSV export is currently running. Drives the button's disabled\n * state + spinner.\n */\n public IsExportingTuningCsv = false;\n\n /**\n * P4.2 — fusion weight sliders for each canonical SearchEngine source type.\n * Backed by `SearchScope.ScopeConfig.fusionWeights` JSON (the runtime path\n * — see plans/search-scopes-rag-plus/RAG_plan.md §8 Multi-Scope RRF Fusion). Plan task originally\n * proposed `SearchScopeProvider.Weight` but that column doesn't exist in\n * Phase 1; the JSON path is the actual contract the SearchEngine reads.\n */\n private _fusionWeights: FusionWeightRow[] | null = null;\n\n public get FusionWeights(): FusionWeightRow[] {\n if (!this._fusionWeights) {\n const cfg = this.parseScopeConfig();\n const stored = (cfg?.['fusionWeights'] as Record<string, unknown> | undefined) ?? {};\n this._fusionWeights = BUILT_IN_SOURCE_TYPES.map(key => {\n const value = stored[key];\n const weight = typeof value === 'number' && Number.isFinite(value) ? value : 1;\n return { Key: key, Label: key, Weight: weight };\n });\n }\n return this._fusionWeights;\n }\n\n /**\n * Persist a fusion weight change back to `ScopeConfig.fusionWeights`. The\n * caller is the slider's `(change)` event so writes happen only on\n * slide-end, not on every drag tick.\n */\n public OnFusionWeightChanged(row: FusionWeightRow, raw: number | string): void {\n const value = typeof raw === 'number' ? raw : Number(raw);\n if (!Number.isFinite(value)) return;\n row.Weight = value;\n\n const cfg = this.parseScopeConfig() ?? {};\n const weights = (cfg['fusionWeights'] as Record<string, unknown> | undefined) ?? {};\n if (Math.abs(value - 1) < 0.001) {\n // Default value — drop the explicit override so future engine-default\n // changes flow through naturally.\n delete weights[row.Key];\n } else {\n weights[row.Key] = +value.toFixed(2);\n }\n if (Object.keys(weights).length > 0) {\n cfg['fusionWeights'] = weights;\n } else {\n delete cfg['fusionWeights'];\n }\n this.record.ScopeConfig = JSON.stringify(cfg, null, 2);\n }\n\n /**\n * P3.4 — export the last 500 SearchExecutionLog rows for this scope as CSV.\n * Used by scope authors for offline tuning analysis (open in a spreadsheet,\n * pivot by reranker / status / latency, etc.). Filtered to this scope's ID\n * so multi-tenant deployments don't leak other scopes' query history.\n */\n public async ExportTuningCsv(): Promise<void> {\n if (!this.record?.ID || this.IsExportingTuningCsv) return;\n this.IsExportingTuningCsv = true;\n try {\n const rv = new RunView();\n const result = await rv.RunView<MJSearchExecutionLogEntityType>({\n EntityName: 'MJ: Search Execution Logs',\n // Constrain to the columns the CSV writer actually emits — avoids\n // pulling the wider entity (per Section 6.8).\n Fields: [\n '__mj_CreatedAt', 'Status', 'Query', 'ResultCount', 'TotalDurationMs',\n 'RerankerName', 'RerankerCostCents', 'FailureReason', 'UserID', 'AIAgentID',\n ],\n ExtraFilter: `SearchScopeID='${this.record.ID.replace(/'/g, \"''\")}'`,\n OrderBy: '__mj_CreatedAt DESC',\n MaxRows: 500,\n ResultType: 'simple',\n });\n if (!result.Success) {\n LogError(`SearchScope CSV export failed: ${result.ErrorMessage ?? 'unknown error'}`);\n return;\n }\n const rows = (result.Results ?? []) as MJSearchExecutionLogEntityType[];\n this.downloadCsv(rows);\n } finally {\n this.IsExportingTuningCsv = false;\n }\n }\n\n private downloadCsv(rows: MJSearchExecutionLogEntityType[]): void {\n const headers = [\n 'CreatedAt', 'Status', 'Query', 'ResultCount', 'TotalDurationMs',\n 'RerankerName', 'RerankerCostCents', 'FailureReason', 'UserID', 'AIAgentID',\n ];\n const lines = [headers.join(',')];\n for (const r of rows) {\n const cells = [\n this.escapeCsv(String(r.__mj_CreatedAt ?? '')),\n this.escapeCsv(String(r.Status ?? '')),\n this.escapeCsv(String(r.Query ?? '')),\n String(r.ResultCount ?? 0),\n String(r.TotalDurationMs ?? 0),\n this.escapeCsv(String(r.RerankerName ?? '')),\n String(r.RerankerCostCents ?? ''),\n this.escapeCsv(String(r.FailureReason ?? '')),\n String(r.UserID ?? ''),\n String(r.AIAgentID ?? ''),\n ];\n lines.push(cells.join(','));\n }\n const blob = new Blob([lines.join('\\n')], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.setAttribute('href', url);\n const name = (this.record?.Name ?? 'scope').replace(/[^\\w\\-]+/g, '_');\n link.setAttribute('download', `searchscope-tuning-${name}-${new Date().toISOString().split('T')[0]}.csv`);\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n }\n\n private escapeCsv(value: string): string {\n if (value == null) return '';\n // Quote when the value contains a comma, quote, newline, or starts with\n // formula-injection characters. Inside a quoted value, escape inner\n // quotes by doubling.\n if (/[\",\\n\\r]/.test(value) || /^[=+\\-@]/.test(value)) {\n return `\"${value.replace(/\"/g, '\"\"')}\"`;\n }\n return value;\n }\n\n private parseScopeConfig(): Record<string, unknown> | null {\n if (!this.record?.ScopeConfig) return null;\n try {\n const parsed = JSON.parse(this.record.ScopeConfig);\n return (parsed && typeof parsed === 'object') ? parsed as Record<string, unknown> : null;\n } catch {\n return null;\n }\n }\n}\n\nexport function LoadMJSearchScopeFormComponentExtended(): void {\n // Tree-shake prevention; called from custom-forms.module's LoadCoreCustomForms()\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _ref = MJSearchScopeFormComponentExtended;\n}\n","<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <!-- ========================================\n FIELD PANELS\n ======================================== -->\n <!-- Scope Definition Section -->\n <mj-collapsible-panel\n SectionKey=\"scopeDefinition\"\n SectionName=\"Scope Definition\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Name\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Description\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Icon\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Scope Configuration Section -->\n <mj-collapsible-panel\n SectionKey=\"scopeConfiguration\"\n SectionName=\"Scope Configuration\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"IsGlobal\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"IsDefault\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Access Control Section -->\n <mj-collapsible-panel\n SectionKey=\"accessControl\"\n SectionName=\"Access Control\"\n Icon=\"fa fa-lock\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"false\"\n FieldName=\"OwnerUserID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Lifecycle Management Section -->\n <mj-collapsible-panel\n SectionKey=\"lifecycleManagement\"\n SectionName=\"Lifecycle Management\"\n Icon=\"fa fa-clock\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Status\"\n Type=\"select\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"StartAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EndAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Technical Configuration Section -->\n <mj-collapsible-panel\n SectionKey=\"technicalConfiguration\"\n SectionName=\"Technical Configuration\"\n Icon=\"fa fa-code\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ScopeConfig\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"SearchContextConfig\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Fusion Weights Section (custom — P4.2).\n Sliders for each canonical SearchEngine source type, backed by\n SearchScope.ScopeConfig.fusionWeights JSON. Weights >1 amplify a\n provider's contribution; weights <1 dampen it. Default 1 = engine\n default (no override). Plan-doc estimated SearchScopeProvider.Weight\n but that column doesn't exist; the JSON path is the actual contract\n the SearchEngine reads. -->\n <mj-collapsible-panel\n SectionKey=\"fusionWeights\"\n SectionName=\"Fusion Weights\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"fusion-weights\">\n @for (row of FusionWeights; track row.Key) {\n <div class=\"fusion-weight-row\">\n <span class=\"fusion-weight-label\">{{ row.Label }}</span>\n <input\n class=\"fusion-weight-slider\"\n type=\"range\"\n min=\"0\"\n max=\"5\"\n step=\"0.1\"\n [disabled]=\"!EditMode\"\n [value]=\"row.Weight\"\n (change)=\"OnFusionWeightChanged(row, $any($event.target).valueAsNumber)\" />\n <span class=\"fusion-weight-value\">{{ row.Weight | number:'1.1-1' }}</span>\n </div>\n }\n <p class=\"fusion-weights-help\">\n Drag a slider to update <code>ScopeConfig.fusionWeights</code>. Default 1.0 means \"use engine default\";\n values are persisted on form save.\n </p>\n </div>\n </mj-collapsible-panel>\n\n <!-- Reranker Section (custom — P2D.7 Angular half).\n Dropdown writes the choice into ScopeConfig JSON's reRanker.driverClass —\n the same path SearchEngine reads at runtime via pickReRankerConfig().\n RerankerBudgetCents is rendered here too so the cost-cap input lives\n right next to the cost-incurring choice. -->\n <mj-collapsible-panel\n SectionKey=\"reranker\"\n SectionName=\"Reranker\"\n Icon=\"fa fa-sort-amount-down\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"reranker-config\">\n <label class=\"reranker-config-label\">Reranker driver class</label>\n <select\n class=\"mj-input reranker-driver-select\"\n [disabled]=\"!EditMode\"\n [ngModel]=\"SelectedRerankerDriverClass\"\n (ngModelChange)=\"SelectedRerankerDriverClass = $event\">\n <option value=\"\">— None (use NoopReRanker) —</option>\n @for (option of AvailableRerankers; track option.DriverClass) {\n <option [value]=\"option.DriverClass\">\n {{ option.Name }}{{ option.HasCost ? ' — paid' : ' — free' }}\n </option>\n }\n </select>\n @if (SelectedRerankerHasCost) {\n <p class=\"reranker-cost-hint\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n This reranker incurs API cost per search. Set\n <strong>RerankerBudgetCents</strong> below to cap spend per invocation.\n </p>\n }\n <p class=\"reranker-help-hint\">\n Stored on <code>ScopeConfig.reRanker.driverClass</code> — the SearchEngine reads this at runtime.\n Leave blank to use the pass-through default.\n </p>\n\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"RerankerBudgetCents\"\n Type=\"number\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n <!-- P3.4 — per-scope tuning CSV export.\n Pulls the last 500 rows from MJ: Search Execution Logs filtered\n to this scope's ID and downloads as CSV for offline analysis. -->\n <div class=\"reranker-export-row\">\n <button class=\"reranker-export-btn\"\n type=\"button\"\n [disabled]=\"!record?.ID || IsExportingTuningCsv\"\n (click)=\"ExportTuningCsv()\">\n @if (IsExportingTuningCsv) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Exporting…</span>\n } @else {\n <i class=\"fa-solid fa-download\"></i>\n <span>Export tuning data (CSV)</span>\n }\n </button>\n <span class=\"reranker-export-hint\">Last 500 search invocations against this scope.</span>\n </div>\n </div>\n </mj-collapsible-panel>\n\n <!-- Live Preview Section (custom — P4.1).\n Streaming search against this scope, rendered with chip-strip + result\n list so authors can see how each tuning change (reranker, fusion\n weights, scope template) affects the actual ranked output. -->\n <mj-collapsible-panel\n SectionKey=\"livePreview\"\n SectionName=\"Live Preview\"\n Icon=\"fa fa-flask\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"live-preview\">\n <div class=\"live-preview-input-row\">\n <input\n class=\"mj-input live-preview-input\"\n type=\"text\"\n placeholder=\"Type a sample query and press Run…\"\n [disabled]=\"!record?.ID || PreviewIsRunning\"\n [value]=\"PreviewQuery\"\n (input)=\"PreviewQuery = $any($event.target).value\"\n (keydown.enter)=\"RunPreview()\" />\n @if (!PreviewIsRunning) {\n <button class=\"live-preview-btn\"\n type=\"button\"\n [disabled]=\"!record?.ID || !PreviewQuery.trim()\"\n (click)=\"RunPreview()\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n } @else {\n <button class=\"live-preview-btn live-preview-btn-cancel\"\n type=\"button\"\n (click)=\"CancelPreview()\">\n <i class=\"fa-solid fa-stop\"></i> Cancel\n </button>\n }\n </div>\n\n @if (PreviewError) {\n <p class=\"live-preview-error\">\n <i class=\"fa-solid fa-circle-exclamation\"></i> {{ PreviewError }}\n </p>\n }\n\n @if (PreviewIsRunning || PreviewProviders.length > 0) {\n <div class=\"live-preview-chips\">\n @if (PreviewIsRunning && PreviewProviders.length === 0) {\n <span class=\"live-preview-chip live-preview-chip-pending\">\n <i class=\"fa-solid fa-circle-notch fa-spin\"></i> Streaming…\n </span>\n }\n @for (p of PreviewProviders; track p.Name) {\n <span class=\"live-preview-chip live-preview-chip-completed\">\n <i class=\"fa-solid fa-check\"></i>\n <strong>{{ p.Name }}</strong>\n <span class=\"live-preview-chip-count\">{{ p.Count }}</span>\n <span class=\"live-preview-chip-time\">{{ p.ElapsedMs }}ms</span>\n </span>\n }\n </div>\n }\n\n @if (PreviewResults.length > 0) {\n <div class=\"live-preview-results\">\n <div class=\"live-preview-results-header\">\n {{ PreviewResults.length }} result(s)\n @if (PreviewElapsedMs !== null) { in {{ PreviewElapsedMs }}ms }\n @if (LastRunSimilarityPercent !== null) {\n <span class=\"live-preview-similarity\"\n [class.live-preview-similarity-low]=\"LastRunSimilarityPercent < 70\"\n title=\"Kendall-tau rank correlation against the previous run, mapped to [0%, 100%].\">\n · {{ LastRunSimilarityPercent }}% similar to last run\n </span>\n }\n </div>\n @for (r of PreviewResults; track r.ID; let i = $index) {\n @if (i < 10) {\n <div class=\"live-preview-result\">\n <span class=\"live-preview-result-score\">{{ (r.Score * 100) | number:'1.0-0' }}%</span>\n <span class=\"live-preview-result-title\">{{ r.Title }}</span>\n <span class=\"live-preview-result-entity\">{{ r.EntityName }}</span>\n </div>\n }\n }\n @if (PreviewResults.length > 10) {\n <p class=\"live-preview-truncated\">…and {{ PreviewResults.length - 10 }} more (preview shows top 10).</p>\n }\n </div>\n }\n </div>\n </mj-collapsible-panel>\n\n <!-- Details Section (kept empty — RerankerBudgetCents now lives in the\n Reranker section above where it semantically belongs) -->\n <mj-collapsible-panel\n SectionKey=\"details\"\n SectionName=\"Details\"\n Icon=\"fa fa-align-left\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n </mj-collapsible-panel>\n\n <!-- System Metadata Section -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- ========================================\n RELATED ENTITY PANELS\n ======================================== -->\n\n <!-- Search Scope Test Queries Section (P4.4) — canonical test queries for\n offline tuning. Authors save representative queries here, re-run them\n after a config change, and compare results. -->\n <mj-collapsible-panel\n SectionKey=\"mJSearchScopeTestQueries\"\n SectionName=\"Search Scope Test Queries\"\n Icon=\"fa fa-table\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJSearchScopeTestQueries')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Search Scope Test Queries','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Search Scope Test Queries')\"\n [AllowLoad]=\"IsSectionExpanded('mJSearchScopeTestQueries')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJSearchScopeTestQueries', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Search Scope Storage Accounts Section -->\n <mj-collapsible-panel\n SectionKey=\"mJSearchScopeStorageAccounts\"\n SectionName=\"Search Scope Storage Accounts\"\n Icon=\"fa fa-folder-open\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJSearchScopeStorageAccounts')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Search Scope Storage Accounts','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Search Scope Storage Accounts')\"\n [AllowLoad]=\"IsSectionExpanded('mJSearchScopeStorageAccounts')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJSearchScopeStorageAccounts', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Search Scope Entities Section -->\n <mj-collapsible-panel\n SectionKey=\"mJSearchScopeEntities\"\n SectionName=\"Search Scope Entities\"\n Icon=\"fa fa-search\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJSearchScopeEntities')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Search Scope Entities','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Search Scope Entities')\"\n [AllowLoad]=\"IsSectionExpanded('mJSearchScopeEntities')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJSearchScopeEntities', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Search Scope External Indexes Section -->\n <mj-collapsible-panel\n SectionKey=\"mJSearchScopeExternalIndexes\"\n SectionName=\"Search Scope External Indexes\"\n Icon=\"fa fa-search-plus\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJSearchScopeExternalIndexes')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Search Scope External Indexes','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Search Scope External Indexes')\"\n [AllowLoad]=\"IsSectionExpanded('mJSearchScopeExternalIndexes')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJSearchScopeExternalIndexes', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Search Scope Providers Section -->\n <mj-collapsible-panel\n SectionKey=\"mJSearchScopeProviders\"\n SectionName=\"Search Scope Providers\"\n Icon=\"fa fa-search-plus\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJSearchScopeProviders')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Search Scope Providers','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Search Scope Providers')\"\n [AllowLoad]=\"IsSectionExpanded('mJSearchScopeProviders')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJSearchScopeProviders', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- AI Agent Search Scopes Section -->\n <mj-collapsible-panel\n SectionKey=\"mJAIAgentSearchScopes\"\n SectionName=\"AI Agent Search Scopes\"\n Icon=\"fa fa-search-plus\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIAgentSearchScopes')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Search Scopes','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Search Scopes')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIAgentSearchScopes')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIAgentSearchScopes', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Search Scope Permissions Section -->\n <mj-collapsible-panel\n SectionKey=\"mJSearchScopePermissions\"\n SectionName=\"Search Scope Permissions\"\n Icon=\"fa fa-table\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJSearchScopePermissions')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Search Scope Permissions','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Search Scope Permissions')\"\n [AllowLoad]=\"IsSectionExpanded('mJSearchScopePermissions')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJSearchScopePermissions', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Search Execution Logs Section -->\n <mj-collapsible-panel\n SectionKey=\"mJSearchExecutionLogs\"\n SectionName=\"Search Execution Logs\"\n Icon=\"fa fa-table\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJSearchExecutionLogs')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Search Execution Logs','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Search Execution Logs')\"\n [AllowLoad]=\"IsSectionExpanded('mJSearchExecutionLogs')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJSearchExecutionLogs', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n</mj-record-form-container>\n "]}
1
+ {"version":3,"file":"searchscope-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/SearchScopes/searchscope-form.component.ts","../../../../src/lib/custom/SearchScopes/searchscope-form.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * Custom SearchScope form (P2D.7 Angular half).\n *\n * Adds a \"Reranker\" custom section that:\n * - Renders a dropdown of registered rerankers — currently a hardcoded list\n * mirroring `BaseReRanker.GetAvailableRerankers()` server-side, with each\n * option's HasCost flag surfaced inline so authors can see at a glance\n * which options will incur API spend.\n * - Reads / writes the current selection from `record.ScopeConfig` JSON's\n * `reRanker.driverClass` key — same path the SearchEngine reads at runtime.\n *\n * **Discovery follow-up:** the canonical source of available rerankers is\n * `BaseReRanker.GetAvailableRerankers()` in `@memberjunction/search-engine`,\n * but that's a Node-only package and can't be imported in the browser.\n * A small GraphQL query (e.g. `AvailableRerankers`) on MJServer that calls\n * the helper server-side would let this dropdown auto-discover any\n * third-party reranker registered with ClassFactory. Tracked as a follow-up\n * — for now the hardcoded list covers the 5 rerankers shipped in Phase 2D.\n *\n * The CodeGen-generated `RerankerBudgetCents` numeric input is already on\n * the form (in the \"Details\" section); we don't need to recreate it.\n * The dropdown above + budget input below give scope authors the full\n * Phase 2D configuration surface.\n */\nimport { Component, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { LogError, RunView } from '@memberjunction/core';\nimport { MJSearchScopeEntity, MJSearchExecutionLogEntityType } from '@memberjunction/core-entities';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { SearchService, SearchResultItem, StreamingProviderStatus } from '@memberjunction/ng-search';\nimport { MJSearchScopeFormComponent } from '../../generated/Entities/MJSearchScope/mjsearchscope.form.component';\n\ninterface FusionWeightRow {\n /** Source-type key the SearchEngine matches against (e.g. 'vector', 'fulltext'). */\n Key: string;\n /** Friendly label for the slider — same value as Key today, kept separate for future i18n. */\n Label: string;\n /** Working value of the slider (1-decimal precision) — bound via two-way. */\n Weight: number;\n}\n\n/**\n * Built-in source types the SearchEngine ships. New 3rd-party provider\n * SourceTypes (e.g. external clusters) won't appear here unless the scope\n * author adds them via the JSON Scope Config block — by design, since the\n * fusion-weights UI is for the four canonical built-ins.\n */\nconst BUILT_IN_SOURCE_TYPES: string[] = ['vector', 'fulltext', 'entity', 'storage'];\n\ninterface RerankerOption {\n DriverClass: string;\n Name: string;\n HasCost: boolean;\n}\n\n/**\n * Hardcoded list mirroring the rerankers `@memberjunction/search-engine`\n * registers with ClassFactory. Update when adding a new built-in reranker\n * or when the GraphQL discovery query lands.\n */\nconst BUILT_IN_RERANKERS: RerankerOption[] = [\n { DriverClass: 'NoopReRanker', Name: 'NoopReRanker (pass-through)', HasCost: false },\n { DriverClass: 'CohereReRanker', Name: 'Cohere (rerank-v3.5)', HasCost: true },\n { DriverClass: 'VoyageReRanker', Name: 'Voyage (rerank-2)', HasCost: true },\n { DriverClass: 'OpenAIReRanker', Name: 'OpenAI (gpt-4o-mini judge)', HasCost: true },\n { DriverClass: 'BGEReRanker', Name: 'BGE (local, free)', HasCost: false },\n];\n\n@RegisterClass(BaseFormComponent, 'MJ: Search Scopes')\n@Component({\n standalone: false,\n selector: 'mj-searchscope-form-extended',\n templateUrl: './searchscope-form.component.html',\n styleUrls: ['./searchscope-form.component.css'],\n})\nexport class MJSearchScopeFormComponentExtended extends MJSearchScopeFormComponent implements OnDestroy {\n public override record!: MJSearchScopeEntity;\n\n public readonly AvailableRerankers: RerankerOption[] = BUILT_IN_RERANKERS;\n\n /** Live-preview state (P4.1). */\n public PreviewQuery = '';\n public PreviewIsRunning = false;\n public PreviewResults: SearchResultItem[] = [];\n public PreviewProviders: StreamingProviderStatus[] = [];\n public PreviewElapsedMs: number | null = null;\n public PreviewError: string | null = null;\n private previewSubscription: Subscription | null = null;\n private searchService = new SearchService();\n\n /**\n * P4.3 — A/B comparison via Kendall-tau between consecutive preview runs.\n * After RunPreview completes, the previous run's RecordIDs are diffed\n * against the current run and the rank-correlation similarity is shown\n * inline (\"82% similar to last run\"). Authors use this to immediately\n * see how much a reranker swap or fusion-weight tweak shifted the ranking.\n */\n private previousRunRecordIDs: string[] = [];\n public LastRunSimilarityPercent: number | null = null;\n\n public override ngOnDestroy(): void {\n this.previewSubscription?.unsubscribe();\n this.previewSubscription = null;\n }\n\n /**\n * P4.1 — run a streaming preview against this scope. Uses the same\n * SearchService.StreamSearch path the production search UI uses, scoped\n * to just this scope's ID. Renders progressively as each provider\n * reports back so authors can see chip-by-chip what each tuning change\n * actually affects.\n */\n public RunPreview(): void {\n if (!this.record?.ID || this.PreviewIsRunning) return;\n const query = this.PreviewQuery.trim();\n if (!query) return;\n\n // Tear down any previous run before starting a new one.\n this.previewSubscription?.unsubscribe();\n this.PreviewIsRunning = true;\n this.PreviewResults = [];\n this.PreviewProviders = [];\n this.PreviewElapsedMs = null;\n this.PreviewError = null;\n\n this.previewSubscription = this.searchService.StreamSearch({\n Query: query,\n MaxResults: 25,\n ActiveFilters: {},\n IncludeSources: ['vector', 'fulltext', 'entity', 'storage'],\n ScopeIDs: [this.record.ID],\n }).subscribe({\n next: (event) => {\n if (event.Phase === 'provider' && event.ProviderName) {\n this.PreviewProviders = [\n ...this.PreviewProviders,\n {\n Name: event.ProviderName,\n Count: event.Results?.length ?? 0,\n ElapsedMs: event.ElapsedMs ?? 0,\n State: 'Completed',\n },\n ];\n if (event.Results) {\n this.PreviewResults = [...this.PreviewResults, ...event.Results].sort((a, b) => b.Score - a.Score);\n }\n } else if (event.Phase === 'final' && event.Results) {\n this.PreviewResults = [...event.Results].sort((a, b) => b.Score - a.Score);\n this.PreviewElapsedMs = event.ElapsedMs ?? null;\n }\n },\n error: (err: Error) => {\n this.PreviewError = err.message ?? String(err);\n this.PreviewIsRunning = false;\n },\n complete: () => {\n this.PreviewIsRunning = false;\n // Compute Kendall-tau against the prior run, then capture this\n // run's order as the next baseline.\n const currentIDs = this.PreviewResults.map(r => r.RecordID);\n if (this.previousRunRecordIDs.length > 0 && currentIDs.length > 0) {\n const tau = MJSearchScopeFormComponentExtended.kendallTauOnSharedItems(\n this.previousRunRecordIDs,\n currentIDs,\n );\n if (tau !== null) {\n // Map [-1, 1] tau onto a [0, 100] \"% similar\" gauge so non-stats\n // authors can read it. -1 (reverse) = 0%, 0 (uncorrelated) = 50%,\n // +1 (identical) = 100%.\n this.LastRunSimilarityPercent = Math.round((tau + 1) * 50);\n }\n }\n this.previousRunRecordIDs = currentIDs;\n },\n });\n }\n\n public CancelPreview(): void {\n this.previewSubscription?.unsubscribe();\n this.previewSubscription = null;\n this.PreviewIsRunning = false;\n }\n\n /**\n * Compute Kendall-tau rank correlation on the items present in both lists.\n * Items only in one list are ignored (partial-overlap handling). Returns\n * null when the shared overlap is too small (< 2 items) to be meaningful.\n *\n * Tau formula: (concordant - discordant) / (N * (N-1) / 2)\n * where concordant = pairs ranked in the same order in both lists,\n * discordant = pairs ranked in opposite order, N = shared item count.\n */\n private static kendallTauOnSharedItems(listA: string[], listB: string[]): number | null {\n const rankA = new Map(listA.map((id, i) => [id, i]));\n const rankB = new Map(listB.map((id, i) => [id, i]));\n const shared = listA.filter(id => rankB.has(id));\n const n = shared.length;\n if (n < 2) return null;\n let concordant = 0;\n let discordant = 0;\n for (let i = 0; i < n; i++) {\n for (let j = i + 1; j < n; j++) {\n const a = (rankA.get(shared[i])! - rankA.get(shared[j])!);\n const b = (rankB.get(shared[i])! - rankB.get(shared[j])!);\n const product = a * b;\n if (product > 0) concordant++;\n else if (product < 0) discordant++;\n // Ties (product === 0) ignored — items at same rank\n }\n }\n const totalPairs = (n * (n - 1)) / 2;\n if (totalPairs === 0) return null;\n return (concordant - discordant) / totalPairs;\n }\n\n /**\n * Override the section list to include the new \"Reranker\" section before\n * \"Details\". The generated `initSections()` doesn't know about our custom\n * section so we replace the list. Order matches the template's render order.\n */\n public override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n this.initSections([\n { sectionKey: 'scopeDefinition', sectionName: 'Scope Definition', isExpanded: true },\n { sectionKey: 'scopeConfiguration', sectionName: 'Scope Configuration', isExpanded: true },\n { sectionKey: 'accessControl', sectionName: 'Access Control', isExpanded: false },\n { sectionKey: 'lifecycleManagement', sectionName: 'Lifecycle Management', isExpanded: false },\n { sectionKey: 'technicalConfiguration', sectionName: 'Technical Configuration', isExpanded: false },\n { sectionKey: 'fusionWeights', sectionName: 'Fusion Weights', isExpanded: false },\n { sectionKey: 'reranker', sectionName: 'Reranker', isExpanded: false },\n { sectionKey: 'livePreview', sectionName: 'Live Preview', isExpanded: false },\n { sectionKey: 'details', sectionName: 'Details', isExpanded: false },\n { sectionKey: 'systemMetadata', sectionName: 'System Metadata', isExpanded: false },\n { sectionKey: 'mJSearchScopeTestQueries', sectionName: 'Search Scope Test Queries', isExpanded: false },\n { sectionKey: 'mJSearchScopeStorageAccounts', sectionName: 'Search Scope Storage Accounts', isExpanded: false },\n { sectionKey: 'mJSearchScopeEntities', sectionName: 'Search Scope Entities', isExpanded: false },\n { sectionKey: 'mJSearchScopeExternalIndexes', sectionName: 'Search Scope External Indexes', isExpanded: false },\n { sectionKey: 'mJSearchScopeProviders', sectionName: 'Search Scope Providers', isExpanded: false },\n { sectionKey: 'mJAIAgentSearchScopes', sectionName: 'AI Agent Search Scopes', isExpanded: false },\n { sectionKey: 'mJSearchScopePermissions', sectionName: 'Search Scope Permissions', isExpanded: false },\n ]);\n }\n\n /**\n * Currently-selected reranker driver class, parsed from `record.ScopeConfig`.\n * Empty string means \"no reranker explicitly chosen\" — runtime defaults\n * to NoopReRanker. Stored as `ScopeConfig.reRanker.driverClass`.\n */\n public get SelectedRerankerDriverClass(): string {\n const cfg = this.parseScopeConfig();\n return (cfg?.['reRanker'] as { driverClass?: string } | undefined)?.driverClass ?? '';\n }\n\n public set SelectedRerankerDriverClass(value: string) {\n const cfg = this.parseScopeConfig() ?? {};\n const reRanker = (cfg['reRanker'] as Record<string, unknown> | undefined) ?? {};\n if (value && value.trim().length > 0) {\n reRanker['driverClass'] = value;\n } else {\n delete reRanker['driverClass'];\n }\n cfg['reRanker'] = reRanker;\n this.record.ScopeConfig = JSON.stringify(cfg, null, 2);\n }\n\n /**\n * Whether the currently-selected reranker incurs API cost — used to render\n * an inline cost-warning indicator next to the dropdown.\n */\n public get SelectedRerankerHasCost(): boolean {\n const driver = this.SelectedRerankerDriverClass;\n return BUILT_IN_RERANKERS.find(r => r.DriverClass === driver)?.HasCost ?? false;\n }\n\n /**\n * Whether the CSV export is currently running. Drives the button's disabled\n * state + spinner.\n */\n public IsExportingTuningCsv = false;\n\n /**\n * P4.2 — fusion weight sliders for each canonical SearchEngine source type.\n * Backed by `SearchScope.ScopeConfig.fusionWeights` JSON (the runtime path\n * — see plans/search-scopes-rag-plus/RAG_plan.md §8 Multi-Scope RRF Fusion). Plan task originally\n * proposed `SearchScopeProvider.Weight` but that column doesn't exist in\n * Phase 1; the JSON path is the actual contract the SearchEngine reads.\n */\n private _fusionWeights: FusionWeightRow[] | null = null;\n\n public get FusionWeights(): FusionWeightRow[] {\n if (!this._fusionWeights) {\n const cfg = this.parseScopeConfig();\n const stored = (cfg?.['fusionWeights'] as Record<string, unknown> | undefined) ?? {};\n this._fusionWeights = BUILT_IN_SOURCE_TYPES.map(key => {\n const value = stored[key];\n const weight = typeof value === 'number' && Number.isFinite(value) ? value : 1;\n return { Key: key, Label: key, Weight: weight };\n });\n }\n return this._fusionWeights;\n }\n\n /**\n * Persist a fusion weight change back to `ScopeConfig.fusionWeights`. The\n * caller is the slider's `(change)` event so writes happen only on\n * slide-end, not on every drag tick.\n */\n public OnFusionWeightChanged(row: FusionWeightRow, raw: number | string): void {\n const value = typeof raw === 'number' ? raw : Number(raw);\n if (!Number.isFinite(value)) return;\n row.Weight = value;\n\n const cfg = this.parseScopeConfig() ?? {};\n const weights = (cfg['fusionWeights'] as Record<string, unknown> | undefined) ?? {};\n if (Math.abs(value - 1) < 0.001) {\n // Default value — drop the explicit override so future engine-default\n // changes flow through naturally.\n delete weights[row.Key];\n } else {\n weights[row.Key] = +value.toFixed(2);\n }\n if (Object.keys(weights).length > 0) {\n cfg['fusionWeights'] = weights;\n } else {\n delete cfg['fusionWeights'];\n }\n this.record.ScopeConfig = JSON.stringify(cfg, null, 2);\n }\n\n /**\n * P3.4 — export the last 500 SearchExecutionLog rows for this scope as CSV.\n * Used by scope authors for offline tuning analysis (open in a spreadsheet,\n * pivot by reranker / status / latency, etc.). Filtered to this scope's ID\n * so multi-tenant deployments don't leak other scopes' query history.\n */\n public async ExportTuningCsv(): Promise<void> {\n if (!this.record?.ID || this.IsExportingTuningCsv) return;\n this.IsExportingTuningCsv = true;\n try {\n const rv = new RunView();\n const result = await rv.RunView<MJSearchExecutionLogEntityType>({\n EntityName: 'MJ: Search Execution Logs',\n // Constrain to the columns the CSV writer actually emits — avoids\n // pulling the wider entity (per Section 6.8).\n Fields: [\n '__mj_CreatedAt', 'Status', 'Query', 'ResultCount', 'TotalDurationMs',\n 'RerankerName', 'RerankerCostCents', 'FailureReason', 'UserID', 'AIAgentID',\n ],\n ExtraFilter: `SearchScopeID='${this.record.ID.replace(/'/g, \"''\")}'`,\n OrderBy: '__mj_CreatedAt DESC',\n MaxRows: 500,\n ResultType: 'simple',\n });\n if (!result.Success) {\n LogError(`SearchScope CSV export failed: ${result.ErrorMessage ?? 'unknown error'}`);\n return;\n }\n const rows = (result.Results ?? []) as MJSearchExecutionLogEntityType[];\n this.downloadCsv(rows);\n } finally {\n this.IsExportingTuningCsv = false;\n }\n }\n\n private downloadCsv(rows: MJSearchExecutionLogEntityType[]): void {\n const headers = [\n 'CreatedAt', 'Status', 'Query', 'ResultCount', 'TotalDurationMs',\n 'RerankerName', 'RerankerCostCents', 'FailureReason', 'UserID', 'AIAgentID',\n ];\n const lines = [headers.join(',')];\n for (const r of rows) {\n const cells = [\n this.escapeCsv(String(r.__mj_CreatedAt ?? '')),\n this.escapeCsv(String(r.Status ?? '')),\n this.escapeCsv(String(r.Query ?? '')),\n String(r.ResultCount ?? 0),\n String(r.TotalDurationMs ?? 0),\n this.escapeCsv(String(r.RerankerName ?? '')),\n String(r.RerankerCostCents ?? ''),\n this.escapeCsv(String(r.FailureReason ?? '')),\n String(r.UserID ?? ''),\n String(r.AIAgentID ?? ''),\n ];\n lines.push(cells.join(','));\n }\n const blob = new Blob([lines.join('\\n')], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.setAttribute('href', url);\n const name = (this.record?.Name ?? 'scope').replace(/[^\\w\\-]+/g, '_');\n link.setAttribute('download', `searchscope-tuning-${name}-${new Date().toISOString().split('T')[0]}.csv`);\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n }\n\n private escapeCsv(value: string): string {\n if (value == null) return '';\n // Quote when the value contains a comma, quote, newline, or starts with\n // formula-injection characters. Inside a quoted value, escape inner\n // quotes by doubling.\n if (/[\",\\n\\r]/.test(value) || /^[=+\\-@]/.test(value)) {\n return `\"${value.replace(/\"/g, '\"\"')}\"`;\n }\n return value;\n }\n\n private parseScopeConfig(): Record<string, unknown> | null {\n if (!this.record?.ScopeConfig) return null;\n try {\n const parsed = JSON.parse(this.record.ScopeConfig);\n return (parsed && typeof parsed === 'object') ? parsed as Record<string, unknown> : null;\n } catch {\n return null;\n }\n }\n}\n\nexport function LoadMJSearchScopeFormComponentExtended(): void {\n // Tree-shake prevention; called from custom-forms.module's LoadCoreCustomForms()\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _ref = MJSearchScopeFormComponentExtended;\n}\n","<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <!-- ========================================\n FIELD PANELS\n ======================================== -->\n <!-- Scope Definition Section -->\n <mj-collapsible-panel\n SectionKey=\"scopeDefinition\"\n SectionName=\"Scope Definition\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Name\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Description\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Icon\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Scope Configuration Section -->\n <mj-collapsible-panel\n SectionKey=\"scopeConfiguration\"\n SectionName=\"Scope Configuration\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"IsGlobal\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"IsDefault\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Access Control Section -->\n <mj-collapsible-panel\n SectionKey=\"accessControl\"\n SectionName=\"Access Control\"\n Icon=\"fa fa-lock\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"false\"\n FieldName=\"OwnerUserID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Lifecycle Management Section -->\n <mj-collapsible-panel\n SectionKey=\"lifecycleManagement\"\n SectionName=\"Lifecycle Management\"\n Icon=\"fa fa-clock\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Status\"\n Type=\"select\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"StartAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EndAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Technical Configuration Section -->\n <mj-collapsible-panel\n SectionKey=\"technicalConfiguration\"\n SectionName=\"Technical Configuration\"\n Icon=\"fa fa-code\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ScopeConfig\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"SearchContextConfig\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Fusion Weights Section (custom — P4.2).\n Sliders for each canonical SearchEngine source type, backed by\n SearchScope.ScopeConfig.fusionWeights JSON. Weights >1 amplify a\n provider's contribution; weights <1 dampen it. Default 1 = engine\n default (no override). Plan-doc estimated SearchScopeProvider.Weight\n but that column doesn't exist; the JSON path is the actual contract\n the SearchEngine reads. -->\n <mj-collapsible-panel\n SectionKey=\"fusionWeights\"\n SectionName=\"Fusion Weights\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"fusion-weights\">\n @for (row of FusionWeights; track row.Key) {\n <div class=\"fusion-weight-row\">\n <span class=\"fusion-weight-label\">{{ row.Label }}</span>\n <input\n class=\"fusion-weight-slider\"\n type=\"range\"\n min=\"0\"\n max=\"5\"\n step=\"0.1\"\n [disabled]=\"!EditMode\"\n [value]=\"row.Weight\"\n (change)=\"OnFusionWeightChanged(row, $any($event.target).valueAsNumber)\" />\n <span class=\"fusion-weight-value\">{{ row.Weight | number:'1.1-1' }}</span>\n </div>\n }\n <p class=\"fusion-weights-help\">\n Drag a slider to update <code>ScopeConfig.fusionWeights</code>. Default 1.0 means \"use engine default\";\n values are persisted on form save.\n </p>\n </div>\n </mj-collapsible-panel>\n\n <!-- Reranker Section (custom — P2D.7 Angular half).\n Dropdown writes the choice into ScopeConfig JSON's reRanker.driverClass —\n the same path SearchEngine reads at runtime via pickReRankerConfig().\n RerankerBudgetCents is rendered here too so the cost-cap input lives\n right next to the cost-incurring choice. -->\n <mj-collapsible-panel\n SectionKey=\"reranker\"\n SectionName=\"Reranker\"\n Icon=\"fa fa-sort-amount-down\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"reranker-config\">\n <label class=\"reranker-config-label\">Reranker driver class</label>\n <select\n class=\"mj-input reranker-driver-select\"\n [disabled]=\"!EditMode\"\n [ngModel]=\"SelectedRerankerDriverClass\"\n (ngModelChange)=\"SelectedRerankerDriverClass = $event\">\n <option value=\"\">— None (use NoopReRanker) —</option>\n @for (option of AvailableRerankers; track option.DriverClass) {\n <option [value]=\"option.DriverClass\">\n {{ option.Name }}{{ option.HasCost ? ' — paid' : ' — free' }}\n </option>\n }\n </select>\n @if (SelectedRerankerHasCost) {\n <p class=\"reranker-cost-hint\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n This reranker incurs API cost per search. Set\n <strong>RerankerBudgetCents</strong> below to cap spend per invocation.\n </p>\n }\n <p class=\"reranker-help-hint\">\n Stored on <code>ScopeConfig.reRanker.driverClass</code> — the SearchEngine reads this at runtime.\n Leave blank to use the pass-through default.\n </p>\n\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"RerankerBudgetCents\"\n Type=\"number\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n <!-- P3.4 — per-scope tuning CSV export.\n Pulls the last 500 rows from MJ: Search Execution Logs filtered\n to this scope's ID and downloads as CSV for offline analysis. -->\n <div class=\"reranker-export-row\">\n <button class=\"reranker-export-btn\"\n type=\"button\"\n [disabled]=\"!record?.ID || IsExportingTuningCsv\"\n (click)=\"ExportTuningCsv()\">\n @if (IsExportingTuningCsv) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Exporting…</span>\n } @else {\n <i class=\"fa-solid fa-download\"></i>\n <span>Export tuning data (CSV)</span>\n }\n </button>\n <span class=\"reranker-export-hint\">Last 500 search invocations against this scope.</span>\n </div>\n </div>\n </mj-collapsible-panel>\n\n <!-- Live Preview Section (custom — P4.1).\n Streaming search against this scope, rendered with chip-strip + result\n list so authors can see how each tuning change (reranker, fusion\n weights, scope template) affects the actual ranked output. -->\n <mj-collapsible-panel\n SectionKey=\"livePreview\"\n SectionName=\"Live Preview\"\n Icon=\"fa fa-flask\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"live-preview\">\n <div class=\"live-preview-input-row\">\n <input\n class=\"mj-input live-preview-input\"\n type=\"text\"\n placeholder=\"Type a sample query and press Run…\"\n [disabled]=\"!record?.ID || PreviewIsRunning\"\n [value]=\"PreviewQuery\"\n (input)=\"PreviewQuery = $any($event.target).value\"\n (keydown.enter)=\"RunPreview()\" />\n @if (!PreviewIsRunning) {\n <button class=\"live-preview-btn\"\n type=\"button\"\n [disabled]=\"!record?.ID || !PreviewQuery.trim()\"\n (click)=\"RunPreview()\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n } @else {\n <button class=\"live-preview-btn live-preview-btn-cancel\"\n type=\"button\"\n (click)=\"CancelPreview()\">\n <i class=\"fa-solid fa-stop\"></i> Cancel\n </button>\n }\n </div>\n\n @if (PreviewError) {\n <p class=\"live-preview-error\">\n <i class=\"fa-solid fa-circle-exclamation\"></i> {{ PreviewError }}\n </p>\n }\n\n @if (PreviewIsRunning || PreviewProviders.length > 0) {\n <div class=\"live-preview-chips\">\n @if (PreviewIsRunning && PreviewProviders.length === 0) {\n <span class=\"live-preview-chip live-preview-chip-pending\">\n <i class=\"fa-solid fa-circle-notch fa-spin\"></i> Streaming…\n </span>\n }\n @for (p of PreviewProviders; track p.Name) {\n <span class=\"live-preview-chip live-preview-chip-completed\">\n <i class=\"fa-solid fa-check\"></i>\n <strong>{{ p.Name }}</strong>\n <span class=\"live-preview-chip-count\">{{ p.Count }}</span>\n <span class=\"live-preview-chip-time\">{{ p.ElapsedMs }}ms</span>\n </span>\n }\n </div>\n }\n\n @if (PreviewResults.length > 0) {\n <div class=\"live-preview-results\">\n <div class=\"live-preview-results-header\">\n {{ PreviewResults.length }} result(s)\n @if (PreviewElapsedMs !== null) { in {{ PreviewElapsedMs }}ms }\n @if (LastRunSimilarityPercent !== null) {\n <span class=\"live-preview-similarity\"\n [class.live-preview-similarity-low]=\"LastRunSimilarityPercent < 70\"\n title=\"Kendall-tau rank correlation against the previous run, mapped to [0%, 100%].\">\n · {{ LastRunSimilarityPercent }}% similar to last run\n </span>\n }\n </div>\n @for (r of PreviewResults; track r.ID; let i = $index) {\n @if (i < 10) {\n <div class=\"live-preview-result\">\n <span class=\"live-preview-result-score\">{{ (r.Score * 100) | number:'1.0-0' }}%</span>\n <span class=\"live-preview-result-title\">{{ r.Title }}</span>\n <span class=\"live-preview-result-entity\">{{ r.EntityName }}</span>\n </div>\n }\n }\n @if (PreviewResults.length > 10) {\n <p class=\"live-preview-truncated\">…and {{ PreviewResults.length - 10 }} more (preview shows top 10).</p>\n }\n </div>\n }\n </div>\n </mj-collapsible-panel>\n\n <!-- Details Section (kept empty — RerankerBudgetCents now lives in the\n Reranker section above where it semantically belongs) -->\n <mj-collapsible-panel\n SectionKey=\"details\"\n SectionName=\"Details\"\n Icon=\"fa fa-align-left\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n </mj-collapsible-panel>\n\n <!-- System Metadata Section -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- ========================================\n RELATED ENTITY PANELS\n ======================================== -->\n\n <!-- Search Scope Test Queries Section (P4.4) — canonical test queries for\n offline tuning. Authors save representative queries here, re-run them\n after a config change, and compare results. -->\n <mj-collapsible-panel\n SectionKey=\"mJSearchScopeTestQueries\"\n SectionName=\"Search Scope Test Queries\"\n Icon=\"fa fa-table\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJSearchScopeTestQueries')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Search Scope Test Queries','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Search Scope Test Queries')\"\n [AllowLoad]=\"IsSectionExpanded('mJSearchScopeTestQueries')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJSearchScopeTestQueries', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Search Scope Storage Accounts Section -->\n <mj-collapsible-panel\n SectionKey=\"mJSearchScopeStorageAccounts\"\n SectionName=\"Search Scope Storage Accounts\"\n Icon=\"fa fa-folder-open\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJSearchScopeStorageAccounts')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Search Scope Storage Accounts','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Search Scope Storage Accounts')\"\n [AllowLoad]=\"IsSectionExpanded('mJSearchScopeStorageAccounts')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJSearchScopeStorageAccounts', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Search Scope Entities Section -->\n <mj-collapsible-panel\n SectionKey=\"mJSearchScopeEntities\"\n SectionName=\"Search Scope Entities\"\n Icon=\"fa fa-search\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJSearchScopeEntities')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Search Scope Entities','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Search Scope Entities')\"\n [AllowLoad]=\"IsSectionExpanded('mJSearchScopeEntities')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJSearchScopeEntities', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Search Scope External Indexes Section -->\n <mj-collapsible-panel\n SectionKey=\"mJSearchScopeExternalIndexes\"\n SectionName=\"Search Scope External Indexes\"\n Icon=\"fa fa-search-plus\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJSearchScopeExternalIndexes')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Search Scope External Indexes','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Search Scope External Indexes')\"\n [AllowLoad]=\"IsSectionExpanded('mJSearchScopeExternalIndexes')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJSearchScopeExternalIndexes', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Search Scope Providers Section -->\n <mj-collapsible-panel\n SectionKey=\"mJSearchScopeProviders\"\n SectionName=\"Search Scope Providers\"\n Icon=\"fa fa-search-plus\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJSearchScopeProviders')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Search Scope Providers','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Search Scope Providers')\"\n [AllowLoad]=\"IsSectionExpanded('mJSearchScopeProviders')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJSearchScopeProviders', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- AI Agent Search Scopes Section -->\n <mj-collapsible-panel\n SectionKey=\"mJAIAgentSearchScopes\"\n SectionName=\"AI Agent Search Scopes\"\n Icon=\"fa fa-search-plus\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIAgentSearchScopes')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Search Scopes','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Search Scopes')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIAgentSearchScopes')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIAgentSearchScopes', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Search Scope Permissions Section -->\n <mj-collapsible-panel\n SectionKey=\"mJSearchScopePermissions\"\n SectionName=\"Search Scope Permissions\"\n Icon=\"fa fa-table\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJSearchScopePermissions')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Search Scope Permissions','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Search Scope Permissions')\"\n [AllowLoad]=\"IsSectionExpanded('mJSearchScopePermissions')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJSearchScopePermissions', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Search Execution Logs Section -->\n <mj-collapsible-panel\n SectionKey=\"mJSearchExecutionLogs\"\n SectionName=\"Search Execution Logs\"\n Icon=\"fa fa-table\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJSearchExecutionLogs')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Search Execution Logs','SearchScopeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Search Execution Logs')\"\n [AllowLoad]=\"IsSectionExpanded('mJSearchExecutionLogs')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJSearchExecutionLogs', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n</mj-record-form-container>\n "]}
@@ -1 +1 @@
1
- {"version":3,"file":"session-bridge-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/SessionBridges/session-bridge-form.component.ts","../../../../src/lib/custom/SessionBridges/session-bridge-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '@angular/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { MJAIAgentSessionBridgeEntity } from '@memberjunction/core-entities';\nimport { MJAIAgentSessionBridgeFormComponent } from '../../generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component';\n\ntype BridgeStatus = MJAIAgentSessionBridgeEntity['Status'];\n\n/** One node in the lifecycle timeline header. */\nexport interface BridgeTimelineStep {\n /** The status this step represents. */\n status: BridgeStatus;\n label: string;\n icon: string;\n /** The timestamp field that marks this step reached, if any. */\n timestamp: Date | null;\n /** 'done' = passed, 'current' = the record's current status, 'pending' = not yet reached. */\n state: 'done' | 'current' | 'pending';\n}\n\n/** The canonical happy-path lifecycle order for index comparison. */\nconst LIFECYCLE_ORDER: BridgeStatus[] = [\n 'Scheduled', 'Pending', 'Connecting', 'Connected', 'Disconnecting', 'Disconnected',\n];\n\n/**\n * Custom form for 'MJ: AI Agent Session Bridges' (Pattern 2). The live /\n * historical view of a single bridge leg: a readable lifecycle timeline\n * (Scheduled/Pending → Connecting → Connected → Disconnecting → Disconnected,\n * or Failed) built from the status + lifecycle timestamps, then the connection\n * details (Direction / JoinMethod / TurnMode / Address / ExternalConnectionID)\n * and the related participant grid. Mostly read-oriented — these rows are\n * written by the realtime engine, not hand-edited.\n */\n@RegisterClass(BaseFormComponent, 'MJ: AI Agent Session Bridges')\n@Component({\n standalone: false,\n selector: 'mj-ai-agent-session-bridge-form',\n templateUrl: './session-bridge-form.component.html',\n styleUrls: ['./session-bridge-form.component.css'],\n})\nexport class MJAIAgentSessionBridgeFormComponentExtended extends MJAIAgentSessionBridgeFormComponent {\n public override record!: MJAIAgentSessionBridgeEntity;\n\n /** Register section state including the custom lifecycle timeline panel. */\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n this.initSections([\n { sectionKey: 'lifecycleTimeline', sectionName: 'Lifecycle', isExpanded: true },\n { sectionKey: 'sessionContext', sectionName: 'Session Context', isExpanded: true },\n { sectionKey: 'connectionDetails', sectionName: 'Connection Details', isExpanded: true },\n { sectionKey: 'lifecycleAndTiming', sectionName: 'Lifecycle and Timing', isExpanded: false },\n { sectionKey: 'systemMetadata', sectionName: 'System Metadata', isExpanded: false },\n { sectionKey: 'mJAIAgentSessionBridgeParticipants', sectionName: 'Participants', isExpanded: false },\n ]);\n }\n\n /** True when the bridge ended abnormally — surfaced distinctly in the timeline. */\n public get IsFailed(): boolean {\n return this.record?.Status === 'Failed';\n }\n\n /**\n * The lifecycle timeline steps with per-step state (done / current /\n * pending) and the timestamp that marks each step reached.\n */\n public get TimelineSteps(): BridgeTimelineStep[] {\n const r = this.record;\n if (!r) return [];\n\n const currentIndex = LIFECYCLE_ORDER.indexOf(r.Status as BridgeStatus);\n // 'Failed' / 'Scheduled' aren't on the linear path past 'Connecting';\n // treat unknown/terminal-abnormal as \"everything up to Connecting is moot\".\n const effectiveIndex = currentIndex >= 0 ? currentIndex : -1;\n\n const defs: Array<{ status: BridgeStatus; label: string; icon: string; timestamp: Date | null }> = [\n { status: 'Scheduled', label: 'Scheduled', icon: 'fa-calendar', timestamp: r.ScheduledStartTime ?? null },\n { status: 'Pending', label: 'Pending', icon: 'fa-clock', timestamp: null },\n { status: 'Connecting', label: 'Connecting', icon: 'fa-plug-circle-bolt', timestamp: null },\n { status: 'Connected', label: 'Connected', icon: 'fa-plug-circle-check', timestamp: r.ConnectedAt ?? null },\n { status: 'Disconnecting', label: 'Disconnecting', icon: 'fa-plug-circle-xmark', timestamp: null },\n { status: 'Disconnected', label: 'Disconnected', icon: 'fa-circle-stop', timestamp: r.DisconnectedAt ?? null },\n ];\n\n return defs.map((d) => {\n const idx = LIFECYCLE_ORDER.indexOf(d.status);\n let state: BridgeTimelineStep['state'];\n if (effectiveIndex < 0) {\n state = 'pending';\n } else if (idx < effectiveIndex) {\n state = 'done';\n } else if (idx === effectiveIndex) {\n state = 'current';\n } else {\n state = 'pending';\n }\n return { ...d, state };\n });\n }\n\n public GetStatusIcon(status: string | null): string {\n switch (status) {\n case 'Connected': return 'fa-plug-circle-check';\n case 'Connecting': return 'fa-plug-circle-bolt';\n case 'Disconnecting': return 'fa-plug-circle-xmark';\n case 'Disconnected': return 'fa-circle-stop';\n case 'Failed': return 'fa-triangle-exclamation';\n case 'Pending': return 'fa-clock';\n case 'Scheduled': return 'fa-calendar';\n default: return 'fa-question-circle';\n }\n }\n}\n\n/** Tree-shake guard — invoked from the custom-forms module loader. */\nexport function LoadMJAIAgentSessionBridgeFormComponentExtended(): void {\n /* no-op marker */\n}\n","@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"before-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- Lifecycle timeline -->\n <mj-collapsible-panel\n SectionKey=\"lifecycleTimeline\"\n SectionName=\"Lifecycle\"\n Icon=\"fa fa-timeline\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n\n <div class=\"sb-status-line\" [class.failed]=\"IsFailed\">\n <i class=\"fa-solid {{ GetStatusIcon(record.Status) }}\"></i>\n <span class=\"sb-status-text\">{{ record.Status }}</span>\n @if (record.CloseReason) {\n <span class=\"sb-close-reason\">close reason: {{ record.CloseReason }}</span>\n }\n </div>\n\n <ol class=\"sb-timeline\">\n @for (step of TimelineSteps; track step.status) {\n <li class=\"sb-step\" [class.done]=\"step.state === 'done'\" [class.current]=\"step.state === 'current'\" [class.pending]=\"step.state === 'pending'\">\n <span class=\"sb-step-dot\"><i class=\"fa-solid {{ step.icon }}\"></i></span>\n <div class=\"sb-step-body\">\n <span class=\"sb-step-label\">{{ step.label }}</span>\n @if (step.timestamp) {\n <span class=\"sb-step-time\">{{ step.timestamp | date:'medium' }}</span>\n }\n </div>\n </li>\n }\n </ol>\n\n @if (IsFailed) {\n <div class=\"sb-failed-note\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n This bridge ended abnormally (status <strong>Failed</strong>). See the participant rows and Config for diagnostics.\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Session Context -->\n <mj-collapsible-panel\n SectionKey=\"sessionContext\"\n SectionName=\"Session Context\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"AgentSessionID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ProviderID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Connection Details -->\n <mj-collapsible-panel\n SectionKey=\"connectionDetails\"\n SectionName=\"Connection Details\"\n Icon=\"fa fa-plug\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Direction\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"JoinMethod\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"TurnMode\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ExternalConnectionID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Address\" Type=\"textarea\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"URL\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BotParticipantID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Lifecycle and Timing (raw fields) -->\n <mj-collapsible-panel\n SectionKey=\"lifecycleAndTiming\"\n SectionName=\"Lifecycle and Timing\"\n Icon=\"fa fa-clock\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Status\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScheduledStartTime\" Type=\"datepicker\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ConnectedAt\" Type=\"datepicker\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"DisconnectedAt\" Type=\"datepicker\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"CloseReason\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- System Metadata -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"HostInstanceID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Config\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_CreatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_UpdatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- Participants -->\n <mj-collapsible-panel\n SectionKey=\"mJAIAgentSessionBridgeParticipants\"\n SectionName=\"Participants\"\n Icon=\"fa fa-users\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIAgentSessionBridgeParticipants')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Session Bridge Participants','SessionBridgeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Session Bridge Participants')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIAgentSessionBridgeParticipants')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIAgentSessionBridgeParticipants', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-related\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n</mj-record-form-container>\n}\n"]}
1
+ {"version":3,"file":"session-bridge-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/SessionBridges/session-bridge-form.component.ts","../../../../src/lib/custom/SessionBridges/session-bridge-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '@angular/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { MJAIAgentSessionBridgeEntity } from '@memberjunction/core-entities';\nimport { MJAIAgentSessionBridgeFormComponent } from '../../generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component';\n\ntype BridgeStatus = MJAIAgentSessionBridgeEntity['Status'];\n\n/** One node in the lifecycle timeline header. */\nexport interface BridgeTimelineStep {\n /** The status this step represents. */\n status: BridgeStatus; // case-violation-ok-legacy-back-compat: the old name is also read off a value typed `any`, where a rename would compile and silently return undefined\n label: string; // case-violation-ok-legacy-back-compat: renaming it broke a use the checker could not see from the declaration — the compile proved it\n icon: string; // case-violation-ok-legacy-back-compat: renaming it broke a use the checker could not see from the declaration — the compile proved it\n /** The timestamp field that marks this step reached, if any. */\n timestamp: Date | null; // case-violation-ok-legacy-back-compat: renaming it broke a use the checker could not see from the declaration — the compile proved it\n /** 'done' = passed, 'current' = the record's current status, 'pending' = not yet reached. */\n state: 'done' | 'current' | 'pending'; // case-violation-ok-legacy-back-compat: renaming it broke a use the checker could not see from the declaration — the compile proved it\n}\n\n/** The canonical happy-path lifecycle order for index comparison. */\nconst LIFECYCLE_ORDER: BridgeStatus[] = [\n 'Scheduled', 'Pending', 'Connecting', 'Connected', 'Disconnecting', 'Disconnected',\n];\n\n/**\n * Custom form for 'MJ: AI Agent Session Bridges' (Pattern 2). The live /\n * historical view of a single bridge leg: a readable lifecycle timeline\n * (Scheduled/Pending → Connecting → Connected → Disconnecting → Disconnected,\n * or Failed) built from the status + lifecycle timestamps, then the connection\n * details (Direction / JoinMethod / TurnMode / Address / ExternalConnectionID)\n * and the related participant grid. Mostly read-oriented — these rows are\n * written by the realtime engine, not hand-edited.\n */\n@RegisterClass(BaseFormComponent, 'MJ: AI Agent Session Bridges')\n@Component({\n standalone: false,\n selector: 'mj-ai-agent-session-bridge-form',\n templateUrl: './session-bridge-form.component.html',\n styleUrls: ['./session-bridge-form.component.css'],\n})\nexport class MJAIAgentSessionBridgeFormComponentExtended extends MJAIAgentSessionBridgeFormComponent {\n public override record!: MJAIAgentSessionBridgeEntity;\n\n /** Register section state including the custom lifecycle timeline panel. */\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n this.initSections([\n { sectionKey: 'lifecycleTimeline', sectionName: 'Lifecycle', isExpanded: true },\n { sectionKey: 'sessionContext', sectionName: 'Session Context', isExpanded: true },\n { sectionKey: 'connectionDetails', sectionName: 'Connection Details', isExpanded: true },\n { sectionKey: 'lifecycleAndTiming', sectionName: 'Lifecycle and Timing', isExpanded: false },\n { sectionKey: 'systemMetadata', sectionName: 'System Metadata', isExpanded: false },\n { sectionKey: 'mJAIAgentSessionBridgeParticipants', sectionName: 'Participants', isExpanded: false },\n ]);\n }\n\n /** True when the bridge ended abnormally — surfaced distinctly in the timeline. */\n public get IsFailed(): boolean {\n return this.record?.Status === 'Failed';\n }\n\n /**\n * The lifecycle timeline steps with per-step state (done / current /\n * pending) and the timestamp that marks each step reached.\n */\n public get TimelineSteps(): BridgeTimelineStep[] {\n const r = this.record;\n if (!r) return [];\n\n const currentIndex = LIFECYCLE_ORDER.indexOf(r.Status as BridgeStatus);\n // 'Failed' / 'Scheduled' aren't on the linear path past 'Connecting';\n // treat unknown/terminal-abnormal as \"everything up to Connecting is moot\".\n const effectiveIndex = currentIndex >= 0 ? currentIndex : -1;\n\n const defs: Array<{ status: BridgeStatus; label: string; icon: string; timestamp: Date | null }> = [\n { status: 'Scheduled', label: 'Scheduled', icon: 'fa-calendar', timestamp: r.ScheduledStartTime ?? null },\n { status: 'Pending', label: 'Pending', icon: 'fa-clock', timestamp: null },\n { status: 'Connecting', label: 'Connecting', icon: 'fa-plug-circle-bolt', timestamp: null },\n { status: 'Connected', label: 'Connected', icon: 'fa-plug-circle-check', timestamp: r.ConnectedAt ?? null },\n { status: 'Disconnecting', label: 'Disconnecting', icon: 'fa-plug-circle-xmark', timestamp: null },\n { status: 'Disconnected', label: 'Disconnected', icon: 'fa-circle-stop', timestamp: r.DisconnectedAt ?? null },\n ];\n\n return defs.map((d) => {\n const idx = LIFECYCLE_ORDER.indexOf(d.status);\n let state: BridgeTimelineStep['state'];\n if (effectiveIndex < 0) {\n state = 'pending';\n } else if (idx < effectiveIndex) {\n state = 'done';\n } else if (idx === effectiveIndex) {\n state = 'current';\n } else {\n state = 'pending';\n }\n return { ...d, state };\n });\n }\n\n public GetStatusIcon(status: string | null): string {\n switch (status) {\n case 'Connected': return 'fa-plug-circle-check';\n case 'Connecting': return 'fa-plug-circle-bolt';\n case 'Disconnecting': return 'fa-plug-circle-xmark';\n case 'Disconnected': return 'fa-circle-stop';\n case 'Failed': return 'fa-triangle-exclamation';\n case 'Pending': return 'fa-clock';\n case 'Scheduled': return 'fa-calendar';\n default: return 'fa-question-circle';\n }\n }\n}\n\n/** Tree-shake guard — invoked from the custom-forms module loader. */\nexport function LoadMJAIAgentSessionBridgeFormComponentExtended(): void {\n /* no-op marker */\n}\n","@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"before-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- Lifecycle timeline -->\n <mj-collapsible-panel\n SectionKey=\"lifecycleTimeline\"\n SectionName=\"Lifecycle\"\n Icon=\"fa fa-timeline\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n\n <div class=\"sb-status-line\" [class.failed]=\"IsFailed\">\n <i class=\"fa-solid {{ GetStatusIcon(record.Status) }}\"></i>\n <span class=\"sb-status-text\">{{ record.Status }}</span>\n @if (record.CloseReason) {\n <span class=\"sb-close-reason\">close reason: {{ record.CloseReason }}</span>\n }\n </div>\n\n <ol class=\"sb-timeline\">\n @for (step of TimelineSteps; track step.status) {\n <li class=\"sb-step\" [class.done]=\"step.state === 'done'\" [class.current]=\"step.state === 'current'\" [class.pending]=\"step.state === 'pending'\">\n <span class=\"sb-step-dot\"><i class=\"fa-solid {{ step.icon }}\"></i></span>\n <div class=\"sb-step-body\">\n <span class=\"sb-step-label\">{{ step.label }}</span>\n @if (step.timestamp) {\n <span class=\"sb-step-time\">{{ step.timestamp | date:'medium' }}</span>\n }\n </div>\n </li>\n }\n </ol>\n\n @if (IsFailed) {\n <div class=\"sb-failed-note\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n This bridge ended abnormally (status <strong>Failed</strong>). See the participant rows and Config for diagnostics.\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Session Context -->\n <mj-collapsible-panel\n SectionKey=\"sessionContext\"\n SectionName=\"Session Context\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"AgentSessionID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ProviderID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Connection Details -->\n <mj-collapsible-panel\n SectionKey=\"connectionDetails\"\n SectionName=\"Connection Details\"\n Icon=\"fa fa-plug\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Direction\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"JoinMethod\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"TurnMode\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ExternalConnectionID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Address\" Type=\"textarea\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"URL\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BotParticipantID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Lifecycle and Timing (raw fields) -->\n <mj-collapsible-panel\n SectionKey=\"lifecycleAndTiming\"\n SectionName=\"Lifecycle and Timing\"\n Icon=\"fa fa-clock\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Status\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScheduledStartTime\" Type=\"datepicker\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ConnectedAt\" Type=\"datepicker\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"DisconnectedAt\" Type=\"datepicker\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"CloseReason\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- System Metadata -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"HostInstanceID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Config\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_CreatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_UpdatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- Participants -->\n <mj-collapsible-panel\n SectionKey=\"mJAIAgentSessionBridgeParticipants\"\n SectionName=\"Participants\"\n Icon=\"fa fa-users\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIAgentSessionBridgeParticipants')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Session Bridge Participants','SessionBridgeID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Session Bridge Participants')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIAgentSessionBridgeParticipants')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIAgentSessionBridgeParticipants', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-related\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n</mj-record-form-container>\n}\n"]}
@@ -11,39 +11,103 @@ export interface ParameterPair {
11
11
  type?: string;
12
12
  }
13
13
  export interface TemplateRunResult {
14
- success: boolean;
15
- output?: string;
16
- error?: string;
17
- executionTimeMs?: number;
14
+ Success: boolean;
15
+ Output?: string;
16
+ Error?: string;
17
+ ExecutionTimeMs?: number;
18
18
  }
19
19
  export declare class TemplateParamDialogComponent extends BaseAngularComponent implements OnInit {
20
- template: MJTemplateEntity | null;
21
- _isVisible: boolean;
20
+ Template: MJTemplateEntity | null;
21
+ /** @deprecated Use {@link Template}. */
22
+ set template(value: MJTemplateEntity | null);
23
+ /** @deprecated Use {@link Template}. */
24
+ get template(): MJTemplateEntity | null;
25
+ IsVisible: boolean;
26
+ /** @deprecated Use {@link IsVisible}. */
27
+ get _isVisible(): boolean;
28
+ /** @deprecated Use {@link IsVisible}. */
29
+ set _isVisible(value: boolean);
22
30
  get isVisible(): boolean;
23
31
  set isVisible(value: boolean);
32
+ IsVisibleChange: EventEmitter<boolean>;
33
+ /**
34
+ * @deprecated Use {@link IsVisibleChange}.
35
+ *
36
+ * The same emitter under the old binding name, so a template still binding
37
+ * (isVisibleChange) keeps working. Must stay AFTER IsVisibleChange: class fields
38
+ * initialise in order, and the other way round this captures undefined.
39
+ */
24
40
  isVisibleChange: EventEmitter<boolean>;
41
+ OnClose: EventEmitter<void>;
42
+ /**
43
+ * @deprecated Use {@link OnClose}.
44
+ *
45
+ * The same emitter under the old binding name, so a template still binding
46
+ * (onClose) keeps working. Must stay AFTER OnClose: class fields
47
+ * initialise in order, and the other way round this captures undefined.
48
+ */
25
49
  onClose: EventEmitter<void>;
26
50
  parameters: ParameterPair[];
27
51
  isLoading: boolean;
28
- isRunning: boolean;
29
- testResult: TemplateRunResult | null;
30
- hasUnsavedParameters: boolean;
31
- parametersExpanded: boolean;
32
- jsonPreviewExpanded: boolean;
33
- resultsExpanded: boolean;
52
+ IsRunning: boolean;
53
+ /** @deprecated Use {@link IsRunning}. */
54
+ get isRunning(): boolean;
55
+ /** @deprecated Use {@link IsRunning}. */
56
+ set isRunning(value: boolean);
57
+ TestResult: TemplateRunResult | null;
58
+ /** @deprecated Use {@link TestResult}. */
59
+ get testResult(): TemplateRunResult | null;
60
+ /** @deprecated Use {@link TestResult}. */
61
+ set testResult(value: TemplateRunResult | null);
62
+ HasUnsavedParameters: boolean;
63
+ /** @deprecated Use {@link HasUnsavedParameters}. */
64
+ get hasUnsavedParameters(): boolean;
65
+ /** @deprecated Use {@link HasUnsavedParameters}. */
66
+ set hasUnsavedParameters(value: boolean);
67
+ ParametersExpanded: boolean;
68
+ /** @deprecated Use {@link ParametersExpanded}. */
69
+ get parametersExpanded(): boolean;
70
+ /** @deprecated Use {@link ParametersExpanded}. */
71
+ set parametersExpanded(value: boolean);
72
+ JsonPreviewExpanded: boolean;
73
+ /** @deprecated Use {@link JsonPreviewExpanded}. */
74
+ get jsonPreviewExpanded(): boolean;
75
+ /** @deprecated Use {@link JsonPreviewExpanded}. */
76
+ set jsonPreviewExpanded(value: boolean);
77
+ ResultsExpanded: boolean;
78
+ /** @deprecated Use {@link ResultsExpanded}. */
79
+ get resultsExpanded(): boolean;
80
+ /** @deprecated Use {@link ResultsExpanded}. */
81
+ set resultsExpanded(value: boolean);
34
82
  private originalTemplateParams;
35
83
  ngOnInit(): void;
84
+ LoadTemplateParams(): Promise<void>;
85
+ /** @deprecated Use {@link LoadTemplateParams}. */
36
86
  loadTemplateParams(): Promise<void>;
87
+ AddParameter(): void;
88
+ /** @deprecated Use {@link AddParameter}. */
37
89
  addParameter(): void;
90
+ RemoveParameter(index: number): void;
91
+ /** @deprecated Use {@link RemoveParameter}. */
38
92
  removeParameter(index: number): void;
93
+ OnParameterChange(): void;
94
+ /** @deprecated Use {@link OnParameterChange}. */
39
95
  onParameterChange(): void;
96
+ RunTemplate(): Promise<void>;
97
+ /** @deprecated Use {@link RunTemplate}. */
40
98
  runTemplate(): Promise<void>;
99
+ UpdateTemplateParams(): Promise<void>;
100
+ /** @deprecated Use {@link UpdateTemplateParams}. */
41
101
  updateTemplateParams(): Promise<void>;
42
102
  close(): void;
43
103
  private resetDialogState;
104
+ SaveResults(): void;
105
+ /** @deprecated Use {@link SaveResults}. */
44
106
  saveResults(): void;
107
+ get ParametersAsJson(): string;
108
+ /** @deprecated Use {@link ParametersAsJson}. */
45
109
  get parametersAsJson(): string;
46
110
  static ɵfac: i0.ɵɵFactoryDeclaration<TemplateParamDialogComponent, never>;
47
- static ɵcmp: i0.ɵɵComponentDeclaration<TemplateParamDialogComponent, "mj-template-param-dialog", never, { "template": { "alias": "template"; "required": false; }; "isVisible": { "alias": "isVisible"; "required": false; }; }, { "isVisibleChange": "isVisibleChange"; "onClose": "onClose"; }, never, never, false, never>;
111
+ static ɵcmp: i0.ɵɵComponentDeclaration<TemplateParamDialogComponent, "mj-template-param-dialog", never, { "Template": { "alias": "Template"; "required": false; }; "template": { "alias": "template"; "required": false; }; "isVisible": { "alias": "isVisible"; "required": false; }; }, { "IsVisibleChange": "IsVisibleChange"; "isVisibleChange": "isVisibleChange"; "OnClose": "OnClose"; "onClose": "onClose"; }, never, never, false, never>;
48
112
  }
49
113
  //# sourceMappingURL=template-param-dialog.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"template-param-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Templates/template-param-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAyB,MAAM,+BAA+B,CAAC;AAKxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;AACrE,MAAM,WAAW,aAAa;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAMa,4BAA6B,SAAQ,oBAAqB,YAAW,MAAM;IAC3E,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAE3C,UAAU,EAAE,OAAO,CAAS;IACnC,IACI,SAAS,IAAI,OAAO,CAEvB;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAQ3B;IAES,eAAe,wBAA+B;IAC9C,OAAO,qBAA4B;IAEtC,UAAU,EAAE,aAAa,EAAE,CAAM;IACjC,SAAS,UAAS;IAClB,SAAS,UAAS;IAClB,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC5C,oBAAoB,UAAS;IAC7B,kBAAkB,UAAQ;IAC1B,mBAAmB,UAAS;IAC5B,eAAe,UAAQ;IAE9B,OAAO,CAAC,sBAAsB,CAA+B;IAE7D,QAAQ;IAMF,kBAAkB;IAwCxB,YAAY;IAQZ,eAAe,CAAC,KAAK,EAAE,MAAM;IAM7B,iBAAiB;IASX,WAAW;IA+FX,oBAAoB;IAgD1B,KAAK;IAML,OAAO,CAAC,gBAAgB;IAcxB,WAAW;IA6BX,IAAI,gBAAgB,IAAI,MAAM,CAY7B;yCAjTQ,4BAA4B;2CAA5B,4BAA4B;CAkTxC"}
1
+ {"version":3,"file":"template-param-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Templates/template-param-dialog.component.ts"],"names":[],"mappings":"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"}