@amalgm/shell 0.1.163 → 0.1.164-main.34182640231
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/PURPOSE.md +68 -6
- package/README.md +58 -11
- package/config/releases/trust/runtime/main.root.json +84 -0
- package/config/releases/trust/runtime/preview.root.json +84 -0
- package/dist/boot.js +28 -20
- package/dist/boot.js.map +1 -1
- package/dist/cli.js +7 -1
- package/dist/cli.js.map +1 -1
- package/dist/content-cache-index.js +2 -2
- package/dist/content-cache-index.js.map +1 -1
- package/dist/detection/runtime.js +2 -2
- package/dist/detection/runtime.js.map +1 -1
- package/dist/entity-apply-host.js +2 -2
- package/dist/entity-apply-host.js.map +1 -1
- package/dist/entity-apply-store.d.ts +2 -1
- package/dist/entity-apply-store.js +52 -37
- package/dist/entity-apply-store.js.map +1 -1
- package/dist/installation/lease.js +2 -2
- package/dist/installation/lease.js.map +1 -1
- package/dist/installation/ownership.js +2 -2
- package/dist/installation/ownership.js.map +1 -1
- package/dist/machine-host.d.ts +1 -0
- package/dist/machine-host.js +56 -31
- package/dist/machine-host.js.map +1 -1
- package/dist/process-lifecycle.d.ts +1 -3
- package/dist/process-lifecycle.js +10 -0
- package/dist/process-lifecycle.js.map +1 -1
- package/dist/pty-host.d.ts +1 -1
- package/dist/pty-host.js +70 -21
- package/dist/pty-host.js.map +1 -1
- package/dist/service/cli.js +50 -9
- package/dist/service/cli.js.map +1 -1
- package/dist/service/control.d.ts +10 -1
- package/dist/service/control.js +1 -1
- package/dist/service/control.js.map +1 -1
- package/dist/service/keepalive.d.ts +10 -3
- package/dist/service/keepalive.js +267 -29
- package/dist/service/keepalive.js.map +1 -1
- package/dist/service/recovery.d.ts +27 -0
- package/dist/service/recovery.js +58 -0
- package/dist/service/recovery.js.map +1 -0
- package/dist/service/systemd-unit.d.ts +7 -0
- package/dist/service/systemd-unit.js +43 -0
- package/dist/service/systemd-unit.js.map +1 -0
- package/dist/service/systemd.d.ts +1 -5
- package/dist/service/systemd.js +9 -31
- package/dist/service/systemd.js.map +1 -1
- package/dist/service/windows-action.d.ts +9 -0
- package/dist/service/windows-action.js +55 -0
- package/dist/service/windows-action.js.map +1 -0
- package/dist/service/windows-task.d.ts +1 -8
- package/dist/service/windows-task.js +4 -40
- package/dist/service/windows-task.js.map +1 -1
- package/dist/service/windows.js +3 -3
- package/dist/service/windows.js.map +1 -1
- package/dist/sqlite.d.ts +4 -0
- package/dist/sqlite.js +16 -0
- package/dist/sqlite.js.map +1 -0
- package/dist/updates/artifacts.d.ts +40 -0
- package/dist/updates/artifacts.js +299 -0
- package/dist/updates/artifacts.js.map +1 -0
- package/dist/updates/bootstrap.d.ts +48 -0
- package/dist/updates/bootstrap.js +384 -0
- package/dist/updates/bootstrap.js.map +1 -0
- package/dist/updates/controller.d.ts +66 -0
- package/dist/updates/controller.js +322 -0
- package/dist/updates/controller.js.map +1 -0
- package/dist/updates/isolated-command-lifetime.d.ts +1 -0
- package/dist/updates/isolated-command-lifetime.js +63 -0
- package/dist/updates/isolated-command-lifetime.js.map +1 -0
- package/dist/updates/store.d.ts +41 -0
- package/dist/updates/store.js +80 -0
- package/dist/updates/store.js.map +1 -0
- package/dist/updates/trust.d.ts +20 -0
- package/dist/updates/trust.js +138 -0
- package/dist/updates/trust.js.map +1 -0
- package/dist/user-ground-host.d.ts +1 -1
- package/dist/user-ground-host.js +3 -3
- package/dist/user-ground-host.js.map +1 -1
- package/dist/watching/host.js +4 -2
- package/dist/watching/host.js.map +1 -1
- package/dist/workspace-add-staging.js +2 -2
- package/dist/workspace-add-staging.js.map +1 -1
- package/examinations/fixtures/machine-control-plane.js +57 -0
- package/examinations/fixtures/private-wire-authority.js +1065 -0
- package/examinations/native-service.mjs +92 -0
- package/examinations/network-view.mjs +202 -0
- package/examinations/runtime-upgrade.native-test.mjs +198 -0
- package/npm-shrinkwrap.json +2104 -191
- package/package.json +94 -13
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
/** The controller's IPC connection is a lifetime, never durable identity.
|
|
2
|
-
* Remember shutdown during initialization so an orphan cannot become a
|
|
3
|
-
* permanent runtime after its parent has exited. */
|
|
4
1
|
export declare function processShutdown(): {
|
|
5
2
|
signal: AbortSignal;
|
|
6
3
|
close(): void;
|
|
7
4
|
};
|
|
5
|
+
export declare function reportRuntimeReady(): void;
|
|
8
6
|
export declare function waitForShutdown(signal: AbortSignal): Promise<void>;
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
/** The controller's IPC connection is a lifetime, never durable identity.
|
|
2
2
|
* Remember shutdown during initialization so an orphan cannot become a
|
|
3
3
|
* permanent runtime after its parent has exited. */
|
|
4
|
+
let runtimeReady = false;
|
|
4
5
|
export function processShutdown() {
|
|
5
6
|
const controller = new AbortController();
|
|
6
7
|
const stop = () => controller.abort();
|
|
7
8
|
const message = (value) => {
|
|
8
9
|
if (value && typeof value === 'object' && value.type === 'amalgm-shutdown')
|
|
9
10
|
stop();
|
|
11
|
+
if (runtimeReady && !controller.signal.aborted && process.connected && value && typeof value === 'object'
|
|
12
|
+
&& value.type === 'amalgm-health' && typeof value.nonce === 'string') {
|
|
13
|
+
process.send?.({ type: 'amalgm-health', nonce: value.nonce }, () => { });
|
|
14
|
+
}
|
|
10
15
|
};
|
|
11
16
|
process.once('SIGINT', stop);
|
|
12
17
|
process.once('SIGTERM', stop);
|
|
@@ -24,6 +29,11 @@ export function processShutdown() {
|
|
|
24
29
|
},
|
|
25
30
|
};
|
|
26
31
|
}
|
|
32
|
+
export function reportRuntimeReady() {
|
|
33
|
+
runtimeReady = true;
|
|
34
|
+
if (process.connected)
|
|
35
|
+
process.send?.({ type: 'amalgm-ready' }, () => { });
|
|
36
|
+
}
|
|
27
37
|
export function waitForShutdown(signal) {
|
|
28
38
|
if (signal.aborted)
|
|
29
39
|
return Promise.resolve();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-lifecycle.js","sourceRoot":"","sources":["../src/process-lifecycle.ts"],"names":[],"mappings":"AAAA;;oDAEoD;AACpD,MAAM,UAAU,eAAe;IAC7B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,EAAE;QACjC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAA2B,CAAC,IAAI,KAAK,iBAAiB;YAAE,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"process-lifecycle.js","sourceRoot":"","sources":["../src/process-lifecycle.ts"],"names":[],"mappings":"AAAA;;oDAEoD;AACpD,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,MAAM,UAAU,eAAe;IAC7B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,EAAE;QACjC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAA2B,CAAC,IAAI,KAAK,iBAAiB;YAAE,IAAI,EAAE,CAAC;QAC1G,IAAI,YAAY,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;eACnG,KAA2B,CAAC,IAAI,KAAK,eAAe,IAAI,OAAQ,KAA4B,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACtH,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAG,KAA2B,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACjG,CAAC;IACH,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK;QAAE,IAAI,EAAE,CAAC;IACxC,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,KAAK;YACH,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,YAAY,GAAG,IAAI,CAAC;IACpB,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAmB;IACjD,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACrG,CAAC"}
|
package/dist/pty-host.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export interface PtyHost {
|
|
|
8
8
|
readonly manager: PtySessionManager;
|
|
9
9
|
readonly mount: BrickMount;
|
|
10
10
|
readonly upgrade: BrickUpgradeMount;
|
|
11
|
-
close(): void
|
|
11
|
+
close(): Promise<void>;
|
|
12
12
|
}
|
|
13
13
|
/** Native effects for Core's PTY law; Engine reference local-gateway.js:33-47,333-346,777-904. */
|
|
14
14
|
export declare function createPtyHost(config: PtyHostConfig): PtyHost;
|
package/dist/pty-host.js
CHANGED
|
@@ -7,11 +7,23 @@ import * as nativePty from "@homebridge/node-pty-prebuilt-multiarch";
|
|
|
7
7
|
import { createPtyApi, PtySessionManager, } from "@amalgm/core/pty";
|
|
8
8
|
import { WS_CLOSE_UNAUTHORIZED, } from "@amalgm/core/transport";
|
|
9
9
|
import { WebSocket, WebSocketServer } from "ws";
|
|
10
|
+
// Terminal drains must finish inside the runtime's 25-second shutdown grace.
|
|
11
|
+
const TERMINAL_HANGUP_GRACE_MS = 1_000;
|
|
12
|
+
const TERMINAL_FORCED_EXIT_MS = 5_000;
|
|
10
13
|
/** Native effects for Core's PTY law; Engine reference local-gateway.js:33-47,333-346,777-904. */
|
|
11
14
|
export function createPtyHost(config) {
|
|
12
15
|
ensureSpawnHelperExecutable();
|
|
16
|
+
const terminals = new Set();
|
|
17
|
+
let closing;
|
|
13
18
|
const manager = new PtySessionManager({
|
|
14
|
-
spawn: (spec) =>
|
|
19
|
+
spawn: (spec) => {
|
|
20
|
+
if (closing)
|
|
21
|
+
throw new Error("PTY host is closed");
|
|
22
|
+
const owned = adaptProcess(nativePty.spawn(spec.shell, [], spec));
|
|
23
|
+
terminals.add(owned);
|
|
24
|
+
void owned.exited.then(() => terminals.delete(owned));
|
|
25
|
+
return owned.process;
|
|
26
|
+
},
|
|
15
27
|
timer: {
|
|
16
28
|
schedule(delayMs, callback) {
|
|
17
29
|
const handle = setTimeout(callback, delayMs);
|
|
@@ -59,10 +71,21 @@ export function createPtyHost(config) {
|
|
|
59
71
|
},
|
|
60
72
|
},
|
|
61
73
|
close() {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
74
|
+
if (!closing) {
|
|
75
|
+
// Seal admission before closing peers, whose callbacks can enter Core.
|
|
76
|
+
let resolve;
|
|
77
|
+
let reject;
|
|
78
|
+
closing = new Promise((yes, no) => { resolve = yes; reject = no; });
|
|
79
|
+
const owned = [...terminals];
|
|
80
|
+
manager.closeAll();
|
|
81
|
+
for (const terminal of owned)
|
|
82
|
+
terminal.process.kill();
|
|
83
|
+
for (const client of wss.clients)
|
|
84
|
+
client.terminate();
|
|
85
|
+
const socketsClosed = new Promise(yes => wss.close(yes));
|
|
86
|
+
void Promise.all([socketsClosed, ...owned.map(terminal => terminal.drain())]).then(() => resolve(), reject);
|
|
87
|
+
}
|
|
88
|
+
return closing;
|
|
66
89
|
},
|
|
67
90
|
};
|
|
68
91
|
}
|
|
@@ -74,33 +97,59 @@ function hostShell(env) {
|
|
|
74
97
|
return platform() === "darwin" ? "/bin/zsh" : "/bin/sh";
|
|
75
98
|
}
|
|
76
99
|
function adaptProcess(proc) {
|
|
77
|
-
let
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
100
|
+
let stopped = false;
|
|
101
|
+
let finished = false;
|
|
102
|
+
let force;
|
|
103
|
+
let resolveExit;
|
|
104
|
+
const exited = new Promise(resolve => { resolveExit = resolve; });
|
|
105
|
+
const signal = (value) => {
|
|
82
106
|
try {
|
|
83
|
-
proc.kill();
|
|
107
|
+
proc.kill(value);
|
|
84
108
|
}
|
|
85
109
|
catch {
|
|
86
110
|
// A process may have completed before native teardown reaches it.
|
|
87
111
|
}
|
|
88
112
|
};
|
|
113
|
+
const observation = proc.onExit(() => {
|
|
114
|
+
finished = true;
|
|
115
|
+
clearTimeout(force);
|
|
116
|
+
// ConPTY's native transport has its own lifetime after the program exits.
|
|
117
|
+
if (platform() === "win32")
|
|
118
|
+
signal();
|
|
119
|
+
observation.dispose();
|
|
120
|
+
resolveExit();
|
|
121
|
+
});
|
|
122
|
+
const stop = () => {
|
|
123
|
+
if (stopped || finished)
|
|
124
|
+
return;
|
|
125
|
+
stopped = true;
|
|
126
|
+
signal();
|
|
127
|
+
if (!finished)
|
|
128
|
+
force = setTimeout(() => { if (!finished)
|
|
129
|
+
signal("SIGKILL"); }, TERMINAL_HANGUP_GRACE_MS);
|
|
130
|
+
};
|
|
89
131
|
return {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
132
|
+
process: {
|
|
133
|
+
pid: proc.pid,
|
|
134
|
+
write: (data) => proc.write(data),
|
|
135
|
+
resize: (cols, rows) => proc.resize(cols, rows),
|
|
136
|
+
kill: stop,
|
|
137
|
+
onData: (listener) => proc.onData(listener),
|
|
138
|
+
onExit: (listener) => proc.onExit(listener),
|
|
139
|
+
},
|
|
140
|
+
exited,
|
|
141
|
+
async drain() {
|
|
142
|
+
stop();
|
|
143
|
+
let deadline;
|
|
96
144
|
try {
|
|
97
|
-
|
|
145
|
+
await Promise.race([exited, new Promise((_, reject) => {
|
|
146
|
+
deadline = setTimeout(() => reject(new Error(`PTY ${proc.pid} did not exit after forced termination`)), TERMINAL_HANGUP_GRACE_MS + TERMINAL_FORCED_EXIT_MS);
|
|
147
|
+
})]);
|
|
98
148
|
}
|
|
99
149
|
finally {
|
|
100
|
-
|
|
101
|
-
release();
|
|
150
|
+
clearTimeout(deadline);
|
|
102
151
|
}
|
|
103
|
-
}
|
|
152
|
+
},
|
|
104
153
|
};
|
|
105
154
|
}
|
|
106
155
|
function adaptPeer(ws) {
|
package/dist/pty-host.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-host.js","sourceRoot":"","sources":["../src/pty-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,KAAK,SAAS,MAAM,yCAAyC,CAAC;AACrE,OAAO,EACL,YAAY,EACZ,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAiBhD,kGAAkG;AAClG,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,2BAA2B,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC;QACpC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"pty-host.js","sourceRoot":"","sources":["../src/pty-host.ts"],"names":[],"mappings":"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"}
|
package/dist/service/cli.js
CHANGED
|
@@ -4,19 +4,21 @@
|
|
|
4
4
|
* `--user` (and the optional root/home/label selectors), then hands one
|
|
5
5
|
* owner one job. `keepalive` is the verb the OS itself runs.
|
|
6
6
|
*/
|
|
7
|
-
import { existsSync, rmSync } from "node:fs";
|
|
7
|
+
import { existsSync, readFileSync, rmSync } from "node:fs";
|
|
8
|
+
import { CHILD_HEALTH_POLICY, CHILD_RESTART_POLICY, readyDeadlineMs } from '@amalgm/core/supervision';
|
|
8
9
|
import { option, parseArguments } from "../cli-arguments.js";
|
|
9
10
|
import { runKeepalive } from "./keepalive.js";
|
|
10
|
-
import { keepaliveStatus, stopKeepalive } from "./control.js";
|
|
11
|
+
import { controllerLeaseFile, controllerRequest, keepaliveStatus, stopKeepalive } from "./control.js";
|
|
11
12
|
import { acquireProcessLease } from "../installation/lease.js";
|
|
12
|
-
import { join } from "node:path";
|
|
13
|
+
import { dirname, join, resolve } from "node:path";
|
|
14
|
+
import { initializeBootstrap, retryBootstrap } from '../updates/bootstrap.js';
|
|
13
15
|
import { runtimeAppOrigin, runtimeProxyOrigin } from "../installation/environment.js";
|
|
14
16
|
import { resolveInvocationBinding } from "../installation/selection.js";
|
|
15
17
|
import { ownerFor } from "./owner.js";
|
|
16
18
|
import { portableEntrypoint } from "./portable.js";
|
|
17
19
|
import { currentLauncher, detectBackend, readRegistration, registrationSatisfies, serviceIdentity, writeRegistration, registrationFile, } from "./registration.js";
|
|
18
20
|
import { userSystemdAvailable } from "./systemd.js";
|
|
19
|
-
const VERBS = new Set(["install", "start", "stop", "status", "uninstall", "keepalive"]);
|
|
21
|
+
const VERBS = new Set(["install", "start", "stop", "retry", "status", "uninstall", "keepalive"]);
|
|
20
22
|
const ALL_BACKENDS = ["launchd", "systemd", "windows", "portable"];
|
|
21
23
|
/** Options that shape the runtime; forwarded to `amalgm run` as well. */
|
|
22
24
|
const RUNTIME_OPTIONS = ["app-url", "proxy-url", "wire-url", "port", "profile"];
|
|
@@ -57,6 +59,20 @@ export async function runServiceCli(args, runtimeLabel = "main") {
|
|
|
57
59
|
if (!registration)
|
|
58
60
|
throw new Error(`No service is registered for ${identity.label}; run: amalgm service install --user ${identity.user}`);
|
|
59
61
|
const owner = ownerFor(registration.backend);
|
|
62
|
+
if (parsed.command === "retry") {
|
|
63
|
+
const state = await controllerRequest(identity, 'retry');
|
|
64
|
+
if (!state) {
|
|
65
|
+
if (!registration.files.bootstrap || !retryBootstrap(join(identity.serviceDir, 'updates.sqlite'))) {
|
|
66
|
+
throw new Error('The runtime controller is unavailable or its managed handover requires recovery; its release intent was preserved.');
|
|
67
|
+
}
|
|
68
|
+
await owner.stop(identity);
|
|
69
|
+
await owner.start(identity, registration);
|
|
70
|
+
report('retried', { label: identity.label, phase: 'starting' });
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
73
|
+
report("retried", { label: identity.label, phase: state.phase });
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
60
76
|
if (parsed.command === "start")
|
|
61
77
|
await owner.start(identity, registration);
|
|
62
78
|
else
|
|
@@ -89,7 +105,7 @@ async function install(identity, parsed) {
|
|
|
89
105
|
async function installOwned(identity, parsed) {
|
|
90
106
|
const appUrl = runtimeAppOrigin(identity.binding, option(parsed, "app-url") || undefined);
|
|
91
107
|
runtimeProxyOrigin(identity.binding, appUrl, option(parsed, "proxy-url") || undefined);
|
|
92
|
-
|
|
108
|
+
let launcher = currentLauncher();
|
|
93
109
|
const backend = detectBackend(option(parsed, "mode") || "auto", {
|
|
94
110
|
platform: process.platform,
|
|
95
111
|
userSystemd: userSystemdAvailable,
|
|
@@ -100,7 +116,28 @@ async function installOwned(identity, parsed) {
|
|
|
100
116
|
const runArgs = [...prefix, 'run', ...selectors, '--app-url', appUrl, ...forwarded(parsed, RUNTIME_OPTIONS.filter((key) => key !== 'app-url'))];
|
|
101
117
|
const existing = readRegistration(identity);
|
|
102
118
|
const owner = ownerFor(backend);
|
|
103
|
-
|
|
119
|
+
const metadata = JSON.parse(readFileSync(join(launcher.packageRoot, 'package.json'), 'utf8'));
|
|
120
|
+
const managed = backend !== 'portable' && identity.binding.runtimeLabel !== 'local' && metadata.name === 'amalgm'
|
|
121
|
+
&& metadata.amalgmSource?.repository === 'amalgm-inc/amalgm-shell' && metadata.amalgmSource.branch === identity.binding.branch
|
|
122
|
+
&& /^[a-f0-9]{40}$/.test(metadata.amalgmSource.commit) && metadata.amalgmRuntime?.schema === 1;
|
|
123
|
+
const bootstrap = managed ? initializeBootstrap({ serviceDir: identity.serviceDir, controllerLease: controllerLeaseFile(identity),
|
|
124
|
+
current: { node: launcher.node, bin: launcher.bin, args: keepaliveArgs }, limits: {
|
|
125
|
+
maxAttempts: CHILD_RESTART_POLICY.maxRestarts + 1, initialDelayMs: CHILD_RESTART_POLICY.initialDelayMs,
|
|
126
|
+
maxDelayMs: CHILD_RESTART_POLICY.maxDelayMs, stableAfterMs: CHILD_RESTART_POLICY.stableAfterMs,
|
|
127
|
+
readyTimeoutMs: readyDeadlineMs(CHILD_HEALTH_POLICY), healthIntervalMs: CHILD_HEALTH_POLICY.intervalMs,
|
|
128
|
+
healthTimeoutMs: CHILD_HEALTH_POLICY.timeoutMs, maxHealthFailures: CHILD_HEALTH_POLICY.maxFailures, stopGraceMs: 30_000,
|
|
129
|
+
} }) : null;
|
|
130
|
+
if (bootstrap) {
|
|
131
|
+
// A reinstall through an older compatible CLI cannot replace an already
|
|
132
|
+
// selected managed controller with that CLI's immutable package generation.
|
|
133
|
+
const packageRoot = resolve(dirname(bootstrap.current.bin), '..');
|
|
134
|
+
const selected = JSON.parse(readFileSync(join(packageRoot, 'package.json'), 'utf8'));
|
|
135
|
+
if (selected.name !== 'amalgm' || selected.amalgmSource?.branch !== identity.binding.branch)
|
|
136
|
+
throw new Error('The selected controller belongs to another managed package');
|
|
137
|
+
launcher = { node: bootstrap.current.node, bin: bootstrap.current.bin, packageRoot, packageVersion: selected.version };
|
|
138
|
+
}
|
|
139
|
+
if (existing && existing.backend === backend && (!bootstrap || existing.files.bootstrap === bootstrap.bin)
|
|
140
|
+
&& registrationSatisfies(existing, { launcher, backend, run_args: runArgs })) {
|
|
104
141
|
if (backend !== "portable")
|
|
105
142
|
await owner.start(identity, existing);
|
|
106
143
|
report("installed", { label: identity.label, backend, unchanged: true, files: existing.files });
|
|
@@ -118,13 +155,13 @@ async function installOwned(identity, parsed) {
|
|
|
118
155
|
bin: launcher.bin,
|
|
119
156
|
runtime_host: "node",
|
|
120
157
|
local_only: false,
|
|
121
|
-
files: owner.files(identity),
|
|
158
|
+
files: { ...owner.files(identity), ...(bootstrap ? { bootstrap: bootstrap.bin } : {}) },
|
|
122
159
|
keepalive_args: keepaliveArgs,
|
|
123
160
|
run_args: runArgs,
|
|
124
161
|
installed_at: new Date().toISOString(),
|
|
125
162
|
};
|
|
126
163
|
writeRegistration(identity, registration);
|
|
127
|
-
await owner.install(identity, launcher, keepaliveArgs);
|
|
164
|
+
await owner.install(identity, bootstrap ? { ...launcher, node: bootstrap.node, bin: bootstrap.bin } : launcher, bootstrap ? bootstrap.args : keepaliveArgs);
|
|
128
165
|
report("installed", { label: identity.label, backend, unchanged: false, files: registration.files });
|
|
129
166
|
}
|
|
130
167
|
if (backend === "portable") {
|
|
@@ -182,13 +219,17 @@ Usage:
|
|
|
182
219
|
amalgm service install --user EMAIL [--mode auto|launchd|systemd|windows|portable]
|
|
183
220
|
amalgm service start --user EMAIL
|
|
184
221
|
amalgm service stop --user EMAIL
|
|
222
|
+
amalgm service retry --user EMAIL (resume a parked runtime)
|
|
185
223
|
amalgm service status --user EMAIL
|
|
186
224
|
amalgm service uninstall --user EMAIL
|
|
187
225
|
amalgm service keepalive --user EMAIL (what the OS runs; the foreground entrypoint in portable mode)
|
|
188
226
|
|
|
189
227
|
install registers one keepalive with the OS and starts it: a LaunchAgent on
|
|
190
228
|
macOS, a systemd user unit on Linux, a per-user Task Scheduler owner on
|
|
191
|
-
Windows. The keepalive runs "amalgm run"
|
|
229
|
+
Windows. The keepalive runs "amalgm run", retries crashes with capped backoff,
|
|
230
|
+
and parks repeated failures while status and control remain available.
|
|
231
|
+
Sustained ready health resets the allowance. Start and reinstall preserve it;
|
|
232
|
+
retry explicitly grants a parked runtime a fresh allowance.
|
|
192
233
|
Options given to install (--runtime-label, --home, --amalgm-root, --app-url,
|
|
193
234
|
--branch, --proxy-url, --port) are the options the service will run with.
|
|
194
235
|
`;
|
package/dist/service/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/service/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/service/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,38 @@
|
|
|
1
1
|
import { type RuntimeBinding } from '@amalgm/core/binding';
|
|
2
2
|
import type { ServiceIdentity } from './registration.js';
|
|
3
|
+
import type { RecoveryState } from './recovery.js';
|
|
3
4
|
export interface ControllerState {
|
|
4
5
|
readonly binding: RuntimeBinding;
|
|
5
6
|
readonly user: string;
|
|
6
7
|
readonly instanceId: string;
|
|
7
8
|
readonly pid: number;
|
|
9
|
+
readonly bootstrapPid?: number | null;
|
|
10
|
+
readonly update?: unknown;
|
|
8
11
|
readonly port: number;
|
|
9
12
|
readonly token: string;
|
|
10
13
|
readonly childPid: number | null;
|
|
11
14
|
readonly restarts: number;
|
|
15
|
+
readonly phase: 'starting' | 'running' | 'backoff' | 'parked' | 'stopping';
|
|
16
|
+
readonly recovery: RecoveryState;
|
|
12
17
|
}
|
|
13
18
|
export declare const controllerStateFile: (identity: ServiceIdentity) => string;
|
|
14
19
|
export declare const controllerLeaseFile: (identity: ServiceIdentity) => string;
|
|
15
20
|
/** A recorded port/PID is an address, not proof. Authenticate the live owner. */
|
|
16
|
-
export declare function controllerRequest(identity: ServiceIdentity, action: 'status' | 'stop'): Promise<ControllerState | null>;
|
|
21
|
+
export declare function controllerRequest(identity: ServiceIdentity, action: 'status' | 'stop' | 'retry'): Promise<ControllerState | null>;
|
|
17
22
|
export declare function keepaliveStatus(identity: ServiceIdentity): Promise<{
|
|
18
23
|
alive: boolean;
|
|
19
24
|
binding: RuntimeBinding;
|
|
20
25
|
user: string;
|
|
21
26
|
instanceId: string;
|
|
22
27
|
pid: number;
|
|
28
|
+
bootstrapPid?: number | null;
|
|
29
|
+
update?: unknown;
|
|
23
30
|
port: number;
|
|
24
31
|
token: string;
|
|
25
32
|
childPid: number | null;
|
|
26
33
|
restarts: number;
|
|
34
|
+
phase: "starting" | "running" | "backoff" | "parked" | "stopping";
|
|
35
|
+
recovery: RecoveryState;
|
|
27
36
|
} | null>;
|
|
28
37
|
/** Stop only the authenticated owner. Never signal a remembered PID. */
|
|
29
38
|
export declare function stopKeepalive(identity: ServiceIdentity, timeoutMs?: number): Promise<void>;
|
package/dist/service/control.js
CHANGED
|
@@ -14,7 +14,7 @@ export async function controllerRequest(identity, action) {
|
|
|
14
14
|
return null;
|
|
15
15
|
try {
|
|
16
16
|
const response = await fetch(`http://127.0.0.1:${state.port}/${action}`, {
|
|
17
|
-
method: action === '
|
|
17
|
+
method: action === 'status' ? 'GET' : 'POST',
|
|
18
18
|
headers: { authorization: `Bearer ${state.token}`,
|
|
19
19
|
'x-amalgm-controller-identity': JSON.stringify({ instanceId: state.instanceId, user: identity.user, binding: identity.binding }) },
|
|
20
20
|
signal: AbortSignal.timeout(2_000), redirect: 'error',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control.js","sourceRoot":"","sources":["../../src/service/control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAuB,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"control.js","sourceRoot":"","sources":["../../src/service/control.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
|
+
import { type ChildHealthPolicy, type ChildRestartPolicy } from '@amalgm/core/supervision';
|
|
1
2
|
import { type ServiceIdentity } from './registration.js';
|
|
2
3
|
export declare const STOP_GRACE_MS = 25000;
|
|
3
4
|
export declare const LOG_LIMIT_BYTES: number;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
interface ControllerPolicy {
|
|
6
|
+
readonly restart?: ChildRestartPolicy;
|
|
7
|
+
readonly health?: ChildHealthPolicy;
|
|
8
|
+
readonly stopGraceMs?: number;
|
|
9
|
+
}
|
|
10
|
+
/** One leased controller supervises one runtime over IPC. The optional policy
|
|
11
|
+
* lets process examinations use short clocks; the CLI always uses Core defaults. */
|
|
12
|
+
export declare function runKeepalive(identity: ServiceIdentity, policy?: ControllerPolicy): Promise<number>;
|
|
7
13
|
/** Two bounded log files; even a single oversized write obeys the limit. */
|
|
8
14
|
export declare function openRotatingLog(file: string, limitBytes: number): {
|
|
9
15
|
write(chunk: Buffer | string): void;
|
|
10
16
|
close(): void;
|
|
11
17
|
};
|
|
18
|
+
export {};
|