@calltelemetry/ct-lab-mcp 0.8.98 → 0.8.100

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 (68) hide show
  1. package/assets/stig/SHA256SUMS +18 -0
  2. package/assets/stig/files/ct-luks-firstboot.service +13 -0
  3. package/assets/stig/files/ct-luks-firstboot.sh +35 -0
  4. package/assets/stig/guest/keyhash.sh +4 -0
  5. package/assets/stig/guest/read-recovery.sh +2 -0
  6. package/assets/stig/guest/scan-disa.sh +17 -0
  7. package/assets/stig/guest/scan.sh +22 -0
  8. package/assets/stig/guest/shred-recovery.sh +2 -0
  9. package/assets/stig/guest/test-recovery.sh +3 -0
  10. package/assets/stig/guest/trim.sh +3 -0
  11. package/assets/stig/guest/verify-root.sh +9 -0
  12. package/assets/stig/guest/verify-user.sh +9 -0
  13. package/assets/stig/ks.cfg.pkrtpl +95 -0
  14. package/assets/stig/scripts/assess.sh +39 -0
  15. package/assets/stig/scripts/errata.sh +19 -0
  16. package/assets/stig/scripts/remediate.sh +127 -0
  17. package/assets/stig/scripts/seal.sh +46 -0
  18. package/assets/stig/tailoring.xml +16 -0
  19. package/assets/stig/template.pkr.hcl +252 -0
  20. package/dist/src/generated-version.d.ts +1 -1
  21. package/dist/src/generated-version.d.ts.map +1 -1
  22. package/dist/src/generated-version.js +1 -1
  23. package/dist/src/generated-version.js.map +1 -1
  24. package/dist/src/provenance.d.ts.map +1 -1
  25. package/dist/src/provenance.js +18 -1
  26. package/dist/src/provenance.js.map +1 -1
  27. package/dist/src/stig/live.d.ts +116 -0
  28. package/dist/src/stig/live.d.ts.map +1 -0
  29. package/dist/src/stig/live.js +339 -0
  30. package/dist/src/stig/live.js.map +1 -0
  31. package/dist/src/stig/model.d.ts +160 -0
  32. package/dist/src/stig/model.d.ts.map +1 -0
  33. package/dist/src/stig/model.js +384 -0
  34. package/dist/src/stig/model.js.map +1 -0
  35. package/dist/src/stig/ports.d.ts +149 -0
  36. package/dist/src/stig/ports.d.ts.map +1 -0
  37. package/dist/src/stig/ports.js +7 -0
  38. package/dist/src/stig/ports.js.map +1 -0
  39. package/dist/src/stig/receipt.d.ts +35 -0
  40. package/dist/src/stig/receipt.d.ts.map +1 -0
  41. package/dist/src/stig/receipt.js +112 -0
  42. package/dist/src/stig/receipt.js.map +1 -0
  43. package/dist/src/stig/runner.d.ts +109 -0
  44. package/dist/src/stig/runner.d.ts.map +1 -0
  45. package/dist/src/stig/runner.js +471 -0
  46. package/dist/src/stig/runner.js.map +1 -0
  47. package/dist/src/tools/appliance-claim-spec-schema.v1.json +1 -1
  48. package/dist/src/tools/appliance-claim-tools.d.ts +10 -4
  49. package/dist/src/tools/appliance-claim-tools.d.ts.map +1 -1
  50. package/dist/src/tools/appliance-claim-tools.js +10 -2
  51. package/dist/src/tools/appliance-claim-tools.js.map +1 -1
  52. package/dist/src/tools/claim-creation-projection.d.ts +1 -1
  53. package/dist/src/tools/claim-creation-projection.js +1 -1
  54. package/dist/src/tools/claim-custody.d.ts +7 -7
  55. package/dist/src/tools/claimed-import-qcow.d.ts +2 -2
  56. package/dist/src/tools/host-maintenance-shutdown.d.ts +4 -4
  57. package/dist/src/tools/host-migrate-vm.d.ts +4 -4
  58. package/dist/src/tools/index.d.ts.map +1 -1
  59. package/dist/src/tools/index.js +3 -0
  60. package/dist/src/tools/index.js.map +1 -1
  61. package/dist/src/tools/purge-slots.d.ts +1 -1
  62. package/dist/src/tools/sandbox-tools.d.ts +8 -8
  63. package/dist/src/tools/stig-tools.d.ts +47 -0
  64. package/dist/src/tools/stig-tools.d.ts.map +1 -0
  65. package/dist/src/tools/stig-tools.js +125 -0
  66. package/dist/src/tools/stig-tools.js.map +1 -0
  67. package/dist/src/tools/vm-action.d.ts +2 -2
  68. package/package.json +2 -1
