@amalgm/shell 0.1.162 → 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.
Files changed (144) hide show
  1. package/PURPOSE.md +163 -17
  2. package/README.md +74 -11
  3. package/config/releases/trust/runtime/main.root.json +84 -0
  4. package/config/releases/trust/runtime/preview.root.json +84 -0
  5. package/dist/authorization/recovery-host.d.ts +1 -0
  6. package/dist/authorization/recovery-host.js +2 -3
  7. package/dist/authorization/recovery-host.js.map +1 -1
  8. package/dist/boot.js +28 -20
  9. package/dist/boot.js.map +1 -1
  10. package/dist/cli-arguments.d.ts +8 -0
  11. package/dist/cli-arguments.js +47 -0
  12. package/dist/cli-arguments.js.map +1 -0
  13. package/dist/cli.d.ts +6 -4
  14. package/dist/cli.js +91 -73
  15. package/dist/cli.js.map +1 -1
  16. package/dist/compose.js +4 -3
  17. package/dist/compose.js.map +1 -1
  18. package/dist/content-cache-index.js +2 -2
  19. package/dist/content-cache-index.js.map +1 -1
  20. package/dist/detection/runtime.js +2 -2
  21. package/dist/detection/runtime.js.map +1 -1
  22. package/dist/development/profile.d.ts +27 -0
  23. package/dist/development/profile.js +142 -0
  24. package/dist/development/profile.js.map +1 -0
  25. package/dist/entity-apply-host.js +2 -2
  26. package/dist/entity-apply-host.js.map +1 -1
  27. package/dist/entity-apply-store.d.ts +2 -1
  28. package/dist/entity-apply-store.js +52 -37
  29. package/dist/entity-apply-store.js.map +1 -1
  30. package/dist/files-register-host.d.ts +1 -0
  31. package/dist/files-register-host.js +1 -0
  32. package/dist/files-register-host.js.map +1 -1
  33. package/dist/installation/environment.d.ts +30 -0
  34. package/dist/installation/environment.js +28 -0
  35. package/dist/installation/environment.js.map +1 -0
  36. package/dist/installation/lease.d.ts +6 -0
  37. package/dist/installation/lease.js +28 -0
  38. package/dist/installation/lease.js.map +1 -0
  39. package/dist/installation/ownership.d.ts +30 -0
  40. package/dist/installation/ownership.js +156 -0
  41. package/dist/installation/ownership.js.map +1 -0
  42. package/dist/installation/selection.d.ts +8 -0
  43. package/dist/installation/selection.js +29 -0
  44. package/dist/installation/selection.js.map +1 -0
  45. package/dist/machine-host.d.ts +27 -5
  46. package/dist/machine-host.js +244 -96
  47. package/dist/machine-host.js.map +1 -1
  48. package/dist/main.js +56 -2
  49. package/dist/main.js.map +1 -1
  50. package/dist/platform-product-host.d.ts +9 -9
  51. package/dist/platform-product-host.js +17 -17
  52. package/dist/platform-product-host.js.map +1 -1
  53. package/dist/platform-tools.d.ts +4 -3
  54. package/dist/platform-tools.js +34 -37
  55. package/dist/platform-tools.js.map +1 -1
  56. package/dist/process-lifecycle.d.ts +6 -0
  57. package/dist/process-lifecycle.js +42 -0
  58. package/dist/process-lifecycle.js.map +1 -0
  59. package/dist/pty-host.d.ts +1 -1
  60. package/dist/pty-host.js +70 -21
  61. package/dist/pty-host.js.map +1 -1
  62. package/dist/runtime-command-host.d.ts +7 -0
  63. package/dist/runtime-command-host.js +49 -13
  64. package/dist/runtime-command-host.js.map +1 -1
  65. package/dist/service/adapter.d.ts +36 -0
  66. package/dist/service/adapter.js +24 -0
  67. package/dist/service/adapter.js.map +1 -0
  68. package/dist/service/cli.d.ts +8 -0
  69. package/dist/service/cli.js +237 -0
  70. package/dist/service/cli.js.map +1 -0
  71. package/dist/service/control.d.ts +38 -0
  72. package/dist/service/control.js +68 -0
  73. package/dist/service/control.js.map +1 -0
  74. package/dist/service/index.d.ts +9 -0
  75. package/dist/service/index.js +10 -0
  76. package/dist/service/index.js.map +1 -0
  77. package/dist/service/keepalive.d.ts +18 -0
  78. package/dist/service/keepalive.js +418 -0
  79. package/dist/service/keepalive.js.map +1 -0
  80. package/dist/service/launchd.d.ts +9 -0
  81. package/dist/service/launchd.js +105 -0
  82. package/dist/service/launchd.js.map +1 -0
  83. package/dist/service/owner.d.ts +4 -0
  84. package/dist/service/owner.js +14 -0
  85. package/dist/service/owner.js.map +1 -0
  86. package/dist/service/portable.d.ts +10 -0
  87. package/dist/service/portable.js +32 -0
  88. package/dist/service/portable.js.map +1 -0
  89. package/dist/service/recovery.d.ts +27 -0
  90. package/dist/service/recovery.js +58 -0
  91. package/dist/service/recovery.js.map +1 -0
  92. package/dist/service/registration.d.ts +82 -0
  93. package/dist/service/registration.js +114 -0
  94. package/dist/service/registration.js.map +1 -0
  95. package/dist/service/systemd-unit.d.ts +7 -0
  96. package/dist/service/systemd-unit.js +43 -0
  97. package/dist/service/systemd-unit.js.map +1 -0
  98. package/dist/service/systemd.d.ts +5 -0
  99. package/dist/service/systemd.js +72 -0
  100. package/dist/service/systemd.js.map +1 -0
  101. package/dist/service/windows-action.d.ts +9 -0
  102. package/dist/service/windows-action.js +55 -0
  103. package/dist/service/windows-action.js.map +1 -0
  104. package/dist/service/windows-task.d.ts +9 -0
  105. package/dist/service/windows-task.js +46 -0
  106. package/dist/service/windows-task.js.map +1 -0
  107. package/dist/service/windows.d.ts +2 -0
  108. package/dist/service/windows.js +65 -0
  109. package/dist/service/windows.js.map +1 -0
  110. package/dist/sqlite.d.ts +4 -0
  111. package/dist/sqlite.js +16 -0
  112. package/dist/sqlite.js.map +1 -0
  113. package/dist/updates/artifacts.d.ts +40 -0
  114. package/dist/updates/artifacts.js +299 -0
  115. package/dist/updates/artifacts.js.map +1 -0
  116. package/dist/updates/bootstrap.d.ts +48 -0
  117. package/dist/updates/bootstrap.js +384 -0
  118. package/dist/updates/bootstrap.js.map +1 -0
  119. package/dist/updates/controller.d.ts +66 -0
  120. package/dist/updates/controller.js +322 -0
  121. package/dist/updates/controller.js.map +1 -0
  122. package/dist/updates/isolated-command-lifetime.d.ts +1 -0
  123. package/dist/updates/isolated-command-lifetime.js +63 -0
  124. package/dist/updates/isolated-command-lifetime.js.map +1 -0
  125. package/dist/updates/store.d.ts +41 -0
  126. package/dist/updates/store.js +80 -0
  127. package/dist/updates/store.js.map +1 -0
  128. package/dist/updates/trust.d.ts +20 -0
  129. package/dist/updates/trust.js +138 -0
  130. package/dist/updates/trust.js.map +1 -0
  131. package/dist/user-ground-host.d.ts +4 -1
  132. package/dist/user-ground-host.js +16 -3
  133. package/dist/user-ground-host.js.map +1 -1
  134. package/dist/watching/host.js +4 -2
  135. package/dist/watching/host.js.map +1 -1
  136. package/dist/workspace-add-staging.js +2 -2
  137. package/dist/workspace-add-staging.js.map +1 -1
  138. package/examinations/fixtures/machine-control-plane.js +57 -0
  139. package/examinations/fixtures/private-wire-authority.js +1065 -0
  140. package/examinations/native-service.mjs +92 -0
  141. package/examinations/network-view.mjs +202 -0
  142. package/examinations/runtime-upgrade.native-test.mjs +198 -0
  143. package/npm-shrinkwrap.json +2097 -218
  144. package/package.json +95 -14
