@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
@@ -8,14 +8,12 @@ import { Validators } from '@angular/forms';
8
8
  import { Metadata, CompositeKey } from '@memberjunction/core';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "@angular/forms";
11
- import * as i2 from "@progress/kendo-angular-buttons";
12
- import * as i3 from "@progress/kendo-angular-dialog";
13
- import * as i4 from "@progress/kendo-angular-dropdowns";
14
- import * as i5 from "@progress/kendo-angular-inputs";
11
+ import * as i2 from "@memberjunction/ng-ui-components";
15
12
  const _c0 = () => ["Active", "Inactive"];
13
+ const _c1 = () => ({ standalone: true });
16
14
  function MCPServerDialogComponent_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
17
- i0.ɵɵelementStart(0, "div", 3);
18
- i0.ɵɵelement(1, "i", 36);
15
+ i0.ɵɵelementStart(0, "div", 4);
16
+ i0.ɵɵelement(1, "i", 34);
19
17
  i0.ɵɵtext(2);
20
18
  i0.ɵɵelementEnd();
21
19
  } if (rf & 2) {
@@ -24,15 +22,15 @@ function MCPServerDialogComponent_Conditional_0_Conditional_2_Template(rf, ctx)
24
22
  i0.ɵɵtextInterpolate1(" ", ctx_r1.ErrorMessage, " ");
25
23
  } }
26
24
  function MCPServerDialogComponent_Conditional_0_Conditional_13_Template(rf, ctx) { if (rf & 1) {
27
- i0.ɵɵelementStart(0, "span", 10);
25
+ i0.ɵɵelementStart(0, "span", 11);
28
26
  i0.ɵɵtext(1, "Name is required");
29
27
  i0.ɵɵelementEnd();
30
28
  } }
31
29
  function MCPServerDialogComponent_Conditional_0_ng_template_32_Template(rf, ctx) { if (rf & 1) {
32
- i0.ɵɵelementStart(0, "div", 37)(1, "span", 38);
30
+ i0.ɵɵelementStart(0, "div", 35)(1, "span", 36);
33
31
  i0.ɵɵtext(2);
34
32
  i0.ɵɵelementEnd();
35
- i0.ɵɵelementStart(3, "span", 39);
33
+ i0.ɵɵelementStart(3, "span", 37);
36
34
  i0.ɵɵtext(4);
37
35
  i0.ɵɵelementEnd()();
38
36
  } if (rf & 2) {
@@ -42,44 +40,44 @@ function MCPServerDialogComponent_Conditional_0_ng_template_32_Template(rf, ctx)
42
40
  i0.ɵɵadvance(2);
43
41
  i0.ɵɵtextInterpolate(dataItem_r3.description);
44
42
  } }