@@ -0,0 +1,252 @@
1
+ packer {
2
+ required_version = "= 1.16.0"
3
+ required_plugins {
4
+ proxmox = {
5
+ version = "= 1.2.4"
6
+ source = "github.com/hashicorp/proxmox"
7
+ }
8
+ }
9
+ }
10
+
11
+ variable "proxmox_url" { type = string }
12
+ variable "proxmox_username" { type = string }
13
+ variable "proxmox_token" {
14
+ type = string
15
+ sensitive = true
16
+ }
17
+ variable "proxmox_node" {
18
+ type = string
19
+ default = "minis"
20
+ }
21
+ variable "vm_id" { type = number }
22
+ variable "template_name" { type = string }
23
+ variable "disk_storage_pool" {
24
+ type = string
25
+ default = "local-lvm"
26
+ }
27
+ variable "bridge" {
28
+ type = string
29
+ default = "vmbr0"
30
+ }
31
+ variable "vlan_tag" {
32
+ type = string
33
+ default = "" # untagged lab network: VLAN126 has no internet egress/DNS, and the build needs RHSM errata
34
+ }
35
+ variable "disk_size" {
36
+ type = string
37
+ default = "128G"
38
+ }
39
+ variable "vcpus" {
40
+ type = number
41
+ default = 4
42
+ }
43
+ variable "memory_mb" {
44
+ type = number
45
+ default = 8192
46
+ }
47
+ variable "iso_file" {
48
+ type = string
49
+ default = "synology-cisco-isos:iso/rhel-8.10-x86_64-dvd.iso"
50
+ }
51
+
52
+ variable "ssh_username" {
53
+ type = string
54
+ default = "ctbuild"
55
+ }
56
+ variable "ssh_private_key_file" { type = string }
57
+ variable "ssh_public_key" { type = string }
58
+ variable "build_password" {
59
+ type = string
60
+ sensitive = true
61
+ }
62
+ variable "build_password_hash" {
63
+ type = string
64
+ sensitive = true
65
+ }
66
+ variable "grub_pbkdf2" {
67
+ type = string
68
+ sensitive = true
69
+ }
70
+
71
+ variable "luks_bootstrap" {
72
+ type = string
73
+ sensitive = true
74
+ }
75
+ variable "rhsm_org" {
76
+ type = string
77
+ sensitive = true
78
+ }
79
+ variable "rhsm_key" {
80
+ type = string
81
+ sensitive = true
82
+ }
83
+ variable "dns_servers" {
84
+ type = string
85
+ default = "192.168.126.1,192.168.68.125"
86
+ }
87
+ variable "ntp_servers" {
88
+ type = string
89
+ default = "0.rhel.pool.ntp.org,1.rhel.pool.ntp.org"
90
+ }
91
+ variable "tailoring_file" { type = string }
92
+
93
+ variable "ssg_datastream" { type = string }
94
+ variable "ssg_datastream_sha256" {
95
+ type = string
96
+ default = "82592d3cff74a82ce652a65ba67cd755cf57550269798d4c449c2069417c1028"
97
+ }
98
+ variable "evidence_dir" { type = string }
99
+
100
+ locals {
101
+ sudo = "echo '${var.build_password}' | sudo -S -p '' env {{ .Vars }} bash '{{ .Path }}'"
102
+ }
103
+
104
+ source "proxmox-iso" "rhel810_stig" {
105
+ proxmox_url = var.proxmox_url
106
+ username = var.proxmox_username
107
+ token = var.proxmox_token
108
+ insecure_skip_tls_verify = true # lab self-signed PVE certificate
109
+ node = var.proxmox_node
110
+ vm_id = var.vm_id
111
+ vm_name = var.template_name
112
+ template_name = var.template_name
113
+ template_description = "RHEL 8.10 DISA STIG template. SSG 0.1.82 / RHEL 8 STIG V2R8. Built ${timestamp()}. LUKS2 PV with template bootstrap key; each clone re-encrypts and binds its own TPM2 at first boot."
114
+ tags = "rhel8-stig-template;ssg-0-1-82;stig-v2r8"
115
+ os = "l26"
116
+ machine = "q35"
117
+ bios = "ovmf"
118
+ cpu_type = "host"
119
+ cores = var.vcpus
120
+ memory = var.memory_mb
121
+ qemu_agent = true
122
+ scsi_controller = "virtio-scsi-single"
123
+ boot = "order=scsi0;ide2;net0"
124
+ onboot = false
125
+
126
+ efi_config {
127
+ efi_storage_pool = var.disk_storage_pool
128
+ efi_type = "4m"
129
+ pre_enrolled_keys = true
130
+ }
131
+
132
+ boot_iso {
133
+ type = "ide"
134
+ index = "2"
135
+ iso_file = var.iso_file
136
+ iso_checksum = "sha256:9b3c8e31bc2cdd2de9cf96abb3726347f5840ff3b176270647b3e66639af291b"
137
+ unmount = true
138
+ }
139
+
140
+ additional_iso_files {
141
+ type = "ide"
142
+ index = "3"
143
+ iso_storage_pool = "local"
144
+ cd_label = "OEMDRV"
145
+ cd_content = {
146
+ "ks.cfg" = templatefile("${path.root}/ks.cfg.pkrtpl", {
147
+ hostname = var.template_name
148
+ ssh_username = var.ssh_username
149
+ ssh_public_key = trimspace(var.ssh_public_key)
150
+ build_password_hash = var.build_password_hash
151
+ grub_pbkdf2 = var.grub_pbkdf2
152
+ luks_bootstrap = var.luks_bootstrap
153
+ })
154
+ }
155
+ unmount = true
156
+ keep_cdrom_device = false
157
+ }
158
+
159
+ disks {
160
+ type = "scsi"
161
+ storage_pool = var.disk_storage_pool
162
+ disk_size = var.disk_size
163
+ discard = true
164
+ io_thread = true
165
+ }
166
+
167
+ network_adapters {
168
+ model = "virtio"
169
+ bridge = var.bridge
170
+ vlan_tag = var.vlan_tag
171
+ }
172
+
173
+ cloud_init = true
174
+ cloud_init_storage_pool = var.disk_storage_pool
175
+
176
+ boot_wait = "3m15s" # OVMF reaches the DVD GRUB menu ~3m after power-on on minis
177
+ boot_command = [
178
+ "<up><wait>e<wait><down><down><end>",
179
+ " fips=1 inst.text inst.ks=hd:LABEL=OEMDRV:/ks.cfg",
180
+ "<leftCtrlOn>x<leftCtrlOff>",
181
+ ]
182
+
183
+ communicator = "ssh"
184
+ ssh_username = var.ssh_username
185
+ ssh_private_key_file = var.ssh_private_key_file
186
+ ssh_timeout = "75m"
187
+ }
188
+
189
+ build {
190
+ name = "rhel810-stig-template"
191
+ sources = ["source.proxmox-iso.rhel810_stig"]
192
+
193
+ provisioner "file" {
194
+ source = var.ssg_datastream
195
+ destination = "/home/${var.ssh_username}/ssg-rhel8-ds.xml"
196
+ }
197
+ provisioner "file" {
198
+ source = var.tailoring_file
199
+ destination = "/home/${var.ssh_username}/tailoring.xml"
200
+ }
201
+ provisioner "file" {
202
+ source = "${path.root}/files"
203
+ destination = "/home/${var.ssh_username}/"
204
+ }
205
+
206
+ # Current errata through RHSM, then reboot into the updated kernel.
207
+ provisioner "shell" {
208
+ execute_command = local.sudo
209
+ environment_vars = [
210
+ "RHSM_ORG=${var.rhsm_org}",
211
+ "RHSM_KEY=${var.rhsm_key}",
212
+ ]
213
+ scripts = ["${path.root}/scripts/errata.sh"]
214
+ expect_disconnect = true
215
+ }
216
+
217
+ # Organization settings + pinned SSG STIG remediation, then reboot.
218
+ provisioner "shell" {
219
+ pause_before = "90s"
220
+ execute_command = local.sudo
221
+ environment_vars = [
222
+ "SSG_DATASTREAM=/home/${var.ssh_username}/ssg-rhel8-ds.xml",
223
+ "SSG_DATASTREAM_SHA256=${var.ssg_datastream_sha256}",
224
+ "TAILORING=/home/${var.ssh_username}/tailoring.xml",
225
+ "FILES_DIR=/home/${var.ssh_username}/files",
226
+ "BUILD_USER=${var.ssh_username}",
227
+ "DNS_SERVERS=${var.dns_servers}",
228
+ "NTP_SERVERS=${var.ntp_servers}",
229
+ ]
230
+ scripts = ["${path.root}/scripts/remediate.sh"]
231
+ expect_disconnect = true
232
+ }
233
+
234
+ provisioner "shell" {
235
+ pause_before = "90s"
236
+ execute_command = local.sudo
237
+ environment_vars = ["BUILD_USER=${var.ssh_username}"]
238
+ scripts = ["${path.root}/scripts/assess.sh"]
239
+ }
240
+
241
+ provisioner "file" {
242
+ direction = "download"
243
+ source = "/home/${var.ssh_username}/stig-report/"
244
+ destination = "${var.evidence_dir}/"
245
+ }
246
+
247
+ provisioner "shell" {
248
+ execute_command = local.sudo
249
+ environment_vars = ["BUILD_USER=${var.ssh_username}"]
250
+ scripts = ["${path.root}/scripts/seal.sh"]
251
+ }
252
+ }
@@ -2,5 +2,5 @@
2
2
  * Auto-synced package version fallback for non-filesystem runtimes (Cloudflare Workers).
