@calltelemetry/ct-lab-mcp 0.8.22 → 0.8.24
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/README.md +112 -0
- package/dist/src/canonical/bridge.d.ts +6 -0
- package/dist/src/canonical/bridge.d.ts.map +1 -1
- package/dist/src/canonical/bridge.js +90 -9
- package/dist/src/canonical/bridge.js.map +1 -1
- package/dist/src/credentials/resolver.d.ts +7 -1
- package/dist/src/credentials/resolver.d.ts.map +1 -1
- package/dist/src/credentials/resolver.js +83 -0
- package/dist/src/credentials/resolver.js.map +1 -1
- package/dist/src/credentials/types.d.ts +7 -0
- package/dist/src/credentials/types.d.ts.map +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +3 -1
- package/dist/src/server.js.map +1 -1
- package/dist/src/tools/canonical-guard.d.ts +28 -0
- package/dist/src/tools/canonical-guard.d.ts.map +1 -1
- package/dist/src/tools/canonical-guard.js +108 -0
- package/dist/src/tools/canonical-guard.js.map +1 -1
- package/dist/src/tools/credential-status.d.ts.map +1 -1
- package/dist/src/tools/credential-status.js +29 -3
- package/dist/src/tools/credential-status.js.map +1 -1
- package/dist/src/tools/index.d.ts +1 -0
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +15 -8
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/lab-dev.d.ts +711 -0
- package/dist/src/tools/lab-dev.d.ts.map +1 -0
- package/dist/src/tools/lab-dev.js +508 -0
- package/dist/src/tools/lab-dev.js.map +1 -0
- package/dist/src/tools/provision-tools.d.ts +36 -0
- package/dist/src/tools/provision-tools.d.ts.map +1 -1
- package/dist/src/tools/provision-tools.js +37 -4
- package/dist/src/tools/provision-tools.js.map +1 -1
- package/dist/src/tools/vm-cleanup.d.ts +21 -0
- package/dist/src/tools/vm-cleanup.d.ts.map +1 -1
- package/dist/src/tools/vm-cleanup.js +233 -2
- package/dist/src/tools/vm-cleanup.js.map +1 -1
- package/dist/src/tools/vm-repair.d.ts +98 -0
- package/dist/src/tools/vm-repair.d.ts.map +1 -0
- package/dist/src/tools/vm-repair.js +60 -0
- package/dist/src/tools/vm-repair.js.map +1 -0
- package/package.json +1 -1
|
@@ -11,6 +11,237 @@
|
|
|
11
11
|
import { z } from "zod";
|
|
12
12
|
import { ProxmoxErrorCode, createToolErrorResult } from "../types/mcp.js";
|
|
13
13
|
import { canonicalOperationBlocked, runCanonicalOperation } from "./canonical-guard.js";
|
|
14
|
+
const CANONICAL_PROXMOX_HOST_ID = /^proxmox-[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
|
|
15
|
+
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
16
|
+
function asRecord(value) {
|
|
17
|
+
return value && typeof value === "object" && !Array.isArray(value)
|
|
18
|
+
? value
|
|
19
|
+
: undefined;
|
|
20
|
+
}
|
|
21
|
+
function nonEmptyExactString(value) {
|
|
22
|
+
if (typeof value !== "string" || value.length === 0 || value.trim() !== value)
|
|
23
|
+
return undefined;
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
function identityCoordinates(item) {
|
|
27
|
+
const row = asRecord(item);
|
|
28
|
+
if (!row || row.hypervisor !== undefined && row.hypervisor !== "proxmox")
|
|
29
|
+
return undefined;
|
|
30
|
+
const hostAssetId = nonEmptyExactString(row.host_asset_id);
|
|
31
|
+
if (!hostAssetId || !CANONICAL_PROXMOX_HOST_ID.test(hostAssetId))
|
|
32
|
+
return undefined;
|
|
33
|
+
const identity = asRecord(row.identity);
|
|
34
|
+
if (!identity || typeof identity.vmid !== "number" || !Number.isSafeInteger(identity.vmid) || identity.vmid <= 0) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
const instanceUuid = nonEmptyExactString(identity.instance_uuid);
|
|
38
|
+
const smbiosUuid = nonEmptyExactString(identity.smbios_uuid);
|
|
39
|
+
if (instanceUuid && smbiosUuid && instanceUuid !== smbiosUuid)
|
|
40
|
+
return undefined;
|
|
41
|
+
const uuid = instanceUuid || smbiosUuid;
|
|
42
|
+
if (!uuid || !UUID.test(uuid))
|
|
43
|
+
return undefined;
|
|
44
|
+
return { hostAssetId, vmid: identity.vmid, uuid };
|
|
45
|
+
}
|
|
46
|
+
function identityKey(item) {
|
|
47
|
+
const identity = identityCoordinates(item);
|
|
48
|
+
return identity
|
|
49
|
+
? `untracked:${identity.hostAssetId}:${identity.vmid}:${identity.uuid}`
|
|
50
|
+
: undefined;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Return the canonical cleanup confirmation key only for an eligible,
|
|
54
|
+
* untracked Proxmox row whose complete structured identity is present.
|
|
55
|
+
* Tracked asset IDs, ESXi rows, protected/ineligible rows, and ambiguous or
|
|
56
|
+
* malformed identities deliberately return undefined.
|
|
57
|
+
*/
|
|
58
|
+
export function canonicalCleanupConfirmKey(item) {
|
|
59
|
+
const row = asRecord(item);
|
|
60
|
+
if (!row || row.asset_id !== undefined && row.asset_id !== null && row.asset_id !== "")
|
|
61
|
+
return undefined;
|
|
62
|
+
if (row.delete_ready !== true || row.protected !== false)
|
|
63
|
+
return undefined;
|
|
64
|
+
return identityKey(row);
|
|
65
|
+
}
|
|
66
|
+
function candidateKeys(value, exactSelection = false) {
|
|
67
|
+
if (!Array.isArray(value))
|
|
68
|
+
return { reason: "cleanup_candidates_invalid" };
|
|
69
|
+
const keys = [];
|
|
70
|
+
const seen = new Set();
|
|
71
|
+
const seenTargets = new Map();
|
|
72
|
+
for (const item of value) {
|
|
73
|
+
const row = asRecord(item);
|
|
74
|
+
if (exactSelection && !canonicalCleanupConfirmKey(item)) {
|
|
75
|
+
return { reason: "cleanup_selection_invalid" };
|
|
76
|
+
}
|
|
77
|
+
// Tracked asset IDs and ESXi entries have different canonical
|
|
78
|
+
// confirmation forms. They are intentionally not projected here.
|
|
79
|
+
if (!row || row.asset_id !== undefined && row.asset_id !== null && row.asset_id !== "")
|
|
80
|
+
continue;
|
|
81
|
+
if (row.hypervisor === "esxi")
|
|
82
|
+
continue;
|
|
83
|
+
// Only delete-ready, unprotected entries are candidates. Ignore other
|
|
84
|
+
// rows rather than accidentally manufacturing a destructive key.
|
|
85
|
+
if (row.delete_ready !== true || row.protected !== false)
|
|
86
|
+
continue;
|
|
87
|
+
const key = canonicalCleanupConfirmKey(item);
|
|
88
|
+
if (!key)
|
|
89
|
+
return { reason: "cleanup_candidates_invalid" };
|
|
90
|
+
const identity = identityCoordinates(item);
|
|
91
|
+
if (!identity)
|
|
92
|
+
return { reason: "cleanup_candidates_invalid" };
|
|
93
|
+
const target = `${identity.hostAssetId}:${identity.vmid}`;
|
|
94
|
+
const priorUuid = seenTargets.get(target);
|
|
95
|
+
if (priorUuid && priorUuid !== identity.uuid.toLowerCase()) {
|
|
96
|
+
return { reason: "cleanup_candidates_ambiguous" };
|
|
97
|
+
}
|
|
98
|
+
seenTargets.set(target, identity.uuid.toLowerCase());
|
|
99
|
+
if (seen.has(key))
|
|
100
|
+
return { reason: "cleanup_candidates_ambiguous" };
|
|
101
|
+
seen.add(key);
|
|
102
|
+
keys.push(key);
|
|
103
|
+
}
|
|
104
|
+
return { keys };
|
|
105
|
+
}
|
|
106
|
+
function allClassifiedKeys(value) {
|
|
107
|
+
if (!Array.isArray(value))
|
|
108
|
+
return { keys: [] };
|
|
109
|
+
const keys = [];
|
|
110
|
+
const seen = new Set();
|
|
111
|
+
const seenTargets = new Map();
|
|
112
|
+
for (const item of value) {
|
|
113
|
+
const row = asRecord(item);
|
|
114
|
+
if (!row || (row.asset_id !== undefined && row.asset_id !== null && row.asset_id !== ""))
|
|
115
|
+
continue;
|
|
116
|
+
// ESXi leftovers intentionally have no positive VMID and cannot produce
|
|
117
|
+
// this Proxmox confirmation form; they do not invalidate Proxmox rows.
|
|
118
|
+
if (row.hypervisor === "esxi")
|
|
119
|
+
continue;
|
|
120
|
+
const identity = asRecord(row.identity);
|
|
121
|
+
// The canonical cleanup schema omits `hypervisor` from classified rows;
|
|
122
|
+
// rows with no positive VMID are therefore unsupported (normally ESXi).
|
|
123
|
+
// For rows that do have a structured Proxmox identity, inspect even
|
|
124
|
+
// protected/ineligible entries so an eligible duplicate cannot be treated
|
|
125
|
+
// as unambiguous.
|
|
126
|
+
if (!identity || identity.vmid === null || identity.vmid === undefined)
|
|
127
|
+
continue;
|
|
128
|
+
const key = identityKey(row);
|
|
129
|
+
if (!key)
|
|
130
|
+
return { reason: "cleanup_candidates_invalid" };
|
|
131
|
+
const identityCoordinatesValue = identityCoordinates(row);
|
|
132
|
+
if (!identityCoordinatesValue)
|
|
133
|
+
return { reason: "cleanup_candidates_invalid" };
|
|
134
|
+
const target = `${identityCoordinatesValue.hostAssetId}:${identityCoordinatesValue.vmid}`;
|
|
135
|
+
const priorUuid = seenTargets.get(target);
|
|
136
|
+
if (priorUuid && priorUuid !== identityCoordinatesValue.uuid.toLowerCase()) {
|
|
137
|
+
return { reason: "cleanup_candidates_ambiguous" };
|
|
138
|
+
}
|
|
139
|
+
seenTargets.set(target, identityCoordinatesValue.uuid.toLowerCase());
|
|
140
|
+
if (seen.has(key))
|
|
141
|
+
return { reason: "cleanup_candidates_ambiguous" };
|
|
142
|
+
seen.add(key);
|
|
143
|
+
keys.push(key);
|
|
144
|
+
}
|
|
145
|
+
return { keys };
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Project canonical cleanup's structured candidates into the exact
|
|
149
|
+
* `confirmAssets` value accepted by the next cleanup call. This never reads
|
|
150
|
+
* `selected_keys`/`required_confirmations`; those are redacted transport
|
|
151
|
+
* strings and are intentionally not confirmation authority.
|
|
152
|
+
*/
|
|
153
|
+
export function deriveCanonicalCleanupConfirmations(value) {
|
|
154
|
+
const payload = asRecord(value);
|
|
155
|
+
if (!payload || payload.schema !== "calltelemetry-lab-vm-cleanup/v1") {
|
|
156
|
+
return { status: "unavailable", reason: "cleanup_result_missing" };
|
|
157
|
+
}
|
|
158
|
+
const classified = allClassifiedKeys(payload.vms);
|
|
159
|
+
if (classified.reason)
|
|
160
|
+
return { status: "unavailable", reason: classified.reason };
|
|
161
|
+
const eligibleRows = Array.isArray(payload.delete_ready) ? payload.delete_ready : undefined;
|
|
162
|
+
const eligible = candidateKeys(eligibleRows);
|
|
163
|
+
if (eligible.reason || !eligible.keys) {
|
|
164
|
+
return { status: "unavailable", reason: eligible.reason || "cleanup_candidates_invalid" };
|
|
165
|
+
}
|
|
166
|
+
if (eligibleRows && eligible.keys.length === 0 && eligibleRows.length > 0) {
|
|
167
|
+
return { status: "unavailable", reason: "cleanup_no_structured_untracked_targets" };
|
|
168
|
+
}
|
|
169
|
+
const hasSelection = Object.prototype.hasOwnProperty.call(payload, "selected_delete_ready");
|
|
170
|
+
const selectedRows = hasSelection && Array.isArray(payload.selected_delete_ready)
|
|
171
|
+
? payload.selected_delete_ready
|
|
172
|
+
: undefined;
|
|
173
|
+
const selected = hasSelection ? candidateKeys(selectedRows, true) : { keys: eligible.keys };
|
|
174
|
+
if (selected.reason || !selected.keys) {
|
|
175
|
+
return { status: "unavailable", reason: selected.reason || "cleanup_selection_invalid" };
|
|
176
|
+
}
|
|
177
|
+
if (hasSelection && selectedRows && selected.keys.length === 0 && selectedRows.length > 0) {
|
|
178
|
+
return { status: "unavailable", reason: "cleanup_no_structured_untracked_targets" };
|
|
179
|
+
}
|
|
180
|
+
const eligibleSet = new Set(eligible.keys);
|
|
181
|
+
if (selected.keys.some((key) => !eligibleSet.has(key))) {
|
|
182
|
+
return { status: "unavailable", reason: "cleanup_selection_not_eligible" };
|
|
183
|
+
}
|
|
184
|
+
// Every projected eligible identity must agree with the full classification,
|
|
185
|
+
// including protection and eligibility. Never trust a contradictory copy
|
|
186
|
+
// from a convenience list or silently reduce an explicit selection.
|
|
187
|
+
if (eligible.keys.length > 0) {
|
|
188
|
+
if (!Array.isArray(payload.vms)) {
|
|
189
|
+
return { status: "unavailable", reason: "cleanup_candidates_invalid" };
|
|
190
|
+
}
|
|
191
|
+
const classifiedEligible = new Set(payload.vms.map(canonicalCleanupConfirmKey).filter(Boolean));
|
|
192
|
+
if (eligible.keys.some((key) => !classifiedEligible.has(key))) {
|
|
193
|
+
return { status: "unavailable", reason: "cleanup_candidates_ambiguous" };
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (selected.keys.length === 0) {
|
|
197
|
+
return {
|
|
198
|
+
status: "empty",
|
|
199
|
+
scope: hasSelection ? "selected" : "eligible",
|
|
200
|
+
keys: [],
|
|
201
|
+
confirmAssets: "",
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
status: "available",
|
|
206
|
+
scope: hasSelection ? "selected" : "eligible",
|
|
207
|
+
keys: selected.keys,
|
|
208
|
+
confirmAssets: selected.keys.join(","),
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
function withCleanupConfirmations(result) {
|
|
212
|
+
if (result.isError || !result.structuredContent || typeof result.structuredContent !== "object")
|
|
213
|
+
return result;
|
|
214
|
+
const payload = result.structuredContent;
|
|
215
|
+
if (payload.operation !== "list_expired_vms" && payload.operation !== "cleanup_expired_vms")
|
|
216
|
+
return result;
|
|
217
|
+
const canonicalResult = asRecord(payload.result);
|
|
218
|
+
const confirmation = deriveCanonicalCleanupConfirmations(canonicalResult);
|
|
219
|
+
const projectedResult = {
|
|
220
|
+
...(canonicalResult || {}),
|
|
221
|
+
cleanup_confirmation: confirmation,
|
|
222
|
+
};
|
|
223
|
+
if (confirmation.status === "available") {
|
|
224
|
+
projectedResult.safe_confirm_assets = confirmation.confirmAssets;
|
|
225
|
+
projectedResult.safe_confirm_keys = confirmation.keys;
|
|
226
|
+
}
|
|
227
|
+
const content = confirmation.status === "available" && confirmation.confirmAssets
|
|
228
|
+
? [
|
|
229
|
+
...result.content,
|
|
230
|
+
{
|
|
231
|
+
type: "text",
|
|
232
|
+
text: `Safe canonical cleanup confirmation (structured identity): ${confirmation.confirmAssets}`,
|
|
233
|
+
},
|
|
234
|
+
]
|
|
235
|
+
: result.content;
|
|
236
|
+
return {
|
|
237
|
+
...result,
|
|
238
|
+
content,
|
|
239
|
+
structuredContent: {
|
|
240
|
+
...payload,
|
|
241
|
+
result: projectedResult,
|
|
242
|
+
},
|
|
243
|
+
};
|
|
244
|
+
}
|
|
14
245
|
export const ListExpiredVmsInputShape = {
|
|
15
246
|
warnHours: z
|
|
16
247
|
.number()
|
|
@@ -99,7 +330,7 @@ export async function handleListExpiredVms(rawArgs = {}, context) {
|
|
|
99
330
|
return canonicalOperationBlocked("list_expired_vms", "classify expired/dead leftover VMs through canonical lab-inventory vm cleanup");
|
|
100
331
|
}
|
|
101
332
|
const args = ListExpiredVmsInputSchema.parse(rawArgs);
|
|
102
|
-
return runCanonicalOperation(context.canonicalBridge, "list_expired_vms", cleanupCommand({ ...args, deleteTerminalIssues: true, dryRun: true }));
|
|
333
|
+
return withCleanupConfirmations(await runCanonicalOperation(context.canonicalBridge, "list_expired_vms", cleanupCommand({ ...args, deleteTerminalIssues: true, dryRun: true })));
|
|
103
334
|
}
|
|
104
335
|
export async function handleCleanupExpiredVms(rawArgs = {}, context) {
|
|
105
336
|
if (!context.canonicalBridge) {
|
|
@@ -110,7 +341,7 @@ export async function handleCleanupExpiredVms(rawArgs = {}, context) {
|
|
|
110
341
|
if (!args.dryRun && args.apply !== false && !args.confirmAssets) {
|
|
111
342
|
throw new Error("confirmAssets is required for cleanup mutation; use dryRun for classification");
|
|
112
343
|
}
|
|
113
|
-
return runCanonicalOperation(context.canonicalBridge, "cleanup_expired_vms", cleanupCommand(args));
|
|
344
|
+
return withCleanupConfirmations(await runCanonicalOperation(context.canonicalBridge, "cleanup_expired_vms", cleanupCommand(args)));
|
|
114
345
|
}
|
|
115
346
|
catch (error) {
|
|
116
347
|
const msg = error instanceof Error ? error.message : String(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vm-cleanup.js","sourceRoot":"","sources":["../../../src/tools/vm-cleanup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vm-cleanup.js","sourceRoot":"","sources":["../../../src/tools/vm-cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/** Exact pending-provision credential recovery. No direct guest fallback. */
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { CallToolResult } from "../types/mcp.js";
|
|
4
|
+
import { ToolContext } from "./list-hosts.js";
|
|
5
|
+
export declare const VmRepairInputObjectSchema: z.ZodObject<{
|
|
6
|
+
assetId: z.ZodString;
|
|
7
|
+
leaseId: z.ZodString;
|
|
8
|
+
linearIssue: z.ZodString;
|
|
9
|
+
operationId: z.ZodString;
|
|
10
|
+
provisionOperationId: z.ZodString;
|
|
11
|
+
confirmSmbiosUuid: z.ZodString;
|
|
12
|
+
apply: z.ZodDefault<z.ZodBoolean>;
|
|
13
|
+
reconcile: z.ZodDefault<z.ZodBoolean>;
|
|
14
|
+
restartConsole: z.ZodDefault<z.ZodBoolean>;
|
|
15
|
+
confirmAssetId: z.ZodOptional<z.ZodString>;
|
|
16
|
+
}, "strict", z.ZodTypeAny, {
|
|
17
|
+
linearIssue: string;
|
|
18
|
+
leaseId: string;
|
|
19
|
+
assetId: string;
|
|
20
|
+
operationId: string;
|
|
21
|
+
apply: boolean;
|
|
22
|
+
confirmSmbiosUuid: string;
|
|
23
|
+
provisionOperationId: string;
|
|
24
|
+
reconcile: boolean;
|
|
25
|
+
restartConsole: boolean;
|
|
26
|
+
confirmAssetId?: string | undefined;
|
|
27
|
+
}, {
|
|
28
|
+
linearIssue: string;
|
|
29
|
+
leaseId: string;
|
|
30
|
+
assetId: string;
|
|
31
|
+
operationId: string;
|
|
32
|
+
confirmSmbiosUuid: string;
|
|
33
|
+
provisionOperationId: string;
|
|
34
|
+
apply?: boolean | undefined;
|
|
35
|
+
confirmAssetId?: string | undefined;
|
|
36
|
+
reconcile?: boolean | undefined;
|
|
37
|
+
restartConsole?: boolean | undefined;
|
|
38
|
+
}>;
|
|
39
|
+
export declare const VmRepairInputSchema: z.ZodEffects<z.ZodObject<{
|
|
40
|
+
assetId: z.ZodString;
|
|
41
|
+
leaseId: z.ZodString;
|
|
42
|
+
linearIssue: z.ZodString;
|
|
43
|
+
operationId: z.ZodString;
|
|
44
|
+
provisionOperationId: z.ZodString;
|
|
45
|
+
confirmSmbiosUuid: z.ZodString;
|
|
46
|
+
apply: z.ZodDefault<z.ZodBoolean>;
|
|
47
|
+
reconcile: z.ZodDefault<z.ZodBoolean>;
|
|
48
|
+
restartConsole: z.ZodDefault<z.ZodBoolean>;
|
|
49
|
+
confirmAssetId: z.ZodOptional<z.ZodString>;
|
|
50
|
+
}, "strict", z.ZodTypeAny, {
|
|
51
|
+
linearIssue: string;
|
|
52
|
+
leaseId: string;
|
|
53
|
+
assetId: string;
|
|
54
|
+
operationId: string;
|
|
55
|
+
apply: boolean;
|
|
56
|
+
confirmSmbiosUuid: string;
|
|
57
|
+
provisionOperationId: string;
|
|
58
|
+
reconcile: boolean;
|
|
59
|
+
restartConsole: boolean;
|
|
60
|
+
confirmAssetId?: string | undefined;
|
|
61
|
+
}, {
|
|
62
|
+
linearIssue: string;
|
|
63
|
+
leaseId: string;
|
|
64
|
+
assetId: string;
|
|
65
|
+
operationId: string;
|
|
66
|
+
confirmSmbiosUuid: string;
|
|
67
|
+
provisionOperationId: string;
|
|
68
|
+
apply?: boolean | undefined;
|
|
69
|
+
confirmAssetId?: string | undefined;
|
|
70
|
+
reconcile?: boolean | undefined;
|
|
71
|
+
restartConsole?: boolean | undefined;
|
|
72
|
+
}>, {
|
|
73
|
+
linearIssue: string;
|
|
74
|
+
leaseId: string;
|
|
75
|
+
assetId: string;
|
|
76
|
+
operationId: string;
|
|
77
|
+
apply: boolean;
|
|
78
|
+
confirmSmbiosUuid: string;
|
|
79
|
+
provisionOperationId: string;
|
|
80
|
+
reconcile: boolean;
|
|
81
|
+
restartConsole: boolean;
|
|
82
|
+
confirmAssetId?: string | undefined;
|
|
83
|
+
}, {
|
|
84
|
+
linearIssue: string;
|
|
85
|
+
leaseId: string;
|
|
86
|
+
assetId: string;
|
|
87
|
+
operationId: string;
|
|
88
|
+
confirmSmbiosUuid: string;
|
|
89
|
+
provisionOperationId: string;
|
|
90
|
+
apply?: boolean | undefined;
|
|
91
|
+
confirmAssetId?: string | undefined;
|
|
92
|
+
reconcile?: boolean | undefined;
|
|
93
|
+
restartConsole?: boolean | undefined;
|
|
94
|
+
}>;
|
|
95
|
+
export type VmRepairInput = z.output<typeof VmRepairInputSchema>;
|
|
96
|
+
export declare function buildVmRepairCommand(args: VmRepairInput): string[];
|
|
97
|
+
export declare function handleVmRepair(raw: unknown, context: ToolContext): Promise<CallToolResult>;
|
|
98
|
+
//# sourceMappingURL=vm-repair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-repair.d.ts","sourceRoot":"","sources":["../../../src/tools/vm-repair.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAyB,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAI9C,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW3B,CAAC;AAGZ,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEjE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE,CAWlE;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAUhG"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/** Exact pending-provision credential recovery. No direct guest fallback. */
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { createToolErrorResult } from "../types/mcp.js";
|
|
4
|
+
import { canonicalMode, canonicalOperationBlocked, runCanonicalOperation } from "./canonical-guard.js";
|
|
5
|
+
const operationId = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{7,127}$/);
|
|
6
|
+
export const VmRepairInputObjectSchema = z.object({
|
|
7
|
+
assetId: z.string().regex(/^[a-z0-9][a-z0-9-]{7,127}$/),
|
|
8
|
+
leaseId: z.string().regex(/^lease-[A-Za-z0-9-]{1,120}$/),
|
|
9
|
+
linearIssue: z.string().regex(/^[A-Z][A-Z0-9]*-[1-9][0-9]*$/),
|
|
10
|
+
operationId,
|
|
11
|
+
provisionOperationId: operationId,
|
|
12
|
+
confirmSmbiosUuid: z.string().uuid(),
|
|
13
|
+
apply: z.boolean().default(false),
|
|
14
|
+
reconcile: z.boolean().default(false).describe("Reconcile the same journaled console-recovery operation using its retained material; never repeat a password reset."),
|
|
15
|
+
restartConsole: z.boolean().default(false).describe("Explicitly recover a silent console through one journaled graceful shutdown/start of the exact disposable VM. Requires apply and same-operation reconcile; never a force stop or a repeated password reset."),
|
|
16
|
+
confirmAssetId: z.string().optional(),
|
|
17
|
+
}).strict();
|
|
18
|
+
// Register the object shape for SDK discovery; cross-field policy remains
|
|
19
|
+
// enforced here by the handler before canonical dispatch.
|
|
20
|
+
export const VmRepairInputSchema = VmRepairInputObjectSchema.superRefine((value, ctx) => {
|
|
21
|
+
if (value.operationId === value.provisionOperationId) {
|
|
22
|
+
ctx.addIssue({ code: "custom", message: "Repair requires a separate operation ID." });
|
|
23
|
+
}
|
|
24
|
+
if (value.apply ? value.confirmAssetId !== value.assetId : value.confirmAssetId !== undefined) {
|
|
25
|
+
ctx.addIssue({ code: "custom", message: "Apply requires matching asset confirmation; omit it for a plan." });
|
|
26
|
+
}
|
|
27
|
+
if (value.reconcile && !value.apply) {
|
|
28
|
+
ctx.addIssue({ code: "custom", message: "Reconcile requires apply." });
|
|
29
|
+
}
|
|
30
|
+
if (value.restartConsole && (!value.apply || !value.reconcile)) {
|
|
31
|
+
ctx.addIssue({ code: "custom", message: "Console restart requires apply and same-operation reconcile." });
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
export function buildVmRepairCommand(args) {
|
|
35
|
+
const command = [
|
|
36
|
+
"vm", "repair", "--asset-id", args.assetId, "--lease-id", args.leaseId,
|
|
37
|
+
"--linear-issue", args.linearIssue, "--operation-id", args.operationId,
|
|
38
|
+
"--provision-operation-id", args.provisionOperationId,
|
|
39
|
+
"--confirm-smbios-uuid", args.confirmSmbiosUuid,
|
|
40
|
+
];
|
|
41
|
+
if (args.apply)
|
|
42
|
+
command.push("--apply", "--confirm-asset-id", args.confirmAssetId);
|
|
43
|
+
if (args.reconcile)
|
|
44
|
+
command.push("--reconcile");
|
|
45
|
+
if (args.restartConsole)
|
|
46
|
+
command.push("--restart-console");
|
|
47
|
+
return command;
|
|
48
|
+
}
|
|
49
|
+
export async function handleVmRepair(raw, context) {
|
|
50
|
+
const parsed = VmRepairInputSchema.safeParse(raw);
|
|
51
|
+
if (!parsed.success) {
|
|
52
|
+
// Never echo unknown fields or caller values: this boundary accepts no secrets.
|
|
53
|
+
return createToolErrorResult("VALIDATION_ERROR", "Invalid exact-identity credential-repair request.");
|
|
54
|
+
}
|
|
55
|
+
if (!canonicalMode(context)) {
|
|
56
|
+
return canonicalOperationBlocked("vm_repair", "credential recovery requires the canonical pending journal and live lease authority");
|
|
57
|
+
}
|
|
58
|
+
return runCanonicalOperation(context.canonicalBridge, "vm_repair", buildVmRepairCommand(parsed.data));
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=vm-repair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vm-repair.js","sourceRoot":"","sources":["../../../src/tools/vm-repair.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.
|
|
3
|
+
"version": "0.8.24",
|
|
4
4
|
"description": "Expanded Model Context Protocol (MCP) server for Call Telemetry lab, fleet, and appliance management across Proxmox VE and VMware ESXi.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/src/index.js",
|