@calltelemetry/ct-lab-mcp 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.
Files changed (63) hide show
  1. package/dist/src/appliance/commands.d.ts +4 -0
  2. package/dist/src/appliance/commands.d.ts.map +1 -1
  3. package/dist/src/appliance/commands.js +32 -0
  4. package/dist/src/appliance/commands.js.map +1 -1
  5. package/dist/src/appliance/mock.d.ts.map +1 -1
  6. package/dist/src/appliance/mock.js +42 -0
  7. package/dist/src/appliance/mock.js.map +1 -1
  8. package/dist/src/appliance/types.d.ts +8 -1
  9. package/dist/src/appliance/types.d.ts.map +1 -1
  10. package/dist/src/appliance/types.js.map +1 -1
  11. package/dist/src/server.d.ts +3 -1
  12. package/dist/src/server.d.ts.map +1 -1
  13. package/dist/src/server.js +14 -4
  14. package/dist/src/server.js.map +1 -1
  15. package/dist/src/slot/gc.d.ts +11 -2
  16. package/dist/src/slot/gc.d.ts.map +1 -1
  17. package/dist/src/slot/gc.js +20 -2
  18. package/dist/src/slot/gc.js.map +1 -1
  19. package/dist/src/slot/manager.d.ts +34 -3
  20. package/dist/src/slot/manager.d.ts.map +1 -1
  21. package/dist/src/slot/manager.js +572 -3
  22. package/dist/src/slot/manager.js.map +1 -1
  23. package/dist/src/slot/types.d.ts +96 -1
  24. package/dist/src/slot/types.d.ts.map +1 -1
  25. package/dist/src/slot/types.js.map +1 -1
  26. package/dist/src/telemetry/index.d.ts +3 -0
  27. package/dist/src/telemetry/index.d.ts.map +1 -0
  28. package/dist/src/telemetry/index.js +3 -0
  29. package/dist/src/telemetry/index.js.map +1 -0
  30. package/dist/src/telemetry/registry.d.ts +43 -0
  31. package/dist/src/telemetry/registry.d.ts.map +1 -0
  32. package/dist/src/telemetry/registry.js +146 -0
  33. package/dist/src/telemetry/registry.js.map +1 -0
  34. package/dist/src/telemetry/types.d.ts +37 -0
  35. package/dist/src/telemetry/types.d.ts.map +1 -0
  36. package/dist/src/telemetry/types.js +6 -0
  37. package/dist/src/telemetry/types.js.map +1 -0
  38. package/dist/src/tools/appliance-exec.js +1 -1
  39. package/dist/src/tools/appliance-exec.js.map +1 -1
  40. package/dist/src/tools/index.d.ts +3 -1
  41. package/dist/src/tools/index.d.ts.map +1 -1
  42. package/dist/src/tools/index.js +19 -8
  43. package/dist/src/tools/index.js.map +1 -1
  44. package/dist/src/tools/list-hosts.d.ts +2 -2
  45. package/dist/src/tools/list-inventory.d.ts +3 -3
  46. package/dist/src/tools/provision-tools.d.ts +122 -21
  47. package/dist/src/tools/provision-tools.d.ts.map +1 -1
  48. package/dist/src/tools/provision-tools.js +384 -1
  49. package/dist/src/tools/provision-tools.js.map +1 -1
  50. package/dist/src/tools/purge-slots.d.ts +52 -0
  51. package/dist/src/tools/purge-slots.d.ts.map +1 -0
  52. package/dist/src/tools/purge-slots.js +107 -0
  53. package/dist/src/tools/purge-slots.js.map +1 -0
  54. package/dist/src/tools/slot-tools.d.ts +92 -30
  55. package/dist/src/tools/slot-tools.d.ts.map +1 -1
  56. package/dist/src/tools/slot-tools.js +67 -5
  57. package/dist/src/tools/slot-tools.js.map +1 -1
  58. package/dist/src/tools/vm-action.d.ts +22 -22
  59. package/dist/src/utils/formatters.d.ts +38 -4
  60. package/dist/src/utils/formatters.d.ts.map +1 -1
  61. package/dist/src/utils/formatters.js +179 -23
  62. package/dist/src/utils/formatters.js.map +1 -1
  63. package/package.json +1 -1
@@ -6,9 +6,10 @@
6
6
  */
7
7
  import { z } from "zod";