@@ -0,0 +1,384 @@
1
+ /** Stable installation-owned process effect. This compiled module is copied
2
+ * outside immutable package generations, so every runtime import is a Node
3
+ * builtin. Core's controller writes release decisions and recovery commands;
4
+ * this launcher only reserves and performs those already-declared effects. */
5
+ import { spawn } from 'node:child_process';
6
+ import { randomUUID } from 'node:crypto';
7
+ import { copyFileSync, existsSync, linkSync, mkdirSync, openSync, closeSync, fsyncSync, realpathSync, rmSync, constants } from 'node:fs';
8
+ import { dirname, isAbsolute, join, resolve, toNamespacedPath } from 'node:path';
9
+ import { DatabaseSync } from 'node:sqlite';
10
+ import { fileURLToPath } from 'node:url';
11
+ const flag = '--managed-service-bootstrap';
12
+ function command(value) {
13
+ const entry = value;
14
+ if (!entry || ![entry.node, entry.bin].every(file => typeof file === 'string' && isAbsolute(file) && !file.includes('\0'))
15
+ || !Array.isArray(entry.args) || entry.args.some(arg => typeof arg !== 'string' || arg.includes('\0'))) {
16
+ throw new Error('Invalid durable controller command');
17
+ }
18
+ }
19
+ export function validateLaunchState(value) {
20
+ const state = value;
21
+ if (!state || state.schema !== 1 || !Number.isSafeInteger(state.attempts) || state.attempts < 0)
22
+ throw new Error('Invalid controller launch state');
23
+ command(state.current);
24
+ for (const name of ['maxAttempts', 'maxHealthFailures', 'readyTimeoutMs', 'healthIntervalMs', 'healthTimeoutMs', 'stopGraceMs']) {
25
+ if (!Number.isSafeInteger(state[name]) || state[name] < 1)
26
+ throw new Error(`Invalid controller launch limit: ${name}`);
27
+ }
28
+ for (const name of ['initialDelayMs', 'maxDelayMs', 'stableAfterMs']) {
29
+ if (!Number.isSafeInteger(state[name]) || state[name] < 0)
30
+ throw new Error(`Invalid controller launch limit: ${name}`);
31
+ }
32
+ if (state.maxDelayMs < state.initialDelayMs)
33
+ throw new Error('Controller backoff limits differ');
34
+ if (state.pending !== null) {
35
+ const pending = state.pending;
36
+ if (!pending || typeof pending.token !== 'string' || !pending.token || typeof pending.attempted !== 'boolean'
37
+ || typeof pending.recoveryAttempted !== 'boolean' || (pending.recoveryAttempted && !pending.attempted)) {
38
+ throw new Error('Invalid durable controller handover');
39
+ }
40
+ command(pending.candidate);
41
+ command(pending.recovery);
42
+ }
43
+ return state;
44
+ }
45
+ function openState(file) {
46
+ mkdirSync(dirname(file), { recursive: true, mode: 0o700 });
47
+ const db = new DatabaseSync(toNamespacedPath(resolve(file)));
48
+ db.exec('PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA synchronous = FULL; CREATE TABLE IF NOT EXISTS update_state (key TEXT PRIMARY KEY, value TEXT NOT NULL);');
49
+ return db;
50
+ }
51
+ function readState(db) {
52
+ const row = db.prepare("SELECT value FROM update_state WHERE key = 'launch'").get();
53
+ if (!row)
54
+ throw new Error('The installation has no authorized controller launch');
55
+ return validateLaunchState(JSON.parse(row.value));
56
+ }
57
+ function writeState(db, value) {
58
+ validateLaunchState(value);
59
+ db.prepare("INSERT INTO update_state(key, value) VALUES ('launch', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(JSON.stringify(value));
60
+ }
61
+ function atomic(db, effect) {
62
+ db.exec('BEGIN IMMEDIATE');
63
+ try {
64
+ const value = effect();
65
+ db.exec('COMMIT');
66
+ return value;
67
+ }
68
+ catch (error) {
69
+ db.exec('ROLLBACK');
70
+ throw error;
71
+ }
72
+ }
73
+ function acquireLease(file) {
74
+ mkdirSync(dirname(file), { recursive: true, mode: 0o700 });
75
+ const db = new DatabaseSync(toNamespacedPath(resolve(file)));
76
+ try {
77
+ db.exec('PRAGMA busy_timeout = 0; BEGIN EXCLUSIVE;');
78
+ return db;
79
+ }
80
+ catch (error) {
81
+ db.close();
82
+ const failure = error;
83
+ if (failure.code === 'SQLITE_BUSY' || failure.code === 'SQLITE_LOCKED' || [5, 6].includes((failure.errcode ?? -1) & 0xff))
84
+ return null;
85
+ throw error;
86
+ }
87
+ }
88
+ function syncFile(file) {
89
+ const fd = openSync(file, 'r');
90
+ try {
91
+ fsyncSync(fd);
92
+ }
93
+ finally {
94
+ closeSync(fd);
95
+ }
96
+ }
97
+ /** Reinstall can repair a missing bootstrap file, but never resets selected
98
+ * release, in-flight handover, or spent recovery allowance. */
99
+ export function initializeBootstrap(input) {
100
+ const file = join(input.serviceDir, 'bootstrap.mjs');
101
+ const database = join(input.serviceDir, 'updates.sqlite');
102
+ mkdirSync(input.serviceDir, { recursive: true, mode: 0o700 });
103
+ const db = openState(database);
104
+ let current;
105
+ try {
106
+ current = atomic(db, () => {
107
+ const existing = db.prepare("SELECT value FROM update_state WHERE key = 'launch'").get();
108
+ if (!existing)
109
+ writeState(db, { schema: 1, current: input.current, pending: null, attempts: 0, ...input.limits });
110
+ return readState(db).current;
111
+ });
112
+ }
113
+ finally {
114
+ db.close();
115
+ }
116
+ if (!existsSync(file)) {
117
+ const temporary = join(input.serviceDir, `.bootstrap-${randomUUID()}.tmp`);
118
+ try {
119
+ copyFileSync(fileURLToPath(import.meta.url), temporary, constants.COPYFILE_EXCL);
120
+ syncFile(temporary);
121
+ try {
122
+ linkSync(temporary, file);
123
+ }
124
+ catch (error) {
125
+ if (error.code !== 'EEXIST')
126
+ throw error;
127
+ }
128
+ }
129
+ finally {
130
+ rmSync(temporary, { force: true });
131
+ }
132
+ if (process.platform !== 'win32')
133
+ syncFile(input.serviceDir);
134
+ }
135
+ return { node: current.node, bin: file, args: [flag, database, input.controllerLease], current };
136
+ }
137
+ function reserve(db) {
138
+ return atomic(db, () => {
139
+ const state = readState(db);
140
+ let selection;
141
+ if (!state.pending) {
142
+ if (state.attempts >= state.maxAttempts)
143
+ return null;
144
+ selection = { command: state.current, token: null, kind: 'current' };
145
+ }
146
+ else if (!state.pending.attempted) {
147
+ state.pending.attempted = true;
148
+ selection = { command: state.pending.candidate, token: state.pending.token, kind: 'candidate' };
149
+ }
150
+ else if (!state.pending.recoveryAttempted) {
151
+ state.pending.recoveryAttempted = true;
152
+ selection = { command: state.pending.recovery, token: state.pending.token, kind: 'recovery' };
153
+ }
154
+ else
155
+ return null;
156
+ state.attempts++;
157
+ writeState(db, state);
158
+ return selection;
159
+ });
160
+ }
161
+ const sameCommand = (left, right) => JSON.stringify(left) === JSON.stringify(right);
162
+ /** Explicit operator retry restores control through known recovery code. It
163
+ * never chooses the failed candidate or changes the Core policy/quarantine. */
164
+ export function retryBootstrap(databaseFile) {
165
+ const db = openState(databaseFile);
166
+ try {
167
+ return atomic(db, () => {
168
+ const state = readState(db);
169
+ if (state.pending) {
170
+ if (!state.pending.attempted || !state.pending.recoveryAttempted)
171
+ return false;
172
+ state.current = state.pending.recovery;
173
+ state.pending = null;
174
+ }
175
+ else if (state.attempts < state.maxAttempts)
176
+ return false;
177
+ state.attempts = 0;
178
+ writeState(db, state);
179
+ return true;
180
+ });
181
+ }
182
+ finally {
183
+ db.close();
184
+ }
185
+ }
186
+ /** One stable owner waits for the installation lease to drain, charges every
187
+ * launch durably, and parks rather than asking its OS parent for more attempts. */
188
+ export async function runBootstrap(databaseFile, controllerLeaseFile) {
189
+ if (![databaseFile, controllerLeaseFile].every(file => isAbsolute(file) && !file.includes('\0')))
190
+ throw new Error('Bootstrap requires exact installation paths');
191
+ const ownerLease = acquireLease(`${databaseFile}.bootstrap-owner.sqlite`);
192
+ if (!ownerLease)
193
+ return 0;
194
+ const db = openState(databaseFile);
195
+ let stopping = false;
196
+ let child = null;
197
+ let wake = null;
198
+ let killTimer;
199
+ const wait = (milliseconds) => new Promise(resolve => {
200
+ // A parked owner must remain alive without polling or relying on an
201
+ // unresolved Promise to keep Node's event loop open.
202
+ const timer = setTimeout(resolve, milliseconds ?? 2_147_483_647);
203
+ wake = () => { clearTimeout(timer); resolve(); };
204
+ }).finally(() => { wake = null; });
205
+ const boundDrain = (owned) => {
206
+ if (!killTimer) {
207
+ killTimer = setTimeout(() => { if (owned.exitCode === null && owned.signalCode === null)
208
+ owned.kill('SIGKILL'); }, readState(db).stopGraceMs);
209
+ killTimer.unref();
210
+ }
211
+ };
212
+ const drain = () => {
213
+ if (!child || child.exitCode !== null || child.signalCode !== null)
214
+ return;
215
+ const owned = child;
216
+ if (owned.connected)
217
+ owned.send({ type: 'amalgm-shutdown' }, () => { });
218
+ else
219
+ owned.kill('SIGTERM');
220
+ boundDrain(owned);
221
+ };
222
+ const stop = () => { stopping = true; drain(); wake?.(); };
223
+ process.once('SIGTERM', stop);
224
+ process.once('SIGINT', stop);
225
+ process.once('disconnect', stop);
226
+ let closeMonitor = () => { };
227
+ try {
228
+ while (!stopping) {
229
+ const state = readState(db);
230
+ const delay = state.attempts ? Math.min(state.initialDelayMs * 2 ** Math.min(30, state.attempts - 1), state.maxDelayMs) : 0;
231
+ if (delay)
232
+ await wait(delay);
233
+ if (stopping)
234
+ break;
235
+ const deadline = Date.now() + state.readyTimeoutMs;
236
+ let fence = acquireLease(controllerLeaseFile);
237
+ while (!fence && !stopping && Date.now() < deadline) {
238
+ await wait(100);
239
+ if (!stopping)
240
+ fence = acquireLease(controllerLeaseFile);
241
+ }
242
+ if (stopping) {
243
+ fence?.close();
244
+ break;
245
+ }
246
+ if (!fence) {
247
+ process.stderr.write('AMALGM_BOOTSTRAP parked: the previous controller still owns the installation\n');
248
+ await wait();
249
+ continue;
250
+ }
251
+ let selected;
252
+ try {
253
+ selected = reserve(db);
254
+ }
255
+ finally {
256
+ fence.close();
257
+ }
258
+ if (!selected) {
259
+ process.stderr.write('AMALGM_BOOTSTRAP parked: the durable controller recovery allowance is exhausted\n');
260
+ await wait();
261
+ continue;
262
+ }
263
+ let intentionalStop = false;
264
+ child = spawn(selected.command.node, [selected.command.bin, ...selected.command.args], {
265
+ env: process.env, stdio: ['ignore', 'inherit', 'inherit', 'ipc'], windowsHide: true,
266
+ });
267
+ const owned = child;
268
+ const exited = new Promise(resolve => {
269
+ owned.once('exit', () => resolve());
270
+ owned.on('error', error => {
271
+ process.stderr.write(`AMALGM_BOOTSTRAP controller error: ${error.message}\n`);
272
+ if (owned.pid === undefined)
273
+ resolve();
274
+ });
275
+ });
276
+ const onControl = (message) => {
277
+ if (!message || typeof message !== 'object')
278
+ return;
279
+ const { type } = message;
280
+ if (type === 'amalgm-controller-stop') {
281
+ intentionalStop = true;
282
+ closeMonitor();
283
+ boundDrain(owned);
284
+ }
285
+ else if (type === 'amalgm-controller-replace') {
286
+ closeMonitor();
287
+ boundDrain(owned);
288
+ }
289
+ };
290
+ owned.on('message', onControl);
291
+ closeMonitor = monitor(owned, readState(db), () => {
292
+ atomic(db, () => {
293
+ const current = readState(db);
294
+ if (!current.pending && current.attempts !== 0 && sameCommand(current.current, selected.command)) {
295
+ current.attempts = 0;
296
+ writeState(db, current);
297
+ }
298
+ });
299
+ }, drain);
300
+ await exited;
301
+ closeMonitor();
302
+ owned.off('message', onControl);
303
+ child = null;
304
+ clearTimeout(killTimer);
305
+ killTimer = undefined;
306
+ if (intentionalStop)
307
+ break;
308
+ }
309
+ return 0;
310
+ }
311
+ finally {
312
+ closeMonitor();
313
+ stop();
314
+ if (child && child.exitCode === null && child.signalCode === null)
315
+ await new Promise(resolve => child.once('exit', resolve));
316
+ clearTimeout(killTimer);
317
+ process.off('SIGTERM', stop);
318
+ process.off('SIGINT', stop);
319
+ process.off('disconnect', stop);
320
+ db.close();
321
+ ownerLease.close();
322
+ }
323
+ }
324
+ function monitor(child, limits, stable, failed) {
325
+ let closed = false;
326
+ let ready = false;
327
+ let nonce = null;
328
+ let healthySince = null;
329
+ let failures = 0;
330
+ let probeTimer;
331
+ let timeout;
332
+ const close = () => { closed = true; clearTimeout(startup); clearTimeout(probeTimer); clearTimeout(timeout); child.off('message', message); };
333
+ const fail = () => { if (!closed) {
334
+ close();
335
+ failed();
336
+ } };
337
+ const startup = setTimeout(fail, limits.readyTimeoutMs);
338
+ const probe = () => {
339
+ if (closed)
340
+ return;
341
+ nonce = randomUUID();
342
+ timeout = setTimeout(() => {
343
+ nonce = null;
344
+ healthySince = null;
345
+ if (++failures >= limits.maxHealthFailures)
346
+ fail();
347
+ else
348
+ probeTimer = setTimeout(probe, limits.healthIntervalMs);
349
+ }, limits.healthTimeoutMs);
350
+ if (child.connected)
351
+ child.send({ type: 'amalgm-health', nonce }, () => { });
352
+ };
353
+ const message = (value) => {
354
+ if (closed || !value || typeof value !== 'object')
355
+ return;
356
+ const reply = value;
357
+ if (reply.type === 'amalgm-ready' && !ready) {
358
+ ready = true;
359
+ clearTimeout(startup);
360
+ probe();
361
+ }
362
+ else if (reply.type === 'amalgm-health' && nonce && reply.nonce === nonce) {
363
+ clearTimeout(timeout);
364
+ nonce = null;
365
+ failures = 0;
366
+ healthySince ??= performance.now();
367
+ if (performance.now() - healthySince >= limits.stableAfterMs)
368
+ stable();
369
+ probeTimer = setTimeout(probe, limits.healthIntervalMs);
370
+ }
371
+ };
372
+ child.on('message', message);
373
+ return close;
374
+ }
375
+ if (process.argv[2] === flag && process.argv[1] && realpathSync(process.argv[1]) === realpathSync(fileURLToPath(import.meta.url))) {
376
+ try {
377
+ process.exitCode = await runBootstrap(process.argv[3], process.argv[4]);
378
+ }
379
+ catch (error) {
380
+ process.stderr.write(`AMALGM_BOOTSTRAP failed: ${error instanceof Error ? error.message : String(error)}\n`);
381
+ process.exitCode = 1;
382
+ }
383
+ }
384
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/updates/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { type ServiceIdentity } from '../service/registration.js';
2
+ import { UpdateStore } from './store.js';
3
+ import { RuntimeTrust } from './trust.js';
4
+ export interface RuntimeUpdateEffects {
5
+ readonly packageRoot: string;
6
+ pause(): Promise<void>;
7
+ start(): Promise<void>;
8
+ probe(): Promise<void>;
9
+ replace(): void;
10
+ changed(): void;
11
+ log(reason: string): void;
12
+ }
13
+ /** Core is the only transition owner. This host performs one persisted effect
14
+ * at a time; release notifications can update desired without changing it. */
15
+ export declare class RuntimeUpdates {
16
+ readonly identity: ServiceIdentity;
17
+ readonly effects: RuntimeUpdateEffects;
18
+ readonly store: UpdateStore;
19
+ readonly abort: AbortController;
20
+ readonly trust: RuntimeTrust;
21
+ private state;
22
+ private job;
23
+ private discovery;
24
+ private notifications;
25
+ private changed;
26
+ private workGeneration;
27
+ private wake;
28
+ private replacing;
29
+ private readonly registration;
30
+ constructor(identity: ServiceIdentity, effects: RuntimeUpdateEffects);
31
+ static enabled(identity: ServiceIdentity): boolean;
32
+ get permitsOrdinaryRuntime(): boolean;
33
+ get status(): {
34
+ active: string;
35
+ desired: string;
36
+ phase: string;
37
+ quarantine: {
38
+ readonly digest: string;
39
+ readonly sequence: number;
40
+ readonly reason: string;
41
+ } | null;
42
+ } | {
43
+ phase: string;
44
+ active?: undefined;
45
+ desired?: undefined;
46
+ quarantine?: undefined;
47
+ };
48
+ start(): void;
49
+ close(): Promise<void>;
50
+ private persist;
51
+ private launch;
52
+ private command;
53
+ /** Registration and the shared CLI pointer are projections of the committed
54
+ * journal. Boot repairs interruption after policy/launcher commit. */
55
+ private projectActive;
56
+ private sameCode;
57
+ private restoreInterruptedLaunch;
58
+ private notifyWork;
59
+ private signal;
60
+ private wait;
61
+ private discover;
62
+ private run;
63
+ private fence;
64
+ private perform;
65
+ private listen;
66
+ }