@forgezero/agent 0.1.146 → 0.1.148
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-heartbeat.js +38 -22
- package/dist/agent-update-helper.js +37 -21
- package/dist/bootstrap.js +1 -1
- package/dist/fz-agent.js +40 -22
- package/dist/fz.js +1 -1
- package/dist/metal-bootstrap.js +1 -1
- package/dist/operator-bootstrap.js +1 -1
- package/dist/platform-fleet-verification.js +38 -22
- package/dist/provision.js +38 -22
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
package/dist/agent-heartbeat.js
CHANGED
|
@@ -264,32 +264,49 @@ function switchAgentSocketRoute(route, backend) {
|
|
|
264
264
|
}
|
|
265
265
|
function probeAgentCandidate(expected, socketPath = DEFAULT_AGENT_CANDIDATE_READY_SOCKET, timeoutMs = 5000) {
|
|
266
266
|
return new Promise((resolve2) => {
|
|
267
|
-
const socket = connect(socketPath);
|
|
268
|
-
let buffer = "";
|
|
269
267
|
let settled = false;
|
|
268
|
+
let socket;
|
|
269
|
+
const deadline = Date.now() + timeoutMs;
|
|
270
270
|
const finish = (value) => {
|
|
271
271
|
if (settled)
|
|
272
272
|
return;
|
|
273
273
|
settled = true;
|
|
274
|
-
|
|
275
|
-
socket.destroy();
|
|
274
|
+
socket?.destroy();
|
|
276
275
|
resolve2(value);
|
|
277
276
|
};
|
|
278
|
-
const
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
return;
|
|
285
|
-
try {
|
|
286
|
-
const value = JSON.parse(buffer.slice(0, newline));
|
|
287
|
-
finish(value.version === expected.version && value.nodeKey === expected.nodeKey && value.bound === expected.bound && expected.vault.includes(value.vault));
|
|
288
|
-
} catch {
|
|
289
|
-
finish(false);
|
|
277
|
+
const attempt = () => {
|
|
278
|
+
if (settled || Date.now() >= deadline)
|
|
279
|
+
return finish(false);
|
|
280
|
+
if (!existsSync2(socketPath)) {
|
|
281
|
+
const remaining = deadline - Date.now();
|
|
282
|
+
return setTimeout(attempt, Math.min(100, remaining));
|
|
290
283
|
}
|
|
291
|
-
|
|
292
|
-
|
|
284
|
+
let buffer = "";
|
|
285
|
+
const candidate = connect(socketPath);
|
|
286
|
+
socket = candidate;
|
|
287
|
+
candidate.on("data", (chunk) => {
|
|
288
|
+
buffer += chunk.toString("utf8");
|
|
289
|
+
const newline = buffer.indexOf(`
|
|
290
|
+
`);
|
|
291
|
+
if (newline < 0)
|
|
292
|
+
return;
|
|
293
|
+
try {
|
|
294
|
+
const value = JSON.parse(buffer.slice(0, newline));
|
|
295
|
+
finish(value.version === expected.version && value.nodeKey === expected.nodeKey && value.bound === expected.bound && expected.vault.includes(value.vault));
|
|
296
|
+
} catch {
|
|
297
|
+
finish(false);
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
candidate.once("error", () => {
|
|
301
|
+
candidate.destroy();
|
|
302
|
+
const remaining = deadline - Date.now();
|
|
303
|
+
if (remaining <= 0)
|
|
304
|
+
finish(false);
|
|
305
|
+
else
|
|
306
|
+
setTimeout(attempt, Math.min(100, remaining));
|
|
307
|
+
});
|
|
308
|
+
};
|
|
309
|
+
attempt();
|
|
293
310
|
});
|
|
294
311
|
}
|
|
295
312
|
|
|
@@ -300,7 +317,6 @@ var AGENT_UPDATE_JOURNAL = "/var/lib/forgezero/agent-update.json";
|
|
|
300
317
|
var AGENT_UPDATE_RECEIPT = "/var/lib/forgezero/agent-update-receipt.json";
|
|
301
318
|
var MAX_REQUEST_BYTES = 8 * 1024;
|
|
302
319
|
var COMPUTE_HELPER_UNITS = [
|
|
303
|
-
"forgezero-agent-egress.service",
|
|
304
320
|
"forgezero-deploy-runner.service",
|
|
305
321
|
"forgezero-lifecycle-helper.service",
|
|
306
322
|
"forgezero-software-helper.service"
|
|
@@ -606,9 +622,9 @@ async function activateAgentRelease(staged, options = {}) {
|
|
|
606
622
|
restoreAgentRelease(staged);
|
|
607
623
|
restored = true;
|
|
608
624
|
await restartAgent(target, run);
|
|
609
|
-
|
|
610
|
-
if (rollbackHealthy && target === "compute")
|
|
625
|
+
if (target === "compute")
|
|
611
626
|
switchAgentSocketRoute(paths.route, paths.active);
|
|
627
|
+
rollbackHealthy = await probe();
|
|
612
628
|
} catch {
|
|
613
629
|
rollbackHealthy = false;
|
|
614
630
|
}
|
|
@@ -917,7 +933,7 @@ async function postSignedNode(options, path, body) {
|
|
|
917
933
|
}
|
|
918
934
|
|
|
919
935
|
// src/version.ts
|
|
920
|
-
var VERSION3 = "0.1.
|
|
936
|
+
var VERSION3 = "0.1.148";
|
|
921
937
|
|
|
922
938
|
// src/agent-heartbeat.ts
|
|
923
939
|
function readAgentHostMetrics() {
|
|
@@ -264,32 +264,49 @@ function switchAgentSocketRoute(route, backend) {
|
|
|
264
264
|
}
|
|
265
265
|
function probeAgentCandidate(expected, socketPath = DEFAULT_AGENT_CANDIDATE_READY_SOCKET, timeoutMs = 5000) {
|
|
266
266
|
return new Promise((resolve2) => {
|
|
267
|
-
const socket = connect(socketPath);
|
|
268
|
-
let buffer = "";
|
|
269
267
|
let settled = false;
|
|
268
|
+
let socket;
|
|
269
|
+
const deadline = Date.now() + timeoutMs;
|
|
270
270
|
const finish = (value) => {
|
|
271
271
|
if (settled)
|
|
272
272
|
return;
|
|
273
273
|
settled = true;
|
|
274
|
-
|
|
275
|
-
socket.destroy();
|
|
274
|
+
socket?.destroy();
|
|
276
275
|
resolve2(value);
|
|
277
276
|
};
|
|
278
|
-
const
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
return;
|
|
285
|
-
try {
|
|
286
|
-
const value = JSON.parse(buffer.slice(0, newline));
|
|
287
|
-
finish(value.version === expected.version && value.nodeKey === expected.nodeKey && value.bound === expected.bound && expected.vault.includes(value.vault));
|
|
288
|
-
} catch {
|
|
289
|
-
finish(false);
|
|
277
|
+
const attempt = () => {
|
|
278
|
+
if (settled || Date.now() >= deadline)
|
|
279
|
+
return finish(false);
|
|
280
|
+
if (!existsSync2(socketPath)) {
|
|
281
|
+
const remaining = deadline - Date.now();
|
|
282
|
+
return setTimeout(attempt, Math.min(100, remaining));
|
|
290
283
|
}
|
|
291
|
-
|
|
292
|
-
|
|
284
|
+
let buffer = "";
|
|
285
|
+
const candidate = connect(socketPath);
|
|
286
|
+
socket = candidate;
|
|
287
|
+
candidate.on("data", (chunk) => {
|
|
288
|
+
buffer += chunk.toString("utf8");
|
|
289
|
+
const newline = buffer.indexOf(`
|
|
290
|
+
`);
|
|
291
|
+
if (newline < 0)
|
|
292
|
+
return;
|
|
293
|
+
try {
|
|
294
|
+
const value = JSON.parse(buffer.slice(0, newline));
|
|
295
|
+
finish(value.version === expected.version && value.nodeKey === expected.nodeKey && value.bound === expected.bound && expected.vault.includes(value.vault));
|
|
296
|
+
} catch {
|
|
297
|
+
finish(false);
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
candidate.once("error", () => {
|
|
301
|
+
candidate.destroy();
|
|
302
|
+
const remaining = deadline - Date.now();
|
|
303
|
+
if (remaining <= 0)
|
|
304
|
+
finish(false);
|
|
305
|
+
else
|
|
306
|
+
setTimeout(attempt, Math.min(100, remaining));
|
|
307
|
+
});
|
|
308
|
+
};
|
|
309
|
+
attempt();
|
|
293
310
|
});
|
|
294
311
|
}
|
|
295
312
|
|
|
@@ -300,7 +317,6 @@ var AGENT_UPDATE_JOURNAL = "/var/lib/forgezero/agent-update.json";
|
|
|
300
317
|
var AGENT_UPDATE_RECEIPT = "/var/lib/forgezero/agent-update-receipt.json";
|
|
301
318
|
var MAX_REQUEST_BYTES = 8 * 1024;
|
|
302
319
|
var COMPUTE_HELPER_UNITS = [
|
|
303
|
-
"forgezero-agent-egress.service",
|
|
304
320
|
"forgezero-deploy-runner.service",
|
|
305
321
|
"forgezero-lifecycle-helper.service",
|
|
306
322
|
"forgezero-software-helper.service"
|
|
@@ -606,9 +622,9 @@ async function activateAgentRelease(staged, options = {}) {
|
|
|
606
622
|
restoreAgentRelease(staged);
|
|
607
623
|
restored = true;
|
|
608
624
|
await restartAgent(target, run);
|
|
609
|
-
|
|
610
|
-
if (rollbackHealthy && target === "compute")
|
|
625
|
+
if (target === "compute")
|
|
611
626
|
switchAgentSocketRoute(paths.route, paths.active);
|
|
627
|
+
rollbackHealthy = await probe();
|
|
612
628
|
} catch {
|
|
613
629
|
rollbackHealthy = false;
|
|
614
630
|
}
|
package/dist/bootstrap.js
CHANGED
package/dist/fz-agent.js
CHANGED
|
@@ -11632,7 +11632,7 @@ async function writeAndCloseProcessInput(input, value) {
|
|
|
11632
11632
|
}
|
|
11633
11633
|
|
|
11634
11634
|
// src/version.ts
|
|
11635
|
-
var VERSION2 = "0.1.
|
|
11635
|
+
var VERSION2 = "0.1.148";
|
|
11636
11636
|
|
|
11637
11637
|
// src/ssh-bootstrap.ts
|
|
11638
11638
|
function deriveMetalAdmissionProvisioning(lscpu) {
|
|
@@ -14423,32 +14423,49 @@ function startAgentCandidateReady(ready, socketPath = DEFAULT_AGENT_CANDIDATE_RE
|
|
|
14423
14423
|
}
|
|
14424
14424
|
function probeAgentCandidate(expected, socketPath = DEFAULT_AGENT_CANDIDATE_READY_SOCKET, timeoutMs = 5000) {
|
|
14425
14425
|
return new Promise((resolve3) => {
|
|
14426
|
-
const socket = connect5(socketPath);
|
|
14427
|
-
let buffer = "";
|
|
14428
14426
|
let settled = false;
|
|
14427
|
+
let socket;
|
|
14428
|
+
const deadline = Date.now() + timeoutMs;
|
|
14429
14429
|
const finish = (value) => {
|
|
14430
14430
|
if (settled)
|
|
14431
14431
|
return;
|
|
14432
14432
|
settled = true;
|
|
14433
|
-
|
|
14434
|
-
socket.destroy();
|
|
14433
|
+
socket?.destroy();
|
|
14435
14434
|
resolve3(value);
|
|
14436
14435
|
};
|
|
14437
|
-
const
|
|
14438
|
-
|
|
14439
|
-
|
|
14440
|
-
|
|
14441
|
-
|
|
14442
|
-
|
|
14443
|
-
return;
|
|
14444
|
-
try {
|
|
14445
|
-
const value = JSON.parse(buffer.slice(0, newline));
|
|
14446
|
-
finish(value.version === expected.version && value.nodeKey === expected.nodeKey && value.bound === expected.bound && expected.vault.includes(value.vault));
|
|
14447
|
-
} catch {
|
|
14448
|
-
finish(false);
|
|
14436
|
+
const attempt = () => {
|
|
14437
|
+
if (settled || Date.now() >= deadline)
|
|
14438
|
+
return finish(false);
|
|
14439
|
+
if (!existsSync13(socketPath)) {
|
|
14440
|
+
const remaining = deadline - Date.now();
|
|
14441
|
+
return setTimeout(attempt, Math.min(100, remaining));
|
|
14449
14442
|
}
|
|
14450
|
-
|
|
14451
|
-
|
|
14443
|
+
let buffer = "";
|
|
14444
|
+
const candidate = connect5(socketPath);
|
|
14445
|
+
socket = candidate;
|
|
14446
|
+
candidate.on("data", (chunk) => {
|
|
14447
|
+
buffer += chunk.toString("utf8");
|
|
14448
|
+
const newline = buffer.indexOf(`
|
|
14449
|
+
`);
|
|
14450
|
+
if (newline < 0)
|
|
14451
|
+
return;
|
|
14452
|
+
try {
|
|
14453
|
+
const value = JSON.parse(buffer.slice(0, newline));
|
|
14454
|
+
finish(value.version === expected.version && value.nodeKey === expected.nodeKey && value.bound === expected.bound && expected.vault.includes(value.vault));
|
|
14455
|
+
} catch {
|
|
14456
|
+
finish(false);
|
|
14457
|
+
}
|
|
14458
|
+
});
|
|
14459
|
+
candidate.once("error", () => {
|
|
14460
|
+
candidate.destroy();
|
|
14461
|
+
const remaining = deadline - Date.now();
|
|
14462
|
+
if (remaining <= 0)
|
|
14463
|
+
finish(false);
|
|
14464
|
+
else
|
|
14465
|
+
setTimeout(attempt, Math.min(100, remaining));
|
|
14466
|
+
});
|
|
14467
|
+
};
|
|
14468
|
+
attempt();
|
|
14452
14469
|
});
|
|
14453
14470
|
}
|
|
14454
14471
|
|
|
@@ -14459,7 +14476,6 @@ var AGENT_UPDATE_JOURNAL = "/var/lib/forgezero/agent-update.json";
|
|
|
14459
14476
|
var AGENT_UPDATE_RECEIPT = "/var/lib/forgezero/agent-update-receipt.json";
|
|
14460
14477
|
var MAX_REQUEST_BYTES5 = 8 * 1024;
|
|
14461
14478
|
var COMPUTE_HELPER_UNITS = [
|
|
14462
|
-
"forgezero-agent-egress.service",
|
|
14463
14479
|
"forgezero-deploy-runner.service",
|
|
14464
14480
|
"forgezero-lifecycle-helper.service",
|
|
14465
14481
|
"forgezero-software-helper.service"
|
|
@@ -14765,9 +14781,9 @@ async function activateAgentRelease(staged, options = {}) {
|
|
|
14765
14781
|
restoreAgentRelease(staged);
|
|
14766
14782
|
restored = true;
|
|
14767
14783
|
await restartAgent(target2, run2);
|
|
14768
|
-
|
|
14769
|
-
if (rollbackHealthy && target2 === "compute")
|
|
14784
|
+
if (target2 === "compute")
|
|
14770
14785
|
switchAgentSocketRoute(paths.route, paths.active);
|
|
14786
|
+
rollbackHealthy = await probe();
|
|
14771
14787
|
} catch {
|
|
14772
14788
|
rollbackHealthy = false;
|
|
14773
14789
|
}
|
|
@@ -20898,6 +20914,8 @@ if (import.meta.main) {
|
|
|
20898
20914
|
};
|
|
20899
20915
|
if (initialAttestationVerified)
|
|
20900
20916
|
await activateVaultReplica();
|
|
20917
|
+
if (binding?.realm === "platform" && initialAttestationVerified)
|
|
20918
|
+
initialVaultState = "ready";
|
|
20901
20919
|
if (handoverCandidate) {
|
|
20902
20920
|
const ready = startAgentCandidateReady({
|
|
20903
20921
|
version: VERSION2,
|
package/dist/fz.js
CHANGED
|
@@ -8058,7 +8058,7 @@ var UPDATE_RETRY_BASE_MS = 5 * 60000;
|
|
|
8058
8058
|
var UPDATE_RETRY_MAX_MS = 24 * 60 * 60000;
|
|
8059
8059
|
|
|
8060
8060
|
// src/version.ts
|
|
8061
|
-
var VERSION2 = "0.1.
|
|
8061
|
+
var VERSION2 = "0.1.148";
|
|
8062
8062
|
|
|
8063
8063
|
// src/software.ts
|
|
8064
8064
|
var PINNED_BUN_VERSION = "1.3.14";
|
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.148";
|
|
370
370
|
|
|
371
371
|
// src/otel-collector.ts
|
|
372
372
|
var FORGEZERO_OTEL_COLLECTOR_UNIT = "forgezero-otel-collector.service";
|
|
@@ -264,32 +264,49 @@ function switchAgentSocketRoute(route, backend) {
|
|
|
264
264
|
}
|
|
265
265
|
function probeAgentCandidate(expected, socketPath = DEFAULT_AGENT_CANDIDATE_READY_SOCKET, timeoutMs = 5000) {
|
|
266
266
|
return new Promise((resolve2) => {
|
|
267
|
-
const socket = connect(socketPath);
|
|
268
|
-
let buffer = "";
|
|
269
267
|
let settled = false;
|
|
268
|
+
let socket;
|
|
269
|
+
const deadline = Date.now() + timeoutMs;
|
|
270
270
|
const finish = (value) => {
|
|
271
271
|
if (settled)
|
|
272
272
|
return;
|
|
273
273
|
settled = true;
|
|
274
|
-
|
|
275
|
-
socket.destroy();
|
|
274
|
+
socket?.destroy();
|
|
276
275
|
resolve2(value);
|
|
277
276
|
};
|
|
278
|
-
const
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
return;
|
|
285
|
-
try {
|
|
286
|
-
const value = JSON.parse(buffer.slice(0, newline));
|
|
287
|
-
finish(value.version === expected.version && value.nodeKey === expected.nodeKey && value.bound === expected.bound && expected.vault.includes(value.vault));
|
|
288
|
-
} catch {
|
|
289
|
-
finish(false);
|
|
277
|
+
const attempt = () => {
|
|
278
|
+
if (settled || Date.now() >= deadline)
|
|
279
|
+
return finish(false);
|
|
280
|
+
if (!existsSync2(socketPath)) {
|
|
281
|
+
const remaining = deadline - Date.now();
|
|
282
|
+
return setTimeout(attempt, Math.min(100, remaining));
|
|
290
283
|
}
|
|
291
|
-
|
|
292
|
-
|
|
284
|
+
let buffer = "";
|
|
285
|
+
const candidate = connect(socketPath);
|
|
286
|
+
socket = candidate;
|
|
287
|
+
candidate.on("data", (chunk) => {
|
|
288
|
+
buffer += chunk.toString("utf8");
|
|
289
|
+
const newline = buffer.indexOf(`
|
|
290
|
+
`);
|
|
291
|
+
if (newline < 0)
|
|
292
|
+
return;
|
|
293
|
+
try {
|
|
294
|
+
const value = JSON.parse(buffer.slice(0, newline));
|
|
295
|
+
finish(value.version === expected.version && value.nodeKey === expected.nodeKey && value.bound === expected.bound && expected.vault.includes(value.vault));
|
|
296
|
+
} catch {
|
|
297
|
+
finish(false);
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
candidate.once("error", () => {
|
|
301
|
+
candidate.destroy();
|
|
302
|
+
const remaining = deadline - Date.now();
|
|
303
|
+
if (remaining <= 0)
|
|
304
|
+
finish(false);
|
|
305
|
+
else
|
|
306
|
+
setTimeout(attempt, Math.min(100, remaining));
|
|
307
|
+
});
|
|
308
|
+
};
|
|
309
|
+
attempt();
|
|
293
310
|
});
|
|
294
311
|
}
|
|
295
312
|
|
|
@@ -300,7 +317,6 @@ var AGENT_UPDATE_JOURNAL = "/var/lib/forgezero/agent-update.json";
|
|
|
300
317
|
var AGENT_UPDATE_RECEIPT = "/var/lib/forgezero/agent-update-receipt.json";
|
|
301
318
|
var MAX_REQUEST_BYTES = 8 * 1024;
|
|
302
319
|
var COMPUTE_HELPER_UNITS = [
|
|
303
|
-
"forgezero-agent-egress.service",
|
|
304
320
|
"forgezero-deploy-runner.service",
|
|
305
321
|
"forgezero-lifecycle-helper.service",
|
|
306
322
|
"forgezero-software-helper.service"
|
|
@@ -606,9 +622,9 @@ async function activateAgentRelease(staged, options = {}) {
|
|
|
606
622
|
restoreAgentRelease(staged);
|
|
607
623
|
restored = true;
|
|
608
624
|
await restartAgent(target, run);
|
|
609
|
-
|
|
610
|
-
if (rollbackHealthy && target === "compute")
|
|
625
|
+
if (target === "compute")
|
|
611
626
|
switchAgentSocketRoute(paths.route, paths.active);
|
|
627
|
+
rollbackHealthy = await probe();
|
|
612
628
|
} catch {
|
|
613
629
|
rollbackHealthy = false;
|
|
614
630
|
}
|
|
@@ -3050,7 +3066,7 @@ function requestSoftware(requirements, socketPath = DEFAULT_SOFTWARE_HELPER_SOCK
|
|
|
3050
3066
|
}
|
|
3051
3067
|
|
|
3052
3068
|
// src/version.ts
|
|
3053
|
-
var VERSION3 = "0.1.
|
|
3069
|
+
var VERSION3 = "0.1.148";
|
|
3054
3070
|
|
|
3055
3071
|
// src/egress-policy.ts
|
|
3056
3072
|
import { realpathSync as realpathSync3 } from "node:fs";
|
package/dist/provision.js
CHANGED
|
@@ -264,32 +264,49 @@ function switchAgentSocketRoute(route, backend) {
|
|
|
264
264
|
}
|
|
265
265
|
function probeAgentCandidate(expected, socketPath = DEFAULT_AGENT_CANDIDATE_READY_SOCKET, timeoutMs = 5000) {
|
|
266
266
|
return new Promise((resolve2) => {
|
|
267
|
-
const socket = connect(socketPath);
|
|
268
|
-
let buffer = "";
|
|
269
267
|
let settled = false;
|
|
268
|
+
let socket;
|
|
269
|
+
const deadline = Date.now() + timeoutMs;
|
|
270
270
|
const finish = (value) => {
|
|
271
271
|
if (settled)
|
|
272
272
|
return;
|
|
273
273
|
settled = true;
|
|
274
|
-
|
|
275
|
-
socket.destroy();
|
|
274
|
+
socket?.destroy();
|
|
276
275
|
resolve2(value);
|
|
277
276
|
};
|
|
278
|
-
const
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
return;
|
|
285
|
-
try {
|
|
286
|
-
const value = JSON.parse(buffer.slice(0, newline));
|
|
287
|
-
finish(value.version === expected.version && value.nodeKey === expected.nodeKey && value.bound === expected.bound && expected.vault.includes(value.vault));
|
|
288
|
-
} catch {
|
|
289
|
-
finish(false);
|
|
277
|
+
const attempt = () => {
|
|
278
|
+
if (settled || Date.now() >= deadline)
|
|
279
|
+
return finish(false);
|
|
280
|
+
if (!existsSync2(socketPath)) {
|
|
281
|
+
const remaining = deadline - Date.now();
|
|
282
|
+
return setTimeout(attempt, Math.min(100, remaining));
|
|
290
283
|
}
|
|
291
|
-
|
|
292
|
-
|
|
284
|
+
let buffer = "";
|
|
285
|
+
const candidate = connect(socketPath);
|
|
286
|
+
socket = candidate;
|
|
287
|
+
candidate.on("data", (chunk) => {
|
|
288
|
+
buffer += chunk.toString("utf8");
|
|
289
|
+
const newline = buffer.indexOf(`
|
|
290
|
+
`);
|
|
291
|
+
if (newline < 0)
|
|
292
|
+
return;
|
|
293
|
+
try {
|
|
294
|
+
const value = JSON.parse(buffer.slice(0, newline));
|
|
295
|
+
finish(value.version === expected.version && value.nodeKey === expected.nodeKey && value.bound === expected.bound && expected.vault.includes(value.vault));
|
|
296
|
+
} catch {
|
|
297
|
+
finish(false);
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
candidate.once("error", () => {
|
|
301
|
+
candidate.destroy();
|
|
302
|
+
const remaining = deadline - Date.now();
|
|
303
|
+
if (remaining <= 0)
|
|
304
|
+
finish(false);
|
|
305
|
+
else
|
|
306
|
+
setTimeout(attempt, Math.min(100, remaining));
|
|
307
|
+
});
|
|
308
|
+
};
|
|
309
|
+
attempt();
|
|
293
310
|
});
|
|
294
311
|
}
|
|
295
312
|
|
|
@@ -300,7 +317,6 @@ var AGENT_UPDATE_JOURNAL = "/var/lib/forgezero/agent-update.json";
|
|
|
300
317
|
var AGENT_UPDATE_RECEIPT = "/var/lib/forgezero/agent-update-receipt.json";
|
|
301
318
|
var MAX_REQUEST_BYTES = 8 * 1024;
|
|
302
319
|
var COMPUTE_HELPER_UNITS = [
|
|
303
|
-
"forgezero-agent-egress.service",
|
|
304
320
|
"forgezero-deploy-runner.service",
|
|
305
321
|
"forgezero-lifecycle-helper.service",
|
|
306
322
|
"forgezero-software-helper.service"
|
|
@@ -606,9 +622,9 @@ async function activateAgentRelease(staged, options = {}) {
|
|
|
606
622
|
restoreAgentRelease(staged);
|
|
607
623
|
restored = true;
|
|
608
624
|
await restartAgent(target, run);
|
|
609
|
-
|
|
610
|
-
if (rollbackHealthy && target === "compute")
|
|
625
|
+
if (target === "compute")
|
|
611
626
|
switchAgentSocketRoute(paths.route, paths.active);
|
|
627
|
+
rollbackHealthy = await probe();
|
|
612
628
|
} catch {
|
|
613
629
|
rollbackHealthy = false;
|
|
614
630
|
}
|
|
@@ -3050,7 +3066,7 @@ function requestSoftware(requirements, socketPath = DEFAULT_SOFTWARE_HELPER_SOCK
|
|
|
3050
3066
|
}
|
|
3051
3067
|
|
|
3052
3068
|
// src/version.ts
|
|
3053
|
-
var VERSION3 = "0.1.
|
|
3069
|
+
var VERSION3 = "0.1.148";
|
|
3054
3070
|
|
|
3055
3071
|
// src/egress-policy.ts
|
|
3056
3072
|
import { realpathSync as realpathSync3 } from "node:fs";
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** One package version shared by both public binaries. Pinned to package.json by tests. */
|
|
2
|
-
export declare const VERSION = "0.1.
|
|
2
|
+
export declare const VERSION = "0.1.148";
|