@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
@@ -17,32 +17,30 @@ import { UserInfoEngine } from '@memberjunction/core-entities';
17
17
  import { UUIDsEqual } from '@memberjunction/global';
18
18
  import * as i0 from "@angular/core";
19
19
  import * as i1 from "@angular/forms";
20
- import * as i2 from "@progress/kendo-angular-buttons";
21
- import * as i3 from "@progress/kendo-angular-dropdowns";
22
- import * as i4 from "@progress/kendo-angular-inputs";
23
- import * as i5 from "@memberjunction/ng-code-editor";
20
+ import * as i2 from "@memberjunction/ng-ui-components";
21
+ import * as i3 from "@memberjunction/ng-code-editor";
24
22
  const _forTrack0 = ($index, $item) => $item.name;
25
23
  function MCPTestToolDialogComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
26
24
  const _r1 = i0.ɵɵgetCurrentView();
27
- i0.ɵɵelementStart(0, "div", 2);
25
+ i0.ɵɵelementStart(0, "div", 3);
28
26
  i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_0_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDialog()); });
29
27
  i0.ɵɵelementEnd();
30
28
  } }
31
29
  function MCPTestToolDialogComponent_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
32
30
  const _r4 = i0.ɵɵgetCurrentView();
33
- i0.ɵɵelementStart(0, "div", 19);
31
+ i0.ɵɵelementStart(0, "div", 20);
34
32
  i0.ɵɵlistener("mousedown", function MCPTestToolDialogComponent_Conditional_1_Conditional_1_Template_div_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onResizeStart($event)); });
35
- i0.ɵɵelement(1, "div", 20);
33
+ i0.ɵɵelement(1, "div", 21);
36
34
  i0.ɵɵelementEnd();
37
35
  } if (rf & 2) {
38
36
  const ctx_r1 = i0.ɵɵnextContext(2);
39
37
  i0.ɵɵclassProp("active", ctx_r1.IsResizing);
40
38
  } }
41
39
  function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_9_Template(rf, ctx) { if (rf & 1) {
42
- i0.ɵɵelementStart(0, "div", 36)(1, "span", 37);
40
+ i0.ɵɵelementStart(0, "div", 35)(1, "span", 36);
43
41
  i0.ɵɵtext(2);
44
42
  i0.ɵɵelementEnd();
45
- i0.ɵɵelementStart(3, "span", 38);
43
+ i0.ɵɵelementStart(3, "span", 37);
46
44
  i0.ɵɵtext(4);
47
45
  i0.ɵɵelementEnd()();
48
46
  } if (rf & 2) {
@@ -54,8 +52,8 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_9_T
54
52
  i0.ɵɵadvance();
55
53
  i0.ɵɵtextInterpolate1(" ", dataItem_r6.Status, " ");
56
54
  } }
57
- function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_17_Conditional_3_Template(rf, ctx) { if (rf & 1) {
58
- i0.ɵɵelementStart(0, "span", 39);
55
+ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_18_Conditional_3_Template(rf, ctx) { if (rf & 1) {
56
+ i0.ɵɵelementStart(0, "span", 38);
59
57
  i0.ɵɵtext(1);
60
58
  i0.ɵɵelementEnd();
61
59
  } if (rf & 2) {
@@ -63,11 +61,11 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_17_
63
61
  i0.ɵɵadvance();
64
62
  i0.ɵɵtextInterpolate(dataItem_r7.Description);
65
63
  } }
66
- function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_17_Template(rf, ctx) { if (rf & 1) {
67
- i0.ɵɵelementStart(0, "div", 36)(1, "span", 37);
64
+ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_18_Template(rf, ctx) { if (rf & 1) {
65
+ i0.ɵɵelementStart(0, "div", 35)(1, "span", 36);
68
66
  i0.ɵɵtext(2);
69
67
  i0.ɵɵelementEnd();
70
- i0.ɵɵconditionalCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_17_Conditional_3_Template, 2, 1, "span", 39);
68
+ i0.ɵɵconditionalCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_18_Conditional_3_Template, 2, 1, "span", 38);
71
69
  i0.ɵɵelementEnd();
72
70
  } if (rf & 2) {
73
71
  const dataItem_r7 = ctx.$implicit;
@@ -76,14 +74,14 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_17_
76
74
  i0.ɵɵadvance();
77
75
  i0.ɵɵconditional(dataItem_r7.Description ? 3 : -1);
78
76
  } }
79
- function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_18_Template(rf, ctx) { if (rf & 1) {
77
+ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_20_Template(rf, ctx) { if (rf & 1) {
80
78
  i0.ɵɵelementStart(0, "span", 30);
81
79
  i0.ɵɵtext(1, "Select a server first");
82
80
  i0.ɵɵelementEnd();
83
81
  } }
84
- function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_19_Template(rf, ctx) { if (rf & 1) {
82
+ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_21_Template(rf, ctx) { if (rf & 1) {
85
83
  i0.ɵɵelementStart(0, "span", 31);
86
- i0.ɵɵelement(1, "i", 40);
84
+ i0.ɵɵelement(1, "i", 39);
87
85
  i0.ɵɵtext(2);
88
86
  i0.ɵɵelementEnd();
89
87
  } if (rf & 2) {
@@ -91,111 +89,105 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_19_
91
89
  i0.ɵɵadvance(2);
92
90
  i0.ɵɵtextInterpolate1(" ", ctx_r1.NoConnectionsWarning, " ");
93
91
  } }
94
- function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_20_Template(rf, ctx) { if (rf & 1) {
92
+ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_22_Template(rf, ctx) { if (rf & 1) {
95
93
  i0.ɵɵelementStart(0, "span", 32);
96
- i0.ɵɵelement(1, "i", 41);
94
+ i0.ɵɵelement(1, "i", 40);
97
95
  i0.ɵɵtext(2, " Auto-selected (only connection available) ");
98
96
  i0.ɵɵelementEnd();
99
97
  } }
100
- function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_28_Template(rf, ctx) { if (rf & 1) {
101
- i0.ɵɵtext(0);
102
- } if (rf & 2) {
103
- const dataItem_r8 = ctx.$implicit;
104
- i0.ɵɵtextInterpolate1(" ", (dataItem_r8 == null ? null : dataItem_r8.ToolTitle) || (dataItem_r8 == null ? null : dataItem_r8.ToolName) || "Select a tool...", " ");
105
- } }
106
- function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_29_Conditional_3_Template(rf, ctx) { if (rf & 1) {
107
- i0.ɵɵelementStart(0, "span", 39);
98
+ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_30_Conditional_3_Template(rf, ctx) { if (rf & 1) {
99
+ i0.ɵɵelementStart(0, "span", 38);
108
100
  i0.ɵɵtext(1);
109
101
  i0.ɵɵelementEnd();
110
102
  } if (rf & 2) {
111
- const dataItem_r9 = i0.ɵɵnextContext().$implicit;
103
+ const dataItem_r8 = i0.ɵɵnextContext().$implicit;
112
104
  i0.ɵɵadvance();
113
- i0.ɵɵtextInterpolate(dataItem_r9.ToolDescription);
105
+ i0.ɵɵtextInterpolate(dataItem_r8.ToolDescription);
114
106
  } }
115
- function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_29_Template(rf, ctx) { if (rf & 1) {
116
- i0.ɵɵelementStart(0, "div", 42)(1, "span", 37);
107
+ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_30_Template(rf, ctx) { if (rf & 1) {
108
+ i0.ɵɵelementStart(0, "div", 41)(1, "span", 36);
117
109
  i0.ɵɵtext(2);
118
110
  i0.ɵɵelementEnd();
119
- i0.ɵɵconditionalCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_29_Conditional_3_Template, 2, 1, "span", 39);
111
+ i0.ɵɵconditionalCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_30_Conditional_3_Template, 2, 1, "span", 38);
120
112
  i0.ɵɵelementEnd();
121
113
  } if (rf & 2) {
122
- const dataItem_r9 = ctx.$implicit;
114
+ const dataItem_r8 = ctx.$implicit;
123
115
  i0.ɵɵadvance(2);
124
- i0.ɵɵtextInterpolate(dataItem_r9.ToolTitle || dataItem_r9.ToolName);
116
+ i0.ɵɵtextInterpolate(dataItem_r8.ToolTitle || dataItem_r8.ToolName);
125
117
  i0.ɵɵadvance();
126
- i0.ɵɵconditional(dataItem_r9.ToolDescription ? 3 : -1);
118
+ i0.ɵɵconditional(dataItem_r8.ToolDescription ? 3 : -1);
127
119
  } }
128
- function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_30_Template(rf, ctx) { if (rf & 1) {
120
+ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_32_Template(rf, ctx) { if (rf & 1) {
129
121
  i0.ɵɵelementStart(0, "span", 30);
130
122
  i0.ɵɵtext(1, "Select a server first");
131
123
  i0.ɵɵelementEnd();
132
124
  } }
133
125
  function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template(rf, ctx) { if (rf & 1) {
134
126
  const _r5 = i0.ɵɵgetCurrentView();
135
- i0.ɵɵelementStart(0, "div", 16)(1, "div", 21)(2, "div", 22)(3, "label", 23);
136
- i0.ɵɵelement(4, "i", 24);
127
+ i0.ɵɵelementStart(0, "div", 17)(1, "div", 22)(2, "div", 23)(3, "label", 24);
128
+ i0.ɵɵelement(4, "i", 25);
137
129
  i0.ɵɵtext(5, " Server ");
138
- i0.ɵɵelementStart(6, "span", 25);
130
+ i0.ɵɵelementStart(6, "span", 26);
139
131
  i0.ɵɵtext(7, "*");
140
132
  i0.ɵɵelementEnd()();
141
- i0.ɵɵelementStart(8, "kendo-dropdownlist", 26);
142
- i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_kendo_dropdownlist_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ServerID, $event) || (ctx_r1.ServerID = $event); return i0.ɵɵresetView($event); });
143
- i0.ɵɵlistener("valueChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_kendo_dropdownlist_valueChange_8_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onServerChange()); })("filterChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_kendo_dropdownlist_filterChange_8_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onServerFilterChange($event)); });
144
- i0.ɵɵtemplate(9, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_9_Template, 5, 4, "ng-template", 27);
133
+ i0.ɵɵelementStart(8, "mj-dropdown", 27);
134
+ i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ServerID, $event) || (ctx_r1.ServerID = $event); return i0.ɵɵresetView($event); });
135
+ i0.ɵɵlistener("ValueChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_ValueChange_8_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onServerChange()); })("FilterChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_FilterChange_8_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onServerFilterChange($event)); });
136
+ i0.ɵɵtemplate(9, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_9_Template, 5, 4, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
145
137
  i0.ɵɵelementEnd()();
146
- i0.ɵɵelementStart(10, "div", 22)(11, "label", 23);
147
- i0.ɵɵelement(12, "i", 28);
148
- i0.ɵɵtext(13, " Connection ");
149
- i0.ɵɵelementStart(14, "span", 25);
150
- i0.ɵɵtext(15, "*");
138
+ i0.ɵɵelementStart(11, "div", 23)(12, "label", 24);
139
+ i0.ɵɵelement(13, "i", 28);
140
+ i0.ɵɵtext(14, " Connection ");
141
+ i0.ɵɵelementStart(15, "span", 26);
142
+ i0.ɵɵtext(16, "*");
151
143
  i0.ɵɵelementEnd()();
152
- i0.ɵɵelementStart(16, "kendo-dropdownlist", 29);
153
- i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_kendo_dropdownlist_ngModelChange_16_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ConnectionID, $event) || (ctx_r1.ConnectionID = $event); return i0.ɵɵresetView($event); });
154
- i0.ɵɵlistener("valueChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_kendo_dropdownlist_valueChange_16_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onConnectionChange()); })("filterChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_kendo_dropdownlist_filterChange_16_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onConnectionFilterChange($event)); });
155
- i0.ɵɵtemplate(17, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_17_Template, 4, 2, "ng-template", 27);
144
+ i0.ɵɵelementStart(17, "mj-dropdown", 29);
145
+ i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_ngModelChange_17_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ConnectionID, $event) || (ctx_r1.ConnectionID = $event); return i0.ɵɵresetView($event); });
146
+ i0.ɵɵlistener("ValueChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_ValueChange_17_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onConnectionChange()); })("FilterChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_FilterChange_17_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onConnectionFilterChange($event)); });
147
+ i0.ɵɵtemplate(18, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_18_Template, 4, 2, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
156
148
  i0.ɵɵelementEnd();
157
- i0.ɵɵconditionalCreate(18, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_18_Template, 2, 0, "span", 30);
158
- i0.ɵɵconditionalCreate(19, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_19_Template, 3, 1, "span", 31);
159
- i0.ɵɵconditionalCreate(20, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_20_Template, 3, 0, "span", 32);
149
+ i0.ɵɵconditionalCreate(20, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_20_Template, 2, 0, "span", 30);
150
+ i0.ɵɵconditionalCreate(21, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_21_Template, 3, 1, "span", 31);
151
+ i0.ɵɵconditionalCreate(22, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_22_Template, 3, 0, "span", 32);
160
152
  i0.ɵɵelementEnd();
161
- i0.ɵɵelementStart(21, "div", 22)(22, "label", 23);
162
- i0.ɵɵelement(23, "i", 33);
163
- i0.ɵɵtext(24, " Tool ");
164
- i0.ɵɵelementStart(25, "span", 25);
165
- i0.ɵɵtext(26, "*");
153
+ i0.ɵɵelementStart(23, "div", 23)(24, "label", 24);
154
+ i0.ɵɵelement(25, "i", 33);
155
+ i0.ɵɵtext(26, " Tool ");
156
+ i0.ɵɵelementStart(27, "span", 26);
157
+ i0.ɵɵtext(28, "*");
166
158
  i0.ɵɵelementEnd()();
167
- i0.ɵɵelementStart(27, "kendo-dropdownlist", 34);
168
- i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_kendo_dropdownlist_ngModelChange_27_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ToolID, $event) || (ctx_r1.ToolID = $event); return i0.ɵɵresetView($event); });
169
- i0.ɵɵlistener("valueChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_kendo_dropdownlist_valueChange_27_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onToolChange()); })("filterChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_kendo_dropdownlist_filterChange_27_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onToolFilterChange($event)); });
170
- i0.ɵɵtemplate(28, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_28_Template, 1, 1, "ng-template", 35)(29, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_29_Template, 4, 2, "ng-template", 27);
159
+ i0.ɵɵelementStart(29, "mj-dropdown", 34);
160
+ i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_ngModelChange_29_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ToolID, $event) || (ctx_r1.ToolID = $event); return i0.ɵɵresetView($event); });
161
+ i0.ɵɵlistener("ValueChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_ValueChange_29_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onToolChange()); })("FilterChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_FilterChange_29_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onToolFilterChange($event)); });
162
+ i0.ɵɵtemplate(30, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_30_Template, 4, 2, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
171
163
  i0.ɵɵelementEnd();
172
- i0.ɵɵconditionalCreate(30, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_30_Template, 2, 0, "span", 30);
164
+ i0.ɵɵconditionalCreate(32, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_32_Template, 2, 0, "span", 30);
173
165
  i0.ɵɵelementEnd()()();
174
166
  } if (rf & 2) {
175
167
  const ctx_r1 = i0.ɵɵnextContext(2);
176
168
  i0.ɵɵadvance(8);
177
- i0.ɵɵproperty("data", ctx_r1.DisplayServers)("textField", "Name")("valueField", "ID")("valuePrimitive", true);
169
+ i0.ɵɵproperty("Data", ctx_r1.DisplayServers)("ValuePrimitive", true);
178
170
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ServerID);
179
- i0.ɵɵproperty("filterable", true);
180
- i0.ɵɵadvance(8);
181
- i0.ɵɵproperty("data", ctx_r1.DisplayConnections)("textField", "Name")("valueField", "ID")("valuePrimitive", true);
171
+ i0.ɵɵproperty("Filterable", true);
172
+ i0.ɵɵadvance(9);
173
+ i0.ɵɵproperty("Data", ctx_r1.DisplayConnections)("ValuePrimitive", true);
182
174
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ConnectionID);
183
- i0.ɵɵproperty("disabled", !ctx_r1.ServerID || ctx_r1.NoConnectionsWarning !== null)("filterable", true);
184
- i0.ɵɵadvance(2);
185
- i0.ɵɵconditional(!ctx_r1.ServerID ? 18 : -1);
175
+ i0.ɵɵproperty("Disabled", !ctx_r1.ServerID || ctx_r1.NoConnectionsWarning !== null)("Filterable", true);
176
+ i0.ɵɵadvance(3);
177
+ i0.ɵɵconditional(!ctx_r1.ServerID ? 20 : -1);
186
178
  i0.ɵɵadvance();
