@loop_ouroboros/mcp-hub-lite 1.3.0 → 1.3.2

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 (136) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +410 -331
  3. package/dist/client/assets/{HomeView-Bi2bkUKf.js → HomeView-DplI3V-h.js} +1 -1
  4. package/dist/client/assets/{ResourceDetailView-DyuSovH9.js → ResourceDetailView-CeHPn99Y.js} +1 -1
  5. package/dist/client/assets/ResourcesView-C1ObRhYS.js +1 -0
  6. package/dist/client/assets/{ServerDashboard-BGyyZAti.js → ServerDashboard-D7wG4Gvt.js} +1 -1
  7. package/dist/client/assets/ServerDetail-G23phOcJ.js +2 -0
  8. package/dist/client/assets/{ServerListView-yQPVJFHG.js → ServerListView-BFiZLtPO.js} +1 -1
  9. package/dist/client/assets/{ServerStatusTags.vue_vue_type_script_setup_true_lang-C8gQlxGE.js → ServerStatusTags.vue_vue_type_script_setup_true_lang-Deb_SbFw.js} +1 -1
  10. package/dist/client/assets/SettingsView-QBFLZ6fP.js +1 -0
  11. package/dist/client/assets/ToolCallDialog-DYS-ADCL.js +1 -0
  12. package/dist/client/assets/ToolsView-DYwgtm7W.js +1 -0
  13. package/dist/client/assets/_baseClone-DQno9YO3.js +1 -0
  14. package/dist/client/assets/{el-form-item-DfWq_kSy.js → el-form-item-DF0zzQdH.js} +2 -2
  15. package/dist/client/assets/el-input-C_p2Qw42.js +1 -0
  16. package/dist/client/assets/el-loading-BaenpNzU.js +1 -0
  17. package/dist/client/assets/el-overlay-MbIUXSQ7.js +1 -0
  18. package/dist/client/assets/el-radio-group-COnCjCcz.js +1 -0
  19. package/dist/client/assets/el-skeleton-item-qj0eQP4s.js +1 -0
  20. package/dist/client/assets/el-switch-BZbXqB3_.js +1 -0
  21. package/dist/client/assets/el-tab-pane-w7RltRLd.js +1 -0
  22. package/dist/client/assets/el-table-column-OD8zhFcD.js +1 -0
  23. package/dist/client/assets/index-DwhULJXZ.js +2 -0
  24. package/dist/client/assets/{index-Bzz3tYbS.css → index-UtsV0Cvh.css} +1 -1
  25. package/dist/client/assets/{omit-BIIebEYo.js → omit-BAJQlviJ.js} +1 -1
  26. package/dist/client/assets/raf-B1Ry7ruA.js +1 -0
  27. package/dist/client/assets/{vue-vendor-Dwcr0jep.js → vue-vendor-ClSvefnQ.js} +1 -1
  28. package/dist/client/index.html +3 -3
  29. package/dist/server/shared/models/constants.d.ts +5 -0
  30. package/dist/server/shared/models/constants.d.ts.map +1 -1
  31. package/dist/server/shared/models/constants.js +4 -0
  32. package/dist/server/shared/models/server.model.d.ts +14 -0
  33. package/dist/server/shared/models/server.model.d.ts.map +1 -1
  34. package/dist/server/shared/models/server.model.js +27 -4
  35. package/dist/server/src/api/mcp/gateway.d.ts +10 -6
  36. package/dist/server/src/api/mcp/gateway.d.ts.map +1 -1
  37. package/dist/server/src/api/mcp/gateway.js +235 -69
  38. package/dist/server/src/api/web/hub-tools.d.ts.map +1 -1
  39. package/dist/server/src/api/web/hub-tools.js +2 -2
  40. package/dist/server/src/api/web/search.d.ts +1 -1
  41. package/dist/server/src/api/web/search.d.ts.map +1 -1
  42. package/dist/server/src/api/web/search.js +18 -16
  43. package/dist/server/src/api/web/sessions.d.ts +1 -27
  44. package/dist/server/src/api/web/sessions.d.ts.map +1 -1
  45. package/dist/server/src/api/web/sessions.js +8 -97
  46. package/dist/server/src/app.d.ts.map +1 -1
  47. package/dist/server/src/app.js +5 -0
  48. package/dist/server/src/cli/commands/status.js +39 -1
  49. package/dist/server/src/cli/commands/use-guide.d.ts +0 -8
  50. package/dist/server/src/cli/commands/use-guide.d.ts.map +1 -1
  51. package/dist/server/src/cli/commands/use-guide.js +28 -170
  52. package/dist/server/src/cli/server.d.ts +10 -0
  53. package/dist/server/src/cli/server.d.ts.map +1 -1
  54. package/dist/server/src/cli/server.js +31 -1
  55. package/dist/server/src/models/system-tools.constants.d.ts +1 -0
  56. package/dist/server/src/models/system-tools.constants.d.ts.map +1 -1
  57. package/dist/server/src/server/dev-server.js +2 -0
  58. package/dist/server/src/server/runner.d.ts.map +1 -1
  59. package/dist/server/src/server/runner.js +2 -0
  60. package/dist/server/src/services/connection/connection-manager.d.ts +2 -0
  61. package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
  62. package/dist/server/src/services/connection/connection-manager.js +14 -7
  63. package/dist/server/src/services/gateway/gateway.service.d.ts +13 -0
  64. package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -1
  65. package/dist/server/src/services/gateway/gateway.service.js +72 -0
  66. package/dist/server/src/services/gateway/global-transport.d.ts +20 -10
  67. package/dist/server/src/services/gateway/global-transport.d.ts.map +1 -1
  68. package/dist/server/src/services/gateway/global-transport.js +50 -34
  69. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -1
  70. package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +22 -6
  71. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -1
  72. package/dist/server/src/services/gateway/request-handlers/resources-handler.js +5 -1
  73. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -1
  74. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +3 -2
  75. package/dist/server/src/services/gateway/session-manager.d.ts +101 -0
  76. package/dist/server/src/services/gateway/session-manager.d.ts.map +1 -0
  77. package/dist/server/src/services/gateway/session-manager.js +256 -0
  78. package/dist/server/src/services/hub-tools/resource-generator.d.ts +1 -1
  79. package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
  80. package/dist/server/src/services/hub-tools/resource-generator.js +11 -9
  81. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -1
  82. package/dist/server/src/services/hub-tools/system-tool-definitions.js +7 -0
  83. package/dist/server/src/services/hub-tools.service.d.ts +1 -1
  84. package/dist/server/src/services/hub-tools.service.d.ts.map +1 -1
  85. package/dist/server/src/services/hub-tools.service.js +23 -15
  86. package/dist/server/src/services/system-tool-handler.js +1 -1
  87. package/dist/server/src/utils/json-utils.d.ts +9 -0
  88. package/dist/server/src/utils/json-utils.d.ts.map +1 -1
  89. package/dist/server/src/utils/json-utils.js +19 -0
  90. package/dist/server/src/utils/logger/index.d.ts +1 -1
  91. package/dist/server/src/utils/logger/index.d.ts.map +1 -1
  92. package/dist/server/src/utils/logger/index.js +1 -1
  93. package/dist/server/src/utils/logger/log-context.d.ts +1 -0
  94. package/dist/server/src/utils/logger/log-context.d.ts.map +1 -1
  95. package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -1
  96. package/dist/server/src/utils/logger/log-formatter.js +25 -11
  97. package/dist/server/src/utils/logger/log-output.d.ts +17 -1
  98. package/dist/server/src/utils/logger/log-output.d.ts.map +1 -1
  99. package/dist/server/src/utils/logger/log-output.js +46 -40
  100. package/dist/server/src/utils/logger/logger.d.ts.map +1 -1
  101. package/dist/server/src/utils/logger/logger.js +18 -2
  102. package/dist/server/src/utils/request-context.d.ts +8 -70
  103. package/dist/server/src/utils/request-context.d.ts.map +1 -1
  104. package/dist/server/src/utils/request-context.js +11 -70
  105. package/dist/server/src/utils/search-matcher.d.ts +6 -0
  106. package/dist/server/src/utils/search-matcher.d.ts.map +1 -0
  107. package/dist/server/src/utils/search-matcher.js +24 -0
  108. package/dist/server/tests/unit/config/config.schema.test.js +2 -1
  109. package/dist/server/tests/unit/server/runner.test.js +14 -7
  110. package/dist/server/tests/unit/services/gateway-session-mode.test.d.ts +2 -0
  111. package/dist/server/tests/unit/services/gateway-session-mode.test.d.ts.map +1 -0
  112. package/dist/server/tests/unit/services/gateway-session-mode.test.js +174 -0
  113. package/dist/server/tests/unit/services/hub-tools.service.test.js +299 -4
  114. package/dist/server/tests/unit/utils/config.test.js +14 -7
  115. package/dist/server/tests/unit/utils/log-output.test.d.ts +2 -0
  116. package/dist/server/tests/unit/utils/log-output.test.d.ts.map +1 -0
  117. package/dist/server/tests/unit/utils/log-output.test.js +198 -0
  118. package/dist/server/vitest.config.d.ts.map +1 -1
  119. package/dist/server/vitest.config.js +0 -2
  120. package/package.json +1 -1
  121. package/dist/client/assets/ResourcesView-CU0VbNy5.js +0 -1
  122. package/dist/client/assets/ServerDetail-bcQ8BVXR.js +0 -2
  123. package/dist/client/assets/SettingsView-B1DxbFP3.js +0 -1
  124. package/dist/client/assets/ToolCallDialog-DEapCO06.js +0 -1
  125. package/dist/client/assets/ToolsView-DA0u_bCw.js +0 -1
  126. package/dist/client/assets/_baseClone-B991Lvrt.js +0 -1
  127. package/dist/client/assets/el-input-5YzZrwir.js +0 -1
  128. package/dist/client/assets/el-loading-DE3FcxNH.js +0 -1
  129. package/dist/client/assets/el-overlay-BTeTueuN.js +0 -1
  130. package/dist/client/assets/el-radio-group-Y1E2bxIW.js +0 -1
  131. package/dist/client/assets/el-skeleton-item-DhgR50Jx.js +0 -1
  132. package/dist/client/assets/el-switch-fF--nMSD.js +0 -1
  133. package/dist/client/assets/el-tab-pane-rvS_KTwP.js +0 -1
  134. package/dist/client/assets/el-table-column-B1O8mY47.js +0 -1
  135. package/dist/client/assets/index-DkqV9kH4.js +0 -2
  136. package/dist/client/assets/raf-Cj-gATZv.js +0 -1
