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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/README.md +22 -0
  2. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts +1 -1
  3. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js +2 -2
  4. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js.map +1 -1
  5. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
  6. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts +90 -16
  7. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
  8. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +218 -70
  9. package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
  10. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts +80 -16
  11. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
  12. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +146 -46
  13. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
  14. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +329 -27
  15. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  16. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +794 -262
  17. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  18. package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts +76 -0
  19. package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts.map +1 -1
  20. package/dist/lib/custom/AIAgents/ai-agent-management.service.js +77 -33
  21. package/dist/lib/custom/AIAgents/ai-agent-management.service.js.map +1 -1
  22. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts +69 -15
  23. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
  24. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +182 -74
  25. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
  26. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts +105 -25
  27. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
  28. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +272 -112
  29. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
  30. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts +32 -6
  31. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -1
  32. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +71 -19
  33. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
  34. package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts +10 -0
  35. package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts.map +1 -1
  36. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +27 -7
  37. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -1
  38. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts +65 -15
  39. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
  40. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +152 -52
  41. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
  42. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts +81 -15
  43. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
  44. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +145 -45
  45. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
  46. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +71 -17
  47. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
  48. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +175 -67
  49. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
  50. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +173 -27
  51. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  52. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +385 -93
  53. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  54. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts +64 -4
  55. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts.map +1 -1
  56. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +129 -29
  57. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
  58. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +260 -27
  59. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
  60. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +686 -238
  61. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  62. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts +10 -0
  63. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts.map +1 -1
  64. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js +17 -9
  65. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js.map +1 -1
  66. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts +74 -16
  67. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts.map +1 -1
  68. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +174 -58
  69. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
  70. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +108 -14
  71. package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
  72. package/dist/lib/custom/Actions/action-execution-log-form.component.js +258 -70
  73. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  74. package/dist/lib/custom/Actions/action-form.component.d.ts +198 -14
  75. package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
  76. package/dist/lib/custom/Actions/action-form.component.js +387 -107
  77. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  78. package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts +12 -6
  79. package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts.map +1 -1
  80. package/dist/lib/custom/BridgeProviders/bridge-provider-features.js +41 -29
  81. package/dist/lib/custom/BridgeProviders/bridge-provider-features.js.map +1 -1
  82. package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js +14 -14
  83. package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js.map +1 -1
  84. package/dist/lib/custom/Companies/company-overview.panel.d.ts +1 -1
  85. package/dist/lib/custom/Companies/company-overview.panel.js +2 -2
  86. package/dist/lib/custom/Companies/company-overview.panel.js.map +1 -1
  87. package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts +1 -1
  88. package/dist/lib/custom/Conversations/conversation-overview.panel.js +2 -2
  89. package/dist/lib/custom/Conversations/conversation-overview.panel.js.map +1 -1
  90. package/dist/lib/custom/Employees/employee-overview.panel.d.ts +1 -1
  91. package/dist/lib/custom/Employees/employee-overview.panel.js +2 -2
  92. package/dist/lib/custom/Employees/employee-overview.panel.js.map +1 -1
  93. package/dist/lib/custom/Entities/entity-form.component.d.ts +209 -28
  94. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  95. package/dist/lib/custom/Entities/entity-form.component.js +494 -138
  96. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  97. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts +5 -1
  98. package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts.map +1 -1
  99. package/dist/lib/custom/EntityActions/entityaction.form.component.js +10 -2
  100. package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
  101. package/dist/lib/custom/Files/file-form.component.d.ts +1 -1
  102. package/dist/lib/custom/Files/file-form.component.js +2 -2
  103. package/dist/lib/custom/Files/file-form.component.js.map +1 -1
  104. package/dist/lib/custom/Lists/list-form.component.d.ts +300 -36
  105. package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
  106. package/dist/lib/custom/Lists/list-form.component.js +664 -208
  107. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  108. package/dist/lib/custom/MLModels/ml-model-form.component.d.ts +27 -0
  109. package/dist/lib/custom/MLModels/ml-model-form.component.d.ts.map +1 -0
  110. package/dist/lib/custom/MLModels/ml-model-form.component.js +193 -0
  111. package/dist/lib/custom/MLModels/ml-model-form.component.js.map +1 -0
  112. package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +75 -0
  113. package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -0
  114. package/dist/lib/custom/MLModels/ml-model-view-models.js +244 -0
  115. package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -0
  116. package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +173 -0
  117. package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -0
  118. package/dist/lib/custom/MLModels/ps-model-detail.component.js +883 -0
  119. package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -0
  120. package/dist/lib/custom/Queries/query-form.component.d.ts +201 -26
  121. package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
  122. package/dist/lib/custom/Queries/query-form.component.js +429 -109
  123. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  124. package/dist/lib/custom/Queries/query-run-dialog.component.d.ts +107 -14
  125. package/dist/lib/custom/Queries/query-run-dialog.component.d.ts.map +1 -1
  126. package/dist/lib/custom/Queries/query-run-dialog.component.js +249 -79
  127. package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
  128. package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts +133 -7
  129. package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -1
  130. package/dist/lib/custom/RecordProcesses/record-process-form.component.js +1268 -19
  131. package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -1
  132. package/dist/lib/custom/SearchScopes/searchscope-form.component.d.ts +1 -1
  133. package/dist/lib/custom/SearchScopes/searchscope-form.component.js +4 -4
  134. package/dist/lib/custom/SearchScopes/searchscope-form.component.js.map +1 -1
  135. package/dist/lib/custom/SessionBridges/session-bridge-form.component.js.map +1 -1
  136. package/dist/lib/custom/Templates/template-param-dialog.component.d.ts +77 -13
  137. package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
  138. package/dist/lib/custom/Templates/template-param-dialog.component.js +196 -78
  139. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  140. package/dist/lib/custom/Templates/template-params-grid.component.d.ts +49 -7
  141. package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
  142. package/dist/lib/custom/Templates/template-params-grid.component.js +132 -44
  143. package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
  144. package/dist/lib/custom/Templates/templates-form.component.d.ts +142 -17
  145. package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
  146. package/dist/lib/custom/Templates/templates-form.component.js +333 -113
  147. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  148. package/dist/lib/custom/Tests/entity-link-pill.component.d.ts +24 -4
  149. package/dist/lib/custom/Tests/entity-link-pill.component.d.ts.map +1 -1
  150. package/dist/lib/custom/Tests/entity-link-pill.component.js +64 -20
  151. package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
  152. package/dist/lib/custom/Tests/test-form.component.d.ts +217 -27
  153. package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
  154. package/dist/lib/custom/Tests/test-form.component.js +549 -169
  155. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  156. package/dist/lib/custom/Tests/test-run-checks.d.ts +2 -0
  157. package/dist/lib/custom/Tests/test-run-checks.d.ts.map +1 -1
  158. package/dist/lib/custom/Tests/test-run-checks.js +5 -1
  159. package/dist/lib/custom/Tests/test-run-checks.js.map +1 -1
  160. package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts +2 -0
  161. package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts.map +1 -1
  162. package/dist/lib/custom/Tests/test-run-feedback-form.component.js +5 -1
  163. package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
  164. package/dist/lib/custom/Tests/test-run-form.component.d.ts +146 -18
  165. package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
  166. package/dist/lib/custom/Tests/test-run-form.component.js +362 -106
  167. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  168. package/dist/lib/custom/Tests/test-suite-form.component.d.ts +390 -47
  169. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  170. package/dist/lib/custom/Tests/test-suite-form.component.js +1015 -343
  171. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  172. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +214 -26
  173. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
  174. package/dist/lib/custom/Tests/test-suite-run-form.component.js +535 -159
  175. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  176. package/dist/lib/custom/Users/user-overview.panel.d.ts +1 -1
  177. package/dist/lib/custom/Users/user-overview.panel.js +2 -2
  178. package/dist/lib/custom/Users/user-overview.panel.js.map +1 -1
  179. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +208 -29
  180. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
  181. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +446 -138
  182. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  183. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts +6 -0
  184. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts.map +1 -1
  185. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js +16 -4
  186. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js.map +1 -1
  187. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts +50 -6
  188. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -1
  189. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +84 -12
  190. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -1
  191. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +89 -5
  192. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
  193. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +216 -70
  194. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
  195. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts +62 -3
  196. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
  197. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +140 -42
  198. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
  199. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +81 -10
  200. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
  201. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +165 -37
  202. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  203. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +121 -14
  204. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  205. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +287 -79
  206. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  207. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts +101 -15
  208. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts.map +1 -1
  209. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js +281 -97
  210. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js.map +1 -1
  211. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts +43 -25
  212. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts.map +1 -1
  213. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js +100 -64
  214. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js.map +1 -1
  215. package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts +14 -2
  216. package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts.map +1 -1
  217. package/dist/lib/custom/ai-agent-run/flow/constellation.component.js +71 -53
  218. package/dist/lib/custom/ai-agent-run/flow/constellation.component.js.map +1 -1
  219. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts +14 -2
  220. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts.map +1 -1
  221. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js +70 -52
  222. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js.map +1 -1
  223. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts +8 -0
  224. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts.map +1 -1
  225. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js +22 -6
  226. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js.map +1 -1
  227. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts +24 -2
  228. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts.map +1 -1
  229. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js +91 -59
  230. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js.map +1 -1
  231. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts +10 -2
  232. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts.map +1 -1
  233. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js +33 -17
  234. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js.map +1 -1
  235. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts +2 -0
  236. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts.map +1 -1
  237. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js +34 -30
  238. package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js.map +1 -1
  239. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts +14 -2
  240. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts.map +1 -1
  241. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js +69 -51
  242. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js.map +1 -1
  243. package/dist/lib/custom/custom-forms.module.d.ts +32 -30
  244. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  245. package/dist/lib/custom/custom-forms.module.js +21 -4
  246. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  247. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +38 -12
  248. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
  249. package/dist/lib/custom/shared/entity-selector-dialog.component.js +103 -51
  250. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  251. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
  252. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +62 -26
  253. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
  254. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
  255. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +59 -51
  256. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
  257. package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js +76 -74
  258. package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js.map +1 -1
  259. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.d.ts.map +1 -1
  260. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +33 -15
  261. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
  262. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  263. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +100 -82
  264. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  265. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js +24 -20
  266. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js.map +1 -1
  267. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts +10 -0
  268. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts.map +1 -0
  269. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js +122 -0
  270. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js.map +1 -0
  271. package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.d.ts +10 -0
  272. package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.d.ts.map +1 -0
  273. package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.js +125 -0
  274. package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.js.map +1 -0
  275. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.d.ts.map +1 -1
  276. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +23 -5
  277. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -1
  278. package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.d.ts.map +1 -1
  279. package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js +25 -6
  280. package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js.map +1 -1
  281. package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js +27 -25
  282. package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js.map +1 -1
  283. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.d.ts.map +1 -1
  284. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js +11 -15
  285. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js.map +1 -1
  286. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
  287. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +43 -7
  288. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
  289. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  290. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +155 -119
  291. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  292. package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.d.ts +10 -0
  293. package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.d.ts.map +1 -0
  294. package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.js +78 -0
  295. package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.js.map +1 -0
  296. package/dist/lib/generated/generated-forms.module.d.ts +240 -237
  297. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  298. package/dist/lib/generated/generated-forms.module.js +11 -2
  299. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  300. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts +5 -1
  301. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts.map +1 -1
  302. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +11 -3
  303. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -1
  304. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.d.ts +2 -0
  305. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.d.ts.map +1 -1
  306. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js +16 -12
  307. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js.map +1 -1
  308. package/dist/lib/panels/content-sources/website-crawler-settings.panel.d.ts +1 -1
  309. package/dist/lib/panels/content-sources/website-crawler-settings.panel.js +2 -2
  310. package/dist/lib/panels/content-sources/website-crawler-settings.panel.js.map +1 -1
  311. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +122 -1
  312. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
  313. package/dist/lib/panels/model-predictions/model-prediction.logic.js +236 -11
  314. package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
  315. package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +72 -13
  316. package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -1
  317. package/dist/lib/panels/model-predictions/model-prediction.panel.js +577 -78
  318. package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -1
  319. package/dist/lib/shared/components/template-editor.component.d.ts +133 -14
  320. package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
  321. package/dist/lib/shared/components/template-editor.component.js +322 -124
  322. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  323. package/dist/public-api.d.ts +4 -0
  324. package/dist/public-api.d.ts.map +1 -1
  325. package/dist/public-api.js +4 -0
  326. package/dist/public-api.js.map +1 -1
  327. package/package.json +43 -41
