@memberjunction/ng-dashboards 5.30.0 → 5.31.0

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 (424) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  2. package/dist/AI/components/agents/agent-configuration.component.js +4 -4
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/agents/agent-editor.component.d.ts +2 -1
  5. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
  6. package/dist/AI/components/agents/agent-editor.component.js +8 -6
  7. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +2 -1
  9. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  10. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +6 -5
  11. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  12. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +2 -1
  13. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  14. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +6 -5
  15. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  16. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +2 -1
  17. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  18. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +6 -5
  19. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  20. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts +2 -1
  21. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  22. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +7 -4
  23. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  24. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +3 -2
  25. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/model-performance/model-performance.component.js +10 -6
  27. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  28. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +2 -1
  29. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +6 -5
  31. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  32. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +2 -1
  33. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  34. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +6 -5
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  36. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  37. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +55 -52
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  39. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +15 -15
  40. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  41. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  42. package/dist/AI/components/execution-monitoring.component.js +4 -3
  43. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  44. package/dist/AI/components/models/model-management.component.js +2 -2
  45. package/dist/AI/components/models/model-management.component.js.map +1 -1
  46. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +2 -1
  47. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  48. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +10 -8
  49. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  51. package/dist/AI/components/prompts/prompt-management.component.js +2 -2
  52. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  53. package/dist/AI/components/prompts/prompt-version-control.component.d.ts +2 -1
  54. package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
  55. package/dist/AI/components/prompts/prompt-version-control.component.js +13 -10
  56. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  57. package/dist/AI/components/requests/agent-requests-resource.component.js +1 -1
  58. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  59. package/dist/AI/components/tags/tags-resource.component.d.ts +1181 -0
  60. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -0
  61. package/dist/AI/components/tags/tags-resource.component.js +7487 -0
  62. package/dist/AI/components/tags/tags-resource.component.js.map +1 -0
  63. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/vectors/vector-management-resource.component.js +25 -21
  65. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  66. package/dist/AI/index.d.ts +1 -0
  67. package/dist/AI/index.d.ts.map +1 -1
  68. package/dist/AI/index.js +5 -0
  69. package/dist/AI/index.js.map +1 -1
  70. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  71. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  72. package/dist/AI/services/ai-instrumentation.service.js +12 -4
  73. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  74. package/dist/APIKeys/api-applications-panel.component.d.ts +3 -2
  75. package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
  76. package/dist/APIKeys/api-applications-panel.component.js +5 -4
  77. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  78. package/dist/APIKeys/api-key-create-dialog.component.d.ts +2 -1
  79. package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -1
  80. package/dist/APIKeys/api-key-create-dialog.component.js +5 -5
  81. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  82. package/dist/APIKeys/api-key-edit-panel.component.d.ts +3 -2
  83. package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
  84. package/dist/APIKeys/api-key-edit-panel.component.js +11 -10
  85. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  86. package/dist/APIKeys/api-key-list.component.d.ts +2 -1
  87. package/dist/APIKeys/api-key-list.component.d.ts.map +1 -1
  88. package/dist/APIKeys/api-key-list.component.js +6 -5
  89. package/dist/APIKeys/api-key-list.component.js.map +1 -1
  90. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  91. package/dist/APIKeys/api-keys-resource.component.js +4 -4
  92. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  93. package/dist/APIKeys/api-scopes-panel.component.d.ts +3 -2
  94. package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
  95. package/dist/APIKeys/api-scopes-panel.component.js +8 -6
  96. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  97. package/dist/APIKeys/api-usage-panel.component.d.ts +3 -2
  98. package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -1
  99. package/dist/APIKeys/api-usage-panel.component.js +10 -8
  100. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  101. package/dist/Actions/components/actions-list-view.component.d.ts +2 -1
  102. package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -1
  103. package/dist/Actions/components/actions-list-view.component.js +6 -5
  104. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  105. package/dist/Actions/components/actions-overview.component.js +2 -2
  106. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  107. package/dist/Actions/components/categories-list-view.component.d.ts +2 -1
  108. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
  109. package/dist/Actions/components/categories-list-view.component.js +6 -5
  110. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  111. package/dist/Actions/components/execution-monitoring.component.js +1 -1
  112. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  113. package/dist/Actions/components/explorer/action-card.component.d.ts +2 -1
  114. package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
  115. package/dist/Actions/components/explorer/action-card.component.js +6 -4
  116. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  117. package/dist/Actions/components/explorer/action-explorer.component.js +1 -1
  118. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  119. package/dist/Actions/components/explorer/new-action-panel.component.d.ts +2 -1
  120. package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -1
  121. package/dist/Actions/components/explorer/new-action-panel.component.js +7 -5
  122. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  123. package/dist/Actions/components/explorer/new-category-panel.component.d.ts +2 -1
  124. package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -1
  125. package/dist/Actions/components/explorer/new-category-panel.component.js +7 -5
  126. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  127. package/dist/ApplicationRoles/application-roles-resource.component.js +4 -4
  128. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  129. package/dist/Communication/communication-logs-resource.component.js +1 -1
  130. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  131. package/dist/Communication/communication-monitor-resource.component.js +1 -1
  132. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  133. package/dist/Communication/communication-providers-resource.component.js +3 -3
  134. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  135. package/dist/Communication/communication-runs-resource.component.js +1 -1
  136. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  137. package/dist/Communication/communication-templates-resource.component.js +3 -3
  138. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  139. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +1 -1
  140. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  141. package/dist/ComponentStudio/component-studio-dashboard.component.js +5 -4
  142. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  143. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +2 -1
  144. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  145. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +6 -4
  146. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  147. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +11 -2
  148. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
  149. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +61 -27
  150. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  151. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +4 -2
  152. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  153. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +19 -11
  154. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  155. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts +4 -2
  156. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -1
  157. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +11 -3
  158. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  159. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts +10 -1
  160. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
  161. package/dist/ComponentStudio/components/workspace/component-preview.component.js +18 -9
  162. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  163. package/dist/ComponentStudio/services/component-studio-state.service.d.ts +11 -1
  164. package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -1
  165. package/dist/ComponentStudio/services/component-studio-state.service.js +23 -3
  166. package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
  167. package/dist/ComponentStudio/services/component-version.service.d.ts +6 -1
  168. package/dist/ComponentStudio/services/component-version.service.d.ts.map +1 -1
  169. package/dist/ComponentStudio/services/component-version.service.js +16 -6
  170. package/dist/ComponentStudio/services/component-version.service.js.map +1 -1
  171. package/dist/Credentials/components/credentials-audit-resource.component.js +1 -1
  172. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  173. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  174. package/dist/Credentials/components/credentials-categories-resource.component.js +3 -3
  175. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  176. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  177. package/dist/Credentials/components/credentials-list-resource.component.js +3 -3
  178. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  179. package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
  180. package/dist/Credentials/components/credentials-overview-resource.component.js +3 -3
  181. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  182. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  183. package/dist/Credentials/components/credentials-types-resource.component.js +3 -3
  184. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  185. package/dist/Credentials/credentials-dashboard.component.js +1 -1
  186. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  187. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +13 -13
  188. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  189. package/dist/DashboardBrowser/dashboard-share-adapter.d.ts +4 -0
  190. package/dist/DashboardBrowser/dashboard-share-adapter.d.ts.map +1 -1
  191. package/dist/DashboardBrowser/dashboard-share-adapter.js +5 -2
  192. package/dist/DashboardBrowser/dashboard-share-adapter.js.map +1 -1
  193. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts +3 -1
  194. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
  195. package/dist/DashboardBrowser/dashboard-share-dialog.component.js +9 -4
  196. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  197. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +3 -2
  198. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  199. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +7 -6
  200. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  201. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +3 -2
  202. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -1
  203. package/dist/DataExplorer/components/view-selector/view-selector.component.js +6 -5
  204. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
  205. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  206. package/dist/DataExplorer/data-explorer-dashboard.component.js +10 -9
  207. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  208. package/dist/DataExplorer/services/explorer-state.service.d.ts +6 -1
  209. package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -1
  210. package/dist/DataExplorer/services/explorer-state.service.js +15 -5
  211. package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
  212. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.d.ts +64 -0
  213. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.d.ts.map +1 -0
  214. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.js +400 -0
  215. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.js.map +1 -0
  216. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.d.ts +42 -0
  217. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.d.ts.map +1 -0
  218. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.js +232 -0
  219. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.js.map +1 -0
  220. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.d.ts +14 -0
  221. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.d.ts.map +1 -0
  222. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.js +38 -0
  223. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.js.map +1 -0
  224. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.d.ts +24 -0
  225. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.d.ts.map +1 -0
  226. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.js +77 -0
  227. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.js.map +1 -0
  228. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.d.ts +88 -0
  229. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.d.ts.map +1 -0
  230. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.js +404 -0
  231. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.js.map +1 -0
  232. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.d.ts +12 -0
  233. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.d.ts.map +1 -0
  234. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.js +116 -0
  235. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.js.map +1 -0
  236. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +55 -0
  237. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -0
  238. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +204 -0
  239. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -0
  240. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +61 -0
  241. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -0
  242. package/dist/DatabaseDesigner/components/entity-list.component.js +485 -0
  243. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -0
  244. package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts +52 -0
  245. package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts.map +1 -0
  246. package/dist/DatabaseDesigner/components/modify/database-modify.component.js +320 -0
  247. package/dist/DatabaseDesigner/components/modify/database-modify.component.js.map +1 -0
  248. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.d.ts +79 -0
  249. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.d.ts.map +1 -0
  250. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.js +378 -0
  251. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.js.map +1 -0
  252. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.d.ts +85 -0
  253. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.d.ts.map +1 -0
  254. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.js +429 -0
  255. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.js.map +1 -0
  256. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.d.ts +58 -0
  257. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.d.ts.map +1 -0
  258. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.js +333 -0
  259. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.js.map +1 -0
  260. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.d.ts +36 -0
  261. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.d.ts.map +1 -0
  262. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.js +345 -0
  263. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.js.map +1 -0
  264. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.d.ts +13 -0
  265. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.d.ts.map +1 -0
  266. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.js +81 -0
  267. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.js.map +1 -0
  268. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +30 -0
  269. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -0
  270. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +131 -0
  271. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -0
  272. package/dist/DatabaseDesigner/database-designer-erd.d.ts +19 -0
  273. package/dist/DatabaseDesigner/database-designer-erd.d.ts.map +1 -0
  274. package/dist/DatabaseDesigner/database-designer-erd.js +84 -0
  275. package/dist/DatabaseDesigner/database-designer-erd.js.map +1 -0
  276. package/dist/DatabaseDesigner/database-designer.types.d.ts +167 -0
  277. package/dist/DatabaseDesigner/database-designer.types.d.ts.map +1 -0
  278. package/dist/DatabaseDesigner/database-designer.types.js +26 -0
  279. package/dist/DatabaseDesigner/database-designer.types.js.map +1 -0
  280. package/dist/DatabaseDesigner/services/database-designer.engine.d.ts +94 -0
  281. package/dist/DatabaseDesigner/services/database-designer.engine.d.ts.map +1 -0
  282. package/dist/DatabaseDesigner/services/database-designer.engine.js +392 -0
  283. package/dist/DatabaseDesigner/services/database-designer.engine.js.map +1 -0
  284. package/dist/DatabaseDesigner/services/database-designer.service.d.ts +78 -0
  285. package/dist/DatabaseDesigner/services/database-designer.service.d.ts.map +1 -0
  286. package/dist/DatabaseDesigner/services/database-designer.service.js +273 -0
  287. package/dist/DatabaseDesigner/services/database-designer.service.js.map +1 -0
  288. package/dist/DatabaseDesigner/services/entity-wizard-state.service.d.ts +79 -0
  289. package/dist/DatabaseDesigner/services/entity-wizard-state.service.d.ts.map +1 -0
  290. package/dist/DatabaseDesigner/services/entity-wizard-state.service.js +204 -0
  291. package/dist/DatabaseDesigner/services/entity-wizard-state.service.js.map +1 -0
  292. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  293. package/dist/EntityAdmin/entity-admin-dashboard.component.js +2 -2
  294. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  295. package/dist/Home/action-pin-config-dialog.component.d.ts +2 -1
  296. package/dist/Home/action-pin-config-dialog.component.d.ts.map +1 -1
  297. package/dist/Home/action-pin-config-dialog.component.js +6 -4
  298. package/dist/Home/action-pin-config-dialog.component.js.map +1 -1
  299. package/dist/Home/action-pin-runner-dialog.component.d.ts +2 -1
  300. package/dist/Home/action-pin-runner-dialog.component.d.ts.map +1 -1
  301. package/dist/Home/action-pin-runner-dialog.component.js +5 -4
  302. package/dist/Home/action-pin-runner-dialog.component.js.map +1 -1
  303. package/dist/Home/home-application.d.ts.map +1 -1
  304. package/dist/Home/home-application.js +10 -12
  305. package/dist/Home/home-application.js.map +1 -1
  306. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  307. package/dist/Home/home-dashboard.component.js +3 -3
  308. package/dist/Home/home-dashboard.component.js.map +1 -1
  309. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  310. package/dist/Integration/components/activity/activity.component.js +1 -0
  311. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  312. package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
  313. package/dist/Integration/components/connections/connections.component.js +11 -10
  314. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  315. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
  316. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +2 -2
  317. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  318. package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
  319. package/dist/Integration/components/overview/overview.component.js +1 -0
  320. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  321. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  322. package/dist/Integration/components/pipelines/pipelines.component.js +1 -0
  323. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  324. package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
  325. package/dist/Integration/components/schedules/schedules.component.js +5 -4
  326. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  327. package/dist/Integration/services/integration-data.service.d.ts +5 -1
  328. package/dist/Integration/services/integration-data.service.d.ts.map +1 -1
  329. package/dist/Integration/services/integration-data.service.js +27 -19
  330. package/dist/Integration/services/integration-data.service.js.map +1 -1
  331. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +6 -6
  332. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  333. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  334. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +8 -6
  335. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  336. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +6 -6
  337. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  338. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +3 -3
  339. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  340. package/dist/Lists/components/lists-browse-resource.component.js +6 -6
  341. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  342. package/dist/Lists/components/lists-categories-resource.component.js +4 -4
  343. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  344. package/dist/Lists/components/lists-my-lists-resource.component.js +6 -6
  345. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  346. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  347. package/dist/Lists/components/lists-operations-resource.component.js +11 -10
  348. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  349. package/dist/Lists/services/list-set-operations.service.d.ts +5 -0
  350. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  351. package/dist/Lists/services/list-set-operations.service.js +11 -3
  352. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  353. package/dist/MCP/components/mcp-connection-dialog.component.d.ts +2 -1
  354. package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -1
  355. package/dist/MCP/components/mcp-connection-dialog.component.js +8 -6
  356. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  357. package/dist/MCP/components/mcp-server-dialog.component.d.ts +2 -1
  358. package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -1
  359. package/dist/MCP/components/mcp-server-dialog.component.js +7 -5
  360. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  361. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  362. package/dist/MCP/mcp-dashboard.component.js +12 -12
  363. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  364. package/dist/Permissions/permissions-shared.d.ts +3 -3
  365. package/dist/Permissions/permissions-shared.d.ts.map +1 -1
  366. package/dist/Permissions/permissions-shared.js +5 -5
  367. package/dist/Permissions/permissions-shared.js.map +1 -1
  368. package/dist/Permissions/resource-access-resource.component.js +1 -1
  369. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  370. package/dist/Permissions/user-access-resource.component.js +1 -2
  371. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  372. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  373. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  374. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  375. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  376. package/dist/Scheduling/scheduling-dashboard.component.js +1 -0
  377. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  378. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +5 -0
  379. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  380. package/dist/Scheduling/services/scheduling-instrumentation.service.js +21 -13
  381. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  382. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  383. package/dist/SystemDiagnostics/system-diagnostics.component.js +2 -2
  384. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  385. package/dist/Testing/components/testing-explorer.component.d.ts +2 -1
  386. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  387. package/dist/Testing/components/testing-explorer.component.js +9 -7
  388. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  389. package/dist/Testing/services/testing-instrumentation.service.d.ts +6 -1
  390. package/dist/Testing/services/testing-instrumentation.service.d.ts.map +1 -1
  391. package/dist/Testing/services/testing-instrumentation.service.js +21 -11
  392. package/dist/Testing/services/testing-instrumentation.service.js.map +1 -1
  393. package/dist/Testing/testing-dashboard.component.d.ts +3 -1
  394. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  395. package/dist/Testing/testing-dashboard.component.js +15 -11
  396. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  397. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
  398. package/dist/VersionHistory/components/diff-resource.component.js +5 -5
  399. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  400. package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -1
  401. package/dist/VersionHistory/components/graph-resource.component.js +1 -2
  402. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  403. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  404. package/dist/VersionHistory/components/labels-resource.component.js +3 -3
  405. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  406. package/dist/VersionHistory/components/restore-resource.component.js +1 -1
  407. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  408. package/dist/ai-dashboards.module.d.ts +35 -34
  409. package/dist/ai-dashboards.module.d.ts.map +1 -1
  410. package/dist/ai-dashboards.module.js +6 -0
  411. package/dist/ai-dashboards.module.js.map +1 -1
  412. package/dist/module.d.ts +13 -12
  413. package/dist/module.d.ts.map +1 -1
  414. package/dist/module.js +7 -0
  415. package/dist/module.js.map +1 -1
  416. package/dist/public-api.d.ts +3 -1
  417. package/dist/public-api.d.ts.map +1 -1
  418. package/dist/public-api.js +3 -1
  419. package/dist/public-api.js.map +1 -1
  420. package/dist/shared/entity-field-display.d.ts +4 -3
  421. package/dist/shared/entity-field-display.d.ts.map +1 -1
  422. package/dist/shared/entity-field-display.js +9 -9
  423. package/dist/shared/entity-field-display.js.map +1 -1
  424. package/package.json +52 -51
