rackmind-cli 0.1.2 → 0.1.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/ai/tool-executor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOxD,UAAU,mBAAmB;IACzB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,8BAA8B;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,SAAS;IACf,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,SAAS,GACR,mBAAmB,GACnB,8BAA8B,GAC9B,SAAS,GACT,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAM5B,MAAM,WAAW,UAAU;IACvB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;CACjB;AAMD;;;GAGG;AACH,wBAAsB,WAAW,CAC7B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,CAAC,CA+DrB"}
1
+ {"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/ai/tool-executor.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQxD,UAAU,mBAAmB;IACzB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,8BAA8B;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,SAAS;IACf,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,SAAS,GACR,mBAAmB,GACnB,8BAA8B,GAC9B,SAAS,GACT,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAM5B,MAAM,WAAW,UAAU;IACvB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;CACjB;AAMD;;;GAGG;AACH,wBAAsB,WAAW,CAC7B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,CAAC,CAoErB"}
@@ -3,7 +3,9 @@
3
3
  // ---------------------------------------------------------------------------
4
4
  // Maps tool names from Claude's function calling to actual ServerClient
5
5
  // operations. Returns serialized results for the tool_result message.
6
+ // Lifecycle actions poll tasks to completion before reporting results.
6
7
  // ---------------------------------------------------------------------------
8
+ import { ProxmoxApiError } from '../server/proxmox.js';
7
9
  import { logger } from '../utils/logger.js';
8
10
  // ---------------------------------------------------------------------------
9
11
  // Executor
@@ -51,7 +53,11 @@ export async function executeTool(toolName, input, client) {
51
53
  }
52
54
  }
