@bldg-7/proxmox-mcp 0.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.
- package/LICENSE +21 -0
- package/README.md +1033 -0
- package/dist/client/proxmox.d.ts +14 -0
- package/dist/client/proxmox.d.ts.map +1 -0
- package/dist/client/proxmox.js +82 -0
- package/dist/client/proxmox.js.map +1 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +24 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/schema.d.ts +31 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +32 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/formatters/index.d.ts +42 -0
- package/dist/formatters/index.d.ts.map +1 -0
- package/dist/formatters/index.js +85 -0
- package/dist/formatters/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/index.d.ts +41 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +69 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/prompts/index.d.ts +2 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +2 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/index.d.ts +2 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +2 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/schemas/backup.d.ts +101 -0
- package/dist/schemas/backup.d.ts.map +1 -0
- package/dist/schemas/backup.js +43 -0
- package/dist/schemas/backup.js.map +1 -0
- package/dist/schemas/disk.d.ts +144 -0
- package/dist/schemas/disk.d.ts.map +1 -0
- package/dist/schemas/disk.js +60 -0
- package/dist/schemas/disk.js.map +1 -0
- package/dist/schemas/index.d.ts +7 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +7 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/network.d.ts +140 -0
- package/dist/schemas/network.d.ts.map +1 -0
- package/dist/schemas/network.js +56 -0
- package/dist/schemas/network.js.map +1 -0
- package/dist/schemas/node.d.ts +16 -0
- package/dist/schemas/node.d.ts.map +1 -0
- package/dist/schemas/node.js +12 -0
- package/dist/schemas/node.js.map +1 -0
- package/dist/schemas/snapshot.d.ts +116 -0
- package/dist/schemas/snapshot.d.ts.map +1 -0
- package/dist/schemas/snapshot.js +34 -0
- package/dist/schemas/snapshot.js.map +1 -0
- package/dist/schemas/vm.d.ts +330 -0
- package/dist/schemas/vm.d.ts.map +1 -0
- package/dist/schemas/vm.js +111 -0
- package/dist/schemas/vm.js.map +1 -0
- package/dist/server.d.ts +5 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +142 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/backup.d.ts +35 -0
- package/dist/tools/backup.d.ts.map +1 -0
- package/dist/tools/backup.js +210 -0
- package/dist/tools/backup.js.map +1 -0
- package/dist/tools/cluster.d.ts +15 -0
- package/dist/tools/cluster.d.ts.map +1 -0
- package/dist/tools/cluster.js +82 -0
- package/dist/tools/cluster.js.map +1 -0
- package/dist/tools/command.d.ts +6 -0
- package/dist/tools/command.d.ts.map +1 -0
- package/dist/tools/command.js +26 -0
- package/dist/tools/command.js.map +1 -0
- package/dist/tools/disk.d.ts +45 -0
- package/dist/tools/disk.d.ts.map +1 -0
- package/dist/tools/disk.js +243 -0
- package/dist/tools/disk.js.map +1 -0
- package/dist/tools/index.d.ts +12 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +20 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/network.d.ts +35 -0
- package/dist/tools/network.d.ts.map +1 -0
- package/dist/tools/network.js +270 -0
- package/dist/tools/network.js.map +1 -0
- package/dist/tools/node.d.ts +15 -0
- package/dist/tools/node.d.ts.map +1 -0
- package/dist/tools/node.js +73 -0
- package/dist/tools/node.js.map +1 -0
- package/dist/tools/registry.d.ts +12 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +87 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/snapshot.d.ts +45 -0
- package/dist/tools/snapshot.d.ts.map +1 -0
- package/dist/tools/snapshot.js +249 -0
- package/dist/tools/snapshot.js.map +1 -0
- package/dist/tools/vm-create.d.ts +8 -0
- package/dist/tools/vm-create.d.ts.map +1 -0
- package/dist/tools/vm-create.js +129 -0
- package/dist/tools/vm-create.js.map +1 -0
- package/dist/tools/vm-lifecycle.d.ts +67 -0
- package/dist/tools/vm-lifecycle.d.ts.map +1 -0
- package/dist/tools/vm-lifecycle.js +319 -0
- package/dist/tools/vm-lifecycle.js.map +1 -0
- package/dist/tools/vm-modify.d.ts +25 -0
- package/dist/tools/vm-modify.d.ts.map +1 -0
- package/dist/tools/vm-modify.js +155 -0
- package/dist/tools/vm-modify.js.map +1 -0
- package/dist/tools/vm-query.d.ts +20 -0
- package/dist/tools/vm-query.d.ts.map +1 -0
- package/dist/tools/vm-query.js +166 -0
- package/dist/tools/vm-query.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/proxmox.d.ts +166 -0
- package/dist/types/proxmox.d.ts.map +1 -0
- package/dist/types/proxmox.js +2 -0
- package/dist/types/proxmox.js.map +1 -0
- package/dist/types/tools.d.ts +12 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +64 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/validators/index.d.ts +75 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +185 -0
- package/dist/validators/index.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ProxmoxApiClient } from '../client/proxmox.js';
|
|
2
|
+
import type { Config } from '../config/index.js';
|
|
3
|
+
import type { ToolResponse } from '../types/index.js';
|
|
4
|
+
import type { GetNodesInput, GetNodeStatusInput } from '../schemas/node.js';
|
|
5
|
+
/**
|
|
6
|
+
* List all Proxmox cluster nodes with their status and resource usage.
|
|
7
|
+
* No elevated permissions required.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getNodes(client: ProxmoxApiClient, _config: Config, input: GetNodesInput): Promise<ToolResponse>;
|
|
10
|
+
/**
|
|
11
|
+
* Get detailed status for a specific node.
|
|
12
|
+
* Requires elevated permissions.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getNodeStatus(client: ProxmoxApiClient, config: Config, input: GetNodeStatusInput): Promise<ToolResponse>;
|
|
15
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/tools/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAatD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE5E;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,YAAY,CAAC,CAiCvB;AAUD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,YAAY,CAAC,CAqCvB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { formatToolResponse, formatErrorResponse, formatPermissionDenied, formatBytes, formatUptime, formatCpuPercent, } from '../formatters/index.js';
|
|
2
|
+
import { requireElevated } from '../middleware/index.js';
|
|
3
|
+
import { validateNodeName } from '../validators/index.js';
|
|
4
|
+
import { getNodesSchema, getNodeStatusSchema } from '../schemas/node.js';
|
|
5
|
+
/**
|
|
6
|
+
* List all Proxmox cluster nodes with their status and resource usage.
|
|
7
|
+
* No elevated permissions required.
|
|
8
|
+
*/
|
|
9
|
+
export async function getNodes(client, _config, input) {
|
|
10
|
+
try {
|
|
11
|
+
// Validate input (empty schema)
|
|
12
|
+
getNodesSchema.parse(input);
|
|
13
|
+
// Call Proxmox API
|
|
14
|
+
const nodes = (await client.request('/nodes'));
|
|
15
|
+
// Format response
|
|
16
|
+
let output = '🖥️ **Proxmox Cluster Nodes**\n\n';
|
|
17
|
+
for (const node of nodes) {
|
|
18
|
+
const status = node.status === 'online' ? '🟢' : '🔴';
|
|
19
|
+
const uptime = node.uptime ? formatUptime(node.uptime) : 'N/A';
|
|
20
|
+
const cpuUsage = node.cpu ? formatCpuPercent(node.cpu) : 'N/A';
|
|
21
|
+
const memUsage = node.mem && node.maxmem
|
|
22
|
+
? `${formatBytes(node.mem)} / ${formatBytes(node.maxmem)} (${((node.mem / node.maxmem) * 100).toFixed(1)}%)`
|
|
23
|
+
: 'N/A';
|
|
24
|
+
const loadAvg = node.loadavg ? node.loadavg[0]?.toFixed(2) : 'N/A';
|
|
25
|
+
output += `${status} **${node.node}**\n`;
|
|
26
|
+
output += ` • Status: ${node.status}\n`;
|
|
27
|
+
output += ` • Uptime: ${uptime}\n`;
|
|
28
|
+
output += ` • CPU: ${cpuUsage}\n`;
|
|
29
|
+
output += ` • Memory: ${memUsage}\n`;
|
|
30
|
+
output += ` • Load: ${loadAvg}\n\n`;
|
|
31
|
+
}
|
|
32
|
+
return formatToolResponse(output);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
return formatErrorResponse(error, 'Get Nodes');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get detailed status for a specific node.
|
|
40
|
+
* Requires elevated permissions.
|
|
41
|
+
*/
|
|
42
|
+
export async function getNodeStatus(client, config, input) {
|
|
43
|
+
try {
|
|
44
|
+
// Check permissions
|
|
45
|
+
requireElevated(config, 'get node status');
|
|
46
|
+
// Validate input
|
|
47
|
+
const validated = getNodeStatusSchema.parse(input);
|
|
48
|
+
const safeNode = validateNodeName(validated.node);
|
|
49
|
+
// Call Proxmox API
|
|
50
|
+
const status = (await client.request(`/nodes/${safeNode}/status`));
|
|
51
|
+
// Format response
|
|
52
|
+
let output = `🖥️ **Node ${safeNode} Status**\n\n`;
|
|
53
|
+
output += `• **Status**: ${status.uptime ? '🟢 Online' : '🔴 Offline'}\n`;
|
|
54
|
+
output += `• **Uptime**: ${status.uptime ? formatUptime(status.uptime) : 'N/A'}\n`;
|
|
55
|
+
output += `• **Load Average**: ${status.loadavg ? status.loadavg.join(', ') : 'N/A'}\n`;
|
|
56
|
+
output += `• **CPU Usage**: ${status.cpu ? formatCpuPercent(status.cpu) : 'N/A'}\n`;
|
|
57
|
+
output += `• **Memory**: ${status.memory
|
|
58
|
+
? `${formatBytes(status.memory.used)} / ${formatBytes(status.memory.total)} (${((status.memory.used / status.memory.total) * 100).toFixed(1)}%)`
|
|
59
|
+
: 'N/A'}\n`;
|
|
60
|
+
output += `• **Root Disk**: ${status.rootfs
|
|
61
|
+
? `${formatBytes(status.rootfs.used)} / ${formatBytes(status.rootfs.total)} (${((status.rootfs.used / status.rootfs.total) * 100).toFixed(1)}%)`
|
|
62
|
+
: 'N/A'}\n`;
|
|
63
|
+
return formatToolResponse(output);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
const err = error;
|
|
67
|
+
if (err.message.includes('Permission denied')) {
|
|
68
|
+
return formatPermissionDenied('get node status');
|
|
69
|
+
}
|
|
70
|
+
return formatErrorResponse(err, 'Get Node Status');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/tools/node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ProxmoxApiClient } from '../client/proxmox.js';
|
|
2
|
+
import type { Config } from '../config/index.js';
|
|
3
|
+
import type { ToolResponse, ToolName } from '../types/index.js';
|
|
4
|
+
import type { z } from 'zod';
|
|
5
|
+
export type ToolHandler = (client: ProxmoxApiClient, config: Config, input: any) => Promise<ToolResponse>;
|
|
6
|
+
export interface ToolRegistryEntry {
|
|
7
|
+
handler: ToolHandler;
|
|
8
|
+
schema: z.ZodSchema;
|
|
9
|
+
}
|
|
10
|
+
export declare const toolRegistry: Record<ToolName, ToolRegistryEntry>;
|
|
11
|
+
export declare function getToolHandler(toolName: ToolName): ToolRegistryEntry | undefined;
|
|
12
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmI7B,MAAM,MAAM,WAAW,GAAG,CACxB,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,GAAG,KACP,OAAO,CAAC,YAAY,CAAC,CAAC;AAG3B,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;CACrB;AAGD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CA2E5D,CAAC;AAGF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,iBAAiB,GAAG,SAAS,CAEhF"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// Import all tool handlers
|
|
2
|
+
import { getNodes, getNodeStatus, getClusterStatus, getNextVMID, getVMs, getVMStatus, getStorage, startLxc, startVM, stopLxc, stopVM, deleteLxc, deleteVM, rebootLxc, rebootVM, shutdownLxc, shutdownVM, pauseVM, resumeVM, cloneLxc, cloneVM, resizeLxc, resizeVM, createSnapshotLxc, createSnapshotVM, listSnapshotsLxc, listSnapshotsVM, rollbackSnapshotLxc, rollbackSnapshotVM, deleteSnapshotLxc, deleteSnapshotVM, createBackupLxc, createBackupVM, listBackups, restoreBackupLxc, restoreBackupVM, deleteBackup, addDiskVM, addMountpointLxc, resizeDiskVM, resizeDiskLxc, removeDiskVM, removeMountpointLxc, moveDiskVM, moveDiskLxc, addNetworkVm, addNetworkLxc, updateNetworkVm, updateNetworkLxc, removeNetworkVm, removeNetworkLxc, executeVMCommand, listTemplates, createLxc, createVM, } from './index.js';
|
|
3
|
+
// Import all schemas
|
|
4
|
+
import { getNodesSchema, getNodeStatusSchema, getClusterStatusSchema, getNextVmidSchema, } from '../schemas/node.js';
|
|
5
|
+
import { getVmsSchema, getVmStatusSchema, getStorageSchema, startLxcSchema, startVmSchema, stopLxcSchema, stopVmSchema, deleteLxcSchema, deleteVmSchema, rebootLxcSchema, rebootVmSchema, shutdownLxcSchema, shutdownVmSchema, pauseVmSchema, resumeVmSchema, cloneLxcSchema, cloneVmSchema, resizeLxcSchema, resizeVmSchema, executeVmCommandSchema, listTemplatesSchema, createLxcSchema, createVmSchema, } from '../schemas/vm.js';
|
|
6
|
+
import { createSnapshotLxcSchema, createSnapshotVmSchema, listSnapshotsLxcSchema, listSnapshotsVmSchema, rollbackSnapshotLxcSchema, rollbackSnapshotVmSchema, deleteSnapshotLxcSchema, deleteSnapshotVmSchema, } from '../schemas/snapshot.js';
|
|
7
|
+
import { createBackupLxcSchema, createBackupVmSchema, listBackupsSchema, restoreBackupLxcSchema, restoreBackupVmSchema, deleteBackupSchema, } from '../schemas/backup.js';
|
|
8
|
+
import { addDiskVmSchema, addMountpointLxcSchema, resizeDiskVmSchema, resizeDiskLxcSchema, removeDiskVmSchema, removeMountpointLxcSchema, moveDiskVmSchema, moveDiskLxcSchema, } from '../schemas/disk.js';
|
|
9
|
+
import { addNetworkVmSchema, addNetworkLxcSchema, updateNetworkVmSchema, updateNetworkLxcSchema, removeNetworkVmSchema, removeNetworkLxcSchema, } from '../schemas/network.js';
|
|
10
|
+
// Tool registry mapping tool names to handlers and schemas
|
|
11
|
+
export const toolRegistry = {
|
|
12
|
+
// Node & Cluster
|
|
13
|
+
proxmox_get_nodes: { handler: getNodes, schema: getNodesSchema },
|
|
14
|
+
proxmox_get_node_status: { handler: getNodeStatus, schema: getNodeStatusSchema },
|
|
15
|
+
proxmox_get_cluster_status: { handler: getClusterStatus, schema: getClusterStatusSchema },
|
|
16
|
+
proxmox_get_next_vmid: { handler: getNextVMID, schema: getNextVmidSchema },
|
|
17
|
+
// VM Query
|
|
18
|
+
proxmox_get_vms: { handler: getVMs, schema: getVmsSchema },
|
|
19
|
+
proxmox_get_vm_status: { handler: getVMStatus, schema: getVmStatusSchema },
|
|
20
|
+
proxmox_get_storage: { handler: getStorage, schema: getStorageSchema },
|
|
21
|
+
// VM Lifecycle
|
|
22
|
+
proxmox_start_lxc: { handler: startLxc, schema: startLxcSchema },
|
|
23
|
+
proxmox_start_vm: { handler: startVM, schema: startVmSchema },
|
|
24
|
+
proxmox_stop_lxc: { handler: stopLxc, schema: stopLxcSchema },
|
|
25
|
+
proxmox_stop_vm: { handler: stopVM, schema: stopVmSchema },
|
|
26
|
+
proxmox_delete_lxc: { handler: deleteLxc, schema: deleteLxcSchema },
|
|
27
|
+
proxmox_delete_vm: { handler: deleteVM, schema: deleteVmSchema },
|
|
28
|
+
proxmox_reboot_lxc: { handler: rebootLxc, schema: rebootLxcSchema },
|
|
29
|
+
proxmox_reboot_vm: { handler: rebootVM, schema: rebootVmSchema },
|
|
30
|
+
proxmox_shutdown_lxc: { handler: shutdownLxc, schema: shutdownLxcSchema },
|
|
31
|
+
proxmox_shutdown_vm: { handler: shutdownVM, schema: shutdownVmSchema },
|
|
32
|
+
proxmox_pause_vm: { handler: pauseVM, schema: pauseVmSchema },
|
|
33
|
+
proxmox_resume_vm: { handler: resumeVM, schema: resumeVmSchema },
|
|
34
|
+
// VM Modify
|
|
35
|
+
proxmox_clone_lxc: { handler: cloneLxc, schema: cloneLxcSchema },
|
|
36
|
+
proxmox_clone_vm: { handler: cloneVM, schema: cloneVmSchema },
|
|
37
|
+
proxmox_resize_lxc: { handler: resizeLxc, schema: resizeLxcSchema },
|
|
38
|
+
proxmox_resize_vm: { handler: resizeVM, schema: resizeVmSchema },
|
|
39
|
+
// Snapshots
|
|
40
|
+
proxmox_create_snapshot_lxc: { handler: createSnapshotLxc, schema: createSnapshotLxcSchema },
|
|
41
|
+
proxmox_create_snapshot_vm: { handler: createSnapshotVM, schema: createSnapshotVmSchema },
|
|
42
|
+
proxmox_list_snapshots_lxc: { handler: listSnapshotsLxc, schema: listSnapshotsLxcSchema },
|
|
43
|
+
proxmox_list_snapshots_vm: { handler: listSnapshotsVM, schema: listSnapshotsVmSchema },
|
|
44
|
+
proxmox_rollback_snapshot_lxc: { handler: rollbackSnapshotLxc, schema: rollbackSnapshotLxcSchema },
|
|
45
|
+
proxmox_rollback_snapshot_vm: { handler: rollbackSnapshotVM, schema: rollbackSnapshotVmSchema },
|
|
46
|
+
proxmox_delete_snapshot_lxc: { handler: deleteSnapshotLxc, schema: deleteSnapshotLxcSchema },
|
|
47
|
+
proxmox_delete_snapshot_vm: { handler: deleteSnapshotVM, schema: deleteSnapshotVmSchema },
|
|
48
|
+
// Backups
|
|
49
|
+
proxmox_create_backup_lxc: { handler: createBackupLxc, schema: createBackupLxcSchema },
|
|
50
|
+
proxmox_create_backup_vm: { handler: createBackupVM, schema: createBackupVmSchema },
|
|
51
|
+
proxmox_list_backups: { handler: listBackups, schema: listBackupsSchema },
|
|
52
|
+
proxmox_restore_backup_lxc: { handler: restoreBackupLxc, schema: restoreBackupLxcSchema },
|
|
53
|
+
proxmox_restore_backup_vm: { handler: restoreBackupVM, schema: restoreBackupVmSchema },
|
|
54
|
+
proxmox_delete_backup: { handler: deleteBackup, schema: deleteBackupSchema },
|
|
55
|
+
// Disks
|
|
56
|
+
proxmox_add_disk_vm: { handler: addDiskVM, schema: addDiskVmSchema },
|
|
57
|
+
proxmox_add_mountpoint_lxc: { handler: addMountpointLxc, schema: addMountpointLxcSchema },
|
|
58
|
+
proxmox_resize_disk_vm: { handler: resizeDiskVM, schema: resizeDiskVmSchema },
|
|
59
|
+
proxmox_resize_disk_lxc: { handler: resizeDiskLxc, schema: resizeDiskLxcSchema },
|
|
60
|
+
proxmox_remove_disk_vm: { handler: removeDiskVM, schema: removeDiskVmSchema },
|
|
61
|
+
proxmox_remove_mountpoint_lxc: { handler: removeMountpointLxc, schema: removeMountpointLxcSchema },
|
|
62
|
+
proxmox_move_disk_vm: { handler: moveDiskVM, schema: moveDiskVmSchema },
|
|
63
|
+
proxmox_move_disk_lxc: { handler: moveDiskLxc, schema: moveDiskLxcSchema },
|
|
64
|
+
// Network
|
|
65
|
+
proxmox_add_network_vm: { handler: addNetworkVm, schema: addNetworkVmSchema },
|
|
66
|
+
proxmox_add_network_lxc: { handler: addNetworkLxc, schema: addNetworkLxcSchema },
|
|
67
|
+
proxmox_update_network_vm: { handler: updateNetworkVm, schema: updateNetworkVmSchema },
|
|
68
|
+
proxmox_update_network_lxc: { handler: updateNetworkLxc, schema: updateNetworkLxcSchema },
|
|
69
|
+
proxmox_remove_network_vm: { handler: removeNetworkVm, schema: removeNetworkVmSchema },
|
|
70
|
+
proxmox_remove_network_lxc: { handler: removeNetworkLxc, schema: removeNetworkLxcSchema },
|
|
71
|
+
// Command
|
|
72
|
+
proxmox_execute_vm_command: { handler: executeVMCommand, schema: executeVmCommandSchema },
|
|
73
|
+
// Creation
|
|
74
|
+
proxmox_list_templates: { handler: listTemplates, schema: listTemplatesSchema },
|
|
75
|
+
proxmox_create_lxc: { handler: createLxc, schema: createLxcSchema },
|
|
76
|
+
proxmox_create_vm: { handler: createVM, schema: createVmSchema },
|
|
77
|
+
};
|
|
78
|
+
// Helper to get tool handler
|
|
79
|
+
export function getToolHandler(toolName) {
|
|
80
|
+
return toolRegistry[toolName];
|
|
81
|
+
}
|
|
82
|
+
// Validate all 55 tools are registered
|
|
83
|
+
const registeredCount = Object.keys(toolRegistry).length;
|
|
84
|
+
if (registeredCount !== 55) {
|
|
85
|
+
throw new Error(`Tool registry incomplete: expected 55 tools, got ${registeredCount}`);
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ProxmoxApiClient } from '../client/proxmox.js';
|
|
2
|
+
import type { Config } from '../config/index.js';
|
|
3
|
+
import type { ToolResponse } from '../types/index.js';
|
|
4
|
+
import type { CreateSnapshotLxcInput, CreateSnapshotVmInput, ListSnapshotsLxcInput, ListSnapshotsVmInput, RollbackSnapshotLxcInput, RollbackSnapshotVmInput, DeleteSnapshotLxcInput, DeleteSnapshotVmInput } from '../schemas/snapshot.js';
|
|
5
|
+
/**
|
|
6
|
+
* Create a snapshot of an LXC container
|
|
7
|
+
* Requires elevated permissions
|
|
8
|
+
*/
|
|
9
|
+
export declare function createSnapshotLxc(client: ProxmoxApiClient, config: Config, input: CreateSnapshotLxcInput): Promise<ToolResponse>;
|
|
10
|
+
/**
|
|
11
|
+
* Create a snapshot of a QEMU VM
|
|
12
|
+
* Requires elevated permissions
|
|
13
|
+
*/
|
|
14
|
+
export declare function createSnapshotVM(client: ProxmoxApiClient, config: Config, input: CreateSnapshotVmInput): Promise<ToolResponse>;
|
|
15
|
+
/**
|
|
16
|
+
* List all snapshots of an LXC container
|
|
17
|
+
* No permission check required (read operation)
|
|
18
|
+
*/
|
|
19
|
+
export declare function listSnapshotsLxc(client: ProxmoxApiClient, _config: Config, input: ListSnapshotsLxcInput): Promise<ToolResponse>;
|
|
20
|
+
/**
|
|
21
|
+
* List all snapshots of a QEMU VM
|
|
22
|
+
* No permission check required (read operation)
|
|
23
|
+
*/
|
|
24
|
+
export declare function listSnapshotsVM(client: ProxmoxApiClient, _config: Config, input: ListSnapshotsVmInput): Promise<ToolResponse>;
|
|
25
|
+
/**
|
|
26
|
+
* Rollback an LXC container to a snapshot
|
|
27
|
+
* Requires elevated permissions
|
|
28
|
+
*/
|
|
29
|
+
export declare function rollbackSnapshotLxc(client: ProxmoxApiClient, config: Config, input: RollbackSnapshotLxcInput): Promise<ToolResponse>;
|
|
30
|
+
/**
|
|
31
|
+
* Rollback a QEMU VM to a snapshot
|
|
32
|
+
* Requires elevated permissions
|
|
33
|
+
*/
|
|
34
|
+
export declare function rollbackSnapshotVM(client: ProxmoxApiClient, config: Config, input: RollbackSnapshotVmInput): Promise<ToolResponse>;
|
|
35
|
+
/**
|
|
36
|
+
* Delete a snapshot of an LXC container
|
|
37
|
+
* Requires elevated permissions
|
|
38
|
+
*/
|
|
39
|
+
export declare function deleteSnapshotLxc(client: ProxmoxApiClient, config: Config, input: DeleteSnapshotLxcInput): Promise<ToolResponse>;
|
|
40
|
+
/**
|
|
41
|
+
* Delete a snapshot of a QEMU VM
|
|
42
|
+
* Requires elevated permissions
|
|
43
|
+
*/
|
|
44
|
+
export declare function deleteSnapshotVM(client: ProxmoxApiClient, config: Config, input: DeleteSnapshotVmInput): Promise<ToolResponse>;
|
|
45
|
+
//# sourceMappingURL=snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/tools/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAiBtD,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAEhC;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,YAAY,CAAC,CAkCvB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAkCvB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAiDvB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAiDvB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,YAAY,CAAC,CA0BvB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,YAAY,CAAC,CA0BvB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,YAAY,CAAC,CAwBvB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAwBvB"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { formatToolResponse, formatErrorResponse, } from '../formatters/index.js';
|
|
2
|
+
import { requireElevated } from '../middleware/index.js';
|
|
3
|
+
import { validateNodeName, validateVMID, validateSnapshotName } from '../validators/index.js';
|
|
4
|
+
import { createSnapshotLxcSchema, createSnapshotVmSchema, listSnapshotsLxcSchema, listSnapshotsVmSchema, rollbackSnapshotLxcSchema, rollbackSnapshotVmSchema, deleteSnapshotLxcSchema, deleteSnapshotVmSchema, } from '../schemas/snapshot.js';
|
|
5
|
+
/**
|
|
6
|
+
* Create a snapshot of an LXC container
|
|
7
|
+
* Requires elevated permissions
|
|
8
|
+
*/
|
|
9
|
+
export async function createSnapshotLxc(client, config, input) {
|
|
10
|
+
try {
|
|
11
|
+
requireElevated(config, 'create LXC snapshot');
|
|
12
|
+
const validated = createSnapshotLxcSchema.parse(input);
|
|
13
|
+
const safeNode = validateNodeName(validated.node);
|
|
14
|
+
const safeVmid = validateVMID(validated.vmid);
|
|
15
|
+
const safeSnapname = validateSnapshotName(validated.snapname);
|
|
16
|
+
const result = await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/snapshot`, 'POST', {
|
|
17
|
+
snapname: safeSnapname,
|
|
18
|
+
description: validated.description || '',
|
|
19
|
+
});
|
|
20
|
+
let output = `📸 **Snapshot Created**\n\n` +
|
|
21
|
+
`• **Container ID**: ${safeVmid}\n` +
|
|
22
|
+
`• **Snapshot Name**: ${safeSnapname}\n`;
|
|
23
|
+
if (validated.description) {
|
|
24
|
+
output += `• **Description**: ${validated.description}\n`;
|
|
25
|
+
}
|
|
26
|
+
output += `• **Node**: ${safeNode}\n` +
|
|
27
|
+
`• **Task ID**: ${result || 'N/A'}\n\n` +
|
|
28
|
+
`Use \`list_snapshots_lxc\` to view all snapshots.`;
|
|
29
|
+
return formatToolResponse(output);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
return formatErrorResponse(error, 'Create LXC Snapshot');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create a snapshot of a QEMU VM
|
|
37
|
+
* Requires elevated permissions
|
|
38
|
+
*/
|
|
39
|
+
export async function createSnapshotVM(client, config, input) {
|
|
40
|
+
try {
|
|
41
|
+
requireElevated(config, 'create VM snapshot');
|
|
42
|
+
const validated = createSnapshotVmSchema.parse(input);
|
|
43
|
+
const safeNode = validateNodeName(validated.node);
|
|
44
|
+
const safeVmid = validateVMID(validated.vmid);
|
|
45
|
+
const safeSnapname = validateSnapshotName(validated.snapname);
|
|
46
|
+
const result = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/snapshot`, 'POST', {
|
|
47
|
+
snapname: safeSnapname,
|
|
48
|
+
description: validated.description || '',
|
|
49
|
+
});
|
|
50
|
+
let output = `📸 **Snapshot Created**\n\n` +
|
|
51
|
+
`• **VM ID**: ${safeVmid}\n` +
|
|
52
|
+
`• **Snapshot Name**: ${safeSnapname}\n`;
|
|
53
|
+
if (validated.description) {
|
|
54
|
+
output += `• **Description**: ${validated.description}\n`;
|
|
55
|
+
}
|
|
56
|
+
output += `• **Node**: ${safeNode}\n` +
|
|
57
|
+
`• **Task ID**: ${result || 'N/A'}\n\n` +
|
|
58
|
+
`Use \`list_snapshots_vm\` to view all snapshots.`;
|
|
59
|
+
return formatToolResponse(output);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
return formatErrorResponse(error, 'Create VM Snapshot');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* List all snapshots of an LXC container
|
|
67
|
+
* No permission check required (read operation)
|
|
68
|
+
*/
|
|
69
|
+
export async function listSnapshotsLxc(client, _config, input) {
|
|
70
|
+
try {
|
|
71
|
+
const validated = listSnapshotsLxcSchema.parse(input);
|
|
72
|
+
const safeNode = validateNodeName(validated.node);
|
|
73
|
+
const safeVmid = validateVMID(validated.vmid);
|
|
74
|
+
const snapshots = await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/snapshot`);
|
|
75
|
+
let output = `📸 **Snapshots for Container ${safeVmid}**\n\n`;
|
|
76
|
+
if (!snapshots || snapshots.length === 0) {
|
|
77
|
+
output += 'No snapshots found.\n';
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// Filter out 'current' pseudo-snapshot and sort by snaptime (newest first)
|
|
81
|
+
const realSnapshots = snapshots
|
|
82
|
+
.filter(snap => snap.name !== 'current')
|
|
83
|
+
.sort((a, b) => (b.snaptime || 0) - (a.snaptime || 0));
|
|
84
|
+
if (realSnapshots.length === 0) {
|
|
85
|
+
output += 'No snapshots found.\n';
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
for (const snap of realSnapshots) {
|
|
89
|
+
output += `**${snap.name}**\n`;
|
|
90
|
+
if (snap.description) {
|
|
91
|
+
output += ` • Description: ${snap.description}\n`;
|
|
92
|
+
}
|
|
93
|
+
if (snap.snaptime) {
|
|
94
|
+
const date = new Date(snap.snaptime * 1000);
|
|
95
|
+
output += ` • Date: ${date.toLocaleString()}\n`;
|
|
96
|
+
}
|
|
97
|
+
if (snap.parent) {
|
|
98
|
+
output += ` • Parent: ${snap.parent}\n`;
|
|
99
|
+
}
|
|
100
|
+
output += '\n';
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return formatToolResponse(output);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
return formatErrorResponse(error, 'List LXC Snapshots');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* List all snapshots of a QEMU VM
|
|
112
|
+
* No permission check required (read operation)
|
|
113
|
+
*/
|
|
114
|
+
export async function listSnapshotsVM(client, _config, input) {
|
|
115
|
+
try {
|
|
116
|
+
const validated = listSnapshotsVmSchema.parse(input);
|
|
117
|
+
const safeNode = validateNodeName(validated.node);
|
|
118
|
+
const safeVmid = validateVMID(validated.vmid);
|
|
119
|
+
const snapshots = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/snapshot`);
|
|
120
|
+
let output = `📸 **Snapshots for VM ${safeVmid}**\n\n`;
|
|
121
|
+
if (!snapshots || snapshots.length === 0) {
|
|
122
|
+
output += 'No snapshots found.\n';
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Filter out 'current' pseudo-snapshot and sort by snaptime (newest first)
|
|
126
|
+
const realSnapshots = snapshots
|
|
127
|
+
.filter(snap => snap.name !== 'current')
|
|
128
|
+
.sort((a, b) => (b.snaptime || 0) - (a.snaptime || 0));
|
|
129
|
+
if (realSnapshots.length === 0) {
|
|
130
|
+
output += 'No snapshots found.\n';
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
for (const snap of realSnapshots) {
|
|
134
|
+
output += `**${snap.name}**\n`;
|
|
135
|
+
if (snap.description) {
|
|
136
|
+
output += ` • Description: ${snap.description}\n`;
|
|
137
|
+
}
|
|
138
|
+
if (snap.snaptime) {
|
|
139
|
+
const date = new Date(snap.snaptime * 1000);
|
|
140
|
+
output += ` • Date: ${date.toLocaleString()}\n`;
|
|
141
|
+
}
|
|
142
|
+
if (snap.parent) {
|
|
143
|
+
output += ` • Parent: ${snap.parent}\n`;
|
|
144
|
+
}
|
|
145
|
+
output += '\n';
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return formatToolResponse(output);
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
return formatErrorResponse(error, 'List VM Snapshots');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Rollback an LXC container to a snapshot
|
|
157
|
+
* Requires elevated permissions
|
|
158
|
+
*/
|
|
159
|
+
export async function rollbackSnapshotLxc(client, config, input) {
|
|
160
|
+
try {
|
|
161
|
+
requireElevated(config, 'rollback LXC snapshot');
|
|
162
|
+
const validated = rollbackSnapshotLxcSchema.parse(input);
|
|
163
|
+
const safeNode = validateNodeName(validated.node);
|
|
164
|
+
const safeVmid = validateVMID(validated.vmid);
|
|
165
|
+
const safeSnapname = validateSnapshotName(validated.snapname);
|
|
166
|
+
const result = await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/snapshot/${safeSnapname}/rollback`, 'POST', {});
|
|
167
|
+
const output = `⏮️ **Snapshot Rollback Initiated**\n\n` +
|
|
168
|
+
`• **Container ID**: ${safeVmid}\n` +
|
|
169
|
+
`• **Snapshot Name**: ${safeSnapname}\n` +
|
|
170
|
+
`• **Node**: ${safeNode}\n` +
|
|
171
|
+
`• **Task ID**: ${result || 'N/A'}\n\n` +
|
|
172
|
+
`**Warning**: This will revert the container to the snapshot state. Current state will be lost.`;
|
|
173
|
+
return formatToolResponse(output);
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
return formatErrorResponse(error, 'Rollback LXC Snapshot');
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Rollback a QEMU VM to a snapshot
|
|
181
|
+
* Requires elevated permissions
|
|
182
|
+
*/
|
|
183
|
+
export async function rollbackSnapshotVM(client, config, input) {
|
|
184
|
+
try {
|
|
185
|
+
requireElevated(config, 'rollback VM snapshot');
|
|
186
|
+
const validated = rollbackSnapshotVmSchema.parse(input);
|
|
187
|
+
const safeNode = validateNodeName(validated.node);
|
|
188
|
+
const safeVmid = validateVMID(validated.vmid);
|
|
189
|
+
const safeSnapname = validateSnapshotName(validated.snapname);
|
|
190
|
+
const result = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/snapshot/${safeSnapname}/rollback`, 'POST', {});
|
|
191
|
+
const output = `⏮️ **Snapshot Rollback Initiated**\n\n` +
|
|
192
|
+
`• **VM ID**: ${safeVmid}\n` +
|
|
193
|
+
`• **Snapshot Name**: ${safeSnapname}\n` +
|
|
194
|
+
`• **Node**: ${safeNode}\n` +
|
|
195
|
+
`• **Task ID**: ${result || 'N/A'}\n\n` +
|
|
196
|
+
`**Warning**: This will revert the VM to the snapshot state. Current state will be lost.`;
|
|
197
|
+
return formatToolResponse(output);
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
return formatErrorResponse(error, 'Rollback VM Snapshot');
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Delete a snapshot of an LXC container
|
|
205
|
+
* Requires elevated permissions
|
|
206
|
+
*/
|
|
207
|
+
export async function deleteSnapshotLxc(client, config, input) {
|
|
208
|
+
try {
|
|
209
|
+
requireElevated(config, 'delete LXC snapshot');
|
|
210
|
+
const validated = deleteSnapshotLxcSchema.parse(input);
|
|
211
|
+
const safeNode = validateNodeName(validated.node);
|
|
212
|
+
const safeVmid = validateVMID(validated.vmid);
|
|
213
|
+
const safeSnapname = validateSnapshotName(validated.snapname);
|
|
214
|
+
const result = await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/snapshot/${safeSnapname}`, 'DELETE');
|
|
215
|
+
const output = `🗑️ **Snapshot Deleted**\n\n` +
|
|
216
|
+
`• **Container ID**: ${safeVmid}\n` +
|
|
217
|
+
`• **Snapshot Name**: ${safeSnapname}\n` +
|
|
218
|
+
`• **Node**: ${safeNode}\n` +
|
|
219
|
+
`• **Task ID**: ${result || 'N/A'}`;
|
|
220
|
+
return formatToolResponse(output);
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
return formatErrorResponse(error, 'Delete LXC Snapshot');
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Delete a snapshot of a QEMU VM
|
|
228
|
+
* Requires elevated permissions
|
|
229
|
+
*/
|
|
230
|
+
export async function deleteSnapshotVM(client, config, input) {
|
|
231
|
+
try {
|
|
232
|
+
requireElevated(config, 'delete VM snapshot');
|
|
233
|
+
const validated = deleteSnapshotVmSchema.parse(input);
|
|
234
|
+
const safeNode = validateNodeName(validated.node);
|
|
235
|
+
const safeVmid = validateVMID(validated.vmid);
|
|
236
|
+
const safeSnapname = validateSnapshotName(validated.snapname);
|
|
237
|
+
const result = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/snapshot/${safeSnapname}`, 'DELETE');
|
|
238
|
+
const output = `🗑️ **Snapshot Deleted**\n\n` +
|
|
239
|
+
`• **VM ID**: ${safeVmid}\n` +
|
|
240
|
+
`• **Snapshot Name**: ${safeSnapname}\n` +
|
|
241
|
+
`• **Node**: ${safeNode}\n` +
|
|
242
|
+
`• **Task ID**: ${result || 'N/A'}`;
|
|
243
|
+
return formatToolResponse(output);
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
return formatErrorResponse(error, 'Delete VM Snapshot');
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/tools/snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ProxmoxApiClient } from '../client/proxmox.js';
|
|
2
|
+
import type { Config } from '../config/index.js';
|
|
3
|
+
import type { ToolResponse } from '../types/index.js';
|
|
4
|
+
import type { ListTemplatesInput, CreateLxcInput, CreateVmInput } from '../schemas/vm.js';
|
|
5
|
+
export declare function listTemplates(client: ProxmoxApiClient, _config: Config, input: ListTemplatesInput): Promise<ToolResponse>;
|
|
6
|
+
export declare function createLxc(client: ProxmoxApiClient, config: Config, input: CreateLxcInput): Promise<ToolResponse>;
|
|
7
|
+
export declare function createVM(client: ProxmoxApiClient, config: Config, input: CreateVmInput): Promise<ToolResponse>;
|
|
8
|
+
//# sourceMappingURL=vm-create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-create.d.ts","sourceRoot":"","sources":["../../src/tools/vm-create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAiBtD,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,YAAY,CAAC,CAiCvB;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,YAAY,CAAC,CAoDvB;AAED,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,YAAY,CAAC,CA0DvB"}
|