@forgezero/agent 0.1.96 → 0.1.98
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/agent-heartbeat.js +1 -1
- package/dist/bootstrap.js +12 -3
- package/dist/fz-agent.js +1 -1
- package/dist/fz.js +20 -6
- package/dist/metal-bootstrap.js +1 -1
- package/dist/operator-bootstrap.js +12 -3
- package/dist/platform-bootstrap-runtime.d.ts +10 -0
- package/dist/platform-bootstrap-runtime.js +6 -1
- package/dist/platform-fleet-verification.js +7 -2
- package/dist/platform-genesis-config.d.ts +1 -1
- package/dist/platform-launch-profile.d.ts +10 -0
- package/dist/provision.js +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
package/dist/agent-heartbeat.js
CHANGED
package/dist/bootstrap.js
CHANGED
|
@@ -1420,7 +1420,7 @@ var UPDATE_RETRY_BASE_MS = 5 * 60000;
|
|
|
1420
1420
|
var UPDATE_RETRY_MAX_MS = 24 * 60 * 60000;
|
|
1421
1421
|
|
|
1422
1422
|
// src/version.ts
|
|
1423
|
-
var VERSION = "0.1.
|
|
1423
|
+
var VERSION = "0.1.98";
|
|
1424
1424
|
|
|
1425
1425
|
// src/software.ts
|
|
1426
1426
|
var PINNED_BUN_VERSION = "1.3.14";
|
|
@@ -3090,7 +3090,7 @@ var httpsOrigin = (name, raw) => {
|
|
|
3090
3090
|
};
|
|
3091
3091
|
var agentTelemetryOrigin = (raw) => raw === "http://127.0.0.1:4318" ? raw : httpsOrigin("agentOtlpEndpoint", raw);
|
|
3092
3092
|
function validatePlatformInitialInventory(value) {
|
|
3093
|
-
if (!value || typeof value !== "object" || Array.isArray(value) || Object.keys(value).some((key) => !["metalHostname", "region", "computes", "deployment"].includes(key)) || !/^[A-Za-z0-9][A-Za-z0-9.-]{1,252}$/.test(value.metalHostname) || !value.region || typeof value.region !== "object" || Array.isArray(value.region) || Object.keys(value.region).some((key) => !["key", "label", "country", "city", "confidentialCapable"].includes(key)) || !/^[a-z0-9][a-z0-9-]{0,62}$/.test(value.region.key) || !/^[A-Z]{2}$/.test(value.region.country) || value.region.confidentialCapable !== true || !Array.isArray(value.computes)) {
|
|
3093
|
+
if (!value || typeof value !== "object" || Array.isArray(value) || Object.keys(value).some((key) => !["metalHostname", "region", "computes", "attestation", "deployment"].includes(key)) || !/^[A-Za-z0-9][A-Za-z0-9.-]{1,252}$/.test(value.metalHostname) || !value.region || typeof value.region !== "object" || Array.isArray(value.region) || Object.keys(value.region).some((key) => !["key", "label", "country", "city", "confidentialCapable"].includes(key)) || !/^[a-z0-9][a-z0-9-]{0,62}$/.test(value.region.key) || !/^[A-Z]{2}$/.test(value.region.country) || value.region.confidentialCapable !== true || !Array.isArray(value.computes)) {
|
|
3094
3094
|
throw new Error("initial platform inventory coordinates are invalid");
|
|
3095
3095
|
}
|
|
3096
3096
|
safeAtom("initialInventory.region.label", value.region.label);
|
|
@@ -3098,6 +3098,8 @@ function validatePlatformInitialInventory(value) {
|
|
|
3098
3098
|
safeAtom("initialInventory.region.city", value.region.city);
|
|
3099
3099
|
if (value.deployment !== undefined && (!value.deployment || typeof value.deployment !== "object" || Array.isArray(value.deployment) || Object.keys(value.deployment).some((key) => !["source", "branch", "revision", "bundleSha256"].includes(key)) || value.deployment.source !== "bootstrap-bundle" || !["dev", "main"].includes(value.deployment.branch) || !/^[a-f0-9]{40}$/.test(value.deployment.revision) || !/^[a-f0-9]{64}$/.test(value.deployment.bundleSha256)))
|
|
3100
3100
|
throw new Error("initial platform deployment evidence is invalid");
|
|
3101
|
+
if (value.attestation !== undefined && (!value.attestation || typeof value.attestation !== "object" || Array.isArray(value.attestation) || Object.keys(value.attestation).some((key) => !["measurement", "tcbFloor"].includes(key)) || !/^[a-f0-9]{96}$/.test(value.attestation.measurement) || !value.attestation.tcbFloor || typeof value.attestation.tcbFloor !== "object" || Array.isArray(value.attestation.tcbFloor) || Object.keys(value.attestation.tcbFloor).some((key) => !["bootLoader", "tee", "snp", "microcode"].includes(key)) || Object.values(value.attestation.tcbFloor).some((component) => !Number.isSafeInteger(component) || component < 0 || component > 255)))
|
|
3102
|
+
throw new Error("initial platform attestation evidence is invalid");
|
|
3101
3103
|
const computes = validatePlatformGenesisGuests(value.computes.map((compute) => {
|
|
3102
3104
|
if (!compute || typeof compute !== "object" || Array.isArray(compute) || Object.keys(compute).some((key) => ![
|
|
3103
3105
|
"name",
|
|
@@ -3133,6 +3135,9 @@ function validatePlatformInitialInventory(value) {
|
|
|
3133
3135
|
databaseAgency: compute.databaseAgency,
|
|
3134
3136
|
confidential: true
|
|
3135
3137
|
})),
|
|
3138
|
+
...value.attestation ? {
|
|
3139
|
+
attestation: { measurement: value.attestation.measurement, tcbFloor: { ...value.attestation.tcbFloor } }
|
|
3140
|
+
} : {},
|
|
3136
3141
|
...value.deployment ? { deployment: { ...value.deployment } } : {}
|
|
3137
3142
|
};
|
|
3138
3143
|
}
|
|
@@ -5006,8 +5011,12 @@ function strictBootstrapDocument(value) {
|
|
|
5006
5011
|
], "runtime environment");
|
|
5007
5012
|
const environment = runtime.environment;
|
|
5008
5013
|
if (environment.initialInventory !== undefined) {
|
|
5009
|
-
const inventory = exactKeys(environment.initialInventory, ["metalHostname", "region", "computes", "deployment"], "initial inventory");
|
|
5014
|
+
const inventory = exactKeys(environment.initialInventory, ["metalHostname", "region", "computes", "attestation", "deployment"], "initial inventory");
|
|
5010
5015
|
exactKeys(inventory.region, ["key", "label", "country", "city", "confidentialCapable"], "initial inventory region");
|
|
5016
|
+
if (inventory.attestation !== undefined) {
|
|
5017
|
+
const attestation = exactKeys(inventory.attestation, ["measurement", "tcbFloor"], "initial attestation evidence");
|
|
5018
|
+
exactKeys(attestation.tcbFloor, ["bootLoader", "tee", "snp", "microcode"], "initial attestation TCB floor");
|
|
5019
|
+
}
|
|
5011
5020
|
if (inventory.deployment !== undefined)
|
|
5012
5021
|
exactKeys(inventory.deployment, ["source", "branch", "revision", "bundleSha256"], "initial deployment evidence");
|
|
5013
5022
|
if (!Array.isArray(inventory.computes))
|
package/dist/fz-agent.js
CHANGED
package/dist/fz.js
CHANGED
|
@@ -4841,7 +4841,7 @@ var UPDATE_RETRY_BASE_MS = 5 * 60000;
|
|
|
4841
4841
|
var UPDATE_RETRY_MAX_MS = 24 * 60 * 60000;
|
|
4842
4842
|
|
|
4843
4843
|
// src/version.ts
|
|
4844
|
-
var VERSION2 = "0.1.
|
|
4844
|
+
var VERSION2 = "0.1.98";
|
|
4845
4845
|
|
|
4846
4846
|
// src/software.ts
|
|
4847
4847
|
var PINNED_BUN_VERSION = "1.3.14";
|
|
@@ -12239,7 +12239,7 @@ var httpsOrigin = (name, raw) => {
|
|
|
12239
12239
|
};
|
|
12240
12240
|
var agentTelemetryOrigin = (raw) => raw === "http://127.0.0.1:4318" ? raw : httpsOrigin("agentOtlpEndpoint", raw);
|
|
12241
12241
|
function validatePlatformInitialInventory(value) {
|
|
12242
|
-
if (!value || typeof value !== "object" || Array.isArray(value) || Object.keys(value).some((key) => !["metalHostname", "region", "computes", "deployment"].includes(key)) || !/^[A-Za-z0-9][A-Za-z0-9.-]{1,252}$/.test(value.metalHostname) || !value.region || typeof value.region !== "object" || Array.isArray(value.region) || Object.keys(value.region).some((key) => !["key", "label", "country", "city", "confidentialCapable"].includes(key)) || !/^[a-z0-9][a-z0-9-]{0,62}$/.test(value.region.key) || !/^[A-Z]{2}$/.test(value.region.country) || value.region.confidentialCapable !== true || !Array.isArray(value.computes)) {
|
|
12242
|
+
if (!value || typeof value !== "object" || Array.isArray(value) || Object.keys(value).some((key) => !["metalHostname", "region", "computes", "attestation", "deployment"].includes(key)) || !/^[A-Za-z0-9][A-Za-z0-9.-]{1,252}$/.test(value.metalHostname) || !value.region || typeof value.region !== "object" || Array.isArray(value.region) || Object.keys(value.region).some((key) => !["key", "label", "country", "city", "confidentialCapable"].includes(key)) || !/^[a-z0-9][a-z0-9-]{0,62}$/.test(value.region.key) || !/^[A-Z]{2}$/.test(value.region.country) || value.region.confidentialCapable !== true || !Array.isArray(value.computes)) {
|
|
12243
12243
|
throw new Error("initial platform inventory coordinates are invalid");
|
|
12244
12244
|
}
|
|
12245
12245
|
safeAtom("initialInventory.region.label", value.region.label);
|
|
@@ -12247,6 +12247,8 @@ function validatePlatformInitialInventory(value) {
|
|
|
12247
12247
|
safeAtom("initialInventory.region.city", value.region.city);
|
|
12248
12248
|
if (value.deployment !== undefined && (!value.deployment || typeof value.deployment !== "object" || Array.isArray(value.deployment) || Object.keys(value.deployment).some((key) => !["source", "branch", "revision", "bundleSha256"].includes(key)) || value.deployment.source !== "bootstrap-bundle" || !["dev", "main"].includes(value.deployment.branch) || !/^[a-f0-9]{40}$/.test(value.deployment.revision) || !/^[a-f0-9]{64}$/.test(value.deployment.bundleSha256)))
|
|
12249
12249
|
throw new Error("initial platform deployment evidence is invalid");
|
|
12250
|
+
if (value.attestation !== undefined && (!value.attestation || typeof value.attestation !== "object" || Array.isArray(value.attestation) || Object.keys(value.attestation).some((key) => !["measurement", "tcbFloor"].includes(key)) || !/^[a-f0-9]{96}$/.test(value.attestation.measurement) || !value.attestation.tcbFloor || typeof value.attestation.tcbFloor !== "object" || Array.isArray(value.attestation.tcbFloor) || Object.keys(value.attestation.tcbFloor).some((key) => !["bootLoader", "tee", "snp", "microcode"].includes(key)) || Object.values(value.attestation.tcbFloor).some((component2) => !Number.isSafeInteger(component2) || component2 < 0 || component2 > 255)))
|
|
12251
|
+
throw new Error("initial platform attestation evidence is invalid");
|
|
12250
12252
|
const computes = validatePlatformGenesisGuests(value.computes.map((compute) => {
|
|
12251
12253
|
if (!compute || typeof compute !== "object" || Array.isArray(compute) || Object.keys(compute).some((key) => ![
|
|
12252
12254
|
"name",
|
|
@@ -12282,6 +12284,9 @@ function validatePlatformInitialInventory(value) {
|
|
|
12282
12284
|
databaseAgency: compute.databaseAgency,
|
|
12283
12285
|
confidential: true
|
|
12284
12286
|
})),
|
|
12287
|
+
...value.attestation ? {
|
|
12288
|
+
attestation: { measurement: value.attestation.measurement, tcbFloor: { ...value.attestation.tcbFloor } }
|
|
12289
|
+
} : {},
|
|
12285
12290
|
...value.deployment ? { deployment: { ...value.deployment } } : {}
|
|
12286
12291
|
};
|
|
12287
12292
|
}
|
|
@@ -15391,8 +15396,12 @@ function strictBootstrapDocument(value) {
|
|
|
15391
15396
|
], "runtime environment");
|
|
15392
15397
|
const environment = runtime.environment;
|
|
15393
15398
|
if (environment.initialInventory !== undefined) {
|
|
15394
|
-
const inventory = exactKeys2(environment.initialInventory, ["metalHostname", "region", "computes", "deployment"], "initial inventory");
|
|
15399
|
+
const inventory = exactKeys2(environment.initialInventory, ["metalHostname", "region", "computes", "attestation", "deployment"], "initial inventory");
|
|
15395
15400
|
exactKeys2(inventory.region, ["key", "label", "country", "city", "confidentialCapable"], "initial inventory region");
|
|
15401
|
+
if (inventory.attestation !== undefined) {
|
|
15402
|
+
const attestation = exactKeys2(inventory.attestation, ["measurement", "tcbFloor"], "initial attestation evidence");
|
|
15403
|
+
exactKeys2(attestation.tcbFloor, ["bootLoader", "tee", "snp", "microcode"], "initial attestation TCB floor");
|
|
15404
|
+
}
|
|
15396
15405
|
if (inventory.deployment !== undefined)
|
|
15397
15406
|
exactKeys2(inventory.deployment, ["source", "branch", "revision", "bundleSha256"], "initial deployment evidence");
|
|
15398
15407
|
if (!Array.isArray(inventory.computes))
|
|
@@ -17856,7 +17865,7 @@ async function applyAttendedPlatformBootstrap(fleetRequest, cloudflareRequest, a
|
|
|
17856
17865
|
}
|
|
17857
17866
|
|
|
17858
17867
|
// src/platform-genesis-config.ts
|
|
17859
|
-
function platformGenesisBootstrapConfigs(template, guests, nodes, metalHostname, region, deployment) {
|
|
17868
|
+
function platformGenesisBootstrapConfigs(template, guests, nodes, metalHostname, region, deployment, attestation) {
|
|
17860
17869
|
const fleet = validatePlatformGenesisGuests(guests);
|
|
17861
17870
|
if (!/^[A-Za-z0-9][A-Za-z0-9.-]{1,252}$/.test(metalHostname)) {
|
|
17862
17871
|
throw new Error("platform genesis requires the reviewed metal hostname");
|
|
@@ -17885,6 +17894,7 @@ function platformGenesisBootstrapConfigs(template, guests, nodes, metalHostname,
|
|
|
17885
17894
|
databaseRole: index === 0 ? "master" : "joiner",
|
|
17886
17895
|
databaseAgency: "member"
|
|
17887
17896
|
})),
|
|
17897
|
+
...attestation ? { attestation } : {},
|
|
17888
17898
|
...deployment ? { deployment } : {}
|
|
17889
17899
|
};
|
|
17890
17900
|
return fleet.map((guest, index) => {
|
|
@@ -17940,7 +17950,11 @@ var PROFILES = {
|
|
|
17940
17950
|
seedSyncEpoch: "development-23c19168773d69ea",
|
|
17941
17951
|
collectorExport: LOCAL_DEBUG_OTEL_EXPORT,
|
|
17942
17952
|
agentOtlpEndpoint: "http://127.0.0.1:4318",
|
|
17943
|
-
privateCidrs: ["10.42.0.0/24"]
|
|
17953
|
+
privateCidrs: ["10.42.0.0/24"],
|
|
17954
|
+
attestation: {
|
|
17955
|
+
measurement: "2d4e66719b19f00c13560e286b1e32ab724ee35d5422473fb183b7dc48a425a9afea74e6625e26911eefbbfbda59b55e",
|
|
17956
|
+
tcbFloor: { bootLoader: 4, tee: 0, snp: 29, microcode: 222 }
|
|
17957
|
+
}
|
|
17944
17958
|
},
|
|
17945
17959
|
production: {
|
|
17946
17960
|
environment: "production",
|
|
@@ -19510,7 +19524,7 @@ function writePlatformGenesisFleet(directory, preset) {
|
|
|
19510
19524
|
branch: preset.profile.branch,
|
|
19511
19525
|
revision: preset.bundle.manifest.revision,
|
|
19512
19526
|
bundleSha256: preset.bundle.manifest.sha256
|
|
19513
|
-
} : undefined).map((config) => {
|
|
19527
|
+
} : undefined, preset?.profile.attestation).map((config) => {
|
|
19514
19528
|
const path = `${output}/${config.computeReference}-platform.json`;
|
|
19515
19529
|
if (preset)
|
|
19516
19530
|
writeDerivedLaunchFile(path, (temporary) => writeBootstrapConfig(temporary, config));
|
package/dist/metal-bootstrap.js
CHANGED
|
@@ -366,7 +366,7 @@ function systemdAgentEgressDirectives(loopbackTcpPorts = []) {
|
|
|
366
366
|
}
|
|
367
367
|
|
|
368
368
|
// src/version.ts
|
|
369
|
-
var VERSION = "0.1.
|
|
369
|
+
var VERSION = "0.1.98";
|
|
370
370
|
|
|
371
371
|
// src/otel-collector.ts
|
|
372
372
|
var FORGEZERO_OTEL_COLLECTOR_UNIT = "forgezero-otel-collector.service";
|
|
@@ -1420,7 +1420,7 @@ var UPDATE_RETRY_BASE_MS = 5 * 60000;
|
|
|
1420
1420
|
var UPDATE_RETRY_MAX_MS = 24 * 60 * 60000;
|
|
1421
1421
|
|
|
1422
1422
|
// src/version.ts
|
|
1423
|
-
var VERSION = "0.1.
|
|
1423
|
+
var VERSION = "0.1.98";
|
|
1424
1424
|
|
|
1425
1425
|
// src/software.ts
|
|
1426
1426
|
var PINNED_BUN_VERSION = "1.3.14";
|
|
@@ -3090,7 +3090,7 @@ var httpsOrigin = (name, raw) => {
|
|
|
3090
3090
|
};
|
|
3091
3091
|
var agentTelemetryOrigin = (raw) => raw === "http://127.0.0.1:4318" ? raw : httpsOrigin("agentOtlpEndpoint", raw);
|
|
3092
3092
|
function validatePlatformInitialInventory(value) {
|
|
3093
|
-
if (!value || typeof value !== "object" || Array.isArray(value) || Object.keys(value).some((key) => !["metalHostname", "region", "computes", "deployment"].includes(key)) || !/^[A-Za-z0-9][A-Za-z0-9.-]{1,252}$/.test(value.metalHostname) || !value.region || typeof value.region !== "object" || Array.isArray(value.region) || Object.keys(value.region).some((key) => !["key", "label", "country", "city", "confidentialCapable"].includes(key)) || !/^[a-z0-9][a-z0-9-]{0,62}$/.test(value.region.key) || !/^[A-Z]{2}$/.test(value.region.country) || value.region.confidentialCapable !== true || !Array.isArray(value.computes)) {
|
|
3093
|
+
if (!value || typeof value !== "object" || Array.isArray(value) || Object.keys(value).some((key) => !["metalHostname", "region", "computes", "attestation", "deployment"].includes(key)) || !/^[A-Za-z0-9][A-Za-z0-9.-]{1,252}$/.test(value.metalHostname) || !value.region || typeof value.region !== "object" || Array.isArray(value.region) || Object.keys(value.region).some((key) => !["key", "label", "country", "city", "confidentialCapable"].includes(key)) || !/^[a-z0-9][a-z0-9-]{0,62}$/.test(value.region.key) || !/^[A-Z]{2}$/.test(value.region.country) || value.region.confidentialCapable !== true || !Array.isArray(value.computes)) {
|
|
3094
3094
|
throw new Error("initial platform inventory coordinates are invalid");
|
|
3095
3095
|
}
|
|
3096
3096
|
safeAtom("initialInventory.region.label", value.region.label);
|
|
@@ -3098,6 +3098,8 @@ function validatePlatformInitialInventory(value) {
|
|
|
3098
3098
|
safeAtom("initialInventory.region.city", value.region.city);
|
|
3099
3099
|
if (value.deployment !== undefined && (!value.deployment || typeof value.deployment !== "object" || Array.isArray(value.deployment) || Object.keys(value.deployment).some((key) => !["source", "branch", "revision", "bundleSha256"].includes(key)) || value.deployment.source !== "bootstrap-bundle" || !["dev", "main"].includes(value.deployment.branch) || !/^[a-f0-9]{40}$/.test(value.deployment.revision) || !/^[a-f0-9]{64}$/.test(value.deployment.bundleSha256)))
|
|
3100
3100
|
throw new Error("initial platform deployment evidence is invalid");
|
|
3101
|
+
if (value.attestation !== undefined && (!value.attestation || typeof value.attestation !== "object" || Array.isArray(value.attestation) || Object.keys(value.attestation).some((key) => !["measurement", "tcbFloor"].includes(key)) || !/^[a-f0-9]{96}$/.test(value.attestation.measurement) || !value.attestation.tcbFloor || typeof value.attestation.tcbFloor !== "object" || Array.isArray(value.attestation.tcbFloor) || Object.keys(value.attestation.tcbFloor).some((key) => !["bootLoader", "tee", "snp", "microcode"].includes(key)) || Object.values(value.attestation.tcbFloor).some((component) => !Number.isSafeInteger(component) || component < 0 || component > 255)))
|
|
3102
|
+
throw new Error("initial platform attestation evidence is invalid");
|
|
3101
3103
|
const computes = validatePlatformGenesisGuests(value.computes.map((compute) => {
|
|
3102
3104
|
if (!compute || typeof compute !== "object" || Array.isArray(compute) || Object.keys(compute).some((key) => ![
|
|
3103
3105
|
"name",
|
|
@@ -3133,6 +3135,9 @@ function validatePlatformInitialInventory(value) {
|
|
|
3133
3135
|
databaseAgency: compute.databaseAgency,
|
|
3134
3136
|
confidential: true
|
|
3135
3137
|
})),
|
|
3138
|
+
...value.attestation ? {
|
|
3139
|
+
attestation: { measurement: value.attestation.measurement, tcbFloor: { ...value.attestation.tcbFloor } }
|
|
3140
|
+
} : {},
|
|
3136
3141
|
...value.deployment ? { deployment: { ...value.deployment } } : {}
|
|
3137
3142
|
};
|
|
3138
3143
|
}
|
|
@@ -5006,8 +5011,12 @@ function strictBootstrapDocument(value) {
|
|
|
5006
5011
|
], "runtime environment");
|
|
5007
5012
|
const environment = runtime.environment;
|
|
5008
5013
|
if (environment.initialInventory !== undefined) {
|
|
5009
|
-
const inventory = exactKeys(environment.initialInventory, ["metalHostname", "region", "computes", "deployment"], "initial inventory");
|
|
5014
|
+
const inventory = exactKeys(environment.initialInventory, ["metalHostname", "region", "computes", "attestation", "deployment"], "initial inventory");
|
|
5010
5015
|
exactKeys(inventory.region, ["key", "label", "country", "city", "confidentialCapable"], "initial inventory region");
|
|
5016
|
+
if (inventory.attestation !== undefined) {
|
|
5017
|
+
const attestation = exactKeys(inventory.attestation, ["measurement", "tcbFloor"], "initial attestation evidence");
|
|
5018
|
+
exactKeys(attestation.tcbFloor, ["bootLoader", "tee", "snp", "microcode"], "initial attestation TCB floor");
|
|
5019
|
+
}
|
|
5011
5020
|
if (inventory.deployment !== undefined)
|
|
5012
5021
|
exactKeys(inventory.deployment, ["source", "branch", "revision", "bundleSha256"], "initial deployment evidence");
|
|
5013
5022
|
if (!Array.isArray(inventory.computes))
|
|
@@ -31,6 +31,16 @@ export interface PlatformInitialInventory {
|
|
|
31
31
|
PlatformInitialInventoryCompute,
|
|
32
32
|
PlatformInitialInventoryCompute
|
|
33
33
|
];
|
|
34
|
+
/** Reviewed evidence for the exact confidential image used by this fleet. */
|
|
35
|
+
attestation?: {
|
|
36
|
+
measurement: string;
|
|
37
|
+
tcbFloor: {
|
|
38
|
+
bootLoader: number;
|
|
39
|
+
tee: number;
|
|
40
|
+
snp: number;
|
|
41
|
+
microcode: number;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
34
44
|
/** Generation-one release evidence; external Git automation is connected after custody opens Vault. */
|
|
35
45
|
deployment?: {
|
|
36
46
|
source: 'bootstrap-bundle';
|
|
@@ -730,7 +730,7 @@ var httpsOrigin = (name, raw) => {
|
|
|
730
730
|
};
|
|
731
731
|
var agentTelemetryOrigin = (raw) => raw === "http://127.0.0.1:4318" ? raw : httpsOrigin("agentOtlpEndpoint", raw);
|
|
732
732
|
function validatePlatformInitialInventory(value) {
|
|
733
|
-
if (!value || typeof value !== "object" || Array.isArray(value) || Object.keys(value).some((key) => !["metalHostname", "region", "computes", "deployment"].includes(key)) || !/^[A-Za-z0-9][A-Za-z0-9.-]{1,252}$/.test(value.metalHostname) || !value.region || typeof value.region !== "object" || Array.isArray(value.region) || Object.keys(value.region).some((key) => !["key", "label", "country", "city", "confidentialCapable"].includes(key)) || !/^[a-z0-9][a-z0-9-]{0,62}$/.test(value.region.key) || !/^[A-Z]{2}$/.test(value.region.country) || value.region.confidentialCapable !== true || !Array.isArray(value.computes)) {
|
|
733
|
+
if (!value || typeof value !== "object" || Array.isArray(value) || Object.keys(value).some((key) => !["metalHostname", "region", "computes", "attestation", "deployment"].includes(key)) || !/^[A-Za-z0-9][A-Za-z0-9.-]{1,252}$/.test(value.metalHostname) || !value.region || typeof value.region !== "object" || Array.isArray(value.region) || Object.keys(value.region).some((key) => !["key", "label", "country", "city", "confidentialCapable"].includes(key)) || !/^[a-z0-9][a-z0-9-]{0,62}$/.test(value.region.key) || !/^[A-Z]{2}$/.test(value.region.country) || value.region.confidentialCapable !== true || !Array.isArray(value.computes)) {
|
|
734
734
|
throw new Error("initial platform inventory coordinates are invalid");
|
|
735
735
|
}
|
|
736
736
|
safeAtom("initialInventory.region.label", value.region.label);
|
|
@@ -738,6 +738,8 @@ function validatePlatformInitialInventory(value) {
|
|
|
738
738
|
safeAtom("initialInventory.region.city", value.region.city);
|
|
739
739
|
if (value.deployment !== undefined && (!value.deployment || typeof value.deployment !== "object" || Array.isArray(value.deployment) || Object.keys(value.deployment).some((key) => !["source", "branch", "revision", "bundleSha256"].includes(key)) || value.deployment.source !== "bootstrap-bundle" || !["dev", "main"].includes(value.deployment.branch) || !/^[a-f0-9]{40}$/.test(value.deployment.revision) || !/^[a-f0-9]{64}$/.test(value.deployment.bundleSha256)))
|
|
740
740
|
throw new Error("initial platform deployment evidence is invalid");
|
|
741
|
+
if (value.attestation !== undefined && (!value.attestation || typeof value.attestation !== "object" || Array.isArray(value.attestation) || Object.keys(value.attestation).some((key) => !["measurement", "tcbFloor"].includes(key)) || !/^[a-f0-9]{96}$/.test(value.attestation.measurement) || !value.attestation.tcbFloor || typeof value.attestation.tcbFloor !== "object" || Array.isArray(value.attestation.tcbFloor) || Object.keys(value.attestation.tcbFloor).some((key) => !["bootLoader", "tee", "snp", "microcode"].includes(key)) || Object.values(value.attestation.tcbFloor).some((component) => !Number.isSafeInteger(component) || component < 0 || component > 255)))
|
|
742
|
+
throw new Error("initial platform attestation evidence is invalid");
|
|
741
743
|
const computes = validatePlatformGenesisGuests(value.computes.map((compute) => {
|
|
742
744
|
if (!compute || typeof compute !== "object" || Array.isArray(compute) || Object.keys(compute).some((key) => ![
|
|
743
745
|
"name",
|
|
@@ -773,6 +775,9 @@ function validatePlatformInitialInventory(value) {
|
|
|
773
775
|
databaseAgency: compute.databaseAgency,
|
|
774
776
|
confidential: true
|
|
775
777
|
})),
|
|
778
|
+
...value.attestation ? {
|
|
779
|
+
attestation: { measurement: value.attestation.measurement, tcbFloor: { ...value.attestation.tcbFloor } }
|
|
780
|
+
} : {},
|
|
776
781
|
...value.deployment ? { deployment: { ...value.deployment } } : {}
|
|
777
782
|
};
|
|
778
783
|
}
|
|
@@ -2908,7 +2908,7 @@ function requestSoftware(requirements, socketPath = DEFAULT_SOFTWARE_HELPER_SOCK
|
|
|
2908
2908
|
}
|
|
2909
2909
|
|
|
2910
2910
|
// src/version.ts
|
|
2911
|
-
var VERSION3 = "0.1.
|
|
2911
|
+
var VERSION3 = "0.1.98";
|
|
2912
2912
|
|
|
2913
2913
|
// src/egress-policy.ts
|
|
2914
2914
|
import { realpathSync as realpathSync3 } from "node:fs";
|
|
@@ -4142,7 +4142,7 @@ var httpsOrigin = (name, raw) => {
|
|
|
4142
4142
|
};
|
|
4143
4143
|
var agentTelemetryOrigin = (raw) => raw === "http://127.0.0.1:4318" ? raw : httpsOrigin("agentOtlpEndpoint", raw);
|
|
4144
4144
|
function validatePlatformInitialInventory(value) {
|
|
4145
|
-
if (!value || typeof value !== "object" || Array.isArray(value) || Object.keys(value).some((key) => !["metalHostname", "region", "computes", "deployment"].includes(key)) || !/^[A-Za-z0-9][A-Za-z0-9.-]{1,252}$/.test(value.metalHostname) || !value.region || typeof value.region !== "object" || Array.isArray(value.region) || Object.keys(value.region).some((key) => !["key", "label", "country", "city", "confidentialCapable"].includes(key)) || !/^[a-z0-9][a-z0-9-]{0,62}$/.test(value.region.key) || !/^[A-Z]{2}$/.test(value.region.country) || value.region.confidentialCapable !== true || !Array.isArray(value.computes)) {
|
|
4145
|
+
if (!value || typeof value !== "object" || Array.isArray(value) || Object.keys(value).some((key) => !["metalHostname", "region", "computes", "attestation", "deployment"].includes(key)) || !/^[A-Za-z0-9][A-Za-z0-9.-]{1,252}$/.test(value.metalHostname) || !value.region || typeof value.region !== "object" || Array.isArray(value.region) || Object.keys(value.region).some((key) => !["key", "label", "country", "city", "confidentialCapable"].includes(key)) || !/^[a-z0-9][a-z0-9-]{0,62}$/.test(value.region.key) || !/^[A-Z]{2}$/.test(value.region.country) || value.region.confidentialCapable !== true || !Array.isArray(value.computes)) {
|
|
4146
4146
|
throw new Error("initial platform inventory coordinates are invalid");
|
|
4147
4147
|
}
|
|
4148
4148
|
safeAtom("initialInventory.region.label", value.region.label);
|
|
@@ -4150,6 +4150,8 @@ function validatePlatformInitialInventory(value) {
|
|
|
4150
4150
|
safeAtom("initialInventory.region.city", value.region.city);
|
|
4151
4151
|
if (value.deployment !== undefined && (!value.deployment || typeof value.deployment !== "object" || Array.isArray(value.deployment) || Object.keys(value.deployment).some((key) => !["source", "branch", "revision", "bundleSha256"].includes(key)) || value.deployment.source !== "bootstrap-bundle" || !["dev", "main"].includes(value.deployment.branch) || !/^[a-f0-9]{40}$/.test(value.deployment.revision) || !/^[a-f0-9]{64}$/.test(value.deployment.bundleSha256)))
|
|
4152
4152
|
throw new Error("initial platform deployment evidence is invalid");
|
|
4153
|
+
if (value.attestation !== undefined && (!value.attestation || typeof value.attestation !== "object" || Array.isArray(value.attestation) || Object.keys(value.attestation).some((key) => !["measurement", "tcbFloor"].includes(key)) || !/^[a-f0-9]{96}$/.test(value.attestation.measurement) || !value.attestation.tcbFloor || typeof value.attestation.tcbFloor !== "object" || Array.isArray(value.attestation.tcbFloor) || Object.keys(value.attestation.tcbFloor).some((key) => !["bootLoader", "tee", "snp", "microcode"].includes(key)) || Object.values(value.attestation.tcbFloor).some((component) => !Number.isSafeInteger(component) || component < 0 || component > 255)))
|
|
4154
|
+
throw new Error("initial platform attestation evidence is invalid");
|
|
4153
4155
|
const computes = validatePlatformGenesisGuests(value.computes.map((compute) => {
|
|
4154
4156
|
if (!compute || typeof compute !== "object" || Array.isArray(compute) || Object.keys(compute).some((key) => ![
|
|
4155
4157
|
"name",
|
|
@@ -4185,6 +4187,9 @@ function validatePlatformInitialInventory(value) {
|
|
|
4185
4187
|
databaseAgency: compute.databaseAgency,
|
|
4186
4188
|
confidential: true
|
|
4187
4189
|
})),
|
|
4190
|
+
...value.attestation ? {
|
|
4191
|
+
attestation: { measurement: value.attestation.measurement, tcbFloor: { ...value.attestation.tcbFloor } }
|
|
4192
|
+
} : {},
|
|
4188
4193
|
...value.deployment ? { deployment: { ...value.deployment } } : {}
|
|
4189
4194
|
};
|
|
4190
4195
|
}
|
|
@@ -15,4 +15,4 @@ export declare function platformGenesisBootstrapConfigs(template: PlatformBootst
|
|
|
15
15
|
branch: 'dev' | 'main';
|
|
16
16
|
revision: string;
|
|
17
17
|
bundleSha256: string;
|
|
18
|
-
}): readonly PlatformBootstrapConfig[];
|
|
18
|
+
}, attestation?: import('./platform-bootstrap-runtime').PlatformInitialInventory['attestation']): readonly PlatformBootstrapConfig[];
|
|
@@ -20,6 +20,16 @@ export interface ForgeZeroLaunchProfile {
|
|
|
20
20
|
agentOtlpEndpoint: string;
|
|
21
21
|
seedSyncEpoch: string;
|
|
22
22
|
privateCidrs: readonly string[];
|
|
23
|
+
/** Owner-observed, AMD-verified evidence for this exact reviewed launch image. */
|
|
24
|
+
attestation?: {
|
|
25
|
+
measurement: string;
|
|
26
|
+
tcbFloor: {
|
|
27
|
+
bootLoader: number;
|
|
28
|
+
tee: number;
|
|
29
|
+
snp: number;
|
|
30
|
+
microcode: number;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
23
33
|
nodeHostname(nodeIndex: number): string;
|
|
24
34
|
}
|
|
25
35
|
export interface ForgeZeroLaunchOwnerInput {
|
package/dist/provision.js
CHANGED
|
@@ -2908,7 +2908,7 @@ function requestSoftware(requirements, socketPath = DEFAULT_SOFTWARE_HELPER_SOCK
|
|
|
2908
2908
|
}
|
|
2909
2909
|
|
|
2910
2910
|
// src/version.ts
|
|
2911
|
-
var VERSION3 = "0.1.
|
|
2911
|
+
var VERSION3 = "0.1.98";
|
|
2912
2912
|
|
|
2913
2913
|
// src/egress-policy.ts
|
|
2914
2914
|
import { realpathSync as realpathSync3 } from "node:fs";
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** One package version shared by both public binaries. Pinned to package.json by tests. */
|
|
2
|
-
export declare const VERSION = "0.1.
|
|
2
|
+
export declare const VERSION = "0.1.98";
|