8
8
  import { ProxmoxErrorCode, createToolErrorResult } from "../types/mcp.js";
9
- import { formatProvisionResult } from "../utils/formatters.js";
9
+ import { formatProvisionResult, formatAutoProvisionResult, } from "../utils/formatters.js";
10
10
  import { CapacityExceededError, GlobalCapacityExceededError, DatastoreCapacityExceededError, } from "../slot/types.js";
11
11
  import { ProtectedVmViolationError } from "../guardrails/types.js";
12
+ import { applianceSshExecutor } from "../appliance/executor.js";
12
13
  export const ProvisionVmInputShape = {
13
14
  sourceVmIdOrName: z
14
15
  .union([z.string(), z.number()])
@@ -286,4 +287,386 @@ export async function handleProvisionVm(rawArgs, context) {
286
287
  return createToolErrorResult(ProxmoxErrorCode.UPSTREAM_API_ERROR, msg);
287
288
  }
288
289
  }
290
+ // ============================================================================
291
+ // Auto Provision VM (Milestone M4)
292
+ // ============================================================================
293
+ export const AutoProvisionVmInputShape = {
294
+ template: z
295
+ .union([z.string(), z.number()])
296
+ .optional()
297
+ .describe("Source VM template name or numeric VMID to clone from (e.g. '9000', 'CT-ALMALINUX9-TEMPLATE', 'CT-087-STABLE-TEMPLATE')."),
298
+ sourceVmIdOrName: z
299
+ .union([z.string(), z.number()])
300
+ .optional()
301
+ .describe("Alias for template."),
302
+ name: z
303
+ .string()
304
+ .optional()
305
+ .describe("Target VM name (e.g. 'ct-appliance-uat-105'). Auto-generated if omitted."),
306
+ newVmName: z
307
+ .string()
308
+ .optional()
309
+ .describe("Alias for name."),
310
+ host: z
311
+ .string()
312
+ .optional()
313
+ .describe("Target hypervisor host ('auto', 'proxmox-lab', 'proxmox-mini', 'esxi-intel-192-168-123-176'). Defaults to 'auto' for least-loaded placement."),
314
+ targetHost: z
315
+ .string()
316
+ .optional()
317
+ .describe("Alias for host."),
318
+ hypervisorType: z
319
+ .enum(["proxmox", "esxi", "any"])
320
+ .optional()
321
+ .default("any")
322
+ .describe("Target hypervisor platform preference: 'proxmox', 'esxi', or 'any'."),
323
+ targetVersion: z
324
+ .string()
325
+ .optional()
326
+ .describe("Call Telemetry release version to deploy/pin (e.g. '0.8.7-stable', '0.8.8')."),
327
+ version: z
328
+ .string()
329
+ .optional()
330
+ .describe("Alias for targetVersion."),
331
+ workloadType: z
332
+ .enum(["uat", "perf", "soak", "dev", "regression", "reproduction", "demo"])
333
+ .optional()
334
+ .describe("Workload category for the test slot lease (e.g. 'uat', 'perf', 'dev')."),
335
+ label: z
336
+ .string()
337
+ .optional()
338
+ .describe("Human-readable label for the slot claim and VM."),
339
+ linearIssue: z
340
+ .string()
341
+ .optional()
342
+ .describe("Linear issue key tracking this test VM (e.g. 'CTUAT-693')."),
343
+ branch: z
344
+ .string()
345
+ .optional()
346
+ .describe("Git feature/fix branch name."),
347
+ tags: z
348
+ .union([z.array(z.string()), z.string()])
349
+ .optional()
350
+ .describe("Custom tags to attach to the VM and slot lease."),
351
+ requester: z
352
+ .string()
353
+ .optional()
354
+ .describe("Requester name or agent identifier."),
355
+ ttlMinutes: z
356
+ .number()
357
+ .int()
358
+ .min(1)
359
+ .max(1440)
360
+ .optional()
361
+ .default(60)
362
+ .describe("Slot lease TTL in minutes (default: 60)."),
363
+ durationMinutes: z
364
+ .number()
365
+ .int()
366
+ .min(1)
367
+ .max(1440)
368
+ .optional()
369
+ .describe("Alias for ttlMinutes."),
370
+ vlan: z
371
+ .number()
372
+ .int()
373
+ .min(1)
374
+ .max(4094)
375
+ .optional()
376
+ .describe("VLAN tag assignment (e.g. 124, 125)."),
377
+ ipAddress: z
378
+ .string()
379
+ .optional()
380
+ .describe("Static IP address assignment for the guest VM (e.g. '192.168.124.105')."),
381
+ networkBridge: z
382
+ .string()
383
+ .optional()
384
+ .describe("Network bridge interface (e.g. 'vmbr0', 'VM Network')."),
385
+ storage: z
386
+ .string()
387
+ .optional()
388
+ .describe("Target storage pool / datastore name."),
389
+ waitForReady: z
390
+ .boolean()
391
+ .optional()
392
+ .default(true)
393
+ .describe("Whether to poll SSH:2222 / API health until the VM is ready (default: true)."),
394
+ readyTimeoutSeconds: z
395
+ .number()
396
+ .int()
397
+ .min(5)
398
+ .max(600)
399
+ .optional()
400
+ .default(180)
401
+ .describe("Readiness polling timeout in seconds (default: 180)."),
402
+ };
403
+ export const AutoProvisionVmInputSchema = z.object(AutoProvisionVmInputShape);
404
+ export async function handleAutoProvisionVm(rawArgs, context) {
405
+ let claimedSlot;
406
+ let createdVmId;
407
+ let createdHost;
408
+ const startTime = Date.now();
409
+ try {
410
+ const parseResult = AutoProvisionVmInputSchema.safeParse(rawArgs);
411
+ if (!parseResult.success) {
412
+ const errMsg = parseResult.error.errors.map((e) => `${e.path.join(".")}: ${e.message}`).join("; ");
413
+ return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, errMsg);
414
+ }
415
+ const args = parseResult.data;
416
+ const rawHost = args.host || args.targetHost;
417
+ const targetHost = !rawHost || rawHost === "auto" ? undefined : rawHost;
418
+ const hypervisorType = args.hypervisorType || "any";
419
+ const targetVersion = args.targetVersion || args.version;
420
+ const workloadType = args.workloadType || "uat";
421
+ const linearIssue = args.linearIssue;
422
+ const label = args.label;
423
+ const branch = args.branch;
424
+ const durationMinutes = args.durationMinutes ?? args.ttlMinutes ?? 60;
425
+ const vmName = args.name ||
426
+ args.newVmName ||
427
+ `ct-appliance-${workloadType}-${Date.now().toString(36)}`;
428
+ const requester = args.requester || linearIssue || label || vmName;
429
+ const waitForReady = args.waitForReady !== false;
430
+ const readyTimeoutSeconds = args.readyTimeoutSeconds ?? 180;
431
+ let parsedTags = [];
432
+ if (args.tags) {
433
+ if (Array.isArray(args.tags)) {
434
+ parsedTags = args.tags;
435
+ }
436
+ else if (typeof args.tags === "string") {
437
+ parsedTags = args.tags.split(/[;, ]+/).map((t) => t.trim()).filter(Boolean);
438
+ }
439
+ }
440
+ // 1. Atomically Claim 8GB Slot Lease
441
+ claimedSlot = await context.slotManager.claimSlot({
442
+ tag: label || linearIssue || vmName,
443
+ requester,
444
+ linearIssue: linearIssue || (vmName.startsWith("CTUAT-") ? vmName : undefined),
445
+ label,
446
+ workloadType,
447
+ targetVersion,
448
+ branch,
449
+ customTags: parsedTags,
450
+ targetHost,
451
+ hypervisorType,
452
+ durationMinutes,
453
+ purpose: `Auto-provisioned ${workloadType} VM: ${vmName}`,
454
+ });
455
+ const hostId = claimedSlot.hostId;
456
+ createdHost = hostId;
457
+ const hypType = hostId.startsWith("esxi") ? "esxi" : "proxmox";
458
+ // 2. Resolve Base Template
459
+ let template = args.template ?? args.sourceVmIdOrName;
460
+ if (!template && context.hypervisorManager) {
461
+ try {
462
+ const vms = await context.hypervisorManager.listUnifiedInventory({
463
+ includeTemplates: true,
464
+ host: hostId,
465
+ });
466
+ const templateVm = vms.find((v) => v.isTemplate) ||
467
+ vms.find((v) => v.name.toLowerCase().includes("template") ||
468
+ v.name.toLowerCase().includes("tmpl") ||
469
+ (v.tags && v.tags.some((t) => t.toLowerCase().includes("template"))));
470
+ if (templateVm) {
471
+ template = templateVm.id || templateVm.name;
472
+ }
473
+ }
474
+ catch {
475
+ // fallback to default IDs
476
+ }
477
+ }
478
+ if (!template) {
479
+ if (hypType === "esxi") {
480
+ template = "CT-087-STABLE-TEMPLATE";
481
+ }
482
+ else if (hostId === "proxmox-mini") {
483
+ template = "200";
484
+ }
485
+ else {
486
+ template = "102";
487
+ }
488
+ }
489
+ // 3. Clone VM from Template
490
+ const cloneParams = {
491
+ sourceVmIdOrName: template,
492
+ newVmName: vmName,
493
+ targetHost: hostId,
494
+ hypervisorType: hypType,
495
+ fullClone: true,
496
+ description: `Auto-provisioned ${workloadType} VM (${linearIssue || label || "disposable"})`,
497
+ memoryBytes: 8192 * 1024 * 1024,
498
+ cpuCores: 2,
499
+ vlan: args.vlan,
500
+ ipAddress: args.ipAddress,
501
+ networkBridge: args.networkBridge,
502
+ storage: args.storage,
503
+ linearIssue,
504
+ startOnDeploy: true,
505
+ tags: ["disposable", workloadType, ...(targetVersion ? [targetVersion] : []), ...parsedTags],
506
+ requester,
507
+ slotClaimId: claimedSlot.claimId,
508
+ };
509
+ let provisionResult;
510
+ if (context.hypervisorManager) {
511
+ provisionResult = await context.hypervisorManager.provisionVm(cloneParams);
512
+ }
513
+ else if (context.proxmoxManager) {
514
+ const client = context.proxmoxManager.getClient(hostId);
515
+ const targetVmid = 500;
516
+ const sourceNum = typeof template === "number" ? template : parseInt(String(template), 10) || 9000;
517
+ const cloneTask = await client.cloneVm(sourceNum, targetVmid, vmName, { full: true });
518
+ await client.startVm(targetVmid).catch(() => { });
519
+ provisionResult = {
520
+ vmId: String(targetVmid),
521
+ name: vmName,
522
+ hostName: hostId,
523
+ hypervisor: "proxmox",
524
+ status: "running",
525
+ ipAddresses: args.ipAddress ? [args.ipAddress] : [],
526
+ vlan: args.vlan,
527
+ linearIssue,
528
+ slotClaimId: claimedSlot.claimId,
529
+ taskUpid: cloneTask.upid,
530
+ createdAt: new Date().toISOString(),
531
+ };
532
+ }
533
+ else {
534
+ throw new Error("No hypervisor manager available to provision VM.");
535
+ }
536
+ createdVmId = provisionResult.vmId;
537
+ // 4. Attach VM ID/Name to Slot Lease
538
+ await context.slotManager.attachVm(claimedSlot.claimId, provisionResult.vmId, provisionResult.name);
539
+ // 5. Determine Guest IP Address
540
+ const assignedIp = args.ipAddress ||
541
+ (provisionResult.ipAddresses && provisionResult.ipAddresses.length > 0
542
+ ? provisionResult.ipAddresses[0]
543
+ : `192.168.124.${100 + (Number(provisionResult.vmId) % 100 || 5)}`);
544
+ // 6. Polling Loop for SSH / Health Readiness
545
+ let healthStatus = "unverified";
546
+ let readyDurationMs = Date.now() - startTime;
547
+ if (waitForReady) {
548
+ const executor = context.applianceExecutor || applianceSshExecutor;
549
+ const pollStart = Date.now();
550
+ const timeoutMs = readyTimeoutSeconds * 1000;
551
+ let isReady = false;
552
+ while (Date.now() - pollStart < timeoutMs) {
553
+ try {
554
+ const connected = await executor.testConnection(assignedIp, 2222, 2000);
555
+ if (connected) {
556
+ isReady = true;
557
+ healthStatus = "healthy";
558
+ break;
559
+ }
560
+ }
561
+ catch {
562
+ // continue polling
563
+ }
564
+ const elapsed = Date.now() - pollStart;
565
+ if (elapsed + 1000 < timeoutMs) {
566
+ await new Promise((r) => setTimeout(r, Math.min(1000, timeoutMs - elapsed)));
567
+ }
568
+ else {
569
+ break;
570
+ }
571
+ }
572
+ readyDurationMs = Date.now() - startTime;
573
+ if (!isReady) {
574
+ throw new Error(`VM readiness timed out after ${readyTimeoutSeconds}s on ${assignedIp}:2222 (healthStatus unverified).`);
575
+ }
576
+ }
577
+ // 7. Deploy/Pin Target Release Version if Requested
578
+ let deployedVersion;
579
+ if (targetVersion) {
580
+ const executor = context.applianceExecutor || applianceSshExecutor;
581
+ const verRes = await executor.execute({
582
+ targetIp: assignedIp,
583
+ port: 2222,
584
+ commandType: "set_version",
585
+ args: { version: targetVersion },
586
+ timeoutMs: 60000,
587
+ });
588
+ if (verRes.exitCode !== 0) {
589
+ throw new Error(`Failed to deploy requested version '${targetVersion}' on ${assignedIp}: ${verRes.stderr || verRes.stdout}`);
590
+ }
591
+ deployedVersion = targetVersion;
592
+ }
593
+ // 8. Return Verified Endpoints & Summary
594
+ const autoResult = {
595
+ success: true,
596
+ slotId: claimedSlot.slotId,
597
+ claimId: claimedSlot.claimId,
598
+ vmId: provisionResult.vmId,
599
+ vmName: provisionResult.name,
600
+ host: claimedSlot.hostId,
601
+ hypervisorType: hypType,
602
+ ipAddress: assignedIp,
603
+ sshEndpoint: {
604
+ host: assignedIp,
605
+ port: 2222,
606
+ user: "admin",
607
+ },
608
+ apiEndpoint: `https://${assignedIp}:443`,
609
+ targetVersion,
610
+ deployedVersion,
611
+ workloadType,
612
+ label,
613
+ linearIssue,
614
+ branch,
615
+ tags: parsedTags,
616
+ expiresAt: claimedSlot.expiresAt,
617
+ readyDurationMs,
618
+ healthStatus,
619
+ };
620
+ const formatted = formatAutoProvisionResult(autoResult);
621
+ return {
622
+ content: [
623
+ {
624
+ type: "text",
625
+ text: formatted.markdown,
626
+ },
627
+ ],
628
+ structuredContent: formatted.structuredContent,
629
+ };
630
+ }
631
+ catch (error) {
632
+ // Atomic Rollback: Release claimed slot if lease was acquired
633
+ if (claimedSlot) {
634
+ try {
635
+ await context.slotManager.releaseSlot(claimedSlot.claimId);
636
+ }
637
+ catch {
638
+ // ignore lease rollback error
639
+ }
640
+ }
641
+ // Atomic Rollback: Destroy created VM on hypervisor if created before failure
642
+ if (createdVmId && createdHost && context.hypervisorManager) {
643
+ try {
644
+ await context.hypervisorManager.vmAction({
645
+ targetHost: createdHost,
646
+ vmIdOrName: String(createdVmId),
647
+ action: "destroy",
648
+ force: true,
649
+ });
650
+ }
651
+ catch {
652
+ // ignore VM teardown error
653
+ }
654
+ }
655
+ if (error instanceof ProtectedVmViolationError) {
656
+ return createToolErrorResult(ProxmoxErrorCode.PROTECTED_VM_ACTION_DENIED, error.message, {
657
+ vmid: error.vmid,
658
+ vmName: error.vmName,
659
+ action: error.action,
660
+ reason: error.reason,
661
+ });
662
+ }
663
+ if (error instanceof CapacityExceededError ||
664
+ error instanceof GlobalCapacityExceededError ||
665
+ error instanceof DatastoreCapacityExceededError) {
666
+ return createToolErrorResult(ProxmoxErrorCode.CAPACITY_EXCEEDED, error.message);
667
+ }
668
+ const msg = error instanceof Error ? error.message : String(error);
669
+ return createToolErrorResult(ProxmoxErrorCode.UPSTREAM_API_ERROR, msg);
670
+ }
671
+ }
289
672
  //# sourceMappingURL=provision-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provision-tools.js","sourceRoot":"","sources":["../../../src/tools/provision-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provision-tools.js","sourceRoot":"","sources":["../../../src/tools/provision-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * MCP Tool: purge_slots