3
3
  * Updated automatically during release publication in .github/workflows/publish.yml.
4
4
  */
5
- export declare const PACKAGE_VERSION = "0.8.98";
5
+ export declare const PACKAGE_VERSION = "0.8.100";
6
6
  //# sourceMappingURL=generated-version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generated-version.d.ts","sourceRoot":"","sources":["../../src/generated-version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"generated-version.d.ts","sourceRoot":"","sources":["../../src/generated-version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,eAAe,YAAY,CAAC"}
@@ -2,5 +2,5 @@
2
2
  * Auto-synced package version fallback for non-filesystem runtimes (Cloudflare Workers).
3
3
  * Updated automatically during release publication in .github/workflows/publish.yml.
4
4
  */
5
- export const PACKAGE_VERSION = "0.8.98";
5
+ export const PACKAGE_VERSION = "0.8.100";
6
6
  //# sourceMappingURL=generated-version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generated-version.js","sourceRoot":"","sources":["../../src/generated-version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"generated-version.js","sourceRoot":"","sources":["../../src/generated-version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../../src/provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,WAAW,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,KAAK,EAAE,QAAQ,CAAC;IAChB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,cAAc,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,IAAI,EAAE,OAAO,CAAC;IACd,uDAAuD;IACvD,gBAAgB,EAAE,YAAY,GAAG,SAAS,GAAG,eAAe,GAAG,YAAY,CAAC;CAC7E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CA4B/D;AAED,eAAO,MAAM,eAAe,QAAyB,CAAC;AAEtD,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,0BAA0B,GAAG,SAAS,EACnD,aAAa,EAAE,OAAO,GACrB,cAAc,CAAC,kBAAkB,CAAC,CAKpC;AAED,wBAAgB,eAAe,CAC7B,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,WAAW,CAAC,EAAE,0BAA0B,CAAC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;CACpB,GACL,cAAc,CAShB;AAED,uDAAuD;AACvD,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAShD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,cAAc,GACzB,cAAc,CAehB"}
