omnius 1.0.617 → 1.0.618
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/index.js +48 -10
- package/dist/update-worker.js +27 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -679198,6 +679198,8 @@ __export(daemon_exports, {
|
|
|
679198
679198
|
getDaemonStatus: () => getDaemonStatus,
|
|
679199
679199
|
getLocalCliVersion: () => getLocalCliVersion,
|
|
679200
679200
|
isDaemonRunning: () => isDaemonRunning,
|
|
679201
|
+
managedDaemonServiceOwnsPort: () => managedDaemonServiceOwnsPort,
|
|
679202
|
+
pidIsInManagedDaemonUnit: () => pidIsInManagedDaemonUnit,
|
|
679201
679203
|
quiesceDaemonForUpdate: () => quiesceDaemonForUpdate,
|
|
679202
679204
|
reclaimOwnedDaemonListener: () => reclaimOwnedDaemonListener,
|
|
679203
679205
|
recoverDaemonVersionBoundedly: () => recoverDaemonVersionBoundedly,
|
|
@@ -679442,6 +679444,27 @@ async function managedDaemonServiceMatchesPort(port) {
|
|
|
679442
679444
|
if (environment === null) return false;
|
|
679443
679445
|
return daemonServiceMatchesPort(port, environment);
|
|
679444
679446
|
}
|
|
679447
|
+
function pidIsInManagedDaemonUnit(pid, readCgroup = defaultReadProcCgroup) {
|
|
679448
|
+
const cgroup = readCgroup(pid);
|
|
679449
|
+
return cgroup === null ? false : cgroup.includes("omnius-daemon.service");
|
|
679450
|
+
}
|
|
679451
|
+
function defaultReadProcCgroup(pid) {
|
|
679452
|
+
try {
|
|
679453
|
+
return readFileSync95(`/proc/${pid}/cgroup`, "utf8");
|
|
679454
|
+
} catch {
|
|
679455
|
+
return null;
|
|
679456
|
+
}
|
|
679457
|
+
}
|
|
679458
|
+
async function managedDaemonServiceOwnsPort(port, dependencies = {
|
|
679459
|
+
holderPids: (value2) => portHolderPids(value2),
|
|
679460
|
+
pidInUnit: (pid) => pidIsInManagedDaemonUnit(pid)
|
|
679461
|
+
}) {
|
|
679462
|
+
const holders = await dependencies.holderPids(port);
|
|
679463
|
+
if (holders === null) return false;
|
|
679464
|
+
const uniqueHolders = [...new Set(holders.filter((pid) => pid > 0 && pid !== process.pid))];
|
|
679465
|
+
if (uniqueHolders.length === 0) return true;
|
|
679466
|
+
return uniqueHolders.every((pid) => dependencies.pidInUnit(pid));
|
|
679467
|
+
}
|
|
679445
679468
|
async function managedDaemonServicePort() {
|
|
679446
679469
|
if (!await hasManagedDaemonService()) return null;
|
|
679447
679470
|
const environment = await readUserSystemctl([
|
|
@@ -679718,6 +679741,11 @@ async function restartDaemon(port, expectedVersion) {
|
|
|
679718
679741
|
const p2 = port ?? getDaemonPort();
|
|
679719
679742
|
const managed = await managedDaemonServiceMatchesPort(p2);
|
|
679720
679743
|
if (managed) {
|
|
679744
|
+
if (!await managedDaemonServiceOwnsPort(p2)) {
|
|
679745
|
+
const reclaimed = await reclaimOwnedDaemonListener(p2);
|
|
679746
|
+
if (!reclaimed.ok) return false;
|
|
679747
|
+
await reclaimStaleDaemonEndpointClaim(p2);
|
|
679748
|
+
}
|
|
679721
679749
|
const restarted = await runUserSystemctl(["restart", "omnius-daemon.service"]);
|
|
679722
679750
|
if (restarted.ok && (await waitForDaemonReady(p2, expectedVersion)).ok) return true;
|
|
679723
679751
|
const repaired = await repairManagedDaemonUnit(p2);
|
|
@@ -679903,7 +679931,7 @@ async function stopDaemonAtPort(port = getDaemonPort()) {
|
|
|
679903
679931
|
async function quiesceDaemonForUpdate(port = getDaemonPort()) {
|
|
679904
679932
|
if (await managedDaemonServiceMatchesPort(port)) {
|
|
679905
679933
|
const stopped = await runUserSystemctl(["stop", "omnius-daemon.service"]);
|
|
679906
|
-
|
|
679934
|
+
if (stopped.ok && await waitForDaemonStopped(port)) return true;
|
|
679907
679935
|
}
|
|
679908
679936
|
if (!await isDaemonRunning(port)) {
|
|
679909
679937
|
return daemonPortIsFree(port);
|
|
@@ -680023,6 +680051,13 @@ async function ensureDaemonVersion(expectedVersion = getLocalCliVersion(), port
|
|
|
680023
680051
|
return finish(false, "failed", null, 0, process.platform === "linux");
|
|
680024
680052
|
}
|
|
680025
680053
|
getDaemonPid();
|
|
680054
|
+
if (await managedDaemonServiceMatchesPort(port)) {
|
|
680055
|
+
const started = await runUserSystemctl(["start", "omnius-daemon.service"]);
|
|
680056
|
+
if (started.ok) {
|
|
680057
|
+
const ready2 = await waitForDaemonReady(port, expectedVersion);
|
|
680058
|
+
if (ready2.ok) return finish(true, "started", ready2.observedVersion);
|
|
680059
|
+
}
|
|
680060
|
+
}
|
|
680026
680061
|
const pid = await startDaemon(port);
|
|
680027
680062
|
if (!pid) {
|
|
680028
680063
|
for (let i2 = 0; i2 < 20; i2++) {
|
|
@@ -751174,17 +751209,12 @@ async function handleUpdate(subcommand, ctx3) {
|
|
|
751174
751209
|
daemonUpgrade = await ensureDaemonVersion2(expectedDaemonVersion);
|
|
751175
751210
|
}
|
|
751176
751211
|
}
|
|
751177
|
-
|
|
751178
|
-
|
|
751179
|
-
|
|
751180
|
-
installOverlay.dismiss();
|
|
751181
|
-
renderError(
|
|
751182
|
-
`Updated CLI to ${expectedDaemonVersion}, but the shared daemon still reports ${daemonUpgrade.observedVersion ?? "unavailable"} after ${daemonUpgrade.recoveryAttempts} verified recovery round(s). A privileged owner was ${daemonUpgrade.requiresPrivilegedMigration ? "not safely migratable" : "not detected"}; no arbitrary port holder was terminated.`
|
|
751183
|
-
);
|
|
751184
|
-
return;
|
|
751212
|
+
const daemonUpgradeFailure = daemonUpgrade.ok ? null : `The shared daemon still reports ${daemonUpgrade.observedVersion ?? "unavailable"} after ${daemonUpgrade.recoveryAttempts} verified recovery round(s). A privileged owner was ${daemonUpgrade.requiresPrivilegedMigration ? "not safely migratable" : "not detected"}; no arbitrary port holder was terminated. Restarting this session on ${expectedDaemonVersion} anyway — run /daemon restart to retry the daemon.`;
|
|
751213
|
+
if (daemonUpgradeFailure) {
|
|
751214
|
+
renderWarning(daemonUpgradeFailure);
|
|
751185
751215
|
}
|
|
751186
751216
|
installOverlay.setStatus(
|
|
751187
|
-
daemonUpgrade.action === "restarted" ? `Daemon upgraded to ${expectedDaemonVersion}` : `Daemon verified at ${expectedDaemonVersion}`
|
|
751217
|
+
!daemonUpgrade.ok ? `Daemon still at ${daemonUpgrade.observedVersion ?? "unknown"} — restarting client anyway` : daemonUpgrade.action === "restarted" ? `Daemon upgraded to ${expectedDaemonVersion}` : `Daemon verified at ${expectedDaemonVersion}`
|
|
751188
751218
|
);
|
|
751189
751219
|
ctx3.contextSave?.();
|
|
751190
751220
|
const hadActiveTask = ctx3.savePendingTaskState?.() ?? false;
|
|
@@ -828090,6 +828120,14 @@ This is an independent background session started from /background.`
|
|
|
828090
828120
|
}, 1500);
|
|
828091
828121
|
return;
|
|
828092
828122
|
}
|
|
828123
|
+
setTimeout(() => {
|
|
828124
|
+
if (statusBar.isActive)
|
|
828125
|
+
writeContent(
|
|
828126
|
+
() => renderWarning(
|
|
828127
|
+
`Shared daemon on port ${apiPort} reports ${daemon.observedVersion ?? "unavailable"}, expected ${daemon.expectedVersion}. Run /daemon restart to retry it.`
|
|
828128
|
+
)
|
|
828129
|
+
);
|
|
828130
|
+
}, 1500);
|
|
828093
828131
|
const { startApiServer: startApiServer2 } = await Promise.resolve().then(() => (init_serve(), serve_exports));
|
|
828094
828132
|
const apiServer = startApiServer2({
|
|
828095
828133
|
port: apiPort,
|
package/dist/update-worker.js
CHANGED
|
@@ -293764,6 +293764,27 @@ async function managedDaemonServiceMatchesPort(port) {
|
|
|
293764
293764
|
if (environment === null) return false;
|
|
293765
293765
|
return daemonServiceMatchesPort(port, environment);
|
|
293766
293766
|
}
|
|
293767
|
+
function pidIsInManagedDaemonUnit(pid, readCgroup = defaultReadProcCgroup) {
|
|
293768
|
+
const cgroup = readCgroup(pid);
|
|
293769
|
+
return cgroup === null ? false : cgroup.includes("omnius-daemon.service");
|
|
293770
|
+
}
|
|
293771
|
+
function defaultReadProcCgroup(pid) {
|
|
293772
|
+
try {
|
|
293773
|
+
return readFileSync4(`/proc/${pid}/cgroup`, "utf8");
|
|
293774
|
+
} catch {
|
|
293775
|
+
return null;
|
|
293776
|
+
}
|
|
293777
|
+
}
|
|
293778
|
+
async function managedDaemonServiceOwnsPort(port, dependencies = {
|
|
293779
|
+
holderPids: (value) => portHolderPids(value),
|
|
293780
|
+
pidInUnit: (pid) => pidIsInManagedDaemonUnit(pid)
|
|
293781
|
+
}) {
|
|
293782
|
+
const holders = await dependencies.holderPids(port);
|
|
293783
|
+
if (holders === null) return false;
|
|
293784
|
+
const uniqueHolders = [...new Set(holders.filter((pid) => pid > 0 && pid !== process.pid))];
|
|
293785
|
+
if (uniqueHolders.length === 0) return true;
|
|
293786
|
+
return uniqueHolders.every((pid) => dependencies.pidInUnit(pid));
|
|
293787
|
+
}
|
|
293767
293788
|
function systemdQuote(value) {
|
|
293768
293789
|
return /[\s"\\]/.test(value) ? `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"` : value;
|
|
293769
293790
|
}
|
|
@@ -293985,6 +294006,11 @@ async function restartDaemon(port, expectedVersion) {
|
|
|
293985
294006
|
const p = port ?? getDaemonPort();
|
|
293986
294007
|
const managed = await managedDaemonServiceMatchesPort(p);
|
|
293987
294008
|
if (managed) {
|
|
294009
|
+
if (!await managedDaemonServiceOwnsPort(p)) {
|
|
294010
|
+
const reclaimed = await reclaimOwnedDaemonListener(p);
|
|
294011
|
+
if (!reclaimed.ok) return false;
|
|
294012
|
+
await reclaimStaleDaemonEndpointClaim(p);
|
|
294013
|
+
}
|
|
293988
294014
|
const restarted = await runUserSystemctl(["restart", "omnius-daemon.service"]);
|
|
293989
294015
|
if (restarted.ok && (await waitForDaemonReady(p, expectedVersion)).ok) return true;
|
|
293990
294016
|
const repaired = await repairManagedDaemonUnit(p);
|
|
@@ -294130,7 +294156,7 @@ async function stopDaemonAtPort(port = getDaemonPort()) {
|
|
|
294130
294156
|
async function quiesceDaemonForUpdate(port = getDaemonPort()) {
|
|
294131
294157
|
if (await managedDaemonServiceMatchesPort(port)) {
|
|
294132
294158
|
const stopped = await runUserSystemctl(["stop", "omnius-daemon.service"]);
|
|
294133
|
-
|
|
294159
|
+
if (stopped.ok && await waitForDaemonStopped(port)) return true;
|
|
294134
294160
|
}
|
|
294135
294161
|
if (!await isDaemonRunning(port)) {
|
|
294136
294162
|
return daemonPortIsFree(port);
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omnius",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.618",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "omnius",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.618",
|
|
10
10
|
"bundleDependencies": [
|
|
11
11
|
"image-to-ascii"
|
|
12
12
|
],
|
package/package.json
CHANGED