3
+ *
4
+ * Automated and on-demand expired slot purge & reclamation engine.
5
+ * Sweeps expired leases, reclaims 8GB partition capacity, cleans up attached disposable VMs,
6
+ * and emits audit telemetry while strictly preserving protected infrastructure (CUCM, CUBE, templates).
7
+ */
8
+ import { z } from "zod";
9
+ import { CallToolResult } from "../types/mcp.js";
10
+ import { ToolContext } from "./list-hosts.js";
11
+ export declare const PurgeSlotsInputShape: {
12
+ host: z.ZodDefault<z.ZodOptional<z.ZodEnum<["proxmox-lab", "proxmox-mini", "proxmox-minis-lab", "esxi-intel-192-168-123-176", "all"]>>>;
13
+ hypervisorType: z.ZodDefault<z.ZodOptional<z.ZodEnum<["proxmox", "esxi", "all"]>>>;
14
+ olderThanMinutes: z.ZodOptional<z.ZodNumber>;
15
+ linearIssue: z.ZodOptional<z.ZodString>;
16
+ dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
17
+ destroyVms: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
18
+ force: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
19
+ includeOrphans: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
20
+ };
21
+ export declare const PurgeSlotsInputSchema: z.ZodObject<{
22
+ host: z.ZodDefault<z.ZodOptional<z.ZodEnum<["proxmox-lab", "proxmox-mini", "proxmox-minis-lab", "esxi-intel-192-168-123-176", "all"]>>>;
23
+ hypervisorType: z.ZodDefault<z.ZodOptional<z.ZodEnum<["proxmox", "esxi", "all"]>>>;
24
+ olderThanMinutes: z.ZodOptional<z.ZodNumber>;
25
+ linearIssue: z.ZodOptional<z.ZodString>;
26
+ dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
27
+ destroyVms: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
28
+ force: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
29
+ includeOrphans: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
30
+ }, "strip", z.ZodTypeAny, {
31
+ hypervisorType: "proxmox" | "esxi" | "all";
32
+ dryRun: boolean;
33
+ host: "proxmox-lab" | "proxmox-mini" | "proxmox-minis-lab" | "all" | "esxi-intel-192-168-123-176";
34
+ destroyVms: boolean;
35
+ force: boolean;
36
+ includeOrphans: boolean;
37
+ linearIssue?: string | undefined;
38
+ olderThanMinutes?: number | undefined;
39
+ }, {
40
+ hypervisorType?: "proxmox" | "esxi" | "all" | undefined;
41
+ dryRun?: boolean | undefined;
42
+ host?: "proxmox-lab" | "proxmox-mini" | "proxmox-minis-lab" | "all" | "esxi-intel-192-168-123-176" | undefined;
43
+ linearIssue?: string | undefined;
44
+ olderThanMinutes?: number | undefined;
45
+ destroyVms?: boolean | undefined;
46
+ force?: boolean | undefined;
47
+ includeOrphans?: boolean | undefined;
48
+ }>;
49
+ export type PurgeSlotsInput = z.infer<typeof PurgeSlotsInputSchema>;
50
+ export type PurgeSlotsRawInput = z.input<typeof PurgeSlotsInputSchema>;
51
+ export declare function handlePurgeSlots(rawArgs: PurgeSlotsRawInput | undefined, context: ToolContext): Promise<CallToolResult>;
52
+ //# sourceMappingURL=purge-slots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"purge-slots.d.ts","sourceRoot":"","sources":["../../../src/tools/purge-slots.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAA2C,MAAM,iBAAiB,CAAC;AAE1F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,eAAO,MAAM,oBAAoB;;;;;;;;;CAwChC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAiC,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEvE,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,kBAAkB,YAAK,EAChC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CAuDzB"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * MCP Tool: purge_slots
3
+ *
4
+ * Automated and on-demand expired slot purge & reclamation engine.
5
+ * Sweeps expired leases, reclaims 8GB partition capacity, cleans up attached disposable VMs,
6
+ * and emits audit telemetry while strictly preserving protected infrastructure (CUCM, CUBE, templates).
7
+ */
8
+ import { z } from "zod";
9
+ import { ProxmoxErrorCode, createToolErrorResult } from "../types/mcp.js";
10
+ import { formatPurgeResult } from "../utils/formatters.js";
11
+ export const PurgeSlotsInputShape = {
12
+ host: z
13
+ .enum(["proxmox-lab", "proxmox-mini", "proxmox-minis-lab", "esxi-intel-192-168-123-176", "all"])
14
+ .optional()
15
+ .default("all")
16
+ .describe("Target hypervisor host to purge ('proxmox-lab', 'proxmox-mini', 'esxi-intel-192-168-123-176', or 'all')."),
17
+ hypervisorType: z
18
+ .enum(["proxmox", "esxi", "all"])
19
+ .optional()
20
+ .default("all")
21
+ .describe("Filter purge by hypervisor platform: 'proxmox', 'esxi', or 'all'."),
22
+ olderThanMinutes: z
23
+ .number()
24
+ .min(0)
25
+ .optional()
26
+ .describe("Purge active slots whose age (time since claim) is >= threshold in minutes."),
27
+ linearIssue: z
28
+ .string()
29
+ .optional()
30
+ .describe("Purge active slots matching a specific Linear issue tracking key."),
31
+ dryRun: z
32
+ .boolean()
33
+ .optional()
34
+ .default(false)
35
+ .describe("If true, previews slots and attached VMs that would be purged without mutating state or deleting VMs."),
36
+ destroyVms: z
37
+ .boolean()
38
+ .optional()
39
+ .default(true)
40
+ .describe("If true, automatically powers off and deletes attached disposable test VMs on hypervisors."),
41
+ force: z
42
+ .boolean()
43
+ .optional()
44
+ .default(false)
45
+ .describe("Force purge matching active leases even if not strictly expired."),
46
+ includeOrphans: z
47
+ .boolean()
48
+ .optional()
49
+ .default(false)
50
+ .describe("Scan hypervisor inventory for untracked disposable VMs without active leases and reclaim them."),
51
+ };
52
+ export const PurgeSlotsInputSchema = z.object(PurgeSlotsInputShape);
53
+ export async function handlePurgeSlots(rawArgs = {}, context) {
54
+ try {
55
+ const args = PurgeSlotsInputSchema.parse(rawArgs);
56
+ let purgeResult;
57
+ if (context.slotManager.purgeSlots) {
58
+ purgeResult = await context.slotManager.purgeSlots({
59
+ host: args.host === "all" ? undefined : args.host,
60
+ hypervisorType: args.hypervisorType === "all" ? undefined : args.hypervisorType,
61
+ olderThanMinutes: args.olderThanMinutes,
62
+ linearIssue: args.linearIssue,
63
+ dryRun: args.dryRun,
64
+ destroyVms: args.destroyVms,
65
+ force: args.force,
66
+ includeOrphans: args.includeOrphans,
67
+ });
68
+ }
69
+ else {
70
+ const reclaimed = await context.slotManager.reclaimExpired();
71
+ purgeResult = {
72
+ purgedSlotsCount: reclaimed,
73
+ purgedSlots: [],
74
+ destroyedVmsCount: 0,
75
+ destroyedVms: [],
76
+ skippedProtectedVmsCount: 0,
77
+ reclaimedMemoryBytes: reclaimed * 8192 * 1024 * 1024,
78
+ reclaimedMemoryMb: reclaimed * 8192,
79
+ dryRun: false,
80
+ timestamp: new Date().toISOString(),
81
+ message: `Reclaimed ${reclaimed} expired slot(s).`
82
+ };
83
+ }
84
+ let capacity;
85
+ try {
86
+ capacity = (await context.slotManager.listHosts());
87
+ }
88
+ catch {
89
+ // best-effort capacity summary
90
+ }
91
+ const formatted = formatPurgeResult(purgeResult, capacity);
92
+ return {
93
+ content: [
94
+ {
95
+ type: "text",
96
+ text: formatted.markdown,
97
+ },
98
+ ],
99
+ structuredContent: formatted.structuredContent,
100
+ };
101
+ }
102
+ catch (error) {
103
+ const msg = error instanceof Error ? error.message : String(error);
104
+ return createToolErrorResult(ProxmoxErrorCode.UPSTREAM_API_ERROR, msg);
105
+ }
106
+ }
107
+ //# sourceMappingURL=purge-slots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"purge-slots.js","sourceRoot":"","sources":["../../../src/tools/purge-slots.ts"],"names":[],"mappings":"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"}