@amalgm/shell 0.1.164-preview.35150047652 → 0.1.164-preview.35182619329
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 +32 -7
- package/README.md +7 -0
- package/dist/agent-execution.d.ts +70 -0
- package/dist/agent-execution.js +86 -0
- package/dist/agent-execution.js.map +1 -0
- package/dist/automations-host.d.ts +2 -0
- package/dist/automations-host.js.map +1 -1
- package/dist/boot.js +20 -27
- 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/channel-session.d.ts +50 -0
- package/dist/channel-session.js +32 -0
- package/dist/channel-session.js.map +1 -0
- package/dist/chat-composition.js +8 -121
- package/dist/chat-composition.js.map +1 -1
- package/dist/chat-toolbox.js +7 -4
- package/dist/chat-toolbox.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 +70 -87
- package/dist/machine-host.js.map +1 -1
- package/dist/official-mcp-host.js +7 -1
- package/dist/official-mcp-host.js.map +1 -1
- package/dist/platform-product-host.d.ts +2 -0
- package/dist/platform-product-host.js +4 -1
- package/dist/platform-product-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/tool-mcp-client.js +19 -1
- package/dist/tool-mcp-client.js.map +1 -1
- package/dist/toolbox-host.d.ts +4 -0
- package/dist/toolbox-host.js +10 -0
- package/dist/toolbox-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 +2 -9
- package/dist/wire-client.js +87 -17
- 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 +31 -28
- package/package.json +8 -8
- 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/PURPOSE.md
CHANGED
|
@@ -12,6 +12,11 @@ Shell code.
|
|
|
12
12
|
|
|
13
13
|
## Operating axioms
|
|
14
14
|
|
|
15
|
+
For outgoing email, Shell supplies its source computer and home directory to
|
|
16
|
+
Channels' local adapter. Agents continue producing resource references; UI's
|
|
17
|
+
portable link grammar derives surface URLs. This context names the source and
|
|
18
|
+
never grants the recipient access.
|
|
19
|
+
|
|
15
20
|
These are the required operating contract, not a statement that every current
|
|
16
21
|
installation satisfies it. The [operating contract](docs/operating-contract.md)
|
|
17
22
|
defines the terms and examinations; the [September 2026 audit](docs/operating-audit-2026-09-05.md)
|
|
@@ -47,6 +52,11 @@ gap to resolve at its owning SDK, not a reason to perpetuate the violation.
|
|
|
47
52
|
|
|
48
53
|
## Axioms
|
|
49
54
|
|
|
55
|
+
Channel orchestration resolves an explicit thread seed through Agents for a new
|
|
56
|
+
Chat session. The seed supplies computer, cwd, model overrides and instructions;
|
|
57
|
+
Shell never guesses from recent activity. Existing sessions remain Chat's
|
|
58
|
+
authority, and Channels sends carry the trusted originating session identity.
|
|
59
|
+
|
|
50
60
|
Registry acceptance and public installability are separate states; publication
|
|
51
61
|
waits for the exact examined bytes to become readable before recording success.
|
|
52
62
|
|
|
@@ -67,6 +77,13 @@ The registry file is authoritative. Replacement validates the complete registry,
|
|
|
67
77
|
flushes private temporary bytes and atomically renames them; a failed write cannot
|
|
68
78
|
publish uncommitted entries from memory, and corrupt state is never treated as empty.
|
|
69
79
|
|
|
80
|
+
Remote HTTP requests target the same authenticated Shell mounts as loopback
|
|
81
|
+
requests. The existing wire stream protocol preserves response status and bytes
|
|
82
|
+
incrementally with bounded buffering. A request belongs to its original wire;
|
|
83
|
+
subscriber cancellation or wire loss aborts only that HTTP subscription, never
|
|
84
|
+
the product operation it observes. Product interruption requires its explicit API.
|
|
85
|
+
Shell advertises HTTP streaming explicitly in the authenticated wire hello.
|
|
86
|
+
|
|
70
87
|
A materialized row proves local observation, not completed official delivery.
|
|
71
88
|
An independent later observation starts from a settled basis only after earlier
|
|
72
89
|
mutations are accepted, their matching Inbox records resolve, and Apply releases
|
|
@@ -156,13 +173,13 @@ uses another data home. Windows Task Scheduler owns a hidden action in that
|
|
|
156
173
|
account's logged-in session; the action owns controller exit recovery using
|
|
157
174
|
Core's restart policy. Scheduler launch retries alone cannot recover a program
|
|
158
175
|
that started successfully and then exited.
|
|
176
|
+
The stable bootstrap retains a bounded result for each controller launch role,
|
|
177
|
+
including failures before the controller can open its own log.
|
|
159
178
|
Before launching any controller, the Windows action joins its own unnamed,
|
|
160
179
|
non-inheritable, kill-on-close Job Object; every descendant remains inside that
|
|
161
180
|
lifetime boundary, and only action termination releases its owning handle.
|
|
162
181
|
Failed job admission refuses launch, and stopping one action releases its parked
|
|
163
182
|
bootstrap and descendants without discovering or signalling remembered PIDs.
|
|
164
|
-
The stable bootstrap retains a bounded result for each controller launch role,
|
|
165
|
-
including failures before the controller can open its own log.
|
|
166
183
|
Native service descriptions preserve literal arguments, environment values and
|
|
167
184
|
working directories through the owning OS parser. Each directive uses its own
|
|
168
185
|
grammar; unrepresentable input is refused before replacing a service description.
|
|
@@ -1173,12 +1190,20 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
|
|
|
1173
1190
|
`channels.notify_user` is one registered automation action, never a special
|
|
1174
1191
|
scheduling path. Gateway is not a product relay, and Shell stores no
|
|
1175
1192
|
portable Automations or Channels database.
|
|
1193
|
+
Chat and Automations share one Toolbox whose host composition always supplies
|
|
1194
|
+
the authenticated MCP driver for installed product routes. An automation's
|
|
1195
|
+
run-step idempotency key crosses that loopback route as trusted execution
|
|
1196
|
+
metadata; the owning product applies it without changing the workflow input.
|
|
1197
|
+
Runtime credentials and trusted host headers never accompany external MCP
|
|
1198
|
+
connections.
|
|
1176
1199
|
Channels inbound work stays hosted only until Chat durably admits its turn.
|
|
1177
|
-
A new email conversation
|
|
1178
|
-
|
|
1179
|
-
alone is not an executable selection
|
|
1180
|
-
|
|
1181
|
-
|
|
1200
|
+
A new email conversation resolves the thread's explicit saved defaults --
|
|
1201
|
+
agent, model settings, computer, working directory and instructions --
|
|
1202
|
+
through Agents; an agent id alone is not an executable selection, and Shell
|
|
1203
|
+
never guesses from recent activity. Missing defaults hold the work for
|
|
1204
|
+
configuration, the defaults must name this computer, and the selected agent
|
|
1205
|
+
must already carry Channels send access. Replies resume the session's latest
|
|
1206
|
+
admitted execution, which stays Chat's authority.
|
|
1182
1207
|
The machine reconciles on every event-stream connection, so a wakeup is
|
|
1183
1208
|
never the authority. Shell preserves Chat's session id as hidden MCP
|
|
1184
1209
|
metadata and never exposes it as a model-chosen Channels argument. The
|
package/README.md
CHANGED
|
@@ -93,6 +93,13 @@ npx --package @amalgm/shell amalgm automations list --user person@example.com
|
|
|
93
93
|
# Create/update inputs can be streamed so credentials never appear in argv
|
|
94
94
|
printf '%s\n' '{"name":"Daily review"}' \
|
|
95
95
|
| npx --package @amalgm/shell amalgm automations create --stdin --user person@example.com
|
|
96
|
+
|
|
97
|
+
# Share a construct and everything it depends on; --only shares the head alone
|
|
98
|
+
npx --package @amalgm/shell amalgm share app "Design Canvas" --add someone@example.com --role editor --user person@example.com
|
|
99
|
+
|
|
100
|
+
# See who can reach it, then revoke everything that share gave
|
|
101
|
+
npx --package @amalgm/shell amalgm access app "Design Canvas" --user person@example.com
|
|
102
|
+
npx --package @amalgm/shell amalgm unshare app "Design Canvas" --user person@example.com
|
|
96
103
|
```
|
|
97
104
|
|
|
98
105
|
Requires Node ≥ 24 and npm ≥ 11.19.1 < 12.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { Agents } from "@amalgm/agents";
|
|
2
|
+
import type { Toolbox } from "@amalgm/tools";
|
|
3
|
+
/** Resolve an installed agent once through its owning SDK before Chat starts. */
|
|
4
|
+
export interface AgentExecutionContext {
|
|
5
|
+
readonly agents: Agents;
|
|
6
|
+
readonly toolbox?: Toolbox;
|
|
7
|
+
readonly computerId: string;
|
|
8
|
+
readonly stateDir: string;
|
|
9
|
+
readonly amalgmDir?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function resolveAgentRun(options: AgentExecutionContext, installationId: string, selection?: {
|
|
12
|
+
modelId?: string;
|
|
13
|
+
}): Readonly<{
|
|
14
|
+
title: string;
|
|
15
|
+
execution: {
|
|
16
|
+
agent: {
|
|
17
|
+
adapterId: string;
|
|
18
|
+
installationId: string;
|
|
19
|
+
revisionId: string;
|
|
20
|
+
};
|
|
21
|
+
model: {
|
|
22
|
+
settings: ({
|
|
23
|
+
configId: string;
|
|
24
|
+
type: "boolean";
|
|
25
|
+
value: boolean;
|
|
26
|
+
} | {
|
|
27
|
+
configId: string;
|
|
28
|
+
value: string;
|
|
29
|
+
type?: undefined;
|
|
30
|
+
})[];
|
|
31
|
+
providerId: string;
|
|
32
|
+
modelId: string;
|
|
33
|
+
};
|
|
34
|
+
auth: {
|
|
35
|
+
mode: "byok";
|
|
36
|
+
bindingId: string;
|
|
37
|
+
} | {
|
|
38
|
+
mode: "subscription";
|
|
39
|
+
bindingId: string;
|
|
40
|
+
} | {
|
|
41
|
+
mode: "platform";
|
|
42
|
+
bindingId: string;
|
|
43
|
+
};
|
|
44
|
+
tools: {
|
|
45
|
+
exposure?: Record<string, "direct" | "search" | "hidden"> | undefined;
|
|
46
|
+
revisionId: string | null;
|
|
47
|
+
toolIds: string[];
|
|
48
|
+
};
|
|
49
|
+
cwd: {
|
|
50
|
+
path: string;
|
|
51
|
+
workspaceId: null;
|
|
52
|
+
materializationRevision: null;
|
|
53
|
+
};
|
|
54
|
+
permissionMode: "ask" | "full_access";
|
|
55
|
+
computerId: string;
|
|
56
|
+
};
|
|
57
|
+
}>;
|
|
58
|
+
export declare function modelSelection(id: string, adapterId: string): {
|
|
59
|
+
providerId: string;
|
|
60
|
+
modelId: string;
|
|
61
|
+
};
|
|
62
|
+
export declare function modelSettings(settings: Readonly<Record<string, unknown>>): ({
|
|
63
|
+
configId: string;
|
|
64
|
+
type: "boolean";
|
|
65
|
+
value: boolean;
|
|
66
|
+
} | {
|
|
67
|
+
configId: string;
|
|
68
|
+
value: string;
|
|
69
|
+
type?: undefined;
|
|
70
|
+
})[];
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export function resolveAgentRun(options, installationId, selection = {}) {
|
|
2
|
+
const record = options.agents.getAgent(installationId);
|
|
3
|
+
if (!record)
|
|
4
|
+
throw Object.assign(new Error(`Installed agent was not found: ${installationId}`), {
|
|
5
|
+
code: "AGENT_NOT_FOUND",
|
|
6
|
+
});
|
|
7
|
+
const revision = options.agents.getAgentRevision(installationId, record.currentRevisionId);
|
|
8
|
+
const definition = revision.definition;
|
|
9
|
+
const modelId = selection.modelId ?? definition.model?.id;
|
|
10
|
+
if (!modelId) {
|
|
11
|
+
throw Object.assign(new Error(`Installed agent has no model: ${installationId}`), {
|
|
12
|
+
code: "AGENT_MODEL_REQUIRED",
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
const model = modelSelection(modelId, definition.driver.id);
|
|
16
|
+
const tools = [...new Set([
|
|
17
|
+
...definition.toolbox.toolIds,
|
|
18
|
+
...definition.toolbox.actionIds,
|
|
19
|
+
...strings(definition.metadata["mcpAppIds"]),
|
|
20
|
+
])];
|
|
21
|
+
return Object.freeze({
|
|
22
|
+
title: definition.name,
|
|
23
|
+
execution: {
|
|
24
|
+
agent: {
|
|
25
|
+
adapterId: definition.driver.id,
|
|
26
|
+
installationId,
|
|
27
|
+
revisionId: revision.id,
|
|
28
|
+
},
|
|
29
|
+
model: { ...model, settings: modelSettings(definition.model?.settings ?? {}) },
|
|
30
|
+
auth: authSelection(installationId, definition.authRef),
|
|
31
|
+
tools: {
|
|
32
|
+
revisionId: tools.length > 0 ? requiredToolbox(options).catalog().revisionId : null,
|
|
33
|
+
toolIds: tools,
|
|
34
|
+
...(definition.toolbox.exposure ? { exposure: definition.toolbox.exposure } : {}),
|
|
35
|
+
},
|
|
36
|
+
cwd: {
|
|
37
|
+
path: definition.workspace.cwd || options.amalgmDir || options.stateDir,
|
|
38
|
+
workspaceId: null,
|
|
39
|
+
materializationRevision: null,
|
|
40
|
+
},
|
|
41
|
+
permissionMode: definition.metadata["permissionMode"] === "ask" ? "ask" : "full_access",
|
|
42
|
+
computerId: options.computerId,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function requiredToolbox(options) {
|
|
47
|
+
if (!options.toolbox)
|
|
48
|
+
throw new Error("Agent tools require the Shell Toolbox capability");
|
|
49
|
+
return options.toolbox;
|
|
50
|
+
}
|
|
51
|
+
export function modelSelection(id, adapterId) {
|
|
52
|
+
const slash = id.indexOf("/");
|
|
53
|
+
if (slash > 0)
|
|
54
|
+
return { providerId: id.slice(0, slash), modelId: id.slice(slash + 1) };
|
|
55
|
+
return {
|
|
56
|
+
providerId: adapterId === "claude_code" ? "anthropic" : adapterId === "codex" ? "openai" : adapterId,
|
|
57
|
+
modelId: id,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export function modelSettings(settings) {
|
|
61
|
+
return Object.entries(settings).map(([rawId, value]) => {
|
|
62
|
+
const configId = rawId === "effort" ? "reasoning_effort" : rawId === "fastMode" ? "fast" : rawId;
|
|
63
|
+
if (typeof value === "boolean")
|
|
64
|
+
return { configId, type: "boolean", value };
|
|
65
|
+
if (typeof value === "string" || typeof value === "number")
|
|
66
|
+
return { configId, value: String(value) };
|
|
67
|
+
throw Object.assign(new Error(`Agent model setting must be scalar: ${rawId}`), {
|
|
68
|
+
code: "AGENT_MODEL_SETTING_INVALID",
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function authSelection(installationId, authRef) {
|
|
73
|
+
const selected = authRef || "amalgm";
|
|
74
|
+
if (selected === "byok")
|
|
75
|
+
return { mode: "byok", bindingId: "default" };
|
|
76
|
+
if (selected === "provider_auth" || selected === "subscription") {
|
|
77
|
+
return { mode: "subscription", bindingId: `${installationId}:provider_auth` };
|
|
78
|
+
}
|
|
79
|
+
return { mode: "platform", bindingId: `${installationId}:${selected}` };
|
|
80
|
+
}
|
|
81
|
+
function strings(value) {
|
|
82
|
+
return Array.isArray(value)
|
|
83
|
+
? value.filter((item) => typeof item === "string" && Boolean(item.trim()))
|
|
84
|
+
: [];
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=agent-execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-execution.js","sourceRoot":"","sources":["../src/agent-execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ export interface AutomationsHostConfig {
|
|
|
6
6
|
principal?: (request: Request) => Promise<AutomationPrincipal>;
|
|
7
7
|
/** Fixed identity used only for portable bundle export/install. */
|
|
8
8
|
bundlePrincipal?: AutomationPrincipal;
|
|
9
|
+
/** Recipient target for installed bundle automations; never inferred. */
|
|
10
|
+
bundleTargetId?: string;
|
|
9
11
|
}
|
|
10
12
|
export declare function automationPrincipal(config: AutomationsHostConfig, request: Request): Promise<AutomationPrincipal>;
|
|
11
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automations-host.js","sourceRoot":"","sources":["../src/automations-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"automations-host.js","sourceRoot":"","sources":["../src/automations-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAe1D,MAAM,eAAe,GAAwB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAEhF,MAAM,UAAU,mBAAmB,CACjC,MAA6B,EAC7B,OAAgB;IAEhB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AACzF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA6B;IAC5D,MAAM,GAAG,GAAG,mBAAmB,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC;KAChE,CAAC,CAAC;IAEH,OAAO;QACL,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;YACnC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC;YACxD,MAAM,OAAO,GAA2B,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxD,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YACvD,CAAC;YACD,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,8BAA8B,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE;gBACjF,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;aACjG,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;YACpC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC/E,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/boot.js
CHANGED
|
@@ -3,7 +3,7 @@ import { join } from "node:path";
|
|
|
3
3
|
import { Agents, listAgentConfigs } from "@amalgm/agents";
|
|
4
4
|
import { createRestServer } from "@amalgm/agents/http";
|
|
5
5
|
import { createMcpServer as createAgentsMcp, createMcpTools as createAgentsMcpTools } from "@amalgm/agents/mcp";
|
|
6
|
-
import { createMcpServer as createAppsMcp, createMcpTools as createAppsMcpTools
|
|
6
|
+
import { createMcpServer as createAppsMcp, createMcpTools as createAppsMcpTools } from "@amalgm/apps";
|
|
7
7
|
import { createAppsHttpServer } from "@amalgm/apps/http";
|
|
8
8
|
import { createAutomationMcpServer } from "@amalgm/automations/mcp";
|
|
9
9
|
import { createBrowser, } from "@amalgm/browser";
|
|
@@ -14,7 +14,7 @@ import { runtimeTokenFromEnv } from "@amalgm/core/transport";
|
|
|
14
14
|
import { createChatMcpServer } from "@amalgm/chat/mcp";
|
|
15
15
|
import { coerceRuntimeLabel, runtimeLogDir, runtimeStateDir, userMachineDir } from "@amalgm/core/identity";
|
|
16
16
|
import { StateRail } from "@amalgm/core/state";
|
|
17
|
-
import { createMcpServer as createToolsMcp
|
|
17
|
+
import { createMcpServer as createToolsMcp } from "@amalgm/tools";
|
|
18
18
|
import { createToolboxHttpServer } from "@amalgm/tools/http";
|
|
19
19
|
import { automationsMount } from "./automations-host.js";
|
|
20
20
|
import { installBuiltinAgents } from "./builtin-agents.js";
|
|
@@ -22,10 +22,9 @@ import { createShellChatComposition } from "./chat-composition.js";
|
|
|
22
22
|
import { connectOfficialMcpServer } from "./official-mcp-host.js";
|
|
23
23
|
import { platformToolDefinitions } from "./platform-tools.js";
|
|
24
24
|
import { createShellBundlePort } from "./bundle-port.js";
|
|
25
|
-
import { InstalledAutomations } from "./installed-automations.js";
|
|
26
25
|
import { composeShell } from "./compose.js";
|
|
27
26
|
import { createCredentialVault, credentialVaultMounts } from "./credentials-host.js";
|
|
28
|
-
import {
|
|
27
|
+
import { createShellToolsMcp } from "./toolbox-host.js";
|
|
29
28
|
import { forwardMount } from "./forward.js";
|
|
30
29
|
import { filesBrowserMount } from "./files-browser-host.js";
|
|
31
30
|
import { eventTriggersMount } from "./event-triggers-host.js";
|
|
@@ -48,7 +47,6 @@ import { createWorkspaceHost, workspacePathHost } from "./workspace-host.js";
|
|
|
48
47
|
export async function bootShell(config = {}) {
|
|
49
48
|
const { stateDirs, userDir, deviceId } = composeShell(config);
|
|
50
49
|
const env = config.env ?? process.env;
|
|
51
|
-
const computerId = String(env.AMALGM_COMPUTER_ID || deviceId);
|
|
52
50
|
const token = config.runtimeToken ?? runtimeTokenFromEnv(env) ?? "shell-internal";
|
|
53
51
|
const home = config.homedir ?? homedir();
|
|
54
52
|
const pty = createPtyHost({ env, defaultCwd: home });
|
|
@@ -73,32 +71,19 @@ export async function bootShell(config = {}) {
|
|
|
73
71
|
browser: { tools: createBrowserMcpTools({}) },
|
|
74
72
|
products: { automations: Boolean(config.automations), channels: false },
|
|
75
73
|
});
|
|
76
|
-
const apps = createAppsMcp({
|
|
77
|
-
stateDir: stateDirs.apps,
|
|
78
|
-
onChange: (app) => state.append({
|
|
79
|
-
resource: "apps",
|
|
80
|
-
op: "deleted" in app ? "delete" : "update",
|
|
81
|
-
id: app.id,
|
|
82
|
-
...("deleted" in app ? {} : { value: app }),
|
|
83
|
-
source: "apps",
|
|
84
|
-
}),
|
|
85
|
-
});
|
|
86
74
|
const credentialVault = createCredentialVault(join(userMachineDir(userDir, deviceId), "credentials"));
|
|
87
|
-
const
|
|
88
|
-
localBaseUrl: () => `http://127.0.0.1:${gatewayPort()}`, runtimeToken: () => token,
|
|
89
|
-
});
|
|
90
|
-
const tools = createToolsMcp({
|
|
91
|
-
drivers: [createMcpDriver(toolMcpClient)],
|
|
75
|
+
const tools = await createShellToolsMcp({
|
|
92
76
|
credentials: { get: (ref) => credentialVault.getSecret(ref), set: (ref, value) => credentialVault.putSecret(ref, value), delete: (ref) => credentialVault.deleteSecret(ref) },
|
|
93
77
|
databaseFile: join(runtimeDir, "services", "tools", "tools.db"),
|
|
94
78
|
deploymentDir: stateDirs.toolbox,
|
|
95
79
|
systemTools: [...platformTools],
|
|
96
|
-
environment: (tool) => (tool.appId ? linkedToolEnvironment(apps.apps.get(tool.appId)) : {}),
|
|
97
80
|
onChange: (catalog) => {
|
|
98
81
|
state.append({ resource: "toolbox", op: "replace", value: catalog, source: "toolbox-projection" });
|
|
99
82
|
state.append({ resource: "tools", op: "replace", value: catalog.tools, source: "toolbox-projection" });
|
|
100
83
|
state.append({ resource: "tool_actions", op: "replace", value: catalog.actions, source: "toolbox-projection" });
|
|
101
84
|
},
|
|
85
|
+
}, {
|
|
86
|
+
localBaseUrl: () => `http://127.0.0.1:${gatewayPort()}`, runtimeToken: () => token,
|
|
102
87
|
});
|
|
103
88
|
const toolDeploymentSurface = tools.toolbox.deploymentSurface();
|
|
104
89
|
const stopToolDeploymentEvents = toolDeploymentSurface.observeEdits((activation) => {
|
|
@@ -110,6 +95,16 @@ export async function bootShell(config = {}) {
|
|
|
110
95
|
source: toolDeploymentSurface.contract,
|
|
111
96
|
});
|
|
112
97
|
});
|
|
98
|
+
const apps = createAppsMcp({
|
|
99
|
+
stateDir: stateDirs.apps,
|
|
100
|
+
onChange: (app) => state.append({
|
|
101
|
+
resource: "apps",
|
|
102
|
+
op: "deleted" in app ? "delete" : "update",
|
|
103
|
+
id: app.id,
|
|
104
|
+
...("deleted" in app ? {} : { value: app }),
|
|
105
|
+
source: "apps",
|
|
106
|
+
}),
|
|
107
|
+
});
|
|
113
108
|
const agentsService = new Agents({ stateDir: stateDirs.agents });
|
|
114
109
|
installBuiltinAgents(agentsService, platformTools.map((tool) => tool.id));
|
|
115
110
|
const agents = createAgentsMcp({ agents: agentsService });
|
|
@@ -152,15 +147,13 @@ export async function bootShell(config = {}) {
|
|
|
152
147
|
?? (config.automations && !config.automations.principal
|
|
153
148
|
? { userId: "local", scopes: ["*"] }
|
|
154
149
|
: null);
|
|
155
|
-
// An accepted automation lives and runs on the machine that accepted it.
|
|
156
150
|
const bundlePort = createShellBundlePort({
|
|
157
|
-
apps:
|
|
151
|
+
apps: apps.apps,
|
|
158
152
|
toolbox: tools.toolbox,
|
|
159
153
|
...(config.automations && bundlePrincipal ? {
|
|
160
154
|
automations: {
|
|
161
155
|
crud: config.automations.service.for(bundlePrincipal),
|
|
162
|
-
targetId:
|
|
163
|
-
installed: new InstalledAutomations(join(stateDirs.system, "automations")),
|
|
156
|
+
...(config.automations.bundleTargetId ? { targetId: config.automations.bundleTargetId } : {}),
|
|
164
157
|
},
|
|
165
158
|
} : {}),
|
|
166
159
|
});
|
|
@@ -186,7 +179,7 @@ export async function bootShell(config = {}) {
|
|
|
186
179
|
const proxyBaseUrl = String(env.AMALGM_PROXY_URL || "").trim();
|
|
187
180
|
const chat = await createShellChatComposition({
|
|
188
181
|
ownerUserId: String(env.AMALGM_USER_ID || config.userEmail || config.scope || "local"),
|
|
189
|
-
computerId,
|
|
182
|
+
computerId: String(env.AMALGM_COMPUTER_ID || deviceId),
|
|
190
183
|
stateDir: join(stateDirs.system, "chat"),
|
|
191
184
|
agents: agentsService,
|
|
192
185
|
toolbox: tools.toolbox,
|
|
@@ -235,7 +228,7 @@ export async function bootShell(config = {}) {
|
|
|
235
228
|
workspaceHost.mount,
|
|
236
229
|
filesBrowserMount({
|
|
237
230
|
userEmail: config.userEmail ?? config.scope ?? env.AMALGM_USER_EMAIL ?? "local",
|
|
238
|
-
computerId,
|
|
231
|
+
computerId: env.AMALGM_COMPUTER_ID ?? deviceId,
|
|
239
232
|
userRoot: userDir,
|
|
240
233
|
}),
|
|
241
234
|
localMount({ home, env, amalgmPath: userDir, workspaceRoot }),
|
package/dist/boot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boot.js","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"boot.js","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,8 @@
|
|
|
1
|
-
import { type AutomationCrud
|
|
2
|
-
import type { InstalledAutomations } from "./installed-automations.js";
|
|
1
|
+
import { type AutomationCrud } from "@amalgm/automations";
|
|
3
2
|
type Json = Record<string, any>;
|
|
4
|
-
/** Action ids a plan calls through the target machine's Toolbox. */
|
|
5
|
-
export declare function planActionIds(plan: AutomationPlan): string[];
|
|
6
3
|
export declare function exportBundleAutomation(crud: AutomationCrud, automationId: string): Promise<{
|
|
7
4
|
entry: Json;
|
|
8
5
|
toolIds: string[];
|
|
9
|
-
bindings: string[];
|
|
10
6
|
}>;
|
|
11
|
-
export
|
|
12
|
-
/** The accepting machine. It is where the automation lives and runs. */
|
|
13
|
-
targetId: string;
|
|
14
|
-
/** Where the accepted automation lands on that machine. */
|
|
15
|
-
installed: InstalledAutomations;
|
|
16
|
-
/** Action ids the target machine's Toolbox can call right now. */
|
|
17
|
-
installedActionIds: ReadonlySet<string>;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Accept automations onto this machine: register each with the service
|
|
21
|
-
* against this machine as the target, then project the registered record to
|
|
22
|
-
* disk. Every entry is checked against the Toolbox before any is registered,
|
|
23
|
-
* so a bundle that cannot run here is refused whole rather than half-created.
|
|
24
|
-
*/
|
|
25
|
-
export declare function installBundleAutomations(crud: AutomationCrud, entries: Json[], target: BundleAutomationInstallTarget): Promise<Json[]>;
|
|
7
|
+
export declare function installBundleAutomations(crud: AutomationCrud, entries: Json[], targetId: string): Promise<Json[]>;
|
|
26
8
|
export {};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import crypto from "node:crypto";
|
|
2
|
-
import { isAbsolute } from "node:path";
|
|
3
2
|
import { compiledAutomationPlan } from "@amalgm/automations";
|
|
4
3
|
function toolIds(value, found = new Set()) {
|
|
5
4
|
if (Array.isArray(value))
|
|
@@ -19,32 +18,6 @@ function toolIds(value, found = new Set()) {
|
|
|
19
18
|
}
|
|
20
19
|
return [...found];
|
|
21
20
|
}
|
|
22
|
-
/** Action ids a plan calls through the target machine's Toolbox. */
|
|
23
|
-
export function planActionIds(plan) {
|
|
24
|
-
const ids = new Set();
|
|
25
|
-
for (const step of plan.steps) {
|
|
26
|
-
if ("actionId" in step && typeof step.actionId === "string")
|
|
27
|
-
ids.add(step.actionId);
|
|
28
|
-
}
|
|
29
|
-
return [...ids];
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* A bundle must not depend on the sharer's machine. Working directories are
|
|
33
|
-
* absolute paths on the machine that ran the automation; strip them and let
|
|
34
|
-
* the recipient's host default to its own home. Each stripped field becomes
|
|
35
|
-
* a binding the recipient can restore deliberately.
|
|
36
|
-
*/
|
|
37
|
-
function portablePlan(plan) {
|
|
38
|
-
const bindings = [];
|
|
39
|
-
const steps = plan.steps.map((step) => {
|
|
40
|
-
if (!("cwd" in step) || typeof step.cwd !== "string" || !isAbsolute(step.cwd))
|
|
41
|
-
return step;
|
|
42
|
-
const { cwd: _cwd, ...rest } = step;
|
|
43
|
-
bindings.push(`steps.${step.id}.cwd`);
|
|
44
|
-
return rest;
|
|
45
|
-
});
|
|
46
|
-
return { plan: { ...plan, steps }, bindings };
|
|
47
|
-
}
|
|
48
21
|
export async function exportBundleAutomation(crud, automationId) {
|
|
49
22
|
const automation = await crud.automations.get(automationId);
|
|
50
23
|
if (!automation)
|
|
@@ -55,8 +28,8 @@ export async function exportBundleAutomation(crud, automationId) {
|
|
|
55
28
|
throw new Error(`Automation has no shareable triggers: ${automationId}`);
|
|
56
29
|
if (!workflow?.script.trim())
|
|
57
30
|
throw new Error(`Automation has no shareable workflow: ${automationId}`);
|
|
58
|
-
const
|
|
59
|
-
const refs = toolIds(
|
|
31
|
+
const plan = compiledAutomationPlan(workflow.compiled);
|
|
32
|
+
const refs = toolIds(plan);
|
|
60
33
|
return {
|
|
61
34
|
entry: {
|
|
62
35
|
sourceAutomationId: automation.id,
|
|
@@ -69,12 +42,11 @@ export async function exportBundleAutomation(crud, automationId) {
|
|
|
69
42
|
}),
|
|
70
43
|
workflows: [{
|
|
71
44
|
name: workflow.name || "Workflow", enabled: true, workflowText: workflow.script,
|
|
72
|
-
compiled:
|
|
45
|
+
compiled: plan, allowlist: workflow.allowlist || {}, limits: workflow.limits || {},
|
|
73
46
|
}],
|
|
74
47
|
toolIds: refs,
|
|
75
48
|
},
|
|
76
49
|
toolIds: refs,
|
|
77
|
-
bindings: portable.bindings,
|
|
78
50
|
};
|
|
79
51
|
}
|
|
80
52
|
async function uniqueName(crud, value) {
|
|
@@ -92,38 +64,22 @@ async function uniqueName(crud, value) {
|
|
|
92
64
|
}
|
|
93
65
|
return `${base} (${crypto.randomUUID().slice(0, 8)})`;
|
|
94
66
|
}
|
|
95
|
-
function
|
|
96
|
-
if (!Array.isArray(entry.triggers) || !entry.triggers.length) {
|
|
97
|
-
throw new Error("automation entry must include at least one trigger");
|
|
98
|
-
}
|
|
99
|
-
if (!Array.isArray(entry.workflows) || entry.workflows.length !== 1) {
|
|
100
|
-
throw new Error("automation entry must include exactly one workflow");
|
|
101
|
-
}
|
|
102
|
-
const workflow = entry.workflows[0];
|
|
103
|
-
if (typeof workflow.workflowText !== "string" || !workflow.workflowText.trim()) {
|
|
104
|
-
throw new Error("automation entry workflows must include workflowText");
|
|
105
|
-
}
|
|
106
|
-
return { workflow, plan: compiledAutomationPlan(workflow.compiled) };
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Accept automations onto this machine: register each with the service
|
|
110
|
-
* against this machine as the target, then project the registered record to
|
|
111
|
-
* disk. Every entry is checked against the Toolbox before any is registered,
|
|
112
|
-
* so a bundle that cannot run here is refused whole rather than half-created.
|
|
113
|
-
*/
|
|
114
|
-
export async function installBundleAutomations(crud, entries, target) {
|
|
115
|
-
const prepared = entries.map((entry) => ({ entry, ...bundleWorkflow(entry) }));
|
|
116
|
-
for (const { entry, plan } of prepared) {
|
|
117
|
-
const missing = planActionIds(plan).filter((actionId) => !target.installedActionIds.has(actionId));
|
|
118
|
-
if (missing.length) {
|
|
119
|
-
const name = String(entry.automation?.name || "automation");
|
|
120
|
-
throw new Error(`Automation "${name}" needs actions this machine does not have: ${missing.join(", ")}`);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
67
|
+
export async function installBundleAutomations(crud, entries, targetId) {
|
|
123
68
|
const installed = [];
|
|
124
|
-
for (const
|
|
69
|
+
for (const entry of entries) {
|
|
70
|
+
if (!Array.isArray(entry.triggers) || !entry.triggers.length) {
|
|
71
|
+
throw new Error("automation entry must include at least one trigger");
|
|
72
|
+
}
|
|
73
|
+
if (!Array.isArray(entry.workflows) || entry.workflows.length !== 1) {
|
|
74
|
+
throw new Error("automation entry must include exactly one workflow");
|
|
75
|
+
}
|
|
76
|
+
const workflow = entry.workflows[0];
|
|
77
|
+
if (typeof workflow.workflowText !== "string" || !workflow.workflowText.trim()) {
|
|
78
|
+
throw new Error("automation entry workflows must include workflowText");
|
|
79
|
+
}
|
|
80
|
+
const plan = compiledAutomationPlan(workflow.compiled);
|
|
125
81
|
const automation = await crud.automations.create({
|
|
126
|
-
targetId
|
|
82
|
+
targetId,
|
|
127
83
|
name: await uniqueName(crud, entry.automation?.name),
|
|
128
84
|
description: entry.automation?.description || "",
|
|
129
85
|
enabled: true,
|
|
@@ -152,7 +108,6 @@ export async function installBundleAutomations(crud, entries, target) {
|
|
|
152
108
|
allowlist: workflow.allowlist || {},
|
|
153
109
|
limits: workflow.limits || {},
|
|
154
110
|
});
|
|
155
|
-
await target.installed.project(crud, automation.id);
|
|
156
111
|
installed.push(JSON.parse(JSON.stringify(automation)));
|
|
157
112
|
}
|
|
158
113
|
return installed;
|