@calltelemetry/ct-lab-mcp 0.3.2 → 0.4.1
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 +30 -7
- package/dist/src/tools/claim-lifecycle.d.ts +107 -0
- package/dist/src/tools/claim-lifecycle.d.ts.map +1 -0
- package/dist/src/tools/claim-lifecycle.js +106 -0
- package/dist/src/tools/claim-lifecycle.js.map +1 -0
- 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 +4 -8
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/list-hosts.d.ts.map +1 -1
- package/dist/src/tools/list-hosts.js +7 -0
- package/dist/src/tools/list-hosts.js.map +1 -1
- package/dist/src/tools/provision-tools.d.ts +324 -0
- package/dist/src/tools/provision-tools.d.ts.map +1 -1
- package/dist/src/tools/provision-tools.js +327 -9
- package/dist/src/tools/provision-tools.js.map +1 -1
- package/dist/src/tools/purge-slots.d.ts +20 -0
- package/dist/src/tools/purge-slots.d.ts.map +1 -1
- package/dist/src/tools/purge-slots.js +44 -3
- package/dist/src/tools/purge-slots.js.map +1 -1
- package/dist/src/tools/slot-tools.d.ts +90 -0
- package/dist/src/tools/slot-tools.d.ts.map +1 -1
- package/dist/src/tools/slot-tools.js +143 -9
- package/dist/src/tools/slot-tools.js.map +1 -1
- package/dist/src/tools/vm-action.d.ts +72 -0
- package/dist/src/tools/vm-action.d.ts.map +1 -1
- package/dist/src/tools/vm-action.js +89 -3
- package/dist/src/tools/vm-action.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -143,13 +143,36 @@ CT_LAB_CANONICAL_CLI=/path/to/lab-inventory
|
|
|
143
143
|
CT_LAB_CANONICAL_REQUIRED=1
|
|
144
144
|
```
|
|
145
145
|
|
|
146
|
-
In this mode `lab_preflight
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
identity
|
|
146
|
+
In this mode `lab_preflight`, inventory reads, claims, releases, reclaim,
|
|
147
|
+
provisioning, and VM lifecycle calls execute through the canonical CLI. The
|
|
148
|
+
Node façade never creates a second lease store and never treats a VMID, name,
|
|
149
|
+
IP address, Linear key, or operation ID as ownership. Mutation calls require
|
|
150
|
+
the canonical asset identity, exact operation inputs, and the CLI's dry-run /
|
|
151
|
+
apply receipt workflow. Legacy guest, storage, snapshot, CUBE, and appliance
|
|
152
|
+
mutations that do not yet have an identity-bound bridge still return
|
|
153
|
+
`CANONICAL_OPERATION_REQUIRES_BRIDGE`.
|
|
154
|
+
|
|
155
|
+
Claiming policy is intentionally conservative: prefer a fresh unclaimed
|
|
156
|
+
stopped candidate or a new disposable VM; reuse an active running VM only when
|
|
157
|
+
the current run proves the exact lease, coordinator ref, and live managed
|
|
158
|
+
metadata. Reclaim is permitted only for the oldest eligible expired claim when
|
|
159
|
+
all eligible capacity is full. Protected and unknown assets are never
|
|
160
|
+
reclaimed. A disposable claim that failed authentication may be destroyed and
|
|
161
|
+
recreated only after preserving the failure receipt.
|
|
162
|
+
|
|
163
|
+
Canonical mutation parameters are deliberately explicit:
|
|
164
|
+
|
|
165
|
+
- `claim_slot` and `provision_vm` require an exact `assetId`, active
|
|
166
|
+
`linearIssue`, and unique `operationId`; apply also requires matching
|
|
167
|
+
`confirmAssetId`.
|
|
168
|
+
- `release_slot` requires the exact `leaseId` and an `artifactReceipt`.
|
|
169
|
+
- `purge_slots` delegates only to `claims gc`; age, force, orphan, and VM-name
|
|
170
|
+
shortcuts are rejected.
|
|
171
|
+
- `vm_renew` and `vm_transfer` preserve the exact asset and lease identity.
|
|
172
|
+
Running-guest renewal and expired-running transfer are accepted only when
|
|
173
|
+
the canonical CLI proves their narrow recovery conditions.
|
|
174
|
+
- `vm_action` maps only to canonical asset-bound status, guest reboot, power,
|
|
175
|
+
and evidence-first delete operations.
|
|
153
176
|
|
|
154
177
|
---
|
|
155
178
|
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical VM claim lifecycle tools.
|
|
3
|
+
*
|
|
4
|
+
* These handlers intentionally have no legacy fallback. A lease renewal or
|
|
5
|
+
* transfer changes ownership metadata and must be serialized by the canonical
|
|
6
|
+
* inventory CLI, its local lock, and its cross-host coordinator.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { CallToolResult } from "../types/mcp.js";
|
|
10
|
+
import { ToolContext } from "./list-hosts.js";
|
|
11
|
+
export declare const RenewClaimInputShape: {
|
|
12
|
+
allowRunning: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
13
|
+
replaceClosedClaim: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
14
|
+
assetId: z.ZodOptional<z.ZodString>;
|
|
15
|
+
linearIssue: z.ZodOptional<z.ZodString>;
|
|
16
|
+
leaseId: z.ZodOptional<z.ZodString>;
|
|
17
|
+
operationId: z.ZodOptional<z.ZodString>;
|
|
18
|
+
ttlHours: z.ZodOptional<z.ZodNumber>;
|
|
19
|
+
apply: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
20
|
+
confirmAssetId: z.ZodOptional<z.ZodString>;
|
|
21
|
+
receiptFile: z.ZodOptional<z.ZodString>;
|
|
22
|
+
};
|
|
23
|
+
export declare const RenewClaimInputSchema: z.ZodObject<{
|
|
24
|
+
allowRunning: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
25
|
+
replaceClosedClaim: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
26
|
+
assetId: z.ZodOptional<z.ZodString>;
|
|
27
|
+
linearIssue: z.ZodOptional<z.ZodString>;
|
|
28
|
+
leaseId: z.ZodOptional<z.ZodString>;
|
|
29
|
+
operationId: z.ZodOptional<z.ZodString>;
|
|
30
|
+
ttlHours: z.ZodOptional<z.ZodNumber>;
|
|
31
|
+
apply: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
32
|
+
confirmAssetId: z.ZodOptional<z.ZodString>;
|
|
33
|
+
receiptFile: z.ZodOptional<z.ZodString>;
|
|
34
|
+
}, "strip", z.ZodTypeAny, {
|
|
35
|
+
apply: boolean;
|
|
36
|
+
replaceClosedClaim: boolean;
|
|
37
|
+
allowRunning: boolean;
|
|
38
|
+
linearIssue?: string | undefined;
|
|
39
|
+
leaseId?: string | undefined;
|
|
40
|
+
assetId?: string | undefined;
|
|
41
|
+
operationId?: string | undefined;
|
|
42
|
+
receiptFile?: string | undefined;
|
|
43
|
+
ttlHours?: number | undefined;
|
|
44
|
+
confirmAssetId?: string | undefined;
|
|
45
|
+
}, {
|
|
46
|
+
linearIssue?: string | undefined;
|
|
47
|
+
leaseId?: string | undefined;
|
|
48
|
+
assetId?: string | undefined;
|
|
49
|
+
operationId?: string | undefined;
|
|
50
|
+
apply?: boolean | undefined;
|
|
51
|
+
receiptFile?: string | undefined;
|
|
52
|
+
ttlHours?: number | undefined;
|
|
53
|
+
confirmAssetId?: string | undefined;
|
|
54
|
+
replaceClosedClaim?: boolean | undefined;
|
|
55
|
+
allowRunning?: boolean | undefined;
|
|
56
|
+
}>;
|
|
57
|
+
export type RenewClaimRawInput = z.input<typeof RenewClaimInputSchema>;
|
|
58
|
+
export declare const TransferClaimInputShape: {
|
|
59
|
+
toLinearIssue: z.ZodOptional<z.ZodString>;
|
|
60
|
+
recoverExpiredRunning: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
61
|
+
assetId: z.ZodOptional<z.ZodString>;
|
|
62
|
+
linearIssue: z.ZodOptional<z.ZodString>;
|
|
63
|
+
leaseId: z.ZodOptional<z.ZodString>;
|
|
64
|
+
operationId: z.ZodOptional<z.ZodString>;
|
|
65
|
+
ttlHours: z.ZodOptional<z.ZodNumber>;
|
|
66
|
+
apply: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
67
|
+
confirmAssetId: z.ZodOptional<z.ZodString>;
|
|
68
|
+
receiptFile: z.ZodOptional<z.ZodString>;
|
|
69
|
+
};
|
|
70
|
+
export declare const TransferClaimInputSchema: z.ZodObject<{
|
|
71
|
+
toLinearIssue: z.ZodOptional<z.ZodString>;
|
|
72
|
+
recoverExpiredRunning: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
73
|
+
assetId: z.ZodOptional<z.ZodString>;
|
|
74
|
+
linearIssue: z.ZodOptional<z.ZodString>;
|
|
75
|
+
leaseId: z.ZodOptional<z.ZodString>;
|
|
76
|
+
operationId: z.ZodOptional<z.ZodString>;
|
|
77
|
+
ttlHours: z.ZodOptional<z.ZodNumber>;
|
|
78
|
+
apply: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
79
|
+
confirmAssetId: z.ZodOptional<z.ZodString>;
|
|
80
|
+
receiptFile: z.ZodOptional<z.ZodString>;
|
|
81
|
+
}, "strip", z.ZodTypeAny, {
|
|
82
|
+
apply: boolean;
|
|
83
|
+
recoverExpiredRunning: boolean;
|
|
84
|
+
linearIssue?: string | undefined;
|
|
85
|
+
leaseId?: string | undefined;
|
|
86
|
+
assetId?: string | undefined;
|
|
87
|
+
operationId?: string | undefined;
|
|
88
|
+
receiptFile?: string | undefined;
|
|
89
|
+
ttlHours?: number | undefined;
|
|
90
|
+
confirmAssetId?: string | undefined;
|
|
91
|
+
toLinearIssue?: string | undefined;
|
|
92
|
+
}, {
|
|
93
|
+
linearIssue?: string | undefined;
|
|
94
|
+
leaseId?: string | undefined;
|
|
95
|
+
assetId?: string | undefined;
|
|
96
|
+
operationId?: string | undefined;
|
|
97
|
+
apply?: boolean | undefined;
|
|
98
|
+
receiptFile?: string | undefined;
|
|
99
|
+
ttlHours?: number | undefined;
|
|
100
|
+
confirmAssetId?: string | undefined;
|
|
101
|
+
toLinearIssue?: string | undefined;
|
|
102
|
+
recoverExpiredRunning?: boolean | undefined;
|
|
103
|
+
}>;
|
|
104
|
+
export type TransferClaimRawInput = z.input<typeof TransferClaimInputSchema>;
|
|
105
|
+
export declare function handleRenewClaim(rawArgs: RenewClaimRawInput, context: ToolContext): Promise<CallToolResult>;
|
|
106
|
+
export declare function handleTransferClaim(rawArgs: TransferClaimRawInput, context: ToolContext): Promise<CallToolResult>;
|
|
107
|
+
//# sourceMappingURL=claim-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/tools/claim-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAA2C,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAc9C,eAAO,MAAM,oBAAoB;;;;;;;;;;;CAIhC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAiC,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEvE,eAAO,MAAM,uBAAuB;;;;;;;;;;;CAInC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAoC,CAAC;AAC1E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAqB7E,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CAwBzB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CA2BzB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical VM claim lifecycle tools.
|
|
3
|
+
*
|
|
4
|
+
* These handlers intentionally have no legacy fallback. A lease renewal or
|
|
5
|
+
* transfer changes ownership metadata and must be serialized by the canonical
|
|
6
|
+
* inventory CLI, its local lock, and its cross-host coordinator.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { ProxmoxErrorCode, createToolErrorResult } from "../types/mcp.js";
|
|
10
|
+
import { canonicalMode, canonicalOperationBlocked, runCanonicalOperation } from "./canonical-guard.js";
|
|
11
|
+
const CommonClaimUpdateShape = {
|
|
12
|
+
assetId: z.string().min(1).optional().describe("Exact canonical VM asset ID."),
|
|
13
|
+
linearIssue: z.string().min(1).optional().describe("Current owning Linear issue key."),
|
|
14
|
+
leaseId: z.string().min(1).optional().describe("Exact current lease ID."),
|
|
15
|
+
operationId: z.string().min(1).optional().describe("Unique idempotency operation ID."),
|
|
16
|
+
ttlHours: z.number().int().positive().optional().describe("Replacement lease duration in hours."),
|
|
17
|
+
apply: z.boolean().optional().default(false).describe("Execute the reviewed canonical lifecycle operation."),
|
|
18
|
+
confirmAssetId: z.string().min(1).optional().describe("Exact asset ID confirmation required with apply=true."),
|
|
19
|
+
receiptFile: z.string().min(1).optional().describe("Optional canonical plan/receipt path."),
|
|
20
|
+
};
|
|
21
|
+
export const RenewClaimInputShape = {
|
|
22
|
+
...CommonClaimUpdateShape,
|
|
23
|
+
allowRunning: z.boolean().optional().default(false).describe("Allow only canonical metadata renewal for an exact running owner."),
|
|
24
|
+
replaceClosedClaim: z.boolean().optional().default(false).describe("Allow only the canonical closed-issue replacement path."),
|
|
25
|
+
};
|
|
26
|
+
export const RenewClaimInputSchema = z.object(RenewClaimInputShape);
|
|
27
|
+
export const TransferClaimInputShape = {
|
|
28
|
+
...CommonClaimUpdateShape,
|
|
29
|
+
toLinearIssue: z.string().min(1).optional().describe("Destination active Linear issue key."),
|
|
30
|
+
recoverExpiredRunning: z.boolean().optional().default(false).describe("Allow only canonical recovery of an exact expired running lease."),
|
|
31
|
+
};
|
|
32
|
+
export const TransferClaimInputSchema = z.object(TransferClaimInputShape);
|
|
33
|
+
function requireIdentity(args, operation) {
|
|
34
|
+
if (!args.assetId || !args.linearIssue || !args.leaseId || !args.operationId) {
|
|
35
|
+
return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, `Canonical ${operation} requires assetId, linearIssue, leaseId, and operationId.`);
|
|
36
|
+
}
|
|
37
|
+
if (args.apply && args.confirmAssetId !== args.assetId) {
|
|
38
|
+
return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, "confirmAssetId must exactly match assetId when apply=true.");
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
export async function handleRenewClaim(rawArgs, context) {
|
|
43
|
+
const parsed = RenewClaimInputSchema.safeParse(rawArgs);
|
|
44
|
+
if (!parsed.success) {
|
|
45
|
+
return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, parsed.error.errors.map((error) => error.message).join("; "));
|
|
46
|
+
}
|
|
47
|
+
const args = parsed.data;
|
|
48
|
+
if (!canonicalMode(context)) {
|
|
49
|
+
return canonicalOperationBlocked("vm_renew", "lease renewal is owned by the canonical inventory lifecycle");
|
|
50
|
+
}
|
|
51
|
+
const identityError = requireIdentity(args, "vm_renew");
|
|
52
|
+
if (identityError)
|
|
53
|
+
return identityError;
|
|
54
|
+
const command = [
|
|
55
|
+
"vm", "renew",
|
|
56
|
+
"--asset-id", args.assetId,
|
|
57
|
+
"--linear-issue", args.linearIssue,
|
|
58
|
+
"--lease-id", args.leaseId,
|
|
59
|
+
"--operation-id", args.operationId,
|
|
60
|
+
];
|
|
61
|
+
if (args.ttlHours !== undefined)
|
|
62
|
+
command.push("--ttl-hours", String(args.ttlHours));
|
|
63
|
+
if (args.allowRunning)
|
|
64
|
+
command.push("--allow-running");
|
|
65
|
+
if (args.replaceClosedClaim)
|
|
66
|
+
command.push("--replace-closed-claim");
|
|
67
|
+
if (args.receiptFile)
|
|
68
|
+
command.push("--receipt-file", args.receiptFile);
|
|
69
|
+
if (args.apply)
|
|
70
|
+
command.push("--apply", "--confirm-asset-id", args.confirmAssetId);
|
|
71
|
+
return runCanonicalOperation(context.canonicalBridge, "vm_renew", command);
|
|
72
|
+
}
|
|
73
|
+
export async function handleTransferClaim(rawArgs, context) {
|
|
74
|
+
const parsed = TransferClaimInputSchema.safeParse(rawArgs);
|
|
75
|
+
if (!parsed.success) {
|
|
76
|
+
return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, parsed.error.errors.map((error) => error.message).join("; "));
|
|
77
|
+
}
|
|
78
|
+
const args = parsed.data;
|
|
79
|
+
if (!canonicalMode(context)) {
|
|
80
|
+
return canonicalOperationBlocked("vm_transfer", "lease transfer is owned by the canonical inventory lifecycle");
|
|
81
|
+
}
|
|
82
|
+
const identityError = requireIdentity(args, "vm_transfer");
|
|
83
|
+
if (identityError)
|
|
84
|
+
return identityError;
|
|
85
|
+
if (!args.toLinearIssue) {
|
|
86
|
+
return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, "Canonical vm_transfer requires toLinearIssue.");
|
|
87
|
+
}
|
|
88
|
+
const command = [
|
|
89
|
+
"vm", "transfer",
|
|
90
|
+
"--asset-id", args.assetId,
|
|
91
|
+
"--linear-issue", args.linearIssue,
|
|
92
|
+
"--lease-id", args.leaseId,
|
|
93
|
+
"--to-linear-issue", args.toLinearIssue,
|
|
94
|
+
"--operation-id", args.operationId,
|
|
95
|
+
];
|
|
96
|
+
if (args.ttlHours !== undefined)
|
|
97
|
+
command.push("--ttl-hours", String(args.ttlHours));
|
|
98
|
+
if (args.recoverExpiredRunning)
|
|
99
|
+
command.push("--recover-expired-running");
|
|
100
|
+
if (args.receiptFile)
|
|
101
|
+
command.push("--receipt-file", args.receiptFile);
|
|
102
|
+
if (args.apply)
|
|
103
|
+
command.push("--apply", "--confirm-asset-id", args.confirmAssetId);
|
|
104
|
+
return runCanonicalOperation(context.canonicalBridge, "vm_transfer", command);
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=claim-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim-lifecycle.js","sourceRoot":"","sources":["../../../src/tools/claim-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ import { ToolContext } from "./list-hosts.js";
|
|
|
17
17
|
export * from "./list-hosts.js";
|
|
18
18
|
export * from "./list-inventory.js";
|
|
19
19
|
export * from "./slot-tools.js";
|
|
20
|
+
export * from "./claim-lifecycle.js";
|
|
20
21
|
export * from "./purge-slots.js";
|
|
21
22
|
export * from "./provision-tools.js";
|
|
22
23
|
export * from "./vm-action.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAIL,WAAW,EACZ,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAIL,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAyIzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AAEnC;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CA+Y9E"}
|
package/dist/src/tools/index.js
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
import { ListHostsInputShape, handleListHosts, } from "./list-hosts.js";
|
|
16
16
|
import { ListInventoryInputShape, handleListInventory, } from "./list-inventory.js";
|
|
17
17
|
import { ClaimSlotInputShape, handleClaimSlot, ReleaseSlotInputShape, handleReleaseSlot, ListSlotsInputShape, handleListSlots, } from "./slot-tools.js";
|
|
18
|
+
import { RenewClaimInputShape, handleRenewClaim, TransferClaimInputShape, handleTransferClaim, } from "./claim-lifecycle.js";
|
|
18
19
|
import { PurgeSlotsInputShape, handlePurgeSlots, } from "./purge-slots.js";
|
|
19
20
|
import { ProvisionVmInputShape, handleProvisionVm, AutoProvisionVmInputShape, handleAutoProvisionVm, } from "./provision-tools.js";
|
|
20
21
|
import { VmActionInputShape, handleVmAction, } from "./vm-action.js";
|
|
@@ -36,6 +37,7 @@ import { canonicalMode, canonicalOperationBlocked } from "./canonical-guard.js";
|
|
|
36
37
|
export * from "./list-hosts.js";
|
|
37
38
|
export * from "./list-inventory.js";
|
|
38
39
|
export * from "./slot-tools.js";
|
|
40
|
+
export * from "./claim-lifecycle.js";
|
|
39
41
|
export * from "./purge-slots.js";
|
|
40
42
|
export * from "./provision-tools.js";
|
|
41
43
|
export * from "./vm-action.js";
|
|
@@ -63,14 +65,6 @@ export function registerAllTools(server, context) {
|
|
|
63
65
|
// façade narrow until each operation has an exact canonical asset bridge and
|
|
64
66
|
// durable receipt contract.
|
|
65
67
|
const canonicalDirectTools = new Set([
|
|
66
|
-
"list_hosts",
|
|
67
|
-
"claim_slot",
|
|
68
|
-
"release_slot",
|
|
69
|
-
"purge_slots",
|
|
70
|
-
"list_slots",
|
|
71
|
-
"provision_vm",
|
|
72
|
-
"auto_provision_vm",
|
|
73
|
-
"vm_action",
|
|
74
68
|
"appliance_exec",
|
|
75
69
|
"factory_reset_appliance",
|
|
76
70
|
"list_storage",
|
|
@@ -131,6 +125,8 @@ export function registerAllTools(server, context) {
|
|
|
131
125
|
server.tool("release_slot", "Release an active 8GB slot claim by claimId, tag, requester, or Linear issue, with optional automatic destruction of attached test VMs.", ReleaseSlotInputShape, async (args) => {
|
|
132
126
|
return handleReleaseSlot(args, context);
|
|
133
127
|
});
|
|
128
|
+
server.tool("vm_renew", "Renew one exact canonical VM lease under the canonical local and cross-host locks; running guests are allowed only through the canonical metadata-renewal proof path.", RenewClaimInputShape, async (args) => handleRenewClaim(args, context));
|
|
129
|
+
server.tool("vm_transfer", "Transfer one exact canonical VM lease to another active Linear issue; expired-running recovery is a narrow canonical proof path, never a force override.", TransferClaimInputShape, async (args) => handleTransferClaim(args, context));
|
|
134
130
|
// 5. purge_slots
|
|
135
131
|
server.tool("purge_slots", "Automated and on-demand expired slot purge & reclamation engine. Identifies expired or threshold-exceeded slot leases, reclaims hypervisor memory, and destroys attached disposable VMs with non-bypassable guardrails protecting core infrastructure (CUCM, CUBE, templates).", PurgeSlotsInputShape, async (args) => {
|
|
136
132
|
return handlePurgeSlots(args, context);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EACL,mBAAmB,EAEnB,eAAe,GAEhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,uBAAuB,EAEvB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EAEnB,eAAe,EACf,qBAAqB,EAErB,iBAAiB,EACjB,mBAAmB,EAEnB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,oBAAoB,EAEpB,gBAAgB,EAChB,uBAAuB,EAEvB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EAEpB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,qBAAqB,EAErB,iBAAiB,EACjB,yBAAyB,EAEzB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAElB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uBAAuB,EAEvB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EAEtB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EAErB,iBAAiB,EACjB,uBAAuB,EAEvB,mBAAmB,EACnB,sBAAsB,EAEtB,kBAAkB,EAClB,sBAAsB,EAEtB,kBAAkB,EAClB,kBAAkB,EAElB,cAAc,EACd,oBAAoB,EAEpB,gBAAgB,EAChB,wBAAwB,EAExB,oBAAoB,EACpB,0BAA0B,EAE1B,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,4BAA4B,EAE5B,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iCAAiC,EAEjC,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,yBAAyB,EAEzB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,6BAA6B,EAE7B,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEhF,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AAEnC;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,OAAoB;IACtE,2EAA2E;IAC3E,4EAA4E;IAC5E,2EAA2E;IAC3E,6EAA6E;IAC7E,4BAA4B;IAC5B,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;QACnC,gBAAgB;QAChB,yBAAyB;QACzB,cAAc;QACd,gBAAgB;QAChB,eAAe;QACf,gBAAgB;QAChB,WAAW;QACX,aAAa;QACb,iBAAiB;QACjB,mBAAmB;QACnB,sBAAsB;QACtB,2BAA2B;QAC3B,mBAAmB;QACnB,wBAAwB;QACxB,YAAY;QACZ,YAAY;QACZ,cAAc;QACd,gBAAgB;QAChB,gBAAgB;QAChB,sBAAsB;QACtB,sBAAsB;QACtB,qBAAqB;KACtB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAgC,CAAC;IACxE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAgC,CAAC;IAC5E,MAAc,CAAC,IAAI,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,OAAO,OAAO,KAAK,UAAU;YAAE,OAAO,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,KAAK,EAAE,QAAiB,EAAE,EAAE;YAC1C,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7D,OAAO,yBAAyB,CAC9B,IAAI,EACJ,kGAAkG,CACnG,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,6MAA6M,EAC7M,sBAAsB,EACtB,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAClD,CAAC;IAEF,6CAA6C;IAC7C,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,gMAAgM,EAChM,0BAA0B,EAC1B,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC,CACF,CAAC;IAEF,gBAAgB;IAChB,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,+JAA+J,EAC/J,mBAAmB,EACnB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,CACF,CAAC;IAEF,oBAAoB;IACpB,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,gJAAgJ,EAChJ,uBAAuB,EACvB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,CACF,CAAC;IAEF,gBAAgB;IAChB,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,qPAAqP,EACrP,mBAAmB,EACnB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,CACF,CAAC;IAEF,kBAAkB;IAClB,MAAM,CAAC,IAAI,CACT,cAAc,EACd,yIAAyI,EACzI,qBAAqB,EACrB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,UAAU,EACV,uKAAuK,EACvK,oBAAoB,EACpB,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAChD,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,aAAa,EACb,0JAA0J,EAC1J,uBAAuB,EACvB,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CACnD,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,IAAI,CACT,aAAa,EACb,gRAAgR,EAChR,oBAAoB,EACpB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC,CACF,CAAC;IAEF,kBAAkB;IAClB,MAAM,CAAC,IAAI,CACT,cAAc,EACd,oKAAoK,EACpK,qBAAqB,EACrB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC,CACF,CAAC;IAEF,uBAAuB;IACvB,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,4TAA4T,EAC5T,yBAAyB,EACzB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC,CACF,CAAC;IAEF,eAAe;IACf,MAAM,CAAC,IAAI,CACT,WAAW,EACX,4NAA4N,EAC5N,kBAAkB,EAClB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,CACF,CAAC;IAEF,oBAAoB;IACpB,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,wMAAwM,EACxM,uBAAuB,EACvB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,CACF,CAAC;IAEF,6BAA6B;IAC7B,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,uMAAuM,EACvM,sBAAsB,EACtB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC,CACF,CAAC;IAEF,mBAAmB;IACnB,MAAM,CAAC,IAAI,CACT,cAAc,EACd,+IAA+I,EAC/I,qBAAqB,EACrB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC,CACF,CAAC;IAEF,qBAAqB;IACrB,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,wHAAwH,EACxH,uBAAuB,EACvB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,CACF,CAAC;IAEF,oBAAoB;IACpB,MAAM,CAAC,IAAI,CACT,eAAe,EACf,6JAA6J,EAC7J,sBAAsB,EACtB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC,CACF,CAAC;IAEF,uEAAuE;IACvE,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,iLAAiL,EACjL,mBAAmB,EACnB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,CACF,CAAC;IAEF,qBAAqB;IACrB,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,sMAAsM,EACtM,sBAAsB,EACtB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC,CACF,CAAC;IAEF,gBAAgB;IAChB,MAAM,CAAC,IAAI,CACT,WAAW,EACX,6IAA6I,EAC7I,kBAAkB,EAClB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,CACF,CAAC;IAEF,kBAAkB;IAClB,MAAM,CAAC,IAAI,CACT,aAAa,EACb,uEAAuE,EACvE,oBAAoB,EACpB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC,CACF,CAAC;IAEF,sBAAsB;IACtB,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,+EAA+E,EAC/E,wBAAwB,EACxB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC,CACF,CAAC;IAEF,wBAAwB;IACxB,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,8GAA8G,EAC9G,0BAA0B,EAC1B,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC,CACF,CAAC;IAEF,2BAA2B;IAC3B,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,wOAAwO,EACxO,4BAA4B,EAC5B,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC,CACF,CAAC;IAEF,gCAAgC;IAChC,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,0PAA0P,EAC1P,iCAAiC,EACjC,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,6BAA6B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC,CACF,CAAC;IAEF,wBAAwB;IACxB,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,mMAAmM,EACnM,yBAAyB,EACzB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC,CACF,CAAC;IAEF,6BAA6B;IAC7B,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,kKAAkK,EAClK,6BAA6B,EAC7B,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,wHAAwH,EACxH,mBAAmB,EACnB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,CACF,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,2GAA2G,EAC3G,mBAAmB,EACnB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,CACF,CAAC;IAEF,mBAAmB;IACnB,MAAM,CAAC,IAAI,CACT,cAAc,EACd,mFAAmF,EACnF,qBAAqB,EACrB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC,CACF,CAAC;IAEF,qBAAqB;IACrB,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,mJAAmJ,EACnJ,uBAAuB,EACvB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,CACF,CAAC;IAEF,qBAAqB;IACrB,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,uJAAuJ,EACvJ,sBAAsB,EACtB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC,CACF,CAAC;IAEF,2BAA2B;IAC3B,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,qKAAqK,EACrK,4BAA4B,EAC5B,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC,CACF,CAAC;IAEF,wBAAwB;IACxB,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,4MAA4M,EAC5M,yBAAyB,EACzB,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC,CACF,CAAC;IAEF,2BAA2B;IAC3B,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,kLAAkL,EAClL,2BAA2B,EAC3B,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC,CACF,CAAC;IAEF,0BAA0B;IAC1B,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,qLAAqL,EACrL,2BAA2B,EAC3B,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,OAAO,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-hosts.d.ts","sourceRoot":"","sources":["../../../src/tools/list-hosts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAA2C,MAAM,iBAAiB,CAAC;AAE1F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"list-hosts.d.ts","sourceRoot":"","sources":["../../../src/tools/list-hosts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAA2C,MAAM,iBAAiB,CAAC;AAE1F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IACvC,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC;;;;OAIG;IACH,WAAW,CAAC,EAAE,0BAA0B,CAAC;IACzC,mFAAmF;IACnF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,kBAAkB,CAAC;CACtC;AAED,eAAO,MAAM,mBAAmB;;;;CAgB/B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAAgC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAErE,wBAAsB,eAAe,CACnC,OAAO,EAAE,iBAAiB,YAAK,EAC/B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CA4EzB"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import { ProxmoxErrorCode, createToolErrorResult } from "../types/mcp.js";
|
|
8
8
|
import { formatHostSummary, formatUnifiedHostCapacities } from "../utils/formatters.js";
|
|
9
|
+
import { canonicalMode, runCanonicalOperation } from "./canonical-guard.js";
|
|
9
10
|
export const ListHostsInputShape = {
|
|
10
11
|
host: z
|
|
11
12
|
.enum(["proxmox-lab", "proxmox-mini", "proxmox-minis-lab", "esxi-intel-192-168-123-176", "all"])
|
|
@@ -27,6 +28,12 @@ export const ListHostsInputSchema = z.object(ListHostsInputShape);
|
|
|
27
28
|
export async function handleListHosts(rawArgs = {}, context) {
|
|
28
29
|
try {
|
|
29
30
|
const args = ListHostsInputSchema.parse(rawArgs);
|
|
31
|
+
if (canonicalMode(context)) {
|
|
32
|
+
if (args.host !== "all" || args.hypervisorType !== "all" || args.refresh) {
|
|
33
|
+
return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, "Canonical list_hosts returns the complete inventory-bound host projection; filter the returned records without a second control plane.");
|
|
34
|
+
}
|
|
35
|
+
return runCanonicalOperation(context.canonicalBridge, "list_hosts", ["proxmox", "discover", "--all", "--full"]);
|
|
36
|
+
}
|
|
30
37
|
const hostFilter = args.host === "all" ? undefined : args.host;
|
|
31
38
|
if (context.hypervisorManager) {
|
|
32
39
|
const capacities = await context.hypervisorManager.listAllHostsCapacity({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-hosts.js","sourceRoot":"","sources":["../../../src/tools/list-hosts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAgB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"list-hosts.js","sourceRoot":"","sources":["../../../src/tools/list-hosts.ts"],"names":[],"mappings":"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"}
|