187
- i0.ɵɵconditional(ctx_r1.NoConnectionsWarning ? 19 : -1);
179
+ i0.ɵɵconditional(ctx_r1.NoConnectionsWarning ? 21 : -1);
188
180
  i0.ɵɵadvance();
189
- i0.ɵɵconditional(ctx_r1.FilteredConnections.length === 1 && ctx_r1.ConnectionID ? 20 : -1);
181
+ i0.ɵɵconditional(ctx_r1.FilteredConnections.length === 1 && ctx_r1.ConnectionID ? 22 : -1);
190
182
  i0.ɵɵadvance(7);
191
- i0.ɵɵproperty("data", ctx_r1.DisplayTools)("textField", "ToolTitle")("valueField", "ID")("valuePrimitive", true);
183
+ i0.ɵɵproperty("Data", ctx_r1.DisplayTools)("ValuePrimitive", true);
192
184
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ToolID);
193
- i0.ɵɵproperty("disabled", !ctx_r1.ServerID)("filterable", true);
185
+ i0.ɵɵproperty("Disabled", !ctx_r1.ServerID)("Filterable", true);
194
186
  i0.ɵɵadvance(3);
195
- i0.ɵɵconditional(!ctx_r1.ServerID ? 30 : -1);
187
+ i0.ɵɵconditional(!ctx_r1.ServerID ? 32 : -1);
196
188
  } }
197
189
  function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_6_Template(rf, ctx) { if (rf & 1) {
198
- i0.ɵɵelementStart(0, "p", 46);
190
+ i0.ɵɵelementStart(0, "p", 45);
199
191
  i0.ɵɵtext(1);
200
192
  i0.ɵɵelementEnd();
201
193
  } if (rf & 2) {
@@ -204,135 +196,135 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_6_T
204
196
  i0.ɵɵtextInterpolate(ctx_r1.SelectedTool == null ? null : ctx_r1.SelectedTool.ToolDescription);
205
197
  } }
206
198
  function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_14_Template(rf, ctx) { if (rf & 1) {
207
- i0.ɵɵelementStart(0, "div", 49);
208
- i0.ɵɵelement(1, "i", 51);
199
+ i0.ɵɵelementStart(0, "div", 48);
200
+ i0.ɵɵelement(1, "i", 50);
209
201
  i0.ɵɵelementStart(2, "p");
210
202
  i0.ɵɵtext(3, "This tool requires no parameters.");
211
203
  i0.ɵɵelementEnd()();
212
204
  } }
213
205
  function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
214
- i0.ɵɵelementStart(0, "span", 25);
206
+ i0.ɵɵelementStart(0, "span", 26);
215
207
  i0.ɵɵtext(1, "*");
216
208
  i0.ɵɵelementEnd();
217
209
  } }
218
210
  function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_4_Template(rf, ctx) { if (rf & 1) {
219
- i0.ɵɵelementStart(0, "p", 56);
211
+ i0.ɵɵelementStart(0, "p", 55);
220
212
  i0.ɵɵtext(1);
221
213
  i0.ɵɵelementEnd();
222
214
  } if (rf & 2) {
223
- const config_r10 = i0.ɵɵnextContext().$implicit;
215
+ const config_r9 = i0.ɵɵnextContext().$implicit;
224
216
  i0.ɵɵadvance();
225
- i0.ɵɵtextInterpolate(config_r10.description);
217
+ i0.ɵɵtextInterpolate(config_r9.description);
226
218
  } }
227
219
  function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
228
- const _r11 = i0.ɵɵgetCurrentView();
229
- i0.ɵɵelementStart(0, "kendo-dropdownlist", 60);
230
- i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_5_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r11); const config_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.ParameterValues[config_r10.name], $event) || (ctx_r1.ParameterValues[config_r10.name] = $event); return i0.ɵɵresetView($event); });
231
- i0.ɵɵlistener("valueChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_5_Template_kendo_dropdownlist_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r11); const config_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange(config_r10.name, $event)); });
220
+ const _r10 = i0.ɵɵgetCurrentView();
221
+ i0.ɵɵelementStart(0, "mj-dropdown", 59);
222
+ i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_5_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const config_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.ParameterValues[config_r9.name], $event) || (ctx_r1.ParameterValues[config_r9.name] = $event); return i0.ɵɵresetView($event); });
223
+ i0.ɵɵlistener("ValueChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_5_Template_mj_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const config_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange(config_r9.name, $event)); });
232
224
  i0.ɵɵelementEnd();
233
225
  } if (rf & 2) {
234
- const config_r10 = i0.ɵɵnextContext().$implicit;
226
+ const config_r9 = i0.ɵɵnextContext().$implicit;
235
227
  const ctx_r1 = i0.ɵɵnextContext(4);
236
- i0.ɵɵproperty("data", config_r10.enumValues)("valuePrimitive", true);
237
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[config_r10.name]);
228
+ i0.ɵɵproperty("Data", config_r9.enumValues)("ValuePrimitive", true);
229
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[config_r9.name]);
238
230
  } }
239
231
  function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
240
- const _r12 = i0.ɵɵgetCurrentView();
241
- i0.ɵɵelementStart(0, "div", 58)(1, "input", 61);
242
- i0.ɵɵlistener("change", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_6_Template_input_change_1_listener($event) { i0.ɵɵrestoreView(_r12); const config_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange(config_r10.name, $event.target.checked)); });
232
+ const _r11 = i0.ɵɵgetCurrentView();
233
+ i0.ɵɵelementStart(0, "div", 57)(1, "input", 60);
234
+ i0.ɵɵlistener("change", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_6_Template_input_change_1_listener($event) { i0.ɵɵrestoreView(_r11); const config_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange(config_r9.name, $event.target.checked)); });
243
235
  i0.ɵɵelementEnd();
244
- i0.ɵɵelementStart(2, "label", 62);
236
+ i0.ɵɵelementStart(2, "label", 61);
245
237
  i0.ɵɵtext(3, "Enabled");
246
238
  i0.ɵɵelementEnd()();
247
239
  } if (rf & 2) {
248
- const config_r10 = i0.ɵɵnextContext().$implicit;
240
+ const config_r9 = i0.ɵɵnextContext().$implicit;
249
241
  const ctx_r1 = i0.ɵɵnextContext(4);
250
242
  i0.ɵɵadvance();
251
- i0.ɵɵproperty("id", "param-" + config_r10.name)("checked", ctx_r1.ParameterValues[config_r10.name]);
243
+ i0.ɵɵproperty("id", "param-" + config_r9.name)("checked", ctx_r1.ParameterValues[config_r9.name]);
252
244
  i0.ɵɵadvance();
253
- i0.ɵɵproperty("for", "param-" + config_r10.name);
245
+ i0.ɵɵproperty("for", "param-" + config_r9.name);
254
246
  } }
255
247
  function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_7_Template(rf, ctx) { if (rf & 1) {
256
- const _r13 = i0.ɵɵgetCurrentView();
257
- i0.ɵɵelementStart(0, "kendo-numerictextbox", 63);
258
- i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_7_Template_kendo_numerictextbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r13); const config_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.ParameterValues[config_r10.name], $event) || (ctx_r1.ParameterValues[config_r10.name] = $event); return i0.ɵɵresetView($event); });
259
- i0.ɵɵlistener("valueChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_7_Template_kendo_numerictextbox_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r13); const config_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange(config_r10.name, $event)); });
248
+ const _r12 = i0.ɵɵgetCurrentView();
249
+ i0.ɵɵelementStart(0, "mj-numeric-input", 62);
250
+ i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_7_Template_mj_numeric_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r12); const config_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.ParameterValues[config_r9.name], $event) || (ctx_r1.ParameterValues[config_r9.name] = $event); return i0.ɵɵresetView($event); });
251
+ i0.ɵɵlistener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_7_Template_mj_numeric_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r12); const config_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange(config_r9.name, $event)); });
260
252
  i0.ɵɵelementEnd();
261
253
  } if (rf & 2) {
262
- const config_r10 = i0.ɵɵnextContext().$implicit;
254
+ const config_r9 = i0.ɵɵnextContext().$implicit;
263
255
  const ctx_r1 = i0.ɵɵnextContext(4);
264
- i0.ɵɵproperty("format", config_r10.type === "integer" ? "n0" : "n")("step", config_r10.type === "integer" ? 1 : 0.1);
265
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[config_r10.name]);
256
+ i0.ɵɵproperty("Step", config_r9.type === "integer" ? 1 : 0.1);
257
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[config_r9.name]);
266
258
  } }
267
259
  function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_8_Template(rf, ctx) { if (rf & 1) {
268
- const _r14 = i0.ɵɵgetCurrentView();
269
- i0.ɵɵelementStart(0, "textarea", 64);
270
- i0.ɵɵlistener("input", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_8_Template_textarea_input_0_listener($event) { i0.ɵɵrestoreView(_r14); const config_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onTextareaChange(config_r10.name, $event.target.value, config_r10)); });
260
+ const _r13 = i0.ɵɵgetCurrentView();
261
+ i0.ɵɵelementStart(0, "textarea", 63);
262
+ i0.ɵɵlistener("input", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_8_Template_textarea_input_0_listener($event) { i0.ɵɵrestoreView(_r13); const config_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onTextareaChange(config_r9.name, $event.target.value, config_r9)); });
271
263
  i0.ɵɵelementEnd();
272
264
  i0.ɵɵelementStart(1, "span", 30);
273
265
  i0.ɵɵtext(2, "Enter valid JSON");
274
266
  i0.ɵɵelementEnd();
275
267
  } if (rf & 2) {
276
- const config_r10 = i0.ɵɵnextContext().$implicit;
268
+ const config_r9 = i0.ɵɵnextContext().$implicit;
277
269
  const ctx_r1 = i0.ɵɵnextContext(4);
278
- i0.ɵɵproperty("placeholder", i0.ɵɵinterpolate1("Enter JSON ", config_r10.type, "..."))("value", ctx_r1.getTextareaValue(config_r10.name));
270
+ i0.ɵɵproperty("placeholder", i0.ɵɵinterpolate1("Enter JSON ", config_r9.type, "..."))("value", ctx_r1.getTextareaValue(config_r9.name));
279
271
  } }
280
272
  function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
281
- const _r15 = i0.ɵɵgetCurrentView();
282
- i0.ɵɵelementStart(0, "textarea", 67);
283
- i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_0_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r15); const config_r10 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.ParameterValues[config_r10.name], $event) || (ctx_r1.ParameterValues[config_r10.name] = $event); return i0.ɵɵresetView($event); });
284
- i0.ɵɵlistener("input", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_0_Template_textarea_input_0_listener($event) { i0.ɵɵrestoreView(_r15); const config_r10 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange(config_r10.name, $event.target.value)); });
273
+ const _r14 = i0.ɵɵgetCurrentView();
274
+ i0.ɵɵelementStart(0, "textarea", 66);
275
+ i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_0_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r14); const config_r9 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.ParameterValues[config_r9.name], $event) || (ctx_r1.ParameterValues[config_r9.name] = $event); return i0.ɵɵresetView($event); });
276
+ i0.ɵɵlistener("input", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_0_Template_textarea_input_0_listener($event) { i0.ɵɵrestoreView(_r14); const config_r9 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange(config_r9.name, $event.target.value)); });
285
277
  i0.ɵɵelementEnd();
286
278
  } if (rf & 2) {
287
- const config_r10 = i0.ɵɵnextContext(2).$implicit;
279
+ const config_r9 = i0.ɵɵnextContext(2).$implicit;
288
280
  const ctx_r1 = i0.ɵɵnextContext(4);
289
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[config_r10.name]);
290
- i0.ɵɵproperty("placeholder", config_r10.description || "Enter value...");
281
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[config_r9.name]);
282
+ i0.ɵɵproperty("placeholder", config_r9.description || "Enter value...");
291
283
  } }
292
284
  function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
