@calltelemetry/ct-lab-mcp 0.8.127 → 0.8.129
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/dist/src/generated-version.d.ts +1 -1
- package/dist/src/generated-version.js +1 -1
- package/dist/src/lab-exec/claim-resolve.d.ts +10 -1
- package/dist/src/lab-exec/claim-resolve.d.ts.map +1 -1
- package/dist/src/lab-exec/claim-resolve.js +97 -11
- package/dist/src/lab-exec/claim-resolve.js.map +1 -1
- package/dist/src/lab-exec/contract.d.ts +81 -0
- package/dist/src/lab-exec/contract.d.ts.map +1 -1
- package/dist/src/lab-exec/contract.js +69 -0
- package/dist/src/lab-exec/contract.js.map +1 -1
- package/dist/src/lab-exec/executor.d.ts +11 -1
- package/dist/src/lab-exec/executor.d.ts.map +1 -1
- package/dist/src/lab-exec/executor.js +28 -1
- package/dist/src/lab-exec/executor.js.map +1 -1
- package/dist/src/lab-exec/remote.d.ts +7 -1
- package/dist/src/lab-exec/remote.d.ts.map +1 -1
- package/dist/src/lab-exec/remote.js +58 -1
- package/dist/src/lab-exec/remote.js.map +1 -1
- package/dist/src/lab-exec/result.d.ts +25 -0
- package/dist/src/lab-exec/result.d.ts.map +1 -1
- package/dist/src/lab-exec/result.js +69 -0
- package/dist/src/lab-exec/result.js.map +1 -1
- package/dist/src/lab-exec/server.d.ts.map +1 -1
- package/dist/src/lab-exec/server.js +116 -2
- package/dist/src/lab-exec/server.js.map +1 -1
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +4 -0
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/lab-host-cert.d.ts +6 -0
- package/dist/src/tools/lab-host-cert.d.ts.map +1 -0
- package/dist/src/tools/lab-host-cert.js +37 -0
- package/dist/src/tools/lab-host-cert.js.map +1 -0
- package/dist/src/tools/lab-host-key-enroll.d.ts +6 -0
- package/dist/src/tools/lab-host-key-enroll.d.ts.map +1 -0
- package/dist/src/tools/lab-host-key-enroll.js +37 -0
- package/dist/src/tools/lab-host-key-enroll.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** MCP Tool: lab_host_cert — lab host CA certificate for one enrolled, claimed guest (REL-1972, ADR 0939). */
|
|
2
|
+
import { ProxmoxErrorCode, createToolErrorResult } from "../types/mcp.js";
|
|
3
|
+
import { LabHostCertInputSchema } from "../lab-exec/contract.js";
|
|
4
|
+
import { ClaimResolvingExecutor } from "../lab-exec/claim-resolve.js";
|
|
5
|
+
import { defaultOperatorClaimClient } from "./renewal-claim.js";
|
|
6
|
+
import { LocalLabExecutor } from "../lab-exec/executor.js";
|
|
7
|
+
import { hostCertToolResult } from "../lab-exec/result.js";
|
|
8
|
+
import { canonicalOperationBlocked } from "./canonical-guard.js";
|
|
9
|
+
export { LabHostCertInputShape } from "../lab-exec/contract.js";
|
|
10
|
+
function executorFor(context) {
|
|
11
|
+
if (context.labExecutor)
|
|
12
|
+
return context.labExecutor;
|
|
13
|
+
if (context.canonicalBridge?.isConfigured)
|
|
14
|
+
return new ClaimResolvingExecutor(new LocalLabExecutor(context.canonicalBridge), defaultOperatorClaimClient());
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
export async function handleLabHostCert(rawArgs, context) {
|
|
18
|
+
const parsed = LabHostCertInputSchema.safeParse(rawArgs ?? {});
|
|
19
|
+
if (!parsed.success) {
|
|
20
|
+
return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, parsed.error.errors.map((e) => `${e.path.join(".") || "input"}: ${e.message}`).join("; "), { operation: "lab_host_cert" });
|
|
21
|
+
}
|
|
22
|
+
const executor = executorFor(context);
|
|
23
|
+
if (!executor) {
|
|
24
|
+
return canonicalOperationBlocked("lab_host_cert", "configure CT_LAB_CANONICAL_CLI on a gateway, or CT_LAB_EXECUTOR_URL and its service token on the Worker");
|
|
25
|
+
}
|
|
26
|
+
const id = parsed.data.assetId ?? parsed.data.claimId;
|
|
27
|
+
if (!executor.hostCert) {
|
|
28
|
+
return createToolErrorResult("LAB_HOST_CERT_UNAVAILABLE", "this executor does not support host certificates", { operation: "lab_host_cert", executor: executor.location });
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
return hostCertToolResult(await executor.hostCert(parsed.data, context.caller), id);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return createToolErrorResult("LAB_HOST_CERT_UNAVAILABLE", `${error instanceof Error ? error.message : String(error)}${parsed.data.apply ? ". The outcome is unconfirmed: dry-run again before retrying." : ""}`, { operation: "lab_host_cert", ...(parsed.data.assetId ? { assetId: parsed.data.assetId } : { claimId: parsed.data.claimId }), executor: executor.location });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=lab-host-cert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lab-host-cert.js","sourceRoot":"","sources":["../../../src/tools/lab-host-cert.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAE9G,OAAO,EAAkB,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAoB,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAGjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,SAAS,WAAW,CAAC,OAAoB;IACvC,IAAI,OAAO,CAAC,WAAW;QAAE,OAAO,OAAO,CAAC,WAAW,CAAC;IACpD,IAAI,OAAO,CAAC,eAAe,EAAE,YAAY;QAAE,OAAO,IAAI,sBAAsB,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,0BAA0B,EAAE,CAAC,CAAC;IAC1J,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAgB,EAAE,OAAoB;IAC5E,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,qBAAqB,CAC1B,gBAAgB,CAAC,gBAAgB,EACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EACzF,EAAE,SAAS,EAAE,eAAe,EAAE,CAC/B,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,yBAAyB,CAC9B,eAAe,EACf,yGAAyG,CAC1G,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IACtD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvB,OAAO,qBAAqB,CAAC,2BAA2B,EAAE,kDAAkD,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7K,CAAC;IACD,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,qBAAqB,CAC1B,2BAA2B,EAC3B,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,EAAE,EAAE,EACrJ,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAC5J,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** MCP Tool: lab_host_key_enroll — host-key enrollment ladder for one claimed guest (REL-1971, ADR 0934). */
|
|
2
|
+
import { CallToolResult } from "../types/mcp.js";
|
|
3
|
+
import type { ToolContext } from "./list-hosts.js";
|
|
4
|
+
export { LabHostKeyEnrollInputShape } from "../lab-exec/contract.js";
|
|
5
|
+
export declare function handleLabHostKeyEnroll(rawArgs: unknown, context: ToolContext): Promise<CallToolResult>;
|
|
6
|
+
//# sourceMappingURL=lab-host-key-enroll.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lab-host-key-enroll.d.ts","sourceRoot":"","sources":["../../../src/tools/lab-host-key-enroll.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAE7G,OAAO,EAAE,cAAc,EAA2C,MAAM,iBAAiB,CAAC;AAO1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAQrE,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CA6B5G"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** MCP Tool: lab_host_key_enroll — host-key enrollment ladder for one claimed guest (REL-1971, ADR 0934). */
|
|
2
|
+
import { ProxmoxErrorCode, createToolErrorResult } from "../types/mcp.js";
|
|
3
|
+
import { LabHostKeyEnrollInputSchema } from "../lab-exec/contract.js";
|
|
4
|
+
import { ClaimResolvingExecutor } from "../lab-exec/claim-resolve.js";
|
|
5
|
+
import { defaultOperatorClaimClient } from "./renewal-claim.js";
|
|
6
|
+
import { LocalLabExecutor } from "../lab-exec/executor.js";
|
|
7
|
+
import { hostKeyEnrollToolResult } from "../lab-exec/result.js";
|
|
8
|
+
import { canonicalOperationBlocked } from "./canonical-guard.js";
|
|
9
|
+
export { LabHostKeyEnrollInputShape } from "../lab-exec/contract.js";
|
|
10
|
+
function executorFor(context) {
|
|
11
|
+
if (context.labExecutor)
|
|
12
|
+
return context.labExecutor;
|
|
13
|
+
if (context.canonicalBridge?.isConfigured)
|
|
14
|
+
return new ClaimResolvingExecutor(new LocalLabExecutor(context.canonicalBridge), defaultOperatorClaimClient());
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
export async function handleLabHostKeyEnroll(rawArgs, context) {
|
|
18
|
+
const parsed = LabHostKeyEnrollInputSchema.safeParse(rawArgs ?? {});
|
|
19
|
+
if (!parsed.success) {
|
|
20
|
+
return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, parsed.error.errors.map((e) => `${e.path.join(".") || "input"}: ${e.message}`).join("; "), { operation: "lab_host_key_enroll" });
|
|
21
|
+
}
|
|
22
|
+
const executor = executorFor(context);
|
|
23
|
+
if (!executor) {
|
|
24
|
+
return canonicalOperationBlocked("lab_host_key_enroll", "configure CT_LAB_CANONICAL_CLI on a gateway, or CT_LAB_EXECUTOR_URL and its service token on the Worker");
|
|
25
|
+
}
|
|
26
|
+
const id = parsed.data.assetId ?? parsed.data.claimId;
|
|
27
|
+
if (!executor.hostKeyEnroll) {
|
|
28
|
+
return createToolErrorResult("LAB_HOST_KEY_ENROLL_UNAVAILABLE", "this executor does not support host-key enrollment", { operation: "lab_host_key_enroll", executor: executor.location });
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
return hostKeyEnrollToolResult(await executor.hostKeyEnroll(parsed.data, context.caller), id);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return createToolErrorResult("LAB_HOST_KEY_ENROLL_UNAVAILABLE", `${error instanceof Error ? error.message : String(error)}${parsed.data.apply ? ". The outcome is unconfirmed: dry-run again before retrying." : ""}`, { operation: "lab_host_key_enroll", ...(parsed.data.assetId ? { assetId: parsed.data.assetId } : { claimId: parsed.data.claimId }), executor: executor.location });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=lab-host-key-enroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lab-host-key-enroll.js","sourceRoot":"","sources":["../../../src/tools/lab-host-key-enroll.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.129",
|
|
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",
|