45
- function MCPServerDialogComponent_Conditional_0_Conditional_33_Conditional_6_Template(rf, ctx) { if (rf & 1) {
46
- i0.ɵɵelementStart(0, "span", 10);
43
+ function MCPServerDialogComponent_Conditional_0_Conditional_34_Conditional_6_Template(rf, ctx) { if (rf & 1) {
44
+ i0.ɵɵelementStart(0, "span", 11);
47
45
  i0.ɵɵtext(1, "Server URL is required for this transport type");
48
46
  i0.ɵɵelementEnd();
49
47
  } }
50
- function MCPServerDialogComponent_Conditional_0_Conditional_33_Template(rf, ctx) { if (rf & 1) {
51
- i0.ɵɵelementStart(0, "div", 6)(1, "label", 40);
48
+ function MCPServerDialogComponent_Conditional_0_Conditional_34_Template(rf, ctx) { if (rf & 1) {
49
+ i0.ɵɵelementStart(0, "div", 7)(1, "label", 38);
52
50
  i0.ɵɵtext(2, "Server URL ");
53
- i0.ɵɵelementStart(3, "span", 8);
51
+ i0.ɵɵelementStart(3, "span", 9);
54
52
  i0.ɵɵtext(4, "*");
55
53
  i0.ɵɵelementEnd()();
56
- i0.ɵɵelement(5, "input", 41);
57
- i0.ɵɵconditionalCreate(6, MCPServerDialogComponent_Conditional_0_Conditional_33_Conditional_6_Template, 2, 0, "span", 10);
54
+ i0.ɵɵelement(5, "input", 39);
55
+ i0.ɵɵconditionalCreate(6, MCPServerDialogComponent_Conditional_0_Conditional_34_Conditional_6_Template, 2, 0, "span", 11);
58
56
  i0.ɵɵelementEnd();
59
57
  } if (rf & 2) {
60
58
  const ctx_r1 = i0.ɵɵnextContext(2);
61
59
  i0.ɵɵadvance(6);
62
60
  i0.ɵɵconditional(ctx_r1.hasError("ServerURL", "required") ? 6 : -1);
63
61
  } }
64
- function MCPServerDialogComponent_Conditional_0_Conditional_34_Conditional_6_Template(rf, ctx) { if (rf & 1) {
65
- i0.ɵɵelementStart(0, "span", 10);
62
+ function MCPServerDialogComponent_Conditional_0_Conditional_35_Conditional_6_Template(rf, ctx) { if (rf & 1) {
63
+ i0.ɵɵelementStart(0, "span", 11);
66
64
  i0.ɵɵtext(1, "Command is required for Stdio transport");
67
65
  i0.ɵɵelementEnd();
68
66
  } }
69
- function MCPServerDialogComponent_Conditional_0_Conditional_34_Template(rf, ctx) { if (rf & 1) {
70
- i0.ɵɵelementStart(0, "div", 6)(1, "label", 42);
67
+ function MCPServerDialogComponent_Conditional_0_Conditional_35_Template(rf, ctx) { if (rf & 1) {
68
+ i0.ɵɵelementStart(0, "div", 7)(1, "label", 40);
71
69
  i0.ɵɵtext(2, "Command ");
72
- i0.ɵɵelementStart(3, "span", 8);
70
+ i0.ɵɵelementStart(3, "span", 9);
73
71
  i0.ɵɵtext(4, "*");
74
72
  i0.ɵɵelementEnd()();
75
- i0.ɵɵelement(5, "input", 43);
76
- i0.ɵɵconditionalCreate(6, MCPServerDialogComponent_Conditional_0_Conditional_34_Conditional_6_Template, 2, 0, "span", 10);
73
+ i0.ɵɵelement(5, "input", 41);
74
+ i0.ɵɵconditionalCreate(6, MCPServerDialogComponent_Conditional_0_Conditional_35_Conditional_6_Template, 2, 0, "span", 11);
77
75
  i0.ɵɵelementEnd();
78
- i0.ɵɵelementStart(7, "div", 6)(8, "label", 44);
76
+ i0.ɵɵelementStart(7, "div", 7)(8, "label", 42);
79
77
  i0.ɵɵtext(9, "Command Arguments (JSON array)");
80
78
  i0.ɵɵelementEnd();
81
- i0.ɵɵelement(10, "input", 45);
82
- i0.ɵɵelementStart(11, "span", 32);
79
+ i0.ɵɵelement(10, "input", 43);
80
+ i0.ɵɵelementStart(11, "span", 30);
83
81
  i0.ɵɵtext(12, "JSON array of command line arguments");
84
82
  i0.ɵɵelementEnd()();
85
83
  } if (rf & 2) {
@@ -87,11 +85,11 @@ function MCPServerDialogComponent_Conditional_0_Conditional_34_Template(rf, ctx)
87
85
  i0.ɵɵadvance(6);
88
86
  i0.ɵɵconditional(ctx_r1.hasError("Command", "required") ? 6 : -1);
89
87
  } }
90
- function MCPServerDialogComponent_Conditional_0_ng_template_43_Template(rf, ctx) { if (rf & 1) {
91
- i0.ɵɵelementStart(0, "div", 46)(1, "span", 47);
88
+ function MCPServerDialogComponent_Conditional_0_ng_template_44_Template(rf, ctx) { if (rf & 1) {
89
+ i0.ɵɵelementStart(0, "div", 44)(1, "span", 45);
92
90
  i0.ɵɵtext(2);
93
91
  i0.ɵɵelementEnd();
94
- i0.ɵɵelementStart(3, "span", 48);
92
+ i0.ɵɵelementStart(3, "span", 46);
95
93
  i0.ɵɵtext(4);
96
94
  i0.ɵɵelementEnd()();
97
95
  } if (rf & 2) {
@@ -101,157 +99,172 @@ function MCPServerDialogComponent_Conditional_0_ng_template_43_Template(rf, ctx)
101
99
  i0.ɵɵadvance(2);
102
100
  i0.ɵɵtextInterpolate(dataItem_r4.description);
103
101
  } }
104
- function MCPServerDialogComponent_Conditional_0_Conditional_44_Conditional_10_Template(rf, ctx) { if (rf & 1) {
105
- i0.ɵɵelementStart(0, "span", 10);
102
+ function MCPServerDialogComponent_Conditional_0_Conditional_46_Conditional_10_Template(rf, ctx) { if (rf & 1) {
103
+ i0.ɵɵelementStart(0, "span", 11);
106
104
  i0.ɵɵtext(1, "OAuth Issuer URL is required for OAuth 2.0 authentication");
107
105
  i0.ɵɵelementEnd();
108
106
  } }
109
- function MCPServerDialogComponent_Conditional_0_Conditional_44_Template(rf, ctx) { if (rf & 1) {
110
- i0.ɵɵelementStart(0, "div", 22)(1, "h3");
111
- i0.ɵɵelement(2, "i", 49);
107
+ function MCPServerDialogComponent_Conditional_0_Conditional_46_Template(rf, ctx) { if (rf & 1) {
108
+ const _r5 = i0.ɵɵgetCurrentView();
109
+ i0.ɵɵelementStart(0, "div", 21)(1, "h3");
110
+ i0.ɵɵelement(2, "i", 47);
112
111
  i0.ɵɵtext(3, " OAuth 2.0 Configuration");
113
112
  i0.ɵɵelementEnd();
114
- i0.ɵɵelementStart(4, "div", 6)(5, "label", 50);
113
+ i0.ɵɵelementStart(4, "div", 7)(5, "label", 48);
115
114
  i0.ɵɵtext(6, "OAuth Issuer URL ");
116
- i0.ɵɵelementStart(7, "span", 8);
115
+ i0.ɵɵelementStart(7, "span", 9);
117
116
  i0.ɵɵtext(8, "*");
118
117
  i0.ɵɵelementEnd()();
119
- i0.ɵɵelement(9, "input", 51);
120
- i0.ɵɵconditionalCreate(10, MCPServerDialogComponent_Conditional_0_Conditional_44_Conditional_10_Template, 2, 0, "span", 10);
121
- i0.ɵɵelementStart(11, "span", 32);
118
+ i0.ɵɵelement(9, "input", 49);
119
+ i0.ɵɵconditionalCreate(10, MCPServerDialogComponent_Conditional_0_Conditional_46_Conditional_10_Template, 2, 0, "span", 11);
120
+ i0.ɵɵelementStart(11, "span", 30);
122
121
  i0.ɵɵtext(12, "The authorization server's issuer URL (e.g., https://login.microsoftonline.com/tenant-id or https://your-domain.auth0.com)");
123
122
  i0.ɵɵelementEnd()();
124
- i0.ɵɵelementStart(13, "div", 6)(14, "label", 52);
123
+ i0.ɵɵelementStart(13, "div", 7)(14, "label", 50);
125
124
  i0.ɵɵtext(15, "OAuth Scopes");
126
125
  i0.ɵɵelementEnd();
127
- i0.ɵɵelement(16, "input", 53);
128
- i0.ɵɵelementStart(17, "span", 32);
126
+ i0.ɵɵelement(16, "input", 51);
127
+ i0.ɵɵelementStart(17, "span", 30);
129
128
  i0.ɵɵtext(18, "Space-separated list of OAuth scopes to request");
130
129
  i0.ɵɵelementEnd()();
131
- i0.ɵɵelementStart(19, "div", 6)(20, "label", 54);
130
+ i0.ɵɵelementStart(19, "div", 7)(20, "label", 52);
132
131
  i0.ɵɵtext(21, "Metadata Cache TTL (minutes)");
133
132
  i0.ɵɵelementEnd();
134
- i0.ɵɵelement(22, "kendo-numerictextbox", 55);
135
- i0.ɵɵelementStart(23, "span", 32);
133
+ i0.ɵɵelementStart(22, "mj-numeric-input", 53);
134
+ i0.ɵɵlistener("ngModelChange", function MCPServerDialogComponent_Conditional_0_Conditional_46_Template_mj_numeric_input_ngModelChange_22_listener($event) { let tmp_5_0; i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView((tmp_5_0 = ctx_r1.serverForm.get("OAuthMetadataCacheTTLMinutes")) == null ? null : tmp_5_0.setValue($event)); });
135
+ i0.ɵɵelementEnd();
136
+ i0.ɵɵelementStart(23, "span", 30);
136
137
  i0.ɵɵtext(24, "How long to cache OAuth metadata (default: 1440 minutes = 24 hours)");
137
138
  i0.ɵɵelementEnd()();
138
- i0.ɵɵelementStart(25, "div", 56)(26, "h4");
139
+ i0.ɵɵelementStart(25, "div", 54)(26, "h4");
139
140
  i0.ɵɵtext(27, "Pre-configured Client (Optional)");
140
141
  i0.ɵɵelementEnd();
141
- i0.ɵɵelementStart(28, "p", 57);
142
+ i0.ɵɵelementStart(28, "p", 55);
142
143
  i0.ɵɵtext(29, "Leave blank to use Dynamic Client Registration (DCR). If the auth server doesn't support DCR, configure your client credentials here.");
143
144
  i0.ɵɵelementEnd();
144
- i0.ɵɵelementStart(30, "div", 6)(31, "label", 58);
145
+ i0.ɵɵelementStart(30, "div", 7)(31, "label", 56);
145
146
  i0.ɵɵtext(32, "Client ID");
146
147
  i0.ɵɵelementEnd();
147
- i0.ɵɵelement(33, "input", 59);
148
+ i0.ɵɵelement(33, "input", 57);
148
149
  i0.ɵɵelementEnd();
149
- i0.ɵɵelementStart(34, "div", 6)(35, "label", 60);
150
+ i0.ɵɵelementStart(34, "div", 7)(35, "label", 58);
150
151
  i0.ɵɵtext(36, "Client Secret");
151
152
  i0.ɵɵelementEnd();
152
- i0.ɵɵelement(37, "input", 61);
153
- i0.ɵɵelementStart(38, "span", 32);
153
+ i0.ɵɵelement(37, "input", 59);
154
+ i0.ɵɵelementStart(38, "span", 30);
154
155
  i0.ɵɵtext(39, "The secret will be encrypted before storage");
155
156
  i0.ɵɵelementEnd()()()();
156
157
  } if (rf & 2) {
158
+ let tmp_7_0;
157
159
  const ctx_r1 = i0.ɵɵnextContext(2);
158
160
  i0.ɵɵadvance(10);
159
161
  i0.ɵɵconditional(ctx_r1.hasError("OAuthIssuerURL", "required") ? 10 : -1);
160
162
  i0.ɵɵadvance(12);
161
- i0.ɵɵproperty("min", 5)("format", "n0");
163
+ i0.ɵɵproperty("Min", 5)("ngModelOptions", i0.ɵɵpureFunction0(4, _c1))("ngModel", (tmp_7_0 = ctx_r1.serverForm.get("OAuthMetadataCacheTTLMinutes")) == null ? null : tmp_7_0.value);
162
164
  } }
163
- function MCPServerDialogComponent_Conditional_0_Conditional_66_Template(rf, ctx) { if (rf & 1) {
164
- i0.ɵɵelement(0, "i", 34);
165
+ function MCPServerDialogComponent_Conditional_0_Conditional_68_Template(rf, ctx) { if (rf & 1) {
166
+ i0.ɵɵelement(0, "i", 32);
165
167
  } }
166
168
  function MCPServerDialogComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
167
169
  const _r1 = i0.ɵɵgetCurrentView();
168
- i0.ɵɵelementStart(0, "kendo-dialog", 1);
169
- i0.ɵɵlistener("close", function MCPServerDialogComponent_Conditional_0_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancel()); });
170
- i0.ɵɵelementStart(1, "form", 2);
171
- i0.ɵɵconditionalCreate(2, MCPServerDialogComponent_Conditional_0_Conditional_2_Template, 3, 1, "div", 3);
172
- i0.ɵɵelementStart(3, "div", 4)(4, "h3");
173
- i0.ɵɵelement(5, "i", 5);
170
+ i0.ɵɵelementStart(0, "mj-dialog", 2);
171
+ i0.ɵɵlistener("Close", function MCPServerDialogComponent_Conditional_0_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancel()); });
172
+ i0.ɵɵelementStart(1, "form", 3);
173
+ i0.ɵɵconditionalCreate(2, MCPServerDialogComponent_Conditional_0_Conditional_2_Template, 3, 1, "div", 4);
174
+ i0.ɵɵelementStart(3, "div", 5)(4, "h3");
175
+ i0.ɵɵelement(5, "i", 6);
174
176
  i0.ɵɵtext(6, " Basic Information");
175
177
  i0.ɵɵelementEnd();
176
- i0.ɵɵelementStart(7, "div", 6)(8, "label", 7);
178
+ i0.ɵɵelementStart(7, "div", 7)(8, "label", 8);
177
179
  i0.ɵɵtext(9, "Name ");
178
- i0.ɵɵelementStart(10, "span", 8);
180
+ i0.ɵɵelementStart(10, "span", 9);
179
181
  i0.ɵɵtext(11, "*");
180
182
  i0.ɵɵelementEnd()();
181
- i0.ɵɵelement(12, "input", 9);
182
- i0.ɵɵconditionalCreate(13, MCPServerDialogComponent_Conditional_0_Conditional_13_Template, 2, 0, "span", 10);
183
+ i0.ɵɵelement(12, "input", 10);
184
+ i0.ɵɵconditionalCreate(13, MCPServerDialogComponent_Conditional_0_Conditional_13_Template, 2, 0, "span", 11);
183
185
  i0.ɵɵelementEnd();
184
- i0.ɵɵelementStart(14, "div", 6)(15, "label", 11);
186
+ i0.ɵɵelementStart(14, "div", 7)(15, "label", 12);
185
187
  i0.ɵɵtext(16, "Description");
186
188
  i0.ɵɵelementEnd();
187
- i0.ɵɵelement(17, "textarea", 12);
189
+ i0.ɵɵelement(17, "textarea", 13);
188
190
  i0.ɵɵelementEnd();
189
- i0.ɵɵelementStart(18, "div", 6)(19, "label", 13);
191
+ i0.ɵɵelementStart(18, "div", 7)(19, "label", 14);
190
192
  i0.ɵɵtext(20, "Status");
191
193
  i0.ɵɵelementEnd();
192
- i0.ɵɵelement(21, "kendo-dropdownlist", 14);
193
- i0.ɵɵelementEnd()();
194
- i0.ɵɵelementStart(22, "div", 4)(23, "h3");
195
- i0.ɵɵelement(24, "i", 15);
194
+ i0.ɵɵelementStart(21, "mj-dropdown", 15);
195
+ i0.ɵɵlistener("ValueChange", function MCPServerDialogComponent_Conditional_0_Template_mj_dropdown_ValueChange_21_listener($event) { let tmp_4_0; i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView((tmp_4_0 = ctx_r1.serverForm.get("Status")) == null ? null : tmp_4_0.setValue($event)); });
196
+ i0.ɵɵelementEnd()()();
197
+ i0.ɵɵelementStart(22, "div", 5)(23, "h3");
198
+ i0.ɵɵelement(24, "i", 16);
196
199
  i0.ɵɵtext(25, " Transport Configuration");
197
200
  i0.ɵɵelementEnd();
198
- i0.ɵɵelementStart(26, "div", 6)(27, "label", 16);
201
+ i0.ɵɵelementStart(26, "div", 7)(27, "label", 17);
199
202
  i0.ɵɵtext(28, "Transport Type ");
200
- i0.ɵɵelementStart(29, "span", 8);
203
+ i0.ɵɵelementStart(29, "span", 9);
201
204
  i0.ɵɵtext(30, "*");
202
205
  i0.ɵɵelementEnd()();
203
- i0.ɵɵelementStart(31, "kendo-dropdownlist", 17);
204
- i0.ɵɵlistener("valueChange", function MCPServerDialogComponent_Conditional_0_Template_kendo_dropdownlist_valueChange_31_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTransportTypeChange()); });
205
- i0.ɵɵtemplate(32, MCPServerDialogComponent_Conditional_0_ng_template_32_Template, 5, 2, "ng-template", 18);
206
+ i0.ɵɵelementStart(31, "mj-dropdown", 18);
207
+ i0.ɵɵlistener("ValueChange", function MCPServerDialogComponent_Conditional_0_Template_mj_dropdown_ValueChange_31_listener($event) { let tmp_4_0; i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); (tmp_4_0 = ctx_r1.serverForm.get("TransportType")) == null ? null : tmp_4_0.setValue($event); return i0.ɵɵresetView(ctx_r1.onTransportTypeChange()); });
208
+ i0.ɵɵtemplate(32, MCPServerDialogComponent_Conditional_0_ng_template_32_Template, 5, 2, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
206
209
  i0.ɵɵelementEnd()();
207
- i0.ɵɵconditionalCreate(33, MCPServerDialogComponent_Conditional_0_Conditional_33_Template, 7, 1, "div", 6);
208
- i0.ɵɵconditionalCreate(34, MCPServerDialogComponent_Conditional_0_Conditional_34_Template, 13, 1);
210
+ i0.ɵɵconditionalCreate(34, MCPServerDialogComponent_Conditional_0_Conditional_34_Template, 7, 1, "div", 7);
211
+ i0.ɵɵconditionalCreate(35, MCPServerDialogComponent_Conditional_0_Conditional_35_Template, 13, 1);
209
212
  i0.ɵɵelementEnd();
210
- i0.ɵɵelementStart(35, "div", 4)(36, "h3");
211
- i0.ɵɵelement(37, "i", 19);
212
- i0.ɵɵtext(38, " Authentication");
213
+ i0.ɵɵelementStart(36, "div", 5)(37, "h3");
214
+ i0.ɵɵelement(38, "i", 19);
215
+ i0.ɵɵtext(39, " Authentication");
213
216
  i0.ɵɵelementEnd();
214
- i0.ɵɵelementStart(39, "div", 6)(40, "label", 20);
215
- i0.ɵɵtext(41, "Default Auth Type");
217
+ i0.ɵɵelementStart(40, "div", 7)(41, "label", 20);
218
+ i0.ɵɵtext(42, "Default Auth Type");
216
219
  i0.ɵɵelementEnd();
217
- i0.ɵɵelementStart(42, "kendo-dropdownlist", 21);
218
- i0.ɵɵlistener("valueChange", function MCPServerDialogComponent_Conditional_0_Template_kendo_dropdownlist_valueChange_42_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onAuthTypeChange()); });
219
- i0.ɵɵtemplate(43, MCPServerDialogComponent_Conditional_0_ng_template_43_Template, 5, 2, "ng-template", 18);
220
+ i0.ɵɵelementStart(43, "mj-dropdown", 18);
221
+ i0.ɵɵlistener("ValueChange", function MCPServerDialogComponent_Conditional_0_Template_mj_dropdown_ValueChange_43_listener($event) { let tmp_4_0; i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); (tmp_4_0 = ctx_r1.serverForm.get("DefaultAuthType")) == null ? null : tmp_4_0.setValue($event); return i0.ɵɵresetView(ctx_r1.onAuthTypeChange()); });
222
+ i0.ɵɵtemplate(44, MCPServerDialogComponent_Conditional_0_ng_template_44_Template, 5, 2, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
220
223
  i0.ɵɵelementEnd()()();
221
- i0.ɵɵconditionalCreate(44, MCPServerDialogComponent_Conditional_0_Conditional_44_Template, 40, 3, "div", 22);
222
- i0.ɵɵelementStart(45, "div", 4)(46, "h3");
223
- i0.ɵɵelement(47, "i", 23);
224
- i0.ɵɵtext(48, " Rate Limiting");
224
+ i0.ɵɵconditionalCreate(46, MCPServerDialogComponent_Conditional_0_Conditional_46_Template, 40, 5, "div", 21);
225
+ i0.ɵɵelementStart(47, "div", 5)(48, "h3");
226
+ i0.ɵɵelement(49, "i", 22);
227
+ i0.ɵɵtext(50, " Rate Limiting");
225
228
  i0.ɵɵelementEnd();
226
- i0.ɵɵelementStart(49, "div", 24)(50, "div", 25)(51, "label", 26);
227
- i0.ɵɵtext(52, "Requests per Minute");
229
+ i0.ɵɵelementStart(51, "div", 23)(52, "div", 24)(53, "label", 25);
230
+ i0.ɵɵtext(54, "Requests per Minute");
228
231
  i0.ɵɵelementEnd();
229
- i0.ɵɵelement(53, "kendo-numerictextbox", 27);
232
+ i0.ɵɵelementStart(55, "mj-numeric-input", 26);
233
+ i0.ɵɵlistener("ngModelChange", function MCPServerDialogComponent_Conditional_0_Template_mj_numeric_input_ngModelChange_55_listener($event) { let tmp_4_0; i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView((tmp_4_0 = ctx_r1.serverForm.get("RateLimitPerMinute")) == null ? null : tmp_4_0.setValue($event)); });
234
+ i0.ɵɵelementEnd()();
235
+ i0.ɵɵelementStart(56, "div", 24)(57, "label", 27);
236
+ i0.ɵɵtext(58, "Requests per Hour");
230
237
  i0.ɵɵelementEnd();
231
- i0.ɵɵelementStart(54, "div", 25)(55, "label", 28);
232
- i0.ɵɵtext(56, "Requests per Hour");
238
+ i0.ɵɵelementStart(59, "mj-numeric-input", 26);
239
+ i0.ɵɵlistener("ngModelChange", function MCPServerDialogComponent_Conditional_0_Template_mj_numeric_input_ngModelChange_59_listener($event) { let tmp_4_0; i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView((tmp_4_0 = ctx_r1.serverForm.get("RateLimitPerHour")) == null ? null : tmp_4_0.setValue($event)); });
240
+ i0.ɵɵelementEnd()()();
241
+ i0.ɵɵelementStart(60, "div", 7)(61, "label", 28);
242
+ i0.ɵɵtext(62, "Request Timeout (ms)");
233
243
  i0.ɵɵelementEnd();
234
- i0.ɵɵelement(57, "kendo-numerictextbox", 29);
235
- i0.ɵɵelementEnd()();
236
- i0.ɵɵelementStart(58, "div", 6)(59, "label", 30);
237
- i0.ɵɵtext(60, "Request Timeout (ms)");
244
+ i0.ɵɵelementStart(63, "mj-numeric-input", 29);
245
+ i0.ɵɵlistener("ngModelChange", function MCPServerDialogComponent_Conditional_0_Template_mj_numeric_input_ngModelChange_63_listener($event) { let tmp_4_0; i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView((tmp_4_0 = ctx_r1.serverForm.get("RequestTimeoutMs")) == null ? null : tmp_4_0.setValue($event)); });
238
246
  i0.ɵɵelementEnd();
239
- i0.ɵɵelement(61, "kendo-numerictextbox", 31);
240
- i0.ɵɵelementStart(62, "span", 32);
241
- i0.ɵɵtext(63, "Timeout for individual tool calls (1000-600000ms)");
247
+ i0.ɵɵelementStart(64, "span", 30);
248
+ i0.ɵɵtext(65, "Timeout for individual tool calls (1000-600000ms)");
242
249
  i0.ɵɵelementEnd()()()();
243
- i0.ɵɵelementStart(64, "kendo-dialog-actions")(65, "button", 33);
244
- i0.ɵɵlistener("click", function MCPServerDialogComponent_Conditional_0_Template_button_click_65_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.save()); });
245
- i0.ɵɵconditionalCreate(66, MCPServerDialogComponent_Conditional_0_Conditional_66_Template, 1, 0, "i", 34);
246
- i0.ɵɵtext(67);
247
- i0.ɵɵelementEnd();
248
- i0.ɵɵelementStart(68, "button", 35);
249
- i0.ɵɵlistener("click", function MCPServerDialogComponent_Conditional_0_Template_button_click_68_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancel()); });
250
- i0.ɵɵtext(69, "Cancel");
250
+ i0.ɵɵelementStart(66, "mj-dialog-actions")(67, "button", 31);
251
+ i0.ɵɵlistener("click", function MCPServerDialogComponent_Conditional_0_Template_button_click_67_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.save()); });
252
+ i0.ɵɵconditionalCreate(68, MCPServerDialogComponent_Conditional_0_Conditional_68_Template, 1, 0, "i", 32);
253
+ i0.ɵɵtext(69);
254
+ i0.ɵɵelementEnd();
255
+ i0.ɵɵelementStart(70, "button", 33);
256
+ i0.ɵɵlistener("click", function MCPServerDialogComponent_Conditional_0_Template_button_click_70_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancel()); });
257
+ i0.ɵɵtext(71, "Cancel");
251
258
  i0.ɵɵelementEnd()()();
