@forgezero/agent 0.1.94 → 0.1.95

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.94";
920
+ var VERSION3 = "0.1.95";
921
921
 
922
922
  // src/agent-heartbeat.ts
923
923
  function readAgentHostMetrics() {
@@ -192,6 +192,13 @@ export declare function validateBootstrapConfig(value: BootstrapConfig): Bootstr
192
192
  export declare function planBootstrap(input: BootstrapConfig, initialized?: boolean): BootstrapPlan;
193
193
  export declare function bootstrapIdentityDigest(config: BootstrapConfig): string;
194
194
  export declare const legacyBootstrapIdentityDigest: (config: BootstrapConfig) => string;
195
+ /**
196
+ * Exact, reviewed identity migrations for an already-installed platform host.
197
+ * This is deliberately not a generic "stored coordinates match" escape hatch:
198
+ * only the development collector transition from the retired external OTLP
199
+ * placeholder to the supervised loopback sink is accepted.
200
+ */
201
+ export declare function approvedPlatformRepairIdentityDigests(config: PlatformBootstrapConfig): readonly string[];
195
202
  /** Exact prior-release identities accepted only while generation one is still unenrolled. */
196
203
  export declare function interruptedPlatformReleaseIdentityDigests(config: PlatformBootstrapConfig, releaseEvidence: {
197
204
  revision: string;
package/dist/bootstrap.js CHANGED
@@ -1420,7 +1420,7 @@ var UPDATE_RETRY_BASE_MS = 5 * 60000;
1420
1420
  var UPDATE_RETRY_MAX_MS = 24 * 60 * 60000;
1421
1421
 
1422
1422
  // src/version.ts
1423
- var VERSION = "0.1.94";
1423
+ var VERSION = "0.1.95";
1424
1424
 
1425
1425
  // src/software.ts
1426
1426
  var PINNED_BUN_VERSION = "1.3.14";
@@ -4290,6 +4290,14 @@ function bootstrapIdentityDigest(config) {
4290
4290
  return createHash2("sha256").update(JSON.stringify(bootstrapIdentity(config))).digest("hex");
4291
4291
  }
4292
4292
  var legacyBootstrapIdentityDigest = (config) => createHash2("sha256").update(JSON.stringify(bootstrapIdentity(config, true))).digest("hex");
4293
+ function approvedPlatformRepairIdentityDigests(config) {
4294
+ if (config.environment !== "development" || config.telemetryEndpoint !== LOCAL_DEBUG_OTEL_EXPORT || config.runtime.environment.agentOtlpEndpoint !== "http://127.0.0.1:4318")
4295
+ return [];
4296
+ const previous = structuredClone(config);
4297
+ previous.telemetryEndpoint = "https://otel.forgezero.net";
4298
+ previous.runtime.environment.agentOtlpEndpoint = "https://otel.forgezero.net";
4299
+ return [bootstrapIdentityDigest(previous), legacyBootstrapIdentityDigest(previous)];
4300
+ }
4293
4301
  function interruptedPlatformReleaseIdentityDigests(config, releaseEvidence, bootstrapManifest) {
4294
4302
  if (!config.runtime.environment.initialInventory)
4295
4303
  return [];
@@ -4610,10 +4618,11 @@ async function applyBootstrap(input, host = localBootstrapHost(), secrets, depen
4610
4618
  if (installed) {
4611
4619
  const exactIdentity = installed.kind === config.kind && installed.identityDigest === bootstrapIdentityDigest(config);
4612
4620
  const boundedReleaseResume = config.kind === "platform" && !host.exists("/var/lib/forgezero/enrolment.json") && host.exists(BOOTSTRAP_RELEASE_EVIDENCE) && storedPlatformCoordinatesMatch(installed, config);
4613
- if (!exactIdentity && !boundedReleaseResume) {
4621
+ const approvedIdentityMigration = config.kind === "platform" && storedPlatformCoordinatesMatch(installed, config) && approvedPlatformRepairIdentityDigests(config).includes(installed.identityDigest);
4622
+ if (!exactIdentity && !boundedReleaseResume && !approvedIdentityMigration) {
4614
4623
  throw new Error("bootstrap repair coordinates do not match the installed host identity");
4615
4624
  }
4616
- allowInterruptedReleaseRebind = !exactIdentity && boundedReleaseResume;
4625
+ allowInterruptedReleaseRebind = !exactIdentity && (boundedReleaseResume || approvedIdentityMigration);
4617
4626
  }
4618
4627
  const platformPrivate = config.kind === "platform" ? (() => {
4619
4628
  if (!secrets)
@@ -5219,6 +5228,7 @@ export {
5219
5228
  interruptedPlatformReleaseIdentityDigests,
5220
5229
  bootstrapStatus,
5221
5230
  bootstrapIdentityDigest,
5231
+ approvedPlatformRepairIdentityDigests,
5222
5232
  applyBootstrap,
5223
5233
  PLATFORM_BOOTSTRAP_PROFILES,
5224
5234
  BOOTSTRAP_STATE_PATH
package/dist/fz-agent.js CHANGED
@@ -9496,7 +9496,7 @@ async function writeAndCloseProcessInput(input, value) {
9496
9496
  }
9497
9497
 
9498
9498
  // src/version.ts
9499
- var VERSION2 = "0.1.94";
9499
+ var VERSION2 = "0.1.95";
9500
9500
 
9501
9501
  // src/ssh-bootstrap.ts
9502
9502
  class SshBootstrapError extends Error {
package/dist/fz.js CHANGED
@@ -4841,7 +4841,7 @@ var UPDATE_RETRY_BASE_MS = 5 * 60000;
4841
4841
  var UPDATE_RETRY_MAX_MS = 24 * 60 * 60000;
4842
4842
 
4843
4843
  // src/version.ts
4844
- var VERSION2 = "0.1.94";
4844
+ var VERSION2 = "0.1.95";
4845
4845
 
4846
4846
  // src/software.ts
4847
4847
  var PINNED_BUN_VERSION = "1.3.14";
@@ -14675,6 +14675,14 @@ function bootstrapIdentityDigest(config) {
14675
14675
  return createHash4("sha256").update(JSON.stringify(bootstrapIdentity(config))).digest("hex");
14676
14676
  }
14677
14677
  var legacyBootstrapIdentityDigest = (config) => createHash4("sha256").update(JSON.stringify(bootstrapIdentity(config, true))).digest("hex");
14678
+ function approvedPlatformRepairIdentityDigests(config) {
14679
+ if (config.environment !== "development" || config.telemetryEndpoint !== LOCAL_DEBUG_OTEL_EXPORT || config.runtime.environment.agentOtlpEndpoint !== "http://127.0.0.1:4318")
14680
+ return [];
14681
+ const previous = structuredClone(config);
14682
+ previous.telemetryEndpoint = "https://otel.forgezero.net";
14683
+ previous.runtime.environment.agentOtlpEndpoint = "https://otel.forgezero.net";
14684
+ return [bootstrapIdentityDigest(previous), legacyBootstrapIdentityDigest(previous)];
14685
+ }
14678
14686
  function interruptedPlatformReleaseIdentityDigests(config, releaseEvidence, bootstrapManifest) {
14679
14687
  if (!config.runtime.environment.initialInventory)
14680
14688
  return [];
@@ -14995,10 +15003,11 @@ async function applyBootstrap(input, host = localBootstrapHost(), secrets, depen
14995
15003
  if (installed) {
14996
15004
  const exactIdentity = installed.kind === config.kind && installed.identityDigest === bootstrapIdentityDigest(config);
14997
15005
  const boundedReleaseResume = config.kind === "platform" && !host.exists("/var/lib/forgezero/enrolment.json") && host.exists(BOOTSTRAP_RELEASE_EVIDENCE) && storedPlatformCoordinatesMatch(installed, config);
14998
- if (!exactIdentity && !boundedReleaseResume) {
15006
+ const approvedIdentityMigration = config.kind === "platform" && storedPlatformCoordinatesMatch(installed, config) && approvedPlatformRepairIdentityDigests(config).includes(installed.identityDigest);
15007
+ if (!exactIdentity && !boundedReleaseResume && !approvedIdentityMigration) {
14999
15008
  throw new Error("bootstrap repair coordinates do not match the installed host identity");
15000
15009
  }
15001
- allowInterruptedReleaseRebind = !exactIdentity && boundedReleaseResume;
15010
+ allowInterruptedReleaseRebind = !exactIdentity && (boundedReleaseResume || approvedIdentityMigration);
15002
15011
  }
15003
15012
  const platformPrivate = config.kind === "platform" ? (() => {
15004
15013
  if (!secrets)
@@ -366,7 +366,7 @@ function systemdAgentEgressDirectives(loopbackTcpPorts = []) {
366
366
  }
367
367
 
368
368
  // src/version.ts
369
- var VERSION = "0.1.94";
369
+ var VERSION = "0.1.95";
370
370
 
371
371
  // src/otel-collector.ts
372
372
  var FORGEZERO_OTEL_COLLECTOR_UNIT = "forgezero-otel-collector.service";
@@ -1420,7 +1420,7 @@ var UPDATE_RETRY_BASE_MS = 5 * 60000;
1420
1420
  var UPDATE_RETRY_MAX_MS = 24 * 60 * 60000;
1421
1421
 
1422
1422
  // src/version.ts
1423
- var VERSION = "0.1.94";
1423
+ var VERSION = "0.1.95";
1424
1424
 
1425
1425
  // src/software.ts
1426
1426
  var PINNED_BUN_VERSION = "1.3.14";
@@ -4290,6 +4290,14 @@ function bootstrapIdentityDigest(config) {
4290
4290
  return createHash2("sha256").update(JSON.stringify(bootstrapIdentity(config))).digest("hex");
4291
4291
  }
4292
4292
  var legacyBootstrapIdentityDigest = (config) => createHash2("sha256").update(JSON.stringify(bootstrapIdentity(config, true))).digest("hex");
4293
+ function approvedPlatformRepairIdentityDigests(config) {
4294
+ if (config.environment !== "development" || config.telemetryEndpoint !== LOCAL_DEBUG_OTEL_EXPORT || config.runtime.environment.agentOtlpEndpoint !== "http://127.0.0.1:4318")
4295
+ return [];
4296
+ const previous = structuredClone(config);
4297
+ previous.telemetryEndpoint = "https://otel.forgezero.net";
4298
+ previous.runtime.environment.agentOtlpEndpoint = "https://otel.forgezero.net";
4299
+ return [bootstrapIdentityDigest(previous), legacyBootstrapIdentityDigest(previous)];
4300
+ }
4293
4301
  function interruptedPlatformReleaseIdentityDigests(config, releaseEvidence, bootstrapManifest) {
4294
4302
  if (!config.runtime.environment.initialInventory)
4295
4303
  return [];
@@ -4610,10 +4618,11 @@ async function applyBootstrap(input, host = localBootstrapHost(), secrets, depen
4610
4618
  if (installed) {
4611
4619
  const exactIdentity = installed.kind === config.kind && installed.identityDigest === bootstrapIdentityDigest(config);
4612
4620
  const boundedReleaseResume = config.kind === "platform" && !host.exists("/var/lib/forgezero/enrolment.json") && host.exists(BOOTSTRAP_RELEASE_EVIDENCE) && storedPlatformCoordinatesMatch(installed, config);
4613
- if (!exactIdentity && !boundedReleaseResume) {
4621
+ const approvedIdentityMigration = config.kind === "platform" && storedPlatformCoordinatesMatch(installed, config) && approvedPlatformRepairIdentityDigests(config).includes(installed.identityDigest);
4622
+ if (!exactIdentity && !boundedReleaseResume && !approvedIdentityMigration) {
4614
4623
  throw new Error("bootstrap repair coordinates do not match the installed host identity");
4615
4624
  }
4616
- allowInterruptedReleaseRebind = !exactIdentity && boundedReleaseResume;
4625
+ allowInterruptedReleaseRebind = !exactIdentity && (boundedReleaseResume || approvedIdentityMigration);
4617
4626
  }
4618
4627
  const platformPrivate = config.kind === "platform" ? (() => {
4619
4628
  if (!secrets)
@@ -2908,7 +2908,7 @@ function requestSoftware(requirements, socketPath = DEFAULT_SOFTWARE_HELPER_SOCK
2908
2908
  }
2909
2909
 
2910
2910
  // src/version.ts
2911
- var VERSION3 = "0.1.94";
2911
+ var VERSION3 = "0.1.95";
2912
2912
 
2913
2913
  // src/egress-policy.ts
2914
2914
  import { realpathSync as realpathSync3 } from "node:fs";
package/dist/provision.js CHANGED
@@ -2908,7 +2908,7 @@ function requestSoftware(requirements, socketPath = DEFAULT_SOFTWARE_HELPER_SOCK
2908
2908
  }
2909
2909
 
2910
2910
  // src/version.ts
2911
- var VERSION3 = "0.1.94";
2911
+ var VERSION3 = "0.1.95";
2912
2912
 
2913
2913
  // src/egress-policy.ts
2914
2914
  import { realpathSync as realpathSync3 } from "node:fs";
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  /** One package version shared by both public binaries. Pinned to package.json by tests. */
2
- export declare const VERSION = "0.1.94";
2
+ export declare const VERSION = "0.1.95";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forgezero/agent",
3
- "version": "0.1.94",
3
+ "version": "0.1.95",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "check": "tsc --noEmit",