@amalgm/shell 0.1.162 → 0.1.163

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 (89) hide show
  1. package/PURPOSE.md +98 -14
  2. package/README.md +16 -0
  3. package/dist/authorization/recovery-host.d.ts +1 -0
  4. package/dist/authorization/recovery-host.js +2 -3
  5. package/dist/authorization/recovery-host.js.map +1 -1
  6. package/dist/cli-arguments.d.ts +8 -0
  7. package/dist/cli-arguments.js +47 -0
  8. package/dist/cli-arguments.js.map +1 -0
  9. package/dist/cli.d.ts +6 -4
  10. package/dist/cli.js +85 -73
  11. package/dist/cli.js.map +1 -1
  12. package/dist/compose.js +4 -3
  13. package/dist/compose.js.map +1 -1
  14. package/dist/development/profile.d.ts +27 -0
  15. package/dist/development/profile.js +142 -0
  16. package/dist/development/profile.js.map +1 -0
  17. package/dist/files-register-host.d.ts +1 -0
  18. package/dist/files-register-host.js +1 -0
  19. package/dist/files-register-host.js.map +1 -1
  20. package/dist/installation/environment.d.ts +30 -0
  21. package/dist/installation/environment.js +28 -0
  22. package/dist/installation/environment.js.map +1 -0
  23. package/dist/installation/lease.d.ts +6 -0
  24. package/dist/installation/lease.js +28 -0
  25. package/dist/installation/lease.js.map +1 -0
  26. package/dist/installation/ownership.d.ts +30 -0
  27. package/dist/installation/ownership.js +156 -0
  28. package/dist/installation/ownership.js.map +1 -0
  29. package/dist/installation/selection.d.ts +8 -0
  30. package/dist/installation/selection.js +29 -0
  31. package/dist/installation/selection.js.map +1 -0
  32. package/dist/machine-host.d.ts +26 -5
  33. package/dist/machine-host.js +192 -69
  34. package/dist/machine-host.js.map +1 -1
  35. package/dist/main.js +56 -2
  36. package/dist/main.js.map +1 -1
  37. package/dist/platform-product-host.d.ts +9 -9
  38. package/dist/platform-product-host.js +17 -17
  39. package/dist/platform-product-host.js.map +1 -1
  40. package/dist/platform-tools.d.ts +4 -3
  41. package/dist/platform-tools.js +34 -37
  42. package/dist/platform-tools.js.map +1 -1
  43. package/dist/process-lifecycle.d.ts +8 -0
  44. package/dist/process-lifecycle.js +32 -0
  45. package/dist/process-lifecycle.js.map +1 -0
  46. package/dist/runtime-command-host.d.ts +7 -0
  47. package/dist/runtime-command-host.js +49 -13
  48. package/dist/runtime-command-host.js.map +1 -1
  49. package/dist/service/adapter.d.ts +36 -0
  50. package/dist/service/adapter.js +24 -0
  51. package/dist/service/adapter.js.map +1 -0
  52. package/dist/service/cli.d.ts +8 -0
  53. package/dist/service/cli.js +196 -0
  54. package/dist/service/cli.js.map +1 -0
  55. package/dist/service/control.d.ts +29 -0
  56. package/dist/service/control.js +68 -0
  57. package/dist/service/control.js.map +1 -0
  58. package/dist/service/index.d.ts +9 -0
  59. package/dist/service/index.js +10 -0
  60. package/dist/service/index.js.map +1 -0
  61. package/dist/service/keepalive.d.ts +11 -0
  62. package/dist/service/keepalive.js +180 -0
  63. package/dist/service/keepalive.js.map +1 -0
  64. package/dist/service/launchd.d.ts +9 -0
  65. package/dist/service/launchd.js +105 -0
  66. package/dist/service/launchd.js.map +1 -0
  67. package/dist/service/owner.d.ts +4 -0
  68. package/dist/service/owner.js +14 -0
  69. package/dist/service/owner.js.map +1 -0
  70. package/dist/service/portable.d.ts +10 -0
  71. package/dist/service/portable.js +32 -0
  72. package/dist/service/portable.js.map +1 -0
  73. package/dist/service/registration.d.ts +82 -0
  74. package/dist/service/registration.js +114 -0
  75. package/dist/service/registration.js.map +1 -0
  76. package/dist/service/systemd.d.ts +9 -0
  77. package/dist/service/systemd.js +94 -0
  78. package/dist/service/systemd.js.map +1 -0
  79. package/dist/service/windows-task.d.ts +16 -0
  80. package/dist/service/windows-task.js +82 -0
  81. package/dist/service/windows-task.js.map +1 -0
  82. package/dist/service/windows.d.ts +2 -0
  83. package/dist/service/windows.js +65 -0
  84. package/dist/service/windows.js.map +1 -0
  85. package/dist/user-ground-host.d.ts +3 -0
  86. package/dist/user-ground-host.js +13 -0
  87. package/dist/user-ground-host.js.map +1 -1
  88. package/npm-shrinkwrap.json +49 -83
  89. package/package.json +9 -9