293
- const _r16 = i0.ɵɵgetCurrentView();
294
- i0.ɵɵelementStart(0, "kendo-textbox", 68);
295
- i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_1_Template_kendo_textbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r16); const config_r10 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.ParameterValues[config_r10.name], $event) || (ctx_r1.ParameterValues[config_r10.name] = $event); return i0.ɵɵresetView($event); });
296
- i0.ɵɵlistener("valueChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_1_Template_kendo_textbox_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r16); const config_r10 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange(config_r10.name, $event)); });
285
+ const _r15 = i0.ɵɵgetCurrentView();
286
+ i0.ɵɵelementStart(0, "input", 67);
287
+ i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_1_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r15); const config_r9 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.ParameterValues[config_r9.name], $event) || (ctx_r1.ParameterValues[config_r9.name] = $event); return i0.ɵɵresetView($event); });
288
+ i0.ɵɵlistener("input", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_1_Template_input_input_0_listener($event) { i0.ɵɵrestoreView(_r15); const config_r9 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange(config_r9.name, $event.target.value)); });
297
289
  i0.ɵɵelementEnd();
298
290
  } if (rf & 2) {
299
- const config_r10 = i0.ɵɵnextContext(2).$implicit;
291
+ const config_r9 = i0.ɵɵnextContext(2).$implicit;
300
292
  const ctx_r1 = i0.ɵɵnextContext(4);
301
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[config_r10.name]);
302
- i0.ɵɵproperty("placeholder", config_r10.description || "Enter value...");
293
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[config_r9.name]);
294
+ i0.ɵɵproperty("placeholder", config_r9.description || "Enter value...");
303
295
  } }
304
296
  function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Template(rf, ctx) { if (rf & 1) {
305
- i0.ɵɵconditionalCreate(0, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_0_Template, 1, 2, "textarea", 65)(1, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_1_Template, 1, 2, "kendo-textbox", 66);
297
+ i0.ɵɵconditionalCreate(0, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_0_Template, 1, 2, "textarea", 64)(1, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_1_Template, 1, 2, "input", 65);
306
298
  } if (rf & 2) {
307
- const config_r10 = i0.ɵɵnextContext().$implicit;
299
+ const config_r9 = i0.ɵɵnextContext().$implicit;
308
300
  const ctx_r1 = i0.ɵɵnextContext(4);
309
- i0.ɵɵconditional(ctx_r1.isTextarea(config_r10) ? 0 : 1);
301
+ i0.ɵɵconditional(ctx_r1.isTextarea(config_r9) ? 0 : 1);
310
302
  } }
311
303
  function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Template(rf, ctx) { if (rf & 1) {
312
- i0.ɵɵelementStart(0, "div", 54)(1, "label", 55);
304
+ i0.ɵɵelementStart(0, "div", 53)(1, "label", 54);
313
305
  i0.ɵɵtext(2);
314
- i0.ɵɵconditionalCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_3_Template, 2, 0, "span", 25);
306
+ i0.ɵɵconditionalCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_3_Template, 2, 0, "span", 26);
315
307
  i0.ɵɵelementEnd();
316
- i0.ɵɵconditionalCreate(4, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_4_Template, 2, 1, "p", 56);
317
- i0.ɵɵconditionalCreate(5, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_5_Template, 1, 3, "kendo-dropdownlist", 57)(6, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_6_Template, 4, 3, "div", 58)(7, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_7_Template, 1, 3, "kendo-numerictextbox", 59)(8, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_8_Template, 3, 3)(9, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Template, 2, 1);
308
+ i0.ɵɵconditionalCreate(4, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_4_Template, 2, 1, "p", 55);
309
+ i0.ɵɵconditionalCreate(5, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_5_Template, 1, 3, "mj-dropdown", 56)(6, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_6_Template, 4, 3, "div", 57)(7, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_7_Template, 1, 2, "mj-numeric-input", 58)(8, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_8_Template, 3, 3)(9, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Template, 2, 1);
318
310
  i0.ɵɵelementEnd();
319
311
  } if (rf & 2) {
320
- const config_r10 = ctx.$implicit;
321
- i0.ɵɵclassProp("required", config_r10.required);
312
+ const config_r9 = ctx.$implicit;
313
+ i0.ɵɵclassProp("required", config_r9.required);
322
314
  i0.ɵɵadvance(2);
323
- i0.ɵɵtextInterpolate1(" ", config_r10.name, " ");
315
+ i0.ɵɵtextInterpolate1(" ", config_r9.name, " ");
324
316
  i0.ɵɵadvance();
325
- i0.ɵɵconditional(config_r10.required ? 3 : -1);
317
+ i0.ɵɵconditional(config_r9.required ? 3 : -1);
326
318
  i0.ɵɵadvance();
327
- i0.ɵɵconditional(config_r10.description ? 4 : -1);
319
+ i0.ɵɵconditional(config_r9.description ? 4 : -1);
328
320
  i0.ɵɵadvance();
329
- i0.ɵɵconditional(config_r10.enumValues.length > 0 ? 5 : config_r10.type === "boolean" ? 6 : config_r10.type === "number" || config_r10.type === "integer" ? 7 : config_r10.type === "array" || config_r10.type === "object" ? 8 : 9);
321
+ i0.ɵɵconditional(config_r9.enumValues.length > 0 ? 5 : config_r9.type === "boolean" ? 6 : config_r9.type === "number" || config_r9.type === "integer" ? 7 : config_r9.type === "array" || config_r9.type === "object" ? 8 : 9);
330
322
  } }
331
323
  function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_Template(rf, ctx) { if (rf & 1) {
332
- i0.ɵɵelementStart(0, "div", 50)(1, "h4", 52);
324
+ i0.ɵɵelementStart(0, "div", 49)(1, "h4", 51);
333
325
  i0.ɵɵtext(2, "Parameters");
334
326
  i0.ɵɵelementEnd();
335
- i0.ɵɵrepeaterCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Template, 10, 6, "div", 53, _forTrack0);
327
+ i0.ɵɵrepeaterCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Template, 10, 6, "div", 52, _forTrack0);
336
328
  i0.ɵɵelementEnd();
337
329
  } if (rf & 2) {
338
330
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -340,21 +332,21 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_
340
332
  i0.ɵɵrepeater(ctx_r1.ParameterConfigs);
341
333
  } }
342
334
  function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Template(rf, ctx) { if (rf & 1) {
343
- i0.ɵɵelementStart(0, "div", 16)(1, "div", 43)(2, "div", 44)(3, "h3", 45);
335
+ i0.ɵɵelementStart(0, "div", 17)(1, "div", 42)(2, "div", 43)(3, "h3", 44);
344
336
  i0.ɵɵelement(4, "i", 33);
345
337
  i0.ɵɵtext(5);
346
338
  i0.ɵɵelementEnd();
347
- i0.ɵɵconditionalCreate(6, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_6_Template, 2, 1, "p", 46);
339
+ i0.ɵɵconditionalCreate(6, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_6_Template, 2, 1, "p", 45);
348
340
  i0.ɵɵelementEnd();
349
- i0.ɵɵelementStart(7, "div", 47)(8, "span", 48);
350
- i0.ɵɵelement(9, "i", 24);
341
+ i0.ɵɵelementStart(7, "div", 46)(8, "span", 47);
342
+ i0.ɵɵelement(9, "i", 25);
351
343
  i0.ɵɵtext(10);
352
344
  i0.ɵɵelementEnd();
353
- i0.ɵɵelementStart(11, "span", 48);
345
+ i0.ɵɵelementStart(11, "span", 47);
354
346
  i0.ɵɵelement(12, "i", 28);
355
347
  i0.ɵɵtext(13);
356
348
  i0.ɵɵelementEnd()()();
357
- i0.ɵɵconditionalCreate(14, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_14_Template, 4, 0, "div", 49)(15, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_Template, 5, 0, "div", 50);
349
+ i0.ɵɵconditionalCreate(14, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_14_Template, 4, 0, "div", 48)(15, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_Template, 5, 0, "div", 49);
358
350
  i0.ɵɵelementEnd();
359
351
  } if (rf & 2) {
360
352
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -370,19 +362,19 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Template(rf, ct
370
362
  i0.ɵɵconditional(ctx_r1.ParameterConfigs.length === 0 ? 14 : 15);
371
363
  } }
372
364
  function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_3_Template(rf, ctx) { if (rf & 1) {
373
- i0.ɵɵelement(0, "i", 51);
374
- i0.ɵɵelementStart(1, "span", 78);
365
+ i0.ɵɵelement(0, "i", 50);
366
+ i0.ɵɵelementStart(1, "span", 77);
375
367
  i0.ɵɵtext(2, "Execution Successful");
376
368
  i0.ɵɵelementEnd();
377
369
  } }
378
370
  function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_4_Template(rf, ctx) { if (rf & 1) {
379
- i0.ɵɵelement(0, "i", 79);
380
- i0.ɵɵelementStart(1, "span", 78);
371
+ i0.ɵɵelement(0, "i", 78);
372
+ i0.ɵɵelementStart(1, "span", 77);
381
373
  i0.ɵɵtext(2, "Execution Failed");
382
374
  i0.ɵɵelementEnd();
383
375
  } }
384
376
  function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_5_Template(rf, ctx) { if (rf & 1) {
385
- i0.ɵɵelementStart(0, "span", 71);
377
+ i0.ɵɵelementStart(0, "span", 70);
386
378
  i0.ɵɵtext(1);
387
379
  i0.ɵɵelementEnd();
388
380
  } if (rf & 2) {
@@ -391,11 +383,11 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_5_T
391
383
  i0.ɵɵtextInterpolate1("", ctx_r1.ExecutionResult == null ? null : ctx_r1.ExecutionResult.DurationMs, "ms");
392
384
  } }
393
385
  function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_22_Template(rf, ctx) { if (rf & 1) {
394
- i0.ɵɵelementStart(0, "div", 76)(1, "h4");
395
- i0.ɵɵelement(2, "i", 40);
386
+ i0.ɵɵelementStart(0, "div", 75)(1, "h4");
387
+ i0.ɵɵelement(2, "i", 39);
396
388
  i0.ɵɵtext(3, " Error");
397
389
  i0.ɵɵelementEnd();
398
- i0.ɵɵelementStart(4, "pre", 80);
390
+ i0.ɵɵelementStart(4, "pre", 79);
399
391
  i0.ɵɵtext(5);
400
392
  i0.ɵɵelementEnd()();
401
393
  } if (rf & 2) {
@@ -404,17 +396,17 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_22_
404
396
  i0.ɵɵtextInterpolate(ctx_r1.ExecutionResult == null ? null : ctx_r1.ExecutionResult.ErrorMessage);
405
397
  } }
406
398
  function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_23_Template(rf, ctx) { if (rf & 1) {
407
- const _r17 = i0.ɵɵgetCurrentView();
408
- i0.ɵɵelementStart(0, "div", 77)(1, "div", 81)(2, "h4");
409
- i0.ɵɵelement(3, "i", 82);
399
+ const _r16 = i0.ɵɵgetCurrentView();
400
+ i0.ɵɵelementStart(0, "div", 76)(1, "div", 80)(2, "h4");
401
+ i0.ɵɵelement(3, "i", 81);
410
402
  i0.ɵɵtext(4, " Result");
411
403
  i0.ɵɵelementEnd();
412
- i0.ɵɵelementStart(5, "button", 83);
413
- i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_23_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.copyResult()); });
414
- i0.ɵɵelement(6, "i", 84);
404
+ i0.ɵɵelementStart(5, "button", 82);
405
+ i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_23_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.copyResult()); });
406
+ i0.ɵɵelement(6, "i", 83);
415
407
  i0.ɵɵelementEnd()();
416
- i0.ɵɵelementStart(7, "div", 85);
417
- i0.ɵɵelement(8, "mj-code-editor", 86);
408
+ i0.ɵɵelementStart(7, "div", 84);
409
+ i0.ɵɵelement(8, "mj-code-editor", 85);
418
410
  i0.ɵɵelementEnd()();
419
411
  } if (rf & 2) {
420
412
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -422,30 +414,30 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_23_
422
414
  i0.ɵɵproperty("ngModel", ctx_r1.FormattedResult)("language", "json")("readonly", true);
423
415
  } }
424
416
  function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Template(rf, ctx) { if (rf & 1) {
425
- i0.ɵɵelementStart(0, "div", 17)(1, "div", 69)(2, "div", 70);
417
+ i0.ɵɵelementStart(0, "div", 18)(1, "div", 68)(2, "div", 69);
426
418
  i0.ɵɵconditionalCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_3_Template, 3, 0)(4, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_4_Template, 3, 0);
427
- i0.ɵɵconditionalCreate(5, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_5_Template, 2, 1, "span", 71);
419
+ i0.ɵɵconditionalCreate(5, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_5_Template, 2, 1, "span", 70);
428
420
  i0.ɵɵelementEnd();
429
- i0.ɵɵelementStart(6, "div", 72)(7, "div", 73)(8, "span", 74);
421
+ i0.ɵɵelementStart(6, "div", 71)(7, "div", 72)(8, "span", 73);
430
422
  i0.ɵɵtext(9, "Tool:");
431
423
  i0.ɵɵelementEnd();
432
- i0.ɵɵelementStart(10, "span", 75);
424
+ i0.ɵɵelementStart(10, "span", 74);
433
425
  i0.ɵɵtext(11);
434
426
  i0.ɵɵelementEnd()();
435
- i0.ɵɵelementStart(12, "div", 73)(13, "span", 74);
427
+ i0.ɵɵelementStart(12, "div", 72)(13, "span", 73);
436
428
  i0.ɵɵtext(14, "Server:");
437
429
  i0.ɵɵelementEnd();
438
- i0.ɵɵelementStart(15, "span", 75);
430
+ i0.ɵɵelementStart(15, "span", 74);
439
431
  i0.ɵɵtext(16);
440
432
  i0.ɵɵelementEnd()();
441
- i0.ɵɵelementStart(17, "div", 73)(18, "span", 74);
433
+ i0.ɵɵelementStart(17, "div", 72)(18, "span", 73);
442
434
  i0.ɵɵtext(19, "Connection:");
443
435
  i0.ɵɵelementEnd();
444
- i0.ɵɵelementStart(20, "span", 75);
436
+ i0.ɵɵelementStart(20, "span", 74);
445
437
  i0.ɵɵtext(21);
446
438
  i0.ɵɵelementEnd()()();
447
- i0.ɵɵconditionalCreate(22, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_22_Template, 6, 1, "div", 76);
448
- i0.ɵɵconditionalCreate(23, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_23_Template, 9, 3, "div", 77);
439
+ i0.ɵɵconditionalCreate(22, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_22_Template, 6, 1, "div", 75);
440
+ i0.ɵɵconditionalCreate(23, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_23_Template, 9, 3, "div", 76);
449
441
  i0.ɵɵelementEnd()();
450
442
  } if (rf & 2) {
451
443
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -467,14 +459,14 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Template(rf, ct
467
459
  i0.ɵɵconditional((ctx_r1.ExecutionResult == null ? null : ctx_r1.ExecutionResult.Result) ? 23 : -1);
468
460
  } }
