@calltelemetry/ct-lab-mcp 0.8.104 → 0.8.106

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +13 -3
  2. package/assets/stig/SHA256SUMS +1 -0
  3. package/assets/stig/image/verify-image.sh +28 -0
  4. package/dist/src/generated-version.d.ts +1 -1
  5. package/dist/src/generated-version.js +1 -1
  6. package/dist/src/stig/dist.d.ts +121 -0
  7. package/dist/src/stig/dist.d.ts.map +1 -0
  8. package/dist/src/stig/dist.js +234 -0
  9. package/dist/src/stig/dist.js.map +1 -0
  10. package/dist/src/stig/distribution.d.ts +80 -0
  11. package/dist/src/stig/distribution.d.ts.map +1 -0
  12. package/dist/src/stig/distribution.js +335 -0
  13. package/dist/src/stig/distribution.js.map +1 -0
  14. package/dist/src/stig/live.d.ts +56 -4
  15. package/dist/src/stig/live.d.ts.map +1 -1
  16. package/dist/src/stig/live.js +188 -5
  17. package/dist/src/stig/live.js.map +1 -1
  18. package/dist/src/stig/model.d.ts +2 -1
  19. package/dist/src/stig/model.d.ts.map +1 -1
  20. package/dist/src/stig/model.js +7 -2
  21. package/dist/src/stig/model.js.map +1 -1
  22. package/dist/src/stig/nodes.d.ts +52 -12
  23. package/dist/src/stig/nodes.d.ts.map +1 -1
  24. package/dist/src/stig/nodes.js +90 -11
  25. package/dist/src/stig/nodes.js.map +1 -1
  26. package/dist/src/stig/ports.d.ts +64 -2
  27. package/dist/src/stig/ports.d.ts.map +1 -1
  28. package/dist/src/stig/pve.d.ts +21 -0
  29. package/dist/src/stig/pve.d.ts.map +1 -0
  30. package/dist/src/stig/pve.js +26 -0
  31. package/dist/src/stig/pve.js.map +1 -0
  32. package/dist/src/stig/runner.d.ts +30 -9
  33. package/dist/src/stig/runner.d.ts.map +1 -1
  34. package/dist/src/stig/runner.js +98 -78
  35. package/dist/src/stig/runner.js.map +1 -1
  36. package/dist/src/tools/claimed-import-qcow.d.ts.map +1 -1
  37. package/dist/src/tools/claimed-import-qcow.js +9 -1
  38. package/dist/src/tools/claimed-import-qcow.js.map +1 -1
  39. package/dist/src/tools/import-qcow.d.ts +14 -3
  40. package/dist/src/tools/import-qcow.d.ts.map +1 -1
  41. package/dist/src/tools/import-qcow.js +45 -15
  42. package/dist/src/tools/import-qcow.js.map +1 -1
  43. package/dist/src/tools/slot-tools.d.ts +4 -4
  44. package/dist/src/tools/stig-tools.d.ts +26 -8
  45. package/dist/src/tools/stig-tools.d.ts.map +1 -1
  46. package/dist/src/tools/stig-tools.js +66 -21
  47. package/dist/src/tools/stig-tools.js.map +1 -1
  48. package/package.json +1 -1
@@ -16,9 +16,12 @@
16
16
  import { z } from "zod";
17
17
  import { CallToolResult } from "../types/mcp.js";
18
18
  import { ToolContext } from "./list-hosts.js";
19
+ /** Environment variable carrying the operator-minted signed fetch URL (candidate and published). */
20
+ export declare const IMPORT_QCOW_DOWNLOAD_URL_ENV = "CT_IMPORT_QCOW_DOWNLOAD_URL";
19
21
  /**
20
22
  * Published appliance image, the same shape the canonical CLI accepts:
21
- * https://<spaces-host>/ovas/ct-<version>[-rc<N>].qcow2
23
+ * https://download.calltelemetry.com/ct-<version>[-rc<N>].qcow2
24
+ * The version is the same pinned four-part pattern the candidate path uses.
22
25
  */
23
26
  export declare const IMPORT_QCOW_PUBLISHED_URL_PATTERN: RegExp;
24
27
  /**
@@ -42,7 +45,7 @@ export declare const IMPORT_QCOW_SHA256_PATTERN: RegExp;
42
45
  export declare const IMPORT_QCOW_OS_VERSION_PATTERN: RegExp;
43
46
  /**
44
47
  * The release version the image carries, from its identity URL: the candidate
45
- * path version, or the version in ovas/ct-<version>[-rc<N>].qcow2.
48
+ * path version, or the version in the published ct-<version>[-rc<N>].qcow2 filename.
46
49
  */
47
50
  export declare function importQcowVersionFromUrl(imageUrl: string): string;
48
51
  /** DNS-safe lowercase prefix; the canonical CLI appends the VMID. */
@@ -286,7 +289,15 @@ export declare const ImportQcowInputSchema: z.ZodEffects<z.ZodObject<{
286
289
  }>;
287
290
  export type ImportQcowInput = z.infer<typeof ImportQcowInputSchema>;
288
291
  export type ImportQcowRawInput = z.input<typeof ImportQcowInputSchema>;
292
+ /**
293
+ * A published image is only fetchable through an operator-minted Worker-signed URL (ADR 0880): the
294
+ * download host answers 403 to every unsigned GET, so there is deliberately no unsigned fallback. The
295
+ * canonical CLI validates the URL strictly; this gateway-side check only refuses a published request
296
+ * before any claim, lease, or provider call when the environment carries nothing. The message never
297
+ * includes any URL.
298
+ */
299
+ export declare function publishedImportDownloadUrlError(imageUrl: string, env?: NodeJS.ProcessEnv): string | undefined;
289
300
  export declare function buildImportQcowArgs(value: ImportQcowInput, env?: NodeJS.ProcessEnv): string[];
290
301
  export declare function handleProxmoxImportQcow(rawArgs: ImportQcowRawInput | undefined, context: ToolContext): Promise<CallToolResult>;
