@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.
Files changed (139) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1033 -0
  3. package/dist/client/proxmox.d.ts +14 -0
  4. package/dist/client/proxmox.d.ts.map +1 -0
  5. package/dist/client/proxmox.js +82 -0
  6. package/dist/client/proxmox.js.map +1 -0
  7. package/dist/config/index.d.ts +4 -0
  8. package/dist/config/index.d.ts.map +1 -0
  9. package/dist/config/index.js +24 -0
  10. package/dist/config/index.js.map +1 -0
  11. package/dist/config/schema.d.ts +31 -0
  12. package/dist/config/schema.d.ts.map +1 -0
  13. package/dist/config/schema.js +32 -0
  14. package/dist/config/schema.js.map +1 -0
  15. package/dist/formatters/index.d.ts +42 -0
  16. package/dist/formatters/index.d.ts.map +1 -0
  17. package/dist/formatters/index.js +85 -0
  18. package/dist/formatters/index.js.map +1 -0
  19. package/dist/index.d.ts +3 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +40 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/middleware/index.d.ts +41 -0
  24. package/dist/middleware/index.d.ts.map +1 -0
  25. package/dist/middleware/index.js +69 -0
  26. package/dist/middleware/index.js.map +1 -0
  27. package/dist/prompts/index.d.ts +2 -0
  28. package/dist/prompts/index.d.ts.map +1 -0
  29. package/dist/prompts/index.js +2 -0
  30. package/dist/prompts/index.js.map +1 -0
  31. package/dist/resources/index.d.ts +2 -0
  32. package/dist/resources/index.d.ts.map +1 -0
  33. package/dist/resources/index.js +2 -0
  34. package/dist/resources/index.js.map +1 -0
  35. package/dist/schemas/backup.d.ts +101 -0
  36. package/dist/schemas/backup.d.ts.map +1 -0
  37. package/dist/schemas/backup.js +43 -0
  38. package/dist/schemas/backup.js.map +1 -0
  39. package/dist/schemas/disk.d.ts +144 -0
  40. package/dist/schemas/disk.d.ts.map +1 -0
  41. package/dist/schemas/disk.js +60 -0
  42. package/dist/schemas/disk.js.map +1 -0
  43. package/dist/schemas/index.d.ts +7 -0
  44. package/dist/schemas/index.d.ts.map +1 -0
  45. package/dist/schemas/index.js +7 -0
  46. package/dist/schemas/index.js.map +1 -0
  47. package/dist/schemas/network.d.ts +140 -0
  48. package/dist/schemas/network.d.ts.map +1 -0
  49. package/dist/schemas/network.js +56 -0
  50. package/dist/schemas/network.js.map +1 -0
  51. package/dist/schemas/node.d.ts +16 -0
  52. package/dist/schemas/node.d.ts.map +1 -0
  53. package/dist/schemas/node.js +12 -0
  54. package/dist/schemas/node.js.map +1 -0
  55. package/dist/schemas/snapshot.d.ts +116 -0
  56. package/dist/schemas/snapshot.d.ts.map +1 -0
  57. package/dist/schemas/snapshot.js +34 -0
  58. package/dist/schemas/snapshot.js.map +1 -0
  59. package/dist/schemas/vm.d.ts +330 -0
  60. package/dist/schemas/vm.d.ts.map +1 -0
  61. package/dist/schemas/vm.js +111 -0
  62. package/dist/schemas/vm.js.map +1 -0
  63. package/dist/server.d.ts +5 -0
  64. package/dist/server.d.ts.map +1 -0
  65. package/dist/server.js +142 -0
  66. package/dist/server.js.map +1 -0
  67. package/dist/tools/backup.d.ts +35 -0
  68. package/dist/tools/backup.d.ts.map +1 -0
  69. package/dist/tools/backup.js +210 -0
  70. package/dist/tools/backup.js.map +1 -0
  71. package/dist/tools/cluster.d.ts +15 -0
  72. package/dist/tools/cluster.d.ts.map +1 -0
  73. package/dist/tools/cluster.js +82 -0
  74. package/dist/tools/cluster.js.map +1 -0
  75. package/dist/tools/command.d.ts +6 -0
  76. package/dist/tools/command.d.ts.map +1 -0
  77. package/dist/tools/command.js +26 -0
  78. package/dist/tools/command.js.map +1 -0
  79. package/dist/tools/disk.d.ts +45 -0
  80. package/dist/tools/disk.d.ts.map +1 -0
  81. package/dist/tools/disk.js +243 -0
  82. package/dist/tools/disk.js.map +1 -0
  83. package/dist/tools/index.d.ts +12 -0
  84. package/dist/tools/index.d.ts.map +1 -0
  85. package/dist/tools/index.js +20 -0
  86. package/dist/tools/index.js.map +1 -0
  87. package/dist/tools/network.d.ts +35 -0
  88. package/dist/tools/network.d.ts.map +1 -0
  89. package/dist/tools/network.js +270 -0
  90. package/dist/tools/network.js.map +1 -0
  91. package/dist/tools/node.d.ts +15 -0
  92. package/dist/tools/node.d.ts.map +1 -0
  93. package/dist/tools/node.js +73 -0
  94. package/dist/tools/node.js.map +1 -0
  95. package/dist/tools/registry.d.ts +12 -0
  96. package/dist/tools/registry.d.ts.map +1 -0
  97. package/dist/tools/registry.js +87 -0
  98. package/dist/tools/registry.js.map +1 -0
  99. package/dist/tools/snapshot.d.ts +45 -0
  100. package/dist/tools/snapshot.d.ts.map +1 -0
  101. package/dist/tools/snapshot.js +249 -0
  102. package/dist/tools/snapshot.js.map +1 -0
  103. package/dist/tools/vm-create.d.ts +8 -0
  104. package/dist/tools/vm-create.d.ts.map +1 -0
  105. package/dist/tools/vm-create.js +129 -0
  106. package/dist/tools/vm-create.js.map +1 -0
  107. package/dist/tools/vm-lifecycle.d.ts +67 -0
  108. package/dist/tools/vm-lifecycle.d.ts.map +1 -0
  109. package/dist/tools/vm-lifecycle.js +319 -0
  110. package/dist/tools/vm-lifecycle.js.map +1 -0
  111. package/dist/tools/vm-modify.d.ts +25 -0
  112. package/dist/tools/vm-modify.d.ts.map +1 -0
  113. package/dist/tools/vm-modify.js +155 -0
  114. package/dist/tools/vm-modify.js.map +1 -0
  115. package/dist/tools/vm-query.d.ts +20 -0
  116. package/dist/tools/vm-query.d.ts.map +1 -0
  117. package/dist/tools/vm-query.js +166 -0
  118. package/dist/tools/vm-query.js.map +1 -0
  119. package/dist/types/index.d.ts +5 -0
  120. package/dist/types/index.d.ts.map +1 -0
  121. package/dist/types/index.js +2 -0
  122. package/dist/types/index.js.map +1 -0
  123. package/dist/types/proxmox.d.ts +166 -0
  124. package/dist/types/proxmox.d.ts.map +1 -0
  125. package/dist/types/proxmox.js +2 -0
  126. package/dist/types/proxmox.js.map +1 -0
  127. package/dist/types/tools.d.ts +12 -0
  128. package/dist/types/tools.d.ts.map +1 -0
  129. package/dist/types/tools.js +64 -0
  130. package/dist/types/tools.js.map +1 -0
  131. package/dist/utils/index.d.ts +3 -0
  132. package/dist/utils/index.d.ts.map +1 -0
  133. package/dist/utils/index.js +8 -0
  134. package/dist/utils/index.js.map +1 -0
  135. package/dist/validators/index.d.ts +75 -0
  136. package/dist/validators/index.d.ts.map +1 -0
  137. package/dist/validators/index.js +185 -0
  138. package/dist/validators/index.js.map +1 -0
  139. package/package.json +51 -0
