quicklify 1.0.5 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +42 -5
  2. package/README.tr.md +42 -5
  3. package/SECURITY.md +42 -9
  4. package/bin/quicklify-mcp +5 -0
  5. package/dist/commands/backup.d.ts.map +1 -1
  6. package/dist/commands/backup.js +2 -4
  7. package/dist/commands/backup.js.map +1 -1
  8. package/dist/commands/init.d.ts.map +1 -1
  9. package/dist/commands/init.js +44 -12
  10. package/dist/commands/init.js.map +1 -1
  11. package/dist/commands/logs.d.ts +3 -2
  12. package/dist/commands/logs.d.ts.map +1 -1
  13. package/dist/commands/logs.js +6 -11
  14. package/dist/commands/logs.js.map +1 -1
  15. package/dist/commands/monitor.d.ts +3 -9
  16. package/dist/commands/monitor.d.ts.map +1 -1
  17. package/dist/commands/monitor.js +2 -47
  18. package/dist/commands/monitor.js.map +1 -1
  19. package/dist/commands/ssh.d.ts.map +1 -1
  20. package/dist/commands/ssh.js +4 -1
  21. package/dist/commands/ssh.js.map +1 -1
  22. package/dist/commands/status.d.ts.map +1 -1
  23. package/dist/commands/status.js +25 -74
  24. package/dist/commands/status.js.map +1 -1
  25. package/dist/core/backup.d.ts +43 -0
  26. package/dist/core/backup.d.ts.map +1 -0
  27. package/dist/core/backup.js +259 -0
  28. package/dist/core/backup.js.map +1 -0
  29. package/dist/core/domain.d.ts +30 -0
  30. package/dist/core/domain.d.ts.map +1 -0
  31. package/dist/core/domain.js +174 -0
  32. package/dist/core/domain.js.map +1 -0
  33. package/dist/core/firewall.d.ts +25 -0
  34. package/dist/core/firewall.d.ts.map +1 -0
  35. package/dist/core/firewall.js +146 -0
  36. package/dist/core/firewall.js.map +1 -0
  37. package/dist/core/logs.d.ts +28 -0
  38. package/dist/core/logs.d.ts.map +1 -0
  39. package/dist/core/logs.js +129 -0
  40. package/dist/core/logs.js.map +1 -0
  41. package/dist/core/maintain.d.ts +41 -0
  42. package/dist/core/maintain.d.ts.map +1 -0
  43. package/dist/core/maintain.js +180 -0
  44. package/dist/core/maintain.js.map +1 -0
  45. package/dist/core/manage.d.ts +34 -0
  46. package/dist/core/manage.d.ts.map +1 -0
  47. package/dist/core/manage.js +203 -0
  48. package/dist/core/manage.js.map +1 -0
  49. package/dist/core/provision.d.ts +18 -0
  50. package/dist/core/provision.d.ts.map +1 -0
  51. package/dist/core/provision.js +197 -0
  52. package/dist/core/provision.js.map +1 -0
  53. package/dist/core/secure.d.ts +29 -0
  54. package/dist/core/secure.d.ts.map +1 -0
  55. package/dist/core/secure.js +198 -0
  56. package/dist/core/secure.js.map +1 -0
  57. package/dist/core/snapshot.d.ts +22 -0
  58. package/dist/core/snapshot.d.ts.map +1 -0
  59. package/dist/core/snapshot.js +58 -0
  60. package/dist/core/snapshot.js.map +1 -0
  61. package/dist/core/status.d.ts +12 -0
  62. package/dist/core/status.d.ts.map +1 -0
  63. package/dist/core/status.js +43 -0
  64. package/dist/core/status.js.map +1 -0
  65. package/dist/core/tokens.d.ts +4 -0
  66. package/dist/core/tokens.d.ts.map +1 -0
  67. package/dist/core/tokens.js +23 -0
  68. package/dist/core/tokens.js.map +1 -0
  69. package/dist/mcp/index.d.ts +3 -0
  70. package/dist/mcp/index.d.ts.map +1 -0
  71. package/dist/mcp/index.js +16 -0
  72. package/dist/mcp/index.js.map +1 -0
  73. package/dist/mcp/server.d.ts +3 -0
  74. package/dist/mcp/server.d.ts.map +1 -0
  75. package/dist/mcp/server.js +105 -0
  76. package/dist/mcp/server.js.map +1 -0
  77. package/dist/mcp/tools/serverBackup.d.ts +29 -0
  78. package/dist/mcp/tools/serverBackup.d.ts.map +1 -0
  79. package/dist/mcp/tools/serverBackup.js +376 -0
  80. package/dist/mcp/tools/serverBackup.js.map +1 -0
  81. package/dist/mcp/tools/serverInfo.d.ts +20 -0
  82. package/dist/mcp/tools/serverInfo.d.ts.map +1 -0
  83. package/dist/mcp/tools/serverInfo.js +219 -0
  84. package/dist/mcp/tools/serverInfo.js.map +1 -0
  85. package/dist/mcp/tools/serverLogs.d.ts +30 -0
  86. package/dist/mcp/tools/serverLogs.d.ts.map +1 -0
  87. package/dist/mcp/tools/serverLogs.js +145 -0
  88. package/dist/mcp/tools/serverLogs.js.map +1 -0
  89. package/dist/mcp/tools/serverMaintain.d.ts +22 -0
  90. package/dist/mcp/tools/serverMaintain.d.ts.map +1 -0
  91. package/dist/mcp/tools/serverMaintain.js +217 -0
  92. package/dist/mcp/tools/serverMaintain.js.map +1 -0
  93. package/dist/mcp/tools/serverManage.d.ts +33 -0
  94. package/dist/mcp/tools/serverManage.d.ts.map +1 -0
  95. package/dist/mcp/tools/serverManage.js +207 -0
  96. package/dist/mcp/tools/serverManage.js.map +1 -0
  97. package/dist/mcp/tools/serverProvision.d.ts +31 -0
  98. package/dist/mcp/tools/serverProvision.d.ts.map +1 -0
  99. package/dist/mcp/tools/serverProvision.js +125 -0
  100. package/dist/mcp/tools/serverProvision.js.map +1 -0
  101. package/dist/mcp/tools/serverSecure.d.ts +40 -0
  102. package/dist/mcp/tools/serverSecure.d.ts.map +1 -0
  103. package/dist/mcp/tools/serverSecure.js +396 -0
  104. package/dist/mcp/tools/serverSecure.js.map +1 -0
  105. package/dist/providers/vultr.d.ts.map +1 -1
  106. package/dist/providers/vultr.js +7 -1
  107. package/dist/providers/vultr.js.map +1 -1
  108. package/dist/types/index.d.ts +0 -1
  109. package/dist/types/index.d.ts.map +1 -1
  110. package/dist/utils/errorMapper.d.ts +1 -0
  111. package/dist/utils/errorMapper.d.ts.map +1 -1
  112. package/dist/utils/errorMapper.js +20 -0
  113. package/dist/utils/errorMapper.js.map +1 -1
  114. package/dist/utils/openBrowser.d.ts.map +1 -1
  115. package/dist/utils/openBrowser.js +6 -1
  116. package/dist/utils/openBrowser.js.map +1 -1
  117. package/dist/utils/ssh.d.ts +1 -0
  118. package/dist/utils/ssh.d.ts.map +1 -1
  119. package/dist/utils/ssh.js +6 -2
  120. package/dist/utils/ssh.js.map +1 -1
  121. package/package.json +6 -3