package/PURPOSE.md CHANGED
@@ -1,23 +1,90 @@
1
1
  # @amalgm/shell — Purpose
2
2
 
3
- The boot shell is the runtime rebuilt from lego bricks. It owns nothing but
4
- composition: process boot, host adapters, and the wiring that hands each
5
- published `@amalgm/*` SDK its dependencies. Every law lives in a brick; the
6
- shell only assembles.
3
+ Amalgm Shell gives a user one dependable machine runtime assembled from the
4
+ published `@amalgm/*` SDKs. An enabled installation should remain available
5
+ while its host can execute, recover without opening a UI, contain a failing
6
+ workload, and leave the machine's resources available for useful work. Shell
7
+ owns composition, process boot, and native host effects; Core and the product
8
+ SDKs own the decisions those effects execute.
9
+
10
+ ## Operating axioms
11
+
12
+ These are the required operating contract, not a statement that every current
13
+ installation satisfies it. The [operating contract](docs/operating-contract.md)
14
+ defines the terms and examinations; the [September 2026 audit](docs/operating-audit-2026-09-05.md)
15
+ records implementation gaps and historical evidence.
16
+ The [release environments plan](docs/release-environments-plan.md) records the
17
+ agreed CI/CD and update evolution; its target behavior is not yet delivered.
18
+
19
+ - **O1 — Lifetime follows installation intent.** One installation owner keeps
20
+ the enabled runtime available independently of its launching UI or terminal
21
+ whenever the host can execute and the required machine state is accessible.
22
+ - **O2 — Failure stays with its owner.** A failed workload degrades its own
23
+ capability and declared dependants without restarting its parent or unrelated
24
+ capabilities.
25
+ - **O3 — Recovery has an end.** Automatic process recovery reaches sustained
26
+ health or a durable parked state within a finite attempt budget that parent
27
+ restarts and elapsed backoff cannot replenish.
28
+ - **O4 — Health observation stays available.** Local control and liveness
29
+ perform bounded work independently of product readiness, cloud connectivity,
30
+ and workload size.
31
+ - **O5 — Each decision has one repository owner.** Core owns portable kernel
32
+ policy, each product owns its domain policy, and Shell supplies composition
33
+ and machine effects through their public contracts.
34
+ - **O6 — Resource use follows necessary work.** Every host resource has one
35
+ lifecycle owner and a declared bound, and idle operation performs no work
36
+ except explicitly budgeted health, lease, and reconciliation duties.
37
+
38
+ The detailed axioms below remain binding. Their mechanisms must serve these
39
+ operating rules; a parity-preserved behavior that violates one is a documented
40
+ gap to resolve at its owning SDK, not a reason to perpetuate the violation.
7
41
 
8
42
  ## Axioms
9
43
 
10
- 1. **The shell composes; it never implements.** If the shell needs a behavior,
11
- that behavior belongs in a brick (or in `@amalgm/core` if it is kernel law).
12
- The shell may only wire adapters, pass configuration, and mount routes.
44
+ 1. **The shell implements host effects; SDKs own domain decisions.** Shell
45
+ assembles published capabilities, implements their native effect ports,
46
+ passes configuration, and mounts routes. A portable product decision belongs
47
+ in its product SDK; a portable kernel decision belongs in `@amalgm/core`.
48
+ A missing SDK port is repaired in that owner before Shell consumes it.
49
+ Each SDK remains usable without Shell. Live and Chat preserve their
50
+ Core-free dependency boundaries; Shell injects their host capabilities.
51
+ One installed runtime and command do not require one operating-system
52
+ process: isolation may change the host topology without changing SDK law.
13
53
 
14
54
  Agent-task execution is one example: Agents resolves the current immutable
15
55
  revision, Chat owns its new durable conversation and turn, Automations owns
16
56
  the queued step and retry key, and Shell only connects those capabilities
17
57
  to the selected machine's model, auth, Toolbox, and workspace bindings.
18
58
 
