@forgezero/agent 0.1.119 → 0.1.121

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.
@@ -917,7 +917,7 @@ async function postSignedNode(options, path, body) {
917
917
  }
918
918
 
919
919
  // src/version.ts
920
- var VERSION3 = "0.1.119";
920
+ var VERSION3 = "0.1.121";
921
921
 
922
922
  // src/agent-heartbeat.ts
923
923
  function readAgentHostMetrics() {
package/dist/bootstrap.js CHANGED
@@ -1460,7 +1460,7 @@ var UPDATE_RETRY_BASE_MS = 5 * 60000;
1460
1460
  var UPDATE_RETRY_MAX_MS = 24 * 60 * 60000;
1461
1461
 
1462
1462
  // src/version.ts
1463
- var VERSION = "0.1.119";
1463
+ var VERSION = "0.1.121";
1464
1464
 
1465
1465
  // src/software.ts
1466
1466
  var PINNED_BUN_VERSION = "1.3.14";
@@ -79,7 +79,11 @@ var softwareBillingClass = (requirement) => {
79
79
  throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
80
80
  return entry.billingClass;
81
81
  };
82
- var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
82
+ var managedSoftwareEvidence = (requirements) => [...new Map(requirements.map((requirement) => {
83
+ const billingClass = softwareBillingClass(requirement);
84
+ return [`${requirement.id}@${requirement.version}`, { ...requirement, billingClass }];
85
+ })).values()].sort((left, right) => left.id.localeCompare(right.id) || left.version.localeCompare(right.version));
86
+ var countPaidManagedSoftware = (requirements) => managedSoftwareEvidence(requirements).filter((requirement) => requirement.billingClass === "paid-managed").length;
83
87
  var UBUNTU_2604_X64 = [
84
88
  { requirement: { id: "bun", version: "1.3.14" } },
85
89
  { requirement: { id: "docker", version: "ubuntu-26.04" } },
@@ -79,7 +79,11 @@ var softwareBillingClass = (requirement) => {
79
79
  throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
80
80
  return entry.billingClass;
81
81
  };
82
- var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
82
+ var managedSoftwareEvidence = (requirements) => [...new Map(requirements.map((requirement) => {
83
+ const billingClass = softwareBillingClass(requirement);
84
+ return [`${requirement.id}@${requirement.version}`, { ...requirement, billingClass }];
85
+ })).values()].sort((left, right) => left.id.localeCompare(right.id) || left.version.localeCompare(right.version));
86
+ var countPaidManagedSoftware = (requirements) => managedSoftwareEvidence(requirements).filter((requirement) => requirement.billingClass === "paid-managed").length;
83
87
  var UBUNTU_2604_X64 = [
84
88
  { requirement: { id: "bun", version: "1.3.14" } },
85
89
  { requirement: { id: "docker", version: "ubuntu-26.04" } },
@@ -79,7 +79,11 @@ var softwareBillingClass = (requirement) => {
79
79
  throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
80
80
  return entry.billingClass;
81
81
  };
82
- var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
82
+ var managedSoftwareEvidence = (requirements) => [...new Map(requirements.map((requirement) => {
83
+ const billingClass = softwareBillingClass(requirement);
84
+ return [`${requirement.id}@${requirement.version}`, { ...requirement, billingClass }];
85
+ })).values()].sort((left, right) => left.id.localeCompare(right.id) || left.version.localeCompare(right.version));
86
+ var countPaidManagedSoftware = (requirements) => managedSoftwareEvidence(requirements).filter((requirement) => requirement.billingClass === "paid-managed").length;
83
87
  var UBUNTU_2604_X64 = [
84
88
  { requirement: { id: "bun", version: "1.3.14" } },
85
89
  { requirement: { id: "docker", version: "ubuntu-26.04" } },
@@ -1,6 +1,6 @@
1
1
  import { type DrainReport, type QueueTask } from '@forgezero/runtime/queue';
2
2
  import { type GitHostResolver } from './git-egress';
3
- import { type SoftwareRequirement } from './software';
3
+ import { type ManagedSoftwareEvidence, type SoftwareRequirement } from './software';
4
4
  import type { DeploymentService } from './definition';
5
5
  import type { ServiceActivationState } from './service-supervisor';
6
6
  import type { ContainerActivateRequest, ContainerBuildRequest, ContainerBuildResult } from './container-supervisor';
@@ -74,7 +74,9 @@ export interface DeploymentResult {
74
74
  profile: string;
75
75
  /** Resolved only from the validated plan and its bounded inputs at this revision. */
76
76
  resolvedTargets?: readonly ResolvedDeploymentTarget[];
77
- /** Distinct paid catalogue entries successfully managed on this compute. */
77
+ /** Exact distinct catalogue entries successfully managed on this compute. */
78
+ managedSoftware: readonly ManagedSoftwareEvidence[];
79
+ /** Derived compatibility count; managedSoftware remains authoritative. */
78
80
  paidManagedSoftwareCount: number;
79
81
  release: string;
80
82
  ok: boolean;
package/dist/fz-agent.js CHANGED
@@ -4049,7 +4049,7 @@ function combineKEMS(realSeedLen, realMsgLen, expandSeed, combiner, ...kems) {
4049
4049
  var x25519kem = /* @__PURE__ */ ecdhKem(x25519);
4050
4050
  var ml_kem768_x25519 = /* @__PURE__ */ (() => combineKEMS(32, 32, expandSeedXof(shake256), (pk, ct, ss) => sha3_256(concatBytes2(ss[0], ss[1], ct[1], pk[1], asciiToBytes("\\.//^\\"))), ml_kem768, x25519kem))();
4051
4051
 
4052
- // ../runtime/dist/identity.js
4052
+ // ../../node_modules/.bun/@forgezero+runtime@0.1.17+cd212ec15d36da0a/node_modules/@forgezero/runtime/dist/identity.js
4053
4053
  var ENCODER = new TextEncoder;
4054
4054
  var b64 = toBase64Url;
4055
4055
  var un64 = fromBase64Url;
@@ -4196,7 +4196,7 @@ function signRequest(keys, nodeKey, args) {
4196
4196
  };
4197
4197
  }
4198
4198
 
4199
- // ../vault/dist/index.js
4199
+ // ../../node_modules/.bun/@forgezero+vault@0.1.22+3f759277d50bc01a/node_modules/@forgezero/vault/dist/index.js
4200
4200
  var DEFAULT_SOCKET = "/run/forgezero/vault.sock";
4201
4201
 
4202
4202
  // src/socket.ts
@@ -4692,7 +4692,7 @@ import { chmodSync as chmodSync4, existsSync as existsSync4, lstatSync as lstatS
4692
4692
  import { createHash as createHash5, randomUUID } from "crypto";
4693
4693
  import { dirname as dirname3, isAbsolute as isAbsolute2, join as join2 } from "path";
4694
4694
 
4695
- // ../runtime/dist/queue.js
4695
+ // ../../node_modules/.bun/@forgezero+runtime@0.1.17+cd212ec15d36da0a/node_modules/@forgezero/runtime/dist/queue.js
4696
4696
  class QueueStoppedError extends Error {
4697
4697
  constructor() {
4698
4698
  super("queue: stopped before this task could run");
@@ -5075,7 +5075,11 @@ var softwareBillingClass = (requirement) => {
5075
5075
  throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
5076
5076
  return entry.billingClass;
5077
5077
  };
5078
- var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
5078
+ var managedSoftwareEvidence = (requirements) => [...new Map(requirements.map((requirement) => {
5079
+ const billingClass = softwareBillingClass(requirement);
5080
+ return [`${requirement.id}@${requirement.version}`, { ...requirement, billingClass }];
5081
+ })).values()].sort((left, right) => left.id.localeCompare(right.id) || left.version.localeCompare(right.version));
5082
+ var countPaidManagedSoftware = (requirements) => managedSoftwareEvidence(requirements).filter((requirement) => requirement.billingClass === "paid-managed").length;
5079
5083
  var UBUNTU_2604_X64 = [
5080
5084
  { requirement: { id: "bun", version: "1.3.14" } },
5081
5085
  { requirement: { id: "docker", version: "ubuntu-26.04" } },
@@ -8307,7 +8311,7 @@ function createDeploymentManager(options) {
8307
8311
  const planPath = join2(release, DEPLOY_PLAN_FILE);
8308
8312
  if (existsSync4(planPath)) {
8309
8313
  const plan = parseDeploymentPlan(readDefinition(planPath));
8310
- const paidManagedSoftware = new Set;
8314
+ const managedSoftware2 = new Map;
8311
8315
  for (const workflow of Object.values(plan.spec.workflows))
8312
8316
  for (const stage2 of Object.values(workflow.stages)) {
8313
8317
  if (stage2.strategy.mode === "rolling" || stage2.strategy.mode === "canary" || Object.values(stage2.steps).some((step2) => step2.scope.kind === "target-batches")) {
@@ -8468,10 +8472,8 @@ function createDeploymentManager(options) {
8468
8472
  return { id: id2, version: requirement2.version };
8469
8473
  });
8470
8474
  await options.ensureSoftware(requirements);
8471
- for (const requirement2 of requirements) {
8472
- if (countPaidManagedSoftware([requirement2]) === 1) {
8473
- paidManagedSoftware.add(`${requirement2.id}@${requirement2.version}`);
8474
- }
8475
+ for (const evidence of managedSoftwareEvidence(requirements)) {
8476
+ managedSoftware2.set(`${evidence.id}@${evidence.version}`, evidence);
8475
8477
  }
8476
8478
  return { changed: true };
8477
8479
  },
@@ -8707,7 +8709,8 @@ function createDeploymentManager(options) {
8707
8709
  phases: [phase],
8708
8710
  execution: deploymentExecution([phase]),
8709
8711
  resolvedTargets,
8710
- paidManagedSoftwareCount: paidManagedSoftware.size,
8712
+ managedSoftware: [...managedSoftware2.values()].sort((left, right) => left.id.localeCompare(right.id) || left.version.localeCompare(right.version)),
8713
+ paidManagedSoftwareCount: [...managedSoftware2.values()].filter((item) => item.billingClass === "paid-managed").length,
8711
8714
  ...capacity2 ? { capacity: capacity2 } : {}
8712
8715
  };
8713
8716
  }
@@ -8816,6 +8819,7 @@ function createDeploymentManager(options) {
8816
8819
  }
8817
8820
  };
8818
8821
  }
8822
+ const managedSoftware = managedSoftwareEvidence(selectedProfile.software);
8819
8823
  return {
8820
8824
  key: options.key,
8821
8825
  repository: options.repository,
@@ -8824,7 +8828,8 @@ function createDeploymentManager(options) {
8824
8828
  definitionDigest,
8825
8829
  definitionVersion: 2,
8826
8830
  profile: options.profile,
8827
- paidManagedSoftwareCount: countPaidManagedSoftware(selectedProfile.software),
8831
+ managedSoftware,
8832
+ paidManagedSoftwareCount: managedSoftware.filter((item) => item.billingClass === "paid-managed").length,
8828
8833
  release,
8829
8834
  ok: true,
8830
8835
  phases,
@@ -9153,6 +9158,7 @@ async function pullDeploymentOnce(options) {
9153
9158
  definitionDigest: result.definitionDigest,
9154
9159
  definitionVersion: result.definitionVersion,
9155
9160
  profile: result.profile,
9161
+ managedSoftware: result.managedSoftware,
9156
9162
  paidManagedSoftwareCount: result.paidManagedSoftwareCount,
9157
9163
  execution: result.execution,
9158
9164
  ...result.resolvedTargets ? { resolvedTargets: result.resolvedTargets.map((target) => ({
@@ -9634,7 +9640,7 @@ async function writeAndCloseProcessInput(input, value) {
9634
9640
  }
9635
9641
 
9636
9642
  // src/version.ts
9637
- var VERSION2 = "0.1.119";
9643
+ var VERSION2 = "0.1.121";
9638
9644
 
9639
9645
  // src/ssh-bootstrap.ts
9640
9646
  class SshBootstrapError extends Error {
@@ -11357,7 +11363,7 @@ function requestDeploymentCommand(input, socketPath = DEFAULT_DEPLOYMENT_RUNNER_
11357
11363
  // src/snp-attestation.ts
11358
11364
  import { existsSync as existsSync10 } from "fs";
11359
11365
 
11360
- // ../runtime/dist/snp.js
11366
+ // ../../node_modules/.bun/@forgezero+runtime@0.1.17+cd212ec15d36da0a/node_modules/@forgezero/runtime/dist/snp.js
11361
11367
  var REPORT_BYTES = 1184;
11362
11368
 
11363
11369
  // src/snp-attestation.ts
@@ -17427,6 +17433,7 @@ async function runCommunityRehearsalHost(request) {
17427
17433
 
17428
17434
  // src/supervised-app.ts
17429
17435
  import { lstatSync as lstatSync9, readFileSync as readFileSync19 } from "fs";
17436
+ import process2 from "process";
17430
17437
  function readConfig(path2) {
17431
17438
  const stat = lstatSync9(path2);
17432
17439
  if (!stat.isFile() || stat.isSymbolicLink() || stat.uid !== 0 || (stat.mode & 18) !== 0 || stat.size > 128 * 1024) {
@@ -17455,18 +17462,19 @@ async function runSupervisedApp(path2) {
17455
17462
  });
17456
17463
  const forward = (signal) => {
17457
17464
  try {
17458
- process.kill(-child.pid, signal);
17465
+ process2.kill(-child.pid, signal);
17459
17466
  } catch {}
17460
17467
  };
17461
17468
  const term = () => forward("SIGTERM");
17462
17469
  const interrupt = () => forward("SIGINT");
17463
- process.on("SIGTERM", term);
17464
- process.on("SIGINT", interrupt);
17470
+ const signalProcess = process2;
17471
+ signalProcess.on("SIGTERM", term);
17472
+ signalProcess.on("SIGINT", interrupt);
17465
17473
  try {
17466
17474
  return await child.exited;
17467
17475
  } finally {
17468
- process.off("SIGTERM", term);
17469
- process.off("SIGINT", interrupt);
17476
+ signalProcess.off("SIGTERM", term);
17477
+ signalProcess.off("SIGINT", interrupt);
17470
17478
  }
17471
17479
  }
17472
17480
 
package/dist/fz.js CHANGED
@@ -4261,7 +4261,7 @@ var init_identity = __esm(() => {
4261
4261
  RESPONSE_CIPHERTEXT_BYTES = length(ml_kem768_x25519.lengths.cipherText, "hybrid response ciphertext");
4262
4262
  });
4263
4263
 
4264
- // ../vault/dist/index.js
4264
+ // ../../node_modules/.bun/@forgezero+vault@0.1.22+3f759277d50bc01a/node_modules/@forgezero/vault/dist/index.js
4265
4265
  var exports_dist = {};
4266
4266
  __export(exports_dist, {
4267
4267
  vaultCredentials: () => vaultCredentials,
@@ -4715,6 +4715,8 @@ function thresholdMode(id) {
4715
4715
  }
4716
4716
 
4717
4717
  // src/cli/run.ts
4718
+ import process2 from "process";
4719
+
4718
4720
  class RunError extends Error {
4719
4721
  code;
4720
4722
  constructor(code, message) {
@@ -4793,8 +4795,9 @@ async function spawnWith(command, env, report = () => {}, options = {}) {
4793
4795
  };
4794
4796
  const onInt = forward("SIGINT");
4795
4797
  const onTerm = forward("SIGTERM");
4796
- process.on("SIGINT", onInt);
4797
- process.on("SIGTERM", onTerm);
4798
+ const signalProcess = process2;
4799
+ signalProcess.on("SIGINT", onInt);
4800
+ signalProcess.on("SIGTERM", onTerm);
4798
4801
  try {
4799
4802
  return await new Promise((resolve) => {
4800
4803
  child.on("error", (error) => {
@@ -4804,8 +4807,8 @@ async function spawnWith(command, env, report = () => {}, options = {}) {
4804
4807
  child.on("exit", (code, signal) => resolve(exitCodeFor({ code, signal })));
4805
4808
  });
4806
4809
  } finally {
4807
- process.off("SIGINT", onInt);
4808
- process.off("SIGTERM", onTerm);
4810
+ signalProcess.off("SIGINT", onInt);
4811
+ signalProcess.off("SIGTERM", onTerm);
4809
4812
  }
4810
4813
  }
4811
4814
 
@@ -4841,7 +4844,7 @@ var UPDATE_RETRY_BASE_MS = 5 * 60000;
4841
4844
  var UPDATE_RETRY_MAX_MS = 24 * 60 * 60000;
4842
4845
 
4843
4846
  // src/version.ts
4844
- var VERSION2 = "0.1.119";
4847
+ var VERSION2 = "0.1.121";
4845
4848
 
4846
4849
  // src/software.ts
4847
4850
  var PINNED_BUN_VERSION = "1.3.14";
@@ -7295,7 +7298,7 @@ var gcm = /* @__PURE__ */ wrapCipher({ blockSize: 16, nonceLength: 12, tagLength
7295
7298
  };
7296
7299
  });
7297
7300
 
7298
- // ../runtime/dist/custody-share.js
7301
+ // ../../node_modules/.bun/@forgezero+runtime@0.1.17+cd212ec15d36da0a/node_modules/@forgezero/runtime/dist/custody-share.js
7299
7302
  init_hkdf();
7300
7303
  init_sha2();
7301
7304
  init_hybrid();
@@ -9911,7 +9914,7 @@ zone
9911
9914
  zoo`.split(`
9912
9915
  `));
9913
9916
 
9914
- // ../runtime/dist/custody-share.js
9917
+ // ../../node_modules/.bun/@forgezero+runtime@0.1.17+cd212ec15d36da0a/node_modules/@forgezero/runtime/dist/custody-share.js
9915
9918
  init_hkdf();
9916
9919
  init_sha2();
9917
9920
  var KEY_BYTES = 32;
@@ -11926,7 +11929,7 @@ function inspectCompiledDeployment(rootValue, outputFile = DEPLOY_PLAN_FILE) {
11926
11929
  return { path, plan, digest: deploymentPlanDigest(plan) };
11927
11930
  }
11928
11931
 
11929
- // ../vault/dist/config.js
11932
+ // ../../node_modules/.bun/@forgezero+vault@0.1.22+3f759277d50bc01a/node_modules/@forgezero/vault/dist/config.js
11930
11933
  class ConfigError extends Error {
11931
11934
  code;
11932
11935
  constructor(code, message) {
@@ -21031,7 +21034,7 @@ function usage() {
21031
21034
  24-word BIP-39 phrase by owner-only file or stdin; it is never accepted in
21032
21035
  argv. Each custodian runs it in their own authenticated session; no process
21033
21036
  collects several custodians' phrases. Fresh privileged actions use the
21034
- browser passkey/TOTP flow; SSH is transport and Git interoperability only.
21037
+ browser account-passkey flow; SSH is transport and Git interoperability only.
21035
21038
  `);
21036
21039
  }
21037
21040
  if (import.meta.main) {
@@ -366,7 +366,7 @@ function systemdAgentEgressDirectives(loopbackTcpPorts = []) {
366
366
  }
367
367
 
368
368
  // src/version.ts
369
- var VERSION = "0.1.119";
369
+ var VERSION = "0.1.121";
370
370
 
371
371
  // src/otel-collector.ts
372
372
  var FORGEZERO_OTEL_COLLECTOR_UNIT = "forgezero-otel-collector.service";
@@ -219,7 +219,11 @@ var softwareBillingClass = (requirement) => {
219
219
  throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
220
220
  return entry.billingClass;
221
221
  };
222
- var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
222
+ var managedSoftwareEvidence = (requirements) => [...new Map(requirements.map((requirement) => {
223
+ const billingClass = softwareBillingClass(requirement);
224
+ return [`${requirement.id}@${requirement.version}`, { ...requirement, billingClass }];
225
+ })).values()].sort((left, right) => left.id.localeCompare(right.id) || left.version.localeCompare(right.version));
226
+ var countPaidManagedSoftware = (requirements) => managedSoftwareEvidence(requirements).filter((requirement) => requirement.billingClass === "paid-managed").length;
223
227
  var UBUNTU_2604_X64 = [
224
228
  { requirement: { id: "bun", version: "1.3.14" } },
225
229
  { requirement: { id: "docker", version: "ubuntu-26.04" } },
@@ -219,7 +219,11 @@ var softwareBillingClass = (requirement) => {
219
219
  throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
220
220
  return entry.billingClass;
221
221
  };
222
- var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
222
+ var managedSoftwareEvidence = (requirements) => [...new Map(requirements.map((requirement) => {
223
+ const billingClass = softwareBillingClass(requirement);
224
+ return [`${requirement.id}@${requirement.version}`, { ...requirement, billingClass }];
225
+ })).values()].sort((left, right) => left.id.localeCompare(right.id) || left.version.localeCompare(right.version));
226
+ var countPaidManagedSoftware = (requirements) => managedSoftwareEvidence(requirements).filter((requirement) => requirement.billingClass === "paid-managed").length;
223
227
  var UBUNTU_2604_X64 = [
224
228
  { requirement: { id: "bun", version: "1.3.14" } },
225
229
  { requirement: { id: "docker", version: "ubuntu-26.04" } },
@@ -1460,7 +1460,7 @@ var UPDATE_RETRY_BASE_MS = 5 * 60000;
1460
1460
  var UPDATE_RETRY_MAX_MS = 24 * 60 * 60000;
1461
1461
 
1462
1462
  // src/version.ts
1463
- var VERSION = "0.1.119";
1463
+ var VERSION = "0.1.121";
1464
1464
 
1465
1465
  // src/software.ts
1466
1466
  var PINNED_BUN_VERSION = "1.3.14";
@@ -79,7 +79,11 @@ var softwareBillingClass = (requirement) => {
79
79
  throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
80
80
  return entry.billingClass;
81
81
  };
82
- var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
82
+ var managedSoftwareEvidence = (requirements) => [...new Map(requirements.map((requirement) => {
83
+ const billingClass = softwareBillingClass(requirement);
84
+ return [`${requirement.id}@${requirement.version}`, { ...requirement, billingClass }];
85
+ })).values()].sort((left, right) => left.id.localeCompare(right.id) || left.version.localeCompare(right.version));
86
+ var countPaidManagedSoftware = (requirements) => managedSoftwareEvidence(requirements).filter((requirement) => requirement.billingClass === "paid-managed").length;
83
87
  var UBUNTU_2604_X64 = [
84
88
  { requirement: { id: "bun", version: "1.3.14" } },
85
89
  { requirement: { id: "docker", version: "ubuntu-26.04" } },
@@ -922,7 +922,11 @@ var softwareBillingClass = (requirement) => {
922
922
  throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
923
923
  return entry.billingClass;
924
924
  };
925
- var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
925
+ var managedSoftwareEvidence = (requirements) => [...new Map(requirements.map((requirement) => {
926
+ const billingClass = softwareBillingClass(requirement);
927
+ return [`${requirement.id}@${requirement.version}`, { ...requirement, billingClass }];
928
+ })).values()].sort((left, right) => left.id.localeCompare(right.id) || left.version.localeCompare(right.version));
929
+ var countPaidManagedSoftware = (requirements) => managedSoftwareEvidence(requirements).filter((requirement) => requirement.billingClass === "paid-managed").length;
926
930
  var UBUNTU_2604_X64 = [
927
931
  { requirement: { id: "bun", version: "1.3.14" } },
928
932
  { requirement: { id: "docker", version: "ubuntu-26.04" } },
@@ -3016,7 +3020,7 @@ function requestSoftware(requirements, socketPath = DEFAULT_SOFTWARE_HELPER_SOCK
3016
3020
  }
3017
3021
 
3018
3022
  // src/version.ts
3019
- var VERSION3 = "0.1.119";
3023
+ var VERSION3 = "0.1.121";
3020
3024
 
3021
3025
  // src/egress-policy.ts
3022
3026
  import { realpathSync as realpathSync3 } from "node:fs";
@@ -79,7 +79,11 @@ var softwareBillingClass = (requirement) => {
79
79
  throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
80
80
  return entry.billingClass;
81
81
  };
82
- var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
82
+ var managedSoftwareEvidence = (requirements) => [...new Map(requirements.map((requirement) => {
83
+ const billingClass = softwareBillingClass(requirement);
84
+ return [`${requirement.id}@${requirement.version}`, { ...requirement, billingClass }];
85
+ })).values()].sort((left, right) => left.id.localeCompare(right.id) || left.version.localeCompare(right.version));
86
+ var countPaidManagedSoftware = (requirements) => managedSoftwareEvidence(requirements).filter((requirement) => requirement.billingClass === "paid-managed").length;
83
87
  var UBUNTU_2604_X64 = [
84
88
  { requirement: { id: "bun", version: "1.3.14" } },
85
89
  { requirement: { id: "docker", version: "ubuntu-26.04" } },
package/dist/provision.js CHANGED
@@ -922,7 +922,11 @@ var softwareBillingClass = (requirement) => {
922
922
  throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
923
923
  return entry.billingClass;
924
924
  };
925
- var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
925
+ var managedSoftwareEvidence = (requirements) => [...new Map(requirements.map((requirement) => {
926
+ const billingClass = softwareBillingClass(requirement);
927
+ return [`${requirement.id}@${requirement.version}`, { ...requirement, billingClass }];
928
+ })).values()].sort((left, right) => left.id.localeCompare(right.id) || left.version.localeCompare(right.version));
929
+ var countPaidManagedSoftware = (requirements) => managedSoftwareEvidence(requirements).filter((requirement) => requirement.billingClass === "paid-managed").length;
926
930
  var UBUNTU_2604_X64 = [
927
931
  { requirement: { id: "bun", version: "1.3.14" } },
928
932
  { requirement: { id: "docker", version: "ubuntu-26.04" } },
@@ -3016,7 +3020,7 @@ function requestSoftware(requirements, socketPath = DEFAULT_SOFTWARE_HELPER_SOCK
3016
3020
  }
3017
3021
 
3018
3022
  // src/version.ts
3019
- var VERSION3 = "0.1.119";
3023
+ var VERSION3 = "0.1.121";
3020
3024
 
3021
3025
  // src/egress-policy.ts
3022
3026
  import { realpathSync as realpathSync3 } from "node:fs";
@@ -79,7 +79,11 @@ var softwareBillingClass = (requirement) => {
79
79
  throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
80
80
  return entry.billingClass;
81
81
  };
82
- var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
82
+ var managedSoftwareEvidence = (requirements) => [...new Map(requirements.map((requirement) => {
83
+ const billingClass = softwareBillingClass(requirement);
84
+ return [`${requirement.id}@${requirement.version}`, { ...requirement, billingClass }];
85
+ })).values()].sort((left, right) => left.id.localeCompare(right.id) || left.version.localeCompare(right.version));
86
+ var countPaidManagedSoftware = (requirements) => managedSoftwareEvidence(requirements).filter((requirement) => requirement.billingClass === "paid-managed").length;
83
87
  var UBUNTU_2604_X64 = [
84
88
  { requirement: { id: "bun", version: "1.3.14" } },
85
89
  { requirement: { id: "docker", version: "ubuntu-26.04" } },
@@ -15,6 +15,8 @@ export interface SoftwareCatalogEntry extends SoftwareRequirement {
15
15
  /** What promotes this coordinate beyond an unreviewed candidate. */
16
16
  evidence: 'reviewed-strategy-and-tests';
17
17
  }
18
+ /** Browser-safe evidence for one distinct managed software coordinate. */
19
+ export type ManagedSoftwareEvidence = Pick<SoftwareCatalogEntry, 'id' | 'version' | 'billingClass'>;
18
20
  export interface OsCatalogEntry {
19
21
  id: 'ubuntu';
20
22
  version: '24.04' | '26.04';
@@ -57,6 +59,8 @@ export declare const KATA_CONTAINERS_VERSION = "4.0.0";
57
59
  export declare const OS_CATALOG: readonly OsCatalogEntry[];
58
60
  export declare const SOFTWARE_CATALOG: readonly SoftwareCatalogEntry[];
59
61
  export declare const softwareBillingClass: (requirement: SoftwareRequirement) => SoftwareCatalogEntry["billingClass"];
62
+ /** Canonical inventory reported after a successful deployment. */
63
+ export declare const managedSoftwareEvidence: (requirements: readonly SoftwareRequirement[]) => ManagedSoftwareEvidence[];
60
64
  /** Counts distinct paid software instances managed on one compute. */
61
65
  export declare const countPaidManagedSoftware: (requirements: readonly SoftwareRequirement[]) => number;
62
66
  export declare const softwareSpawnFailure: (cause: unknown, argv: readonly string[]) => SoftwareCommandResult | undefined;
package/dist/software.js CHANGED
@@ -79,7 +79,11 @@ var softwareBillingClass = (requirement) => {
79
79
  throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
80
80
  return entry.billingClass;
81
81
  };
82
- var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
82
+ var managedSoftwareEvidence = (requirements) => [...new Map(requirements.map((requirement) => {
83
+ const billingClass = softwareBillingClass(requirement);
84
+ return [`${requirement.id}@${requirement.version}`, { ...requirement, billingClass }];
85
+ })).values()].sort((left, right) => left.id.localeCompare(right.id) || left.version.localeCompare(right.version));
86
+ var countPaidManagedSoftware = (requirements) => managedSoftwareEvidence(requirements).filter((requirement) => requirement.billingClass === "paid-managed").length;
83
87
  var UBUNTU_2604_X64 = [
84
88
  { requirement: { id: "bun", version: "1.3.14" } },
85
89
  { requirement: { id: "docker", version: "ubuntu-26.04" } },
@@ -556,6 +560,7 @@ export {
556
560
  softwareBillingClass,
557
561
  runSoftwareCommand,
558
562
  observeSoftwareHost,
563
+ managedSoftwareEvidence,
559
564
  executeSoftwareOperation,
560
565
  ensureSoftwareRequirements,
561
566
  countPaidManagedSoftware,
package/dist/ubuntu.js CHANGED
@@ -79,7 +79,11 @@ var softwareBillingClass = (requirement) => {
79
79
  throw new Error(`unsupported software billing coordinate: ${requirement.id}@${requirement.version}`);
80
80
  return entry.billingClass;
81
81
  };
82
- var countPaidManagedSoftware = (requirements) => new Set(requirements.filter((requirement) => softwareBillingClass(requirement) === "paid-managed").map((requirement) => `${requirement.id}@${requirement.version}`)).size;
82
+ var managedSoftwareEvidence = (requirements) => [...new Map(requirements.map((requirement) => {
83
+ const billingClass = softwareBillingClass(requirement);
84
+ return [`${requirement.id}@${requirement.version}`, { ...requirement, billingClass }];
85
+ })).values()].sort((left, right) => left.id.localeCompare(right.id) || left.version.localeCompare(right.version));
86
+ var countPaidManagedSoftware = (requirements) => managedSoftwareEvidence(requirements).filter((requirement) => requirement.billingClass === "paid-managed").length;
83
87
  var UBUNTU_2604_X64 = [
84
88
  { requirement: { id: "bun", version: "1.3.14" } },
85
89
  { requirement: { id: "docker", version: "ubuntu-26.04" } },
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.119";
2
+ export declare const VERSION = "0.1.121";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forgezero/agent",
3
- "version": "0.1.119",
3
+ "version": "0.1.121",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "check": "tsc --noEmit",
@@ -11,13 +11,13 @@
11
11
  "typescript": "^5.6.0",
12
12
  "@types/bun": "latest",
13
13
  "@types/node": "^22.0.0",
14
- "@forgezero/access": "0.1.12",
14
+ "@forgezero/access": "0.1.13",
15
15
  "@noble/curves": "^2.2.0",
16
16
  "@noble/post-quantum": "^0.6.1"
17
17
  },
18
18
  "dependencies": {
19
- "@forgezero/runtime": "0.1.17",
20
- "@forgezero/vault": "0.1.22",
19
+ "@forgezero/runtime": "0.1.18",
20
+ "@forgezero/vault": "0.1.24",
21
21
  "@noble/curves": "2.2.0",
22
22
  "@noble/hashes": "2.2.0",
23
23
  "@noble/post-quantum": "0.6.1",