1
+ {"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../../src/provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,WAAW,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,KAAK,EAAE,QAAQ,CAAC;IAChB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,cAAc,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,IAAI,EAAE,OAAO,CAAC;IACd,uDAAuD;IACvD,gBAAgB,EAAE,YAAY,GAAG,SAAS,GAAG,eAAe,GAAG,YAAY,CAAC;CAC7E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CA4B/D;AAED,eAAO,MAAM,eAAe,QAAyB,CAAC;AAEtD,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,0BAA0B,GAAG,SAAS,EACnD,aAAa,EAAE,OAAO,GACrB,cAAc,CAAC,kBAAkB,CAAC,CAKpC;AAED,wBAAgB,eAAe,CAC7B,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,WAAW,CAAC,EAAE,0BAA0B,CAAC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;CACpB,GACL,cAAc,CAShB;AAED,uDAAuD;AACvD,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAShD;AAeD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,cAAc,GACzB,cAAc,CAkBhB"}
@@ -96,6 +96,20 @@ export function isJsonText(text) {
96
96
  return false;
97
97
  }
98
98
  }
99
+ function jsonObjectBody(result) {
100
+ const first = result.content.find((entry) => entry.type === "text" && typeof entry.text === "string");
101
+ if (!first || first.type !== "text")
102
+ return undefined;
103
+ try {
104
+ const parsed = JSON.parse(first.text.trim());
105
+ return parsed !== null && typeof parsed === "object" && !Array.isArray(parsed)
106
+ ? parsed
107
+ : undefined;
108
+ }
109
+ catch {
110
+ return undefined;
111
+ }
112
+ }
99
113
  /**
100
114
  * Stamp provenance onto a tool result. Structured results gain a `provenance`
101
115
  * object inside `structuredContent`; human-readable text gains a footer.
@@ -103,7 +117,10 @@ export function isJsonText(text) {
103
117
  * and never mutates the original result.
104
118
  */
