@forgezero/agent 0.1.117 → 0.1.119
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -3
- package/dist/agent-heartbeat.js +1 -1
- package/dist/bootstrap.js +1 -1
- package/dist/community-rehearsal-host.js +24 -17
- package/dist/definition.js +24 -17
- package/dist/deploy-compiler.d.ts +10 -1
- package/dist/deploy-compiler.js +32 -4
- package/dist/deploy-file.js +24 -17
- package/dist/deploy-plan-runner.js +19 -2
- package/dist/deploy-plan.js +19 -2
- package/dist/deploy.d.ts +10 -1
- package/dist/deployment.d.ts +13 -2
- package/dist/fz-agent.js +55 -20
- package/dist/fz.js +93 -29
- package/dist/index.d.ts +1 -1
- package/dist/metal-bootstrap.js +1 -1
- package/dist/metal-helper-socket.js +24 -17
- package/dist/metal-provision.js +24 -17
- package/dist/operator-bootstrap.js +1 -1
- package/dist/platform-bootstrap-runtime.js +24 -17
- package/dist/platform-fleet-verification.js +25 -18
- package/dist/platform-genesis.js +24 -17
- package/dist/provision.js +25 -18
- package/dist/software-helper.js +24 -17
- package/dist/software.d.ts +4 -0
- package/dist/software.js +26 -17
- package/dist/ubuntu.js +24 -17
- package/dist/version.d.ts +1 -1
- package/package.json +4 -4
package/dist/fz-agent.js
CHANGED
|
@@ -5051,24 +5051,31 @@ var OS_CATALOG = [
|
|
|
5051
5051
|
}
|
|
5052
5052
|
];
|
|
5053
5053
|
var SOFTWARE_CATALOG = [
|
|
5054
|
-
{ id: "bun", version: "1.3.14", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5055
|
-
{ id: "docker", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5056
|
-
{ id: "containerd", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5057
|
-
{ id: "kata-containers", version: "4.0.0", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5058
|
-
{ id: "nginx", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5059
|
-
{ id: "arangodb", version: "3.11.14", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5060
|
-
{ id: "cloudflared", version: "2026.7.3", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5061
|
-
{ id: "cloudflare-warp", version: "2026.6.822.0-min", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5062
|
-
{ id: "ufw", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5063
|
-
{ id: "openssh-client", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5064
|
-
{ id: "git", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5065
|
-
{ id: "docker", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5066
|
-
{ id: "containerd", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5067
|
-
{ id: "nginx", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5068
|
-
{ id: "ufw", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5069
|
-
{ id: "openssh-client", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5070
|
-
{ id: "git", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" }
|
|
5054
|
+
{ id: "bun", version: "1.3.14", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5055
|
+
{ id: "docker", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5056
|
+
{ id: "containerd", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5057
|
+
{ id: "kata-containers", version: "4.0.0", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5058
|
+
{ id: "nginx", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5059
|
+
{ id: "arangodb", version: "3.11.14", billingClass: "paid-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5060
|
+
{ id: "cloudflared", version: "2026.7.3", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5061
|
+
{ id: "cloudflare-warp", version: "2026.6.822.0-min", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5062
|
+
{ id: "ufw", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5063
|
+
{ id: "openssh-client", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5064
|
+
{ id: "git", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5065
|
+
{ id: "docker", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5066
|
+
{ id: "containerd", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5067
|
+
{ id: "nginx", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5068
|
+
{ id: "ufw", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5069
|
+
{ id: "openssh-client", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
5070
|
+
{ id: "git", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" }
|
|
5071
5071
|
];
|
|
5072
|
+
var softwareBillingClass = (requirement) => {
|
|
5073
|
+
const entry = SOFTWARE_CATALOG.find((candidate) => candidate.id === requirement.id && candidate.version === requirement.version);
|
|
5074
|
+
if (!entry)
|
|
5075
|
+
throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
|
|
5076
|
+
return entry.billingClass;
|
|
5077
|
+
};
|
|
5078
|
+
var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
|
|
5072
5079
|
var UBUNTU_2604_X64 = [
|
|
5073
5080
|
{ requirement: { id: "bun", version: "1.3.14" } },
|
|
5074
5081
|
{ requirement: { id: "docker", version: "ubuntu-26.04" } },
|
|
@@ -7160,13 +7167,30 @@ function compileDeployment(sourceValue) {
|
|
|
7160
7167
|
fail(`deployment.spec.targets.${targetName}.allocation.execution`, "cannot satisfy required confidential compute.");
|
|
7161
7168
|
if (target.provisioning !== undefined) {
|
|
7162
7169
|
const provisioning = object(target.provisioning, `deployment.spec.targets.${targetName}.provisioning`);
|
|
7163
|
-
exact3(provisioning, ["
|
|
7164
|
-
for (const key of ["
|
|
7170
|
+
exact3(provisioning, ["regionKey", "imageKey", "environmentKey", "ownership", "metalHostname", "resources", "monthlyAmountCents", "maxMonthlySpendMinor"], `deployment.spec.targets.${targetName}.provisioning`);
|
|
7171
|
+
for (const key of ["regionKey", "imageKey", "environmentKey"])
|
|
7165
7172
|
named(provisioning[key], `deployment.spec.targets.${targetName}.provisioning.${key}`);
|
|
7166
7173
|
if (!["platform", "tenant-metal"].includes(String(provisioning.ownership)) || provisioning.ownership === "tenant-metal" !== Boolean(provisioning.metalHostname))
|
|
7167
7174
|
fail(`deployment.spec.targets.${targetName}.provisioning.ownership`, "must bind platform capacity or one tenant metal hostname.");
|
|
7168
7175
|
if (provisioning.metalHostname !== undefined && !/^(?=.{1,253}$)[A-Za-z0-9](?:[A-Za-z0-9.-]*[A-Za-z0-9])?$/.test(String(provisioning.metalHostname)))
|
|
7169
7176
|
fail(`deployment.spec.targets.${targetName}.provisioning.metalHostname`, "is invalid.");
|
|
7177
|
+
const provisionedResources = object(provisioning.resources, `deployment.spec.targets.${targetName}.provisioning.resources`);
|
|
7178
|
+
exact3(provisionedResources, ["physicalCores", "vcpu", "memoryGib", "diskGib", "egressGuaranteedMbps", "egressBurstMbps", "confidential"], `deployment.spec.targets.${targetName}.provisioning.resources`);
|
|
7179
|
+
integer(provisionedResources.physicalCores, `deployment.spec.targets.${targetName}.provisioning.resources.physicalCores`, 1, 1024);
|
|
7180
|
+
integer(provisionedResources.vcpu, `deployment.spec.targets.${targetName}.provisioning.resources.vcpu`, 1, 4096);
|
|
7181
|
+
integer(provisionedResources.memoryGib, `deployment.spec.targets.${targetName}.provisioning.resources.memoryGib`, 1, 4194304);
|
|
7182
|
+
integer(provisionedResources.diskGib, `deployment.spec.targets.${targetName}.provisioning.resources.diskGib`, 1, 1048576);
|
|
7183
|
+
integer(provisionedResources.egressGuaranteedMbps, `deployment.spec.targets.${targetName}.provisioning.resources.egressGuaranteedMbps`, 0, 1e7);
|
|
7184
|
+
integer(provisionedResources.egressBurstMbps, `deployment.spec.targets.${targetName}.provisioning.resources.egressBurstMbps`, Number(provisionedResources.egressGuaranteedMbps), 1e7);
|
|
7185
|
+
if (typeof provisionedResources.confidential !== "boolean")
|
|
7186
|
+
fail(`deployment.spec.targets.${targetName}.provisioning.resources.confidential`, "must be boolean.");
|
|
7187
|
+
if (typeof capacity.cpuCores === "number" && Number(provisionedResources.vcpu) < capacity.cpuCores || typeof capacity.memoryMiB === "number" && Number(provisionedResources.memoryGib) * 1024 < capacity.memoryMiB || typeof capacity.storageGiB === "number" && Number(provisionedResources.diskGib) < capacity.storageGiB) {
|
|
7188
|
+
fail(`deployment.spec.targets.${targetName}.provisioning.resources`, "must satisfy the per-slot allocation minimum.");
|
|
7189
|
+
}
|
|
7190
|
+
if ((selector.confidentialCompute === "required" || allocation.execution === "oci-kata-qemu-snp") && provisionedResources.confidential !== true)
|
|
7191
|
+
fail(`deployment.spec.targets.${targetName}.provisioning.resources.confidential`, "must be true for confidential execution.");
|
|
7192
|
+
if (typeof provisioning.monthlyAmountCents !== "string" || !/^\d{1,18}$/.test(provisioning.monthlyAmountCents))
|
|
7193
|
+
fail(`deployment.spec.targets.${targetName}.provisioning.monthlyAmountCents`, "must be a bounded USD-cent amount.");
|
|
7170
7194
|
if (typeof provisioning.maxMonthlySpendMinor !== "string" || !/^\d{1,18}$/.test(provisioning.maxMonthlySpendMinor))
|
|
7171
7195
|
fail(`deployment.spec.targets.${targetName}.provisioning.maxMonthlySpendMinor`, "must be a bounded decimal minor-unit amount.");
|
|
7172
7196
|
}
|
|
@@ -8283,6 +8307,7 @@ function createDeploymentManager(options) {
|
|
|
8283
8307
|
const planPath = join2(release, DEPLOY_PLAN_FILE);
|
|
8284
8308
|
if (existsSync4(planPath)) {
|
|
8285
8309
|
const plan = parseDeploymentPlan(readDefinition(planPath));
|
|
8310
|
+
const paidManagedSoftware = new Set;
|
|
8286
8311
|
for (const workflow of Object.values(plan.spec.workflows))
|
|
8287
8312
|
for (const stage2 of Object.values(workflow.stages)) {
|
|
8288
8313
|
if (stage2.strategy.mode === "rolling" || stage2.strategy.mode === "canary" || Object.values(stage2.steps).some((step2) => step2.scope.kind === "target-batches")) {
|
|
@@ -8443,6 +8468,11 @@ function createDeploymentManager(options) {
|
|
|
8443
8468
|
return { id: id2, version: requirement2.version };
|
|
8444
8469
|
});
|
|
8445
8470
|
await options.ensureSoftware(requirements);
|
|
8471
|
+
for (const requirement2 of requirements) {
|
|
8472
|
+
if (countPaidManagedSoftware([requirement2]) === 1) {
|
|
8473
|
+
paidManagedSoftware.add(`${requirement2.id}@${requirement2.version}`);
|
|
8474
|
+
}
|
|
8475
|
+
}
|
|
8446
8476
|
return { changed: true };
|
|
8447
8477
|
},
|
|
8448
8478
|
"forgezero.network/ensure@1": async ({ resolved }) => {
|
|
@@ -8677,6 +8707,7 @@ function createDeploymentManager(options) {
|
|
|
8677
8707
|
phases: [phase],
|
|
8678
8708
|
execution: deploymentExecution([phase]),
|
|
8679
8709
|
resolvedTargets,
|
|
8710
|
+
paidManagedSoftwareCount: paidManagedSoftware.size,
|
|
8680
8711
|
...capacity2 ? { capacity: capacity2 } : {}
|
|
8681
8712
|
};
|
|
8682
8713
|
}
|
|
@@ -8793,6 +8824,7 @@ function createDeploymentManager(options) {
|
|
|
8793
8824
|
definitionDigest,
|
|
8794
8825
|
definitionVersion: 2,
|
|
8795
8826
|
profile: options.profile,
|
|
8827
|
+
paidManagedSoftwareCount: countPaidManagedSoftware(selectedProfile.software),
|
|
8796
8828
|
release,
|
|
8797
8829
|
ok: true,
|
|
8798
8830
|
phases,
|
|
@@ -9121,6 +9153,7 @@ async function pullDeploymentOnce(options) {
|
|
|
9121
9153
|
definitionDigest: result.definitionDigest,
|
|
9122
9154
|
definitionVersion: result.definitionVersion,
|
|
9123
9155
|
profile: result.profile,
|
|
9156
|
+
paidManagedSoftwareCount: result.paidManagedSoftwareCount,
|
|
9124
9157
|
execution: result.execution,
|
|
9125
9158
|
...result.resolvedTargets ? { resolvedTargets: result.resolvedTargets.map((target) => ({
|
|
9126
9159
|
...target,
|
|
@@ -9601,7 +9634,7 @@ async function writeAndCloseProcessInput(input, value) {
|
|
|
9601
9634
|
}
|
|
9602
9635
|
|
|
9603
9636
|
// src/version.ts
|
|
9604
|
-
var VERSION2 = "0.1.
|
|
9637
|
+
var VERSION2 = "0.1.119";
|
|
9605
9638
|
|
|
9606
9639
|
// src/ssh-bootstrap.ts
|
|
9607
9640
|
class SshBootstrapError extends Error {
|
|
@@ -18795,6 +18828,7 @@ export {
|
|
|
18795
18828
|
startAgentHeartbeat,
|
|
18796
18829
|
startAgent,
|
|
18797
18830
|
stageAgentRelease,
|
|
18831
|
+
softwareBillingClass,
|
|
18798
18832
|
selectAgentRelease,
|
|
18799
18833
|
runAgent,
|
|
18800
18834
|
restoreAgentRelease,
|
|
@@ -18854,6 +18888,7 @@ export {
|
|
|
18854
18888
|
createDeploymentSecretResolver,
|
|
18855
18889
|
createDeploymentManager,
|
|
18856
18890
|
createAgentTelemetry,
|
|
18891
|
+
countPaidManagedSoftware,
|
|
18857
18892
|
configuredAgentSeed,
|
|
18858
18893
|
configureMeshConnector,
|
|
18859
18894
|
compareVersions,
|
package/dist/fz.js
CHANGED
|
@@ -4634,7 +4634,7 @@ var VaultError, runtimeEnvironment = () => typeof process !== "undefined" && pro
|
|
|
4634
4634
|
} catch {
|
|
4635
4635
|
return;
|
|
4636
4636
|
}
|
|
4637
|
-
}, VERSION = "0.1.
|
|
4637
|
+
}, VERSION = "0.1.22";
|
|
4638
4638
|
var init_dist = __esm(() => {
|
|
4639
4639
|
init_identity();
|
|
4640
4640
|
VaultError = class VaultError extends Error {
|
|
@@ -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.119";
|
|
4845
4845
|
|
|
4846
4846
|
// src/software.ts
|
|
4847
4847
|
var PINNED_BUN_VERSION = "1.3.14";
|
|
@@ -4873,23 +4873,23 @@ var OS_CATALOG = [
|
|
|
4873
4873
|
}
|
|
4874
4874
|
];
|
|
4875
4875
|
var SOFTWARE_CATALOG = [
|
|
4876
|
-
{ id: "bun", version: "1.3.14", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4877
|
-
{ id: "docker", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4878
|
-
{ id: "containerd", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4879
|
-
{ id: "kata-containers", version: "4.0.0", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4880
|
-
{ id: "nginx", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4881
|
-
{ id: "arangodb", version: "3.11.14", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4882
|
-
{ id: "cloudflared", version: "2026.7.3", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4883
|
-
{ id: "cloudflare-warp", version: "2026.6.822.0-min", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4884
|
-
{ id: "ufw", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4885
|
-
{ id: "openssh-client", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4886
|
-
{ id: "git", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4887
|
-
{ id: "docker", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4888
|
-
{ id: "containerd", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4889
|
-
{ id: "nginx", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4890
|
-
{ id: "ufw", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4891
|
-
{ id: "openssh-client", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4892
|
-
{ id: "git", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" }
|
|
4876
|
+
{ id: "bun", version: "1.3.14", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4877
|
+
{ id: "docker", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4878
|
+
{ id: "containerd", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4879
|
+
{ id: "kata-containers", version: "4.0.0", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4880
|
+
{ id: "nginx", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4881
|
+
{ id: "arangodb", version: "3.11.14", billingClass: "paid-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4882
|
+
{ id: "cloudflared", version: "2026.7.3", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4883
|
+
{ id: "cloudflare-warp", version: "2026.6.822.0-min", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4884
|
+
{ id: "ufw", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4885
|
+
{ id: "openssh-client", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4886
|
+
{ id: "git", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4887
|
+
{ id: "docker", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4888
|
+
{ id: "containerd", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4889
|
+
{ id: "nginx", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4890
|
+
{ id: "ufw", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4891
|
+
{ id: "openssh-client", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
4892
|
+
{ id: "git", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" }
|
|
4893
4893
|
];
|
|
4894
4894
|
var DOCKER_DAEMON_CONFIG = `${JSON.stringify({
|
|
4895
4895
|
"data-root": "/var/lib/docker",
|
|
@@ -11349,13 +11349,30 @@ function compileDeployment(sourceValue) {
|
|
|
11349
11349
|
fail2(`deployment.spec.targets.${targetName}.allocation.execution`, "cannot satisfy required confidential compute.");
|
|
11350
11350
|
if (target.provisioning !== undefined) {
|
|
11351
11351
|
const provisioning = object(target.provisioning, `deployment.spec.targets.${targetName}.provisioning`);
|
|
11352
|
-
exact3(provisioning, ["
|
|
11353
|
-
for (const key of ["
|
|
11352
|
+
exact3(provisioning, ["regionKey", "imageKey", "environmentKey", "ownership", "metalHostname", "resources", "monthlyAmountCents", "maxMonthlySpendMinor"], `deployment.spec.targets.${targetName}.provisioning`);
|
|
11353
|
+
for (const key of ["regionKey", "imageKey", "environmentKey"])
|
|
11354
11354
|
named(provisioning[key], `deployment.spec.targets.${targetName}.provisioning.${key}`);
|
|
11355
11355
|
if (!["platform", "tenant-metal"].includes(String(provisioning.ownership)) || provisioning.ownership === "tenant-metal" !== Boolean(provisioning.metalHostname))
|
|
11356
11356
|
fail2(`deployment.spec.targets.${targetName}.provisioning.ownership`, "must bind platform capacity or one tenant metal hostname.");
|
|
11357
11357
|
if (provisioning.metalHostname !== undefined && !/^(?=.{1,253}$)[A-Za-z0-9](?:[A-Za-z0-9.-]*[A-Za-z0-9])?$/.test(String(provisioning.metalHostname)))
|
|
11358
11358
|
fail2(`deployment.spec.targets.${targetName}.provisioning.metalHostname`, "is invalid.");
|
|
11359
|
+
const provisionedResources = object(provisioning.resources, `deployment.spec.targets.${targetName}.provisioning.resources`);
|
|
11360
|
+
exact3(provisionedResources, ["physicalCores", "vcpu", "memoryGib", "diskGib", "egressGuaranteedMbps", "egressBurstMbps", "confidential"], `deployment.spec.targets.${targetName}.provisioning.resources`);
|
|
11361
|
+
integer(provisionedResources.physicalCores, `deployment.spec.targets.${targetName}.provisioning.resources.physicalCores`, 1, 1024);
|
|
11362
|
+
integer(provisionedResources.vcpu, `deployment.spec.targets.${targetName}.provisioning.resources.vcpu`, 1, 4096);
|
|
11363
|
+
integer(provisionedResources.memoryGib, `deployment.spec.targets.${targetName}.provisioning.resources.memoryGib`, 1, 4194304);
|
|
11364
|
+
integer(provisionedResources.diskGib, `deployment.spec.targets.${targetName}.provisioning.resources.diskGib`, 1, 1048576);
|
|
11365
|
+
integer(provisionedResources.egressGuaranteedMbps, `deployment.spec.targets.${targetName}.provisioning.resources.egressGuaranteedMbps`, 0, 1e7);
|
|
11366
|
+
integer(provisionedResources.egressBurstMbps, `deployment.spec.targets.${targetName}.provisioning.resources.egressBurstMbps`, Number(provisionedResources.egressGuaranteedMbps), 1e7);
|
|
11367
|
+
if (typeof provisionedResources.confidential !== "boolean")
|
|
11368
|
+
fail2(`deployment.spec.targets.${targetName}.provisioning.resources.confidential`, "must be boolean.");
|
|
11369
|
+
if (typeof capacity.cpuCores === "number" && Number(provisionedResources.vcpu) < capacity.cpuCores || typeof capacity.memoryMiB === "number" && Number(provisionedResources.memoryGib) * 1024 < capacity.memoryMiB || typeof capacity.storageGiB === "number" && Number(provisionedResources.diskGib) < capacity.storageGiB) {
|
|
11370
|
+
fail2(`deployment.spec.targets.${targetName}.provisioning.resources`, "must satisfy the per-slot allocation minimum.");
|
|
11371
|
+
}
|
|
11372
|
+
if ((selector.confidentialCompute === "required" || allocation.execution === "oci-kata-qemu-snp") && provisionedResources.confidential !== true)
|
|
11373
|
+
fail2(`deployment.spec.targets.${targetName}.provisioning.resources.confidential`, "must be true for confidential execution.");
|
|
11374
|
+
if (typeof provisioning.monthlyAmountCents !== "string" || !/^\d{1,18}$/.test(provisioning.monthlyAmountCents))
|
|
11375
|
+
fail2(`deployment.spec.targets.${targetName}.provisioning.monthlyAmountCents`, "must be a bounded USD-cent amount.");
|
|
11359
11376
|
if (typeof provisioning.maxMonthlySpendMinor !== "string" || !/^\d{1,18}$/.test(provisioning.maxMonthlySpendMinor))
|
|
11360
11377
|
fail2(`deployment.spec.targets.${targetName}.provisioning.maxMonthlySpendMinor`, "must be a bounded decimal minor-unit amount.");
|
|
11361
11378
|
}
|
|
@@ -11701,13 +11718,24 @@ function initCoordinates(options) {
|
|
|
11701
11718
|
throw new Error("reuse require cannot include provisioning coordinates");
|
|
11702
11719
|
if (options.provisioning !== undefined) {
|
|
11703
11720
|
for (const [label, value] of Object.entries({
|
|
11704
|
-
plan: options.provisioning.planKey,
|
|
11705
11721
|
region: options.provisioning.regionKey,
|
|
11706
11722
|
image: options.provisioning.imageKey,
|
|
11707
11723
|
environment: options.provisioning.environmentKey
|
|
11708
11724
|
}))
|
|
11709
11725
|
if (!/^[a-z][a-z0-9-]{0,62}$/.test(value))
|
|
11710
11726
|
throw new Error(`deployment provisioning ${label} must be a lowercase typed name`);
|
|
11727
|
+
const resources = options.provisioning.resources;
|
|
11728
|
+
for (const [label, value] of Object.entries(resources).filter(([key]) => key !== "confidential")) {
|
|
11729
|
+
if (!Number.isSafeInteger(value) || Number(value) < 0)
|
|
11730
|
+
throw new Error(`deployment provisioning ${label} must be a non-negative integer`);
|
|
11731
|
+
}
|
|
11732
|
+
if (resources.physicalCores < 1 || resources.vcpu < result.cpuCores || resources.memoryGib * 1024 < result.memoryMiB || resources.diskGib < result.storageGiB || resources.egressBurstMbps < resources.egressGuaranteedMbps) {
|
|
11733
|
+
throw new Error("deployment provisioning resources must satisfy the target allocation and bandwidth bounds");
|
|
11734
|
+
}
|
|
11735
|
+
if (result.isolation === "sev-snp" && !resources.confidential)
|
|
11736
|
+
throw new Error("deployment provisioning must provide confidential capacity for sev-snp");
|
|
11737
|
+
if (!/^\d{1,18}$/.test(options.provisioning.monthlyAmountCents))
|
|
11738
|
+
throw new Error("deployment provisioning monthly amount must be a bounded USD-cent amount");
|
|
11711
11739
|
if (!/^\d{1,18}$/.test(options.provisioning.maxMonthlySpendMinor))
|
|
11712
11740
|
throw new Error("deployment provisioning monthly spend must be a bounded decimal minor-unit amount");
|
|
11713
11741
|
if (options.provisioning.ownership === "tenant-metal" && !options.provisioning.metalHostname)
|
|
@@ -11724,7 +11752,7 @@ function defaultTypeScriptDeployment(name, options = {}) {
|
|
|
11724
11752
|
const execution = selected.runtime === "native" ? "native" : selected.runtime === "containerd" ? "oci-runc" : "oci-kata-qemu-snp";
|
|
11725
11753
|
const hostPackageVersion = selected.operatingSystem === "ubuntu-24.04" ? "ubuntu-24.04" : "ubuntu-26.04";
|
|
11726
11754
|
const provisioningBlock = selected.provisioning === undefined ? "" : `,
|
|
11727
|
-
provisioning: {
|
|
11755
|
+
provisioning: { regionKey: '${selected.provisioning.regionKey}', imageKey: '${selected.provisioning.imageKey}', environmentKey: '${selected.provisioning.environmentKey}', ownership: '${selected.provisioning.ownership}',${selected.provisioning.metalHostname ? ` metalHostname: '${selected.provisioning.metalHostname}',` : ""} resources: ${JSON.stringify(selected.provisioning.resources)}, monthlyAmountCents: '${selected.provisioning.monthlyAmountCents}', maxMonthlySpendMinor: '${selected.provisioning.maxMonthlySpendMinor}' }`;
|
|
11728
11756
|
const requirementBlock = selected.runtime === "native" ? `bun: providers.bun.require()` : selected.runtime === "containerd" ? `containerd: providers.containerd.require({ version: '${hostPackageVersion}' }),
|
|
11729
11757
|
nginx: providers.nginx.require({ version: '${hostPackageVersion}' })` : `containerd: providers.containerd.require(),
|
|
11730
11758
|
kata: providers.kata.require(),
|
|
@@ -18771,9 +18799,6 @@ function parseOptions(argv2) {
|
|
|
18771
18799
|
options.deployReuse = value;
|
|
18772
18800
|
else
|
|
18773
18801
|
options.optionError = "--reuse must be require or prefer.";
|
|
18774
|
-
} else if (token === "--provision-plan") {
|
|
18775
|
-
options.deployProvisionPlan = argv2[++index];
|
|
18776
|
-
options.deployInitCustomized = true;
|
|
18777
18802
|
} else if (token === "--provision-region") {
|
|
18778
18803
|
options.deployProvisionRegion = argv2[++index];
|
|
18779
18804
|
options.deployInitCustomized = true;
|
|
@@ -18793,6 +18818,26 @@ function parseOptions(argv2) {
|
|
|
18793
18818
|
} else if (token === "--provision-metal") {
|
|
18794
18819
|
options.deployProvisionMetal = argv2[++index];
|
|
18795
18820
|
options.deployInitCustomized = true;
|
|
18821
|
+
} else if (["--provision-physical-cores", "--provision-vcpu", "--provision-memory-gib", "--provision-disk-gib", "--provision-guaranteed-mbps", "--provision-burst-mbps"].includes(token)) {
|
|
18822
|
+
const value = Number(argv2[++index] ?? "");
|
|
18823
|
+
options.deployInitCustomized = true;
|
|
18824
|
+
if (!Number.isSafeInteger(value) || value < 0)
|
|
18825
|
+
options.optionError = `${token} must be a non-negative integer.`;
|
|
18826
|
+
else if (token === "--provision-physical-cores")
|
|
18827
|
+
options.deployProvisionPhysicalCores = value;
|
|
18828
|
+
else if (token === "--provision-vcpu")
|
|
18829
|
+
options.deployProvisionVcpu = value;
|
|
18830
|
+
else if (token === "--provision-memory-gib")
|
|
18831
|
+
options.deployProvisionMemoryGib = value;
|
|
18832
|
+
else if (token === "--provision-disk-gib")
|
|
18833
|
+
options.deployProvisionDiskGib = value;
|
|
18834
|
+
else if (token === "--provision-guaranteed-mbps")
|
|
18835
|
+
options.deployProvisionGuaranteedMbps = value;
|
|
18836
|
+
else
|
|
18837
|
+
options.deployProvisionBurstMbps = value;
|
|
18838
|
+
} else if (token === "--provision-monthly-amount-cents") {
|
|
18839
|
+
options.deployProvisionMonthlyAmountCents = argv2[++index];
|
|
18840
|
+
options.deployInitCustomized = true;
|
|
18796
18841
|
} else if (token === "--max-monthly-spend-minor") {
|
|
18797
18842
|
options.deployMaxMonthlySpendMinor = argv2[++index];
|
|
18798
18843
|
options.deployInitCustomized = true;
|
|
@@ -20581,20 +20626,35 @@ async function cmdDeploy(options, args) {
|
|
|
20581
20626
|
reuse: options.deployReuse,
|
|
20582
20627
|
profile: options.deployProfile,
|
|
20583
20628
|
...[
|
|
20584
|
-
options.deployProvisionPlan,
|
|
20585
20629
|
options.deployProvisionRegion,
|
|
20586
20630
|
options.deployProvisionImage,
|
|
20587
20631
|
options.deployProvisionEnvironment,
|
|
20588
20632
|
options.deployProvisionOwnership,
|
|
20633
|
+
options.deployProvisionPhysicalCores,
|
|
20634
|
+
options.deployProvisionVcpu,
|
|
20635
|
+
options.deployProvisionMemoryGib,
|
|
20636
|
+
options.deployProvisionDiskGib,
|
|
20637
|
+
options.deployProvisionGuaranteedMbps,
|
|
20638
|
+
options.deployProvisionBurstMbps,
|
|
20639
|
+
options.deployProvisionMonthlyAmountCents,
|
|
20589
20640
|
options.deployMaxMonthlySpendMinor
|
|
20590
20641
|
].some((value) => value !== undefined) ? {
|
|
20591
20642
|
provisioning: {
|
|
20592
|
-
planKey: options.deployProvisionPlan ?? "",
|
|
20593
20643
|
regionKey: options.deployProvisionRegion ?? "",
|
|
20594
20644
|
imageKey: options.deployProvisionImage ?? "",
|
|
20595
20645
|
environmentKey: options.deployProvisionEnvironment ?? "",
|
|
20596
20646
|
ownership: options.deployProvisionOwnership ?? "platform",
|
|
20597
20647
|
...options.deployProvisionMetal ? { metalHostname: options.deployProvisionMetal } : {},
|
|
20648
|
+
resources: {
|
|
20649
|
+
physicalCores: options.deployProvisionPhysicalCores ?? 0,
|
|
20650
|
+
vcpu: options.deployProvisionVcpu ?? 0,
|
|
20651
|
+
memoryGib: options.deployProvisionMemoryGib ?? 0,
|
|
20652
|
+
diskGib: options.deployProvisionDiskGib ?? 0,
|
|
20653
|
+
egressGuaranteedMbps: options.deployProvisionGuaranteedMbps ?? 0,
|
|
20654
|
+
egressBurstMbps: options.deployProvisionBurstMbps ?? 0,
|
|
20655
|
+
confidential: options.deployIsolation === "sev-snp"
|
|
20656
|
+
},
|
|
20657
|
+
monthlyAmountCents: options.deployProvisionMonthlyAmountCents ?? "",
|
|
20598
20658
|
maxMonthlySpendMinor: options.deployMaxMonthlySpendMinor ?? ""
|
|
20599
20659
|
}
|
|
20600
20660
|
} : {}
|
|
@@ -20933,9 +20993,13 @@ function usage() {
|
|
|
20933
20993
|
--storage-gib <n> Reserved storage GiB per compute
|
|
20934
20994
|
--sharing <mode> exclusive or shared (native requires exclusive)
|
|
20935
20995
|
--reuse <mode> require existing capacity or prefer reuse then approved provisioning
|
|
20936
|
-
--provision-
|
|
20996
|
+
--provision-region <key> --provision-image <key>
|
|
20937
20997
|
--provision-environment <key> --provision-ownership <platform|tenant-metal>
|
|
20938
20998
|
--provision-metal <host> Required only for tenant-metal ownership
|
|
20999
|
+
--provision-physical-cores <n> --provision-vcpu <n>
|
|
21000
|
+
--provision-memory-gib <n> --provision-disk-gib <n>
|
|
21001
|
+
--provision-guaranteed-mbps <n> --provision-burst-mbps <n>
|
|
21002
|
+
--provision-monthly-amount-cents <n> Exact approved USD cost per created compute
|
|
20939
21003
|
--max-monthly-spend-minor <n> Hard approved scale-out spend ceiling
|
|
20940
21004
|
--force Init may replace an existing generated target
|
|
20941
21005
|
|
package/dist/index.d.ts
CHANGED
|
@@ -42,7 +42,7 @@ export type { AgentRelease, StagedAgentRelease, UpdateCommand, UpdateCommandResu
|
|
|
42
42
|
export { activateAgentRelease, probeAgentSocket, readAgentUpdateReceipt, recoverInterruptedAgentUpdate, requestAgentUpdate, startAgentUpdateHelper, AGENT_UPDATE_GROUP, AGENT_UPDATE_HELPER_UNIT_PATH, AGENT_UPDATE_JOURNAL, AGENT_UPDATE_RECEIPT } from './agent-update-helper';
|
|
43
43
|
export type { AgentUpdateOutcome, AgentUpdateReceipt, AgentUpdateRequest, AgentUpdateResponse } from './agent-update-helper';
|
|
44
44
|
export { DEFAULT_SOFTWARE_HELPER_SOCKET, requestSoftware, startSoftwareHelper, SOFTWARE_HELPER_GROUP, SOFTWARE_HELPER_UNIT_PATH } from './software-helper';
|
|
45
|
-
export { ensureSoftwareRequirements, observeSoftwareHost, validateSoftwareRequirements, OS_CATALOG, SOFTWARE_CATALOG } from './software';
|
|
45
|
+
export { countPaidManagedSoftware, ensureSoftwareRequirements, observeSoftwareHost, softwareBillingClass, validateSoftwareRequirements, OS_CATALOG, SOFTWARE_CATALOG } from './software';
|
|
46
46
|
export type { CatalogStatus, DeploymentChannel, OsCatalogEntry, SoftwareCatalogEntry, SoftwareCommandResult, SoftwareExec, SoftwareId, SoftwareObservation, SoftwareRequirement } from './software';
|
|
47
47
|
export { AGENT_EGRESS_TABLE, BLOCKED_IPV4, BLOCKED_IPV6, SYSTEMD_RESOLVED_ADDRESS, SYSTEMD_RESOLVED_STUB, applyAgentEgressPolicy, normalizeEgressTcpPorts, renderAgentEgressNft, superviseAgentEgressPolicy, systemdAgentEgressDirectives, verifyAgentEgressPolicy } from './egress-policy';
|
|
48
48
|
export type { EgressCommand, EgressCommandResult } from './egress-policy';
|
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.119";
|
|
370
370
|
|
|
371
371
|
// src/otel-collector.ts
|
|
372
372
|
var FORGEZERO_OTEL_COLLECTOR_UNIT = "forgezero-otel-collector.service";
|
|
@@ -195,24 +195,31 @@ var OS_CATALOG = [
|
|
|
195
195
|
}
|
|
196
196
|
];
|
|
197
197
|
var SOFTWARE_CATALOG = [
|
|
198
|
-
{ id: "bun", version: "1.3.14", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
199
|
-
{ id: "docker", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
200
|
-
{ id: "containerd", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
201
|
-
{ id: "kata-containers", version: "4.0.0", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
202
|
-
{ id: "nginx", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
203
|
-
{ id: "arangodb", version: "3.11.14", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
204
|
-
{ id: "cloudflared", version: "2026.7.3", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
205
|
-
{ id: "cloudflare-warp", version: "2026.6.822.0-min", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
206
|
-
{ id: "ufw", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
207
|
-
{ id: "openssh-client", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
208
|
-
{ id: "git", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
209
|
-
{ id: "docker", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
210
|
-
{ id: "containerd", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
211
|
-
{ id: "nginx", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
212
|
-
{ id: "ufw", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
213
|
-
{ id: "openssh-client", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
214
|
-
{ id: "git", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" }
|
|
198
|
+
{ id: "bun", version: "1.3.14", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
199
|
+
{ id: "docker", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
200
|
+
{ id: "containerd", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
201
|
+
{ id: "kata-containers", version: "4.0.0", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
202
|
+
{ id: "nginx", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
203
|
+
{ id: "arangodb", version: "3.11.14", billingClass: "paid-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
204
|
+
{ id: "cloudflared", version: "2026.7.3", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
205
|
+
{ id: "cloudflare-warp", version: "2026.6.822.0-min", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
206
|
+
{ id: "ufw", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
207
|
+
{ id: "openssh-client", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
208
|
+
{ id: "git", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
209
|
+
{ id: "docker", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
210
|
+
{ id: "containerd", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
211
|
+
{ id: "nginx", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
212
|
+
{ id: "ufw", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
213
|
+
{ id: "openssh-client", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
214
|
+
{ id: "git", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" }
|
|
215
215
|
];
|
|
216
|
+
var softwareBillingClass = (requirement) => {
|
|
217
|
+
const entry = SOFTWARE_CATALOG.find((candidate) => candidate.id === requirement.id && candidate.version === requirement.version);
|
|
218
|
+
if (!entry)
|
|
219
|
+
throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
|
|
220
|
+
return entry.billingClass;
|
|
221
|
+
};
|
|
222
|
+
var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
|
|
216
223
|
var UBUNTU_2604_X64 = [
|
|
217
224
|
{ requirement: { id: "bun", version: "1.3.14" } },
|
|
218
225
|
{ requirement: { id: "docker", version: "ubuntu-26.04" } },
|
package/dist/metal-provision.js
CHANGED
|
@@ -195,24 +195,31 @@ var OS_CATALOG = [
|
|
|
195
195
|
}
|
|
196
196
|
];
|
|
197
197
|
var SOFTWARE_CATALOG = [
|
|
198
|
-
{ id: "bun", version: "1.3.14", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
199
|
-
{ id: "docker", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
200
|
-
{ id: "containerd", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
201
|
-
{ id: "kata-containers", version: "4.0.0", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
202
|
-
{ id: "nginx", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
203
|
-
{ id: "arangodb", version: "3.11.14", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
204
|
-
{ id: "cloudflared", version: "2026.7.3", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
205
|
-
{ id: "cloudflare-warp", version: "2026.6.822.0-min", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
206
|
-
{ id: "ufw", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
207
|
-
{ id: "openssh-client", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
208
|
-
{ id: "git", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
209
|
-
{ id: "docker", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
210
|
-
{ id: "containerd", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
211
|
-
{ id: "nginx", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
212
|
-
{ id: "ufw", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
213
|
-
{ id: "openssh-client", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
214
|
-
{ id: "git", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" }
|
|
198
|
+
{ id: "bun", version: "1.3.14", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
199
|
+
{ id: "docker", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
200
|
+
{ id: "containerd", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
201
|
+
{ id: "kata-containers", version: "4.0.0", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
202
|
+
{ id: "nginx", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
203
|
+
{ id: "arangodb", version: "3.11.14", billingClass: "paid-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
204
|
+
{ id: "cloudflared", version: "2026.7.3", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
205
|
+
{ id: "cloudflare-warp", version: "2026.6.822.0-min", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
206
|
+
{ id: "ufw", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
207
|
+
{ id: "openssh-client", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
208
|
+
{ id: "git", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
209
|
+
{ id: "docker", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
210
|
+
{ id: "containerd", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
211
|
+
{ id: "nginx", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
212
|
+
{ id: "ufw", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
213
|
+
{ id: "openssh-client", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
214
|
+
{ id: "git", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" }
|
|
215
215
|
];
|
|
216
|
+
var softwareBillingClass = (requirement) => {
|
|
217
|
+
const entry = SOFTWARE_CATALOG.find((candidate) => candidate.id === requirement.id && candidate.version === requirement.version);
|
|
218
|
+
if (!entry)
|
|
219
|
+
throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
|
|
220
|
+
return entry.billingClass;
|
|
221
|
+
};
|
|
222
|
+
var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
|
|
216
223
|
var UBUNTU_2604_X64 = [
|
|
217
224
|
{ requirement: { id: "bun", version: "1.3.14" } },
|
|
218
225
|
{ requirement: { id: "docker", version: "ubuntu-26.04" } },
|
|
@@ -55,24 +55,31 @@ var OS_CATALOG = [
|
|
|
55
55
|
}
|
|
56
56
|
];
|
|
57
57
|
var SOFTWARE_CATALOG = [
|
|
58
|
-
{ id: "bun", version: "1.3.14", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
59
|
-
{ id: "docker", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
60
|
-
{ id: "containerd", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
61
|
-
{ id: "kata-containers", version: "4.0.0", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
62
|
-
{ id: "nginx", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
63
|
-
{ id: "arangodb", version: "3.11.14", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
64
|
-
{ id: "cloudflared", version: "2026.7.3", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
65
|
-
{ id: "cloudflare-warp", version: "2026.6.822.0-min", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
66
|
-
{ id: "ufw", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
67
|
-
{ id: "openssh-client", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
68
|
-
{ id: "git", version: "ubuntu-26.04", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
69
|
-
{ id: "docker", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
70
|
-
{ id: "containerd", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
71
|
-
{ id: "nginx", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
72
|
-
{ id: "ufw", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
73
|
-
{ id: "openssh-client", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
74
|
-
{ id: "git", version: "ubuntu-24.04", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" }
|
|
58
|
+
{ id: "bun", version: "1.3.14", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
59
|
+
{ id: "docker", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
60
|
+
{ id: "containerd", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
61
|
+
{ id: "kata-containers", version: "4.0.0", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
62
|
+
{ id: "nginx", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
63
|
+
{ id: "arangodb", version: "3.11.14", billingClass: "paid-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
64
|
+
{ id: "cloudflared", version: "2026.7.3", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
65
|
+
{ id: "cloudflare-warp", version: "2026.6.822.0-min", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
66
|
+
{ id: "ufw", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
67
|
+
{ id: "openssh-client", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
68
|
+
{ id: "git", version: "ubuntu-26.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "26.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
69
|
+
{ id: "docker", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
70
|
+
{ id: "containerd", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
71
|
+
{ id: "nginx", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
72
|
+
{ id: "ufw", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
73
|
+
{ id: "openssh-client", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" },
|
|
74
|
+
{ id: "git", version: "ubuntu-24.04", billingClass: "free-managed", status: "active", os: "ubuntu", osVersion: "24.04", architecture: "x64", evidence: "reviewed-strategy-and-tests" }
|
|
75
75
|
];
|
|
76
|
+
var softwareBillingClass = (requirement) => {
|
|
77
|
+
const entry = SOFTWARE_CATALOG.find((candidate) => candidate.id === requirement.id && candidate.version === requirement.version);
|
|
78
|
+
if (!entry)
|
|
79
|
+
throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
|
|
80
|
+
return entry.billingClass;
|
|
81
|
+
};
|
|
82
|
+
var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
|
|
76
83
|
var UBUNTU_2604_X64 = [
|
|
77
84
|
{ requirement: { id: "bun", version: "1.3.14" } },
|
|
78
85
|
{ requirement: { id: "docker", version: "ubuntu-26.04" } },
|