@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,155 @@
|
|
|
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 { cloneLxcSchema, cloneVmSchema, resizeLxcSchema, resizeVmSchema, } from '../schemas/vm.js';
|
|
5
|
+
/**
|
|
6
|
+
* Clone an LXC container
|
|
7
|
+
* Requires elevated permissions
|
|
8
|
+
*/
|
|
9
|
+
export async function cloneLxc(client, config, input) {
|
|
10
|
+
try {
|
|
11
|
+
// Check elevated permissions
|
|
12
|
+
requireElevated(config, 'clone LXC container');
|
|
13
|
+
// Validate input
|
|
14
|
+
const validated = cloneLxcSchema.parse(input);
|
|
15
|
+
const safeNode = validateNodeName(validated.node);
|
|
16
|
+
const safeVmid = validateVMID(validated.vmid);
|
|
17
|
+
const safeNewid = validateVMID(validated.newid);
|
|
18
|
+
// Call Proxmox API
|
|
19
|
+
const result = await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/clone`, 'POST', {
|
|
20
|
+
newid: safeNewid,
|
|
21
|
+
hostname: validated.hostname,
|
|
22
|
+
});
|
|
23
|
+
// Format success response
|
|
24
|
+
const output = `📋 **Container Clone Initiated**\n\n` +
|
|
25
|
+
`• **Original ID**: ${safeVmid}\n` +
|
|
26
|
+
`• **New ID**: ${safeNewid}\n` +
|
|
27
|
+
`• **Hostname**: ${validated.hostname || `clone-${safeNewid}`}\n` +
|
|
28
|
+
`• **Node**: ${safeNode}\n` +
|
|
29
|
+
`• **Task ID**: ${result || 'N/A'}\n\n` +
|
|
30
|
+
`Use \`get_vm_status\` to check the new container.`;
|
|
31
|
+
return formatToolResponse(output);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return formatErrorResponse(error, 'Clone LXC Container');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Clone a QEMU VM
|
|
39
|
+
* Requires elevated permissions
|
|
40
|
+
*/
|
|
41
|
+
export async function cloneVM(client, config, input) {
|
|
42
|
+
try {
|
|
43
|
+
// Check elevated permissions
|
|
44
|
+
requireElevated(config, 'clone QEMU VM');
|
|
45
|
+
// Validate input
|
|
46
|
+
const validated = cloneVmSchema.parse(input);
|
|
47
|
+
const safeNode = validateNodeName(validated.node);
|
|
48
|
+
const safeVmid = validateVMID(validated.vmid);
|
|
49
|
+
const safeNewid = validateVMID(validated.newid);
|
|
50
|
+
// Call Proxmox API
|
|
51
|
+
const result = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/clone`, 'POST', {
|
|
52
|
+
newid: safeNewid,
|
|
53
|
+
name: validated.name,
|
|
54
|
+
});
|
|
55
|
+
// Format success response
|
|
56
|
+
const output = `📋 **VM Clone Initiated**\n\n` +
|
|
57
|
+
`• **Original ID**: ${safeVmid}\n` +
|
|
58
|
+
`• **New ID**: ${safeNewid}\n` +
|
|
59
|
+
`• **Name**: ${validated.name || `clone-${safeNewid}`}\n` +
|
|
60
|
+
`• **Node**: ${safeNode}\n` +
|
|
61
|
+
`• **Task ID**: ${result || 'N/A'}\n\n` +
|
|
62
|
+
`Use \`get_vm_status\` to check the new VM.`;
|
|
63
|
+
return formatToolResponse(output);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
return formatErrorResponse(error, 'Clone QEMU VM');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Resize an LXC container (memory and/or CPU cores)
|
|
71
|
+
* Requires elevated permissions
|
|
72
|
+
*/
|
|
73
|
+
export async function resizeLxc(client, config, input) {
|
|
74
|
+
try {
|
|
75
|
+
// Check elevated permissions
|
|
76
|
+
requireElevated(config, 'resize LXC container');
|
|
77
|
+
// Validate input
|
|
78
|
+
const validated = resizeLxcSchema.parse(input);
|
|
79
|
+
const safeNode = validateNodeName(validated.node);
|
|
80
|
+
const safeVmid = validateVMID(validated.vmid);
|
|
81
|
+
// Build config object with provided values
|
|
82
|
+
const configUpdate = {};
|
|
83
|
+
if (validated.memory !== undefined) {
|
|
84
|
+
configUpdate.memory = validated.memory;
|
|
85
|
+
}
|
|
86
|
+
if (validated.cores !== undefined) {
|
|
87
|
+
configUpdate.cores = validated.cores;
|
|
88
|
+
}
|
|
89
|
+
// Ensure at least one parameter is provided
|
|
90
|
+
if (Object.keys(configUpdate).length === 0) {
|
|
91
|
+
return formatErrorResponse(new Error('At least one of memory or cores must be specified'), 'Resize LXC Container');
|
|
92
|
+
}
|
|
93
|
+
// Call Proxmox API
|
|
94
|
+
await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/config`, 'PUT', configUpdate);
|
|
95
|
+
// Format success response
|
|
96
|
+
let output = `📏 **Container Resize Initiated**\n\n` +
|
|
97
|
+
`• **Container ID**: ${safeVmid}\n` +
|
|
98
|
+
`• **Node**: ${safeNode}\n`;
|
|
99
|
+
if (validated.memory !== undefined) {
|
|
100
|
+
output += `• **New Memory**: ${validated.memory} MB\n`;
|
|
101
|
+
}
|
|
102
|
+
if (validated.cores !== undefined) {
|
|
103
|
+
output += `• **New Cores**: ${validated.cores}\n`;
|
|
104
|
+
}
|
|
105
|
+
output += `\n**Note**: Changes will take effect after container restart.`;
|
|
106
|
+
return formatToolResponse(output);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
return formatErrorResponse(error, 'Resize LXC Container');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Resize a QEMU VM (memory and/or CPU cores)
|
|
114
|
+
* Requires elevated permissions
|
|
115
|
+
*/
|
|
116
|
+
export async function resizeVM(client, config, input) {
|
|
117
|
+
try {
|
|
118
|
+
// Check elevated permissions
|
|
119
|
+
requireElevated(config, 'resize QEMU VM');
|
|
120
|
+
// Validate input
|
|
121
|
+
const validated = resizeVmSchema.parse(input);
|
|
122
|
+
const safeNode = validateNodeName(validated.node);
|
|
123
|
+
const safeVmid = validateVMID(validated.vmid);
|
|
124
|
+
// Build config object with provided values
|
|
125
|
+
const configUpdate = {};
|
|
126
|
+
if (validated.memory !== undefined) {
|
|
127
|
+
configUpdate.memory = validated.memory;
|
|
128
|
+
}
|
|
129
|
+
if (validated.cores !== undefined) {
|
|
130
|
+
configUpdate.cores = validated.cores;
|
|
131
|
+
}
|
|
132
|
+
// Ensure at least one parameter is provided
|
|
133
|
+
if (Object.keys(configUpdate).length === 0) {
|
|
134
|
+
return formatErrorResponse(new Error('At least one of memory or cores must be specified'), 'Resize QEMU VM');
|
|
135
|
+
}
|
|
136
|
+
// Call Proxmox API
|
|
137
|
+
await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/config`, 'PUT', configUpdate);
|
|
138
|
+
// Format success response
|
|
139
|
+
let output = `📏 **VM Resize Initiated**\n\n` +
|
|
140
|
+
`• **VM ID**: ${safeVmid}\n` +
|
|
141
|
+
`• **Node**: ${safeNode}\n`;
|
|
142
|
+
if (validated.memory !== undefined) {
|
|
143
|
+
output += `• **New Memory**: ${validated.memory} MB\n`;
|
|
144
|
+
}
|
|
145
|
+
if (validated.cores !== undefined) {
|
|
146
|
+
output += `• **New Cores**: ${validated.cores}\n`;
|
|
147
|
+
}
|
|
148
|
+
output += `\n**Note**: Changes will take effect after VM restart.`;
|
|
149
|
+
return formatToolResponse(output);
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
return formatErrorResponse(error, 'Resize QEMU VM');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=vm-modify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-modify.js","sourceRoot":"","sources":["../../src/tools/vm-modify.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,kBAAkB,CAAC;AAQ1B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAwB,EACxB,MAAc,EACd,KAAoB;IAEpB,IAAI,CAAC;QACH,6BAA6B;QAC7B,eAAe,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QAE/C,iBAAiB;QACjB,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEhD,mBAAmB;QACnB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CACjC,UAAU,QAAQ,QAAQ,QAAQ,QAAQ,EAC1C,MAAM,EACN;YACE,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,SAAS,CAAC,QAAQ;SAC7B,CACF,CAAC;QAEF,0BAA0B;QAC1B,MAAM,MAAM,GAAG,sCAAsC;YACnD,sBAAsB,QAAQ,IAAI;YAClC,iBAAiB,SAAS,IAAI;YAC9B,mBAAmB,SAAS,CAAC,QAAQ,IAAI,SAAS,SAAS,EAAE,IAAI;YACjE,eAAe,QAAQ,IAAI;YAC3B,kBAAkB,MAAM,IAAI,KAAK,MAAM;YACvC,mDAAmD,CAAC;QAEtD,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,mBAAmB,CAAC,KAAc,EAAE,qBAAqB,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAwB,EACxB,MAAc,EACd,KAAmB;IAEnB,IAAI,CAAC;QACH,6BAA6B;QAC7B,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAEzC,iBAAiB;QACjB,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEhD,mBAAmB;QACnB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CACjC,UAAU,QAAQ,SAAS,QAAQ,QAAQ,EAC3C,MAAM,EACN;YACE,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,SAAS,CAAC,IAAI;SACrB,CACF,CAAC;QAEF,0BAA0B;QAC1B,MAAM,MAAM,GAAG,+BAA+B;YAC5C,sBAAsB,QAAQ,IAAI;YAClC,iBAAiB,SAAS,IAAI;YAC9B,eAAe,SAAS,CAAC,IAAI,IAAI,SAAS,SAAS,EAAE,IAAI;YACzD,eAAe,QAAQ,IAAI;YAC3B,kBAAkB,MAAM,IAAI,KAAK,MAAM;YACvC,4CAA4C,CAAC;QAE/C,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,mBAAmB,CAAC,KAAc,EAAE,eAAe,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAwB,EACxB,MAAc,EACd,KAAqB;IAErB,IAAI,CAAC;QACH,6BAA6B;QAC7B,eAAe,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAEhD,iBAAiB;QACjB,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE9C,2CAA2C;QAC3C,MAAM,YAAY,GAA2B,EAAE,CAAC;QAChD,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACnC,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACzC,CAAC;QACD,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAClC,YAAY,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACvC,CAAC;QAED,4CAA4C;QAC5C,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,mBAAmB,CACxB,IAAI,KAAK,CAAC,mDAAmD,CAAC,EAC9D,sBAAsB,CACvB,CAAC;QACJ,CAAC;QAED,mBAAmB;QACnB,MAAM,MAAM,CAAC,OAAO,CAClB,UAAU,QAAQ,QAAQ,QAAQ,SAAS,EAC3C,KAAK,EACL,YAAY,CACb,CAAC;QAEF,0BAA0B;QAC1B,IAAI,MAAM,GAAG,uCAAuC;YAClD,uBAAuB,QAAQ,IAAI;YACnC,eAAe,QAAQ,IAAI,CAAC;QAE9B,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,qBAAqB,SAAS,CAAC,MAAM,OAAO,CAAC;QACzD,CAAC;QACD,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,oBAAoB,SAAS,CAAC,KAAK,IAAI,CAAC;QACpD,CAAC;QAED,MAAM,IAAI,+DAA+D,CAAC;QAE1E,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,mBAAmB,CAAC,KAAc,EAAE,sBAAsB,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAwB,EACxB,MAAc,EACd,KAAoB;IAEpB,IAAI,CAAC;QACH,6BAA6B;QAC7B,eAAe,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAE1C,iBAAiB;QACjB,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE9C,2CAA2C;QAC3C,MAAM,YAAY,GAA2B,EAAE,CAAC;QAChD,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACnC,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACzC,CAAC;QACD,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAClC,YAAY,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACvC,CAAC;QAED,4CAA4C;QAC5C,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,mBAAmB,CACxB,IAAI,KAAK,CAAC,mDAAmD,CAAC,EAC9D,gBAAgB,CACjB,CAAC;QACJ,CAAC;QAED,mBAAmB;QACnB,MAAM,MAAM,CAAC,OAAO,CAClB,UAAU,QAAQ,SAAS,QAAQ,SAAS,EAC5C,KAAK,EACL,YAAY,CACb,CAAC;QAEF,0BAA0B;QAC1B,IAAI,MAAM,GAAG,gCAAgC;YAC3C,gBAAgB,QAAQ,IAAI;YAC5B,eAAe,QAAQ,IAAI,CAAC;QAE9B,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,qBAAqB,SAAS,CAAC,MAAM,OAAO,CAAC;QACzD,CAAC;QACD,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,oBAAoB,SAAS,CAAC,KAAK,IAAI,CAAC;QACpD,CAAC;QAED,MAAM,IAAI,wDAAwD,CAAC;QAEnE,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,mBAAmB,CAAC,KAAc,EAAE,gBAAgB,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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 { GetVmsInput, GetVmStatusInput, GetStorageInput } from '../schemas/vm.js';
|
|
5
|
+
/**
|
|
6
|
+
* List all VMs/LXCs across cluster with status.
|
|
7
|
+
* No elevated permissions required.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getVMs(client: ProxmoxApiClient, _config: Config, input: GetVmsInput): Promise<ToolResponse>;
|
|
10
|
+
/**
|
|
11
|
+
* Get detailed status for a specific VM/LXC.
|
|
12
|
+
* No elevated permissions required.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getVMStatus(client: ProxmoxApiClient, _config: Config, input: GetVmStatusInput): Promise<ToolResponse>;
|
|
15
|
+
/**
|
|
16
|
+
* List all storage pools and their usage.
|
|
17
|
+
* No elevated permissions required.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getStorage(client: ProxmoxApiClient, _config: Config, input: GetStorageInput): Promise<ToolResponse>;
|
|
20
|
+
//# sourceMappingURL=vm-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-query.d.ts","sourceRoot":"","sources":["../../src/tools/vm-query.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;AAWtD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAOvF;;;GAGG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,YAAY,CAAC,CAsEvB;AAeD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,YAAY,CAAC,CAqCvB;AAMD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,YAAY,CAAC,CA+DvB"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { formatToolResponse, formatErrorResponse, formatBytes, formatUptime, formatCpuPercent, } from '../formatters/index.js';
|
|
2
|
+
import { validateNodeName, validateVMID } from '../validators/index.js';
|
|
3
|
+
import { getVmsSchema, getVmStatusSchema, getStorageSchema } from '../schemas/vm.js';
|
|
4
|
+
/**
|
|
5
|
+
* List all VMs/LXCs across cluster with status.
|
|
6
|
+
* No elevated permissions required.
|
|
7
|
+
*/
|
|
8
|
+
export async function getVMs(client, _config, input) {
|
|
9
|
+
try {
|
|
10
|
+
const validated = getVmsSchema.parse(input);
|
|
11
|
+
const nodeFilter = validated.node;
|
|
12
|
+
const typeFilter = validated.type || 'all';
|
|
13
|
+
let vms = [];
|
|
14
|
+
if (nodeFilter) {
|
|
15
|
+
// Single node logic
|
|
16
|
+
const safeNode = validateNodeName(nodeFilter);
|
|
17
|
+
if (typeFilter === 'all' || typeFilter === 'qemu') {
|
|
18
|
+
const nodeVMs = (await client.request(`/nodes/${safeNode}/qemu`));
|
|
19
|
+
vms.push(...nodeVMs.map((vm) => ({ ...vm, type: 'qemu', node: safeNode })));
|
|
20
|
+
}
|
|
21
|
+
if (typeFilter === 'all' || typeFilter === 'lxc') {
|
|
22
|
+
const nodeLXCs = (await client.request(`/nodes/${safeNode}/lxc`));
|
|
23
|
+
vms.push(...nodeLXCs.map((vm) => ({ ...vm, type: 'lxc', node: safeNode })));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
// All nodes logic
|
|
28
|
+
const nodes = (await client.request('/nodes'));
|
|
29
|
+
for (const node of nodes) {
|
|
30
|
+
if (typeFilter === 'all' || typeFilter === 'qemu') {
|
|
31
|
+
const nodeVMs = (await client.request(`/nodes/${node.node}/qemu`));
|
|
32
|
+
vms.push(...nodeVMs.map((vm) => ({ ...vm, type: 'qemu', node: node.node })));
|
|
33
|
+
}
|
|
34
|
+
if (typeFilter === 'all' || typeFilter === 'lxc') {
|
|
35
|
+
const nodeLXCs = (await client.request(`/nodes/${node.node}/lxc`));
|
|
36
|
+
vms.push(...nodeLXCs.map((vm) => ({ ...vm, type: 'lxc', node: node.node })));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Sort by vmid (ascending)
|
|
41
|
+
vms.sort((a, b) => parseInt(String(a.vmid)) - parseInt(String(b.vmid)));
|
|
42
|
+
// Format output
|
|
43
|
+
let output = '💻 **Virtual Machines**\n\n';
|
|
44
|
+
if (vms.length === 0) {
|
|
45
|
+
output += 'No virtual machines found.\n';
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
for (const vm of vms) {
|
|
49
|
+
const status = vm.status === 'running' ? '🟢' : vm.status === 'stopped' ? '🔴' : '🟡';
|
|
50
|
+
const typeIcon = vm.type === 'qemu' ? '🖥️' : '📦';
|
|
51
|
+
const uptime = vm.uptime ? formatUptime(vm.uptime) : 'N/A';
|
|
52
|
+
const cpuUsage = vm.mem && vm.maxmem ? formatCpuPercent(vm.mem / vm.maxmem) : 'N/A';
|
|
53
|
+
const memUsage = vm.mem && vm.maxmem ? `${formatBytes(vm.mem)} / ${formatBytes(vm.maxmem)}` : 'N/A';
|
|
54
|
+
output += `${status} ${typeIcon} **${vm.name || `VM-${vm.vmid}`}** (ID: ${vm.vmid})\n`;
|
|
55
|
+
output += ` • Node: ${vm.node}\n`;
|
|
56
|
+
output += ` • Status: ${vm.status}\n`;
|
|
57
|
+
output += ` • Type: ${vm.type.toUpperCase()}\n`;
|
|
58
|
+
if (vm.status === 'running') {
|
|
59
|
+
output += ` • Uptime: ${uptime}\n`;
|
|
60
|
+
output += ` • CPU: ${cpuUsage}\n`;
|
|
61
|
+
output += ` • Memory: ${memUsage}\n`;
|
|
62
|
+
}
|
|
63
|
+
output += '\n';
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return formatToolResponse(output);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
return formatErrorResponse(error, 'Get VMs');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get detailed status for a specific VM/LXC.
|
|
74
|
+
* No elevated permissions required.
|
|
75
|
+
*/
|
|
76
|
+
export async function getVMStatus(client, _config, input) {
|
|
77
|
+
try {
|
|
78
|
+
const validated = getVmStatusSchema.parse(input);
|
|
79
|
+
const safeNode = validateNodeName(validated.node);
|
|
80
|
+
const safeVMID = validateVMID(validated.vmid);
|
|
81
|
+
const type = validated.type || 'qemu';
|
|
82
|
+
const vmStatus = (await client.request(`/nodes/${safeNode}/${type}/${safeVMID}/status/current`));
|
|
83
|
+
const status = vmStatus.status === 'running' ? '🟢' : vmStatus.status === 'stopped' ? '🔴' : '🟡';
|
|
84
|
+
const typeIcon = type === 'qemu' ? '🖥️' : '📦';
|
|
85
|
+
let output = `${status} ${typeIcon} **${vmStatus.name || `VM-${safeVMID}`}** (ID: ${safeVMID})\n\n`;
|
|
86
|
+
output += `• **Node**: ${safeNode}\n`;
|
|
87
|
+
output += `• **Status**: ${vmStatus.status}\n`;
|
|
88
|
+
output += `• **Type**: ${type.toUpperCase()}\n`;
|
|
89
|
+
if (vmStatus.status === 'running') {
|
|
90
|
+
output += `• **Uptime**: ${vmStatus.uptime ? formatUptime(vmStatus.uptime) : 'N/A'}\n`;
|
|
91
|
+
output += `• **CPU Usage**: ${vmStatus.cpu ? formatCpuPercent(vmStatus.cpu) : 'N/A'}\n`;
|
|
92
|
+
output += `• **Memory**: ${vmStatus.mem && vmStatus.maxmem
|
|
93
|
+
? `${formatBytes(vmStatus.mem)} / ${formatBytes(vmStatus.maxmem)} (${((vmStatus.mem / vmStatus.maxmem) * 100).toFixed(1)}%)`
|
|
94
|
+
: 'N/A'}\n`;
|
|
95
|
+
output += `• **Disk Read**: ${vmStatus.diskread ? formatBytes(vmStatus.diskread) : 'N/A'}\n`;
|
|
96
|
+
output += `• **Disk Write**: ${vmStatus.diskwrite ? formatBytes(vmStatus.diskwrite) : 'N/A'}\n`;
|
|
97
|
+
output += `• **Network In**: ${vmStatus.netin ? formatBytes(vmStatus.netin) : 'N/A'}\n`;
|
|
98
|
+
output += `• **Network Out**: ${vmStatus.netout ? formatBytes(vmStatus.netout) : 'N/A'}\n`;
|
|
99
|
+
}
|
|
100
|
+
return formatToolResponse(output);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
return formatErrorResponse(error, 'Get VM Status');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* List all storage pools and their usage.
|
|
108
|
+
* No elevated permissions required.
|
|
109
|
+
*/
|
|
110
|
+
export async function getStorage(client, _config, input) {
|
|
111
|
+
try {
|
|
112
|
+
const validated = getStorageSchema.parse(input);
|
|
113
|
+
const nodeFilter = validated.node;
|
|
114
|
+
let storages = [];
|
|
115
|
+
if (nodeFilter) {
|
|
116
|
+
// Single node logic
|
|
117
|
+
const safeNode = validateNodeName(nodeFilter);
|
|
118
|
+
const nodeStorages = (await client.request(`/nodes/${safeNode}/storage`));
|
|
119
|
+
storages.push(...nodeStorages.map((storage) => ({ ...storage, node: safeNode })));
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
// All nodes logic
|
|
123
|
+
const nodes = (await client.request('/nodes'));
|
|
124
|
+
for (const node of nodes) {
|
|
125
|
+
const nodeStorages = (await client.request(`/nodes/${node.node}/storage`));
|
|
126
|
+
storages.push(...nodeStorages.map((storage) => ({ ...storage, node: node.node })));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Deduplicate by storage ID (keep first occurrence)
|
|
130
|
+
const uniqueStorages = [];
|
|
131
|
+
const seen = new Set();
|
|
132
|
+
for (const storage of storages) {
|
|
133
|
+
const key = storage.storage;
|
|
134
|
+
if (!seen.has(key)) {
|
|
135
|
+
seen.add(key);
|
|
136
|
+
uniqueStorages.push(storage);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Sort by storage name
|
|
140
|
+
uniqueStorages.sort((a, b) => a.storage.localeCompare(b.storage));
|
|
141
|
+
// Format output
|
|
142
|
+
let output = '💾 **Storage Pools**\n\n';
|
|
143
|
+
if (uniqueStorages.length === 0) {
|
|
144
|
+
output += 'No storage found.\n';
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
for (const storage of uniqueStorages) {
|
|
148
|
+
const status = storage.enabled ? '🟢' : '🔴';
|
|
149
|
+
const usagePercent = storage.total && storage.used ? ((storage.used / storage.total) * 100).toFixed(1) : 'N/A';
|
|
150
|
+
output += `${status} **${storage.storage}**\n`;
|
|
151
|
+
output += ` • Type: ${storage.type || 'N/A'}\n`;
|
|
152
|
+
output += ` • Node: ${storage.node}\n`;
|
|
153
|
+
output += ` • Content: ${storage.content || 'N/A'}\n`;
|
|
154
|
+
if (storage.total && storage.used) {
|
|
155
|
+
output += ` • Usage: ${formatBytes(storage.used)} / ${formatBytes(storage.total)} (${usagePercent}%)\n`;
|
|
156
|
+
}
|
|
157
|
+
output += ` • Status: ${storage.enabled ? 'Enabled' : 'Disabled'}\n\n`;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return formatToolResponse(output);
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
return formatErrorResponse(error, 'Get Storage');
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=vm-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-query.js","sourceRoot":"","sources":["../../src/tools/vm-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { Config } from '../config/schema.js';
|
|
2
|
+
export type { ProxmoxAPIResponse, ProxmoxNode, ProxmoxVM, ProxmoxStorage, ProxmoxSnapshot, ProxmoxBackup, ProxmoxClusterStatus, ProxmoxTask, ProxmoxTemplate, ProxmoxNetwork, ProxmoxPool, ProxmoxPoolMember, ProxmoxFirewallRule, ProxmoxCertificate, ProxmoxDNS, VMType, PermissionLevel, } from './proxmox.js';
|
|
3
|
+
export { TOOL_NAMES, createToolResponse, } from './tools.js';
|
|
4
|
+
export type { ToolName, ToolResponse, } from './tools.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,cAAc,EACd,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,MAAM,EACN,eAAe,GAChB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,UAAU,EACV,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,QAAQ,EACR,YAAY,GACb,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAsBA,OAAO,EACL,UAAU,EACV,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
export type VMType = 'qemu' | 'lxc';
|
|
2
|
+
export type PermissionLevel = 'basic' | 'elevated';
|
|
3
|
+
export interface ProxmoxNode {
|
|
4
|
+
node: string;
|
|
5
|
+
status: string;
|
|
6
|
+
uptime: number;
|
|
7
|
+
cpu: number;
|
|
8
|
+
maxcpu: number;
|
|
9
|
+
mem: number;
|
|
10
|
+
maxmem: number;
|
|
11
|
+
disk: number;
|
|
12
|
+
maxdisk: number;
|
|
13
|
+
level: string;
|
|
14
|
+
id: string;
|
|
15
|
+
type: string;
|
|
16
|
+
ssl_fingerprint?: string;
|
|
17
|
+
loadavg?: number[];
|
|
18
|
+
}
|
|
19
|
+
export interface ProxmoxVM {
|
|
20
|
+
vmid: number;
|
|
21
|
+
name: string;
|
|
22
|
+
status: string;
|
|
23
|
+
node?: string;
|
|
24
|
+
type?: VMType;
|
|
25
|
+
cpus: number;
|
|
26
|
+
maxmem: number;
|
|
27
|
+
maxdisk: number;
|
|
28
|
+
uptime: number;
|
|
29
|
+
pid?: number;
|
|
30
|
+
mem?: number;
|
|
31
|
+
disk?: number;
|
|
32
|
+
netin?: number;
|
|
33
|
+
netout?: number;
|
|
34
|
+
diskread?: number;
|
|
35
|
+
diskwrite?: number;
|
|
36
|
+
template?: number;
|
|
37
|
+
lock?: string;
|
|
38
|
+
tags?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ProxmoxStorage {
|
|
41
|
+
storage: string;
|
|
42
|
+
type: string;
|
|
43
|
+
content: string;
|
|
44
|
+
active: number;
|
|
45
|
+
enabled: number;
|
|
46
|
+
total: number;
|
|
47
|
+
used: number;
|
|
48
|
+
avail: number;
|
|
49
|
+
shared: number;
|
|
50
|
+
used_fraction?: number;
|
|
51
|
+
}
|
|
52
|
+
export interface ProxmoxSnapshot {
|
|
53
|
+
name: string;
|
|
54
|
+
description: string;
|
|
55
|
+
snaptime?: number;
|
|
56
|
+
vmstate?: number;
|
|
57
|
+
parent?: string;
|
|
58
|
+
}
|
|
59
|
+
export interface ProxmoxBackup {
|
|
60
|
+
volid: string;
|
|
61
|
+
format: string;
|
|
62
|
+
size: number;
|
|
63
|
+
ctime: number;
|
|
64
|
+
content?: string;
|
|
65
|
+
notes?: string;
|
|
66
|
+
subtype?: string;
|
|
67
|
+
vmid?: number;
|
|
68
|
+
}
|
|
69
|
+
export interface ProxmoxTemplate {
|
|
70
|
+
volid: string;
|
|
71
|
+
format: string;
|
|
72
|
+
size: number;
|
|
73
|
+
content?: string;
|
|
74
|
+
}
|
|
75
|
+
export interface ProxmoxTask {
|
|
76
|
+
upid: string;
|
|
77
|
+
node: string;
|
|
78
|
+
pid: number;
|
|
79
|
+
pstart: number;
|
|
80
|
+
starttime: number;
|
|
81
|
+
type: string;
|
|
82
|
+
id: string;
|
|
83
|
+
user: string;
|
|
84
|
+
status?: string;
|
|
85
|
+
exitstatus?: string;
|
|
86
|
+
endtime?: number;
|
|
87
|
+
}
|
|
88
|
+
export interface ProxmoxNetwork {
|
|
89
|
+
iface: string;
|
|
90
|
+
type: string;
|
|
91
|
+
active: number;
|
|
92
|
+
autostart?: number;
|
|
93
|
+
method?: string;
|
|
94
|
+
address?: string;
|
|
95
|
+
netmask?: string;
|
|
96
|
+
gateway?: string;
|
|
97
|
+
cidr?: string;
|
|
98
|
+
bridge_ports?: string;
|
|
99
|
+
bridge_stp?: string;
|
|
100
|
+
bridge_fd?: string;
|
|
101
|
+
families?: string[];
|
|
102
|
+
priority?: number;
|
|
103
|
+
}
|
|
104
|
+
export interface ProxmoxPool {
|
|
105
|
+
poolid: string;
|
|
106
|
+
comment?: string;
|
|
107
|
+
members?: ProxmoxPoolMember[];
|
|
108
|
+
}
|
|
109
|
+
export interface ProxmoxPoolMember {
|
|
110
|
+
id: string;
|
|
111
|
+
node: string;
|
|
112
|
+
type: string;
|
|
113
|
+
vmid?: number;
|
|
114
|
+
storage?: string;
|
|
115
|
+
status?: string;
|
|
116
|
+
}
|
|
117
|
+
export interface ProxmoxClusterStatus {
|
|
118
|
+
id: string;
|
|
119
|
+
name: string;
|
|
120
|
+
type: string;
|
|
121
|
+
nodeid?: number;
|
|
122
|
+
ip?: string;
|
|
123
|
+
level?: string;
|
|
124
|
+
local?: number;
|
|
125
|
+
online?: number;
|
|
126
|
+
quorate?: number;
|
|
127
|
+
version?: number;
|
|
128
|
+
nodes?: number;
|
|
129
|
+
}
|
|
130
|
+
export interface ProxmoxFirewallRule {
|
|
131
|
+
pos: number;
|
|
132
|
+
type: string;
|
|
133
|
+
action: string;
|
|
134
|
+
enable?: number;
|
|
135
|
+
comment?: string;
|
|
136
|
+
source?: string;
|
|
137
|
+
dest?: string;
|
|
138
|
+
sport?: string;
|
|
139
|
+
dport?: string;
|
|
140
|
+
proto?: string;
|
|
141
|
+
macro?: string;
|
|
142
|
+
iface?: string;
|
|
143
|
+
log?: string;
|
|
144
|
+
}
|
|
145
|
+
export interface ProxmoxCertificate {
|
|
146
|
+
filename: string;
|
|
147
|
+
fingerprint: string;
|
|
148
|
+
issuer: string;
|
|
149
|
+
subject: string;
|
|
150
|
+
notbefore: number;
|
|
151
|
+
notafter: number;
|
|
152
|
+
san?: string[];
|
|
153
|
+
pem?: string;
|
|
154
|
+
'public-key-bits'?: number;
|
|
155
|
+
'public-key-type'?: string;
|
|
156
|
+
}
|
|
157
|
+
export interface ProxmoxDNS {
|
|
158
|
+
search: string;
|
|
159
|
+
dns1?: string;
|
|
160
|
+
dns2?: string;
|
|
161
|
+
dns3?: string;
|
|
162
|
+
}
|
|
163
|
+
export interface ProxmoxAPIResponse<T> {
|
|
164
|
+
data: T;
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=proxmox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxmox.d.ts","sourceRoot":"","sources":["../../src/types/proxmox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxmox.js","sourceRoot":"","sources":["../../src/types/proxmox.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const TOOL_NAMES: readonly ["proxmox_get_nodes", "proxmox_get_node_status", "proxmox_get_vms", "proxmox_get_vm_status", "proxmox_execute_vm_command", "proxmox_get_storage", "proxmox_get_cluster_status", "proxmox_list_templates", "proxmox_create_lxc", "proxmox_create_vm", "proxmox_get_next_vmid", "proxmox_start_lxc", "proxmox_start_vm", "proxmox_stop_lxc", "proxmox_stop_vm", "proxmox_delete_lxc", "proxmox_delete_vm", "proxmox_reboot_lxc", "proxmox_reboot_vm", "proxmox_shutdown_lxc", "proxmox_shutdown_vm", "proxmox_pause_vm", "proxmox_resume_vm", "proxmox_clone_lxc", "proxmox_clone_vm", "proxmox_resize_lxc", "proxmox_resize_vm", "proxmox_create_snapshot_lxc", "proxmox_create_snapshot_vm", "proxmox_list_snapshots_lxc", "proxmox_list_snapshots_vm", "proxmox_rollback_snapshot_lxc", "proxmox_rollback_snapshot_vm", "proxmox_delete_snapshot_lxc", "proxmox_delete_snapshot_vm", "proxmox_create_backup_lxc", "proxmox_create_backup_vm", "proxmox_list_backups", "proxmox_restore_backup_lxc", "proxmox_restore_backup_vm", "proxmox_delete_backup", "proxmox_add_disk_vm", "proxmox_add_mountpoint_lxc", "proxmox_resize_disk_vm", "proxmox_resize_disk_lxc", "proxmox_remove_disk_vm", "proxmox_remove_mountpoint_lxc", "proxmox_move_disk_vm", "proxmox_move_disk_lxc", "proxmox_add_network_vm", "proxmox_add_network_lxc", "proxmox_update_network_vm", "proxmox_update_network_lxc", "proxmox_remove_network_vm", "proxmox_remove_network_lxc"];
|
|
2
|
+
export type ToolName = (typeof TOOL_NAMES)[number];
|
|
3
|
+
export type PermissionLevel = 'basic' | 'elevated';
|
|
4
|
+
export interface ToolResponse {
|
|
5
|
+
content: Array<{
|
|
6
|
+
type: 'text';
|
|
7
|
+
text: string;
|
|
8
|
+
}>;
|
|
9
|
+
isError?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function createToolResponse(text: string, isError?: boolean): ToolResponse;
|
|
12
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/types/tools.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,s4CAwDb,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,UAAU,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,YAAY,CAK9E"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export const TOOL_NAMES = [
|
|
2
|
+
'proxmox_get_nodes',
|
|
3
|
+
'proxmox_get_node_status',
|
|
4
|
+
'proxmox_get_vms',
|
|
5
|
+
'proxmox_get_vm_status',
|
|
6
|
+
'proxmox_execute_vm_command',
|
|
7
|
+
'proxmox_get_storage',
|
|
8
|
+
'proxmox_get_cluster_status',
|
|
9
|
+
'proxmox_list_templates',
|
|
10
|
+
'proxmox_create_lxc',
|
|
11
|
+
'proxmox_create_vm',
|
|
12
|
+
'proxmox_get_next_vmid',
|
|
13
|
+
'proxmox_start_lxc',
|
|
14
|
+
'proxmox_start_vm',
|
|
15
|
+
'proxmox_stop_lxc',
|
|
16
|
+
'proxmox_stop_vm',
|
|
17
|
+
'proxmox_delete_lxc',
|
|
18
|
+
'proxmox_delete_vm',
|
|
19
|
+
'proxmox_reboot_lxc',
|
|
20
|
+
'proxmox_reboot_vm',
|
|
21
|
+
'proxmox_shutdown_lxc',
|
|
22
|
+
'proxmox_shutdown_vm',
|
|
23
|
+
'proxmox_pause_vm',
|
|
24
|
+
'proxmox_resume_vm',
|
|
25
|
+
'proxmox_clone_lxc',
|
|
26
|
+
'proxmox_clone_vm',
|
|
27
|
+
'proxmox_resize_lxc',
|
|
28
|
+
'proxmox_resize_vm',
|
|
29
|
+
'proxmox_create_snapshot_lxc',
|
|
30
|
+
'proxmox_create_snapshot_vm',
|
|
31
|
+
'proxmox_list_snapshots_lxc',
|
|
32
|
+
'proxmox_list_snapshots_vm',
|
|
33
|
+
'proxmox_rollback_snapshot_lxc',
|
|
34
|
+
'proxmox_rollback_snapshot_vm',
|
|
35
|
+
'proxmox_delete_snapshot_lxc',
|
|
36
|
+
'proxmox_delete_snapshot_vm',
|
|
37
|
+
'proxmox_create_backup_lxc',
|
|
38
|
+
'proxmox_create_backup_vm',
|
|
39
|
+
'proxmox_list_backups',
|
|
40
|
+
'proxmox_restore_backup_lxc',
|
|
41
|
+
'proxmox_restore_backup_vm',
|
|
42
|
+
'proxmox_delete_backup',
|
|
43
|
+
'proxmox_add_disk_vm',
|
|
44
|
+
'proxmox_add_mountpoint_lxc',
|
|
45
|
+
'proxmox_resize_disk_vm',
|
|
46
|
+
'proxmox_resize_disk_lxc',
|
|
47
|
+
'proxmox_remove_disk_vm',
|
|
48
|
+
'proxmox_remove_mountpoint_lxc',
|
|
49
|
+
'proxmox_move_disk_vm',
|
|
50
|
+
'proxmox_move_disk_lxc',
|
|
51
|
+
'proxmox_add_network_vm',
|
|
52
|
+
'proxmox_add_network_lxc',
|
|
53
|
+
'proxmox_update_network_vm',
|
|
54
|
+
'proxmox_update_network_lxc',
|
|
55
|
+
'proxmox_remove_network_vm',
|
|
56
|
+
'proxmox_remove_network_lxc',
|
|
57
|
+
];
|
|
58
|
+
export function createToolResponse(text, isError = false) {
|
|
59
|
+
return {
|
|
60
|
+
content: [{ type: 'text', text }],
|
|
61
|
+
isError,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=tools.js.map
|