@memberjunction/ng-dashboards 5.22.0 → 5.23.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 (204) hide show
  1. package/README.md +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +364 -362
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/agents/agent-editor.component.js +2 -2
  6. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +275 -64
  7. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  8. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2645 -436
  9. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  10. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +240 -6
  11. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  12. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +2166 -256
  13. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  14. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  15. package/dist/AI/components/execution-monitoring.component.js +191 -197
  16. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  17. package/dist/AI/components/models/model-management.component.js +9 -8
  18. package/dist/AI/components/models/model-management.component.js.map +1 -1
  19. package/dist/AI/components/prompts/prompt-management.component.js +305 -299
  20. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  21. package/dist/AI/components/system/system-configuration.component.js +319 -313
  22. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  23. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +1 -2
  24. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  25. package/dist/AI/components/vectors/vector-management-resource.component.js +12 -27
  26. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  27. package/dist/APIKeys/api-applications-panel.component.js +10 -12
  28. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  29. package/dist/APIKeys/api-key-create-dialog.component.js +13 -19
  30. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  31. package/dist/APIKeys/api-key-edit-panel.component.js +12 -14
  32. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  33. package/dist/APIKeys/api-scopes-panel.component.js +61 -68
  34. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  35. package/dist/APIKeys/api-usage-panel.component.js +10 -11
  36. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  37. package/dist/Actions/components/actions-list-view.component.js +82 -96
  38. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  39. package/dist/Actions/components/actions-overview.component.js +130 -134
  40. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  41. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
  42. package/dist/Actions/components/categories-list-view.component.js +40 -46
  43. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  44. package/dist/Actions/components/code-management.component.js +2 -2
  45. package/dist/Actions/components/code-management.component.js.map +1 -1
  46. package/dist/Actions/components/entity-integration.component.js +2 -2
  47. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  48. package/dist/Actions/components/execution-monitoring.component.js +127 -132
  49. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  50. package/dist/Actions/components/executions-list-view.component.js +2 -2
  51. package/dist/Actions/components/executions-list-view.component.js.map +1 -1
  52. package/dist/Actions/components/explorer/action-card.component.js +11 -17
  53. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  54. package/dist/Actions/components/explorer/action-explorer.component.js +5 -11
  55. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  56. package/dist/Actions/components/explorer/action-list-item.component.js +8 -10
  57. package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
  58. package/dist/Actions/components/explorer/action-toolbar.component.js +112 -133
  59. package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
  60. package/dist/Actions/components/explorer/action-tree-panel.component.js +63 -83
  61. package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
  62. package/dist/Actions/components/explorer/new-action-panel.component.js +17 -21
  63. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  64. package/dist/Actions/components/explorer/new-category-panel.component.js +17 -21
  65. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  66. package/dist/Actions/components/scheduled-actions.component.js +2 -2
  67. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  68. package/dist/Actions/components/security-permissions.component.js +2 -2
  69. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  70. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +13 -5
  71. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  72. package/dist/ComponentStudio/component-studio-dashboard.component.js +168 -145
  73. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  74. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +4 -5
  75. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
  76. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +197 -200
  77. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  78. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +5 -7
  79. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  80. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +142 -148
  81. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  82. package/dist/ComponentStudio/components/browser/component-browser.component.js +153 -166
  83. package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
  84. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +15 -20
  85. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
  86. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +16 -21
  87. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  88. package/dist/ComponentStudio/components/editors/requirements-editor.component.js +18 -23
  89. package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
  90. package/dist/ComponentStudio/components/editors/spec-editor.component.js +25 -30
  91. package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
  92. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +10 -11
  93. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
  94. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -1
  95. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +24 -35
  96. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
  97. package/dist/ComponentStudio/components/text-import-dialog.component.js +15 -17
  98. package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
  99. package/dist/Credentials/components/credentials-categories-resource.component.js +7 -6
  100. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  101. package/dist/Credentials/components/credentials-list-resource.component.js +6 -5
  102. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  103. package/dist/Credentials/components/credentials-types-resource.component.js +7 -6
  104. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  105. package/dist/DashboardBrowser/dashboard-share-dialog.component.js +9 -9
  106. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  107. package/dist/Home/home-dashboard.component.js +4 -4
  108. package/dist/Home/home-dashboard.component.js.map +1 -1
  109. package/dist/Integration/components/connections/connections.component.js +4 -4
  110. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  111. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +246 -259
  112. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  113. package/dist/Integration/components/widgets/integration-card.component.js +7 -9
  114. package/dist/Integration/components/widgets/integration-card.component.js.map +1 -1
  115. package/dist/Integration/integration.module.d.ts +6 -10
  116. package/dist/Integration/integration.module.d.ts.map +1 -1
  117. package/dist/Integration/integration.module.js +12 -20
  118. package/dist/Integration/integration.module.js.map +1 -1
  119. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +106 -0
  120. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -0
  121. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +607 -0
  122. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -0
  123. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +7 -2
  124. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  125. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +59 -31
  126. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  127. package/dist/KnowledgeHub/index.d.ts +1 -0
  128. package/dist/KnowledgeHub/index.d.ts.map +1 -1
  129. package/dist/KnowledgeHub/index.js +1 -0
  130. package/dist/KnowledgeHub/index.js.map +1 -1
  131. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  132. package/dist/Lists/components/lists-browse-resource.component.js +9 -7
  133. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  134. package/dist/Lists/components/lists-my-lists-resource.component.js +5 -4
  135. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  136. package/dist/Lists/components/lists-operations-resource.component.js +10 -9
  137. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  138. package/dist/MCP/components/mcp-connection-dialog.component.js +141 -132
  139. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  140. package/dist/MCP/components/mcp-log-detail-panel.component.js +4 -4
  141. package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
  142. package/dist/MCP/components/mcp-server-dialog.component.js +141 -128
  143. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  144. package/dist/MCP/components/mcp-test-tool-dialog.component.js +210 -218
  145. package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
  146. package/dist/MCP/mcp-dashboard.component.js +2 -2
  147. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  148. package/dist/MCP/mcp.module.d.ts +6 -9
  149. package/dist/MCP/mcp.module.d.ts.map +1 -1
  150. package/dist/MCP/mcp.module.js +20 -22
  151. package/dist/MCP/mcp.module.js.map +1 -1
  152. package/dist/Scheduling/components/scheduling-activity.component.js +5 -4
  153. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  154. package/dist/Scheduling/components/scheduling-jobs.component.js +6 -5
  155. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  156. package/dist/Scheduling/components/scheduling-overview.component.js +93 -92
  157. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  158. package/dist/Testing/testing-dashboard.component.js +9 -10
  159. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  160. package/dist/actions-dashboards.module.d.ts +8 -13
  161. package/dist/actions-dashboards.module.d.ts.map +1 -1
  162. package/dist/actions-dashboards.module.js +6 -27
  163. package/dist/actions-dashboards.module.js.map +1 -1
  164. package/dist/ai-dashboards.module.d.ts +16 -20
  165. package/dist/ai-dashboards.module.d.ts.map +1 -1
  166. package/dist/ai-dashboards.module.js +23 -44
  167. package/dist/ai-dashboards.module.js.map +1 -1
  168. package/dist/communication-dashboards.module.d.ts +4 -8
  169. package/dist/communication-dashboards.module.d.ts.map +1 -1
  170. package/dist/communication-dashboards.module.js +0 -19
  171. package/dist/communication-dashboards.module.js.map +1 -1
  172. package/dist/component-studio-dashboards.module.d.ts +7 -11
  173. package/dist/component-studio-dashboards.module.d.ts.map +1 -1
  174. package/dist/component-studio-dashboards.module.js +22 -34
  175. package/dist/component-studio-dashboards.module.js.map +1 -1
  176. package/dist/core-dashboards.module.d.ts +12 -18
  177. package/dist/core-dashboards.module.d.ts.map +1 -1
  178. package/dist/core-dashboards.module.js +15 -31
  179. package/dist/core-dashboards.module.js.map +1 -1
  180. package/dist/credentials-dashboards.module.d.ts +5 -8
  181. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  182. package/dist/credentials-dashboards.module.js +3 -19
  183. package/dist/credentials-dashboards.module.js.map +1 -1
  184. package/dist/data-explorer-dashboards.module.d.ts +7 -13
  185. package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
  186. package/dist/data-explorer-dashboards.module.js +0 -27
  187. package/dist/data-explorer-dashboards.module.js.map +1 -1
  188. package/dist/lists-dashboards.module.d.ts +5 -8
  189. package/dist/lists-dashboards.module.d.ts.map +1 -1
  190. package/dist/lists-dashboards.module.js +3 -19
  191. package/dist/lists-dashboards.module.js.map +1 -1
  192. package/dist/public-api.d.ts +1 -0
  193. package/dist/public-api.d.ts.map +1 -1
  194. package/dist/public-api.js +1 -0
  195. package/dist/public-api.js.map +1 -1
  196. package/dist/scheduling-dashboards.module.d.ts +6 -10
  197. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  198. package/dist/scheduling-dashboards.module.js +3 -23
  199. package/dist/scheduling-dashboards.module.js.map +1 -1
  200. package/dist/testing-dashboards.module.d.ts +7 -13
  201. package/dist/testing-dashboards.module.d.ts.map +1 -1
  202. package/dist/testing-dashboards.module.js +0 -27
  203. package/dist/testing-dashboards.module.js.map +1 -1
  204. package/package.json +47 -55
