@amalgm/shell 0.1.28 → 0.1.30

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.
@@ -3,9 +3,11 @@ import { existsSync, readdirSync, rmSync } from "node:fs";
3
3
  import { homedir as osHomedir, hostname, platform, release } from "node:os";
4
4
  import { basename, join } from "node:path";
5
5
  import { buildRootManifest, joinMachine, mergeRecordAuth, resumeMachine, scopedAmalgmDir, userMachineDir, } from "@amalgm/core/identity";
6
+ import { addFilesWorkspace, } from "@amalgm/live/files";
6
7
  import { atomicJson, atomicJsonSet, ensurePrivateDir, readJson, } from "./filesystem.js";
7
8
  import { createGateway } from "./gateway.js";
8
9
  import { createFilesRegisterPorts } from "./files-register-host.js";
10
+ import { callRuntimeCommand, publishRuntimeCommands, unpublishRuntimeCommands, } from "./runtime-command-host.js";
9
11
  import { shellReleaseCatalog, shellReleaseVerifier } from "./release-catalog.js";
10
12
  import { UserGroundHost } from "./user-ground-host.js";
11
13
  /** The production effects around Core's machine-setup operation. It does not
@@ -88,6 +90,8 @@ export class MachineHost {
88
90
  tunnelUrl,
89
91
  tunnelToken,
90
92
  runtimeVersion: this.options.runtimeVersion,
93
+ openWatch: this.options.openWatch,
94
+ onWatchHealth: this.options.onWatchHealth,
91
95
  });
92
96
  return this.groundHost.port.converge(identity);
93
97
  },
@@ -137,6 +141,41 @@ export class MachineHost {
137
141
  throw new Error("Files commands require a resumed authenticated machine");
138
142
  return this.groundHost.filesCommandPorts();
139
143
  }
144
+ /** Materialize through Live and prove the same runtime owns ongoing Watch. */
145
+ async addWorkspace(workspaceId, destinationParent) {
146
+ if (!this.groundHost)
147
+ throw new Error("add requires a running authenticated runtime");
148
+ const added = await addFilesWorkspace(workspaceId, destinationParent, this.groundHost.filesCommandPorts().add);
149
+ return { ...added, watch: this.groundHost.addedWorkspaceEvidence(added.workspaceId) };
150
+ }
151
+ watchEvidence() {
152
+ if (!this.groundHost)
153
+ throw new Error("Watch evidence requires a running authenticated runtime");
154
+ return this.groundHost.watchEvidence();
155
+ }
156
+ coverWorkspace(workspaceId) {
157
+ if (!this.groundHost)
158
+ throw new Error("Watch coverage requires a running authenticated runtime");
159
+ return this.groundHost.coverWorkspaceEvidence(workspaceId);
160
+ }
161
+ async callFilesRuntime(path, body) {
162
+ this.resolveUserForResume();
163
+ const machine = await this.loadMachine();
164
+ if (!machine?.ready)
165
+ throw new Error("Files commands require a ready authenticated machine");
166
+ const record = mergeRecordAuth(machine.publicRecord, machine.secretAuth) ?? {};
167
+ const userEmail = normalizeEmail(record.user_email);
168
+ const deviceId = text(record.device_id);
169
+ if (!userEmail || !deviceId || userEmail !== this.requireSelectedUser()) {
170
+ throw new Error("stored machine identity does not match this user and physical device");
171
+ }
172
+ return callRuntimeCommand({
173
+ userRoot: this.paths().userRoot,
174
+ deviceId,
175
+ runtimeLabel: this.options.runtimeLabel ?? "main",
176
+ userScope: userEmail,
177
+ }, path, body);
178
+ }
140
179
  /** Registration is a local declaration, so it proves the selected machine
141
180
  * from disk without starting Watch, SQLite convergence, or a cloud wire. */
142
181
  async filesRegisterPorts() {
@@ -151,44 +190,6 @@ export class MachineHost {
151
190
  }
152
191
  return createFilesRegisterPorts({ userRoot: paths.userRoot, deviceId });
153
192
  }