@@ -0,0 +1,219 @@
1
+ import { z } from "zod";
2
+ import { getServers, findServer } from "../../utils/config.js";
3
+ import { checkCoolifyHealth, checkServerStatus, checkAllServersStatus } from "../../core/status.js";
4
+ import { getProviderToken, collectProviderTokensFromEnv } from "../../core/tokens.js";
5
+ import { getErrorMessage } from "../../utils/errorMapper.js";
6
+ export const serverInfoSchema = {
7
+ action: z.enum(["list", "status", "health"]).describe("Action to perform: 'list' all servers, 'status' check server/cloud status, 'health' check Coolify reachability"),
8
+ server: z.string().optional().describe("Server name or IP. Required for single-server status/health. Omit for all servers."),
9
+ };
10
+ function formatServerList(servers) {
11
+ if (servers.length === 0) {
12
+ return JSON.stringify({
13
+ servers: [],
14
+ total: 0,
15
+ message: "No servers found. Deploy one with: quicklify init",
16
+ suggested_actions: [
17
+ { command: "quicklify init", reason: "Deploy your first Coolify server" },
18
+ ],
19
+ });
20
+ }
21
+ return JSON.stringify({
22
+ servers: servers.map((s) => ({
23
+ name: s.name,
24
+ ip: s.ip,
25
+ provider: s.provider,
26
+ region: s.region,
27
+ size: s.size,
28
+ id: s.id,
29
+ createdAt: s.createdAt,
30
+ })),
31
+ total: servers.length,
32
+ suggested_actions: [
33
+ { command: "server_info { action: 'status' }", reason: "Check status of all servers" },
34
+ { command: "server_info { action: 'health' }", reason: "Check Coolify health on all servers" },
35
+ ],
36
+ });
37
+ }
38
+ function formatStatusResult(result) {
39
+ return {
40
+ name: result.server.name,
41
+ ip: result.server.ip,
42
+ provider: result.server.provider,
43
+ region: result.server.region,
44
+ size: result.server.size,
45
+ serverStatus: result.serverStatus,
46
+ coolifyStatus: result.coolifyStatus,
47
+ ...(result.error ? { error: result.error } : {}),
48
+ };
49
+ }
50
+ function formatStatusResults(results) {
51
+ const suggestedActions = [];
52
+ const notReachable = results.filter((r) => r.coolifyStatus === "not reachable");
53
+ if (notReachable.length > 0) {
54
+ for (const r of notReachable) {
55
+ suggestedActions.push({
56
+ command: `quicklify status ${r.server.name} --autostart`,
57
+ reason: `Coolify is not reachable on ${r.server.name}, try auto-restart`,
58
+ });
59
+ }
60
+ }
61
+ const errors = results.filter((r) => r.error);
62
+ if (errors.length > 0) {
63
+ suggestedActions.push({
64
+ command: "quicklify doctor --check-tokens",
65
+ reason: "API errors detected, verify provider tokens",
66
+ });
67
+ }
68
+ if (suggestedActions.length === 0) {
69
+ suggestedActions.push({
70
+ command: "server_logs { action: 'logs' }",
71
+ reason: "All servers healthy, check logs for details",
72
+ });
73
+ }
74
+ return JSON.stringify({
75
+ results: results.map(formatStatusResult),
76
+ summary: {
77
+ total: results.length,
78
+ running: results.filter((r) => r.coolifyStatus === "running").length,
79
+ notReachable: notReachable.length,
80
+ errors: errors.length,
81
+ },
82
+ suggested_actions: suggestedActions,
83
+ });
84
+ }
85
+ export async function handleServerInfo(params) {
86
+ try {
87
+ switch (params.action) {
88
+ case "list": {
89
+ const servers = getServers();
90
+ return { content: [{ type: "text", text: formatServerList(servers) }] };
91
+ }
92
+ case "status": {
93
+ const servers = getServers();
94
+ if (servers.length === 0) {
95
+ return {
96
+ content: [{ type: "text", text: JSON.stringify({
97
+ error: "No servers found",
98
+ suggested_actions: [{ command: "quicklify init", reason: "Deploy a server first" }],
99
+ }) }],
100
+ isError: true,
101
+ };
102
+ }
103
+ if (params.server) {
104
+ const server = findServer(params.server);
105
+ if (!server) {
106
+ return {
107
+ content: [{ type: "text", text: JSON.stringify({
108
+ error: `Server not found: ${params.server}`,
109
+ available_servers: servers.map((s) => s.name),
110
+ }) }],
111
+ isError: true,
112
+ };
113
+ }
114
+ const token = server.id.startsWith("manual-") ? "" : (getProviderToken(server.provider) ?? "");
115
+ if (!token && !server.id.startsWith("manual-")) {
116
+ return {
117
+ content: [{ type: "text", text: JSON.stringify({
118
+ error: `No API token found for provider: ${server.provider}`,
119
+ hint: `Set environment variable: ${server.provider.toUpperCase()}_TOKEN`,
120
+ server: { name: server.name, ip: server.ip, provider: server.provider },
121
+ }) }],
122
+ isError: true,
123
+ };
124
+ }
125
+ const result = await checkServerStatus(server, token);
126
+ return { content: [{ type: "text", text: formatStatusResults([result]) }] };
127
+ }
128
+ // All servers
129
+ const tokenMap = collectProviderTokensFromEnv(servers);
130
+ const missingTokenProviders = [
131
+ ...new Set(servers.filter((s) => !s.id.startsWith("manual-")).map((s) => s.provider)),
132
+ ].filter((p) => !tokenMap.has(p));
133
+ if (missingTokenProviders.length > 0) {
134
+ return {
135
+ content: [{ type: "text", text: JSON.stringify({
136
+ error: "Missing API tokens for providers",
137
+ missing: missingTokenProviders.map((p) => ({
138
+ provider: p,
139
+ envVar: `${p.toUpperCase()}_TOKEN`,
140
+ })),
141
+ hint: "Set environment variables for each provider",
142
+ }) }],
143
+ isError: true,
144
+ };
145
+ }
146
+ const results = await checkAllServersStatus(servers, tokenMap);
147
+ return { content: [{ type: "text", text: formatStatusResults(results) }] };
148
+ }
149
+ case "health": {
150
+ const servers = getServers();
151
+ if (servers.length === 0) {
152
+ return {
153
+ content: [{ type: "text", text: JSON.stringify({
154
+ error: "No servers found",
155
+ suggested_actions: [{ command: "quicklify init", reason: "Deploy a server first" }],
156
+ }) }],
157
+ isError: true,
158
+ };
159
+ }
160
+ if (params.server) {
161
+ const server = findServer(params.server);
162
+ if (!server) {
163
+ return {
164
+ content: [{ type: "text", text: JSON.stringify({
165
+ error: `Server not found: ${params.server}`,
166
+ available_servers: servers.map((s) => s.name),
167
+ }) }],
168
+ isError: true,
169
+ };
170
+ }
171
+ const status = await checkCoolifyHealth(server.ip);
172
+ const suggestedActions = status === "not reachable"
173
+ ? [{ command: `quicklify status ${server.name} --autostart`, reason: "Try auto-restart Coolify" }]
174
+ : [{ command: `http://${server.ip}:8000`, reason: "Access Coolify dashboard" }];
175
+ return {
176
+ content: [{ type: "text", text: JSON.stringify({
177
+ server: server.name,
178
+ ip: server.ip,
179
+ coolifyStatus: status,
180
+ coolifyUrl: status === "running" ? `http://${server.ip}:8000` : null,
181
+ suggested_actions: suggestedActions,
182
+ }) }],
183
+ };
184
+ }
185
+ // All servers health
186
+ const healthResults = await Promise.all(servers.map(async (s) => ({
187
+ name: s.name,
188
+ ip: s.ip,
189
+ coolifyStatus: await checkCoolifyHealth(s.ip),
190
+ })));
191
+ const notReachable = healthResults.filter((r) => r.coolifyStatus === "not reachable");
192
+ const suggestedActions = notReachable.length > 0
193
+ ? notReachable.map((r) => ({
194
+ command: `quicklify status ${r.name} --autostart`,
195
+ reason: `Coolify not reachable on ${r.name}`,
196
+ }))
197
+ : [{ command: "server_info { action: 'status' }", reason: "All healthy, check full status" }];
198
+ return {
199
+ content: [{ type: "text", text: JSON.stringify({
200
+ results: healthResults,
201
+ summary: {
202
+ total: healthResults.length,
203
+ running: healthResults.filter((r) => r.coolifyStatus === "running").length,
204
+ notReachable: notReachable.length,
205
+ },
206
+ suggested_actions: suggestedActions,
207
+ }) }],
208
+ };
209
+ }
210
+ }
211
+ }
212
+ catch (error) {
213
+ return {
214
+ content: [{ type: "text", text: JSON.stringify({ error: getErrorMessage(error) }) }],
215
+ isError: true,
216
+ };
217
+ }
218
+ }
219
+ //# sourceMappingURL=serverInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverInfo.js","sourceRoot":"","sources":["../../../src/mcp/tools/serverInfo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ import type { LogService } from "../../core/logs.js";
3
+ export declare const serverLogsSchema: {
4
+ action: z.ZodEnum<{
5
+ logs: "logs";
6
+ monitor: "monitor";
7
+ }>;
8
+ server: z.ZodOptional<z.ZodString>;
9
+ service: z.ZodDefault<z.ZodEnum<{
10
+ coolify: "coolify";
11
+ docker: "docker";
12
+ system: "system";
13
+ }>>;
14
+ lines: z.ZodDefault<z.ZodNumber>;
15
+ containers: z.ZodDefault<z.ZodBoolean>;
16
+ };
17
+ export declare function handleServerLogs(params: {
18
+ action: "logs" | "monitor";
19
+ server?: string;
20
+ service?: LogService;
21
+ lines?: number;
22
+ containers?: boolean;
23
+ }): Promise<{
24
+ content: Array<{
25
+ type: "text";
26
+ text: string;
27
+ }>;
28
+ isError?: boolean;
29
+ }>;
30
+ //# sourceMappingURL=serverLogs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverLogs.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/serverLogs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;CAgB5B,CAAC;AAiBF,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAmIjF"}
@@ -0,0 +1,145 @@
1
+ import { z } from "zod";
2
+ import { getServers, findServer } from "../../utils/config.js";
3
+ import { fetchServerLogs, fetchServerMetrics } from "../../core/logs.js";
4
+ import { getErrorMessage } from "../../utils/errorMapper.js";
5
+ export const serverLogsSchema = {
6
+ action: z.enum(["logs", "monitor"]).describe("Action: 'logs' fetch recent log lines, 'monitor' fetch CPU/RAM/Disk metrics"),
7
+ server: z.string().optional().describe("Server name or IP. Auto-selected if only one server exists."),
8
+ service: z.enum(["coolify", "docker", "system"]).default("coolify").describe("Log source (only for 'logs' action): 'coolify' container, 'docker' service journal, 'system' full journal"),
9
+ lines: z.number().min(1).max(500).default(50).describe("Number of log lines to fetch (only for 'logs' action, default: 50, max: 500)"),
10
+ containers: z.boolean().default(false).describe("Include Docker container list in metrics (only for 'monitor' action)"),
11
+ };
12
+ function resolveServer(params, servers) {
13
+ if (params.server) {
14
+ return findServer(params.server);
15
+ }
16
+ if (servers.length === 1) {
17
+ return servers[0];
18
+ }
19
+ return undefined;
20
+ }
21
+ export async function handleServerLogs(params) {
22
+ try {
23
+ const servers = getServers();
24
+ if (servers.length === 0) {
25
+ return {
26
+ content: [{ type: "text", text: JSON.stringify({
27
+ error: "No servers found",
28
+ suggested_actions: [{ command: "quicklify init", reason: "Deploy a server first" }],
29
+ }) }],
30
+ isError: true,
31
+ };
32
+ }
33
+ const server = resolveServer(params, servers);
34
+ if (!server) {
35
+ if (params.server) {
36
+ return {
37
+ content: [{ type: "text", text: JSON.stringify({
38
+ error: `Server not found: ${params.server}`,
39
+ available_servers: servers.map((s) => s.name),
40
+ }) }],
41
+ isError: true,
42
+ };
43
+ }
44
+ return {
45
+ content: [{ type: "text", text: JSON.stringify({
46
+ error: "Multiple servers found. Specify which server to use.",
47
+ available_servers: servers.map((s) => ({ name: s.name, ip: s.ip })),
48
+ }) }],
49
+ isError: true,
50
+ };
51
+ }
52
+ switch (params.action) {
53
+ case "logs": {
54
+ const service = params.service ?? "coolify";
55
+ const lines = params.lines ?? 50;
56
+ const result = await fetchServerLogs(server.ip, service, lines);
57
+ if (result.error) {
58
+ return {
59
+ content: [{ type: "text", text: JSON.stringify({
60
+ server: server.name,
61
+ ip: server.ip,
62
+ service,
63
+ error: result.error,
64
+ ...(result.hint ? { hint: result.hint } : {}),
65
+ ...(result.logs ? { partial_logs: result.logs } : {}),
66
+ suggested_actions: [
67
+ { command: `quicklify logs ${server.name} --service ${service}`, reason: "Try from CLI for interactive mode" },
68
+ { command: `server_info { action: 'health', server: '${server.name}' }`, reason: "Check if server is reachable" },
69
+ ],
70
+ }) }],
71
+ isError: true,
72
+ };
73
+ }
74
+ const suggestedActions = [
75
+ { command: `server_logs { action: 'monitor', server: '${server.name}' }`, reason: "Check system metrics" },
76
+ ];
77
+ if (lines < 200) {
78
+ suggestedActions.unshift({
79
+ command: `server_logs { action: 'logs', server: '${server.name}', service: '${service}', lines: 200 }`,
80
+ reason: "Fetch more lines",
81
+ });
82
+ }
83
+ if (service === "coolify") {
84
+ suggestedActions.push({
85
+ command: `server_logs { action: 'logs', server: '${server.name}', service: 'system' }`,
86
+ reason: "Check system journal",
87
+ });
88
+ }
89
+ return {
90
+ content: [{ type: "text", text: JSON.stringify({
91
+ server: server.name,
92
+ ip: server.ip,
93
+ service,
94
+ lines,
95
+ logs: result.logs,
96
+ suggested_actions: suggestedActions,
97
+ }) }],
98
+ };
99
+ }
100
+ case "monitor": {
101
+ const includeContainers = params.containers ?? false;
102
+ const result = await fetchServerMetrics(server.ip, includeContainers);
103
+ if (result.error) {
104
+ return {
105
+ content: [{ type: "text", text: JSON.stringify({
106
+ server: server.name,
107
+ ip: server.ip,
108
+ error: result.error,
109
+ ...(result.hint ? { hint: result.hint } : {}),
110
+ suggested_actions: [
111
+ { command: `server_info { action: 'health', server: '${server.name}' }`, reason: "Check if server is reachable" },
112
+ ],
113
+ }) }],
114
+ isError: true,
115
+ };
116
+ }
117
+ const suggestedActions = [
118
+ { command: `server_logs { action: 'logs', server: '${server.name}' }`, reason: "Check recent logs" },
119
+ ];
120
+ if (!includeContainers) {
121
+ suggestedActions.unshift({
122
+ command: `server_logs { action: 'monitor', server: '${server.name}', containers: true }`,
123
+ reason: "Include Docker container list",
124
+ });
125
+ }
126
+ return {
127
+ content: [{ type: "text", text: JSON.stringify({
128
+ server: server.name,
129
+ ip: server.ip,
130
+ metrics: result.metrics,
131
+ ...(result.containers ? { containers: result.containers } : {}),
132
+ suggested_actions: suggestedActions,
133
+ }) }],
134
+ };
135
+ }
136
+ }
137
+ }
138
+ catch (error) {
139
+ return {
140
+ content: [{ type: "text", text: JSON.stringify({ error: getErrorMessage(error) }) }],
141
+ isError: true,
142
+ };
143
+ }
144
+ }
145
+ //# sourceMappingURL=serverLogs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverLogs.js","sourceRoot":"","sources":["../../../src/mcp/tools/serverLogs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ export declare const serverMaintainSchema: {
3
+ action: z.ZodEnum<{
4
+ update: "update";
5
+ restart: "restart";
6
+ maintain: "maintain";
7
+ }>;
8
+ server: z.ZodOptional<z.ZodString>;
9
+ skipReboot: z.ZodDefault<z.ZodBoolean>;
10
+ };
11
+ export declare function handleServerMaintain(params: {
12
+ action: "update" | "restart" | "maintain";
13
+ server?: string;
14
+ skipReboot?: boolean;
15
+ }): Promise<{
16
+ content: Array<{
17
+ type: "text";
18
+ text: string;
19
+ }>;
20
+ isError?: boolean;
21
+ }>;
22
+ //# sourceMappingURL=serverMaintain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverMaintain.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/serverMaintain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,oBAAoB;;;;;;;;CAUhC,CAAC;AAYF,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAwNjF"}