@@ -1 +1 @@
1
- {"version":3,"file":"list-set-operations.service.js","sourceRoot":"","sources":["../../../src/Lists/services/list-set-operations.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { RunView } from '@memberjunction/core';\nimport { MJListEntity, MJListDetailEntity } from '@memberjunction/core-entities';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * Represents a set (list) in the Venn diagram\n */\nexport interface VennSet {\n listId: string;\n listName: string;\n color: string;\n recordIds: Set<string>;\n size: number;\n}\n\n/**\n * Represents an intersection region in the Venn diagram\n */\nexport interface VennIntersection {\n /**\n * IDs of lists that participate in this intersection\n */\n setIds: string[];\n\n /**\n * Labels of lists that participate in this intersection\n */\n setLabels: string[];\n\n /**\n * Number of records in this intersection\n */\n size: number;\n\n /**\n * Actual record IDs in this intersection\n */\n recordIds: string[];\n\n /**\n * Display label for this region\n */\n label: string;\n\n /**\n * Whether this region is currently selected\n */\n isSelected: boolean;\n}\n\n/**\n * Complete Venn data for visualization\n */\nexport interface VennData {\n sets: VennSet[];\n intersections: VennIntersection[];\n entityId?: string;\n entityName?: string;\n}\n\n/**\n * Set operation types\n */\nexport type SetOperation = 'union' | 'intersection' | 'difference' | 'symmetric_difference' | 'complement';\n\n/**\n * Result of a set operation\n */\nexport interface SetOperationResult {\n operation: SetOperation;\n inputSetIds: string[];\n resultRecordIds: string[];\n resultCount: number;\n}\n\n// Predefined color palette for Venn sets\nconst VENN_COLORS = [\n '#2196F3', // Blue\n '#4CAF50', // Green\n '#FF9800', // Orange\n '#E91E63', // Pink\n '#9C27B0', // Purple\n '#00BCD4', // Cyan\n '#F44336', // Red\n '#8BC34A' // Light Green\n];\n\n/**\n * Service for performing set operations on lists and preparing data for Venn visualization.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ListSetOperationsService {\n private loadingSubject = new BehaviorSubject<boolean>(false);\n public loading$: Observable<boolean> = this.loadingSubject.asObservable();\n\n // Cache for list details\n private listDetailsCache = new Map<string, Set<string>>();\n\n constructor() {}\n\n /**\n * Load list data and calculate all intersections for Venn visualization\n */\n async calculateVennData(lists: MJListEntity[]): Promise<VennData> {\n if (lists.length === 0) {\n return { sets: [], intersections: [] };\n }\n\n this.loadingSubject.next(true);\n\n try {\n // Load all list details in a single query\n const listIds = lists.map(l => l.ID);\n const listIdFilter = listIds.map(id => `'${id}'`).join(',');\n\n const rv = new RunView();\n const result = await rv.RunView<{ ListID: string; RecordID: string }>({\n EntityName: 'MJ: List Details',\n ExtraFilter: `ListID IN (${listIdFilter})`,\n Fields: ['ListID', 'RecordID'],\n ResultType: 'simple'\n });\n\n // Build sets per list\n const setsMap = new Map<string, Set<string>>();\n for (const listId of listIds) {\n setsMap.set(listId, new Set());\n }\n\n if (result.Success && result.Results) {\n for (const detail of result.Results) {\n const set = setsMap.get(detail.ListID);\n if (set) {\n set.add(detail.RecordID);\n }\n }\n }\n\n // Update cache\n for (const [listId, records] of setsMap) {\n this.listDetailsCache.set(listId, records);\n }\n\n // Build VennSet objects\n const sets: VennSet[] = lists.map((list, index) => ({\n listId: list.ID,\n listName: list.Name,\n color: VENN_COLORS[index % VENN_COLORS.length],\n recordIds: setsMap.get(list.ID) || new Set(),\n size: setsMap.get(list.ID)?.size || 0\n }));\n\n // Calculate all possible intersections\n const intersections = this.calculateAllIntersections(sets);\n\n // Get entity info from the first list (assuming all lists are same entity)\n const entityId = lists[0]?.EntityID;\n const entityName = lists[0]?.Entity;\n\n return { sets, intersections, entityId, entityName };\n } finally {\n this.loadingSubject.next(false);\n }\n }\n\n /**\n * Calculate all possible intersections between the given sets\n */\n private calculateAllIntersections(sets: VennSet[]): VennIntersection[] {\n const intersections: VennIntersection[] = [];\n const n = sets.length;\n\n // Generate all non-empty subsets of sets\n for (let mask = 1; mask < (1 << n); mask++) {\n const subset: VennSet[] = [];\n for (let i = 0; i < n; i++) {\n if (mask & (1 << i)) {\n subset.push(sets[i]);\n }\n }\n\n // Calculate exclusive intersection (records in exactly these sets)\n const recordIds = this.calculateExclusiveIntersection(subset, sets);\n\n if (recordIds.length > 0 || subset.length === 1) {\n const setIds = subset.map(s => s.listId);\n const setLabels = subset.map(s => s.listName);\n\n intersections.push({\n setIds,\n setLabels,\n size: recordIds.length,\n recordIds,\n label: this.buildIntersectionLabel(setLabels),\n isSelected: false\n });\n }\n }\n\n // Sort by number of sets (single sets first, then pairs, etc.)\n intersections.sort((a, b) => a.setIds.length - b.setIds.length);\n\n return intersections;\n }\n\n /**\n * Calculate records that are in ALL of the specified sets but NONE of the other sets\n */\n private calculateExclusiveIntersection(includedSets: VennSet[], allSets: VennSet[]): string[] {\n if (includedSets.length === 0) return [];\n\n // Start with records in the first included set\n let result = new Set(includedSets[0].recordIds);\n\n // Intersect with all other included sets\n for (let i = 1; i < includedSets.length; i++) {\n result = this.intersect(result, includedSets[i].recordIds);\n }\n\n // Remove records that are in excluded sets\n const excludedSets = allSets.filter(s => !includedSets.includes(s));\n for (const excluded of excludedSets) {\n result = this.difference(result, excluded.recordIds);\n }\n\n return Array.from(result);\n }\n\n /**\n * Build a display label for an intersection\n */\n private buildIntersectionLabel(setLabels: string[]): string {\n if (setLabels.length === 1) {\n return `Only in ${setLabels[0]}`;\n }\n return setLabels.join(' ∩ ');\n }\n\n /**\n * Perform a set operation on multiple lists\n */\n async performOperation(\n operation: SetOperation,\n listIds: string[],\n allListIds?: string[]\n ): Promise<SetOperationResult> {\n this.loadingSubject.next(true);\n\n try {\n // Ensure we have the list details loaded\n await this.ensureListsLoaded(listIds);\n\n const sets = listIds.map(id => this.listDetailsCache.get(id) || new Set<string>());\n let resultSet: Set<string>;\n\n switch (operation) {\n case 'union':\n resultSet = this.unionAll(sets);\n break;\n\n case 'intersection':\n resultSet = this.intersectAll(sets);\n break;\n\n case 'difference':\n // A - B - C - ... (first set minus all others)\n if (sets.length < 2) {\n resultSet = sets[0] || new Set();\n } else {\n resultSet = new Set(sets[0]);\n for (let i = 1; i < sets.length; i++) {\n resultSet = this.difference(resultSet, sets[i]);\n }\n }\n break;\n\n case 'symmetric_difference':\n // Records that are in exactly one of the sets\n resultSet = this.symmetricDifferenceAll(sets);\n break;\n\n case 'complement':\n // Records NOT in any of the selected sets (requires allListIds)\n if (allListIds) {\n await this.ensureListsLoaded(allListIds);\n const allSets = allListIds.map(id => this.listDetailsCache.get(id) || new Set<string>());\n const allRecords = this.unionAll(allSets);\n const selectedRecords = this.unionAll(sets);\n resultSet = this.difference(allRecords, selectedRecords);\n } else {\n resultSet = new Set();\n }\n break;\n\n default:\n resultSet = new Set();\n }\n\n return {\n operation,\n inputSetIds: listIds,\n resultRecordIds: Array.from(resultSet),\n resultCount: resultSet.size\n };\n } finally {\n this.loadingSubject.next(false);\n }\n }\n\n /**\n * Ensure list details are loaded for the given list IDs\n */\n private async ensureListsLoaded(listIds: string[]): Promise<void> {\n const missingIds = listIds.filter(id => !this.listDetailsCache.has(id));\n\n if (missingIds.length === 0) return;\n\n const listIdFilter = missingIds.map(id => `'${id}'`).join(',');\n const rv = new RunView();\n\n const result = await rv.RunView<{ ListID: string; RecordID: string }>({\n EntityName: 'MJ: List Details',\n ExtraFilter: `ListID IN (${listIdFilter})`,\n Fields: ['ListID', 'RecordID'],\n ResultType: 'simple'\n });\n\n // Initialize sets for missing lists\n for (const id of missingIds) {\n this.listDetailsCache.set(id, new Set());\n }\n\n if (result.Success && result.Results) {\n for (const detail of result.Results) {\n const set = this.listDetailsCache.get(detail.ListID);\n if (set) {\n set.add(detail.RecordID);\n }\n }\n }\n }\n\n /**\n * Set intersection of two sets\n */\n private intersect(a: Set<string>, b: Set<string>): Set<string> {\n const result = new Set<string>();\n for (const item of a) {\n if (b.has(item)) {\n result.add(item);\n }\n }\n return result;\n }\n\n /**\n * Set difference (a - b)\n */\n private difference(a: Set<string>, b: Set<string>): Set<string> {\n const result = new Set<string>();\n for (const item of a) {\n if (!b.has(item)) {\n result.add(item);\n }\n }\n return result;\n }\n\n /**\n * Union of multiple sets\n */\n private unionAll(sets: Set<string>[]): Set<string> {\n const result = new Set<string>();\n for (const set of sets) {\n for (const item of set) {\n result.add(item);\n }\n }\n return result;\n }\n\n /**\n * Intersection of multiple sets\n */\n private intersectAll(sets: Set<string>[]): Set<string> {\n if (sets.length === 0) return new Set();\n if (sets.length === 1) return new Set(sets[0]);\n\n let result = new Set(sets[0]);\n for (let i = 1; i < sets.length; i++) {\n result = this.intersect(result, sets[i]);\n }\n return result;\n }\n\n /**\n * Symmetric difference of multiple sets (items in exactly one set)\n */\n private symmetricDifferenceAll(sets: Set<string>[]): Set<string> {\n if (sets.length === 0) return new Set();\n\n // Count occurrences of each item\n const counts = new Map<string, number>();\n for (const set of sets) {\n for (const item of set) {\n counts.set(item, (counts.get(item) || 0) + 1);\n }\n }\n\n // Keep only items that appear exactly once\n const result = new Set<string>();\n for (const [item, count] of counts) {\n if (count === 1) {\n result.add(item);\n }\n }\n return result;\n }\n\n /**\n * Get the color for a list by its index\n */\n getColorForIndex(index: number): string {\n return VENN_COLORS[index % VENN_COLORS.length];\n }\n\n /**\n * Clear the cache\n */\n clearCache(): void {\n this.listDetailsCache.clear();\n }\n}\n"]}
1
+ {"version":3,"file":"list-set-operations.service.js","sourceRoot":"","sources":["../../../src/Lists/services/list-set-operations.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { RunView, Metadata, IMetadataProvider } from '@memberjunction/core';\nimport { MJListEntity, MJListDetailEntity } from '@memberjunction/core-entities';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * Represents a set (list) in the Venn diagram\n */\nexport interface VennSet {\n listId: string;\n listName: string;\n color: string;\n recordIds: Set<string>;\n size: number;\n}\n\n/**\n * Represents an intersection region in the Venn diagram\n */\nexport interface VennIntersection {\n /**\n * IDs of lists that participate in this intersection\n */\n setIds: string[];\n\n /**\n * Labels of lists that participate in this intersection\n */\n setLabels: string[];\n\n /**\n * Number of records in this intersection\n */\n size: number;\n\n /**\n * Actual record IDs in this intersection\n */\n recordIds: string[];\n\n /**\n * Display label for this region\n */\n label: string;\n\n /**\n * Whether this region is currently selected\n */\n isSelected: boolean;\n}\n\n/**\n * Complete Venn data for visualization\n */\nexport interface VennData {\n sets: VennSet[];\n intersections: VennIntersection[];\n entityId?: string;\n entityName?: string;\n}\n\n/**\n * Set operation types\n */\nexport type SetOperation = 'union' | 'intersection' | 'difference' | 'symmetric_difference' | 'complement';\n\n/**\n * Result of a set operation\n */\nexport interface SetOperationResult {\n operation: SetOperation;\n inputSetIds: string[];\n resultRecordIds: string[];\n resultCount: number;\n}\n\n// Predefined color palette for Venn sets\nconst VENN_COLORS = [\n '#2196F3', // Blue\n '#4CAF50', // Green\n '#FF9800', // Orange\n '#E91E63', // Pink\n '#9C27B0', // Purple\n '#00BCD4', // Cyan\n '#F44336', // Red\n '#8BC34A' // Light Green\n];\n\n/**\n * Service for performing set operations on lists and preparing data for Venn visualization.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ListSetOperationsService {\n private _provider: IMetadataProvider | null = null;\n /** Set the metadata provider this service should use. Components should call this after injection. */\n public set Provider(value: IMetadataProvider | null) {\n this._provider = value;\n }\n public get Provider(): IMetadataProvider {\n return this._provider ?? Metadata.Provider;\n }\n private loadingSubject = new BehaviorSubject<boolean>(false);\n public loading$: Observable<boolean> = this.loadingSubject.asObservable();\n\n // Cache for list details\n private listDetailsCache = new Map<string, Set<string>>();\n\n constructor() {}\n\n /**\n * Load list data and calculate all intersections for Venn visualization\n */\n async calculateVennData(lists: MJListEntity[]): Promise<VennData> {\n if (lists.length === 0) {\n return { sets: [], intersections: [] };\n }\n\n this.loadingSubject.next(true);\n\n try {\n // Load all list details in a single query\n const listIds = lists.map(l => l.ID);\n const listIdFilter = listIds.map(id => `'${id}'`).join(',');\n\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<{ ListID: string; RecordID: string }>({\n EntityName: 'MJ: List Details',\n ExtraFilter: `ListID IN (${listIdFilter})`,\n Fields: ['ListID', 'RecordID'],\n ResultType: 'simple'\n });\n\n // Build sets per list\n const setsMap = new Map<string, Set<string>>();\n for (const listId of listIds) {\n setsMap.set(listId, new Set());\n }\n\n if (result.Success && result.Results) {\n for (const detail of result.Results) {\n const set = setsMap.get(detail.ListID);\n if (set) {\n set.add(detail.RecordID);\n }\n }\n }\n\n // Update cache\n for (const [listId, records] of setsMap) {\n this.listDetailsCache.set(listId, records);\n }\n\n // Build VennSet objects\n const sets: VennSet[] = lists.map((list, index) => ({\n listId: list.ID,\n listName: list.Name,\n color: VENN_COLORS[index % VENN_COLORS.length],\n recordIds: setsMap.get(list.ID) || new Set(),\n size: setsMap.get(list.ID)?.size || 0\n }));\n\n // Calculate all possible intersections\n const intersections = this.calculateAllIntersections(sets);\n\n // Get entity info from the first list (assuming all lists are same entity)\n const entityId = lists[0]?.EntityID;\n const entityName = lists[0]?.Entity;\n\n return { sets, intersections, entityId, entityName };\n } finally {\n this.loadingSubject.next(false);\n }\n }\n\n /**\n * Calculate all possible intersections between the given sets\n */\n private calculateAllIntersections(sets: VennSet[]): VennIntersection[] {\n const intersections: VennIntersection[] = [];\n const n = sets.length;\n\n // Generate all non-empty subsets of sets\n for (let mask = 1; mask < (1 << n); mask++) {\n const subset: VennSet[] = [];\n for (let i = 0; i < n; i++) {\n if (mask & (1 << i)) {\n subset.push(sets[i]);\n }\n }\n\n // Calculate exclusive intersection (records in exactly these sets)\n const recordIds = this.calculateExclusiveIntersection(subset, sets);\n\n if (recordIds.length > 0 || subset.length === 1) {\n const setIds = subset.map(s => s.listId);\n const setLabels = subset.map(s => s.listName);\n\n intersections.push({\n setIds,\n setLabels,\n size: recordIds.length,\n recordIds,\n label: this.buildIntersectionLabel(setLabels),\n isSelected: false\n });\n }\n }\n\n // Sort by number of sets (single sets first, then pairs, etc.)\n intersections.sort((a, b) => a.setIds.length - b.setIds.length);\n\n return intersections;\n }\n\n /**\n * Calculate records that are in ALL of the specified sets but NONE of the other sets\n */\n private calculateExclusiveIntersection(includedSets: VennSet[], allSets: VennSet[]): string[] {\n if (includedSets.length === 0) return [];\n\n // Start with records in the first included set\n let result = new Set(includedSets[0].recordIds);\n\n // Intersect with all other included sets\n for (let i = 1; i < includedSets.length; i++) {\n result = this.intersect(result, includedSets[i].recordIds);\n }\n\n // Remove records that are in excluded sets\n const excludedSets = allSets.filter(s => !includedSets.includes(s));\n for (const excluded of excludedSets) {\n result = this.difference(result, excluded.recordIds);\n }\n\n return Array.from(result);\n }\n\n /**\n * Build a display label for an intersection\n */\n private buildIntersectionLabel(setLabels: string[]): string {\n if (setLabels.length === 1) {\n return `Only in ${setLabels[0]}`;\n }\n return setLabels.join(' ∩ ');\n }\n\n /**\n * Perform a set operation on multiple lists\n */\n async performOperation(\n operation: SetOperation,\n listIds: string[],\n allListIds?: string[]\n ): Promise<SetOperationResult> {\n this.loadingSubject.next(true);\n\n try {\n // Ensure we have the list details loaded\n await this.ensureListsLoaded(listIds);\n\n const sets = listIds.map(id => this.listDetailsCache.get(id) || new Set<string>());\n let resultSet: Set<string>;\n\n switch (operation) {\n case 'union':\n resultSet = this.unionAll(sets);\n break;\n\n case 'intersection':\n resultSet = this.intersectAll(sets);\n break;\n\n case 'difference':\n // A - B - C - ... (first set minus all others)\n if (sets.length < 2) {\n resultSet = sets[0] || new Set();\n } else {\n resultSet = new Set(sets[0]);\n for (let i = 1; i < sets.length; i++) {\n resultSet = this.difference(resultSet, sets[i]);\n }\n }\n break;\n\n case 'symmetric_difference':\n // Records that are in exactly one of the sets\n resultSet = this.symmetricDifferenceAll(sets);\n break;\n\n case 'complement':\n // Records NOT in any of the selected sets (requires allListIds)\n if (allListIds) {\n await this.ensureListsLoaded(allListIds);\n const allSets = allListIds.map(id => this.listDetailsCache.get(id) || new Set<string>());\n const allRecords = this.unionAll(allSets);\n const selectedRecords = this.unionAll(sets);\n resultSet = this.difference(allRecords, selectedRecords);\n } else {\n resultSet = new Set();\n }\n break;\n\n default:\n resultSet = new Set();\n }\n\n return {\n operation,\n inputSetIds: listIds,\n resultRecordIds: Array.from(resultSet),\n resultCount: resultSet.size\n };\n } finally {\n this.loadingSubject.next(false);\n }\n }\n\n /**\n * Ensure list details are loaded for the given list IDs\n */\n private async ensureListsLoaded(listIds: string[]): Promise<void> {\n const missingIds = listIds.filter(id => !this.listDetailsCache.has(id));\n\n if (missingIds.length === 0) return;\n\n const listIdFilter = missingIds.map(id => `'${id}'`).join(',');\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n const result = await rv.RunView<{ ListID: string; RecordID: string }>({\n EntityName: 'MJ: List Details',\n ExtraFilter: `ListID IN (${listIdFilter})`,\n Fields: ['ListID', 'RecordID'],\n ResultType: 'simple'\n });\n\n // Initialize sets for missing lists\n for (const id of missingIds) {\n this.listDetailsCache.set(id, new Set());\n }\n\n if (result.Success && result.Results) {\n for (const detail of result.Results) {\n const set = this.listDetailsCache.get(detail.ListID);\n if (set) {\n set.add(detail.RecordID);\n }\n }\n }\n }\n\n /**\n * Set intersection of two sets\n */\n private intersect(a: Set<string>, b: Set<string>): Set<string> {\n const result = new Set<string>();\n for (const item of a) {\n if (b.has(item)) {\n result.add(item);\n }\n }\n return result;\n }\n\n /**\n * Set difference (a - b)\n */\n private difference(a: Set<string>, b: Set<string>): Set<string> {\n const result = new Set<string>();\n for (const item of a) {\n if (!b.has(item)) {\n result.add(item);\n }\n }\n return result;\n }\n\n /**\n * Union of multiple sets\n */\n private unionAll(sets: Set<string>[]): Set<string> {\n const result = new Set<string>();\n for (const set of sets) {\n for (const item of set) {\n result.add(item);\n }\n }\n return result;\n }\n\n /**\n * Intersection of multiple sets\n */\n private intersectAll(sets: Set<string>[]): Set<string> {\n if (sets.length === 0) return new Set();\n if (sets.length === 1) return new Set(sets[0]);\n\n let result = new Set(sets[0]);\n for (let i = 1; i < sets.length; i++) {\n result = this.intersect(result, sets[i]);\n }\n return result;\n }\n\n /**\n * Symmetric difference of multiple sets (items in exactly one set)\n */\n private symmetricDifferenceAll(sets: Set<string>[]): Set<string> {\n if (sets.length === 0) return new Set();\n\n // Count occurrences of each item\n const counts = new Map<string, number>();\n for (const set of sets) {\n for (const item of set) {\n counts.set(item, (counts.get(item) || 0) + 1);\n }\n }\n\n // Keep only items that appear exactly once\n const result = new Set<string>();\n for (const [item, count] of counts) {\n if (count === 1) {\n result.add(item);\n }\n }\n return result;\n }\n\n /**\n * Get the color for a list by its index\n */\n getColorForIndex(index: number): string {\n return VENN_COLORS[index % VENN_COLORS.length];\n }\n\n /**\n * Clear the cache\n */\n clearCache(): void {\n this.listDetailsCache.clear();\n }\n}\n"]}
@@ -8,6 +8,7 @@ import { FormBuilder, FormGroup } from '@angular/forms';
8
8
  import { MJCredentialTypeEntity } from '@memberjunction/core-entities';