19
- 2. **Bricks arrive through the registry.** Every `@amalgm/*` dependency is a
20
- published npm version — never a `file:` link, never a copied source tree.
59
+ The environment controller gives each signed-in user and validated binding one
60
+ OS service outside every UI bundle. It holds an OS-released lease, publishes an
61
+ authenticated control endpoint and supervises one child runtime over IPC. A
62
+ missing heartbeat or a remembered PID never transfers ownership. A child exits
63
+ when its controller disconnects; an intentional stop drains that child before
64
+ releasing ownership. Service adapters derive their names from the same binding
65
+ and never operate another environment's process.
66
+ Every control mutation carries the expected user, binding and owner generation;
67
+ the receiving controller verifies that identity before performing the mutation.
68
+ Authenticating a response after an effect cannot authorize that effect.
69
+ Native registration belongs to the current OS account even when the installation
70
+ uses another data home. Windows Task Scheduler owns the controller's lifetime
71
+ and bounded crash recovery in that account's logged-in session; a detached
72
+ logon hook alone is not a recovery owner.
73
+ An active installation from before the ownership protocol must exit once before
74
+ its saved account can move to this controller; a remembered PID is neither a
75
+ stop capability nor permission to start a second writer beside it.
76
+
77
+ Every UI enters one finite setup operation. It serializes installation setup,
78
+ selects the server-approved account, and either proves adoption without changing
79
+ the runtime or acquires that account's runtime lease before enrollment. The OS
80
+ service takes over only after the enrolling foreground owner has drained.
81
+ The operating system selects the credential backend; choosing a data home never
82
+ changes it. Examinations inject their credential store explicitly.
83
+
84
+ 2. **Managed bricks arrive through the registry.** Every production/preview
85
+ `@amalgm/*` dependency is an exact published npm version. Explicit local
86
+ development profiles may select local built SDKs; an absent local component
87
+ never silently falls back to a managed package or hosted service.
21
88
  Upgrading the runtime means bumping a version, not merging code. Registry
22
89
  proof runs under the supported Node executable that launched the gate;
23
90
  ambient package-manager shims are not runtime evidence.
@@ -29,16 +96,32 @@ shell only assembles.
29
96
  remain in the Engine, but they never run as a fallback beside a released
30
97
  Shell service.
31
98
 
32
- 4. **One host, injected once.** Filesystem, sqlite, clock, network — the shell
33
- builds each host adapter a single time at boot and threads it down. No brick
34
- reaches for `process` or the disk on its own.
99
+ 4. **Each shared host capability has one scoped owner.** Shell constructs
100
+ shared adapters once for their installation scope and injects them instead
101
+ of letting consumers rediscover them. Product-owned resources stay behind
102
+ their SDK's public API: Apps, for example, owns its app processes and store,
103
+ and Shell never opens a second lifecycle owner for them. Portable SDK
104
+ decisions receive effects explicitly and never discover ambient process
105
+ state or disk on their own.
35
106
 
36
- 5. **Bricks never update themselves; the shell updates.** Every `@amalgm/*`
107
+ 5. **Bricks never update themselves; the shell updates.** Every direct `@amalgm/*`
37
108
  dependency is pinned to an exact version — no ranges. Publishing a brick
38
109
  changes nothing on any user machine until the shell bumps its pin and ships
39
110
  a new release through the existing npm dist-tag rail (one runtime label, one
40
111
  tag). One version number, one atomic update, one combination that was
41
112
  actually tested together — never a per-brick drift of versions in the wild.
113
+ The shrinkwrap fixes the transitive graph as well; direct pins do not
114
+ imply that every consumer resolves the same Core version. Release proof
115
+ checks those actual resolutions and their public contracts, and upgrades
116
+ affected consumers deliberately instead of forcing an untested override.
117
+
118
+ 5a. **One binding selects the whole installation.** Core's validated label,
119
+ exact source branch and local session select separate mutable roots,
120
+ credentials, databases, process owners and endpoints; production retains
121
+ `~/amalgm`, preview uses `~/amalgm-preview`, and local uses
122
+ `~/amalgm-dev/<session>`. Host effects reserve physical writable roots before
123
+ use, including aliases and enclosing paths, so a second installation cannot
124
+ become another writer of the same ground.
42
125
 
43
126
  6. **Authentication exemptions transfer authority; they do not remove it.**
44
127
  Every exempt prefix is explicit and narrow, and the mounted brick must
@@ -799,7 +882,8 @@ shell only assembles.
799
882
 
800
883
  60. **Runtime binding is proved, never inferred.** A platform adapter adopts
801
884
  an existing runtime only when Shell's published loopback address answers
802
- its authenticated health probe for the selected user and runtime label. A
885
+ its authenticated identity probe for the selected user, device, environment,
886
+ exact branch, local session, and process generation. A
803
887
  durable ready registration with no answering runtime may be resumed; an
804
888
  absent or incomplete registration requires login. A UI marker, PID, open
805
889
  port, or installed executable alone is never service readiness.
package/README.md CHANGED
@@ -4,6 +4,19 @@ The Amalgm runtime, assembled from published `@amalgm/*` SDK capabilities.
4
4
  This repository owns their host composition; see [PURPOSE.md](PURPOSE.md) for
5
5
  the axioms.
6
6
 
