@amalgm/core 0.1.7 → 0.2.0

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 CHANGED
@@ -15,9 +15,10 @@ core. Everything else is not.**
15
15
  Core owns exactly four things:
16
16
 
17
17
  1. **Identity** — who this machine is, for which user, on which branch.
18
- The `~/.amalgm/<user>/<branch>/` layout, machine/instance identity,
19
- auth-store contracts, and the branch-binding rule surfaces use to decide
20
- whether they may attach.
18
+ The `~/amalgm/users/<email>/` user ground and its reserved per-device
19
+ `.amalgm/machines/<device-id>/` control namespace, machine/instance
20
+ identity, auth-store contracts, and the branch-binding rule surfaces use
21
+ to decide whether they may attach.
21
22
  2. **Transport** — the pipe. The local gateway's routing and admission
22
23
  rules, the tunnel connection contract, and the event rail. The pipe
23
24
  carries payloads it never interprets: sync semantics belong to
@@ -99,6 +100,21 @@ source until each module is cut over.
99
100
  17. **Retirement is explicit subtraction.** Every retired Engine prefix stays
100
101
  named as evidence but is absent from the active route table, so dead
101
102
  compatibility surfaces cannot masquerade as unfinished product work.
103
+ 18. **Machine setup is one trust rail with two entrances.** Browser polling and
104
+ an approved setup code converge before the same registration, credential
105
+ split, proxy-refresh, installation, canonical-runtime, and readiness path;
106
+ service selection is a downstream installation decision and an omitted
107
+ selector means every service in the verified release catalog.
108
+ 19. **Every managed login includes Files.** Core and Files/Live are the minimum
109
+ managed installation: after machine trust, Core invokes one injected Live
110
+ user-ground convergence operation, and setup is not ready until that
111
+ operation proves cloud-backed identity and active watcher coverage.
112
+ 20. **User ground and machine state never overlap.** Everything in
113
+ `users/<email>/` is eligible user ground except the reserved `.amalgm/`
114
+ directory and paths named by the tracked `.amalgmignore`; credentials,
115
+ SQLite databases, observer evidence, caches, runtimes, and logs live under
116
+ `.amalgm/machines/<device-id>/` and never enter registration. The new
117
+ layout is initialized cleanly rather than adopting a legacy mixed root.
102
118
 
103
119
  ## Five surfaces, one behavior
104
120
 
package/README.md CHANGED
@@ -7,6 +7,10 @@ alive, and route traffic to everything else. Start with
7
7
  [docs/responsibilities.md](docs/responsibilities.md) (every duty, and the
8
8
  knife table mapping the engine monolith onto its target repos).
9
9
 