@@ -9,19 +9,17 @@ import { Metadata, RunView, CompositeKey } from '@memberjunction/core';
9
9
  import { UUIDsEqual } from '@memberjunction/global';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "@angular/forms";
12
- import * as i2 from "@progress/kendo-angular-buttons";
13
- import * as i3 from "@progress/kendo-angular-dialog";
14
- import * as i4 from "@progress/kendo-angular-dropdowns";
15
- import * as i5 from "@progress/kendo-angular-inputs";
16
- import * as i6 from "@memberjunction/ng-credentials";
12
+ import * as i2 from "@memberjunction/ng-ui-components";
13
+ import * as i3 from "@memberjunction/ng-credentials";
17
14
  const _c0 = ["credentialDialog"];
18
15
  const _c1 = () => ({ Name: "Select a server...", ID: "" });
19
- const _c2 = () => ["Active", "Inactive"];
20
- const _c3 = () => ({ Name: "Global (all companies)", ID: "" });
21
- const _c4 = () => ({ Name: "No credential (anonymous)", ID: "" });
16
+ const _c2 = () => ({ standalone: true });
17
+ const _c3 = () => ["Active", "Inactive"];
18
+ const _c4 = () => ({ Name: "Global (all companies)", ID: "" });
19
+ const _c5 = () => ({ Name: "No credential (anonymous)", ID: "" });
22
20
  function MCPConnectionDialogComponent_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
23
- i0.ɵɵelementStart(0, "div", 5);
24
- i0.ɵɵelement(1, "i", 45);
21
+ i0.ɵɵelementStart(0, "div", 6);
22
+ i0.ɵɵelement(1, "i", 44);
25
23
  i0.ɵɵtext(2);
26
24
  i0.ɵɵelementEnd();
27
25
  } if (rf & 2) {
@@ -30,7 +28,7 @@ function MCPConnectionDialogComponent_Conditional_0_Conditional_2_Template(rf, c
30
28
  i0.ɵɵtextInterpolate1(" ", ctx_r1.ErrorMessage, " ");
31
29
  } }
32
30
  function MCPConnectionDialogComponent_Conditional_0_ng_template_13_Conditional_3_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelementStart(0, "span", 48);
31
+ i0.ɵɵelementStart(0, "span", 47);
34
32
  i0.ɵɵtext(1);
35
33
  i0.ɵɵelementEnd();
36
34
  } if (rf & 2) {
@@ -39,10 +37,10 @@ function MCPConnectionDialogComponent_Conditional_0_ng_template_13_Conditional_3
39
37
  i0.ɵɵtextInterpolate(dataItem_r3.TransportType);
40
38
  } }