7
+ Start with the [operating contract](docs/operating-contract.md) for always-on
8
+ operation, failure containment, repository ownership, and performance gates.
9
+ The [history and implementation audit](docs/operating-audit-2026-09-05.md)
10
+ separates those requirements from current evidence. Persistent OS supervision
11
+ and subsystem crash isolation are not yet certified for this Shell release;
12
+ `amalgm run` currently runs the composed runtime in the foreground.
13
+ The [runtime hardening plan](docs/runtime-hardening-plan.md) gives the
14
+ implementation sequence, owning repositories, and acceptance gates.
15
+ The [release environments and update plan](docs/release-environments-plan.md)
16
+ records the three CI/CD workstreams: environment bindings, deployment to all
17
+ supported surfaces, and background updates. It includes partial local development,
18
+ the public `amalgm` bootstrap target and the two in-progress engineering skills.
19
+
7
20
  The signed runtime composes Core + Files + Agents + Tools + Chat. Agents owns
8
21
  identity and immutable revision resolution; Chat alone owns durable
9
22
  conversations, turns, reconnect, and interrupt; Shell supplies the host effects
@@ -38,6 +51,9 @@ Provider credentials are never accepted through UI payloads, local credential
38
51
  resolution, or environment variables. Products use an injected broker adapter
39
52
  that creates a fresh DPoP proof for each protected request.
40
53
 
54
+ The [login and setup contract](docs/login-setup.md) records the browser/CLI
55
+ boundary and the shared credential-bearing HTTP guarantees.
56
+
41
57
  ## Run
42
58
 
