@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.
Files changed (96) hide show
  1. package/PURPOSE.md +32 -7
  2. package/README.md +7 -0
  3. package/dist/agent-execution.d.ts +70 -0
  4. package/dist/agent-execution.js +86 -0
  5. package/dist/agent-execution.js.map +1 -0
  6. package/dist/automations-host.d.ts +2 -0
  7. package/dist/automations-host.js.map +1 -1
  8. package/dist/boot.js +20 -27
  9. package/dist/boot.js.map +1 -1
  10. package/dist/bundle-automations.d.ts +2 -20
  11. package/dist/bundle-automations.js +17 -62
  12. package/dist/bundle-automations.js.map +1 -1
  13. package/dist/bundle-port.d.ts +2 -6
  14. package/dist/bundle-port.js +13 -15
  15. package/dist/bundle-port.js.map +1 -1
  16. package/dist/channel-session.d.ts +50 -0
  17. package/dist/channel-session.js +32 -0
  18. package/dist/channel-session.js.map +1 -0
  19. package/dist/chat-composition.js +8 -121
  20. package/dist/chat-composition.js.map +1 -1
  21. package/dist/chat-toolbox.js +7 -4
  22. package/dist/chat-toolbox.js.map +1 -1
  23. package/dist/cli.js +51 -22
  24. package/dist/cli.js.map +1 -1
  25. package/dist/construct-apply-host.d.ts +61 -0
  26. package/dist/construct-apply-host.js +103 -0
  27. package/dist/construct-apply-host.js.map +1 -0
  28. package/dist/construct-door.d.ts +37 -0
  29. package/dist/construct-door.js +51 -0
  30. package/dist/construct-door.js.map +1 -0
  31. package/dist/construct-ledger.d.ts +26 -0
  32. package/dist/construct-ledger.js +86 -0
  33. package/dist/construct-ledger.js.map +1 -0
  34. package/dist/construct-products.d.ts +22 -0
  35. package/dist/construct-products.js +30 -0
  36. package/dist/construct-products.js.map +1 -0
  37. package/dist/entity-access-wire.d.ts +32 -0
  38. package/dist/entity-access-wire.js +153 -0
  39. package/dist/entity-access-wire.js.map +1 -0
  40. package/dist/entity-apply-host.d.ts +9 -1
  41. package/dist/entity-apply-host.js +20 -2
  42. package/dist/entity-apply-host.js.map +1 -1
  43. package/dist/entity-channel-holdings.d.ts +26 -0
  44. package/dist/entity-channel-holdings.js +52 -0
  45. package/dist/entity-channel-holdings.js.map +1 -0
  46. package/dist/entity-record-observability.js +21 -0
  47. package/dist/entity-record-observability.js.map +1 -1
  48. package/dist/entity-record-store.d.ts +8 -3
  49. package/dist/entity-record-store.js +28 -1
  50. package/dist/entity-record-store.js.map +1 -1
  51. package/dist/installation/environment.d.ts +0 -2
  52. package/dist/installation/environment.js +0 -4
  53. package/dist/installation/environment.js.map +1 -1
  54. package/dist/machine-host.d.ts +4 -5
  55. package/dist/machine-host.js +70 -87
  56. package/dist/machine-host.js.map +1 -1
  57. package/dist/official-mcp-host.js +7 -1
  58. package/dist/official-mcp-host.js.map +1 -1
  59. package/dist/platform-product-host.d.ts +2 -0
  60. package/dist/platform-product-host.js +4 -1
  61. package/dist/platform-product-host.js.map +1 -1
  62. package/dist/runtime-command-host.d.ts +3 -1
  63. package/dist/runtime-command-host.js +2 -1
  64. package/dist/runtime-command-host.js.map +1 -1
  65. package/dist/sharing-host.d.ts +19 -0
  66. package/dist/sharing-host.js +19 -0
  67. package/dist/sharing-host.js.map +1 -0
  68. package/dist/sharing-mcp-host.d.ts +23 -0
  69. package/dist/{descriptor-mcp-host.js → sharing-mcp-host.js} +23 -9
  70. package/dist/sharing-mcp-host.js.map +1 -0
  71. package/dist/tool-mcp-client.js +19 -1
  72. package/dist/tool-mcp-client.js.map +1 -1
  73. package/dist/toolbox-host.d.ts +4 -0
  74. package/dist/toolbox-host.js +10 -0
  75. package/dist/toolbox-host.js.map +1 -0
  76. package/dist/user-ground-host.d.ts +29 -3
  77. package/dist/user-ground-host.js +90 -5
  78. package/dist/user-ground-host.js.map +1 -1
  79. package/dist/wire-client.d.ts +2 -9
  80. package/dist/wire-client.js +87 -17
  81. package/dist/wire-client.js.map +1 -1
  82. package/examinations/fixtures/machine-control-plane.js +0 -13
  83. package/examinations/fixtures/private-wire-authority.js +170 -9
  84. package/npm-shrinkwrap.json +31 -28
  85. package/package.json +8 -8
  86. package/dist/descriptor-mcp-host.d.ts +0 -26
  87. package/dist/descriptor-mcp-host.js.map +0 -1
  88. package/dist/installed-automations.d.ts +0 -70
  89. package/dist/installed-automations.js +0 -135
  90. package/dist/installed-automations.js.map +0 -1
  91. package/dist/runtime-mcp-cli-host.d.ts +0 -29
  92. package/dist/runtime-mcp-cli-host.js +0 -84
  93. package/dist/runtime-mcp-cli-host.js.map +0 -1
  94. package/dist/share-host.d.ts +0 -24
  95. package/dist/share-host.js +0 -34
  96. 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 inherits the latest local Chat turn's complete
1178
- execution selection, including its model and authentication; an agent id
1179
- alone is not an executable selection. With no prior turn, Shell requires
1180
- an installed agent with an explicit model. Replies resume their own saved
1181
- execution. Channels adds its reply tool through the current Toolbox catalog.
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;AAa1D,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"}
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, linkedToolEnvironment } from "@amalgm/apps";
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, createMcpDriver } from "@amalgm/tools";
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 { createToolMcpClient } from "./tool-mcp-client.js";
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 toolMcpClient = createToolMcpClient({
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: () => apps.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: computerId,
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, type AutomationPlan } from "@amalgm/automations";
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 interface BundleAutomationInstallTarget {
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 portable = portablePlan(compiledAutomationPlan(workflow.compiled));
59
- const refs = toolIds(portable.plan);
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: portable.plan, allowlist: workflow.allowlist || {}, limits: workflow.limits || {},
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 bundleWorkflow(entry) {
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 { entry, workflow, plan } of prepared) {
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: target.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;