@@ -13,15 +13,15 @@ import { MJAIBridgeProviderEntity_IBridgeProviderFeatures } from '@memberjunctio
13
13
  export type BridgeFeatureKey = keyof MJAIBridgeProviderEntity_IBridgeProviderFeatures;
14
14
  /** One toggle row in the editor. */
15
15
  export interface BridgeFeatureDescriptor {
16
- key: BridgeFeatureKey;
17
- label: string;
18
- description: string;
16
+ Key: BridgeFeatureKey;
17
+ Label: string;
18
+ Description: string;
19
19
  }
20
20
  /** A labeled group of toggle rows. */
21
21
  export interface BridgeFeatureGroup {
22
- title: string;
23
- icon: string;
24
- features: BridgeFeatureDescriptor[];
22
+ Title: string;
23
+ Icon: string;
24
+ Features: BridgeFeatureDescriptor[];
25
25
  }
26
26
  /**
27
27
  * The full editor layout: the 16 flags grouped the way the IBridgeProviderFeatures
@@ -35,6 +35,8 @@ export declare const BRIDGE_FEATURE_KEYS: readonly BridgeFeatureKey[];
35
35
  * Read a single flag from a (possibly null) features object. Absent or false
36
36
  * both resolve to false.
37
37
  */
38
+ export declare function IsFeatureEnabled(features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null, key: BridgeFeatureKey): boolean;
39
+ /** @deprecated Use {@link IsFeatureEnabled}. */
38
40
  export declare function isFeatureEnabled(features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null, key: BridgeFeatureKey): boolean;
39
41
  /**
40
42
  * Return a NEW features object with `key` set to `enabled`. When disabling, the
@@ -44,7 +46,11 @@ export declare function isFeatureEnabled(features: MJAIBridgeProviderEntity_IBri
44
46
  * Never mutates the input; the typed accessor's cache invalidation depends on a
45
47
  * fresh object reference being assigned back through the setter.
46
48
  */
49
+ export declare function SetFeature(features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null, key: BridgeFeatureKey, enabled: boolean): MJAIBridgeProviderEntity_IBridgeProviderFeatures;
50
+ /** @deprecated Use {@link SetFeature}. */
47
51
  export declare function setFeature(features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null, key: BridgeFeatureKey, enabled: boolean): MJAIBridgeProviderEntity_IBridgeProviderFeatures;
48
52
  /** Count of enabled flags across all groups — used for the panel header badge. */
53
+ export declare function CountEnabledFeatures(features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null): number;
54
+ /** @deprecated Use {@link CountEnabledFeatures}. */
49
55
  export declare function countEnabledFeatures(features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null): number;
50
56
  //# sourceMappingURL=bridge-provider-features.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bridge-provider-features.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/BridgeProviders/bridge-provider-features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gDAAgD,EAAE,MAAM,+BAA+B,CAAC;AAEjG;;;;;;;;;GASG;AAEH,iEAAiE;AACjE,MAAM,MAAM,gBAAgB,GAAG,MAAM,gDAAgD,CAAC;AAEtF,oCAAoC;AACpC,MAAM,WAAW,uBAAuB;IACpC,GAAG,EAAE,gBAAgB,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,uBAAuB,EAAE,CAAC;CACvC;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,kBAAkB,EAmCrD,CAAC;AAEX,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EACO,CAAC;AAEnE;;;GAGG;AACH,wBAAgB,gBAAgB,CAC5B,QAAQ,EAAE,gDAAgD,GAAG,IAAI,EACjE,GAAG,EAAE,gBAAgB,GACtB,OAAO,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACtB,QAAQ,EAAE,gDAAgD,GAAG,IAAI,EACjE,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE,OAAO,GACjB,gDAAgD,CAQlD;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,gDAAgD,GAAG,IAAI,GAClE,MAAM,CAGR"}
1
+ {"version":3,"file":"bridge-provider-features.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/BridgeProviders/bridge-provider-features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gDAAgD,EAAE,MAAM,+BAA+B,CAAC;AAEjG;;;;;;;;;GASG;AAEH,iEAAiE;AACjE,MAAM,MAAM,gBAAgB,GAAG,MAAM,gDAAgD,CAAC;AAEtF,oCAAoC;AACpC,MAAM,WAAW,uBAAuB;IACpC,GAAG,EAAE,gBAAgB,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,uBAAuB,EAAE,CAAC;CACvC;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,kBAAkB,EAmCrD,CAAC;AAEX,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EACO,CAAC;AAEnE;;;GAGG;AACH,wBAAgB,gBAAgB,CAC5B,QAAQ,EAAE,gDAAgD,GAAG,IAAI,EACjE,GAAG,EAAE,gBAAgB,GACtB,OAAO,CAET;AAED,gDAAgD;AAChD,wBAAgB,gBAAgB,CAC5B,QAAQ,EAAE,gDAAgD,GAAG,IAAI,EACjE,GAAG,EAAE,gBAAgB,GACtB,OAAO,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACtB,QAAQ,EAAE,gDAAgD,GAAG,IAAI,EACjE,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE,OAAO,GACjB,gDAAgD,CAQlD;AAED,0CAA0C;AAC1C,wBAAgB,UAAU,CACtB,QAAQ,EAAE,gDAAgD,GAAG,IAAI,EACjE,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE,OAAO,GACjB,gDAAgD,CAElD;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,gDAAgD,GAAG,IAAI,GAClE,MAAM,CAGR;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,gDAAgD,GAAG,IAAI,GAClE,MAAM,CAER"}
@@ -5,49 +5,53 @@
5
5
  */
