@calltelemetry/ct-lab-mcp 0.8.130 → 0.8.132

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.
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Automatic node placement for ApplianceClaims (UAT-1663). TypeScript port of the appliance operator's
3
+ * src/placement.mjs (ct-appliance-operator PR #65): identical eligibility gates, weights, tie-break and audit
4
+ * shape, verified against the shared vectors in test/fixtures/placement-vectors.v1.json.
5
+ *
6
+ * ELIGIBILITY (a node failing any gate is never ranked; its reason is recorded)
7
+ * - the Proxmox API for the node is configured and answers
8
+ * - the clone source exists on the node and is a template (only when a template VMID is known)
9
+ * - the requested VMID is not already held by a guest on the node (only when a VMID is named)
10
+ * - capacity admission: free RAM minus pending claims >= request + reserve, host CPU load below the cap, and
11
+ * every thin pool keeps its reserve (the larger of GiB and percent)
12
+ *
13
+ * RANKING, score = 100 * (0.60 memory + 0.25 guests + 0.15 storage); scores within 0.01 tie and break by fewer
14
+ * running guests, then more free storage bytes, then node name. No eligible node is a refusal, never an
15
+ * overcommit. Pure decision functions first; the reader takes the existing Proxmox clients.
16
+ */
17
+ import type { IProxmoxClient } from "../types/proxmox.js";
18
+ import { type ProxmoxClaimNode } from "./proxmox-host-policy.js";
19
+ export declare const PLACEMENT_SCHEMA = "calltelemetry-placement/v1";
20
+ export declare const PLACEMENT_ANNOTATION = "calltelemetry.com/placement";
21
+ export declare const PLACEMENT_CONDITION = "NoEligibleNode";
22
+ export declare const AUTO_NODE = "auto";
23
+ export declare const PLACEMENT_WEIGHTS: Readonly<{
24
+ memory: 0.6;
25
+ guests: 0.25;
26
+ storage: 0.15;
27
+ }>;
28
+ export declare const SCORE_TIE_EPSILON = 0.01;
29
+ /** Default request when the tool does not know the real guest size: the only appliance shape (4 vCPU / 8 GiB). */
30
+ export declare const DEFAULT_PLACEMENT_REQUEST: PlacementRequest;
31
+ export interface PlacementRequest {
32
+ ramBytes: number;
33
+ vcpus: number;
34
+ diskBytesByStorage: Readonly<Record<string, number>>;
35
+ }
36
+ export interface CapacityPolicy {
37
+ ramReserveMiB: number;
38
+ cpuLoadMax: number;
39
+ diskReserveGiB: number;
40
+ diskReservePercent: number;
41
+ }
42
+ /** The operator's defaults (CAPACITY_DEFAULTS). */
43
+ export declare const DEFAULT_CAPACITY_POLICY: CapacityPolicy;
44
+ export interface NodeCapacity {
45
+ totalBytes: number;
46
+ freeBytes: number;
47
+ cpuLoad: number;
48
+ cpus: number;
49
+ }
50
+ export interface StorageCapacity {
51
+ availBytes: number;
52
+ totalBytes: number;
53
+ }
54
+ export interface PendingClaim {
55
+ name: string;
56
+ vmid: number;
57
+ }
58
+ export interface Admission {
59
+ admit: boolean;
60
+ code: string;
61
+ reason: string;
62
+ }
63
+ export interface NodeEvidence {
64
+ request: PlacementRequest;
65
+ nodeStatus: NodeCapacity;
66
+ storages: Record<string, StorageCapacity>;
67
+ runningGuests: number;
68
+ }
69
+ export interface Breakdown {
70
+ memory: number;
71
+ guests: number;
72
+ storage: number;
73
+ }
74
+ export interface PlacementCandidate {
75
+ node: string;
76
+ eligible: boolean;
77
+ code: string;
78
+ reason: string;
79
+ score: number | null;
80
+ breakdown: Breakdown | null;
81
+ runningGuests?: number;
82
+ pendingClaims?: number;
83
+ freeMiB?: number;
84
+ totalMiB?: number;
85
+ cpuLoad?: number;
86
+ storageAvailGiB?: Record<string, number>;
87
+ sortKey?: {
88
+ runningGuests: number;
89
+ storageBytes: number;
90
+ };
91
+ }
92
+ export type AuditCandidate = Omit<PlacementCandidate, "sortKey">;
93
+ export interface PlacementDecision {
94
+ admit: boolean;
95
+ node: string | null;
96
+ code: string;
97
+ reason: string;
98
+ mode?: string;
99
+ candidates: AuditCandidate[];
100
+ }
101
+ /** True when the caller did not pin a node: omitted, blank, or `auto`. */
102
+ export declare const isAutoNode: (node: unknown) => boolean;
103
+ /** The admission gate: same arithmetic as the operator's decideAdmission. Pure. */
104
+ export declare function decideAdmission(input: {
105
+ request: PlacementRequest;
106
+ node: NodeCapacity;
107
+ storages: Record<string, StorageCapacity>;
108
+ pending?: PendingClaim[];
109
+ policy?: CapacityPolicy;
110
+ }): Admission;
111
+ /** The score of one eligible node. Pure. */
112
+ export declare function scoreNode(input: {
113
+ request: PlacementRequest;
114
+ node: Pick<NodeCapacity, "totalBytes" | "freeBytes">;
115
+ storages: Record<string, StorageCapacity>;
116
+ pending?: PendingClaim[];
117
+ runningGuests?: number;
118
+ }): {
119
+ score: number;
120
+ breakdown: Breakdown;
121
+ };
122
+ /** Evaluates one node from its evidence: eligibility through the admission gate, then its score. */
123
+ export declare function evaluateNode(input: {
124
+ node: string;
125
+ evidence: NodeEvidence;
126
+ pending?: PendingClaim[];
127
+ policy?: CapacityPolicy;
128
+ }): PlacementCandidate;
129
+ /** An ineligible record for a node that could not be evaluated (cordoned, unreachable, no template). */
130
+ export declare const ineligible: (node: string, code: string, reason: string) => PlacementCandidate;
131
+ /** Orders eligible candidates best first: score, then (within the epsilon) fewer guests, more free storage, node name. */
132
+ export declare function rankCandidates(candidates: PlacementCandidate[]): PlacementCandidate[];
133
+ /** The placement decision. Pure. admit=false carries code NoEligibleNode and every node's reason. */
134
+ export declare function decidePlacement(input: {
135
+ candidates: PlacementCandidate[];
136
+ mode?: string;
137
+ }): PlacementDecision;
138
+ /** The `calltelemetry.com/placement` annotation value for an auto decision (audit shape shared with the operator). */
139
+ export declare function placementAnnotation(decision: Pick<PlacementDecision, "node" | "reason" | "candidates">, opts?: {
140
+ mode?: "auto" | "pinned";
141
+ request?: PlacementRequest | null;
142
+ now?: Date;
143
+ }): string;
144
+ /** A pinned node is an override: recorded with mode "pinned" and no scoring. */
145
+ export declare function pinnedPlacementAnnotation(node: string, now?: Date): string;
146
+ /** Claims whose capacity is promised but not yet visible in the host's numbers (derived from the claim list only). */
147
+ export declare function pendingClaims(input: {
148
+ claims?: any[];
149
+ node: string;
150
+ existingVmids?: Set<number>;
151
+ }): PendingClaim[];
152
+ export type PlacementClient = Pick<IProxmoxClient, "getNodeStatus" | "listVms" | "request"> & {
153
+ hostConfig: Pick<IProxmoxClient["hostConfig"], "nodeName">;
154
+ };
155
+ export interface PlacementFleet {
156
+ /** The Proxmox client for a claim node, or undefined when the node has no configured API endpoint. */
157
+ clientFor(node: ProxmoxClaimNode): PlacementClient | undefined;
158
+ }
159
+ /** Wraps a MultiHostProxmoxManager (or anything with getClient) as a placement fleet. */
160
+ export declare function fleetFromManager(manager: {
161
+ getClient(hostId: string): IProxmoxClient;
162
+ }): PlacementFleet;
163
+ /** Parses the PVE node status body; throws on anything missing or malformed (fail closed). */
164
+ export declare function parseNodeStatus(data: any): NodeCapacity;
165
+ /** Parses a PVE storage status body. */
166
+ export declare function parseStorageStatus(data: any, storage: string): StorageCapacity;
167
+ export interface ReadPlacementOptions {
168
+ request?: PlacementRequest;
169
+ policy?: CapacityPolicy;
170
+ /** Claims already listed from Kubernetes; pending ones reserve capacity. */
171
+ claims?: any[];
172
+ /** Clone source VMID; when known it must exist on the node as a template. */
173
+ templateVmid?: number;
174
+ /** VMID the new guest will take; a node that already holds it is ineligible. */
175
+ vmid?: number;
176
+ /** Nodes to consider (default: every claim node in the fleet). */
177
+ nodes?: ProxmoxClaimNode[];
178
+ }
179
+ /** Reads live evidence for every candidate node in parallel and builds the audit records. */
180
+ export declare function readPlacementCandidates(fleet: PlacementFleet, options?: ReadPlacementOptions): Promise<PlacementCandidate[]>;
181
+ /** Reads live evidence and decides. Never throws for missing evidence: it returns a non-admitting decision. */
182
+ export declare function placeOnFleet(fleet: PlacementFleet, options?: ReadPlacementOptions): Promise<PlacementDecision & {
183
+ request: PlacementRequest;
184
+ }>;
185
+ //# sourceMappingURL=placement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placement.d.ts","sourceRoot":"","sources":["../../../src/tools/placement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,279 @@
1
+ import { PROXMOX_HOST_CLAIM_NODES, CLAIM_NODE_TO_PROXMOX_HOST } from "./proxmox-host-policy.js";
2
+ export const PLACEMENT_SCHEMA = "calltelemetry-placement/v1";
3
+ export const PLACEMENT_ANNOTATION = "calltelemetry.com/placement";
4
+ export const PLACEMENT_CONDITION = "NoEligibleNode";
5
+ export const AUTO_NODE = "auto";
6
+ export const PLACEMENT_WEIGHTS = Object.freeze({ memory: 0.6, guests: 0.25, storage: 0.15 });
7
+ export const SCORE_TIE_EPSILON = 0.01;
8
+ const MIB = 1024 * 1024;
9
+ const GIB = 1024 * MIB;
10
+ /** Default request when the tool does not know the real guest size: the only appliance shape (4 vCPU / 8 GiB). */
11
+ export const DEFAULT_PLACEMENT_REQUEST = Object.freeze({
12
+ ramBytes: 8192 * MIB,
13
+ vcpus: 4,
14
+ diskBytesByStorage: Object.freeze({ "local-lvm": 100 * GIB }),
15
+ });
16
+ /** The operator's defaults (CAPACITY_DEFAULTS). */
17
+ export const DEFAULT_CAPACITY_POLICY = Object.freeze({
18
+ ramReserveMiB: 4096,
19
+ cpuLoadMax: 0.85,
20
+ diskReserveGiB: 20,
21
+ diskReservePercent: 10,
22
+ });
23
+ /** True when the caller did not pin a node: omitted, blank, or `auto`. */
24
+ export const isAutoNode = (node) => node === undefined || node === null || String(node).trim() === "" || String(node).trim().toLowerCase() === AUTO_NODE;
25
+ const clamp01 = (value) => (Number.isFinite(value) ? Math.min(1, Math.max(0, value)) : 0);
26
+ const round = (value, digits = 4) => Number(value.toFixed(digits));
27
+ /** The admission gate: same arithmetic as the operator's decideAdmission. Pure. */
28
+ export function decideAdmission(input) {
29
+ const { request, node, storages, pending = [], policy = DEFAULT_CAPACITY_POLICY } = input;
30
+ const reserveRam = policy.ramReserveMiB * MIB;
31
+ const pendingRam = pending.length * request.ramBytes;
32
+ const shortfalls = [];
33
+ const ramAvailable = node.freeBytes - pendingRam;
34
+ if (ramAvailable < request.ramBytes + reserveRam) {
35
+ shortfalls.push({
36
+ code: "InsufficientRam",
37
+ text: `RAM: ${Math.floor(ramAvailable / MIB)} MiB free after ${pending.length} pending claim(s), need ${Math.ceil((request.ramBytes + reserveRam) / MIB)} MiB (${Math.floor(request.ramBytes / MIB)} requested + ${policy.ramReserveMiB} reserve)`,
38
+ });
39
+ }
40
+ if (!(node.cpuLoad < policy.cpuLoadMax)) {
41
+ shortfalls.push({
42
+ code: "CpuHot",
43
+ text: `CPU: host load ${(node.cpuLoad * 100).toFixed(0)}% is not below ${(policy.cpuLoadMax * 100).toFixed(0)}%`,
44
+ });
45
+ }
46
+ for (const [storage, bytes] of Object.entries(request.diskBytesByStorage)) {
47
+ const status = storages[storage];
48
+ if (!status) {
49
+ shortfalls.push({ code: "InsufficientDisk", text: `disk ${storage}: no status was read` });
50
+ continue;
51
+ }
52
+ const avail = status.availBytes - pending.length * bytes;
53
+ const reserveDisk = Math.max(policy.diskReserveGiB * GIB, ((policy.diskReservePercent || 0) / 100) * (status.totalBytes || 0));
54
+ const reserveGiB = Math.ceil(reserveDisk / GIB);
55
+ if (avail < bytes + reserveDisk) {
56
+ shortfalls.push({
57
+ code: "InsufficientDisk",
58
+ text: `disk ${storage}: ${Math.floor(avail / GIB)} GiB free after ${pending.length} pending claim(s), need ${Math.ceil((bytes + reserveDisk) / GIB)} GiB (${Math.ceil(bytes / GIB)} thin + ${reserveGiB} reserve)`,
59
+ });
60
+ }
61
+ }
62
+ if (shortfalls.length === 0)
63
+ return { admit: true, code: "Admitted", reason: "host has headroom" };
64
+ return { admit: false, code: shortfalls[0].code, reason: shortfalls.map((item) => item.text).join("; ") };
65
+ }
66
+ /** The score of one eligible node. Pure. */
67
+ export function scoreNode(input) {
68
+ const { request, node, storages, pending = [], runningGuests = 0 } = input;
69
+ const memory = clamp01((node.freeBytes - pending.length * request.ramBytes - request.ramBytes) / node.totalBytes);
70
+ const guests = 1 / (1 + Math.max(0, runningGuests) + pending.length);
71
+ let storage = 1;
72
+ for (const [pool, bytes] of Object.entries(request.diskBytesByStorage)) {
73
+ const status = storages[pool];
74
+ const share = status && status.totalBytes > 0 ? clamp01((status.availBytes - pending.length * bytes - bytes) / status.totalBytes) : 0;
75
+ storage = Math.min(storage, share);
76
+ }
77
+ const score = 100 * (PLACEMENT_WEIGHTS.memory * memory + PLACEMENT_WEIGHTS.guests * guests + PLACEMENT_WEIGHTS.storage * storage);
78
+ return { score: round(score), breakdown: { memory: round(memory), guests: round(guests), storage: round(storage) } };
79
+ }
80
+ /** Evaluates one node from its evidence: eligibility through the admission gate, then its score. */
81
+ export function evaluateNode(input) {
82
+ const { node, evidence, pending = [], policy = DEFAULT_CAPACITY_POLICY } = input;
83
+ const { request, nodeStatus, storages, runningGuests } = evidence;
84
+ const decision = decideAdmission({ request, node: nodeStatus, storages, pending, policy });
85
+ const scored = scoreNode({ request, node: nodeStatus, storages, pending, runningGuests });
86
+ const poolBytes = Object.keys(request.diskBytesByStorage).map((pool) => storages[pool]?.availBytes ?? 0);
87
+ return {
88
+ node,
89
+ eligible: decision.admit,
90
+ code: decision.admit ? "Eligible" : decision.code,
91
+ reason: decision.admit ? "" : decision.reason,
92
+ runningGuests,
93
+ pendingClaims: pending.length,
94
+ freeMiB: Math.floor(nodeStatus.freeBytes / MIB),
95
+ totalMiB: Math.floor(nodeStatus.totalBytes / MIB),
96
+ cpuLoad: nodeStatus.cpuLoad,
97
+ storageAvailGiB: Object.fromEntries(Object.entries(storages).map(([pool, status]) => [pool, Math.floor(status.availBytes / GIB)])),
98
+ score: decision.admit ? scored.score : null,
99
+ breakdown: scored.breakdown,
100
+ sortKey: { runningGuests: runningGuests + pending.length, storageBytes: poolBytes.length ? Math.min(...poolBytes) : 0 },
101
+ };
102
+ }
103
+ /** An ineligible record for a node that could not be evaluated (cordoned, unreachable, no template). */
104
+ export const ineligible = (node, code, reason) => ({
105
+ node, eligible: false, code, reason, score: null, breakdown: null,
106
+ });
107
+ /** Orders eligible candidates best first: score, then (within the epsilon) fewer guests, more free storage, node name. */
108
+ export function rankCandidates(candidates) {
109
+ return candidates
110
+ .filter((candidate) => candidate.eligible)
111
+ .sort((a, b) => {
112
+ const as = a.score ?? 0;
113
+ const bs = b.score ?? 0;
114
+ if (Math.abs(bs - as) >= SCORE_TIE_EPSILON)
115
+ return bs - as;
116
+ const guests = (a.sortKey?.runningGuests ?? a.runningGuests ?? 0) - (b.sortKey?.runningGuests ?? b.runningGuests ?? 0);
117
+ if (guests !== 0)
118
+ return guests;
119
+ const storage = (b.sortKey?.storageBytes ?? 0) - (a.sortKey?.storageBytes ?? 0);
120
+ if (storage !== 0)
121
+ return storage;
122
+ return a.node < b.node ? -1 : a.node > b.node ? 1 : 0;
123
+ });
124
+ }
125
+ /** The placement decision. Pure. admit=false carries code NoEligibleNode and every node's reason. */
126
+ export function decidePlacement(input) {
127
+ const { candidates, mode = "auto" } = input;
128
+ const ranked = rankCandidates(candidates);
129
+ const audit = candidates.map(({ sortKey: _sortKey, ...rest }) => rest);
130
+ if (ranked.length === 0) {
131
+ const reasons = candidates.map((item) => `${item.node}: ${item.code}${item.reason ? ` (${item.reason})` : ""}`);
132
+ return {
133
+ admit: false, node: null, code: PLACEMENT_CONDITION, candidates: audit,
134
+ reason: `no node can take the guest: ${reasons.join("; ") || "no candidate nodes are configured"}`,
135
+ };
136
+ }
137
+ const best = ranked[0];
138
+ const tied = ranked.length > 1 && Math.abs((ranked[1].score ?? 0) - (best.score ?? 0)) < SCORE_TIE_EPSILON;
139
+ const breakdown = best.breakdown;
140
+ return {
141
+ admit: true, node: best.node, code: "Placed", mode, candidates: audit,
142
+ reason: `${best.node} scored ${best.score} (memory ${breakdown.memory}, guests ${breakdown.guests}, storage ${breakdown.storage})${tied ? "; tie broken by fewer guests, more free storage, then name" : ""}`,
143
+ };
144
+ }
145
+ /** The `calltelemetry.com/placement` annotation value for an auto decision (audit shape shared with the operator). */
146
+ export function placementAnnotation(decision, opts = {}) {
147
+ const { mode = "auto", request = null, now = new Date() } = opts;
148
+ return JSON.stringify({
149
+ schema: PLACEMENT_SCHEMA, mode, chosen: decision.node, decidedAt: now.toISOString(), reason: decision.reason,
150
+ weights: PLACEMENT_WEIGHTS,
151
+ ...(request ? { request: { ramMiB: Math.floor(request.ramBytes / MIB), vcpus: request.vcpus, diskGiB: Object.fromEntries(Object.entries(request.diskBytesByStorage).map(([pool, bytes]) => [pool, Math.ceil(bytes / GIB)])) } } : {}),
152
+ candidates: decision.candidates,
153
+ });
154
+ }
155
+ /** A pinned node is an override: recorded with mode "pinned" and no scoring. */
156
+ export function pinnedPlacementAnnotation(node, now = new Date()) {
157
+ return placementAnnotation({ node, reason: `node '${node}' was pinned by the caller; no automatic placement`, candidates: [] }, { mode: "pinned", now });
158
+ }
159
+ /** Claims whose capacity is promised but not yet visible in the host's numbers (derived from the claim list only). */
160
+ export function pendingClaims(input) {
161
+ const { claims = [], node, existingVmids = new Set() } = input;
162
+ const pending = [];
163
+ for (const claim of claims) {
164
+ const spec = claim?.spec ?? {};
165
+ const meta = claim?.metadata ?? {};
166
+ const phase = claim?.status?.phase;
167
+ if (claimNodeAlias(spec.node) !== node)
168
+ continue;
169
+ if (meta.deletionTimestamp || spec.closed === true || spec.state === "Closed")
170
+ continue;
171
+ if (spec.claimType === "fixture" || meta.labels?.["calltelemetry.com/claim-type"] === "fixture" || String(meta.name ?? "").startsWith("fixture-"))
172
+ continue;
173
+ if (phase && !["Pending", "Provisioning"].includes(phase))
174
+ continue;
175
+ const vmid = Number.parseInt(String(spec.vmid), 10);
176
+ if (!Number.isSafeInteger(vmid) || existingVmids.has(vmid))
177
+ continue;
178
+ pending.push({ name: String(meta.name), vmid });
179
+ }
180
+ return pending;
181
+ }
182
+ function claimNodeAlias(node) {
183
+ const raw = String(node ?? "minis").trim().toLowerCase();
184
+ if (raw === "proxmox-lab")
185
+ return "proxmox";
186
+ if (raw === "proxmox-mini" || raw === "proxmox-minis-lab")
187
+ return "minis";
188
+ if (raw === "proxmox-ibm64")
189
+ return "ibm64";
190
+ return raw;
191
+ }
192
+ /** Wraps a MultiHostProxmoxManager (or anything with getClient) as a placement fleet. */
193
+ export function fleetFromManager(manager) {
194
+ return {
195
+ clientFor(node) {
196
+ try {
197
+ return manager.getClient(CLAIM_NODE_TO_PROXMOX_HOST[node]);
198
+ }
199
+ catch {
200
+ return undefined;
201
+ }
202
+ },
203
+ };
204
+ }
205
+ const finite = (value) => typeof value === "number" && Number.isFinite(value);
206
+ /** Parses the PVE node status body; throws on anything missing or malformed (fail closed). */
207
+ export function parseNodeStatus(data) {
208
+ const memory = data?.memory;
209
+ if (!memory || typeof memory !== "object")
210
+ throw new Error("node memory status is missing");
211
+ const total = Number(memory.total);
212
+ const used = Number(memory.used);
213
+ const free = memory.free === undefined ? total - used : Number(memory.free);
214
+ if (!finite(total) || total <= 0 || !finite(free) || free < 0 || free > total)
215
+ throw new Error("node memory status is malformed");
216
+ const cpuLoad = Number(data.cpu);
217
+ if (data.cpu === undefined || !finite(cpuLoad) || cpuLoad < 0 || cpuLoad > 1)
218
+ throw new Error("node CPU load is missing or malformed");
219
+ const cpus = Number(data.cpuinfo?.cpus ?? data.maxcpu);
220
+ if (!finite(cpus) || cpus <= 0)
221
+ throw new Error("node CPU count is missing");
222
+ return { totalBytes: total, freeBytes: free, cpuLoad, cpus };
223
+ }
224
+ /** Parses a PVE storage status body. */
225
+ export function parseStorageStatus(data, storage) {
226
+ const avail = Number(data?.avail);
227
+ if (data?.avail === undefined || !finite(avail) || avail < 0)
228
+ throw new Error(`storage '${storage}' available space is missing or malformed`);
229
+ if (data.active !== undefined && Number(data.active) !== 1)
230
+ throw new Error(`storage '${storage}' is not active`);
231
+ const total = Number(data.total);
232
+ return { availBytes: avail, totalBytes: finite(total) && total > 0 ? total : 0 };
233
+ }
234
+ /** Reads live evidence for every candidate node in parallel and builds the audit records. */
235
+ export async function readPlacementCandidates(fleet, options = {}) {
236
+ const request = options.request ?? DEFAULT_PLACEMENT_REQUEST;
237
+ const policy = options.policy ?? DEFAULT_CAPACITY_POLICY;
238
+ const nodes = options.nodes ?? [...new Set(Object.values(PROXMOX_HOST_CLAIM_NODES))];
239
+ return Promise.all(nodes.map(async (node) => {
240
+ const client = fleet.clientFor(node);
241
+ if (!client)
242
+ return ineligible(node, "NoApiEndpoint", "no Proxmox API endpoint is configured for the node");
243
+ try {
244
+ const nodeStatus = parseNodeStatus(await client.getNodeStatus());
245
+ const vms = await client.listVms();
246
+ if (!Array.isArray(vms))
247
+ throw new Error("guest inventory is malformed");
248
+ const existingVmids = new Set(vms.map((vm) => Number(vm.vmid)));
249
+ if (options.templateVmid !== undefined) {
250
+ const template = vms.find((vm) => Number(vm.vmid) === options.templateVmid);
251
+ if (!template || template.template !== true) {
252
+ return ineligible(node, "TemplateUnavailable", `VMID ${options.templateVmid} on the node is ${template ? "not a Proxmox template" : "absent"}`);
253
+ }
254
+ }
255
+ if (options.vmid !== undefined && existingVmids.has(options.vmid)) {
256
+ return ineligible(node, "VmidInUse", `VMID ${options.vmid} is already held by a guest on the node`);
257
+ }
258
+ const runningGuests = vms.filter((vm) => vm.status === "running" && vm.template !== true).length;
259
+ const storages = {};
260
+ for (const pool of Object.keys(request.diskBytesByStorage)) {
261
+ const data = await client.request("GET", `/nodes/${client.hostConfig.nodeName}/storage/${pool}/status`);
262
+ storages[pool] = parseStorageStatus(data, pool);
263
+ }
264
+ const pending = pendingClaims({ claims: options.claims, node, existingVmids });
265
+ return evaluateNode({ node, evidence: { request, nodeStatus, storages, runningGuests }, pending, policy });
266
+ }
267
+ catch (error) {
268
+ const message = String(error?.message ?? error).slice(0, 200);
269
+ return ineligible(node, "EvidenceUnavailable", `${message}; failing closed`);
270
+ }
271
+ }));
272
+ }
273
+ /** Reads live evidence and decides. Never throws for missing evidence: it returns a non-admitting decision. */
274
+ export async function placeOnFleet(fleet, options = {}) {
275
+ const request = options.request ?? DEFAULT_PLACEMENT_REQUEST;
276
+ const candidates = await readPlacementCandidates(fleet, { ...options, request });
277
+ return { ...decidePlacement({ candidates }), request };
278
+ }
279
+ //# sourceMappingURL=placement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placement.js","sourceRoot":"","sources":["../../../src/tools/placement.ts"],"names":[],"mappings":"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"}
@@ -98,6 +98,7 @@ export declare const ProxmoxQuickProvisionInputSchema: z.ZodObject<{
98
98
  diskGb?: number | undefined;
99
99
  network?: string | undefined;
100
100
  ttlHours?: number | undefined;
101
+ vcpus?: number | undefined;
101
102
  operationId?: string | undefined;
102
103
  workspaceRoot?: string | undefined;
103
104
  importStorage?: string | undefined;
@@ -106,7 +107,6 @@ export declare const ProxmoxQuickProvisionInputSchema: z.ZodObject<{
106
107
  webImage?: string | undefined;
107
108
  baseVersion?: string | undefined;
108
109
  nativeCliDir?: string | undefined;
109
- vcpus?: number | undefined;
110
110
  vlanTag?: number | undefined;
111
111
  inventoryFile?: string | undefined;
112
112
  }, {
@@ -125,6 +125,7 @@ export declare const ProxmoxQuickProvisionInputSchema: z.ZodObject<{
125
125
  network?: string | undefined;
126
126
  ttlHours?: number | undefined;
127
127
  hostAssetId?: string | undefined;
128
+ vcpus?: number | undefined;
128
129
  operationId?: string | undefined;
129
130
  apply?: boolean | undefined;
130
131
  workspaceRoot?: string | undefined;
@@ -134,7 +135,6 @@ export declare const ProxmoxQuickProvisionInputSchema: z.ZodObject<{
134
135
  webImage?: string | undefined;
135
136
  baseVersion?: string | undefined;
136
137
  nativeCliDir?: string | undefined;
137
- vcpus?: number | undefined;
138
138
  vlanTag?: number | undefined;
139
139
  inventoryFile?: string | undefined;
140
140
  }>;
@@ -17,7 +17,7 @@ export declare const CreateStigClaimInputShape: {
17
17
  cloneName: z.ZodString;
18
18
  recreate: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
19
19
  untagged: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
20
- node: z.ZodDefault<z.ZodOptional<z.ZodEffects<z.ZodEnum<[string, ...string[]]>, "proxmox" | "minis" | "prox-ibm64", string>>>;
20
+ node: z.ZodEffects<z.ZodEnum<[string, ...string[]]>, "proxmox" | "minis" | "prox-ibm64", string>;
21
21
  templateRef: z.ZodOptional<z.ZodString>;
22
22
  ttlHours: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
23
23
  dns: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -44,7 +44,7 @@ export const CreateStigClaimInputShape = {
44
44
  cloneName: cloneName.describe("Clone VM name; the claim is clone-<cloneName>, the escrow key LAB_RHEL8_RECOVERY_<CLONENAME>."),
45
45
  recreate: z.boolean().optional().default(false).describe("Release the existing clone-<cloneName> STIG clone claim (the operator destroys its guest) and create its replacement. Only a STIG clone claim qualifies."),
46
46
  untagged: z.boolean().optional().default(false).describe("Clone without a VLAN tag (VLAN 126 is the default on every node)."),
47
- node: nodeName.optional().default("minis").describe("Proxmox node that hosts the clone: minis (build node), proxmox or prox-ibm64. The claim, the pool guard, the one-re-encrypting-clone guard and the template choice are all that node's."),
47
+ node: nodeName.describe("REQUIRED, never auto-placed (the clone source is a node-local template, so name the node that holds it): minis (build node), proxmox or prox-ibm64. The claim, the pool guard, the one-re-encrypting-clone guard and the template choice are all that node's."),
48
48
  templateRef: z.string().regex(/^rhel810-stig-\d{8}-\d{4}$/).optional().describe("Template to clone (default: the newest synced to the node)."),
49
49
  ttlHours: z.number().int().min(1).max(8760).optional().default(48),
50
50
  dns: dnsList.optional(), ntp: ntpList.optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"stig-tools.js","sourceRoot":"","sources":["../../../src/tools/stig-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stig-tools.js","sourceRoot":"","sources":["../../../src/tools/stig-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@calltelemetry/ct-lab-mcp",
3
- "version": "0.8.130",
3
+ "version": "0.8.132",
4
4
  "description": "Expanded Model Context Protocol (MCP) server for Call Telemetry lab, fleet, and appliance management across Proxmox VE (ESXi is retired).",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",