41
39
  function MCPConnectionDialogComponent_Conditional_0_ng_template_13_Template(rf, ctx) { if (rf & 1) {
42
- i0.ɵɵelementStart(0, "div", 46)(1, "span", 47);
40
+ i0.ɵɵelementStart(0, "div", 45)(1, "span", 46);
43
41
  i0.ɵɵtext(2);
44
42
  i0.ɵɵelementEnd();
45
- i0.ɵɵconditionalCreate(3, MCPConnectionDialogComponent_Conditional_0_ng_template_13_Conditional_3_Template, 2, 1, "span", 48);
43
+ i0.ɵɵconditionalCreate(3, MCPConnectionDialogComponent_Conditional_0_ng_template_13_Conditional_3_Template, 2, 1, "span", 47);
46
44
  i0.ɵɵelementEnd();
47
45
  } if (rf & 2) {
48
46
  const dataItem_r3 = ctx.$implicit;
@@ -51,203 +49,214 @@ function MCPConnectionDialogComponent_Conditional_0_ng_template_13_Template(rf,
51
49
  i0.ɵɵadvance();
52
50
  i0.ɵɵconditional(dataItem_r3.TransportType ? 3 : -1);
53
51
  } }
54
- function MCPConnectionDialogComponent_Conditional_0_Conditional_14_Template(rf, ctx) { if (rf & 1) {
52
+ function MCPConnectionDialogComponent_Conditional_0_Conditional_15_Template(rf, ctx) { if (rf & 1) {
55
53
  i0.ɵɵelementStart(0, "span", 13);
56
54
  i0.ɵɵtext(1, "Server selection is required");
57
55
  i0.ɵɵelementEnd();
58
56
  } }
59
- function MCPConnectionDialogComponent_Conditional_0_Conditional_21_Template(rf, ctx) { if (rf & 1) {
57
+ function MCPConnectionDialogComponent_Conditional_0_Conditional_22_Template(rf, ctx) { if (rf & 1) {
60
58
  i0.ɵɵelementStart(0, "span", 13);
61
59
  i0.ɵɵtext(1, "Name is required");
62
60
  i0.ɵɵelementEnd();
63
61
  } }
64
- function MCPConnectionDialogComponent_Conditional_0_Conditional_43_Template(rf, ctx) { if (rf & 1) {
65
- i0.ɵɵelementStart(0, "div", 25);
66
- i0.ɵɵelement(1, "i", 43);
62
+ function MCPConnectionDialogComponent_Conditional_0_Conditional_44_Template(rf, ctx) { if (rf & 1) {
63
+ i0.ɵɵelementStart(0, "div", 24);
64
+ i0.ɵɵelement(1, "i", 42);
67
65
  i0.ɵɵtext(2, " Loading credentials... ");
68
66
  i0.ɵɵelementEnd();
69
67
  } }
70
- function MCPConnectionDialogComponent_Conditional_0_Conditional_44_Template(rf, ctx) { if (rf & 1) {
68
+ function MCPConnectionDialogComponent_Conditional_0_Conditional_45_Template(rf, ctx) { if (rf & 1) {
71
69
  const _r4 = i0.ɵɵgetCurrentView();
72
- i0.ɵɵelementStart(0, "div", 49);
73
- i0.ɵɵelement(1, "kendo-dropdownlist", 50);
74
- i0.ɵɵelementStart(2, "button", 51);
75
- i0.ɵɵlistener("click", function MCPConnectionDialogComponent_Conditional_0_Conditional_44_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openCredentialDialog()); });
76
- i0.ɵɵelement(3, "i", 52);
70
+ i0.ɵɵelementStart(0, "div", 48)(1, "mj-dropdown", 12);
71
+ i0.ɵɵlistener("ValueChange", function MCPConnectionDialogComponent_Conditional_0_Conditional_45_Template_mj_dropdown_ValueChange_1_listener($event) { let tmp_4_0; i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView((tmp_4_0 = ctx_r1.connectionForm.get("CredentialID")) == null ? null : tmp_4_0.setValue($event)); });
72
+ i0.ɵɵelementEnd();
73
+ i0.ɵɵelementStart(2, "button", 49);
74
+ i0.ɵɵlistener("click", function MCPConnectionDialogComponent_Conditional_0_Conditional_45_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openCredentialDialog()); });
75
+ i0.ɵɵelement(3, "i", 50);
77
76
  i0.ɵɵtext(4, " New ");
78
77
  i0.ɵɵelementEnd()();
79
- i0.ɵɵelementStart(5, "span", 22);
78
+ i0.ɵɵelementStart(5, "span", 21);
80
79
  i0.ɵɵtext(6, "Select an existing credential or create a new one");
81
80
  i0.ɵɵelementEnd();
82
81
  } if (rf & 2) {
82
+ let tmp_7_0;
83
83
  const ctx_r1 = i0.ɵɵnextContext(2);
84
84
  i0.ɵɵadvance();
85
- i0.ɵɵproperty("data", ctx_r1.credentials)("valuePrimitive", true)("defaultItem", i0.ɵɵpureFunction0(3, _c4));
85
+ i0.ɵɵproperty("Data", ctx_r1.credentials)("ValuePrimitive", true)("DefaultItem", i0.ɵɵpureFunction0(5, _c5))("ngModelOptions", i0.ɵɵpureFunction0(6, _c2))("ngModel", (tmp_7_0 = ctx_r1.connectionForm.get("CredentialID")) == null ? null : tmp_7_0.value);
86
86
  } }
87
- function MCPConnectionDialogComponent_Conditional_0_Conditional_102_Template(rf, ctx) { if (rf & 1) {
88
- i0.ɵɵelement(0, "i", 43);
87
+ function MCPConnectionDialogComponent_Conditional_0_Conditional_103_Template(rf, ctx) { if (rf & 1) {
88
+ i0.ɵɵelement(0, "i", 42);
89
89
  } }
90
90
  function MCPConnectionDialogComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
91
91
  const _r1 = i0.ɵɵgetCurrentView();
92
- i0.ɵɵelementStart(0, "kendo-dialog", 3);
93
- i0.ɵɵlistener("close", function MCPConnectionDialogComponent_Conditional_0_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancel()); });
94
- i0.ɵɵelementStart(1, "form", 4);
95
- i0.ɵɵconditionalCreate(2, MCPConnectionDialogComponent_Conditional_0_Conditional_2_Template, 3, 1, "div", 5);
96
- i0.ɵɵelementStart(3, "div", 6)(4, "h3");
97
- i0.ɵɵelement(5, "i", 7);
92
+ i0.ɵɵelementStart(0, "mj-dialog", 4);
93
+ i0.ɵɵlistener("Close", function MCPConnectionDialogComponent_Conditional_0_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancel()); });
94
+ i0.ɵɵelementStart(1, "form", 5);
95
+ i0.ɵɵconditionalCreate(2, MCPConnectionDialogComponent_Conditional_0_Conditional_2_Template, 3, 1, "div", 6);
96
+ i0.ɵɵelementStart(3, "div", 7)(4, "h3");
97
+ i0.ɵɵelement(5, "i", 8);
98
98
  i0.ɵɵtext(6, " Basic Information");
99
99
  i0.ɵɵelementEnd();
100
- i0.ɵɵelementStart(7, "div", 8)(8, "label", 9);
100
+ i0.ɵɵelementStart(7, "div", 9)(8, "label", 10);
101
101
  i0.ɵɵtext(9, "MCP Server ");
102
- i0.ɵɵelementStart(10, "span", 10);
102
+ i0.ɵɵelementStart(10, "span", 11);
103
103
  i0.ɵɵtext(11, "*");
104
104
  i0.ɵɵelementEnd()();
105
- i0.ɵɵelementStart(12, "kendo-dropdownlist", 11);
106
- i0.ɵɵlistener("valueChange", function MCPConnectionDialogComponent_Conditional_0_Template_kendo_dropdownlist_valueChange_12_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onServerChange()); });
107
- i0.ɵɵtemplate(13, MCPConnectionDialogComponent_Conditional_0_ng_template_13_Template, 4, 2, "ng-template", 12);
105
+ i0.ɵɵelementStart(12, "mj-dropdown", 12);
106
+ i0.ɵɵlistener("ValueChange", function MCPConnectionDialogComponent_Conditional_0_Template_mj_dropdown_ValueChange_12_listener($event) { let tmp_3_0; i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); (tmp_3_0 = ctx_r1.connectionForm.get("MCPServerID")) == null ? null : tmp_3_0.setValue($event); return i0.ɵɵresetView(ctx_r1.onServerChange()); });
107
+ i0.ɵɵtemplate(13, MCPConnectionDialogComponent_Conditional_0_ng_template_13_Template, 4, 2, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
108
108
  i0.ɵɵelementEnd();
109
- i0.ɵɵconditionalCreate(14, MCPConnectionDialogComponent_Conditional_0_Conditional_14_Template, 2, 0, "span", 13);
109
+ i0.ɵɵconditionalCreate(15, MCPConnectionDialogComponent_Conditional_0_Conditional_15_Template, 2, 0, "span", 13);
110
110
  i0.ɵɵelementEnd();
111
- i0.ɵɵelementStart(15, "div", 8)(16, "label", 14);
112
- i0.ɵɵtext(17, "Connection Name ");
113
- i0.ɵɵelementStart(18, "span", 10);
114
- i0.ɵɵtext(19, "*");
111
+ i0.ɵɵelementStart(16, "div", 9)(17, "label", 14);
112
+ i0.ɵɵtext(18, "Connection Name ");
113
+ i0.ɵɵelementStart(19, "span", 11);
114
+ i0.ɵɵtext(20, "*");
115
115
  i0.ɵɵelementEnd()();
116
- i0.ɵɵelement(20, "input", 15);
117
- i0.ɵɵconditionalCreate(21, MCPConnectionDialogComponent_Conditional_0_Conditional_21_Template, 2, 0, "span", 13);
116
+ i0.ɵɵelement(21, "input", 15);
117
+ i0.ɵɵconditionalCreate(22, MCPConnectionDialogComponent_Conditional_0_Conditional_22_Template, 2, 0, "span", 13);
118
118
  i0.ɵɵelementEnd();
119
- i0.ɵɵelementStart(22, "div", 8)(23, "label", 16);
120
- i0.ɵɵtext(24, "Description");
119
+ i0.ɵɵelementStart(23, "div", 9)(24, "label", 16);
120
+ i0.ɵɵtext(25, "Description");
121
121
  i0.ɵɵelementEnd();
122
- i0.ɵɵelement(25, "textarea", 17);
122
+ i0.ɵɵelement(26, "textarea", 17);
123
123
  i0.ɵɵelementEnd();
124
- i0.ɵɵelementStart(26, "div", 8)(27, "label", 18);
125
- i0.ɵɵtext(28, "Status");
124
+ i0.ɵɵelementStart(27, "div", 9)(28, "label", 18);
125
+ i0.ɵɵtext(29, "Status");
126
126
  i0.ɵɵelementEnd();
127
- i0.ɵɵelement(29, "kendo-dropdownlist", 19);
127
+ i0.ɵɵelementStart(30, "mj-dropdown", 19);
128
+ i0.ɵɵlistener("ValueChange", function MCPConnectionDialogComponent_Conditional_0_Template_mj_dropdown_ValueChange_30_listener($event) { let tmp_3_0; i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView((tmp_3_0 = ctx_r1.connectionForm.get("Status")) == null ? null : tmp_3_0.setValue($event)); });
129
+ i0.ɵɵelementEnd()();
130
+ i0.ɵɵelementStart(31, "div", 9)(32, "label", 20);
131
+ i0.ɵɵtext(33, "Company");
128
132
  i0.ɵɵelementEnd();
129
- i0.ɵɵelementStart(30, "div", 8)(31, "label", 20);
130
- i0.ɵɵtext(32, "Company");
133
+ i0.ɵɵelementStart(34, "mj-dropdown", 12);
134
+ i0.ɵɵlistener("ValueChange", function MCPConnectionDialogComponent_Conditional_0_Template_mj_dropdown_ValueChange_34_listener($event) { let tmp_3_0; i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView((tmp_3_0 = ctx_r1.connectionForm.get("CompanyID")) == null ? null : tmp_3_0.setValue($event)); });
131
135
  i0.ɵɵelementEnd();
132
- i0.ɵɵelement(33, "kendo-dropdownlist", 21);
133
- i0.ɵɵelementStart(34, "span", 22);
134
- i0.ɵɵtext(35, "Leave as Global to make this connection available to all companies");
136
+ i0.ɵɵelementStart(35, "span", 21);
137
+ i0.ɵɵtext(36, "Leave as Global to make this connection available to all companies");
135
138
  i0.ɵɵelementEnd()()();
136
- i0.ɵɵelementStart(36, "div", 6)(37, "h3");
137
- i0.ɵɵelement(38, "i", 23);
138
- i0.ɵɵtext(39, " Authentication");
139
+ i0.ɵɵelementStart(37, "div", 7)(38, "h3");
140
+ i0.ɵɵelement(39, "i", 22);
141
+ i0.ɵɵtext(40, " Authentication");
139
142
  i0.ɵɵelementEnd();
140
- i0.ɵɵelementStart(40, "div", 8)(41, "label", 24);
141
- i0.ɵɵtext(42, "Credential");
143
+ i0.ɵɵelementStart(41, "div", 9)(42, "label", 23);
144
+ i0.ɵɵtext(43, "Credential");
142
145
  i0.ɵɵelementEnd();
143
- i0.ɵɵconditionalCreate(43, MCPConnectionDialogComponent_Conditional_0_Conditional_43_Template, 3, 0, "div", 25)(44, MCPConnectionDialogComponent_Conditional_0_Conditional_44_Template, 7, 4);
146
+ i0.ɵɵconditionalCreate(44, MCPConnectionDialogComponent_Conditional_0_Conditional_44_Template, 3, 0, "div", 24)(45, MCPConnectionDialogComponent_Conditional_0_Conditional_45_Template, 7, 7);
144
147
  i0.ɵɵelementEnd();
145
- i0.ɵɵelementStart(45, "div", 8)(46, "label", 26);
146
- i0.ɵɵtext(47, "Custom Header Name");
148
+ i0.ɵɵelementStart(46, "div", 9)(47, "label", 25);
149
+ i0.ɵɵtext(48, "Custom Header Name");
147
150
  i0.ɵɵelementEnd();
148
- i0.ɵɵelement(48, "input", 27);
149
- i0.ɵɵelementStart(49, "span", 22);
150
- i0.ɵɵtext(50, "Override the default header name for API key authentication");
151
+ i0.ɵɵelement(49, "input", 26);
152
+ i0.ɵɵelementStart(50, "span", 21);
153
+ i0.ɵɵtext(51, "Override the default header name for API key authentication");
151
154
  i0.ɵɵelementEnd()()();
152
- i0.ɵɵelementStart(51, "div", 6)(52, "h3");
153
- i0.ɵɵelement(53, "i", 28);
154
- i0.ɵɵtext(54, " Behavior");
155
+ i0.ɵɵelementStart(52, "div", 7)(53, "h3");
156
+ i0.ɵɵelement(54, "i", 27);
157
+ i0.ɵɵtext(55, " Behavior");
155
158
  i0.ɵɵelementEnd();
156
- i0.ɵɵelementStart(55, "div", 29)(56, "label", 30);
157
- i0.ɵɵelement(57, "input", 31);
158
- i0.ɵɵelementStart(58, "span");
159
- i0.ɵɵtext(59, "Auto-sync tools on connect");
159
+ i0.ɵɵelementStart(56, "div", 28)(57, "label", 29);
160
+ i0.ɵɵelement(58, "input", 30);
161
+ i0.ɵɵelementStart(59, "span");
162
+ i0.ɵɵtext(60, "Auto-sync tools on connect");
160
163
  i0.ɵɵelementEnd()();
161
- i0.ɵɵelementStart(60, "span", 22);
162
- i0.ɵɵtext(61, "Automatically discover and sync available tools when connecting");
164
+ i0.ɵɵelementStart(61, "span", 21);
165
+ i0.ɵɵtext(62, "Automatically discover and sync available tools when connecting");
163
166
  i0.ɵɵelementEnd()()();
164
- i0.ɵɵelementStart(62, "div", 6)(63, "h3");
165
- i0.ɵɵelement(64, "i", 32);
166
- i0.ɵɵtext(65, " Logging");
167
+ i0.ɵɵelementStart(63, "div", 7)(64, "h3");
168
+ i0.ɵɵelement(65, "i", 31);
169
+ i0.ɵɵtext(66, " Logging");
167
170
  i0.ɵɵelementEnd();
168
- i0.ɵɵelementStart(66, "div", 29)(67, "label", 30);
169
- i0.ɵɵelement(68, "input", 33);
170
- i0.ɵɵelementStart(69, "span");
171
- i0.ɵɵtext(70, "Enable tool call logging");
171
+ i0.ɵɵelementStart(67, "div", 28)(68, "label", 29);
172
+ i0.ɵɵelement(69, "input", 32);
173
+ i0.ɵɵelementStart(70, "span");
174
+ i0.ɵɵtext(71, "Enable tool call logging");
172
175
  i0.ɵɵelementEnd()();
173
- i0.ɵɵelementStart(71, "span", 22);
174
- i0.ɵɵtext(72, "Log all tool executions to the database");
176
+ i0.ɵɵelementStart(72, "span", 21);
177
+ i0.ɵɵtext(73, "Log all tool executions to the database");
175
178
  i0.ɵɵelementEnd()();
176
- i0.ɵɵelementStart(73, "div", 34)(74, "div", 29)(75, "label", 30);
177
- i0.ɵɵelement(76, "input", 35);
178
- i0.ɵɵelementStart(77, "span");
179
- i0.ɵɵtext(78, "Log input parameters");
179
+ i0.ɵɵelementStart(74, "div", 33)(75, "div", 28)(76, "label", 29);
180
+ i0.ɵɵelement(77, "input", 34);
181
+ i0.ɵɵelementStart(78, "span");
182
+ i0.ɵɵtext(79, "Log input parameters");
180
183
  i0.ɵɵelementEnd()()();
181
- i0.ɵɵelementStart(79, "div", 29)(80, "label", 30);
182
- i0.ɵɵelement(81, "input", 36);
183
- i0.ɵɵelementStart(82, "span");
184
- i0.ɵɵtext(83, "Log output content");
184
+ i0.ɵɵelementStart(80, "div", 28)(81, "label", 29);
185
+ i0.ɵɵelement(82, "input", 35);
186
+ i0.ɵɵelementStart(83, "span");
187
+ i0.ɵɵtext(84, "Log output content");
185
188
  i0.ɵɵelementEnd()()();
186
- i0.ɵɵelementStart(84, "div", 8)(85, "label", 37);
187
- i0.ɵɵtext(86, "Max Output Log Size (bytes)");
189
+ i0.ɵɵelementStart(85, "div", 9)(86, "label", 36);
190
+ i0.ɵɵtext(87, "Max Output Log Size (bytes)");
191
+ i0.ɵɵelementEnd();
192
+ i0.ɵɵelementStart(88, "mj-numeric-input", 37);
193
+ i0.ɵɵlistener("ngModelChange", function MCPConnectionDialogComponent_Conditional_0_Template_mj_numeric_input_ngModelChange_88_listener($event) { let tmp_3_0; i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView((tmp_3_0 = ctx_r1.connectionForm.get("MaxOutputLogSize")) == null ? null : tmp_3_0.setValue($event)); });
188
194
  i0.ɵɵelementEnd();
189
- i0.ɵɵelement(87, "kendo-numerictextbox", 38);
190
- i0.ɵɵelementStart(88, "span", 22);
191
- i0.ɵɵtext(89, "Maximum size of output content to log (0 = unlimited, max 10MB)");
195
+ i0.ɵɵelementStart(89, "span", 21);
196
+ i0.ɵɵtext(90, "Maximum size of output content to log (0 = unlimited, max 10MB)");
192
197
  i0.ɵɵelementEnd()()()();
193
- i0.ɵɵelementStart(90, "div", 6)(91, "h3");
194
- i0.ɵɵelement(92, "i", 39);
195
- i0.ɵɵtext(93, " Advanced");
198
+ i0.ɵɵelementStart(91, "div", 7)(92, "h3");
199
+ i0.ɵɵelement(93, "i", 38);
200
+ i0.ɵɵtext(94, " Advanced");
196
201
  i0.ɵɵelementEnd();
197
- i0.ɵɵelementStart(94, "div", 8)(95, "label", 40);
198
- i0.ɵɵtext(96, "Environment Variables (JSON)");
202
+ i0.ɵɵelementStart(95, "div", 9)(96, "label", 39);
203
+ i0.ɵɵtext(97, "Environment Variables (JSON)");
199
204
  i0.ɵɵelementEnd();
200
- i0.ɵɵelement(97, "textarea", 41);
201
- i0.ɵɵelementStart(98, "span", 22);
202
- i0.ɵɵtext(99, "Additional environment variables for Stdio transport (JSON object)");
205
+ i0.ɵɵelement(98, "textarea", 40);
206
+ i0.ɵɵelementStart(99, "span", 21);
207
+ i0.ɵɵtext(100, "Additional environment variables for Stdio transport (JSON object)");
203
208
  i0.ɵɵelementEnd()()()();
204
- i0.ɵɵelementStart(100, "kendo-dialog-actions")(101, "button", 42);
205
- i0.ɵɵlistener("click", function MCPConnectionDialogComponent_Conditional_0_Template_button_click_101_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.save()); });
206
- i0.ɵɵconditionalCreate(102, MCPConnectionDialogComponent_Conditional_0_Conditional_102_Template, 1, 0, "i", 43);
207
- i0.ɵɵtext(103);
209
+ i0.ɵɵelementStart(101, "mj-dialog-actions")(102, "button", 41);
210
+ i0.ɵɵlistener("click", function MCPConnectionDialogComponent_Conditional_0_Template_button_click_102_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.save()); });
211
+ i0.ɵɵconditionalCreate(103, MCPConnectionDialogComponent_Conditional_0_Conditional_103_Template, 1, 0, "i", 42);
212
+ i0.ɵɵtext(104);
208
213
  i0.ɵɵelementEnd();