291
- export declare const IMPORT_QCOW_TOOL_DESCRIPTION = "Plan or apply an appliance QCOW2 import as a disposable Proxmox lab guest through canonical lab-inventory vm provision --source published-qcow (leased, journaled, credential-recoverable). The guest boots awaiting credential enrollment: continue with vm_repair, then finalize, then uat_access. osVersion (the AlmaLinux 9 minor inside the image, e.g. 9.8) is required. imageUrl is exactly one of two identity URL shapes (no query string, no presigned URL): a published image on DigitalOcean Spaces (a release candidate promoted to the public bucket keeps its -rc<N> suffix), https://calltelemetry-releases-nyc3.nyc3.digitaloceanspaces.com/ovas/ct-<version>[-rc<N>].qcow2, or a private CI candidate for an unpublished RC (stored in a separate private bucket, never the public release bucket), https://<32-hex-account-id>.r2.cloudflarestorage.com/ct-ci-candidates/candidates/<version>/<run_id>/ct-<version>.qcow2; during the R2 migration window the legacy Spaces candidate host https://calltelemetry-ci-candidates-nyc3.nyc3.digitaloceanspaces.com/candidates/<version>/<run_id>/ct-<version>.qcow2 is also accepted. Candidates are private and digest-bound; the public publish gate is unchanged. The lab operator supplies any download credential to the canonical CLI through its own environment, never through this tool. Dry-run is default; apply requires the reviewed asset, vm prefix, VMID, and image SHA-256 confirmations. VMID 182 is reserved. The canonical CLI owns digest verification, import, evidence capture, and teardown. The guest disk is thin-only: storage must be lvmthin (default local-lvm); thick or undeterminable storage is refused with THICK_STORAGE_REFUSED before any change.";
302
+ export declare const IMPORT_QCOW_TOOL_DESCRIPTION = "Plan or apply an appliance QCOW2 import as a disposable Proxmox lab guest through canonical lab-inventory vm provision --source published-qcow (leased, journaled, credential-recoverable). The guest boots awaiting credential enrollment: continue with vm_repair, then finalize, then uat_access. osVersion (the AlmaLinux 9 minor inside the image, e.g. 9.8) is required. imageUrl is exactly one of two identity URL shapes (no query string, no presigned URL): a published image on the download Worker host (a release candidate promoted to the public bucket keeps its -rc<N> suffix), https://download.calltelemetry.com/ct-<version>[-rc<N>].qcow2, or a private CI candidate for an unpublished RC (stored in a separate private bucket, never the public release bucket), https://<32-hex-account-id>.r2.cloudflarestorage.com/ct-ci-candidates/candidates/<version>/<run_id>/ct-<version>.qcow2; during the R2 migration window the legacy Spaces candidate host https://calltelemetry-ci-candidates-nyc3.nyc3.digitaloceanspaces.com/candidates/<version>/<run_id>/ct-<version>.qcow2 is also accepted. Candidates are private and digest-bound; the public publish gate is unchanged. The lab operator supplies any download credential to the canonical CLI through the gateway's own environment (CT_IMPORT_QCOW_DOWNLOAD_URL; a published image is refused without it because the download host answers 403 to unsigned requests), never through this tool. Dry-run is default; apply requires the reviewed asset, vm prefix, VMID, and image SHA-256 confirmations. VMID 182 is reserved. The canonical CLI owns digest verification, import, evidence capture, and teardown. The guest disk is thin-only: storage must be lvmthin (default local-lvm); thick or undeterminable storage is refused with THICK_STORAGE_REFUSED before any change.";
292
303
  //# sourceMappingURL=import-qcow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"import-qcow.d.ts","sourceRoot":"","sources":["../../../src/tools/import-qcow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,cAAc,EAGf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAqC9C;;;GAGG;AACH,eAAO,MAAM,iCAAiC,QAE7C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC,QAG7C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,QAEzC,CAAC;AAEF,eAAO,MAAM,6BAA6B,QAKgC,CAAC;AAE3E,eAAO,MAAM,0BAA0B,QAAmB,CAAC;AAE3D,mCAAmC;AACnC,eAAO,MAAM,8BAA8B,QAAgB,CAAC;AAE5D;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED,qEAAqE;AACrE,eAAO,MAAM,6BAA6B,QAA2C,CAAC;AAEtF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFvB,CAAC;AAKX,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA0C,CAAC;AAEnF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEvE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,EAAE,CAwD1G;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CAgEzB;AAED,eAAO,MAAM,4BAA4B,4pDACknD,CAAC"}