43
59
  ```bash
@@ -12,6 +12,7 @@ export declare function recoverMachineAuthorization(options: Readonly<{
12
12
  runtimeVersion: string;
13
13
  runtimeLabel: string;
14
14
  branch: string;
15
+ localSession?: string;
15
16
  fallbackName: string;
16
17
  fallbackPlatform: string;
17
18
  stateDir: string;
@@ -1,4 +1,4 @@
1
- import { authFromRecord, mergeRecordAuth, publicComputerRecord, } from "@amalgm/core/identity";
1
+ import { authFromRecord, mergeRecordAuth, publicComputerRecord, resolveRuntimeBinding, runtimeBindingRecord, } from "@amalgm/core/identity";
2
2
  import { deviceKeyFromStored, installationDeviceKeyStores, promoteInstallationDeviceKeyRecovery, stageInstallationDeviceKeyRecovery, } from "./index.js";
3
3
  import { requestAuthorizationKeyRecovery } from "./recovery-client.js";
4
4
  export async function recoverMachineAuthorization(options) {
@@ -55,8 +55,7 @@ function recoveryBody(options, record, deviceId, key) {
55
55
  name: text(record.name) || options.fallbackName,
56
56
  platform: text(record.platform) || options.fallbackPlatform,
57
57
  app_version: options.runtimeVersion,
58
- runtime_label: options.runtimeLabel,
59
- branch: options.branch,
58
+ ...runtimeBindingRecord(resolveRuntimeBinding(options)),
60
59
  purpose: "authorization_key_recovery",
61
60
  authorization_key_thumbprint: key,
62
61
  };
@@ -1 +1 @@
1
- {"version":3,"file":"recovery-host.js","sourceRoot":"","sources":["../../src/authorization/recovery-host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recovery-host.js","sourceRoot":"","sources":["../../src/authorization/recovery-host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** Argument syntax shared by runtime and service commands; no host effects. */
2
+ export interface ParsedArguments {
3
+ readonly command: string;
4
+ readonly options: Record<string, string | boolean>;
5
+ readonly positionals: readonly string[];
6
+ }
7
+ export declare function parseArguments(args: readonly string[]): ParsedArguments;
8
+ export declare function option(parsed: ParsedArguments, key: string): string;
@@ -0,0 +1,47 @@
1
+ /** Argument syntax shared by runtime and service commands; no host effects. */
2
+ export function parseArguments(args) {
3
+ const remaining = [...args];
4
+ if (remaining[0] === "--help" || remaining[0] === "-h") {
5
+ return { command: "help", options: {}, positionals: [] };
6
+ }
7
+ if (remaining[0] === "--version" || remaining[0] === "-v") {
8
+ return { command: "version", options: {}, positionals: [] };
9
+ }
10
+ const command = remaining.shift() || "help";
11
+ const options = {};
12
+ const setOption = (key, value) => {
13
+ if (!/^[a-z][a-z0-9-]*$/.test(key))
14
+ throw new Error(`Invalid option: --${key}`);
15
+ if (Object.hasOwn(options, key))
16
+ throw new Error(`Duplicate option: --${key}`);
17
+ options[key] = value;
18
+ };
19
+ const positionals = [];
20
+ for (let index = 0; index < remaining.length; index += 1) {
21
+ const argument = remaining[index];
22
+ if (!argument.startsWith("--")) {
23
+ positionals.push(argument);
24
+ continue;
25
+ }
26
+ const separator = argument.indexOf("=");
27
+ if (separator !== -1) {
28
+ setOption(argument.slice(2, separator), argument.slice(separator + 1));
29
+ continue;
30
+ }
31
+ const key = argument.slice(2);
32
+ const next = remaining[index + 1];
33
+ if (next && !next.startsWith("--")) {
34
+ setOption(key, next);
35
+ index += 1;
36
+ }
37
+ else {
38
+ setOption(key, true);
39
+ }
40
+ }
41
+ return { command, options, positionals };
42
+ }
43
+ export function option(parsed, key) {
44
+ const value = parsed.options[key];
45
+ return typeof value === "string" ? value : "";
46
+ }
47
+ //# sourceMappingURL=cli-arguments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-arguments.js","sourceRoot":"","sources":["../src/cli-arguments.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAQ/E,MAAM,UAAU,cAAc,CAAC,IAAuB;IACpD,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5B,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACvD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC3D,CAAC;IACD,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1D,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC9D,CAAC;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC;IAC5C,MAAM,OAAO,GAAqC,EAAE,CAAC;IACrD,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,KAAuB,EAAQ,EAAE;QAC/D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;QAChF,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC,CAAC;IACF,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAW,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;YACvE,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAClC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrB,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,MAAuB,EAAE,GAAW;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC"}
package/dist/cli.d.ts CHANGED
@@ -1,7 +1,9 @@
1
- export declare function runCli(argv?: string[]): Promise<number>;
2
- declare function hostedProducts(appUrl: string, env?: NodeJS.ProcessEnv): {
3
- automationsBaseUrl: string;
4
- channelsBaseUrl: string;
1
+ import { type RuntimeBinding } from "@amalgm/core/identity";
2
+ import type { DevelopmentProfile } from './development/profile.js';
3
+ export declare function runCli(argv?: string[], signal?: AbortSignal, profile?: DevelopmentProfile): Promise<number>;
4
+ declare function hostedProducts(appUrl: string, env?: NodeJS.ProcessEnv, binding?: RuntimeBinding): {
5
5
  log(event: string, details?: Readonly<Record<string, unknown>>): void;
6
+ channelsBaseUrl?: string | undefined;
7
+ automationsBaseUrl?: string | undefined;
6
8
  } | null;
7
9
  export { hostedProducts };
package/dist/cli.js CHANGED
@@ -2,21 +2,42 @@ import { spawn } from "node:child_process";
2
2
  import { readFileSync } from "node:fs";
3
3
  import { performance } from "node:perf_hooks";
4
4
  import { MachineSetupError } from "@amalgm/core/identity";
5
- import { channelsCliHelp, runChannelsCli } from "@amalgm/channels/cli";
6
5
  import { MachineHost, defaultMachineName } from "./machine-host.js";
7
- import { runShellAutomationsCli } from "./automations-cli-host.js";
8
6
  import { renderStageLedger } from "./files-trace.js";
7
+ import { parseArguments, option } from "./cli-arguments.js";
8
+ import { selectRuntimeInvocation, resolveInvocationBinding } from "./installation/selection.js";
9
+ import { runtimeAppOrigin, runtimeHostedEndpoints } from "./installation/environment.js";
10
+ import { resolveRuntimeBinding } from "@amalgm/core/identity";
11
+ import { processShutdown, waitForShutdown } from './process-lifecycle.js';
12
+ import { resolveAvailableInstallation } from '@amalgm/core/supervision';
13
+ import { shellReleaseCatalog } from './release-catalog.js';
9
14
  const VERSION = String(JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8")).version);
10
- export async function runCli(argv = process.argv) {
11
- const parsed = parseArguments(argv.slice(2));
15
+ export async function runCli(argv = process.argv, signal, profile) {
16
+ const owned = signal ? null : processShutdown();
17
+ try {
18
+ return await runSelectedCli(argv, signal ?? owned.signal, profile);
19
+ }
20
+ catch (error) {
21
+ process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
22
+ return 2;
23
+ }
24
+ finally {
25
+ owned?.close();
26
+ }
27
+ }
28
+ async function runSelectedCli(argv, shutdown, profile) {
29
+ if (shutdown.aborted)
30
+ return 130;
31
+ const invocation = selectRuntimeInvocation(argv.slice(2));
32
+ const parsed = parseArguments(invocation.args);
12
33
  if (parsed.command === "automations" && automationHelp(parsed)) {
13
- return runShellAutomationsCli(automationArguments(parsed), async () => {
34
+ return (await import("./automations-cli-host.js")).runShellAutomationsCli(automationArguments(parsed), async () => {
14
35
  throw new Error("Automations help does not open the user runtime");
15
36
  });
16
37
  }
17
38
  if (parsed.command === "channels"
18
39
  && (parsed.options.help || [undefined, "help", "--help", "-h"].includes(parsed.positionals[0]))) {
19
- process.stdout.write(channelsCliHelp);
40
+ process.stdout.write((await import("@amalgm/channels/cli")).channelsCliHelp);
20
41
  return 0;
21
42
  }
22
43
  if (parsed.command === "help" || parsed.options.help) {
@@ -24,29 +45,38 @@ export async function runCli(argv = process.argv) {
24
45
  return 0;
25
46
  }
26
47
  if (parsed.command === "version" || parsed.options.version) {
27
- process.stdout.write(`${VERSION}\n`);
48
+ process.stdout.write(`${parsed.options['setup-protocol'] ? '1' : VERSION}\n`);
28
49
  return 0;
29
50
  }
30
51
  const filesCommand = parsed.command === "files" ? parsed.positionals[0] : undefined;
31
52
  const authCommand = parsed.command === "auth" ? parsed.positionals[0] : undefined;
32
- if (!["login", "run", "status", "files", "auth", "automations", "channels"].includes(parsed.command)
53
+ if (!["setup", "login", "run", "status", "files", "auth", "automations", "channels"].includes(parsed.command)
33
54
  || (parsed.command === "files" && !["register", "add"].includes(String(filesCommand)))) {
34
55
  process.stderr.write(`Unknown command: ${parsed.command}\n\n${helpText()}`);
35
56
  return 2;
36
57
  }
37
- const appUrl = option(parsed, "app-url") || process.env.AMALGM_APP_URL || "https://amalgm.ai";
38
- const platformProducts = hostedProducts(appUrl);
58
+ const binding = resolveInvocationBinding(invocation.runtimeLabel, parsed);
59
+ if (profile && ['setup', 'login', 'run'].includes(parsed.command) && !profile.endpoints.wire) {
60
+ throw new Error('This local profile needs an explicit wire endpoint to run its required Files capability.');
61
+ }
62
+ const available = profile ? resolveAvailableInstallation(shellReleaseCatalog, profile.services, new Set(shellReleaseCatalog.services.filter(({ id }) => profile.sources[id === 'files' ? '@amalgm/live' : `@amalgm/${id}`]).map(({ id }) => id))) : undefined;
63
+ const appUrl = runtimeAppOrigin(binding, option(parsed, "app-url") || undefined);
64
+ const platformProducts = hostedProducts(appUrl, profile ? {
65
+ AMALGM_AUTOMATIONS_URL: profile.sources['@amalgm/automations'] ? profile.endpoints.automations : undefined,
66
+ AMALGM_CHANNELS_URL: profile.sources['@amalgm/channels'] ? profile.endpoints.channels : undefined,
67
+ } : process.env, binding);
39
68
  const userEmail = option(parsed, "user") || undefined;
40
69
  const traceFiles = process.env.AMALGM_FILES_TRACE === "1";
41
70
  const host = new MachineHost({
42
71
  homedir: option(parsed, "home") || undefined,
43
- amalgmRoot: option(parsed, "amalgm-root") || process.env.AMALGM_ROOT || undefined,
72
+ amalgmRoot: option(parsed, "amalgm-root") || undefined,
44
73
  userEmail,
45
74
  appUrl,
46
75
  runtimeVersion: VERSION,
47
- runtimeLabel: option(parsed, "runtime-label") || "main",
48
- branch: option(parsed, "branch") || "main",
76
+ ...binding,
77
+ ...(available ? { services: available.services } : {}),
49
78
  proxyUrl: option(parsed, "proxy-url") || undefined,
79
+ wireUrl: option(parsed, "wire-url") || undefined,
50
80
  ...(platformProducts ? { platformProducts } : {}),
51
81
  runtimePort: numericOption(parsed, "port"),
52
82
  showSetup: async ({ verificationUrl, setupCode, keyThumbprint }) => {
@@ -82,15 +112,45 @@ export async function runCli(argv = process.argv) {
82
112
  });
83
113
  const started = performance.now();
84
114
  try {
115
+ if (parsed.command === 'setup') {
116
+ const result = await host.setup({
117
+ ...(available ? { services: available.services } : {}),
118
+ name: option(parsed, 'name') || defaultMachineName(),
119
+ ...(option(parsed, 'setup-code') ? { setupCode: option(parsed, 'setup-code') } : {}),
120
+ });
121
+ await host.close();
122
+ const { runServiceCli } = await import('./service/cli.js');
123
+ const serviceArgs = ['start', '--user', result.userEmail, '--home', host.homedir,
124
+ '--amalgm-root', host.amalgmRoot, '--app-url', appUrl, '--branch', binding.branch,
125
+ ...(binding.localSession ? ['--local-session', binding.localSession] : []),
126
+ ...['proxy-url', 'wire-url', 'port', 'profile', 'mode'].flatMap((name) => option(parsed, name) ? [`--${name}`, option(parsed, name)] : []),
127
+ ];
128
+ if (!(await host.status()).running) {
129
+ host.assertRuntimeCanStart();
130
+ const code = await runServiceCli(serviceArgs, binding.runtimeLabel);
131
+ if (code !== 0)
132
+ throw new Error('Registration is saved, but the independent runtime service could not start.');
133
+ }
134
+ const deadline = Date.now() + 300_000;
135
+ while (!shutdown.aborted && Date.now() < deadline) {
136
+ const status = await host.status();
137
+ if (status.running) {
138
+ process.stdout.write(`AMALGM_SETUP_COMPLETE ${JSON.stringify({ ...result, binding, runtimePort: status.runtimePort })}\n`);
139
+ return 0;
140
+ }
141
+ await new Promise((done) => setTimeout(done, 500));
142
+ }
143
+ throw new Error('Registration is saved, but the runtime service has not become ready. Check amalgm service status for this user and environment.');
144
+ }
85
145
  if (parsed.command === "automations") {
86
- return await runShellAutomationsCli(automationArguments(parsed), () => host.automationRuntimeConnection());
146
+ return await (await import("./automations-cli-host.js")).runShellAutomationsCli(automationArguments(parsed), () => host.automationRuntimeConnection());
87
147
  }
88
148
  if (parsed.command === "status") {
89
- process.stdout.write(`${JSON.stringify(await host.status(), null, 2)}\n`);
149
+ process.stdout.write(`${JSON.stringify({ ...await host.status(), ...(available ? { capabilities: available.capabilities } : {}) }, null, 2)}\n`);
90
150
  return 0;
91
151
  }
92
152
  if (parsed.command === "channels") {
93
- return runChannelsCli(channelsArguments(parsed), host.channelsCommands());
153
+ return (await import("@amalgm/channels/cli")).runChannelsCli(channelsArguments(parsed), host.channelsCommands());
94
154
  }
95
155
  if (parsed.command === "files") {
96
156
  if (parsed.positionals.length !== 2) {
@@ -125,6 +185,7 @@ export async function runCli(argv = process.argv) {
125
185
  }
126
186
  const ready = parsed.command === "login"
127
187
  ? await host.join({
188
+ ...(available ? { services: available.services } : {}),
128
189
  name: option(parsed, "name") || defaultMachineName(),
129
190
  ...(option(parsed, "setup-code") ? { setupCode: option(parsed, "setup-code") } : {}),
130
191
  })
@@ -139,11 +200,12 @@ export async function runCli(argv = process.argv) {
139
200
  entities: ready.userGround.entityCount,
140
201
  watchers: ready.userGround.watcherRoots,
141
202
  services: ready.installation.services,
203
+ ...(available ? { capabilities: available.capabilities } : {}),
142
204
  })}\n`);