9
9
  import { MCPConnectionData, MCPServerData } from '../mcp-dashboard.component';
10
10
  import { CredentialDialogComponent, CredentialDialogResult } from '@memberjunction/ng-credentials';
11
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
11
12
  import * as i0 from "@angular/core";
12
13
  /**
13
14
  * Dialog result interface
@@ -19,7 +20,7 @@ export interface ConnectionDialogResult {
19
20
  /**
20
21
  * MCP Connection Dialog Component
21
22
  */
22
- export declare class MCPConnectionDialogComponent implements OnInit, OnChanges {
23
+ export declare class MCPConnectionDialogComponent extends BaseAngularComponent implements OnInit, OnChanges {
23
24
  private fb;
24
25
  private cdr;
25
26
  credentialDialog: CredentialDialogComponent;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-connection-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/MCP/components/mcp-connection-dialog.component.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAa,MAAM,eAAe,CAAC;AACvI,OAAO,EAAE,WAAW,EAAE,SAAS,EAAc,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAA+B,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;;AAGnG;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED;;GAEG;AACH,qBAMa,4BAA6B,YAAW,MAAM,EAAE,SAAS;IA+B9D,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,GAAG;IA9BgB,gBAAgB,EAAG,yBAAyB,CAAC;IAEnE,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC5C,OAAO,EAAE,aAAa,EAAE,CAAM;IAC9B,OAAO,UAAS;IACf,KAAK,uCAA8C;IAEtD,cAAc,EAAE,SAAS,CAAC;IAC1B,WAAW,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;IACtD,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;IACpD,eAAe,EAAE,sBAAsB,EAAE,CAAM;IAC/C,QAAQ,UAAS;IACjB,kBAAkB,UAAS;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnC,oBAAoB,UAAS;IAEpC,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,aAAa,IAAI,aAAa,EAAE,CAE1C;gBAGW,EAAE,EAAE,WAAW,EACf,GAAG,EAAE,iBAAiB;IAKlC,QAAQ,IAAI,IAAI;IAIhB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAQzC,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,cAAc;YAsCR,gBAAgB;IA0C9B;;OAEG;IACI,oBAAoB,IAAI,IAAI;IAKnC;;OAEG;IACI,uBAAuB,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAoB7D,cAAc,IAAI,IAAI;IAWhB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyD3B,MAAM,IAAI,IAAI;IAId,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;yCA1PvD,4BAA4B;2CAA5B,4BAA4B;CA8PxC"}
1
+ {"version":3,"file":"mcp-connection-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/MCP/components/mcp-connection-dialog.component.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAa,MAAM,eAAe,CAAC;AACvI,OAAO,EAAE,WAAW,EAAE,SAAS,EAAc,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAA+B,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAEnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;AAErE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED;;GAEG;AACH,qBAMa,4BAA6B,SAAQ,oBAAqB,YAAW,MAAM,EAAE,SAAS;IA+B3F,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,GAAG;IA9BgB,gBAAgB,EAAG,yBAAyB,CAAC;IAEnE,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC5C,OAAO,EAAE,aAAa,EAAE,CAAM;IAC9B,OAAO,UAAS;IACf,KAAK,uCAA8C;IAEtD,cAAc,EAAE,SAAS,CAAC;IAC1B,WAAW,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;IACtD,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;IACpD,eAAe,EAAE,sBAAsB,EAAE,CAAM;IAC/C,QAAQ,UAAS;IACjB,kBAAkB,UAAS;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnC,oBAAoB,UAAS;IAEpC,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,aAAa,IAAI,aAAa,EAAE,CAE1C;gBAGW,EAAE,EAAE,WAAW,EACf,GAAG,EAAE,iBAAiB;IAMlC,QAAQ,IAAI,IAAI;IAIhB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAQzC,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,cAAc;YAsCR,gBAAgB;IA0C9B;;OAEG;IACI,oBAAoB,IAAI,IAAI;IAKnC;;OAEG;IACI,uBAAuB,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAoB7D,cAAc,IAAI,IAAI;IAWhB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyD3B,MAAM,IAAI,IAAI;IAId,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;yCA3PvD,4BAA4B;2CAA5B,4BAA4B;CA+PxC"}
@@ -5,8 +5,9 @@
5
5
  */
6
6
  import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
7
7
  import { Validators } from '@angular/forms';
8
- import { Metadata, RunView, CompositeKey } from '@memberjunction/core';
8
+ import { RunView, CompositeKey } from '@memberjunction/core';
9
9
  import { UUIDsEqual } from '@memberjunction/global';
10
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
10
11
  import * as i0 from "@angular/core";
11
12
  import * as i1 from "@angular/forms";
12
13
  import * as i2 from "@memberjunction/ng-ui-components";
@@ -266,7 +267,7 @@ function MCPConnectionDialogComponent_Conditional_1_Template(rf, ctx) { if (rf &
266
267
  /**
267
268
  * MCP Connection Dialog Component
268
269
  */
269
- export class MCPConnectionDialogComponent {
270
+ export class MCPConnectionDialogComponent extends BaseAngularComponent {
270
271
  fb;
271
272
  cdr;
272
273
  credentialDialog;
@@ -292,6 +293,7 @@ export class MCPConnectionDialogComponent {
292
293
  return this.servers.filter(s => s.Status === 'Active');
293
294
  }
294
295
  constructor(fb, cdr) {
296
+ super();
295
297
  this.fb = fb;
296
298
  this.cdr = cdr;
297
299
  this.connectionForm = this.createForm();
@@ -364,7 +366,7 @@ export class MCPConnectionDialogComponent {
364
366
  async loadDropdownData() {
365
367
  this.IsLoadingDropdowns = true;
366
368
  try {
367
- const rv = new RunView();
369
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
368
370
  // Load credentials, credential types, and companies in parallel
369
371
  const [credResult, typeResult, companyResult] = await rv.RunViews([
370
372
  {
@@ -449,7 +451,7 @@ export class MCPConnectionDialogComponent {
449
451
  this.ErrorMessage = null;
450
452
  this.cdr.detectChanges();
451
453
  try {
452
- const md = new Metadata();
454
+ const md = this.ProviderToUse;
453
455
  const entity = await md.GetEntityObject('MJ: MCP Server Connections');
454
456
  if (this.IsEditMode && this.connection) {
455
457
  await entity.InnerLoad(new CompositeKey([{ FieldName: 'ID', Value: this.connection.ID }]));
@@ -505,7 +507,7 @@ export class MCPConnectionDialogComponent {
505
507
  } if (rf & 2) {
506
508
  let _t;
507
509
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.credentialDialog = _t.first);
508
- } }, inputs: { connection: "connection", servers: "servers", visible: "visible" }, outputs: { close: "close" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 2, vars: 2, consts: [["mjDropdownItem", ""], ["credentialDialog", ""], [3, "Visible", "Title", "Width"], [3, "Visible"], [3, "Close", "Visible", "Title", "Width"], [1, "connection-form", 3, "formGroup"], [1, "error-banner"], [1, "form-section"], [1, "fa-solid", "fa-info-circle"], [1, "form-group"], ["for", "server"], [1, "required"], ["TextField", "Name", "ValueField", "ID", 3, "ValueChange", "Data", "ValuePrimitive", "DefaultItem", "ngModelOptions", "ngModel"], [1, "error-text"], ["for", "name"], ["id", "name", "formControlName", "Name", "placeholder", "e.g., Production GitHub Connection", 1, "mj-input"], ["for", "description"], ["id", "description", "formControlName", "Description", "placeholder", "Optional description of this connection", 1, "mj-textarea", 3, "rows"], ["for", "status"], [3, "ValueChange", "Data", "ngModelOptions", "ngModel"], ["for", "company"], [1, "hint"], [1, "fa-solid", "fa-key"], ["for", "credential"], [1, "loading-credentials"], ["for", "customHeader"], ["id", "customHeader", "formControlName", "CustomHeaderName", "placeholder", "e.g., X-Custom-API-Key", 1, "mj-input"], [1, "fa-solid", "fa-sliders"], [1, "checkbox-group"], [1, "checkbox-label"], ["type", "checkbox", "formControlName", "AutoSyncTools", 1, "mj-checkbox"], [1, "fa-solid", "fa-file-lines"], ["type", "checkbox", "formControlName", "LogToolCalls", 1, "mj-checkbox"], [1, "logging-options"], ["type", "checkbox", "formControlName", "LogInputParameters", 1, "mj-checkbox"], ["type", "checkbox", "formControlName", "LogOutputContent", 1, "mj-checkbox"], ["for", "maxOutputSize"], [3, "ngModelChange", "Min", "Max", "Step", "ngModelOptions", "ngModel"], [1, "fa-solid", "fa-gear"], ["for", "envVars"], ["id", "envVars", "formControlName", "EnvironmentVars", "placeholder", "{\"VAR_NAME\": \"value\"}", 1, "mj-textarea", 3, "rows"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["mjButton", "", 3, "click"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "server-option"], [1, "server-name"], [1, "server-transport"], [1, "credential-row"], ["mjButton", "", "type", "button", "variant", "outline", "title", "Create New Credential", 3, "click"], [1, "fa-solid", "fa-plus"], [3, "close", "Visible"]], template: function MCPConnectionDialogComponent_Template(rf, ctx) { if (rf & 1) {
510
+ } }, inputs: { connection: "connection", servers: "servers", visible: "visible" }, outputs: { close: "close" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 2, vars: 2, consts: [["mjDropdownItem", ""], ["credentialDialog", ""], [3, "Visible", "Title", "Width"], [3, "Visible"], [3, "Close", "Visible", "Title", "Width"], [1, "connection-form", 3, "formGroup"], [1, "error-banner"], [1, "form-section"], [1, "fa-solid", "fa-info-circle"], [1, "form-group"], ["for", "server"], [1, "required"], ["TextField", "Name", "ValueField", "ID", 3, "ValueChange", "Data", "ValuePrimitive", "DefaultItem", "ngModelOptions", "ngModel"], [1, "error-text"], ["for", "name"], ["id", "name", "formControlName", "Name", "placeholder", "e.g., Production GitHub Connection", 1, "mj-input"], ["for", "description"], ["id", "description", "formControlName", "Description", "placeholder", "Optional description of this connection", 1, "mj-textarea", 3, "rows"], ["for", "status"], [3, "ValueChange", "Data", "ngModelOptions", "ngModel"], ["for", "company"], [1, "hint"], [1, "fa-solid", "fa-key"], ["for", "credential"], [1, "loading-credentials"], ["for", "customHeader"], ["id", "customHeader", "formControlName", "CustomHeaderName", "placeholder", "e.g., X-Custom-API-Key", 1, "mj-input"], [1, "fa-solid", "fa-sliders"], [1, "checkbox-group"], [1, "checkbox-label"], ["type", "checkbox", "formControlName", "AutoSyncTools", 1, "mj-checkbox"], [1, "fa-solid", "fa-file-lines"], ["type", "checkbox", "formControlName", "LogToolCalls", 1, "mj-checkbox"], [1, "logging-options"], ["type", "checkbox", "formControlName", "LogInputParameters", 1, "mj-checkbox"], ["type", "checkbox", "formControlName", "LogOutputContent", 1, "mj-checkbox"], ["for", "maxOutputSize"], [3, "ngModelChange", "Min", "Max", "Step", "ngModelOptions", "ngModel"], [1, "fa-solid", "fa-gear"], ["for", "envVars"], ["id", "envVars", "formControlName", "EnvironmentVars", "placeholder", "{\"VAR_NAME\": \"value\"}", 1, "mj-textarea", 3, "rows"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["mjButton", "", 3, "click"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "server-option"], [1, "server-name"], [1, "server-transport"], [1, "credential-row"], ["mjButton", "", "type", "button", "variant", "outline", "title", "Create New Credential", 3, "click"], [1, "fa-solid", "fa-plus"], [3, "close", "Visible"]], template: function MCPConnectionDialogComponent_Template(rf, ctx) { if (rf & 1) {
509
511
  i0.ɵɵconditionalCreate(0, MCPConnectionDialogComponent_Conditional_0_Template, 107, 40, "mj-dialog", 2);
510
512
  i0.ɵɵconditionalCreate(1, MCPConnectionDialogComponent_Conditional_1_Template, 2, 1, "mj-credential-dialog", 3);
511
513
  } if (rf & 2) {
@@ -529,5 +531,5 @@ export class MCPConnectionDialogComponent {
529
531
  }], close: [{
530
532
  type: Output
531
533
  }] }); })();
532
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MCPConnectionDialogComponent, { className: "MCPConnectionDialogComponent", filePath: "src/MCP/components/mcp-connection-dialog.component.ts", lineNumber: 32 }); })();
534
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MCPConnectionDialogComponent, { className: "MCPConnectionDialogComponent", filePath: "src/MCP/components/mcp-connection-dialog.component.ts", lineNumber: 33 }); })();
533
535
  //# sourceMappingURL=mcp-connection-dialog.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-connection-dialog.component.js","sourceRoot":"","sources":["../../../src/MCP/components/mcp-connection-dialog.component.ts","../../../src/MCP/components/mcp-connection-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview MCP Connection Dialog Component\n *\n * Dialog for creating and editing MCP server connections.\n */\n\nimport { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, ChangeDetectorRef, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Metadata, RunView, CompositeKey } from '@memberjunction/core';\nimport { MJMCPServerConnectionEntity, MJCredentialTypeEntity } from '@memberjunction/core-entities';\nimport { MCPConnectionData, MCPServerData } from '../mcp-dashboard.component';\nimport { CredentialDialogComponent, CredentialDialogResult } from '@memberjunction/ng-credentials';\nimport { UUIDsEqual } from '@memberjunction/global';\n\n/**\n * Dialog result interface\n */\nexport interface ConnectionDialogResult {\n saved: boolean;\n connection?: MCPConnectionData;\n}\n\n/**\n * MCP Connection Dialog Component\n */\n@Component({\n standalone: false,\n selector: 'mj-mcp-connection-dialog',\n templateUrl: './mcp-connection-dialog.component.html',\n styleUrls: ['./mcp-connection-dialog.component.css']\n})\nexport class MCPConnectionDialogComponent implements OnInit, OnChanges {\n\n @ViewChild('credentialDialog') credentialDialog!: CredentialDialogComponent;\n\n @Input() connection: MCPConnectionData | null = null;\n @Input() servers: MCPServerData[] = [];\n @Input() visible = false;\n @Output() close = new EventEmitter<ConnectionDialogResult>();\n\n public connectionForm: FormGroup;\n public credentials: Array<{ ID: string; Name: string }> = [];\n public companies: Array<{ ID: string; Name: string }> = [];\n public credentialTypes: MJCredentialTypeEntity[] = [];\n public IsSaving = false;\n public IsLoadingDropdowns = false;\n public ErrorMessage: string | null = null;\n public ShowCredentialDialog = false;\n\n public get IsEditMode(): boolean {\n return !!this.connection?.ID;\n }\n\n public get DialogTitle(): string {\n return this.IsEditMode ? 'Edit Connection' : 'Add Connection';\n }\n\n public get ActiveServers(): MCPServerData[] {\n return this.servers.filter(s => s.Status === 'Active');\n }\n\n constructor(\n private fb: FormBuilder,\n private cdr: ChangeDetectorRef\n ) {\n this.connectionForm = this.createForm();\n }\n\n ngOnInit(): void {\n this.loadDropdownData();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['connection'] || changes['visible']) {\n if (this.visible) {\n this.initializeForm();\n }\n }\n }\n\n private createForm(): FormGroup {\n return this.fb.group({\n MCPServerID: ['', Validators.required],\n Name: ['', [Validators.required, Validators.maxLength(200)]],\n Description: ['', Validators.maxLength(2000)],\n CompanyID: [''],\n CredentialID: [''],\n AutoSyncTools: [true],\n LogToolCalls: [true],\n LogInputParameters: [true],\n LogOutputContent: [true],\n MaxOutputLogSize: [102400, [Validators.min(0), Validators.max(10485760)]],\n CustomHeaderName: [''],\n EnvironmentVars: [''],\n Status: ['Active']\n });\n }\n\n private initializeForm(): void {\n if (this.connection) {\n this.connectionForm.patchValue({\n MCPServerID: this.connection.MCPServerID,\n Name: this.connection.Name,\n Description: this.connection.Description ?? '',\n CompanyID: this.connection.CompanyID ?? '',\n CredentialID: this.connection.CredentialID ?? '',\n AutoSyncTools: this.connection.AutoSyncTools,\n LogToolCalls: this.connection.LogToolCalls,\n LogInputParameters: true,\n LogOutputContent: true,\n MaxOutputLogSize: 102400,\n CustomHeaderName: '',\n EnvironmentVars: '',\n Status: this.connection.Status\n });\n } else {\n this.connectionForm.reset({\n MCPServerID: '',\n Name: '',\n Description: '',\n CompanyID: '',\n CredentialID: '',\n AutoSyncTools: true,\n LogToolCalls: true,\n LogInputParameters: true,\n LogOutputContent: true,\n MaxOutputLogSize: 102400,\n CustomHeaderName: '',\n EnvironmentVars: '',\n Status: 'Active'\n });\n }\n this.ErrorMessage = null;\n this.cdr.detectChanges();\n }\n\n private async loadDropdownData(): Promise<void> {\n this.IsLoadingDropdowns = true;\n try {\n const rv = new RunView();\n // Load credentials, credential types, and companies in parallel\n const [credResult, typeResult, companyResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Credentials',\n Fields: ['ID', 'Name'],\n OrderBy: 'Name',\n ResultType: 'simple'\n },\n {\n EntityName: 'MJ: Credential Types',\n OrderBy: 'Category, Name',\n ResultType: 'entity_object'\n },\n {\n EntityName: 'MJ: Companies',\n Fields: ['ID', 'Name'],\n OrderBy: 'Name',\n ResultType: 'simple'\n }\n ]);\n\n if (credResult.Success) {\n this.credentials = credResult.Results as Array<{ ID: string; Name: string }> || [];\n }\n if (typeResult.Success) {\n this.credentialTypes = typeResult.Results as MJCredentialTypeEntity[] || [];\n }\n if (companyResult.Success) {\n this.companies = companyResult.Results as Array<{ ID: string; Name: string }> || [];\n }\n } catch (error) {\n console.error('Failed to load dropdown data:', error);\n } finally {\n this.IsLoadingDropdowns = false;\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Opens the credential creation dialog\n */\n public openCredentialDialog(): void {\n this.ShowCredentialDialog = true;\n this.cdr.detectChanges();\n }\n\n /**\n * Handles the credential dialog close event\n */\n public onCredentialDialogClose(result: CredentialDialogResult): void {\n this.ShowCredentialDialog = false;\n\n if (result.success && result.credential) {\n // Add the new credential to the list and select it\n this.credentials.push({\n ID: result.credential.ID,\n Name: result.credential.Name\n });\n // Sort credentials by name\n this.credentials.sort((a, b) => a.Name.localeCompare(b.Name));\n // Select the new credential\n this.connectionForm.patchValue({\n CredentialID: result.credential.ID\n });\n }\n\n this.cdr.detectChanges();\n }\n\n public onServerChange(): void {\n const serverId = this.connectionForm.get('MCPServerID')?.value;\n const server = this.servers.find(s => UUIDsEqual(s.ID, serverId));\n if (server && !this.connectionForm.get('Name')?.value) {\n // Auto-fill name based on server\n this.connectionForm.patchValue({\n Name: `${server.Name} Connection`\n });\n }\n }\n\n public async save(): Promise<void> {\n if (this.connectionForm.invalid) {\n this.connectionForm.markAllAsTouched();\n return;\n }\n\n this.IsSaving = true;\n this.ErrorMessage = null;\n this.cdr.detectChanges();\n\n try {\n const md = new Metadata();\n const entity = await md.GetEntityObject<MJMCPServerConnectionEntity>('MJ: MCP Server Connections');\n\n if (this.IsEditMode && this.connection) {\n await entity.InnerLoad(new CompositeKey([{ FieldName: 'ID', Value: this.connection.ID }]));\n } else {\n entity.NewRecord();\n }\n\n // Apply form values\n const formValue = this.connectionForm.value;\n entity.MCPServerID = formValue.MCPServerID;\n entity.Name = formValue.Name;\n entity.Description = formValue.Description || null;\n entity.CompanyID = formValue.CompanyID || null;\n entity.CredentialID = formValue.CredentialID || null;\n entity.AutoSyncTools = formValue.AutoSyncTools;\n entity.LogToolCalls = formValue.LogToolCalls;\n entity.LogInputParameters = formValue.LogInputParameters;\n entity.LogOutputContent = formValue.LogOutputContent;\n entity.MaxOutputLogSize = formValue.MaxOutputLogSize || 102400;\n entity.CustomHeaderName = formValue.CustomHeaderName || null;\n entity.EnvironmentVars = formValue.EnvironmentVars || null;\n entity.Status = formValue.Status;\n\n const saved = await entity.Save();\n if (!saved) {\n // Use CompleteMessage for full error details, fall back to Message\n const errorMessage = entity.LatestResult?.CompleteMessage || entity.LatestResult?.Message || 'Unknown error';\n console.error('MCP Connection save failed:', errorMessage, entity.LatestResult);\n throw new Error(errorMessage);\n }\n\n this.close.emit({ saved: true });\n\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error);\n this.ErrorMessage = `Failed to save: ${errorMsg}`;\n console.error('MCP Connection save error:', errorMsg);\n this.cdr.detectChanges();\n } finally {\n this.IsSaving = false;\n this.cdr.detectChanges();\n }\n }\n\n public cancel(): void {\n this.close.emit({ saved: false });\n }\n\n public hasError(controlName: string, errorType: string): boolean {\n const control = this.connectionForm.get(controlName);\n return control?.hasError(errorType) && control?.touched || false;\n }\n}\n","@if (visible) {\n <mj-dialog\n [Visible]=\"true\"\n [Title]=\"DialogTitle\"\n (Close)=\"cancel()\"\n [Width]=\"600\">\n <form [formGroup]=\"connectionForm\" class=\"connection-form\">\n <!-- Error Message -->\n @if (ErrorMessage) {\n <div class=\"error-banner\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ ErrorMessage }}\n </div>\n }\n <!-- Basic Info Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-info-circle\"></i> Basic Information</h3>\n <div class=\"form-group\">\n <label for=\"server\">MCP Server <span class=\"required\">*</span></label>\n <mj-dropdown\n [Data]=\"ActiveServers\"\n TextField=\"Name\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"{ Name: 'Select a server...', ID: '' }\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"connectionForm.get('MCPServerID')?.value\"\n (ValueChange)=\"connectionForm.get('MCPServerID')?.setValue($any($event)); onServerChange()\">\n <ng-template #mjDropdownItem let-dataItem>\n <div class=\"server-option\">\n <span class=\"server-name\">{{ dataItem.Name }}</span>\n @if (dataItem.TransportType) {\n <span class=\"server-transport\">{{ dataItem.TransportType }}</span>\n }\n </div>\n </ng-template>\n </mj-dropdown>\n @if (hasError('MCPServerID', 'required')) {\n <span class=\"error-text\">Server selection is required</span>\n }\n </div>\n <div class=\"form-group\">\n <label for=\"name\">Connection Name <span class=\"required\">*</span></label>\n <input class=\"mj-input\"\n id=\"name\"\n formControlName=\"Name\"\n placeholder=\"e.g., Production GitHub Connection\" />\n @if (hasError('Name', 'required')) {\n <span class=\"error-text\">Name is required</span>\n }\n </div>\n <div class=\"form-group\">\n <label for=\"description\">Description</label>\n <textarea class=\"mj-textarea\"\n id=\"description\"\n formControlName=\"Description\"\n placeholder=\"Optional description of this connection\"\n [rows]=\"3\"></textarea>\n </div>\n <div class=\"form-group\">\n <label for=\"status\">Status</label>\n <mj-dropdown\n [Data]=\"['Active', 'Inactive']\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"connectionForm.get('Status')?.value\"\n (ValueChange)=\"connectionForm.get('Status')?.setValue($any($event))\">\n </mj-dropdown>\n </div>\n <div class=\"form-group\">\n <label for=\"company\">Company</label>\n <mj-dropdown\n [Data]=\"companies\"\n TextField=\"Name\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"{ Name: 'Global (all companies)', ID: '' }\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"connectionForm.get('CompanyID')?.value\"\n (ValueChange)=\"connectionForm.get('CompanyID')?.setValue($any($event))\">\n </mj-dropdown>\n <span class=\"hint\">Leave as Global to make this connection available to all companies</span>\n </div>\n </div>\n <!-- Authentication Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-key\"></i> Authentication</h3>\n <div class=\"form-group\">\n <label for=\"credential\">Credential</label>\n @if (IsLoadingDropdowns) {\n <div class=\"loading-credentials\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Loading credentials...\n </div>\n } @else {\n <div class=\"credential-row\">\n <mj-dropdown\n [Data]=\"credentials\"\n TextField=\"Name\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"{ Name: 'No credential (anonymous)', ID: '' }\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"connectionForm.get('CredentialID')?.value\"\n (ValueChange)=\"connectionForm.get('CredentialID')?.setValue($any($event))\">\n </mj-dropdown>\n <button mjButton\n type=\"button\"\n variant=\"outline\"\n (click)=\"openCredentialDialog()\"\n title=\"Create New Credential\">\n <i class=\"fa-solid fa-plus\"></i>\n New\n </button>\n </div>\n <span class=\"hint\">Select an existing credential or create a new one</span>\n }\n </div>\n <div class=\"form-group\">\n <label for=\"customHeader\">Custom Header Name</label>\n <input class=\"mj-input\"\n id=\"customHeader\"\n formControlName=\"CustomHeaderName\"\n placeholder=\"e.g., X-Custom-API-Key\" />\n <span class=\"hint\">Override the default header name for API key authentication</span>\n </div>\n </div>\n <!-- Behavior Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-sliders\"></i> Behavior</h3>\n <div class=\"checkbox-group\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" class=\"mj-checkbox\" formControlName=\"AutoSyncTools\" />\n <span>Auto-sync tools on connect</span>\n </label>\n <span class=\"hint\">Automatically discover and sync available tools when connecting</span>\n </div>\n </div>\n <!-- Logging Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-file-lines\"></i> Logging</h3>\n <div class=\"checkbox-group\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" class=\"mj-checkbox\" formControlName=\"LogToolCalls\" />\n <span>Enable tool call logging</span>\n </label>\n <span class=\"hint\">Log all tool executions to the database</span>\n </div>\n <div class=\"logging-options\" [class.disabled]=\"!connectionForm.get('LogToolCalls')?.value\">\n <div class=\"checkbox-group\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" class=\"mj-checkbox\" formControlName=\"LogInputParameters\" />\n <span>Log input parameters</span>\n </label>\n </div>\n <div class=\"checkbox-group\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" class=\"mj-checkbox\" formControlName=\"LogOutputContent\" />\n <span>Log output content</span>\n </label>\n </div>\n <div class=\"form-group\">\n <label for=\"maxOutputSize\">Max Output Log Size (bytes)</label>\n <mj-numeric-input\n [Min]=\"0\"\n [Max]=\"10485760\"\n [Step]=\"10240\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"connectionForm.get('MaxOutputLogSize')?.value\"\n (ngModelChange)=\"connectionForm.get('MaxOutputLogSize')?.setValue($event)\">\n </mj-numeric-input>\n <span class=\"hint\">Maximum size of output content to log (0 = unlimited, max 10MB)</span>\n </div>\n </div>\n </div>\n <!-- Advanced Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-gear\"></i> Advanced</h3>\n <div class=\"form-group\">\n <label for=\"envVars\">Environment Variables (JSON)</label>\n <textarea class=\"mj-textarea\"\n id=\"envVars\"\n formControlName=\"EnvironmentVars\"\n placeholder='{\"VAR_NAME\": \"value\"}'\n [rows]=\"3\"></textarea>\n <span class=\"hint\">Additional environment variables for Stdio transport (JSON object)</span>\n </div>\n </div>\n </form>\n <mj-dialog-actions>\n <button mjButton variant=\"primary\" (click)=\"save()\" [disabled]=\"IsSaving\">\n @if (IsSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n {{ IsEditMode ? 'Update' : 'Create' }}\n </button>\n <button mjButton (click)=\"cancel()\">Cancel</button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n\n<!-- Credential Creation Dialog -->\n@if (ShowCredentialDialog) {\n <mj-credential-dialog\n #credentialDialog\n [Visible]=\"ShowCredentialDialog\"\n (close)=\"onCredentialDialogClose($event)\">\n </mj-credential-dialog>\n}\n"]}
1
+ {"version":3,"file":"mcp-connection-dialog.component.js","sourceRoot":"","sources":["../../../src/MCP/components/mcp-connection-dialog.component.ts","../../../src/MCP/components/mcp-connection-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview MCP Connection Dialog Component\n *\n * Dialog for creating and editing MCP server connections.\n */\n\nimport { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, ChangeDetectorRef, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { RunView, CompositeKey } from '@memberjunction/core';\nimport { MJMCPServerConnectionEntity, MJCredentialTypeEntity } from '@memberjunction/core-entities';\nimport { MCPConnectionData, MCPServerData } from '../mcp-dashboard.component';\nimport { CredentialDialogComponent, CredentialDialogResult } from '@memberjunction/ng-credentials';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\n\n/**\n * Dialog result interface\n */\nexport interface ConnectionDialogResult {\n saved: boolean;\n connection?: MCPConnectionData;\n}\n\n/**\n * MCP Connection Dialog Component\n */\n@Component({\n standalone: false,\n selector: 'mj-mcp-connection-dialog',\n templateUrl: './mcp-connection-dialog.component.html',\n styleUrls: ['./mcp-connection-dialog.component.css']\n})\nexport class MCPConnectionDialogComponent extends BaseAngularComponent implements OnInit, OnChanges {\n\n @ViewChild('credentialDialog') credentialDialog!: CredentialDialogComponent;\n\n @Input() connection: MCPConnectionData | null = null;\n @Input() servers: MCPServerData[] = [];\n @Input() visible = false;\n @Output() close = new EventEmitter<ConnectionDialogResult>();\n\n public connectionForm: FormGroup;\n public credentials: Array<{ ID: string; Name: string }> = [];\n public companies: Array<{ ID: string; Name: string }> = [];\n public credentialTypes: MJCredentialTypeEntity[] = [];\n public IsSaving = false;\n public IsLoadingDropdowns = false;\n public ErrorMessage: string | null = null;\n public ShowCredentialDialog = false;\n\n public get IsEditMode(): boolean {\n return !!this.connection?.ID;\n }\n\n public get DialogTitle(): string {\n return this.IsEditMode ? 'Edit Connection' : 'Add Connection';\n }\n\n public get ActiveServers(): MCPServerData[] {\n return this.servers.filter(s => s.Status === 'Active');\n }\n\n constructor(\n private fb: FormBuilder,\n private cdr: ChangeDetectorRef\n ) {\n super();\n this.connectionForm = this.createForm();\n }\n\n ngOnInit(): void {\n this.loadDropdownData();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['connection'] || changes['visible']) {\n if (this.visible) {\n this.initializeForm();\n }\n }\n }\n\n private createForm(): FormGroup {\n return this.fb.group({\n MCPServerID: ['', Validators.required],\n Name: ['', [Validators.required, Validators.maxLength(200)]],\n Description: ['', Validators.maxLength(2000)],\n CompanyID: [''],\n CredentialID: [''],\n AutoSyncTools: [true],\n LogToolCalls: [true],\n LogInputParameters: [true],\n LogOutputContent: [true],\n MaxOutputLogSize: [102400, [Validators.min(0), Validators.max(10485760)]],\n CustomHeaderName: [''],\n EnvironmentVars: [''],\n Status: ['Active']\n });\n }\n\n private initializeForm(): void {\n if (this.connection) {\n this.connectionForm.patchValue({\n MCPServerID: this.connection.MCPServerID,\n Name: this.connection.Name,\n Description: this.connection.Description ?? '',\n CompanyID: this.connection.CompanyID ?? '',\n CredentialID: this.connection.CredentialID ?? '',\n AutoSyncTools: this.connection.AutoSyncTools,\n LogToolCalls: this.connection.LogToolCalls,\n LogInputParameters: true,\n LogOutputContent: true,\n MaxOutputLogSize: 102400,\n CustomHeaderName: '',\n EnvironmentVars: '',\n Status: this.connection.Status\n });\n } else {\n this.connectionForm.reset({\n MCPServerID: '',\n Name: '',\n Description: '',\n CompanyID: '',\n CredentialID: '',\n AutoSyncTools: true,\n LogToolCalls: true,\n LogInputParameters: true,\n LogOutputContent: true,\n MaxOutputLogSize: 102400,\n CustomHeaderName: '',\n EnvironmentVars: '',\n Status: 'Active'\n });\n }\n this.ErrorMessage = null;\n this.cdr.detectChanges();\n }\n\n private async loadDropdownData(): Promise<void> {\n this.IsLoadingDropdowns = true;\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n // Load credentials, credential types, and companies in parallel\n const [credResult, typeResult, companyResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Credentials',\n Fields: ['ID', 'Name'],\n OrderBy: 'Name',\n ResultType: 'simple'\n },\n {\n EntityName: 'MJ: Credential Types',\n OrderBy: 'Category, Name',\n ResultType: 'entity_object'\n },\n {\n EntityName: 'MJ: Companies',\n Fields: ['ID', 'Name'],\n OrderBy: 'Name',\n ResultType: 'simple'\n }\n ]);\n\n if (credResult.Success) {\n this.credentials = credResult.Results as Array<{ ID: string; Name: string }> || [];\n }\n if (typeResult.Success) {\n this.credentialTypes = typeResult.Results as MJCredentialTypeEntity[] || [];\n }\n if (companyResult.Success) {\n this.companies = companyResult.Results as Array<{ ID: string; Name: string }> || [];\n }\n } catch (error) {\n console.error('Failed to load dropdown data:', error);\n } finally {\n this.IsLoadingDropdowns = false;\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Opens the credential creation dialog\n */\n public openCredentialDialog(): void {\n this.ShowCredentialDialog = true;\n this.cdr.detectChanges();\n }\n\n /**\n * Handles the credential dialog close event\n */\n public onCredentialDialogClose(result: CredentialDialogResult): void {\n this.ShowCredentialDialog = false;\n\n if (result.success && result.credential) {\n // Add the new credential to the list and select it\n this.credentials.push({\n ID: result.credential.ID,\n Name: result.credential.Name\n });\n // Sort credentials by name\n this.credentials.sort((a, b) => a.Name.localeCompare(b.Name));\n // Select the new credential\n this.connectionForm.patchValue({\n CredentialID: result.credential.ID\n });\n }\n\n this.cdr.detectChanges();\n }\n\n public onServerChange(): void {\n const serverId = this.connectionForm.get('MCPServerID')?.value;\n const server = this.servers.find(s => UUIDsEqual(s.ID, serverId));\n if (server && !this.connectionForm.get('Name')?.value) {\n // Auto-fill name based on server\n this.connectionForm.patchValue({\n Name: `${server.Name} Connection`\n });\n }\n }\n\n public async save(): Promise<void> {\n if (this.connectionForm.invalid) {\n this.connectionForm.markAllAsTouched();\n return;\n }\n\n this.IsSaving = true;\n this.ErrorMessage = null;\n this.cdr.detectChanges();\n\n try {\n const md = this.ProviderToUse;\n const entity = await md.GetEntityObject<MJMCPServerConnectionEntity>('MJ: MCP Server Connections');\n\n if (this.IsEditMode && this.connection) {\n await entity.InnerLoad(new CompositeKey([{ FieldName: 'ID', Value: this.connection.ID }]));\n } else {\n entity.NewRecord();\n }\n\n // Apply form values\n const formValue = this.connectionForm.value;\n entity.MCPServerID = formValue.MCPServerID;\n entity.Name = formValue.Name;\n entity.Description = formValue.Description || null;\n entity.CompanyID = formValue.CompanyID || null;\n entity.CredentialID = formValue.CredentialID || null;\n entity.AutoSyncTools = formValue.AutoSyncTools;\n entity.LogToolCalls = formValue.LogToolCalls;\n entity.LogInputParameters = formValue.LogInputParameters;\n entity.LogOutputContent = formValue.LogOutputContent;\n entity.MaxOutputLogSize = formValue.MaxOutputLogSize || 102400;\n entity.CustomHeaderName = formValue.CustomHeaderName || null;\n entity.EnvironmentVars = formValue.EnvironmentVars || null;\n entity.Status = formValue.Status;\n\n const saved = await entity.Save();\n if (!saved) {\n // Use CompleteMessage for full error details, fall back to Message\n const errorMessage = entity.LatestResult?.CompleteMessage || entity.LatestResult?.Message || 'Unknown error';\n console.error('MCP Connection save failed:', errorMessage, entity.LatestResult);\n throw new Error(errorMessage);\n }\n\n this.close.emit({ saved: true });\n\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error);\n this.ErrorMessage = `Failed to save: ${errorMsg}`;\n console.error('MCP Connection save error:', errorMsg);\n this.cdr.detectChanges();\n } finally {\n this.IsSaving = false;\n this.cdr.detectChanges();\n }\n }\n\n public cancel(): void {\n this.close.emit({ saved: false });\n }\n\n public hasError(controlName: string, errorType: string): boolean {\n const control = this.connectionForm.get(controlName);\n return control?.hasError(errorType) && control?.touched || false;\n }\n}\n","@if (visible) {\n <mj-dialog\n [Visible]=\"true\"\n [Title]=\"DialogTitle\"\n (Close)=\"cancel()\"\n [Width]=\"600\">\n <form [formGroup]=\"connectionForm\" class=\"connection-form\">\n <!-- Error Message -->\n @if (ErrorMessage) {\n <div class=\"error-banner\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ ErrorMessage }}\n </div>\n }\n <!-- Basic Info Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-info-circle\"></i> Basic Information</h3>\n <div class=\"form-group\">\n <label for=\"server\">MCP Server <span class=\"required\">*</span></label>\n <mj-dropdown\n [Data]=\"ActiveServers\"\n TextField=\"Name\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"{ Name: 'Select a server...', ID: '' }\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"connectionForm.get('MCPServerID')?.value\"\n (ValueChange)=\"connectionForm.get('MCPServerID')?.setValue($any($event)); onServerChange()\">\n <ng-template #mjDropdownItem let-dataItem>\n <div class=\"server-option\">\n <span class=\"server-name\">{{ dataItem.Name }}</span>\n @if (dataItem.TransportType) {\n <span class=\"server-transport\">{{ dataItem.TransportType }}</span>\n }\n </div>\n </ng-template>\n </mj-dropdown>\n @if (hasError('MCPServerID', 'required')) {\n <span class=\"error-text\">Server selection is required</span>\n }\n </div>\n <div class=\"form-group\">\n <label for=\"name\">Connection Name <span class=\"required\">*</span></label>\n <input class=\"mj-input\"\n id=\"name\"\n formControlName=\"Name\"\n placeholder=\"e.g., Production GitHub Connection\" />\n @if (hasError('Name', 'required')) {\n <span class=\"error-text\">Name is required</span>\n }\n </div>\n <div class=\"form-group\">\n <label for=\"description\">Description</label>\n <textarea class=\"mj-textarea\"\n id=\"description\"\n formControlName=\"Description\"\n placeholder=\"Optional description of this connection\"\n [rows]=\"3\"></textarea>\n </div>\n <div class=\"form-group\">\n <label for=\"status\">Status</label>\n <mj-dropdown\n [Data]=\"['Active', 'Inactive']\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"connectionForm.get('Status')?.value\"\n (ValueChange)=\"connectionForm.get('Status')?.setValue($any($event))\">\n </mj-dropdown>\n </div>\n <div class=\"form-group\">\n <label for=\"company\">Company</label>\n <mj-dropdown\n [Data]=\"companies\"\n TextField=\"Name\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"{ Name: 'Global (all companies)', ID: '' }\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"connectionForm.get('CompanyID')?.value\"\n (ValueChange)=\"connectionForm.get('CompanyID')?.setValue($any($event))\">\n </mj-dropdown>\n <span class=\"hint\">Leave as Global to make this connection available to all companies</span>\n </div>\n </div>\n <!-- Authentication Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-key\"></i> Authentication</h3>\n <div class=\"form-group\">\n <label for=\"credential\">Credential</label>\n @if (IsLoadingDropdowns) {\n <div class=\"loading-credentials\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Loading credentials...\n </div>\n } @else {\n <div class=\"credential-row\">\n <mj-dropdown\n [Data]=\"credentials\"\n TextField=\"Name\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"{ Name: 'No credential (anonymous)', ID: '' }\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"connectionForm.get('CredentialID')?.value\"\n (ValueChange)=\"connectionForm.get('CredentialID')?.setValue($any($event))\">\n </mj-dropdown>\n <button mjButton\n type=\"button\"\n variant=\"outline\"\n (click)=\"openCredentialDialog()\"\n title=\"Create New Credential\">\n <i class=\"fa-solid fa-plus\"></i>\n New\n </button>\n </div>\n <span class=\"hint\">Select an existing credential or create a new one</span>\n }\n </div>\n <div class=\"form-group\">\n <label for=\"customHeader\">Custom Header Name</label>\n <input class=\"mj-input\"\n id=\"customHeader\"\n formControlName=\"CustomHeaderName\"\n placeholder=\"e.g., X-Custom-API-Key\" />\n <span class=\"hint\">Override the default header name for API key authentication</span>\n </div>\n </div>\n <!-- Behavior Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-sliders\"></i> Behavior</h3>\n <div class=\"checkbox-group\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" class=\"mj-checkbox\" formControlName=\"AutoSyncTools\" />\n <span>Auto-sync tools on connect</span>\n </label>\n <span class=\"hint\">Automatically discover and sync available tools when connecting</span>\n </div>\n </div>\n <!-- Logging Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-file-lines\"></i> Logging</h3>\n <div class=\"checkbox-group\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" class=\"mj-checkbox\" formControlName=\"LogToolCalls\" />\n <span>Enable tool call logging</span>\n </label>\n <span class=\"hint\">Log all tool executions to the database</span>\n </div>\n <div class=\"logging-options\" [class.disabled]=\"!connectionForm.get('LogToolCalls')?.value\">\n <div class=\"checkbox-group\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" class=\"mj-checkbox\" formControlName=\"LogInputParameters\" />\n <span>Log input parameters</span>\n </label>\n </div>\n <div class=\"checkbox-group\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" class=\"mj-checkbox\" formControlName=\"LogOutputContent\" />\n <span>Log output content</span>\n </label>\n </div>\n <div class=\"form-group\">\n <label for=\"maxOutputSize\">Max Output Log Size (bytes)</label>\n <mj-numeric-input\n [Min]=\"0\"\n [Max]=\"10485760\"\n [Step]=\"10240\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"connectionForm.get('MaxOutputLogSize')?.value\"\n (ngModelChange)=\"connectionForm.get('MaxOutputLogSize')?.setValue($event)\">\n </mj-numeric-input>\n <span class=\"hint\">Maximum size of output content to log (0 = unlimited, max 10MB)</span>\n </div>\n </div>\n </div>\n <!-- Advanced Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-gear\"></i> Advanced</h3>\n <div class=\"form-group\">\n <label for=\"envVars\">Environment Variables (JSON)</label>\n <textarea class=\"mj-textarea\"\n id=\"envVars\"\n formControlName=\"EnvironmentVars\"\n placeholder='{\"VAR_NAME\": \"value\"}'\n [rows]=\"3\"></textarea>\n <span class=\"hint\">Additional environment variables for Stdio transport (JSON object)</span>\n </div>\n </div>\n </form>\n <mj-dialog-actions>\n <button mjButton variant=\"primary\" (click)=\"save()\" [disabled]=\"IsSaving\">\n @if (IsSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n {{ IsEditMode ? 'Update' : 'Create' }}\n </button>\n <button mjButton (click)=\"cancel()\">Cancel</button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n\n<!-- Credential Creation Dialog -->\n@if (ShowCredentialDialog) {\n <mj-credential-dialog\n #credentialDialog\n [Visible]=\"ShowCredentialDialog\"\n (close)=\"onCredentialDialogClose($event)\">\n </mj-credential-dialog>\n}\n"]}
@@ -6,6 +6,7 @@
6
6
  import { EventEmitter, OnInit, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';
7
7
  import { FormBuilder, FormGroup } from '@angular/forms';
8
8
  import { MCPServerData } from '../mcp-dashboard.component';
9
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
9
10
  import * as i0 from "@angular/core";
10
11
  /**
11
12
  * Transport type options
@@ -33,7 +34,7 @@ export interface ServerDialogResult {
33
34
  /**
34
35
  * MCP Server Dialog Component
35
36
  */
36
- export declare class MCPServerDialogComponent implements OnInit, OnChanges {
37
+ export declare class MCPServerDialogComponent extends BaseAngularComponent implements OnInit, OnChanges {
37
38
  private fb;
38
39
  private cdr;
39
40
  server: MCPServerData | null;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/MCP/components/mcp-server-dialog.component.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5H,OAAO,EAAE,WAAW,EAAE,SAAS,EAAc,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;;AAE3D;;GAEG;AACH,eAAO,MAAM,eAAe;;;;GAK3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU;;;;GAOtB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED;;GAEG;AACH,qBAMa,wBAAyB,YAAW,MAAM,EAAE,SAAS;IA0C1D,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,GAAG;IAzCN,MAAM,EAAE,aAAa,GAAG,IAAI,CAAQ;IACpC,OAAO,UAAS;IACf,KAAK,mCAA0C;IAElD,UAAU,EAAE,SAAS,CAAC;IACtB,cAAc;;;;QAAmB;IACjC,SAAS;;;;QAAc;IACvB,QAAQ,UAAS;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE1C,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,qBAAqB,IAAI,MAAM,CAEzC;IAED,IAAW,WAAW,IAAI,OAAO,CAGhC;IAED,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED,IAAW,gBAAgB,IAAI,MAAM,CAEpC;IAED,IAAW,QAAQ,IAAI,OAAO,CAE7B;gBAGW,EAAE,EAAE,WAAW,EACf,GAAG,EAAE,iBAAiB;IAKlC,QAAQ,IAAI,IAAI;IAIhB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAQzC,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,cAAc;IA+CtB,OAAO,CAAC,gBAAgB;IA4BjB,qBAAqB,IAAI,IAAI;IAI7B,gBAAgB,IAAI,IAAI;IAIlB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkE3B,MAAM,IAAI,IAAI;IAId,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;yCA3OvD,wBAAwB;2CAAxB,wBAAwB;CA+OpC"}
1
+ {"version":3,"file":"mcp-server-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/MCP/components/mcp-server-dialog.component.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5H,OAAO,EAAE,WAAW,EAAE,SAAS,EAAc,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;AAErE;;GAEG;AACH,eAAO,MAAM,eAAe;;;;GAK3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU;;;;GAOtB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED;;GAEG;AACH,qBAMa,wBAAyB,SAAQ,oBAAqB,YAAW,MAAM,EAAE,SAAS;IA0CvF,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,GAAG;IAzCN,MAAM,EAAE,aAAa,GAAG,IAAI,CAAQ;IACpC,OAAO,UAAS;IACf,KAAK,mCAA0C;IAElD,UAAU,EAAE,SAAS,CAAC;IACtB,cAAc;;;;QAAmB;IACjC,SAAS;;;;QAAc;IACvB,QAAQ,UAAS;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE1C,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,qBAAqB,IAAI,MAAM,CAEzC;IAED,IAAW,WAAW,IAAI,OAAO,CAGhC;IAED,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED,IAAW,gBAAgB,IAAI,MAAM,CAEpC;IAED,IAAW,QAAQ,IAAI,OAAO,CAE7B;gBAGW,EAAE,EAAE,WAAW,EACf,GAAG,EAAE,iBAAiB;IAMlC,QAAQ,IAAI,IAAI;IAIhB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAQzC,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,cAAc;IA+CtB,OAAO,CAAC,gBAAgB;IA4BjB,qBAAqB,IAAI,IAAI;IAI7B,gBAAgB,IAAI,IAAI;IAIlB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkE3B,MAAM,IAAI,IAAI;IAId,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;yCA5OvD,wBAAwB;2CAAxB,wBAAwB;CAgPpC"}
@@ -5,7 +5,8 @@
5
5
  */
6
6
  import { Component, Input, Output, EventEmitter } from '@angular/core';
7
7
  import { Validators } from '@angular/forms';
8
- import { Metadata, CompositeKey } from '@memberjunction/core';
8
+ import { CompositeKey } from '@memberjunction/core';
9
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
9
10
  import * as i0 from "@angular/core";
10
11
  import * as i1 from "@angular/forms";
11
12
  import * as i2 from "@memberjunction/ng-ui-components";
@@ -321,7 +322,7 @@ export const AUTH_TYPES = [
321
322
  /**
322
323
  * MCP Server Dialog Component
323
324
  */
324
- export class MCPServerDialogComponent {
325
+ export class MCPServerDialogComponent extends BaseAngularComponent {
325
326
  fb;
326
327
  cdr;
327
328
  server = null;
@@ -355,6 +356,7 @@ export class MCPServerDialogComponent {
355
356
  return this.SelectedAuthType === 'OAuth2';
356
357
  }
357
358
  constructor(fb, cdr) {
359
+ super();
358
360
  this.fb = fb;
359
361
  this.cdr = cdr;
360
362
  this.serverForm = this.createForm();
@@ -479,7 +481,7 @@ export class MCPServerDialogComponent {
479
481
  this.ErrorMessage = null;
480
482
  this.cdr.detectChanges();
481
483
  try {
482
- const md = new Metadata();
484
+ const md = this.ProviderToUse;
483
485
  const entity = await md.GetEntityObject('MJ: MCP Servers');
484
486
  if (this.IsEditMode && this.server) {
485
487
  await entity.InnerLoad(new CompositeKey([{ FieldName: 'ID', Value: this.server.ID }]));
@@ -539,7 +541,7 @@ export class MCPServerDialogComponent {
539
541
  return control?.hasError(errorType) && control?.touched || false;
540
542
  }
541
543
  static ɵfac = function MCPServerDialogComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MCPServerDialogComponent)(i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
542
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MCPServerDialogComponent, selectors: [["mj-mcp-server-dialog"]], inputs: { server: "server", visible: "visible" }, outputs: { close: "close" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["mjDropdownItem", ""], [3, "Visible", "Title", "Width"], [3, "Close", "Visible", "Title", "Width"], [1, "server-form", 3, "formGroup"], [1, "error-banner"], [1, "form-section"], [1, "fa-solid", "fa-info-circle"], [1, "form-group"], ["for", "name"], [1, "required"], ["id", "name", "formControlName", "Name", "placeholder", "e.g., GitHub MCP Server", 1, "mj-input"], [1, "error-text"], ["for", "description"], ["id", "description", "formControlName", "Description", "placeholder", "Optional description of this server", 1, "mj-textarea", 3, "rows"], ["for", "status"], [3, "ValueChange", "Data", "ngModelOptions", "ngModel"], [1, "fa-solid", "fa-network-wired"], ["for", "transportType"], ["TextField", "label", "ValueField", "value", 3, "ValueChange", "Data", "ValuePrimitive", "ngModelOptions", "ngModel"], [1, "fa-solid", "fa-shield-halved"], ["for", "authType"], [1, "form-section", "oauth-section"], [1, "fa-solid", "fa-gauge-high"], [1, "form-row"], [1, "form-group", "half"], ["for", "rateLimitMinute"], ["Placeholder", "No limit", 3, "ngModelChange", "Min", "ngModelOptions", "ngModel"], ["for", "rateLimitHour"], ["for", "requestTimeout"], [3, "ngModelChange", "Min", "Max", "Step", "ngModelOptions", "ngModel"], [1, "hint"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["mjButton", "", 3, "click"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "transport-option"], [1, "transport-label"], [1, "transport-desc"], ["for", "serverUrl"], ["id", "serverUrl", "formControlName", "ServerURL", "placeholder", "https://api.example.com/mcp", 1, "mj-input"], ["for", "command"], ["id", "command", "formControlName", "Command", "placeholder", "e.g., npx or /usr/local/bin/mcp-server", 1, "mj-input"], ["for", "commandArgs"], ["id", "commandArgs", "formControlName", "CommandArgs", "placeholder", "[\"arg1\", \"arg2\"]", 1, "mj-input"], [1, "auth-option"], [1, "auth-label"], [1, "auth-desc"], [1, "fa-solid", "fa-key"], ["for", "oauthIssuerUrl"], ["id", "oauthIssuerUrl", "formControlName", "OAuthIssuerURL", "placeholder", "https://auth.example.com", 1, "mj-input"], ["for", "oauthScopes"], ["id", "oauthScopes", "formControlName", "OAuthScopes", "placeholder", "openid profile email", 1, "mj-input"], ["for", "oauthCacheTtl"], ["Placeholder", "1440", 3, "ngModelChange", "Min", "ngModelOptions", "ngModel"], [1, "oauth-client-section"], [1, "section-hint"], ["for", "oauthClientId"], ["id", "oauthClientId", "formControlName", "OAuthClientID", "placeholder", "your-client-id", 1, "mj-input"], ["for", "oauthClientSecret"], ["id", "oauthClientSecret", "formControlName", "OAuthClientSecretEncrypted", "type", "password", "placeholder", "your-client-secret", 1, "mj-input"]], template: function MCPServerDialogComponent_Template(rf, ctx) { if (rf & 1) {
544
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MCPServerDialogComponent, selectors: [["mj-mcp-server-dialog"]], inputs: { server: "server", visible: "visible" }, outputs: { close: "close" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["mjDropdownItem", ""], [3, "Visible", "Title", "Width"], [3, "Close", "Visible", "Title", "Width"], [1, "server-form", 3, "formGroup"], [1, "error-banner"], [1, "form-section"], [1, "fa-solid", "fa-info-circle"], [1, "form-group"], ["for", "name"], [1, "required"], ["id", "name", "formControlName", "Name", "placeholder", "e.g., GitHub MCP Server", 1, "mj-input"], [1, "error-text"], ["for", "description"], ["id", "description", "formControlName", "Description", "placeholder", "Optional description of this server", 1, "mj-textarea", 3, "rows"], ["for", "status"], [3, "ValueChange", "Data", "ngModelOptions", "ngModel"], [1, "fa-solid", "fa-network-wired"], ["for", "transportType"], ["TextField", "label", "ValueField", "value", 3, "ValueChange", "Data", "ValuePrimitive", "ngModelOptions", "ngModel"], [1, "fa-solid", "fa-shield-halved"], ["for", "authType"], [1, "form-section", "oauth-section"], [1, "fa-solid", "fa-gauge-high"], [1, "form-row"], [1, "form-group", "half"], ["for", "rateLimitMinute"], ["Placeholder", "No limit", 3, "ngModelChange", "Min", "ngModelOptions", "ngModel"], ["for", "rateLimitHour"], ["for", "requestTimeout"], [3, "ngModelChange", "Min", "Max", "Step", "ngModelOptions", "ngModel"], [1, "hint"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["mjButton", "", 3, "click"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "transport-option"], [1, "transport-label"], [1, "transport-desc"], ["for", "serverUrl"], ["id", "serverUrl", "formControlName", "ServerURL", "placeholder", "https://api.example.com/mcp", 1, "mj-input"], ["for", "command"], ["id", "command", "formControlName", "Command", "placeholder", "e.g., npx or /usr/local/bin/mcp-server", 1, "mj-input"], ["for", "commandArgs"], ["id", "commandArgs", "formControlName", "CommandArgs", "placeholder", "[\"arg1\", \"arg2\"]", 1, "mj-input"], [1, "auth-option"], [1, "auth-label"], [1, "auth-desc"], [1, "fa-solid", "fa-key"], ["for", "oauthIssuerUrl"], ["id", "oauthIssuerUrl", "formControlName", "OAuthIssuerURL", "placeholder", "https://auth.example.com", 1, "mj-input"], ["for", "oauthScopes"], ["id", "oauthScopes", "formControlName", "OAuthScopes", "placeholder", "openid profile email", 1, "mj-input"], ["for", "oauthCacheTtl"], ["Placeholder", "1440", 3, "ngModelChange", "Min", "ngModelOptions", "ngModel"], [1, "oauth-client-section"], [1, "section-hint"], ["for", "oauthClientId"], ["id", "oauthClientId", "formControlName", "OAuthClientID", "placeholder", "your-client-id", 1, "mj-input"], ["for", "oauthClientSecret"], ["id", "oauthClientSecret", "formControlName", "OAuthClientSecretEncrypted", "type", "password", "placeholder", "your-client-secret", 1, "mj-input"]], template: function MCPServerDialogComponent_Template(rf, ctx) { if (rf & 1) {
543
545
  i0.ɵɵconditionalCreate(0, MCPServerDialogComponent_Conditional_0_Template, 72, 42, "mj-dialog", 1);
544
546
  } if (rf & 2) {
545
547
  i0.ɵɵconditional(ctx.visible ? 0 : -1);
@@ -555,5 +557,5 @@ export class MCPServerDialogComponent {
555
557
  }], close: [{
556
558
  type: Output
557
559
  }] }); })();
558
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MCPServerDialogComponent, { className: "MCPServerDialogComponent", filePath: "src/MCP/components/mcp-server-dialog.component.ts", lineNumber: 52 }); })();
560
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MCPServerDialogComponent, { className: "MCPServerDialogComponent", filePath: "src/MCP/components/mcp-server-dialog.component.ts", lineNumber: 53 }); })();
559
561
  //# sourceMappingURL=mcp-server-dialog.component.js.map