1
+ {"version":3,"file":"import-qcow.d.ts","sourceRoot":"","sources":["../../../src/tools/import-qcow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,cAAc,EAGf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiB9C,oGAAoG;AACpG,eAAO,MAAM,4BAA4B,gCAAgC,CAAC;AA4B1E;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,QAE7C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC,QAG7C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,QAEzC,CAAC;AAEF,eAAO,MAAM,6BAA6B,QAKgC,CAAC;AAE3E,eAAO,MAAM,0BAA0B,QAAmB,CAAC;AAE3D,mCAAmC;AACnC,eAAO,MAAM,8BAA8B,QAAgB,CAAC;AAE5D;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOjE;AAED,qEAAqE;AACrE,eAAO,MAAM,6BAA6B,QAA2C,CAAC;AAEtF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFvB,CAAC;AAKX,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA0C,CAAC;AAEnF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEvE;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAQpB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,EAAE,CAwD1G;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CAuEzB;AAED,eAAO,MAAM,4BAA4B,2wDACiuD,CAAC"}
@@ -19,13 +19,20 @@ import { reservedIdentityError } from "./sha-channel.js";
19
19
  import { canonicalOperationAvailable, runCanonicalOperation } from "./canonical-guard.js";
20
20
  import { guardCanonicalThinStorage } from "./thin-storage-policy.js";
21
21
  /**
22
- * Release storage is DigitalOcean Spaces only (ADR 0735); the retired GCS host
23
- * is not accepted. Identity URLs are https only, with no userinfo, port, query
24
- * string, or fragment, so they can never carry a presigned credential. The
25
- * lab operator supplies any download credential to the canonical CLI through
26
- * its own environment, never through this tool.
22
+ * Published release images are served from the root of the R2-backed download Worker host
23
+ * (ADR 0873/0874, REL-1785): `https://download.calltelemetry.com/ct-<version>.qcow2` (the Worker maps
24
+ * it to R2 key `ovas/ct-<version>.qcow2`). The retired DigitalOcean Spaces release host and the retired
25
+ * GCS host are not accepted. Identity URLs are https only, with no userinfo, port, query string, or
26
+ * fragment, so they can never carry a signature. The Worker answers 403 to every unsigned GET, so a
27
+ * published import needs an operator-minted Worker-signed fetch URL, supplied to the canonical CLI only
28
+ * through `CT_IMPORT_QCOW_DOWNLOAD_URL` in the gateway process environment (ADR 0880), never through
29
+ * this tool.
27
30
  */
28
- const IMPORT_QCOW_HOST_SOURCE = "calltelemetry-releases-nyc3\\.nyc3\\.digitaloceanspaces\\.com";
31
+ const IMPORT_QCOW_HOST_SOURCE = "download\\.calltelemetry\\.com";
32
+ /** Environment variable carrying the operator-minted signed fetch URL (candidate and published). */
33
+ export const IMPORT_QCOW_DOWNLOAD_URL_ENV = "CT_IMPORT_QCOW_DOWNLOAD_URL";
34
+ /** Release version carried by an image: four numeric parts with an optional -rc<N> suffix. */
35
+ const IMPORT_QCOW_VERSION_SOURCE = "[0-9]+(?:\\.[0-9]+){3}(?:-rc[0-9]+)?";
29
36
  /**
30
37
  * Private CI candidates live in their OWN bucket: the release bucket's policy makes every object
31
38
  * public-read, so no prefix there can be private. Candidate and published hosts never cross.
@@ -48,9 +55,10 @@ const IMPORT_QCOW_R2_CANDIDATE_PREFIX_SOURCE = `${IMPORT_QCOW_R2_ACCOUNT_SOURCE}
48
55
  const IMPORT_QCOW_LEGACY_CANDIDATE_PREFIX_SOURCE = "calltelemetry-ci-candidates-nyc3\\.nyc3\\.digitaloceanspaces\\.com/";
49
56
  /**
50
57
  * Published appliance image, the same shape the canonical CLI accepts:
51
- * https://<spaces-host>/ovas/ct-<version>[-rc<N>].qcow2
58
+ * https://download.calltelemetry.com/ct-<version>[-rc<N>].qcow2
59
+ * The version is the same pinned four-part pattern the candidate path uses.
52
60
  */
53
- export const IMPORT_QCOW_PUBLISHED_URL_PATTERN = new RegExp(`^https://${IMPORT_QCOW_HOST_SOURCE}/ovas/ct-[0-9]+(?:\\.[0-9]+)+(?:-rc[0-9]+)?\\.qcow2$`);
61
+ export const IMPORT_QCOW_PUBLISHED_URL_PATTERN = new RegExp(`^https://${IMPORT_QCOW_HOST_SOURCE}/ct-${IMPORT_QCOW_VERSION_SOURCE}\\.qcow2$`);
54
62
  /**
55
63
  * Private CI candidate for an unpublished RC that has not passed the public
56
64
  * publish gate (ADR 0727):
@@ -67,7 +75,7 @@ export const IMPORT_QCOW_CANDIDATE_URL_PATTERN = new RegExp(`^https://(?:${IMPOR
67
75
  * reviewed request rather than an allowlist edit.
68
76
  */
69
77
  export const IMPORT_QCOW_IMAGE_URL_PATTERN = new RegExp(`(?:${IMPORT_QCOW_PUBLISHED_URL_PATTERN.source})|(?:${IMPORT_QCOW_CANDIDATE_URL_PATTERN.source})`);
70
- export const IMPORT_QCOW_IMAGE_URL_MESSAGE = "must be https://calltelemetry-releases-nyc3.nyc3.digitaloceanspaces.com/ovas/ct-<version>[-rc<N>].qcow2 " +
78
+ export const IMPORT_QCOW_IMAGE_URL_MESSAGE = "must be https://download.calltelemetry.com/ct-<version>[-rc<N>].qcow2 " +
71
79
  "(published) or https://<32-hex-account-id>.r2.cloudflarestorage.com/ct-ci-candidates/candidates/<version>/<run_id>/ct-<version>.qcow2 " +
72
80
  "(private CI candidate on R2; during the migration window the legacy https://calltelemetry-ci-candidates-nyc3.nyc3.digitaloceanspaces.com/candidates/<version>/<run_id>/ct-<version>.qcow2 is also accepted; " +
73
81
  "<version> has four numeric parts with optional -rc<N> and must match in both positions; " +
@@ -77,15 +85,15 @@ export const IMPORT_QCOW_SHA256_PATTERN = /^[a-f0-9]{64}$/;
77
85
  export const IMPORT_QCOW_OS_VERSION_PATTERN = /^9\.[0-9]+$/;
78
86
  /**
79
87
  * The release version the image carries, from its identity URL: the candidate
80
- * path version, or the version in ovas/ct-<version>[-rc<N>].qcow2.
88
+ * path version, or the version in the published ct-<version>[-rc<N>].qcow2 filename.
81
89
  */
82
90
  export function importQcowVersionFromUrl(imageUrl) {
83
91
  const candidate = IMPORT_QCOW_CANDIDATE_URL_PATTERN.exec(imageUrl);
84
92
  if (candidate?.groups?.version)
85
93
  return candidate.groups.version;
86
- const published = /\/ovas\/ct-([0-9]+(?:\.[0-9]+)+(?:-rc[0-9]+)?)\.qcow2$/.exec(imageUrl);
87
- if (published)
88
- return published[1];
94
+ if (IMPORT_QCOW_PUBLISHED_URL_PATTERN.test(imageUrl)) {
95
+ return imageUrl.slice(imageUrl.lastIndexOf("/ct-") + "/ct-".length, -".qcow2".length);
96
+ }
89
97
  throw new Error("image URL does not carry a release version");
90
98
  }
91
99
  /** DNS-safe lowercase prefix; the canonical CLI appends the VMID. */
@@ -110,7 +118,7 @@ export const ImportQcowInputShape = {
110
118
  .string()
111
119
  .trim()
112
120
  .regex(IMPORT_QCOW_IMAGE_URL_PATTERN, IMPORT_QCOW_IMAGE_URL_MESSAGE)
113
- .describe("Identity URL of the appliance QCOW2 object: either a published image (/ovas/ct-<version>[-rc<N>].qcow2) or a private CI candidate on Cloudflare R2 (https://<32-hex-account-id>.r2.cloudflarestorage.com/ct-ci-candidates/candidates/<version>/<run_id>/ct-<version>.qcow2; the legacy DigitalOcean Spaces candidate host is also accepted during the migration window). No query string or presigned URL; the operator supplies any download credential to the canonical CLI through its own environment. Only the host-and-path shape is allowlisted; the digest is bound per request."),
121
+ .describe("Identity URL of the appliance QCOW2 object: either a published image (https://download.calltelemetry.com/ct-<version>[-rc<N>].qcow2) or a private CI candidate on Cloudflare R2 (https://<32-hex-account-id>.r2.cloudflarestorage.com/ct-ci-candidates/candidates/<version>/<run_id>/ct-<version>.qcow2; the legacy DigitalOcean Spaces candidate host is also accepted during the migration window). No query string or presigned URL; the operator supplies any download credential to the canonical CLI through the gateway's own environment (a published image requires an operator-minted signed URL there). Only the host-and-path shape is allowlisted; the digest is bound per request."),
114
122
  imageSha256: z
115
123
  .string()
116
124
  .trim()
@@ -205,6 +213,22 @@ export const ImportQcowInputSchema = ImportQcowInputObjectSchema.superRefine((va
205
213
  });
206
214
  }
207
215
  });