@@ -0,0 +1,198 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { hasDataUriImage, simplifyDataUriImages, simplifyImageContent, isToolsListResponse, formatMcpMessageForLogging } from '../../../src/utils/logger/log-output.js';
3
+ import { setJsonPrettyConfigGetter, setDevModeEnabled } from '../../../src/utils/json-utils.js';
4
+ describe('hasDataUriImage', () => {
5
+ it('should detect data:image/png;base64 in JSON', () => {
6
+ const json = JSON.stringify({
7
+ icons: [{ src: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUg==' }]
8
+ });
9
+ expect(hasDataUriImage(json)).toBe(true);
10
+ });
11
+ it('should detect data:image/jpeg;base64', () => {
12
+ const json = JSON.stringify({
13
+ icon: 'data:image/jpeg;base64,/9j/4AAQSkZJRg=='
14
+ });
15
+ expect(hasDataUriImage(json)).toBe(true);
16
+ });
17
+ it('should detect data:image/svg+xml;base64', () => {
18
+ const json = JSON.stringify({
19
+ icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0i'
20
+ });
21
+ expect(hasDataUriImage(json)).toBe(true);
22
+ });
23
+ it('should return false for JSON without data:image', () => {
24
+ const json = JSON.stringify({ name: 'test', value: 123 });
25
+ expect(hasDataUriImage(json)).toBe(false);
26
+ });
27
+ it('should return false for non-base64 data URIs', () => {
28
+ const json = JSON.stringify({ icon: 'https://example.com/icon.png' });
29
+ expect(hasDataUriImage(json)).toBe(false);
30
+ });
31
+ });
32
+ describe('simplifyDataUriImages', () => {
33
+ it('should replace base64 payload with [Truncated]', () => {
34
+ const input = JSON.stringify({
35
+ icons: [{ src: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUg==' }]
36
+ });
37
+ const result = simplifyDataUriImages(input);
38
+ expect(result).toContain('data:image/png;base64,[Truncated]');
39
+ expect(result).not.toContain('iVBORw0KGgoAAAANSUhEUg==');
40
+ });
41
+ it('should handle multiple data URIs in one JSON', () => {
42
+ const input = JSON.stringify({
43
+ icons: [{ src: 'data:image/png;base64,AAAA' }, { src: 'data:image/png;base64,BBBB' }]
44
+ });
45
+ const result = simplifyDataUriImages(input);
46
+ expect(result).toContain('data:image/png;base64,[Truncated]');
47
+ expect(result).not.toContain('AAAA');
48
+ expect(result).not.toContain('BBBB');
49
+ });
50
+ it('should leave non-data-URI strings unchanged', () => {
51
+ const input = JSON.stringify({ name: 'test', url: 'https://example.com/img.png' });
52
+ const result = simplifyDataUriImages(input);
53
+ expect(result).toBe(input);
54
+ });
55
+ it('should produce valid JSON after simplification', () => {
56
+ const input = JSON.stringify({
57
+ icons: [{ src: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUg==' }]
58
+ });
59
+ const result = simplifyDataUriImages(input);
60
+ expect(() => JSON.parse(result)).not.toThrow();
61
+ });
62
+ });
63
+ describe('simplifyImageContent', () => {
64
+ it('should replace MCP image content data with [Truncated]', () => {
65
+ const message = {
66
+ jsonrpc: '2.0',
67
+ id: 1,
68
+ result: {
69
+ content: [{ type: 'image', data: 'base64payload', mimeType: 'image/png' }]
70
+ }
71
+ };
72
+ const json = JSON.stringify(message);
73
+ const result = simplifyImageContent(json);
74
+ expect(result).toContain('"[Truncated]"');
75
+ expect(result).not.toContain('base64payload');
76
+ });
77
+ });
78
+ describe('isToolsListResponse', () => {
79
+ it('should return true for tools/list response', () => {
80
+ const json = JSON.stringify({
81
+ jsonrpc: '2.0',
82
+ id: 1,
83
+ result: { tools: [{ name: 'tool1' }] }
84
+ });
85
+ expect(isToolsListResponse(json)).toBe(true);
86
+ });
87
+ it('should return true for resources/list response', () => {
88
+ const json = JSON.stringify({
89
+ jsonrpc: '2.0',
90
+ id: 1,
91
+ result: { resources: [{ uri: 'res1' }] }
92
+ });
93
+ expect(isToolsListResponse(json)).toBe(true);
94
+ });
95
+ it('should return false for initialize response with capabilities (not result.tools)', () => {
96
+ const json = JSON.stringify({
97
+ jsonrpc: '2.0',
98
+ id: 0,
99
+ result: {
100
+ capabilities: { tools: {}, resources: {} },
101
+ serverInfo: { name: 'test', version: '1.0' }
102
+ }
103
+ });
104
+ expect(isToolsListResponse(json)).toBe(false);
105
+ });
106
+ });
107
+ describe('formatMcpMessageForLogging', () => {
108
+ beforeEach(() => {
109
+ setJsonPrettyConfigGetter(null);
110
+ setDevModeEnabled(false);
111
+ });
112
+ it('should truncate data:image URIs in initialize response with icons', () => {
113
+ const message = {
114
+ jsonrpc: '2.0',
115
+ id: 0,
116
+ result: {
117
+ capabilities: {
118
+ tools: {},
119
+ resources: {}
120
+ },
121
+ protocolVersion: '2025-11-25',
122
+ serverInfo: {
123
+ name: 'github-mcp-server',
124
+ title: 'GitHub MCP Server',
125
+ version: 'github-mcp-server/remote-abc123',
126
+ icons: [
127
+ {
128
+ src: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAADK0lEQVR',
129
+ mimeType: 'image/png',
130
+ theme: 'light'
131
+ },
132
+ {
133
+ src: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAB8ElEQVR',
134
+ mimeType: 'image/png',
135
+ theme: 'dark'
136
+ }
137
+ ]
138
+ }
139
+ }
140
+ };
141
+ const result = formatMcpMessageForLogging(message);
142
+ // Must contain [Truncated] placeholder
143
+ expect(result).toContain('[Truncated]');
144
+ // Must NOT contain the raw base64 payload
145
+ expect(result).not.toContain('iVBORw0KGgoAAAANSUhEUg');
146
+ // Must still contain server info
147
+ expect(result).toContain('github-mcp-server');
148
+ });
149
+ it('should handle initialize response without icons normally', () => {
150
+ const message = {
151
+ jsonrpc: '2.0',
152
+ id: 0,
153
+ result: {
154
+ capabilities: { tools: {} },
155
+ serverInfo: { name: 'test-server', version: '1.0' }
156
+ }
157
+ };
158
+ const result = formatMcpMessageForLogging(message);
159
+ // Should be valid JSON (since isToolsListResponse returns null for empty capabilities,
160
+ // but now hasDataUriImage should be checked first and return false, then
161
+ // isToolsListResponse returns true and returns null, falling to stringifyForLogging)
162
+ expect(result).toContain('test-server');
163
+ });
164
+ it('should simplify tools/list response to count', () => {
165
+ const message = {
166
+ jsonrpc: '2.0',
167
+ id: 1,
168
+ result: { tools: [{ name: 't1' }, { name: 't2' }, { name: 't3' }] }
169
+ };
170
+ const result = formatMcpMessageForLogging(message);
171
+ expect(result).toBe('Returned 3 tools');
172
+ });
173
+ it('should simplify resources/list response to count', () => {
174
+ const message = {
175
+ jsonrpc: '2.0',
176
+ id: 1,
177
+ result: { resources: [{ uri: 'r1' }, { uri: 'r2' }] }
178
+ };
179
+ const result = formatMcpMessageForLogging(message);
180
+ expect(result).toBe('Returned 2 resources');
181
+ });
182
+ it('should not simplify capabilities response (output full JSON)', () => {
183
+ const message = {
184
+ jsonrpc: '2.0',
185
+ id: 1,
186
+ result: {
187
+ capabilities: {
188
+ tools: { list: {}, call: {} },
189
+ resources: { list: {} }
190
+ }
191
+ }
192
+ };
193
+ const result = formatMcpMessageForLogging(message);
194
+ // Capabilities are no longer simplified; expect full JSON output
195
+ expect(result).toContain('capabilities');
196
+ expect(result).toContain('list');
197
+ });
198
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../../vitest.config.ts"],"names":[],"mappings":";AAUA,wBA8CG"}
1
+ {"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../../vitest.config.ts"],"names":[],"mappings":";AAUA,wBA4CG"}
@@ -44,8 +44,6 @@ export default defineConfig({
44
44
  'tests/unit/**/*.test.ts',
45
45
  'tests/integration/**/*.test.ts',
46
46
  'tests/contract/**/*.test.ts',
47
- 'tests/evaluation/**/*.test.ts',
48
- 'src/**/*.test.ts',
49
47
  'tests/temp/**/*.test.ts'
50
48
  ],
51
49
  exclude: ['tests/unit/frontend/**/*']
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loop_ouroboros/mcp-hub-lite",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "A lightweight MCP management platform designed for independent developers",
5
5
  "license": "MIT",
6
6
  "author": "loop_ouroboros",
@@ -1 +0,0 @@
1
- import{u as T,U as $,b as E,a1 as V,K as N,j as B}from"./index-DkqV9kH4.js";import{a as j,b as z}from"./el-table-column-B1O8mY47.js";import{E as L,a as S}from"./el-input-5YzZrwir.js";import{t as I,r as _,j as q,c as A,A as h,C as l,$ as r,O as a,u,G as o,y as O,a0 as b,ab as U,x as m}from"./vue-vendor-Dwcr0jep.js";import{_ as D}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./_baseClone-B991Lvrt.js";import"./omit-BIIebEYo.js";import"./event-BB_Ol6Sd.js";import"./raf-Cj-gATZv.js";const F={class:"resources-view py-6 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full h-full flex flex-col overflow-hidden bg-gray-50 dark:bg-[#0f172a] transition-colors duration-300"},G={class:"mb-6 shrink-0"},K={class:"text-2xl font-semibold text-gray-900 dark:text-white mb-4"},M={class:"relative"},P={class:"flex-1 overflow-y-auto custom-scrollbar space-y-4 pr-2"},Q={key:0,class:"flex flex-col items-center justify-center py-12 text-gray-400"},H={class:"flex items-center gap-2"},J=["title"],W=["title"],X=I({__name:"ResourcesView",setup(Y){const v=U(),y=T(),c=_(""),d=_({});q(async()=>{await w()});async function w(){try{d.value=await y.fetchAllResources()}catch(e){console.error("Failed to load resources:",e)}}const p=A(()=>{const e=[];for(const[,n]of Object.entries(d.value))e.push(...n);if(!c.value)return e;const s=c.value.toLowerCase();return e.filter(n=>n.name.toLowerCase().includes(s)||n.uri.toLowerCase().includes(s))});function x(e){const s=e.replace("hub://","").split("/");return s.length>=2?s[1]??"":""}function g(e){const s=e.serverName||x(e.uri);v.push({name:"resource-detail",params:{name:s},query:{uri:e.uri,name:e.name,mimeType:e.mimeType}})}return(e,s)=>{const n=L,f=E,i=z,k=S,C=B,R=j;return m(),h("div",F,[l("div",G,[l("h2",K,r(e.$t("resources.title")),1),l("div",M,[a(n,{modelValue:c.value,"onUpdate:modelValue":s[0]||(s[0]=t=>c.value=t),placeholder:e.$t("resources.searchPlaceholder"),class:"w-full",size:"large","prefix-icon":u($),clearable:""},null,8,["modelValue","placeholder","prefix-icon"])])]),l("div",P,[p.value.length===0?(m(),h("div",Q,[a(f,{size:48,class:"mb-4 opacity-50"},{default:o(()=>[a(u(V))]),_:1}),l("p",null,r(e.$t("resources.noResources")),1)])):(m(),O(R,{key:1,data:p.value,style:{width:"100%"},class:"custom-table"},{default:o(()=>[a(i,{prop:"name",label:e.$t("common.name"),"min-width":"350"},{default:o(({row:t})=>[l("div",H,[a(f,null,{default:o(()=>[a(u(N))]),_:1}),l("span",{class:"font-medium truncate",title:t.name},r(t.name),9,J)])]),_:1},8,["label"]),a(i,{prop:"uri",label:e.$t("common.uri"),"min-width":"350"},{default:o(({row:t})=>[l("span",{class:"truncate block",title:t.uri},r(t.uri),9,W)]),_:1},8,["label"]),a(i,{prop:"mimeType",label:e.$t("common.mimeType"),width:"180"},{default:o(({row:t})=>[a(k,{size:"small",type:"success",effect:"plain"},{default:o(()=>[b(r(t.mimeType||"unknown"),1)]),_:2},1024)]),_:1},8,["label"]),a(i,{label:"",width:"100",align:"right"},{default:o(({row:t})=>[a(C,{size:"small",plain:"",onClick:Z=>g(t)},{default:o(()=>[b(r(e.$t("action.view")),1)]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]))])])}}}),ie=D(X,[["__scopeId","data-v-f45ae935"]]);export{ie as default};
@@ -1,2 +0,0 @@
1
- import{q as We,x as ct,y as dt,_ as mt,T as vt,b as Se,z as ft,j as me,A as pt,B as Ge,C as Qe,D as Ze,F as gt,G as Xe,H as ht,I as yt,v as at,r as Oe,n as bt,k as ue,p as fe,J as _t,K as $t,E as V,L as Ct,M as wt,N as xt,O as kt,P as St,Q as Vt,u as Me,a as It,R as Tt,s as Ye,S as Dt,t as Et,o as At}from"./index-DkqV9kH4.js";import{E as Ut,a as Bt}from"./el-tab-pane-rvS_KTwP.js";import{n as be,a2 as Ce,x as u,y as H,G as v,H as Ue,O as s,C as n,J as X,I as xe,K as Ke,A as b,U as we,V as P,$ as o,aj as _e,v as Rt,L as Be,a0 as D,M as zt,t as ce,c as q,r as M,Q as Nt,ak as ze,h as le,j as jt,F as Ot,al as Mt,p as Ne,a as Pe,a7 as lt,a8 as nt,l as et,d as st,aa as ve,u as _,P as Y,ai as ae,Z as Pt,ac as Lt,ab as Le,am as Ft,k as Re}from"./vue-vendor-Dwcr0jep.js";import{E as Ve,a as Fe}from"./el-input-5YzZrwir.js";import{_ as Ht,a as ot}from"./ServerStatusTags.vue_vue_type_script_setup_true_lang-C8gQlxGE.js";import{c as Jt,u as qt,d as Wt,e as Gt,a as He,b as Je,E as qe}from"./el-overlay-BTeTueuN.js";import{i as Qt,E as rt,a as it}from"./el-switch-fF--nMSD.js";import{E as Zt,a as Xt}from"./el-radio-group-Y1E2bxIW.js";import{_ as Ie}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{E as Yt,a as Kt,b as ea}from"./el-table-column-B1O8mY47.js";import{T as ta}from"./ToolCallDialog-DEapCO06.js";import"./raf-Cj-gATZv.js";import"./event-BB_Ol6Sd.js";import"./omit-BIIebEYo.js";import"./_baseClone-B991Lvrt.js";const je="_trap-focus-children",ye=[],tt=e=>{if(ye.length===0)return;const m=ct(e),l=ye[ye.length-1][je];if(l.length>0&&m===dt.tab){if(l.length===1){e.preventDefault(),document.activeElement!==l[0]&&l[0].focus();return}const c=e.shiftKey,t=e.target===l[0],g=e.target===l[l.length-1];t&&c&&(e.preventDefault(),l[l.length-1].focus()),g&&!c&&(e.preventDefault(),l[0].focus())}},aa={beforeMount(e){e[je]=We(e),ye.push(e),ye.length<=1&&document.addEventListener("keydown",tt)},updated(e){be(()=>{e[je]=We(e)})},unmounted(){ye.shift(),ye.length===0&&document.removeEventListener("keydown",tt)}},la=ce({name:"ElMessageBox",directives:{TrapFocus:aa},components:{ElButton:me,ElFocusTrap:ft,ElInput:Ve,ElOverlay:Jt,ElIcon:Se,...vt},inheritAttrs:!1,props:{buttonSize:{type:String,validator:Qt},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,overflow:Boolean,roundButton:Boolean,container:{type:String,default:"body"},boxType:{type:String,default:""}},emits:["vanish","action"],setup(e,{emit:m}){const{locale:l,zIndex:c,ns:t,size:g}=pt("message-box",q(()=>e.buttonSize)),{t:i}=l,{nextZIndex:I}=c,B=M(!1),y=Nt({autofocus:!0,beforeClose:null,callback:null,cancelButtonText:"",cancelButtonClass:"",confirmButtonText:"",confirmButtonClass:"",customClass:"",customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:"",closeIcon:"",inputPattern:null,inputPlaceholder:"",inputType:"text",inputValue:"",inputValidator:void 0,inputErrorMessage:"",message:"",modalFade:!0,modalClass:"",showCancelButton:!1,showConfirmButton:!0,type:"",title:void 0,showInput:!1,action:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonLoadingIcon:ze(Ge),cancelButtonLoadingIcon:ze(Ge),confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:I()}),a=q(()=>{const U=y.type;return{[t.bm("icon",U)]:U&&Qe[U]}}),f=Ze(),E=Ze(),C=q(()=>{const U=y.type;return y.icon||U&&Qe[U]||""}),$=q(()=>!!y.message),h=M(),L=M(),A=M(),ne=M(),oe=M(),re=q(()=>y.confirmButtonClass);le(()=>y.inputValue,async U=>{await be(),e.boxType==="prompt"&&U&&W()},{immediate:!0}),le(()=>B.value,U=>{var J,K;U&&(e.boxType!=="prompt"&&(y.autofocus?A.value=(K=(J=oe.value)==null?void 0:J.$el)!=null?K:h.value:A.value=h.value),y.zIndex=I()),e.boxType==="prompt"&&(U?be().then(()=>{var ge;ne.value&&ne.value.$el&&(y.autofocus?A.value=(ge=te())!=null?ge:h.value:A.value=h.value)}):(y.editorErrorMessage="",y.validateError=!1))});const de=q(()=>e.draggable),j=q(()=>e.overflow),{isDragging:p}=qt(h,L,de,j);jt(async()=>{await be(),e.closeOnHashChange&&window.addEventListener("hashchange",R)}),Ot(()=>{e.closeOnHashChange&&window.removeEventListener("hashchange",R)});function R(){B.value&&(B.value=!1,be(()=>{y.action&&m("action",y.action)}))}const d=()=>{e.closeOnClickModal&&x(y.distinguishCancelAndClose?"close":"cancel")},w=Gt(d),F=U=>{if(y.inputType!=="textarea")return U.preventDefault(),x("confirm")},x=U=>{var J;e.boxType==="prompt"&&U==="confirm"&&!W()||(y.action=U,y.beforeClose?(J=y.beforeClose)==null||J.call(y,U,y,R):R())},W=()=>{if(e.boxType==="prompt"){const U=y.inputPattern;if(U&&!U.test(y.inputValue||""))return y.editorErrorMessage=y.inputErrorMessage||i("el.messagebox.error"),y.validateError=!0,!1;const J=y.inputValidator;if(Ne(J)){const K=J(y.inputValue);if(K===!1)return y.editorErrorMessage=y.inputErrorMessage||i("el.messagebox.error"),y.validateError=!0,!1;if(Pe(K))return y.editorErrorMessage=K,y.validateError=!0,!1}}return y.editorErrorMessage="",y.validateError=!1,!0},te=()=>{var U,J;const K=(U=ne.value)==null?void 0:U.$refs;return(J=K?.input)!=null?J:K?.textarea},ie=()=>{x("close")},Z=()=>{e.closeOnPressEscape&&ie()};return e.lockScroll&&Wt(B,{ns:t}),{...Mt(y),ns:t,overlayEvent:w,visible:B,hasMessage:$,typeClass:a,contentId:f,inputId:E,btnSize:g,iconComponent:C,confirmButtonClasses:re,rootRef:h,focusStartRef:A,headerRef:L,inputRef:ne,isDragging:p,confirmRef:oe,doClose:R,handleClose:ie,onCloseRequested:Z,handleWrapperClick:d,handleInputEnter:F,handleAction:x,t:i}}}),na=["aria-label","aria-describedby"],sa=["aria-label"],oa=["id"];function ra(e,m,l,c,t,g){const i=Ce("el-icon"),I=Ce("el-input"),B=Ce("el-button"),y=Ce("el-focus-trap"),a=Ce("el-overlay");return u(),H(zt,{name:"fade-in-linear",onAfterLeave:m[11]||(m[11]=f=>e.$emit("vanish")),persisted:""},{default:v(()=>[Ue(s(a,{"z-index":e.zIndex,"overlay-class":[e.ns.is("message-box"),e.modalClass],mask:e.modal},{default:v(()=>[n("div",{role:"dialog","aria-label":e.title,"aria-modal":"true","aria-describedby":e.showInput?void 0:e.contentId,class:X(`${e.ns.namespace.value}-overlay-message-box`),onClick:m[8]||(m[8]=(...f)=>e.overlayEvent.onClick&&e.overlayEvent.onClick(...f)),onMousedown:m[9]||(m[9]=(...f)=>e.overlayEvent.onMousedown&&e.overlayEvent.onMousedown(...f)),onMouseup:m[10]||(m[10]=(...f)=>e.overlayEvent.onMouseup&&e.overlayEvent.onMouseup(...f))},[s(y,{loop:"",trapped:e.visible,"focus-trap-el":e.rootRef,"focus-start-el":e.focusStartRef,onReleaseRequested:e.onCloseRequested},{default:v(()=>[n("div",{ref:"rootRef",class:X([e.ns.b(),e.customClass,e.ns.is("draggable",e.draggable),e.ns.is("dragging",e.isDragging),{[e.ns.m("center")]:e.center}]),style:Ke(e.customStyle),tabindex:"-1",onClick:m[7]||(m[7]=xe(()=>{},["stop"]))},[e.title!==null&&e.title!==void 0?(u(),b("div",{key:0,ref:"headerRef",class:X([e.ns.e("header"),{"show-close":e.showClose}])},[n("div",{class:X(e.ns.e("title"))},[e.iconComponent&&e.center?(u(),H(i,{key:0,class:X([e.ns.e("status"),e.typeClass])},{default:v(()=>[(u(),H(we(e.iconComponent)))]),_:1},8,["class"])):P("v-if",!0),n("span",null,o(e.title),1)],2),e.showClose?(u(),b("button",{key:0,type:"button",class:X(e.ns.e("headerbtn")),"aria-label":e.t("el.messagebox.close"),onClick:m[0]||(m[0]=f=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel")),onKeydown:m[1]||(m[1]=_e(xe(f=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"]))},[s(i,{class:X(e.ns.e("close"))},{default:v(()=>[(u(),H(we(e.closeIcon||"close")))]),_:1},8,["class"])],42,sa)):P("v-if",!0)],2)):P("v-if",!0),n("div",{id:e.contentId,class:X(e.ns.e("content"))},[n("div",{class:X(e.ns.e("container"))},[e.iconComponent&&!e.center&&e.hasMessage?(u(),H(i,{key:0,class:X([e.ns.e("status"),e.typeClass])},{default:v(()=>[(u(),H(we(e.iconComponent)))]),_:1},8,["class"])):P("v-if",!0),e.hasMessage?(u(),b("div",{key:1,class:X(e.ns.e("message"))},[Rt(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(u(),H(we(e.showInput?"label":"p"),{key:1,for:e.showInput?e.inputId:void 0,innerHTML:e.message},null,8,["for","innerHTML"])):(u(),H(we(e.showInput?"label":"p"),{key:0,for:e.showInput?e.inputId:void 0,textContent:o(e.message)},null,8,["for","textContent"]))])],2)):P("v-if",!0)],2),Ue(n("div",{class:X(e.ns.e("input"))},[s(I,{id:e.inputId,ref:"inputRef",modelValue:e.inputValue,"onUpdate:modelValue":m[2]||(m[2]=f=>e.inputValue=f),type:e.inputType,placeholder:e.inputPlaceholder,"aria-invalid":e.validateError,class:X({invalid:e.validateError}),onKeydown:_e(e.handleInputEnter,["enter"])},null,8,["id","modelValue","type","placeholder","aria-invalid","class","onKeydown"]),n("div",{class:X(e.ns.e("errormsg")),style:Ke({visibility:e.editorErrorMessage?"visible":"hidden"})},o(e.editorErrorMessage),7)],2),[[Be,e.showInput]])],10,oa),n("div",{class:X(e.ns.e("btns"))},[e.showCancelButton?(u(),H(B,{key:0,loading:e.cancelButtonLoading,"loading-icon":e.cancelButtonLoadingIcon,class:X([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:m[3]||(m[3]=f=>e.handleAction("cancel")),onKeydown:m[4]||(m[4]=_e(xe(f=>e.handleAction("cancel"),["prevent"]),["enter"]))},{default:v(()=>[D(o(e.cancelButtonText||e.t("el.messagebox.cancel")),1)]),_:1},8,["loading","loading-icon","class","round","size"])):P("v-if",!0),Ue(s(B,{ref:"confirmRef",type:"primary",loading:e.confirmButtonLoading,"loading-icon":e.confirmButtonLoadingIcon,class:X([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:m[5]||(m[5]=f=>e.handleAction("confirm")),onKeydown:m[6]||(m[6]=_e(xe(f=>e.handleAction("confirm"),["prevent"]),["enter"]))},{default:v(()=>[D(o(e.confirmButtonText||e.t("el.messagebox.confirm")),1)]),_:1},8,["loading","loading-icon","class","round","disabled","size"]),[[Be,e.showConfirmButton]])],2)],6)]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])],42,na)]),_:3},8,["z-index","overlay-class","mask"]),[[Be,e.visible]])]),_:3})}var ia=mt(la,[["render",ra],["__file","/home/runner/work/element-plus/element-plus/packages/components/message-box/src/index.vue"]]);const ke=new Map,ua=e=>{let m=document.body;return e.appendTo&&(Pe(e.appendTo)&&(m=document.querySelector(e.appendTo)),Xe(e.appendTo)&&(m=e.appendTo),Xe(m)||(m=document.body)),m},ca=(e,m,l=null)=>{const c=s(ia,e,Ne(e.message)||lt(e.message)?{default:Ne(e.message)?e.message:()=>e.message}:null);return c.appContext=l,nt(c,m),ua(e).appendChild(m.firstElementChild),c.component},da=()=>document.createElement("div"),ma=(e,m)=>{const l=da();e.onVanish=()=>{nt(null,l),ke.delete(t)},e.onAction=g=>{const i=ke.get(t);let I;e.showInput?I={value:t.inputValue,action:g}:I=g,e.callback?e.callback(I,c.proxy):g==="cancel"||g==="close"?e.distinguishCancelAndClose&&g!=="cancel"?i.reject("close"):i.reject("cancel"):i.resolve(I)};const c=ca(e,l,m),t=c.proxy;for(const g in e)et(e,g)&&!et(t.$props,g)&&(g==="closeIcon"&&st(e[g])?t[g]=ze(e[g]):t[g]=e[g]);return t.visible=!0,t};function $e(e,m=null){if(!gt)return Promise.reject();let l;return Pe(e)||lt(e)?e={message:e}:l=e.callback,new Promise((c,t)=>{const g=ma(e,m??$e._context);ke.set(g,{options:e,callback:l,resolve:c,reject:t})})}const va=["alert","confirm","prompt"],fa={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};va.forEach(e=>{$e[e]=pa(e)});function pa(e){return(m,l,c,t)=>{let g="";return st(l)?(c=l,g=""):ht(l)?g="":g=l,$e(Object.assign({title:g,message:m,type:"",...fa[e]},c,{boxType:e}),t)}}$e.close=()=>{ke.forEach((e,m)=>{m.doClose()}),ke.clear()};$e._context=null;const he=$e;he.install=e=>{he._context=e._context,e.config.globalProperties.$msgbox=he,e.config.globalProperties.$messageBox=he,e.config.globalProperties.$alert=he.alert,e.config.globalProperties.$confirm=he.confirm,e.config.globalProperties.$prompt=he.prompt};const ut=he,ga={class:"flex items-center justify-between shrink-0"},ha={class:"flex items-center gap-4"},ya={class:"flex flex-col items-start gap-2"},ba={class:"flex items-center gap-2"},_a={class:"text-2xl font-bold text-gray-900 dark:text-white"},$a={class:"flex gap-2"},Ca=ce({__name:"ServerDetailHeader",props:{server:{}},emits:["back","delete","restart-all","start-all","stop-all"],setup(e,{emit:m}){const l=e,c=m;ve();const t=q(()=>l.server.rawV11Config?.instances?.length?l.server.rawV11Config.instances.length:l.server.instances?.length?l.server.instances.length:1),g=q(()=>t.value),i=q(()=>l.server.instances?.length?l.server.instances.filter(C=>C.status==="online").length:l.server.status==="online"?1:0),I=q(()=>l.server.instances?.length?l.server.instances.filter(C=>C.status!=="online").length:t.value>1?t.value-i.value:l.server.status!=="online"?1:0);function B(){c("back")}function y(){c("delete")}function a(){c("restart-all")}function f(){c("start-all")}function E(){c("stop-all")}return(C,$)=>{const h=me,L=Fe;return u(),b("div",ga,[n("div",ha,[s(h,{icon:_(yt),plain:"",onClick:B,class:"shrink-0"},{default:v(()=>[D(o(C.$t("action.back")),1)]),_:1},8,["icon"]),n("div",ya,[n("div",ba,[n("h2",_a,o(e.server.name),1),e.server.version?(u(),H(L,{key:0,size:"small",class:"ml-2"},{default:v(()=>[D(o(e.server.version),1)]),_:1})):P("",!0)]),s(Ht,{server:e.server},null,8,["server"])])]),n("div",$a,[I.value>0?(u(),H(h,{key:0,type:"success",icon:_(at),onClick:f},{default:v(()=>[D(o(C.$t("action.startAll"))+" ("+o(I.value)+") ",1)]),_:1},8,["icon"])):P("",!0),i.value>0?(u(),H(h,{key:1,type:"primary",icon:_(Oe),onClick:a},{default:v(()=>[D(o(C.$t("action.restartAll"))+" ("+o(g.value)+") ",1)]),_:1},8,["icon"])):P("",!0),i.value>0?(u(),H(h,{key:2,type:"warning",icon:_(bt),onClick:E},{default:v(()=>[D(o(C.$t("action.stopAll"))+" ("+o(i.value)+") ",1)]),_:1},8,["icon"])):P("",!0),s(h,{type:"danger",icon:_(ue),onClick:y},{default:v(()=>[D(o(C.$t("action.deleteServer")),1)]),_:1},8,["icon"])])])}}}),wa={class:"config-template-form h-full flex flex-col min-h-0"},xa={class:"space-y-4 flex-1 overflow-y-auto min-h-0"},ka={class:"px-4"},Sa={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Va={key:0,class:"px-4"},Ia={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ta={key:1,class:"px-4"},Da={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ea={key:2,class:"px-4"},Aa={class:"flex items-center justify-between mb-2"},Ua={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Ba={key:0,class:"space-y-2"},Ra={class:"px-4"},za={class:"flex items-center justify-between mb-2"},Na={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},ja={key:0,class:"space-y-2"},Oa={key:3,class:"px-4"},Ma={class:"flex items-center justify-between mb-2"},Pa={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},La={key:0,class:"space-y-2"},Fa={class:"px-4"},Ha={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ja={class:"px-4"},qa={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Wa={key:4,class:"px-4"},Ga={class:"flex items-center justify-between mb-2"},Qa={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Za={key:0,class:"flex gap-2 items-start"},Xa={class:"px-4"},Ya={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ka={class:"flex gap-2 pt-4 pb-4 border-t border-gray-200 dark:border-gray-700 px-4"},el=ce({__name:"ConfigTemplateForm",props:{config:{}},emits:["update:template","save","edit-json"],setup(e,{emit:m}){const l=e,c=m;ve();const t=M({...l.config,template:{...l.config.template,instanceSelectionStrategy:l.config.template.instanceSelectionStrategy||"random"}});let g=0,i=0;const I=M({}),B=M({});le(()=>l.config,p=>{t.value={...p,template:{...p.template,instanceSelectionStrategy:p.template.instanceSelectionStrategy||"random"}},a(),f()},{immediate:!0});const y=q({get:()=>t.value?.template?.timeout?t.value.template.timeout/1e3:60,set:p=>{t.value&&(t.value.template.timeout=p*1e3)}});function a(){t.value?.template?.env&&(I.value={},Object.keys(t.value.template.env).forEach(p=>{I.value[p]=`env-${g++}`}))}function f(){t.value?.template?.headers&&(B.value={},Object.keys(t.value.template.headers).forEach(p=>{B.value[p]=`header-${i++}`}))}function E(){t.value.template.args||(t.value.template.args=[]),t.value.template.args.push(""),c("update:template",{...t.value.template})}function C(p){t.value.template.args?.splice(p,1),c("update:template",{...t.value.template})}function $(){t.value.template.env||(t.value.template.env={});const p=`NEW_VAR_${Object.keys(t.value.template.env).length}`;t.value.template.env[p]="",I.value[p]=`env-${g++}`,c("update:template",{...t.value.template})}function h(p){delete t.value.template.env[p],delete I.value[p],c("update:template",{...t.value.template})}function L(p,R){if(p===R)return;const d=t.value.template.env[p]||"",w=I.value[p]||`env-${g++}`;delete t.value.template.env[p],delete I.value[p],t.value.template.env[R]=d,I.value[R]=w,c("update:template",{...t.value.template})}function A(){t.value.template.headers||(t.value.template.headers={});const p=`NEW_HEADER_${Object.keys(t.value.template.headers).length}`;t.value.template.headers[p]="",B.value[p]=`header-${i++}`,c("update:template",{...t.value.template})}function ne(p){delete t.value.template.headers[p],delete B.value[p],c("update:template",{...t.value.template})}function oe(p,R){if(p===R)return;const d=t.value.template.headers[p]||"",w=B.value[p]||`header-${i++}`;delete t.value.template.headers[p],delete B.value[p],t.value.template.headers[R]=d,B.value[R]=w,c("update:template",{...t.value.template})}function re(){t.value.template.proxy?t.value.template.proxy=void 0:t.value.template.proxy={url:""},c("update:template",{...t.value.template})}function de(){const p={command:t.value.template.command,args:t.value.template.args,env:t.value.template.env,headers:t.value.template.headers,type:t.value.template.type,timeout:t.value.template.timeout,url:t.value.template.url,aggregatedTools:t.value.template.aggregatedTools,description:t.value.template.description,proxy:t.value.template.proxy,instanceSelectionStrategy:t.value.template.instanceSelectionStrategy};c("update:template",p),c("save")}function j(){c("edit-json")}return(p,R)=>{const d=Xt,w=Zt,F=Ve,x=me,W=rt,te=Je,ie=He;return u(),b("div",wa,[n("div",xa,[n("div",ka,[n("label",Sa,o(p.$t("serverDetail.config.transport")),1),s(w,{modelValue:t.value.template.type,"onUpdate:modelValue":R[0]||(R[0]=Z=>t.value.template.type=Z),class:"flex gap-4"},{default:v(()=>[s(d,{value:"stdio"},{default:v(()=>[D(o(p.$t("serverDetail.config.transportStdio")),1)]),_:1}),s(d,{value:"sse"},{default:v(()=>[D(o(p.$t("serverDetail.config.transportSse")),1)]),_:1}),s(d,{value:"streamable-http"},{default:v(()=>[D(o(p.$t("serverDetail.config.transportHttp")),1)]),_:1})]),_:1},8,["modelValue"])]),t.value.template.type==="stdio"?(u(),b("div",Va,[n("label",Ia,o(p.$t("serverDetail.config.executable")),1),s(F,{modelValue:t.value.template.command,"onUpdate:modelValue":R[1]||(R[1]=Z=>t.value.template.command=Z)},null,8,["modelValue"])])):(u(),b("div",Ta,[n("label",Da,o(p.$t("serverDetail.config.url")),1),s(F,{modelValue:t.value.template.url,"onUpdate:modelValue":R[2]||(R[2]=Z=>t.value.template.url=Z)},null,8,["modelValue"])])),t.value.template.type==="stdio"?(u(),b("div",Ea,[n("div",Aa,[n("label",Ua,o(p.$t("serverDetail.config.args")),1),s(x,{size:"small",icon:_(fe),onClick:E},{default:v(()=>[D(o(p.$t("serverDetail.config.addArg")),1)]),_:1},8,["icon"])]),t.value.template.args&&t.value.template.args.length>0?(u(),b("div",Ba,[(u(!0),b(Y,null,ae(t.value.template.args,(Z,U)=>(u(),b("div",{key:U,class:"flex gap-2 px-4"},[s(F,{modelValue:t.value.template.args[U],"onUpdate:modelValue":J=>t.value.template.args[U]=J,class:"flex-1"},null,8,["modelValue","onUpdate:modelValue"]),s(x,{size:"small",type:"danger",icon:_(ue),onClick:J=>C(U)},null,8,["icon","onClick"])]))),128))])):P("",!0)])):P("",!0),n("div",Ra,[n("div",za,[n("label",Na,o(p.$t("serverDetail.config.env")),1),s(x,{size:"small",icon:_(fe),onClick:$},{default:v(()=>[D(o(p.$t("serverDetail.config.addEnv")),1)]),_:1},8,["icon"])]),t.value.template.env&&Object.keys(t.value.template.env).length>0?(u(),b("div",ja,[(u(!0),b(Y,null,ae(t.value.template.env,(Z,U)=>(u(),b("div",{key:I.value[U],class:"flex gap-2 items-start px-4",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(F,{"model-value":U,style:{width:"30%","min-width":"150px"},placeholder:p.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":J=>L(U,J)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(F,{modelValue:t.value.template.env[U],"onUpdate:modelValue":J=>t.value.template.env[U]=J,style:{flex:"1"},placeholder:p.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(x,{size:"small",type:"danger",icon:_(ue),onClick:J=>h(U)},null,8,["icon","onClick"])]))),128))])):P("",!0)]),t.value.template.type!=="stdio"?(u(),b("div",Oa,[n("div",Ma,[n("label",Pa,o(p.$t("serverDetail.config.headers")),1),s(x,{size:"small",icon:_(fe),onClick:A},{default:v(()=>[D(o(p.$t("serverDetail.config.addHeader")),1)]),_:1},8,["icon"])]),t.value.template.headers&&Object.keys(t.value.template.headers).length>0?(u(),b("div",La,[(u(!0),b(Y,null,ae(t.value.template.headers,(Z,U)=>(u(),b("div",{key:B.value[U],class:"flex gap-2 items-start px-4",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(F,{"model-value":U,style:{width:"30%","min-width":"150px"},placeholder:p.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":J=>oe(U,J)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(F,{modelValue:t.value.template.headers[U],"onUpdate:modelValue":J=>t.value.template.headers[U]=J,style:{flex:"1"},placeholder:p.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(x,{size:"small",type:"danger",icon:_(ue),onClick:J=>ne(U)},null,8,["icon","onClick"])]))),128))])):P("",!0)])):P("",!0),n("div",Fa,[n("label",Ha,o(p.$t("serverDetail.config.timeout")),1),s(W,{modelValue:y.value,"onUpdate:modelValue":R[3]||(R[3]=Z=>y.value=Z),min:1,max:3600},null,8,["modelValue"])]),n("div",Ja,[n("label",qa,o(p.$t("common.description")),1),s(F,{modelValue:t.value.template.description,"onUpdate:modelValue":R[4]||(R[4]=Z=>t.value.template.description=Z),type:"textarea",rows:3,placeholder:p.$t("serverDetail.config.descriptionPlaceholder")},null,8,["modelValue","placeholder"])]),t.value.template.type!=="stdio"?(u(),b("div",Wa,[n("div",Ga,[n("label",Qa,o(p.$t("serverDetail.config.proxy")),1),t.value.template.proxy?(u(),H(x,{key:1,size:"small",type:"danger",icon:_(ue),onClick:re},{default:v(()=>[D(o(p.$t("serverDetail.config.removeProxy")),1)]),_:1},8,["icon"])):(u(),H(x,{key:0,size:"small",icon:_(fe),onClick:re},{default:v(()=>[D(o(p.$t("serverDetail.config.addProxy")),1)]),_:1},8,["icon"]))]),t.value.template.proxy?(u(),b("div",Za,[s(F,{modelValue:t.value.template.proxy.url,"onUpdate:modelValue":R[5]||(R[5]=Z=>t.value.template.proxy.url=Z),placeholder:p.$t("serverDetail.config.proxyPlaceholder")},null,8,["modelValue","placeholder"])])):P("",!0)])):P("",!0),n("div",Xa,[n("label",Ya,o(p.$t("serverDetail.config.instanceSelectionStrategy")),1),s(ie,{modelValue:t.value.template.instanceSelectionStrategy,"onUpdate:modelValue":R[6]||(R[6]=Z=>t.value.template.instanceSelectionStrategy=Z),placeholder:p.$t("serverDetail.config.strategyRandom")+"(默认)"},{default:v(()=>[s(te,{value:"random",label:p.$t("serverDetail.config.strategyRandom")},null,8,["label"]),s(te,{value:"round-robin",label:p.$t("serverDetail.config.strategyRoundRobin")},null,8,["label"]),s(te,{value:"tag-match-unique",label:p.$t("serverDetail.config.strategyTagMatchUnique")},null,8,["label"])]),_:1},8,["modelValue","placeholder"])]),n("div",Ka,[s(x,{type:"primary",onClick:de},{default:v(()=>[D(o(p.$t("serverDetail.config.save")),1)]),_:1}),s(x,{onClick:j},{default:v(()=>[D(o(p.$t("serverDetail.config.editByJson")),1)]),_:1})])])])}}}),tl=Ie(el,[["__scopeId","data-v-d857c695"]]),al={class:"h-full flex flex-col"},ll={class:"flex items-center justify-between gap-2 mb-2 shrink-0"},nl={class:"flex items-center gap-2"},sl=ce({__name:"LogViewer",props:{logs:{},autoScroll:{type:Boolean,default:!0}},emits:["update:autoScroll","clear","copy"],setup(e,{emit:m}){const l=e,c=m;ve();const t=M(null),g=M(l.autoScroll);le(()=>l.autoScroll,a=>{g.value=a}),le(()=>l.logs.length,()=>{g.value&&be(()=>{t.value&&(t.value.scrollTop=t.value.scrollHeight)})});function i(a){const f=!!a;g.value=f,c("update:autoScroll",f)}function I(){c("clear")}function B(){c("copy")}function y(a){switch(a){case"debug":return"text-gray-400";case"info":return"text-blue-400";case"warn":return"text-yellow-400";case"error":return"text-red-400";default:return"text-gray-300"}}return(a,f)=>{const E=Yt,C=me;return u(),b("div",al,[n("div",ll,[n("div",nl,[s(E,{modelValue:g.value,"onUpdate:modelValue":[f[0]||(f[0]=$=>g.value=$),i],label:a.$t("serverDetail.logs.autoScroll"),class:"text-gray-600 dark:text-gray-400"},null,8,["modelValue","label"]),s(C,{size:"small",icon:_(ue),plain:"",onClick:I},{default:v(()=>[D(o(a.$t("serverDetail.logs.clear")),1)]),_:1},8,["icon"]),s(C,{size:"small",icon:_(_t),plain:"",onClick:B},{default:v(()=>[D(o(a.$t("common.copy")),1)]),_:1},8,["icon"])])]),n("div",{class:"bg-gray-900 dark:bg-black p-4 rounded-lg font-mono text-sm flex-1 min-h-0 overflow-y-auto text-gray-300",ref_key:"logsContainer",ref:t},[(u(!0),b(Y,null,ae(e.logs,($,h)=>(u(),b("div",{key:h,class:"mb-1 break-words"},[n("span",{class:X(y($.level))},o(_(ot)($.timestamp))+" ["+o($.level.toUpperCase())+"] "+o($.message),3)]))),128))],512)])}}}),ol={class:"h-full flex flex-col"},rl={class:"flex h-full gap-4"},il={class:"w-1/3 border-r border-gray-200 dark:border-gray-700 pr-4 overflow-y-auto"},ul={class:"flex items-center justify-between mb-3"},cl={class:"font-bold"},dl={class:"flex items-center gap-2"},ml={key:0,class:"space-y-2"},vl=["onClick"],fl={class:"min-w-0 flex-1 mr-2"},pl={class:"font-medium truncate"},gl={key:1,class:"text-gray-500 text-sm italic"},hl={class:"flex-1 min-h-0 overflow-y-auto px-4 flex flex-col"},yl={class:"flex justify-between items-center mb-4 shrink-0"},bl={class:"font-bold"},_l={key:0},$l={class:"mb-4 text-gray-600 dark:text-gray-300"},Cl={class:"font-medium mb-2"},wl={class:"bg-gray-50 dark:bg-[#0f172a] p-4 rounded-lg overflow-x-auto text-sm font-mono border border-gray-200 dark:border-gray-700"},xl={key:1,class:"flex-1 flex items-center justify-center text-gray-400"},kl=ce({__name:"ToolsTab",props:{tools:{},allowedTools:{default:null}},emits:["select-tool","update-tool-visibility","call-tool","batch-toggle-all"],setup(e,{emit:m}){const l=e,c=m;ve();const t=M(null);function g(f){t.value=f,c("select-tool",f)}function i(f){return l.allowedTools===void 0||l.allowedTools===null||l.allowedTools.length===0?!1:Array.isArray(l.allowedTools)?l.allowedTools.includes(f):!1}function I(f,E){c("update-tool-visibility",f,E)}function B(){c("batch-toggle-all",!0)}function y(){c("batch-toggle-all",!1)}function a(){t.value&&c("call-tool",t.value)}return(f,E)=>{const C=me,$=it;return u(),b("div",ol,[n("div",rl,[n("div",il,[n("div",ul,[n("h3",cl,o(f.$t("serverDetail.tools.available")),1),n("div",dl,[s(C,{size:"small",onClick:B},{default:v(()=>[D(o(f.$t("serverDetail.tools.selectAll")),1)]),_:1}),s(C,{size:"small",onClick:y},{default:v(()=>[D(o(f.$t("serverDetail.tools.deselectAll")),1)]),_:1})])]),e.tools&&e.tools.length>0?(u(),b("div",ml,[(u(!0),b(Y,null,ae(e.tools,h=>(u(),b("div",{key:h.name,class:X(["p-3 rounded-lg cursor-pointer transition-colors flex items-center justify-between group",t.value?.name===h.name?"bg-blue-50 dark:bg-blue-900/30 border border-blue-200 dark:border-blue-800":"hover:bg-gray-100 dark:hover:bg-gray-800 border border-transparent"]),onClick:L=>g(h)},[n("div",fl,[n("div",pl,o(h.name),1)]),s($,{"model-value":i(h.name),"onUpdate:modelValue":L=>I(h.name,!!L),class:"mr-4","active-text":f.$t("serverDetail.tools.aggregated")},null,8,["model-value","onUpdate:modelValue","active-text"])],10,vl))),128))])):(u(),b("div",gl,o(f.$t("serverDetail.tools.none")),1))]),n("div",hl,[n("div",yl,[n("h3",bl,o(f.$t("serverDetail.tools.details"))+": "+o(t.value?.name||""),1),t.value?(u(),H(C,{key:0,type:"primary",size:"small",onClick:a},{default:v(()=>[D(o(f.$t("serverDetail.tools.call")),1)]),_:1})):P("",!0)]),t.value?(u(),b("div",_l,[n("p",$l,o(t.value.description),1),n("h4",Cl,o(f.$t("serverDetail.tools.schema")),1),n("pre",wl,o(JSON.stringify(t.value.inputSchema,null,2)),1)])):(u(),b("div",xl,o(f.$t("serverDetail.tools.selectHint")),1))])])])}}}),Sl={class:"h-full overflow-y-auto"},Vl={class:"flex items-center gap-2"},Il={class:"font-medium"},Tl={key:0,class:"text-center py-8 text-gray-500"},Dl=ce({__name:"ResourcesTab",props:{resources:{}},emits:["view-resource"],setup(e,{emit:m}){const l=m;ve();function c(t){l("view-resource",t)}return(t,g)=>{const i=Se,I=ea,B=me,y=Kt;return u(),b("div",Sl,[s(y,{data:e.resources||[],style:{width:"100%"},class:"custom-table"},{default:v(()=>[s(I,{prop:"name",label:t.$t("common.name"),width:"200"},{default:v(({row:a})=>[n("div",Vl,[s(i,null,{default:v(()=>[s(_($t))]),_:1}),n("span",Il,o(a.name),1)])]),_:1},8,["label"]),s(I,{prop:"uri",label:t.$t("common.uri"),"min-width":"300"},null,8,["label"]),s(I,{prop:"mimeType",label:t.$t("common.mimeType"),width:"150"},null,8,["label"]),s(I,{label:"",width:"100",align:"right"},{default:v(({row:a})=>[s(B,{size:"small",plain:"",onClick:f=>c(a)},{default:v(()=>[D(o(t.$t("action.view")),1)]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]),!e.resources||e.resources.length===0?(u(),b("div",Tl,o(t.$t("serverDetail.resources.none")),1)):P("",!0)])}}}),El={class:"dialog-footer"},Al=ce({__name:"JsonConfigEditor",props:{modelValue:{type:Boolean},config:{},serverName:{}},emits:["update:modelValue","save"],setup(e,{emit:m}){const l=e,c=m,{t}=ve(),g=M(""),i=q({get:()=>l.modelValue,set:f=>c("update:modelValue",f)}),I=q(()=>t("serverDetail.editJsonTitle")||"Edit JSON Config");le(()=>l.modelValue,f=>{f&&B()});function B(){const f={env:l.config.env||{},enabled:l.config.enabled,description:l.config.description};l.config.headers&&Object.keys(l.config.headers).length>0&&(f.headers=l.config.headers),l.config.timeout&&(f.timeout=l.config.timeout),l.config.type==="stdio"?(f.command=l.config.command,f.args=l.config.args||[]):f.url=l.config.url;const E={mcpServers:{[l.serverName]:f}};g.value=JSON.stringify(E,null,2)}function y(){i.value=!1}function a(){try{const f=JSON.parse(g.value);if(!f.mcpServers)throw new Error("Missing mcpServers key");const E=Object.keys(f.mcpServers);if(E.length===0)throw new Error("No server config found");const C=E[0]||"",$=f.mcpServers[C],h={...l.config};$.command?(h.type="stdio",h.command=$.command,h.args=$.args||[],delete h.url):$.url&&(h.type=$.type==="sse"?"sse":"streamable-http",h.url=$.url,delete h.command,delete h.args),$.env&&(h.env=$.env),$.headers&&(h.headers=$.headers),$.timeout!==void 0&&(h.timeout=$.timeout),$.enabled!==void 0&&(h.enabled=$.enabled),$.description!==void 0&&(h.description=$.description),c("save",h),i.value=!1,V.success(t("action.configSaved"))}catch(f){f instanceof Error?V.error("Invalid JSON: "+f.message):V.error("Invalid JSON: "+String(f))}}return(f,E)=>{const C=Ve,$=me,h=qe;return u(),H(h,{modelValue:i.value,"onUpdate:modelValue":E[1]||(E[1]=L=>i.value=L),title:I.value,width:"600px"},{footer:v(()=>[n("span",El,[s($,{onClick:y},{default:v(()=>[D(o(f.$t("action.cancel")),1)]),_:1}),s($,{type:"primary",onClick:a},{default:v(()=>[D(o(f.$t("action.save")),1)]),_:1})])]),default:v(()=>[s(C,{modelValue:g.value,"onUpdate:modelValue":E[0]||(E[0]=L=>g.value=L),type:"textarea",rows:15,"font-family":"monospace"},null,8,["modelValue"])]),_:1},8,["modelValue","title"])}}}),Ul={class:"dialog-footer"},Bl=ce({__name:"InstanceSelectDialog",props:{modelValue:{type:Boolean},instances:{},title:{default:""}},emits:["update:modelValue","confirm"],setup(e,{emit:m}){const l=e,c=m,{t}=ve(),g=M(null),i=q({get:()=>l.modelValue,set:f=>c("update:modelValue",f)}),I=q(()=>l.title||t("serverDetail.selectInstanceTitle")||"Select Instance");function B(f){return`#${f.index??0} [${f.displayName||t("serverDetail.instances.unnamed")}]`}function y(){i.value=!1,g.value=null}function a(){g.value!==null&&(c("confirm",g.value),i.value=!1,g.value=null)}return(f,E)=>{const C=Je,$=He,h=me,L=qe;return u(),H(L,{modelValue:i.value,"onUpdate:modelValue":E[1]||(E[1]=A=>i.value=A),title:I.value,width:"500px"},{footer:v(()=>[n("span",Ul,[s(h,{onClick:y},{default:v(()=>[D(o(f.$t("action.cancel")),1)]),_:1}),s(h,{type:"primary",onClick:a,disabled:g.value===null},{default:v(()=>[D(o(f.$t("action.confirm")),1)]),_:1},8,["disabled"])])]),default:v(()=>[s($,{modelValue:g.value,"onUpdate:modelValue":E[0]||(E[0]=A=>g.value=A),placeholder:f.$t("serverDetail.selectInstancePlaceholder"),class:"w-full"},{default:v(()=>[(u(!0),b(Y,null,ae(e.instances,A=>(u(),H(C,{key:A.index??0,label:B(A),value:A.index??0},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"])]),_:1},8,["modelValue","title"])}}}),Rl={class:"instance-card-list"},zl={class:"mb-4 flex justify-between items-center"},Nl={class:"text-lg font-semibold text-gray-900 dark:text-white"},jl={key:0,class:"mb-4"},Ol={class:"flex items-center justify-between"},Ml={class:"flex items-center gap-3"},Pl={class:"flex items-center gap-2"},Ll={class:"font-mono text-sm text-purple-600 dark:text-purple-400"},Fl={class:"flex flex-col gap-3 mb-4"},Hl=["onClick"],Jl={class:"flex items-center justify-between"},ql={class:"flex items-center gap-3"},Wl={class:"flex items-center gap-2"},Gl={class:"font-mono text-sm text-gray-500 dark:text-gray-400"},Ql={class:"font-medium text-gray-900 dark:text-white"},Zl={key:1,class:"px-2 py-0.5 rounded-full text-xs bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},Xl=ce({__name:"InstanceCardList",props:{instances:{},selectedIndex:{},serverName:{},showTemplateNode:{type:Boolean,default:!0},templateSelected:{type:Boolean,default:!1}},emits:["select","select-template","add","update-display-name","delete","reassign-indexes"],setup(e,{emit:m}){const l=e,c=m,t=M(!1),g=M(null),i=M(""),I=M(),B=q(()=>[...l.instances].sort((j,p)=>(j.index??0)-(p.index??0)));function y(j){return j.status||"offline"}function a(){return l.templateSelected?"border-purple-500 bg-purple-50 dark:bg-purple-900/20 shadow-md":"border-purple-200 dark:border-purple-800 hover:border-purple-300 dark:hover:border-purple-700 hover:shadow-sm bg-white dark:bg-gray-800"}function f(j){return l.selectedIndex===j?"border-blue-500 bg-blue-50 dark:bg-blue-900/20 shadow-md":"border-gray-200 dark:border-gray-700 hover:border-gray-300 dark:hover:border-gray-600 hover:shadow-sm"}function E(j){switch(j){case"online":return"bg-green-500";case"error":return"bg-red-500";case"starting":case"stopping":return"bg-yellow-500";default:return"bg-gray-400"}}function C(j){switch(j){case"online":return"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400";case"error":return"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400";case"starting":case"stopping":return"bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400";default:return"bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400"}}function $(){c("select-template")}function h(j){c("select",j)}function L(){c("add")}function A(j){t.value=!0,g.value=j.index??null,i.value=j.displayName||"",setTimeout(()=>{I.value?.focus()},100)}function ne(j){const p=i.value.trim();c("update-display-name",j,p),oe()}function oe(){t.value=!1,g.value=null,i.value=""}function re(j){c("delete",j)}function de(){c("reassign-indexes")}return(j,p)=>{const R=me,d=Fe,w=Ve,F=Ct;return u(),b("div",Rl,[n("div",zl,[n("h3",Nl,o(j.$t("serverDetail.instances.title")),1),s(R,{size:"small",icon:_(Oe),plain:"",onClick:de},{default:v(()=>[D(o(j.$t("serverDetail.instances.reassignIndexes")),1)]),_:1},8,["icon"])]),e.showTemplateNode?(u(),b("div",jl,[n("div",{class:X(["template-card p-4 rounded-lg border transition-all duration-200 cursor-pointer",a()]),onClick:$},[n("div",Ol,[n("div",Ml,[p[2]||(p[2]=n("div",{class:"w-3 h-3 rounded-full bg-purple-500"},null,-1)),n("div",Pl,[n("span",Ll,o(j.$t("common.template")),1),s(d,{size:"small",type:"info"},{default:v(()=>[D(o(j.$t("serverDetail.instances.templateTag")),1)]),_:1})])])])],2)])):P("",!0),n("div",Fl,[(u(!0),b(Y,null,ae(B.value,x=>(u(),b("div",{key:x.index??0,class:X(["instance-card p-4 rounded-lg border transition-all duration-200 cursor-pointer",f(x.index??0)]),onClick:W=>h(x.index??0)},[n("div",Jl,[n("div",ql,[n("div",{class:X(["w-3 h-3 rounded-full",E(y(x))])},null,2),n("div",Wl,[!t.value||g.value!==x.index?(u(),b(Y,{key:0},[n("span",Gl," #"+o(x.index??0),1),n("span",Ql," ["+o(x.displayName||j.$t("serverDetail.instances.unnamed"))+"] ",1)],64)):(u(),H(w,{key:1,modelValue:i.value,"onUpdate:modelValue":p[0]||(p[0]=W=>i.value=W),size:"small",onKeyup:[_e(W=>ne(x.index??0),["enter"]),_e(oe,["escape"])],ref_for:!0,ref_key:"displayNameInputRef",ref:I,onBlur:W=>ne(x.index??0),class:"max-w-xs"},null,8,["modelValue","onKeyup","onBlur"]))]),x.pid&&y(x)==="online"?P("",!0):(u(),b("div",{key:0,class:X(["px-2 py-0.5 rounded-full text-xs",C(y(x))])},o(j.$t(`serverDetail.status.${y(x)}`)),3)),x.transportType==="stdio"&&x.pid&&y(x)==="online"?(u(),b("div",Zl," PID: "+o(x.pid),1)):P("",!0)]),n("div",{class:"flex items-center gap-2",onClick:p[1]||(p[1]=xe(()=>{},["stop"]))},[!t.value||g.value!==x.index?(u(),b(Y,{key:0},[s(F,{content:j.$t("serverDetail.instances.editDisplayName")||"Edit display name",placement:"top"},{default:v(()=>[s(R,{icon:_(wt),circle:"",plain:"",size:"small",onClick:W=>A(x)},null,8,["icon","onClick"])]),_:2},1032,["content"]),s(R,{icon:_(ue),circle:"",plain:"",size:"small",type:"danger",onClick:W=>re(x.index??0)},null,8,["icon","onClick"])],64)):P("",!0)])])],10,Hl))),128))]),s(R,{icon:_(fe),class:"w-full",onClick:L},{default:v(()=>[D(o(j.$t("serverDetail.instances.add")),1)]),_:1},8,["icon"])])}}}),Yl=Ie(Xl,[["__scopeId","data-v-24e76b86"]]),Kl={class:"preview-content"},en={class:"action-bar flex justify-end mb-4"},tn={class:"config-display"},an={class:"config-json"},ln=ce({__name:"MergedConfigPreviewDialog",props:{modelValue:{type:Boolean},mergedConfig:{}},emits:["update:modelValue"],setup(e){const m=e,{t:l}=ve(),c=q(()=>JSON.stringify(m.mergedConfig,null,2));async function t(){try{await navigator.clipboard.writeText(c.value),V.success(l("action.copiedToClipboard"))}catch{V.error(l("action.copyFailed"))}}return(g,i)=>{const I=Se,B=me,y=qe;return u(),H(y,{"model-value":e.modelValue,"onUpdate:modelValue":i[0]||(i[0]=a=>g.$emit("update:modelValue",a)),title:g.$t("serverDetail.instanceConfig.mergedPreview"),width:"70%","destroy-on-close":"",class:"merged-config-dialog"},{default:v(()=>[n("div",Kl,[n("div",en,[s(B,{type:"primary",onClick:t},{default:v(()=>[s(I,null,{default:v(()=>[s(_(xt))]),_:1}),D(" "+o(g.$t("common.copy")),1)]),_:1})]),n("div",tn,[n("pre",an,o(c.value),1)])])]),_:1},8,["model-value","title"])}}}),nn=Ie(ln,[["__scopeId","data-v-84fcda8e"]]),sn={class:"instance-config h-full flex flex-col min-h-0"},on={class:"header-bar flex justify-between items-center mb-4 px-4 flex-shrink-0"},rn={class:"flex items-center gap-4"},un={class:"text-lg font-semibold text-gray-900 dark:text-white"},cn={class:"flex gap-2"},dn={class:"config-form space-y-4 flex-1 overflow-y-auto min-h-0 pb-4"},mn={class:"px-4"},vn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},fn={class:"flex items-center gap-2"},pn={class:"text-xs text-gray-500 dark:text-gray-400"},gn={class:"px-4"},hn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},yn={class:"flex gap-2 items-start"},bn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},_n={key:0,class:"px-4"},$n={class:"flex items-center justify-between mb-2"},Cn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},wn={key:0,class:"space-y-2 mb-3"},xn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},kn={key:1,class:"space-y-2"},Sn={class:"px-4"},Vn={class:"flex items-center justify-between mb-2"},In={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Tn={key:0,class:"space-y-2 mb-3"},Dn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},En={key:1,class:"space-y-2"},An={key:1,class:"px-4"},Un={class:"flex items-center justify-between mb-2"},Bn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Rn={key:0,class:"space-y-2 mb-3"},zn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},Nn={key:1,class:"space-y-2"},jn={class:"px-4"},On={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Mn={class:"flex gap-2 items-center"},Pn={class:"text-xs text-gray-500 dark:text-gray-400"},Ln={class:"px-4"},Fn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Hn={class:"flex gap-2 items-start"},Jn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},qn={key:2,class:"px-4"},Wn={class:"flex items-center justify-between mb-2"},Gn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Qn={key:0,class:"space-y-2 mb-3"},Zn={class:"flex gap-2 items-start"},Xn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},Yn={key:1,class:"flex gap-2 items-start"},Kn={class:"px-4"},es={class:"flex items-center justify-between mb-2"},ts={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},as={key:0,class:"text-center py-4 text-gray-500"},ls={key:1,class:"space-y-2"},ns={class:"text-xs text-gray-500 ml-2"},ss={class:"px-4"},os={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},rs={class:"flex gap-2 items-center"},is={class:"flex gap-2 pt-4 pb-4 border-t border-gray-200 dark:border-gray-700 px-4"},us=ce({__name:"InstanceConfig",props:{templateConfig:{},instanceConfig:{},serverName:{},instanceStatus:{default:"offline"},systemTagDefinitions:{}},emits:["update","start-instance","stop-instance","restart-instance","view-logs"],setup(e,{emit:m}){const l=e,c=m,{t}=ve();function g(){c("start-instance")}function i(){c("stop-instance")}function I(){c("restart-instance")}function B(){c("view-logs")}const y=M(!1),a=M({enabled:!0,...l.instanceConfig});let f=0,E=0,C=0;const $=M({}),h=M({}),L=M({}),A=M({}),ne=q(()=>l.templateConfig.args&&l.templateConfig.args.length>0),oe=q(()=>l.templateConfig.env&&Object.keys(l.templateConfig.env).length>0),re=q(()=>l.templateConfig.headers&&Object.keys(l.templateConfig.headers).length>0);le(()=>l.instanceConfig,r=>{a.value={...r},$.value={},r.env&&Object.keys(r.env).forEach(T=>{$.value[T]=`env-${f++}`}),h.value={},r.headers&&Object.keys(r.headers).forEach(T=>{h.value[T]=`header-${E++}`}),L.value={},A.value={},r.tags&&Object.keys(r.tags).forEach(T=>{L.value[T]=`tag-${C++}`,l.systemTagDefinitions.some(se=>se.key===T)?A.value[T]=T:(A.value[T]=T,console.warn(`未定义的标签键: ${T}`))})},{immediate:!0});const de=q(()=>{const r={...l.templateConfig};return a.value.args&&a.value.args.length>0&&(r.args=[...l.templateConfig.args||[],...a.value.args]),a.value.env&&Object.keys(a.value.env).length>0&&(r.env={...l.templateConfig.env||{},...a.value.env}),a.value.headers&&Object.keys(a.value.headers).length>0&&(r.headers={...l.templateConfig.headers||{},...a.value.headers}),a.value.proxy&&(r.proxy=a.value.proxy),a.value.tags&&Object.keys(a.value.tags).length>0&&(r.tags=a.value.tags),a.value.displayName&&(r.displayName=a.value.displayName),a.value.enabled!==void 0&&(r.enabled=a.value.enabled),r});function j(r){switch(r){case"stdio":return t("serverDetail.config.transportStdio");case"sse":return t("serverDetail.config.transportSse");case"streamable-http":return t("serverDetail.config.transportHttp");default:return r}}function p(){c("update",a.value)}function R(){a.value.proxy?a.value.proxy=void 0:a.value.proxy={url:""}}function d(){a.value.args||(a.value.args=[]),a.value.args.push("")}function w(r){a.value.args&&a.value.args.splice(r,1)}function F(){a.value.env||(a.value.env={});const r=`NEW_ENV_${Date.now()}`;a.value.env[r]="",$.value[r]=`env-${f++}`}function x(r){a.value.env&&(delete a.value.env[r],delete $.value[r])}function W(r,T){if(!a.value.env||!r||!T||r===T)return;const z=a.value.env[r]??"",se=$.value[r]||`env-${f++}`;delete a.value.env[r],delete $.value[r],a.value.env[T]=z,$.value[T]=se}function te(){a.value.headers||(a.value.headers={});const r=`X-New-Header-${Date.now()}`;a.value.headers[r]="",h.value[r]=`header-${E++}`}function ie(r){a.value.headers&&(delete a.value.headers[r],delete h.value[r])}function Z(r,T){if(!a.value.headers||!r||!T||r===T)return;const z=a.value.headers[r]??"",se=h.value[r]||`header-${E++}`;delete a.value.headers[r],delete h.value[r],a.value.headers[T]=z,h.value[T]=se}function U(){if(a.value.tags||(a.value.tags={}),l.systemTagDefinitions.length>0){const r=l.systemTagDefinitions[0];if(r){const T=r.key;let z=T,se=1;for(;a.value.tags&&Object.prototype.hasOwnProperty.call(a.value.tags,z);)z=`${T}-${se}`,se++;a.value.tags[z]="",L.value[z]=`tag-${C++}`,A.value[z]=T}}else{V.warning("请先在设置中定义标签");const r=`new-tag-${Date.now()}`;a.value.tags[r]="",L.value[r]=`tag-${C++}`,A.value[r]=r}}function J(r){a.value.tags&&(delete a.value.tags[r],delete L.value[r],delete A.value[r])}function K(r,T){if(!a.value.tags||!T)return;const z=a.value.tags[r]??"",se=L.value[r]||`tag-${C++}`;delete a.value.tags[r],delete L.value[r],delete A.value[r],a.value.tags[T]=z,L.value[T]=se,A.value[T]=T}function ge(r){const T=l.systemTagDefinitions.find(z=>z.key===r);return T?T.type:null}function De(r){const T=l.systemTagDefinitions.find(z=>z.key===r);return T?.type==="enum"?T.values||[]:[]}function Ee(r){return l.systemTagDefinitions.find(z=>z.key===r)?.description||"输入标签值"}function Ae(){window.location.hash="#/settings/tags"}return(r,T)=>{const z=me,se=Se,pe=Fe,ee=Ve,Te=rt,O=Je,N=He,Q=it;return u(),b("div",sn,[n("div",on,[n("div",rn,[n("h3",un,o(r.$t("serverDetail.instanceConfig.title")),1),n("div",cn,[s(z,{icon:_(Oe),plain:"",onClick:I},{default:v(()=>[D(o(r.$t("action.restart")),1)]),_:1},8,["icon"]),e.instanceStatus==="error"?(u(),H(z,{key:0,type:"danger",plain:"",icon:_(kt),onClick:B},{default:v(()=>[D(o(r.$t("action.viewLogs")),1)]),_:1},8,["icon"])):e.instanceStatus==="online"?(u(),H(z,{key:1,type:"warning",plain:"",icon:_(St),onClick:i},{default:v(()=>[D(o(r.$t("action.stop")),1)]),_:1},8,["icon"])):(u(),H(z,{key:2,type:"success",icon:_(at),onClick:g},{default:v(()=>[D(o(r.$t("action.start")),1)]),_:1},8,["icon"]))])]),s(z,{onClick:T[0]||(T[0]=G=>y.value=!0)},{default:v(()=>[s(se,null,{default:v(()=>[s(_(Vt))]),_:1}),D(" "+o(r.$t("serverDetail.instanceConfig.viewMerged")),1)]),_:1})]),n("div",dn,[n("div",mn,[n("label",vn,o(r.$t("serverDetail.config.transport")),1),n("div",fn,[s(pe,{size:"small",type:"info"},{default:v(()=>[D(o(j(e.templateConfig.type)),1)]),_:1}),n("span",pn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),n("div",gn,[n("label",hn,o(e.templateConfig.type==="stdio"?r.$t("serverDetail.config.executable"):r.$t("serverDetail.config.url")),1),n("div",yn,[s(ee,{"model-value":e.templateConfig.type==="stdio"?e.templateConfig.command:e.templateConfig.url,disabled:"",class:"flex-1"},null,8,["model-value"]),n("span",bn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),e.templateConfig.type==="stdio"?(u(),b("div",_n,[n("div",$n,[n("label",Cn,o(r.$t("serverDetail.config.args")),1),s(z,{size:"small",icon:_(fe),onClick:d},{default:v(()=>[D(o(r.$t("serverDetail.config.addArg")),1)]),_:1},8,["icon"])]),ne.value?(u(),b("div",wn,[(u(!0),b(Y,null,ae(e.templateConfig.args,(G,k)=>(u(),b("div",{key:`template-arg-${k}`,class:"flex gap-2 items-start"},[s(ee,{"model-value":G,disabled:"",class:"flex-1"},null,8,["model-value"]),n("span",xn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)]))),128))])):P("",!0),a.value.args&&a.value.args.length>0?(u(),b("div",kn,[(u(!0),b(Y,null,ae(a.value.args,(G,k)=>(u(),b("div",{key:`instance-arg-${k}`,class:"flex gap-2 items-start"},[s(ee,{modelValue:a.value.args[k],"onUpdate:modelValue":S=>a.value.args[k]=S,class:"flex-1"},null,8,["modelValue","onUpdate:modelValue"]),s(z,{size:"small",type:"danger",icon:_(ue),onClick:S=>w(k)},null,8,["icon","onClick"]),s(pe,{size:"small",type:"success"},{default:v(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):P("",!0)])):P("",!0),n("div",Sn,[n("div",Vn,[n("label",In,o(r.$t("serverDetail.config.env")),1),s(z,{size:"small",icon:_(fe),onClick:F},{default:v(()=>[D(o(r.$t("serverDetail.config.addEnv")),1)]),_:1},8,["icon"])]),oe.value?(u(),b("div",Tn,[(u(!0),b(Y,null,ae(e.templateConfig.env,(G,k)=>(u(),b("div",{key:`template-env-${k}`,class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(ee,{"model-value":k,disabled:"",style:{width:"30%","min-width":"150px"}},null,8,["model-value"]),s(ee,{"model-value":e.templateConfig.env[k],disabled:"",style:{flex:"1"}},null,8,["model-value"]),n("span",Dn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)]))),128))])):P("",!0),a.value.env&&Object.keys(a.value.env).length>0?(u(),b("div",En,[(u(!0),b(Y,null,ae(a.value.env,(G,k)=>(u(),b("div",{key:$.value[k],class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(ee,{"model-value":k,style:{width:"30%","min-width":"150px"},placeholder:r.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":S=>W(k,S)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(ee,{modelValue:a.value.env[k],"onUpdate:modelValue":S=>a.value.env[k]=S,style:{flex:"1"},placeholder:r.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(z,{size:"small",type:"danger",icon:_(ue),onClick:S=>x(k)},null,8,["icon","onClick"]),s(pe,{size:"small",type:"success"},{default:v(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):P("",!0)]),e.templateConfig.type!=="stdio"?(u(),b("div",An,[n("div",Un,[n("label",Bn,o(r.$t("serverDetail.config.headers")),1),s(z,{size:"small",icon:_(fe),onClick:te},{default:v(()=>[D(o(r.$t("serverDetail.config.addHeader")),1)]),_:1},8,["icon"])]),re.value?(u(),b("div",Rn,[(u(!0),b(Y,null,ae(e.templateConfig.headers,(G,k)=>(u(),b("div",{key:`template-header-${k}`,class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(ee,{"model-value":k,disabled:"",style:{width:"30%","min-width":"150px"}},null,8,["model-value"]),s(ee,{"model-value":e.templateConfig.headers[k],disabled:"",style:{flex:"1"}},null,8,["model-value"]),n("span",zn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)]))),128))])):P("",!0),a.value.headers&&Object.keys(a.value.headers).length>0?(u(),b("div",Nn,[(u(!0),b(Y,null,ae(a.value.headers,(G,k)=>(u(),b("div",{key:h.value[k],class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(ee,{"model-value":k,style:{width:"30%","min-width":"150px"},placeholder:r.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":S=>Z(k,S)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(ee,{modelValue:a.value.headers[k],"onUpdate:modelValue":S=>a.value.headers[k]=S,style:{flex:"1"},placeholder:r.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(z,{size:"small",type:"danger",icon:_(ue),onClick:S=>ie(k)},null,8,["icon","onClick"]),s(pe,{size:"small",type:"success"},{default:v(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):P("",!0)])):P("",!0),n("div",jn,[n("label",On,o(r.$t("serverDetail.config.timeout")),1),n("div",Mn,[s(Te,{"model-value":e.templateConfig.timeout?e.templateConfig.timeout/1e3:60,disabled:"",min:1,max:3600},null,8,["model-value"]),n("span",Pn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),n("div",Ln,[n("label",Fn,o(r.$t("common.description")),1),n("div",Hn,[s(ee,{"model-value":e.templateConfig.description,type:"textarea",rows:3,disabled:"",class:"flex-1"},null,8,["model-value"]),n("span",Jn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),e.templateConfig.type!=="stdio"?(u(),b("div",qn,[n("div",Wn,[n("label",Gn,o(r.$t("serverDetail.config.proxy")),1),a.value.proxy?(u(),H(z,{key:1,size:"small",type:"danger",icon:_(ue),onClick:R},{default:v(()=>[D(o(r.$t("serverDetail.config.removeProxy")),1)]),_:1},8,["icon"])):(u(),H(z,{key:0,size:"small",icon:_(fe),onClick:R},{default:v(()=>[D(o(r.$t("serverDetail.config.addProxy")),1)]),_:1},8,["icon"]))]),e.templateConfig.proxy&&!a.value.proxy?(u(),b("div",Qn,[n("div",Zn,[s(ee,{"model-value":e.templateConfig.proxy.url,disabled:""},null,8,["model-value"]),n("span",Xn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])])):P("",!0),a.value.proxy?(u(),b("div",Yn,[s(ee,{modelValue:a.value.proxy.url,"onUpdate:modelValue":T[1]||(T[1]=G=>a.value.proxy.url=G),placeholder:r.$t("serverDetail.config.proxyPlaceholder")},null,8,["modelValue","placeholder"]),s(pe,{size:"small",type:"success"},{default:v(()=>[D(o(r.$t("common.instance")),1)]),_:1})])):P("",!0)])):P("",!0),n("div",Kn,[n("div",es,[n("label",ts,o(r.$t("serverDetail.config.tags")),1),s(z,{size:"small",icon:_(fe),onClick:U},{default:v(()=>[D(o(r.$t("common.addTag")),1)]),_:1},8,["icon"])]),e.systemTagDefinitions.length===0?(u(),b("div",as,[T[5]||(T[5]=n("p",null,"暂无标签定义",-1)),s(z,{size:"small",type:"primary",onClick:Ae},{default:v(()=>[...T[4]||(T[4]=[D(" 前往标签设置 ",-1)])]),_:1})])):a.value.tags&&Object.keys(a.value.tags).length>0?(u(),b("div",ls,[(u(!0),b(Y,null,ae(a.value.tags,(G,k)=>(u(),b("div",{key:L.value[k],class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(N,{modelValue:A.value[k],"onUpdate:modelValue":S=>A.value[k]=S,style:{width:"30%","min-width":"150px"},filterable:"",placeholder:"选择标签键",onChange:S=>K(k,S)},{default:v(()=>[(u(!0),b(Y,null,ae(e.systemTagDefinitions,S=>(u(),H(O,{key:S.key,label:S.key,value:S.key},{default:v(()=>[n("span",null,o(S.key),1),n("span",ns,o(S.type),1)]),_:2},1032,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","onChange"]),A.value[k]&&ge(A.value[k])==="enum"?(u(),H(N,{key:0,modelValue:a.value.tags[k],"onUpdate:modelValue":S=>a.value.tags[k]=S,style:{flex:"1"},filterable:"",placeholder:"选择标签值"},{default:v(()=>[(u(!0),b(Y,null,ae(De(A.value[k]),S=>(u(),H(O,{key:S,label:S,value:S},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue"])):A.value[k]&&ge(A.value[k])==="boolean"?(u(),H(Q,{key:1,modelValue:a.value.tags[k],"onUpdate:modelValue":S=>a.value.tags[k]=S,"active-value":"true","inactive-value":"false"},null,8,["modelValue","onUpdate:modelValue"])):A.value[k]&&ge(A.value[k])==="number"?(u(),H(Te,{key:2,"model-value":a.value.tags[k]!==void 0&&a.value.tags[k]!==""?Number(a.value.tags[k]):void 0,"onUpdate:modelValue":S=>a.value.tags[k]=S!=null?String(S):"",style:{flex:"1"},placeholder:"输入数字值"},null,8,["model-value","onUpdate:modelValue"])):(u(),H(ee,{key:3,modelValue:a.value.tags[k],"onUpdate:modelValue":S=>a.value.tags[k]=S,style:{flex:"1"},placeholder:A.value[k]?Ee(A.value[k]):"输入标签值"},null,8,["modelValue","onUpdate:modelValue","placeholder"])),s(z,{size:"small",type:"danger",icon:_(ue),onClick:S=>J(k)},null,8,["icon","onClick"]),s(pe,{size:"small",type:"success"},{default:v(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):P("",!0)]),n("div",ss,[n("label",os,o(r.$t("serverDetail.config.autoStart")),1),n("div",rs,[s(Q,{modelValue:a.value.enabled,"onUpdate:modelValue":T[2]||(T[2]=G=>a.value.enabled=G)},null,8,["modelValue"]),s(pe,{size:"small",type:"success"},{default:v(()=>[D(o(r.$t("common.instance")),1)]),_:1})])]),n("div",is,[s(z,{type:"primary",onClick:p},{default:v(()=>[D(o(r.$t("serverDetail.config.save")),1)]),_:1})])]),s(nn,{modelValue:y.value,"onUpdate:modelValue":T[3]||(T[3]=G=>y.value=G),"merged-config":de.value},null,8,["modelValue","merged-config"])])}}}),cs=Ie(us,[["__scopeId","data-v-e7b48052"]]);function ds(e){const m=Le(),l=Lt(),c=Me(),t=M("config"),g=M(null),i=M("config");function I(){const C=l.name;return C==="server-detail-tools"?"tools":C==="server-detail-resources"?"resources":"config"}function B(C){if(!e.value?.name)return;const $=C,h=$==="tools"?"server-detail-tools":$==="resources"?"server-detail-resources":"server-detail-config";m.push({name:h,params:{name:e.value.name}})}function y(){g.value=null}function a(C){g.value=C}function f(){l.query.selection==="template"?g.value=null:l.query.instanceIndex!==void 0?g.value=parseInt(l.query.instanceIndex,10):g.value=null}function E(){l.query.instanceTab==="logs"?i.value="logs":i.value="config"}return Pt(()=>{const C=l.params.name;if(C){const $=c.servers.find(h=>h.name===C);$&&c.selectServer($.id)}t.value=I(),f(),E()}),le(()=>l.params.name,C=>{if(C){const $=c.servers.find(h=>h.name===C);$&&c.selectServer($.id)}}),le(()=>l.name,()=>{t.value=I(),f(),E()}),le(i,C=>{if(!e.value?.name)return;const $={...l.query},h={};for(const[L,A]of Object.entries($))A!=null&&(h[L]=A);C==="config"?delete h.instanceTab:h.instanceTab=C,m.replace({name:l.name,params:l.params,query:h})}),le(()=>c.servers.length,()=>{const C=l.params.name;if(C&&!c.selectedServer){const $=c.servers.find(h=>h.name===C);$&&c.selectServer($.id)}f(),E()}),le(()=>e.value?.id,(C,$)=>{C&&C!==$&&(t.value=I())},{immediate:!0}),le(g,C=>{if(!e.value?.name)return;const $={...l.query},h={};for(const[L,A]of Object.entries($))A!=null&&(h[L]=A);C===null?(h.selection="template",delete h.instanceIndex):(h.instanceIndex=String(C),delete h.selection),m.replace({name:l.name,params:l.params,query:h})}),{activeTopTab:t,selectedInstanceIndex:g,activeInstanceTab:i,getTabFromRoute:I,navigateToTab:B,handleSelectTemplate:y,handleSelectInstance:a}}function ms(e,m){const l=Me(),{t:c}=ve(),t=q(()=>(console.log("[useServerInstances] Computing allServers, store.servers:",l.servers),l.servers.filter(d=>d.name===e.value?.name))),g=q(()=>(console.log("[useServerInstances] Computing serverInstances"),e.value?.rawV11Config?.instances?e.value.rawV11Config.instances.map((d,w)=>{const x=t.value.find(Z=>Z.instances?.some(U=>U.id===d.id))?.instances?.find(Z=>Z.id===d.id);let W="offline",te;const ie=e.value?.rawV11Config?.template?.type;return x?.status?(W=x.status,te=x.pid??void 0):W="offline",{id:d.id,timestamp:d.timestamp??Date.now(),index:d.index??w,displayName:d.displayName,status:W,pid:te,transportType:ie}}):(console.log("[useServerInstances] No instances found in rawV11Config"),[]))),i=q(()=>m.value===null?null:g.value.find(d=>d.index===m.value)||null),I=q(()=>{const d=i.value;if(!d||!e.value?.rawV11Config?.instances)return{args:[],env:{},headers:{},tags:{},enabled:!0};let w;return d.index!==void 0&&(w=e.value.rawV11Config.instances.find(F=>F.index===d.index)),w||(w=e.value.rawV11Config.instances.find(F=>F.id===d.id)),w?{args:w.args??[],env:w.env??{},headers:w.headers??{},tags:w.tags??{},displayName:w.displayName,enabled:w.enabled!==void 0?w.enabled:!0}:{args:[],env:{},headers:{},tags:{},displayName:d.displayName,enabled:!0}}),B=q(()=>e.value?.rawV11Config?.template?e.value.rawV11Config.template:{type:"stdio",args:[],env:{},headers:{},timeout:6e4,aggregatedTools:[]});function y(){return m.value===null?"offline":g.value.find(w=>w.index===m.value)?.status||"offline"}function a(){return m.value===null?null:g.value.find(w=>w.index===m.value)?.id||null}async function f(d){try{console.log("[startServerInstance] Starting instance:",d),l.updateServerStatus(d,"starting"),await l.startServer(d),V.success(c("action.started"))}catch(w){console.error("[startServerInstance] Error:",w),w instanceof Error?V.error(w.message):V.error(String(w))}}async function E(){const d=a();if(!d){V.warning(c("serverDetail.noInstanceSelected"));return}await f(d)}async function C(d){try{console.log("[stopServerInstance] Stopping instance:",d),await l.stopServer(d),V.success(c("action.stopped"))}catch(w){console.error("[stopServerInstance] Error:",w),w instanceof Error?V.error(w.message):V.error(String(w))}}async function $(){const d=a();if(!d){V.warning(c("serverDetail.noInstanceSelected"));return}await C(d)}async function h(d){try{console.log("[restartServerInstance] Restarting instance:",d),l.updateServerStatus(d,"starting");const w=g.value.find(F=>F.id===d);w&&w.status==="online"&&await l.stopServer(d),await l.startServer(d),V.success(c("action.restarted"))}catch(w){console.error("[restartServerInstance] Error:",w),w instanceof Error?V.error(w.message):V.error(String(w))}}async function L(){const d=a();if(!d){V.warning(c("serverDetail.noInstanceSelected"));return}await h(d)}async function A(){if(e.value?.name)try{await l.startAllServerInstances(e.value.name),V.success(c("action.started"))}catch(d){d instanceof Error?V.error(d.message):V.error(String(d))}}async function ne(){if(e.value?.name)try{await l.stopAllServerInstances(e.value.name),V.success(c("action.stopped"))}catch(d){d instanceof Error?V.error(d.message):V.error(String(d))}}async function oe(){if(e.value?.name)try{await l.restartAllServerInstances(e.value.name),V.success(c("action.restarted"))}catch(d){d instanceof Error?V.error(d.message):V.error(String(d))}}async function re(){if(e.value?.name)try{const d=`temp-${Date.now()}`,w=e.value.rawV11Config?.instances||[],F=w.length>0?Math.max(...w.map(W=>W.index??0)):-1,x={id:d,timestamp:Date.now(),index:F+1,enabled:!0,args:[],env:{},headers:{},tags:{}};e.value.rawV11Config&&(e.value.rawV11Config.instances||(e.value.rawV11Config.instances=[]),e.value.rawV11Config.instances.push(x)),await l.addServerInstance(e.value.name),V.success(c("action.instanceAdded"))}catch(d){d instanceof Error?V.error(d.message):V.error(String(d))}}async function de(d,w){if(e.value?.name)try{const x=e.value.rawV11Config?.instances?.find(W=>W.index===d);x&&(x.displayName=w),await l.updateServerInstance(e.value.name,d,{displayName:w}),V.success(c("action.displayNameUpdated"))}catch(F){F instanceof Error?V.error(F.message):V.error(String(F))}}async function j(d){if(e.value?.name)try{await ut.confirm(c("serverDetail.deleteInstanceConfirm"),c("action.delete"),{confirmButtonText:c("action.delete"),cancelButtonText:c("action.cancel"),type:"warning"});const w=e.value.rawV11Config?.instances;if(w){const F=w.findIndex(x=>x.index===d);F!==-1&&w.splice(F,1)}m.value===d&&(m.value=null),await l.removeServerInstance(e.value.name,d),V.success(c("action.instanceDeleted"))}catch(w){w!=="cancel"&&(w instanceof Error?V.error(w.message||"Failed to delete instance"):V.error(String(w)||"Failed to delete instance"))}}async function p(){if(e.value?.name)try{await l.reassignInstanceIndexes(e.value.name),V.success(c("action.indexesReassigned"))}catch(d){d instanceof Error?V.error(d.message):V.error(String(d))}}async function R(d){if(!(!e.value?.name||m.value===null))try{const w=m.value,x=e.value.rawV11Config?.instances?.find(W=>W.index===w);x&&(d.args!==void 0&&(x.args=d.args),d.env!==void 0&&(x.env=d.env),d.headers!==void 0&&(x.headers=d.headers),d.tags!==void 0&&(x.tags=d.tags),d.proxy!==void 0&&(x.proxy=d.proxy),d.displayName!==void 0&&(x.displayName=d.displayName),d.enabled!==void 0&&(x.enabled=d.enabled)),await l.updateServerInstance(e.value.name,w,d),V.success(c("action.configSaved"))}catch(w){w instanceof Error?V.error(w.message):V.error(String(w))}}return{serverInstances:g,selectedInstance:i,selectedInstanceConfig:I,templateConfigForInstance:B,allServers:t,getSelectedInstanceStatus:y,getSelectedInstanceServerId:a,startSelectedInstance:E,stopSelectedInstance:$,restartSelectedInstance:L,startAllInstances:A,stopAllInstances:ne,restartAllInstances:oe,handleAddInstance:re,handleUpdateDisplayName:de,handleDeleteInstance:j,handleReassignIndexes:p,handleUpdateInstanceConfig:R}}function vs(e){const m=Le(),l=M(null),c=M(!1),t=M(!1),g=M(null),i=M(!1),I=M(null),B=M(null);function y(E){if(!e.value)return;let C=E.uri;if(!C.startsWith("hub://")){const $=C.replace(/^[a-zA-Z][a-zA-Z0-9+.-]*:(\/\/)?/,""),h=E.serverIndex??0;C=`hub://servers/${e.value.name}/${h}/${$}`}m.push({name:"resource-detail",params:{name:e.value.name},query:{uri:C,name:E.name,mimeType:E.mimeType}})}function a(E){g.value=E,t.value=!1,c.value=!0}function f(E){const C=I.value;C&&y(C),I.value=null,i.value=!1,B.value=null}return le(I,E=>{E!==null&&(i.value=!0)}),{showInstanceSelectForTool:t,selectedInstanceForTool:g,showCallDialog:c,pendingTool:l,showInstanceSelectForResourceDialog:i,showInstanceSelectForResource:I,selectedInstanceForResource:B,callToolWithInstance:a,viewResourceWithInstance:f}}const fs={key:0,class:"server-detail py-6 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full h-full flex flex-col overflow-hidden transition-colors duration-300"},ps={class:"custom-tabs-label"},gs={class:"flex h-full gap-4 mt-4"},hs={class:"w-1/3 border-r border-gray-200 dark:border-gray-700 pr-4 overflow-y-auto"},ys={class:"flex-1 min-h-0 overflow-y-auto pl-4 pr-4"},bs={key:0,class:"h-full flex flex-col min-h-0"},_s={class:"flex-1 min-h-0 overflow-hidden"},$s={key:1,class:"h-full flex flex-col min-h-0"},Cs={class:"flex-1 min-h-0 overflow-hidden"},ws={class:"custom-tabs-label"},xs={class:"flex-1 min-h-0 overflow-hidden"},ks={class:"custom-tabs-label"},Ss={key:2,class:"flex-1 flex items-center justify-center text-gray-400"},Vs={class:"custom-tabs-label"},Is={class:"custom-tabs-label"},Ts={key:1,class:"h-full flex items-center justify-center text-gray-400"},Ds=ce({__name:"ServerDetail",setup(e){const m=Me();It();const l=Tt(),{config:c}=Ft(l),{t}=ve(),g=Le(),i=q(()=>m.selectedServer),I=q(()=>c.value?.tagDefinitions||[]),{activeTopTab:B,selectedInstanceIndex:y,activeInstanceTab:a,navigateToTab:f,handleSelectTemplate:E,handleSelectInstance:C}=ds(i),{serverInstances:$,selectedInstanceConfig:h,templateConfigForInstance:L,getSelectedInstanceStatus:A,startSelectedInstance:ne,stopSelectedInstance:oe,restartSelectedInstance:re,startAllInstances:de,stopAllInstances:j,restartAllInstances:p,handleAddInstance:R,handleUpdateDisplayName:d,handleDeleteInstance:w,handleReassignIndexes:F,handleUpdateInstanceConfig:x}=ms(i,y),{showCallDialog:W,pendingTool:te,showInstanceSelectForResourceDialog:ie,showInstanceSelectForResource:Z,viewResourceWithInstance:U}=vs(i),J=M(!0),K=M(!1),ge=M(null);le([B,()=>i.value?.name],async([O,N])=>{N&&(O==="tools"?await m.fetchTools(N):O==="resources"&&await m.fetchResources(N))},{immediate:!0}),le([a,()=>i.value?.name,y],([O,N,Q])=>{N&&O==="logs"&&m.fetchLogs(N,Q??0)});function De(){m.selectedServerId=null,g.push({name:"servers"})}const Ee=async()=>{if(i.value)try{await ut.confirm(t("serverDetail.deleteConfirm"),t("action.delete"),{confirmButtonText:t("action.delete"),cancelButtonText:t("action.cancel"),type:"warning"}),await m.deleteServer(i.value.id),V.success(t("action.serverDeleted")),m.selectedServerId=null,g.push({name:"servers"})}catch(O){O!=="cancel"&&(O instanceof Error?V.error(O.message||"Failed to delete server"):V.error(String(O)||"Failed to delete server"))}},Ae=async(O,N)=>{if(!i.value)return;let Q=i.value.config.aggregatedTools;Q==null&&(i.value.tools?Q=i.value.tools.map(G=>G.name):Q=[]),N?Q.includes(O)||(Q=[...Q,O]):Q=Q.filter(G=>G!==O),i.value.config.aggregatedTools=Q;try{await m.updateServer(i.value.id,{config:i.value.config}),V.success(t("action.configSaved"))}catch(G){G instanceof Error?V.error(G.message):V.error(String(G))}},r=async O=>{if(!i.value)return;const N=O&&i.value.tools?i.value.tools.map(Q=>Q.name):[];i.value.config.aggregatedTools=N;try{await m.updateServer(i.value.id,{config:i.value.config}),V.success(t("action.configSaved"))}catch(Q){Q instanceof Error?V.error(Q.message):V.error(String(Q))}},T=async()=>{if(i.value)try{await m.updateServer(i.value.id,{config:i.value.rawV11Config?.template}),V.success(t("action.configSaved"))}catch(O){O instanceof Error?V.error(O.message):V.error(String(O))}},z=O=>{i.value?.rawV11Config&&(i.value.rawV11Config.template=O)},se=()=>{K.value=!0},pe=async O=>{i.value&&(i.value.rawV11Config&&(i.value.rawV11Config.template={...i.value.rawV11Config.template,...O}),await m.updateServer(i.value.id,{config:i.value.rawV11Config?.template}))},ee=async()=>{i.value&&(await m.clearLogs(i.value.id),V.success(t("action.logsCleared")))},Te=()=>{if(i.value){const O=i.value.logs.map(N=>`${ot(N.timestamp)} [${N.level.toUpperCase()}] ${N.message}`).join(`
2
- `);navigator.clipboard.writeText(O),V.success(t("action.logsCopied"))}};return(O,N)=>{const Q=Se,G=Bt,k=Ut;return i.value?(u(),b("div",fs,[s(Ca,{server:i.value,onBack:De,onDelete:Ee,onRestartAll:_(p),onStartAll:_(de),onStopAll:_(j)},null,8,["server","onRestartAll","onStartAll","onStopAll"]),s(k,{"model-value":_(B),onTabChange:N[6]||(N[6]=S=>_(f)(String(S))),class:"flex-1 flex flex-col overflow-hidden custom-tabs"},{default:v(()=>[s(G,{name:"config",class:"h-full flex flex-col"},{label:v(()=>[n("span",ps,[s(Q,null,{default:v(()=>[s(_(Ye))]),_:1}),n("span",null,o(O.$t("common.config"))+" ("+o(_($).length)+")",1)])]),default:v(()=>[n("div",gs,[n("div",hs,[s(Yl,{instances:_($),"selected-index":_(y),"server-name":i.value.name,"show-template-node":!0,"template-selected":_(y)===null,onSelect:_(C),onSelectTemplate:_(E),onAdd:_(R),onUpdateDisplayName:_(d),onDelete:_(w),onReassignIndexes:_(F)},null,8,["instances","selected-index","server-name","template-selected","onSelect","onSelectTemplate","onAdd","onUpdateDisplayName","onDelete","onReassignIndexes"])]),n("div",ys,[_(y)===null?(u(),b("div",bs,[n("div",_s,[s(tl,{config:i.value.rawV11Config||{template:{type:"stdio",args:[],env:{},headers:{},timeout:6e4,aggregatedTools:[],instanceSelectionStrategy:"random"},instances:[],tagDefinitions:[]},"onUpdate:template":z,onSave:T,onEditJson:se},null,8,["config"])])])):_(y)!==null?(u(),b("div",$s,[n("div",Cs,[s(k,{modelValue:_(a),"onUpdate:modelValue":N[2]||(N[2]=S=>Re(a)?a.value=S:null),class:"instance-detail-tabs h-full flex flex-col"},{default:v(()=>[s(G,{name:"config",class:"h-full flex flex-col min-h-0"},{label:v(()=>[n("span",ws,[s(Q,null,{default:v(()=>[s(_(Ye))]),_:1}),n("span",null,o(O.$t("common.config")),1)])]),default:v(()=>[n("div",xs,[s(cs,{"template-config":_(L),"instance-config":_(h),"server-name":i.value.name,"instance-status":_(A)(),"system-tag-definitions":I.value,onUpdate:_(x),onStartInstance:_(ne),onStopInstance:_(oe),onRestartInstance:_(re),onViewLogs:N[0]||(N[0]=S=>a.value="logs")},null,8,["template-config","instance-config","server-name","instance-status","system-tag-definitions","onUpdate","onStartInstance","onStopInstance","onRestartInstance"])])]),_:1}),s(G,{name:"logs",class:"h-full flex flex-col"},{label:v(()=>[n("span",ks,[s(Q,null,{default:v(()=>[s(_(Dt))]),_:1}),n("span",null,o(O.$t("common.logs")),1)])]),default:v(()=>[s(sl,{logs:i.value.logs,"auto-scroll":J.value,"onUpdate:autoScroll":N[1]||(N[1]=S=>J.value=S),onClear:ee,onCopy:Te},null,8,["logs","auto-scroll"])]),_:1})]),_:1},8,["modelValue"])])])):(u(),b("div",Ss,o(O.$t("serverDetail.noSelection")),1))])])]),_:1}),s(G,{name:"tools",class:"h-full flex flex-col"},{label:v(()=>[n("span",Vs,[s(Q,null,{default:v(()=>[s(_(Et))]),_:1}),n("span",null,o(O.$t("common.tools"))+" ("+o(i.value.toolsCount||0)+")",1)])]),default:v(()=>[s(kl,{tools:i.value.tools||[],"allowed-tools":i.value.config.aggregatedTools,onSelectTool:N[3]||(N[3]=S=>ge.value=S),onUpdateToolVisibility:Ae,onBatchToggleAll:r,onCallTool:N[4]||(N[4]=S=>{te.value=S,W.value=!0})},null,8,["tools","allowed-tools"])]),_:1}),s(G,{name:"resources",class:"h-full flex flex-col"},{label:v(()=>[n("span",Is,[s(Q,null,{default:v(()=>[s(_(At))]),_:1}),n("span",null,o(O.$t("common.resources"))+" ("+o(i.value.resourcesCount||0)+")",1)])]),default:v(()=>[s(Dl,{resources:i.value.resources,onViewResource:N[5]||(N[5]=S=>{Z.value=S})},null,8,["resources"])]),_:1})]),_:1},8,["model-value"]),s(Al,{modelValue:K.value,"onUpdate:modelValue":N[7]||(N[7]=S=>K.value=S),config:i.value.config,"server-name":i.value.name,onSave:pe},null,8,["modelValue","config","server-name"]),s(Bl,{modelValue:_(ie),"onUpdate:modelValue":N[8]||(N[8]=S=>Re(ie)?ie.value=S:null),instances:_($),title:O.$t("serverDetail.selectInstanceForResource"),onConfirm:_(U)},null,8,["modelValue","instances","title","onConfirm"]),_(te)?(u(),H(ta,{key:0,modelValue:_(W),"onUpdate:modelValue":N[9]||(N[9]=S=>Re(W)?W.value=S:null),"server-name":i.value.name,"tool-name":_(te).name,description:_(te).description,"input-schema":_(te).inputSchema},null,8,["modelValue","server-name","tool-name","description","input-schema"])):P("",!0)])):(u(),b("div",Ts,o(O.$t("serverDetail.noServerSelected")),1))}}}),qs=Ie(Ds,[["__scopeId","data-v-fe4c54f6"]]);export{qs as default};
@@ -1 +0,0 @@
1
- import{j as X,b as Y,p as ie,M as de,k as me,E as G,R as re,aN as ge,aO as pe,aP as ce,aQ as fe,s as ye,K as ve,aR as be,aS as _e,aT as Ve}from"./index-DkqV9kH4.js";import{v as xe}from"./el-loading-DE3FcxNH.js";import{E as he,a as $e}from"./el-tab-pane-rvS_KTwP.js";import{E as ke,a as we}from"./el-switch-fF--nMSD.js";import{a as ee,E as te}from"./el-form-item-DfWq_kSy.js";import{a as Ue,E as le}from"./el-input-5YzZrwir.js";import{E as Te,a as se,b as ae}from"./el-overlay-BTeTueuN.js";import{t as ne,aa as oe,c as S,r as v,A as x,C as n,$ as d,O as t,G as a,u,a0 as P,P as H,ai as Q,V as j,y as A,x as p,h as Ce,am as De,j as Ee,H as Re}from"./vue-vendor-Dwcr0jep.js";import"./raf-Cj-gATZv.js";import"./event-BB_Ol6Sd.js";import"./omit-BIIebEYo.js";import"./_baseClone-B991Lvrt.js";const Me={class:"tag-manager"},Ne={class:"flex items-center justify-between mb-4"},Se={class:"text-lg font-semibold text-gray-900 dark:text-white"},Pe={key:0,class:"text-center py-8 text-gray-500 dark:text-gray-400"},je={key:1,class:"space-y-3"},Ae={class:"flex-1"},Ie={class:"flex items-center gap-2"},ze={class:"font-medium text-gray-900 dark:text-white"},Be={key:0,class:"text-sm text-gray-500 dark:text-gray-400 mt-1"},Fe={key:1,class:"mt-2"},Oe={class:"flex flex-wrap gap-1"},qe={class:"flex items-center gap-2 ml-4"},Le={class:"flex justify-end gap-2"},Ke={class:"text-gray-600 dark:text-gray-300"},Ze={class:"flex justify-end gap-2"},Ge=ne({__name:"TagManager",props:{modelValue:{}},emits:["update:modelValue"],setup(I,{emit:w}){const U=I,s=w,{t:z}=oe(),f=S({get:()=>U.modelValue||[],set:e=>s("update:modelValue",e)}),D=v(!1),E=v(!1),h=v(!1),k=v(!1),T=v(),b=v(null),g=v({key:"",description:"",type:"string",values:[]}),q={key:[{required:!0,message:"Tag key is required",trigger:"blur"},{pattern:/^[a-zA-Z][a-zA-Z0-9-]*$/,message:"Key must start with a letter and contain only letters, numbers, and hyphens",trigger:"blur"}],type:[{required:!0,message:"Tag type is required",trigger:"change"}],values:[{validator:(e,l,m)=>{g.value.type==="enum"&&(!l||l.length===0)?m(new Error("At least one value is required for enum type")):m()},trigger:"change"}]};function R(){h.value=!1,b.value=null,g.value={key:"",description:"",type:"string",values:[]},D.value=!0}function L(e){h.value=!0,b.value=e,g.value={...e},D.value=!0}function B(){D.value=!1,T.value?.resetFields(),g.value={key:"",description:"",type:"string",values:[]},h.value=!1,b.value=null}function M(){T.value?.validate(e=>{if(e){k.value=!0;try{if(h.value&&b.value){const l=f.value.findIndex(m=>m.key===b.value.key);if(l!==-1){const m=[...f.value];m[l]={...g.value},f.value=m}}else{if(f.value.some(l=>l.key===g.value.key)){G.error("Tag key already exists"),k.value=!1;return}f.value=[...f.value,{...g.value}]}G.success(z("action.saved")),B()}finally{k.value=!1}}})}function K(e){b.value=e,E.value=!0}function J(){if(b.value){k.value=!0;try{f.value=f.value.filter(e=>e.key!==b.value.key),G.success(z("action.saved")),E.value=!1,b.value=null}finally{k.value=!1}}}return(e,l)=>{const m=Y,_=X,W=Ue,y=le,c=te,r=ae,$=se,F=ee,N=Te;return p(),x("div",Me,[n("div",Ne,[n("h3",Se,d(e.$t("settings.tagDefinitions")),1),t(_,{type:"primary",onClick:R},{default:a(()=>[t(m,{class:"mr-1"},{default:a(()=>[t(u(ie))]),_:1}),P(" "+d(e.$t("common.addTag")),1)]),_:1})]),f.value.length===0?(p(),x("div",Pe,d(e.$t("settings.noTagsDefined")),1)):(p(),x("div",je,[(p(!0),x(H,null,Q(f.value,i=>(p(),x("div",{key:i.key,class:"flex items-center justify-between p-4 border rounded-lg dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800/50 transition-colors"},[n("div",Ae,[n("div",Ie,[n("span",ze,d(i.key),1),t(W,{size:"small",type:"info"},{default:a(()=>[P(d(i.type),1)]),_:2},1024)]),i.description?(p(),x("div",Be,d(i.description),1)):j("",!0),i.type==="enum"&&i.values&&i.values.length>0?(p(),x("div",Fe,[n("div",Oe,[(p(!0),x(H,null,Q(i.values,O=>(p(),A(W,{key:O,size:"small",type:"success"},{default:a(()=>[P(d(O),1)]),_:2},1024))),128))])])):j("",!0)]),n("div",qe,[t(_,{size:"small",onClick:O=>L(i)},{default:a(()=>[t(m,null,{default:a(()=>[t(u(de))]),_:1})]),_:1},8,["onClick"]),t(_,{size:"small",type:"danger",onClick:O=>K(i)},{default:a(()=>[t(m,null,{default:a(()=>[t(u(me))]),_:1})]),_:1},8,["onClick"])])]))),128))])),t(N,{modelValue:D.value,"onUpdate:modelValue":l[4]||(l[4]=i=>D.value=i),title:h.value?e.$t("common.editTag"):e.$t("common.addTag"),width:"500px",class:"custom-dialog","before-close":B},{footer:a(()=>[n("div",Le,[t(_,{onClick:B},{default:a(()=>[P(d(e.$t("action.cancel")),1)]),_:1}),t(_,{type:"primary",onClick:M,loading:k.value},{default:a(()=>[P(d(e.$t("action.save")),1)]),_:1},8,["loading"])])]),default:a(()=>[t(F,{model:g.value,rules:q,ref_key:"formRef",ref:T,"label-position":"top"},{default:a(()=>[t(c,{label:e.$t("settings.tagKey"),prop:"key"},{default:a(()=>[t(y,{modelValue:g.value.key,"onUpdate:modelValue":l[0]||(l[0]=i=>g.value.key=i),placeholder:e.$t("settings.tagKeyPlaceholder"),disabled:h.value},null,8,["modelValue","placeholder","disabled"])]),_:1},8,["label"]),t(c,{label:e.$t("settings.tagDescription"),prop:"description"},{default:a(()=>[t(y,{modelValue:g.value.description,"onUpdate:modelValue":l[1]||(l[1]=i=>g.value.description=i),type:"textarea",rows:2,placeholder:e.$t("settings.tagDescriptionPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),t(c,{label:e.$t("settings.tagType"),prop:"type"},{default:a(()=>[t($,{modelValue:g.value.type,"onUpdate:modelValue":l[2]||(l[2]=i=>g.value.type=i),class:"w-full"},{default:a(()=>[t(r,{label:"String",value:"string"}),t(r,{label:"Number",value:"number"}),t(r,{label:"Boolean",value:"boolean"}),t(r,{label:"Enum",value:"enum"})]),_:1},8,["modelValue"])]),_:1},8,["label"]),g.value.type==="enum"?(p(),A(c,{key:0,label:e.$t("settings.tagValues"),prop:"values"},{default:a(()=>[t($,{modelValue:g.value.values,"onUpdate:modelValue":l[3]||(l[3]=i=>g.value.values=i),multiple:"",filterable:"","allow-create":"","default-first-option":"","reserve-keyword":!1,placeholder:e.$t("settings.tagValuesPlaceholder"),class:"w-full"},{default:a(()=>[(p(!0),x(H,null,Q(g.value.values,i=>(p(),A(r,{key:i,label:i,value:i},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"])):j("",!0)]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),t(N,{modelValue:E.value,"onUpdate:modelValue":l[6]||(l[6]=i=>E.value=i),title:e.$t("common.deleteTag"),width:"400px",class:"custom-dialog"},{footer:a(()=>[n("div",Ze,[t(_,{onClick:l[5]||(l[5]=i=>E.value=!1)},{default:a(()=>[P(d(e.$t("action.cancel")),1)]),_:1}),t(_,{type:"danger",onClick:J,loading:k.value},{default:a(()=>[P(d(e.$t("action.delete")),1)]),_:1},8,["loading"])])]),default:a(()=>[n("p",Ke,d(e.$t("settings.deleteTagConfirm")),1)]),_:1},8,["modelValue","title"])])}}}),V={seconds:1,minutes:60,hours:3600,days:86400},He=["days","hours","minutes","seconds"];function C(I){for(const w of He){const U=V[w];if(I>=U)return w}return"seconds"}function Z(I,w){Ce(I,(U,s)=>{if(s&&U!==s){const z=V[U]/V[s];w.value=Math.round(w.value/z)}})}const We={class:"h-full w-full overflow-y-auto"},Qe={class:"py-6 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full"},Je={class:"mb-6 flex items-center justify-between"},Xe={class:"text-2xl font-bold text-gray-900 dark:text-white"},Ye={class:"pb-10"},et={class:"flex items-center gap-2"},tt={class:"pt-4"},lt={class:"flex flex-col gap-2"},st={class:"flex items-center my-4"},at={class:"text-sm font-medium text-gray-900 dark:text-gray-100 mr-4"},nt={class:"flex items-center gap-2"},ot={class:"flex items-center gap-2"},ut={class:"flex items-center gap-2"},it={class:"flex items-center gap-2"},dt={class:"pt-4"},mt={class:"flex items-center my-4"},rt={class:"text-sm font-medium text-gray-900 dark:text-gray-100 mr-4"},gt={class:"flex items-center gap-2"},pt={class:"pt-4"},ct={class:"text-xs text-gray-500 mt-1"},ft={class:"space-y-4"},yt={class:"flex items-center gap-4"},vt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},bt={class:"flex items-center gap-4"},_t={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},Vt={class:"flex items-center gap-4"},xt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},ht={class:"flex items-center gap-2"},$t={class:"flex items-center gap-4"},kt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},wt={class:"flex items-center gap-2"},Ut={class:"flex items-center gap-2"},Tt={class:"pt-4"},Ct={class:"flex items-center gap-4"},Dt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},Et={class:"flex items-center gap-2"},Rt={class:"flex items-center gap-4 mt-4"},Mt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},Nt={class:"flex items-center gap-2"},St={class:"flex items-center gap-4 mt-4"},Pt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},jt={class:"flex items-center gap-4 mt-4"},At={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},It={class:"flex items-center gap-2"},zt={class:"flex items-center gap-2"},Bt={class:"pt-4"},Yt=ne({__name:"SettingsView",setup(I){const{t:w}=oe(),U=re(),{config:s,loading:z}=De(U),f=v(!1),D=v("system"),E=S({get:()=>{const e=s.value?.system?.logging?.rotationAge||"7d",l=parseInt(e.replace(/[^\d]/g,""))||7;return Number(Math.round(l))},set:e=>{s.value?.system?.logging&&e!==void 0&&e!==null&&(s.value.system.logging.rotationAge=`${e}d`)}}),h=v(C((s.value?.security?.connectionTimeout||3e4)/1e3)),k=S({get:()=>{const l=(s.value?.security?.connectionTimeout||3e4)/1e3,m=C(l),_=l/V[m];return Number(Math.round(_))},set:e=>{s.value?.security&&e!==void 0&&e!==null&&(s.value.security.connectionTimeout=Number(e)*V[h.value]*1e3)}}),T=v(C((s.value?.security?.idleConnectionTimeout||3e5)/1e3)),b=S({get:()=>{const l=(s.value?.security?.idleConnectionTimeout||3e5)/1e3,m=C(l),_=l/V[m];return Number(Math.round(_))},set:e=>{s.value?.security&&e!==void 0&&e!==null&&(s.value.security.idleConnectionTimeout=Number(e)*V[T.value]*1e3)}}),g=v("seconds"),q=S({get:()=>{const l=(s.value?.system?.startup?.startupDelay??3e3)/1e3;return Math.round(l/V[g.value])},set:e=>{if(s.value.system&&(s.value.system.startup||(s.value.system.startup={startupDelay:3e3,readyTimeout:12e4,maxConnectRetries:3,connectRetryDelay:5e3}),e!=null)){const l=e*V[g.value]*1e3,m=Math.max(0,Math.min(6e4,l));s.value.system.startup.startupDelay=m}}}),R=v("seconds"),L=S({get:()=>{const l=(s.value?.system?.startup?.readyTimeout??12e4)/1e3;return Math.round(l/V[R.value])},set:e=>{if(s.value.system?.startup&&e!=null){const l=e*V[R.value]*1e3,m=Math.max(1e4,Math.min(3e5,l));s.value.system.startup.readyTimeout=m}}}),B=S({get:()=>s.value?.system?.startup?.maxConnectRetries??3,set:e=>{s.value.system?.startup&&(s.value.system.startup.maxConnectRetries=e)}}),M=v("seconds"),K=S({get:()=>{const l=(s.value?.system?.startup?.connectRetryDelay??5e3)/1e3;return Math.round(l/V[M.value])},set:e=>{if(s.value.system?.startup&&e!=null){const l=e*V[M.value]*1e3,m=Math.max(1e3,Math.min(3e4,l));s.value.system.startup.connectRetryDelay=m}}});Z(h,k),Z(T,b),Z(g,q),Z(R,L),Z(M,K),Ee(async()=>{s.value.host||await U.fetchConfig(),s.value?.security&&(h.value=C((s.value.security.connectionTimeout||3e4)/1e3),T.value=C((s.value.security.idleConnectionTimeout||3e5)/1e3)),s.value?.system?.startup&&(g.value=C((s.value.system.startup.startupDelay||3e3)/1e3),R.value=C((s.value.system.startup.readyTimeout||12e4)/1e3),M.value=C((s.value.system.startup.connectRetryDelay||5e3)/1e3))});async function J(){f.value=!0;try{await U.updateConfig(s.value),G.success(w("settings.saveSuccess"))}catch(e){G.error(w("settings.saveError")+": "+e.message)}finally{f.value=!1}}return(e,l)=>{const m=Y,_=X,W=le,y=te,c=ke,r=ae,$=se,F=ee,N=$e,i=we,O=he,ue=xe;return p(),x("div",We,[n("div",Qe,[n("div",Je,[n("h1",Xe,d(e.$t("settings.title")),1),t(_,{type:"primary",onClick:J,loading:f.value},{default:a(()=>[t(m,{class:"mr-1"},{default:a(()=>[t(u(ge))]),_:1}),P(" "+d(e.$t("settings.save")),1)]),_:1},8,["loading"])]),Re((p(),x("div",Ye,[t(O,{modelValue:D.value,"onUpdate:modelValue":l[25]||(l[25]=o=>D.value=o),class:"demo-tabs"},{default:a(()=>[t(N,{name:"system"},{label:a(()=>[n("span",et,[t(m,null,{default:a(()=>[t(u(ye))]),_:1}),n("span",null,d(e.$t("settings.systemTab")),1)])]),default:a(()=>[n("div",tt,[t(F,{model:u(s),"label-position":"left","label-width":"260px"},{default:a(()=>[n("div",lt,[t(y,{label:e.$t("settings.host")},{default:a(()=>[t(W,{modelValue:u(s).system.host,"onUpdate:modelValue":l[0]||(l[0]=o=>u(s).system.host=o),class:"w-[200px]"},null,8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.port")},{default:a(()=>[t(c,{modelValue:u(s).system.port,"onUpdate:modelValue":l[1]||(l[1]=o=>u(s).system.port=o),min:1,max:65535,class:"w-[200px]"},null,8,["modelValue"])]),_:1},8,["label"])]),n("div",st,[n("span",at,d(e.$t("settings.appearance")),1),l[26]||(l[26]=n("div",{class:"h-px bg-gray-200 dark:bg-gray-700 flex-1"},null,-1))]),t(y,{label:e.$t("settings.theme")},{default:a(()=>[t($,{modelValue:u(s).system.theme,"onUpdate:modelValue":l[2]||(l[2]=o=>u(s).system.theme=o),class:"w-[200px]"},{default:a(()=>[t(r,{label:e.$t("settings.themeLight"),value:"light"},{default:a(()=>[n("span",nt,[t(m,null,{default:a(()=>[t(u(pe))]),_:1}),n("span",null,d(e.$t("settings.themeLight")),1)])]),_:1},8,["label"]),t(r,{label:e.$t("settings.themeDark"),value:"dark"},{default:a(()=>[n("span",ot,[t(m,null,{default:a(()=>[t(u(ce))]),_:1}),n("span",null,d(e.$t("settings.themeDark")),1)])]),_:1},8,["label"]),t(r,{label:e.$t("settings.themeSystem"),value:"system"},{default:a(()=>[n("span",ut,[t(m,null,{default:a(()=>[t(u(fe))]),_:1}),n("span",null,d(e.$t("settings.themeSystem")),1)])]),_:1},8,["label"])]),_:1},8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.language")},{default:a(()=>[t($,{modelValue:u(s).system.language,"onUpdate:modelValue":l[3]||(l[3]=o=>u(s).system.language=o),class:"w-[200px]"},{default:a(()=>[t(r,{label:e.$t("settings.langEn"),value:"en"},null,8,["label"]),t(r,{label:e.$t("settings.langZh"),value:"zh"},null,8,["label"])]),_:1},8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["model"])])]),_:1}),t(N,{name:"logging"},{label:a(()=>[n("span",it,[t(m,null,{default:a(()=>[t(u(ve))]),_:1}),n("span",null,d(e.$t("settings.logging")),1)])]),default:a(()=>[n("div",dt,[u(s).system.logging?(p(),A(F,{key:0,model:u(s).system.logging,"label-position":"left","label-width":"260px"},{default:a(()=>[t(y,{label:e.$t("settings.logLevel")},{default:a(()=>[t($,{modelValue:u(s).system.logging.level,"onUpdate:modelValue":l[4]||(l[4]=o=>u(s).system.logging.level=o),class:"w-full md:w-64"},{default:a(()=>[t(r,{label:"DEBUG",value:"debug"}),t(r,{label:"INFO",value:"info"}),t(r,{label:"WARN",value:"warn"}),t(r,{label:"ERROR",value:"error"})]),_:1},8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.maxAge")},{default:a(()=>[t(c,{modelValue:E.value,"onUpdate:modelValue":l[5]||(l[5]=o=>E.value=o),min:1,class:"w-[150px]"},null,8,["modelValue"])]),_:1},8,["label"]),n("div",mt,[n("span",rt,d(e.$t("settings.debugOptions")),1),l[27]||(l[27]=n("div",{class:"h-px bg-gray-200 dark:bg-gray-700 flex-1"},null,-1))]),u(s).system.logging.level==="debug"||u(s).isDevMode?(p(),x(H,{key:0},[t(y,{label:e.$t("settings.jsonPretty")},{default:a(()=>[t(i,{modelValue:u(s).system.logging.jsonPretty,"onUpdate:modelValue":l[6]||(l[6]=o=>u(s).system.logging.jsonPretty=o)},null,8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.mcpCommDebug")},{default:a(()=>[t(i,{modelValue:u(s).system.logging.mcpCommDebug,"onUpdate:modelValue":l[7]||(l[7]=o=>u(s).system.logging.mcpCommDebug=o)},null,8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.apiDebug")},{default:a(()=>[t(i,{modelValue:u(s).system.logging.apiDebug,"onUpdate:modelValue":l[8]||(l[8]=o=>u(s).system.logging.apiDebug=o)},null,8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.gatewayDebug")},{default:a(()=>[t(i,{modelValue:u(s).system.logging.gatewayDebug,"onUpdate:modelValue":l[9]||(l[9]=o=>u(s).system.logging.gatewayDebug=o)},null,8,["modelValue"])]),_:1},8,["label"])],64)):j("",!0)]),_:1},8,["model"])):j("",!0)])]),_:1}),t(N,{name:"security"},{label:a(()=>[n("span",gt,[t(m,null,{default:a(()=>[t(u(be))]),_:1}),n("span",null,d(e.$t("settings.security")),1)])]),default:a(()=>[n("div",pt,[u(s).security?(p(),A(F,{key:0,model:u(s).security,"label-position":"left","label-width":"260px"},{default:a(()=>[t(y,{label:e.$t("settings.allowedNetworks")},{default:a(()=>[t($,{modelValue:u(s).security.allowedNetworks,"onUpdate:modelValue":l[10]||(l[10]=o=>u(s).security.allowedNetworks=o),multiple:"",filterable:"","allow-create":"","default-first-option":"","reserve-keyword":!1,placeholder:"Enter IP CIDR",class:"w-full"},{default:a(()=>[(p(!0),x(H,null,Q(u(s).security.allowedNetworks,o=>(p(),A(r,{key:o,label:o,value:o},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),n("div",ct,d(e.$t("settings.allowedNetworksHint")),1)]),_:1},8,["label"]),n("div",ft,[n("div",yt,[n("span",vt,d(e.$t("settings.maxConcurrentConnections")),1),t(c,{modelValue:u(s).security.maxConcurrentConnections,"onUpdate:modelValue":l[11]||(l[11]=o=>u(s).security.maxConcurrentConnections=o),min:1,max:1e3,style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"])]),n("div",bt,[n("span",_t,d(e.$t("settings.maxConnections")),1),t(c,{modelValue:u(s).security.maxConnections,"onUpdate:modelValue":l[12]||(l[12]=o=>u(s).security.maxConnections=o),min:1,max:1e3,style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"])]),n("div",Vt,[n("span",xt,d(e.$t("settings.connectionTimeout")),1),n("div",ht,[t(c,{modelValue:k.value,"onUpdate:modelValue":l[13]||(l[13]=o=>k.value=o),min:1,style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:h.value,"onUpdate:modelValue":l[14]||(l[14]=o=>h.value=o),style:{width:"128px","flex-shrink":"0"}},{default:a(()=>[t(r,{label:e.$t("settings.timeUnits.seconds"),value:"seconds"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.minutes"),value:"minutes"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.hours"),value:"hours"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.days"),value:"days"},null,8,["label"])]),_:1},8,["modelValue"])])]),n("div",$t,[n("span",kt,d(e.$t("settings.idleConnectionTimeout")),1),n("div",wt,[t(c,{modelValue:b.value,"onUpdate:modelValue":l[15]||(l[15]=o=>b.value=o),min:1,style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:T.value,"onUpdate:modelValue":l[16]||(l[16]=o=>T.value=o),style:{width:"128px","flex-shrink":"0"}},{default:a(()=>[t(r,{label:e.$t("settings.timeUnits.seconds"),value:"seconds"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.minutes"),value:"minutes"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.hours"),value:"hours"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.days"),value:"days"},null,8,["label"])]),_:1},8,["modelValue"])])])])]),_:1},8,["model"])):j("",!0)])]),_:1}),t(N,{name:"startup"},{label:a(()=>[n("span",Ut,[t(m,null,{default:a(()=>[t(u(_e))]),_:1}),n("span",null,d(e.$t("settings.startupTab")),1)])]),default:a(()=>[n("div",Tt,[u(s).system?(p(),A(F,{key:0,model:u(s).system,"label-position":"left","label-width":"260px"},{default:a(()=>[n("div",Ct,[n("span",Dt,d(e.$t("settings.startupDelay")),1),n("div",Et,[t(c,{modelValue:q.value,"onUpdate:modelValue":l[17]||(l[17]=o=>q.value=o),style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:g.value,"onUpdate:modelValue":l[18]||(l[18]=o=>g.value=o),style:{width:"128px","flex-shrink":"0"}},{default:a(()=>[t(r,{label:e.$t("settings.timeUnits.seconds"),value:"seconds"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.minutes"),value:"minutes"},null,8,["label"])]),_:1},8,["modelValue"])])]),n("div",Rt,[n("span",Mt,d(e.$t("settings.readyTimeout")),1),n("div",Nt,[t(c,{modelValue:L.value,"onUpdate:modelValue":l[19]||(l[19]=o=>L.value=o),style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:R.value,"onUpdate:modelValue":l[20]||(l[20]=o=>R.value=o),style:{width:"128px","flex-shrink":"0"}},{default:a(()=>[t(r,{label:e.$t("settings.timeUnits.seconds"),value:"seconds"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.minutes"),value:"minutes"},null,8,["label"])]),_:1},8,["modelValue"])])]),n("div",St,[n("span",Pt,d(e.$t("settings.maxConnectRetries")),1),t(c,{modelValue:B.value,"onUpdate:modelValue":l[21]||(l[21]=o=>B.value=o),min:0,max:10,style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"])]),n("div",jt,[n("span",At,d(e.$t("settings.connectRetryDelay")),1),n("div",It,[t(c,{modelValue:K.value,"onUpdate:modelValue":l[22]||(l[22]=o=>K.value=o),style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:M.value,"onUpdate:modelValue":l[23]||(l[23]=o=>M.value=o),style:{width:"128px","flex-shrink":"0"}},{default:a(()=>[t(r,{label:e.$t("settings.timeUnits.seconds"),value:"seconds"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.minutes"),value:"minutes"},null,8,["label"])]),_:1},8,["modelValue"])])])]),_:1},8,["model"])):j("",!0)])]),_:1}),t(N,{name:"tags"},{label:a(()=>[n("span",zt,[t(m,null,{default:a(()=>[t(u(Ve))]),_:1}),n("span",null,d(e.$t("settings.tagsTab")),1)])]),default:a(()=>[n("div",Bt,[t(Ge,{modelValue:u(s).tagDefinitions,"onUpdate:modelValue":l[24]||(l[24]=o=>u(s).tagDefinitions=o)},null,8,["modelValue"])])]),_:1})]),_:1},8,["modelValue"])])),[[ue,u(z)]])])])}}});export{Yt as default};
@@ -1 +0,0 @@
1
- import{j as X,E as V,l as O,a0 as Y}from"./index-DkqV9kH4.js";import{E as Z,b as ee,a as te}from"./el-overlay-BTeTueuN.js";import{a as ae,E as le}from"./el-input-5YzZrwir.js";import{t as oe,aa as se,c as J,r as h,h as A,y as D,u as s,G as f,C as n,A as m,$ as o,V as k,O as w,P as z,ai as M,a0 as C,x as r}from"./vue-vendor-Dwcr0jep.js";import{_ as ne}from"./_plugin-vue_export-helper-DlAUqK2U.js";const F="mcp-hub-lite",re={class:"flex flex-col h-[60vh]"},ie={key:0,class:"mb-4 text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800/50 p-3 rounded-lg border border-gray-100 dark:border-gray-700/50 max-h-32 overflow-y-auto"},ce={key:1,class:"mb-4"},ue={class:"flex items-center"},de={class:"font-medium text-gray-700 dark:text-gray-300 mr-2 whitespace-nowrap"},me={key:0,class:"mt-1 flex items-center gap-1 flex-wrap"},pe={class:"text-xs text-gray-500"},fe={class:"flex-1 flex gap-4 min-h-0"},ge={class:"flex-1 flex flex-col min-w-0"},ve={class:"flex justify-between items-center mb-2"},ye={class:"font-medium text-gray-700 dark:text-gray-300"},he={class:"flex-1 flex flex-col min-w-0 border-l border-gray-200 dark:border-gray-700 pl-4"},_e={class:"flex justify-between items-center mb-2"},xe={class:"font-medium text-gray-700 dark:text-gray-300"},be={class:"flex-1 overflow-auto bg-gray-50 dark:bg-[#0f172a] rounded-lg border border-gray-200 dark:border-gray-700 p-4 font-mono text-sm"},ke={key:0,class:"whitespace-pre-wrap break-words text-gray-600 dark:text-gray-400"},we={key:1,class:"whitespace-pre-wrap break-words text-green-600 dark:text-green-400"},Ce={key:2,class:"whitespace-pre-wrap break-words text-red-600 dark:text-red-400"},Se={key:3,class:"whitespace-pre-wrap break-words text-gray-600 dark:text-gray-400"},Ne={class:"flex justify-between items-center"},Ve={class:"text-xs text-gray-500"},De={key:0},Ie={class:"flex gap-2"},Ee=oe({__name:"ToolCallDialog",props:{modelValue:{type:Boolean},serverName:{},toolName:{},description:{},inputSchema:{},hideInstanceSelect:{type:Boolean}},emits:["update:modelValue"],setup(g,{emit:U}){const{t:a}=se(),i=g,L=U,I=J({get:()=>i.modelValue,set:e=>L("update:modelValue",e)}),_=h("{}"),v=h(null),d=h(null),S=h(!1),y=h(!1),x=h([]),p=h(null),E=J(()=>{if(p.value)return x.value.find(e=>e.id===p.value)?.tags}),T=J(()=>i.inputSchema?JSON.stringify(i.inputSchema,null,2):"{}"),j=async()=>{if(i.serverName)try{const e=await O.get(`/web/server-instances/${i.serverName}`),t=Array.isArray(e)?e:[];x.value=t,t.length>0&&(p.value=t[0].id)}catch(e){console.error("Failed to fetch server instances:",e),x.value=[],p.value=null}};A(()=>i.serverName,()=>{j()}),A(()=>i.modelValue,e=>{if(e){const t=B(i.inputSchema);_.value=JSON.stringify(t,null,2),v.value=null,d.value=null,j()}},{immediate:!0});function B(e){if(!e||!e.properties)return{};const t={};for(const[l,b]of Object.entries(e.properties)){const c=b;c.default!==void 0?t[l]=c.default:c.type==="string"?t[l]=R(c.description)??"":c.type==="number"||c.type==="integer"?t[l]=0:c.type==="boolean"?t[l]=!1:c.type==="array"?t[l]=[]:c.type==="object"?t[l]=B(c):t[l]=null}return t}function R(e){return e?e.match(/Must be "(.+?)"/)?.[1]:void 0}function H(){try{const e=JSON.parse(_.value);_.value=JSON.stringify(e,null,2)}catch{V.warning(a("toolCallDialog.invalidJson"))}}function P(){y.value=!y.value}function q(e){const t=e.index??"?",l=e.displayName||e.id;return`#${t} [${l}]`}function G(){console.log("Selected instance:",p.value)}async function K(){try{let e;try{e=JSON.parse(_.value)}catch{V.error(a("toolCallDialog.invalidJsonArguments"));return}S.value=!0,v.value=null,d.value=null,y.value=!1;let t;if(i.serverName&&i.serverName!==F){const l=p.value?x.value.find(b=>b.id===p.value):void 0;t=await O.post(`/web/hub-tools/servers/${i.serverName}/tools/${i.toolName}/call`,{toolArgs:e,requestOptions:l?{sessionId:l.id,tags:l.tags&&Object.keys(l.tags).length>0?l.tags:void 0}:void 0})}else t=await O.post(`/web/hub-tools/system/${i.toolName}/call`,{toolArgs:e});v.value=JSON.stringify(t,null,2),V.success(a("toolCallDialog.executionSuccessful"))}catch(e){console.error("Tool execution failed:",e),e instanceof Error?d.value=e.message||String(e):d.value=String(e),e instanceof Y&&e.data?d.value=typeof e.data=="string"?e.data:JSON.stringify(e.data,null,2):typeof e=="object"&&e!==null&&"response"in e&&e.response?.data&&(d.value=JSON.stringify(e.response.data,null,2)),V.error(a("toolCallDialog.executionFailed"))}finally{S.value=!1}}return(e,t)=>{const l=ee,b=te,c=ae,N=X,Q=le,W=Z;return r(),D(W,{modelValue:I.value,"onUpdate:modelValue":t[3]||(t[3]=u=>I.value=u),title:s(a)("toolCallDialog.title",{toolName:g.toolName}),width:"800px",class:"tool-call-dialog","destroy-on-close":""},{footer:f(()=>[n("div",Ne,[n("div",Ve,[S.value?(r(),m("span",De,o(s(a)("toolCallDialog.executing")),1)):k("",!0)]),n("div",Ie,[w(N,{onClick:t[2]||(t[2]=u=>I.value=!1)},{default:f(()=>[C(o(s(a)("action.cancel")),1)]),_:1}),w(N,{type:"primary",loading:S.value,onClick:K},{default:f(()=>[C(o(s(a)("toolCallDialog.execute")),1)]),_:1},8,["loading"])])])]),default:f(()=>[n("div",re,[g.description?(r(),m("div",ie,o(g.description),1)):k("",!0),g.serverName&&g.serverName!==s(F)&&!g.hideInstanceSelect?(r(),m("div",ce,[n("div",ue,[n("span",de,o(s(a)("toolCallDialog.instance")),1),w(b,{modelValue:p.value,"onUpdate:modelValue":t[0]||(t[0]=u=>p.value=u),placeholder:s(a)("toolCallDialog.selectInstance"),size:"small",class:"flex-1",onChange:G},{default:f(()=>[(r(!0),m(z,null,M(x.value,u=>(r(),D(l,{key:u.id,label:q(u),value:u.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"])]),E.value&&Object.keys(E.value).length>0?(r(),m("div",me,[n("span",pe,o(s(a)("toolCallDialog.instanceTags"))+":",1),(r(!0),m(z,null,M(E.value,(u,$)=>(r(),D(c,{key:$,size:"small",type:"info"},{default:f(()=>[C(o($)+"="+o(u),1)]),_:2},1024))),128))])):k("",!0)])):k("",!0),n("div",fe,[n("div",ge,[n("div",ve,[n("span",ye,o(s(a)("toolCallDialog.arguments")),1),w(N,{link:"",type:"primary",size:"small",onClick:H},{default:f(()=>[C(o(s(a)("toolCallDialog.formatJson")),1)]),_:1})]),w(Q,{modelValue:_.value,"onUpdate:modelValue":t[1]||(t[1]=u=>_.value=u),type:"textarea",class:"flex-1 font-mono custom-textarea","input-style":{height:"100%",fontFamily:"monospace"},placeholder:'{"key": "value"}',resize:"none",maxlength:"1000000","show-word-limit":""},null,8,["modelValue"])]),n("div",he,[n("div",_e,[n("span",xe,o(y.value?s(a)("toolCallDialog.inputSchema"):v.value||d.value?s(a)("toolCallDialog.response"):s(a)("toolCallDialog.inputSchema")),1),v.value||d.value||y.value?(r(),D(N,{key:0,link:"",type:"info",size:"small",onClick:P},{default:f(()=>[C(o(y.value?s(a)("toolCallDialog.showResponse"):s(a)("toolCallDialog.showInputSchema")),1)]),_:1})):k("",!0)]),n("div",be,[y.value?(r(),m("pre",ke,o(T.value),1)):v.value?(r(),m("pre",we,o(v.value),1)):d.value?(r(),m("pre",Ce,o(d.value),1)):(r(),m("pre",Se,o(T.value),1))])])])])]),_:1},8,["modelValue","title"])}}}),$e=ne(Ee,[["__scopeId","data-v-60262496"]]);export{F as M,$e as T};
@@ -1 +0,0 @@
1
- import{u as G,U as J,b as Q,l as U,j as W,V as X,W as j,s as K,X as Y}from"./index-DkqV9kH4.js";import{a as Z}from"./el-skeleton-item-DhgR50Jx.js";import{E as ee}from"./el-input-5YzZrwir.js";import{t as P,A as i,C as s,J as E,$ as n,V as H,x as a,aa as te,r as u,c as se,j as oe,O as l,G as y,u as p,a0 as z,H as F,L as R,P as T,ai as S,y as V}from"./vue-vendor-Dwcr0jep.js";import{M as L,T as ae}from"./ToolCallDialog-DEapCO06.js";import{_ as le}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./event-BB_Ol6Sd.js";import"./el-overlay-BTeTueuN.js";const ne={class:"min-w-0 mb-3"},re={class:"flex items-center gap-2 mb-2"},ie=["title"],ce=["title"],M=P({__name:"ToolCard",props:{title:{},description:{},tagName:{},tagClass:{}},emits:["call"],setup(c){return(h,g)=>(a(),i("div",{class:"bg-white dark:bg-[#1e293b] border border-gray-200 dark:border-gray-700 rounded-lg p-4 flex flex-col justify-between shadow-sm hover:shadow-md transition-shadow h-full cursor-pointer",onClick:g[0]||(g[0]=_=>h.$emit("call"))},[s("div",ne,[s("div",re,[c.tagName?(a(),i("span",{key:0,class:E(["shrink-0 px-2 py-0.5 rounded-full text-xs font-medium whitespace-nowrap",c.tagClass||"bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-300"])},n(c.tagName),3)):H("",!0),s("span",{class:"font-bold text-gray-900 dark:text-gray-100 font-mono text-base break-all",title:c.title},n(c.title),9,ie)]),s("p",{class:"text-sm text-gray-600 dark:text-gray-400 line-clamp-2",title:c.description},n(c.description||h.$t("tools.noDescription")),9,ce)])]))}}),de={class:"tools-view py-6 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full h-full flex flex-col overflow-hidden bg-gray-50 dark:bg-[#0f172a] transition-colors duration-300"},me={class:"mb-6 shrink-0"},ue={class:"text-2xl font-semibold text-gray-900 dark:text-white mb-4"},ve={class:"relative"},pe={class:"flex-1 overflow-y-auto custom-scrollbar space-y-8 pr-2"},ge={class:"text-lg font-bold text-gray-900 dark:text-white"},he={class:"text-sm font-normal text-gray-500 ml-2"},fe={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 mb-8 transition-all duration-300"},xe={class:"flex items-center gap-2 mb-4"},ye={class:"text-lg font-bold text-gray-900 dark:text-white"},_e={class:"text-sm font-normal text-gray-500 ml-2"},be={key:0,class:"space-y-4"},ke={key:1,class:"text-center py-8 text-gray-500"},we={key:2,class:"space-y-6"},Ce=["onClick"],Ne={class:"text-xs bg-gray-100 dark:bg-gray-800 px-2 py-0.5 rounded-full"},$e={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 transition-all duration-300"},Te=P({__name:"ToolsView",setup(c){const{t:h}=te(),g=u(""),_=u(!1),I=u([]),k=G(),w=u([]),C=u(!1),v=u(null),f=u(new Set),b=u(!1);function O(e){f.value.has(e)?f.value.delete(e):f.value.add(e)}async function q(){try{const e=await U.get("/web/hub-tools/system");w.value=e.map(t=>({...t,serverName:L})).sort((t,d)=>t.name.localeCompare(d.name))}catch(e){console.error("Failed to fetch system tools:",e)}}function B(e){v.value={...e,serverName:e.serverName},C.value=!0}async function D(){_.value=!0;try{const e=await U.get(`/web/search?q=${encodeURIComponent(g.value)}`);I.value=(e.results||[]).map(t=>({tool:{name:t.name,description:t.description,serverName:t.serverName,inputSchema:t.inputSchema},score:0}))}catch(e){console.error("Failed to fetch tools:",e)}finally{_.value=!1}}function A(){D()}const N=se(()=>{const e={};return I.value.forEach(t=>{if(!t?.tool)return;const x=k.servers.find($=>$.name===t.tool.serverName)?.status==="online"?h("tools.online"):h("tools.offline"),r=t.tool.serverName?`${t.tool.serverName} (${x})`:"Unknown";e[r]||(e[r]=[]),e[r].push(t)}),Object.entries(e).map(([t,d])=>({serverName:t,tools:d.sort((x,r)=>x.tool.name.localeCompare(r.tool.name))})).sort((t,d)=>t.serverName.localeCompare(d.serverName))});return oe(()=>{q(),D(),k.servers.length===0&&k.fetchServers()}),(e,t)=>{const d=W,x=ee,r=Q,$=Z;return a(),i("div",de,[s("div",me,[s("h2",ue,n(e.$t("tools.title")),1),s("div",ve,[l(x,{modelValue:g.value,"onUpdate:modelValue":t[0]||(t[0]=o=>g.value=o),placeholder:e.$t("tools.searchPlaceholder"),class:"w-full",size:"large","prefix-icon":p(J),onInput:A},{append:y(()=>[l(d,{icon:p(X)},null,8,["icon"])]),_:1},8,["modelValue","placeholder","prefix-icon"])])]),s("div",pe,[s("section",null,[s("div",{class:"flex items-center gap-2 mb-4 cursor-pointer select-none hover:text-gray-700 dark:hover:text-gray-200 transition-colors",onClick:t[1]||(t[1]=o=>b.value=!b.value)},[l(r,{class:E(["transition-transform duration-200",{"-rotate-90":b.value}])},{default:y(()=>[l(p(j))]),_:1},8,["class"]),l(r,{class:"text-gray-900 dark:text-white",size:20},{default:y(()=>[l(p(K))]),_:1}),s("h3",ge,[z(n(e.$t("tools.systemTools"))+" ",1),s("span",he,"("+n(w.value.length)+")",1)])]),F(s("div",fe,[(a(!0),i(T,null,S(w.value,o=>(a(),V(M,{key:o.name,title:o.name,description:o.description,"tag-name":e.$t("tools.systemTag"),"tag-class":"bg-blue-100 text-blue-700 dark:bg-blue-900/50 dark:text-blue-300",onCall:m=>B(o)},null,8,["title","description","tag-name","onCall"]))),128))],512),[[R,!b.value]])]),s("section",null,[s("div",xe,[l(r,{class:"text-gray-900 dark:text-white",size:20},{default:y(()=>[l(p(Y))]),_:1}),s("h3",ye,[z(n(e.$t("tools.aggregatedTools"))+" ",1),s("span",_e,"("+n(N.value.reduce((o,m)=>o+m.tools.length,0))+")",1)])]),_.value?(a(),i("div",be,[l($,{animated:"",count:3})])):N.value.length===0?(a(),i("div",ke,n(e.$t("tools.noToolsFound")),1)):(a(),i("div",we,[(a(!0),i(T,null,S(N.value,o=>(a(),i("div",{key:o.serverName,class:"space-y-3"},[s("div",{class:"flex items-center gap-2 text-sm font-medium text-gray-500 dark:text-gray-400 px-1 cursor-pointer select-none hover:text-gray-700 dark:hover:text-gray-200 transition-colors",onClick:m=>O(o.serverName)},[l(r,{class:E(["transition-transform duration-200",{"-rotate-90":f.value.has(o.serverName)}])},{default:y(()=>[l(p(j))]),_:1},8,["class"]),s("span",null,n(o.serverName),1),s("span",Ne,n(o.tools.length),1)],8,Ce),F(s("div",$e,[(a(!0),i(T,null,S(o.tools,m=>(a(),V(M,{key:m.tool.name,title:m.tool.name,description:m.tool.description,onCall:Se=>B(m.tool)},null,8,["title","description","onCall"]))),128))],512),[[R,!f.value.has(o.serverName)]])]))),128))]))])]),v.value?(a(),V(ae,{key:0,modelValue:C.value,"onUpdate:modelValue":t[2]||(t[2]=o=>C.value=o),"server-name":v.value.serverName,"tool-name":v.value.name,description:v.value.description,"input-schema":v.value.inputSchema,"hide-instance-select":v.value.serverName!==p(L)},null,8,["modelValue","server-name","tool-name","description","input-schema","hide-instance-select"])):H("",!0)])}}}),Fe=le(Te,[["__scopeId","data-v-c6b0680d"]]);export{Fe as default};
@@ -1 +0,0 @@
1
- import{a5 as T,ab as Q,bA as U,bB as B,a6 as X,bC as Z,bD as V,a9 as M,aa as z,bE as D,bF as k,bG as ee,bH as re,bI as $,bJ as m,ac as G,bK as d,bL as K,bM as l,ad as te,ai as ne,af as ae,bN as oe}from"./index-DkqV9kH4.js";var S=Object.create,se=(function(){function e(){}return function(r){if(!T(r))return{};if(S)return S(r);e.prototype=r;var t=new e;return e.prototype=void 0,t}})();function ie(e,r){var t=-1,a=e.length;for(r||(r=Array(a));++t<a;)r[t]=e[t];return r}function ce(e,r){for(var t=-1,a=e==null?0:e.length;++t<a&&r(e[t],t,e)!==!1;);return e}function y(e,r,t,a){var b=!t;t||(t={});for(var s=-1,o=r.length;++s<o;){var c=r[s],i=void 0;i===void 0&&(i=e[c]),b?Q(t,c,i):U(t,c,i)}return t}function fe(e){var r=[];if(e!=null)for(var t in Object(e))r.push(t);return r}var ue=Object.prototype,be=ue.hasOwnProperty;function ge(e){if(!T(e))return fe(e);var r=B(e),t=[];for(var a in e)a=="constructor"&&(r||!be.call(e,a))||t.push(a);return t}function A(e){return X(e)?Z(e,!0):ge(e)}var N=V(Object.getPrototypeOf,Object);function le(e,r){return e&&y(r,M(r),e)}function ye(e,r){return e&&y(r,A(r),e)}var _=typeof exports=="object"&&exports&&!exports.nodeType&&exports,I=_&&typeof module=="object"&&module&&!module.nodeType&&module,pe=I&&I.exports===_,x=pe?z.Buffer:void 0,C=x?x.allocUnsafe:void 0;function Te(e,r){if(r)return e.slice();var t=e.length,a=C?C(t):new e.constructor(t);return e.copy(a),a}function de(e,r){return y(e,D(e),r)}var Ae=Object.getOwnPropertySymbols,R=Ae?function(e){for(var r=[];e;)ee(r,D(e)),e=N(e);return r}:k;function je(e,r){return y(e,R(e),r)}function he(e){return re(e,A,R)}var Oe=Object.prototype,ve=Oe.hasOwnProperty;function we(e){var r=e.length,t=new e.constructor(r);return r&&typeof e[0]=="string"&&ve.call(e,"index")&&(t.index=e.index,t.input=e.input),t}function j(e){var r=new e.constructor(e.byteLength);return new $(r).set(new $(e)),r}function $e(e,r){var t=r?j(e.buffer):e.buffer;return new e.constructor(t,e.byteOffset,e.byteLength)}var me=/\w*$/;function Se(e){var r=new e.constructor(e.source,me.exec(e));return r.lastIndex=e.lastIndex,r}var E=m?m.prototype:void 0,F=E?E.valueOf:void 0;function Ie(e){return F?Object(F.call(e)):{}}function xe(e,r){var t=r?j(e.buffer):e.buffer;return new e.constructor(t,e.byteOffset,e.length)}var Ce="[object Boolean]",Ee="[object Date]",Fe="[object Map]",Le="[object Number]",Pe="[object RegExp]",Ue="[object Set]",Be="[object String]",Me="[object Symbol]",De="[object ArrayBuffer]",Ge="[object DataView]",Ke="[object Float32Array]",Ne="[object Float64Array]",_e="[object Int8Array]",Re="[object Int16Array]",He="[object Int32Array]",Je="[object Uint8Array]",We="[object Uint8ClampedArray]",Ye="[object Uint16Array]",qe="[object Uint32Array]";function Qe(e,r,t){var a=e.constructor;switch(r){case De:return j(e);case Ce:case Ee:return new a(+e);case Ge:return $e(e,t);case Ke:case Ne:case _e:case Re:case He:case Je:case We:case Ye:case qe:return xe(e,t);case Fe:return new a;case Le:case Be:return new a(e);case Pe:return Se(e);case Ue:return new a;case Me:return Ie(e)}}function Xe(e){return typeof e.constructor=="function"&&!B(e)?se(N(e)):{}}var Ze="[object Map]";function Ve(e){return G(e)&&d(e)==Ze}var L=l&&l.isMap,ze=L?K(L):Ve,ke="[object Set]";function er(e){return G(e)&&d(e)==ke}var P=l&&l.isSet,rr=P?K(P):er,tr=1,nr=2,ar=4,H="[object Arguments]",or="[object Array]",sr="[object Boolean]",ir="[object Date]",cr="[object Error]",J="[object Function]",fr="[object GeneratorFunction]",ur="[object Map]",br="[object Number]",W="[object Object]",gr="[object RegExp]",lr="[object Set]",yr="[object String]",pr="[object Symbol]",Tr="[object WeakMap]",dr="[object ArrayBuffer]",Ar="[object DataView]",jr="[object Float32Array]",hr="[object Float64Array]",Or="[object Int8Array]",vr="[object Int16Array]",wr="[object Int32Array]",$r="[object Uint8Array]",mr="[object Uint8ClampedArray]",Sr="[object Uint16Array]",Ir="[object Uint32Array]",n={};n[H]=n[or]=n[dr]=n[Ar]=n[sr]=n[ir]=n[jr]=n[hr]=n[Or]=n[vr]=n[wr]=n[ur]=n[br]=n[W]=n[gr]=n[lr]=n[yr]=n[pr]=n[$r]=n[mr]=n[Sr]=n[Ir]=!0;n[cr]=n[J]=n[Tr]=!1;function p(e,r,t,a,b,s){var o,c=r&tr,i=r&nr,Y=r&ar;if(t&&(o=b?t(e,a,b,s):t(e)),o!==void 0)return o;if(!T(e))return e;var h=ae(e);if(h){if(o=we(e),!c)return ie(e,o)}else{var g=d(e),O=g==J||g==fr;if(te(e))return Te(e,c);if(g==W||g==H||O&&!b){if(o=i||O?{}:Xe(e),!c)return i?je(e,ye(o,e)):de(e,le(o,e))}else{if(!n[g])return b?e:{};o=Qe(e,g,c)}}s||(s=new ne);var v=s.get(e);if(v)return v;s.set(e,o),rr(e)?e.forEach(function(f){o.add(p(f,r,t,f,e,s))}):ze(e)&&e.forEach(function(f,u){o.set(u,p(f,r,t,u,e,s))});var q=Y?i?he:oe:i?A:M,w=h?void 0:q(e);return ce(w||e,function(f,u){w&&(u=f,f=e[u]),U(o,u,p(f,r,t,u,e,s))}),o}export{ie as a,Te as b,y as c,xe as d,p as e,he as f,N as g,Xe as i,A as k};
@@ -1 +0,0 @@
1
- import{bo as dt,a5 as ve,ai as pt,bp as Be,a9 as ft,bq as De,br as He,aA as mt,bs as vt,bt as yt,a4 as bt,af as gt,Z as Me,aY as ht,d as Ke,b5 as ue,c as wt,al as Ct,e as A,an as St,aZ as Et,bu as xt,aJ as ce,bv as It,_ as Ue,aq as Pt,av as kt,au as _e,ap as Nt,g as ye,bg as Mt,Q as Tt,bw as zt,b2 as At,aK as Ft,ar as Te,b as O,F as Ot,h as Ge,aU as $t,aC as Rt,b1 as ze}from"./index-DkqV9kH4.js";import{a as de,c as C,g as We,s as ee,r as U,h as te,u as o,p as Ae,n as F,t as Ye,aA as Lt,a1 as Vt,j as Bt,D as Dt,x as b,A as I,V as S,P as pe,J as w,v as V,C as M,y as P,G as T,U as K,B as Fe,I as _,N as fe,$ as j,K as oe,d as Oe,O as Q,M as Ht}from"./vue-vendor-Dwcr0jep.js";import{U as ne,I as me,C as $e}from"./event-BB_Ol6Sd.js";var Kt=/\s/;function Ut(e){for(var a=e.length;a--&&Kt.test(e.charAt(a)););return a}var _t=/^\s+/;function Gt(e){return e&&e.slice(0,Ut(e)+1).replace(_t,"")}var Re=NaN,Wt=/^[-+]0x[0-9a-f]+$/i,Yt=/^0b[01]+$/i,qt=/^0o[0-7]+$/i,Xt=parseInt;function $n(e){if(typeof e=="number")return e;if(dt(e))return Re;if(ve(e)){var a=typeof e.valueOf=="function"?e.valueOf():e;e=ve(a)?a+"":a}if(typeof e!="string")return e===0?e:+e;e=Gt(e);var i=Yt.test(e);return i||qt.test(e)?Xt(e.slice(2),i?2:8):Wt.test(e)?Re:+e}var Zt=1,Jt=2;function jt(e,a,i,n){var s=i.length,f=s;if(e==null)return!f;for(e=Object(e);s--;){var r=i[s];if(r[2]?r[1]!==e[r[0]]:!(r[0]in e))return!1}for(;++s<f;){r=i[s];var c=r[0],m=e[c],v=r[1];if(r[2]){if(m===void 0&&!(c in e))return!1}else{var E=new pt,d;if(!(d===void 0?Be(v,m,Zt|Jt,n,E):d))return!1}}return!0}function qe(e){return e===e&&!ve(e)}function Qt(e){for(var a=ft(e),i=a.length;i--;){var n=a[i],s=e[n];a[i]=[n,s,qe(s)]}return a}function Xe(e,a){return function(i){return i==null?!1:i[e]===a&&(a!==void 0||e in Object(i))}}function en(e){var a=Qt(e);return a.length==1&&a[0][2]?Xe(a[0][0],a[0][1]):function(i){return i===e||jt(i,e,a)}}var tn=1,nn=2;function on(e,a){return De(e)&&qe(a)?Xe(He(e),a):function(i){var n=mt(i,e);return n===void 0&&n===a?vt(i,e):Be(a,n,tn|nn)}}function an(e){return function(a){return a?.[e]}}function sn(e){return function(a){return yt(a,e)}}function rn(e){return De(e)?an(He(e)):sn(e)}function Rn(e){return typeof e=="function"?e:e==null?bt:typeof e=="object"?gt(e)?on(e[0],e[1]):en(e):rn(e)}let x;const ln={height:"0",visibility:"hidden",overflow:ht()?"":"hidden",position:"absolute","z-index":"-1000",top:"0",right:"0"},un=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing","word-break"],Le=e=>{const a=Number.parseFloat(e);return Number.isNaN(a)?e:a};function cn(e){const a=window.getComputedStyle(e),i=a.getPropertyValue("box-sizing"),n=Number.parseFloat(a.getPropertyValue("padding-bottom"))+Number.parseFloat(a.getPropertyValue("padding-top")),s=Number.parseFloat(a.getPropertyValue("border-bottom-width"))+Number.parseFloat(a.getPropertyValue("border-top-width"));return{contextStyle:un.map(r=>[r,a.getPropertyValue(r)]),paddingSize:n,borderSize:s,boxSizing:i}}function Ve(e,a=1,i){var n,s;x||(x=document.createElement("textarea"),((n=e.parentNode)!=null?n:document.body).appendChild(x));const{paddingSize:f,borderSize:r,boxSizing:c,contextStyle:m}=cn(e);m.forEach(([g,y])=>x?.style.setProperty(g,y)),Object.entries(ln).forEach(([g,y])=>x?.style.setProperty(g,y,"important")),x.value=e.value||e.placeholder||"";let v=x.scrollHeight;const E={};c==="border-box"?v=v+r:c==="content-box"&&(v=v-f),x.value="";const d=x.scrollHeight-f;if(Me(a)){let g=d*a;c==="border-box"&&(g=g+f+r),v=Math.max(g,v),E.minHeight=`${g}px`}if(Me(i)){let g=d*i;c==="border-box"&&(g=g+f+r),v=Math.min(g,v)}return E.height=`${v}px`,(s=x.parentNode)==null||s.removeChild(x),x=void 0,E}const dn=Ke({id:{type:String,default:void 0},size:Ct,disabled:{type:Boolean,default:void 0},modelValue:{type:A([String,Number,Object]),default:""},modelModifiers:{type:A(Object),default:()=>({})},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},type:{type:A(String),default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:A([Boolean,Object]),default:!1},autocomplete:{type:A(String),default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:Boolean,clearable:Boolean,clearIcon:{type:ue,default:wt},showPassword:Boolean,showWordLimit:Boolean,wordLimitPosition:{type:String,values:["inside","outside"],default:"inside"},suffixIcon:{type:ue},prefixIcon:{type:ue},containerRole:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:A([Object,Array,String]),default:()=>Et({})},autofocus:Boolean,rows:{type:Number,default:2},...St(["ariaLabel"]),inputmode:{type:A(String),default:void 0},name:String}),pn={[ne]:e=>de(e),input:e=>de(e),change:(e,a)=>de(e)&&(a instanceof Event||a===void 0),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent},fn=["class","style"],mn=/^on[A-Z]/,vn=(e={})=>{const{excludeListeners:a=!1,excludeKeys:i}=e,n=C(()=>(i?.value||[]).concat(fn)),s=We();return s?C(()=>{var f;return xt(Object.entries((f=s.proxy)==null?void 0:f.$attrs).filter(([r])=>!n.value.includes(r)&&!(a&&mn.test(r))))}):C(()=>({}))};function yn(e,{disabled:a,beforeFocus:i,afterFocus:n,beforeBlur:s,afterBlur:f}={}){const r=We(),{emit:c}=r,m=ee(),v=U(!1),E=y=>{const h=Ae(i)?i(y):!1;o(a)||v.value||h||(v.value=!0,c("focus",y),n?.())},d=y=>{var h;const u=Ae(s)?s(y):!1;o(a)||y.relatedTarget&&((h=m.value)!=null&&h.contains(y.relatedTarget))||u||(v.value=!1,c("blur",y),f?.())},g=y=>{var h,u;o(a)||It(y.target)||(h=m.value)!=null&&h.contains(document.activeElement)&&m.value!==document.activeElement||(u=e.value)==null||u.focus()};return te([m,()=>o(a)],([y,h])=>{y&&(h?y.removeAttribute("tabindex"):y.setAttribute("tabindex","-1"))}),ce(m,"focus",E,!0),ce(m,"blur",d,!0),ce(m,"click",g,!0),{isFocused:v,wrapperRef:m,handleFocus:E,handleBlur:d}}const bn=e=>/([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(e);function gn({afterComposition:e,emit:a}){const i=U(!1),n=c=>{a?.("compositionstart",c),i.value=!0},s=c=>{var m;a?.("compositionupdate",c);const v=(m=c.target)==null?void 0:m.value,E=v[v.length-1]||"";i.value=!bn(E)},f=c=>{a?.("compositionend",c),i.value&&(i.value=!1,F(()=>e(c)))};return{isComposing:i,handleComposition:c=>{c.type==="compositionend"?f(c):s(c)},handleCompositionStart:n,handleCompositionUpdate:s,handleCompositionEnd:f}}function hn(e){let a;function i(){if(e.value==null)return;const{selectionStart:s,selectionEnd:f,value:r}=e.value;if(s==null||f==null)return;const c=r.slice(0,Math.max(0,s)),m=r.slice(Math.max(0,f));a={selectionStart:s,selectionEnd:f,value:r,beforeTxt:c,afterTxt:m}}function n(){if(e.value==null||a==null)return;const{value:s}=e.value,{beforeTxt:f,afterTxt:r,selectionStart:c}=a;if(f==null||r==null||c==null)return;let m=s.length;if(s.endsWith(r))m=s.length-r.length;else if(s.startsWith(f))m=f.length;else{const v=f[c-1],E=s.indexOf(v,c-1);E!==-1&&(m=E+1)}e.value.setSelectionRange(m,m)}return[i,n]}const wn=["id","name","minlength","maxlength","type","disabled","readonly","autocomplete","tabindex","aria-label","placeholder","form","autofocus","role","inputmode"],Cn=["id","name","minlength","maxlength","tabindex","disabled","readonly","autocomplete","aria-label","placeholder","form","autofocus","rows","role"],Sn="ElInput",En=Ye({name:Sn,inheritAttrs:!1,__name:"input",props:dn,emits:pn,setup(e,{expose:a,emit:i}){const n=e,s=i,f=Lt(),r=vn(),c=Vt(),m=C(()=>[n.type==="textarea"?be.b():u.b(),u.m(y.value),u.is("disabled",h.value),u.is("exceed",Qe.value),{[u.b("group")]:c.prepend||c.append,[u.m("prefix")]:c.prefix||n.prefixIcon,[u.m("suffix")]:c.suffix||n.suffixIcon||n.clearable||n.showPassword,[u.bm("suffix","password-clear")]:q.value&&re.value,[u.b("hidden")]:n.type==="hidden"},f.class]),v=C(()=>[u.e("wrapper"),u.is("focus",se.value)]),{form:E,formItem:d}=Pt(),{inputId:g}=kt(n,{formItemContext:d}),y=_e(),h=Nt(),u=ye("input"),be=ye("textarea"),G=ee(),N=ee(),ae=U(!1),W=U(!1),ge=U(),Y=ee(n.inputStyle),k=C(()=>G.value||N.value),{wrapperRef:Ze,isFocused:se,handleFocus:he,handleBlur:we}=yn(k,{disabled:h,afterBlur(){var t;n.validateEvent&&((t=d?.validate)==null||t.call(d,"blur").catch(l=>Te()))}}),Ce=C(()=>{var t;return(t=E?.statusIcon)!=null?t:!1}),B=C(()=>d?.validateState||""),Se=C(()=>B.value&&Mt[B.value]),Je=C(()=>W.value?Tt:zt),je=C(()=>[f.style]),Ee=C(()=>[n.inputStyle,Y.value,{resize:n.resize}]),z=C(()=>At(n.modelValue)?"":String(n.modelValue)),q=C(()=>n.clearable&&!h.value&&!n.readonly&&!!z.value&&(se.value||ae.value)),re=C(()=>n.showPassword&&!h.value&&!!z.value),$=C(()=>n.showWordLimit&&!!n.maxlength&&(n.type==="text"||n.type==="textarea")&&!h.value&&!n.readonly&&!n.showPassword),ie=C(()=>z.value.length),Qe=C(()=>!!$.value&&ie.value>Number(n.maxlength)),et=C(()=>!!c.suffix||!!n.suffixIcon||q.value||n.showPassword||$.value||!!B.value&&Ce.value),tt=C(()=>!!Object.keys(n.modelModifiers).length),[nt,ot]=hn(G);Ft(N,t=>{if(at(),!$.value||n.resize!=="both"&&n.resize!=="horizontal")return;const l=t[0],{width:p}=l.contentRect;ge.value={right:`calc(100% - ${p+22-10}px)`}});const D=()=>{const{type:t,autosize:l}=n;if(!(!Ot||t!=="textarea"||!N.value))if(l){const p=Oe(l)?l.minRows:void 0,L=Oe(l)?l.maxRows:void 0,H=Ve(N.value,p,L);Y.value={overflowY:"hidden",...H},F(()=>{N.value.offsetHeight,Y.value=H})}else Y.value={minHeight:Ve(N.value).minHeight}},at=(t=>{let l=!1;return()=>{var p;if(l||!n.autosize)return;((p=N.value)==null?void 0:p.offsetParent)===null||(setTimeout(t),l=!0)}})(D),R=()=>{const t=k.value,l=n.formatter?n.formatter(z.value):z.value;!t||t.value===l||n.type==="file"||(t.value=l)},xe=t=>{const{trim:l,number:p}=n.modelModifiers;return l&&(t=t.trim()),p&&(t=`${Le(t)}`),n.formatter&&n.parser&&(t=n.parser(t)),t},le=async t=>{if(Pe.value)return;const{lazy:l}=n.modelModifiers;let{value:p}=t.target;if(l){s(me,p);return}if(p=xe(p),String(p)===z.value){n.formatter&&R();return}nt(),s(ne,p),s(me,p),await F(),(n.formatter&&n.parser||!tt.value)&&R(),ot()},Ie=async t=>{let{value:l}=t.target;l=xe(l),n.modelModifiers.lazy&&s(ne,l),s($e,l,t),await F(),R()},{isComposing:Pe,handleCompositionStart:X,handleCompositionUpdate:Z,handleCompositionEnd:J}=gn({emit:s,afterComposition:le}),st=()=>{W.value=!W.value},rt=()=>{var t;return(t=k.value)==null?void 0:t.focus()},it=()=>{var t;return(t=k.value)==null?void 0:t.blur()},lt=t=>{ae.value=!1,s("mouseleave",t)},ut=t=>{ae.value=!0,s("mouseenter",t)},ke=t=>{s("keydown",t)},ct=()=>{var t;(t=k.value)==null||t.select()},Ne=()=>{s(ne,""),s($e,""),s("clear"),s(me,"")};return te(()=>n.modelValue,()=>{var t;F(()=>D()),n.validateEvent&&((t=d?.validate)==null||t.call(d,"change").catch(l=>Te()))}),te(z,t=>{if(!k.value)return;const{trim:l,number:p}=n.modelModifiers,L=k.value.value,H=(p||n.type==="number")&&!/^0\d/.test(L)?`${Le(L)}`:L;H!==t&&(document.activeElement===k.value&&k.value.type!=="range"&&l&&H.trim()===t||R())}),te(()=>n.type,async()=>{await F(),R(),D()}),Bt(()=>{!n.formatter&&n.parser,R(),F(D)}),a({input:G,textarea:N,ref:k,textareaStyle:Ee,autosize:Dt(n,"autosize"),isComposing:Pe,focus:rt,blur:it,select:ct,clear:Ne,resizeTextarea:D}),(t,l)=>(b(),I("div",{class:w([m.value,{[o(u).bm("group","append")]:t.$slots.append,[o(u).bm("group","prepend")]:t.$slots.prepend}]),style:oe(je.value),onMouseenter:ut,onMouseleave:lt},[S(" input "),t.type!=="textarea"?(b(),I(pe,{key:0},[S(" prepend slot "),t.$slots.prepend?(b(),I("div",{key:0,class:w(o(u).be("group","prepend"))},[V(t.$slots,"prepend")],2)):S("v-if",!0),M("div",{ref_key:"wrapperRef",ref:Ze,class:w(v.value)},[S(" prefix slot "),t.$slots.prefix||t.prefixIcon?(b(),I("span",{key:0,class:w(o(u).e("prefix"))},[M("span",{class:w(o(u).e("prefix-inner"))},[V(t.$slots,"prefix"),t.prefixIcon?(b(),P(o(O),{key:0,class:w(o(u).e("icon"))},{default:T(()=>[(b(),P(K(t.prefixIcon)))]),_:1},8,["class"])):S("v-if",!0)],2)],2)):S("v-if",!0),M("input",Fe({id:o(g),ref_key:"input",ref:G,class:o(u).e("inner")},o(r),{name:t.name,minlength:t.minlength,maxlength:t.maxlength,type:t.showPassword?W.value?"text":"password":t.type,disabled:o(h),readonly:t.readonly,autocomplete:t.autocomplete,tabindex:t.tabindex,"aria-label":t.ariaLabel,placeholder:t.placeholder,style:t.inputStyle,form:t.form,autofocus:t.autofocus,role:t.containerRole,inputmode:t.inputmode,onCompositionstart:l[0]||(l[0]=(...p)=>o(X)&&o(X)(...p)),onCompositionupdate:l[1]||(l[1]=(...p)=>o(Z)&&o(Z)(...p)),onCompositionend:l[2]||(l[2]=(...p)=>o(J)&&o(J)(...p)),onInput:le,onChange:Ie,onKeydown:ke}),null,16,wn),S(" suffix slot "),et.value?(b(),I("span",{key:1,class:w(o(u).e("suffix"))},[M("span",{class:w(o(u).e("suffix-inner"))},[!q.value||!re.value||!$.value?(b(),I(pe,{key:0},[V(t.$slots,"suffix"),t.suffixIcon?(b(),P(o(O),{key:0,class:w(o(u).e("icon"))},{default:T(()=>[(b(),P(K(t.suffixIcon)))]),_:1},8,["class"])):S("v-if",!0)],64)):S("v-if",!0),q.value?(b(),P(o(O),{key:1,class:w([o(u).e("icon"),o(u).e("clear")]),onMousedown:_(o(fe),["prevent"]),onClick:Ne},{default:T(()=>[(b(),P(K(t.clearIcon)))]),_:1},8,["class","onMousedown"])):S("v-if",!0),re.value?(b(),P(o(O),{key:2,class:w([o(u).e("icon"),o(u).e("password")]),onClick:st,onMousedown:_(o(fe),["prevent"]),onMouseup:_(o(fe),["prevent"])},{default:T(()=>[(b(),P(K(Je.value)))]),_:1},8,["class","onMousedown","onMouseup"])):S("v-if",!0),$.value?(b(),I("span",{key:3,class:w([o(u).e("count"),o(u).is("outside",t.wordLimitPosition==="outside")])},[M("span",{class:w(o(u).e("count-inner"))},j(ie.value)+" / "+j(t.maxlength),3)],2)):S("v-if",!0),B.value&&Se.value&&Ce.value?(b(),P(o(O),{key:4,class:w([o(u).e("icon"),o(u).e("validateIcon"),o(u).is("loading",B.value==="validating")])},{default:T(()=>[(b(),P(K(Se.value)))]),_:1},8,["class"])):S("v-if",!0)],2)],2)):S("v-if",!0)],2),S(" append slot "),t.$slots.append?(b(),I("div",{key:1,class:w(o(u).be("group","append"))},[V(t.$slots,"append")],2)):S("v-if",!0)],64)):(b(),I(pe,{key:1},[S(" textarea "),M("textarea",Fe({id:o(g),ref_key:"textarea",ref:N,class:[o(be).e("inner"),o(u).is("focus",o(se))]},o(r),{name:t.name,minlength:t.minlength,maxlength:t.maxlength,tabindex:t.tabindex,disabled:o(h),readonly:t.readonly,autocomplete:t.autocomplete,style:Ee.value,"aria-label":t.ariaLabel,placeholder:t.placeholder,form:t.form,autofocus:t.autofocus,rows:t.rows,role:t.containerRole,onCompositionstart:l[3]||(l[3]=(...p)=>o(X)&&o(X)(...p)),onCompositionupdate:l[4]||(l[4]=(...p)=>o(Z)&&o(Z)(...p)),onCompositionend:l[5]||(l[5]=(...p)=>o(J)&&o(J)(...p)),onInput:le,onFocus:l[6]||(l[6]=(...p)=>o(he)&&o(he)(...p)),onBlur:l[7]||(l[7]=(...p)=>o(we)&&o(we)(...p)),onChange:Ie,onKeydown:ke}),null,16,Cn),$.value?(b(),I("span",{key:0,style:oe(ge.value),class:w([o(u).e("count"),o(u).is("outside",t.wordLimitPosition==="outside")])},j(ie.value)+" / "+j(t.maxlength),7)):S("v-if",!0)],64))],38))}});var xn=Ue(En,[["__file","/home/runner/work/element-plus/element-plus/packages/components/input/src/input.vue"]]);const Ln=Ge(xn),In=Ke({type:{type:String,values:["primary","success","info","warning","danger"],default:"primary"},closable:Boolean,disableTransitions:Boolean,hit:Boolean,color:String,size:{type:String,values:$t},effect:{type:String,values:["dark","light","plain"],default:"light"},round:Boolean}),Pn={close:e=>e instanceof MouseEvent,click:e=>e instanceof MouseEvent},kn=["aria-label"],Nn=["aria-label"],Mn=Ye({name:"ElTag",__name:"tag",props:In,emits:Pn,setup(e,{emit:a}){const i=e,n=a,s=_e(),{t:f}=Rt(),r=ye("tag"),c=C(()=>{const{type:d,hit:g,effect:y,closable:h,round:u}=i;return[r.b(),r.is("closable",h),r.m(d||"primary"),r.m(s.value),r.m(y),r.is("hit",g),r.is("round",u)]}),m=d=>{n("close",d)},v=d=>{n("click",d)},E=d=>{var g,y,h;(h=(y=(g=d?.component)==null?void 0:g.subTree)==null?void 0:y.component)!=null&&h.bum&&(d.component.subTree.component.bum=null)};return(d,g)=>d.disableTransitions?(b(),I("span",{key:0,class:w(c.value),style:oe({backgroundColor:d.color}),onClick:v},[M("span",{class:w(o(r).e("content"))},[V(d.$slots,"default")],2),d.closable?(b(),I("button",{key:0,"aria-label":o(f)("el.tag.close"),class:w(o(r).e("close")),type:"button",onClick:_(m,["stop"])},[Q(o(O),null,{default:T(()=>[Q(o(ze))]),_:1})],10,kn)):S("v-if",!0)],6)):(b(),P(Ht,{key:1,name:`${o(r).namespace.value}-zoom-in-center`,appear:"",onVnodeMounted:E},{default:T(()=>[M("span",{class:w(c.value),style:oe({backgroundColor:d.color}),onClick:v},[M("span",{class:w(o(r).e("content"))},[V(d.$slots,"default")],2),d.closable?(b(),I("button",{key:0,"aria-label":o(f)("el.tag.close"),class:w(o(r).e("close")),type:"button",onClick:_(m,["stop"])},[Q(o(O),null,{default:T(()=>[Q(o(ze))]),_:1})],10,Nn)):S("v-if",!0)],6)]),_:3},8,["name"]))}});var Tn=Ue(Mn,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tag/src/tag.vue"]]);const Vn=Ge(Tn);export{Ln as E,Vn as a,Rn as b,yn as c,In as d,$n as t,gn as u};