209
- i0.ɵɵelementStart(104, "button", 44);
210
- i0.ɵɵlistener("click", function MCPConnectionDialogComponent_Conditional_0_Template_button_click_104_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancel()); });
211
- i0.ɵɵtext(105, "Cancel");
214
+ i0.ɵɵelementStart(105, "button", 43);
215
+ i0.ɵɵlistener("click", function MCPConnectionDialogComponent_Conditional_0_Template_button_click_105_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancel()); });
216
+ i0.ɵɵtext(106, "Cancel");
212
217
  i0.ɵɵelementEnd()()();
213
218
  } if (rf & 2) {
214
- let tmp_18_0;
219
+ let tmp_11_0;
220
+ let tmp_17_0;
221
+ let tmp_22_0;
222
+ let tmp_24_0;
223
+ let tmp_29_0;
215
224
  const ctx_r1 = i0.ɵɵnextContext();
216
- i0.ɵɵproperty("title", ctx_r1.DialogTitle)("width", 600)("minWidth", 400);
225
+ i0.ɵɵproperty("Visible", true)("Title", ctx_r1.DialogTitle)("Width", 600);
217
226
  i0.ɵɵadvance();
218
227
  i0.ɵɵproperty("formGroup", ctx_r1.connectionForm);
219
228
  i0.ɵɵadvance();
220
229
  i0.ɵɵconditional(ctx_r1.ErrorMessage ? 2 : -1);
221
230
  i0.ɵɵadvance(10);
222
- i0.ɵɵproperty("data", ctx_r1.ActiveServers)("valuePrimitive", true)("defaultItem", i0.ɵɵpureFunction0(27, _c1));
223
- i0.ɵɵadvance(2);
224
- i0.ɵɵconditional(ctx_r1.hasError("MCPServerID", "required") ? 14 : -1);
231
+ i0.ɵɵproperty("Data", ctx_r1.ActiveServers)("ValuePrimitive", true)("DefaultItem", i0.ɵɵpureFunction0(33, _c1))("ngModelOptions", i0.ɵɵpureFunction0(34, _c2))("ngModel", (tmp_11_0 = ctx_r1.connectionForm.get("MCPServerID")) == null ? null : tmp_11_0.value);
232
+ i0.ɵɵadvance(3);
233
+ i0.ɵɵconditional(ctx_r1.hasError("MCPServerID", "required") ? 15 : -1);
225
234
  i0.ɵɵadvance(7);
226
- i0.ɵɵconditional(ctx_r1.hasError("Name", "required") ? 21 : -1);
235
+ i0.ɵɵconditional(ctx_r1.hasError("Name", "required") ? 22 : -1);
227
236
  i0.ɵɵadvance(4);
228
237
  i0.ɵɵproperty("rows", 3);
229
238
  i0.ɵɵadvance(4);
230
- i0.ɵɵproperty("data", i0.ɵɵpureFunction0(28, _c2))("valuePrimitive", true);
239
+ i0.ɵɵproperty("Data", i0.ɵɵpureFunction0(35, _c3))("ngModelOptions", i0.ɵɵpureFunction0(36, _c2))("ngModel", (tmp_17_0 = ctx_r1.connectionForm.get("Status")) == null ? null : tmp_17_0.value);
231
240
  i0.ɵɵadvance(4);
232
- i0.ɵɵproperty("data", ctx_r1.companies)("valuePrimitive", true)("defaultItem", i0.ɵɵpureFunction0(29, _c3));
241
+ i0.ɵɵproperty("Data", ctx_r1.companies)("ValuePrimitive", true)("DefaultItem", i0.ɵɵpureFunction0(37, _c4))("ngModelOptions", i0.ɵɵpureFunction0(38, _c2))("ngModel", (tmp_22_0 = ctx_r1.connectionForm.get("CompanyID")) == null ? null : tmp_22_0.value);
233
242
  i0.ɵɵadvance(10);
234
- i0.ɵɵconditional(ctx_r1.IsLoadingDropdowns ? 43 : 44);
243
+ i0.ɵɵconditional(ctx_r1.IsLoadingDropdowns ? 44 : 45);
235
244
  i0.ɵɵadvance(30);
236
- i0.ɵɵclassProp("disabled", !((tmp_18_0 = ctx_r1.connectionForm.get("LogToolCalls")) == null ? null : tmp_18_0.value));
245
+ i0.ɵɵclassProp("disabled", !((tmp_24_0 = ctx_r1.connectionForm.get("LogToolCalls")) == null ? null : tmp_24_0.value));
237
246
  i0.ɵɵadvance(14);
238
- i0.ɵɵproperty("min", 0)("max", 10485760)("step", 10240)("format", "n0");
247
+ i0.ɵɵproperty("Min", 0)("Max", 10485760)("Step", 10240)("ngModelOptions", i0.ɵɵpureFunction0(39, _c2))("ngModel", (tmp_29_0 = ctx_r1.connectionForm.get("MaxOutputLogSize")) == null ? null : tmp_29_0.value);
239
248
  i0.ɵɵadvance(10);
240
249
  i0.ɵɵproperty("rows", 3);
241
250
  i0.ɵɵadvance(4);
242
251
  i0.ɵɵproperty("disabled", ctx_r1.IsSaving);
243
252
  i0.ɵɵadvance();
244
- i0.ɵɵconditional(ctx_r1.IsSaving ? 102 : -1);
253
+ i0.ɵɵconditional(ctx_r1.IsSaving ? 103 : -1);
245
254
  i0.ɵɵadvance();
246
255
  i0.ɵɵtextInterpolate1(" ", ctx_r1.IsEditMode ? "Update" : "Create", " ");
247
256
  } }
