@amalgm/shell 0.1.164-preview.35157059187 → 0.1.164-preview.35188094873
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 +2 -2
- package/README.md +7 -0
- package/dist/automations-host.d.ts +2 -0
- package/dist/automations-host.js.map +1 -1
- package/dist/boot.js +15 -20
- package/dist/boot.js.map +1 -1
- package/dist/bundle-automations.d.ts +2 -20
- package/dist/bundle-automations.js +17 -62
- package/dist/bundle-automations.js.map +1 -1
- package/dist/bundle-port.d.ts +2 -6
- package/dist/bundle-port.js +13 -15
- package/dist/bundle-port.js.map +1 -1
- package/dist/cli.js +51 -22
- package/dist/cli.js.map +1 -1
- package/dist/construct-apply-host.d.ts +61 -0
- package/dist/construct-apply-host.js +103 -0
- package/dist/construct-apply-host.js.map +1 -0
- package/dist/construct-door.d.ts +37 -0
- package/dist/construct-door.js +51 -0
- package/dist/construct-door.js.map +1 -0
- package/dist/construct-ledger.d.ts +26 -0
- package/dist/construct-ledger.js +86 -0
- package/dist/construct-ledger.js.map +1 -0
- package/dist/construct-products.d.ts +22 -0
- package/dist/construct-products.js +30 -0
- package/dist/construct-products.js.map +1 -0
- package/dist/entity-access-wire.d.ts +32 -0
- package/dist/entity-access-wire.js +153 -0
- package/dist/entity-access-wire.js.map +1 -0
- package/dist/entity-apply-host.d.ts +9 -1
- package/dist/entity-apply-host.js +20 -2
- package/dist/entity-apply-host.js.map +1 -1
- package/dist/entity-channel-holdings.d.ts +26 -0
- package/dist/entity-channel-holdings.js +52 -0
- package/dist/entity-channel-holdings.js.map +1 -0
- package/dist/entity-record-observability.js +21 -0
- package/dist/entity-record-observability.js.map +1 -1
- package/dist/entity-record-store.d.ts +8 -3
- package/dist/entity-record-store.js +28 -1
- package/dist/entity-record-store.js.map +1 -1
- package/dist/installation/environment.d.ts +0 -2
- package/dist/installation/environment.js +0 -4
- package/dist/installation/environment.js.map +1 -1
- package/dist/machine-host.d.ts +4 -5
- package/dist/machine-host.js +63 -81
- package/dist/machine-host.js.map +1 -1
- package/dist/runtime-command-host.d.ts +3 -1
- package/dist/runtime-command-host.js +2 -1
- package/dist/runtime-command-host.js.map +1 -1
- package/dist/sharing-host.d.ts +19 -0
- package/dist/sharing-host.js +19 -0
- package/dist/sharing-host.js.map +1 -0
- package/dist/sharing-mcp-host.d.ts +23 -0
- package/dist/{descriptor-mcp-host.js → sharing-mcp-host.js} +23 -9
- package/dist/sharing-mcp-host.js.map +1 -0
- package/dist/user-ground-host.d.ts +29 -3
- package/dist/user-ground-host.js +90 -5
- package/dist/user-ground-host.js.map +1 -1
- package/dist/wire-client.d.ts +0 -9
- package/dist/wire-client.js +0 -13
- package/dist/wire-client.js.map +1 -1
- package/examinations/fixtures/machine-control-plane.js +0 -13
- package/examinations/fixtures/private-wire-authority.js +170 -9
- package/npm-shrinkwrap.json +14 -14
- package/package.json +7 -7
- package/dist/descriptor-mcp-host.d.ts +0 -26
- package/dist/descriptor-mcp-host.js.map +0 -1
- package/dist/installed-automations.d.ts +0 -70
- package/dist/installed-automations.js +0 -135
- package/dist/installed-automations.js.map +0 -1
- package/dist/runtime-mcp-cli-host.d.ts +0 -29
- package/dist/runtime-mcp-cli-host.js +0 -84
- package/dist/runtime-mcp-cli-host.js.map +0 -1
- package/dist/share-host.d.ts +0 -24
- package/dist/share-host.js +0 -34
- package/dist/share-host.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -2,6 +2,7 @@ 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 { CLI_HELP, commandDefinitions } from "@amalgm/live/sharing";
|
|
5
6
|
import { MachineHost, defaultMachineName } from "./machine-host.js";
|
|
6
7
|
import { renderStageLedger } from "./files-trace.js";
|
|
7
8
|
import { parseArguments, option } from "./cli-arguments.js";
|
|
@@ -29,17 +30,21 @@ async function runSelectedCli(argv, shutdown, profile) {
|
|
|
29
30
|
if (shutdown.aborted)
|
|
30
31
|
return 130;
|
|
31
32
|
const invocation = selectRuntimeInvocation(argv.slice(2));
|
|
32
|
-
|
|
33
|
+
// A Sharing verb's syntax is Live's, not the Shell's: its argv is split
|
|
34
|
+
// rather than parsed, so a list flag given more than once survives.
|
|
35
|
+
const sharing = SHARING_COMMANDS.has(invocation.args[0] ?? "")
|
|
36
|
+
? splitSharingArgv(invocation.args)
|
|
37
|
+
: null;
|
|
38
|
+
if (sharing && (sharing.forwarded.includes("--help") || sharing.forwarded.includes("-h"))) {
|
|
39
|
+
process.stdout.write(`${CLI_HELP}\n`);
|
|
40
|
+
return 0;
|
|
41
|
+
}
|
|
42
|
+
const parsed = parseArguments(sharing ? [sharing.forwarded[0], ...sharing.host] : invocation.args);
|
|
33
43
|
if (parsed.command === "automations" && automationHelp(parsed)) {
|
|
34
44
|
return (await import("./automations-cli-host.js")).runShellAutomationsCli(automationArguments(parsed), async () => {
|
|
35
45
|
throw new Error("Automations help does not open the user runtime");
|
|
36
46
|
});
|
|
37
47
|
}
|
|
38
|
-
if (RUNTIME_CLI_COMMANDS.has(parsed.command) && automationHelp(parsed)) {
|
|
39
|
-
return runRuntimeCli(parsed, async () => {
|
|
40
|
-
throw new Error(`${parsed.command} help does not open the user runtime`);
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
48
|
if (parsed.command === "channels"
|
|
44
49
|
&& (parsed.options.help || [undefined, "help", "--help", "-h"].includes(parsed.positionals[0]))) {
|
|
45
50
|
process.stdout.write((await import("@amalgm/channels/cli")).channelsCliHelp);
|
|
@@ -59,7 +64,8 @@ async function runSelectedCli(argv, shutdown, profile) {
|
|
|
59
64
|
}
|
|
60
65
|
const filesCommand = parsed.command === "files" ? parsed.positionals[0] : undefined;
|
|
61
66
|
const authCommand = parsed.command === "auth" ? parsed.positionals[0] : undefined;
|
|
62
|
-
if (!
|
|
67
|
+
if (!(sharing
|
|
68
|
+
|| ["setup", "login", "run", "status", "files", "auth", "automations", "channels"].includes(parsed.command))
|
|
63
69
|
|| (parsed.command === "files" && !["register", "add"].includes(String(filesCommand)))) {
|
|
64
70
|
process.stderr.write(`Unknown command: ${parsed.command}\n\n${helpText()}`);
|
|
65
71
|
return 2;
|
|
@@ -157,9 +163,6 @@ async function runSelectedCli(argv, shutdown, profile) {
|
|
|
157
163
|
if (parsed.command === "automations") {
|
|
158
164
|
return await (await import("./automations-cli-host.js")).runShellAutomationsCli(automationArguments(parsed), () => host.automationRuntimeConnection());
|
|
159
165
|
}
|
|
160
|
-
if (RUNTIME_CLI_COMMANDS.has(parsed.command)) {
|
|
161
|
-
return await runRuntimeCli(parsed, () => host.automationRuntimeConnection());
|
|
162
|
-
}
|
|
163
166
|
if (parsed.command === "status") {
|
|
164
167
|
process.stdout.write(`${JSON.stringify({ ...await host.status(), ...(available ? { capabilities: available.capabilities } : {}) }, null, 2)}\n`);
|
|
165
168
|
return 0;
|
|
@@ -167,6 +170,14 @@ async function runSelectedCli(argv, shutdown, profile) {
|
|
|
167
170
|
if (parsed.command === "channels") {
|
|
168
171
|
return (await import("@amalgm/channels/cli")).runChannelsCli(channelsArguments(parsed), host.channelsCommands());
|
|
169
172
|
}
|
|
173
|
+
if (sharing) {
|
|
174
|
+
// The verb runs inside the one runtime that holds the rail and the
|
|
175
|
+
// access tables; the CLI only carries argv in and the streams out.
|
|
176
|
+
const result = await host.callFilesRuntime("/sharing/cli", { argv: sharing.forwarded });
|
|
177
|
+
process.stdout.write(String(result.stdout ?? ""));
|
|
178
|
+
process.stderr.write(String(result.stderr ?? ""));
|
|
179
|
+
return result.exitCode === 0 ? 0 : 1;
|
|
180
|
+
}
|
|
170
181
|
if (parsed.command === "files") {
|
|
171
182
|
if (parsed.positionals.length !== 2) {
|
|
172
183
|
throw new Error(`Usage: amalgm files ${filesCommand} <${filesCommand === "register" ? "path" : "workspace-id"}>`);
|
|
@@ -276,17 +287,6 @@ function numericOption(parsed, key) {
|
|
|
276
287
|
const value = Number(option(parsed, key));
|
|
277
288
|
return Number.isInteger(value) && value > 0 && value <= 65_535 ? value : undefined;
|
|
278
289
|
}
|
|
279
|
-
/** Commands that are thin adapters over the running runtime's loopback MCP routes. */
|
|
280
|
-
const RUNTIME_CLI_COMMANDS = new Set(["share", "apps", "tools"]);
|
|
281
|
-
async function runRuntimeCli(parsed, open) {
|
|
282
|
-
const adapters = await import("./runtime-mcp-cli-host.js");
|
|
283
|
-
const argv = automationArguments(parsed);
|
|
284
|
-
if (parsed.command === "share")
|
|
285
|
-
return adapters.runShellShareCli(argv, open);
|
|
286
|
-
if (parsed.command === "apps")
|
|
287
|
-
return adapters.runShellAppsCli(argv, open);
|
|
288
|
-
return adapters.runShellToolsCli(argv, open);
|
|
289
|
-
}
|
|
290
290
|
const SHELL_AUTOMATION_OPTIONS = new Set([
|
|
291
291
|
"app-url", "amalgm-root", "home", "user", "runtime-label", "branch", "local-session", "proxy-url", "wire-url", "port", "profile",
|
|
292
292
|
]);
|
|
@@ -329,7 +329,36 @@ function openBrowser(url) {
|
|
|
329
329
|
// The URL and setup code are always printed; browser launch is optional.
|
|
330
330
|
}
|
|
331
331
|
}
|
|
332
|
+
/** The eight Sharing verbs, named once by Live's own command list. */
|
|
333
|
+
const SHARING_COMMANDS = new Set(commandDefinitions.map((definition) => definition.name));
|
|
334
|
+
/** The flags the Shell itself reads to find the one running runtime for this
|
|
335
|
+
* user and environment. Everything else belongs to the verb. */
|
|
336
|
+
const SHARING_HOST_FLAGS = new Set([
|
|
337
|
+
"user", "home", "amalgm-root", "app-url", "branch", "local-session",
|
|
338
|
+
]);
|
|
339
|
+
function splitSharingArgv(args) {
|
|
340
|
+
const host = [];
|
|
341
|
+
const forwarded = [];
|
|
342
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
343
|
+
const argument = args[index];
|
|
344
|
+
const joined = argument.indexOf("=");
|
|
345
|
+
const name = argument.startsWith("--")
|
|
346
|
+
? argument.slice(2, joined === -1 ? undefined : joined)
|
|
347
|
+
: "";
|
|
348
|
+
if (!SHARING_HOST_FLAGS.has(name)) {
|
|
349
|
+
forwarded.push(argument);
|
|
350
|
+
continue;
|
|
351
|
+
}
|
|
352
|
+
host.push(argument);
|
|
353
|
+
const next = args[index + 1];
|
|
354
|
+
if (joined === -1 && next !== undefined && !next.startsWith("--")) {
|
|
355
|
+
host.push(next);
|
|
356
|
+
index += 1;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
return { host, forwarded };
|
|
360
|
+
}
|
|
332
361
|
function helpText() {
|
|
333
|
-
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 amalgm share
|
|
362
|
+
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 amalgm <share|link|access|unshare|publish|unpublish|download|request> [...] --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\nSharing:\n share, link, access, unshare, publish, unpublish, download, request\n Who may open an agent, automation, app, or tool. Identical to the\n Sharing MCP tools; \`amalgm share --help\` lists every field\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`;
|
|
334
363
|
}
|
|
335
364
|
//# 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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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Apply and Verify for the four construct types. A construct has no
|
|
3
|
+
* filesystem address, so nothing here touches ground: the host fetches and
|
|
4
|
+
* proves the payload into the machine content cache, and the product that
|
|
5
|
+
* owns the type decides when to switch to the received version and reports
|
|
6
|
+
* which version it is running.
|
|
7
|
+
*/
|
|
8
|
+
import { type CloudEntityRecord, type ContentManifest, type ConstructType, type EntityStatus, type TransferArtifact } from "@amalgm/live";
|
|
9
|
+
import type { AdapterDescriptor } from "@amalgm/live/detection";
|
|
10
|
+
import type { LocalApplyArtifact } from "./entity-apply-host.js";
|
|
11
|
+
/** What the product holds for one construct UUID right now. */
|
|
12
|
+
export interface ConstructHolding {
|
|
13
|
+
/** The payload version the product is running; null when it holds none. */
|
|
14
|
+
readonly version: string | null;
|
|
15
|
+
/** False once the product no longer holds the construct at all. */
|
|
16
|
+
readonly present: boolean;
|
|
17
|
+
}
|
|
18
|
+
/** The product half of construct Apply: one per construct entity type. */
|
|
19
|
+
export interface ConstructApplyProduct {
|
|
20
|
+
inspect(entityId: string): Promise<ConstructHolding>;
|
|
21
|
+
/**
|
|
22
|
+
* Every construct UUID this payload names. Which of them this computer
|
|
23
|
+
* holds is a rails fact, so the product reports what it reads and the host
|
|
24
|
+
* decides what is missing.
|
|
25
|
+
*/
|
|
26
|
+
payloadDependencies(payloadFile: string): Promise<readonly string[]>;
|
|
27
|
+
/** Switch to the received version. The payload is the proven cache file. */
|
|
28
|
+
switchTo(input: {
|
|
29
|
+
readonly entityId: string;
|
|
30
|
+
readonly payloadFile: string;
|
|
31
|
+
readonly name: string;
|
|
32
|
+
/** The version the record names: what this computer will be running. */
|
|
33
|
+
readonly version: string;
|
|
34
|
+
}): Promise<void>;
|
|
35
|
+
/** The six fields alone moved: a rename, a trash, a restore, or a delete. */
|
|
36
|
+
applyStructure(input: {
|
|
37
|
+
readonly entityId: string;
|
|
38
|
+
readonly name: string;
|
|
39
|
+
readonly status: EntityStatus;
|
|
40
|
+
}): Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
export interface ConstructApplyHostOptions {
|
|
43
|
+
/**
|
|
44
|
+
* Which product answers for a construct type in this installation, asked
|
|
45
|
+
* per act: the products are selected when the runtime starts, after the
|
|
46
|
+
* Apply rail that delivers to them is already built.
|
|
47
|
+
*/
|
|
48
|
+
readonly product: (type: ConstructType) => ConstructApplyProduct | null;
|
|
49
|
+
/** Fetch and prove one artifact into the machine content cache. */
|
|
50
|
+
readonly readContent: (artifact: TransferArtifact, manifest?: ContentManifest) => Promise<LocalApplyArtifact>;
|
|
51
|
+
/** Whether this computer holds the construct recorded at a UUID. */
|
|
52
|
+
readonly holds: (entityId: string) => boolean;
|
|
53
|
+
/** Remember the record this computer has now applied. */
|
|
54
|
+
readonly remember: (record: CloudEntityRecord) => void;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* One descriptor per construct type. Every socket is idempotent for the exact
|
|
58
|
+
* intent: the cache file is immutable content, and the product is asked what
|
|
59
|
+
* it holds rather than told what it should have.
|
|
60
|
+
*/
|
|
61
|
+
export declare function constructApplyAdapters(options: ConstructApplyHostOptions): readonly AdapterDescriptor[];
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Apply and Verify for the four construct types. A construct has no
|
|
3
|
+
* filesystem address, so nothing here touches ground: the host fetches and
|
|
4
|
+
* proves the payload into the machine content cache, and the product that
|
|
5
|
+
* owns the type decides when to switch to the received version and reports
|
|
6
|
+
* which version it is running.
|
|
7
|
+
*/
|
|
8
|
+
import { CONSTRUCT_TYPES, isConstructType, } from "@amalgm/live";
|
|
9
|
+
/**
|
|
10
|
+
* One descriptor per construct type. Every socket is idempotent for the exact
|
|
11
|
+
* intent: the cache file is immutable content, and the product is asked what
|
|
12
|
+
* it holds rather than told what it should have.
|
|
13
|
+
*/
|
|
14
|
+
export function constructApplyAdapters(options) {
|
|
15
|
+
return [...CONSTRUCT_TYPES]
|
|
16
|
+
.filter(isConstructType)
|
|
17
|
+
.map((type) => constructAdapter(type, options));
|
|
18
|
+
}
|
|
19
|
+
const productFor = (options, type) => {
|
|
20
|
+
const product = options.product(type);
|
|
21
|
+
if (!product)
|
|
22
|
+
throw new Error(`${type} is not selected in this installation`);
|
|
23
|
+
return product;
|
|
24
|
+
};
|
|
25
|
+
/** The cached payload this plan replays, proven by hash before the product
|
|
26
|
+
* is allowed to see it. */
|
|
27
|
+
const payloadFile = async (options, plan) => (await options.readContent(plan.artifact, plan.manifest)).file;
|
|
28
|
+
function constructAdapter(type, options) {
|
|
29
|
+
const isPayload = (plan) => plan.kind === type;
|
|
30
|
+
const apply = Object.freeze({
|
|
31
|
+
async prepare(_intent, plan) {
|
|
32
|
+
if (isPayload(plan))
|
|
33
|
+
await payloadFile(options, plan);
|
|
34
|
+
},
|
|
35
|
+
async guard(_intent, plan) {
|
|
36
|
+
if (!isPayload(plan))
|
|
37
|
+
return { kind: "safe" };
|
|
38
|
+
const product = productFor(options, type);
|
|
39
|
+
const holding = await product.inspect(plan.entityId);
|
|
40
|
+
if (holding.version === plan.target.payloadVersion)
|
|
41
|
+
return { kind: "already-target" };
|
|
42
|
+
const missing = (await product.payloadDependencies(await payloadFile(options, plan)))
|
|
43
|
+
.filter((dependency) => !options.holds(dependency));
|
|
44
|
+
// Dependencies are UUIDs inside the payload, each its own ordered
|
|
45
|
+
// channel: a missing one is ordinary delivery interleaving, so the lane
|
|
46
|
+
// waits and is re-proved when another lane makes progress.
|
|
47
|
+
if (missing.length > 0) {
|
|
48
|
+
return { kind: "dependency", reason: `awaiting ${missing.join(", ")}` };
|
|
49
|
+
}
|
|
50
|
+
return { kind: "safe" };
|
|
51
|
+
},
|
|
52
|
+
async reveal(_intent, plan) {
|
|
53
|
+
const product = productFor(options, type);
|
|
54
|
+
if (isPayload(plan)) {
|
|
55
|
+
const version = plan.target.payloadVersion;
|
|
56
|
+
if (version === null)
|
|
57
|
+
throw new Error(`${type} ${plan.entityId} replays a payload it does not name`);
|
|
58
|
+
await product.switchTo({
|
|
59
|
+
entityId: plan.entityId,
|
|
60
|
+
payloadFile: await payloadFile(options, plan),
|
|
61
|
+
name: plan.target.name,
|
|
62
|
+
version,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
await product.applyStructure({
|
|
67
|
+
entityId: plan.entityId,
|
|
68
|
+
name: plan.target.name,
|
|
69
|
+
status: plan.target.status,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
// The product moved, so this record is what this computer now holds:
|
|
73
|
+
// the base the next deliberate change here is proposed against.
|
|
74
|
+
options.remember(plan.target);
|
|
75
|
+
},
|
|
76
|
+
async discard() {
|
|
77
|
+
// Preparation is immutable cache content addressed by its own hash.
|
|
78
|
+
// The machine's content prune reclaims whatever no record still names.
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
const verify = Object.freeze({
|
|
82
|
+
async verify(_intent, plan) {
|
|
83
|
+
const holding = await productFor(options, type).inspect(plan.entityId);
|
|
84
|
+
if (isPayload(plan)) {
|
|
85
|
+
return holding.version === plan.target.payloadVersion
|
|
86
|
+
? { kind: "match" }
|
|
87
|
+
: { kind: "retry", reason: `${type} runs ${holding.version ?? "nothing"}` };
|
|
88
|
+
}
|
|
89
|
+
const wanted = plan.target.status !== "deleted";
|
|
90
|
+
return holding.present === wanted
|
|
91
|
+
? { kind: "match" }
|
|
92
|
+
: { kind: "retry", reason: `${type} ${holding.present ? "still holds" : "no longer holds"} ${plan.entityId}` };
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
return Object.freeze({
|
|
96
|
+
name: `${type}-apply`,
|
|
97
|
+
types: Object.freeze({
|
|
98
|
+
[type]: `${type} truth is the payload version the product reports running`,
|
|
99
|
+
}),
|
|
100
|
+
rails: Object.freeze({ apply, verify }),
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=construct-apply-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"construct-apply-host.js","sourceRoot":"","sources":["../src/construct-apply-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The intentional door, as a product reaches it.
|
|
3
|
+
*
|
|
4
|
+
* A product says "this is the app I now hold, and these are its bytes". The
|
|
5
|
+
* door derives the record — a construct is its own root, so the six fields
|
|
6
|
+
* are its type, name and status alone — proposes it against the record this
|
|
7
|
+
* computer last held, and hands Live's one door the result. Live seals the
|
|
8
|
+
* payload beside the outbox row and rings the rail; this records what the
|
|
9
|
+
* rails now say, so the next change has a base.
|
|
10
|
+
*/
|
|
11
|
+
import { type ConstructType, type EntityStatus, type IntentionalRecordStorePort } from "@amalgm/live";
|
|
12
|
+
import type { ConstructLedger } from "./construct-ledger.js";
|
|
13
|
+
/** One deliberate change to one construct, in the product's own words. */
|
|
14
|
+
export interface ConstructRecordChange {
|
|
15
|
+
readonly entityId: string;
|
|
16
|
+
readonly entityType: ConstructType;
|
|
17
|
+
readonly name: string;
|
|
18
|
+
readonly status: EntityStatus;
|
|
19
|
+
/**
|
|
20
|
+
* The product's serialization and the version naming those exact bytes, or
|
|
21
|
+
* null when only the named fields moved. Live refuses the record if the
|
|
22
|
+
* version is not the hash of the bytes.
|
|
23
|
+
*/
|
|
24
|
+
readonly payload: {
|
|
25
|
+
readonly bytes: Uint8Array;
|
|
26
|
+
readonly version: string;
|
|
27
|
+
} | null;
|
|
28
|
+
}
|
|
29
|
+
export type RecordConstruct = (change: ConstructRecordChange) => Promise<void>;
|
|
30
|
+
export declare function createConstructDoor(ports: {
|
|
31
|
+
readonly ledger: ConstructLedger;
|
|
32
|
+
readonly store: IntentionalRecordStorePort;
|
|
33
|
+
readonly now: () => number;
|
|
34
|
+
/** The rail's own signal, rung by Live after the outbox row commits. */
|
|
35
|
+
readonly localRecordsAvailable: () => void;
|
|
36
|
+
readonly mintMutationId?: () => string;
|
|
37
|
+
}): RecordConstruct;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The intentional door, as a product reaches it.
|
|
3
|
+
*
|
|
4
|
+
* A product says "this is the app I now hold, and these are its bytes". The
|
|
5
|
+
* door derives the record — a construct is its own root, so the six fields
|
|
6
|
+
* are its type, name and status alone — proposes it against the record this
|
|
7
|
+
* computer last held, and hands Live's one door the result. Live seals the
|
|
8
|
+
* payload beside the outbox row and rings the rail; this records what the
|
|
9
|
+
* rails now say, so the next change has a base.
|
|
10
|
+
*/
|
|
11
|
+
import { createHash } from "node:crypto";
|
|
12
|
+
import { canonicalVersion, recordIntentionalChange, } from "@amalgm/live";
|
|
13
|
+
const sha256Hex = (input) => createHash("sha256").update(input).digest("hex");
|
|
14
|
+
export function createConstructDoor(ports) {
|
|
15
|
+
const mintMutationId = ports.mintMutationId ?? (() => crypto.randomUUID());
|
|
16
|
+
return async (change) => {
|
|
17
|
+
const base = ports.ledger.record(change.entityId);
|
|
18
|
+
// A change that moves the fields alone keeps the payload head it had: the
|
|
19
|
+
// bytes did not move, so the record still names the version they hash to.
|
|
20
|
+
const fields = {
|
|
21
|
+
type: change.entityType,
|
|
22
|
+
parentUUID: null,
|
|
23
|
+
name: change.name,
|
|
24
|
+
status: change.status,
|
|
25
|
+
payloadVersion: change.payload?.version ?? base?.payloadVersion ?? null,
|
|
26
|
+
fileMode: null,
|
|
27
|
+
};
|
|
28
|
+
const result = Object.freeze({
|
|
29
|
+
uuid: change.entityId,
|
|
30
|
+
...fields,
|
|
31
|
+
version: canonicalVersion(fields, sha256Hex),
|
|
32
|
+
transportVersion: null,
|
|
33
|
+
});
|
|
34
|
+
const recorded = await recordIntentionalChange({
|
|
35
|
+
base,
|
|
36
|
+
result,
|
|
37
|
+
payload: change.payload?.bytes ?? null,
|
|
38
|
+
mutationId: mintMutationId(),
|
|
39
|
+
}, {
|
|
40
|
+
store: ports.store,
|
|
41
|
+
sha256Hex,
|
|
42
|
+
now: ports.now,
|
|
43
|
+
localRecordsAvailable: ports.localRecordsAvailable,
|
|
44
|
+
});
|
|
45
|
+
// Nothing was recorded when the result was already the base; the ledger
|
|
46
|
+
// already says so.
|
|
47
|
+
if (recorded)
|
|
48
|
+
ports.ledger.remember(result);
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=construct-door.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"construct-door.js","sourceRoot":"","sources":["../src/construct-door.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GAKxB,MAAM,cAAc,CAAC;AAoBtB,MAAM,SAAS,GAAG,CAAC,KAA0B,EAAU,EAAE,CACvD,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEnD,MAAM,UAAU,mBAAmB,CAAC,KAOnC;IACC,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3E,OAAO,KAAK,EAAE,MAA6B,EAAiB,EAAE;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClD,0EAA0E;QAC1E,0EAA0E;QAC1E,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,MAAM,CAAC,UAAU;YACvB,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,cAAc,IAAI,IAAI;YACvE,QAAQ,EAAE,IAAI;SACN,CAAC;QACX,MAAM,MAAM,GAAsB,MAAM,CAAC,MAAM,CAAC;YAC9C,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,GAAG,MAAM;YACT,OAAO,EAAE,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC;YAC5C,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC;YAC7C,IAAI;YACJ,MAAM;YACN,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI;YACtC,UAAU,EAAE,cAAc,EAAE;SAC7B,EAAE;YACD,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS;YACT,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;SACnD,CAAC,CAAC;QACH,wEAAwE;QACxE,mBAAmB;QACnB,IAAI,QAAQ;YAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The construct records this computer holds.
|
|
3
|
+
*
|
|
4
|
+
* A construct has no ground: no path, no inode, nothing on disk that proves
|
|
5
|
+
* it exists. Its record is the whole local fact — the entity type that routes
|
|
6
|
+
* it to a product, and the six fields the next record is proposed against. A
|
|
7
|
+
* delete keeps its row as a tombstone, because a later change on the rails is
|
|
8
|
+
* still proposed against the record this computer last held.
|
|
9
|
+
*
|
|
10
|
+
* The product owns what it runs; this ledger owns what the rails said. They
|
|
11
|
+
* are different questions, and Apply asks the product, never this table.
|
|
12
|
+
*/
|
|
13
|
+
import type Database from "better-sqlite3";
|
|
14
|
+
import type { CloudEntityRecord } from "@amalgm/live";
|
|
15
|
+
export declare class ConstructLedger {
|
|
16
|
+
#private;
|
|
17
|
+
constructor(database: Database.Database, now?: () => number);
|
|
18
|
+
/** The record this computer last held for a UUID; null when it held none. */
|
|
19
|
+
record(uuid: string): CloudEntityRecord | null;
|
|
20
|
+
/** The entity type recorded here, for the doors that dispatch by kind. */
|
|
21
|
+
kind(uuid: string): string | null;
|
|
22
|
+
/** Whether this computer holds the construct: a tombstone holds nothing. */
|
|
23
|
+
holds(uuid: string): boolean;
|
|
24
|
+
/** Remember one record, whether this computer recorded it or received it. */
|
|
25
|
+
remember(entity: CloudEntityRecord): void;
|
|
26
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The construct records this computer holds.
|
|
3
|
+
*
|
|
4
|
+
* A construct has no ground: no path, no inode, nothing on disk that proves
|
|
5
|
+
* it exists. Its record is the whole local fact — the entity type that routes
|
|
6
|
+
* it to a product, and the six fields the next record is proposed against. A
|
|
7
|
+
* delete keeps its row as a tombstone, because a later change on the rails is
|
|
8
|
+
* still proposed against the record this computer last held.
|
|
9
|
+
*
|
|
10
|
+
* The product owns what it runs; this ledger owns what the rails said. They
|
|
11
|
+
* are different questions, and Apply asks the product, never this table.
|
|
12
|
+
*/
|
|
13
|
+
const record = (row) => Object.freeze({
|
|
14
|
+
uuid: row.uuid,
|
|
15
|
+
type: row.type,
|
|
16
|
+
// A construct is its own root and its own authority: it has no parent, no
|
|
17
|
+
// file mode, and no repository transport head.
|
|
18
|
+
parentUUID: null,
|
|
19
|
+
name: row.name,
|
|
20
|
+
status: row.status,
|
|
21
|
+
version: row.version,
|
|
22
|
+
payloadVersion: row.payload_version,
|
|
23
|
+
fileMode: null,
|
|
24
|
+
transportVersion: null,
|
|
25
|
+
});
|
|
26
|
+
export class ConstructLedger {
|
|
27
|
+
#read;
|
|
28
|
+
#write;
|
|
29
|
+
#now;
|
|
30
|
+
constructor(database, now = Date.now) {
|
|
31
|
+
database.exec(`
|
|
32
|
+
CREATE TABLE IF NOT EXISTS constructs (
|
|
33
|
+
uuid TEXT PRIMARY KEY,
|
|
34
|
+
type TEXT NOT NULL,
|
|
35
|
+
name TEXT NOT NULL,
|
|
36
|
+
status TEXT NOT NULL,
|
|
37
|
+
version TEXT NOT NULL,
|
|
38
|
+
payload_version TEXT,
|
|
39
|
+
updated_at_ms INTEGER NOT NULL
|
|
40
|
+
)
|
|
41
|
+
`);
|
|
42
|
+
this.#read = database.prepare(`
|
|
43
|
+
SELECT uuid, type, name, status, version, payload_version
|
|
44
|
+
FROM constructs
|
|
45
|
+
WHERE uuid = ?
|
|
46
|
+
`);
|
|
47
|
+
this.#write = database.prepare(`
|
|
48
|
+
INSERT INTO constructs(uuid, type, name, status, version, payload_version, updated_at_ms)
|
|
49
|
+
VALUES(@uuid, @type, @name, @status, @version, @payloadVersion, @updatedAtMs)
|
|
50
|
+
ON CONFLICT(uuid) DO UPDATE SET
|
|
51
|
+
type = excluded.type,
|
|
52
|
+
name = excluded.name,
|
|
53
|
+
status = excluded.status,
|
|
54
|
+
version = excluded.version,
|
|
55
|
+
payload_version = excluded.payload_version,
|
|
56
|
+
updated_at_ms = excluded.updated_at_ms
|
|
57
|
+
`);
|
|
58
|
+
this.#now = now;
|
|
59
|
+
}
|
|
60
|
+
/** The record this computer last held for a UUID; null when it held none. */
|
|
61
|
+
record(uuid) {
|
|
62
|
+
const row = this.#read.get(uuid);
|
|
63
|
+
return row ? record(row) : null;
|
|
64
|
+
}
|
|
65
|
+
/** The entity type recorded here, for the doors that dispatch by kind. */
|
|
66
|
+
kind(uuid) {
|
|
67
|
+
return this.record(uuid)?.type ?? null;
|
|
68
|
+
}
|
|
69
|
+
/** Whether this computer holds the construct: a tombstone holds nothing. */
|
|
70
|
+
holds(uuid) {
|
|
71
|
+
return this.record(uuid)?.status === "active";
|
|
72
|
+
}
|
|
73
|
+
/** Remember one record, whether this computer recorded it or received it. */
|
|
74
|
+
remember(entity) {
|
|
75
|
+
this.#write.run({
|
|
76
|
+
uuid: entity.uuid,
|
|
77
|
+
type: entity.type,
|
|
78
|
+
name: entity.name,
|
|
79
|
+
status: entity.status,
|
|
80
|
+
version: entity.version,
|
|
81
|
+
payloadVersion: entity.payloadVersion,
|
|
82
|
+
updatedAtMs: this.#now(),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=construct-ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"construct-ledger.js","sourceRoot":"","sources":["../src/construct-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAeH,MAAM,MAAM,GAAG,CAAC,GAAiB,EAAqB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;IACrE,IAAI,EAAE,GAAG,CAAC,IAAI;IACd,IAAI,EAAE,GAAG,CAAC,IAAiC;IAC3C,0EAA0E;IAC1E,+CAA+C;IAC/C,UAAU,EAAE,IAAI;IAChB,IAAI,EAAE,GAAG,CAAC,IAAI;IACd,MAAM,EAAE,GAAG,CAAC,MAAqC;IACjD,OAAO,EAAE,GAAG,CAAC,OAAO;IACpB,cAAc,EAAE,GAAG,CAAC,eAAe;IACnC,QAAQ,EAAE,IAAI;IACd,gBAAgB,EAAE,IAAI;CACvB,CAAC,CAAC;AAEH,MAAM,OAAO,eAAe;IACjB,KAAK,CAAqB;IAC1B,MAAM,CAAqB;IAC3B,IAAI,CAAe;IAE5B,YAAY,QAA2B,EAAE,MAAoB,IAAI,CAAC,GAAG;QACnE,QAAQ,CAAC,IAAI,CAAC;;;;;;;;;;KAUb,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;;;;KAI7B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC;;;;;;;;;;KAU9B,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,6EAA6E;IAC7E,MAAM,CAAC,IAAY;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAA6B,CAAC;QAC7D,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClC,CAAC;IAED,0EAA0E;IAC1E,IAAI,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;IACzC,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,IAAY;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,QAAQ,CAAC;IAChD,CAAC;IAED,6EAA6E;IAC7E,QAAQ,CAAC,MAAyB;QAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YACd,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE;SACzB,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One `ConstructPort` over the four construct products. `resolve` is told
|
|
3
|
+
* the kind; the other three are given a UUID alone, so the dispatcher asks
|
|
4
|
+
* the ground which entity type that UUID is — a construct is an entity on
|
|
5
|
+
* the rails, and its own row is the only index of which product owns it.
|
|
6
|
+
*/
|
|
7
|
+
import { type ConstructType } from "@amalgm/live";
|
|
8
|
+
import type { ConstructIdentity, ConstructPort } from "@amalgm/live/sharing";
|
|
9
|
+
/** What one construct product answers about its own constructs. */
|
|
10
|
+
export interface ConstructProduct {
|
|
11
|
+
resolve(ref: string): Promise<ConstructIdentity>;
|
|
12
|
+
dependencies(id: string): Promise<string[]>;
|
|
13
|
+
copy(id: string): Promise<ConstructIdentity>;
|
|
14
|
+
trash(id: string): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export interface ConstructProductsInput {
|
|
17
|
+
/** The selected products, by the entity type they own. */
|
|
18
|
+
readonly products: Partial<Record<ConstructType, ConstructProduct>>;
|
|
19
|
+
/** The entity type recorded for this UUID on this computer. */
|
|
20
|
+
readonly kindOf: (id: string) => Promise<string | null>;
|
|
21
|
+
}
|
|
22
|
+
export declare function createConstructPort(input: ConstructProductsInput): ConstructPort;
|