252
259
  } if (rf & 2) {
260
+ let tmp_12_0;
261
+ let tmp_16_0;
262
+ let tmp_22_0;
263
+ let tmp_26_0;
264
+ let tmp_29_0;
265
+ let tmp_34_0;
253
266
  const ctx_r1 = i0.ɵɵnextContext();
254
- i0.ɵɵproperty("title", ctx_r1.DialogTitle)("width", 600)("minWidth", 400);
267
+ i0.ɵɵproperty("Visible", true)("Title", ctx_r1.DialogTitle)("Width", 600);
255
268
  i0.ɵɵadvance();
256
269
  i0.ɵɵproperty("formGroup", ctx_r1.serverForm);
257
270
  i0.ɵɵadvance();
@@ -261,27 +274,27 @@ function MCPServerDialogComponent_Conditional_0_Template(rf, ctx) { if (rf & 1)
261
274
  i0.ɵɵadvance(4);
262
275
  i0.ɵɵproperty("rows", 3);
263
276
  i0.ɵɵadvance(4);
264
- i0.ɵɵproperty("data", i0.ɵɵpureFunction0(27, _c0))("valuePrimitive", true);
277
+ i0.ɵɵproperty("Data", i0.ɵɵpureFunction0(35, _c0))("ngModelOptions", i0.ɵɵpureFunction0(36, _c1))("ngModel", (tmp_12_0 = ctx_r1.serverForm.get("Status")) == null ? null : tmp_12_0.value);
265
278
  i0.ɵɵadvance(10);
266
- i0.ɵɵproperty("data", ctx_r1.transportTypes)("valuePrimitive", true);
267
- i0.ɵɵadvance(2);
268
- i0.ɵɵconditional(ctx_r1.RequiresURL ? 33 : -1);
279
+ i0.ɵɵproperty("Data", ctx_r1.transportTypes)("ValuePrimitive", true)("ngModelOptions", i0.ɵɵpureFunction0(37, _c1))("ngModel", (tmp_16_0 = ctx_r1.serverForm.get("TransportType")) == null ? null : tmp_16_0.value);
280
+ i0.ɵɵadvance(3);
281
+ i0.ɵɵconditional(ctx_r1.RequiresURL ? 34 : -1);
269
282
  i0.ɵɵadvance();
270
- i0.ɵɵconditional(ctx_r1.RequiresCommand ? 34 : -1);
283
+ i0.ɵɵconditional(ctx_r1.RequiresCommand ? 35 : -1);
271
284
  i0.ɵɵadvance(8);
272
- i0.ɵɵproperty("data", ctx_r1.authTypes)("valuePrimitive", true);
273
- i0.ɵɵadvance(2);
274
- i0.ɵɵconditional(ctx_r1.IsOAuth2 ? 44 : -1);
285
+ i0.ɵɵproperty("Data", ctx_r1.authTypes)("ValuePrimitive", true)("ngModelOptions", i0.ɵɵpureFunction0(38, _c1))("ngModel", (tmp_22_0 = ctx_r1.serverForm.get("DefaultAuthType")) == null ? null : tmp_22_0.value);
286
+ i0.ɵɵadvance(3);
287
+ i0.ɵɵconditional(ctx_r1.IsOAuth2 ? 46 : -1);
275
288
  i0.ɵɵadvance(9);
276
- i0.ɵɵproperty("min", 0)("format", "n0");
289
+ i0.ɵɵproperty("Min", 0)("ngModelOptions", i0.ɵɵpureFunction0(39, _c1))("ngModel", (tmp_26_0 = ctx_r1.serverForm.get("RateLimitPerMinute")) == null ? null : tmp_26_0.value);
277
290
  i0.ɵɵadvance(4);
278
- i0.ɵɵproperty("min", 0)("format", "n0");
291
+ i0.ɵɵproperty("Min", 0)("ngModelOptions", i0.ɵɵpureFunction0(40, _c1))("ngModel", (tmp_29_0 = ctx_r1.serverForm.get("RateLimitPerHour")) == null ? null : tmp_29_0.value);
279
292
  i0.ɵɵadvance(4);
280
- i0.ɵɵproperty("min", 1000)("max", 600000)("step", 1000)("format", "n0");
293
+ i0.ɵɵproperty("Min", 1000)("Max", 600000)("Step", 1000)("ngModelOptions", i0.ɵɵpureFunction0(41, _c1))("ngModel", (tmp_34_0 = ctx_r1.serverForm.get("RequestTimeoutMs")) == null ? null : tmp_34_0.value);
281
294
  i0.ɵɵadvance(4);
282
295
  i0.ɵɵproperty("disabled", ctx_r1.IsSaving);
283
296
  i0.ɵɵadvance();
284
- i0.ɵɵconditional(ctx_r1.IsSaving ? 66 : -1);
297
+ i0.ɵɵconditional(ctx_r1.IsSaving ? 68 : -1);
285
298
  i0.ɵɵadvance();
286
299
  i0.ɵɵtextInterpolate1(" ", ctx_r1.IsEditMode ? "Update" : "Create", " ");
287
300
  } }