248
257
  function MCPConnectionDialogComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
249
258
  const _r5 = i0.ɵɵgetCurrentView();
250
- i0.ɵɵelementStart(0, "mj-credential-dialog", 53, 0);
259
+ i0.ɵɵelementStart(0, "mj-credential-dialog", 51, 1);
251
260
  i0.ɵɵlistener("close", function MCPConnectionDialogComponent_Conditional_1_Template_mj_credential_dialog_close_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCredentialDialogClose($event)); });
252
261
  i0.ɵɵelementEnd();
253
262
  } if (rf & 2) {
@@ -496,18 +505,18 @@ export class MCPConnectionDialogComponent {
496
505
  } if (rf & 2) {
497
506
  let _t;
498
507
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.credentialDialog = _t.first);
499
- } }, inputs: { connection: "connection", servers: "servers", visible: "visible" }, outputs: { close: "close" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 2, vars: 2, consts: [["credentialDialog", ""], [3, "title", "width", "minWidth"], [3, "Visible"], [3, "close", "title", "width", "minWidth"], [1, "connection-form", 3, "formGroup"], [1, "error-banner"], [1, "form-section"], [1, "fa-solid", "fa-info-circle"], [1, "form-group"], ["for", "server"], [1, "required"], ["id", "server", "formControlName", "MCPServerID", "textField", "Name", "valueField", "ID", 3, "valueChange", "data", "valuePrimitive", "defaultItem"], ["kendoDropDownListItemTemplate", ""], [1, "error-text"], ["for", "name"], ["kendoTextBox", "", "id", "name", "formControlName", "Name", "placeholder", "e.g., Production GitHub Connection"], ["for", "description"], ["kendoTextArea", "", "id", "description", "formControlName", "Description", "placeholder", "Optional description of this connection", 3, "rows"], ["for", "status"], ["id", "status", "formControlName", "Status", 3, "data", "valuePrimitive"], ["for", "company"], ["id", "company", "formControlName", "CompanyID", "textField", "Name", "valueField", "ID", 3, "data", "valuePrimitive", "defaultItem"], [1, "hint"], [1, "fa-solid", "fa-key"], ["for", "credential"], [1, "loading-credentials"], ["for", "customHeader"], ["kendoTextBox", "", "id", "customHeader", "formControlName", "CustomHeaderName", "placeholder", "e.g., X-Custom-API-Key"], [1, "fa-solid", "fa-sliders"], [1, "checkbox-group"], [1, "checkbox-label"], ["type", "checkbox", "kendoCheckBox", "", "formControlName", "AutoSyncTools"], [1, "fa-solid", "fa-file-lines"], ["type", "checkbox", "kendoCheckBox", "", "formControlName", "LogToolCalls"], [1, "logging-options"], ["type", "checkbox", "kendoCheckBox", "", "formControlName", "LogInputParameters"], ["type", "checkbox", "kendoCheckBox", "", "formControlName", "LogOutputContent"], ["for", "maxOutputSize"], ["id", "maxOutputSize", "formControlName", "MaxOutputLogSize", 3, "min", "max", "step", "format"], [1, "fa-solid", "fa-gear"], ["for", "envVars"], ["kendoTextArea", "", "id", "envVars", "formControlName", "EnvironmentVars", "placeholder", "{\"VAR_NAME\": \"value\"}", 3, "rows"], ["kendoButton", "", "themeColor", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["kendoButton", "", 3, "click"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "server-option"], [1, "server-name"], [1, "server-transport"], [1, "credential-row"], ["id", "credential", "formControlName", "CredentialID", "textField", "Name", "valueField", "ID", 3, "data", "valuePrimitive", "defaultItem"], ["kendoButton", "", "type", "button", "fillMode", "outline", "title", "Create New Credential", 3, "click"], [1, "fa-solid", "fa-plus"], [3, "close", "Visible"]], template: function MCPConnectionDialogComponent_Template(rf, ctx) { if (rf & 1) {
500
- i0.ɵɵconditionalCreate(0, MCPConnectionDialogComponent_Conditional_0_Template, 106, 30, "kendo-dialog", 1);
501
- i0.ɵɵconditionalCreate(1, MCPConnectionDialogComponent_Conditional_1_Template, 2, 1, "mj-credential-dialog", 2);
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) {
509
+ i0.ɵɵconditionalCreate(0, MCPConnectionDialogComponent_Conditional_0_Template, 107, 40, "mj-dialog", 2);
510
+ i0.ɵɵconditionalCreate(1, MCPConnectionDialogComponent_Conditional_1_Template, 2, 1, "mj-credential-dialog", 3);
502
511
  } if (rf & 2) {
503
512
  i0.ɵɵconditional(ctx.visible ? 0 : -1);
504
513
  i0.ɵɵadvance();
505
514
  i0.ɵɵconditional(ctx.ShowCredentialDialog ? 1 : -1);
506
- } }, dependencies: [i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.CheckboxControlValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.FormGroupDirective, i1.FormControlName, i2.ButtonComponent, i3.DialogComponent, i3.DialogActionsComponent, i4.ItemTemplateDirective, i4.DropDownListComponent, i5.TextBoxDirective, i5.NumericTextBoxComponent, i5.TextAreaDirective, i5.CheckBoxDirective, i6.CredentialDialogComponent], styles: [".connection-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.error-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px;\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.form-section[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px;\n}\n\n.form-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.form-group[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.form-group[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 6px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] .required[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.form-group[_ngcontent-%COMP%] input[_ngcontent-%COMP%], \n.form-group[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.form-group[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%] {\n display: block;\n margin-top: 4px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.form-group[_ngcontent-%COMP%] .error-text[_ngcontent-%COMP%] {\n display: block;\n margin-top: 4px;\n font-size: 12px;\n color: var(--mj-status-error);\n}\n\n.server-option[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n}\n\n.server-name[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.server-transport[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n padding: 2px 8px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n}\n\n.loading-credentials[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n.credential-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.credential-row[_ngcontent-%COMP%] kendo-dropdownlist[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.credential-row[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n.checkbox-group[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.checkbox-group[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.checkbox-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 14px;\n}\n\n.checkbox-group[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%] {\n display: block;\n margin-top: 4px;\n margin-left: 24px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.logging-options[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n transition: opacity 0.2s ease;\n}\n\n.logging-options.disabled[_ngcontent-%COMP%] {\n opacity: 0.5;\n pointer-events: none;\n}\n\n\n\n[_nghost-%COMP%] .k-dialog-actions {\n padding: 16px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n[_nghost-%COMP%] .k-dialog-content {\n padding: 20px;\n max-height: 70vh;\n overflow-y: auto;\n}\n\n[_nghost-%COMP%] .k-textbox, \n[_nghost-%COMP%] .k-textarea, \n[_nghost-%COMP%] .k-numerictextbox, \n[_nghost-%COMP%] .k-dropdownlist {\n width: 100%;\n}"] });
515
+ } }, dependencies: [i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.CheckboxControlValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.FormGroupDirective, i1.FormControlName, i2.MJButtonDirective, i2.MJDialogComponent, i2.MJDialogActionsComponent, i2.MJDropdownComponent, i2.MJNumericInputComponent, i3.CredentialDialogComponent], styles: [".connection-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.error-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px;\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.form-section[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px;\n}\n\n.form-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.form-group[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.form-group[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 6px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] .required[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.form-group[_ngcontent-%COMP%] input[_ngcontent-%COMP%], \n.form-group[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.form-group[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%] {\n display: block;\n margin-top: 4px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.form-group[_ngcontent-%COMP%] .error-text[_ngcontent-%COMP%] {\n display: block;\n margin-top: 4px;\n font-size: 12px;\n color: var(--mj-status-error);\n}\n\n.server-option[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n}\n\n.server-name[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.server-transport[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n padding: 2px 8px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n}\n\n.loading-credentials[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n.credential-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.credential-row[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n.checkbox-group[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n.checkbox-group[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.checkbox-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 14px;\n}\n\n.checkbox-group[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%] {\n display: block;\n margin-top: 4px;\n margin-left: 24px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.logging-options[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n transition: opacity 0.2s ease;\n}\n\n.logging-options.disabled[_ngcontent-%COMP%] {\n opacity: 0.5;\n pointer-events: none;\n}"] });
507
516
  }