6
6
  export const BRIDGE_FEATURE_GROUPS = [
7
7
  {
8
- title: 'Join methods',
9
- icon: 'fa-door-open',
10
- features: [
11
- { key: 'OnDemandJoin', label: 'On-demand join', description: 'Join now from a supplied join URL / ID.' },
12
- { key: 'ScheduledJoin', label: 'Scheduled join', description: 'Join a known meeting at a future start time.' },
13
- { key: 'InviteJoin', label: 'Invite join', description: "Invited like a person via the agent's calendar / email identity." },
14
- { key: 'NativeInvite', label: 'Native invite', description: "A host adds the agent from inside the platform's own UI (marketplace app)." },
15
- { key: 'InboundRouting', label: 'Inbound routing', description: "Inbound calls / invites to the agent's identity route to the agent." },
16
- { key: 'OutboundDial', label: 'Outbound dial', description: 'Telephony: the agent can place outbound calls.' },
8
+ Title: 'Join methods',
9
+ Icon: 'fa-door-open',
10
+ Features: [
11
+ { Key: 'OnDemandJoin', Label: 'On-demand join', Description: 'Join now from a supplied join URL / ID.' },
12
+ { Key: 'ScheduledJoin', Label: 'Scheduled join', Description: 'Join a known meeting at a future start time.' },
13
+ { Key: 'InviteJoin', Label: 'Invite join', Description: "Invited like a person via the agent's calendar / email identity." },
14
+ { Key: 'NativeInvite', Label: 'Native invite', Description: "A host adds the agent from inside the platform's own UI (marketplace app)." },
15
+ { Key: 'InboundRouting', Label: 'Inbound routing', Description: "Inbound calls / invites to the agent's identity route to the agent." },
16
+ { Key: 'OutboundDial', Label: 'Outbound dial', Description: 'Telephony: the agent can place outbound calls.' },
17
17
  ],
18
18
  },
19
19
  {
20
- title: 'Media tracks',
21
- icon: 'fa-photo-film',
22
- features: [
23
- { key: 'AudioIn', label: 'Audio in', description: 'The agent hears the meeting / call.' },
24
- { key: 'AudioOut', label: 'Audio out', description: 'The agent speaks into the meeting / call.' },
25
- { key: 'VideoIn', label: 'Video in', description: "The agent sees participants' video." },
26
- { key: 'VideoOut', label: 'Video out', description: 'The agent shows video.' },
27
- { key: 'ScreenIn', label: 'Screen in', description: 'The agent sees a shared screen.' },
28
- { key: 'ScreenOut', label: 'Screen out', description: 'The agent shares a screen (e.g. a live demo).' },
20
+ Title: 'Media tracks',
21
+ Icon: 'fa-photo-film',
22
+ Features: [
23
+ { Key: 'AudioIn', Label: 'Audio in', Description: 'The agent hears the meeting / call.' },
24
+ { Key: 'AudioOut', Label: 'Audio out', Description: 'The agent speaks into the meeting / call.' },
25
+ { Key: 'VideoIn', Label: 'Video in', Description: "The agent sees participants' video." },
26
+ { Key: 'VideoOut', Label: 'Video out', Description: 'The agent shows video.' },
27
+ { Key: 'ScreenIn', Label: 'Screen in', Description: 'The agent sees a shared screen.' },
28
+ { Key: 'ScreenOut', Label: 'Screen out', Description: 'The agent shares a screen (e.g. a live demo).' },
29
29
  ],
30
30
  },
31
31
  {
32
- title: 'Signals & telephony',
33
- icon: 'fa-tower-broadcast',
34
- features: [
35
- { key: 'SpeakerDiarization', label: 'Speaker diarization', description: 'Inbound audio carries per-speaker labels.' },
36
- { key: 'DTMF', label: 'DTMF', description: 'Telephony: send / receive DTMF tones.' },
37
- { key: 'CallTransfer', label: 'Call transfer', description: 'Telephony: transfer a call to another party.' },
38
- { key: 'Recording', label: 'Recording', description: 'Request platform recording (subject to consent handling).' },
32
+ Title: 'Signals & telephony',
33
+ Icon: 'fa-tower-broadcast',
34
+ Features: [
35
+ { Key: 'SpeakerDiarization', Label: 'Speaker diarization', Description: 'Inbound audio carries per-speaker labels.' },
36
+ { Key: 'DTMF', Label: 'DTMF', Description: 'Telephony: send / receive DTMF tones.' },
37
+ { Key: 'CallTransfer', Label: 'Call transfer', Description: 'Telephony: transfer a call to another party.' },
38
+ { Key: 'Recording', Label: 'Recording', Description: 'Request platform recording (subject to consent handling).' },
39
39
  ],
40
40
  },
41
41
  ];
42
42
  /** Every feature key in render order — handy for counting / iteration. */
43
- export const BRIDGE_FEATURE_KEYS = BRIDGE_FEATURE_GROUPS.flatMap(g => g.features.map(f => f.key));
43
+ export const BRIDGE_FEATURE_KEYS = BRIDGE_FEATURE_GROUPS.flatMap(g => g.Features.map(f => f.Key));
44
44
  /**
45
45
  * Read a single flag from a (possibly null) features object. Absent or false
46
46
  * both resolve to false.
47
47
  */
48
- export function isFeatureEnabled(features, key) {
48
+ export function IsFeatureEnabled(features, key) {
49
49
  return features?.[key] === true;
50
50
  }
51
+ /** @deprecated Use {@link IsFeatureEnabled}. */
52
+ export function isFeatureEnabled(features, key) {
53
+ return IsFeatureEnabled(features, key);
54
+ }
51
55
  /**
52
56
  * Return a NEW features object with `key` set to `enabled`. When disabling, the
53
57
  * key is omitted entirely (rather than persisted as `false`) so the stored JSON
@@ -56,7 +60,7 @@ export function isFeatureEnabled(features, key) {
56
60
  * Never mutates the input; the typed accessor's cache invalidation depends on a
57
61
  * fresh object reference being assigned back through the setter.
58
62
  */
59
- export function setFeature(features, key, enabled) {
63
+ export function SetFeature(features, key, enabled) {
60
64
  const next = { ...(features ?? {}) };
61
65
  if (enabled) {
62
66
  next[key] = true;
@@ -66,10 +70,18 @@ export function setFeature(features, key, enabled) {
66
70
  }
67
71
  return next;
68
72
  }
73
+ /** @deprecated Use {@link SetFeature}. */
74
+ export function setFeature(features, key, enabled) {
75
+ return SetFeature(features, key, enabled);
76
+ }
69
77
  /** Count of enabled flags across all groups — used for the panel header badge. */
70
- export function countEnabledFeatures(features) {
78
+ export function CountEnabledFeatures(features) {
71
79
  if (!features)
72
80
  return 0;
73
81
  return BRIDGE_FEATURE_KEYS.reduce((n, key) => (features[key] === true ? n + 1 : n), 0);
74
82
  }
83
+ /** @deprecated Use {@link CountEnabledFeatures}. */
84
+ export function countEnabledFeatures(features) {
85
+ return CountEnabledFeatures(features);
86
+ }
75
87
  //# sourceMappingURL=bridge-provider-features.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bridge-provider-features.js","sourceRoot":"","sources":["../../../../src/lib/custom/BridgeProviders/bridge-provider-features.ts"],"names":[],"mappings":"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","sourcesContent":["import { MJAIBridgeProviderEntity_IBridgeProviderFeatures } from '@memberjunction/core-entities';\n\n/**\n * Pure, framework-free model + helpers for the AI Bridge Provider capability\n * editor. Kept separate from the Angular component so the object↔toggle mapping\n * is unit-testable without an Angular harness.\n *\n * The capability flags live in `AIBridgeProvider.SupportedFeatures` as JSON,\n * exposed via the typed `SupportedFeaturesObject` accessor\n * (`IBridgeProviderFeatures`). Every key is an optional boolean; absent/false\n * both mean \"unsupported\".\n */\n\n/** A single capability flag key on the typed features object. */\nexport type BridgeFeatureKey = keyof MJAIBridgeProviderEntity_IBridgeProviderFeatures;\n\n/** One toggle row in the editor. */\nexport interface BridgeFeatureDescriptor {\n key: BridgeFeatureKey;\n label: string;\n description: string;\n}\n\n/** A labeled group of toggle rows. */\nexport interface BridgeFeatureGroup {\n title: string;\n icon: string;\n features: BridgeFeatureDescriptor[];\n}\n\n/**\n * The full editor layout: the 16 flags grouped the way the IBridgeProviderFeatures\n * interface documents them (join methods / media tracks / signals & telephony).\n * Order here is the render order.\n */\nexport const BRIDGE_FEATURE_GROUPS: readonly BridgeFeatureGroup[] = [\n {\n title: 'Join methods',\n icon: 'fa-door-open',\n features: [\n { key: 'OnDemandJoin', label: 'On-demand join', description: 'Join now from a supplied join URL / ID.' },\n { key: 'ScheduledJoin', label: 'Scheduled join', description: 'Join a known meeting at a future start time.' },\n { key: 'InviteJoin', label: 'Invite join', description: \"Invited like a person via the agent's calendar / email identity.\" },\n { key: 'NativeInvite', label: 'Native invite', description: \"A host adds the agent from inside the platform's own UI (marketplace app).\" },\n { key: 'InboundRouting', label: 'Inbound routing', description: \"Inbound calls / invites to the agent's identity route to the agent.\" },\n { key: 'OutboundDial', label: 'Outbound dial', description: 'Telephony: the agent can place outbound calls.' },\n ],\n },\n {\n title: 'Media tracks',\n icon: 'fa-photo-film',\n features: [\n { key: 'AudioIn', label: 'Audio in', description: 'The agent hears the meeting / call.' },\n { key: 'AudioOut', label: 'Audio out', description: 'The agent speaks into the meeting / call.' },\n { key: 'VideoIn', label: 'Video in', description: \"The agent sees participants' video.\" },\n { key: 'VideoOut', label: 'Video out', description: 'The agent shows video.' },\n { key: 'ScreenIn', label: 'Screen in', description: 'The agent sees a shared screen.' },\n { key: 'ScreenOut', label: 'Screen out', description: 'The agent shares a screen (e.g. a live demo).' },\n ],\n },\n {\n title: 'Signals & telephony',\n icon: 'fa-tower-broadcast',\n features: [\n { key: 'SpeakerDiarization', label: 'Speaker diarization', description: 'Inbound audio carries per-speaker labels.' },\n { key: 'DTMF', label: 'DTMF', description: 'Telephony: send / receive DTMF tones.' },\n { key: 'CallTransfer', label: 'Call transfer', description: 'Telephony: transfer a call to another party.' },\n { key: 'Recording', label: 'Recording', description: 'Request platform recording (subject to consent handling).' },\n ],\n },\n] as const;\n\n/** Every feature key in render order — handy for counting / iteration. */\nexport const BRIDGE_FEATURE_KEYS: readonly BridgeFeatureKey[] =\n BRIDGE_FEATURE_GROUPS.flatMap(g => g.features.map(f => f.key));\n\n/**\n * Read a single flag from a (possibly null) features object. Absent or false\n * both resolve to false.\n */\nexport function isFeatureEnabled(\n features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null,\n key: BridgeFeatureKey,\n): boolean {\n return features?.[key] === true;\n}\n\n/**\n * Return a NEW features object with `key` set to `enabled`. When disabling, the\n * key is omitted entirely (rather than persisted as `false`) so the stored JSON\n * stays minimal — matching the \"NULL/omitted = unsupported\" convention.\n *\n * Never mutates the input; the typed accessor's cache invalidation depends on a\n * fresh object reference being assigned back through the setter.\n */\nexport function setFeature(\n features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null,\n key: BridgeFeatureKey,\n enabled: boolean,\n): MJAIBridgeProviderEntity_IBridgeProviderFeatures {\n const next: MJAIBridgeProviderEntity_IBridgeProviderFeatures = { ...(features ?? {}) };\n if (enabled) {\n next[key] = true;\n } else {\n delete next[key];\n }\n return next;\n}\n\n/** Count of enabled flags across all groups — used for the panel header badge. */\nexport function countEnabledFeatures(\n features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null,\n): number {\n if (!features) return 0;\n return BRIDGE_FEATURE_KEYS.reduce((n, key) => (features[key] === true ? n + 1 : n), 0);\n}\n"]}
1
+ {"version":3,"file":"bridge-provider-features.js","sourceRoot":"","sources":["../../../../src/lib/custom/BridgeProviders/bridge-provider-features.ts"],"names":[],"mappings":"AA8BA;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAkC;IAChE;QACI,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE;YACN,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,yCAAyC,EAAE;YACxG,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,8CAA8C,EAAE;YAC9G,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,kEAAkE,EAAE;YAC5H,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,4EAA4E,EAAE;YAC1I,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,qEAAqE,EAAE;YACvI,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,gDAAgD,EAAE;SACjH;KACJ;IACD;QACI,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE;YACN,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,qCAAqC,EAAE;YACzF,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,2CAA2C,EAAE;YACjG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,qCAAqC,EAAE;YACzF,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,wBAAwB,EAAE;YAC9E,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,iCAAiC,EAAE;YACvF,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,+CAA+C,EAAE;SAC1G;KACJ;IACD;QACI,KAAK,EAAE,qBAAqB;QAC5B,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE;YACN,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,2CAA2C,EAAE;YACrH,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,uCAAuC,EAAE;YACpF,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,8CAA8C,EAAE;YAC5G,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,2DAA2D,EAAE;SACrH;KACJ;CACK,CAAC;AAEX,0EAA0E;AAC1E,MAAM,CAAC,MAAM,mBAAmB,GAC5B,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAEnE;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC5B,QAAiE,EACjE,GAAqB;IAErB,OAAO,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AACpC,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,gBAAgB,CAC5B,QAAiE,EACjE,GAAqB;IAErB,OAAO,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACtB,QAAiE,EACjE,GAAqB,EACrB,OAAgB;IAEhB,MAAM,IAAI,GAAqD,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;IACvF,IAAI,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACrB,CAAC;SAAM,CAAC;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,UAAU,CACtB,QAAiE,EACjE,GAAqB,EACrB,OAAgB;IAEhB,OAAO,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,oBAAoB,CAChC,QAAiE;IAEjE,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC;IACxB,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3F,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,oBAAoB,CAChC,QAAiE;IAEjE,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAC1C,CAAC","sourcesContent":["import { MJAIBridgeProviderEntity_IBridgeProviderFeatures } from '@memberjunction/core-entities';\n\n/**\n * Pure, framework-free model + helpers for the AI Bridge Provider capability\n * editor. Kept separate from the Angular component so the object↔toggle mapping\n * is unit-testable without an Angular harness.\n *\n * The capability flags live in `AIBridgeProvider.SupportedFeatures` as JSON,\n * exposed via the typed `SupportedFeaturesObject` accessor\n * (`IBridgeProviderFeatures`). Every key is an optional boolean; absent/false\n * both mean \"unsupported\".\n */\n\n/** A single capability flag key on the typed features object. */\nexport type BridgeFeatureKey = keyof MJAIBridgeProviderEntity_IBridgeProviderFeatures;\n\n/** One toggle row in the editor. */\nexport interface BridgeFeatureDescriptor {\n Key: BridgeFeatureKey;\n Label: string;\n Description: string;\n}\n\n/** A labeled group of toggle rows. */\nexport interface BridgeFeatureGroup {\n Title: string;\n Icon: string;\n Features: BridgeFeatureDescriptor[];\n}\n\n/**\n * The full editor layout: the 16 flags grouped the way the IBridgeProviderFeatures\n * interface documents them (join methods / media tracks / signals & telephony).\n * Order here is the render order.\n */\nexport const BRIDGE_FEATURE_GROUPS: readonly BridgeFeatureGroup[] = [\n {\n Title: 'Join methods',\n Icon: 'fa-door-open',\n Features: [\n { Key: 'OnDemandJoin', Label: 'On-demand join', Description: 'Join now from a supplied join URL / ID.' },\n { Key: 'ScheduledJoin', Label: 'Scheduled join', Description: 'Join a known meeting at a future start time.' },\n { Key: 'InviteJoin', Label: 'Invite join', Description: \"Invited like a person via the agent's calendar / email identity.\" },\n { Key: 'NativeInvite', Label: 'Native invite', Description: \"A host adds the agent from inside the platform's own UI (marketplace app).\" },\n { Key: 'InboundRouting', Label: 'Inbound routing', Description: \"Inbound calls / invites to the agent's identity route to the agent.\" },\n { Key: 'OutboundDial', Label: 'Outbound dial', Description: 'Telephony: the agent can place outbound calls.' },\n ],\n },\n {\n Title: 'Media tracks',\n Icon: 'fa-photo-film',\n Features: [\n { Key: 'AudioIn', Label: 'Audio in', Description: 'The agent hears the meeting / call.' },\n { Key: 'AudioOut', Label: 'Audio out', Description: 'The agent speaks into the meeting / call.' },\n { Key: 'VideoIn', Label: 'Video in', Description: \"The agent sees participants' video.\" },\n { Key: 'VideoOut', Label: 'Video out', Description: 'The agent shows video.' },\n { Key: 'ScreenIn', Label: 'Screen in', Description: 'The agent sees a shared screen.' },\n { Key: 'ScreenOut', Label: 'Screen out', Description: 'The agent shares a screen (e.g. a live demo).' },\n ],\n },\n {\n Title: 'Signals & telephony',\n Icon: 'fa-tower-broadcast',\n Features: [\n { Key: 'SpeakerDiarization', Label: 'Speaker diarization', Description: 'Inbound audio carries per-speaker labels.' },\n { Key: 'DTMF', Label: 'DTMF', Description: 'Telephony: send / receive DTMF tones.' },\n { Key: 'CallTransfer', Label: 'Call transfer', Description: 'Telephony: transfer a call to another party.' },\n { Key: 'Recording', Label: 'Recording', Description: 'Request platform recording (subject to consent handling).' },\n ],\n },\n] as const;\n\n/** Every feature key in render order — handy for counting / iteration. */\nexport const BRIDGE_FEATURE_KEYS: readonly BridgeFeatureKey[] =\n BRIDGE_FEATURE_GROUPS.flatMap(g => g.Features.map(f => f.Key));\n\n/**\n * Read a single flag from a (possibly null) features object. Absent or false\n * both resolve to false.\n */\nexport function IsFeatureEnabled(\n features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null,\n key: BridgeFeatureKey,\n): boolean {\n return features?.[key] === true;\n}\n\n/** @deprecated Use {@link IsFeatureEnabled}. */\nexport function isFeatureEnabled(\n features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null,\n key: BridgeFeatureKey,\n): boolean {\n return IsFeatureEnabled(features, key);\n}\n\n/**\n * Return a NEW features object with `key` set to `enabled`. When disabling, the\n * key is omitted entirely (rather than persisted as `false`) so the stored JSON\n * stays minimal — matching the \"NULL/omitted = unsupported\" convention.\n *\n * Never mutates the input; the typed accessor's cache invalidation depends on a\n * fresh object reference being assigned back through the setter.\n */\nexport function SetFeature(\n features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null,\n key: BridgeFeatureKey,\n enabled: boolean,\n): MJAIBridgeProviderEntity_IBridgeProviderFeatures {\n const next: MJAIBridgeProviderEntity_IBridgeProviderFeatures = { ...(features ?? {}) };\n if (enabled) {\n next[key] = true;\n } else {\n delete next[key];\n }\n return next;\n}\n\n/** @deprecated Use {@link SetFeature}. */\nexport function setFeature(\n features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null,\n key: BridgeFeatureKey,\n enabled: boolean,\n): MJAIBridgeProviderEntity_IBridgeProviderFeatures {\n return SetFeature(features, key, enabled);\n}\n\n/** Count of enabled flags across all groups — used for the panel header badge. */\nexport function CountEnabledFeatures(\n features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null,\n): number {\n if (!features) return 0;\n return BRIDGE_FEATURE_KEYS.reduce((n, key) => (features[key] === true ? n + 1 : n), 0);\n}\n\n/** @deprecated Use {@link CountEnabledFeatures}. */\nexport function countEnabledFeatures(\n features: MJAIBridgeProviderEntity_IBridgeProviderFeatures | null,\n): number {\n return CountEnabledFeatures(features);\n}\n"]}
@@ -8,11 +8,11 @@ import { Component } from '@angular/core';
8
8
  import { RegisterClass } from '@memberjunction/global';
9
9
  import { BaseFormComponent } from '@memberjunction/ng-base-forms';
10
10
  import { MJAIBridgeProviderFormComponent } from '../../generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component';
11
- import { BRIDGE_FEATURE_GROUPS, countEnabledFeatures, isFeatureEnabled, setFeature, } from './bridge-provider-features';
11
+ import { BRIDGE_FEATURE_GROUPS, CountEnabledFeatures, IsFeatureEnabled, SetFeature, } from './bridge-provider-features';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "@memberjunction/ng-base-forms";
14
- const _forTrack0 = ($index, $item) => $item.title;
15
- const _forTrack1 = ($index, $item) => $item.key;
14
+ const _forTrack0 = ($index, $item) => $item.Title;
15
+ const _forTrack1 = ($index, $item) => $item.Key;
16
16
  function MJAIBridgeProviderFormComponentExtended_Conditional_0_For_17_For_7_Template(rf, ctx) { if (rf & 1) {
17
17
  const _r3 = i0.ɵɵgetCurrentView();
18
18
  i0.ɵɵelementStart(0, "div", 26)(1, "div", 27)(2, "span", 28);
@@ -22,17 +22,17 @@ function MJAIBridgeProviderFormComponentExtended_Conditional_0_For_17_For_7_Temp
22
22
  i0.ɵɵtext(5);
23
23
  i0.ɵɵelementEnd()();
24
24
  i0.ɵɵelementStart(6, "div", 30);
25
- i0.ɵɵlistener("click", function MJAIBridgeProviderFormComponentExtended_Conditional_0_For_17_For_7_Template_div_click_6_listener() { const feature_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleFeature(feature_r4.key, !ctx_r1.IsFeatureOn(feature_r4.key))); });
25
+ i0.ɵɵlistener("click", function MJAIBridgeProviderFormComponentExtended_Conditional_0_For_17_For_7_Template_div_click_6_listener() { const feature_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleFeature(feature_r4.Key, !ctx_r1.IsFeatureOn(feature_r4.Key))); });
26
26
  i0.ɵɵelementEnd()();
27
27
  } if (rf & 2) {
28
28
  const feature_r4 = ctx.$implicit;
29
29
  const ctx_r1 = i0.ɵɵnextContext(3);
30
30
  i0.ɵɵadvance(3);
31
- i0.ɵɵtextInterpolate(feature_r4.label);
31
+ i0.ɵɵtextInterpolate(feature_r4.Label);
32
32
  i0.ɵɵadvance(2);
33
- i0.ɵɵtextInterpolate(feature_r4.description);
33
+ i0.ɵɵtextInterpolate(feature_r4.Description);
34
34
  i0.ɵɵadvance();
35
- i0.ɵɵclassProp("on", ctx_r1.IsFeatureOn(feature_r4.key))("disabled", !ctx_r1.EditMode);
35
+ i0.ɵɵclassProp("on", ctx_r1.IsFeatureOn(feature_r4.Key))("disabled", !ctx_r1.EditMode);
36
36
  } }
37
37
  function MJAIBridgeProviderFormComponentExtended_Conditional_0_For_17_Template(rf, ctx) { if (rf & 1) {
38
38
  i0.ɵɵelementStart(0, "div", 13)(1, "div", 24);
@@ -46,11 +46,11 @@ function MJAIBridgeProviderFormComponentExtended_Conditional_0_For_17_Template(r
46
46
  } if (rf & 2) {
47
47
  const group_r5 = ctx.$implicit;
48
48
  i0.ɵɵadvance(2);
49
- i0.ɵɵclassMap(i0.ɵɵinterpolate1("fa-solid ", group_r5.icon));
49
+ i0.ɵɵclassMap(i0.ɵɵinterpolate1("fa-solid ", group_r5.Icon));
50
50
  i0.ɵɵadvance(2);
51
- i0.ɵɵtextInterpolate(group_r5.title);
51
+ i0.ɵɵtextInterpolate(group_r5.Title);
52
52
  i0.ɵɵadvance(2);
53
- i0.ɵɵrepeater(group_r5.features);
53
+ i0.ɵɵrepeater(group_r5.Features);
54
54
  } }
55
55
  function MJAIBridgeProviderFormComponentExtended_Conditional_0_Conditional_25_Template(rf, ctx) { if (rf & 1) {
56
56
  const _r6 = i0.ɵɵgetCurrentView();
@@ -216,11 +216,11 @@ let MJAIBridgeProviderFormComponentExtended = class MJAIBridgeProviderFormCompon
216
216
  }
217
217
  /** Count of enabled capabilities — drives the panel badge. */
218
218
  get EnabledFeatureCount() {
219
- return countEnabledFeatures(this.record?.SupportedFeaturesObject ?? null);
219
+ return CountEnabledFeatures(this.record?.SupportedFeaturesObject ?? null);
220
220
  }
221
221
  /** Read a single capability flag for the template. */
222
222
  IsFeatureOn(key) {
223
- return isFeatureEnabled(this.record?.SupportedFeaturesObject ?? null, key);
223
+ return IsFeatureEnabled(this.record?.SupportedFeaturesObject ?? null, key);
224
224
  }
225
225
  /**
226
226
  * Toggle a capability flag. Reads the current typed object, builds a fresh
@@ -231,7 +231,7 @@ let MJAIBridgeProviderFormComponentExtended = class MJAIBridgeProviderFormCompon
231
231
  if (!this.record || !this.EditMode) {
232
232
  return;
233
233
  }
234
- this.record.SupportedFeaturesObject = setFeature(this.record.SupportedFeaturesObject ?? null, key, enabled);
234
+ this.record.SupportedFeaturesObject = SetFeature(this.record.SupportedFeaturesObject ?? null, key, enabled);
235
235
  }
236
236
  static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJAIBridgeProviderFormComponentExtended_BaseFactory; return function MJAIBridgeProviderFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJAIBridgeProviderFormComponentExtended_BaseFactory || (ɵMJAIBridgeProviderFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJAIBridgeProviderFormComponentExtended)))(__ngFactoryType__ || MJAIBridgeProviderFormComponentExtended); }; })(); }
237
237
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJAIBridgeProviderFormComponentExtended, selectors: [["mj-ai-bridge-provider-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, "Record", "FormComponent"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent"], ["Slot", "before-fields", 3, "Entity", "Record", "FormComponent", "FormContext"], ["SectionKey", "providerInformation", "SectionName", "Provider Information", "Icon", "fa fa-info-circle", 3, "Form", "FormContext"], ["FieldName", "Name", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Description", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "providerConfiguration", "SectionName", "Provider Configuration", "Icon", "fa fa-sliders-h", 3, "Form", "FormContext"], ["FieldName", "BridgeType", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "DriverClass", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Status", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Configuration", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "supportedFeatures", "SectionName", "Supported Features", "Icon", "fa fa-toggle-on", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], [1, "bp-intro"], [1, "bp-group"], ["SectionKey", "configurationSchema", "SectionName", "Configuration Schema", "Icon", "fa fa-code", 3, "Form", "FormContext", "DefaultExpanded"], ["FieldName", "ConfigSchema", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "systemMetadata", "SectionName", "System Metadata", "Icon", "fa fa-database", 3, "Form", "FormContext", "DefaultExpanded"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["Slot", "after-fields", 3, "Entity", "Record", "FormComponent", "FormContext"], ["SectionKey", "mJAIAgentSessionBridges", "SectionName", "AI Agent Session Bridges", "Icon", "fa fa-network-wired", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJAIBridgeProviderChannels", "SectionName", "AI Bridge Provider Channels", "Icon", "fa fa-project-diagram", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJAIBridgeAgentIdentities", "SectionName", "AI Bridge Agent Identities", "Icon", "fa fa-id-card", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["Slot", "after-related", 3, "Entity", "Record", "FormComponent", "FormContext"], [1, "bp-group-header"], [1, "bp-feature-list"], [1, "bp-feature-row"], [1, "label"], [1, "t"], [1, "d"], [1, "bp-switch", 3, "click"], [3, "Navigate", "AfterDataLoad", "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"]], template: function MJAIBridgeProviderFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
@@ -246,7 +246,7 @@ MJAIBridgeProviderFormComponentExtended = __decorate([
246
246
  export { MJAIBridgeProviderFormComponentExtended };
247
247
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIBridgeProviderFormComponentExtended, [{
248
248
  type: Component,
249
- args: [{ standalone: false, selector: 'mj-ai-bridge-provider-form', template: "@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 <!-- Provider Information -->\n <mj-collapsible-panel\n SectionKey=\"providerInformation\"\n SectionName=\"Provider Information\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Name\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Description\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Provider Configuration -->\n <mj-collapsible-panel\n SectionKey=\"providerConfiguration\"\n SectionName=\"Provider Configuration\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BridgeType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"DriverClass\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\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=\"Configuration\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Supported Features \u2014 capability editor (the standout custom UI) -->\n <mj-collapsible-panel\n SectionKey=\"supportedFeatures\"\n SectionName=\"Supported Features\"\n Icon=\"fa fa-toggle-on\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"EnabledFeatureCount\"\n [DefaultExpanded]=\"true\">\n\n <p class=\"bp-intro\">\n The platform's declared capabilities. The engine gates optional driver calls on these flags \u2014\n the base driver throws <code>BridgeCapabilityNotSupportedError</code> when a feature is claimed but\n unimplemented. Leave a capability off if the platform / driver does not support it.\n </p>\n\n @for (group of FeatureGroups; track group.title) {\n <div class=\"bp-group\">\n <div class=\"bp-group-header\">\n <i class=\"fa-solid {{ group.icon }}\"></i>\n <span>{{ group.title }}</span>\n </div>\n <div class=\"bp-feature-list\">\n @for (feature of group.features; track feature.key) {\n <div class=\"bp-feature-row\">\n <div class=\"label\">\n <span class=\"t\">{{ feature.label }}</span>\n <span class=\"d\">{{ feature.description }}</span>\n </div>\n <div class=\"bp-switch\"\n [class.on]=\"IsFeatureOn(feature.key)\"\n [class.disabled]=\"!EditMode\"\n (click)=\"ToggleFeature(feature.key, !IsFeatureOn(feature.key))\">\n </div>\n </div>\n }\n </div>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Configuration Schema -->\n <mj-collapsible-panel\n SectionKey=\"configurationSchema\"\n SectionName=\"Configuration Schema\"\n Icon=\"fa fa-code\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ConfigSchema\" Type=\"code\" [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-database\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\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 <!-- ========================================\n RELATED ENTITY PANELS\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"mJAIAgentSessionBridges\"\n SectionName=\"AI Agent Session Bridges\"\n Icon=\"fa fa-network-wired\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIAgentSessionBridges')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Session Bridges','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Session Bridges')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIAgentSessionBridges')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIAgentSessionBridges', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJAIBridgeProviderChannels\"\n SectionName=\"AI Bridge Provider Channels\"\n Icon=\"fa fa-project-diagram\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIBridgeProviderChannels')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Bridge Provider Channels','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Bridge Provider Channels')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIBridgeProviderChannels')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIBridgeProviderChannels', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJAIBridgeAgentIdentities\"\n SectionName=\"AI Bridge Agent Identities\"\n Icon=\"fa fa-id-card\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIBridgeAgentIdentities')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Bridge Agent Identities','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Bridge Agent Identities')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIBridgeAgentIdentities')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIBridgeAgentIdentities', $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", styles: ["/* AI Bridge Provider capability editor \u2014 labeled-toggle groups for the\n 16 SupportedFeatures flags. All colors via design tokens (dark-mode safe). */\n\n.bp-intro {\n font-size: 12px;\n line-height: 1.5;\n color: var(--mj-text-secondary);\n margin: 0 0 14px;\n max-width: 92ch;\n}\n.bp-intro code {\n font-family: ui-monospace, monospace;\n font-size: 11px;\n padding: 1px 5px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n.bp-group { margin-bottom: 18px; }\n.bp-group:last-child { margin-bottom: 0; }\n\n.bp-group-header {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n font-weight: 700;\n color: var(--mj-text-muted);\n margin: 0 0 8px;\n}\n.bp-group-header i { color: var(--mj-brand-primary); }\n\n.bp-feature-list {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n.bp-feature-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n padding: 10px 14px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n.bp-feature-row:first-child { border-top: 0; }\n\n.bp-feature-row .label { display: flex; flex-direction: column; gap: 2px; min-width: 0; }\n.bp-feature-row .label .t { font-size: 13px; font-weight: 600; color: var(--mj-text-primary); }\n.bp-feature-row .label .d { font-size: 11px; color: var(--mj-text-muted); line-height: 1.35; }\n\n.bp-switch {\n position: relative;\n flex: 0 0 auto;\n width: 36px;\n height: 20px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n cursor: pointer;\n transition: background 0.15s;\n}\n.bp-switch::after {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--mj-bg-surface);\n transition: left 0.15s;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n.bp-switch.on { background: var(--mj-brand-primary); }\n.bp-switch.on::after { left: 18px; }\n.bp-switch.disabled { opacity: 0.5; cursor: not-allowed; }\n"] }]
249
+ args: [{ standalone: false, selector: 'mj-ai-bridge-provider-form', template: "@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 <!-- Provider Information -->\n <mj-collapsible-panel\n SectionKey=\"providerInformation\"\n SectionName=\"Provider Information\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Name\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Description\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Provider Configuration -->\n <mj-collapsible-panel\n SectionKey=\"providerConfiguration\"\n SectionName=\"Provider Configuration\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BridgeType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"DriverClass\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\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=\"Configuration\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Supported Features \u2014 capability editor (the standout custom UI) -->\n <mj-collapsible-panel\n SectionKey=\"supportedFeatures\"\n SectionName=\"Supported Features\"\n Icon=\"fa fa-toggle-on\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"EnabledFeatureCount\"\n [DefaultExpanded]=\"true\">\n\n <p class=\"bp-intro\">\n The platform's declared capabilities. The engine gates optional driver calls on these flags \u2014\n the base driver throws <code>BridgeCapabilityNotSupportedError</code> when a feature is claimed but\n unimplemented. Leave a capability off if the platform / driver does not support it.\n </p>\n\n @for (group of FeatureGroups; track group.Title) {\n <div class=\"bp-group\">\n <div class=\"bp-group-header\">\n <i class=\"fa-solid {{ group.Icon }}\"></i>\n <span>{{ group.Title }}</span>\n </div>\n <div class=\"bp-feature-list\">\n @for (feature of group.Features; track feature.Key) {\n <div class=\"bp-feature-row\">\n <div class=\"label\">\n <span class=\"t\">{{ feature.Label }}</span>\n <span class=\"d\">{{ feature.Description }}</span>\n </div>\n <div class=\"bp-switch\"\n [class.on]=\"IsFeatureOn(feature.Key)\"\n [class.disabled]=\"!EditMode\"\n (click)=\"ToggleFeature(feature.Key, !IsFeatureOn(feature.Key))\">\n </div>\n </div>\n }\n </div>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Configuration Schema -->\n <mj-collapsible-panel\n SectionKey=\"configurationSchema\"\n SectionName=\"Configuration Schema\"\n Icon=\"fa fa-code\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ConfigSchema\" Type=\"code\" [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-database\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\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 <!-- ========================================\n RELATED ENTITY PANELS\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"mJAIAgentSessionBridges\"\n SectionName=\"AI Agent Session Bridges\"\n Icon=\"fa fa-network-wired\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIAgentSessionBridges')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Session Bridges','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Session Bridges')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIAgentSessionBridges')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIAgentSessionBridges', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJAIBridgeProviderChannels\"\n SectionName=\"AI Bridge Provider Channels\"\n Icon=\"fa fa-project-diagram\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIBridgeProviderChannels')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Bridge Provider Channels','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Bridge Provider Channels')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIBridgeProviderChannels')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIBridgeProviderChannels', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJAIBridgeAgentIdentities\"\n SectionName=\"AI Bridge Agent Identities\"\n Icon=\"fa fa-id-card\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIBridgeAgentIdentities')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Bridge Agent Identities','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Bridge Agent Identities')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIBridgeAgentIdentities')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIBridgeAgentIdentities', $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", styles: ["/* AI Bridge Provider capability editor \u2014 labeled-toggle groups for the\n 16 SupportedFeatures flags. All colors via design tokens (dark-mode safe). */\n\n.bp-intro {\n font-size: 12px;\n line-height: 1.5;\n color: var(--mj-text-secondary);\n margin: 0 0 14px;\n max-width: 92ch;\n}\n.bp-intro code {\n font-family: ui-monospace, monospace;\n font-size: 11px;\n padding: 1px 5px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n.bp-group { margin-bottom: 18px; }\n.bp-group:last-child { margin-bottom: 0; }\n\n.bp-group-header {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n font-weight: 700;\n color: var(--mj-text-muted);\n margin: 0 0 8px;\n}\n.bp-group-header i { color: var(--mj-brand-primary); }\n\n.bp-feature-list {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n.bp-feature-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n padding: 10px 14px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n.bp-feature-row:first-child { border-top: 0; }\n\n.bp-feature-row .label { display: flex; flex-direction: column; gap: 2px; min-width: 0; }\n.bp-feature-row .label .t { font-size: 13px; font-weight: 600; color: var(--mj-text-primary); }\n.bp-feature-row .label .d { font-size: 11px; color: var(--mj-text-muted); line-height: 1.35; }\n\n.bp-switch {\n position: relative;\n flex: 0 0 auto;\n width: 36px;\n height: 20px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n cursor: pointer;\n transition: background 0.15s;\n}\n.bp-switch::after {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--mj-bg-surface);\n transition: left 0.15s;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n.bp-switch.on { background: var(--mj-brand-primary); }\n.bp-switch.on::after { left: 18px; }\n.bp-switch.disabled { opacity: 0.5; cursor: not-allowed; }\n"] }]
250
250
  }], null, null); })();
251
251
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIBridgeProviderFormComponentExtended, { className: "MJAIBridgeProviderFormComponentExtended", filePath: "src/lib/custom/BridgeProviders/bridge-provider-form.component.ts", lineNumber: 39 }); })();
252
252
  /** Tree-shake guard — invoked from the custom-forms module loader. */
@@ -1 +1 @@
1
- {"version":3,"file":"bridge-provider-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/BridgeProviders/bridge-provider-form.component.ts","../../../../src/lib/custom/BridgeProviders/bridge-provider-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 { MJAIBridgeProviderEntity } from '@memberjunction/core-entities';\nimport { MJAIBridgeProviderFormComponent } from '../../generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component';\nimport {\n BRIDGE_FEATURE_GROUPS,\n BridgeFeatureGroup,\n BridgeFeatureKey,\n countEnabledFeatures,\n isFeatureEnabled,\n setFeature,\n} from './bridge-provider-features';\n\n/**\n * Custom form for 'MJ: AI Bridge Providers' (Pattern 2 — full override of the\n * generated form). The standout addition is a **capability editor**: the 16\n * `SupportedFeatures` flags rendered as labeled toggles, grouped into Join\n * methods / Media tracks / Signals & telephony.\n *\n * The toggles bind through the entity's typed `SupportedFeaturesObject`\n * accessor (which serializes to/from the `SupportedFeatures` JSON column). On\n * each toggle we read the current object, produce a fresh object via the pure\n * `setFeature` helper, and write it back through the setter — a fresh reference\n * is required so the accessor's parse-cache invalidates and dirty tracking\n * fires. Disabling omits the key (matching \"NULL/omitted = unsupported\").\n *\n * The remaining provider fields (Name / Description / BridgeType / DriverClass\n * / Status / Configuration / ConfigSchema) and the related-entity grids keep\n * the generated panels.\n */\n@RegisterClass(BaseFormComponent, 'MJ: AI Bridge Providers')\n@Component({\n standalone: false,\n selector: 'mj-ai-bridge-provider-form',\n templateUrl: './bridge-provider-form.component.html',\n styleUrls: ['./bridge-provider-form.component.css'],\n})\nexport class MJAIBridgeProviderFormComponentExtended extends MJAIBridgeProviderFormComponent {\n public override record!: MJAIBridgeProviderEntity;\n\n /** Static editor layout (16 flags, 3 groups). */\n public readonly FeatureGroups: readonly BridgeFeatureGroup[] = BRIDGE_FEATURE_GROUPS;\n\n /**\n * Register section state for the custom layout. We don't call\n * `super.ngOnInit()`'s `initSections` because this form restructures the\n * sections (adds `supportedFeatures` + `configurationSchema`, splits the\n * generated \"Technical Capabilities\" panel), so we register our own keys.\n */\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n this.initSections([\n { sectionKey: 'providerInformation', sectionName: 'Provider Information', isExpanded: true },\n { sectionKey: 'providerConfiguration', sectionName: 'Provider Configuration', isExpanded: true },\n { sectionKey: 'supportedFeatures', sectionName: 'Supported Features', isExpanded: true },\n { sectionKey: 'configurationSchema', sectionName: 'Configuration Schema', isExpanded: false },\n { sectionKey: 'systemMetadata', sectionName: 'System Metadata', isExpanded: false },\n { sectionKey: 'mJAIAgentSessionBridges', sectionName: 'AI Agent Session Bridges', isExpanded: false },\n { sectionKey: 'mJAIBridgeProviderChannels', sectionName: 'AI Bridge Provider Channels', isExpanded: false },\n { sectionKey: 'mJAIBridgeAgentIdentities', sectionName: 'AI Bridge Agent Identities', isExpanded: false },\n ]);\n }\n\n /** Count of enabled capabilities — drives the panel badge. */\n public get EnabledFeatureCount(): number {\n return countEnabledFeatures(this.record?.SupportedFeaturesObject ?? null);\n }\n\n /** Read a single capability flag for the template. */\n public IsFeatureOn(key: BridgeFeatureKey): boolean {\n return isFeatureEnabled(this.record?.SupportedFeaturesObject ?? null, key);\n }\n\n /**\n * Toggle a capability flag. Reads the current typed object, builds a fresh\n * object with the flag changed, and assigns it back through the typed\n * setter (which re-serializes to the JSON column and marks the field dirty).\n */\n public ToggleFeature(key: BridgeFeatureKey, enabled: boolean): void {\n if (!this.record || !this.EditMode) {\n return;\n }\n this.record.SupportedFeaturesObject = setFeature(\n this.record.SupportedFeaturesObject ?? null,\n key,\n enabled,\n );\n }\n}\n\n/** Tree-shake guard — invoked from the custom-forms module loader. */\nexport function LoadMJAIBridgeProviderFormComponentExtended(): 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 <!-- Provider Information -->\n <mj-collapsible-panel\n SectionKey=\"providerInformation\"\n SectionName=\"Provider Information\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Name\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Description\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Provider Configuration -->\n <mj-collapsible-panel\n SectionKey=\"providerConfiguration\"\n SectionName=\"Provider Configuration\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BridgeType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"DriverClass\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\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=\"Configuration\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Supported Features — capability editor (the standout custom UI) -->\n <mj-collapsible-panel\n SectionKey=\"supportedFeatures\"\n SectionName=\"Supported Features\"\n Icon=\"fa fa-toggle-on\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"EnabledFeatureCount\"\n [DefaultExpanded]=\"true\">\n\n <p class=\"bp-intro\">\n The platform's declared capabilities. The engine gates optional driver calls on these flags —\n the base driver throws <code>BridgeCapabilityNotSupportedError</code> when a feature is claimed but\n unimplemented. Leave a capability off if the platform / driver does not support it.\n </p>\n\n @for (group of FeatureGroups; track group.title) {\n <div class=\"bp-group\">\n <div class=\"bp-group-header\">\n <i class=\"fa-solid {{ group.icon }}\"></i>\n <span>{{ group.title }}</span>\n </div>\n <div class=\"bp-feature-list\">\n @for (feature of group.features; track feature.key) {\n <div class=\"bp-feature-row\">\n <div class=\"label\">\n <span class=\"t\">{{ feature.label }}</span>\n <span class=\"d\">{{ feature.description }}</span>\n </div>\n <div class=\"bp-switch\"\n [class.on]=\"IsFeatureOn(feature.key)\"\n [class.disabled]=\"!EditMode\"\n (click)=\"ToggleFeature(feature.key, !IsFeatureOn(feature.key))\">\n </div>\n </div>\n }\n </div>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Configuration Schema -->\n <mj-collapsible-panel\n SectionKey=\"configurationSchema\"\n SectionName=\"Configuration Schema\"\n Icon=\"fa fa-code\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ConfigSchema\" Type=\"code\" [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-database\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\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 <!-- ========================================\n RELATED ENTITY PANELS\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"mJAIAgentSessionBridges\"\n SectionName=\"AI Agent Session Bridges\"\n Icon=\"fa fa-network-wired\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIAgentSessionBridges')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Session Bridges','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Session Bridges')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIAgentSessionBridges')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIAgentSessionBridges', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJAIBridgeProviderChannels\"\n SectionName=\"AI Bridge Provider Channels\"\n Icon=\"fa fa-project-diagram\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIBridgeProviderChannels')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Bridge Provider Channels','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Bridge Provider Channels')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIBridgeProviderChannels')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIBridgeProviderChannels', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJAIBridgeAgentIdentities\"\n SectionName=\"AI Bridge Agent Identities\"\n Icon=\"fa fa-id-card\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIBridgeAgentIdentities')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Bridge Agent Identities','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Bridge Agent Identities')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIBridgeAgentIdentities')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIBridgeAgentIdentities', $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":"bridge-provider-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/BridgeProviders/bridge-provider-form.component.ts","../../../../src/lib/custom/BridgeProviders/bridge-provider-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 { MJAIBridgeProviderEntity } from '@memberjunction/core-entities';\nimport { MJAIBridgeProviderFormComponent } from '../../generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component';\nimport {\n BRIDGE_FEATURE_GROUPS,\n BridgeFeatureGroup,\n BridgeFeatureKey,\n CountEnabledFeatures,\n IsFeatureEnabled,\n SetFeature,\n} from './bridge-provider-features';\n\n/**\n * Custom form for 'MJ: AI Bridge Providers' (Pattern 2 — full override of the\n * generated form). The standout addition is a **capability editor**: the 16\n * `SupportedFeatures` flags rendered as labeled toggles, grouped into Join\n * methods / Media tracks / Signals & telephony.\n *\n * The toggles bind through the entity's typed `SupportedFeaturesObject`\n * accessor (which serializes to/from the `SupportedFeatures` JSON column). On\n * each toggle we read the current object, produce a fresh object via the pure\n * `setFeature` helper, and write it back through the setter — a fresh reference\n * is required so the accessor's parse-cache invalidates and dirty tracking\n * fires. Disabling omits the key (matching \"NULL/omitted = unsupported\").\n *\n * The remaining provider fields (Name / Description / BridgeType / DriverClass\n * / Status / Configuration / ConfigSchema) and the related-entity grids keep\n * the generated panels.\n */\n@RegisterClass(BaseFormComponent, 'MJ: AI Bridge Providers')\n@Component({\n standalone: false,\n selector: 'mj-ai-bridge-provider-form',\n templateUrl: './bridge-provider-form.component.html',\n styleUrls: ['./bridge-provider-form.component.css'],\n})\nexport class MJAIBridgeProviderFormComponentExtended extends MJAIBridgeProviderFormComponent {\n public override record!: MJAIBridgeProviderEntity;\n\n /** Static editor layout (16 flags, 3 groups). */\n public readonly FeatureGroups: readonly BridgeFeatureGroup[] = BRIDGE_FEATURE_GROUPS;\n\n /**\n * Register section state for the custom layout. We don't call\n * `super.ngOnInit()`'s `initSections` because this form restructures the\n * sections (adds `supportedFeatures` + `configurationSchema`, splits the\n * generated \"Technical Capabilities\" panel), so we register our own keys.\n */\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n this.initSections([\n { sectionKey: 'providerInformation', sectionName: 'Provider Information', isExpanded: true },\n { sectionKey: 'providerConfiguration', sectionName: 'Provider Configuration', isExpanded: true },\n { sectionKey: 'supportedFeatures', sectionName: 'Supported Features', isExpanded: true },\n { sectionKey: 'configurationSchema', sectionName: 'Configuration Schema', isExpanded: false },\n { sectionKey: 'systemMetadata', sectionName: 'System Metadata', isExpanded: false },\n { sectionKey: 'mJAIAgentSessionBridges', sectionName: 'AI Agent Session Bridges', isExpanded: false },\n { sectionKey: 'mJAIBridgeProviderChannels', sectionName: 'AI Bridge Provider Channels', isExpanded: false },\n { sectionKey: 'mJAIBridgeAgentIdentities', sectionName: 'AI Bridge Agent Identities', isExpanded: false },\n ]);\n }\n\n /** Count of enabled capabilities — drives the panel badge. */\n public get EnabledFeatureCount(): number {\n return CountEnabledFeatures(this.record?.SupportedFeaturesObject ?? null);\n }\n\n /** Read a single capability flag for the template. */\n public IsFeatureOn(key: BridgeFeatureKey): boolean {\n return IsFeatureEnabled(this.record?.SupportedFeaturesObject ?? null, key);\n }\n\n /**\n * Toggle a capability flag. Reads the current typed object, builds a fresh\n * object with the flag changed, and assigns it back through the typed\n * setter (which re-serializes to the JSON column and marks the field dirty).\n */\n public ToggleFeature(key: BridgeFeatureKey, enabled: boolean): void {\n if (!this.record || !this.EditMode) {\n return;\n }\n this.record.SupportedFeaturesObject = SetFeature(\n this.record.SupportedFeaturesObject ?? null,\n key,\n enabled,\n );\n }\n}\n\n/** Tree-shake guard — invoked from the custom-forms module loader. */\nexport function LoadMJAIBridgeProviderFormComponentExtended(): 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 <!-- Provider Information -->\n <mj-collapsible-panel\n SectionKey=\"providerInformation\"\n SectionName=\"Provider Information\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Name\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Description\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Provider Configuration -->\n <mj-collapsible-panel\n SectionKey=\"providerConfiguration\"\n SectionName=\"Provider Configuration\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BridgeType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"DriverClass\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\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=\"Configuration\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Supported Features — capability editor (the standout custom UI) -->\n <mj-collapsible-panel\n SectionKey=\"supportedFeatures\"\n SectionName=\"Supported Features\"\n Icon=\"fa fa-toggle-on\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"EnabledFeatureCount\"\n [DefaultExpanded]=\"true\">\n\n <p class=\"bp-intro\">\n The platform's declared capabilities. The engine gates optional driver calls on these flags —\n the base driver throws <code>BridgeCapabilityNotSupportedError</code> when a feature is claimed but\n unimplemented. Leave a capability off if the platform / driver does not support it.\n </p>\n\n @for (group of FeatureGroups; track group.Title) {\n <div class=\"bp-group\">\n <div class=\"bp-group-header\">\n <i class=\"fa-solid {{ group.Icon }}\"></i>\n <span>{{ group.Title }}</span>\n </div>\n <div class=\"bp-feature-list\">\n @for (feature of group.Features; track feature.Key) {\n <div class=\"bp-feature-row\">\n <div class=\"label\">\n <span class=\"t\">{{ feature.Label }}</span>\n <span class=\"d\">{{ feature.Description }}</span>\n </div>\n <div class=\"bp-switch\"\n [class.on]=\"IsFeatureOn(feature.Key)\"\n [class.disabled]=\"!EditMode\"\n (click)=\"ToggleFeature(feature.Key, !IsFeatureOn(feature.Key))\">\n </div>\n </div>\n }\n </div>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Configuration Schema -->\n <mj-collapsible-panel\n SectionKey=\"configurationSchema\"\n SectionName=\"Configuration Schema\"\n Icon=\"fa fa-code\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ConfigSchema\" Type=\"code\" [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-database\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\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 <!-- ========================================\n RELATED ENTITY PANELS\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"mJAIAgentSessionBridges\"\n SectionName=\"AI Agent Session Bridges\"\n Icon=\"fa fa-network-wired\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIAgentSessionBridges')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Session Bridges','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Session Bridges')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIAgentSessionBridges')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIAgentSessionBridges', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJAIBridgeProviderChannels\"\n SectionName=\"AI Bridge Provider Channels\"\n Icon=\"fa fa-project-diagram\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIBridgeProviderChannels')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Bridge Provider Channels','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Bridge Provider Channels')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIBridgeProviderChannels')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIBridgeProviderChannels', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJAIBridgeAgentIdentities\"\n SectionName=\"AI Bridge Agent Identities\"\n Icon=\"fa fa-id-card\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIBridgeAgentIdentities')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Bridge Agent Identities','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Bridge Agent Identities')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIBridgeAgentIdentities')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIBridgeAgentIdentities', $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"]}
@@ -13,7 +13,7 @@ export declare class CompanyOverviewPanel extends BaseFormPanel<MJCompanyEntity>
13
13
  Employees: EmployeeRow[];