@@ -526,15 +539,15 @@ export class MCPServerDialogComponent {
526
539
  return control?.hasError(errorType) && control?.touched || false;
527
540
  }
528
541
  static ɵfac = function MCPServerDialogComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MCPServerDialogComponent)(i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
529
- 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: [[3, "title", "width", "minWidth"], [3, "close", "title", "width", "minWidth"], [1, "server-form", 3, "formGroup"], [1, "error-banner"], [1, "form-section"], [1, "fa-solid", "fa-info-circle"], [1, "form-group"], ["for", "name"], [1, "required"], ["kendoTextBox", "", "id", "name", "formControlName", "Name", "placeholder", "e.g., GitHub MCP Server"], [1, "error-text"], ["for", "description"], ["kendoTextArea", "", "id", "description", "formControlName", "Description", "placeholder", "Optional description of this server", 3, "rows"], ["for", "status"], ["id", "status", "formControlName", "Status", 3, "data", "valuePrimitive"], [1, "fa-solid", "fa-network-wired"], ["for", "transportType"], ["id", "transportType", "formControlName", "TransportType", "textField", "label", "valueField", "value", 3, "valueChange", "data", "valuePrimitive"], ["kendoDropDownListItemTemplate", ""], [1, "fa-solid", "fa-shield-halved"], ["for", "authType"], ["id", "authType", "formControlName", "DefaultAuthType", "textField", "label", "valueField", "value", 3, "valueChange", "data", "valuePrimitive"], [1, "form-section", "oauth-section"], [1, "fa-solid", "fa-gauge-high"], [1, "form-row"], [1, "form-group", "half"], ["for", "rateLimitMinute"], ["id", "rateLimitMinute", "formControlName", "RateLimitPerMinute", "placeholder", "No limit", 3, "min", "format"], ["for", "rateLimitHour"], ["id", "rateLimitHour", "formControlName", "RateLimitPerHour", "placeholder", "No limit", 3, "min", "format"], ["for", "requestTimeout"], ["id", "requestTimeout", "formControlName", "RequestTimeoutMs", 3, "min", "max", "step", "format"], [1, "hint"], ["kendoButton", "", "themeColor", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["kendoButton", "", 3, "click"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "transport-option"], [1, "transport-label"], [1, "transport-desc"], ["for", "serverUrl"], ["kendoTextBox", "", "id", "serverUrl", "formControlName", "ServerURL", "placeholder", "https://api.example.com/mcp"], ["for", "command"], ["kendoTextBox", "", "id", "command", "formControlName", "Command", "placeholder", "e.g., npx or /usr/local/bin/mcp-server"], ["for", "commandArgs"], ["kendoTextBox", "", "id", "commandArgs", "formControlName", "CommandArgs", "placeholder", "[\"arg1\", \"arg2\"]"], [1, "auth-option"], [1, "auth-label"], [1, "auth-desc"], [1, "fa-solid", "fa-key"], ["for", "oauthIssuerUrl"], ["kendoTextBox", "", "id", "oauthIssuerUrl", "formControlName", "OAuthIssuerURL", "placeholder", "https://auth.example.com"], ["for", "oauthScopes"], ["kendoTextBox", "", "id", "oauthScopes", "formControlName", "OAuthScopes", "placeholder", "openid profile email"], ["for", "oauthCacheTtl"], ["id", "oauthCacheTtl", "formControlName", "OAuthMetadataCacheTTLMinutes", "placeholder", "1440", 3, "min", "format"], [1, "oauth-client-section"], [1, "section-hint"], ["for", "oauthClientId"], ["kendoTextBox", "", "id", "oauthClientId", "formControlName", "OAuthClientID", "placeholder", "your-client-id"], ["for", "oauthClientSecret"], ["kendoTextBox", "", "id", "oauthClientSecret", "formControlName", "OAuthClientSecretEncrypted", "type", "password", "placeholder", "your-client-secret"]], template: function MCPServerDialogComponent_Template(rf, ctx) { if (rf & 1) {
530
- i0.ɵɵconditionalCreate(0, MCPServerDialogComponent_Conditional_0_Template, 70, 28, "kendo-dialog", 0);
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) {
543
+ i0.ɵɵconditionalCreate(0, MCPServerDialogComponent_Conditional_0_Template, 72, 42, "mj-dialog", 1);
531
544
  } if (rf & 2) {
532
545
  i0.ɵɵconditional(ctx.visible ? 0 : -1);
533
- } }, dependencies: [i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.FormGroupDirective, i1.FormControlName, i2.ButtonComponent, i3.DialogComponent, i3.DialogActionsComponent, i4.ItemTemplateDirective, i4.DropDownListComponent, i5.TextBoxDirective, i5.NumericTextBoxComponent, i5.TextAreaDirective], styles: [".server-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.form-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n}\n\n.form-group.half[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.transport-option[_ngcontent-%COMP%], \n.auth-option[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n padding: 4px 0;\n}\n\n.transport-label[_ngcontent-%COMP%], \n.auth-label[_ngcontent-%COMP%] {\n font-weight: 500;\n font-size: 14px;\n}\n\n.transport-desc[_ngcontent-%COMP%], \n.auth-desc[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n\n\n.oauth-section[_ngcontent-%COMP%] {\n background-color: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.oauth-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n.oauth-client-section[_ngcontent-%COMP%] {\n margin-top: 20px;\n padding-top: 16px;\n border-top: 1px dashed var(--mj-border-strong);\n}\n\n.oauth-client-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-hint[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\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}"] });
546
+ } }, dependencies: [i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.FormGroupDirective, i1.FormControlName, i2.MJButtonDirective, i2.MJDialogComponent, i2.MJDialogActionsComponent, i2.MJDropdownComponent, i2.MJNumericInputComponent], styles: [".server-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.form-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n}\n\n.form-group.half[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.transport-option[_ngcontent-%COMP%], \n.auth-option[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n padding: 4px 0;\n}\n\n.transport-label[_ngcontent-%COMP%], \n.auth-label[_ngcontent-%COMP%] {\n font-weight: 500;\n font-size: 14px;\n}\n\n.transport-desc[_ngcontent-%COMP%], \n.auth-desc[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n\n\n.oauth-section[_ngcontent-%COMP%] {\n background-color: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.oauth-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n.oauth-client-section[_ngcontent-%COMP%] {\n margin-top: 20px;\n padding-top: 16px;\n border-top: 1px dashed var(--mj-border-strong);\n}\n\n.oauth-client-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-hint[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\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}"] });
534
547
  }