53
55
  catch (err) {
54
- const message = err instanceof Error ? err.message : String(err);
56
+ const message = err instanceof ProxmoxApiError
57
+ ? err.toUserMessage()
58
+ : err instanceof Error
59
+ ? err.message
60
+ : String(err);
55
61
  logger.error('Tool execution failed', { toolName, error: message });
56
62
  return {
57
63
  content: `Error: ${message}`,
@@ -118,67 +124,158 @@ async function getNodeStatus(client) {
118
124
  };
119
125
  }
120
126
  async function listContainers(client) {
121
- const containers = await client.listContainers();
127
+ // Use cluster-wide listing for multi-node awareness
128
+ const containers = await client.listAllContainers();
122
129
  return {
123
130
  content: JSON.stringify(containers, null, 2),
124
131
  isError: false,
125
- label: `list containers (${containers.length} found)`,
132
+ label: `list containers (${containers.length} found across all nodes)`,
126
133
  };
127
134
  }
128
135
  async function listVms(client) {
129
- const vms = await client.listVMs();
136
+ // Use cluster-wide listing for multi-node awareness
137
+ const vms = await client.listAllVMs();
130
138
  return {
131
139
  content: JSON.stringify(vms, null, 2),
132
140
  isError: false,
133
- label: `list VMs (${vms.length} found)`,
141
+ label: `list VMs (${vms.length} found across all nodes)`,
134
142
  };
135
143
  }
144
+ /**
145
+ * Helper: find which node a guest lives on via cluster resources,
146
+ * then perform a lifecycle action and poll the task to completion.
147
+ */
148
+ async function findGuestNode(vmid, guestType, client) {
149
+ try {
150
+ const resources = await client.listResources('vm');
151
+ const match = resources.find((r) => r.vmid === vmid && r.type === guestType);
152
+ if (match)
153
+ return match.node;
154
+ }
155
+ catch {
156
+ // Fallback to configured node
157
+ }
158
+ return await client.getNodeName();
159
+ }
136
160
  async function startContainer(input, client) {
137
- const taskId = await client.startContainer(input.vmid);
138
- return {
139
- content: `Container ${input.vmid} start initiated. Task ID: ${taskId}`,
140
- isError: false,
141
- label: `start container ${input.vmid}`,
142
- };
161
+ const node = await findGuestNode(input.vmid, 'lxc', client);
162
+ const upid = await client.startContainer(input.vmid, node);
163
+ // Poll until completion
164
+ try {
165
+ await client.waitForTask(upid, node);
166
+ return {
167
+ content: `Container ${input.vmid} started successfully on node ${node}.`,
168
+ isError: false,
169
+ label: `start container ${input.vmid}`,
170
+ };
171
+ }
172
+ catch (err) {
173
+ const msg = err instanceof Error ? err.message : String(err);
174
+ return {
175
+ content: `Container ${input.vmid} start task failed: ${msg}`,
176
+ isError: true,
177
+ label: `start container ${input.vmid} (failed)`,
178
+ };
179
+ }
143
180
  }
144
181
  async function stopContainer(input, client) {
145
- const taskId = await client.stopContainer(input.vmid);
146
- return {
147
- content: `Container ${input.vmid} stop initiated. Task ID: ${taskId}`,
148
- isError: false,
149
- label: `stop container ${input.vmid}`,
150
- };
182
+ const node = await findGuestNode(input.vmid, 'lxc', client);
183
+ const upid = await client.stopContainer(input.vmid, node);
184
+ try {
185
+ await client.waitForTask(upid, node);
186
+ return {
187
+ content: `Container ${input.vmid} stopped successfully on node ${node}.`,
188
+ isError: false,
189
+ label: `stop container ${input.vmid}`,
190
+ };
191
+ }
192
+ catch (err) {
193
+ const msg = err instanceof Error ? err.message : String(err);
194
+ return {
195
+ content: `Container ${input.vmid} stop task failed: ${msg}`,
196
+ isError: true,
197
+ label: `stop container ${input.vmid} (failed)`,
198
+ };
199
+ }
151
200
  }
152
201
  async function restartContainer(input, client) {
153
- const taskId = await client.restartContainer(input.vmid);
154
- return {
155
- content: `Container ${input.vmid} restart initiated. Task ID: ${taskId}`,
156
- isError: false,
157
- label: `restart container ${input.vmid}`,
158
- };
202
+ const node = await findGuestNode(input.vmid, 'lxc', client);
203
+ const upid = await client.restartContainer(input.vmid, node);
204
+ try {
205
+ await client.waitForTask(upid, node);
206
+ return {
207
+ content: `Container ${input.vmid} restarted successfully on node ${node}.`,
208
+ isError: false,
209
+ label: `restart container ${input.vmid}`,
210
+ };
211
+ }
212
+ catch (err) {
213
+ const msg = err instanceof Error ? err.message : String(err);
214
+ return {
215
+ content: `Container ${input.vmid} restart task failed: ${msg}`,
216
+ isError: true,
217
+ label: `restart container ${input.vmid} (failed)`,
218
+ };
219
+ }
159
220
  }
160
221
  async function startVm(input, client) {
161
- const taskId = await client.startVM(input.vmid);
162
- return {
163
- content: `VM ${input.vmid} start initiated. Task ID: ${taskId}`,
164
- isError: false,
165
- label: `start VM ${input.vmid}`,
166
- };
222
+ const node = await findGuestNode(input.vmid, 'qemu', client);
223
+ const upid = await client.startVM(input.vmid, node);
224
+ try {
225
+ await client.waitForTask(upid, node);
226
+ return {
227
+ content: `VM ${input.vmid} started successfully on node ${node}.`,
228
+ isError: false,
229
+ label: `start VM ${input.vmid}`,
230
+ };
231
+ }
232
+ catch (err) {
233
+ const msg = err instanceof Error ? err.message : String(err);
234
+ return {
235
+ content: `VM ${input.vmid} start task failed: ${msg}`,
236
+ isError: true,
237
+ label: `start VM ${input.vmid} (failed)`,
238
+ };
239
+ }
167
240
  }
168
241
  async function stopVm(input, client) {
169
- const taskId = await client.stopVM(input.vmid);
170
- return {
171
- content: `VM ${input.vmid} stop initiated. Task ID: ${taskId}`,
172
- isError: false,
173
- label: `stop VM ${input.vmid}`,
174
- };
242
+ const node = await findGuestNode(input.vmid, 'qemu', client);
243
+ const upid = await client.stopVM(input.vmid, node);
244
+ try {
245
+ await client.waitForTask(upid, node);
246
+ return {
247
+ content: `VM ${input.vmid} stopped successfully on node ${node}.`,
248
+ isError: false,
249
+ label: `stop VM ${input.vmid}`,
250
+ };
251
+ }
252
+ catch (err) {
253
+ const msg = err instanceof Error ? err.message : String(err);
254
+ return {
255
+ content: `VM ${input.vmid} stop task failed: ${msg}`,
256
+ isError: true,
257
+ label: `stop VM ${input.vmid} (failed)`,
258
+ };
259
+ }
175
260
  }
176
261
  async function restartVm(input, client) {
177
- const taskId = await client.restartVM(input.vmid);
178
- return {
179
- content: `VM ${input.vmid} restart initiated. Task ID: ${taskId}`,
180
- isError: false,
181
- label: `restart VM ${input.vmid}`,
182
- };
262
+ const node = await findGuestNode(input.vmid, 'qemu', client);
263
+ const upid = await client.restartVM(input.vmid, node);
264
+ try {
265
+ await client.waitForTask(upid, node);
266
+ return {
267
+ content: `VM ${input.vmid} restarted successfully on node ${node}.`,
268
+ isError: false,
269
+ label: `restart VM ${input.vmid}`,
270
+ };
271
+ }
272
+ catch (err) {
273
+ const msg = err instanceof Error ? err.message : String(err);
274
+ return {
275
+ content: `VM ${input.vmid} restart task failed: ${msg}`,
276
+ isError: true,
277
+ label: `restart VM ${input.vmid} (failed)`,
278
+ };
279
+ }
183
280
  }
184
281
  //# sourceMappingURL=tool-executor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../../src/ai/tool-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../../src/ai/tool-executor.ts"],"names":[],"mappings":"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"}
package/dist/ai/tools.js CHANGED
@@ -91,8 +91,8 @@ export function getToolDefinitions() {
91
91
  },
92
92
  {
93
93
  name: 'list_containers',
94
- description: 'Refresh the list of all LXC containers on the node. Returns VMID, name, ' +
95
- 'status, CPU count, memory, disk, and network stats for each container.',
94
+ description: 'List all LXC containers across ALL cluster nodes. Returns VMID, name, ' +
95
+ 'node, status, CPU count, memory, disk, and network stats for each container.',
96
96
  input_schema: {
97
97
  type: 'object',
98
98
  properties: {},
@@ -101,8 +101,8 @@ export function getToolDefinitions() {
101
101
  },
102
102
  {
103
103
  name: 'list_vms',
104
- description: 'Refresh the list of all QEMU virtual machines on the node. Returns VMID, ' +
105
- 'name, status, CPU count, memory, disk, and network stats for each VM.',
104
+ description: 'List all QEMU virtual machines across ALL cluster nodes. Returns VMID, ' +
105
+ 'name, node, status, CPU count, memory, disk, and network stats for each VM.',
106
106
  input_schema: {
107
107
  type: 'object',
108
108
  properties: {},
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/ai/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/ai/tools.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAI9E;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAC9B,OAAO;QACH;YACI,IAAI,EAAE,iBAAiB;YACvB,WAAW,EACP,uDAAuD;gBACvD,+DAA+D;gBAC/D,iEAAiE;gBACjE,2DAA2D;YAC/D,YAAY,EAAE;gBACV,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACR,OAAO,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,kDAAkD;qBAClE;iBACJ;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;aACxB;SACJ;QACD;YACI,IAAI,EAAE,8BAA8B;YACpC,WAAW,EACP,2DAA2D;gBAC3D,oEAAoE;gBACpE,uEAAuE;gBACvE,yDAAyD;YAC7D,YAAY,EAAE;gBACV,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACR,IAAI,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,+BAA+B;qBAC/C;oBACD,OAAO,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,mDAAmD;qBACnE;iBACJ;gBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;aAChC;SACJ;QACD;YACI,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EACP,yEAAyE;gBACzE,yEAAyE;gBACzE,uBAAuB;YAC3B,YAAY,EAAE;gBACV,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACR,IAAI,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,+BAA+B;qBAC/C;iBACJ;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACrB;SACJ;QACD;YACI,IAAI,EAAE,eAAe;YACrB,WAAW,EACP,wEAAwE;gBACxE,8CAA8C;YAClD,YAAY,EAAE;gBACV,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACR,IAAI,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,yBAAyB;qBACzC;iBACJ;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACrB;SACJ;QACD;YACI,IAAI,EAAE,iBAAiB;YACvB,WAAW,EACP,sEAAsE;gBACtE,4EAA4E;YAChF,YAAY,EAAE;gBACV,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,EAAE;aACf;SACJ;QACD;YACI,IAAI,EAAE,iBAAiB;YACvB,WAAW,EACP,wEAAwE;gBACxE,8EAA8E;YAClF,YAAY,EAAE;gBACV,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,EAAE;aACf;SACJ;QACD;YACI,IAAI,EAAE,UAAU;YAChB,WAAW,EACP,yEAAyE;gBACzE,6EAA6E;YACjF,YAAY,EAAE;gBACV,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,EAAE;aACf;SACJ;QACD;YACI,IAAI,EAAE,iBAAiB;YACvB,WAAW,EACP,gEAAgE;gBAChE,uCAAuC;YAC3C,YAAY,EAAE;gBACV,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACR,IAAI,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,wCAAwC;qBACxD;iBACJ;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACrB;SACJ;QACD;YACI,IAAI,EAAE,gBAAgB;YACtB,WAAW,EACP,uEAAuE;gBACvE,0EAA0E;YAC9E,YAAY,EAAE;gBACV,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACR,IAAI,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,uCAAuC;qBACvD;iBACJ;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACrB;SACJ;QACD;YACI,IAAI,EAAE,mBAAmB;YACzB,WAAW,EACP,wEAAwE;gBACxE,qDAAqD;YACzD,YAAY,EAAE;gBACV,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACR,IAAI,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,0CAA0C;qBAC1D;iBACJ;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACrB;SACJ;QACD;YACI,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,gEAAgE;YAC7E,YAAY,EAAE;gBACV,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACR,IAAI,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,kCAAkC;qBAClD;iBACJ;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACrB;SACJ;QACD;YACI,IAAI,EAAE,SAAS;YACf,WAAW,EACP,wDAAwD;gBACxD,qCAAqC;YACzC,YAAY,EAAE;gBACV,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACR,IAAI,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,iCAAiC;qBACjD;iBACJ;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACrB;SACJ;QACD;YACI,IAAI,EAAE,YAAY;YAClB,WAAW,EACP,2EAA2E;gBAC3E,uCAAuC;YAC3C,YAAY,EAAE;gBACV,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACR,IAAI,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,oCAAoC;qBACpD;iBACJ;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACrB;SACJ;KACJ,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AA0BA;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BjE"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AA8DA;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BjE"}
@@ -3,12 +3,43 @@
3
3
  // ---------------------------------------------------------------------------
4
4
  // If the alias already exists, switches to it. Otherwise, runs the
5
5
  // interactive setup wizard to create a new server profile.
6
+ // Validates credentials by testing the API connection before saving.
6
7
  // ---------------------------------------------------------------------------
7
8
  import chalk from 'chalk';
9
+ import ora from 'ora';
8
10
  import { getServerProfile, saveServerProfile, setActiveServer, encryptCredential, getDefaultServerProfile, } from '../config/index.js';
9
11
  import { promptText, promptNumber, promptSecret, promptSelect, promptConfirm, } from '../utils/prompt.js';
10
12
  import { formatError, formatSuccess, formatKeyValue } from '../utils/format.js';
11
13
  import { logger } from '../utils/logger.js';
14
+ import { ProxmoxClient, ProxmoxApiError } from '../server/proxmox.js';
15
+ // ---------------------------------------------------------------------------
16
+ // API token format patterns
17
+ // ---------------------------------------------------------------------------
18
+ /**
19
+ * Validates that an API token ID follows the Proxmox format: user@realm!tokenid
20
+ * Examples: root@pam!rackmind, admin@pve!monitoring, apiuser@pam!backup
21
+ */
22
+ function validateTokenId(tokenId) {
23
+ if (!tokenId) {
24
+ return { valid: false, error: 'API token ID is required' };
25
+ }
26
+ // Pattern: user@realm!tokenname
27
+ const tokenPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+![a-zA-Z0-9._-]+$/;
28
+ if (!tokenPattern.test(tokenId)) {
29
+ return {
30
+ valid: false,
31
+ error: `Invalid token format: "${tokenId}"\n` +
32
+ ' Expected format: user@realm!tokenid\n' +
33
+ ' Examples:\n' +
34
+ ' root@pam!rackmind\n' +
35
+ ' admin@pve!monitoring\n' +
36
+ ' apiuser@pam!backup\n' +
37
+ '\n' +
38
+ ' Create a token in Proxmox: Datacenter > Permissions > API Tokens > Add',
39
+ };
40
+ }
41
+ return { valid: true };
42
+ }
12
43
  /**
13
44
  * Main connect command handler.
14
45
  * If the alias exists in config, switches to it.
@@ -61,8 +92,28 @@ async function runSetupWizard(alias) {
61
92
  // -- Proxmox-specific fields ---------------------------------------------
62
93
  if (platform === 'proxmox') {
63
94
  profile.port = await promptNumber('Proxmox API port', 8006);
64
- profile.apiUser = await promptText('API user (e.g., root@pam)', 'root@pam');
65
- profile.apiTokenId = await promptText('API token ID (e.g., root@pam!rackmind)', '');
95
+ // API token ID with format validation
96
+ let tokenId;
97
+ while (true) {
98
+ tokenId = await promptText('API token ID (format: user@realm!tokenid, e.g., root@pam!rackmind)', '');
99
+ if (!tokenId) {
100
+ process.stderr.write(chalk.yellow('Warning: No API token ID provided. API commands will not work.\n'));
101
+ break;
102
+ }
103
+ const validation = validateTokenId(tokenId);
104
+ if (validation.valid) {
105
+ break;
106
+ }
107
+ process.stderr.write(chalk.red(validation.error ?? 'Invalid token format') + '\n\n');
108
+ }
109
+ profile.apiTokenId = tokenId;
110
+ // Extract user from token ID (user@realm from user@realm!tokenid)
111
+ if (tokenId.includes('!')) {
112
+ profile.apiUser = tokenId.split('!')[0] ?? '';
113
+ }
114
+ else {
115
+ profile.apiUser = await promptText('API user (e.g., root@pam)', 'root@pam');
116
+ }
66
117
  const tokenSecret = await promptSecret('API token secret');
67
118
  if (tokenSecret) {
68
119
  profile.encryptedTokenSecret = encryptCredential(tokenSecret);
@@ -70,6 +121,10 @@ async function runSetupWizard(alias) {
70
121
  profile.node =
71
122
  (await promptText('Node name (leave empty for auto-detect)', '')) || undefined;
72
123
  profile.allowSelfSigned = await promptConfirm('Allow self-signed TLS certificates?', true);
124
+ // -- Connection validation -----------------------------------------------
125
+ if (tokenId && tokenSecret) {
126
+ await validateConnection(profile, tokenSecret);
127
+ }
73
128
  }
74
129
  // -- SSH connection ------------------------------------------------------
75
130
  const configureSSH = platform !== 'proxmox' ? true : await promptConfirm('Configure SSH access?', true);
@@ -94,6 +149,67 @@ async function runSetupWizard(alias) {
94
149
  }
95
150
  return profile;
96
151
  }
152
+ /**
153
+ * Test the API connection before saving the profile.
154
+ * Shows clear pass/fail and actionable guidance on failure.
155
+ */
156
+ async function validateConnection(profile, tokenSecret) {
157
+ process.stderr.write('\n');
158
+ const spinner = ora('Testing Proxmox API connection...').start();
159
+ const client = new ProxmoxClient({
160
+ host: profile.host,
161
+ port: profile.port,
162
+ apiTokenId: profile.apiTokenId,
163
+ apiTokenSecret: tokenSecret,
164
+ allowSelfSigned: profile.allowSelfSigned,
165
+ });
166
+ try {
167
+ const version = await client.testConnection();
168
+ spinner.succeed(chalk.green(`Connected to Proxmox VE ${version.version} (release ${version.release})`));
169
+ // If node was specified, validate it exists
170
+ if (profile.node) {
171
+ try {
172
+ const nodes = await client.listNodes();
173
+ const nodeExists = nodes.some((n) => n.node === profile.node);
174
+ if (!nodeExists) {
175
+ const available = nodes.map((n) => n.node).join(', ');
176
+ process.stderr.write(chalk.yellow(` Warning: Node "${profile.node}" not found. Available: ${available}\n`));
177
+ }
178
+ }
179
+ catch {
180
+ // Non-critical — node list might require additional permissions
181
+ }
182
+ }
183
+ // Try to detect node name for auto-detect confirmation
184
+ if (!profile.node) {
185
+ try {
186
+ const nodeName = await client.detectNodeName();
187
+ process.stderr.write(chalk.dim(` Auto-detected node: ${nodeName}\n`));
188
+ }
189
+ catch {
190
+ // Non-critical
191
+ }
192
+ }
193
+ }
194
+ catch (err) {
195
+ spinner.fail(chalk.red('Connection test failed'));
196
+ if (err instanceof ProxmoxApiError) {
197
+ process.stderr.write('\n' + chalk.red(` ${err.message}\n`));
198
+ if (err.suggestion) {
199
+ process.stderr.write(chalk.yellow(` ${err.suggestion}\n`));
200
+ }
201
+ }
202
+ else {
203
+ const message = err instanceof Error ? err.message : String(err);
204
+ process.stderr.write('\n' + chalk.red(` ${message}\n`));
205
+ }
206
+ process.stderr.write('\n');
207
+ const saveAnyway = await promptConfirm('Save profile anyway? (You can fix credentials later)', true);
208
+ if (!saveAnyway) {
209
+ throw new Error('Connection validation failed — profile not saved', { cause: err });
210
+ }
211
+ }
212
+ }
97
213
  /**
98
214
  * Print a summary of the saved profile (masking sensitive values).
99
215
  */
@@ -113,5 +229,13 @@ function printProfileSummary(profile) {
113
229
  process.stderr.write(formatKeyValue(' SSH Auth', profile.sshAuthType) + '\n');
114
230
  }
115
231
  process.stderr.write(chalk.dim('----------------------\n'));
232
+ // Least-privilege documentation hint
233
+ if (profile.platform === 'proxmox' && profile.apiUser === 'root@pam') {
234
+ process.stderr.write('\n');
235
+ process.stderr.write(chalk.yellow(' Tip: For production use, create a least-privilege API token instead of root@pam.\n'));
236
+ process.stderr.write(chalk.dim(' Minimum permissions for read-only monitoring: PVEAuditor role on /\n' +
237
+ ' For lifecycle management (start/stop): PVEAdmin role on /vms\n' +
238
+ ' Create in: Datacenter > Permissions > API Tokens\n'));
239
+ }
116
240
  }
117
241
  //# sourceMappingURL=connect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,10 @@
1
+ export interface ContainersCommandOptions {
2
+ json: boolean;
3
+ node?: string;
4
+ }
1
5
  /**
2
- * List all LXC containers on the active server.
6
+ * List all LXC containers across all cluster nodes.
7
+ * Optionally filter by --node.
3
8
  */
4
- export declare function containersCommand(json: boolean): Promise<void>;
9
+ export declare function containersCommand(options: ContainersCommandOptions): Promise<void>;
5
10
  //# sourceMappingURL=containers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../src/commands/containers.ts"],"names":[],"mappings":"AAuDA;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DpE"}
1
+ {"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../src/commands/containers.ts"],"names":[],"mappings":"AA0DA,MAAM,WAAW,wBAAwB;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFxF"}
@@ -2,7 +2,8 @@
2
2
  // rackmind containers (alias: ct) — list all LXC containers
3
3
  // ---------------------------------------------------------------------------
4
4
  // Fetches containers from Proxmox API and displays them in a formatted table.
5
- // Supports --json for machine-readable output.
5
+ // Uses /cluster/resources to aggregate containers across ALL cluster nodes.
6
+ // Supports --json for machine-readable output and --node to filter by node.
6
7
  // ---------------------------------------------------------------------------
7
8
  import chalk from 'chalk';
8
9
  import { ServerClient } from '../server/client.js';
@@ -13,6 +14,7 @@ function toContainerRow(ct) {
13
14
  return {
14
15
  vmid: ct.vmid,
15
16
  name: ct.name,
17
+ node: ct.node,
16
18
  status: ct.status,
17
19
  cpus: ct.cpus,
18
20
  memUsed: ct.mem,
@@ -27,9 +29,10 @@ function toContainerRow(ct) {
27
29
  };
28
30
  }
29
31
  /**
30
- * List all LXC containers on the active server.
32
+ * List all LXC containers across all cluster nodes.
33
+ * Optionally filter by --node.
31
34
  */
32
- export async function containersCommand(json) {
35
+ export async function containersCommand(options) {
33
36
  let client = null;
34
37
  try {
35
38
  client = ServerClient.fromActiveProfile();
@@ -40,33 +43,49 @@ export async function containersCommand(json) {
40
43
  process.exit(1);
41
44
  }
42
45
  try {
43
- const node = await client.getNodeName();
44
- const containers = await client.listContainers(node);
46
+ // Use cluster-wide listing for multi-node support
47
+ let containers = await client.listAllContainers();
48
+ // Filter by node if specified
49
+ if (options.node) {
50
+ containers = containers.filter((ct) => ct.node === options.node);
51
+ }
45
52
  // Sort by VMID
46
53
  containers.sort((a, b) => a.vmid - b.vmid);
47
- if (json) {
54
+ if (options.json) {
48
55
  const rows = containers.map(toContainerRow);
49
56
  process.stdout.write(JSON.stringify(rows, null, 2) + '\n');
50
57
  return;
51
58
  }
52
59
  if (containers.length === 0) {
53
- process.stderr.write(chalk.dim('No LXC containers found.\n'));
60
+ const nodeLabel = options.node ? ` on node "${options.node}"` : '';
61
+ process.stderr.write(chalk.dim(`No LXC containers found${nodeLabel}.\n`));
54
62
  return;
55
63
  }
56
- process.stderr.write(chalk.cyan.bold(`\nLXC Containers`) + chalk.dim(` (${containers.length})\n\n`));
57
- const table = createTable(['VMID', 'Name', 'Status', 'CPUs', 'Memory', 'Disk', 'Uptime']);
64
+ // Detect if multi-node (show node column only when there are multiple nodes)
65
+ const nodeNames = new Set(containers.map((ct) => ct.node));
66
+ const isMultiNode = nodeNames.size > 1;
67
+ const headerLabel = options.node
68
+ ? `LXC Containers on ${options.node}`
69
+ : 'LXC Containers (all nodes)';
70
+ process.stderr.write(chalk.cyan.bold(`\n${headerLabel}`) + chalk.dim(` (${containers.length})\n\n`));
71
+ const headers = isMultiNode
72
+ ? ['VMID', 'Name', 'Node', 'Status', 'CPUs', 'Memory', 'Disk', 'Uptime']
73
+ : ['VMID', 'Name', 'Status', 'CPUs', 'Memory', 'Disk', 'Uptime'];
74
+ const table = createTable(headers);
58
75
  for (const ct of containers) {
59
76
  const memRatio = ct.maxmem > 0 ? ct.mem / ct.maxmem : 0;
60
77
  const diskRatio = ct.maxdisk > 0 ? ct.disk / ct.maxdisk : 0;
61
- table.push([
78
+ const row = [
62
79
  String(ct.vmid),
63
80
  truncate(ct.name || chalk.dim('(unnamed)'), 24),
81
+ ...(isMultiNode ? [chalk.dim(ct.node)] : []),
64
82
  colorStatus(ct.status),
65
83
  String(ct.cpus),
66
84
  `${formatBytes(ct.mem)} / ${formatBytes(ct.maxmem)} ${formatPercent(memRatio)}`,
67
85
  `${formatBytes(ct.disk)} / ${formatBytes(ct.maxdisk)} ${formatPercent(diskRatio)}`,
68
86
  formatUptime(ct.uptime),
69
- ]);
87
+ ];
88
+ table.push(row);
70
89
  }
71
90
  process.stderr.write(table.toString() + '\n\n');
72
91
  }