154
- /** Download effects need authenticated cloud/cache access, but not a second
155
- * login convergence or a pre-download Watch scan. */
156
- async filesAddPorts() {
157
- this.resolveUserForResume();
158
- const machine = await this.loadMachine();
159
- if (!machine?.ready)
160
- throw new Error("Files commands require a ready authenticated machine");
161
- const record = mergeRecordAuth(machine.publicRecord, machine.secretAuth) ?? {};
162
- const identity = {
163
- userId: text(record.user_id),
164
- userEmail: normalizeEmail(record.user_email),
165
- deviceId: text(record.device_id),
166
- };
167
- const tunnelUrl = text(record.tunnel_url);
168
- const tunnelToken = text(record.tunnel_token);
169
- const paths = this.paths();
170
- if (!identity.userId || !identity.userEmail || !identity.deviceId || !tunnelUrl || !tunnelToken) {
171
- throw new Error("Files command identity or tunnel credentials are incomplete");
172
- }
173
- if (identity.userEmail !== this.requireSelectedUser()
174
- || identity.deviceId !== basename(paths.machineDir)) {
175
- throw new Error("stored machine identity does not match this user and physical device");
176
- }
177
- await this.groundHost?.close({ catchUp: false });
178
- this.groundHost = new UserGroundHost({
179
- amalgmRoot: this.amalgmRoot,
180
- deviceId: identity.deviceId,
181
- tunnelUrl,
182
- tunnelToken,
183
- runtimeVersion: this.options.runtimeVersion,
184
- });
185
- this.groundHost.openFilesCommand({
186
- userId: identity.userId,
187
- userEmail: identity.userEmail,
188
- deviceId: identity.deviceId,
189
- });
190
- return this.groundHost.filesCommandPorts().add;
191
- }
192
193
  async close(options = {}) {
193
194
  const runtimes = [...this.running];
194
195
  this.running.clear();
@@ -311,7 +312,20 @@ export class MachineHost {
311
312
  AMALGM_PROXY_TOKEN: proxyToken,
312
313
  AMALGM_PROXY_URL: this.options.proxyUrl ?? "https://amalgm-api-proxy-v2.fly.dev",
313
314
  };
314
- const gateway = createGateway({ env });
315
+ const gateway = createGateway({
316
+ env,
317
+ mounts: [
318
+ {
319
+ prefix: "/entities/add",
320
+ handle: (body) => this.addWorkspace(bodyText(body, "uuid"), bodyText(body, "path")),
321
+ },
322
+ {
323
+ prefix: "/entities/watch",
324
+ handle: (body) => Promise.resolve(this.coverWorkspace(bodyText(body, "uuid"))),
325
+ },
326
+ ],
327
+ });
328
+ let commandPublication = null;
315
329
  try {
316
330
  if (!this.groundHost)
317
331
  throw new Error("Files must converge before the runtime starts");
@@ -323,6 +337,15 @@ export class MachineHost {
323
337
  if (!address || typeof address === "string")
324
338
  throw new Error("runtime gateway did not bind a TCP port");
325
339
  await this.groundHost.activateRuntimeTunnel(address.port, runtimeToken);
340
+ commandPublication = {
341
+ userRoot: this.paths(userEmail).userRoot,
342
+ deviceId,
343
+ runtimeLabel: this.options.runtimeLabel ?? "main",
344
+ userScope: userEmail,
345
+ port: address.port,
346
+ token: runtimeToken,
347
+ };
348
+ publishRuntimeCommands(commandPublication);
326
349
  const running = {
327
350
  evidence: {
328
351
  userId,
@@ -334,6 +357,8 @@ export class MachineHost {
334
357
  },
335
358
  stop: async () => {
336
359
  this.running.delete(running);
360
+ if (commandPublication)
361
+ unpublishRuntimeCommands(commandPublication);
337
362
  await this.groundHost?.stopRuntimeTunnel();
338
363
  const closed = new Promise((resolve) => gateway.close(() => resolve()));
339
364
  gateway.closeAllConnections();
@@ -344,6 +369,8 @@ export class MachineHost {
344
369
  return running;
345
370
  }
346
371
  catch (error) {
372
+ if (commandPublication)
373
+ unpublishRuntimeCommands(commandPublication);
347
374
  await this.groundHost?.stopRuntimeTunnel().catch(() => undefined);
348
375
  if (gateway.listening) {
349
376
  const closed = new Promise((resolve) => gateway.close(() => resolve()));
@@ -361,6 +388,15 @@ function normalizeEmail(value) {
361
388
  function text(value) {
362
389
  return typeof value === "string" ? value.trim() : "";
363
390
  }
391
+ function bodyText(body, key) {
392
+ if (!body || typeof body !== "object" || Array.isArray(body)) {
393
+ throw new Error("Files runtime requires a JSON object");
394
+ }
395
+ const value = text(body[key]);
396
+ if (!value)
397
+ throw new Error(`${key} is required`);
398
+ return value;
399
+ }
364
400
  async function postJson(baseUrl, path, body, token = "") {
365
401
  const response = await fetch(`${baseUrl.replace(/\/$/, "")}${path}`, {
366
402
  method: "POST",
@@ -1 +1 @@
1
- {"version":3,"file":"machine-host.js","sourceRoot":"","sources":["../src/machine-host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"machine-host.js","sourceRoot":"","sources":["../src/machine-host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface RuntimeCommandAddress {
2
+ readonly userRoot: string;
3
+ readonly deviceId: string;
4
+ readonly runtimeLabel: string;
5
+ readonly userScope: string;
6
+ }
7
+ export interface RuntimeCommandPublication extends RuntimeCommandAddress {
8
+ readonly port: number;
9
+ readonly token: string;
10
+ }
11
+ /** Publish the loopback address only after the watching runtime is ready. */
12
+ export declare function publishRuntimeCommands(input: RuntimeCommandPublication): void;
13
+ /** Remove only the discovery document owned by this exact runtime token. */
14
+ export declare function unpublishRuntimeCommands(input: RuntimeCommandPublication): void;
15
+ /** Call the one running Files runtime. The CLI owns no Files effects. */
16
+ export declare function callRuntimeCommand(input: RuntimeCommandAddress, path: "/entities/add" | "/entities/watch", body: Record<string, unknown>): Promise<Record<string, unknown>>;
@@ -0,0 +1,86 @@
1
+ import { rmSync } from "node:fs";
2
+ import { coerceRuntimeLabel, runtimeStateDir, runtimeStateFile, runtimeTokenFile, } from "@amalgm/core/identity";
3
+ import { atomicJson, readJson } from "./filesystem.js";
4
+ const FILES_PORT = "amalgm_mcp";
5
+ /** Publish the loopback address only after the watching runtime is ready. */
6
+ export function publishRuntimeCommands(input) {
7
+ const files = commandFiles(input);
8
+ const label = coerceRuntimeLabel(input.runtimeLabel);
9
+ atomicJson(files.token, { token: required(input.token, "runtime token") });
10
+ atomicJson(files.state, {
11
+ runtime_label: label,
12
+ user_scope: input.userScope,
13
+ pid: process.pid,
14
+ ports: { [FILES_PORT]: validPort(input.port) },
15
+ });
16
+ }
17
+ /** Remove only the discovery document owned by this exact runtime token. */
18
+ export function unpublishRuntimeCommands(input) {
19
+ const files = commandFiles(input);
20
+ if (readJson(files.token)?.token !== input.token)
21
+ return;
22
+ rmSync(files.state, { force: true });
23
+ rmSync(files.token, { force: true });
24
+ }
25
+ /** Call the one running Files runtime. The CLI owns no Files effects. */
26
+ export async function callRuntimeCommand(input, path, body) {
27
+ const files = commandFiles(input);
28
+ const state = readJson(files.state);
29
+ const label = coerceRuntimeLabel(input.runtimeLabel);
30
+ if (!state
31
+ || state.runtime_label !== label
32
+ || state.user_scope !== input.userScope) {
33
+ throw new Error(`Amalgm runtime is not running for ${input.userScope}. Start it with \`amalgm run --user ${input.userScope}\`.`);
34
+ }
35
+ const token = required(readJson(files.token)?.token, "runtime token");
36
+ const port = validPort(state.ports?.[FILES_PORT]);
37
+ let response;
38
+ try {
39
+ response = await fetch(`http://127.0.0.1:${port}${path}`, {
40
+ method: "POST",
41
+ headers: {
42
+ "content-type": "application/json",
43
+ "x-amalgm-runtime-token": token,
44
+ },
45
+ body: JSON.stringify(body),
46
+ });
47
+ }
48
+ catch {
49
+ throw new Error(`Amalgm runtime is not running for ${input.userScope}. Start it with \`amalgm run --user ${input.userScope}\`.`);
50
+ }
51
+ let payload = null;
52
+ try {
53
+ payload = await response.json();
54
+ }
55
+ catch {
56
+ // The status below remains the honest failure evidence.
57
+ }
58
+ if (!response.ok) {
59
+ const message = payload && typeof payload === "object" && "error" in payload
60
+ ? String(payload.error)
61
+ : `runtime responded ${response.status}`;
62
+ throw new Error(message);
63
+ }
64
+ if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
65
+ throw new Error("Files runtime returned an invalid response");
66
+ }
67
+ return payload;
68
+ }
69
+ function commandFiles(input) {
70
+ const directory = runtimeStateDir(input.userRoot, required(input.deviceId, "device id"), coerceRuntimeLabel(input.runtimeLabel));
71
+ return { state: runtimeStateFile(directory), token: runtimeTokenFile(directory) };
72
+ }
73
+ function validPort(value) {
74
+ const port = Number(value);
75
+ if (!Number.isInteger(port) || port < 1 || port > 65_535) {
76
+ throw new Error("Files runtime has no valid command port");
77
+ }
78
+ return port;
79
+ }
80
+ function required(value, label) {
81
+ const text = typeof value === "string" ? value.trim() : "";
82
+ if (!text)
83
+ throw new Error(`${label} is missing`);
84
+ return text;
85
+ }
86
+ //# sourceMappingURL=runtime-command-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-command-host.js","sourceRoot":"","sources":["../src/runtime-command-host.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type UserGroundPort, type UserHomeDeclaration } from "@amalgm/core/identity";
2
2
  import { type EntityType, type FilesAddPorts, type FilesRegisterPorts, type UserGroundIdentity } from "@amalgm/live";
3
+ import { type OpenNativeWatch, type WatchCoverageEvidence, type WatchHealth } from "./watching/index.js";
3
4
  interface GroundRow {
4
5
  readonly resourceId: string;
5
6
  readonly rootUUID: string;
@@ -24,11 +25,14 @@ export interface UserGroundHostOptions {
24
25
  readonly runtimeVersion: string;
25
26
  readonly declaration?: UserHomeDeclaration;
26
27
  readonly now?: () => Date;
28
+ /** Product diagnostics consume this; Core's `/healthz` remains liveness-only. */
29
+ readonly onWatchHealth?: (health: WatchHealth) => void;
30
+ /** Host injection used by platform certification and failure examinations. */
31
+ readonly openWatch?: OpenNativeWatch;
27
32
  }
28
33
  export interface UserGroundCloseOptions {
29
- /** False for a one-shot effect whose writes were already projected from an
30
- * authoritative graph. Such a command has no observed user edit to turn
31
- * into registration work at shutdown. */
34
+ /** False only when a caller is deliberately abandoning pending observation,
35
+ * such as deterministic failure certification. Product shutdown catches up. */
32
36
  readonly catchUp?: boolean;
33
37
  }
34
38
  /** The production Files port injected into Core. Portable identity remains in
@@ -36,7 +40,7 @@ export interface UserGroundCloseOptions {
36
40
  export declare class UserGroundHost {
37
41
  private readonly options;
38
42
  private readonly wire;
39
- private readonly watchers;
43
+ private readonly watchHost;
40
44
  private activeIdentity;
41
45
  private rescanTimer;
42
46
  private watchDirty;
@@ -48,10 +52,12 @@ export declare class UserGroundHost {
48
52
  constructor(options: UserGroundHostOptions);
49
53
  databasePath(identity: UserGroundIdentity): string;
50
54
  rows(identity: UserGroundIdentity): GroundRow[];
51
- /** Open only the authenticated Files-command effects over an already-ready
52
- * local projection. This deliberately does not run login convergence or
53
- * Watch registration before a cold download. */
54
- openFilesCommand(identity: UserGroundIdentity): void;
55
+ watchHealth(): WatchHealth;
56
+ watchEvidence(): WatchCoverageEvidence;
57
+ coverWorkspaceEvidence(workspaceId: string): WatchCoverageEvidence;
58
+ /** Add already projects authoritative rows; this proves that the same
59
+ * long-lived runtime now owns their healthy ongoing coverage. */
60
+ addedWorkspaceEvidence(workspaceId: string): WatchCoverageEvidence;
55
61
  /** Host effects for Live-owned Files commands. The shell CLI receives these
56
62
  * ports but never decides Files behavior itself. */
57
63
  filesCommandPorts(): {