508
517
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MCPConnectionDialogComponent, [{
509
518
  type: Component,
510
- args: [{ standalone: false, selector: 'mj-mcp-connection-dialog', template: "@if (visible) {\n <kendo-dialog\n [title]=\"DialogTitle\"\n (close)=\"cancel()\"\n [width]=\"600\"\n [minWidth]=\"400\">\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 <kendo-dropdownlist\n id=\"server\"\n formControlName=\"MCPServerID\"\n [data]=\"ActiveServers\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"{ Name: 'Select a server...', ID: '' }\"\n (valueChange)=\"onServerChange()\">\n <ng-template kendoDropDownListItemTemplate 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 </kendo-dropdownlist>\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 kendoTextBox\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 kendoTextArea\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 <kendo-dropdownlist\n id=\"status\"\n formControlName=\"Status\"\n [data]=\"['Active', 'Inactive']\"\n [valuePrimitive]=\"true\">\n </kendo-dropdownlist>\n </div>\n <div class=\"form-group\">\n <label for=\"company\">Company</label>\n <kendo-dropdownlist\n id=\"company\"\n formControlName=\"CompanyID\"\n [data]=\"companies\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"{ Name: 'Global (all companies)', ID: '' }\">\n </kendo-dropdownlist>\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 <kendo-dropdownlist\n id=\"credential\"\n formControlName=\"CredentialID\"\n [data]=\"credentials\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"{ Name: 'No credential (anonymous)', ID: '' }\">\n </kendo-dropdownlist>\n <button kendoButton\n type=\"button\"\n fillMode=\"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 kendoTextBox\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\" kendoCheckBox 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\" kendoCheckBox 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\" kendoCheckBox 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\" kendoCheckBox 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 <kendo-numerictextbox\n id=\"maxOutputSize\"\n formControlName=\"MaxOutputLogSize\"\n [min]=\"0\"\n [max]=\"10485760\"\n [step]=\"10240\"\n [format]=\"'n0'\">\n </kendo-numerictextbox>\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 kendoTextArea\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 <kendo-dialog-actions>\n <button kendoButton (click)=\"save()\" themeColor=\"primary\" [disabled]=\"IsSaving\">\n @if (IsSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n {{ IsEditMode ? 'Update' : 'Create' }}\n </button>\n <button kendoButton (click)=\"cancel()\">Cancel</button>\n </kendo-dialog-actions>\n </kendo-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", styles: [".connection-form {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.error-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px;\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.form-section {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px;\n}\n\n.form-section h3 {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-section h3 i {\n color: var(--mj-brand-primary);\n}\n\n.form-group {\n margin-bottom: 16px;\n}\n\n.form-group:last-child {\n margin-bottom: 0;\n}\n\n.form-group label {\n display: block;\n margin-bottom: 6px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.form-group label .required {\n color: var(--mj-status-error);\n}\n\n.form-group input,\n.form-group textarea {\n width: 100%;\n}\n\n.form-group .hint {\n display: block;\n margin-top: 4px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.form-group .error-text {\n display: block;\n margin-top: 4px;\n font-size: 12px;\n color: var(--mj-status-error);\n}\n\n.server-option {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n}\n\n.server-name {\n font-weight: 500;\n}\n\n.server-transport {\n font-size: 12px;\n color: var(--mj-text-muted);\n padding: 2px 8px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n}\n\n.loading-credentials {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n.credential-row {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.credential-row kendo-dropdownlist {\n flex: 1;\n}\n\n.credential-row button {\n white-space: nowrap;\n}\n\n.checkbox-group {\n margin-bottom: 12px;\n}\n\n.checkbox-group:last-child {\n margin-bottom: 0;\n}\n\n.checkbox-label {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 14px;\n}\n\n.checkbox-group .hint {\n display: block;\n margin-top: 4px;\n margin-left: 24px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.logging-options {\n margin-top: 16px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n transition: opacity 0.2s ease;\n}\n\n.logging-options.disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n\n/* Kendo overrides */\n:host ::ng-deep .k-dialog-actions {\n padding: 16px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n:host ::ng-deep .k-dialog-content {\n padding: 20px;\n max-height: 70vh;\n overflow-y: auto;\n}\n\n:host ::ng-deep .k-textbox,\n:host ::ng-deep .k-textarea,\n:host ::ng-deep .k-numerictextbox,\n:host ::ng-deep .k-dropdownlist {\n width: 100%;\n}\n"] }]
519
+ args: [{ standalone: false, selector: 'mj-mcp-connection-dialog', template: "@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", styles: [".connection-form {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.error-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px;\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border: 1px solid var(--mj-status-error);\n border-radius: 6px;\n color: var(--mj-status-error);\n font-size: 14px;\n}\n\n.form-section {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 16px;\n}\n\n.form-section h3 {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-section h3 i {\n color: var(--mj-brand-primary);\n}\n\n.form-group {\n margin-bottom: 16px;\n}\n\n.form-group:last-child {\n margin-bottom: 0;\n}\n\n.form-group label {\n display: block;\n margin-bottom: 6px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.form-group label .required {\n color: var(--mj-status-error);\n}\n\n.form-group input,\n.form-group textarea {\n width: 100%;\n}\n\n.form-group .hint {\n display: block;\n margin-top: 4px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.form-group .error-text {\n display: block;\n margin-top: 4px;\n font-size: 12px;\n color: var(--mj-status-error);\n}\n\n.server-option {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n}\n\n.server-name {\n font-weight: 500;\n}\n\n.server-transport {\n font-size: 12px;\n color: var(--mj-text-muted);\n padding: 2px 8px;\n background: var(--mj-bg-surface-card);\n border-radius: 4px;\n}\n\n.loading-credentials {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n.credential-row {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.credential-row button {\n white-space: nowrap;\n}\n\n.checkbox-group {\n margin-bottom: 12px;\n}\n\n.checkbox-group:last-child {\n margin-bottom: 0;\n}\n\n.checkbox-label {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 14px;\n}\n\n.checkbox-group .hint {\n display: block;\n margin-top: 4px;\n margin-left: 24px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.logging-options {\n margin-top: 16px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n transition: opacity 0.2s ease;\n}\n\n.logging-options.disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n\n"] }]
511
520
  }], () => [{ type: i1.FormBuilder }, { type: i0.ChangeDetectorRef }], { credentialDialog: [{
512
521
  type: ViewChild,
513
522
  args: ['credentialDialog']