105
119
  export function stampProvenance(result, provenance) {
106
- const structured = result.structuredContent;
120
+ // Clients that prefer structuredContent over content[] would otherwise see
121
+ // only `{provenance}` for JSON-text results; mirror the JSON object body.
122
+ const structured = result.structuredContent
123
+ ?? jsonObjectBody(result);
107
124
  const nextStructured = { ...(structured ?? {}), provenance };
108
125
  const content = result.content.map((entry) => {
109
126
  if (entry.type === "text" &&
@@ -1 +1 @@
1
- {"version":3,"file":"provenance.js","sourceRoot":"","sources":["../../src/provenance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provenance.js","sourceRoot":"","sources":["../../src/provenance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ import type { BuildMaterial, ClaimPort, ClaimRecord, GuestShell, Materials, PackerPort, PveShell, RunOpts, SecretStore, ShellResult, StigDeps, StigProvider } from "./ports.js";
2
+ /** assets/stig next to dist/src/stig (published) or next to src/stig (dev). */
3
+ export declare function defaultAssetsDir(): string;
4
+ export declare class SshPveShell implements PveShell {
5
+ private readonly host;
6
+ private readonly user;
7
+ constructor(host?: string, user?: string);
8
+ run(script: string, opts?: RunOpts): Promise<ShellResult>;
9
+ }
10
+ export declare class SshGuestShell implements GuestShell {
11
+ private user;
12
+ private keyFile;
13
+ private known;
14
+ private ip;
15
+ configure(cfg: {
16
+ user: string;
17
+ keyFile: string;
18
+ knownHostsFile: string;
19
+ }): void;
20
+ setTarget(ip: string): void;
21
+ private opts;
22
+ private ssh;
23
+ runScript(script: string, o?: {
24
+ sudo?: boolean;
25
+ stdin?: string;
26
+ timeoutMs?: number;
27
+ }): Promise<ShellResult>;
28
+ waitSsh(hostKey: "accept-new" | "yes", tries: number, intervalMs?: number): Promise<boolean>;
29
+ fileExists(path: string): Promise<boolean>;
30
+ fetchDir(remote: string, localDir: string): Promise<void>;
31
+ }
32
+ export declare class DopplerSecrets implements SecretStore {
33
+ private readonly project;
34
+ private readonly config;
35
+ constructor(project?: string, config?: string);
36
+ get(name: string): Promise<string | undefined>;
37
+ set(name: string, value: string): Promise<void>;
38
+ }
39
+ export declare class LabClaims implements ClaimPort {
40
+ private readonly ns;
41
+ private text;
42
+ list(): Promise<ClaimRecord[]>;
43
+ get(name: string): Promise<ClaimRecord | null>;
44
+ create(a: {
45
+ name: string;
46
+ vmid: number;
47
+ vmName: string;
48
+ ttlHours: number;
49
+ stig: Record<string, unknown>;
50
+ }): Promise<ClaimRecord>;
51
+ waitReady(name: string): Promise<ClaimRecord>;
52
+ annotate(name: string, annotations: Record<string, string>): Promise<void>;
53
+ renew(name: string, extendHours: number): Promise<{
54
+ ttlHours: number;
55
+ }>;
56
+ pause(name: string, paused: boolean, reason?: string): Promise<void>;
57
+ delete(name: string, expectedUid: string): Promise<void>;
58
+ }
59
+ export declare class PackerCli implements PackerPort {
60
+ private readonly cwd;
61
+ private readonly pluginPath;
62
+ constructor(cwd: string, pluginPath?: string | undefined);
63
+ version(): Promise<string>;
64
+ build(a: {
65
+ vars: Record<string, string>;
66
+ env: Record<string, string>;
67
+ logFile: string;
68
+ }): Promise<number>;
69
+ }
70
+ export declare class NodeMaterials implements Materials {
71
+ private openssl;
72
+ randomAlnum(length: number): string;
73
+ sha512Crypt(plain: string): Promise<string>;
74
+ sshKeypair(dir: string, label: string): Promise<{
75
+ privateKeyFile: string;
76
+ publicKey: string;
77
+ }>;
78
+ buildMaterial(runDir: string, label: string): Promise<BuildMaterial>;
79
+ }
80
+ /**
81
+ * Canonical provider: the `lab-inventory stig` verbs (plan, then apply with the plan digest). Secrets travel in 0600
82
+ * files inside a private temp directory that is removed afterwards; argv carries only public values.
83
+ */
84
+ export declare class CliStigProvider implements StigProvider {
85
+ private readonly cli;
86
+ private readonly exec;
87
+ private readonly tmpRoot;
88
+ constructor(cli: string, exec?: (file: string, args: string[], o?: RunOpts) => Promise<ShellResult>, tmpRoot?: string);
89
+ private call;
90
+ clone(a: {
91
+ operationId: string;
92
+ name: string;
93
+ templateName: string;
94
+ vmid: number;
95
+ claimedVmids: number[];
96
+ sshPublicKey: string;
97
+ passwordHash: string;
98
+ dns: string[];
99
+ }): Promise<{
100
+ vmid: number;
101
+ }>;
102
+ destroyTemplate(a: {
103
+ operationId: string;
104
+ name: string;
105
+ vmid: number;
106
+ }): Promise<void>;
107
+ guestIp(vmid: number): Promise<string>;
108
+ }
109
+ export declare function defaultRunDir(): string;
110
+ /** The lab-inventory CLI path when the canonical bridge is configured (CT_LAB_CANONICAL_CLI). */
111
+ export declare function canonicalCli(env?: NodeJS.ProcessEnv): string | undefined;
112
+ export declare function liveDeps(opts?: {
113
+ baseDir?: string;
114
+ log?: (line: string) => void;
115
+ }): StigDeps;
116
+ //# sourceMappingURL=live.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../../src/stig/live.ts"],"names":[],"mappings":"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"}