535
548
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MCPServerDialogComponent, [{
536
549
  type: Component,
537
- args: [{ standalone: false, selector: 'mj-mcp-server-dialog', template: "@if (visible) {\n <kendo-dialog\n [title]=\"DialogTitle\"\n (close)=\"cancel()\"\n [width]=\"600\"\n [minWidth]=\"400\">\n <form [formGroup]=\"serverForm\" class=\"server-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=\"name\">Name <span class=\"required\">*</span></label>\n <input kendoTextBox\n id=\"name\"\n formControlName=\"Name\"\n placeholder=\"e.g., GitHub MCP Server\" />\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 server\"\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>\n <!-- Transport Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-network-wired\"></i> Transport Configuration</h3>\n <div class=\"form-group\">\n <label for=\"transportType\">Transport Type <span class=\"required\">*</span></label>\n <kendo-dropdownlist\n id=\"transportType\"\n formControlName=\"TransportType\"\n [data]=\"transportTypes\"\n textField=\"label\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n (valueChange)=\"onTransportTypeChange()\">\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <div class=\"transport-option\">\n <span class=\"transport-label\">{{ dataItem.label }}</span>\n <span class=\"transport-desc\">{{ dataItem.description }}</span>\n </div>\n </ng-template>\n </kendo-dropdownlist>\n </div>\n @if (RequiresURL) {\n <div class=\"form-group\">\n <label for=\"serverUrl\">Server URL <span class=\"required\">*</span></label>\n <input kendoTextBox\n id=\"serverUrl\"\n formControlName=\"ServerURL\"\n placeholder=\"https://api.example.com/mcp\" />\n @if (hasError('ServerURL', 'required')) {\n <span class=\"error-text\">Server URL is required for this transport type</span>\n }\n </div>\n }\n @if (RequiresCommand) {\n <div class=\"form-group\">\n <label for=\"command\">Command <span class=\"required\">*</span></label>\n <input kendoTextBox\n id=\"command\"\n formControlName=\"Command\"\n placeholder=\"e.g., npx or /usr/local/bin/mcp-server\" />\n @if (hasError('Command', 'required')) {\n <span class=\"error-text\">Command is required for Stdio transport</span>\n }\n </div>\n <div class=\"form-group\">\n <label for=\"commandArgs\">Command Arguments (JSON array)</label>\n <input kendoTextBox\n id=\"commandArgs\"\n formControlName=\"CommandArgs\"\n placeholder='[\"arg1\", \"arg2\"]' />\n <span class=\"hint\">JSON array of command line arguments</span>\n </div>\n }\n </div>\n <!-- Authentication Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-shield-halved\"></i> Authentication</h3>\n <div class=\"form-group\">\n <label for=\"authType\">Default Auth Type</label>\n <kendo-dropdownlist\n id=\"authType\"\n formControlName=\"DefaultAuthType\"\n [data]=\"authTypes\"\n textField=\"label\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n (valueChange)=\"onAuthTypeChange()\">\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <div class=\"auth-option\">\n <span class=\"auth-label\">{{ dataItem.label }}</span>\n <span class=\"auth-desc\">{{ dataItem.description }}</span>\n </div>\n </ng-template>\n </kendo-dropdownlist>\n </div>\n </div>\n <!-- OAuth 2.0 Configuration Section (only shown when OAuth2 is selected) -->\n @if (IsOAuth2) {\n <div class=\"form-section oauth-section\">\n <h3><i class=\"fa-solid fa-key\"></i> OAuth 2.0 Configuration</h3>\n <div class=\"form-group\">\n <label for=\"oauthIssuerUrl\">OAuth Issuer URL <span class=\"required\">*</span></label>\n <input kendoTextBox\n id=\"oauthIssuerUrl\"\n formControlName=\"OAuthIssuerURL\"\n placeholder=\"https://auth.example.com\" />\n @if (hasError('OAuthIssuerURL', 'required')) {\n <span class=\"error-text\">OAuth Issuer URL is required for OAuth 2.0 authentication</span>\n }\n <span class=\"hint\">The authorization server's issuer URL (e.g., https://login.microsoftonline.com/tenant-id or https://your-domain.auth0.com)</span>\n </div>\n <div class=\"form-group\">\n <label for=\"oauthScopes\">OAuth Scopes</label>\n <input kendoTextBox\n id=\"oauthScopes\"\n formControlName=\"OAuthScopes\"\n placeholder=\"openid profile email\" />\n <span class=\"hint\">Space-separated list of OAuth scopes to request</span>\n </div>\n <div class=\"form-group\">\n <label for=\"oauthCacheTtl\">Metadata Cache TTL (minutes)</label>\n <kendo-numerictextbox\n id=\"oauthCacheTtl\"\n formControlName=\"OAuthMetadataCacheTTLMinutes\"\n [min]=\"5\"\n [format]=\"'n0'\"\n placeholder=\"1440\">\n </kendo-numerictextbox>\n <span class=\"hint\">How long to cache OAuth metadata (default: 1440 minutes = 24 hours)</span>\n </div>\n <div class=\"oauth-client-section\">\n <h4>Pre-configured Client (Optional)</h4>\n <p class=\"section-hint\">Leave blank to use Dynamic Client Registration (DCR). If the auth server doesn't support DCR, configure your client credentials here.</p>\n <div class=\"form-group\">\n <label for=\"oauthClientId\">Client ID</label>\n <input kendoTextBox\n id=\"oauthClientId\"\n formControlName=\"OAuthClientID\"\n placeholder=\"your-client-id\" />\n </div>\n <div class=\"form-group\">\n <label for=\"oauthClientSecret\">Client Secret</label>\n <input kendoTextBox\n id=\"oauthClientSecret\"\n formControlName=\"OAuthClientSecretEncrypted\"\n type=\"password\"\n placeholder=\"your-client-secret\" />\n <span class=\"hint\">The secret will be encrypted before storage</span>\n </div>\n </div>\n </div>\n }\n <!-- Rate Limiting Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-gauge-high\"></i> Rate Limiting</h3>\n <div class=\"form-row\">\n <div class=\"form-group half\">\n <label for=\"rateLimitMinute\">Requests per Minute</label>\n <kendo-numerictextbox\n id=\"rateLimitMinute\"\n formControlName=\"RateLimitPerMinute\"\n [min]=\"0\"\n [format]=\"'n0'\"\n placeholder=\"No limit\">\n </kendo-numerictextbox>\n </div>\n <div class=\"form-group half\">\n <label for=\"rateLimitHour\">Requests per Hour</label>\n <kendo-numerictextbox\n id=\"rateLimitHour\"\n formControlName=\"RateLimitPerHour\"\n [min]=\"0\"\n [format]=\"'n0'\"\n placeholder=\"No limit\">\n </kendo-numerictextbox>\n </div>\n </div>\n <div class=\"form-group\">\n <label for=\"requestTimeout\">Request Timeout (ms)</label>\n <kendo-numerictextbox\n id=\"requestTimeout\"\n formControlName=\"RequestTimeoutMs\"\n [min]=\"1000\"\n [max]=\"600000\"\n [step]=\"1000\"\n [format]=\"'n0'\">\n </kendo-numerictextbox>\n <span class=\"hint\">Timeout for individual tool calls (1000-600000ms)</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", styles: [".server-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.form-row {\n display: flex;\n gap: 16px;\n}\n\n.form-group.half {\n flex: 1;\n}\n\n.transport-option,\n.auth-option {\n display: flex;\n flex-direction: column;\n padding: 4px 0;\n}\n\n.transport-label,\n.auth-label {\n font-weight: 500;\n font-size: 14px;\n}\n\n.transport-desc,\n.auth-desc {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n/* OAuth Section Styles */\n.oauth-section {\n background-color: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.oauth-section h3 i {\n color: var(--mj-status-warning);\n}\n\n.oauth-client-section {\n margin-top: 20px;\n padding-top: 16px;\n border-top: 1px dashed var(--mj-border-strong);\n}\n\n.oauth-client-section h4 {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-hint {\n margin: 0 0 16px 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\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"] }]
550
+ args: [{ standalone: false, selector: 'mj-mcp-server-dialog', template: "@if (visible) {\n <mj-dialog\n [Visible]=\"true\"\n [Title]=\"DialogTitle\"\n (Close)=\"cancel()\"\n [Width]=\"600\">\n <form [formGroup]=\"serverForm\" class=\"server-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=\"name\">Name <span class=\"required\">*</span></label>\n <input class=\"mj-input\"\n id=\"name\"\n formControlName=\"Name\"\n placeholder=\"e.g., GitHub MCP Server\" />\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 server\"\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]=\"serverForm.get('Status')?.value\"\n (ValueChange)=\"serverForm.get('Status')?.setValue($any($event))\">\n </mj-dropdown>\n </div>\n </div>\n <!-- Transport Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-network-wired\"></i> Transport Configuration</h3>\n <div class=\"form-group\">\n <label for=\"transportType\">Transport Type <span class=\"required\">*</span></label>\n <mj-dropdown\n [Data]=\"transportTypes\"\n TextField=\"label\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"serverForm.get('TransportType')?.value\"\n (ValueChange)=\"serverForm.get('TransportType')?.setValue($any($event)); onTransportTypeChange()\">\n <ng-template #mjDropdownItem let-dataItem>\n <div class=\"transport-option\">\n <span class=\"transport-label\">{{ dataItem.label }}</span>\n <span class=\"transport-desc\">{{ dataItem.description }}</span>\n </div>\n </ng-template>\n </mj-dropdown>\n </div>\n @if (RequiresURL) {\n <div class=\"form-group\">\n <label for=\"serverUrl\">Server URL <span class=\"required\">*</span></label>\n <input class=\"mj-input\"\n id=\"serverUrl\"\n formControlName=\"ServerURL\"\n placeholder=\"https://api.example.com/mcp\" />\n @if (hasError('ServerURL', 'required')) {\n <span class=\"error-text\">Server URL is required for this transport type</span>\n }\n </div>\n }\n @if (RequiresCommand) {\n <div class=\"form-group\">\n <label for=\"command\">Command <span class=\"required\">*</span></label>\n <input class=\"mj-input\"\n id=\"command\"\n formControlName=\"Command\"\n placeholder=\"e.g., npx or /usr/local/bin/mcp-server\" />\n @if (hasError('Command', 'required')) {\n <span class=\"error-text\">Command is required for Stdio transport</span>\n }\n </div>\n <div class=\"form-group\">\n <label for=\"commandArgs\">Command Arguments (JSON array)</label>\n <input class=\"mj-input\"\n id=\"commandArgs\"\n formControlName=\"CommandArgs\"\n placeholder='[\"arg1\", \"arg2\"]' />\n <span class=\"hint\">JSON array of command line arguments</span>\n </div>\n }\n </div>\n <!-- Authentication Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-shield-halved\"></i> Authentication</h3>\n <div class=\"form-group\">\n <label for=\"authType\">Default Auth Type</label>\n <mj-dropdown\n [Data]=\"authTypes\"\n TextField=\"label\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"serverForm.get('DefaultAuthType')?.value\"\n (ValueChange)=\"serverForm.get('DefaultAuthType')?.setValue($any($event)); onAuthTypeChange()\">\n <ng-template #mjDropdownItem let-dataItem>\n <div class=\"auth-option\">\n <span class=\"auth-label\">{{ dataItem.label }}</span>\n <span class=\"auth-desc\">{{ dataItem.description }}</span>\n </div>\n </ng-template>\n </mj-dropdown>\n </div>\n </div>\n <!-- OAuth 2.0 Configuration Section -->\n @if (IsOAuth2) {\n <div class=\"form-section oauth-section\">\n <h3><i class=\"fa-solid fa-key\"></i> OAuth 2.0 Configuration</h3>\n <div class=\"form-group\">\n <label for=\"oauthIssuerUrl\">OAuth Issuer URL <span class=\"required\">*</span></label>\n <input class=\"mj-input\"\n id=\"oauthIssuerUrl\"\n formControlName=\"OAuthIssuerURL\"\n placeholder=\"https://auth.example.com\" />\n @if (hasError('OAuthIssuerURL', 'required')) {\n <span class=\"error-text\">OAuth Issuer URL is required for OAuth 2.0 authentication</span>\n }\n <span class=\"hint\">The authorization server's issuer URL (e.g., https://login.microsoftonline.com/tenant-id or https://your-domain.auth0.com)</span>\n </div>\n <div class=\"form-group\">\n <label for=\"oauthScopes\">OAuth Scopes</label>\n <input class=\"mj-input\"\n id=\"oauthScopes\"\n formControlName=\"OAuthScopes\"\n placeholder=\"openid profile email\" />\n <span class=\"hint\">Space-separated list of OAuth scopes to request</span>\n </div>\n <div class=\"form-group\">\n <label for=\"oauthCacheTtl\">Metadata Cache TTL (minutes)</label>\n <mj-numeric-input\n [Min]=\"5\"\n Placeholder=\"1440\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"serverForm.get('OAuthMetadataCacheTTLMinutes')?.value\"\n (ngModelChange)=\"serverForm.get('OAuthMetadataCacheTTLMinutes')?.setValue($event)\">\n </mj-numeric-input>\n <span class=\"hint\">How long to cache OAuth metadata (default: 1440 minutes = 24 hours)</span>\n </div>\n <div class=\"oauth-client-section\">\n <h4>Pre-configured Client (Optional)</h4>\n <p class=\"section-hint\">Leave blank to use Dynamic Client Registration (DCR). If the auth server doesn't support DCR, configure your client credentials here.</p>\n <div class=\"form-group\">\n <label for=\"oauthClientId\">Client ID</label>\n <input class=\"mj-input\"\n id=\"oauthClientId\"\n formControlName=\"OAuthClientID\"\n placeholder=\"your-client-id\" />\n </div>\n <div class=\"form-group\">\n <label for=\"oauthClientSecret\">Client Secret</label>\n <input class=\"mj-input\"\n id=\"oauthClientSecret\"\n formControlName=\"OAuthClientSecretEncrypted\"\n type=\"password\"\n placeholder=\"your-client-secret\" />\n <span class=\"hint\">The secret will be encrypted before storage</span>\n </div>\n </div>\n </div>\n }\n <!-- Rate Limiting Section -->\n <div class=\"form-section\">\n <h3><i class=\"fa-solid fa-gauge-high\"></i> Rate Limiting</h3>\n <div class=\"form-row\">\n <div class=\"form-group half\">\n <label for=\"rateLimitMinute\">Requests per Minute</label>\n <mj-numeric-input\n [Min]=\"0\"\n Placeholder=\"No limit\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"serverForm.get('RateLimitPerMinute')?.value\"\n (ngModelChange)=\"serverForm.get('RateLimitPerMinute')?.setValue($event)\">\n </mj-numeric-input>\n </div>\n <div class=\"form-group half\">\n <label for=\"rateLimitHour\">Requests per Hour</label>\n <mj-numeric-input\n [Min]=\"0\"\n Placeholder=\"No limit\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"serverForm.get('RateLimitPerHour')?.value\"\n (ngModelChange)=\"serverForm.get('RateLimitPerHour')?.setValue($event)\">\n </mj-numeric-input>\n </div>\n </div>\n <div class=\"form-group\">\n <label for=\"requestTimeout\">Request Timeout (ms)</label>\n <mj-numeric-input\n [Min]=\"1000\"\n [Max]=\"600000\"\n [Step]=\"1000\"\n [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"serverForm.get('RequestTimeoutMs')?.value\"\n (ngModelChange)=\"serverForm.get('RequestTimeoutMs')?.setValue($event)\">\n </mj-numeric-input>\n <span class=\"hint\">Timeout for individual tool calls (1000-600000ms)</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", styles: [".server-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.form-row {\n display: flex;\n gap: 16px;\n}\n\n.form-group.half {\n flex: 1;\n}\n\n.transport-option,\n.auth-option {\n display: flex;\n flex-direction: column;\n padding: 4px 0;\n}\n\n.transport-label,\n.auth-label {\n font-weight: 500;\n font-size: 14px;\n}\n\n.transport-desc,\n.auth-desc {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n/* OAuth Section Styles */\n.oauth-section {\n background-color: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.oauth-section h3 i {\n color: var(--mj-status-warning);\n}\n\n.oauth-client-section {\n margin-top: 20px;\n padding-top: 16px;\n border-top: 1px dashed var(--mj-border-strong);\n}\n\n.oauth-client-section h4 {\n margin: 0 0 8px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-hint {\n margin: 0 0 16px 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\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"] }]
538
551
  }], () => [{ type: i1.FormBuilder }, { type: i0.ChangeDetectorRef }], { server: [{
539
552
  type: Input
540
553
  }], visible: [{