10
+ The evolving product contract for the top-level command, modular service
11
+ installation, and mandatory managed updates is
12
+ [docs/amalgm-cli.md](docs/amalgm-cli.md).
13
+
10
14
  ```
11
15
  src/identity/ labels, layout grammar, ids, auth records
12
16
  src/transport/ the auth boundary, ONE routing table, admission, ingress
@@ -13,4 +13,5 @@ export * from './local/index.js';
13
13
  export * from './credentials/index.js';
14
14
  export * from './ids.js';
15
15
  export * from './auth-records.js';
16
+ export * from './machine-setup.js';
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
@@ -13,4 +13,5 @@ export * from './local/index.js';
13
13
  export * from './credentials/index.js';
14
14
  export * from './ids.js';
15
15
  export * from './auth-records.js';
16
+ export * from './machine-setup.js';
16
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
@@ -7,8 +7,9 @@
7
7
  *
8
8
  * 1. The LABEL partition ({@link normalizeRuntimeLabel} and its coercing
9
9
  * twin {@link coerceRuntimeLabel}): `main | preview | local` — the
10
- * identity that scopes state under `runtimes/<label>/` and decides which
11
- * computer records may bind to this process.
10
+ * identity that scopes state under the machine's `runtimes/<label>/`
11
+ * control directory and decides which computer records may bind to this
12
+ * process.
12
13
  * 2. The INFRA partition ({@link usesPreviewInfraDefaults}): main infra vs
13
14
  * preview infra. Here `local`/`dev`/`development` land on the PREVIEW
14
15
  * side — a development build must never default onto production
@@ -1 +1 @@
1
- {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../src/identity/labels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAExD;0DAC0D;AAC1D,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,YAAY,CAIzD,CAAC;AAMH;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,EAAE,CAOvE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAK/D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAK9D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAK5F;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAEtE;AAMD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAG5E;AAED;oEACoE;AACpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,mBAAmB,GAAG,OAAO,CAGjG;AAED;2EAC2E;AAC3E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EAC/C,YAAY,EAAE,YAAY,GACzB,OAAO,CAGT"}
1
+ {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../src/identity/labels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAExD;0DAC0D;AAC1D,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,YAAY,CAIzD,CAAC;AAMH;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,EAAE,CAOvE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAK/D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAK9D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAK5F;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAEtE;AAMD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAG5E;AAED;oEACoE;AACpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,mBAAmB,GAAG,OAAO,CAGjG;AAED;2EAC2E;AAC3E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EAC/C,YAAY,EAAE,YAAY,GACzB,OAAO,CAGT"}
@@ -7,8 +7,9 @@
7
7
  *
8
8
  * 1. The LABEL partition ({@link normalizeRuntimeLabel} and its coercing
9
9
  * twin {@link coerceRuntimeLabel}): `main | preview | local` — the
10
- * identity that scopes state under `runtimes/<label>/` and decides which
11
- * computer records may bind to this process.
10
+ * identity that scopes state under the machine's `runtimes/<label>/`
11
+ * control directory and decides which computer records may bind to this
12
+ * process.
12
13
  * 2. The INFRA partition ({@link usesPreviewInfraDefaults}): main infra vs
13
14
  * preview infra. Here `local`/`dev`/`development` land on the PREVIEW
14
15
  * side — a development build must never default onto production
@@ -1 +1 @@
1
- {"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/identity/labels.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/identity/labels.ts"],"names":[],"mappings":"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"}
@@ -30,15 +30,18 @@ export declare const USER_HOME_MANIFEST_NAME = "home.json";
30
30
  /** User-home graph schema version (layout.js:38). Changing the declared
31
31
  * exact graph changes the identity contract: a client must never accept a
32
32
  * prior graph and silently invent a new managed child. */
33
- export declare const USER_HOME_SCHEMA_VERSION = 2;
33
+ export declare const USER_HOME_SCHEMA_VERSION = 3;
34
+ /** Root policy file. It is portable user ground and travels with the home
35
+ * whose enrollment policy it declares. */
36
+ export declare const USER_IGNORE_FILE_NAME = ".amalgmignore";
37
+ /** Reserved machine-local control directory inside a user home. Live rejects
38
+ * this namespace before evaluating user ignore rules. */
39
+ export declare const USER_CONTROL_DIR_NAME = ".amalgm";
34
40
  /** Stable per-user product namespaces (layout.js:43-50). Their authority is
35
41
  * NOT inferred from their path: user content and exact platform-managed
36
42
  * targets are declared separately in the user-home declaration.
37
- * DELIBERATE DEVIATION: `browser` is an SDK-side ADDITION ahead of the
38
- * engine — the browser brick keeps per-user state and needs a declared
39
- * namespace to resolve it into ({@link resolveProductStateDir}). Additive
40
- * only (axiom 7): the engine's six keep their bytes and order; it does NOT
41
- * join the shipped user-home graph until the browser product declares it. */
43
+ * The new user-ground contract declares all seven roots. It does not import
44
+ * the Engine's older six-root home. */
42
45
  export declare const PRIMITIVE_DIRS: readonly string[];
43
46
  /**
44
47
  * ONE sanitizer, two engine homes: runtime-identity.js:59-65
@@ -79,7 +82,7 @@ export interface ShippedUserHomeDeclaration extends UserHomeDeclaration {
79
82
  readonly systemToolArtifacts: readonly UserHomeExactManagedDeclaration[];
80
83
  }
81
84
  /**
82
- * The user-home graph the engine ships today (layout.js:52-87): the six
85
+ * The user-home graph the managed product ships: the seven
83
86
  * roots, one `<key>-root` managed node per root, the home manifest at
84
87
  * `system/home.json`, `system/defaults`, `system/policy`, and the seven
85
88
  * system tool artifacts. These CONTENTS are PRODUCT declarations, not
@@ -104,7 +107,7 @@ export interface UserHomeManifest {
104
107
  }
105
108
  /**
106
109
  * The user-home manifest for a declaration (engine ensureUserHome's
107
- * `manifestContents`, layout.js:137-146): schemaVersion 2, kind
110
+ * `manifestContents`, layout.js:137-146): the current user-home schema, kind
108
111
  * `amalgm-user-home`, and the declaration's entries with each
109
112
  * `relativePath` published under the key name `path` — relative, so the
110
113
  * manifest survives a moved or renamed user folder — and every managed
@@ -164,10 +167,17 @@ export declare function joinPathSegments(...segments: string[]): string;
164
167
  * `.amalgm-user.json` files) reads the filesystem and stays host-side.
165
168
  */
166
169
  export declare function scopedAmalgmDir(homeDir: string, userScope: unknown): string;
167
- /** Per-label runtime state: `<userDir>/runtimes/<label>` (engine
168
- * scopedRuntimeDir runtime-identity.js:144-146, runtime-paths.js:81-86).
170
+ /** The tracked ignore policy at the root of one user ground. */
171
+ export declare function userIgnoreFile(userDir: string): string;
172
+ /** The reserved, unregistered control namespace for one user. */
173
+ export declare function userControlDir(userDir: string): string;
174
+ /** Machine-local state for one physical device under one user's home. */
175
+ export declare function userMachineDir(userDir: string, deviceId: unknown): string;
176
+ /** Files/Live's machine-local databases and immutable content cache. */
177
+ export declare function liveMachineStateDir(userDir: string, deviceId: unknown): string;
178
+ /** Per-label runtime state inside the reserved per-device control namespace.
169
179
  * The label must be one of the three — junk never names a state dir. */
170
- export declare function runtimeStateDir(userDir: string, label: string): string;
180
+ export declare function runtimeStateDir(userDir: string, deviceId: unknown, label: string): string;
171
181
  /** `runtime-state.json` inside a runtime state dir (runtime-paths.js:88-90). */
172
182
  export declare function runtimeStateFile(stateDir: string): string;
173
183
  /** `runtime-token.json` inside a runtime state dir (runtime-paths.js:92-94). */
@@ -181,7 +191,7 @@ export declare function computerRecordFile(dir: string): string;
181
191
  * (engine config.js:37-40, proxy-token-store.js:25-28). */
182
192
  export declare function computerAuthFile(dir: string): string;
183
193
  /**
184
- * A primitive root under the user dir (layout.js:414-419). Only the six
194
+ * A primitive root under the user dir (layout.js:414-419). Only the seven
185
195
  * declared namespaces exist; the refusal string is the ratified text.
186
196
  */
187
197
  export declare function userPrimitiveRoot(userDir: string, kind: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/identity/layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/identity/layout.ts"],"names":[],"mappings":"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"}
@@ -30,15 +30,18 @@ export const USER_HOME_MANIFEST_NAME = 'home.json';
30
30
  /** User-home graph schema version (layout.js:38). Changing the declared
31
31
  * exact graph changes the identity contract: a client must never accept a
32
32
  * prior graph and silently invent a new managed child. */
33
- export const USER_HOME_SCHEMA_VERSION = 2;
33
+ export const USER_HOME_SCHEMA_VERSION = 3;
34
+ /** Root policy file. It is portable user ground and travels with the home
35
+ * whose enrollment policy it declares. */
36
+ export const USER_IGNORE_FILE_NAME = '.amalgmignore';
37
+ /** Reserved machine-local control directory inside a user home. Live rejects
38
+ * this namespace before evaluating user ignore rules. */
39
+ export const USER_CONTROL_DIR_NAME = '.amalgm';
34
40
  /** Stable per-user product namespaces (layout.js:43-50). Their authority is
35
41
  * NOT inferred from their path: user content and exact platform-managed
36
42
  * targets are declared separately in the user-home declaration.
37
- * DELIBERATE DEVIATION: `browser` is an SDK-side ADDITION ahead of the
38
- * engine — the browser brick keeps per-user state and needs a declared
39
- * namespace to resolve it into ({@link resolveProductStateDir}). Additive
40
- * only (axiom 7): the engine's six keep their bytes and order; it does NOT
41
- * join the shipped user-home graph until the browser product declares it. */
43
+ * The new user-ground contract declares all seven roots. It does not import
44
+ * the Engine's older six-root home. */
42
45
  export const PRIMITIVE_DIRS = Object.freeze([
43
46
  'agents',
44
47
  'apps',
@@ -80,6 +83,7 @@ const USER_HOME_ROOTS = Object.freeze([
80
83
  { key: 'toolbox', relativePath: 'toolbox' },
81
84
  { key: 'workspaces', relativePath: 'workspaces' },
82
85
  { key: 'system', relativePath: 'system' },
86
+ { key: 'browser', relativePath: 'browser' },
83
87
  ]);
84
88
  // A Toolbox tool is one complete entity: its definition and actions travel
85
89
  // in the same file. These names are deliberately stable and human-readable.
@@ -93,7 +97,7 @@ const SYSTEM_TOOL_ARTIFACTS = Object.freeze([
93
97
  { key: 'amalgm-browser', toolId: 'browser', relativePath: 'toolbox/amalgm-browser.json', rootKey: 'toolbox' },
94
98
  ]);
95
99
  /**
96
- * The user-home graph the engine ships today (layout.js:52-87): the six
100
+ * The user-home graph the managed product ships: the seven
97
101
  * roots, one `<key>-root` managed node per root, the home manifest at
98
102
  * `system/home.json`, `system/defaults`, `system/policy`, and the seven
99
103
  * system tool artifacts. These CONTENTS are PRODUCT declarations, not
@@ -116,7 +120,7 @@ export const shippedUserHomeDeclaration = Object.freeze({
116
120
  });
117
121
  /**
118
122
  * The user-home manifest for a declaration (engine ensureUserHome's
119
- * `manifestContents`, layout.js:137-146): schemaVersion 2, kind
123
+ * `manifestContents`, layout.js:137-146): the current user-home schema, kind
120
124
  * `amalgm-user-home`, and the declaration's entries with each
121
125
  * `relativePath` published under the key name `path` — relative, so the
122
126
  * manifest survives a moved or renamed user folder — and every managed
@@ -192,11 +196,29 @@ const join = joinPathSegments;
192
196
  export function scopedAmalgmDir(homeDir, userScope) {
193
197
  return join(homeDir, 'users', sanitizeScopeSegment(userScope));
194
198
  }
195
- /** Per-label runtime state: `<userDir>/runtimes/<label>` (engine
196
- * scopedRuntimeDir runtime-identity.js:144-146, runtime-paths.js:81-86).
199
+ /** The tracked ignore policy at the root of one user ground. */
200
+ export function userIgnoreFile(userDir) {
201
+ return join(userDir, USER_IGNORE_FILE_NAME);
202
+ }
203
+ /** The reserved, unregistered control namespace for one user. */
204
+ export function userControlDir(userDir) {
205
+ return join(userDir, USER_CONTROL_DIR_NAME);
206
+ }
207
+ /** Machine-local state for one physical device under one user's home. */
208
+ export function userMachineDir(userDir, deviceId) {
209
+ const segment = sanitizeScopeSegment(deviceId, '');
210
+ if (!segment)
211
+ throw new Error('A device id is required for machine-local user state.');
212
+ return join(userControlDir(userDir), 'machines', segment);
213
+ }
214
+ /** Files/Live's machine-local databases and immutable content cache. */
215
+ export function liveMachineStateDir(userDir, deviceId) {
216
+ return join(userMachineDir(userDir, deviceId), 'live');
217
+ }
218
+ /** Per-label runtime state inside the reserved per-device control namespace.
197
219
  * The label must be one of the three — junk never names a state dir. */
198
- export function runtimeStateDir(userDir, label) {
199
- return join(userDir, 'runtimes', assertRuntimeLabel(label));
220
+ export function runtimeStateDir(userDir, deviceId, label) {
221
+ return join(userMachineDir(userDir, deviceId), 'runtimes', assertRuntimeLabel(label));
200
222
  }
201
223
  /** `runtime-state.json` inside a runtime state dir (runtime-paths.js:88-90). */
202
224
  export function runtimeStateFile(stateDir) {
@@ -221,7 +243,7 @@ export function computerAuthFile(dir) {
221
243
  return join(dir, 'auth.json');
222
244
  }
223
245
  /**
224
- * A primitive root under the user dir (layout.js:414-419). Only the six
246
+ * A primitive root under the user dir (layout.js:414-419). Only the seven
225
247
  * declared namespaces exist; the refusal string is the ratified text.
226
248
  */
227
249
  export function userPrimitiveRoot(userDir, kind) {
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/identity/layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/identity/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * The canonical Engine login sequence as one host-independent Core operation.
3
+ * HTTP, files, browser opening, clocks, installation, and runtime boot are
4
+ * ports. Service selection is deliberately absent from every auth request.
5
+ */
6
+ import type { ClockIsoPort, ClockMsPort } from './ports.js';
7
+ import type { InstallationPlan, ReleaseCatalogVerifierPort, SignedReleaseCatalog } from '../supervision/installation-plan.js';
8
+ type Dict = Record<string, unknown>;
9
+ export type MachineSetupStage = 'device' | 'approval' | 'registration' | 'proxy_refresh' | 'catalog' | 'installation' | 'persistence' | 'user_ground' | 'runtime' | 'ready';
10
+ export declare class MachineSetupError extends Error {
11
+ readonly stage: MachineSetupStage;
12
+ readonly code: string;
13
+ readonly recoverable: boolean;
14
+ constructor(stage: MachineSetupStage, code: string, recoverable?: boolean, options?: ErrorOptions);
15
+ }
16
+ export interface DeviceIdentity {
17
+ readonly device_id: string;
18
+ readonly created_at: string;
19
+ }
20
+ export interface StoredMachine {
21
+ readonly publicRecord: Dict;
22
+ readonly secretAuth: Dict;
23
+ readonly installation: InstallationPlan;
24
+ readonly ready: boolean;
25
+ }
26
+ export interface DeviceStorePort {
27
+ load(): Promise<DeviceIdentity | null>;
28
+ save(device: DeviceIdentity): Promise<void>;
29
+ }
30
+ /** The host must commit publicRecord and secretAuth as one rollback-safe write. */
31
+ export interface MachineStorePort {
32
+ load(): Promise<StoredMachine | null>;
33
+ save(machine: StoredMachine): Promise<void>;
34
+ markReady(): Promise<void>;
35
+ }
36
+ export interface MachineControlPlanePort {
37
+ start(body: Dict): Promise<{
38
+ readonly device_code: string;
39
+ readonly setup_code: string;
40
+ readonly verification_url: string;
41
+ readonly expires_in: number;
42
+ readonly interval: number;
43
+ }>;
44
+ poll(body: Dict): Promise<{
45
+ readonly status: 'pending';
46
+ readonly interval?: number;
47
+ } | {
48
+ readonly status: 'registered' | 'expired' | 'denied';
49
+ } | {
50
+ readonly status: 'approved';
51
+ readonly computer_registration_token: string;
52
+ }>;
53
+ redeem(body: Dict): Promise<{
54
+ readonly computer_registration_token: string;
55
+ }>;
56
+ register(registrationToken: string, body: Dict): Promise<Dict>;
57
+ refreshProxy(computerAuthToken: string, body: Dict): Promise<Dict>;
58
+ }
59
+ export interface MachineCatalogPort {
60
+ load(): Promise<SignedReleaseCatalog>;
61
+ readonly verifier: ReleaseCatalogVerifierPort;
62
+ }
63
+ export interface InstalledRelease {
64
+ readonly id: string;
65
+ }
66
+ export interface InstallerPort {
67
+ install(plan: InstallationPlan): Promise<InstalledRelease>;
68
+ rollback(installed: InstalledRelease): Promise<void>;
69
+ }
70
+ export interface RuntimeEvidence {
71
+ readonly userId: string;
72
+ readonly computerId: string;
73
+ readonly deviceId: string;
74
+ readonly services: readonly string[];
75
+ readonly tunnelsAuthenticated: boolean;
76
+ readonly proxyContext: {
77
+ readonly userId: string;
78
+ readonly computerId: string;
79
+ };
80
+ }
81
+ export interface RunningRuntime {
82
+ readonly evidence: RuntimeEvidence;
83
+ stop(): Promise<void>;
84
+ }
85
+ export interface RuntimePort {
86
+ start(machine: StoredMachine): Promise<RunningRuntime>;
87
+ }
88
+ export type UserGroundMode = 'initialized' | 'materialized' | 'current';
89
+ /** Portable evidence returned by the injected Files/Live host. Core validates
90
+ * readiness and identity only; entity and content semantics remain Live's. */
91
+ export interface UserGroundEvidence {
92
+ readonly userId: string;
93
+ readonly userEmail: string;
94
+ readonly deviceId: string;
95
+ readonly localRoot: string;
96
+ readonly cloudHead: string;
97
+ readonly mode: UserGroundMode;
98
+ readonly entityCount: number;
99
+ readonly watcherRoots: number;
100
+ readonly watching: true;
101
+ }
102
+ export interface UserGroundPort {
103
+ converge(identity: {
104
+ readonly userId: string;
105
+ readonly userEmail: string;
106
+ readonly deviceId: string;
107
+ }): Promise<UserGroundEvidence>;
108
+ }
109
+ export interface SetupPresentationPort {
110
+ /** Interactive output, not a diagnostic/log sink. */
111
+ showSetup(input: {
112
+ readonly verificationUrl: string;
113
+ readonly setupCode: string;
114
+ }): Promise<void> | void;
115
+ }
116
+ export interface SetupDiagnosticsPort {
117
+ write(event: {
118
+ readonly stage: MachineSetupStage;
119
+ readonly status: 'started' | 'completed' | 'failed';
120
+ readonly code?: string;
121
+ }): void;
122
+ }
123
+ export interface MachineSetupPorts extends ClockIsoPort, ClockMsPort {
124
+ readonly deviceStore: DeviceStorePort;
125
+ readonly machineStore: MachineStorePort;
126
+ readonly controlPlane: MachineControlPlanePort;
127
+ readonly catalog: MachineCatalogPort;
128
+ readonly installer: InstallerPort;
129
+ readonly userGround: UserGroundPort;
130
+ readonly runtime: RuntimePort;
131
+ readonly presentation: SetupPresentationPort;
132
+ readonly diagnostics: SetupDiagnosticsPort;
133
+ randomUuid(): string;
134
+ sleep(ms: number): Promise<void>;
135
+ }
136
+ export interface JoinMachineInput {
137
+ readonly appUrl: string;
138
+ readonly name: string;
139
+ readonly platform: string;
140
+ readonly appVersion: string;
141
+ readonly runtimeLabel: string;
142
+ readonly branch: string;
143
+ readonly setupCode?: string;
144
+ readonly services?: readonly string[];
145
+ }
146
+ export interface ReadyMachine {
147
+ readonly status: 'ready';
148
+ readonly deviceId: string;
149
+ readonly computerId: string;
150
+ readonly userId: string;
151
+ readonly installation: InstallationPlan;
152
+ readonly userGround: UserGroundEvidence;
153
+ readonly runtime: RunningRuntime;
154
+ }
155
+ /** Exact canonical body shared by start, poll, redeem, and register. */
156
+ export declare function computerSetupBody(input: JoinMachineInput, deviceId: string): Dict;
157
+ /** Browser approval and --setup-code converge before this function registers. */
158
+ export declare function joinMachine(input: JoinMachineInput, ports: MachineSetupPorts): Promise<ReadyMachine>;
159
+ /** A later process starts from disk and refreshes copy-on-success only. */
160
+ export declare function resumeMachine(ports: MachineSetupPorts): Promise<ReadyMachine>;
161
+ export {};
162
+ //# sourceMappingURL=machine-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-setup.d.ts","sourceRoot":"","sources":["../../src/identity/machine-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,351 @@
1
+ /**
2
+ * The canonical Engine login sequence as one host-independent Core operation.
3
+ * HTTP, files, browser opening, clocks, installation, and runtime boot are
4
+ * ports. Service selection is deliberately absent from every auth request.
5
+ */
6
+ import { authFromRecord, mergeRecordAuth, proxyTokenExpiresSoon, publicComputerRecord, refreshedProxyAuth, } from './auth-records.js';
7
+ import { assertSetupCode, isUsableDeviceId, npmDeviceId } from './ids.js';
8
+ import { resolveVerifiedInstallationPlan } from '../supervision/installation-plan.js';
9
+ const asDict = (value) => (value && typeof value === 'object' && !Array.isArray(value) ? value : null);
10
+ const stringValue = (value) => (typeof value === 'string' ? value.trim() : '');
11
+ export class MachineSetupError extends Error {
12
+ stage;
13
+ code;
14
+ recoverable;
15
+ constructor(stage, code, recoverable = false, options) {
16
+ super(`Machine setup failed during ${stage}: ${code}`, options);
17
+ this.name = 'MachineSetupError';
18
+ this.stage = stage;
19
+ this.code = code;
20
+ this.recoverable = recoverable;
21
+ }
22
+ }
23
+ function diagnostic(ports, stage, status, code) {
24
+ ports.diagnostics.write({ stage, status, ...(code ? { code } : {}) });
25
+ }
26
+ function setupFailure(stage, error) {
27
+ if (error instanceof MachineSetupError)
28
+ return error;
29
+ const code = stringValue(asDict(error)?.['code']) || 'operation_failed';
30
+ const recoverable = stage === 'approval' || stage === 'proxy_refresh' || stage === 'user_ground';
31
+ return new MachineSetupError(stage, code, recoverable, error instanceof Error ? { cause: error } : undefined);
32
+ }
33
+ async function stableDevice(ports) {
34
+ const existing = await ports.deviceStore.load();
35
+ if (existing && isUsableDeviceId(existing.device_id))
36
+ return existing;
37
+ const device = { device_id: npmDeviceId(ports.randomUuid()), created_at: ports.nowIso() };
38
+ await ports.deviceStore.save(device);
39
+ return device;
40
+ }
41
+ /** Exact canonical body shared by start, poll, redeem, and register. */
42
+ export function computerSetupBody(input, deviceId) {
43
+ return {
44
+ device_id: deviceId,
45
+ name: input.name,
46
+ platform: input.platform,
47
+ app_version: input.appVersion,
48
+ runtime_label: input.runtimeLabel,
49
+ branch: input.branch,
50
+ };
51
+ }
52
+ async function registrationToken(input, deviceId, ports) {
53
+ const body = computerSetupBody(input, deviceId);
54
+ if (input.setupCode !== undefined) {
55
+ const redeemed = await ports.controlPlane.redeem({
56
+ ...body,
57
+ setup_code: assertSetupCode(input.setupCode),
58
+ });
59
+ const token = stringValue(redeemed.computer_registration_token);
60
+ if (!token)
61
+ throw new MachineSetupError('approval', 'missing_registration_token');
62
+ return token;
63
+ }
64
+ const started = await ports.controlPlane.start(body);
65
+ if (!stringValue(started.device_code)
66
+ || !stringValue(started.setup_code)
67
+ || !stringValue(started.verification_url)) {
68
+ throw new MachineSetupError('approval', 'invalid_start_response');
69
+ }
70
+ await ports.presentation.showSetup({
71
+ verificationUrl: started.verification_url,
72
+ setupCode: started.setup_code,
73
+ });
74
+ const deadline = ports.nowMs() + Math.max(60, Number(started.expires_in || 180)) * 1000;
75
+ let interval = Math.max(1, Number(started.interval || 2)) * 1000;
76
+ while (ports.nowMs() < deadline) {
77
+ const polled = await ports.controlPlane.poll({ ...body, device_code: started.device_code });
78
+ if (polled.status === 'approved') {
79
+ const token = stringValue(polled.computer_registration_token);
80
+ if (!token)
81
+ throw new MachineSetupError('approval', 'missing_registration_token');
82
+ return token;
83
+ }
84
+ if (polled.status !== 'pending') {
85
+ throw new MachineSetupError('approval', `setup_${polled.status}`, polled.status === 'expired');
86
+ }
87
+ interval = Math.max(1, Number(polled.interval || interval / 1000)) * 1000;
88
+ await ports.sleep(interval);
89
+ }
90
+ throw new MachineSetupError('approval', 'setup_timeout', true);
91
+ }
92
+ function registrationRecord(response, input, deviceId, nowIso) {
93
+ const registered = asDict(response);
94
+ if (!registered)
95
+ throw new MachineSetupError('registration', 'invalid_registration_response');
96
+ if (stringValue(registered['device_id']) !== deviceId) {
97
+ throw new MachineSetupError('registration', 'registered_device_mismatch');
98
+ }
99
+ for (const key of [
100
+ 'computer_id', 'user_id', 'user_email', 'tunnel_token', 'tunnel_url', 'chat_tunnel_url',
101
+ 'computer_auth_token',
102
+ ]) {
103
+ if (!stringValue(registered[key])) {
104
+ throw new MachineSetupError('registration', `missing_${key}`);
105
+ }
106
+ }
107
+ return {
108
+ ...registered,
109
+ app_url: input.appUrl,
110
+ name: input.name,
111
+ platform: input.platform,
112
+ app_version: input.appVersion,
113
+ runtime_label: input.runtimeLabel,
114
+ branch: input.branch,
115
+ registered_at: nowIso,
116
+ };
117
+ }
118
+ function userGroundIdentity(record) {
119
+ const identity = {
120
+ userId: stringValue(record['user_id']),
121
+ userEmail: stringValue(record['user_email']).toLowerCase(),
122
+ deviceId: stringValue(record['device_id']),
123
+ };
124
+ if (!identity.userId)
125
+ throw new MachineSetupError('user_ground', 'missing_user_id');
126
+ if (!identity.userEmail)
127
+ throw new MachineSetupError('user_ground', 'missing_user_email');
128
+ if (!identity.deviceId)
129
+ throw new MachineSetupError('user_ground', 'missing_device_id');
130
+ return identity;
131
+ }
132
+ function assertUserGround(identity, evidence) {
133
+ if (evidence.userId !== identity.userId) {
134
+ throw new MachineSetupError('user_ground', 'ground_user_mismatch');
135
+ }
136
+ if (evidence.userEmail.toLowerCase() !== identity.userEmail) {
137
+ throw new MachineSetupError('user_ground', 'ground_email_mismatch');
138
+ }
139
+ if (evidence.deviceId !== identity.deviceId) {
140
+ throw new MachineSetupError('user_ground', 'ground_device_mismatch');
141
+ }
142
+ if (!stringValue(evidence.localRoot)) {
143
+ throw new MachineSetupError('user_ground', 'ground_root_missing');
144
+ }
145
+ if (!/^[0-9a-f]{64}$/.test(evidence.cloudHead)) {
146
+ throw new MachineSetupError('user_ground', 'ground_cloud_head_invalid');
147
+ }
148
+ if (!['initialized', 'materialized', 'current'].includes(evidence.mode)) {
149
+ throw new MachineSetupError('user_ground', 'ground_mode_invalid');
150
+ }
151
+ if (!Number.isSafeInteger(evidence.entityCount) || evidence.entityCount < 1) {
152
+ throw new MachineSetupError('user_ground', 'ground_entities_missing');
153
+ }
154
+ if (evidence.watching !== true || !Number.isSafeInteger(evidence.watcherRoots)
155
+ || evidence.watcherRoots < 1) {
156
+ throw new MachineSetupError('user_ground', 'ground_watchers_missing');
157
+ }
158
+ }
159
+ async function convergeUserGround(record, ports) {
160
+ const identity = userGroundIdentity(record);
161
+ const evidence = await ports.userGround.converge(identity);
162
+ assertUserGround(identity, evidence);
163
+ return evidence;
164
+ }
165
+ function authMachineToken(auth) {
166
+ return stringValue(asDict(asDict(auth)?.['machine'])?.['token']);
167
+ }
168
+ function authProxyToken(auth) {
169
+ return stringValue(asDict(asDict(auth)?.['proxy'])?.['token']);
170
+ }
171
+ async function ensureFreshProxy(record, auth, ports) {
172
+ if (authProxyToken(auth) && !proxyTokenExpiresSoon(auth, ports))
173
+ return auth;
174
+ const computerAuthToken = authMachineToken(auth);
175
+ if (!computerAuthToken) {
176
+ throw new MachineSetupError('proxy_refresh', 'missing_computer_auth_token', true);
177
+ }
178
+ const refreshed = await ports.controlPlane.refreshProxy(computerAuthToken, {
179
+ computer_id: stringValue(record['computer_id']),
180
+ device_id: stringValue(record['device_id']),
181
+ });
182
+ const next = refreshedProxyAuth({ record, auth, refreshed }, ports);
183
+ if (!authProxyToken(next) || proxyTokenExpiresSoon(next, ports)) {
184
+ throw new MachineSetupError('proxy_refresh', 'proxy_token_not_fresh', true);
185
+ }
186
+ return next;
187
+ }
188
+ function hydrated(machine) {
189
+ return mergeRecordAuth(machine.publicRecord, machine.secretAuth) || {};
190
+ }
191
+ function assertRuntime(machine, evidence) {
192
+ const record = hydrated(machine);
193
+ const userId = stringValue(record['user_id']);
194
+ const computerId = stringValue(record['computer_id']);
195
+ const deviceId = stringValue(record['device_id']);
196
+ if (evidence.userId !== userId)
197
+ throw new MachineSetupError('runtime', 'canonical_user_mismatch');
198
+ if (evidence.computerId !== computerId)
199
+ throw new MachineSetupError('runtime', 'computer_context_mismatch');
200
+ if (evidence.deviceId !== deviceId)
201
+ throw new MachineSetupError('runtime', 'device_context_mismatch');
202
+ if (!evidence.tunnelsAuthenticated)
203
+ throw new MachineSetupError('runtime', 'tunnels_not_authenticated');
204
+ if (evidence.proxyContext.userId !== userId || evidence.proxyContext.computerId !== computerId) {
205
+ throw new MachineSetupError('runtime', 'proxy_context_mismatch');
206
+ }
207
+ if (JSON.stringify(evidence.services) !== JSON.stringify(machine.installation.services)) {
208
+ throw new MachineSetupError('runtime', 'installation_not_healthy');
209
+ }
210
+ }
211
+ async function startVerified(machine, ports) {
212
+ const runtime = await ports.runtime.start(machine);
213
+ try {
214
+ assertRuntime(machine, runtime.evidence);
215
+ return runtime;
216
+ }
217
+ catch (error) {
218
+ await runtime.stop().catch(() => undefined);
219
+ throw error;
220
+ }
221
+ }
222
+ /** Browser approval and --setup-code converge before this function registers. */
223
+ export async function joinMachine(input, ports) {
224
+ let stage = 'device';
225
+ let installed = null;
226
+ let runtime = null;
227
+ try {
228
+ diagnostic(ports, stage, 'started');
229
+ const device = await stableDevice(ports);
230
+ diagnostic(ports, stage, 'completed');
231
+ stage = 'approval';
232
+ diagnostic(ports, stage, 'started');
233
+ const token = await registrationToken(input, device.device_id, ports);
234
+ diagnostic(ports, stage, 'completed');
235
+ stage = 'registration';
236
+ diagnostic(ports, stage, 'started');
237
+ const registered = await ports.controlPlane.register(token, computerSetupBody(input, device.device_id));
238
+ const record = registrationRecord(registered, input, device.device_id, ports.nowIso());
239
+ diagnostic(ports, stage, 'completed');
240
+ stage = 'proxy_refresh';
241
+ diagnostic(ports, stage, 'started');
242
+ const auth = await ensureFreshProxy(record, authFromRecord(record, null, ports), ports);
243
+ diagnostic(ports, stage, 'completed');
244
+ stage = 'catalog';
245
+ diagnostic(ports, stage, 'started');
246
+ const catalog = await ports.catalog.load();
247
+ const installation = resolveVerifiedInstallationPlan(catalog, input.services, ports.catalog.verifier);
248
+ diagnostic(ports, stage, 'completed');
249
+ stage = 'installation';
250
+ diagnostic(ports, stage, 'started');
251
+ installed = await ports.installer.install(installation);
252
+ diagnostic(ports, stage, 'completed');
253
+ const stored = {
254
+ publicRecord: publicComputerRecord(record),
255
+ secretAuth: auth,
256
+ installation,
257
+ ready: false,
258
+ };
259
+ stage = 'persistence';
260
+ diagnostic(ports, stage, 'started');
261
+ await ports.machineStore.save(stored);
262
+ diagnostic(ports, stage, 'completed');
263
+ stage = 'user_ground';
264
+ diagnostic(ports, stage, 'started');
265
+ const userGround = await convergeUserGround(record, ports);
266
+ diagnostic(ports, stage, 'completed');
267
+ stage = 'runtime';
268
+ diagnostic(ports, stage, 'started');
269
+ const firstBoot = await ports.machineStore.load();
270
+ if (!firstBoot)
271
+ throw new MachineSetupError(stage, 'persisted_state_missing');
272
+ runtime = await startVerified(firstBoot, ports);
273
+ await runtime.stop();
274
+ runtime = null;
275
+ const restartBoot = await ports.machineStore.load();
276
+ if (!restartBoot)
277
+ throw new MachineSetupError(stage, 'restart_state_missing');
278
+ runtime = await startVerified(restartBoot, ports);
279
+ diagnostic(ports, stage, 'completed');
280
+ stage = 'ready';
281
+ diagnostic(ports, stage, 'started');
282
+ await ports.machineStore.markReady();
283
+ diagnostic(ports, stage, 'completed');
284
+ return {
285
+ status: 'ready',
286
+ deviceId: device.device_id,
287
+ computerId: stringValue(record['computer_id']),
288
+ userId: stringValue(record['user_id']),
289
+ installation,
290
+ userGround,
291
+ runtime,
292
+ };
293
+ }
294
+ catch (error) {
295
+ if (runtime)
296
+ await runtime.stop().catch(() => undefined);
297
+ if (installed)
298
+ await ports.installer.rollback(installed).catch(() => undefined);
299
+ const failure = setupFailure(stage, error);
300
+ diagnostic(ports, failure.stage, 'failed', failure.code);
301
+ throw failure;
302
+ }
303
+ }
304
+ /** A later process starts from disk and refreshes copy-on-success only. */
305
+ export async function resumeMachine(ports) {
306
+ let stage = 'persistence';
307
+ let runtime = null;
308
+ try {
309
+ const device = await stableDevice(ports);
310
+ const stored = await ports.machineStore.load();
311
+ if (!stored?.ready)
312
+ throw new MachineSetupError(stage, 'no_ready_machine', true);
313
+ const record = hydrated(stored);
314
+ if (stringValue(record['device_id']) !== device.device_id) {
315
+ throw new MachineSetupError(stage, 'stored_device_mismatch');
316
+ }
317
+ stage = 'proxy_refresh';
318
+ const auth = await ensureFreshProxy(record, stored.secretAuth, ports);
319
+ const current = auth === stored.secretAuth ? stored : { ...stored, secretAuth: auth };
320
+ if (current !== stored) {
321
+ stage = 'persistence';
322
+ await ports.machineStore.save(current);
323
+ }
324
+ stage = 'user_ground';
325
+ diagnostic(ports, stage, 'started');
326
+ const userGround = await convergeUserGround(record, ports);
327
+ diagnostic(ports, stage, 'completed');
328
+ stage = 'runtime';
329
+ const persisted = await ports.machineStore.load();
330
+ if (!persisted)
331
+ throw new MachineSetupError(stage, 'restart_state_missing');
332
+ runtime = await startVerified(persisted, ports);
333
+ return {
334
+ status: 'ready',
335
+ deviceId: device.device_id,
336
+ computerId: stringValue(record['computer_id']),
337
+ userId: stringValue(record['user_id']),
338
+ installation: persisted.installation,
339
+ userGround,
340
+ runtime,
341
+ };
342
+ }
343
+ catch (error) {
344
+ if (runtime)
345
+ await runtime.stop().catch(() => undefined);
346
+ const failure = setupFailure(stage, error);
347
+ diagnostic(ports, failure.stage, 'failed', failure.code);
348
+ throw failure;
349
+ }
350
+ }
351
+ //# sourceMappingURL=machine-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-setup.js","sourceRoot":"","sources":["../../src/identity/machine-setup.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ export interface ProductStateDirInput {
25
25
  readonly primitive: string;
26
26
  /** An env-shaped bag of strings. The host passes process.env; tests pass literals. */
27
27
  readonly env: EnvLike;
28
- /** The amalgm root (the engine's `~/.amalgm`), resolved by the host. */
28
+ /** The visible `~/amalgm` root, resolved by the host. */
29
29
  readonly homedir: string;
30
30
  /** The user scope; absent falls to the sanitizer's `local`, as everywhere. */
31
31
  readonly scope?: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"product-state.d.ts","sourceRoot":"","sources":["../../src/identity/product-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAU7D;AAED,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sFAAsF;IACtF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,sFAAsF;IACtF,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAU1E"}
1
+ {"version":3,"file":"product-state.d.ts","sourceRoot":"","sources":["../../src/identity/product-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAU7D;AAED,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sFAAsF;IACtF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,sFAAsF;IACtF,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,yDAAyD;IACzD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAU1E"}
@@ -14,4 +14,5 @@ export { APP_HEALTH_POLICY, APP_ID_BODY_KEYS, APP_ID_REQUIRED_ERROR, APP_ID_REQU
14
14
  export { APP_RESTART_POLICY, appExitDecision, explicitStartReset, recentCrashes, restartDelayMs, type AppDesiredState, type AppExitContext, type AppExitDecision, type AppStatus, } from './app-restart.js';
15
15
  export { AUTO_UPDATE_ENV_OVERRIDES, AUTO_UPDATE_POLICY, AUTO_UPDATE_STATUSES, NOT_SERVICE_MANAGED_REASON, NPM_UPDATE_CACHE_DIRNAME, UPDATE_TARGET_MISMATCH, autoUpdateIdleBlockedReason, autoUpdateSupported, comparePrerelease, compareVersions, distTagCheckFailedMessage, envDisablesAutoUpdate, envFlag, globalPrefixForPackageRoot, installFailedMessage, noVersionMessage, npmEnv, npmFailureDetail, npmInstallArgs, npmInstallTag, numberFromEnvValue, parseSemver, resolveAutoUpdateTimings, restartSuppressedDetail, shouldAutoUpdate, updateTargetMismatchError, type AutoUpdateStatus, type RuntimeIdleStatus, type Semver, type UpdateTargetMismatchError, } from './update.js';
16
16
  export { PS_LINE_PATTERN, RUNTIME_HEALTH_PATH, RUNTIME_INSTANCE_ARG_PATTERN, SUPERVISOR_COMMAND_SUFFIX, buildLaunchdPlist, buildSystemdUnit, buildWindowsStartupScript, commandLooksLikeAnySupervisor, commandLooksLikeRuntimeService, commandLooksLikeSupervisor, commandRuntimeInstanceId, decideOwnership, deferToExistingInstall, envMatchesAmalgmDir, launchdPlistPath, lockOwnedByAnother, normalizeMode, parsePort, parsePsLine, pathLooksLikeDesktopBundle, plistEscape, releaseAllowed, runtimeInstanceArg, runtimeLaunchServices, runtimePortsFromState, runtimePortsState, runtimeServiceMarkers, runtimeServiceSuffixes, serviceLabel, serviceLabelScope, serviceStateCanOwnRuntime, shellQuote, shippedRuntimeServices, stateMatchesRequest, systemdQuote, systemdUnavailableOutput, systemdUnitPath, vbsString, windowsStartupScriptPath, type OwnershipDecision, type ProcessIdentity, type RuntimeOwnerRecord, type RuntimeStatePorts, type ServiceDeclaration, type ServiceMode, type ServiceState, } from './service-registration.js';
17
+ export * from './installation-plan.js';
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/supervision/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EACzB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EACzB,qBAAqB,EACrB,OAAO,EACP,0BAA0B,EAC1B,oBAAoB,EACpB,gBAAgB,EAChB,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,EACzB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,KAAK,yBAAyB,GAC/B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,EACxB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,WAAW,EACX,0BAA0B,EAC1B,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,yBAAyB,EACzB,UAAU,EACV,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,wBAAwB,EACxB,eAAe,EACf,SAAS,EACT,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/supervision/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EACzB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EACzB,qBAAqB,EACrB,OAAO,EACP,0BAA0B,EAC1B,oBAAoB,EACpB,gBAAgB,EAChB,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,EACzB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,KAAK,yBAAyB,GAC/B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,EACxB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,WAAW,EACX,0BAA0B,EAC1B,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,yBAAyB,EACzB,UAAU,EACV,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,wBAAwB,EACxB,eAAe,EACf,SAAS,EACT,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,2BAA2B,CAAC;AAEnC,cAAc,wBAAwB,CAAC"}
@@ -14,4 +14,5 @@ export { APP_HEALTH_POLICY, APP_ID_BODY_KEYS, APP_ID_REQUIRED_ERROR, APP_ID_REQU
14
14
  export { APP_RESTART_POLICY, appExitDecision, explicitStartReset, recentCrashes, restartDelayMs, } from './app-restart.js';
15
15
  export { AUTO_UPDATE_ENV_OVERRIDES, AUTO_UPDATE_POLICY, AUTO_UPDATE_STATUSES, NOT_SERVICE_MANAGED_REASON, NPM_UPDATE_CACHE_DIRNAME, UPDATE_TARGET_MISMATCH, autoUpdateIdleBlockedReason, autoUpdateSupported, comparePrerelease, compareVersions, distTagCheckFailedMessage, envDisablesAutoUpdate, envFlag, globalPrefixForPackageRoot, installFailedMessage, noVersionMessage, npmEnv, npmFailureDetail, npmInstallArgs, npmInstallTag, numberFromEnvValue, parseSemver, resolveAutoUpdateTimings, restartSuppressedDetail, shouldAutoUpdate, updateTargetMismatchError, } from './update.js';
16
16
  export { PS_LINE_PATTERN, RUNTIME_HEALTH_PATH, RUNTIME_INSTANCE_ARG_PATTERN, SUPERVISOR_COMMAND_SUFFIX, buildLaunchdPlist, buildSystemdUnit, buildWindowsStartupScript, commandLooksLikeAnySupervisor, commandLooksLikeRuntimeService, commandLooksLikeSupervisor, commandRuntimeInstanceId, decideOwnership, deferToExistingInstall, envMatchesAmalgmDir, launchdPlistPath, lockOwnedByAnother, normalizeMode, parsePort, parsePsLine, pathLooksLikeDesktopBundle, plistEscape, releaseAllowed, runtimeInstanceArg, runtimeLaunchServices, runtimePortsFromState, runtimePortsState, runtimeServiceMarkers, runtimeServiceSuffixes, serviceLabel, serviceLabelScope, serviceStateCanOwnRuntime, shellQuote, shippedRuntimeServices, stateMatchesRequest, systemdQuote, systemdUnavailableOutput, systemdUnitPath, vbsString, windowsStartupScriptPath, } from './service-registration.js';
17
+ export * from './installation-plan.js';
17
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/supervision/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,GAQnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EACzB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,mBAAmB,GAOpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,cAAc,GAKf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EACzB,qBAAqB,EACrB,OAAO,EACP,0BAA0B,EAC1B,oBAAoB,EACpB,gBAAgB,EAChB,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,GAK1B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,EACxB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,WAAW,EACX,0BAA0B,EAC1B,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,yBAAyB,EACzB,UAAU,EACV,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,wBAAwB,EACxB,eAAe,EACf,SAAS,EACT,wBAAwB,GAQzB,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/supervision/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,GAQnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EACzB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,mBAAmB,GAOpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,cAAc,GAKf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EACzB,qBAAqB,EACrB,OAAO,EACP,0BAA0B,EAC1B,oBAAoB,EACpB,gBAAgB,EAChB,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,GAK1B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,EACxB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,WAAW,EACX,0BAA0B,EAC1B,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,yBAAyB,EACzB,UAAU,EACV,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,wBAAwB,EACxB,eAAe,EACf,SAAS,EACT,wBAAwB,GAQzB,MAAM,2BAA2B,CAAC;AAEnC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Installation is decided after machine trust. The release catalog is the
3
+ * authority for "all" and for dependency closure; auth credentials never are.
4
+ */
5
+ export interface ReleaseService {
6
+ readonly id: string;
7
+ readonly dependencies: readonly string[];
8
+ }
9
+ export interface SignedReleaseCatalog {
10
+ readonly releaseId: string;
11
+ readonly keyId: string;
12
+ readonly services: readonly ReleaseService[];
13
+ readonly signature: string;
14
+ }
15
+ export interface ReleaseCatalogVerifierPort {
16
+ verify(payload: string, signature: string, keyId: string): boolean;
17
+ }
18
+ export interface InstallationPlan {
19
+ readonly releaseId: string;
20
+ readonly selection: 'all' | readonly string[];
21
+ readonly services: readonly string[];
22
+ }
23
+ /** Stable bytes signed by the release authority; the signature omits itself. */
24
+ export declare function releaseCatalogPayload(catalog: SignedReleaseCatalog): string;
25
+ export declare function assertVerifiedReleaseCatalog(catalog: SignedReleaseCatalog, verifier: ReleaseCatalogVerifierPort): void;
26
+ /**
27
+ * Omitted selector = every service in the signed release. Explicit selector =
28
+ * Core + Files, the named services, and their dependency closure. Dependencies
29
+ * always precede their consumers and each service appears once.
30
+ */
31
+ export declare function resolveInstallationPlan(catalog: SignedReleaseCatalog, requestedServices?: readonly string[]): InstallationPlan;
32
+ export declare function resolveVerifiedInstallationPlan(catalog: SignedReleaseCatalog, requestedServices: readonly string[] | undefined, verifier: ReleaseCatalogVerifierPort): InstallationPlan;
33
+ //# sourceMappingURL=installation-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installation-plan.d.ts","sourceRoot":"","sources":["../../src/supervision/installation-plan.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACpE;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAmCD,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAO3E;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,0BAA0B,GACnC,IAAI,CAKN;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,oBAAoB,EAC7B,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,GACpC,gBAAgB,CAkClB;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,oBAAoB,EAC7B,iBAAiB,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAChD,QAAQ,EAAE,0BAA0B,GACnC,gBAAgB,CAGlB"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Installation is decided after machine trust. The release catalog is the
3
+ * authority for "all" and for dependency closure; auth credentials never are.
4
+ */
5
+ function normalizedId(value, label) {
6
+ const id = typeof value === 'string' ? value.trim().toLowerCase() : '';
7
+ if (!/^[a-z][a-z0-9-]*$/.test(id))
8
+ throw new Error(`Invalid ${label} id.`);
9
+ return id;
10
+ }
11
+ function indexedServices(catalog) {
12
+ if (!String(catalog?.releaseId || '').trim())
13
+ throw new Error('Release catalog has no release id.');
14
+ if (!Array.isArray(catalog.services) || catalog.services.length === 0) {
15
+ throw new Error('Release catalog has no services.');
16
+ }
17
+ const services = new Map();
18
+ for (const service of catalog.services) {
19
+ const id = normalizedId(service?.id, 'service');
20
+ if (services.has(id))
21
+ throw new Error(`Release catalog repeats service "${id}".`);
22
+ const dependencies = Array.isArray(service.dependencies)
23
+ ? service.dependencies.map((dependency) => normalizedId(dependency, 'dependency'))
24
+ : [];
25
+ services.set(id, dependencies);
26
+ }
27
+ if (!services.has('core') || !services.has('files')) {
28
+ throw new Error('Release catalog must contain the Core + Files baseline.');
29
+ }
30
+ for (const [id, dependencies] of services) {
31
+ for (const dependency of dependencies) {
32
+ if (!services.has(dependency)) {
33
+ throw new Error(`Service "${id}" depends on unknown service "${dependency}".`);
34
+ }
35
+ }
36
+ }
37
+ return services;
38
+ }
39
+ /** Stable bytes signed by the release authority; the signature omits itself. */
40
+ export function releaseCatalogPayload(catalog) {
41
+ const services = indexedServices(catalog);
42
+ return JSON.stringify({
43
+ releaseId: String(catalog.releaseId).trim(),
44
+ keyId: String(catalog.keyId || '').trim(),
45
+ services: Array.from(services, ([id, dependencies]) => ({ id, dependencies: [...dependencies] })),
46
+ });
47
+ }
48
+ export function assertVerifiedReleaseCatalog(catalog, verifier) {
49
+ const payload = releaseCatalogPayload(catalog);
50
+ if (!catalog.signature || !verifier.verify(payload, catalog.signature, catalog.keyId)) {
51
+ throw new Error('Release catalog signature is invalid.');
52
+ }
53
+ }
54
+ /**
55
+ * Omitted selector = every service in the signed release. Explicit selector =
56
+ * Core + Files, the named services, and their dependency closure. Dependencies
57
+ * always precede their consumers and each service appears once.
58
+ */
59
+ export function resolveInstallationPlan(catalog, requestedServices) {
60
+ const services = indexedServices(catalog);
61
+ const explicit = requestedServices !== undefined;
62
+ if (explicit && requestedServices.length === 0) {
63
+ throw new Error('An explicit service selection cannot be empty.');
64
+ }
65
+ const requested = explicit
66
+ ? requestedServices.map((service) => normalizedId(service, 'requested service'))
67
+ : [...services.keys()];
68
+ for (const service of requested) {
69
+ if (!services.has(service))
70
+ throw new Error(`Unknown requested service "${service}".`);
71
+ }
72
+ const ordered = [];
73
+ const visiting = new Set();
74
+ const visited = new Set();
75
+ const visit = (id) => {
76
+ if (visited.has(id))
77
+ return;
78
+ if (visiting.has(id))
79
+ throw new Error(`Release catalog contains a dependency cycle at "${id}".`);
80
+ visiting.add(id);
81
+ for (const dependency of services.get(id) || [])
82
+ visit(dependency);
83
+ visiting.delete(id);
84
+ visited.add(id);
85
+ ordered.push(id);
86
+ };
87
+ visit('core');
88
+ visit('files');
89
+ for (const service of requested)
90
+ visit(service);
91
+ return {
92
+ releaseId: String(catalog.releaseId).trim(),
93
+ selection: explicit ? [...new Set(requested)] : 'all',
94
+ services: ordered,
95
+ };
96
+ }
97
+ export function resolveVerifiedInstallationPlan(catalog, requestedServices, verifier) {
98
+ assertVerifiedReleaseCatalog(catalog, verifier);
99
+ return resolveInstallationPlan(catalog, requestedServices);
100
+ }
101
+ //# sourceMappingURL=installation-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installation-plan.js","sourceRoot":"","sources":["../../src/supervision/installation-plan.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  * under its own '/pty' handling).
10
10
  *
11
11
  * Counts, pinned by tests: 3 gateway prefixes, 5 gateway exact paths,
12
- * 3 port-monitor prefixes, 7 chat prefixes, 24 active MCP prefixes.
12
+ * 3 port-monitor prefixes, 7 chat prefixes, 23 active MCP prefixes.
13
13
  *
14
14
  * This is product configuration riding in the kernel repo for the
15
15
  * cutover: the table SHAPE is core's; these CONTENTS belong to the
@@ -22,8 +22,9 @@ import type { RouteTable } from './routing.js';
22
22
  * Present in the current Engine gateway, absent from the decomposed target:
23
23
  * `/tasks` is the superseded SQLite scheduler facade; `/mcp-connections` is
24
24
  * the superseded second registry now represented by Tools connection records
25
- * plus credential references resolved by Core's machine-local vault.
25
+ * plus credential references resolved by Core's machine-local vault; `/github`
26
+ * is superseded by the next cloud integration and credential collection model.
26
27
  */
27
- export declare const retiredEngineRoutePrefixes: readonly ["/tasks", "/mcp-connections"];
28
+ export declare const retiredEngineRoutePrefixes: readonly ["/tasks", "/mcp-connections", "/github"];
28
29
  export declare const shippedRouteTable: RouteTable;
29
30
  //# sourceMappingURL=shipped-routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shipped-routes.d.ts","sourceRoot":"","sources":["../../src/transport/shipped-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,yCAA0C,CAAC;AAElF,eAAO,MAAM,iBAAiB,EAAE,UA+B/B,CAAC"}
1
+ {"version":3,"file":"shipped-routes.d.ts","sourceRoot":"","sources":["../../src/transport/shipped-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,oDAAqD,CAAC;AAE7F,eAAO,MAAM,iBAAiB,EAAE,UA8B/B,CAAC"}
@@ -9,7 +9,7 @@
9
9
  * under its own '/pty' handling).
10
10
  *
11
11
  * Counts, pinned by tests: 3 gateway prefixes, 5 gateway exact paths,
12
- * 3 port-monitor prefixes, 7 chat prefixes, 24 active MCP prefixes.
12
+ * 3 port-monitor prefixes, 7 chat prefixes, 23 active MCP prefixes.
13
13
  *
14
14
  * This is product configuration riding in the kernel repo for the
15
15
  * cutover: the table SHAPE is core's; these CONTENTS belong to the
@@ -21,9 +21,10 @@
21
21
  * Present in the current Engine gateway, absent from the decomposed target:
22
22
  * `/tasks` is the superseded SQLite scheduler facade; `/mcp-connections` is
23
23
  * the superseded second registry now represented by Tools connection records
24
- * plus credential references resolved by Core's machine-local vault.
24
+ * plus credential references resolved by Core's machine-local vault; `/github`
25
+ * is superseded by the next cloud integration and credential collection model.
25
26
  */
26
- export const retiredEngineRoutePrefixes = ['/tasks', '/mcp-connections'];
27
+ export const retiredEngineRoutePrefixes = ['/tasks', '/mcp-connections', '/github'];
27
28
  export const shippedRouteTable = {
28
29
  gatewayPrefixes: ['/__amalgm', '/diagnostics', '/pty'],
29
30
  gatewayExactPaths: ['/', '/healthz', '/runtime-state', '/pty/session', '/pty/resize'],
@@ -36,7 +37,6 @@ export const shippedRouteTable = {
36
37
  '/event-triggers',
37
38
  '/workspace',
38
39
  '/project-context',
39
- '/github',
40
40
  '/fs',
41
41
  '/toolbox',
42
42
  '/state',
@@ -1 +1 @@
1
- {"version":3,"file":"shipped-routes.js","sourceRoot":"","sources":["../../src/transport/shipped-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAU,CAAC;AAElF,MAAM,CAAC,MAAM,iBAAiB,GAAe;IAC3C,eAAe,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC;IACtD,iBAAiB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,CAAC;IACrF,mBAAmB,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,eAAe,CAAC;IAC9D,YAAY,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC;IAC7F,WAAW,EAAE;QACX,MAAM;QACN,SAAS;QACT,cAAc;QACd,iBAAiB;QACjB,YAAY;QACZ,kBAAkB;QAClB,SAAS;QACT,KAAK;QACL,UAAU;QACV,QAAQ;QACR,QAAQ;QACR,cAAc;QACd,gBAAgB;QAChB,QAAQ;QACR,QAAQ;QACR,gBAAgB;QAChB,OAAO;QACP,YAAY;QACZ,SAAS;QACT,eAAe;QACf,gBAAgB;QAChB,SAAS;QACT,mBAAmB;QACnB,UAAU;KACX;CACF,CAAC"}
1
+ {"version":3,"file":"shipped-routes.js","sourceRoot":"","sources":["../../src/transport/shipped-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,SAAS,CAAU,CAAC;AAE7F,MAAM,CAAC,MAAM,iBAAiB,GAAe;IAC3C,eAAe,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC;IACtD,iBAAiB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,CAAC;IACrF,mBAAmB,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,eAAe,CAAC;IAC9D,YAAY,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC;IAC7F,WAAW,EAAE;QACX,MAAM;QACN,SAAS;QACT,cAAc;QACd,iBAAiB;QACjB,YAAY;QACZ,kBAAkB;QAClB,KAAK;QACL,UAAU;QACV,QAAQ;QACR,QAAQ;QACR,cAAc;QACd,gBAAgB;QAChB,QAAQ;QACR,QAAQ;QACR,gBAAgB;QAChB,OAAO;QACP,YAAY;QACZ,SAAS;QACT,eAAe;QACf,gBAAgB;QAChB,SAAS;QACT,mBAAmB;QACnB,UAAU;KACX;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amalgm/core",
3
- "version": "0.1.7",
3
+ "version": "0.2.0",
4
4
  "description": "The Amalgm kernel SDK — identity, transport, supervision, and host capability contracts behind host-injected adapters.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
@@ -63,7 +63,9 @@
63
63
  "scripts": {
64
64
  "build": "tsc -p tsconfig.json",
65
65
  "test": "npm run build && node --test tests/",
66
- "test:parity": "npm run build && node --test tests/parity/"
66
+ "test:parity": "npm run build && node --test tests/parity/",
67
+ "examine:machine-setup": "npm run build && node --test tests/supervision/installation-plan.test.js tests/machine-setup/examination.test.js",
68
+ "examine:user-ground": "npm run build && npm --prefix ../amalgm-live run build && node --test examinations/user-ground/login.examination.mjs"
67
69
  },
68
70
  "devDependencies": {
69
71
  "typescript": "^5.7.3"