469
461
  function MCPTestToolDialogComponent_Conditional_1_Case_31_Template(rf, ctx) { if (rf & 1) {
470
- const _r18 = i0.ɵɵgetCurrentView();
471
- i0.ɵɵelementStart(0, "button", 87);
472
- i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_31_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.proceedToConfig()); });
473
- i0.ɵɵelement(1, "i", 88);
462
+ const _r17 = i0.ɵɵgetCurrentView();
463
+ i0.ɵɵelementStart(0, "button", 86);
464
+ i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_31_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.proceedToConfig()); });
465
+ i0.ɵɵelement(1, "i", 87);
474
466
  i0.ɵɵtext(2, " Next ");
475
467
  i0.ɵɵelementEnd();
476
- i0.ɵɵelementStart(3, "button", 89);
477
- i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_31_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.closeDialog()); });
468
+ i0.ɵɵelementStart(3, "button", 88);
469
+ i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_31_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.closeDialog()); });
478
470
  i0.ɵɵtext(4, "Cancel");
479
471
  i0.ɵɵelementEnd();
480
472
  } if (rf & 2) {
@@ -482,22 +474,22 @@ function MCPTestToolDialogComponent_Conditional_1_Case_31_Template(rf, ctx) { if
482
474
  i0.ɵɵproperty("disabled", !ctx_r1.CanProceedToConfig);
483
475
  } }
484
476
  function MCPTestToolDialogComponent_Conditional_1_Case_32_Conditional_1_Template(rf, ctx) { if (rf & 1) {
485
- i0.ɵɵelement(0, "i", 91);
477
+ i0.ɵɵelement(0, "i", 90);
486
478
  i0.ɵɵtext(1, " Executing... ");
487
479
  } }
488
480
  function MCPTestToolDialogComponent_Conditional_1_Case_32_Conditional_2_Template(rf, ctx) { if (rf & 1) {
489
- i0.ɵɵelement(0, "i", 92);
481
+ i0.ɵɵelement(0, "i", 91);
490
482
  i0.ɵɵtext(1, " Execute Tool ");
491
483
  } }
492
484
  function MCPTestToolDialogComponent_Conditional_1_Case_32_Template(rf, ctx) { if (rf & 1) {
493
- const _r19 = i0.ɵɵgetCurrentView();
494
- i0.ɵɵelementStart(0, "button", 87);
495
- i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_32_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.executeTool()); });
485
+ const _r18 = i0.ɵɵgetCurrentView();
486
+ i0.ɵɵelementStart(0, "button", 86);
487
+ i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_32_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.executeTool()); });
496
488
  i0.ɵɵconditionalCreate(1, MCPTestToolDialogComponent_Conditional_1_Case_32_Conditional_1_Template, 2, 0)(2, MCPTestToolDialogComponent_Conditional_1_Case_32_Conditional_2_Template, 2, 0);
497
489
  i0.ɵɵelementEnd();
498
- i0.ɵɵelementStart(3, "button", 89);
499
- i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_32_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.goBack()); });
500
- i0.ɵɵelement(4, "i", 90);
490
+ i0.ɵɵelementStart(3, "button", 88);
491
+ i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_32_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.goBack()); });
492
+ i0.ɵɵelement(4, "i", 89);
501
493
  i0.ɵɵtext(5, " Back ");
502
494
  i0.ɵɵelementEnd();
503
495
  } if (rf & 2) {
@@ -507,60 +499,60 @@ function MCPTestToolDialogComponent_Conditional_1_Case_32_Template(rf, ctx) { if
507
499
  i0.ɵɵconditional(ctx_r1.IsExecuting ? 1 : 2);
508
500
  } }
509
501
  function MCPTestToolDialogComponent_Conditional_1_Case_33_Template(rf, ctx) { if (rf & 1) {
510
- const _r20 = i0.ɵɵgetCurrentView();
511
- i0.ɵɵelementStart(0, "button", 93);
512
- i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_33_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.runAgain()); });
513
- i0.ɵɵelement(1, "i", 94);
502
+ const _r19 = i0.ɵɵgetCurrentView();
503
+ i0.ɵɵelementStart(0, "button", 92);
504
+ i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_33_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.runAgain()); });
505
+ i0.ɵɵelement(1, "i", 93);
514
506
  i0.ɵɵtext(2, " Run Again ");
515
507
  i0.ɵɵelementEnd();
516
- i0.ɵɵelementStart(3, "button", 89);
517
- i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_33_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.goBack()); });
518
- i0.ɵɵelement(4, "i", 90);
508
+ i0.ɵɵelementStart(3, "button", 88);
509
+ i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_33_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.goBack()); });
510
+ i0.ɵɵelement(4, "i", 89);
519
511
  i0.ɵɵtext(5, " Edit Parameters ");
520
512
  i0.ɵɵelementEnd();
521
- i0.ɵɵelementStart(6, "button", 89);
522
- i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_33_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.closeDialog()); });
513
+ i0.ɵɵelementStart(6, "button", 88);
514
+ i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_33_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.closeDialog()); });
523
515
  i0.ɵɵtext(7, "Close");
524
516
  i0.ɵɵelementEnd();
525
517
  } }
526
518
  function MCPTestToolDialogComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
527
519
  const _r3 = i0.ɵɵgetCurrentView();
528
- i0.ɵɵelementStart(0, "div", 3);
529
- i0.ɵɵconditionalCreate(1, MCPTestToolDialogComponent_Conditional_1_Conditional_1_Template, 2, 2, "div", 4);
530
- i0.ɵɵelementStart(2, "div", 5)(3, "h2", 6);
531
- i0.ɵɵelement(4, "i", 7);
520
+ i0.ɵɵelementStart(0, "div", 4);
521
+ i0.ɵɵconditionalCreate(1, MCPTestToolDialogComponent_Conditional_1_Conditional_1_Template, 2, 2, "div", 5);
522
+ i0.ɵɵelementStart(2, "div", 6)(3, "h2", 7);
523
+ i0.ɵɵelement(4, "i", 8);
532
524
  i0.ɵɵtext(5, " Test MCP Tool ");
533
525
  i0.ɵɵelementEnd();
534
- i0.ɵɵelementStart(6, "button", 8);
526
+ i0.ɵɵelementStart(6, "button", 9);
535
527
  i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDialog()); });
536
- i0.ɵɵelement(7, "i", 9);
528
+ i0.ɵɵelement(7, "i", 10);
537
529
  i0.ɵɵelementEnd()();
538
- i0.ɵɵelementStart(8, "div", 10)(9, "div", 11)(10, "span", 12);
530
+ i0.ɵɵelementStart(8, "div", 11)(9, "div", 12)(10, "span", 13);
539
531
  i0.ɵɵtext(11, "1");
540
532
  i0.ɵɵelementEnd();
541
- i0.ɵɵelementStart(12, "span", 13);
533
+ i0.ɵɵelementStart(12, "span", 14);
542
534
  i0.ɵɵtext(13, "Select Tool");
543
535
  i0.ɵɵelementEnd()();
544
- i0.ɵɵelement(14, "div", 14);
545
- i0.ɵɵelementStart(15, "div", 11)(16, "span", 12);
536
+ i0.ɵɵelement(14, "div", 15);
537
+ i0.ɵɵelementStart(15, "div", 12)(16, "span", 13);
546
538
  i0.ɵɵtext(17, "2");
547
539
  i0.ɵɵelementEnd();
548
- i0.ɵɵelementStart(18, "span", 13);
540
+ i0.ɵɵelementStart(18, "span", 14);
549
541
  i0.ɵɵtext(19, "Configure");
550
542
  i0.ɵɵelementEnd()();
551
- i0.ɵɵelement(20, "div", 14);
552
- i0.ɵɵelementStart(21, "div", 11)(22, "span", 12);
543
+ i0.ɵɵelement(20, "div", 15);
544
+ i0.ɵɵelementStart(21, "div", 12)(22, "span", 13);
553
545
  i0.ɵɵtext(23, "3");
554
546
  i0.ɵɵelementEnd();
555
- i0.ɵɵelementStart(24, "span", 13);
547
+ i0.ɵɵelementStart(24, "span", 14);
556
548
  i0.ɵɵtext(25, "Results");
557
549
  i0.ɵɵelementEnd()()();
558
- i0.ɵɵelementStart(26, "div", 15);
559
- i0.ɵɵconditionalCreate(27, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template, 31, 24, "div", 16);
560
- i0.ɵɵconditionalCreate(28, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Template, 16, 5, "div", 16);
561
- i0.ɵɵconditionalCreate(29, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Template, 24, 11, "div", 17);
550
+ i0.ɵɵelementStart(26, "div", 16);
551
+ i0.ɵɵconditionalCreate(27, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template, 33, 18, "div", 17);
552
+ i0.ɵɵconditionalCreate(28, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Template, 16, 5, "div", 17);
553
+ i0.ɵɵconditionalCreate(29, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Template, 24, 11, "div", 18);
562
554
  i0.ɵɵelementEnd();
563
- i0.ɵɵelementStart(30, "div", 18);
555
+ i0.ɵɵelementStart(30, "div", 19);
564
556
  i0.ɵɵconditionalCreate(31, MCPTestToolDialogComponent_Conditional_1_Case_31_Template, 5, 1)(32, MCPTestToolDialogComponent_Conditional_1_Case_32_Template, 6, 2)(33, MCPTestToolDialogComponent_Conditional_1_Case_33_Template, 8, 0);
565
557
  i0.ɵɵelementEnd()();
566
558
  } if (rf & 2) {
@@ -1239,14 +1231,14 @@ export class MCPTestToolDialogComponent {
1239
1231
  static ɵfac = function MCPTestToolDialogComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MCPTestToolDialogComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef)); };
