@askexenow/exe-os 0.9.398 → 0.9.399
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/.dist-verified.json +3 -3
- package/dist/bin/cli.js +3 -3
- package/dist/bin/registry-proxy.js +1 -1
- package/dist/bin/stack-update.js +2 -2
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/build-manifest.json +36 -36
- package/dist/{chunk-WHQADJV7.js → chunk-D2L47SAE.js} +44 -4
- package/dist/{chunk-XQH5BKEC.js → chunk-HMC5FHIJ.js} +1 -1
- package/dist/{chunk-UPGKO5UD.js → chunk-U2L6NZ2E.js} +1 -1
- package/dist/{chunk-CBLI4ANF.js → chunk-VFFQHEMC.js} +1 -1
- package/dist/hooks/manifest.json +1 -1
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/{stack-generate-manifest-NWBAQUC6.js → stack-generate-manifest-ZSRLWHYI.js} +2 -2
- package/dist/{stack-promote-NV2ZQEVL.js → stack-promote-IULD63IF.js} +2 -2
- package/dist/{stack-release-IPOLLLJH.js → stack-release-VA2YEHFL.js} +3 -3
- package/dist/{stack-update-5LT2U7IP.js → stack-update-KDUPWDNR.js} +3 -1
- package/package.json +1 -1
- package/release-notes.json +10 -34
- package/stack.release.json +3 -3
package/dist/.dist-verified.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
|
-
"verified_at": "2026-09-
|
|
4
|
-
"manifest_sha256": "
|
|
5
|
-
"package_version": "0.9.
|
|
3
|
+
"verified_at": "2026-09-24T13:34:02.618Z",
|
|
4
|
+
"manifest_sha256": "0641c145777ca52c128a84da481fd2ead5656d1bece22ab281df880a71b31a40",
|
|
5
|
+
"package_version": "0.9.399"
|
|
6
6
|
}
|
package/dist/bin/cli.js
CHANGED
|
@@ -798,14 +798,14 @@ ${JSON.stringify(stormAlert, null, 2)}`);
|
|
|
798
798
|
const { runStackUpdateCli } = await import("./stack-update.js");
|
|
799
799
|
await runStackUpdateCli(args.slice(1));
|
|
800
800
|
} else if (args[0] === "release") {
|
|
801
|
-
const { parseReleaseArgs, runStackRelease } = await import("../stack-release-
|
|
801
|
+
const { parseReleaseArgs, runStackRelease } = await import("../stack-release-VA2YEHFL.js");
|
|
802
802
|
const releaseFlags = parseReleaseArgs(args.slice(1));
|
|
803
803
|
await runStackRelease(releaseFlags);
|
|
804
804
|
} else if (args[0] === "stack-promote") {
|
|
805
|
-
const { runStackPromoteCli } = await import("../stack-promote-
|
|
805
|
+
const { runStackPromoteCli } = await import("../stack-promote-IULD63IF.js");
|
|
806
806
|
await runStackPromoteCli(args.slice(1));
|
|
807
807
|
} else if (args[0] === "stack-generate-manifest") {
|
|
808
|
-
const { runStackGenerateManifestCli } = await import("../stack-generate-manifest-
|
|
808
|
+
const { runStackGenerateManifestCli } = await import("../stack-generate-manifest-ZSRLWHYI.js");
|
|
809
809
|
process.exit(await runStackGenerateManifestCli(args.slice(1)));
|
|
810
810
|
} else if (args[0] === "repo-truth") {
|
|
811
811
|
const { runRepoTruthCli } = await import("./exe-repo-truth.js");
|
package/dist/bin/stack-update.js
CHANGED
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
verifyManifestImagesAvailable,
|
|
48
48
|
warnUnmanagedManifestServices,
|
|
49
49
|
withStackUpdateOperationLock
|
|
50
|
-
} from "../chunk-
|
|
50
|
+
} from "../chunk-D2L47SAE.js";
|
|
51
51
|
import "../chunk-EC5H53YD.js";
|
|
52
52
|
import {
|
|
53
53
|
runVerifyStack
|
|
@@ -63,7 +63,7 @@ import {
|
|
|
63
63
|
import {
|
|
64
64
|
logResult,
|
|
65
65
|
runHealthGate
|
|
66
|
-
} from "../chunk-
|
|
66
|
+
} from "../chunk-U2L6NZ2E.js";
|
|
67
67
|
import "../chunk-L25OAFOU.js";
|
|
68
68
|
import "../chunk-RT57D7C4.js";
|
|
69
69
|
import "../chunk-FTZET5YX.js";
|
package/dist/build-manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 2,
|
|
3
|
-
"generated_at": "2026-09-
|
|
3
|
+
"generated_at": "2026-09-24T13:34:02.549Z",
|
|
4
4
|
"files": [
|
|
5
5
|
{
|
|
6
6
|
"path": "active-agent-5DC75ZP3.js",
|
|
@@ -179,7 +179,7 @@
|
|
|
179
179
|
},
|
|
180
180
|
{
|
|
181
181
|
"path": "bin/cli.js",
|
|
182
|
-
"sha256": "
|
|
182
|
+
"sha256": "126dc845c65374fe949027c51dafc318d3aef3f46b9add8be441eb2bd28afa29",
|
|
183
183
|
"bytes": 69826
|
|
184
184
|
},
|
|
185
185
|
{
|
|
@@ -524,7 +524,7 @@
|
|
|
524
524
|
},
|
|
525
525
|
{
|
|
526
526
|
"path": "bin/registry-proxy.js",
|
|
527
|
-
"sha256": "
|
|
527
|
+
"sha256": "ef7f87a4159c34e04eb402448fe00acf341988c84d9a0acc91447d9a3b80f297",
|
|
528
528
|
"bytes": 1885
|
|
529
529
|
},
|
|
530
530
|
{
|
|
@@ -549,7 +549,7 @@
|
|
|
549
549
|
},
|
|
550
550
|
{
|
|
551
551
|
"path": "bin/stack-update.js",
|
|
552
|
-
"sha256": "
|
|
552
|
+
"sha256": "210be160ba3bce18fdbce55661bab94e24cfc8b8d7beca65318b4bbdbe104f4c",
|
|
553
553
|
"bytes": 131487
|
|
554
554
|
},
|
|
555
555
|
{
|
|
@@ -569,7 +569,7 @@
|
|
|
569
569
|
},
|
|
570
570
|
{
|
|
571
571
|
"path": "bin/vps-health-gate.js",
|
|
572
|
-
"sha256": "
|
|
572
|
+
"sha256": "76697c844cf1215d82a207802cfcd91e0bc83d24a2cd4e4ec9eba76724eef108",
|
|
573
573
|
"bytes": 333
|
|
574
574
|
},
|
|
575
575
|
{
|
|
@@ -1007,11 +1007,6 @@
|
|
|
1007
1007
|
"sha256": "0429e46b5f42871f6a94700f559468dd5775c0bb204d5c720f6bc15ca4cc924b",
|
|
1008
1008
|
"bytes": 176
|
|
1009
1009
|
},
|
|
1010
|
-
{
|
|
1011
|
-
"path": "chunk-CBLI4ANF.js",
|
|
1012
|
-
"sha256": "361fca0086b36b4945f23793f1138b8a09d18c18bd8d478d922fafd09b2a207e",
|
|
1013
|
-
"bytes": 3766
|
|
1014
|
-
},
|
|
1015
1010
|
{
|
|
1016
1011
|
"path": "chunk-CBPNZFSU.js",
|
|
1017
1012
|
"sha256": "cbd3cf6d4db00f17cd9c7dc4419ab837738d3e22dfa1554201f33ce6ccf9936d",
|
|
@@ -1072,6 +1067,11 @@
|
|
|
1072
1067
|
"sha256": "29a6acbbaa627ae4d7852dd16a33f341809f3d82940b40c67c35d39d99fdf2c4",
|
|
1073
1068
|
"bytes": 1090
|
|
1074
1069
|
},
|
|
1070
|
+
{
|
|
1071
|
+
"path": "chunk-D2L47SAE.js",
|
|
1072
|
+
"sha256": "0430ed5601d2d38ec8b25824516e53625dc4d21b0835c294bb1753ca3ebe534d",
|
|
1073
|
+
"bytes": 264545
|
|
1074
|
+
},
|
|
1075
1075
|
{
|
|
1076
1076
|
"path": "chunk-DKD6JKIQ.js",
|
|
1077
1077
|
"sha256": "e344368afae46f4f8059618d353fa907cbf3e1d72133d1d325b40e476192d057",
|
|
@@ -1242,6 +1242,11 @@
|
|
|
1242
1242
|
"sha256": "0e8678ecd10db44714ef9a25fcab116b0cb3f86b6de9e384ac5bf2effb0dc3c0",
|
|
1243
1243
|
"bytes": 2405
|
|
1244
1244
|
},
|
|
1245
|
+
{
|
|
1246
|
+
"path": "chunk-HMC5FHIJ.js",
|
|
1247
|
+
"sha256": "ac7f86432e2314d38e58dd96113855765114ef007ba97d7beb5643ed9e024b45",
|
|
1248
|
+
"bytes": 44776
|
|
1249
|
+
},
|
|
1245
1250
|
{
|
|
1246
1251
|
"path": "chunk-HME6ITKV.js",
|
|
1247
1252
|
"sha256": "d820c2d874d6841b5c9c1186ba98c24aa25d559b9be05a29ae2373e7f70e7960",
|
|
@@ -1837,6 +1842,11 @@
|
|
|
1837
1842
|
"sha256": "e8225781fb28b322cb141fa15ddd198ab2b7c507a662764722cf3b65f2201c8f",
|
|
1838
1843
|
"bytes": 34017
|
|
1839
1844
|
},
|
|
1845
|
+
{
|
|
1846
|
+
"path": "chunk-U2L6NZ2E.js",
|
|
1847
|
+
"sha256": "14a60b6adfac48dd28c173fada3e2297b093a422c3a40cd642e68ffc6530ee93",
|
|
1848
|
+
"bytes": 7587
|
|
1849
|
+
},
|
|
1840
1850
|
{
|
|
1841
1851
|
"path": "chunk-UAPWTGRP.js",
|
|
1842
1852
|
"sha256": "21f3d1f0da3b0d7030edcc3ed1341223fc24f0df14b683c9c23e7d374484726d",
|
|
@@ -1877,11 +1887,6 @@
|
|
|
1877
1887
|
"sha256": "d3cadd12eb766d34de74356f826811799682297bf5312bebe86aa91064ffa73e",
|
|
1878
1888
|
"bytes": 7304
|
|
1879
1889
|
},
|
|
1880
|
-
{
|
|
1881
|
-
"path": "chunk-UPGKO5UD.js",
|
|
1882
|
-
"sha256": "f61c6df45d6b59d3b9c2490fe0b632b56d8aec3448590796716785b193a787d9",
|
|
1883
|
-
"bytes": 7587
|
|
1884
|
-
},
|
|
1885
1890
|
{
|
|
1886
1891
|
"path": "chunk-UQDCXE5D.js",
|
|
1887
1892
|
"sha256": "74fe9e9ec90657d5c47300b1b42f249b0e5742eaaab48c8446d1b4d602b5c609",
|
|
@@ -1917,6 +1922,11 @@
|
|
|
1917
1922
|
"sha256": "788270b6657fdd208ecb5fa9cb6b5156e1ae86295058f976edb144ecedcb88fb",
|
|
1918
1923
|
"bytes": 7321
|
|
1919
1924
|
},
|
|
1925
|
+
{
|
|
1926
|
+
"path": "chunk-VFFQHEMC.js",
|
|
1927
|
+
"sha256": "99a17a341cc3d2ce64c9d1cbe321d5d73491aaeed2469cc4a6fdf29863eada73",
|
|
1928
|
+
"bytes": 3766
|
|
1929
|
+
},
|
|
1920
1930
|
{
|
|
1921
1931
|
"path": "chunk-VFVF3FHG.js",
|
|
1922
1932
|
"sha256": "52b2cd3712889eccc11d34dfa4bab3ac38a1e6985c1982d0975456c58c89cba6",
|
|
@@ -1982,11 +1992,6 @@
|
|
|
1982
1992
|
"sha256": "4a905397d309c73ed4ad5d1ec488309541be3eec2fc6021d275f433ca92cc7a9",
|
|
1983
1993
|
"bytes": 2265
|
|
1984
1994
|
},
|
|
1985
|
-
{
|
|
1986
|
-
"path": "chunk-WHQADJV7.js",
|
|
1987
|
-
"sha256": "446ba9ab30ceea004e1a3dad1b636c5aed85d4973f7dc380b38fb6708e159b4a",
|
|
1988
|
-
"bytes": 261909
|
|
1989
|
-
},
|
|
1990
1995
|
{
|
|
1991
1996
|
"path": "chunk-WT4RI36X.js",
|
|
1992
1997
|
"sha256": "7ce4fd5dee79504398f6549a7fadeceafaadaea2cd94ef9bcc310280306147c6",
|
|
@@ -2022,11 +2027,6 @@
|
|
|
2022
2027
|
"sha256": "6fc117949d9d045871820e93e789e377a928ac69b031ecb40fd000516567a795",
|
|
2023
2028
|
"bytes": 1571
|
|
2024
2029
|
},
|
|
2025
|
-
{
|
|
2026
|
-
"path": "chunk-XQH5BKEC.js",
|
|
2027
|
-
"sha256": "5bea4844691d58c9f52bec5f4ca86fdc53107ef09890b07042fccb598aa82fee",
|
|
2028
|
-
"bytes": 44776
|
|
2029
|
-
},
|
|
2030
2030
|
{
|
|
2031
2031
|
"path": "chunk-YQ7V5UGG.js",
|
|
2032
2032
|
"sha256": "5bfdc4401ae0a9ed15c7124861214dba3ba3be58cca81ffab4dc167c3043d2e5",
|
|
@@ -2579,7 +2579,7 @@
|
|
|
2579
2579
|
},
|
|
2580
2580
|
{
|
|
2581
2581
|
"path": "hooks/manifest.json",
|
|
2582
|
-
"sha256": "
|
|
2582
|
+
"sha256": "0ad3b5ab94638e0110791448a12e4b6079e248d99976ba200ee1d148340c873c",
|
|
2583
2583
|
"bytes": 1841
|
|
2584
2584
|
},
|
|
2585
2585
|
{
|
|
@@ -2884,7 +2884,7 @@
|
|
|
2884
2884
|
},
|
|
2885
2885
|
{
|
|
2886
2886
|
"path": "lib/registry-proxy.js",
|
|
2887
|
-
"sha256": "
|
|
2887
|
+
"sha256": "180512d6cb7cfa3b7c3e512ac755c038f7f245a291aa1f26b4e8186a69ed46fc",
|
|
2888
2888
|
"bytes": 749
|
|
2889
2889
|
},
|
|
2890
2890
|
{
|
|
@@ -3473,8 +3473,8 @@
|
|
|
3473
3473
|
"bytes": 111
|
|
3474
3474
|
},
|
|
3475
3475
|
{
|
|
3476
|
-
"path": "stack-generate-manifest-
|
|
3477
|
-
"sha256": "
|
|
3476
|
+
"path": "stack-generate-manifest-ZSRLWHYI.js",
|
|
3477
|
+
"sha256": "d0046b964d66f6f434db5160cb6ed39fefea401a3f2b09212f3974fcc7cd4ba8",
|
|
3478
3478
|
"bytes": 56960
|
|
3479
3479
|
},
|
|
3480
3480
|
{
|
|
@@ -3483,19 +3483,19 @@
|
|
|
3483
3483
|
"bytes": 4761
|
|
3484
3484
|
},
|
|
3485
3485
|
{
|
|
3486
|
-
"path": "stack-promote-
|
|
3487
|
-
"sha256": "
|
|
3486
|
+
"path": "stack-promote-IULD63IF.js",
|
|
3487
|
+
"sha256": "e0af957eac14bf04f434d67693e15381ddc83eb89e1a6a1fa38dac3b4558a731",
|
|
3488
3488
|
"bytes": 7425
|
|
3489
3489
|
},
|
|
3490
3490
|
{
|
|
3491
|
-
"path": "stack-release-
|
|
3492
|
-
"sha256": "
|
|
3491
|
+
"path": "stack-release-VA2YEHFL.js",
|
|
3492
|
+
"sha256": "b5a2c2b004bbe71ee5b56ba6a00229a6e19e15d1809fc109ab604107ab63137a",
|
|
3493
3493
|
"bytes": 117404
|
|
3494
3494
|
},
|
|
3495
3495
|
{
|
|
3496
|
-
"path": "stack-update-
|
|
3497
|
-
"sha256": "
|
|
3498
|
-
"bytes":
|
|
3496
|
+
"path": "stack-update-KDUPWDNR.js",
|
|
3497
|
+
"sha256": "5e419b8e379e7bd15e8d8b4e1ef4dce328c8a8d3e45e9276519584dc120cba9a",
|
|
3498
|
+
"bytes": 7921
|
|
3499
3499
|
},
|
|
3500
3500
|
{
|
|
3501
3501
|
"path": "stalled-dispatch-escalation-MHLYH2PT.js",
|
|
@@ -276,6 +276,40 @@ function assessRetainedHealthAfter(before, after) {
|
|
|
276
276
|
}
|
|
277
277
|
return [...new Set(failures)];
|
|
278
278
|
}
|
|
279
|
+
async function settleRetainedCrmEdgeHealth(before, initial, capture, pause = (milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)), now = () => performance.now()) {
|
|
280
|
+
const edge = "exe-sso-edge";
|
|
281
|
+
const prior = before.containers.get(edge);
|
|
282
|
+
let current = initial;
|
|
283
|
+
const maySettle = (snapshot) => {
|
|
284
|
+
const observed = snapshot.get(edge);
|
|
285
|
+
const regressions = assessRetainedHealthAfter(before, snapshot);
|
|
286
|
+
return !before.critical.has(edge) && !!prior?.id && prior.health === "healthy" && retainedContainerIsHealthy(prior) && observed?.id === prior.id && observed.state === "running" && observed.health === "unhealthy" && (prior.restartCount === null || observed.restartCount === prior.restartCount) && regressions.length === 1 && regressions[0] === edge;
|
|
287
|
+
};
|
|
288
|
+
if (!maySettle(current)) return current;
|
|
289
|
+
if (!prior) return current;
|
|
290
|
+
const deadline = now() + 12e4;
|
|
291
|
+
while (now() < deadline) {
|
|
292
|
+
await pause(Math.min(5e3, deadline - now()));
|
|
293
|
+
const remainingMs = deadline - now();
|
|
294
|
+
if (remainingMs <= 0) return current;
|
|
295
|
+
current = capture(remainingMs);
|
|
296
|
+
const observed = current.get(edge);
|
|
297
|
+
if (observed && observed.id !== prior.id)
|
|
298
|
+
throw new Error("--retain-compose SSO edge identity changed during CRM health recovery");
|
|
299
|
+
if (observed && prior.restartCount !== null && observed.restartCount !== prior.restartCount) throw new Error("--retain-compose SSO edge restarted during CRM health recovery");
|
|
300
|
+
if (observed && observed.health !== "healthy" && observed.health !== "unhealthy")
|
|
301
|
+
throw new Error("--retain-compose SSO edge health unobservable during CRM recovery");
|
|
302
|
+
if (now() >= deadline)
|
|
303
|
+
throw new Error("--retain-compose SSO edge health recovery timed out");
|
|
304
|
+
const regressions = assessRetainedHealthAfter(before, current);
|
|
305
|
+
if (regressions.length === 0) {
|
|
306
|
+
const recovered = current.get(edge);
|
|
307
|
+
if (recovered && recovered.id === prior.id && recovered.state === "running" && recovered.health === "healthy" && (prior.restartCount === null || recovered.restartCount === prior.restartCount)) return current;
|
|
308
|
+
}
|
|
309
|
+
if (!maySettle(current)) return current;
|
|
310
|
+
}
|
|
311
|
+
return current;
|
|
312
|
+
}
|
|
279
313
|
|
|
280
314
|
// src/lib/stack-lock-derive.ts
|
|
281
315
|
import { spawnSync } from "child_process";
|
|
@@ -4608,9 +4642,11 @@ Push the missing image(s) to the registry, or re-run with --break-glass <reason>
|
|
|
4608
4642
|
}
|
|
4609
4643
|
}
|
|
4610
4644
|
if (retainedHealthBaseline) {
|
|
4611
|
-
const
|
|
4612
|
-
(options.composePsCapture ?? defaultComposePsCapture)(composeArgs)
|
|
4645
|
+
const capture = (timeoutMs) => parseRetainedContainerHealth(
|
|
4646
|
+
(options.composePsCapture ?? defaultComposePsCapture)(composeArgs, timeoutMs)
|
|
4613
4647
|
);
|
|
4648
|
+
const initial = capture();
|
|
4649
|
+
const after = Object.keys(plan.release.services).length === 1 && Object.hasOwn(plan.release.services, "crm") ? await settleRetainedCrmEdgeHealth(retainedHealthBaseline, initial, capture) : initial;
|
|
4614
4650
|
const regressions = assessRetainedHealthAfter(retainedHealthBaseline, after);
|
|
4615
4651
|
if (regressions.length > 0) {
|
|
4616
4652
|
throw new Error(`--retain-compose health regression after update: ${regressions.join(", ")}`);
|
|
@@ -5014,13 +5050,16 @@ async function verifyReleaseHealth(release, retries, delayMs, env, skipServices)
|
|
|
5014
5050
|
await waitForHttpOk(service.healthUrl, retries, delayMs, serviceName, hostHeader);
|
|
5015
5051
|
}
|
|
5016
5052
|
}
|
|
5017
|
-
|
|
5053
|
+
function boundedComposePsTimeoutMs(timeoutMs) {
|
|
5054
|
+
return Math.max(1, Math.floor(Math.min(2e4, timeoutMs ?? 2e4)));
|
|
5055
|
+
}
|
|
5056
|
+
var defaultComposePsCapture = (composeArgs, timeoutMs) => {
|
|
5018
5057
|
let result;
|
|
5019
5058
|
try {
|
|
5020
5059
|
result = spawnSync2("docker", [...composeArgs, "ps", "--all", "--format", "json"], {
|
|
5021
5060
|
encoding: "utf8",
|
|
5022
5061
|
stdio: ["pipe", "pipe", "pipe"],
|
|
5023
|
-
timeout:
|
|
5062
|
+
timeout: boundedComposePsTimeoutMs(timeoutMs)
|
|
5024
5063
|
});
|
|
5025
5064
|
} catch {
|
|
5026
5065
|
return null;
|
|
@@ -5795,6 +5834,7 @@ export {
|
|
|
5795
5834
|
expandEnvRefs,
|
|
5796
5835
|
resolveHealthHost,
|
|
5797
5836
|
verifyReleaseHealth,
|
|
5837
|
+
boundedComposePsTimeoutMs,
|
|
5798
5838
|
listHostComposeServices,
|
|
5799
5839
|
composePsYieldsRecords,
|
|
5800
5840
|
assertRetainedComposeRunningService,
|
|
@@ -140,7 +140,7 @@ async function assertManifestSignature(manifest, publicKeyPem) {
|
|
|
140
140
|
"manifest carries no `signature`. Fleets that enforce EXE_STACK_PUBLIC_KEY reject unsigned manifests, so publishing one would ship a release no host can install. Re-sign with the custodied key: node scripts/sign-stack-manifest.mjs deploy/stack-manifests/v0.9.json"
|
|
141
141
|
);
|
|
142
142
|
}
|
|
143
|
-
const { verifyStackManifestSignature } = await import("./stack-update-
|
|
143
|
+
const { verifyStackManifestSignature } = await import("./stack-update-KDUPWDNR.js");
|
|
144
144
|
try {
|
|
145
145
|
verifyStackManifestSignature(manifest, publicKeyPem);
|
|
146
146
|
} catch (err) {
|
|
@@ -212,7 +212,7 @@ async function main(args) {
|
|
|
212
212
|
console.log("[health-gate] Starting rollback...");
|
|
213
213
|
restorePreDeployBackup();
|
|
214
214
|
try {
|
|
215
|
-
const { rollbackStackUpdate, defaultStackPaths } = await import("./stack-update-
|
|
215
|
+
const { rollbackStackUpdate, defaultStackPaths } = await import("./stack-update-KDUPWDNR.js");
|
|
216
216
|
const paths = defaultStackPaths();
|
|
217
217
|
await rollbackStackUpdate({
|
|
218
218
|
manifestRef: paths.manifestRef,
|
package/dist/hooks/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
|
-
"generatedAt": "2026-09-
|
|
3
|
+
"generatedAt": "2026-09-24T13:34:02.355Z",
|
|
4
4
|
"hashes": {
|
|
5
5
|
"bug-report-worker.js": "b9c58e3473028283cd80aa42f2aa845e39914a111b66c1fc268dc5f55d2a48de",
|
|
6
6
|
"codex-stop-task-finalizer.js": "b7635164b675dd291f945373e7d59b112efdfd5bdeecd59f3126b2a797b9ed0c",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
writeSignedStackManifest
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-VFFQHEMC.js";
|
|
5
|
+
import "./chunk-D2L47SAE.js";
|
|
6
6
|
import "./chunk-EC5H53YD.js";
|
|
7
7
|
import "./chunk-YYRI2AGK.js";
|
|
8
8
|
import "./chunk-L25OAFOU.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
writeSignedStackManifest
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-VFFQHEMC.js";
|
|
5
|
+
import "./chunk-D2L47SAE.js";
|
|
6
6
|
import "./chunk-EC5H53YD.js";
|
|
7
7
|
import "./chunk-YYRI2AGK.js";
|
|
8
8
|
import "./chunk-L25OAFOU.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
writeSignedStackManifest
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-VFFQHEMC.js";
|
|
5
|
+
import "./chunk-D2L47SAE.js";
|
|
6
6
|
import "./chunk-EC5H53YD.js";
|
|
7
7
|
import {
|
|
8
8
|
assertPreflightGate,
|
|
@@ -2028,7 +2028,7 @@ async function warmProxyCache(imageRef) {
|
|
|
2028
2028
|
async function resolveImageGitShaLabel(ref, dryRun) {
|
|
2029
2029
|
if (!ref || dryRun) return void 0;
|
|
2030
2030
|
try {
|
|
2031
|
-
const { readProvenanceLabels } = await import("./stack-generate-manifest-
|
|
2031
|
+
const { readProvenanceLabels } = await import("./stack-generate-manifest-ZSRLWHYI.js");
|
|
2032
2032
|
const labels = await readProvenanceLabels(ref);
|
|
2033
2033
|
return labels["org.exe.git_sha"] ?? labels["org.opencontainers.image.revision"];
|
|
2034
2034
|
} catch (err) {
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
assertSignedManifestDeliveryGate,
|
|
26
26
|
backupStackConfig,
|
|
27
27
|
bootstrapStackHost,
|
|
28
|
+
boundedComposePsTimeoutMs,
|
|
28
29
|
buildDefaultServiceSelection,
|
|
29
30
|
buildMigrationComposeArgs,
|
|
30
31
|
buildReleaseMigrationArgs,
|
|
@@ -132,7 +133,7 @@ import {
|
|
|
132
133
|
waitForHttpOk,
|
|
133
134
|
warnUnmanagedManifestServices,
|
|
134
135
|
withStackUpdateOperationLock
|
|
135
|
-
} from "./chunk-
|
|
136
|
+
} from "./chunk-D2L47SAE.js";
|
|
136
137
|
import "./chunk-EC5H53YD.js";
|
|
137
138
|
import "./chunk-YYRI2AGK.js";
|
|
138
139
|
import "./chunk-L25OAFOU.js";
|
|
@@ -172,6 +173,7 @@ export {
|
|
|
172
173
|
assertSignedManifestDeliveryGate,
|
|
173
174
|
backupStackConfig,
|
|
174
175
|
bootstrapStackHost,
|
|
176
|
+
boundedComposePsTimeoutMs,
|
|
175
177
|
buildDefaultServiceSelection,
|
|
176
178
|
buildMigrationComposeArgs,
|
|
177
179
|
buildReleaseMigrationArgs,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askexenow/exe-os",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.399",
|
|
4
4
|
"description": "AI employee operating system \u2014 persistent memory, task management, and multi-agent coordination for Claude Code.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|
package/release-notes.json
CHANGED
|
@@ -1,44 +1,20 @@
|
|
|
1
1
|
{
|
|
2
|
-
"current": "0.9.
|
|
2
|
+
"current": "0.9.399",
|
|
3
3
|
"notes": {
|
|
4
|
-
"0.9.
|
|
5
|
-
"version": "0.9.
|
|
4
|
+
"0.9.399": {
|
|
5
|
+
"version": "0.9.399",
|
|
6
6
|
"date": "2026-09-24",
|
|
7
|
-
"features": [
|
|
8
|
-
"detect drift in hand-duplicated cross-repo workflows (bug 0efe96d7) (#1377)",
|
|
9
|
-
"cut the stack release automatically on drift (founder decision) (#1253)"
|
|
10
|
-
],
|
|
7
|
+
"features": [],
|
|
11
8
|
"fixes": [
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"mock-shape guard now detects a mock missing an export (bug 7342f6e1) (#1218)",
|
|
17
|
-
"an unreadable event ledger is not an empty history (bug d11c5049) (#1327)",
|
|
18
|
-
"seat confers the org's full plan on every axis, employees included (#1528)",
|
|
19
|
-
"an unreadable history is not an empty history (bug d11c5049, D15) (#1316)",
|
|
20
|
-
"an unreadable checkpoint is not an absent one (bug d11c5049, F1) (#1312)",
|
|
21
|
-
"fail closed and say why when the guard cannot run (bug d11c5049) (#1288)",
|
|
22
|
-
"assert parity with real commitPatchId/commitEffectHash in the 256-byte sweep (bug 6b66bd54) (#1532)",
|
|
23
|
-
"a jobs.json that could not be read is not an empty registry (bug d11c5049) (#1296)",
|
|
24
|
-
"a state file that could not be read is not an empty one (bug d11c5049) (#1293)",
|
|
25
|
-
"stop taking three different answers from one 30-day token (bugs f855bcbe, 0aef30da, 14a57810, cbe83433) (#1276)",
|
|
26
|
-
"batch the 256-byte patch-id sweep into ~7 subprocesses (bug 6b66bd54) (#1531)",
|
|
27
|
-
"a failed read is not an ABSORBED verdict (bug d11c5049, D25) (#1310)",
|
|
28
|
-
"only a read that SUCCEEDED may authorize a delete (bug d11c5049) (#1289)",
|
|
29
|
-
"contain service switcher on mobile",
|
|
30
|
-
"close double-side fail-open holes in the mock-effect walker (63e8dfeb, e929d83f) (#1498)",
|
|
31
|
-
"merge detectors ask GitHub, not git ancestry (bug b83f8742) (#1495)"
|
|
9
|
+
"settle CRM-backed SSO edge health after retained update (#1544)",
|
|
10
|
+
"give each release-workspace repo its own git identity (#1541)",
|
|
11
|
+
"prune buildx docker-container builder cache, not just the default (bug 0172398e) (#1540)",
|
|
12
|
+
"--write-baseline refuses on an incomplete export-coverage scan (#1539)"
|
|
32
13
|
],
|
|
33
14
|
"security": [],
|
|
34
15
|
"other": [
|
|
35
|
-
"release:
|
|
36
|
-
"
|
|
37
|
-
"release(stack): sign proxy verification recovery 0.9.57 (#1535)",
|
|
38
|
-
"add fixed-source npm-only 0.9.397 publisher (#1534)",
|
|
39
|
-
"Scope retained stack verification to delivered containers (#1533)",
|
|
40
|
-
"sync mobile switcher to team page",
|
|
41
|
-
"release: sign stack 0.9.56 proxy recovery canary"
|
|
16
|
+
"release: bump updater npm metadata to 0.9.399 (#1545)",
|
|
17
|
+
"ci-disk-reclaim install is two files, not one (#1543)"
|
|
42
18
|
],
|
|
43
19
|
"migration_notes": []
|
|
44
20
|
},
|
package/stack.release.json
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
"repo": "AskExe/exe-os",
|
|
5
5
|
"service": "exe-os",
|
|
6
6
|
"packageName": "@askexenow/exe-os",
|
|
7
|
-
"version": "0.9.
|
|
8
|
-
"image": "ghcr.io/askexe/exe-os:v0.9.
|
|
7
|
+
"version": "0.9.399",
|
|
8
|
+
"image": "ghcr.io/askexe/exe-os:v0.9.399",
|
|
9
9
|
"imageEnv": "EXE_OS_IMAGE_TAG",
|
|
10
10
|
"imageDigestTodo": "The top-level image names the forthcoming exe-os build and receives its digest after publication. Independently released components, including dashboard, retain verified digest pins; stack publication validates every service pin.",
|
|
11
11
|
"components": {
|
|
@@ -110,5 +110,5 @@
|
|
|
110
110
|
},
|
|
111
111
|
"deploymentScope": "customer",
|
|
112
112
|
"highGhostStack": "0.9.9",
|
|
113
|
-
"sourceVersion": "0.9.
|
|
113
|
+
"sourceVersion": "0.9.399"
|
|
114
114
|
}
|