@@ -0,0 +1,129 @@
1
+ import { formatToolResponse, formatErrorResponse, } from '../formatters/index.js';
2
+ import { requireElevated } from '../middleware/index.js';
3
+ import { validateNodeName, validateVMID, validateStorageName, generateSecurePassword, } from '../validators/index.js';
4
+ import { listTemplatesSchema, createLxcSchema, createVmSchema, } from '../schemas/vm.js';
5
+ export async function listTemplates(client, _config, input) {
6
+ try {
7
+ const validated = listTemplatesSchema.parse(input);
8
+ const safeNode = validateNodeName(validated.node);
9
+ const safeStorage = validateStorageName(validated.storage);
10
+ const templates = (await client.request(`/nodes/${safeNode}/storage/${safeStorage}/content?content=vztmpl`, 'GET'));
11
+ let output = '📋 **Available LXC Templates**\n\n';
12
+ if (!templates || templates.length === 0) {
13
+ output += `No templates found on storage \`${safeStorage}\`.\n\n`;
14
+ output += `**Tip**: Download templates in Proxmox:\n`;
15
+ output += `1. Go to your node → Storage → ${safeStorage}\n`;
16
+ output += `2. Click "CT Templates"\n`;
17
+ output += `3. Download a template (e.g., Debian, Ubuntu)\n`;
18
+ }
19
+ else {
20
+ for (const template of templates) {
21
+ const size = template.size
22
+ ? formatBytes(template.size)
23
+ : 'N/A';
24
+ output += `• **${template.volid}**\n`;
25
+ output += ` Size: ${size}\n\n`;
26
+ }
27
+ }
28
+ return formatToolResponse(output);
29
+ }
30
+ catch (error) {
31
+ return formatErrorResponse(error, 'List Templates');
32
+ }
33
+ }
34
+ export async function createLxc(client, config, input) {
35
+ try {
36
+ requireElevated(config, 'create LXC container');
37
+ const validated = createLxcSchema.parse(input);
38
+ const safeNode = validateNodeName(validated.node);
39
+ const safeVmid = validateVMID(validated.vmid);
40
+ const password = validated.password || generateSecurePassword();
41
+ const isPasswordGenerated = !validated.password;
42
+ const body = {
43
+ vmid: parseInt(safeVmid, 10),
44
+ ostemplate: validated.ostemplate,
45
+ hostname: validated.hostname || `lxc-${safeVmid}`,
46
+ password,
47
+ memory: validated.memory || 512,
48
+ storage: validated.storage || 'local-lvm',
49
+ rootfs: `${validated.storage || 'local-lvm'}:${validated.rootfs || 8}`,
50
+ };
51
+ const result = await client.request(`/nodes/${safeNode}/lxc`, 'POST', body);
52
+ let output = `📦 **LXC Container Creation Started**\n\n` +
53
+ `• **Container ID**: ${safeVmid}\n` +
54
+ `• **Hostname**: ${body.hostname}\n` +
55
+ `• **Template**: ${validated.ostemplate}\n` +
56
+ `• **Memory**: ${body.memory} MB\n` +
57
+ `• **Storage**: ${body.storage}\n` +
58
+ `• **Root FS**: ${body.rootfs}\n`;
59
+ if (isPasswordGenerated) {
60
+ output += `• **🔐 Generated Password**: \`${password}\`\n`;
61
+ output += ` ⚠️ **SAVE THIS PASSWORD** - it will not be shown again!\n`;
62
+ }
63
+ output +=
64
+ `• **Task ID**: ${result}\n\n` +
65
+ `**Next steps**:\n` +
66
+ `1. Wait a moment for container to be created\n` +
67
+ `2. Start it with \`proxmox_start_lxc\`\n` +
68
+ `3. View status with \`proxmox_get_vm_status\`\n`;
69
+ return formatToolResponse(output);
70
+ }
71
+ catch (error) {
72
+ return formatErrorResponse(error, 'Create LXC Container');
73
+ }
74
+ }
75
+ export async function createVM(client, config, input) {
76
+ try {
77
+ requireElevated(config, 'create QEMU VM');
78
+ const validated = createVmSchema.parse(input);
79
+ const safeNode = validateNodeName(validated.node);
80
+ const safeVmid = validateVMID(validated.vmid);
81
+ const storage = validated.storage || 'local-lvm';
82
+ const diskSize = validated.disk_size || '8G';
83
+ const sizeValue = diskSize.replace(/[^0-9]/g, '');
84
+ const body = {
85
+ vmid: parseInt(safeVmid, 10),
86
+ name: validated.name || `vm-${safeVmid}`,
87
+ memory: validated.memory || 512,
88
+ cores: validated.cores || 1,
89
+ sockets: validated.sockets || 1,
90
+ ostype: validated.ostype || 'l26',
91
+ net0: validated.net0 || 'virtio,bridge=vmbr0',
92
+ scsi0: `${storage}:${sizeValue}`,
93
+ };
94
+ if (validated.iso) {
95
+ body.ide2 = `${validated.iso},media=cdrom`;
96
+ body.boot = 'order=ide2;scsi0';
97
+ }
98
+ const result = await client.request(`/nodes/${safeNode}/qemu`, 'POST', body);
99
+ let output = `🖥️ **QEMU VM Creation Started**\n\n` +
100
+ `• **VM ID**: ${safeVmid}\n` +
101
+ `• **Name**: ${body.name}\n` +
102
+ `• **Memory**: ${body.memory} MB\n` +
103
+ `• **CPU**: ${body.sockets} socket(s), ${body.cores} core(s)\n` +
104
+ `• **Disk**: ${body.scsi0}\n` +
105
+ `• **Network**: ${body.net0}\n`;
106
+ if (validated.iso) {
107
+ output += `• **ISO**: ${validated.iso}\n`;
108
+ }
109
+ output +=
110
+ `• **Task ID**: ${result}\n\n` +
111
+ `**Next steps**:\n` +
112
+ `1. Wait a moment for VM to be created\n` +
113
+ `2. Start it with \`proxmox_start_vm\`\n` +
114
+ `3. View status with \`proxmox_get_vm_status\`\n`;
115
+ return formatToolResponse(output);
116
+ }
117
+ catch (error) {
118
+ return formatErrorResponse(error, 'Create QEMU VM');
119
+ }
120
+ }
121
+ function formatBytes(bytes) {
122
+ if (bytes === 0)
123
+ return '0 B';
124
+ const k = 1024;
125
+ const sizes = ['B', 'KB', 'MB', 'GB'];
126
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
127
+ return Math.round((bytes / Math.pow(k, i)) * 100) / 100 + ' ' + sizes[i];
128
+ }
129
+ //# sourceMappingURL=vm-create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm-create.js","sourceRoot":"","sources":["../../src/tools/vm-create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
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 { StartLxcInput, StartVmInput, StopLxcInput, StopVmInput, DeleteLxcInput, DeleteVmInput, RebootLxcInput, RebootVmInput, ShutdownLxcInput, ShutdownVmInput, PauseVmInput, ResumeVmInput } from '../schemas/vm.js';
5
+ /**
6
+ * Start an LXC container
7
+ * Requires elevated permissions
8
+ */
9
+ export declare function startLxc(client: ProxmoxApiClient, config: Config, input: StartLxcInput): Promise<ToolResponse>;
10
+ /**
11
+ * Start a QEMU VM
12
+ * Requires elevated permissions
13
+ */
14
+ export declare function startVM(client: ProxmoxApiClient, config: Config, input: StartVmInput): Promise<ToolResponse>;
15
+ /**
16
+ * Stop an LXC container (forceful)
17
+ * Requires elevated permissions
18
+ */
19
+ export declare function stopLxc(client: ProxmoxApiClient, config: Config, input: StopLxcInput): Promise<ToolResponse>;
20
+ /**
21
+ * Stop a QEMU VM (forceful)
22
+ * Requires elevated permissions
23
+ */
24
+ export declare function stopVM(client: ProxmoxApiClient, config: Config, input: StopVmInput): Promise<ToolResponse>;
25
+ /**
26
+ * Delete an LXC container
27
+ * Requires elevated permissions
28
+ */
29
+ export declare function deleteLxc(client: ProxmoxApiClient, config: Config, input: DeleteLxcInput): Promise<ToolResponse>;
30
+ /**
31
+ * Delete a QEMU VM
32
+ * Requires elevated permissions
33
+ */
34
+ export declare function deleteVM(client: ProxmoxApiClient, config: Config, input: DeleteVmInput): Promise<ToolResponse>;
35
+ /**
36
+ * Reboot an LXC container
37
+ * Requires elevated permissions
38
+ */
39
+ export declare function rebootLxc(client: ProxmoxApiClient, config: Config, input: RebootLxcInput): Promise<ToolResponse>;
40
+ /**
41
+ * Reboot a QEMU VM
42
+ * Requires elevated permissions
43
+ */
44
+ export declare function rebootVM(client: ProxmoxApiClient, config: Config, input: RebootVmInput): Promise<ToolResponse>;
45
+ /**
46
+ * Gracefully shutdown an LXC container
47
+ * Requires elevated permissions
48
+ */
49
+ export declare function shutdownLxc(client: ProxmoxApiClient, config: Config, input: ShutdownLxcInput): Promise<ToolResponse>;
50
+ /**
51
+ * Gracefully shutdown a QEMU VM
52
+ * Requires elevated permissions
53
+ */
54
+ export declare function shutdownVM(client: ProxmoxApiClient, config: Config, input: ShutdownVmInput): Promise<ToolResponse>;
55
+ /**
56
+ * Pause a QEMU VM (suspend)
57
+ * Note: LXC containers do not support pause
58
+ * Requires elevated permissions
59
+ */
60
+ export declare function pauseVM(client: ProxmoxApiClient, config: Config, input: PauseVmInput): Promise<ToolResponse>;
61
+ /**
62
+ * Resume a paused QEMU VM
63
+ * Note: LXC containers do not support resume
64
+ * Requires elevated permissions
65
+ */
66
+ export declare function resumeVM(client: ProxmoxApiClient, config: Config, input: ResumeVmInput): Promise<ToolResponse>;
67
+ //# sourceMappingURL=vm-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm-lifecycle.d.ts","sourceRoot":"","sources":["../../src/tools/vm-lifecycle.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;AAqBtD,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,YAAY,CAAC,CA2BvB"}
@@ -0,0 +1,319 @@
1
+ import { formatToolResponse, formatErrorResponse, } from '../formatters/index.js';
2
+ import { requireElevated } from '../middleware/index.js';
3
+ import { validateNodeName, validateVMID } from '../validators/index.js';
4
+ import { startLxcSchema, startVmSchema, stopLxcSchema, stopVmSchema, deleteLxcSchema, deleteVmSchema, rebootLxcSchema, rebootVmSchema, shutdownLxcSchema, shutdownVmSchema, pauseVmSchema, resumeVmSchema, } from '../schemas/vm.js';
5
+ /**
6
+ * Start an LXC container
7
+ * Requires elevated permissions
8
+ */
9
+ export async function startLxc(client, config, input) {
10
+ try {
11
+ // Check elevated permissions
12
+ requireElevated(config, 'start LXC container');
13
+ // Validate input
14
+ const validated = startLxcSchema.parse(input);
15
+ const safeNode = validateNodeName(validated.node);
16
+ const safeVmid = validateVMID(validated.vmid);
17
+ // Call Proxmox API
18
+ const result = await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/status/start`, 'POST');
19
+ // Format success response
20
+ const output = `▶️ **LXC Container Start Initiated**\n\n` +
21
+ `• **Container ID**: ${safeVmid}\n` +
22
+ `• **Node**: ${safeNode}\n` +
23
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
24
+ `The container is starting. Use \`get_vm_status\` to check progress.`;
25
+ return formatToolResponse(output);
26
+ }
27
+ catch (error) {
28
+ return formatErrorResponse(error, 'Start LXC Container');
29
+ }
30
+ }
31
+ /**
32
+ * Start a QEMU VM
33
+ * Requires elevated permissions
34
+ */
35
+ export async function startVM(client, config, input) {
36
+ try {
37
+ // Check elevated permissions
38
+ requireElevated(config, 'start VM');
39
+ // Validate input
40
+ const validated = startVmSchema.parse(input);
41
+ const safeNode = validateNodeName(validated.node);
42
+ const safeVmid = validateVMID(validated.vmid);
43
+ // Call Proxmox API
44
+ const result = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/status/start`, 'POST');
45
+ // Format success response
46
+ const output = `▶️ **VM Start Initiated**\n\n` +
47
+ `• **VM ID**: ${safeVmid}\n` +
48
+ `• **Node**: ${safeNode}\n` +
49
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
50
+ `The VM is starting. Use \`get_vm_status\` to check progress.`;
51
+ return formatToolResponse(output);
52
+ }
53
+ catch (error) {
54
+ return formatErrorResponse(error, 'Start VM');
55
+ }
56
+ }
57
+ /**
58
+ * Stop an LXC container (forceful)
59
+ * Requires elevated permissions
60
+ */
61
+ export async function stopLxc(client, config, input) {
62
+ try {
63
+ // Check elevated permissions
64
+ requireElevated(config, 'stop LXC container');
65
+ // Validate input
66
+ const validated = stopLxcSchema.parse(input);
67
+ const safeNode = validateNodeName(validated.node);
68
+ const safeVmid = validateVMID(validated.vmid);
69
+ // Call Proxmox API
70
+ const result = await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/status/stop`, 'POST');
71
+ // Format success response
72
+ const output = `⏹️ **LXC Container Stop Initiated**\n\n` +
73
+ `• **Container ID**: ${safeVmid}\n` +
74
+ `• **Node**: ${safeNode}\n` +
75
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
76
+ `The container is stopping. Use \`get_vm_status\` to confirm it's stopped.`;
77
+ return formatToolResponse(output);
78
+ }
79
+ catch (error) {
80
+ return formatErrorResponse(error, 'Stop LXC Container');
81
+ }
82
+ }
83
+ /**
84
+ * Stop a QEMU VM (forceful)
85
+ * Requires elevated permissions
86
+ */
87
+ export async function stopVM(client, config, input) {
88
+ try {
89
+ // Check elevated permissions
90
+ requireElevated(config, 'stop VM');
91
+ // Validate input
92
+ const validated = stopVmSchema.parse(input);
93
+ const safeNode = validateNodeName(validated.node);
94
+ const safeVmid = validateVMID(validated.vmid);
95
+ // Call Proxmox API
96
+ const result = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/status/stop`, 'POST');
97
+ // Format success response
98
+ const output = `⏹️ **VM Stop Initiated**\n\n` +
99
+ `• **VM ID**: ${safeVmid}\n` +
100
+ `• **Node**: ${safeNode}\n` +
101
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
102
+ `The VM is stopping. Use \`get_vm_status\` to confirm it's stopped.`;
103
+ return formatToolResponse(output);
104
+ }
105
+ catch (error) {
106
+ return formatErrorResponse(error, 'Stop VM');
107
+ }
108
+ }
109
+ /**
110
+ * Delete an LXC container
111
+ * Requires elevated permissions
112
+ */
113
+ export async function deleteLxc(client, config, input) {
114
+ try {
115
+ // Check elevated permissions
116
+ requireElevated(config, 'delete LXC container');
117
+ // Validate input
118
+ const validated = deleteLxcSchema.parse(input);
119
+ const safeNode = validateNodeName(validated.node);
120
+ const safeVmid = validateVMID(validated.vmid);
121
+ // Call Proxmox API
122
+ const result = await client.request(`/nodes/${safeNode}/lxc/${safeVmid}`, 'DELETE');
123
+ // Format success response
124
+ const output = `🗑️ **LXC Container Deletion Started**\n\n` +
125
+ `• **Container ID**: ${safeVmid}\n` +
126
+ `• **Node**: ${safeNode}\n` +
127
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
128
+ `Deletion may take a moment to complete.`;
129
+ return formatToolResponse(output);
130
+ }
131
+ catch (error) {
132
+ return formatErrorResponse(error, 'Delete LXC Container');
133
+ }
134
+ }
135
+ /**
136
+ * Delete a QEMU VM
137
+ * Requires elevated permissions
138
+ */
139
+ export async function deleteVM(client, config, input) {
140
+ try {
141
+ // Check elevated permissions
142
+ requireElevated(config, 'delete VM');
143
+ // Validate input
144
+ const validated = deleteVmSchema.parse(input);
145
+ const safeNode = validateNodeName(validated.node);
146
+ const safeVmid = validateVMID(validated.vmid);
147
+ // Call Proxmox API
148
+ const result = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}`, 'DELETE');
149
+ // Format success response
150
+ const output = `🗑️ **VM Deletion Started**\n\n` +
151
+ `• **VM ID**: ${safeVmid}\n` +
152
+ `• **Node**: ${safeNode}\n` +
153
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
154
+ `Deletion may take a moment to complete.`;
155
+ return formatToolResponse(output);
156
+ }
157
+ catch (error) {
158
+ return formatErrorResponse(error, 'Delete VM');
159
+ }
160
+ }
161
+ /**
162
+ * Reboot an LXC container
163
+ * Requires elevated permissions
164
+ */
165
+ export async function rebootLxc(client, config, input) {
166
+ try {
167
+ // Check elevated permissions
168
+ requireElevated(config, 'reboot LXC container');
169
+ // Validate input
170
+ const validated = rebootLxcSchema.parse(input);
171
+ const safeNode = validateNodeName(validated.node);
172
+ const safeVmid = validateVMID(validated.vmid);
173
+ // Call Proxmox API
174
+ const result = await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/status/reboot`, 'POST');
175
+ // Format success response
176
+ const output = `🔄 **LXC Container Reboot Command Sent**\n\n` +
177
+ `• **Container ID**: ${safeVmid}\n` +
178
+ `• **Node**: ${safeNode}\n` +
179
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
180
+ `The container will restart momentarily.`;
181
+ return formatToolResponse(output);
182
+ }
183
+ catch (error) {
184
+ return formatErrorResponse(error, 'Reboot LXC Container');
185
+ }
186
+ }
187
+ /**
188
+ * Reboot a QEMU VM
189
+ * Requires elevated permissions
190
+ */
191
+ export async function rebootVM(client, config, input) {
192
+ try {
193
+ // Check elevated permissions
194
+ requireElevated(config, 'reboot VM');
195
+ // Validate input
196
+ const validated = rebootVmSchema.parse(input);
197
+ const safeNode = validateNodeName(validated.node);
198
+ const safeVmid = validateVMID(validated.vmid);
199
+ // Call Proxmox API
200
+ const result = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/status/reboot`, 'POST');
201
+ // Format success response
202
+ const output = `🔄 **VM Reboot Command Sent**\n\n` +
203
+ `• **VM ID**: ${safeVmid}\n` +
204
+ `• **Node**: ${safeNode}\n` +
205
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
206
+ `The VM will restart momentarily.`;
207
+ return formatToolResponse(output);
208
+ }
209
+ catch (error) {
210
+ return formatErrorResponse(error, 'Reboot VM');
211
+ }
212
+ }
213
+ /**
214
+ * Gracefully shutdown an LXC container
215
+ * Requires elevated permissions
216
+ */
217
+ export async function shutdownLxc(client, config, input) {
218
+ try {
219
+ // Check elevated permissions
220
+ requireElevated(config, 'shutdown LXC container');
221
+ // Validate input
222
+ const validated = shutdownLxcSchema.parse(input);
223
+ const safeNode = validateNodeName(validated.node);
224
+ const safeVmid = validateVMID(validated.vmid);
225
+ // Call Proxmox API
226
+ const result = await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/status/shutdown`, 'POST');
227
+ // Format success response
228
+ const output = `⏸️ **LXC Container Shutdown Command Sent**\n\n` +
229
+ `• **Container ID**: ${safeVmid}\n` +
230
+ `• **Node**: ${safeNode}\n` +
231
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
232
+ `This is a graceful shutdown. Use \`stop_lxc\` for forceful stop.`;
233
+ return formatToolResponse(output);
234
+ }
235
+ catch (error) {
236
+ return formatErrorResponse(error, 'Shutdown LXC Container');
237
+ }
238
+ }
239
+ /**
240
+ * Gracefully shutdown a QEMU VM
241
+ * Requires elevated permissions
242
+ */
243
+ export async function shutdownVM(client, config, input) {
244
+ try {
245
+ // Check elevated permissions
246
+ requireElevated(config, 'shutdown VM');
247
+ // Validate input
248
+ const validated = shutdownVmSchema.parse(input);
249
+ const safeNode = validateNodeName(validated.node);
250
+ const safeVmid = validateVMID(validated.vmid);
251
+ // Call Proxmox API
252
+ const result = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/status/shutdown`, 'POST');
253
+ // Format success response
254
+ const output = `⏸️ **VM Shutdown Command Sent**\n\n` +
255
+ `• **VM ID**: ${safeVmid}\n` +
256
+ `• **Node**: ${safeNode}\n` +
257
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
258
+ `This is a graceful shutdown. Use \`stop_vm\` for forceful stop.`;
259
+ return formatToolResponse(output);
260
+ }
261
+ catch (error) {
262
+ return formatErrorResponse(error, 'Shutdown VM');
263
+ }
264
+ }
265
+ /**
266
+ * Pause a QEMU VM (suspend)
267
+ * Note: LXC containers do not support pause
268
+ * Requires elevated permissions
269
+ */
270
+ export async function pauseVM(client, config, input) {
271
+ try {
272
+ // Check elevated permissions
273
+ requireElevated(config, 'pause VM');
274
+ // Validate input
275
+ const validated = pauseVmSchema.parse(input);
276
+ const safeNode = validateNodeName(validated.node);
277
+ const safeVmid = validateVMID(validated.vmid);
278
+ // Call Proxmox API
279
+ const result = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/status/suspend`, 'POST');
280
+ // Format success response
281
+ const output = `⏸️ **VM Pause Command Sent**\n\n` +
282
+ `• **VM ID**: ${safeVmid}\n` +
283
+ `• **Node**: ${safeNode}\n` +
284
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
285
+ `VM is now paused. Use \`resume_vm\` to resume.`;
286
+ return formatToolResponse(output);
287
+ }
288
+ catch (error) {
289
+ return formatErrorResponse(error, 'Pause VM');
290
+ }
291
+ }
292
+ /**
293
+ * Resume a paused QEMU VM
294
+ * Note: LXC containers do not support resume
295
+ * Requires elevated permissions
296
+ */
297
+ export async function resumeVM(client, config, input) {
298
+ try {
299
+ // Check elevated permissions
300
+ requireElevated(config, 'resume VM');
301
+ // Validate input
302
+ const validated = resumeVmSchema.parse(input);
303
+ const safeNode = validateNodeName(validated.node);
304
+ const safeVmid = validateVMID(validated.vmid);
305
+ // Call Proxmox API
306
+ const result = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/status/resume`, 'POST');
307
+ // Format success response
308
+ const output = `▶️ **VM Resume Command Sent**\n\n` +
309
+ `• **VM ID**: ${safeVmid}\n` +
310
+ `• **Node**: ${safeNode}\n` +
311
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
312
+ `VM is now resuming from paused state.`;
313
+ return formatToolResponse(output);
314
+ }
315
+ catch (error) {
316
+ return formatErrorResponse(error, 'Resume VM');
317
+ }
318
+ }
319
+ //# sourceMappingURL=vm-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm-lifecycle.js","sourceRoot":"","sources":["../../src/tools/vm-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
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 { CloneLxcInput, CloneVmInput, ResizeLxcInput, ResizeVmInput } from '../schemas/vm.js';
5
+ /**
6
+ * Clone an LXC container
7
+ * Requires elevated permissions
8
+ */
9
+ export declare function cloneLxc(client: ProxmoxApiClient, config: Config, input: CloneLxcInput): Promise<ToolResponse>;
10
+ /**
11
+ * Clone a QEMU VM
12
+ * Requires elevated permissions
13
+ */
14
+ export declare function cloneVM(client: ProxmoxApiClient, config: Config, input: CloneVmInput): Promise<ToolResponse>;
15
+ /**
16
+ * Resize an LXC container (memory and/or CPU cores)
17
+ * Requires elevated permissions
18
+ */
19
+ export declare function resizeLxc(client: ProxmoxApiClient, config: Config, input: ResizeLxcInput): Promise<ToolResponse>;
20
+ /**
21
+ * Resize a QEMU VM (memory and/or CPU cores)
22
+ * Requires elevated permissions
23
+ */
24
+ export declare function resizeVM(client: ProxmoxApiClient, config: Config, input: ResizeVmInput): Promise<ToolResponse>;
25
+ //# sourceMappingURL=vm-modify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm-modify.d.ts","sourceRoot":"","sources":["../../src/tools/vm-modify.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,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,YAAY,CAAC,CAkCvB;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC,CAkCvB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,YAAY,CAAC,CAoDvB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,YAAY,CAAC,CAoDvB"}