143
205
  if (parsed.options["exit-after-ready"]) {
144
206
  return 0;
145
207
  }
146
- await waitForShutdown();
208
+ await waitForShutdown(shutdown);
147
209
  return 0;
148
210
  }
149
211
  catch (error) {
@@ -166,13 +228,12 @@ export async function runCli(argv = process.argv) {
166
228
  await host.close();
167
229
  }
168
230
  }
169
- function hostedProducts(appUrl, env = process.env) {
170
- const explicit = env.AMALGM_AUTOMATIONS_URL || env.AMALGM_CHANNELS_URL;
171
- if (!explicit && new URL(appUrl).protocol !== 'https:')
231
+ function hostedProducts(appUrl, env = process.env, binding = resolveRuntimeBinding()) {
232
+ const endpoints = runtimeHostedEndpoints(binding, appUrl, env);
233
+ if (!endpoints.automationsBaseUrl && !endpoints.channelsBaseUrl)
172
234
  return null;
173
235
  return {
174
- automationsBaseUrl: env.AMALGM_AUTOMATIONS_URL || 'https://automations.amalgm.ai',
175
- channelsBaseUrl: env.AMALGM_CHANNELS_URL || 'https://amalgm-channels.fly.dev',
236
+ ...endpoints,
176
237
  log(event, details = {}) {
177
238
  process.stdout.write(`AMALGM_PRODUCT ${JSON.stringify({ event, ...details })}\n`);
178
239
  },
@@ -187,50 +248,12 @@ function reportStages(command, stages, totalMs) {
187
248
  renderStageLedger(evidence, totalMs),
188
249
  ].join("\n");
189
250
  }
190
- function parseArguments(args) {
191
- const remaining = [...args];
192
- if (remaining[0] === "--help" || remaining[0] === "-h") {
193
- return { command: "help", options: {}, positionals: [] };
194
- }
195
- if (remaining[0] === "--version" || remaining[0] === "-v") {
196
- return { command: "version", options: {}, positionals: [] };
197
- }
198
- const command = remaining.shift() || "help";
199
- const options = {};
200
- const positionals = [];
201
- for (let index = 0; index < remaining.length; index += 1) {
202
- const argument = remaining[index];
203
- if (!argument.startsWith("--")) {
204
- positionals.push(argument);
205
- continue;
206
- }
207
- const separator = argument.indexOf("=");
208
- if (separator !== -1) {
209
- options[argument.slice(2, separator)] = argument.slice(separator + 1);
210
- continue;
211
- }
212
- const key = argument.slice(2);
213
- const next = remaining[index + 1];
214
- if (next && !next.startsWith("--")) {
215
- options[key] = next;
216
- index += 1;
217
- }
218
- else {
219
- options[key] = true;
220
- }
221
- }
222
- return { command, options, positionals };
223
- }
224
- function option(parsed, key) {
225
- const value = parsed.options[key];
226
- return typeof value === "string" ? value : "";
227
- }
228
251
  function numericOption(parsed, key) {
229
252
  const value = Number(option(parsed, key));
230
253
  return Number.isInteger(value) && value > 0 && value <= 65_535 ? value : undefined;
231
254
  }
232
255
  const SHELL_AUTOMATION_OPTIONS = new Set([
233
- "app-url", "amalgm-root", "home", "user", "runtime-label", "branch", "proxy-url", "port",
256
+ "app-url", "amalgm-root", "home", "user", "runtime-label", "branch", "local-session", "proxy-url", "wire-url", "port", "profile",
234
257
  ]);
235
258
  function automationArguments(parsed) {
236
259
  const args = [...parsed.positionals];
@@ -271,18 +294,7 @@ function openBrowser(url) {
271
294
  // The URL and setup code are always printed; browser launch is optional.
272
295
  }
273
296
  }
274
- function waitForShutdown() {
275
- return new Promise((resolve) => {
276
- const finish = () => {
277
- process.off("SIGINT", finish);
278
- process.off("SIGTERM", finish);
279
- resolve();
280
- };
281
- process.once("SIGINT", finish);
282
- process.once("SIGTERM", finish);
283
- });
284
- }
285
297
  function helpText() {
286
- return `amalgm ${VERSION}\n\nUsage:\n amalgm login [--setup-code CODE] [--no-open]\n amalgm run --user EMAIL\n amalgm status --user EMAIL\n amalgm auth recover [--setup-code CODE] --user EMAIL\n amalgm files register <path> --user EMAIL\n amalgm files add <workspace-id> --user EMAIL\n amalgm automations <command> [--input JSON | --file PATH | --stdin]\n amalgm channels send --input JSON --user EMAIL\n\nAuthorization:\n recover Replace a missing, corrupt, or rejected device key after browser approval\n\nFiles:\n register Register, watch, upload, and commit one external workspace\n add Materialize one owned cloud workspace through the running Watch host\n\nAutomations:\n create, list, get, update, delete, run-now\n Use the same JSON objects and results as Automations MCP\n\nChannels:\n send Send one deliberate message through the running authenticated Shell\n\nOptions:\n --app-url URL Amalgm control plane (default: https://amalgm.ai)\n --amalgm-root PATH Visible installation root (default: ~/amalgm)\n --home PATH OS home override\n --user EMAIL Select one of multiple local users\n --name NAME Computer display name\n --exit-after-ready Examination-only: prove readiness, then stop\n`;
298
+ return `amalgm ${VERSION}\n\nUsage:\n amalgm setup [--setup-code CODE] (finite setup and OS service)\n amalgm login [--setup-code CODE] [--no-open]\n amalgm start --user EMAIL\n amalgm stop --user EMAIL\n amalgm run --user EMAIL (foreground)\n amalgm status --user EMAIL\n amalgm auth recover [--setup-code CODE] --user EMAIL\n amalgm files register <path> --user EMAIL\n amalgm files add <workspace-id> --user EMAIL\n amalgm automations <command> [--input JSON | --file PATH | --stdin]\n amalgm channels send --input JSON --user EMAIL\n\nEnvironments:\n amalgm ... Production: ~/amalgm\n amalgm preview ... Preview: ~/amalgm-preview\n amalgm dev ... --branch BRANCH --local-session SESSION --app-url URL\n Local: ~/amalgm-dev/SESSION\n\nAuthorization:\n recover Replace a missing, corrupt, or rejected device key after browser approval\n\nFiles:\n register Register, watch, upload, and commit one external workspace\n add Materialize one owned cloud workspace through the running Watch host\n\nAutomations:\n create, list, get, update, delete, run-now\n Use the same JSON objects and results as Automations MCP\n\nChannels:\n send Send one deliberate message through the running authenticated Shell\n\nOptions:\n --app-url URL Amalgm control plane (default: https://amalgm.ai)\n --amalgm-root PATH Visible installation root (default: ~/amalgm)\n --home PATH OS home override\n --user EMAIL Select one of multiple local users\n --name NAME Computer display name\n --exit-after-ready Examination-only: prove readiness, then stop\n`;
287
299
  }
288
300
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}