14
14
  get Company(): MJCompanyEntity | null;
15
15
  ngOnInit(): void;
16
- private LoadEmployees;
16
+ private loadEmployees;
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<CompanyOverviewPanel, never>;
18
18
  static ɵcmp: i0.ɵɵComponentDeclaration<CompanyOverviewPanel, "mj-company-overview-panel", never, {}, {}, never, never, true, never>;
19
19
  }
@@ -46,9 +46,9 @@ let CompanyOverviewPanel = class CompanyOverviewPanel extends BaseFormPanel {
46
46
  return this.Record;
47
47
  }
48
48
  ngOnInit() {
49
- this.LoadEmployees();
49
+ this.loadEmployees();
50
50
  }
51
- async LoadEmployees() {
51
+ async loadEmployees() {
52
52
  if (!this.Record?.ID)
53
53
  return;
54
54
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"company-overview.panel.js","sourceRoot":"","sources":["../../../../src/lib/custom/Companies/company-overview.panel.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ChangeDetectionStrategy, OnInit, inject, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RunView } from '@memberjunction/core';\nimport { RegisterClassEx } from '@memberjunction/global';\nimport { BaseFormPanel } from '@memberjunction/ng-base-forms';\nimport { MJCompanyEntity } from '@memberjunction/core-entities';\n\ninterface EmployeeRow {\n ID: string;\n FirstName: string;\n LastName: string;\n Title: string;\n}\n\n@RegisterClassEx(BaseFormPanel, {\n key: 'form-panel:Companies:overview',\n metadata: {\n entity: 'Companies',\n slot: 'before-fields',\n sortKey: 10,\n },\n})\n@Component({\n selector: 'mj-company-overview-panel',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"mj-company-overview-grid\">\n <!-- Card 1: Team & Staff -->\n <div class=\"mj-overview-card\">\n <div class=\"mj-card-header\">\n <div class=\"mj-card-title\"><i class=\"fa-solid fa-users\" style=\"color: var(--mj-brand-primary, #38bdf8);\"></i> Company Team</div>\n <span class=\"mj-card-badge\">{{ Employees.length }} Members</span>\n </div>\n <div class=\"mj-card-body\">\n @if (Employees.length === 0) {\n <span style=\"font-size: 12px; color: var(--mj-text-muted);\">No employees assigned directly to this company.</span>\n } @else {\n @for (emp of Employees; track emp.ID) {\n <div class=\"mj-metric-row\">\n <span class=\"mj-metric-label\">{{ emp.FirstName }} {{ emp.LastName }}</span>\n <span class=\"mj-pill mj-pill-blue\">{{ emp.Title || 'Staff' }}</span>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Card 2: Company Setup & Profile -->\n <div class=\"mj-overview-card\">\n <div class=\"mj-card-header\">\n <div class=\"mj-card-title\"><i class=\"fa-solid fa-building-shield\" style=\"color: #10b981;\"></i> Company Governance</div>\n <span class=\"mj-card-badge\">Profile</span>\n </div>\n <div class=\"mj-card-body\">\n <div class=\"mj-metric-row\">\n <span class=\"mj-metric-label\">Company Name</span>\n <span class=\"mj-metric-val\">{{ Company?.Name }}</span>\n </div>\n <div class=\"mj-metric-row\">\n <span class=\"mj-metric-label\">Website</span>\n <span class=\"mj-metric-val\">{{ Company?.Website || 'None Listed' }}</span>\n </div>\n <div class=\"mj-metric-row\">\n <span class=\"mj-metric-label\">Record Type</span>\n <span class=\"mj-pill mj-pill-green\">Corporate Entity</span>\n </div>\n </div>\n </div>\n </div>\n `,\n styles: [`\n :host { display: block; width: 100%; margin-bottom: 20px; }\n .mj-company-overview-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 16px;\n }\n .mj-overview-card {\n background: var(--mj-bg-surface-card, #141f36);\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: 10px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n .mj-card-header {\n padding: 10px 14px;\n background: var(--mj-bg-surface, #111a2e);\n border-bottom: 1px solid var(--mj-border-default, #223254);\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n .mj-card-title {\n font-size: 12.5px;\n font-weight: 700;\n color: var(--mj-text-primary, #f8fafc);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n .mj-card-badge {\n font-size: 11px;\n padding: 2px 7px;\n border-radius: 9999px;\n background: var(--mj-bg-surface-elevated, #1a2744);\n color: var(--mj-text-secondary, #94a3b8);\n border: 1px solid var(--mj-border-default, #223254);\n }\n .mj-card-body {\n padding: 14px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n .mj-metric-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 12px;\n }\n .mj-metric-label { color: var(--mj-text-secondary, #94a3b8); }\n .mj-metric-val { font-weight: 600; color: var(--mj-text-primary, #f8fafc); font-family: monospace; }\n .mj-pill { font-size: 10.5px; font-weight: 700; padding: 2px 6px; border-radius: 4px; }\n .mj-pill-green { background: rgba(16, 185, 129, 0.15); color: #10b981; }\n .mj-pill-blue { background: rgba(56, 189, 248, 0.15); color: #38bdf8; }\n `]\n})\nexport class CompanyOverviewPanel extends BaseFormPanel<MJCompanyEntity> implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n public Employees: EmployeeRow[] = [];\n\n public get Company(): MJCompanyEntity | null {\n return this.Record;\n }\n\n public ngOnInit(): void {\n this.LoadEmployees();\n }\n\n private async LoadEmployees(): Promise<void> {\n if (!this.Record?.ID) return;\n try {\n const rv = new RunView();\n const res = await rv.RunView<EmployeeRow>({\n EntityName: 'Employees',\n ExtraFilter: `CompanyID = '${this.Record.ID}'`,\n Fields: ['ID', 'FirstName', 'LastName', 'Title'],\n MaxRows: 20,\n ResultType: 'simple'\n });\n if (res.Success && res.Results) {\n this.Employees = res.Results;\n this.cdr.markForCheck();\n }\n } catch (e) {\n console.error('Failed to load company employees:', e);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"company-overview.panel.js","sourceRoot":"","sources":["../../../../src/lib/custom/Companies/company-overview.panel.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ChangeDetectionStrategy, OnInit, inject, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RunView } from '@memberjunction/core';\nimport { RegisterClassEx } from '@memberjunction/global';\nimport { BaseFormPanel } from '@memberjunction/ng-base-forms';\nimport { MJCompanyEntity } from '@memberjunction/core-entities';\n\ninterface EmployeeRow {\n ID: string;\n FirstName: string;\n LastName: string;\n Title: string;\n}\n\n@RegisterClassEx(BaseFormPanel, {\n key: 'form-panel:Companies:overview',\n metadata: {\n entity: 'Companies',\n slot: 'before-fields',\n sortKey: 10,\n },\n})\n@Component({\n selector: 'mj-company-overview-panel',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"mj-company-overview-grid\">\n <!-- Card 1: Team & Staff -->\n <div class=\"mj-overview-card\">\n <div class=\"mj-card-header\">\n <div class=\"mj-card-title\"><i class=\"fa-solid fa-users\" style=\"color: var(--mj-brand-primary, #38bdf8);\"></i> Company Team</div>\n <span class=\"mj-card-badge\">{{ Employees.length }} Members</span>\n </div>\n <div class=\"mj-card-body\">\n @if (Employees.length === 0) {\n <span style=\"font-size: 12px; color: var(--mj-text-muted);\">No employees assigned directly to this company.</span>\n } @else {\n @for (emp of Employees; track emp.ID) {\n <div class=\"mj-metric-row\">\n <span class=\"mj-metric-label\">{{ emp.FirstName }} {{ emp.LastName }}</span>\n <span class=\"mj-pill mj-pill-blue\">{{ emp.Title || 'Staff' }}</span>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Card 2: Company Setup & Profile -->\n <div class=\"mj-overview-card\">\n <div class=\"mj-card-header\">\n <div class=\"mj-card-title\"><i class=\"fa-solid fa-building-shield\" style=\"color: #10b981;\"></i> Company Governance</div>\n <span class=\"mj-card-badge\">Profile</span>\n </div>\n <div class=\"mj-card-body\">\n <div class=\"mj-metric-row\">\n <span class=\"mj-metric-label\">Company Name</span>\n <span class=\"mj-metric-val\">{{ Company?.Name }}</span>\n </div>\n <div class=\"mj-metric-row\">\n <span class=\"mj-metric-label\">Website</span>\n <span class=\"mj-metric-val\">{{ Company?.Website || 'None Listed' }}</span>\n </div>\n <div class=\"mj-metric-row\">\n <span class=\"mj-metric-label\">Record Type</span>\n <span class=\"mj-pill mj-pill-green\">Corporate Entity</span>\n </div>\n </div>\n </div>\n </div>\n `,\n styles: [`\n :host { display: block; width: 100%; margin-bottom: 20px; }\n .mj-company-overview-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 16px;\n }\n .mj-overview-card {\n background: var(--mj-bg-surface-card, #141f36);\n border: 1px solid var(--mj-border-default, #223254);\n border-radius: 10px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n .mj-card-header {\n padding: 10px 14px;\n background: var(--mj-bg-surface, #111a2e);\n border-bottom: 1px solid var(--mj-border-default, #223254);\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n .mj-card-title {\n font-size: 12.5px;\n font-weight: 700;\n color: var(--mj-text-primary, #f8fafc);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n .mj-card-badge {\n font-size: 11px;\n padding: 2px 7px;\n border-radius: 9999px;\n background: var(--mj-bg-surface-elevated, #1a2744);\n color: var(--mj-text-secondary, #94a3b8);\n border: 1px solid var(--mj-border-default, #223254);\n }\n .mj-card-body {\n padding: 14px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n .mj-metric-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 12px;\n }\n .mj-metric-label { color: var(--mj-text-secondary, #94a3b8); }\n .mj-metric-val { font-weight: 600; color: var(--mj-text-primary, #f8fafc); font-family: monospace; }\n .mj-pill { font-size: 10.5px; font-weight: 700; padding: 2px 6px; border-radius: 4px; }\n .mj-pill-green { background: rgba(16, 185, 129, 0.15); color: #10b981; }\n .mj-pill-blue { background: rgba(56, 189, 248, 0.15); color: #38bdf8; }\n `]\n})\nexport class CompanyOverviewPanel extends BaseFormPanel<MJCompanyEntity> implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n public Employees: EmployeeRow[] = [];\n\n public get Company(): MJCompanyEntity | null {\n return this.Record;\n }\n\n public ngOnInit(): void {\n this.loadEmployees();\n }\n\n private async loadEmployees(): Promise<void> {\n if (!this.Record?.ID) return;\n try {\n const rv = new RunView();\n const res = await rv.RunView<EmployeeRow>({\n EntityName: 'Employees',\n ExtraFilter: `CompanyID = '${this.Record.ID}'`,\n Fields: ['ID', 'FirstName', 'LastName', 'Title'],\n MaxRows: 20,\n ResultType: 'simple'\n });\n if (res.Success && res.Results) {\n this.Employees = res.Results;\n this.cdr.markForCheck();\n }\n } catch (e) {\n console.error('Failed to load company employees:', e);\n }\n }\n}\n"]}
@@ -15,7 +15,7 @@ export declare class ConversationOverviewPanel extends BaseFormPanel<MJConversat
15
15
  get UserMessageCount(): number;
16
16
  get AgentMessageCount(): number;
17
17
  get RecentMessages(): ConversationDetailRow[];
18
- private LoadConversationMessages;
18
+ private loadConversationMessages;
19
19
  static ɵfac: i0.ɵɵFactoryDeclaration<ConversationOverviewPanel, never>;
20
20
  static ɵcmp: i0.ɵɵComponentDeclaration<ConversationOverviewPanel, "mj-conversation-overview-panel", never, {}, {}, never, never, true, never>;
21
21
  }
@@ -49,7 +49,7 @@ let ConversationOverviewPanel = class ConversationOverviewPanel extends BaseForm
49
49
  this.Messages = [];
50
50
  }
51
51
  ngOnInit() {
52
- this.LoadConversationMessages();
52
+ this.loadConversationMessages();
53
53
  }
54
54
  get UserMessageCount() {
55
55
  return this.Messages.filter(m => m.Role?.toLowerCase() === 'user').length;
@@ -60,7 +60,7 @@ let ConversationOverviewPanel = class ConversationOverviewPanel extends BaseForm
60
60
  get RecentMessages() {
61
61
  return this.Messages.slice(0, 4);
62
62
  }
63
- async LoadConversationMessages() {
63
+ async loadConversationMessages() {
64
64
  if (!this.Record?.ID)
65
65
  return;
66
66
  try {