1240
1232
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MCPTestToolDialogComponent, selectors: [["mj-mcp-test-tool-dialog"]], hostBindings: function MCPTestToolDialogComponent_HostBindings(rf, ctx) { if (rf & 1) {
1241
1233
  i0.ɵɵlistener("mousemove", function MCPTestToolDialogComponent_mousemove_HostBindingHandler($event) { return ctx.onMouseMove($event); }, i0.ɵɵresolveDocument)("mouseup", function MCPTestToolDialogComponent_mouseup_HostBindingHandler() { return ctx.onMouseUp(); }, i0.ɵɵresolveDocument)("resize", function MCPTestToolDialogComponent_resize_HostBindingHandler() { return ctx.onWindowResize(); }, i0.ɵɵresolveWindow);
1242
- } }, inputs: { Visible: "Visible", Servers: "Servers", Connections: "Connections", Tools: "Tools", SelectedServerID: "SelectedServerID", SelectedConnectionID: "SelectedConnectionID", SelectedToolID: "SelectedToolID" }, outputs: { Close: "Close" }, standalone: false, decls: 2, vars: 2, consts: [[1, "panel-backdrop"], [1, "slide-out-panel", 3, "width", "mobile", "resizing"], [1, "panel-backdrop", 3, "click"], [1, "slide-out-panel"], ["title", "Drag to resize", 1, "resize-handle", 3, "active"], [1, "panel-header"], [1, "panel-title"], [1, "fa-solid", "fa-flask"], ["title", "Close", 1, "close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "step-indicator"], [1, "step"], [1, "step-number"], [1, "step-label"], [1, "step-connector"], [1, "panel-content"], [1, "step-content"], [1, "step-content", "results-step"], [1, "panel-actions"], ["title", "Drag to resize", 1, "resize-handle", 3, "mousedown"], [1, "resize-grip"], [1, "selection-form"], [1, "form-group"], [1, "form-label"], [1, "fa-solid", "fa-server"], [1, "required"], ["placeholder", "Select a server...", 3, "ngModelChange", "valueChange", "filterChange", "data", "textField", "valueField", "valuePrimitive", "ngModel", "filterable"], ["kendoDropDownListItemTemplate", ""], [1, "fa-solid", "fa-link"], ["placeholder", "Select a connection...", 3, "ngModelChange", "valueChange", "filterChange", "data", "textField", "valueField", "valuePrimitive", "ngModel", "disabled", "filterable"], [1, "field-hint"], [1, "field-error"], [1, "field-hint", "auto-selected"], [1, "fa-solid", "fa-wrench"], ["placeholder", "Select a tool...", 3, "ngModelChange", "valueChange", "filterChange", "data", "textField", "valueField", "valuePrimitive", "ngModel", "disabled", "filterable"], ["kendoDropDownListValueTemplate", ""], [1, "dropdown-item"], [1, "item-name"], [1, "item-status"], [1, "item-description"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "fa-solid", "fa-check"], [1, "dropdown-item", "tool-item"], [1, "tool-header"], [1, "tool-info"], [1, "tool-name"], [1, "tool-description"], [1, "tool-context"], [1, "context-item"], [1, "no-params"], [1, "parameters-form"], [1, "fa-solid", "fa-check-circle"], [1, "params-title"], [1, "param-group", 3, "required"], [1, "param-group"], [1, "param-label"], [1, "param-description"], [3, "data", "valuePrimitive", "ngModel"], [1, "checkbox-wrapper"], [3, "format", "step", "ngModel"], [3, "ngModelChange", "valueChange", "data", "valuePrimitive", "ngModel"], ["type", "checkbox", 3, "change", "id", "checked"], [3, "for"], [3, "ngModelChange", "valueChange", "format", "step", "ngModel"], ["rows", "4", 1, "json-input", 3, "input", "value", "placeholder"], ["rows", "3", 1, "text-input", 3, "ngModel", "placeholder"], [3, "ngModel", "placeholder"], ["rows", "3", 1, "text-input", 3, "ngModelChange", "input", "ngModel", "placeholder"], [3, "ngModelChange", "valueChange", "ngModel", "placeholder"], [1, "results-container"], [1, "result-header"], [1, "duration"], [1, "execution-info"], [1, "info-row"], [1, "info-label"], [1, "info-value"], [1, "error-panel"], [1, "result-panel", "fill-space"], [1, "result-status"], [1, "fa-solid", "fa-times-circle"], [1, "error-message"], [1, "result-panel-header"], [1, "fa-solid", "fa-code"], ["kendoButton", "", "fillMode", "flat", "title", "Copy to clipboard", 3, "click"], [1, "fa-solid", "fa-copy"], [1, "code-editor-container"], [3, "ngModel", "language", "readonly"], ["kendoButton", "", "themeColor", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-arrow-right"], ["kendoButton", "", "fillMode", "flat", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-play"], ["kendoButton", "", "themeColor", "primary", 3, "click"], [1, "fa-solid", "fa-redo"]], template: function MCPTestToolDialogComponent_Template(rf, ctx) { if (rf & 1) {
1243
- i0.ɵɵconditionalCreate(0, MCPTestToolDialogComponent_Conditional_0_Template, 1, 0, "div", 0);
1244
- i0.ɵɵconditionalCreate(1, MCPTestToolDialogComponent_Conditional_1_Template, 34, 26, "div", 1);
1234
+ } }, inputs: { Visible: "Visible", Servers: "Servers", Connections: "Connections", Tools: "Tools", SelectedServerID: "SelectedServerID", SelectedConnectionID: "SelectedConnectionID", SelectedToolID: "SelectedToolID" }, outputs: { Close: "Close" }, standalone: false, decls: 2, vars: 2, consts: [["mjDropdownItem", ""], [1, "panel-backdrop"], [1, "slide-out-panel", 3, "width", "mobile", "resizing"], [1, "panel-backdrop", 3, "click"], [1, "slide-out-panel"], ["title", "Drag to resize", 1, "resize-handle", 3, "active"], [1, "panel-header"], [1, "panel-title"], [1, "fa-solid", "fa-flask"], ["title", "Close", 1, "close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "step-indicator"], [1, "step"], [1, "step-number"], [1, "step-label"], [1, "step-connector"], [1, "panel-content"], [1, "step-content"], [1, "step-content", "results-step"], [1, "panel-actions"], ["title", "Drag to resize", 1, "resize-handle", 3, "mousedown"], [1, "resize-grip"], [1, "selection-form"], [1, "form-group"], [1, "form-label"], [1, "fa-solid", "fa-server"], [1, "required"], ["TextField", "Name", "ValueField", "ID", "Placeholder", "Select a server...", 3, "ngModelChange", "ValueChange", "FilterChange", "Data", "ValuePrimitive", "ngModel", "Filterable"], [1, "fa-solid", "fa-link"], ["TextField", "Name", "ValueField", "ID", "Placeholder", "Select a connection...", 3, "ngModelChange", "ValueChange", "FilterChange", "Data", "ValuePrimitive", "ngModel", "Disabled", "Filterable"], [1, "field-hint"], [1, "field-error"], [1, "field-hint", "auto-selected"], [1, "fa-solid", "fa-wrench"], ["TextField", "ToolTitle", "ValueField", "ID", "Placeholder", "Select a tool...", 3, "ngModelChange", "ValueChange", "FilterChange", "Data", "ValuePrimitive", "ngModel", "Disabled", "Filterable"], [1, "dropdown-item"], [1, "item-name"], [1, "item-status"], [1, "item-description"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "fa-solid", "fa-check"], [1, "dropdown-item", "tool-item"], [1, "tool-header"], [1, "tool-info"], [1, "tool-name"], [1, "tool-description"], [1, "tool-context"], [1, "context-item"], [1, "no-params"], [1, "parameters-form"], [1, "fa-solid", "fa-check-circle"], [1, "params-title"], [1, "param-group", 3, "required"], [1, "param-group"], [1, "param-label"], [1, "param-description"], [3, "Data", "ValuePrimitive", "ngModel"], [1, "checkbox-wrapper"], [3, "Step", "ngModel"], [3, "ngModelChange", "ValueChange", "Data", "ValuePrimitive", "ngModel"], ["type", "checkbox", 3, "change", "id", "checked"], [3, "for"], [3, "ngModelChange", "Step", "ngModel"], ["rows", "4", 1, "json-input", "mj-textarea", 3, "input", "value", "placeholder"], ["rows", "3", 1, "text-input", "mj-textarea", 3, "ngModel", "placeholder"], [1, "mj-input", 3, "ngModel", "placeholder"], ["rows", "3", 1, "text-input", "mj-textarea", 3, "ngModelChange", "input", "ngModel", "placeholder"], [1, "mj-input", 3, "ngModelChange", "input", "ngModel", "placeholder"], [1, "results-container"], [1, "result-header"], [1, "duration"], [1, "execution-info"], [1, "info-row"], [1, "info-label"], [1, "info-value"], [1, "error-panel"], [1, "result-panel", "fill-space"], [1, "result-status"], [1, "fa-solid", "fa-times-circle"], [1, "error-message"], [1, "result-panel-header"], [1, "fa-solid", "fa-code"], ["mjButton", "", "variant", "flat", "title", "Copy to clipboard", 3, "click"], [1, "fa-solid", "fa-copy"], [1, "code-editor-container"], [3, "ngModel", "language", "readonly"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-arrow-right"], ["mjButton", "", "variant", "flat", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-play"], ["mjButton", "", "variant", "primary", 3, "click"], [1, "fa-solid", "fa-redo"]], template: function MCPTestToolDialogComponent_Template(rf, ctx) { if (rf & 1) {
1235
+ i0.ɵɵconditionalCreate(0, MCPTestToolDialogComponent_Conditional_0_Template, 1, 0, "div", 1);
1236
+ i0.ɵɵconditionalCreate(1, MCPTestToolDialogComponent_Conditional_1_Template, 34, 26, "div", 2);
1245
1237
  } if (rf & 2) {
1246
1238
  i0.ɵɵconditional(ctx.Visible ? 0 : -1);
1247
1239
  i0.ɵɵadvance();
1248
1240
  i0.ɵɵconditional(ctx.Visible ? 1 : -1);
1249
- } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.ButtonComponent, i3.ItemTemplateDirective, i3.DropDownListComponent, i3.ValueTemplateDirective, i4.TextBoxComponent, i4.NumericTextBoxComponent, i5.CodeEditorComponent], styles: ["\n\n\n\n\n\n\n.panel-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n\n\n\n\n.slide-out-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-surface);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.slide-out-panel.mobile[_ngcontent-%COMP%] {\n width: 100% !important;\n left: 0;\n}\n\n.slide-out-panel.resizing[_ngcontent-%COMP%] {\n user-select: none;\n transition: none;\n}\n\n\n\n\n\n.resize-handle[_ngcontent-%COMP%] {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 6px;\n cursor: ew-resize;\n background: transparent;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s ease;\n}\n\n.resize-handle[_ngcontent-%COMP%]:hover, \n.resize-handle.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.resize-grip[_ngcontent-%COMP%] {\n width: 3px;\n height: 40px;\n background: var(--mj-border-strong);\n border-radius: 2px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.resize-handle[_ngcontent-%COMP%]:hover .resize-grip[_ngcontent-%COMP%], \n.resize-handle.active[_ngcontent-%COMP%] .resize-grip[_ngcontent-%COMP%] {\n opacity: 1;\n background: var(--mj-brand-primary);\n}\n\n\n\n\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.close-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.close-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n}\n\n\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.step[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n opacity: 0.5;\n transition: opacity 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%], \n.step.completed[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.step-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n font-weight: 600;\n font-size: 13px;\n transition: all 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.step-connector[_ngcontent-%COMP%] {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 10px;\n transition: background 0.2s ease;\n}\n\n.step-connector.completed[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n\n\n.panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.step-content[_ngcontent-%COMP%] {\n min-height: 100%;\n}\n\n.step-content.results-step[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n\n\n\n\n.selection-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.form-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.required[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: 600;\n}\n\n.field-hint[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\n margin-top: 4px;\n}\n\n.field-hint.auto-selected[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-style: normal;\n}\n\n.field-hint.auto-selected[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.field-error[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-status-error);\n margin-top: 4px;\n padding: 8px 10px;\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border-radius: 4px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n}\n\n.field-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.dropdown-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 4px 0;\n}\n\n.dropdown-item.tool-item[_ngcontent-%COMP%] {\n max-width: 100%;\n}\n\n.item-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.item-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n}\n\n.item-status[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.item-status.status-active[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.item-status.status-inactive[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n.tool-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 8px;\n margin-bottom: 20px;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.tool-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.tool-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.tool-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.tool-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n}\n\n.tool-context[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n align-items: flex-end;\n flex-shrink: 0;\n}\n\n.context-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.context-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n.no-params[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.no-params[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-status-success);\n margin-bottom: 16px;\n}\n\n.no-params[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n}\n\n.params-title[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.param-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n}\n\n.param-group.required[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.param-label[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.param-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.checkbox-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n}\n\n.checkbox-wrapper[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n}\n\n.checkbox-wrapper[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n cursor: pointer;\n}\n\n.json-input[_ngcontent-%COMP%], \n.text-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 12px;\n font-family: 'Consolas', 'Monaco', monospace;\n font-size: 13px;\n line-height: 1.5;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n background: var(--mj-bg-surface);\n resize: vertical;\n box-sizing: border-box;\n}\n\n.json-input[_ngcontent-%COMP%]:focus, \n.text-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n\n\n\n\n.results-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex: 1;\n min-height: 0;\n}\n\n.result-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n border-radius: 8px;\n font-weight: 600;\n}\n\n.result-header.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.result-header.success[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-status-success);\n}\n\n.result-header.error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.result-header.error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-status-error);\n}\n\n.result-status[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 16px;\n}\n\n.duration[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: normal;\n color: var(--mj-text-muted);\n background: rgba(0, 0, 0, 0.05);\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n.error-panel[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n padding: 16px;\n}\n\n.error-panel[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-status-error);\n}\n\n.error-message[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px;\n background: var(--mj-bg-surface);\n border-radius: 4px;\n font-family: monospace;\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-status-error);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.result-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.result-panel.fill-space[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 200px;\n}\n\n.result-panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.result-panel-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.code-editor-container[_ngcontent-%COMP%] {\n height: 300px;\n min-height: 200px;\n max-height: 400px;\n overflow: hidden;\n}\n\n.result-panel.fill-space[_ngcontent-%COMP%] .code-editor-container[_ngcontent-%COMP%] {\n flex: 1;\n height: auto;\n max-height: none;\n}\n\n.code-editor-container[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n.execution-info[_ngcontent-%COMP%] {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n}\n\n.info-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n padding: 6px 0;\n font-size: 13px;\n}\n\n.info-row[_ngcontent-%COMP%]:not(:last-child) {\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.info-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.info-value[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n\n\n\n\n.panel-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n min-width: 100px;\n}\n\n.panel-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n\n\n\n\n@media (max-width: 768px) {\n .slide-out-panel[_ngcontent-%COMP%] {\n width: 100% !important;\n left: 0;\n }\n\n .resize-handle[_ngcontent-%COMP%] {\n display: none;\n }\n\n .step-indicator[_ngcontent-%COMP%] {\n padding: 12px 16px;\n }\n\n .step-connector[_ngcontent-%COMP%] {\n width: 20px;\n margin: 0 6px;\n }\n\n .step-label[_ngcontent-%COMP%] {\n display: none;\n }\n\n .panel-content[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .tool-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 12px;\n }\n\n .tool-context[_ngcontent-%COMP%] {\n align-items: flex-start;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n }\n\n .panel-actions[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n\n .panel-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 80px;\n }\n}\n\n@media (max-width: 480px) {\n .panel-header[_ngcontent-%COMP%] {\n padding: 12px 16px;\n }\n\n .panel-title[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .step-number[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n font-size: 12px;\n }\n\n .tool-name[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n}"], data: { animation: [
1241
+ } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJButtonDirective, i2.MJDropdownComponent, i2.MJNumericInputComponent, i3.CodeEditorComponent], styles: ["\n\n\n\n\n\n\n.panel-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n\n\n\n\n.slide-out-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-surface);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.slide-out-panel.mobile[_ngcontent-%COMP%] {\n width: 100% !important;\n left: 0;\n}\n\n.slide-out-panel.resizing[_ngcontent-%COMP%] {\n user-select: none;\n transition: none;\n}\n\n\n\n\n\n.resize-handle[_ngcontent-%COMP%] {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 6px;\n cursor: ew-resize;\n background: transparent;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s ease;\n}\n\n.resize-handle[_ngcontent-%COMP%]:hover, \n.resize-handle.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.resize-grip[_ngcontent-%COMP%] {\n width: 3px;\n height: 40px;\n background: var(--mj-border-strong);\n border-radius: 2px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.resize-handle[_ngcontent-%COMP%]:hover .resize-grip[_ngcontent-%COMP%], \n.resize-handle.active[_ngcontent-%COMP%] .resize-grip[_ngcontent-%COMP%] {\n opacity: 1;\n background: var(--mj-brand-primary);\n}\n\n\n\n\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.close-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.close-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n}\n\n\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.step[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n opacity: 0.5;\n transition: opacity 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%], \n.step.completed[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.step-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n font-weight: 600;\n font-size: 13px;\n transition: all 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.step-connector[_ngcontent-%COMP%] {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 10px;\n transition: background 0.2s ease;\n}\n\n.step-connector.completed[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n\n\n.panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.step-content[_ngcontent-%COMP%] {\n min-height: 100%;\n}\n\n.step-content.results-step[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n\n\n\n\n.selection-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.form-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.required[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: 600;\n}\n\n.field-hint[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\n margin-top: 4px;\n}\n\n.field-hint.auto-selected[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-style: normal;\n}\n\n.field-hint.auto-selected[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.field-error[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-status-error);\n margin-top: 4px;\n padding: 8px 10px;\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border-radius: 4px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n}\n\n.field-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.dropdown-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 4px 0;\n}\n\n.dropdown-item.tool-item[_ngcontent-%COMP%] {\n max-width: 100%;\n}\n\n.item-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.item-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n}\n\n.item-status[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.item-status.status-active[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.item-status.status-inactive[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n.tool-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 8px;\n margin-bottom: 20px;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.tool-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.tool-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.tool-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.tool-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n}\n\n.tool-context[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n align-items: flex-end;\n flex-shrink: 0;\n}\n\n.context-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.context-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n.no-params[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.no-params[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-status-success);\n margin-bottom: 16px;\n}\n\n.no-params[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n}\n\n.params-title[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.param-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n}\n\n.param-group.required[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.param-label[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.param-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.checkbox-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n}\n\n.checkbox-wrapper[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n}\n\n.checkbox-wrapper[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n cursor: pointer;\n}\n\n.json-input[_ngcontent-%COMP%], \n.text-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 12px;\n font-family: 'Consolas', 'Monaco', monospace;\n font-size: 13px;\n line-height: 1.5;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n background: var(--mj-bg-surface);\n resize: vertical;\n box-sizing: border-box;\n}\n\n.json-input[_ngcontent-%COMP%]:focus, \n.text-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n\n\n\n\n.results-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex: 1;\n min-height: 0;\n}\n\n.result-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n border-radius: 8px;\n font-weight: 600;\n}\n\n.result-header.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.result-header.success[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-status-success);\n}\n\n.result-header.error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.result-header.error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-status-error);\n}\n\n.result-status[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 16px;\n}\n\n.duration[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: normal;\n color: var(--mj-text-muted);\n background: rgba(0, 0, 0, 0.05);\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n.error-panel[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n padding: 16px;\n}\n\n.error-panel[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-status-error);\n}\n\n.error-message[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px;\n background: var(--mj-bg-surface);\n border-radius: 4px;\n font-family: monospace;\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-status-error);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.result-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.result-panel.fill-space[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 200px;\n}\n\n.result-panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.result-panel-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.code-editor-container[_ngcontent-%COMP%] {\n height: 300px;\n min-height: 200px;\n max-height: 400px;\n overflow: hidden;\n}\n\n.result-panel.fill-space[_ngcontent-%COMP%] .code-editor-container[_ngcontent-%COMP%] {\n flex: 1;\n height: auto;\n max-height: none;\n}\n\n.code-editor-container[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n.execution-info[_ngcontent-%COMP%] {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n}\n\n.info-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n padding: 6px 0;\n font-size: 13px;\n}\n\n.info-row[_ngcontent-%COMP%]:not(:last-child) {\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.info-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.info-value[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n\n\n\n\n.panel-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n min-width: 100px;\n}\n\n.panel-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n\n\n\n\n@media (max-width: 768px) {\n .slide-out-panel[_ngcontent-%COMP%] {\n width: 100% !important;\n left: 0;\n }\n\n .resize-handle[_ngcontent-%COMP%] {\n display: none;\n }\n\n .step-indicator[_ngcontent-%COMP%] {\n padding: 12px 16px;\n }\n\n .step-connector[_ngcontent-%COMP%] {\n width: 20px;\n margin: 0 6px;\n }\n\n .step-label[_ngcontent-%COMP%] {\n display: none;\n }\n\n .panel-content[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .tool-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 12px;\n }\n\n .tool-context[_ngcontent-%COMP%] {\n align-items: flex-start;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n }\n\n .panel-actions[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n\n .panel-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 80px;\n }\n}\n\n@media (max-width: 480px) {\n .panel-header[_ngcontent-%COMP%] {\n padding: 12px 16px;\n }\n\n .panel-title[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .step-number[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n font-size: 12px;\n }\n\n .tool-name[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n}"], data: { animation: [
1250
1242
  trigger('slideIn', [
1251
1243
  transition(':enter', [
1252
1244
  style({ transform: 'translateX(100%)', opacity: 0 }),
@@ -1270,7 +1262,7 @@ export class MCPTestToolDialogComponent {
1270
1262
  animate('200ms ease-in', style({ transform: 'translateX(100%)', opacity: 0 }))
1271
1263
  ])
1272
1264
  ])
1273
- ], template: "<!-- Backdrop -->\n@if (Visible) {\n <div class=\"panel-backdrop\" (click)=\"closeDialog()\"></div>\n}\n\n<!-- Slide-out Panel -->\n@if (Visible) {\n <div class=\"slide-out-panel\"\n @slideIn\n [style.width.px]=\"IsMobileMode ? null : PanelWidth\"\n [class.mobile]=\"IsMobileMode\"\n [class.resizing]=\"IsResizing\">\n <!-- Resize Handle (left edge) -->\n @if (!IsMobileMode) {\n <div class=\"resize-handle\"\n (mousedown)=\"onResizeStart($event)\"\n [class.active]=\"IsResizing\"\n title=\"Drag to resize\">\n <div class=\"resize-grip\"></div>\n </div>\n }\n <!-- Panel Header -->\n <div class=\"panel-header\">\n <h2 class=\"panel-title\">\n <i class=\"fa-solid fa-flask\"></i>\n Test MCP Tool\n </h2>\n <button class=\"close-btn\" (click)=\"closeDialog()\" title=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <!-- Step Indicator -->\n <div class=\"step-indicator\">\n <div class=\"step\" [class.active]=\"CurrentStep === 'select'\" [class.completed]=\"CurrentStep !== 'select'\">\n <span class=\"step-number\">1</span>\n <span class=\"step-label\">Select Tool</span>\n </div>\n <div class=\"step-connector\" [class.completed]=\"CurrentStep !== 'select'\"></div>\n <div class=\"step\" [class.active]=\"CurrentStep === 'configure'\" [class.completed]=\"CurrentStep === 'results'\">\n <span class=\"step-number\">2</span>\n <span class=\"step-label\">Configure</span>\n </div>\n <div class=\"step-connector\" [class.completed]=\"CurrentStep === 'results'\"></div>\n <div class=\"step\" [class.active]=\"CurrentStep === 'results'\">\n <span class=\"step-number\">3</span>\n <span class=\"step-label\">Results</span>\n </div>\n </div>\n <!-- Panel Content -->\n <div class=\"panel-content\">\n <!-- Step 1: Select Server, Connection, Tool -->\n @if (CurrentStep === 'select') {\n <div class=\"step-content\">\n <div class=\"selection-form\">\n <!-- Server Selection -->\n <div class=\"form-group\">\n <label class=\"form-label\">\n <i class=\"fa-solid fa-server\"></i>\n Server\n <span class=\"required\">*</span>\n </label>\n <kendo-dropdownlist\n [data]=\"DisplayServers\"\n [textField]=\"'Name'\"\n [valueField]=\"'ID'\"\n [valuePrimitive]=\"true\"\n [(ngModel)]=\"ServerID\"\n (valueChange)=\"onServerChange()\"\n [filterable]=\"true\"\n (filterChange)=\"onServerFilterChange($event)\"\n placeholder=\"Select a server...\">\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <div class=\"dropdown-item\">\n <span class=\"item-name\">{{ dataItem.Name }}</span>\n <span class=\"item-status\" [class]=\"'status-' + dataItem.Status.toLowerCase()\">\n {{ dataItem.Status }}\n </span>\n </div>\n </ng-template>\n </kendo-dropdownlist>\n </div>\n <!-- Connection Selection -->\n <div class=\"form-group\">\n <label class=\"form-label\">\n <i class=\"fa-solid fa-link\"></i>\n Connection\n <span class=\"required\">*</span>\n </label>\n <kendo-dropdownlist\n [data]=\"DisplayConnections\"\n [textField]=\"'Name'\"\n [valueField]=\"'ID'\"\n [valuePrimitive]=\"true\"\n [(ngModel)]=\"ConnectionID\"\n (valueChange)=\"onConnectionChange()\"\n [disabled]=\"!ServerID || NoConnectionsWarning !== null\"\n [filterable]=\"true\"\n (filterChange)=\"onConnectionFilterChange($event)\"\n placeholder=\"Select a connection...\">\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <div class=\"dropdown-item\">\n <span class=\"item-name\">{{ dataItem.Name }}</span>\n @if (dataItem.Description) {\n <span class=\"item-description\">{{ dataItem.Description }}</span>\n }\n </div>\n </ng-template>\n </kendo-dropdownlist>\n @if (!ServerID) {\n <span class=\"field-hint\">Select a server first</span>\n }\n @if (NoConnectionsWarning) {\n <span class=\"field-error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ NoConnectionsWarning }}\n </span>\n }\n @if (FilteredConnections.length === 1 && ConnectionID) {\n <span class=\"field-hint auto-selected\">\n <i class=\"fa-solid fa-check\"></i>\n Auto-selected (only connection available)\n </span>\n }\n </div>\n <!-- Tool Selection -->\n <div class=\"form-group\">\n <label class=\"form-label\">\n <i class=\"fa-solid fa-wrench\"></i>\n Tool\n <span class=\"required\">*</span>\n </label>\n <kendo-dropdownlist\n [data]=\"DisplayTools\"\n [textField]=\"'ToolTitle'\"\n [valueField]=\"'ID'\"\n [valuePrimitive]=\"true\"\n [(ngModel)]=\"ToolID\"\n (valueChange)=\"onToolChange()\"\n [disabled]=\"!ServerID\"\n [filterable]=\"true\"\n (filterChange)=\"onToolFilterChange($event)\"\n placeholder=\"Select a tool...\">\n <ng-template kendoDropDownListValueTemplate let-dataItem>\n {{ dataItem?.ToolTitle || dataItem?.ToolName || 'Select a tool...' }}\n </ng-template>\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <div class=\"dropdown-item tool-item\">\n <span class=\"item-name\">{{ dataItem.ToolTitle || dataItem.ToolName }}</span>\n @if (dataItem.ToolDescription) {\n <span class=\"item-description\">{{ dataItem.ToolDescription }}</span>\n }\n </div>\n </ng-template>\n </kendo-dropdownlist>\n @if (!ServerID) {\n <span class=\"field-hint\">Select a server first</span>\n }\n </div>\n </div>\n </div>\n }\n <!-- Step 2: Configure Parameters -->\n @if (CurrentStep === 'configure') {\n <div class=\"step-content\">\n <div class=\"tool-header\">\n <div class=\"tool-info\">\n <h3 class=\"tool-name\">\n <i class=\"fa-solid fa-wrench\"></i>\n {{ SelectedTool?.ToolTitle || SelectedTool?.ToolName }}\n </h3>\n @if (SelectedTool?.ToolDescription) {\n <p class=\"tool-description\">{{ SelectedTool?.ToolDescription }}</p>\n }\n </div>\n <div class=\"tool-context\">\n <span class=\"context-item\">\n <i class=\"fa-solid fa-server\"></i>\n {{ SelectedServerName }}\n </span>\n <span class=\"context-item\">\n <i class=\"fa-solid fa-link\"></i>\n {{ SelectedConnectionName }}\n </span>\n </div>\n </div>\n @if (ParameterConfigs.length === 0) {\n <div class=\"no-params\">\n <i class=\"fa-solid fa-check-circle\"></i>\n <p>This tool requires no parameters.</p>\n </div>\n } @else {\n <div class=\"parameters-form\">\n <h4 class=\"params-title\">Parameters</h4>\n @for (config of ParameterConfigs; track config.name) {\n <div class=\"param-group\" [class.required]=\"config.required\">\n <label class=\"param-label\">\n {{ config.name }}\n @if (config.required) {\n <span class=\"required\">*</span>\n }\n </label>\n @if (config.description) {\n <p class=\"param-description\">{{ config.description }}</p>\n }\n <!-- Enum/Select -->\n @if (config.enumValues.length > 0) {\n <kendo-dropdownlist\n [data]=\"config.enumValues\"\n [valuePrimitive]=\"true\"\n [(ngModel)]=\"ParameterValues[config.name]\"\n (valueChange)=\"onParameterChange(config.name, $event)\">\n </kendo-dropdownlist>\n }\n <!-- Boolean -->\n @else if (config.type === 'boolean') {\n <div class=\"checkbox-wrapper\">\n <input type=\"checkbox\"\n [id]=\"'param-' + config.name\"\n [checked]=\"ParameterValues[config.name]\"\n (change)=\"onParameterChange(config.name, $any($event.target).checked)\">\n <label [for]=\"'param-' + config.name\">Enabled</label>\n </div>\n }\n <!-- Number/Integer -->\n @else if (config.type === 'number' || config.type === 'integer') {\n <kendo-numerictextbox\n [format]=\"config.type === 'integer' ? 'n0' : 'n'\"\n [step]=\"config.type === 'integer' ? 1 : 0.1\"\n [(ngModel)]=\"ParameterValues[config.name]\"\n (valueChange)=\"onParameterChange(config.name, $event)\">\n </kendo-numerictextbox>\n }\n <!-- Array/Object (Textarea with JSON) -->\n @else if (config.type === 'array' || config.type === 'object') {\n <textarea class=\"json-input\"\n rows=\"4\"\n [value]=\"getTextareaValue(config.name)\"\n (input)=\"onTextareaChange(config.name, $any($event.target).value, config)\"\n placeholder=\"Enter JSON {{ config.type }}...\"></textarea>\n <span class=\"field-hint\">Enter valid JSON</span>\n }\n <!-- String (default) -->\n @else {\n @if (isTextarea(config)) {\n <textarea class=\"text-input\"\n rows=\"3\"\n [(ngModel)]=\"ParameterValues[config.name]\"\n (input)=\"onParameterChange(config.name, $any($event.target).value)\"\n [placeholder]=\"config.description || 'Enter value...'\"></textarea>\n } @else {\n <kendo-textbox\n [(ngModel)]=\"ParameterValues[config.name]\"\n (valueChange)=\"onParameterChange(config.name, $event)\"\n [placeholder]=\"config.description || 'Enter value...'\">\n </kendo-textbox>\n }\n }\n </div>\n }\n </div>\n }\n</div>\n}\n<!-- Step 3: Results -->\n@if (CurrentStep === 'results') {\n <div class=\"step-content results-step\">\n <div class=\"results-container\">\n <!-- Success/Error Header -->\n <div class=\"result-header\" [class.success]=\"ExecutionResult?.Success\" [class.error]=\"!ExecutionResult?.Success\">\n @if (ExecutionResult?.Success) {\n <i class=\"fa-solid fa-check-circle\"></i>\n <span class=\"result-status\">Execution Successful</span>\n } @else {\n <i class=\"fa-solid fa-times-circle\"></i>\n <span class=\"result-status\">Execution Failed</span>\n }\n @if (ExecutionResult?.DurationMs) {\n <span class=\"duration\">{{ ExecutionResult?.DurationMs }}ms</span>\n }\n </div>\n <!-- Executed Tool Info (moved to top) -->\n <div class=\"execution-info\">\n <div class=\"info-row\">\n <span class=\"info-label\">Tool:</span>\n <span class=\"info-value\">{{ SelectedToolName }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">Server:</span>\n <span class=\"info-value\">{{ SelectedServerName }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">Connection:</span>\n <span class=\"info-value\">{{ SelectedConnectionName }}</span>\n </div>\n </div>\n <!-- Error Message -->\n @if (ExecutionResult?.ErrorMessage) {\n <div class=\"error-panel\">\n <h4><i class=\"fa-solid fa-exclamation-triangle\"></i> Error</h4>\n <pre class=\"error-message\">{{ ExecutionResult?.ErrorMessage }}</pre>\n </div>\n }\n <!-- Result Data (fills remaining space) -->\n @if (ExecutionResult?.Result) {\n <div class=\"result-panel fill-space\">\n <div class=\"result-panel-header\">\n <h4><i class=\"fa-solid fa-code\"></i> Result</h4>\n <button kendoButton fillMode=\"flat\" (click)=\"copyResult()\" title=\"Copy to clipboard\">\n <i class=\"fa-solid fa-copy\"></i>\n </button>\n </div>\n <div class=\"code-editor-container\">\n <mj-code-editor\n [ngModel]=\"FormattedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n </div>\n}\n</div>\n<!-- Panel Actions -->\n<div class=\"panel-actions\">\n @switch (CurrentStep) {\n @case ('select') {\n <button kendoButton themeColor=\"primary\" (click)=\"proceedToConfig()\" [disabled]=\"!CanProceedToConfig\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n Next\n </button>\n <button kendoButton fillMode=\"flat\" (click)=\"closeDialog()\">Cancel</button>\n }\n @case ('configure') {\n <button kendoButton themeColor=\"primary\" (click)=\"executeTool()\" [disabled]=\"!IsValid || IsExecuting\">\n @if (IsExecuting) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Executing...\n } @else {\n <i class=\"fa-solid fa-play\"></i>\n Execute Tool\n }\n </button>\n <button kendoButton fillMode=\"flat\" (click)=\"goBack()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Back\n </button>\n }\n @case ('results') {\n <button kendoButton themeColor=\"primary\" (click)=\"runAgain()\">\n <i class=\"fa-solid fa-redo\"></i>\n Run Again\n </button>\n <button kendoButton fillMode=\"flat\" (click)=\"goBack()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Edit Parameters\n </button>\n <button kendoButton fillMode=\"flat\" (click)=\"closeDialog()\">Close</button>\n }\n }\n</div>\n</div>\n}\n", styles: ["/* MCP Test Tool Slide-Out Panel Styles */\n\n/* ========================================\n Backdrop\n ======================================== */\n.panel-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: fadeIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* ========================================\n Slide-Out Panel\n ======================================== */\n.slide-out-panel {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-surface);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.slide-out-panel.mobile {\n width: 100% !important;\n left: 0;\n}\n\n.slide-out-panel.resizing {\n user-select: none;\n transition: none;\n}\n\n/* ========================================\n Resize Handle\n ======================================== */\n.resize-handle {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 6px;\n cursor: ew-resize;\n background: transparent;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s ease;\n}\n\n.resize-handle:hover,\n.resize-handle.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.resize-grip {\n width: 3px;\n height: 40px;\n background: var(--mj-border-strong);\n border-radius: 2px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.resize-handle:hover .resize-grip,\n.resize-handle.active .resize-grip {\n opacity: 1;\n background: var(--mj-brand-primary);\n}\n\n/* ========================================\n Panel Header\n ======================================== */\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.panel-title i {\n color: var(--mj-brand-primary);\n}\n\n.close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n}\n\n.close-btn:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.close-btn i {\n font-size: 18px;\n}\n\n/* ========================================\n Step Indicator\n ======================================== */\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.step {\n display: flex;\n align-items: center;\n gap: 8px;\n opacity: 0.5;\n transition: opacity 0.2s ease;\n}\n\n.step.active,\n.step.completed {\n opacity: 1;\n}\n\n.step-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n font-weight: 600;\n font-size: 13px;\n transition: all 0.2s ease;\n}\n\n.step.active .step-number {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed .step-number {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.step-connector {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 10px;\n transition: background 0.2s ease;\n}\n\n.step-connector.completed {\n background: var(--mj-status-success);\n}\n\n/* ========================================\n Panel Content\n ======================================== */\n.panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.step-content {\n min-height: 100%;\n}\n\n.step-content.results-step {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n/* ========================================\n Selection Form (Step 1)\n ======================================== */\n.selection-form {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.form-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.form-label i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.required {\n color: var(--mj-status-error);\n font-weight: 600;\n}\n\n.field-hint {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\n margin-top: 4px;\n}\n\n.field-hint.auto-selected {\n color: var(--mj-status-success);\n font-style: normal;\n}\n\n.field-hint.auto-selected i {\n font-size: 11px;\n}\n\n.field-error {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-status-error);\n margin-top: 4px;\n padding: 8px 10px;\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border-radius: 4px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n}\n\n.field-error i {\n font-size: 13px;\n}\n\n/* Dropdown Item Styling */\n.dropdown-item {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 4px 0;\n}\n\n.dropdown-item.tool-item {\n max-width: 100%;\n}\n\n.item-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.item-description {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n}\n\n.item-status {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.item-status.status-active {\n color: var(--mj-status-success);\n}\n\n.item-status.status-inactive {\n color: var(--mj-text-disabled);\n}\n\n/* ========================================\n Tool Header (Step 2)\n ======================================== */\n.tool-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 8px;\n margin-bottom: 20px;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.tool-info {\n flex: 1;\n min-width: 0;\n}\n\n.tool-name {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.tool-name i {\n color: var(--mj-brand-primary);\n}\n\n.tool-description {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n}\n\n.tool-context {\n display: flex;\n flex-direction: column;\n gap: 6px;\n align-items: flex-end;\n flex-shrink: 0;\n}\n\n.context-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.context-item i {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n/* ========================================\n Parameters Form (Step 2)\n ======================================== */\n.no-params {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.no-params i {\n font-size: 48px;\n color: var(--mj-status-success);\n margin-bottom: 16px;\n}\n\n.no-params p {\n margin: 0;\n font-size: 15px;\n}\n\n.params-title {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.param-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n}\n\n.param-group.required {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.param-label {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.param-description {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.checkbox-wrapper {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n}\n\n.checkbox-wrapper input[type=\"checkbox\"] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n}\n\n.checkbox-wrapper label {\n font-size: 14px;\n color: var(--mj-text-primary);\n cursor: pointer;\n}\n\n.json-input,\n.text-input {\n width: 100%;\n padding: 10px 12px;\n font-family: 'Consolas', 'Monaco', monospace;\n font-size: 13px;\n line-height: 1.5;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n background: var(--mj-bg-surface);\n resize: vertical;\n box-sizing: border-box;\n}\n\n.json-input:focus,\n.text-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n/* ========================================\n Results (Step 3)\n ======================================== */\n.results-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex: 1;\n min-height: 0;\n}\n\n.result-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n border-radius: 8px;\n font-weight: 600;\n}\n\n.result-header.success {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.result-header.success i {\n font-size: 24px;\n color: var(--mj-status-success);\n}\n\n.result-header.error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.result-header.error i {\n font-size: 24px;\n color: var(--mj-status-error);\n}\n\n.result-status {\n flex: 1;\n font-size: 16px;\n}\n\n.duration {\n font-size: 13px;\n font-weight: normal;\n color: var(--mj-text-muted);\n background: rgba(0, 0, 0, 0.05);\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n.error-panel {\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n padding: 16px;\n}\n\n.error-panel h4 {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-status-error);\n}\n\n.error-message {\n margin: 0;\n padding: 12px;\n background: var(--mj-bg-surface);\n border-radius: 4px;\n font-family: monospace;\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-status-error);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.result-panel {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.result-panel.fill-space {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 200px;\n}\n\n.result-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.result-panel-header h4 {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.code-editor-container {\n height: 300px;\n min-height: 200px;\n max-height: 400px;\n overflow: hidden;\n}\n\n.result-panel.fill-space .code-editor-container {\n flex: 1;\n height: auto;\n max-height: none;\n}\n\n.code-editor-container mj-code-editor {\n width: 100%;\n height: 100%;\n}\n\n.execution-info {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n}\n\n.info-row {\n display: flex;\n justify-content: space-between;\n padding: 6px 0;\n font-size: 13px;\n}\n\n.info-row:not(:last-child) {\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.info-label {\n color: var(--mj-text-muted);\n}\n\n.info-value {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n/* ========================================\n Panel Actions\n ======================================== */\n.panel-actions {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-actions button {\n min-width: 100px;\n}\n\n.panel-actions button i {\n margin-right: 6px;\n}\n\n/* ========================================\n Responsive / Mobile\n ======================================== */\n@media (max-width: 768px) {\n .slide-out-panel {\n width: 100% !important;\n left: 0;\n }\n\n .resize-handle {\n display: none;\n }\n\n .step-indicator {\n padding: 12px 16px;\n }\n\n .step-connector {\n width: 20px;\n margin: 0 6px;\n }\n\n .step-label {\n display: none;\n }\n\n .panel-content {\n padding: 16px;\n }\n\n .tool-header {\n flex-direction: column;\n gap: 12px;\n }\n\n .tool-context {\n align-items: flex-start;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n }\n\n .panel-actions {\n flex-wrap: wrap;\n }\n\n .panel-actions button {\n flex: 1;\n min-width: 80px;\n }\n}\n\n@media (max-width: 480px) {\n .panel-header {\n padding: 12px 16px;\n }\n\n .panel-title {\n font-size: 16px;\n }\n\n .step-number {\n width: 24px;\n height: 24px;\n font-size: 12px;\n }\n\n .tool-name {\n font-size: 16px;\n }\n}\n"] }]
1265
+ ], template: "<!-- Backdrop -->\n@if (Visible) {\n <div class=\"panel-backdrop\" (click)=\"closeDialog()\"></div>\n}\n\n<!-- Slide-out Panel -->\n@if (Visible) {\n <div class=\"slide-out-panel\"\n @slideIn\n [style.width.px]=\"IsMobileMode ? null : PanelWidth\"\n [class.mobile]=\"IsMobileMode\"\n [class.resizing]=\"IsResizing\">\n <!-- Resize Handle (left edge) -->\n @if (!IsMobileMode) {\n <div class=\"resize-handle\"\n (mousedown)=\"onResizeStart($event)\"\n [class.active]=\"IsResizing\"\n title=\"Drag to resize\">\n <div class=\"resize-grip\"></div>\n </div>\n }\n <!-- Panel Header -->\n <div class=\"panel-header\">\n <h2 class=\"panel-title\">\n <i class=\"fa-solid fa-flask\"></i>\n Test MCP Tool\n </h2>\n <button class=\"close-btn\" (click)=\"closeDialog()\" title=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <!-- Step Indicator -->\n <div class=\"step-indicator\">\n <div class=\"step\" [class.active]=\"CurrentStep === 'select'\" [class.completed]=\"CurrentStep !== 'select'\">\n <span class=\"step-number\">1</span>\n <span class=\"step-label\">Select Tool</span>\n </div>\n <div class=\"step-connector\" [class.completed]=\"CurrentStep !== 'select'\"></div>\n <div class=\"step\" [class.active]=\"CurrentStep === 'configure'\" [class.completed]=\"CurrentStep === 'results'\">\n <span class=\"step-number\">2</span>\n <span class=\"step-label\">Configure</span>\n </div>\n <div class=\"step-connector\" [class.completed]=\"CurrentStep === 'results'\"></div>\n <div class=\"step\" [class.active]=\"CurrentStep === 'results'\">\n <span class=\"step-number\">3</span>\n <span class=\"step-label\">Results</span>\n </div>\n </div>\n <!-- Panel Content -->\n <div class=\"panel-content\">\n <!-- Step 1: Select Server, Connection, Tool -->\n @if (CurrentStep === 'select') {\n <div class=\"step-content\">\n <div class=\"selection-form\">\n <!-- Server Selection -->\n <div class=\"form-group\">\n <label class=\"form-label\">\n <i class=\"fa-solid fa-server\"></i>\n Server\n <span class=\"required\">*</span>\n </label>\n <mj-dropdown\n [Data]=\"DisplayServers\"\n TextField=\"Name\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n [(ngModel)]=\"ServerID\"\n (ValueChange)=\"onServerChange()\"\n [Filterable]=\"true\"\n (FilterChange)=\"onServerFilterChange($event)\"\n Placeholder=\"Select a server...\">\n <ng-template #mjDropdownItem let-dataItem>\n <div class=\"dropdown-item\">\n <span class=\"item-name\">{{ dataItem.Name }}</span>\n <span class=\"item-status\" [class]=\"'status-' + dataItem.Status.toLowerCase()\">\n {{ dataItem.Status }}\n </span>\n </div>\n </ng-template>\n </mj-dropdown>\n </div>\n <!-- Connection Selection -->\n <div class=\"form-group\">\n <label class=\"form-label\">\n <i class=\"fa-solid fa-link\"></i>\n Connection\n <span class=\"required\">*</span>\n </label>\n <mj-dropdown\n [Data]=\"DisplayConnections\"\n TextField=\"Name\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n [(ngModel)]=\"ConnectionID\"\n (ValueChange)=\"onConnectionChange()\"\n [Disabled]=\"!ServerID || NoConnectionsWarning !== null\"\n [Filterable]=\"true\"\n (FilterChange)=\"onConnectionFilterChange($event)\"\n Placeholder=\"Select a connection...\">\n <ng-template #mjDropdownItem let-dataItem>\n <div class=\"dropdown-item\">\n <span class=\"item-name\">{{ dataItem.Name }}</span>\n @if (dataItem.Description) {\n <span class=\"item-description\">{{ dataItem.Description }}</span>\n }\n </div>\n </ng-template>\n </mj-dropdown>\n @if (!ServerID) {\n <span class=\"field-hint\">Select a server first</span>\n }\n @if (NoConnectionsWarning) {\n <span class=\"field-error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ NoConnectionsWarning }}\n </span>\n }\n @if (FilteredConnections.length === 1 && ConnectionID) {\n <span class=\"field-hint auto-selected\">\n <i class=\"fa-solid fa-check\"></i>\n Auto-selected (only connection available)\n </span>\n }\n </div>\n <!-- Tool Selection -->\n <div class=\"form-group\">\n <label class=\"form-label\">\n <i class=\"fa-solid fa-wrench\"></i>\n Tool\n <span class=\"required\">*</span>\n </label>\n <mj-dropdown\n [Data]=\"DisplayTools\"\n TextField=\"ToolTitle\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n [(ngModel)]=\"ToolID\"\n (ValueChange)=\"onToolChange()\"\n [Disabled]=\"!ServerID\"\n [Filterable]=\"true\"\n (FilterChange)=\"onToolFilterChange($event)\"\n Placeholder=\"Select a tool...\">\n <ng-template #mjDropdownItem let-dataItem>\n <div class=\"dropdown-item tool-item\">\n <span class=\"item-name\">{{ dataItem.ToolTitle || dataItem.ToolName }}</span>\n @if (dataItem.ToolDescription) {\n <span class=\"item-description\">{{ dataItem.ToolDescription }}</span>\n }\n </div>\n </ng-template>\n </mj-dropdown>\n @if (!ServerID) {\n <span class=\"field-hint\">Select a server first</span>\n }\n </div>\n </div>\n </div>\n }\n <!-- Step 2: Configure Parameters -->\n @if (CurrentStep === 'configure') {\n <div class=\"step-content\">\n <div class=\"tool-header\">\n <div class=\"tool-info\">\n <h3 class=\"tool-name\">\n <i class=\"fa-solid fa-wrench\"></i>\n {{ SelectedTool?.ToolTitle || SelectedTool?.ToolName }}\n </h3>\n @if (SelectedTool?.ToolDescription) {\n <p class=\"tool-description\">{{ SelectedTool?.ToolDescription }}</p>\n }\n </div>\n <div class=\"tool-context\">\n <span class=\"context-item\">\n <i class=\"fa-solid fa-server\"></i>\n {{ SelectedServerName }}\n </span>\n <span class=\"context-item\">\n <i class=\"fa-solid fa-link\"></i>\n {{ SelectedConnectionName }}\n </span>\n </div>\n </div>\n @if (ParameterConfigs.length === 0) {\n <div class=\"no-params\">\n <i class=\"fa-solid fa-check-circle\"></i>\n <p>This tool requires no parameters.</p>\n </div>\n } @else {\n <div class=\"parameters-form\">\n <h4 class=\"params-title\">Parameters</h4>\n @for (config of ParameterConfigs; track config.name) {\n <div class=\"param-group\" [class.required]=\"config.required\">\n <label class=\"param-label\">\n {{ config.name }}\n @if (config.required) {\n <span class=\"required\">*</span>\n }\n </label>\n @if (config.description) {\n <p class=\"param-description\">{{ config.description }}</p>\n }\n <!-- Enum/Select -->\n @if (config.enumValues.length > 0) {\n <mj-dropdown\n [Data]=\"config.enumValues\"\n [ValuePrimitive]=\"true\"\n [(ngModel)]=\"ParameterValues[config.name]\"\n (ValueChange)=\"onParameterChange(config.name, $any($event))\">\n </mj-dropdown>\n }\n <!-- Boolean -->\n @else if (config.type === 'boolean') {\n <div class=\"checkbox-wrapper\">\n <input type=\"checkbox\"\n [id]=\"'param-' + config.name\"\n [checked]=\"ParameterValues[config.name]\"\n (change)=\"onParameterChange(config.name, $any($event.target).checked)\">\n <label [for]=\"'param-' + config.name\">Enabled</label>\n </div>\n }\n <!-- Number/Integer -->\n @else if (config.type === 'number' || config.type === 'integer') {\n <mj-numeric-input\n [Step]=\"config.type === 'integer' ? 1 : 0.1\"\n [(ngModel)]=\"ParameterValues[config.name]\"\n (ngModelChange)=\"onParameterChange(config.name, $event)\">\n </mj-numeric-input>\n }\n <!-- Array/Object (Textarea with JSON) -->\n @else if (config.type === 'array' || config.type === 'object') {\n <textarea class=\"json-input mj-textarea\"\n rows=\"4\"\n [value]=\"getTextareaValue(config.name)\"\n (input)=\"onTextareaChange(config.name, $any($event.target).value, config)\"\n placeholder=\"Enter JSON {{ config.type }}...\"></textarea>\n <span class=\"field-hint\">Enter valid JSON</span>\n }\n <!-- String (default) -->\n @else {\n @if (isTextarea(config)) {\n <textarea class=\"text-input mj-textarea\"\n rows=\"3\"\n [(ngModel)]=\"ParameterValues[config.name]\"\n (input)=\"onParameterChange(config.name, $any($event.target).value)\"\n [placeholder]=\"config.description || 'Enter value...'\"></textarea>\n } @else {\n <input class=\"mj-input\"\n [(ngModel)]=\"ParameterValues[config.name]\"\n (input)=\"onParameterChange(config.name, $any($event.target).value)\"\n [placeholder]=\"config.description || 'Enter value...'\" />\n }\n }\n </div>\n }\n </div>\n }\n</div>\n}\n<!-- Step 3: Results -->\n@if (CurrentStep === 'results') {\n <div class=\"step-content results-step\">\n <div class=\"results-container\">\n <!-- Success/Error Header -->\n <div class=\"result-header\" [class.success]=\"ExecutionResult?.Success\" [class.error]=\"!ExecutionResult?.Success\">\n @if (ExecutionResult?.Success) {\n <i class=\"fa-solid fa-check-circle\"></i>\n <span class=\"result-status\">Execution Successful</span>\n } @else {\n <i class=\"fa-solid fa-times-circle\"></i>\n <span class=\"result-status\">Execution Failed</span>\n }\n @if (ExecutionResult?.DurationMs) {\n <span class=\"duration\">{{ ExecutionResult?.DurationMs }}ms</span>\n }\n </div>\n <!-- Executed Tool Info -->\n <div class=\"execution-info\">\n <div class=\"info-row\">\n <span class=\"info-label\">Tool:</span>\n <span class=\"info-value\">{{ SelectedToolName }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">Server:</span>\n <span class=\"info-value\">{{ SelectedServerName }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">Connection:</span>\n <span class=\"info-value\">{{ SelectedConnectionName }}</span>\n </div>\n </div>\n <!-- Error Message -->\n @if (ExecutionResult?.ErrorMessage) {\n <div class=\"error-panel\">\n <h4><i class=\"fa-solid fa-exclamation-triangle\"></i> Error</h4>\n <pre class=\"error-message\">{{ ExecutionResult?.ErrorMessage }}</pre>\n </div>\n }\n <!-- Result Data -->\n @if (ExecutionResult?.Result) {\n <div class=\"result-panel fill-space\">\n <div class=\"result-panel-header\">\n <h4><i class=\"fa-solid fa-code\"></i> Result</h4>\n <button mjButton variant=\"flat\" (click)=\"copyResult()\" title=\"Copy to clipboard\">\n <i class=\"fa-solid fa-copy\"></i>\n </button>\n </div>\n <div class=\"code-editor-container\">\n <mj-code-editor\n [ngModel]=\"FormattedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n </div>\n}\n</div>\n<!-- Panel Actions -->\n<div class=\"panel-actions\">\n @switch (CurrentStep) {\n @case ('select') {\n <button mjButton variant=\"primary\" (click)=\"proceedToConfig()\" [disabled]=\"!CanProceedToConfig\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n Next\n </button>\n <button mjButton variant=\"flat\" (click)=\"closeDialog()\">Cancel</button>\n }\n @case ('configure') {\n <button mjButton variant=\"primary\" (click)=\"executeTool()\" [disabled]=\"!IsValid || IsExecuting\">\n @if (IsExecuting) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Executing...\n } @else {\n <i class=\"fa-solid fa-play\"></i>\n Execute Tool\n }\n </button>\n <button mjButton variant=\"flat\" (click)=\"goBack()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Back\n </button>\n }\n @case ('results') {\n <button mjButton variant=\"primary\" (click)=\"runAgain()\">\n <i class=\"fa-solid fa-redo\"></i>\n Run Again\n </button>\n <button mjButton variant=\"flat\" (click)=\"goBack()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Edit Parameters\n </button>\n <button mjButton variant=\"flat\" (click)=\"closeDialog()\">Close</button>\n }\n }\n</div>\n</div>\n}\n", styles: ["/* MCP Test Tool Slide-Out Panel Styles */\n\n/* ========================================\n Backdrop\n ======================================== */\n.panel-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: fadeIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* ========================================\n Slide-Out Panel\n ======================================== */\n.slide-out-panel {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-surface);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.slide-out-panel.mobile {\n width: 100% !important;\n left: 0;\n}\n\n.slide-out-panel.resizing {\n user-select: none;\n transition: none;\n}\n\n/* ========================================\n Resize Handle\n ======================================== */\n.resize-handle {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 6px;\n cursor: ew-resize;\n background: transparent;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s ease;\n}\n\n.resize-handle:hover,\n.resize-handle.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.resize-grip {\n width: 3px;\n height: 40px;\n background: var(--mj-border-strong);\n border-radius: 2px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.resize-handle:hover .resize-grip,\n.resize-handle.active .resize-grip {\n opacity: 1;\n background: var(--mj-brand-primary);\n}\n\n/* ========================================\n Panel Header\n ======================================== */\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.panel-title i {\n color: var(--mj-brand-primary);\n}\n\n.close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n}\n\n.close-btn:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.close-btn i {\n font-size: 18px;\n}\n\n/* ========================================\n Step Indicator\n ======================================== */\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.step {\n display: flex;\n align-items: center;\n gap: 8px;\n opacity: 0.5;\n transition: opacity 0.2s ease;\n}\n\n.step.active,\n.step.completed {\n opacity: 1;\n}\n\n.step-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n font-weight: 600;\n font-size: 13px;\n transition: all 0.2s ease;\n}\n\n.step.active .step-number {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed .step-number {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.step-connector {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 10px;\n transition: background 0.2s ease;\n}\n\n.step-connector.completed {\n background: var(--mj-status-success);\n}\n\n/* ========================================\n Panel Content\n ======================================== */\n.panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.step-content {\n min-height: 100%;\n}\n\n.step-content.results-step {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n/* ========================================\n Selection Form (Step 1)\n ======================================== */\n.selection-form {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.form-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.form-label i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.required {\n color: var(--mj-status-error);\n font-weight: 600;\n}\n\n.field-hint {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\n margin-top: 4px;\n}\n\n.field-hint.auto-selected {\n color: var(--mj-status-success);\n font-style: normal;\n}\n\n.field-hint.auto-selected i {\n font-size: 11px;\n}\n\n.field-error {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-status-error);\n margin-top: 4px;\n padding: 8px 10px;\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border-radius: 4px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n}\n\n.field-error i {\n font-size: 13px;\n}\n\n/* Dropdown Item Styling */\n.dropdown-item {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 4px 0;\n}\n\n.dropdown-item.tool-item {\n max-width: 100%;\n}\n\n.item-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.item-description {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n}\n\n.item-status {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.item-status.status-active {\n color: var(--mj-status-success);\n}\n\n.item-status.status-inactive {\n color: var(--mj-text-disabled);\n}\n\n/* ========================================\n Tool Header (Step 2)\n ======================================== */\n.tool-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 8px;\n margin-bottom: 20px;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.tool-info {\n flex: 1;\n min-width: 0;\n}\n\n.tool-name {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.tool-name i {\n color: var(--mj-brand-primary);\n}\n\n.tool-description {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n}\n\n.tool-context {\n display: flex;\n flex-direction: column;\n gap: 6px;\n align-items: flex-end;\n flex-shrink: 0;\n}\n\n.context-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.context-item i {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n/* ========================================\n Parameters Form (Step 2)\n ======================================== */\n.no-params {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.no-params i {\n font-size: 48px;\n color: var(--mj-status-success);\n margin-bottom: 16px;\n}\n\n.no-params p {\n margin: 0;\n font-size: 15px;\n}\n\n.params-title {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.param-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n}\n\n.param-group.required {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.param-label {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.param-description {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.checkbox-wrapper {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n}\n\n.checkbox-wrapper input[type=\"checkbox\"] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n}\n\n.checkbox-wrapper label {\n font-size: 14px;\n color: var(--mj-text-primary);\n cursor: pointer;\n}\n\n.json-input,\n.text-input {\n width: 100%;\n padding: 10px 12px;\n font-family: 'Consolas', 'Monaco', monospace;\n font-size: 13px;\n line-height: 1.5;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n background: var(--mj-bg-surface);\n resize: vertical;\n box-sizing: border-box;\n}\n\n.json-input:focus,\n.text-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n/* ========================================\n Results (Step 3)\n ======================================== */\n.results-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex: 1;\n min-height: 0;\n}\n\n.result-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n border-radius: 8px;\n font-weight: 600;\n}\n\n.result-header.success {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.result-header.success i {\n font-size: 24px;\n color: var(--mj-status-success);\n}\n\n.result-header.error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.result-header.error i {\n font-size: 24px;\n color: var(--mj-status-error);\n}\n\n.result-status {\n flex: 1;\n font-size: 16px;\n}\n\n.duration {\n font-size: 13px;\n font-weight: normal;\n color: var(--mj-text-muted);\n background: rgba(0, 0, 0, 0.05);\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n.error-panel {\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n padding: 16px;\n}\n\n.error-panel h4 {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-status-error);\n}\n\n.error-message {\n margin: 0;\n padding: 12px;\n background: var(--mj-bg-surface);\n border-radius: 4px;\n font-family: monospace;\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-status-error);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.result-panel {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.result-panel.fill-space {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 200px;\n}\n\n.result-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.result-panel-header h4 {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.code-editor-container {\n height: 300px;\n min-height: 200px;\n max-height: 400px;\n overflow: hidden;\n}\n\n.result-panel.fill-space .code-editor-container {\n flex: 1;\n height: auto;\n max-height: none;\n}\n\n.code-editor-container mj-code-editor {\n width: 100%;\n height: 100%;\n}\n\n.execution-info {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n}\n\n.info-row {\n display: flex;\n justify-content: space-between;\n padding: 6px 0;\n font-size: 13px;\n}\n\n.info-row:not(:last-child) {\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.info-label {\n color: var(--mj-text-muted);\n}\n\n.info-value {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n/* ========================================\n Panel Actions\n ======================================== */\n.panel-actions {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-actions button {\n min-width: 100px;\n}\n\n.panel-actions button i {\n margin-right: 6px;\n}\n\n/* ========================================\n Responsive / Mobile\n ======================================== */\n@media (max-width: 768px) {\n .slide-out-panel {\n width: 100% !important;\n left: 0;\n }\n\n .resize-handle {\n display: none;\n }\n\n .step-indicator {\n padding: 12px 16px;\n }\n\n .step-connector {\n width: 20px;\n margin: 0 6px;\n }\n\n .step-label {\n display: none;\n }\n\n .panel-content {\n padding: 16px;\n }\n\n .tool-header {\n flex-direction: column;\n gap: 12px;\n }\n\n .tool-context {\n align-items: flex-start;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n }\n\n .panel-actions {\n flex-wrap: wrap;\n }\n\n .panel-actions button {\n flex: 1;\n min-width: 80px;\n }\n}\n\n@media (max-width: 480px) {\n .panel-header {\n padding: 12px 16px;\n }\n\n .panel-title {\n font-size: 16px;\n }\n\n .step-number {\n width: 24px;\n height: 24px;\n font-size: 12px;\n }\n\n .tool-name {\n font-size: 16px;\n }\n}\n"] }]
1274
1266
  }], () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], { Visible: [{
1275
1267
  type: Input
1276
1268
  }], Servers: [{