216
+ /**
217
+ * A published image is only fetchable through an operator-minted Worker-signed URL (ADR 0880): the
218
+ * download host answers 403 to every unsigned GET, so there is deliberately no unsigned fallback. The
219
+ * canonical CLI validates the URL strictly; this gateway-side check only refuses a published request
220
+ * before any claim, lease, or provider call when the environment carries nothing. The message never
221
+ * includes any URL.
222
+ */
223
+ export function publishedImportDownloadUrlError(imageUrl, env = process.env) {
224
+ if (!IMPORT_QCOW_PUBLISHED_URL_PATTERN.test(imageUrl))
225
+ return undefined;
226
+ if (env[IMPORT_QCOW_DOWNLOAD_URL_ENV]?.trim())
227
+ return undefined;
228
+ return (`a published image import requires ${IMPORT_QCOW_DOWNLOAD_URL_ENV} in the gateway environment: ` +
229
+ "the download host rejects unsigned requests, so an operator must mint a short-lived signed fetch URL " +
230
+ "and set it on the lab gateway process (it is never a tool input); no unsigned fallback exists and nothing was changed");
231
+ }
208
232
  export function buildImportQcowArgs(value, env = process.env) {
209
233
  const workspaceRoot = value.workspaceRoot ?? env.CT_WORKSPACE_ROOT;
210
234
  if (!workspaceRoot) {
@@ -281,6 +305,12 @@ export async function handleProxmoxImportQcow(rawArgs, context) {
281
305
  if (!canonicalOperationAvailable(context, "proxmox_import_qcow")) {
282
306
  return createToolErrorResult("CANONICAL_OPERATION_REQUIRES_BRIDGE", "proxmox_import_qcow requires the canonical lab bridge (CT_LAB_CANONICAL_CLI); image qualification, digest verification, and guest evidence must be evaluated by lab-inventory vm provision --source published-qcow", { operation: "proxmox_import_qcow" });
283
307
  }
308
+ const missingDownloadUrl = publishedImportDownloadUrlError(args.imageUrl);
309
+ if (missingDownloadUrl) {
310
+ return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, missingDownloadUrl, {
311
+ operation: "proxmox_import_qcow",
312
+ });
313
+ }
284
314
  let command;
285
315
  try {
286
316
  command = buildImportQcowArgs(args);
@@ -304,5 +334,5 @@ export async function handleProxmoxImportQcow(rawArgs, context) {
304
334
  // success.
305
335
  args.apply ? 3_600_000 : 120_000);
306
336
  }
307
- export const IMPORT_QCOW_TOOL_DESCRIPTION = "Plan or apply an appliance QCOW2 import as a disposable Proxmox lab guest through canonical lab-inventory vm provision --source published-qcow (leased, journaled, credential-recoverable). The guest boots awaiting credential enrollment: continue with vm_repair, then finalize, then uat_access. osVersion (the AlmaLinux 9 minor inside the image, e.g. 9.8) is required. imageUrl is exactly one of two identity URL shapes (no query string, no presigned URL): a published image on DigitalOcean Spaces (a release candidate promoted to the public bucket keeps its -rc<N> suffix), https://calltelemetry-releases-nyc3.nyc3.digitaloceanspaces.com/ovas/ct-<version>[-rc<N>].qcow2, or a private CI candidate for an unpublished RC (stored in a separate private bucket, never the public release bucket), https://<32-hex-account-id>.r2.cloudflarestorage.com/ct-ci-candidates/candidates/<version>/<run_id>/ct-<version>.qcow2; during the R2 migration window the legacy Spaces candidate host https://calltelemetry-ci-candidates-nyc3.nyc3.digitaloceanspaces.com/candidates/<version>/<run_id>/ct-<version>.qcow2 is also accepted. Candidates are private and digest-bound; the public publish gate is unchanged. The lab operator supplies any download credential to the canonical CLI through its own environment, never through this tool. Dry-run is default; apply requires the reviewed asset, vm prefix, VMID, and image SHA-256 confirmations. VMID 182 is reserved. The canonical CLI owns digest verification, import, evidence capture, and teardown. The guest disk is thin-only: storage must be lvmthin (default local-lvm); thick or undeterminable storage is refused with THICK_STORAGE_REFUSED before any change.";
337
+ export const IMPORT_QCOW_TOOL_DESCRIPTION = "Plan or apply an appliance QCOW2 import as a disposable Proxmox lab guest through canonical lab-inventory vm provision --source published-qcow (leased, journaled, credential-recoverable). The guest boots awaiting credential enrollment: continue with vm_repair, then finalize, then uat_access. osVersion (the AlmaLinux 9 minor inside the image, e.g. 9.8) is required. imageUrl is exactly one of two identity URL shapes (no query string, no presigned URL): a published image on the download Worker host (a release candidate promoted to the public bucket keeps its -rc<N> suffix), https://download.calltelemetry.com/ct-<version>[-rc<N>].qcow2, or a private CI candidate for an unpublished RC (stored in a separate private bucket, never the public release bucket), https://<32-hex-account-id>.r2.cloudflarestorage.com/ct-ci-candidates/candidates/<version>/<run_id>/ct-<version>.qcow2; during the R2 migration window the legacy Spaces candidate host https://calltelemetry-ci-candidates-nyc3.nyc3.digitaloceanspaces.com/candidates/<version>/<run_id>/ct-<version>.qcow2 is also accepted. Candidates are private and digest-bound; the public publish gate is unchanged. The lab operator supplies any download credential to the canonical CLI through the gateway's own environment (CT_IMPORT_QCOW_DOWNLOAD_URL; a published image is refused without it because the download host answers 403 to unsigned requests), never through this tool. Dry-run is default; apply requires the reviewed asset, vm prefix, VMID, and image SHA-256 confirmations. VMID 182 is reserved. The canonical CLI owns digest verification, import, evidence capture, and teardown. The guest disk is thin-only: storage must be lvmthin (default local-lvm); thick or undeterminable storage is refused with THICK_STORAGE_REFUSED before any change.";
308
338
  //# sourceMappingURL=import-qcow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"import-qcow.js","sourceRoot":"","sources":["../../../src/tools/import-qcow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import-qcow.js","sourceRoot":"","sources":["../../../src/tools/import-qcow.ts"],"names":[],"mappings":"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"}
@@ -106,8 +106,8 @@ export declare const ClaimSlotInputSchema: z.ZodEffects<z.ZodObject<{
106
106
  operationId?: string | undefined;
107
107
  confirmAssetId?: string | undefined;
108
108
  allowEsxiSlots?: boolean | undefined;
109
- receiptFile?: string | undefined;
110
109
  claimNode?: "proxmox" | "esxi" | "minis" | "ibm64" | undefined;
110
+ receiptFile?: string | undefined;
111
111
  claimVmid?: number | undefined;
112
112
  claimVmName?: string | undefined;
113
113
  placementSeed?: string | undefined;
@@ -138,8 +138,8 @@ export declare const ClaimSlotInputSchema: z.ZodEffects<z.ZodObject<{
138
138
  apply?: boolean | undefined;
139
139
  confirmAssetId?: string | undefined;
140
140
  allowEsxiSlots?: boolean | undefined;
141
- receiptFile?: string | undefined;
142
141
  claimNode?: "proxmox" | "esxi" | "minis" | "ibm64" | undefined;
142
+ receiptFile?: string | undefined;
143
143
  claimVmid?: number | undefined;
144
144
  claimVmName?: string | undefined;
145
145
  replaceClosedClaim?: boolean | undefined;
@@ -174,8 +174,8 @@ export declare const ClaimSlotInputSchema: z.ZodEffects<z.ZodObject<{
174
174
  operationId?: string | undefined;
175
175
  confirmAssetId?: string | undefined;
176
176
  allowEsxiSlots?: boolean | undefined;
177
- receiptFile?: string | undefined;
178
177
  claimNode?: "proxmox" | "esxi" | "minis" | "ibm64" | undefined;
178
+ receiptFile?: string | undefined;
179
179
  claimVmid?: number | undefined;
180
180
  claimVmName?: string | undefined;
181
181
  placementSeed?: string | undefined;
@@ -206,8 +206,8 @@ export declare const ClaimSlotInputSchema: z.ZodEffects<z.ZodObject<{
206
206
  apply?: boolean | undefined;
207
207
  confirmAssetId?: string | undefined;
208
208
  allowEsxiSlots?: boolean | undefined;
209
- receiptFile?: string | undefined;
210
209
  claimNode?: "proxmox" | "esxi" | "minis" | "ibm64" | undefined;
210
+ receiptFile?: string | undefined;
211
211
  claimVmid?: number | undefined;
212
212
  claimVmName?: string | undefined;
213
213
  replaceClosedClaim?: boolean | undefined;
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  import { CallToolResult } from "../types/mcp.js";
3
3
  import type { ToolContext } from "./list-hosts.js";
4
4
  import { StigRunner } from "../stig/runner.js";
5
- import { type StigNode } from "../stig/nodes.js";
5
+ import { StigDistribution } from "../stig/distribution.js";
6
6
  export declare const BuildStigTemplateInputShape: {
7
7
  ssgDatastreamPath: z.ZodString;
8
8
  disaBenchmarkPath: z.ZodString;
@@ -13,10 +13,10 @@ export declare const BuildStigTemplateInputShape: {
13
13
  planDigest: z.ZodOptional<z.ZodString>;
14
14
  };
15
15
  export declare const CreateStigClaimInputShape: {
16
- node: z.ZodDefault<z.ZodOptional<z.ZodEnum<[StigNode, ...StigNode[]]>>>;
16
+ cloneName: z.ZodString;
17
17
  recreate: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
18
18
  untagged: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
19
- cloneName: z.ZodString;
19
+ node: z.ZodDefault<z.ZodOptional<z.ZodEffects<z.ZodEnum<[string, ...string[]]>, "proxmox" | "minis" | "prox-ibm64", string>>>;
20
20
  templateRef: z.ZodOptional<z.ZodString>;
21
21
  ttlHours: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
22
22
  dns: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -27,27 +27,45 @@ export declare const CreateStigClaimInputShape: {
27
27
  };
28
28
  export declare const ValidateStigClaimInputShape: {
29
29
  cloneName: z.ZodString;
30
- node: z.ZodDefault<z.ZodOptional<z.ZodEnum<[StigNode, ...StigNode[]]>>>;
30
+ node: z.ZodOptional<z.ZodEffects<z.ZodEnum<[string, ...string[]]>, "proxmox" | "minis" | "prox-ibm64", string>>;
31
31
  requireDisa: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
32
32
  };
33
33
  export declare const GetStigReceiptInputShape: {
34
34
  claim: z.ZodString;
35
+ node: z.ZodOptional<z.ZodEffects<z.ZodEnum<[string, ...string[]]>, "proxmox" | "minis" | "prox-ibm64", string>>;
35
36
  };
36
37
  export declare const ReleaseStigTemplateInputShape: {
37
- node: z.ZodDefault<z.ZodOptional<z.ZodEnum<[StigNode, ...StigNode[]]>>>;
38
38
  claim: z.ZodString;
39
+ node: z.ZodOptional<z.ZodEffects<z.ZodEnum<[string, ...string[]]>, "proxmox" | "minis" | "prox-ibm64", string>>;
39
40
  confirmDestroy: z.ZodBoolean;
40
41
  };
42
+ export declare const PublishStigTemplateInputShape: {
43
+ template: z.ZodString;
44
+ force: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
45
+ receiptPath: z.ZodOptional<z.ZodString>;
46
+ manifestPath: z.ZodOptional<z.ZodString>;
47
+ apply: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
48
+ planDigest: z.ZodOptional<z.ZodString>;
49
+ };
50
+ export declare const SyncStigTemplateInputShape: {
51
+ template: z.ZodString;
52
+ node: z.ZodEffects<z.ZodEnum<[string, ...string[]]>, "proxmox" | "minis" | "prox-ibm64", string>;
53
+ apply: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
54
+ planDigest: z.ZodOptional<z.ZodString>;
55
+ };
41
56
  export interface StigToolDeps {
42
- makeRunner: (node?: StigNode) => StigRunner;
57
+ makeRunner: (node?: string) => StigRunner;
58
+ makeDistribution?: () => StigDistribution;
43
59
  }
44
60
  export declare function handleBuildStigTemplate(args: unknown, deps?: StigToolDeps): Promise<CallToolResult>;
45
61
  export declare function handleCreateStigClaim(args: unknown, deps?: StigToolDeps): Promise<CallToolResult>;
46
62
  export declare function handleValidateStigClaim(args: unknown, deps?: StigToolDeps): Promise<CallToolResult>;
47
63
  export declare function handleGetStigReceipt(args: unknown, deps?: StigToolDeps): Promise<CallToolResult>;
48
64
  export declare function handleReleaseStigTemplate(args: unknown, deps?: StigToolDeps): Promise<CallToolResult>;
49
- export declare const STIG_TOOL_NAMES: readonly ["build_stig_template", "create_stig_claim", "validate_stig_claim", "get_stig_receipt", "release_stig_template"];
50
- /** Registers the five tools on a server whose `.tool()` is already the guarded wrapper. */
65
+ export declare function handlePublishStigTemplate(args: unknown, deps?: StigToolDeps): Promise<CallToolResult>;
66
+ export declare function handleSyncStigTemplate(args: unknown, deps?: StigToolDeps): Promise<CallToolResult>;
67
+ export declare const STIG_TOOL_NAMES: readonly ["build_stig_template", "create_stig_claim", "validate_stig_claim", "get_stig_receipt", "release_stig_template", "publish_stig_template", "sync_stig_template"];
68
+ /** Registers the seven tools on a server whose `.tool()` is already the guarded wrapper. */
51
69
  export declare function registerStigTools(server: {
52
70
  tool: (...a: any[]) => unknown;
53
71
  }, _context: ToolContext, deps?: StigToolDeps): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"stig-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/stig-tools.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAA2C,MAAM,iBAAiB,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AASlE,eAAO,MAAM,2BAA2B;;;;;;;;CAQvC,CAAC;AACF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;CAWrC,CAAC;AACF,eAAO,MAAM,2BAA2B;;;;CAIvC,CAAC;AACF,eAAO,MAAM,wBAAwB;;CAA0G,CAAC;AAChJ,eAAO,MAAM,6BAA6B;;;;CAIzC,CAAC;AAEF,MAAM,WAAW,YAAY;IAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,KAAK,UAAU,CAAA;CAAE;AAY7E,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,YAA4B,GAAG,OAAO,CAAC,cAAc,CAAC,CASxH;AACD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,YAA4B,GAAG,OAAO,CAAC,cAAc,CAAC,CAItH;AACD,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,YAA4B,GAAG,OAAO,CAAC,cAAc,CAAC,CAIxH;AACD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,YAA4B,GAAG,OAAO,CAAC,cAAc,CAAC,CAIrH;AACD,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,YAA4B,GAAG,OAAO,CAAC,cAAc,CAAC,CAI1H;AAED,eAAO,MAAM,eAAe,2HAA4H,CAAC;AAEzJ,2FAA2F;AAC3F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAA;CAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,GAAE,YAA4B,GAAG,OAAO,CAOhJ"}
1
+ {"version":3,"file":"stig-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/stig-tools.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAA2C,MAAM,iBAAiB,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAa3D,eAAO,MAAM,2BAA2B;;;;;;;;CAQvC,CAAC;AACF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;CAWrC,CAAC;AACF,eAAO,MAAM,2BAA2B;;;;CAIvC,CAAC;AACF,eAAO,MAAM,wBAAwB;;;CAGpC,CAAC;AACF,eAAO,MAAM,6BAA6B;;;;CAIzC,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;;CAOzC,CAAC;AACF,eAAO,MAAM,0BAA0B;;;;;CAKtC,CAAC;AAEF,MAAM,WAAW,YAAY;IAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,gBAAgB,CAAA;CAAE;AAYtH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,YAA4B,GAAG,OAAO,CAAC,cAAc,CAAC,CASxH;AACD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,YAA4B,GAAG,OAAO,CAAC,cAAc,CAAC,CAItH;AACD,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,YAA4B,GAAG,OAAO,CAAC,cAAc,CAAC,CAIxH;AACD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,YAA4B,GAAG,OAAO,CAAC,cAAc,CAAC,CAIrH;AACD,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,YAA4B,GAAG,OAAO,CAAC,cAAc,CAAC,CAI1H;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,YAA4B,GAAG,OAAO,CAAC,cAAc,CAAC,CAI1H;AACD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,YAA4B,GAAG,OAAO,CAAC,cAAc,CAAC,CAIvH;AAED,eAAO,MAAM,eAAe,0KAA2K,CAAC;AAExM,4FAA4F;AAC5F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAA;CAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,GAAE,YAA4B,GAAG,OAAO,CAShJ"}
@@ -6,21 +6,28 @@
6
6
  * validate_stig_claim oscap scan on a clone, fail=0 gate, receipt summary on the claim
7
7
  * get_stig_receipt the annotated receipt summary and what status.stig will carry
8
8
  * release_stig_template explicit template destroy, then claim deletion
9
+ * publish_stig_template plan | apply signed, compressed qcow2 of a sealed template on the shared image store
10
+ * sync_stig_template plan | apply verify the published image on a node and create the claimed template there
9
11
  *
10
- * The shell recipe in ct-meta (rhel8-stig-template) remains the documented default until live parity passes.
12
+ * Node-addressing tools take `node` (minis | proxmox | prox-ibm64; create and sync act on it, the rest check it
13
+ * against the claim). The shell recipe in ct-meta (rhel8-stig-template) remains the documented default until live
14
+ * parity passes.
11
15
  */
12
16
  import { createHash } from "node:crypto";
13
17
  import { readFileSync } from "node:fs";
14
18
  import { z } from "zod";
15
19
  import { ProxmoxErrorCode, createToolErrorResult } from "../types/mcp.js";
16
20
  import { StigRunner } from "../stig/runner.js";
21
+ import { StigDistribution } from "../stig/distribution.js";
22
+ import { STIG_NODE_INPUT_NAMES, canonicalNodeName } from "../stig/nodes.js";
17
23
  import { liveDeps } from "../stig/live.js";
18
- import { STIG_NODE_NAMES } from "../stig/nodes.js";
19
24
  import { redact } from "../stig/model.js";
20
- const nodeField = z.enum(STIG_NODE_NAMES).optional().default("minis").describe("Lab node: minis (proxmox-minis-lab), ibm64 (proxmox-ibm64) or proxmox (proxmox-lab). Templates are per node (claims tpl-<template>-<node>).");
21
25
  const hex64 = z.string().regex(/^[a-f0-9]{64}$/i);
22
26
  const dnsList = z.array(z.string().ip({ version: "v4" })).min(1).max(4);
23
27
  const ntpList = z.array(z.string().min(1).max(253)).max(4);
28
+ /** minis | proxmox | prox-ibm64; the legacy claim-node spelling `ibm64` is accepted and means prox-ibm64. */
29
+ const nodeName = z.enum(STIG_NODE_INPUT_NAMES).transform((n) => canonicalNodeName(n));
30
+ const templateName = z.string().regex(/^rhel810-stig-\d{8}-\d{4}$/);
24
31
  const cloneName = z.string().regex(/^[a-z0-9]([a-z0-9-]{0,40}[a-z0-9])?$/, "lowercase DNS label");
25
32
  export const BuildStigTemplateInputShape = {
26
33
  ssgDatastreamPath: z.string().min(1).describe("Path to the pinned scap-security-guide 0.1.82 ssg-rhel8-ds.xml on this host; its sha256 must equal the pin."),
@@ -32,11 +39,11 @@ export const BuildStigTemplateInputShape = {
32
39
  planDigest: hex64.optional().describe("planDigest from the plan; required with apply=true."),
33
40
  };
34
41
  export const CreateStigClaimInputShape = {
35
- node: nodeField,
36
- 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."),
37
- untagged: z.boolean().optional().default(false).describe("Clone without a VLAN tag. Required on proxmox, whose bridge is not VLAN-aware."),
38
42
  cloneName: cloneName.describe("Clone VM name; the claim is clone-<cloneName>, the escrow key LAB_RHEL8_RECOVERY_<CLONENAME>."),
39
- templateRef: z.string().regex(/^rhel810-stig-\d{8}-\d{4}$/).optional().describe("Template version to clone, as synced on that node (default: the newest there)."),
43
+ 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."),
44
+ untagged: z.boolean().optional().default(false).describe("Clone without a VLAN tag (VLAN 126 is the default on every node)."),
45
+ 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."),
46
+ templateRef: z.string().regex(/^rhel810-stig-\d{8}-\d{4}$/).optional().describe("Template to clone (default: the newest synced to the node)."),
40
47
  ttlHours: z.number().int().min(1).max(8760).optional().default(48),
41
48
  dns: dnsList.optional(), ntp: ntpList.optional(),
42
49
  poolMaxPercent: z.number().int().min(10).max(70).optional().describe("Refuse to start above this thin-pool use. Default and hard cap 70; it can only be tightened."),
@@ -45,22 +52,39 @@ export const CreateStigClaimInputShape = {
45
52
  };
46
53
  export const ValidateStigClaimInputShape = {
47
54
  cloneName,
48
- node: nodeField,
55
+ node: nodeName.optional().describe("Optional: must match the node the clone's claim lives on (default: taken from the claim)."),
49
56
  requireDisa: z.boolean().optional().default(false).describe("Fail when the clone's template predates the DISA V2R8 dual-scan recipe (no benchmark baked in). Both scans must be fail=0 when present."),
50
57
  };
51
- export const GetStigReceiptInputShape = { claim: z.string().min(1).describe("ApplianceClaim name, e.g. clone-<cloneName> or tpl-<template>.") };
58
+ export const GetStigReceiptInputShape = {
59
+ claim: z.string().min(1).describe("ApplianceClaim name, e.g. clone-<cloneName>, tpl-<template> or tpl-<template>-<node>."),
60
+ node: nodeName.optional().describe("Optional: must match the node the claim lives on (default: taken from the claim)."),
61
+ };
52
62
  export const ReleaseStigTemplateInputShape = {
53
- node: nodeField,
54
63
  claim: z.string().min(1),
64
+ node: nodeName.optional().describe("Optional: must match the node the claim lives on (default: taken from the claim)."),
55
65
  confirmDestroy: z.boolean().describe("Must be true: templates are never reaped by the operator, so release destroys the template first, then deletes the claim."),
56
66
  };
57
- const defaultDeps = () => ({ makeRunner: (node) => new StigRunner(liveDeps({ node }), node ?? "minis") });
67
+ export const PublishStigTemplateInputShape = {
68
+ template: templateName.describe("Sealed template to publish (a template on the build node, node minis)."),
69
+ force: z.boolean().optional().default(false).describe("Re-export and re-publish even if the image already verifies."),
70
+ receiptPath: z.string().min(1).optional().describe("Optional local receipt JSON whose sha256 is recorded as receipt_sha256 (default: the template claim's receipt summary)."),
71
+ manifestPath: z.string().min(1).optional().describe("Optional local evidence MANIFEST.sha256 whose sha256 is recorded as evidence_manifest_sha256."),
72
+ apply: z.boolean().optional().default(false).describe("Omit for a plan. True exports, signs and publishes, and needs planDigest."),
73
+ planDigest: hex64.optional().describe("planDigest from the plan; required with apply=true."),
74
+ };
75
+ export const SyncStigTemplateInputShape = {
76
+ template: templateName.describe("Published template to materialize on the node."),
77
+ node: nodeName.describe("Node that receives the template (required): minis, proxmox or prox-ibm64."),
78
+ apply: z.boolean().optional().default(false).describe("Omit for a plan. True claims the template on the node, verifies it there and imports it; needs planDigest."),
79
+ planDigest: hex64.optional().describe("planDigest from the plan; required with apply=true."),
80
+ };
81
+ const defaultDeps = () => ({ makeRunner: (node) => new StigRunner(liveDeps({ node }), node ?? "minis"), makeDistribution: () => new StigDistribution(liveDeps()) });
58
82
  function ok(payload) {
59
83
  return { content: [{ type: "text", text: redact(JSON.stringify({ success: true, ...payload }, null, 2)) }] };
60
84
  }
61
85
  function fail(operation, err) {
62
86
  const message = redact(String(err?.message ?? err));
63
- const validation = /plan digest|must|cap|exceeds|refus|not a template|already exists|not found|re-encrypting|unreadable|datastream|packer|confirm|pinned|missing/i.test(message);
87
+ const validation = /plan digest|must|cap|exceeds|refus|not a template|already exists|not found|re-encrypting|unreadable|datastream|packer|confirm|pinned|missing|thin storage|not in the published|lives on|node map|mismatch|signature|still running/i.test(message);
64
88
  return createToolErrorResult(validation ? ProxmoxErrorCode.VALIDATION_ERROR : ProxmoxErrorCode.UPSTREAM_API_ERROR, `${operation}: ${message}`, { operation });
65
89
  }
66
90
  export async function handleBuildStigTemplate(args, deps = defaultDeps()) {
@@ -82,8 +106,7 @@ export async function handleCreateStigClaim(args, deps = defaultDeps()) {
82
106
  if (!p.success)
83
107
  return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, p.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; "));
84
108
  try {
85
- const { node, ...rest } = p.data;
86
- return ok(await deps.makeRunner(node).createClone(rest));
109
+ return ok(await deps.makeRunner(p.data.node).createClone(p.data));
87
110
  }
88
111
  catch (e) {
89
112
  return fail("create_stig_claim", e);
@@ -94,8 +117,7 @@ export async function handleValidateStigClaim(args, deps = defaultDeps()) {
94
117
  if (!p.success)
95
118
  return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, p.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; "));
96
119
  try {
97
- const { node, ...rest } = p.data;
98
- return ok(await deps.makeRunner(node).validate(rest));
120
+ return ok(await deps.makeRunner(p.data.node).validate(p.data));
99
121
  }
100
122
  catch (e) {
101
123
  return fail("validate_stig_claim", e);
@@ -106,7 +128,7 @@ export async function handleGetStigReceipt(args, deps = defaultDeps()) {
106
128
  if (!p.success)
107
129
  return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, p.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; "));
108
130
  try {
109
- return ok(await deps.makeRunner().getReceipt(p.data));
131
+ return ok(await deps.makeRunner(p.data.node).getReceipt(p.data));
110
132
  }
111
133
  catch (e) {
112
134
  return fail("get_stig_receipt", e);
@@ -117,21 +139,44 @@ export async function handleReleaseStigTemplate(args, deps = defaultDeps()) {
117
139
  if (!p.success)
118
140
  return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, p.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; "));
119
141
  try {
120
- const { node, ...rest } = p.data;
121
- return ok(await deps.makeRunner(node).releaseTemplate(rest));
142
+ return ok(await deps.makeRunner(p.data.node).releaseTemplate(p.data));
122
143
  }
123
144
  catch (e) {
124
145
  return fail("release_stig_template", e);
125
146
  }
126
147
  }
127
- export const STIG_TOOL_NAMES = ["build_stig_template", "create_stig_claim", "validate_stig_claim", "get_stig_receipt", "release_stig_template"];
128
- /** Registers the five tools on a server whose `.tool()` is already the guarded wrapper. */
148
+ export async function handlePublishStigTemplate(args, deps = defaultDeps()) {
149
+ const p = z.object(PublishStigTemplateInputShape).strict().safeParse(args);
150
+ if (!p.success)
151
+ return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, p.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; "));
152
+ try {
153
+ return ok(await (deps.makeDistribution ?? defaultDeps().makeDistribution)().publish(p.data));
154
+ }
155
+ catch (e) {
156
+ return fail("publish_stig_template", e);
157
+ }
158
+ }
159
+ export async function handleSyncStigTemplate(args, deps = defaultDeps()) {
160
+ const p = z.object(SyncStigTemplateInputShape).strict().safeParse(args);
161
+ if (!p.success)
162
+ return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, p.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; "));
163
+ try {
164
+ return ok(await (deps.makeDistribution ?? defaultDeps().makeDistribution)().sync(p.data));
165
+ }
166
+ catch (e) {
167
+ return fail("sync_stig_template", e);
168
+ }
169
+ }
170
+ export const STIG_TOOL_NAMES = ["build_stig_template", "create_stig_claim", "validate_stig_claim", "get_stig_receipt", "release_stig_template", "publish_stig_template", "sync_stig_template"];
171
+ /** Registers the seven tools on a server whose `.tool()` is already the guarded wrapper. */
129
172
  export function registerStigTools(server, _context, deps = defaultDeps()) {
130
173
  server.tool("build_stig_template", "Plan or apply a RHEL 8.10 DISA STIG Proxmox template build on proxmox-minis-lab. Claim first (6h bare claim, Ready before Packer), pinned SSG 0.1.82 / DISA V2R8 benchmark / Packer 1.16.0, both scans must be fail=0, template verified, then the claim renews to the TTL cap. Apply needs the plan's planDigest.", BuildStigTemplateInputShape, async (a) => handleBuildStigTemplate(a, deps));
131
174
  server.tool("create_stig_claim", "Plan or apply a claim-backed clone of the newest STIG template: thin-pool guard (<=70%), one re-encrypting clone at a time, fresh tpmstate0, first-boot LUKS re-key bound to the clone's TPM2, recovery passphrase escrowed to Doppler by name, verify, fstrim. Apply needs the plan's planDigest.", CreateStigClaimInputShape, async (a) => handleCreateStigClaim(a, deps));
132
175
  server.tool("validate_stig_claim", "Run the pinned, tailored oscap STIG scan on a STIG clone, gate on fail=0, record the LUKS volume-key digest, and annotate the claim with the secret-free receipt summary.", ValidateStigClaimInputShape, async (a) => handleValidateStigClaim(a, deps));
133
176
  server.tool("get_stig_receipt", "Read a STIG claim's descriptor and receipt summary (counts, fail=0 gate, versions, artifact sha256, key digest) and what status.stig will carry when the operator projection is enabled.", GetStigReceiptInputShape, async (a) => handleGetStigReceipt(a, deps));
134
177
  server.tool("release_stig_template", "Release a STIG template: verify it is the claimed template, destroy it explicitly (the operator never reaps templates), then delete its claim. Requires confirmDestroy=true.", ReleaseStigTemplateInputShape, async (a) => handleReleaseStigTemplate(a, deps));
178
+ server.tool("publish_stig_template", "Plan or apply publishing a sealed RHEL 8.10 STIG template (on the build node) as a compressed qcow2 on the shared image store ct-stig-images: export from the read-only base LV, template.json (hardware, scan counts, digests), sha256, detached SHA-512 signatures with the pinned evidence key (Doppler into an ephemeral GNUPGHOME), index.json (latest, keep 3; prune never touches latest or an image a node is importing). Idempotent: a no-op when the image already verifies. Apply needs the plan's planDigest.", PublishStigTemplateInputShape, async (a) => handlePublishStigTemplate(a, deps));
179
+ server.tool("sync_stig_template", "Plan or apply materializing a published STIG template on one node (minis, proxmox, prox-ibm64): claim first (tpl-<template>[-<node>]), verify on the node (pinned key fingerprint, index.json, template.json and qcow2 sha256 + signatures; refuses and releases the claim on any mismatch), qm create with import-from onto thin storage (lvmthin only, pool <= 70%), efidisk, cloud-init, qm template, claim renewed to the TTL cap, sync receipt. Idempotent. Apply needs the plan's planDigest.", SyncStigTemplateInputShape, async (a) => handleSyncStigTemplate(a, deps));
135
180
  return true;
136
181
  }
137
182
  //# sourceMappingURL=stig-tools.js.map
@@ -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.104",
3
+ "version": "0.8.106",
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",