@mastra/apple-container 0.2.0 → 0.3.0
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/CHANGELOG.md +48 -0
- package/dist/index.cjs +25 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +25 -1
- package/dist/index.js.map +1 -1
- package/dist/sandbox/index.d.ts +17 -1
- package/dist/sandbox/index.d.ts.map +1 -1
- package/package.json +10 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# @mastra/apple-container
|
|
2
2
|
|
|
3
|
+
## 0.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Added `clone()` support to the sandbox providers. `clone()` constructs an unstarted sibling sandbox that inherits the template's configuration (credentials, image, resources) with per-instance overrides for `id` and `env`, so one configured sandbox can act as a template for a fleet of sandbox clones (for example, one per project). ([#19616](https://github.com/mastra-ai/mastra/pull/19616))
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
const template = new E2BSandbox({ apiKey, template: 'base' });
|
|
11
|
+
|
|
12
|
+
const projectSandbox = template.clone({
|
|
13
|
+
id: 'mc-project-42',
|
|
14
|
+
env: { GITHUB_TOKEN: token },
|
|
15
|
+
idleTimeoutMinutes: 30,
|
|
16
|
+
});
|
|
17
|
+
await projectSandbox.start();
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
`idleTimeoutMinutes` is a best-effort hint that maps to each provider's native lifetime knob (Railway `idleTimeoutMinutes`, E2B/Modal/Vercel timeout in milliseconds, Daytona `autoStopInterval`, Blaxel TTL duration). Docker and Apple Container ignore it since they have no provider-side idle teardown.
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- Updated dependencies [[`ec857fc`](https://github.com/mastra-ai/mastra/commit/ec857fc79c264b53b38e16478c789b7177f2ad59), [`d7385ad`](https://github.com/mastra-ai/mastra/commit/d7385ad9e88f9e4f33d15c0ec0bfebedde0cbc2e), [`41a5392`](https://github.com/mastra-ai/mastra/commit/41a5392d9f6c5e18d6b227f0fc0ddf49c50774e9), [`3d6e539`](https://github.com/mastra-ai/mastra/commit/3d6e539272eb2ea0407034605ee1906b3be06b39), [`1426af2`](https://github.com/mastra-ai/mastra/commit/1426af24975879c000d13ac75673f630fcc970c1), [`a40adeb`](https://github.com/mastra-ai/mastra/commit/a40adeb222b961a56a58af56a106106525721b74), [`8a0d145`](https://github.com/mastra-ai/mastra/commit/8a0d145aadbdf7278665aceaaec364b35dd9bd94), [`bd2f1d2`](https://github.com/mastra-ai/mastra/commit/bd2f1d274d05e60e2366f005ea0d94d5cea0d5ff), [`e1f2fae`](https://github.com/mastra-ai/mastra/commit/e1f2faebaf048c3d4c2e2c01d293767c195d5794), [`63aa799`](https://github.com/mastra-ai/mastra/commit/63aa799c6b44eacc7806cda6846b7c5bbee06b37), [`b7e79c3`](https://github.com/mastra-ai/mastra/commit/b7e79c3c02ac5cd415db34ba0975ceafc1464333), [`675fbff`](https://github.com/mastra-ai/mastra/commit/675fbff84d3274391b33e852f76083c38a5514e5), [`da009e1`](https://github.com/mastra-ai/mastra/commit/da009e1aacd89ed94b8d1b2af09c9d4fe7c4db49), [`3b77e77`](https://github.com/mastra-ai/mastra/commit/3b77e7704936522e4769d29de1b5ea6901f302bd), [`c7d30cd`](https://github.com/mastra-ai/mastra/commit/c7d30cd86009c407df91105591f03cd6e3d2854d), [`21a0eb8`](https://github.com/mastra-ai/mastra/commit/21a0eb86746ba0b703acea360d4f84c6a5a493f2), [`8b20926`](https://github.com/mastra-ai/mastra/commit/8b20926cd59e2ba3d66458e062fa0e6e2ada3e68), [`975295d`](https://github.com/mastra-ai/mastra/commit/975295d418552f0d46a59edfef4c3ee555f9930a), [`73db8db`](https://github.com/mastra-ai/mastra/commit/73db8db90d69ab6153c7942749f624db0d96952d), [`6b1bf3b`](https://github.com/mastra-ai/mastra/commit/6b1bf3b9494bd51aa8f654c68c9355d6046fa2a1), [`35c2181`](https://github.com/mastra-ai/mastra/commit/35c2181e6a50e47c90ba36260db7c9723d54696f), [`0a2c22c`](https://github.com/mastra-ai/mastra/commit/0a2c22c902604439ec490319e14c17f331e0c84c), [`4cfdd64`](https://github.com/mastra-ai/mastra/commit/4cfdd645794feaea0c4ea711e70ecdfbef0c5b8e), [`b75d749`](https://github.com/mastra-ai/mastra/commit/b75d749621ff5d17e86bcb4ee809d301fb4f7cf3), [`821648b`](https://github.com/mastra-ai/mastra/commit/821648bf2871ef840100c7bacbecf676010bd12a), [`de86fd7`](https://github.com/mastra-ai/mastra/commit/de86fd7119f0438381d1a642e3d258143c0b9c29), [`2745031`](https://github.com/mastra-ai/mastra/commit/2745031d1d4a4978f037092da371428c32e2842a), [`b4b7ea8`](https://github.com/mastra-ai/mastra/commit/b4b7ea8733f033fc441ea47ed03f6afb17ec2248), [`3a8024c`](https://github.com/mastra-ai/mastra/commit/3a8024ce615f8aa89479c0d71fe61d10bb0040be), [`35865a5`](https://github.com/mastra-ai/mastra/commit/35865a53e194aa9634d6a70a97010e7a6b9d58b1), [`74faf8b`](https://github.com/mastra-ai/mastra/commit/74faf8bd9c1018f2492653c06b1e25fc8300e9e6), [`ef03fbc`](https://github.com/mastra-ai/mastra/commit/ef03fbcc556bcbc04c9b3d06fab88771ecaa043c), [`675fbff`](https://github.com/mastra-ai/mastra/commit/675fbff84d3274391b33e852f76083c38a5514e5), [`70687f7`](https://github.com/mastra-ai/mastra/commit/70687f7e495a322a02070b4a67cb0c77a5ca91ec), [`1fadac4`](https://github.com/mastra-ai/mastra/commit/1fadac44537caeefe81f9f775ae2f2f3d94e9069), [`73db8db`](https://github.com/mastra-ai/mastra/commit/73db8db90d69ab6153c7942749f624db0d96952d), [`76b7181`](https://github.com/mastra-ai/mastra/commit/76b71810366e6d90b9d3973149d1c7ba3659ffb9), [`792ec9a`](https://github.com/mastra-ai/mastra/commit/792ec9a0869bab8274cf5e0ed2840738737a1607), [`712b864`](https://github.com/mastra-ai/mastra/commit/712b864aa1ed12b14c54390ec17b69de163c37f7), [`85e4fb5`](https://github.com/mastra-ai/mastra/commit/85e4fb50087a81c74df3a762f53b56373db0b912), [`0c0e8d7`](https://github.com/mastra-ai/mastra/commit/0c0e8d7becd4d1445c656b78d5d845f606c1ff9d), [`a7bbe77`](https://github.com/mastra-ai/mastra/commit/a7bbe773577f60bc4761b534ef7ec6b476332dad), [`72e437c`](https://github.com/mastra-ai/mastra/commit/72e437c515942c80b9def5b026e0bdee61b469d9), [`8f7a5de`](https://github.com/mastra-ai/mastra/commit/8f7a5dedc246cdc938bb65516703cf9b27b03756), [`a7bbe77`](https://github.com/mastra-ai/mastra/commit/a7bbe773577f60bc4761b534ef7ec6b476332dad), [`11f6cd9`](https://github.com/mastra-ai/mastra/commit/11f6cd96fe42582403416608beb212cc1a2cc79e), [`ef03c0c`](https://github.com/mastra-ai/mastra/commit/ef03c0cfc62367a458e4cc56462e2148b35681c5), [`4fb4d88`](https://github.com/mastra-ai/mastra/commit/4fb4d881bc107acee13890ad4d78661016c510ed), [`4e68363`](https://github.com/mastra-ai/mastra/commit/4e683634f94ebd062d26a3bb6093a8dfc7263d37), [`c328769`](https://github.com/mastra-ai/mastra/commit/c3287698ff8ef98dba86d415faa566fa3e5f4d56), [`9f7c67a`](https://github.com/mastra-ai/mastra/commit/9f7c67abeeb52c41c51a9b5edee60b62afe7cd8d), [`3b65e68`](https://github.com/mastra-ai/mastra/commit/3b65e68d7f1c771c7a70eea42d83fefdd28cad88), [`4eba27a`](https://github.com/mastra-ai/mastra/commit/4eba27adcf60f991df0e62f94b3e75b4e67f3b4b), [`c701be3`](https://github.com/mastra-ai/mastra/commit/c701be32d7d9aa94a66da8c6cc38dcac6856f464), [`db650ce`](https://github.com/mastra-ai/mastra/commit/db650ce490348914e85b93651d83acdf8f2a4c31), [`232fcbc`](https://github.com/mastra-ai/mastra/commit/232fcbc14fce625dd672ba043329c0b732c62be2), [`6354eeb`](https://github.com/mastra-ai/mastra/commit/6354eeb32efa9f5f68f51dda394e90e2ee76f1fb), [`a8799bb`](https://github.com/mastra-ai/mastra/commit/a8799bb8e44f4a60d01e4e2acd3448ff80bf14f8), [`3d6e539`](https://github.com/mastra-ai/mastra/commit/3d6e539272eb2ea0407034605ee1906b3be06b39), [`e3868e2`](https://github.com/mastra-ai/mastra/commit/e3868e22babfffd0133771669ca724501c2dd58e), [`9251370`](https://github.com/mastra-ai/mastra/commit/9251370ad413af464aa22d7566338bec5613e8de), [`3491666`](https://github.com/mastra-ai/mastra/commit/34916663c4fdd43b48c21f4ab2d5fb6dcccc94f9), [`c0bec73`](https://github.com/mastra-ai/mastra/commit/c0bec732c93d1a22ae5e51ed66cf8cacca8bd6a6)]:
|
|
25
|
+
- @mastra/core@1.52.0
|
|
26
|
+
|
|
27
|
+
## 0.3.0-alpha.0
|
|
28
|
+
|
|
29
|
+
### Minor Changes
|
|
30
|
+
|
|
31
|
+
- Added `clone()` support to the sandbox providers. `clone()` constructs an unstarted sibling sandbox that inherits the template's configuration (credentials, image, resources) with per-instance overrides for `id` and `env`, so one configured sandbox can act as a template for a fleet of sandbox clones (for example, one per project). ([#19616](https://github.com/mastra-ai/mastra/pull/19616))
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
const template = new E2BSandbox({ apiKey, template: 'base' });
|
|
35
|
+
|
|
36
|
+
const projectSandbox = template.clone({
|
|
37
|
+
id: 'mc-project-42',
|
|
38
|
+
env: { GITHUB_TOKEN: token },
|
|
39
|
+
idleTimeoutMinutes: 30,
|
|
40
|
+
});
|
|
41
|
+
await projectSandbox.start();
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`idleTimeoutMinutes` is a best-effort hint that maps to each provider's native lifetime knob (Railway `idleTimeoutMinutes`, E2B/Modal/Vercel timeout in milliseconds, Daytona `autoStopInterval`, Blaxel TTL duration). Docker and Apple Container ignore it since they have no provider-side idle teardown.
|
|
45
|
+
|
|
46
|
+
### Patch Changes
|
|
47
|
+
|
|
48
|
+
- Updated dependencies [[`ec857fc`](https://github.com/mastra-ai/mastra/commit/ec857fc79c264b53b38e16478c789b7177f2ad59), [`e1f2fae`](https://github.com/mastra-ai/mastra/commit/e1f2faebaf048c3d4c2e2c01d293767c195d5794), [`63aa799`](https://github.com/mastra-ai/mastra/commit/63aa799c6b44eacc7806cda6846b7c5bbee06b37), [`73db8db`](https://github.com/mastra-ai/mastra/commit/73db8db90d69ab6153c7942749f624db0d96952d), [`73db8db`](https://github.com/mastra-ai/mastra/commit/73db8db90d69ab6153c7942749f624db0d96952d), [`76b7181`](https://github.com/mastra-ai/mastra/commit/76b71810366e6d90b9d3973149d1c7ba3659ffb9), [`0c0e8d7`](https://github.com/mastra-ai/mastra/commit/0c0e8d7becd4d1445c656b78d5d845f606c1ff9d), [`9f7c67a`](https://github.com/mastra-ai/mastra/commit/9f7c67abeeb52c41c51a9b5edee60b62afe7cd8d), [`3b65e68`](https://github.com/mastra-ai/mastra/commit/3b65e68d7f1c771c7a70eea42d83fefdd28cad88), [`e3868e2`](https://github.com/mastra-ai/mastra/commit/e3868e22babfffd0133771669ca724501c2dd58e)]:
|
|
49
|
+
- @mastra/core@1.52.0-alpha.5
|
|
50
|
+
|
|
3
51
|
## 0.2.0
|
|
4
52
|
|
|
5
53
|
### Minor Changes
|
package/dist/index.cjs
CHANGED
|
@@ -24,7 +24,7 @@ var DefaultAppleContainerCommandRunner = class {
|
|
|
24
24
|
return runAppleContainerCli(this.binary, args, options);
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
|
-
var AppleContainerSandbox = class extends workspace.MastraSandbox {
|
|
27
|
+
var AppleContainerSandbox = class _AppleContainerSandbox extends workspace.MastraSandbox {
|
|
28
28
|
id;
|
|
29
29
|
name = "AppleContainerSandbox";
|
|
30
30
|
provider = "apple-container";
|
|
@@ -64,6 +64,7 @@ var AppleContainerSandbox = class extends workspace.MastraSandbox {
|
|
|
64
64
|
_runner;
|
|
65
65
|
_instructionsOverride;
|
|
66
66
|
_createdAt;
|
|
67
|
+
_constructorOptions;
|
|
67
68
|
_containerId;
|
|
68
69
|
constructor(options = {}) {
|
|
69
70
|
super({
|
|
@@ -112,6 +113,29 @@ var AppleContainerSandbox = class extends workspace.MastraSandbox {
|
|
|
112
113
|
this._runner = options.runner ?? new DefaultAppleContainerCommandRunner(options.containerBinary);
|
|
113
114
|
this._instructionsOverride = options.instructions;
|
|
114
115
|
this._createdAt = /* @__PURE__ */ new Date();
|
|
116
|
+
this._constructorOptions = { ...options };
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Construct a sibling `AppleContainerSandbox` that inherits this sandbox's
|
|
120
|
+
* configuration (image, resources, network, security options, labels) with
|
|
121
|
+
* per-instance overrides.
|
|
122
|
+
*
|
|
123
|
+
* Performs no I/O — the sandbox clone provisions (or reconnects to an
|
|
124
|
+
* existing container labelled with the same logical `id`) on its own
|
|
125
|
+
* `start()`. Use it when one configured sandbox acts as the template for a
|
|
126
|
+
* fleet of independent sandboxes (e.g. one per project).
|
|
127
|
+
*
|
|
128
|
+
* `options.idleTimeoutMinutes` is ignored (Apple containers have no
|
|
129
|
+
* provider-side idle teardown; `timeout` here is a command timeout), and
|
|
130
|
+
* `options.sandboxId` is ignored because reconnection is by logical `id`.
|
|
131
|
+
*/
|
|
132
|
+
clone(options = {}) {
|
|
133
|
+
const { id: _id, name: _name, ...base } = this._constructorOptions;
|
|
134
|
+
return new _AppleContainerSandbox({
|
|
135
|
+
...base,
|
|
136
|
+
...options.id !== void 0 && { id: options.id },
|
|
137
|
+
...options.env !== void 0 && { env: options.env }
|
|
138
|
+
});
|
|
115
139
|
}
|
|
116
140
|
get containerId() {
|
|
117
141
|
return this._containerId ?? this._containerName;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sandbox/index.ts","../src/provider.ts"],"names":["MastraSandbox","result","SandboxExecutionError","ProcessHandle","spawn","StringDecoder","createHash"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Apple container CLI sandbox provider.\n *\n * This provider maps Mastra's WorkspaceSandbox command execution contract to\n * Apple's `container` CLI. It starts a long-lived OCI Linux container and uses\n * `container exec` for commands.\n *\n * @see https://github.com/apple/container\n */\n\nimport { spawn } from 'node:child_process';\nimport type { ChildProcessByStdio } from 'node:child_process';\nimport { createHash } from 'node:crypto';\nimport type { Readable } from 'node:stream';\nimport { StringDecoder } from 'node:string_decoder';\nimport type { RequestContext } from '@mastra/core/di';\nimport type {\n CommandResult,\n ExecuteCommandOptions,\n InstructionsOption,\n MastraSandboxOptions,\n ProviderStatus,\n SandboxInfo,\n} from '@mastra/core/workspace';\nimport { MastraSandbox, ProcessHandle, SandboxExecutionError } from '@mastra/core/workspace';\n\nconst DEFAULT_COMMAND_TIMEOUT_MS = 300_000;\nconst DEFAULT_IMAGE = 'node:22-slim';\nconst DEFAULT_COMMAND = ['sleep', 'infinity'];\nconst DEFAULT_WORKING_DIR = '/workspace';\nconst APPLE_CONTAINER_CLI_GRACE_TIMEOUT_MS = 10_000;\nconst APPLE_CONTAINER_READY_TIMEOUT_MS = 10_000;\nconst APPLE_CONTAINER_READY_EXEC_TIMEOUT_MS = 5_000;\nconst APPLE_CONTAINER_TIMEOUT_EXIT_CODE = 124;\nconst APPLE_CONTAINER_TIMEOUT_MARKER = '__MASTRA_APPLE_CONTAINER_TIMEOUT__';\n\nexport interface AppleContainerCliResult {\n success: boolean;\n exitCode: number;\n stdout: string;\n stderr: string;\n executionTimeMs: number;\n timedOut?: boolean;\n killed?: boolean;\n stdoutTruncated?: boolean;\n stderrTruncated?: boolean;\n stdoutDroppedBytes?: number;\n stderrDroppedBytes?: number;\n}\n\nexport interface AppleContainerCommandRunnerOptions {\n timeout?: number;\n env?: Record<string, string>;\n abortSignal?: AbortSignal;\n onStdout?: (data: string) => void;\n onStderr?: (data: string) => void;\n maxRetainedBytes?: number;\n}\n\nexport interface AppleContainerCommandRunner {\n run(args: string[], options?: AppleContainerCommandRunnerOptions): Promise<AppleContainerCliResult>;\n}\n\nexport class DefaultAppleContainerCommandRunner implements AppleContainerCommandRunner {\n constructor(private readonly binary = 'container') {}\n\n run(args: string[], options: AppleContainerCommandRunnerOptions = {}): Promise<AppleContainerCliResult> {\n return runAppleContainerCli(this.binary, args, options);\n }\n}\n\ninterface AppleContainerInspectResult {\n id?: string;\n status?:\n | string\n | {\n state?: string;\n networks?: Array<Record<string, unknown>>;\n };\n configuration?: {\n id?: string;\n hostname?: string;\n labels?: Record<string, string>;\n networks?: Array<Record<string, unknown>>;\n resources?: {\n cpus?: number;\n memoryInBytes?: number;\n };\n mounts?: unknown[];\n };\n}\n\nexport interface AppleContainerSandboxOptions extends Omit<MastraSandboxOptions, 'processes'> {\n /** Unique identifier for this sandbox instance. */\n id?: string;\n /** Apple container name passed to `container run --name`. Defaults to the sandbox id. */\n name?: string;\n /** OCI image to use. */\n image?: string;\n /** Container init command. Must keep the container alive for exec-based command execution. */\n command?: string[];\n /** Environment variables available to the container and every command exec. */\n env?: Record<string, string>;\n /** Host-to-container bind mounts. */\n volumes?: Record<string, string>;\n /** Raw `container run --mount` specs. */\n mounts?: string[];\n /** Apple container network attachment spec. */\n network?: string;\n /** Published port specs passed to `container run --publish`. */\n publishedPorts?: string[];\n /** Published socket specs passed to `container run --publish-socket`. */\n publishedSockets?: string[];\n /** Number of CPUs to allocate. */\n cpus?: number | string;\n /** Memory allocation, for example `1G`. */\n memory?: string;\n /** OCI platform, for example `linux/arm64`. */\n platform?: string;\n /** Image architecture when selecting a multi-arch image. */\n arch?: string;\n /** Operating system when selecting a multi-platform image. */\n os?: string;\n /** Enable Rosetta in the container. */\n rosetta?: boolean;\n /** Mount the container root filesystem as read-only. */\n readonlyRootfs?: boolean;\n /** Forward the host SSH agent socket. */\n ssh?: boolean;\n /** Enable Apple's init process in the container. */\n init?: boolean;\n /** Expose virtualization capabilities to the container. */\n virtualization?: boolean;\n /** Linux capabilities to add. */\n capAdd?: string[];\n /** Linux capabilities to drop. */\n capDrop?: string[];\n /** tmpfs destination paths. */\n tmpfs?: string[];\n /** DNS nameserver IPs. */\n dns?: string[];\n /** DNS search domains. */\n dnsSearch?: string[];\n /** Do not configure DNS in the container. */\n noDns?: boolean;\n /** Container labels. Mastra labels are always added. */\n labels?: Record<string, string>;\n /** Working directory inside the container. */\n workingDir?: string;\n /** Default command timeout in milliseconds. */\n timeout?: number;\n /** Delete the container on destroy. Defaults to true. */\n deleteOnDestroy?: boolean;\n /** Path or name for the Apple container CLI. */\n containerBinary?: string;\n /** Custom command runner, primarily for tests. */\n runner?: AppleContainerCommandRunner;\n /** Custom instructions for getInstructions(). String replaces the default; function receives it. */\n instructions?: InstructionsOption;\n}\n\nexport class AppleContainerSandbox extends MastraSandbox {\n readonly id: string;\n readonly name = 'AppleContainerSandbox';\n readonly provider = 'apple-container';\n status: ProviderStatus = 'pending';\n\n private readonly _containerName: string;\n private readonly _configuredName?: string;\n private readonly _image: string;\n private readonly _command: string[];\n private readonly _env: Record<string, string>;\n private readonly _volumes: Record<string, string>;\n private readonly _mounts: string[];\n private readonly _network?: string;\n private readonly _publishedPorts: string[];\n private readonly _publishedSockets: string[];\n private readonly _cpus?: number | string;\n private readonly _memory?: string;\n private readonly _platform?: string;\n private readonly _arch?: string;\n private readonly _os?: string;\n private readonly _rosetta: boolean;\n private readonly _readonlyRootfs: boolean;\n private readonly _ssh: boolean;\n private readonly _init: boolean;\n private readonly _virtualization: boolean;\n private readonly _capAdd: string[];\n private readonly _capDrop: string[];\n private readonly _tmpfs: string[];\n private readonly _dns: string[];\n private readonly _dnsSearch: string[];\n private readonly _noDns: boolean;\n private readonly _userLabels: Record<string, string>;\n private readonly _labels: Record<string, string>;\n private readonly _configHash: string;\n private readonly _workingDir: string;\n private readonly _timeout: number;\n private readonly _deleteOnDestroy: boolean;\n private readonly _runner: AppleContainerCommandRunner;\n private readonly _instructionsOverride?: InstructionsOption;\n private readonly _createdAt: Date;\n\n private _containerId?: string;\n\n constructor(options: AppleContainerSandboxOptions = {}) {\n super({\n ...options,\n name: 'AppleContainerSandbox',\n });\n\n this.id = options.id ?? generateId();\n this._configuredName = options.name;\n this._containerName = sanitizeContainerName(options.name ?? this.id);\n this._image = options.image ?? DEFAULT_IMAGE;\n this._command = options.command ?? DEFAULT_COMMAND;\n this._env = options.env ?? {};\n this._volumes = options.volumes ?? {};\n this._mounts = options.mounts ?? [];\n this._network = options.network;\n this._publishedPorts = options.publishedPorts ?? [];\n this._publishedSockets = options.publishedSockets ?? [];\n this._cpus = options.cpus;\n this._memory = options.memory;\n this._platform = options.platform;\n this._arch = options.arch;\n this._os = options.os;\n this._rosetta = options.rosetta ?? false;\n this._readonlyRootfs = options.readonlyRootfs ?? false;\n this._ssh = options.ssh ?? false;\n this._init = options.init ?? true;\n this._virtualization = options.virtualization ?? false;\n this._capAdd = options.capAdd ?? [];\n this._capDrop = options.capDrop ?? [];\n this._tmpfs = options.tmpfs ?? [];\n validateTmpfsPaths(this._tmpfs);\n this._dns = options.dns ?? [];\n this._dnsSearch = options.dnsSearch ?? [];\n this._noDns = options.noDns ?? false;\n this._workingDir = options.workingDir ?? DEFAULT_WORKING_DIR;\n this._userLabels = options.labels ?? {};\n this._configHash = hashConfig(this._runtimeConfigForHash());\n this._labels = {\n ...this._userLabels,\n 'mastra.sandbox': 'true',\n 'mastra.sandbox.id': this.id,\n 'mastra.sandbox.config-hash': this._configHash,\n };\n this._timeout = options.timeout ?? DEFAULT_COMMAND_TIMEOUT_MS;\n this._deleteOnDestroy = options.deleteOnDestroy ?? true;\n this._runner = options.runner ?? new DefaultAppleContainerCommandRunner(options.containerBinary);\n this._instructionsOverride = options.instructions;\n this._createdAt = new Date();\n }\n\n get containerId(): string {\n return this._containerId ?? this._containerName;\n }\n\n async start(): Promise<void> {\n await this._runPlainLifecycle('starting', 'running', () => this._startContainer());\n }\n\n async stop(): Promise<void> {\n await this._runPlainLifecycle('stopping', 'stopped', () => this._stopContainer());\n }\n\n async destroy(): Promise<void> {\n await this._runPlainLifecycle('destroying', 'destroyed', () => this._destroyContainer());\n }\n\n private async _startContainer(): Promise<void> {\n const existing = await this._inspectContainer();\n if (existing) {\n this._assertMastraOwned(existing);\n this._assertCompatibleConfig(existing);\n this._containerId = existing.configuration?.id ?? this._containerName;\n if (!isRunning(existing)) {\n const result = await this._runCli(['start', this.containerId]);\n this._assertSuccess(result, `start Apple container ${this.containerId}`);\n await this._waitUntilContainerReady(`start Apple container ${this.containerId}`);\n }\n return;\n }\n\n const env = envFlags(this._env);\n const result = await this._runCli(this._buildRunArgs(env.args), { env: env.env });\n this._assertSuccess(result, `create Apple container ${this._containerName}`);\n this._containerId = this._containerName;\n try {\n await this._waitUntilContainerReady(`create Apple container ${this._containerName}`);\n } catch (error) {\n if (this._deleteOnDestroy) {\n await this._deleteContainerIgnoringMissing();\n }\n throw error;\n }\n }\n\n private async _stopContainer(): Promise<void> {\n const existing = await this._inspectContainer();\n if (!existing) {\n return;\n }\n this._assertMastraOwned(existing);\n if (!isRunning(existing)) {\n return;\n }\n\n const result = await this._runCli(['stop', this.containerId]);\n if (!result.success && !isMissingContainerMessage(result.stderr)) {\n this._assertSuccess(result, `stop Apple container ${this.containerId}`);\n }\n }\n\n private async _destroyContainer(): Promise<void> {\n if (!this._deleteOnDestroy) {\n await this._stopContainer();\n return;\n }\n\n const existing = await this._inspectContainer();\n if (!existing) {\n return;\n }\n this._assertMastraOwned(existing);\n\n await this._deleteContainerIgnoringMissing();\n }\n\n async executeCommand(\n command: string,\n args: string[] = [],\n options: ExecuteCommandOptions = {},\n ): Promise<CommandResult> {\n await this.ensureRunning();\n\n const commandTimeout = options.timeout ?? this._timeout;\n const hasCommandTimeout = Number.isFinite(commandTimeout) && commandTimeout > 0;\n const fullCommand = buildShellCommand(command, args);\n const shellCommand = hasCommandTimeout ? buildTimeoutShellCommand(fullCommand, commandTimeout) : fullCommand;\n const env = envFlags({ ...this._env, ...options.env });\n const cliArgs = [\n 'exec',\n ...env.args,\n '--workdir',\n options.cwd ?? this._workingDir,\n this.containerId,\n 'sh',\n '-lc',\n shellCommand,\n ];\n\n const result = await this._runner.run(cliArgs, {\n timeout: hasCommandTimeout ? commandTimeout + APPLE_CONTAINER_CLI_GRACE_TIMEOUT_MS : undefined,\n env: env.env,\n abortSignal: options.abortSignal,\n onStdout: options.onStdout,\n onStderr: options.onStderr,\n maxRetainedBytes: options.maxRetainedBytes,\n });\n\n const timedOut =\n result.exitCode === APPLE_CONTAINER_TIMEOUT_EXIT_CODE && result.stderr.includes(APPLE_CONTAINER_TIMEOUT_MARKER);\n const stderr = timedOut ? stripTimeoutMarker(result.stderr) : result.stderr;\n\n return {\n ...result,\n stderr,\n ...(timedOut && { timedOut: true, killed: true }),\n command: fullCommand,\n args,\n };\n }\n\n async getInfo(): Promise<SandboxInfo> {\n const inspect = this._containerId ? await this._inspectContainer() : undefined;\n const resources = inspect?.configuration?.resources;\n\n return {\n id: this.id,\n name: this.name,\n provider: this.provider,\n status: this.status,\n createdAt: this._createdAt,\n resources: resources\n ? {\n cpuCores: resources.cpus,\n memoryMB: resources.memoryInBytes ? Math.round(resources.memoryInBytes / 1024 / 1024) : undefined,\n }\n : undefined,\n metadata: {\n ...this._serializableConfig(),\n },\n };\n }\n\n getInstructions(opts?: { requestContext?: RequestContext }): string {\n const defaultInstructions = this._buildDefaultInstructions();\n if (typeof this._instructionsOverride === 'string') {\n return this._instructionsOverride;\n }\n if (typeof this._instructionsOverride === 'function') {\n return this._instructionsOverride({ defaultInstructions, requestContext: opts?.requestContext });\n }\n return defaultInstructions;\n }\n\n private _buildDefaultInstructions(): string {\n const parts = [\n `Apple container sandbox: commands run inside a local OCI Linux container from image ${this._image}.`,\n `Working directory: ${this._workingDir}.`,\n ];\n\n const volumeCount = Object.keys(this._volumes).length + this._mounts.length;\n if (volumeCount > 0) {\n parts.push(`${volumeCount} host mount(s) are configured.`);\n }\n if (this._timeout > 0) {\n parts.push(`Default command timeout: ${Math.ceil(this._timeout / 1000)}s.`);\n }\n\n return parts.join(' ');\n }\n\n private async _runPlainLifecycle(\n activeStatus: ProviderStatus,\n completeStatus: ProviderStatus,\n operation: () => Promise<void>,\n ): Promise<void> {\n const managedByBaseWrapper = this.status === activeStatus;\n if (!managedByBaseWrapper) {\n this.status = activeStatus;\n }\n\n try {\n await operation();\n if (!managedByBaseWrapper) {\n this.status = completeStatus;\n }\n } catch (error) {\n if (!managedByBaseWrapper) {\n this.status = 'error';\n }\n throw error;\n }\n }\n\n private async _inspectContainer(): Promise<AppleContainerInspectResult | undefined> {\n const result = await this._runCli(['inspect', this.containerId]);\n if (!result.success) {\n if (isMissingContainerMessage(result.stderr)) return undefined;\n this._assertSuccess(result, `inspect Apple container ${this.containerId}`);\n return undefined;\n }\n\n try {\n const parsed = JSON.parse(result.stdout) as AppleContainerInspectResult[] | AppleContainerInspectResult;\n return Array.isArray(parsed) ? parsed[0] : parsed;\n } catch (error) {\n throw new SandboxExecutionError(\n `Failed to parse Apple container inspect output for ${this.containerId}: ${\n error instanceof Error ? error.message : String(error)\n }`,\n 1,\n result.stdout,\n result.stderr,\n );\n }\n }\n\n private _buildRunArgs(envArgs: string[]): string[] {\n const args = ['run', '-d', '--name', this._containerName, '--workdir', this._workingDir];\n\n args.push(...envArgs);\n for (const [hostPath, containerPath] of Object.entries(this._volumes)) {\n args.push('--volume', `${hostPath}:${containerPath}`);\n }\n for (const mount of this._mounts) args.push('--mount', mount);\n for (const [key, value] of Object.entries(this._labels)) args.push('--label', `${key}=${value}`);\n for (const port of this._publishedPorts) args.push('--publish', port);\n for (const socket of this._publishedSockets) args.push('--publish-socket', socket);\n for (const cap of this._capAdd) args.push('--cap-add', cap);\n for (const cap of this._capDrop) args.push('--cap-drop', cap);\n for (const tmpfs of this._tmpfs) args.push('--tmpfs', tmpfs);\n for (const dns of this._dns) args.push('--dns', dns);\n for (const domain of this._dnsSearch) args.push('--dns-search', domain);\n\n if (this._network) args.push('--network', this._network);\n if (this._cpus !== undefined) args.push('--cpus', String(this._cpus));\n if (this._memory !== undefined) args.push('--memory', this._memory);\n if (this._platform) args.push('--platform', this._platform);\n if (this._arch) args.push('--arch', this._arch);\n if (this._os) args.push('--os', this._os);\n if (this._rosetta) args.push('--rosetta');\n if (this._readonlyRootfs) args.push('--read-only');\n if (this._ssh) args.push('--ssh');\n if (this._init) args.push('--init');\n if (this._virtualization) args.push('--virtualization');\n if (this._noDns) args.push('--no-dns');\n\n args.push(this._image, ...this._command);\n return args;\n }\n\n private async _waitUntilContainerReady(action: string): Promise<void> {\n const deadline = Date.now() + APPLE_CONTAINER_READY_TIMEOUT_MS;\n let lastResult: AppleContainerCliResult | undefined;\n\n while (Date.now() < deadline) {\n const inspect = await this._inspectContainer();\n if (!inspect) {\n throw new SandboxExecutionError(\n `${action} failed because Apple container ${this.containerId} disappeared`,\n 1,\n '',\n '',\n );\n }\n\n this._assertMastraOwned(inspect);\n this._assertCompatibleConfig(inspect);\n\n if (!isRunning(inspect)) {\n const state = getContainerState(inspect) ?? 'not running';\n throw new SandboxExecutionError(\n `${action} failed because Apple container ${this.containerId} is ${state}`,\n 1,\n '',\n '',\n );\n }\n\n lastResult = await this._runCli(['exec', this.containerId, 'sh', '-lc', 'true'], {\n timeout: APPLE_CONTAINER_READY_EXEC_TIMEOUT_MS,\n });\n if (lastResult.success) return;\n\n if (!isMissingContainerMessage(lastResult.stderr) && !/not running|not yet running/i.test(lastResult.stderr)) {\n break;\n }\n\n await delay(100);\n }\n\n throw new SandboxExecutionError(\n `${action} failed because Apple container ${this.containerId} did not become ready for exec`,\n lastResult?.exitCode ?? 1,\n lastResult?.stdout ?? '',\n lastResult?.stderr ?? '',\n );\n }\n\n private async _deleteContainerIgnoringMissing(): Promise<void> {\n const result = await this._runCli(['delete', '--force', this.containerId]);\n if (!result.success && !isMissingContainerMessage(result.stderr)) {\n this._assertSuccess(result, `delete Apple container ${this.containerId}`);\n }\n }\n\n private _runtimeConfigForHash(): Record<string, unknown> {\n return {\n image: this._image,\n command: this._command,\n env: this._env,\n volumes: this._volumes,\n mounts: this._mounts,\n network: this._network,\n publishedPorts: this._publishedPorts,\n publishedSockets: this._publishedSockets,\n cpus: this._cpus,\n memory: this._memory,\n platform: this._platform,\n arch: this._arch,\n os: this._os,\n rosetta: this._rosetta,\n readonlyRootfs: this._readonlyRootfs,\n ssh: this._ssh,\n init: this._init,\n virtualization: this._virtualization,\n capAdd: this._capAdd,\n capDrop: this._capDrop,\n tmpfs: this._tmpfs,\n dns: this._dns,\n dnsSearch: this._dnsSearch,\n noDns: this._noDns,\n labels: this._userLabels,\n workingDir: this._workingDir,\n };\n }\n\n private _serializableConfig(): Record<string, unknown> {\n return compactConfig({\n id: this.id,\n name: this._configuredName,\n image: this._image,\n command: this._command,\n env: this._env,\n volumes: this._volumes,\n mounts: this._mounts,\n network: this._network,\n publishedPorts: this._publishedPorts,\n publishedSockets: this._publishedSockets,\n cpus: this._cpus,\n memory: this._memory,\n platform: this._platform,\n arch: this._arch,\n os: this._os,\n rosetta: this._rosetta,\n readonlyRootfs: this._readonlyRootfs,\n ssh: this._ssh,\n init: this._init,\n virtualization: this._virtualization,\n capAdd: this._capAdd,\n capDrop: this._capDrop,\n tmpfs: this._tmpfs,\n dns: this._dns,\n dnsSearch: this._dnsSearch,\n noDns: this._noDns,\n labels: this._userLabels,\n workingDir: this._workingDir,\n timeout: this._timeout,\n deleteOnDestroy: this._deleteOnDestroy,\n });\n }\n\n private _assertSuccess(result: AppleContainerCliResult, action: string): void {\n if (result.success) return;\n throw new SandboxExecutionError(\n `${action} failed with exit code ${result.exitCode}: ${result.stderr}`,\n result.exitCode,\n result.stdout,\n result.stderr,\n );\n }\n\n private _assertMastraOwned(inspect: AppleContainerInspectResult): void {\n if (isMastraOwned(inspect, this.id)) return;\n throw new SandboxExecutionError(\n `Refusing to manage Apple container ${this.containerId} because it is not labeled as Mastra sandbox ${this.id}`,\n 1,\n '',\n '',\n );\n }\n\n private _assertCompatibleConfig(inspect: AppleContainerInspectResult): void {\n const existingHash = inspect.configuration?.labels?.['mastra.sandbox.config-hash'];\n if (!existingHash || existingHash === this._configHash) return;\n throw new SandboxExecutionError(\n `Refusing to manage Apple container ${this.containerId} because its immutable configuration does not match sandbox ${this.id}`,\n 1,\n '',\n '',\n );\n }\n\n private _runCli(args: string[], options: AppleContainerCommandRunnerOptions = {}): Promise<AppleContainerCliResult> {\n return this._runner.run(args, {\n timeout: this._timeout,\n ...options,\n });\n }\n}\n\nexport function runAppleContainerCli(\n binary: string,\n args: string[],\n options: AppleContainerCommandRunnerOptions = {},\n): Promise<AppleContainerCliResult> {\n const handle = new AppleContainerCliProcess(binary, args, options);\n return handle.wait() as Promise<AppleContainerCliResult>;\n}\n\nclass AppleContainerCliProcess extends ProcessHandle {\n readonly pid: string;\n exitCode: number | undefined;\n\n private readonly child: ChildProcessByStdio<null, Readable, Readable>;\n private readonly waitPromise: Promise<AppleContainerCliResult>;\n private readonly startedAt = Date.now();\n private killed = false;\n private timedOut = false;\n private forceKillTimeout: NodeJS.Timeout | undefined;\n\n constructor(binary: string, args: string[], options: AppleContainerCommandRunnerOptions = {}) {\n super({\n maxRetainedBytes: options.maxRetainedBytes,\n onStdout: options.onStdout,\n onStderr: options.onStderr,\n });\n\n this.child = spawn(binary, args, {\n stdio: ['ignore', 'pipe', 'pipe'],\n env: options.env ? { ...process.env, ...options.env } : process.env,\n });\n this.pid = this.child.pid ? String(this.child.pid) : `${binary}:${args.join(' ')}`;\n\n let settled = false;\n const stdoutDecoder = new StringDecoder();\n const stderrDecoder = new StringDecoder();\n let stdoutDecoderEnded = false;\n let stderrDecoderEnded = false;\n let timeout: NodeJS.Timeout | undefined;\n const onAbort = (): void => {\n void this.kill();\n };\n\n const flushStdout = (): void => {\n if (stdoutDecoderEnded) return;\n stdoutDecoderEnded = true;\n const data = stdoutDecoder.end();\n if (data) this.emitStdout(data);\n };\n const flushStderr = (): void => {\n if (stderrDecoderEnded) return;\n stderrDecoderEnded = true;\n const data = stderrDecoder.end();\n if (data) this.emitStderr(data);\n };\n\n const finish = (exitCode: number): AppleContainerCliResult => {\n this.exitCode = exitCode;\n return {\n success: exitCode === 0,\n exitCode,\n stdout: this.stdout,\n stderr: this.stderr,\n executionTimeMs: Date.now() - this.startedAt,\n killed: this.killed,\n timedOut: this.timedOut,\n };\n };\n\n const cleanup = (): void => {\n if (timeout) clearTimeout(timeout);\n if (this.forceKillTimeout) clearTimeout(this.forceKillTimeout);\n options.abortSignal?.removeEventListener('abort', onAbort);\n };\n\n this.waitPromise = new Promise((resolve, reject) => {\n const settle = (callback: () => void): void => {\n if (settled) return;\n settled = true;\n cleanup();\n callback();\n };\n\n this.child.stdout.on('data', (chunk: Buffer) => {\n const data = stdoutDecoder.write(chunk);\n if (data) this.emitStdout(data);\n });\n this.child.stderr.on('data', (chunk: Buffer) => {\n const data = stderrDecoder.write(chunk);\n if (data) this.emitStderr(data);\n });\n\n this.child.stdout.on('end', flushStdout);\n this.child.stderr.on('end', flushStderr);\n\n this.child.on('error', error => {\n settle(() => {\n flushStdout();\n flushStderr();\n reject(\n error instanceof Error && 'code' in error && error.code === 'ENOENT'\n ? new SandboxExecutionError(`Apple container CLI not found: ${binary}`, 127, this.stdout, error.message)\n : error,\n );\n });\n });\n\n this.child.on('close', code => {\n settle(() => {\n flushStdout();\n flushStderr();\n resolve(finish(code ?? (this.killed ? 137 : 1)));\n });\n });\n });\n\n timeout =\n options.timeout && options.timeout > 0\n ? setTimeout(() => {\n this.timedOut = true;\n void this.kill();\n }, options.timeout)\n : undefined;\n if (options.abortSignal) {\n if (options.abortSignal.aborted) {\n void this.kill();\n } else {\n options.abortSignal.addEventListener('abort', onAbort, { once: true });\n }\n }\n }\n\n async wait(): Promise<AppleContainerCliResult> {\n return this.waitPromise;\n }\n\n async kill(): Promise<boolean> {\n if (this.exitCode !== undefined || this.child.killed) return false;\n this.killed = true;\n this.child.kill('SIGTERM');\n this.forceKillTimeout = setTimeout(() => {\n if (this.exitCode === undefined && this.child.exitCode === null && this.child.signalCode === null) {\n this.child.kill('SIGKILL');\n }\n }, 1000);\n this.forceKillTimeout.unref();\n return true;\n }\n\n async sendStdin(): Promise<void> {\n throw new Error('Apple container CLI runner does not support stdin');\n }\n}\n\nfunction generateId(): string {\n return `apple-container-sandbox-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nfunction sanitizeContainerName(name: string): string {\n const sanitized = name.replace(/[^a-zA-Z0-9_.-]/g, '-');\n return /^[a-zA-Z0-9]/.test(sanitized) ? sanitized : `c-${sanitized}`;\n}\n\nfunction buildShellCommand(command: string, args: string[]): string {\n return args.length > 0 ? [command, ...args].map(shellQuote).join(' ') : command;\n}\n\nfunction buildTimeoutShellCommand(command: string, timeoutMs: number): string {\n const timeoutSeconds = formatTimeoutSeconds(timeoutMs);\n const innerScript = [\n `sh -lc ${shellQuote(command)} & child=$!`,\n `trap 'kill -TERM \"$child\" 2>/dev/null; wait \"$child\" 2>/dev/null; exit ${APPLE_CONTAINER_TIMEOUT_EXIT_CODE}' TERM INT`,\n 'wait \"$child\"; code=$?',\n 'trap - TERM INT',\n 'printf \"%s\" \"$code\" > \"$MASTRA_TIMEOUT_RESULT_FILE\"',\n 'exit \"$code\"',\n ].join('; ');\n return [\n 'result_file=\"/tmp/.mastra-apple-container-exit-$$\"',\n 'rm -f \"$result_file\"',\n `MASTRA_TIMEOUT_RESULT_FILE=\"$result_file\" timeout ${timeoutSeconds}s sh -lc ${shellQuote(innerScript)}`,\n 'timeout_code=$?',\n 'if [ -f \"$result_file\" ]; then code=\"$(cat \"$result_file\")\"; rm -f \"$result_file\"; exit \"$code\"; fi',\n 'rm -f \"$result_file\"',\n `case \"$timeout_code\" in 124|137|143) printf '%s\\\\n' ${shellQuote(APPLE_CONTAINER_TIMEOUT_MARKER)} >&2; exit ${APPLE_CONTAINER_TIMEOUT_EXIT_CODE};; *) exit \"$timeout_code\";; esac`,\n ].join('; ');\n}\n\nfunction formatTimeoutSeconds(timeoutMs: number): string {\n return Math.max(timeoutMs / 1000, 0.001)\n .toFixed(3)\n .replace(/0+$/, '')\n .replace(/\\.$/, '');\n}\n\nfunction shellQuote(arg: string): string {\n if (/^[a-zA-Z0-9._\\-\\/=:@]+$/.test(arg)) return arg;\n return `'${arg.replace(/'/g, \"'\\\\''\")}'`;\n}\n\nfunction stripTimeoutMarker(stderr: string): string {\n return stderr\n .split('\\n')\n .filter(line => line.trim() !== APPLE_CONTAINER_TIMEOUT_MARKER)\n .join('\\n')\n .replace(/^\\n+|\\n+$/g, '');\n}\n\nfunction envFlags(env: Record<string, string | undefined>): { args: string[]; env: Record<string, string> } {\n const args: string[] = [];\n const childEnv: Record<string, string> = {};\n for (const [key, value] of Object.entries(env)) {\n if (value === undefined) continue;\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {\n throw new Error(`Invalid environment variable name for Apple container command: ${key}`);\n }\n args.push('--env', key);\n childEnv[key] = value;\n }\n return { args, env: childEnv };\n}\n\nfunction isRunning(inspect: AppleContainerInspectResult): boolean {\n return getContainerState(inspect) === 'running';\n}\n\nfunction getContainerState(inspect: AppleContainerInspectResult): string | undefined {\n return typeof inspect.status === 'string' ? inspect.status : inspect.status?.state;\n}\n\nfunction isMastraOwned(inspect: AppleContainerInspectResult, sandboxId: string): boolean {\n const labels = inspect.configuration?.labels;\n return labels?.['mastra.sandbox'] === 'true' && labels['mastra.sandbox.id'] === sandboxId;\n}\n\nfunction isMissingContainerMessage(message: string): boolean {\n return /not found|no such|does not exist|unknown container/i.test(message);\n}\n\nfunction validateTmpfsPaths(tmpfs: string[]): void {\n for (const entry of tmpfs) {\n if (!entry.startsWith('/') || /[:,]/.test(entry)) {\n throw new Error(\n `Invalid Apple container tmpfs path \"${entry}\". Apple container --tmpfs accepts container paths only, for example \"/tmp\".`,\n );\n }\n }\n}\n\nfunction compactConfig(config: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(config)) {\n if (value === undefined) continue;\n if (Array.isArray(value) && value.length === 0) continue;\n if (isPlainRecord(value) && Object.keys(value).length === 0) continue;\n result[key] = value;\n }\n return result;\n}\n\nfunction hashConfig(config: Record<string, unknown>): string {\n return createHash('sha256')\n .update(stableStringify(compactConfig(config)))\n .digest('hex')\n .slice(0, 16);\n}\n\nfunction stableStringify(value: unknown): string {\n if (Array.isArray(value)) {\n return `[${value.map(stableStringify).join(',')}]`;\n }\n if (isPlainRecord(value)) {\n return `{${Object.keys(value)\n .sort()\n .map(key => `${JSON.stringify(key)}:${stableStringify(value[key])}`)\n .join(',')}}`;\n }\n return JSON.stringify(value);\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","/**\n * Apple container sandbox provider descriptor for MastraEditor.\n */\n\nimport type { SandboxProvider } from '@mastra/core/editor';\nimport { AppleContainerSandbox } from './sandbox';\nimport type { AppleContainerSandboxOptions } from './sandbox';\n\nexport type AppleContainerProviderConfig = Pick<\n AppleContainerSandboxOptions,\n | 'id'\n | 'image'\n | 'name'\n | 'command'\n | 'env'\n | 'volumes'\n | 'mounts'\n | 'network'\n | 'publishedPorts'\n | 'publishedSockets'\n | 'cpus'\n | 'memory'\n | 'platform'\n | 'arch'\n | 'os'\n | 'rosetta'\n | 'readonlyRootfs'\n | 'ssh'\n | 'init'\n | 'virtualization'\n | 'capAdd'\n | 'capDrop'\n | 'tmpfs'\n | 'dns'\n | 'dnsSearch'\n | 'noDns'\n | 'labels'\n | 'workingDir'\n | 'timeout'\n | 'deleteOnDestroy'\n>;\n\nexport const appleContainerSandboxProvider: SandboxProvider<AppleContainerProviderConfig> = {\n id: 'apple-container',\n name: 'Apple Container Sandbox',\n description: 'Local OCI Linux container sandbox powered by Apple container',\n configSchema: {\n type: 'object',\n additionalProperties: false,\n properties: {\n id: {\n type: 'string',\n description: 'Stable sandbox ID used for reconnecting to the same Apple container.',\n },\n image: {\n type: 'string',\n description: 'OCI image to use',\n default: 'node:22-slim',\n },\n name: {\n type: 'string',\n description: 'Apple container name. Defaults to the sandbox ID.',\n },\n command: {\n type: 'array',\n description: 'Container init command. Must keep the container alive for exec-based command execution.',\n items: { type: 'string' },\n },\n env: {\n type: 'object',\n description: 'Environment variables',\n additionalProperties: { type: 'string' },\n },\n volumes: {\n type: 'object',\n description: 'Host-to-container bind mounts (host path -> container path)',\n additionalProperties: { type: 'string' },\n },\n mounts: {\n type: 'array',\n description: 'Raw Apple container --mount specs',\n items: { type: 'string' },\n },\n network: {\n type: 'string',\n description: 'Apple container network attachment spec',\n },\n publishedPorts: {\n type: 'array',\n description: 'Port publish specs',\n items: { type: 'string' },\n },\n publishedSockets: {\n type: 'array',\n description: 'Socket publish specs',\n items: { type: 'string' },\n },\n cpus: {\n anyOf: [{ type: 'number' }, { type: 'string' }],\n description: 'Number of CPUs to allocate',\n },\n memory: {\n type: 'string',\n description: 'Memory allocation, for example 1G',\n },\n platform: {\n type: 'string',\n description: 'OCI platform, for example linux/arm64',\n },\n arch: {\n type: 'string',\n description: 'Image architecture for multi-arch images',\n },\n os: {\n type: 'string',\n description: 'Operating system for multi-platform images',\n },\n rosetta: {\n type: 'boolean',\n description: 'Enable Rosetta in the container',\n default: false,\n },\n readonlyRootfs: {\n type: 'boolean',\n description: 'Mount the container root filesystem as read-only',\n default: false,\n },\n ssh: {\n type: 'boolean',\n description: 'Forward the host SSH agent socket',\n default: false,\n },\n init: {\n type: 'boolean',\n description: \"Enable Apple's init process in the container\",\n default: true,\n },\n virtualization: {\n type: 'boolean',\n description: 'Expose virtualization capabilities to the container',\n default: false,\n },\n capAdd: {\n type: 'array',\n description: 'Linux capabilities to add',\n items: { type: 'string' },\n },\n capDrop: {\n type: 'array',\n description: 'Linux capabilities to drop',\n items: { type: 'string' },\n },\n tmpfs: {\n type: 'array',\n description: 'tmpfs destination paths',\n items: { type: 'string' },\n },\n dns: {\n type: 'array',\n description: 'DNS nameserver IPs',\n items: { type: 'string' },\n },\n dnsSearch: {\n type: 'array',\n description: 'DNS search domains',\n items: { type: 'string' },\n },\n noDns: {\n type: 'boolean',\n description: 'Do not configure DNS in the container',\n default: false,\n },\n labels: {\n type: 'object',\n description: 'Container labels',\n additionalProperties: { type: 'string' },\n },\n workingDir: {\n type: 'string',\n description: 'Working directory inside the container',\n default: '/workspace',\n },\n timeout: {\n type: 'number',\n description: 'Default command timeout in milliseconds',\n default: 300_000,\n },\n deleteOnDestroy: {\n type: 'boolean',\n description: 'Delete the Apple container on destroy',\n default: true,\n },\n },\n },\n createSandbox: config => {\n const {\n id,\n image,\n name,\n command,\n env,\n volumes,\n mounts,\n network,\n publishedPorts,\n publishedSockets,\n cpus,\n memory,\n platform,\n arch,\n os,\n rosetta,\n readonlyRootfs,\n ssh,\n init,\n virtualization,\n capAdd,\n capDrop,\n tmpfs,\n dns,\n dnsSearch,\n noDns,\n labels,\n workingDir,\n timeout,\n deleteOnDestroy,\n } = config;\n\n return new AppleContainerSandbox({\n id,\n image,\n name,\n command,\n env,\n volumes,\n mounts,\n network,\n publishedPorts,\n publishedSockets,\n cpus,\n memory,\n platform,\n arch,\n os,\n rosetta,\n readonlyRootfs,\n ssh,\n init,\n virtualization,\n capAdd,\n capDrop,\n tmpfs,\n dns,\n dnsSearch,\n noDns,\n labels,\n workingDir,\n timeout,\n deleteOnDestroy,\n });\n },\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/sandbox/index.ts","../src/provider.ts"],"names":["MastraSandbox","result","SandboxExecutionError","ProcessHandle","spawn","StringDecoder","createHash"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Apple container CLI sandbox provider.\n *\n * This provider maps Mastra's WorkspaceSandbox command execution contract to\n * Apple's `container` CLI. It starts a long-lived OCI Linux container and uses\n * `container exec` for commands.\n *\n * @see https://github.com/apple/container\n */\n\nimport { spawn } from 'node:child_process';\nimport type { ChildProcessByStdio } from 'node:child_process';\nimport { createHash } from 'node:crypto';\nimport type { Readable } from 'node:stream';\nimport { StringDecoder } from 'node:string_decoder';\nimport type { RequestContext } from '@mastra/core/di';\nimport type {\n CommandResult,\n ExecuteCommandOptions,\n InstructionsOption,\n MastraSandboxOptions,\n ProviderStatus,\n SandboxCloneOptions,\n SandboxInfo,\n} from '@mastra/core/workspace';\nimport { MastraSandbox, ProcessHandle, SandboxExecutionError } from '@mastra/core/workspace';\n\nconst DEFAULT_COMMAND_TIMEOUT_MS = 300_000;\nconst DEFAULT_IMAGE = 'node:22-slim';\nconst DEFAULT_COMMAND = ['sleep', 'infinity'];\nconst DEFAULT_WORKING_DIR = '/workspace';\nconst APPLE_CONTAINER_CLI_GRACE_TIMEOUT_MS = 10_000;\nconst APPLE_CONTAINER_READY_TIMEOUT_MS = 10_000;\nconst APPLE_CONTAINER_READY_EXEC_TIMEOUT_MS = 5_000;\nconst APPLE_CONTAINER_TIMEOUT_EXIT_CODE = 124;\nconst APPLE_CONTAINER_TIMEOUT_MARKER = '__MASTRA_APPLE_CONTAINER_TIMEOUT__';\n\nexport interface AppleContainerCliResult {\n success: boolean;\n exitCode: number;\n stdout: string;\n stderr: string;\n executionTimeMs: number;\n timedOut?: boolean;\n killed?: boolean;\n stdoutTruncated?: boolean;\n stderrTruncated?: boolean;\n stdoutDroppedBytes?: number;\n stderrDroppedBytes?: number;\n}\n\nexport interface AppleContainerCommandRunnerOptions {\n timeout?: number;\n env?: Record<string, string>;\n abortSignal?: AbortSignal;\n onStdout?: (data: string) => void;\n onStderr?: (data: string) => void;\n maxRetainedBytes?: number;\n}\n\nexport interface AppleContainerCommandRunner {\n run(args: string[], options?: AppleContainerCommandRunnerOptions): Promise<AppleContainerCliResult>;\n}\n\nexport class DefaultAppleContainerCommandRunner implements AppleContainerCommandRunner {\n constructor(private readonly binary = 'container') {}\n\n run(args: string[], options: AppleContainerCommandRunnerOptions = {}): Promise<AppleContainerCliResult> {\n return runAppleContainerCli(this.binary, args, options);\n }\n}\n\ninterface AppleContainerInspectResult {\n id?: string;\n status?:\n | string\n | {\n state?: string;\n networks?: Array<Record<string, unknown>>;\n };\n configuration?: {\n id?: string;\n hostname?: string;\n labels?: Record<string, string>;\n networks?: Array<Record<string, unknown>>;\n resources?: {\n cpus?: number;\n memoryInBytes?: number;\n };\n mounts?: unknown[];\n };\n}\n\nexport interface AppleContainerSandboxOptions extends Omit<MastraSandboxOptions, 'processes'> {\n /** Unique identifier for this sandbox instance. */\n id?: string;\n /** Apple container name passed to `container run --name`. Defaults to the sandbox id. */\n name?: string;\n /** OCI image to use. */\n image?: string;\n /** Container init command. Must keep the container alive for exec-based command execution. */\n command?: string[];\n /** Environment variables available to the container and every command exec. */\n env?: Record<string, string>;\n /** Host-to-container bind mounts. */\n volumes?: Record<string, string>;\n /** Raw `container run --mount` specs. */\n mounts?: string[];\n /** Apple container network attachment spec. */\n network?: string;\n /** Published port specs passed to `container run --publish`. */\n publishedPorts?: string[];\n /** Published socket specs passed to `container run --publish-socket`. */\n publishedSockets?: string[];\n /** Number of CPUs to allocate. */\n cpus?: number | string;\n /** Memory allocation, for example `1G`. */\n memory?: string;\n /** OCI platform, for example `linux/arm64`. */\n platform?: string;\n /** Image architecture when selecting a multi-arch image. */\n arch?: string;\n /** Operating system when selecting a multi-platform image. */\n os?: string;\n /** Enable Rosetta in the container. */\n rosetta?: boolean;\n /** Mount the container root filesystem as read-only. */\n readonlyRootfs?: boolean;\n /** Forward the host SSH agent socket. */\n ssh?: boolean;\n /** Enable Apple's init process in the container. */\n init?: boolean;\n /** Expose virtualization capabilities to the container. */\n virtualization?: boolean;\n /** Linux capabilities to add. */\n capAdd?: string[];\n /** Linux capabilities to drop. */\n capDrop?: string[];\n /** tmpfs destination paths. */\n tmpfs?: string[];\n /** DNS nameserver IPs. */\n dns?: string[];\n /** DNS search domains. */\n dnsSearch?: string[];\n /** Do not configure DNS in the container. */\n noDns?: boolean;\n /** Container labels. Mastra labels are always added. */\n labels?: Record<string, string>;\n /** Working directory inside the container. */\n workingDir?: string;\n /** Default command timeout in milliseconds. */\n timeout?: number;\n /** Delete the container on destroy. Defaults to true. */\n deleteOnDestroy?: boolean;\n /** Path or name for the Apple container CLI. */\n containerBinary?: string;\n /** Custom command runner, primarily for tests. */\n runner?: AppleContainerCommandRunner;\n /** Custom instructions for getInstructions(). String replaces the default; function receives it. */\n instructions?: InstructionsOption;\n}\n\nexport class AppleContainerSandbox extends MastraSandbox {\n readonly id: string;\n readonly name = 'AppleContainerSandbox';\n readonly provider = 'apple-container';\n status: ProviderStatus = 'pending';\n\n private readonly _containerName: string;\n private readonly _configuredName?: string;\n private readonly _image: string;\n private readonly _command: string[];\n private readonly _env: Record<string, string>;\n private readonly _volumes: Record<string, string>;\n private readonly _mounts: string[];\n private readonly _network?: string;\n private readonly _publishedPorts: string[];\n private readonly _publishedSockets: string[];\n private readonly _cpus?: number | string;\n private readonly _memory?: string;\n private readonly _platform?: string;\n private readonly _arch?: string;\n private readonly _os?: string;\n private readonly _rosetta: boolean;\n private readonly _readonlyRootfs: boolean;\n private readonly _ssh: boolean;\n private readonly _init: boolean;\n private readonly _virtualization: boolean;\n private readonly _capAdd: string[];\n private readonly _capDrop: string[];\n private readonly _tmpfs: string[];\n private readonly _dns: string[];\n private readonly _dnsSearch: string[];\n private readonly _noDns: boolean;\n private readonly _userLabels: Record<string, string>;\n private readonly _labels: Record<string, string>;\n private readonly _configHash: string;\n private readonly _workingDir: string;\n private readonly _timeout: number;\n private readonly _deleteOnDestroy: boolean;\n private readonly _runner: AppleContainerCommandRunner;\n private readonly _instructionsOverride?: InstructionsOption;\n private readonly _createdAt: Date;\n private readonly _constructorOptions: AppleContainerSandboxOptions;\n\n private _containerId?: string;\n\n constructor(options: AppleContainerSandboxOptions = {}) {\n super({\n ...options,\n name: 'AppleContainerSandbox',\n });\n\n this.id = options.id ?? generateId();\n this._configuredName = options.name;\n this._containerName = sanitizeContainerName(options.name ?? this.id);\n this._image = options.image ?? DEFAULT_IMAGE;\n this._command = options.command ?? DEFAULT_COMMAND;\n this._env = options.env ?? {};\n this._volumes = options.volumes ?? {};\n this._mounts = options.mounts ?? [];\n this._network = options.network;\n this._publishedPorts = options.publishedPorts ?? [];\n this._publishedSockets = options.publishedSockets ?? [];\n this._cpus = options.cpus;\n this._memory = options.memory;\n this._platform = options.platform;\n this._arch = options.arch;\n this._os = options.os;\n this._rosetta = options.rosetta ?? false;\n this._readonlyRootfs = options.readonlyRootfs ?? false;\n this._ssh = options.ssh ?? false;\n this._init = options.init ?? true;\n this._virtualization = options.virtualization ?? false;\n this._capAdd = options.capAdd ?? [];\n this._capDrop = options.capDrop ?? [];\n this._tmpfs = options.tmpfs ?? [];\n validateTmpfsPaths(this._tmpfs);\n this._dns = options.dns ?? [];\n this._dnsSearch = options.dnsSearch ?? [];\n this._noDns = options.noDns ?? false;\n this._workingDir = options.workingDir ?? DEFAULT_WORKING_DIR;\n this._userLabels = options.labels ?? {};\n this._configHash = hashConfig(this._runtimeConfigForHash());\n this._labels = {\n ...this._userLabels,\n 'mastra.sandbox': 'true',\n 'mastra.sandbox.id': this.id,\n 'mastra.sandbox.config-hash': this._configHash,\n };\n this._timeout = options.timeout ?? DEFAULT_COMMAND_TIMEOUT_MS;\n this._deleteOnDestroy = options.deleteOnDestroy ?? true;\n this._runner = options.runner ?? new DefaultAppleContainerCommandRunner(options.containerBinary);\n this._instructionsOverride = options.instructions;\n this._createdAt = new Date();\n this._constructorOptions = { ...options };\n }\n\n /**\n * Construct a sibling `AppleContainerSandbox` that inherits this sandbox's\n * configuration (image, resources, network, security options, labels) with\n * per-instance overrides.\n *\n * Performs no I/O — the sandbox clone provisions (or reconnects to an\n * existing container labelled with the same logical `id`) on its own\n * `start()`. Use it when one configured sandbox acts as the template for a\n * fleet of independent sandboxes (e.g. one per project).\n *\n * `options.idleTimeoutMinutes` is ignored (Apple containers have no\n * provider-side idle teardown; `timeout` here is a command timeout), and\n * `options.sandboxId` is ignored because reconnection is by logical `id`.\n */\n clone(options: SandboxCloneOptions = {}): AppleContainerSandbox {\n const { id: _id, name: _name, ...base } = this._constructorOptions;\n return new AppleContainerSandbox({\n ...base,\n ...(options.id !== undefined && { id: options.id }),\n ...(options.env !== undefined && { env: options.env }),\n });\n }\n\n get containerId(): string {\n return this._containerId ?? this._containerName;\n }\n\n async start(): Promise<void> {\n await this._runPlainLifecycle('starting', 'running', () => this._startContainer());\n }\n\n async stop(): Promise<void> {\n await this._runPlainLifecycle('stopping', 'stopped', () => this._stopContainer());\n }\n\n async destroy(): Promise<void> {\n await this._runPlainLifecycle('destroying', 'destroyed', () => this._destroyContainer());\n }\n\n private async _startContainer(): Promise<void> {\n const existing = await this._inspectContainer();\n if (existing) {\n this._assertMastraOwned(existing);\n this._assertCompatibleConfig(existing);\n this._containerId = existing.configuration?.id ?? this._containerName;\n if (!isRunning(existing)) {\n const result = await this._runCli(['start', this.containerId]);\n this._assertSuccess(result, `start Apple container ${this.containerId}`);\n await this._waitUntilContainerReady(`start Apple container ${this.containerId}`);\n }\n return;\n }\n\n const env = envFlags(this._env);\n const result = await this._runCli(this._buildRunArgs(env.args), { env: env.env });\n this._assertSuccess(result, `create Apple container ${this._containerName}`);\n this._containerId = this._containerName;\n try {\n await this._waitUntilContainerReady(`create Apple container ${this._containerName}`);\n } catch (error) {\n if (this._deleteOnDestroy) {\n await this._deleteContainerIgnoringMissing();\n }\n throw error;\n }\n }\n\n private async _stopContainer(): Promise<void> {\n const existing = await this._inspectContainer();\n if (!existing) {\n return;\n }\n this._assertMastraOwned(existing);\n if (!isRunning(existing)) {\n return;\n }\n\n const result = await this._runCli(['stop', this.containerId]);\n if (!result.success && !isMissingContainerMessage(result.stderr)) {\n this._assertSuccess(result, `stop Apple container ${this.containerId}`);\n }\n }\n\n private async _destroyContainer(): Promise<void> {\n if (!this._deleteOnDestroy) {\n await this._stopContainer();\n return;\n }\n\n const existing = await this._inspectContainer();\n if (!existing) {\n return;\n }\n this._assertMastraOwned(existing);\n\n await this._deleteContainerIgnoringMissing();\n }\n\n async executeCommand(\n command: string,\n args: string[] = [],\n options: ExecuteCommandOptions = {},\n ): Promise<CommandResult> {\n await this.ensureRunning();\n\n const commandTimeout = options.timeout ?? this._timeout;\n const hasCommandTimeout = Number.isFinite(commandTimeout) && commandTimeout > 0;\n const fullCommand = buildShellCommand(command, args);\n const shellCommand = hasCommandTimeout ? buildTimeoutShellCommand(fullCommand, commandTimeout) : fullCommand;\n const env = envFlags({ ...this._env, ...options.env });\n const cliArgs = [\n 'exec',\n ...env.args,\n '--workdir',\n options.cwd ?? this._workingDir,\n this.containerId,\n 'sh',\n '-lc',\n shellCommand,\n ];\n\n const result = await this._runner.run(cliArgs, {\n timeout: hasCommandTimeout ? commandTimeout + APPLE_CONTAINER_CLI_GRACE_TIMEOUT_MS : undefined,\n env: env.env,\n abortSignal: options.abortSignal,\n onStdout: options.onStdout,\n onStderr: options.onStderr,\n maxRetainedBytes: options.maxRetainedBytes,\n });\n\n const timedOut =\n result.exitCode === APPLE_CONTAINER_TIMEOUT_EXIT_CODE && result.stderr.includes(APPLE_CONTAINER_TIMEOUT_MARKER);\n const stderr = timedOut ? stripTimeoutMarker(result.stderr) : result.stderr;\n\n return {\n ...result,\n stderr,\n ...(timedOut && { timedOut: true, killed: true }),\n command: fullCommand,\n args,\n };\n }\n\n async getInfo(): Promise<SandboxInfo> {\n const inspect = this._containerId ? await this._inspectContainer() : undefined;\n const resources = inspect?.configuration?.resources;\n\n return {\n id: this.id,\n name: this.name,\n provider: this.provider,\n status: this.status,\n createdAt: this._createdAt,\n resources: resources\n ? {\n cpuCores: resources.cpus,\n memoryMB: resources.memoryInBytes ? Math.round(resources.memoryInBytes / 1024 / 1024) : undefined,\n }\n : undefined,\n metadata: {\n ...this._serializableConfig(),\n },\n };\n }\n\n getInstructions(opts?: { requestContext?: RequestContext }): string {\n const defaultInstructions = this._buildDefaultInstructions();\n if (typeof this._instructionsOverride === 'string') {\n return this._instructionsOverride;\n }\n if (typeof this._instructionsOverride === 'function') {\n return this._instructionsOverride({ defaultInstructions, requestContext: opts?.requestContext });\n }\n return defaultInstructions;\n }\n\n private _buildDefaultInstructions(): string {\n const parts = [\n `Apple container sandbox: commands run inside a local OCI Linux container from image ${this._image}.`,\n `Working directory: ${this._workingDir}.`,\n ];\n\n const volumeCount = Object.keys(this._volumes).length + this._mounts.length;\n if (volumeCount > 0) {\n parts.push(`${volumeCount} host mount(s) are configured.`);\n }\n if (this._timeout > 0) {\n parts.push(`Default command timeout: ${Math.ceil(this._timeout / 1000)}s.`);\n }\n\n return parts.join(' ');\n }\n\n private async _runPlainLifecycle(\n activeStatus: ProviderStatus,\n completeStatus: ProviderStatus,\n operation: () => Promise<void>,\n ): Promise<void> {\n const managedByBaseWrapper = this.status === activeStatus;\n if (!managedByBaseWrapper) {\n this.status = activeStatus;\n }\n\n try {\n await operation();\n if (!managedByBaseWrapper) {\n this.status = completeStatus;\n }\n } catch (error) {\n if (!managedByBaseWrapper) {\n this.status = 'error';\n }\n throw error;\n }\n }\n\n private async _inspectContainer(): Promise<AppleContainerInspectResult | undefined> {\n const result = await this._runCli(['inspect', this.containerId]);\n if (!result.success) {\n if (isMissingContainerMessage(result.stderr)) return undefined;\n this._assertSuccess(result, `inspect Apple container ${this.containerId}`);\n return undefined;\n }\n\n try {\n const parsed = JSON.parse(result.stdout) as AppleContainerInspectResult[] | AppleContainerInspectResult;\n return Array.isArray(parsed) ? parsed[0] : parsed;\n } catch (error) {\n throw new SandboxExecutionError(\n `Failed to parse Apple container inspect output for ${this.containerId}: ${\n error instanceof Error ? error.message : String(error)\n }`,\n 1,\n result.stdout,\n result.stderr,\n );\n }\n }\n\n private _buildRunArgs(envArgs: string[]): string[] {\n const args = ['run', '-d', '--name', this._containerName, '--workdir', this._workingDir];\n\n args.push(...envArgs);\n for (const [hostPath, containerPath] of Object.entries(this._volumes)) {\n args.push('--volume', `${hostPath}:${containerPath}`);\n }\n for (const mount of this._mounts) args.push('--mount', mount);\n for (const [key, value] of Object.entries(this._labels)) args.push('--label', `${key}=${value}`);\n for (const port of this._publishedPorts) args.push('--publish', port);\n for (const socket of this._publishedSockets) args.push('--publish-socket', socket);\n for (const cap of this._capAdd) args.push('--cap-add', cap);\n for (const cap of this._capDrop) args.push('--cap-drop', cap);\n for (const tmpfs of this._tmpfs) args.push('--tmpfs', tmpfs);\n for (const dns of this._dns) args.push('--dns', dns);\n for (const domain of this._dnsSearch) args.push('--dns-search', domain);\n\n if (this._network) args.push('--network', this._network);\n if (this._cpus !== undefined) args.push('--cpus', String(this._cpus));\n if (this._memory !== undefined) args.push('--memory', this._memory);\n if (this._platform) args.push('--platform', this._platform);\n if (this._arch) args.push('--arch', this._arch);\n if (this._os) args.push('--os', this._os);\n if (this._rosetta) args.push('--rosetta');\n if (this._readonlyRootfs) args.push('--read-only');\n if (this._ssh) args.push('--ssh');\n if (this._init) args.push('--init');\n if (this._virtualization) args.push('--virtualization');\n if (this._noDns) args.push('--no-dns');\n\n args.push(this._image, ...this._command);\n return args;\n }\n\n private async _waitUntilContainerReady(action: string): Promise<void> {\n const deadline = Date.now() + APPLE_CONTAINER_READY_TIMEOUT_MS;\n let lastResult: AppleContainerCliResult | undefined;\n\n while (Date.now() < deadline) {\n const inspect = await this._inspectContainer();\n if (!inspect) {\n throw new SandboxExecutionError(\n `${action} failed because Apple container ${this.containerId} disappeared`,\n 1,\n '',\n '',\n );\n }\n\n this._assertMastraOwned(inspect);\n this._assertCompatibleConfig(inspect);\n\n if (!isRunning(inspect)) {\n const state = getContainerState(inspect) ?? 'not running';\n throw new SandboxExecutionError(\n `${action} failed because Apple container ${this.containerId} is ${state}`,\n 1,\n '',\n '',\n );\n }\n\n lastResult = await this._runCli(['exec', this.containerId, 'sh', '-lc', 'true'], {\n timeout: APPLE_CONTAINER_READY_EXEC_TIMEOUT_MS,\n });\n if (lastResult.success) return;\n\n if (!isMissingContainerMessage(lastResult.stderr) && !/not running|not yet running/i.test(lastResult.stderr)) {\n break;\n }\n\n await delay(100);\n }\n\n throw new SandboxExecutionError(\n `${action} failed because Apple container ${this.containerId} did not become ready for exec`,\n lastResult?.exitCode ?? 1,\n lastResult?.stdout ?? '',\n lastResult?.stderr ?? '',\n );\n }\n\n private async _deleteContainerIgnoringMissing(): Promise<void> {\n const result = await this._runCli(['delete', '--force', this.containerId]);\n if (!result.success && !isMissingContainerMessage(result.stderr)) {\n this._assertSuccess(result, `delete Apple container ${this.containerId}`);\n }\n }\n\n private _runtimeConfigForHash(): Record<string, unknown> {\n return {\n image: this._image,\n command: this._command,\n env: this._env,\n volumes: this._volumes,\n mounts: this._mounts,\n network: this._network,\n publishedPorts: this._publishedPorts,\n publishedSockets: this._publishedSockets,\n cpus: this._cpus,\n memory: this._memory,\n platform: this._platform,\n arch: this._arch,\n os: this._os,\n rosetta: this._rosetta,\n readonlyRootfs: this._readonlyRootfs,\n ssh: this._ssh,\n init: this._init,\n virtualization: this._virtualization,\n capAdd: this._capAdd,\n capDrop: this._capDrop,\n tmpfs: this._tmpfs,\n dns: this._dns,\n dnsSearch: this._dnsSearch,\n noDns: this._noDns,\n labels: this._userLabels,\n workingDir: this._workingDir,\n };\n }\n\n private _serializableConfig(): Record<string, unknown> {\n return compactConfig({\n id: this.id,\n name: this._configuredName,\n image: this._image,\n command: this._command,\n env: this._env,\n volumes: this._volumes,\n mounts: this._mounts,\n network: this._network,\n publishedPorts: this._publishedPorts,\n publishedSockets: this._publishedSockets,\n cpus: this._cpus,\n memory: this._memory,\n platform: this._platform,\n arch: this._arch,\n os: this._os,\n rosetta: this._rosetta,\n readonlyRootfs: this._readonlyRootfs,\n ssh: this._ssh,\n init: this._init,\n virtualization: this._virtualization,\n capAdd: this._capAdd,\n capDrop: this._capDrop,\n tmpfs: this._tmpfs,\n dns: this._dns,\n dnsSearch: this._dnsSearch,\n noDns: this._noDns,\n labels: this._userLabels,\n workingDir: this._workingDir,\n timeout: this._timeout,\n deleteOnDestroy: this._deleteOnDestroy,\n });\n }\n\n private _assertSuccess(result: AppleContainerCliResult, action: string): void {\n if (result.success) return;\n throw new SandboxExecutionError(\n `${action} failed with exit code ${result.exitCode}: ${result.stderr}`,\n result.exitCode,\n result.stdout,\n result.stderr,\n );\n }\n\n private _assertMastraOwned(inspect: AppleContainerInspectResult): void {\n if (isMastraOwned(inspect, this.id)) return;\n throw new SandboxExecutionError(\n `Refusing to manage Apple container ${this.containerId} because it is not labeled as Mastra sandbox ${this.id}`,\n 1,\n '',\n '',\n );\n }\n\n private _assertCompatibleConfig(inspect: AppleContainerInspectResult): void {\n const existingHash = inspect.configuration?.labels?.['mastra.sandbox.config-hash'];\n if (!existingHash || existingHash === this._configHash) return;\n throw new SandboxExecutionError(\n `Refusing to manage Apple container ${this.containerId} because its immutable configuration does not match sandbox ${this.id}`,\n 1,\n '',\n '',\n );\n }\n\n private _runCli(args: string[], options: AppleContainerCommandRunnerOptions = {}): Promise<AppleContainerCliResult> {\n return this._runner.run(args, {\n timeout: this._timeout,\n ...options,\n });\n }\n}\n\nexport function runAppleContainerCli(\n binary: string,\n args: string[],\n options: AppleContainerCommandRunnerOptions = {},\n): Promise<AppleContainerCliResult> {\n const handle = new AppleContainerCliProcess(binary, args, options);\n return handle.wait() as Promise<AppleContainerCliResult>;\n}\n\nclass AppleContainerCliProcess extends ProcessHandle {\n readonly pid: string;\n exitCode: number | undefined;\n\n private readonly child: ChildProcessByStdio<null, Readable, Readable>;\n private readonly waitPromise: Promise<AppleContainerCliResult>;\n private readonly startedAt = Date.now();\n private killed = false;\n private timedOut = false;\n private forceKillTimeout: NodeJS.Timeout | undefined;\n\n constructor(binary: string, args: string[], options: AppleContainerCommandRunnerOptions = {}) {\n super({\n maxRetainedBytes: options.maxRetainedBytes,\n onStdout: options.onStdout,\n onStderr: options.onStderr,\n });\n\n this.child = spawn(binary, args, {\n stdio: ['ignore', 'pipe', 'pipe'],\n env: options.env ? { ...process.env, ...options.env } : process.env,\n });\n this.pid = this.child.pid ? String(this.child.pid) : `${binary}:${args.join(' ')}`;\n\n let settled = false;\n const stdoutDecoder = new StringDecoder();\n const stderrDecoder = new StringDecoder();\n let stdoutDecoderEnded = false;\n let stderrDecoderEnded = false;\n let timeout: NodeJS.Timeout | undefined;\n const onAbort = (): void => {\n void this.kill();\n };\n\n const flushStdout = (): void => {\n if (stdoutDecoderEnded) return;\n stdoutDecoderEnded = true;\n const data = stdoutDecoder.end();\n if (data) this.emitStdout(data);\n };\n const flushStderr = (): void => {\n if (stderrDecoderEnded) return;\n stderrDecoderEnded = true;\n const data = stderrDecoder.end();\n if (data) this.emitStderr(data);\n };\n\n const finish = (exitCode: number): AppleContainerCliResult => {\n this.exitCode = exitCode;\n return {\n success: exitCode === 0,\n exitCode,\n stdout: this.stdout,\n stderr: this.stderr,\n executionTimeMs: Date.now() - this.startedAt,\n killed: this.killed,\n timedOut: this.timedOut,\n };\n };\n\n const cleanup = (): void => {\n if (timeout) clearTimeout(timeout);\n if (this.forceKillTimeout) clearTimeout(this.forceKillTimeout);\n options.abortSignal?.removeEventListener('abort', onAbort);\n };\n\n this.waitPromise = new Promise((resolve, reject) => {\n const settle = (callback: () => void): void => {\n if (settled) return;\n settled = true;\n cleanup();\n callback();\n };\n\n this.child.stdout.on('data', (chunk: Buffer) => {\n const data = stdoutDecoder.write(chunk);\n if (data) this.emitStdout(data);\n });\n this.child.stderr.on('data', (chunk: Buffer) => {\n const data = stderrDecoder.write(chunk);\n if (data) this.emitStderr(data);\n });\n\n this.child.stdout.on('end', flushStdout);\n this.child.stderr.on('end', flushStderr);\n\n this.child.on('error', error => {\n settle(() => {\n flushStdout();\n flushStderr();\n reject(\n error instanceof Error && 'code' in error && error.code === 'ENOENT'\n ? new SandboxExecutionError(`Apple container CLI not found: ${binary}`, 127, this.stdout, error.message)\n : error,\n );\n });\n });\n\n this.child.on('close', code => {\n settle(() => {\n flushStdout();\n flushStderr();\n resolve(finish(code ?? (this.killed ? 137 : 1)));\n });\n });\n });\n\n timeout =\n options.timeout && options.timeout > 0\n ? setTimeout(() => {\n this.timedOut = true;\n void this.kill();\n }, options.timeout)\n : undefined;\n if (options.abortSignal) {\n if (options.abortSignal.aborted) {\n void this.kill();\n } else {\n options.abortSignal.addEventListener('abort', onAbort, { once: true });\n }\n }\n }\n\n async wait(): Promise<AppleContainerCliResult> {\n return this.waitPromise;\n }\n\n async kill(): Promise<boolean> {\n if (this.exitCode !== undefined || this.child.killed) return false;\n this.killed = true;\n this.child.kill('SIGTERM');\n this.forceKillTimeout = setTimeout(() => {\n if (this.exitCode === undefined && this.child.exitCode === null && this.child.signalCode === null) {\n this.child.kill('SIGKILL');\n }\n }, 1000);\n this.forceKillTimeout.unref();\n return true;\n }\n\n async sendStdin(): Promise<void> {\n throw new Error('Apple container CLI runner does not support stdin');\n }\n}\n\nfunction generateId(): string {\n return `apple-container-sandbox-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nfunction sanitizeContainerName(name: string): string {\n const sanitized = name.replace(/[^a-zA-Z0-9_.-]/g, '-');\n return /^[a-zA-Z0-9]/.test(sanitized) ? sanitized : `c-${sanitized}`;\n}\n\nfunction buildShellCommand(command: string, args: string[]): string {\n return args.length > 0 ? [command, ...args].map(shellQuote).join(' ') : command;\n}\n\nfunction buildTimeoutShellCommand(command: string, timeoutMs: number): string {\n const timeoutSeconds = formatTimeoutSeconds(timeoutMs);\n const innerScript = [\n `sh -lc ${shellQuote(command)} & child=$!`,\n `trap 'kill -TERM \"$child\" 2>/dev/null; wait \"$child\" 2>/dev/null; exit ${APPLE_CONTAINER_TIMEOUT_EXIT_CODE}' TERM INT`,\n 'wait \"$child\"; code=$?',\n 'trap - TERM INT',\n 'printf \"%s\" \"$code\" > \"$MASTRA_TIMEOUT_RESULT_FILE\"',\n 'exit \"$code\"',\n ].join('; ');\n return [\n 'result_file=\"/tmp/.mastra-apple-container-exit-$$\"',\n 'rm -f \"$result_file\"',\n `MASTRA_TIMEOUT_RESULT_FILE=\"$result_file\" timeout ${timeoutSeconds}s sh -lc ${shellQuote(innerScript)}`,\n 'timeout_code=$?',\n 'if [ -f \"$result_file\" ]; then code=\"$(cat \"$result_file\")\"; rm -f \"$result_file\"; exit \"$code\"; fi',\n 'rm -f \"$result_file\"',\n `case \"$timeout_code\" in 124|137|143) printf '%s\\\\n' ${shellQuote(APPLE_CONTAINER_TIMEOUT_MARKER)} >&2; exit ${APPLE_CONTAINER_TIMEOUT_EXIT_CODE};; *) exit \"$timeout_code\";; esac`,\n ].join('; ');\n}\n\nfunction formatTimeoutSeconds(timeoutMs: number): string {\n return Math.max(timeoutMs / 1000, 0.001)\n .toFixed(3)\n .replace(/0+$/, '')\n .replace(/\\.$/, '');\n}\n\nfunction shellQuote(arg: string): string {\n if (/^[a-zA-Z0-9._\\-\\/=:@]+$/.test(arg)) return arg;\n return `'${arg.replace(/'/g, \"'\\\\''\")}'`;\n}\n\nfunction stripTimeoutMarker(stderr: string): string {\n return stderr\n .split('\\n')\n .filter(line => line.trim() !== APPLE_CONTAINER_TIMEOUT_MARKER)\n .join('\\n')\n .replace(/^\\n+|\\n+$/g, '');\n}\n\nfunction envFlags(env: Record<string, string | undefined>): { args: string[]; env: Record<string, string> } {\n const args: string[] = [];\n const childEnv: Record<string, string> = {};\n for (const [key, value] of Object.entries(env)) {\n if (value === undefined) continue;\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {\n throw new Error(`Invalid environment variable name for Apple container command: ${key}`);\n }\n args.push('--env', key);\n childEnv[key] = value;\n }\n return { args, env: childEnv };\n}\n\nfunction isRunning(inspect: AppleContainerInspectResult): boolean {\n return getContainerState(inspect) === 'running';\n}\n\nfunction getContainerState(inspect: AppleContainerInspectResult): string | undefined {\n return typeof inspect.status === 'string' ? inspect.status : inspect.status?.state;\n}\n\nfunction isMastraOwned(inspect: AppleContainerInspectResult, sandboxId: string): boolean {\n const labels = inspect.configuration?.labels;\n return labels?.['mastra.sandbox'] === 'true' && labels['mastra.sandbox.id'] === sandboxId;\n}\n\nfunction isMissingContainerMessage(message: string): boolean {\n return /not found|no such|does not exist|unknown container/i.test(message);\n}\n\nfunction validateTmpfsPaths(tmpfs: string[]): void {\n for (const entry of tmpfs) {\n if (!entry.startsWith('/') || /[:,]/.test(entry)) {\n throw new Error(\n `Invalid Apple container tmpfs path \"${entry}\". Apple container --tmpfs accepts container paths only, for example \"/tmp\".`,\n );\n }\n }\n}\n\nfunction compactConfig(config: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(config)) {\n if (value === undefined) continue;\n if (Array.isArray(value) && value.length === 0) continue;\n if (isPlainRecord(value) && Object.keys(value).length === 0) continue;\n result[key] = value;\n }\n return result;\n}\n\nfunction hashConfig(config: Record<string, unknown>): string {\n return createHash('sha256')\n .update(stableStringify(compactConfig(config)))\n .digest('hex')\n .slice(0, 16);\n}\n\nfunction stableStringify(value: unknown): string {\n if (Array.isArray(value)) {\n return `[${value.map(stableStringify).join(',')}]`;\n }\n if (isPlainRecord(value)) {\n return `{${Object.keys(value)\n .sort()\n .map(key => `${JSON.stringify(key)}:${stableStringify(value[key])}`)\n .join(',')}}`;\n }\n return JSON.stringify(value);\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","/**\n * Apple container sandbox provider descriptor for MastraEditor.\n */\n\nimport type { SandboxProvider } from '@mastra/core/editor';\nimport { AppleContainerSandbox } from './sandbox';\nimport type { AppleContainerSandboxOptions } from './sandbox';\n\nexport type AppleContainerProviderConfig = Pick<\n AppleContainerSandboxOptions,\n | 'id'\n | 'image'\n | 'name'\n | 'command'\n | 'env'\n | 'volumes'\n | 'mounts'\n | 'network'\n | 'publishedPorts'\n | 'publishedSockets'\n | 'cpus'\n | 'memory'\n | 'platform'\n | 'arch'\n | 'os'\n | 'rosetta'\n | 'readonlyRootfs'\n | 'ssh'\n | 'init'\n | 'virtualization'\n | 'capAdd'\n | 'capDrop'\n | 'tmpfs'\n | 'dns'\n | 'dnsSearch'\n | 'noDns'\n | 'labels'\n | 'workingDir'\n | 'timeout'\n | 'deleteOnDestroy'\n>;\n\nexport const appleContainerSandboxProvider: SandboxProvider<AppleContainerProviderConfig> = {\n id: 'apple-container',\n name: 'Apple Container Sandbox',\n description: 'Local OCI Linux container sandbox powered by Apple container',\n configSchema: {\n type: 'object',\n additionalProperties: false,\n properties: {\n id: {\n type: 'string',\n description: 'Stable sandbox ID used for reconnecting to the same Apple container.',\n },\n image: {\n type: 'string',\n description: 'OCI image to use',\n default: 'node:22-slim',\n },\n name: {\n type: 'string',\n description: 'Apple container name. Defaults to the sandbox ID.',\n },\n command: {\n type: 'array',\n description: 'Container init command. Must keep the container alive for exec-based command execution.',\n items: { type: 'string' },\n },\n env: {\n type: 'object',\n description: 'Environment variables',\n additionalProperties: { type: 'string' },\n },\n volumes: {\n type: 'object',\n description: 'Host-to-container bind mounts (host path -> container path)',\n additionalProperties: { type: 'string' },\n },\n mounts: {\n type: 'array',\n description: 'Raw Apple container --mount specs',\n items: { type: 'string' },\n },\n network: {\n type: 'string',\n description: 'Apple container network attachment spec',\n },\n publishedPorts: {\n type: 'array',\n description: 'Port publish specs',\n items: { type: 'string' },\n },\n publishedSockets: {\n type: 'array',\n description: 'Socket publish specs',\n items: { type: 'string' },\n },\n cpus: {\n anyOf: [{ type: 'number' }, { type: 'string' }],\n description: 'Number of CPUs to allocate',\n },\n memory: {\n type: 'string',\n description: 'Memory allocation, for example 1G',\n },\n platform: {\n type: 'string',\n description: 'OCI platform, for example linux/arm64',\n },\n arch: {\n type: 'string',\n description: 'Image architecture for multi-arch images',\n },\n os: {\n type: 'string',\n description: 'Operating system for multi-platform images',\n },\n rosetta: {\n type: 'boolean',\n description: 'Enable Rosetta in the container',\n default: false,\n },\n readonlyRootfs: {\n type: 'boolean',\n description: 'Mount the container root filesystem as read-only',\n default: false,\n },\n ssh: {\n type: 'boolean',\n description: 'Forward the host SSH agent socket',\n default: false,\n },\n init: {\n type: 'boolean',\n description: \"Enable Apple's init process in the container\",\n default: true,\n },\n virtualization: {\n type: 'boolean',\n description: 'Expose virtualization capabilities to the container',\n default: false,\n },\n capAdd: {\n type: 'array',\n description: 'Linux capabilities to add',\n items: { type: 'string' },\n },\n capDrop: {\n type: 'array',\n description: 'Linux capabilities to drop',\n items: { type: 'string' },\n },\n tmpfs: {\n type: 'array',\n description: 'tmpfs destination paths',\n items: { type: 'string' },\n },\n dns: {\n type: 'array',\n description: 'DNS nameserver IPs',\n items: { type: 'string' },\n },\n dnsSearch: {\n type: 'array',\n description: 'DNS search domains',\n items: { type: 'string' },\n },\n noDns: {\n type: 'boolean',\n description: 'Do not configure DNS in the container',\n default: false,\n },\n labels: {\n type: 'object',\n description: 'Container labels',\n additionalProperties: { type: 'string' },\n },\n workingDir: {\n type: 'string',\n description: 'Working directory inside the container',\n default: '/workspace',\n },\n timeout: {\n type: 'number',\n description: 'Default command timeout in milliseconds',\n default: 300_000,\n },\n deleteOnDestroy: {\n type: 'boolean',\n description: 'Delete the Apple container on destroy',\n default: true,\n },\n },\n },\n createSandbox: config => {\n const {\n id,\n image,\n name,\n command,\n env,\n volumes,\n mounts,\n network,\n publishedPorts,\n publishedSockets,\n cpus,\n memory,\n platform,\n arch,\n os,\n rosetta,\n readonlyRootfs,\n ssh,\n init,\n virtualization,\n capAdd,\n capDrop,\n tmpfs,\n dns,\n dnsSearch,\n noDns,\n labels,\n workingDir,\n timeout,\n deleteOnDestroy,\n } = config;\n\n return new AppleContainerSandbox({\n id,\n image,\n name,\n command,\n env,\n volumes,\n mounts,\n network,\n publishedPorts,\n publishedSockets,\n cpus,\n memory,\n platform,\n arch,\n os,\n rosetta,\n readonlyRootfs,\n ssh,\n init,\n virtualization,\n capAdd,\n capDrop,\n tmpfs,\n dns,\n dnsSearch,\n noDns,\n labels,\n workingDir,\n timeout,\n deleteOnDestroy,\n });\n },\n};\n"]}
|
package/dist/index.js
CHANGED
|
@@ -22,7 +22,7 @@ var DefaultAppleContainerCommandRunner = class {
|
|
|
22
22
|
return runAppleContainerCli(this.binary, args, options);
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
|
-
var AppleContainerSandbox = class extends MastraSandbox {
|
|
25
|
+
var AppleContainerSandbox = class _AppleContainerSandbox extends MastraSandbox {
|
|
26
26
|
id;
|
|
27
27
|
name = "AppleContainerSandbox";
|
|
28
28
|
provider = "apple-container";
|
|
@@ -62,6 +62,7 @@ var AppleContainerSandbox = class extends MastraSandbox {
|
|
|
62
62
|
_runner;
|
|
63
63
|
_instructionsOverride;
|
|
64
64
|
_createdAt;
|
|
65
|
+
_constructorOptions;
|
|
65
66
|
_containerId;
|
|
66
67
|
constructor(options = {}) {
|
|
67
68
|
super({
|
|
@@ -110,6 +111,29 @@ var AppleContainerSandbox = class extends MastraSandbox {
|
|
|
110
111
|
this._runner = options.runner ?? new DefaultAppleContainerCommandRunner(options.containerBinary);
|
|
111
112
|
this._instructionsOverride = options.instructions;
|
|
112
113
|
this._createdAt = /* @__PURE__ */ new Date();
|
|
114
|
+
this._constructorOptions = { ...options };
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Construct a sibling `AppleContainerSandbox` that inherits this sandbox's
|
|
118
|
+
* configuration (image, resources, network, security options, labels) with
|
|
119
|
+
* per-instance overrides.
|
|
120
|
+
*
|
|
121
|
+
* Performs no I/O — the sandbox clone provisions (or reconnects to an
|
|
122
|
+
* existing container labelled with the same logical `id`) on its own
|
|
123
|
+
* `start()`. Use it when one configured sandbox acts as the template for a
|
|
124
|
+
* fleet of independent sandboxes (e.g. one per project).
|
|
125
|
+
*
|
|
126
|
+
* `options.idleTimeoutMinutes` is ignored (Apple containers have no
|
|
127
|
+
* provider-side idle teardown; `timeout` here is a command timeout), and
|
|
128
|
+
* `options.sandboxId` is ignored because reconnection is by logical `id`.
|
|
129
|
+
*/
|
|
130
|
+
clone(options = {}) {
|
|
131
|
+
const { id: _id, name: _name, ...base } = this._constructorOptions;
|
|
132
|
+
return new _AppleContainerSandbox({
|
|
133
|
+
...base,
|
|
134
|
+
...options.id !== void 0 && { id: options.id },
|
|
135
|
+
...options.env !== void 0 && { env: options.env }
|
|
136
|
+
});
|
|
113
137
|
}
|
|
114
138
|
get containerId() {
|
|
115
139
|
return this._containerId ?? this._containerName;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sandbox/index.ts","../src/provider.ts"],"names":["result"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Apple container CLI sandbox provider.\n *\n * This provider maps Mastra's WorkspaceSandbox command execution contract to\n * Apple's `container` CLI. It starts a long-lived OCI Linux container and uses\n * `container exec` for commands.\n *\n * @see https://github.com/apple/container\n */\n\nimport { spawn } from 'node:child_process';\nimport type { ChildProcessByStdio } from 'node:child_process';\nimport { createHash } from 'node:crypto';\nimport type { Readable } from 'node:stream';\nimport { StringDecoder } from 'node:string_decoder';\nimport type { RequestContext } from '@mastra/core/di';\nimport type {\n CommandResult,\n ExecuteCommandOptions,\n InstructionsOption,\n MastraSandboxOptions,\n ProviderStatus,\n SandboxInfo,\n} from '@mastra/core/workspace';\nimport { MastraSandbox, ProcessHandle, SandboxExecutionError } from '@mastra/core/workspace';\n\nconst DEFAULT_COMMAND_TIMEOUT_MS = 300_000;\nconst DEFAULT_IMAGE = 'node:22-slim';\nconst DEFAULT_COMMAND = ['sleep', 'infinity'];\nconst DEFAULT_WORKING_DIR = '/workspace';\nconst APPLE_CONTAINER_CLI_GRACE_TIMEOUT_MS = 10_000;\nconst APPLE_CONTAINER_READY_TIMEOUT_MS = 10_000;\nconst APPLE_CONTAINER_READY_EXEC_TIMEOUT_MS = 5_000;\nconst APPLE_CONTAINER_TIMEOUT_EXIT_CODE = 124;\nconst APPLE_CONTAINER_TIMEOUT_MARKER = '__MASTRA_APPLE_CONTAINER_TIMEOUT__';\n\nexport interface AppleContainerCliResult {\n success: boolean;\n exitCode: number;\n stdout: string;\n stderr: string;\n executionTimeMs: number;\n timedOut?: boolean;\n killed?: boolean;\n stdoutTruncated?: boolean;\n stderrTruncated?: boolean;\n stdoutDroppedBytes?: number;\n stderrDroppedBytes?: number;\n}\n\nexport interface AppleContainerCommandRunnerOptions {\n timeout?: number;\n env?: Record<string, string>;\n abortSignal?: AbortSignal;\n onStdout?: (data: string) => void;\n onStderr?: (data: string) => void;\n maxRetainedBytes?: number;\n}\n\nexport interface AppleContainerCommandRunner {\n run(args: string[], options?: AppleContainerCommandRunnerOptions): Promise<AppleContainerCliResult>;\n}\n\nexport class DefaultAppleContainerCommandRunner implements AppleContainerCommandRunner {\n constructor(private readonly binary = 'container') {}\n\n run(args: string[], options: AppleContainerCommandRunnerOptions = {}): Promise<AppleContainerCliResult> {\n return runAppleContainerCli(this.binary, args, options);\n }\n}\n\ninterface AppleContainerInspectResult {\n id?: string;\n status?:\n | string\n | {\n state?: string;\n networks?: Array<Record<string, unknown>>;\n };\n configuration?: {\n id?: string;\n hostname?: string;\n labels?: Record<string, string>;\n networks?: Array<Record<string, unknown>>;\n resources?: {\n cpus?: number;\n memoryInBytes?: number;\n };\n mounts?: unknown[];\n };\n}\n\nexport interface AppleContainerSandboxOptions extends Omit<MastraSandboxOptions, 'processes'> {\n /** Unique identifier for this sandbox instance. */\n id?: string;\n /** Apple container name passed to `container run --name`. Defaults to the sandbox id. */\n name?: string;\n /** OCI image to use. */\n image?: string;\n /** Container init command. Must keep the container alive for exec-based command execution. */\n command?: string[];\n /** Environment variables available to the container and every command exec. */\n env?: Record<string, string>;\n /** Host-to-container bind mounts. */\n volumes?: Record<string, string>;\n /** Raw `container run --mount` specs. */\n mounts?: string[];\n /** Apple container network attachment spec. */\n network?: string;\n /** Published port specs passed to `container run --publish`. */\n publishedPorts?: string[];\n /** Published socket specs passed to `container run --publish-socket`. */\n publishedSockets?: string[];\n /** Number of CPUs to allocate. */\n cpus?: number | string;\n /** Memory allocation, for example `1G`. */\n memory?: string;\n /** OCI platform, for example `linux/arm64`. */\n platform?: string;\n /** Image architecture when selecting a multi-arch image. */\n arch?: string;\n /** Operating system when selecting a multi-platform image. */\n os?: string;\n /** Enable Rosetta in the container. */\n rosetta?: boolean;\n /** Mount the container root filesystem as read-only. */\n readonlyRootfs?: boolean;\n /** Forward the host SSH agent socket. */\n ssh?: boolean;\n /** Enable Apple's init process in the container. */\n init?: boolean;\n /** Expose virtualization capabilities to the container. */\n virtualization?: boolean;\n /** Linux capabilities to add. */\n capAdd?: string[];\n /** Linux capabilities to drop. */\n capDrop?: string[];\n /** tmpfs destination paths. */\n tmpfs?: string[];\n /** DNS nameserver IPs. */\n dns?: string[];\n /** DNS search domains. */\n dnsSearch?: string[];\n /** Do not configure DNS in the container. */\n noDns?: boolean;\n /** Container labels. Mastra labels are always added. */\n labels?: Record<string, string>;\n /** Working directory inside the container. */\n workingDir?: string;\n /** Default command timeout in milliseconds. */\n timeout?: number;\n /** Delete the container on destroy. Defaults to true. */\n deleteOnDestroy?: boolean;\n /** Path or name for the Apple container CLI. */\n containerBinary?: string;\n /** Custom command runner, primarily for tests. */\n runner?: AppleContainerCommandRunner;\n /** Custom instructions for getInstructions(). String replaces the default; function receives it. */\n instructions?: InstructionsOption;\n}\n\nexport class AppleContainerSandbox extends MastraSandbox {\n readonly id: string;\n readonly name = 'AppleContainerSandbox';\n readonly provider = 'apple-container';\n status: ProviderStatus = 'pending';\n\n private readonly _containerName: string;\n private readonly _configuredName?: string;\n private readonly _image: string;\n private readonly _command: string[];\n private readonly _env: Record<string, string>;\n private readonly _volumes: Record<string, string>;\n private readonly _mounts: string[];\n private readonly _network?: string;\n private readonly _publishedPorts: string[];\n private readonly _publishedSockets: string[];\n private readonly _cpus?: number | string;\n private readonly _memory?: string;\n private readonly _platform?: string;\n private readonly _arch?: string;\n private readonly _os?: string;\n private readonly _rosetta: boolean;\n private readonly _readonlyRootfs: boolean;\n private readonly _ssh: boolean;\n private readonly _init: boolean;\n private readonly _virtualization: boolean;\n private readonly _capAdd: string[];\n private readonly _capDrop: string[];\n private readonly _tmpfs: string[];\n private readonly _dns: string[];\n private readonly _dnsSearch: string[];\n private readonly _noDns: boolean;\n private readonly _userLabels: Record<string, string>;\n private readonly _labels: Record<string, string>;\n private readonly _configHash: string;\n private readonly _workingDir: string;\n private readonly _timeout: number;\n private readonly _deleteOnDestroy: boolean;\n private readonly _runner: AppleContainerCommandRunner;\n private readonly _instructionsOverride?: InstructionsOption;\n private readonly _createdAt: Date;\n\n private _containerId?: string;\n\n constructor(options: AppleContainerSandboxOptions = {}) {\n super({\n ...options,\n name: 'AppleContainerSandbox',\n });\n\n this.id = options.id ?? generateId();\n this._configuredName = options.name;\n this._containerName = sanitizeContainerName(options.name ?? this.id);\n this._image = options.image ?? DEFAULT_IMAGE;\n this._command = options.command ?? DEFAULT_COMMAND;\n this._env = options.env ?? {};\n this._volumes = options.volumes ?? {};\n this._mounts = options.mounts ?? [];\n this._network = options.network;\n this._publishedPorts = options.publishedPorts ?? [];\n this._publishedSockets = options.publishedSockets ?? [];\n this._cpus = options.cpus;\n this._memory = options.memory;\n this._platform = options.platform;\n this._arch = options.arch;\n this._os = options.os;\n this._rosetta = options.rosetta ?? false;\n this._readonlyRootfs = options.readonlyRootfs ?? false;\n this._ssh = options.ssh ?? false;\n this._init = options.init ?? true;\n this._virtualization = options.virtualization ?? false;\n this._capAdd = options.capAdd ?? [];\n this._capDrop = options.capDrop ?? [];\n this._tmpfs = options.tmpfs ?? [];\n validateTmpfsPaths(this._tmpfs);\n this._dns = options.dns ?? [];\n this._dnsSearch = options.dnsSearch ?? [];\n this._noDns = options.noDns ?? false;\n this._workingDir = options.workingDir ?? DEFAULT_WORKING_DIR;\n this._userLabels = options.labels ?? {};\n this._configHash = hashConfig(this._runtimeConfigForHash());\n this._labels = {\n ...this._userLabels,\n 'mastra.sandbox': 'true',\n 'mastra.sandbox.id': this.id,\n 'mastra.sandbox.config-hash': this._configHash,\n };\n this._timeout = options.timeout ?? DEFAULT_COMMAND_TIMEOUT_MS;\n this._deleteOnDestroy = options.deleteOnDestroy ?? true;\n this._runner = options.runner ?? new DefaultAppleContainerCommandRunner(options.containerBinary);\n this._instructionsOverride = options.instructions;\n this._createdAt = new Date();\n }\n\n get containerId(): string {\n return this._containerId ?? this._containerName;\n }\n\n async start(): Promise<void> {\n await this._runPlainLifecycle('starting', 'running', () => this._startContainer());\n }\n\n async stop(): Promise<void> {\n await this._runPlainLifecycle('stopping', 'stopped', () => this._stopContainer());\n }\n\n async destroy(): Promise<void> {\n await this._runPlainLifecycle('destroying', 'destroyed', () => this._destroyContainer());\n }\n\n private async _startContainer(): Promise<void> {\n const existing = await this._inspectContainer();\n if (existing) {\n this._assertMastraOwned(existing);\n this._assertCompatibleConfig(existing);\n this._containerId = existing.configuration?.id ?? this._containerName;\n if (!isRunning(existing)) {\n const result = await this._runCli(['start', this.containerId]);\n this._assertSuccess(result, `start Apple container ${this.containerId}`);\n await this._waitUntilContainerReady(`start Apple container ${this.containerId}`);\n }\n return;\n }\n\n const env = envFlags(this._env);\n const result = await this._runCli(this._buildRunArgs(env.args), { env: env.env });\n this._assertSuccess(result, `create Apple container ${this._containerName}`);\n this._containerId = this._containerName;\n try {\n await this._waitUntilContainerReady(`create Apple container ${this._containerName}`);\n } catch (error) {\n if (this._deleteOnDestroy) {\n await this._deleteContainerIgnoringMissing();\n }\n throw error;\n }\n }\n\n private async _stopContainer(): Promise<void> {\n const existing = await this._inspectContainer();\n if (!existing) {\n return;\n }\n this._assertMastraOwned(existing);\n if (!isRunning(existing)) {\n return;\n }\n\n const result = await this._runCli(['stop', this.containerId]);\n if (!result.success && !isMissingContainerMessage(result.stderr)) {\n this._assertSuccess(result, `stop Apple container ${this.containerId}`);\n }\n }\n\n private async _destroyContainer(): Promise<void> {\n if (!this._deleteOnDestroy) {\n await this._stopContainer();\n return;\n }\n\n const existing = await this._inspectContainer();\n if (!existing) {\n return;\n }\n this._assertMastraOwned(existing);\n\n await this._deleteContainerIgnoringMissing();\n }\n\n async executeCommand(\n command: string,\n args: string[] = [],\n options: ExecuteCommandOptions = {},\n ): Promise<CommandResult> {\n await this.ensureRunning();\n\n const commandTimeout = options.timeout ?? this._timeout;\n const hasCommandTimeout = Number.isFinite(commandTimeout) && commandTimeout > 0;\n const fullCommand = buildShellCommand(command, args);\n const shellCommand = hasCommandTimeout ? buildTimeoutShellCommand(fullCommand, commandTimeout) : fullCommand;\n const env = envFlags({ ...this._env, ...options.env });\n const cliArgs = [\n 'exec',\n ...env.args,\n '--workdir',\n options.cwd ?? this._workingDir,\n this.containerId,\n 'sh',\n '-lc',\n shellCommand,\n ];\n\n const result = await this._runner.run(cliArgs, {\n timeout: hasCommandTimeout ? commandTimeout + APPLE_CONTAINER_CLI_GRACE_TIMEOUT_MS : undefined,\n env: env.env,\n abortSignal: options.abortSignal,\n onStdout: options.onStdout,\n onStderr: options.onStderr,\n maxRetainedBytes: options.maxRetainedBytes,\n });\n\n const timedOut =\n result.exitCode === APPLE_CONTAINER_TIMEOUT_EXIT_CODE && result.stderr.includes(APPLE_CONTAINER_TIMEOUT_MARKER);\n const stderr = timedOut ? stripTimeoutMarker(result.stderr) : result.stderr;\n\n return {\n ...result,\n stderr,\n ...(timedOut && { timedOut: true, killed: true }),\n command: fullCommand,\n args,\n };\n }\n\n async getInfo(): Promise<SandboxInfo> {\n const inspect = this._containerId ? await this._inspectContainer() : undefined;\n const resources = inspect?.configuration?.resources;\n\n return {\n id: this.id,\n name: this.name,\n provider: this.provider,\n status: this.status,\n createdAt: this._createdAt,\n resources: resources\n ? {\n cpuCores: resources.cpus,\n memoryMB: resources.memoryInBytes ? Math.round(resources.memoryInBytes / 1024 / 1024) : undefined,\n }\n : undefined,\n metadata: {\n ...this._serializableConfig(),\n },\n };\n }\n\n getInstructions(opts?: { requestContext?: RequestContext }): string {\n const defaultInstructions = this._buildDefaultInstructions();\n if (typeof this._instructionsOverride === 'string') {\n return this._instructionsOverride;\n }\n if (typeof this._instructionsOverride === 'function') {\n return this._instructionsOverride({ defaultInstructions, requestContext: opts?.requestContext });\n }\n return defaultInstructions;\n }\n\n private _buildDefaultInstructions(): string {\n const parts = [\n `Apple container sandbox: commands run inside a local OCI Linux container from image ${this._image}.`,\n `Working directory: ${this._workingDir}.`,\n ];\n\n const volumeCount = Object.keys(this._volumes).length + this._mounts.length;\n if (volumeCount > 0) {\n parts.push(`${volumeCount} host mount(s) are configured.`);\n }\n if (this._timeout > 0) {\n parts.push(`Default command timeout: ${Math.ceil(this._timeout / 1000)}s.`);\n }\n\n return parts.join(' ');\n }\n\n private async _runPlainLifecycle(\n activeStatus: ProviderStatus,\n completeStatus: ProviderStatus,\n operation: () => Promise<void>,\n ): Promise<void> {\n const managedByBaseWrapper = this.status === activeStatus;\n if (!managedByBaseWrapper) {\n this.status = activeStatus;\n }\n\n try {\n await operation();\n if (!managedByBaseWrapper) {\n this.status = completeStatus;\n }\n } catch (error) {\n if (!managedByBaseWrapper) {\n this.status = 'error';\n }\n throw error;\n }\n }\n\n private async _inspectContainer(): Promise<AppleContainerInspectResult | undefined> {\n const result = await this._runCli(['inspect', this.containerId]);\n if (!result.success) {\n if (isMissingContainerMessage(result.stderr)) return undefined;\n this._assertSuccess(result, `inspect Apple container ${this.containerId}`);\n return undefined;\n }\n\n try {\n const parsed = JSON.parse(result.stdout) as AppleContainerInspectResult[] | AppleContainerInspectResult;\n return Array.isArray(parsed) ? parsed[0] : parsed;\n } catch (error) {\n throw new SandboxExecutionError(\n `Failed to parse Apple container inspect output for ${this.containerId}: ${\n error instanceof Error ? error.message : String(error)\n }`,\n 1,\n result.stdout,\n result.stderr,\n );\n }\n }\n\n private _buildRunArgs(envArgs: string[]): string[] {\n const args = ['run', '-d', '--name', this._containerName, '--workdir', this._workingDir];\n\n args.push(...envArgs);\n for (const [hostPath, containerPath] of Object.entries(this._volumes)) {\n args.push('--volume', `${hostPath}:${containerPath}`);\n }\n for (const mount of this._mounts) args.push('--mount', mount);\n for (const [key, value] of Object.entries(this._labels)) args.push('--label', `${key}=${value}`);\n for (const port of this._publishedPorts) args.push('--publish', port);\n for (const socket of this._publishedSockets) args.push('--publish-socket', socket);\n for (const cap of this._capAdd) args.push('--cap-add', cap);\n for (const cap of this._capDrop) args.push('--cap-drop', cap);\n for (const tmpfs of this._tmpfs) args.push('--tmpfs', tmpfs);\n for (const dns of this._dns) args.push('--dns', dns);\n for (const domain of this._dnsSearch) args.push('--dns-search', domain);\n\n if (this._network) args.push('--network', this._network);\n if (this._cpus !== undefined) args.push('--cpus', String(this._cpus));\n if (this._memory !== undefined) args.push('--memory', this._memory);\n if (this._platform) args.push('--platform', this._platform);\n if (this._arch) args.push('--arch', this._arch);\n if (this._os) args.push('--os', this._os);\n if (this._rosetta) args.push('--rosetta');\n if (this._readonlyRootfs) args.push('--read-only');\n if (this._ssh) args.push('--ssh');\n if (this._init) args.push('--init');\n if (this._virtualization) args.push('--virtualization');\n if (this._noDns) args.push('--no-dns');\n\n args.push(this._image, ...this._command);\n return args;\n }\n\n private async _waitUntilContainerReady(action: string): Promise<void> {\n const deadline = Date.now() + APPLE_CONTAINER_READY_TIMEOUT_MS;\n let lastResult: AppleContainerCliResult | undefined;\n\n while (Date.now() < deadline) {\n const inspect = await this._inspectContainer();\n if (!inspect) {\n throw new SandboxExecutionError(\n `${action} failed because Apple container ${this.containerId} disappeared`,\n 1,\n '',\n '',\n );\n }\n\n this._assertMastraOwned(inspect);\n this._assertCompatibleConfig(inspect);\n\n if (!isRunning(inspect)) {\n const state = getContainerState(inspect) ?? 'not running';\n throw new SandboxExecutionError(\n `${action} failed because Apple container ${this.containerId} is ${state}`,\n 1,\n '',\n '',\n );\n }\n\n lastResult = await this._runCli(['exec', this.containerId, 'sh', '-lc', 'true'], {\n timeout: APPLE_CONTAINER_READY_EXEC_TIMEOUT_MS,\n });\n if (lastResult.success) return;\n\n if (!isMissingContainerMessage(lastResult.stderr) && !/not running|not yet running/i.test(lastResult.stderr)) {\n break;\n }\n\n await delay(100);\n }\n\n throw new SandboxExecutionError(\n `${action} failed because Apple container ${this.containerId} did not become ready for exec`,\n lastResult?.exitCode ?? 1,\n lastResult?.stdout ?? '',\n lastResult?.stderr ?? '',\n );\n }\n\n private async _deleteContainerIgnoringMissing(): Promise<void> {\n const result = await this._runCli(['delete', '--force', this.containerId]);\n if (!result.success && !isMissingContainerMessage(result.stderr)) {\n this._assertSuccess(result, `delete Apple container ${this.containerId}`);\n }\n }\n\n private _runtimeConfigForHash(): Record<string, unknown> {\n return {\n image: this._image,\n command: this._command,\n env: this._env,\n volumes: this._volumes,\n mounts: this._mounts,\n network: this._network,\n publishedPorts: this._publishedPorts,\n publishedSockets: this._publishedSockets,\n cpus: this._cpus,\n memory: this._memory,\n platform: this._platform,\n arch: this._arch,\n os: this._os,\n rosetta: this._rosetta,\n readonlyRootfs: this._readonlyRootfs,\n ssh: this._ssh,\n init: this._init,\n virtualization: this._virtualization,\n capAdd: this._capAdd,\n capDrop: this._capDrop,\n tmpfs: this._tmpfs,\n dns: this._dns,\n dnsSearch: this._dnsSearch,\n noDns: this._noDns,\n labels: this._userLabels,\n workingDir: this._workingDir,\n };\n }\n\n private _serializableConfig(): Record<string, unknown> {\n return compactConfig({\n id: this.id,\n name: this._configuredName,\n image: this._image,\n command: this._command,\n env: this._env,\n volumes: this._volumes,\n mounts: this._mounts,\n network: this._network,\n publishedPorts: this._publishedPorts,\n publishedSockets: this._publishedSockets,\n cpus: this._cpus,\n memory: this._memory,\n platform: this._platform,\n arch: this._arch,\n os: this._os,\n rosetta: this._rosetta,\n readonlyRootfs: this._readonlyRootfs,\n ssh: this._ssh,\n init: this._init,\n virtualization: this._virtualization,\n capAdd: this._capAdd,\n capDrop: this._capDrop,\n tmpfs: this._tmpfs,\n dns: this._dns,\n dnsSearch: this._dnsSearch,\n noDns: this._noDns,\n labels: this._userLabels,\n workingDir: this._workingDir,\n timeout: this._timeout,\n deleteOnDestroy: this._deleteOnDestroy,\n });\n }\n\n private _assertSuccess(result: AppleContainerCliResult, action: string): void {\n if (result.success) return;\n throw new SandboxExecutionError(\n `${action} failed with exit code ${result.exitCode}: ${result.stderr}`,\n result.exitCode,\n result.stdout,\n result.stderr,\n );\n }\n\n private _assertMastraOwned(inspect: AppleContainerInspectResult): void {\n if (isMastraOwned(inspect, this.id)) return;\n throw new SandboxExecutionError(\n `Refusing to manage Apple container ${this.containerId} because it is not labeled as Mastra sandbox ${this.id}`,\n 1,\n '',\n '',\n );\n }\n\n private _assertCompatibleConfig(inspect: AppleContainerInspectResult): void {\n const existingHash = inspect.configuration?.labels?.['mastra.sandbox.config-hash'];\n if (!existingHash || existingHash === this._configHash) return;\n throw new SandboxExecutionError(\n `Refusing to manage Apple container ${this.containerId} because its immutable configuration does not match sandbox ${this.id}`,\n 1,\n '',\n '',\n );\n }\n\n private _runCli(args: string[], options: AppleContainerCommandRunnerOptions = {}): Promise<AppleContainerCliResult> {\n return this._runner.run(args, {\n timeout: this._timeout,\n ...options,\n });\n }\n}\n\nexport function runAppleContainerCli(\n binary: string,\n args: string[],\n options: AppleContainerCommandRunnerOptions = {},\n): Promise<AppleContainerCliResult> {\n const handle = new AppleContainerCliProcess(binary, args, options);\n return handle.wait() as Promise<AppleContainerCliResult>;\n}\n\nclass AppleContainerCliProcess extends ProcessHandle {\n readonly pid: string;\n exitCode: number | undefined;\n\n private readonly child: ChildProcessByStdio<null, Readable, Readable>;\n private readonly waitPromise: Promise<AppleContainerCliResult>;\n private readonly startedAt = Date.now();\n private killed = false;\n private timedOut = false;\n private forceKillTimeout: NodeJS.Timeout | undefined;\n\n constructor(binary: string, args: string[], options: AppleContainerCommandRunnerOptions = {}) {\n super({\n maxRetainedBytes: options.maxRetainedBytes,\n onStdout: options.onStdout,\n onStderr: options.onStderr,\n });\n\n this.child = spawn(binary, args, {\n stdio: ['ignore', 'pipe', 'pipe'],\n env: options.env ? { ...process.env, ...options.env } : process.env,\n });\n this.pid = this.child.pid ? String(this.child.pid) : `${binary}:${args.join(' ')}`;\n\n let settled = false;\n const stdoutDecoder = new StringDecoder();\n const stderrDecoder = new StringDecoder();\n let stdoutDecoderEnded = false;\n let stderrDecoderEnded = false;\n let timeout: NodeJS.Timeout | undefined;\n const onAbort = (): void => {\n void this.kill();\n };\n\n const flushStdout = (): void => {\n if (stdoutDecoderEnded) return;\n stdoutDecoderEnded = true;\n const data = stdoutDecoder.end();\n if (data) this.emitStdout(data);\n };\n const flushStderr = (): void => {\n if (stderrDecoderEnded) return;\n stderrDecoderEnded = true;\n const data = stderrDecoder.end();\n if (data) this.emitStderr(data);\n };\n\n const finish = (exitCode: number): AppleContainerCliResult => {\n this.exitCode = exitCode;\n return {\n success: exitCode === 0,\n exitCode,\n stdout: this.stdout,\n stderr: this.stderr,\n executionTimeMs: Date.now() - this.startedAt,\n killed: this.killed,\n timedOut: this.timedOut,\n };\n };\n\n const cleanup = (): void => {\n if (timeout) clearTimeout(timeout);\n if (this.forceKillTimeout) clearTimeout(this.forceKillTimeout);\n options.abortSignal?.removeEventListener('abort', onAbort);\n };\n\n this.waitPromise = new Promise((resolve, reject) => {\n const settle = (callback: () => void): void => {\n if (settled) return;\n settled = true;\n cleanup();\n callback();\n };\n\n this.child.stdout.on('data', (chunk: Buffer) => {\n const data = stdoutDecoder.write(chunk);\n if (data) this.emitStdout(data);\n });\n this.child.stderr.on('data', (chunk: Buffer) => {\n const data = stderrDecoder.write(chunk);\n if (data) this.emitStderr(data);\n });\n\n this.child.stdout.on('end', flushStdout);\n this.child.stderr.on('end', flushStderr);\n\n this.child.on('error', error => {\n settle(() => {\n flushStdout();\n flushStderr();\n reject(\n error instanceof Error && 'code' in error && error.code === 'ENOENT'\n ? new SandboxExecutionError(`Apple container CLI not found: ${binary}`, 127, this.stdout, error.message)\n : error,\n );\n });\n });\n\n this.child.on('close', code => {\n settle(() => {\n flushStdout();\n flushStderr();\n resolve(finish(code ?? (this.killed ? 137 : 1)));\n });\n });\n });\n\n timeout =\n options.timeout && options.timeout > 0\n ? setTimeout(() => {\n this.timedOut = true;\n void this.kill();\n }, options.timeout)\n : undefined;\n if (options.abortSignal) {\n if (options.abortSignal.aborted) {\n void this.kill();\n } else {\n options.abortSignal.addEventListener('abort', onAbort, { once: true });\n }\n }\n }\n\n async wait(): Promise<AppleContainerCliResult> {\n return this.waitPromise;\n }\n\n async kill(): Promise<boolean> {\n if (this.exitCode !== undefined || this.child.killed) return false;\n this.killed = true;\n this.child.kill('SIGTERM');\n this.forceKillTimeout = setTimeout(() => {\n if (this.exitCode === undefined && this.child.exitCode === null && this.child.signalCode === null) {\n this.child.kill('SIGKILL');\n }\n }, 1000);\n this.forceKillTimeout.unref();\n return true;\n }\n\n async sendStdin(): Promise<void> {\n throw new Error('Apple container CLI runner does not support stdin');\n }\n}\n\nfunction generateId(): string {\n return `apple-container-sandbox-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nfunction sanitizeContainerName(name: string): string {\n const sanitized = name.replace(/[^a-zA-Z0-9_.-]/g, '-');\n return /^[a-zA-Z0-9]/.test(sanitized) ? sanitized : `c-${sanitized}`;\n}\n\nfunction buildShellCommand(command: string, args: string[]): string {\n return args.length > 0 ? [command, ...args].map(shellQuote).join(' ') : command;\n}\n\nfunction buildTimeoutShellCommand(command: string, timeoutMs: number): string {\n const timeoutSeconds = formatTimeoutSeconds(timeoutMs);\n const innerScript = [\n `sh -lc ${shellQuote(command)} & child=$!`,\n `trap 'kill -TERM \"$child\" 2>/dev/null; wait \"$child\" 2>/dev/null; exit ${APPLE_CONTAINER_TIMEOUT_EXIT_CODE}' TERM INT`,\n 'wait \"$child\"; code=$?',\n 'trap - TERM INT',\n 'printf \"%s\" \"$code\" > \"$MASTRA_TIMEOUT_RESULT_FILE\"',\n 'exit \"$code\"',\n ].join('; ');\n return [\n 'result_file=\"/tmp/.mastra-apple-container-exit-$$\"',\n 'rm -f \"$result_file\"',\n `MASTRA_TIMEOUT_RESULT_FILE=\"$result_file\" timeout ${timeoutSeconds}s sh -lc ${shellQuote(innerScript)}`,\n 'timeout_code=$?',\n 'if [ -f \"$result_file\" ]; then code=\"$(cat \"$result_file\")\"; rm -f \"$result_file\"; exit \"$code\"; fi',\n 'rm -f \"$result_file\"',\n `case \"$timeout_code\" in 124|137|143) printf '%s\\\\n' ${shellQuote(APPLE_CONTAINER_TIMEOUT_MARKER)} >&2; exit ${APPLE_CONTAINER_TIMEOUT_EXIT_CODE};; *) exit \"$timeout_code\";; esac`,\n ].join('; ');\n}\n\nfunction formatTimeoutSeconds(timeoutMs: number): string {\n return Math.max(timeoutMs / 1000, 0.001)\n .toFixed(3)\n .replace(/0+$/, '')\n .replace(/\\.$/, '');\n}\n\nfunction shellQuote(arg: string): string {\n if (/^[a-zA-Z0-9._\\-\\/=:@]+$/.test(arg)) return arg;\n return `'${arg.replace(/'/g, \"'\\\\''\")}'`;\n}\n\nfunction stripTimeoutMarker(stderr: string): string {\n return stderr\n .split('\\n')\n .filter(line => line.trim() !== APPLE_CONTAINER_TIMEOUT_MARKER)\n .join('\\n')\n .replace(/^\\n+|\\n+$/g, '');\n}\n\nfunction envFlags(env: Record<string, string | undefined>): { args: string[]; env: Record<string, string> } {\n const args: string[] = [];\n const childEnv: Record<string, string> = {};\n for (const [key, value] of Object.entries(env)) {\n if (value === undefined) continue;\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {\n throw new Error(`Invalid environment variable name for Apple container command: ${key}`);\n }\n args.push('--env', key);\n childEnv[key] = value;\n }\n return { args, env: childEnv };\n}\n\nfunction isRunning(inspect: AppleContainerInspectResult): boolean {\n return getContainerState(inspect) === 'running';\n}\n\nfunction getContainerState(inspect: AppleContainerInspectResult): string | undefined {\n return typeof inspect.status === 'string' ? inspect.status : inspect.status?.state;\n}\n\nfunction isMastraOwned(inspect: AppleContainerInspectResult, sandboxId: string): boolean {\n const labels = inspect.configuration?.labels;\n return labels?.['mastra.sandbox'] === 'true' && labels['mastra.sandbox.id'] === sandboxId;\n}\n\nfunction isMissingContainerMessage(message: string): boolean {\n return /not found|no such|does not exist|unknown container/i.test(message);\n}\n\nfunction validateTmpfsPaths(tmpfs: string[]): void {\n for (const entry of tmpfs) {\n if (!entry.startsWith('/') || /[:,]/.test(entry)) {\n throw new Error(\n `Invalid Apple container tmpfs path \"${entry}\". Apple container --tmpfs accepts container paths only, for example \"/tmp\".`,\n );\n }\n }\n}\n\nfunction compactConfig(config: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(config)) {\n if (value === undefined) continue;\n if (Array.isArray(value) && value.length === 0) continue;\n if (isPlainRecord(value) && Object.keys(value).length === 0) continue;\n result[key] = value;\n }\n return result;\n}\n\nfunction hashConfig(config: Record<string, unknown>): string {\n return createHash('sha256')\n .update(stableStringify(compactConfig(config)))\n .digest('hex')\n .slice(0, 16);\n}\n\nfunction stableStringify(value: unknown): string {\n if (Array.isArray(value)) {\n return `[${value.map(stableStringify).join(',')}]`;\n }\n if (isPlainRecord(value)) {\n return `{${Object.keys(value)\n .sort()\n .map(key => `${JSON.stringify(key)}:${stableStringify(value[key])}`)\n .join(',')}}`;\n }\n return JSON.stringify(value);\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","/**\n * Apple container sandbox provider descriptor for MastraEditor.\n */\n\nimport type { SandboxProvider } from '@mastra/core/editor';\nimport { AppleContainerSandbox } from './sandbox';\nimport type { AppleContainerSandboxOptions } from './sandbox';\n\nexport type AppleContainerProviderConfig = Pick<\n AppleContainerSandboxOptions,\n | 'id'\n | 'image'\n | 'name'\n | 'command'\n | 'env'\n | 'volumes'\n | 'mounts'\n | 'network'\n | 'publishedPorts'\n | 'publishedSockets'\n | 'cpus'\n | 'memory'\n | 'platform'\n | 'arch'\n | 'os'\n | 'rosetta'\n | 'readonlyRootfs'\n | 'ssh'\n | 'init'\n | 'virtualization'\n | 'capAdd'\n | 'capDrop'\n | 'tmpfs'\n | 'dns'\n | 'dnsSearch'\n | 'noDns'\n | 'labels'\n | 'workingDir'\n | 'timeout'\n | 'deleteOnDestroy'\n>;\n\nexport const appleContainerSandboxProvider: SandboxProvider<AppleContainerProviderConfig> = {\n id: 'apple-container',\n name: 'Apple Container Sandbox',\n description: 'Local OCI Linux container sandbox powered by Apple container',\n configSchema: {\n type: 'object',\n additionalProperties: false,\n properties: {\n id: {\n type: 'string',\n description: 'Stable sandbox ID used for reconnecting to the same Apple container.',\n },\n image: {\n type: 'string',\n description: 'OCI image to use',\n default: 'node:22-slim',\n },\n name: {\n type: 'string',\n description: 'Apple container name. Defaults to the sandbox ID.',\n },\n command: {\n type: 'array',\n description: 'Container init command. Must keep the container alive for exec-based command execution.',\n items: { type: 'string' },\n },\n env: {\n type: 'object',\n description: 'Environment variables',\n additionalProperties: { type: 'string' },\n },\n volumes: {\n type: 'object',\n description: 'Host-to-container bind mounts (host path -> container path)',\n additionalProperties: { type: 'string' },\n },\n mounts: {\n type: 'array',\n description: 'Raw Apple container --mount specs',\n items: { type: 'string' },\n },\n network: {\n type: 'string',\n description: 'Apple container network attachment spec',\n },\n publishedPorts: {\n type: 'array',\n description: 'Port publish specs',\n items: { type: 'string' },\n },\n publishedSockets: {\n type: 'array',\n description: 'Socket publish specs',\n items: { type: 'string' },\n },\n cpus: {\n anyOf: [{ type: 'number' }, { type: 'string' }],\n description: 'Number of CPUs to allocate',\n },\n memory: {\n type: 'string',\n description: 'Memory allocation, for example 1G',\n },\n platform: {\n type: 'string',\n description: 'OCI platform, for example linux/arm64',\n },\n arch: {\n type: 'string',\n description: 'Image architecture for multi-arch images',\n },\n os: {\n type: 'string',\n description: 'Operating system for multi-platform images',\n },\n rosetta: {\n type: 'boolean',\n description: 'Enable Rosetta in the container',\n default: false,\n },\n readonlyRootfs: {\n type: 'boolean',\n description: 'Mount the container root filesystem as read-only',\n default: false,\n },\n ssh: {\n type: 'boolean',\n description: 'Forward the host SSH agent socket',\n default: false,\n },\n init: {\n type: 'boolean',\n description: \"Enable Apple's init process in the container\",\n default: true,\n },\n virtualization: {\n type: 'boolean',\n description: 'Expose virtualization capabilities to the container',\n default: false,\n },\n capAdd: {\n type: 'array',\n description: 'Linux capabilities to add',\n items: { type: 'string' },\n },\n capDrop: {\n type: 'array',\n description: 'Linux capabilities to drop',\n items: { type: 'string' },\n },\n tmpfs: {\n type: 'array',\n description: 'tmpfs destination paths',\n items: { type: 'string' },\n },\n dns: {\n type: 'array',\n description: 'DNS nameserver IPs',\n items: { type: 'string' },\n },\n dnsSearch: {\n type: 'array',\n description: 'DNS search domains',\n items: { type: 'string' },\n },\n noDns: {\n type: 'boolean',\n description: 'Do not configure DNS in the container',\n default: false,\n },\n labels: {\n type: 'object',\n description: 'Container labels',\n additionalProperties: { type: 'string' },\n },\n workingDir: {\n type: 'string',\n description: 'Working directory inside the container',\n default: '/workspace',\n },\n timeout: {\n type: 'number',\n description: 'Default command timeout in milliseconds',\n default: 300_000,\n },\n deleteOnDestroy: {\n type: 'boolean',\n description: 'Delete the Apple container on destroy',\n default: true,\n },\n },\n },\n createSandbox: config => {\n const {\n id,\n image,\n name,\n command,\n env,\n volumes,\n mounts,\n network,\n publishedPorts,\n publishedSockets,\n cpus,\n memory,\n platform,\n arch,\n os,\n rosetta,\n readonlyRootfs,\n ssh,\n init,\n virtualization,\n capAdd,\n capDrop,\n tmpfs,\n dns,\n dnsSearch,\n noDns,\n labels,\n workingDir,\n timeout,\n deleteOnDestroy,\n } = config;\n\n return new AppleContainerSandbox({\n id,\n image,\n name,\n command,\n env,\n volumes,\n mounts,\n network,\n publishedPorts,\n publishedSockets,\n cpus,\n memory,\n platform,\n arch,\n os,\n rosetta,\n readonlyRootfs,\n ssh,\n init,\n virtualization,\n capAdd,\n capDrop,\n tmpfs,\n dns,\n dnsSearch,\n noDns,\n labels,\n workingDir,\n timeout,\n deleteOnDestroy,\n });\n },\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/sandbox/index.ts","../src/provider.ts"],"names":["result"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Apple container CLI sandbox provider.\n *\n * This provider maps Mastra's WorkspaceSandbox command execution contract to\n * Apple's `container` CLI. It starts a long-lived OCI Linux container and uses\n * `container exec` for commands.\n *\n * @see https://github.com/apple/container\n */\n\nimport { spawn } from 'node:child_process';\nimport type { ChildProcessByStdio } from 'node:child_process';\nimport { createHash } from 'node:crypto';\nimport type { Readable } from 'node:stream';\nimport { StringDecoder } from 'node:string_decoder';\nimport type { RequestContext } from '@mastra/core/di';\nimport type {\n CommandResult,\n ExecuteCommandOptions,\n InstructionsOption,\n MastraSandboxOptions,\n ProviderStatus,\n SandboxCloneOptions,\n SandboxInfo,\n} from '@mastra/core/workspace';\nimport { MastraSandbox, ProcessHandle, SandboxExecutionError } from '@mastra/core/workspace';\n\nconst DEFAULT_COMMAND_TIMEOUT_MS = 300_000;\nconst DEFAULT_IMAGE = 'node:22-slim';\nconst DEFAULT_COMMAND = ['sleep', 'infinity'];\nconst DEFAULT_WORKING_DIR = '/workspace';\nconst APPLE_CONTAINER_CLI_GRACE_TIMEOUT_MS = 10_000;\nconst APPLE_CONTAINER_READY_TIMEOUT_MS = 10_000;\nconst APPLE_CONTAINER_READY_EXEC_TIMEOUT_MS = 5_000;\nconst APPLE_CONTAINER_TIMEOUT_EXIT_CODE = 124;\nconst APPLE_CONTAINER_TIMEOUT_MARKER = '__MASTRA_APPLE_CONTAINER_TIMEOUT__';\n\nexport interface AppleContainerCliResult {\n success: boolean;\n exitCode: number;\n stdout: string;\n stderr: string;\n executionTimeMs: number;\n timedOut?: boolean;\n killed?: boolean;\n stdoutTruncated?: boolean;\n stderrTruncated?: boolean;\n stdoutDroppedBytes?: number;\n stderrDroppedBytes?: number;\n}\n\nexport interface AppleContainerCommandRunnerOptions {\n timeout?: number;\n env?: Record<string, string>;\n abortSignal?: AbortSignal;\n onStdout?: (data: string) => void;\n onStderr?: (data: string) => void;\n maxRetainedBytes?: number;\n}\n\nexport interface AppleContainerCommandRunner {\n run(args: string[], options?: AppleContainerCommandRunnerOptions): Promise<AppleContainerCliResult>;\n}\n\nexport class DefaultAppleContainerCommandRunner implements AppleContainerCommandRunner {\n constructor(private readonly binary = 'container') {}\n\n run(args: string[], options: AppleContainerCommandRunnerOptions = {}): Promise<AppleContainerCliResult> {\n return runAppleContainerCli(this.binary, args, options);\n }\n}\n\ninterface AppleContainerInspectResult {\n id?: string;\n status?:\n | string\n | {\n state?: string;\n networks?: Array<Record<string, unknown>>;\n };\n configuration?: {\n id?: string;\n hostname?: string;\n labels?: Record<string, string>;\n networks?: Array<Record<string, unknown>>;\n resources?: {\n cpus?: number;\n memoryInBytes?: number;\n };\n mounts?: unknown[];\n };\n}\n\nexport interface AppleContainerSandboxOptions extends Omit<MastraSandboxOptions, 'processes'> {\n /** Unique identifier for this sandbox instance. */\n id?: string;\n /** Apple container name passed to `container run --name`. Defaults to the sandbox id. */\n name?: string;\n /** OCI image to use. */\n image?: string;\n /** Container init command. Must keep the container alive for exec-based command execution. */\n command?: string[];\n /** Environment variables available to the container and every command exec. */\n env?: Record<string, string>;\n /** Host-to-container bind mounts. */\n volumes?: Record<string, string>;\n /** Raw `container run --mount` specs. */\n mounts?: string[];\n /** Apple container network attachment spec. */\n network?: string;\n /** Published port specs passed to `container run --publish`. */\n publishedPorts?: string[];\n /** Published socket specs passed to `container run --publish-socket`. */\n publishedSockets?: string[];\n /** Number of CPUs to allocate. */\n cpus?: number | string;\n /** Memory allocation, for example `1G`. */\n memory?: string;\n /** OCI platform, for example `linux/arm64`. */\n platform?: string;\n /** Image architecture when selecting a multi-arch image. */\n arch?: string;\n /** Operating system when selecting a multi-platform image. */\n os?: string;\n /** Enable Rosetta in the container. */\n rosetta?: boolean;\n /** Mount the container root filesystem as read-only. */\n readonlyRootfs?: boolean;\n /** Forward the host SSH agent socket. */\n ssh?: boolean;\n /** Enable Apple's init process in the container. */\n init?: boolean;\n /** Expose virtualization capabilities to the container. */\n virtualization?: boolean;\n /** Linux capabilities to add. */\n capAdd?: string[];\n /** Linux capabilities to drop. */\n capDrop?: string[];\n /** tmpfs destination paths. */\n tmpfs?: string[];\n /** DNS nameserver IPs. */\n dns?: string[];\n /** DNS search domains. */\n dnsSearch?: string[];\n /** Do not configure DNS in the container. */\n noDns?: boolean;\n /** Container labels. Mastra labels are always added. */\n labels?: Record<string, string>;\n /** Working directory inside the container. */\n workingDir?: string;\n /** Default command timeout in milliseconds. */\n timeout?: number;\n /** Delete the container on destroy. Defaults to true. */\n deleteOnDestroy?: boolean;\n /** Path or name for the Apple container CLI. */\n containerBinary?: string;\n /** Custom command runner, primarily for tests. */\n runner?: AppleContainerCommandRunner;\n /** Custom instructions for getInstructions(). String replaces the default; function receives it. */\n instructions?: InstructionsOption;\n}\n\nexport class AppleContainerSandbox extends MastraSandbox {\n readonly id: string;\n readonly name = 'AppleContainerSandbox';\n readonly provider = 'apple-container';\n status: ProviderStatus = 'pending';\n\n private readonly _containerName: string;\n private readonly _configuredName?: string;\n private readonly _image: string;\n private readonly _command: string[];\n private readonly _env: Record<string, string>;\n private readonly _volumes: Record<string, string>;\n private readonly _mounts: string[];\n private readonly _network?: string;\n private readonly _publishedPorts: string[];\n private readonly _publishedSockets: string[];\n private readonly _cpus?: number | string;\n private readonly _memory?: string;\n private readonly _platform?: string;\n private readonly _arch?: string;\n private readonly _os?: string;\n private readonly _rosetta: boolean;\n private readonly _readonlyRootfs: boolean;\n private readonly _ssh: boolean;\n private readonly _init: boolean;\n private readonly _virtualization: boolean;\n private readonly _capAdd: string[];\n private readonly _capDrop: string[];\n private readonly _tmpfs: string[];\n private readonly _dns: string[];\n private readonly _dnsSearch: string[];\n private readonly _noDns: boolean;\n private readonly _userLabels: Record<string, string>;\n private readonly _labels: Record<string, string>;\n private readonly _configHash: string;\n private readonly _workingDir: string;\n private readonly _timeout: number;\n private readonly _deleteOnDestroy: boolean;\n private readonly _runner: AppleContainerCommandRunner;\n private readonly _instructionsOverride?: InstructionsOption;\n private readonly _createdAt: Date;\n private readonly _constructorOptions: AppleContainerSandboxOptions;\n\n private _containerId?: string;\n\n constructor(options: AppleContainerSandboxOptions = {}) {\n super({\n ...options,\n name: 'AppleContainerSandbox',\n });\n\n this.id = options.id ?? generateId();\n this._configuredName = options.name;\n this._containerName = sanitizeContainerName(options.name ?? this.id);\n this._image = options.image ?? DEFAULT_IMAGE;\n this._command = options.command ?? DEFAULT_COMMAND;\n this._env = options.env ?? {};\n this._volumes = options.volumes ?? {};\n this._mounts = options.mounts ?? [];\n this._network = options.network;\n this._publishedPorts = options.publishedPorts ?? [];\n this._publishedSockets = options.publishedSockets ?? [];\n this._cpus = options.cpus;\n this._memory = options.memory;\n this._platform = options.platform;\n this._arch = options.arch;\n this._os = options.os;\n this._rosetta = options.rosetta ?? false;\n this._readonlyRootfs = options.readonlyRootfs ?? false;\n this._ssh = options.ssh ?? false;\n this._init = options.init ?? true;\n this._virtualization = options.virtualization ?? false;\n this._capAdd = options.capAdd ?? [];\n this._capDrop = options.capDrop ?? [];\n this._tmpfs = options.tmpfs ?? [];\n validateTmpfsPaths(this._tmpfs);\n this._dns = options.dns ?? [];\n this._dnsSearch = options.dnsSearch ?? [];\n this._noDns = options.noDns ?? false;\n this._workingDir = options.workingDir ?? DEFAULT_WORKING_DIR;\n this._userLabels = options.labels ?? {};\n this._configHash = hashConfig(this._runtimeConfigForHash());\n this._labels = {\n ...this._userLabels,\n 'mastra.sandbox': 'true',\n 'mastra.sandbox.id': this.id,\n 'mastra.sandbox.config-hash': this._configHash,\n };\n this._timeout = options.timeout ?? DEFAULT_COMMAND_TIMEOUT_MS;\n this._deleteOnDestroy = options.deleteOnDestroy ?? true;\n this._runner = options.runner ?? new DefaultAppleContainerCommandRunner(options.containerBinary);\n this._instructionsOverride = options.instructions;\n this._createdAt = new Date();\n this._constructorOptions = { ...options };\n }\n\n /**\n * Construct a sibling `AppleContainerSandbox` that inherits this sandbox's\n * configuration (image, resources, network, security options, labels) with\n * per-instance overrides.\n *\n * Performs no I/O — the sandbox clone provisions (or reconnects to an\n * existing container labelled with the same logical `id`) on its own\n * `start()`. Use it when one configured sandbox acts as the template for a\n * fleet of independent sandboxes (e.g. one per project).\n *\n * `options.idleTimeoutMinutes` is ignored (Apple containers have no\n * provider-side idle teardown; `timeout` here is a command timeout), and\n * `options.sandboxId` is ignored because reconnection is by logical `id`.\n */\n clone(options: SandboxCloneOptions = {}): AppleContainerSandbox {\n const { id: _id, name: _name, ...base } = this._constructorOptions;\n return new AppleContainerSandbox({\n ...base,\n ...(options.id !== undefined && { id: options.id }),\n ...(options.env !== undefined && { env: options.env }),\n });\n }\n\n get containerId(): string {\n return this._containerId ?? this._containerName;\n }\n\n async start(): Promise<void> {\n await this._runPlainLifecycle('starting', 'running', () => this._startContainer());\n }\n\n async stop(): Promise<void> {\n await this._runPlainLifecycle('stopping', 'stopped', () => this._stopContainer());\n }\n\n async destroy(): Promise<void> {\n await this._runPlainLifecycle('destroying', 'destroyed', () => this._destroyContainer());\n }\n\n private async _startContainer(): Promise<void> {\n const existing = await this._inspectContainer();\n if (existing) {\n this._assertMastraOwned(existing);\n this._assertCompatibleConfig(existing);\n this._containerId = existing.configuration?.id ?? this._containerName;\n if (!isRunning(existing)) {\n const result = await this._runCli(['start', this.containerId]);\n this._assertSuccess(result, `start Apple container ${this.containerId}`);\n await this._waitUntilContainerReady(`start Apple container ${this.containerId}`);\n }\n return;\n }\n\n const env = envFlags(this._env);\n const result = await this._runCli(this._buildRunArgs(env.args), { env: env.env });\n this._assertSuccess(result, `create Apple container ${this._containerName}`);\n this._containerId = this._containerName;\n try {\n await this._waitUntilContainerReady(`create Apple container ${this._containerName}`);\n } catch (error) {\n if (this._deleteOnDestroy) {\n await this._deleteContainerIgnoringMissing();\n }\n throw error;\n }\n }\n\n private async _stopContainer(): Promise<void> {\n const existing = await this._inspectContainer();\n if (!existing) {\n return;\n }\n this._assertMastraOwned(existing);\n if (!isRunning(existing)) {\n return;\n }\n\n const result = await this._runCli(['stop', this.containerId]);\n if (!result.success && !isMissingContainerMessage(result.stderr)) {\n this._assertSuccess(result, `stop Apple container ${this.containerId}`);\n }\n }\n\n private async _destroyContainer(): Promise<void> {\n if (!this._deleteOnDestroy) {\n await this._stopContainer();\n return;\n }\n\n const existing = await this._inspectContainer();\n if (!existing) {\n return;\n }\n this._assertMastraOwned(existing);\n\n await this._deleteContainerIgnoringMissing();\n }\n\n async executeCommand(\n command: string,\n args: string[] = [],\n options: ExecuteCommandOptions = {},\n ): Promise<CommandResult> {\n await this.ensureRunning();\n\n const commandTimeout = options.timeout ?? this._timeout;\n const hasCommandTimeout = Number.isFinite(commandTimeout) && commandTimeout > 0;\n const fullCommand = buildShellCommand(command, args);\n const shellCommand = hasCommandTimeout ? buildTimeoutShellCommand(fullCommand, commandTimeout) : fullCommand;\n const env = envFlags({ ...this._env, ...options.env });\n const cliArgs = [\n 'exec',\n ...env.args,\n '--workdir',\n options.cwd ?? this._workingDir,\n this.containerId,\n 'sh',\n '-lc',\n shellCommand,\n ];\n\n const result = await this._runner.run(cliArgs, {\n timeout: hasCommandTimeout ? commandTimeout + APPLE_CONTAINER_CLI_GRACE_TIMEOUT_MS : undefined,\n env: env.env,\n abortSignal: options.abortSignal,\n onStdout: options.onStdout,\n onStderr: options.onStderr,\n maxRetainedBytes: options.maxRetainedBytes,\n });\n\n const timedOut =\n result.exitCode === APPLE_CONTAINER_TIMEOUT_EXIT_CODE && result.stderr.includes(APPLE_CONTAINER_TIMEOUT_MARKER);\n const stderr = timedOut ? stripTimeoutMarker(result.stderr) : result.stderr;\n\n return {\n ...result,\n stderr,\n ...(timedOut && { timedOut: true, killed: true }),\n command: fullCommand,\n args,\n };\n }\n\n async getInfo(): Promise<SandboxInfo> {\n const inspect = this._containerId ? await this._inspectContainer() : undefined;\n const resources = inspect?.configuration?.resources;\n\n return {\n id: this.id,\n name: this.name,\n provider: this.provider,\n status: this.status,\n createdAt: this._createdAt,\n resources: resources\n ? {\n cpuCores: resources.cpus,\n memoryMB: resources.memoryInBytes ? Math.round(resources.memoryInBytes / 1024 / 1024) : undefined,\n }\n : undefined,\n metadata: {\n ...this._serializableConfig(),\n },\n };\n }\n\n getInstructions(opts?: { requestContext?: RequestContext }): string {\n const defaultInstructions = this._buildDefaultInstructions();\n if (typeof this._instructionsOverride === 'string') {\n return this._instructionsOverride;\n }\n if (typeof this._instructionsOverride === 'function') {\n return this._instructionsOverride({ defaultInstructions, requestContext: opts?.requestContext });\n }\n return defaultInstructions;\n }\n\n private _buildDefaultInstructions(): string {\n const parts = [\n `Apple container sandbox: commands run inside a local OCI Linux container from image ${this._image}.`,\n `Working directory: ${this._workingDir}.`,\n ];\n\n const volumeCount = Object.keys(this._volumes).length + this._mounts.length;\n if (volumeCount > 0) {\n parts.push(`${volumeCount} host mount(s) are configured.`);\n }\n if (this._timeout > 0) {\n parts.push(`Default command timeout: ${Math.ceil(this._timeout / 1000)}s.`);\n }\n\n return parts.join(' ');\n }\n\n private async _runPlainLifecycle(\n activeStatus: ProviderStatus,\n completeStatus: ProviderStatus,\n operation: () => Promise<void>,\n ): Promise<void> {\n const managedByBaseWrapper = this.status === activeStatus;\n if (!managedByBaseWrapper) {\n this.status = activeStatus;\n }\n\n try {\n await operation();\n if (!managedByBaseWrapper) {\n this.status = completeStatus;\n }\n } catch (error) {\n if (!managedByBaseWrapper) {\n this.status = 'error';\n }\n throw error;\n }\n }\n\n private async _inspectContainer(): Promise<AppleContainerInspectResult | undefined> {\n const result = await this._runCli(['inspect', this.containerId]);\n if (!result.success) {\n if (isMissingContainerMessage(result.stderr)) return undefined;\n this._assertSuccess(result, `inspect Apple container ${this.containerId}`);\n return undefined;\n }\n\n try {\n const parsed = JSON.parse(result.stdout) as AppleContainerInspectResult[] | AppleContainerInspectResult;\n return Array.isArray(parsed) ? parsed[0] : parsed;\n } catch (error) {\n throw new SandboxExecutionError(\n `Failed to parse Apple container inspect output for ${this.containerId}: ${\n error instanceof Error ? error.message : String(error)\n }`,\n 1,\n result.stdout,\n result.stderr,\n );\n }\n }\n\n private _buildRunArgs(envArgs: string[]): string[] {\n const args = ['run', '-d', '--name', this._containerName, '--workdir', this._workingDir];\n\n args.push(...envArgs);\n for (const [hostPath, containerPath] of Object.entries(this._volumes)) {\n args.push('--volume', `${hostPath}:${containerPath}`);\n }\n for (const mount of this._mounts) args.push('--mount', mount);\n for (const [key, value] of Object.entries(this._labels)) args.push('--label', `${key}=${value}`);\n for (const port of this._publishedPorts) args.push('--publish', port);\n for (const socket of this._publishedSockets) args.push('--publish-socket', socket);\n for (const cap of this._capAdd) args.push('--cap-add', cap);\n for (const cap of this._capDrop) args.push('--cap-drop', cap);\n for (const tmpfs of this._tmpfs) args.push('--tmpfs', tmpfs);\n for (const dns of this._dns) args.push('--dns', dns);\n for (const domain of this._dnsSearch) args.push('--dns-search', domain);\n\n if (this._network) args.push('--network', this._network);\n if (this._cpus !== undefined) args.push('--cpus', String(this._cpus));\n if (this._memory !== undefined) args.push('--memory', this._memory);\n if (this._platform) args.push('--platform', this._platform);\n if (this._arch) args.push('--arch', this._arch);\n if (this._os) args.push('--os', this._os);\n if (this._rosetta) args.push('--rosetta');\n if (this._readonlyRootfs) args.push('--read-only');\n if (this._ssh) args.push('--ssh');\n if (this._init) args.push('--init');\n if (this._virtualization) args.push('--virtualization');\n if (this._noDns) args.push('--no-dns');\n\n args.push(this._image, ...this._command);\n return args;\n }\n\n private async _waitUntilContainerReady(action: string): Promise<void> {\n const deadline = Date.now() + APPLE_CONTAINER_READY_TIMEOUT_MS;\n let lastResult: AppleContainerCliResult | undefined;\n\n while (Date.now() < deadline) {\n const inspect = await this._inspectContainer();\n if (!inspect) {\n throw new SandboxExecutionError(\n `${action} failed because Apple container ${this.containerId} disappeared`,\n 1,\n '',\n '',\n );\n }\n\n this._assertMastraOwned(inspect);\n this._assertCompatibleConfig(inspect);\n\n if (!isRunning(inspect)) {\n const state = getContainerState(inspect) ?? 'not running';\n throw new SandboxExecutionError(\n `${action} failed because Apple container ${this.containerId} is ${state}`,\n 1,\n '',\n '',\n );\n }\n\n lastResult = await this._runCli(['exec', this.containerId, 'sh', '-lc', 'true'], {\n timeout: APPLE_CONTAINER_READY_EXEC_TIMEOUT_MS,\n });\n if (lastResult.success) return;\n\n if (!isMissingContainerMessage(lastResult.stderr) && !/not running|not yet running/i.test(lastResult.stderr)) {\n break;\n }\n\n await delay(100);\n }\n\n throw new SandboxExecutionError(\n `${action} failed because Apple container ${this.containerId} did not become ready for exec`,\n lastResult?.exitCode ?? 1,\n lastResult?.stdout ?? '',\n lastResult?.stderr ?? '',\n );\n }\n\n private async _deleteContainerIgnoringMissing(): Promise<void> {\n const result = await this._runCli(['delete', '--force', this.containerId]);\n if (!result.success && !isMissingContainerMessage(result.stderr)) {\n this._assertSuccess(result, `delete Apple container ${this.containerId}`);\n }\n }\n\n private _runtimeConfigForHash(): Record<string, unknown> {\n return {\n image: this._image,\n command: this._command,\n env: this._env,\n volumes: this._volumes,\n mounts: this._mounts,\n network: this._network,\n publishedPorts: this._publishedPorts,\n publishedSockets: this._publishedSockets,\n cpus: this._cpus,\n memory: this._memory,\n platform: this._platform,\n arch: this._arch,\n os: this._os,\n rosetta: this._rosetta,\n readonlyRootfs: this._readonlyRootfs,\n ssh: this._ssh,\n init: this._init,\n virtualization: this._virtualization,\n capAdd: this._capAdd,\n capDrop: this._capDrop,\n tmpfs: this._tmpfs,\n dns: this._dns,\n dnsSearch: this._dnsSearch,\n noDns: this._noDns,\n labels: this._userLabels,\n workingDir: this._workingDir,\n };\n }\n\n private _serializableConfig(): Record<string, unknown> {\n return compactConfig({\n id: this.id,\n name: this._configuredName,\n image: this._image,\n command: this._command,\n env: this._env,\n volumes: this._volumes,\n mounts: this._mounts,\n network: this._network,\n publishedPorts: this._publishedPorts,\n publishedSockets: this._publishedSockets,\n cpus: this._cpus,\n memory: this._memory,\n platform: this._platform,\n arch: this._arch,\n os: this._os,\n rosetta: this._rosetta,\n readonlyRootfs: this._readonlyRootfs,\n ssh: this._ssh,\n init: this._init,\n virtualization: this._virtualization,\n capAdd: this._capAdd,\n capDrop: this._capDrop,\n tmpfs: this._tmpfs,\n dns: this._dns,\n dnsSearch: this._dnsSearch,\n noDns: this._noDns,\n labels: this._userLabels,\n workingDir: this._workingDir,\n timeout: this._timeout,\n deleteOnDestroy: this._deleteOnDestroy,\n });\n }\n\n private _assertSuccess(result: AppleContainerCliResult, action: string): void {\n if (result.success) return;\n throw new SandboxExecutionError(\n `${action} failed with exit code ${result.exitCode}: ${result.stderr}`,\n result.exitCode,\n result.stdout,\n result.stderr,\n );\n }\n\n private _assertMastraOwned(inspect: AppleContainerInspectResult): void {\n if (isMastraOwned(inspect, this.id)) return;\n throw new SandboxExecutionError(\n `Refusing to manage Apple container ${this.containerId} because it is not labeled as Mastra sandbox ${this.id}`,\n 1,\n '',\n '',\n );\n }\n\n private _assertCompatibleConfig(inspect: AppleContainerInspectResult): void {\n const existingHash = inspect.configuration?.labels?.['mastra.sandbox.config-hash'];\n if (!existingHash || existingHash === this._configHash) return;\n throw new SandboxExecutionError(\n `Refusing to manage Apple container ${this.containerId} because its immutable configuration does not match sandbox ${this.id}`,\n 1,\n '',\n '',\n );\n }\n\n private _runCli(args: string[], options: AppleContainerCommandRunnerOptions = {}): Promise<AppleContainerCliResult> {\n return this._runner.run(args, {\n timeout: this._timeout,\n ...options,\n });\n }\n}\n\nexport function runAppleContainerCli(\n binary: string,\n args: string[],\n options: AppleContainerCommandRunnerOptions = {},\n): Promise<AppleContainerCliResult> {\n const handle = new AppleContainerCliProcess(binary, args, options);\n return handle.wait() as Promise<AppleContainerCliResult>;\n}\n\nclass AppleContainerCliProcess extends ProcessHandle {\n readonly pid: string;\n exitCode: number | undefined;\n\n private readonly child: ChildProcessByStdio<null, Readable, Readable>;\n private readonly waitPromise: Promise<AppleContainerCliResult>;\n private readonly startedAt = Date.now();\n private killed = false;\n private timedOut = false;\n private forceKillTimeout: NodeJS.Timeout | undefined;\n\n constructor(binary: string, args: string[], options: AppleContainerCommandRunnerOptions = {}) {\n super({\n maxRetainedBytes: options.maxRetainedBytes,\n onStdout: options.onStdout,\n onStderr: options.onStderr,\n });\n\n this.child = spawn(binary, args, {\n stdio: ['ignore', 'pipe', 'pipe'],\n env: options.env ? { ...process.env, ...options.env } : process.env,\n });\n this.pid = this.child.pid ? String(this.child.pid) : `${binary}:${args.join(' ')}`;\n\n let settled = false;\n const stdoutDecoder = new StringDecoder();\n const stderrDecoder = new StringDecoder();\n let stdoutDecoderEnded = false;\n let stderrDecoderEnded = false;\n let timeout: NodeJS.Timeout | undefined;\n const onAbort = (): void => {\n void this.kill();\n };\n\n const flushStdout = (): void => {\n if (stdoutDecoderEnded) return;\n stdoutDecoderEnded = true;\n const data = stdoutDecoder.end();\n if (data) this.emitStdout(data);\n };\n const flushStderr = (): void => {\n if (stderrDecoderEnded) return;\n stderrDecoderEnded = true;\n const data = stderrDecoder.end();\n if (data) this.emitStderr(data);\n };\n\n const finish = (exitCode: number): AppleContainerCliResult => {\n this.exitCode = exitCode;\n return {\n success: exitCode === 0,\n exitCode,\n stdout: this.stdout,\n stderr: this.stderr,\n executionTimeMs: Date.now() - this.startedAt,\n killed: this.killed,\n timedOut: this.timedOut,\n };\n };\n\n const cleanup = (): void => {\n if (timeout) clearTimeout(timeout);\n if (this.forceKillTimeout) clearTimeout(this.forceKillTimeout);\n options.abortSignal?.removeEventListener('abort', onAbort);\n };\n\n this.waitPromise = new Promise((resolve, reject) => {\n const settle = (callback: () => void): void => {\n if (settled) return;\n settled = true;\n cleanup();\n callback();\n };\n\n this.child.stdout.on('data', (chunk: Buffer) => {\n const data = stdoutDecoder.write(chunk);\n if (data) this.emitStdout(data);\n });\n this.child.stderr.on('data', (chunk: Buffer) => {\n const data = stderrDecoder.write(chunk);\n if (data) this.emitStderr(data);\n });\n\n this.child.stdout.on('end', flushStdout);\n this.child.stderr.on('end', flushStderr);\n\n this.child.on('error', error => {\n settle(() => {\n flushStdout();\n flushStderr();\n reject(\n error instanceof Error && 'code' in error && error.code === 'ENOENT'\n ? new SandboxExecutionError(`Apple container CLI not found: ${binary}`, 127, this.stdout, error.message)\n : error,\n );\n });\n });\n\n this.child.on('close', code => {\n settle(() => {\n flushStdout();\n flushStderr();\n resolve(finish(code ?? (this.killed ? 137 : 1)));\n });\n });\n });\n\n timeout =\n options.timeout && options.timeout > 0\n ? setTimeout(() => {\n this.timedOut = true;\n void this.kill();\n }, options.timeout)\n : undefined;\n if (options.abortSignal) {\n if (options.abortSignal.aborted) {\n void this.kill();\n } else {\n options.abortSignal.addEventListener('abort', onAbort, { once: true });\n }\n }\n }\n\n async wait(): Promise<AppleContainerCliResult> {\n return this.waitPromise;\n }\n\n async kill(): Promise<boolean> {\n if (this.exitCode !== undefined || this.child.killed) return false;\n this.killed = true;\n this.child.kill('SIGTERM');\n this.forceKillTimeout = setTimeout(() => {\n if (this.exitCode === undefined && this.child.exitCode === null && this.child.signalCode === null) {\n this.child.kill('SIGKILL');\n }\n }, 1000);\n this.forceKillTimeout.unref();\n return true;\n }\n\n async sendStdin(): Promise<void> {\n throw new Error('Apple container CLI runner does not support stdin');\n }\n}\n\nfunction generateId(): string {\n return `apple-container-sandbox-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nfunction sanitizeContainerName(name: string): string {\n const sanitized = name.replace(/[^a-zA-Z0-9_.-]/g, '-');\n return /^[a-zA-Z0-9]/.test(sanitized) ? sanitized : `c-${sanitized}`;\n}\n\nfunction buildShellCommand(command: string, args: string[]): string {\n return args.length > 0 ? [command, ...args].map(shellQuote).join(' ') : command;\n}\n\nfunction buildTimeoutShellCommand(command: string, timeoutMs: number): string {\n const timeoutSeconds = formatTimeoutSeconds(timeoutMs);\n const innerScript = [\n `sh -lc ${shellQuote(command)} & child=$!`,\n `trap 'kill -TERM \"$child\" 2>/dev/null; wait \"$child\" 2>/dev/null; exit ${APPLE_CONTAINER_TIMEOUT_EXIT_CODE}' TERM INT`,\n 'wait \"$child\"; code=$?',\n 'trap - TERM INT',\n 'printf \"%s\" \"$code\" > \"$MASTRA_TIMEOUT_RESULT_FILE\"',\n 'exit \"$code\"',\n ].join('; ');\n return [\n 'result_file=\"/tmp/.mastra-apple-container-exit-$$\"',\n 'rm -f \"$result_file\"',\n `MASTRA_TIMEOUT_RESULT_FILE=\"$result_file\" timeout ${timeoutSeconds}s sh -lc ${shellQuote(innerScript)}`,\n 'timeout_code=$?',\n 'if [ -f \"$result_file\" ]; then code=\"$(cat \"$result_file\")\"; rm -f \"$result_file\"; exit \"$code\"; fi',\n 'rm -f \"$result_file\"',\n `case \"$timeout_code\" in 124|137|143) printf '%s\\\\n' ${shellQuote(APPLE_CONTAINER_TIMEOUT_MARKER)} >&2; exit ${APPLE_CONTAINER_TIMEOUT_EXIT_CODE};; *) exit \"$timeout_code\";; esac`,\n ].join('; ');\n}\n\nfunction formatTimeoutSeconds(timeoutMs: number): string {\n return Math.max(timeoutMs / 1000, 0.001)\n .toFixed(3)\n .replace(/0+$/, '')\n .replace(/\\.$/, '');\n}\n\nfunction shellQuote(arg: string): string {\n if (/^[a-zA-Z0-9._\\-\\/=:@]+$/.test(arg)) return arg;\n return `'${arg.replace(/'/g, \"'\\\\''\")}'`;\n}\n\nfunction stripTimeoutMarker(stderr: string): string {\n return stderr\n .split('\\n')\n .filter(line => line.trim() !== APPLE_CONTAINER_TIMEOUT_MARKER)\n .join('\\n')\n .replace(/^\\n+|\\n+$/g, '');\n}\n\nfunction envFlags(env: Record<string, string | undefined>): { args: string[]; env: Record<string, string> } {\n const args: string[] = [];\n const childEnv: Record<string, string> = {};\n for (const [key, value] of Object.entries(env)) {\n if (value === undefined) continue;\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {\n throw new Error(`Invalid environment variable name for Apple container command: ${key}`);\n }\n args.push('--env', key);\n childEnv[key] = value;\n }\n return { args, env: childEnv };\n}\n\nfunction isRunning(inspect: AppleContainerInspectResult): boolean {\n return getContainerState(inspect) === 'running';\n}\n\nfunction getContainerState(inspect: AppleContainerInspectResult): string | undefined {\n return typeof inspect.status === 'string' ? inspect.status : inspect.status?.state;\n}\n\nfunction isMastraOwned(inspect: AppleContainerInspectResult, sandboxId: string): boolean {\n const labels = inspect.configuration?.labels;\n return labels?.['mastra.sandbox'] === 'true' && labels['mastra.sandbox.id'] === sandboxId;\n}\n\nfunction isMissingContainerMessage(message: string): boolean {\n return /not found|no such|does not exist|unknown container/i.test(message);\n}\n\nfunction validateTmpfsPaths(tmpfs: string[]): void {\n for (const entry of tmpfs) {\n if (!entry.startsWith('/') || /[:,]/.test(entry)) {\n throw new Error(\n `Invalid Apple container tmpfs path \"${entry}\". Apple container --tmpfs accepts container paths only, for example \"/tmp\".`,\n );\n }\n }\n}\n\nfunction compactConfig(config: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(config)) {\n if (value === undefined) continue;\n if (Array.isArray(value) && value.length === 0) continue;\n if (isPlainRecord(value) && Object.keys(value).length === 0) continue;\n result[key] = value;\n }\n return result;\n}\n\nfunction hashConfig(config: Record<string, unknown>): string {\n return createHash('sha256')\n .update(stableStringify(compactConfig(config)))\n .digest('hex')\n .slice(0, 16);\n}\n\nfunction stableStringify(value: unknown): string {\n if (Array.isArray(value)) {\n return `[${value.map(stableStringify).join(',')}]`;\n }\n if (isPlainRecord(value)) {\n return `{${Object.keys(value)\n .sort()\n .map(key => `${JSON.stringify(key)}:${stableStringify(value[key])}`)\n .join(',')}}`;\n }\n return JSON.stringify(value);\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","/**\n * Apple container sandbox provider descriptor for MastraEditor.\n */\n\nimport type { SandboxProvider } from '@mastra/core/editor';\nimport { AppleContainerSandbox } from './sandbox';\nimport type { AppleContainerSandboxOptions } from './sandbox';\n\nexport type AppleContainerProviderConfig = Pick<\n AppleContainerSandboxOptions,\n | 'id'\n | 'image'\n | 'name'\n | 'command'\n | 'env'\n | 'volumes'\n | 'mounts'\n | 'network'\n | 'publishedPorts'\n | 'publishedSockets'\n | 'cpus'\n | 'memory'\n | 'platform'\n | 'arch'\n | 'os'\n | 'rosetta'\n | 'readonlyRootfs'\n | 'ssh'\n | 'init'\n | 'virtualization'\n | 'capAdd'\n | 'capDrop'\n | 'tmpfs'\n | 'dns'\n | 'dnsSearch'\n | 'noDns'\n | 'labels'\n | 'workingDir'\n | 'timeout'\n | 'deleteOnDestroy'\n>;\n\nexport const appleContainerSandboxProvider: SandboxProvider<AppleContainerProviderConfig> = {\n id: 'apple-container',\n name: 'Apple Container Sandbox',\n description: 'Local OCI Linux container sandbox powered by Apple container',\n configSchema: {\n type: 'object',\n additionalProperties: false,\n properties: {\n id: {\n type: 'string',\n description: 'Stable sandbox ID used for reconnecting to the same Apple container.',\n },\n image: {\n type: 'string',\n description: 'OCI image to use',\n default: 'node:22-slim',\n },\n name: {\n type: 'string',\n description: 'Apple container name. Defaults to the sandbox ID.',\n },\n command: {\n type: 'array',\n description: 'Container init command. Must keep the container alive for exec-based command execution.',\n items: { type: 'string' },\n },\n env: {\n type: 'object',\n description: 'Environment variables',\n additionalProperties: { type: 'string' },\n },\n volumes: {\n type: 'object',\n description: 'Host-to-container bind mounts (host path -> container path)',\n additionalProperties: { type: 'string' },\n },\n mounts: {\n type: 'array',\n description: 'Raw Apple container --mount specs',\n items: { type: 'string' },\n },\n network: {\n type: 'string',\n description: 'Apple container network attachment spec',\n },\n publishedPorts: {\n type: 'array',\n description: 'Port publish specs',\n items: { type: 'string' },\n },\n publishedSockets: {\n type: 'array',\n description: 'Socket publish specs',\n items: { type: 'string' },\n },\n cpus: {\n anyOf: [{ type: 'number' }, { type: 'string' }],\n description: 'Number of CPUs to allocate',\n },\n memory: {\n type: 'string',\n description: 'Memory allocation, for example 1G',\n },\n platform: {\n type: 'string',\n description: 'OCI platform, for example linux/arm64',\n },\n arch: {\n type: 'string',\n description: 'Image architecture for multi-arch images',\n },\n os: {\n type: 'string',\n description: 'Operating system for multi-platform images',\n },\n rosetta: {\n type: 'boolean',\n description: 'Enable Rosetta in the container',\n default: false,\n },\n readonlyRootfs: {\n type: 'boolean',\n description: 'Mount the container root filesystem as read-only',\n default: false,\n },\n ssh: {\n type: 'boolean',\n description: 'Forward the host SSH agent socket',\n default: false,\n },\n init: {\n type: 'boolean',\n description: \"Enable Apple's init process in the container\",\n default: true,\n },\n virtualization: {\n type: 'boolean',\n description: 'Expose virtualization capabilities to the container',\n default: false,\n },\n capAdd: {\n type: 'array',\n description: 'Linux capabilities to add',\n items: { type: 'string' },\n },\n capDrop: {\n type: 'array',\n description: 'Linux capabilities to drop',\n items: { type: 'string' },\n },\n tmpfs: {\n type: 'array',\n description: 'tmpfs destination paths',\n items: { type: 'string' },\n },\n dns: {\n type: 'array',\n description: 'DNS nameserver IPs',\n items: { type: 'string' },\n },\n dnsSearch: {\n type: 'array',\n description: 'DNS search domains',\n items: { type: 'string' },\n },\n noDns: {\n type: 'boolean',\n description: 'Do not configure DNS in the container',\n default: false,\n },\n labels: {\n type: 'object',\n description: 'Container labels',\n additionalProperties: { type: 'string' },\n },\n workingDir: {\n type: 'string',\n description: 'Working directory inside the container',\n default: '/workspace',\n },\n timeout: {\n type: 'number',\n description: 'Default command timeout in milliseconds',\n default: 300_000,\n },\n deleteOnDestroy: {\n type: 'boolean',\n description: 'Delete the Apple container on destroy',\n default: true,\n },\n },\n },\n createSandbox: config => {\n const {\n id,\n image,\n name,\n command,\n env,\n volumes,\n mounts,\n network,\n publishedPorts,\n publishedSockets,\n cpus,\n memory,\n platform,\n arch,\n os,\n rosetta,\n readonlyRootfs,\n ssh,\n init,\n virtualization,\n capAdd,\n capDrop,\n tmpfs,\n dns,\n dnsSearch,\n noDns,\n labels,\n workingDir,\n timeout,\n deleteOnDestroy,\n } = config;\n\n return new AppleContainerSandbox({\n id,\n image,\n name,\n command,\n env,\n volumes,\n mounts,\n network,\n publishedPorts,\n publishedSockets,\n cpus,\n memory,\n platform,\n arch,\n os,\n rosetta,\n readonlyRootfs,\n ssh,\n init,\n virtualization,\n capAdd,\n capDrop,\n tmpfs,\n dns,\n dnsSearch,\n noDns,\n labels,\n workingDir,\n timeout,\n deleteOnDestroy,\n });\n },\n};\n"]}
|
package/dist/sandbox/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* @see https://github.com/apple/container
|
|
9
9
|
*/
|
|
10
10
|
import type { RequestContext } from '@mastra/core/di';
|
|
11
|
-
import type { CommandResult, ExecuteCommandOptions, InstructionsOption, MastraSandboxOptions, ProviderStatus, SandboxInfo } from '@mastra/core/workspace';
|
|
11
|
+
import type { CommandResult, ExecuteCommandOptions, InstructionsOption, MastraSandboxOptions, ProviderStatus, SandboxCloneOptions, SandboxInfo } from '@mastra/core/workspace';
|
|
12
12
|
import { MastraSandbox } from '@mastra/core/workspace';
|
|
13
13
|
export interface AppleContainerCliResult {
|
|
14
14
|
success: boolean;
|
|
@@ -147,8 +147,24 @@ export declare class AppleContainerSandbox extends MastraSandbox {
|
|
|
147
147
|
private readonly _runner;
|
|
148
148
|
private readonly _instructionsOverride?;
|
|
149
149
|
private readonly _createdAt;
|
|
150
|
+
private readonly _constructorOptions;
|
|
150
151
|
private _containerId?;
|
|
151
152
|
constructor(options?: AppleContainerSandboxOptions);
|
|
153
|
+
/**
|
|
154
|
+
* Construct a sibling `AppleContainerSandbox` that inherits this sandbox's
|
|
155
|
+
* configuration (image, resources, network, security options, labels) with
|
|
156
|
+
* per-instance overrides.
|
|
157
|
+
*
|
|
158
|
+
* Performs no I/O — the sandbox clone provisions (or reconnects to an
|
|
159
|
+
* existing container labelled with the same logical `id`) on its own
|
|
160
|
+
* `start()`. Use it when one configured sandbox acts as the template for a
|
|
161
|
+
* fleet of independent sandboxes (e.g. one per project).
|
|
162
|
+
*
|
|
163
|
+
* `options.idleTimeoutMinutes` is ignored (Apple containers have no
|
|
164
|
+
* provider-side idle teardown; `timeout` here is a command timeout), and
|
|
165
|
+
* `options.sandboxId` is ignored because reconnection is by logical `id`.
|
|
166
|
+
*/
|
|
167
|
+
clone(options?: SandboxCloneOptions): AppleContainerSandbox;
|
|
152
168
|
get containerId(): string;
|
|
153
169
|
start(): Promise<void>;
|
|
154
170
|
stop(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sandbox/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sandbox/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/apple-container",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Apple container CLI sandbox provider for Mastra workspaces",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -20,18 +20,18 @@
|
|
|
20
20
|
},
|
|
21
21
|
"license": "Apache-2.0",
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@types/node": "22.
|
|
24
|
-
"@vitest/coverage-v8": "4.1.
|
|
25
|
-
"@vitest/ui": "4.1.
|
|
23
|
+
"@types/node": "22.20.1",
|
|
24
|
+
"@vitest/coverage-v8": "4.1.10",
|
|
25
|
+
"@vitest/ui": "4.1.10",
|
|
26
26
|
"dotenv": "^17.4.2",
|
|
27
|
-
"eslint": "^10.
|
|
27
|
+
"eslint": "^10.7.0",
|
|
28
28
|
"tsup": "^8.5.1",
|
|
29
29
|
"typescript": "^6.0.3",
|
|
30
|
-
"vitest": "4.1.
|
|
31
|
-
"@internal/
|
|
32
|
-
"@internal/
|
|
33
|
-
"@
|
|
34
|
-
"@
|
|
30
|
+
"vitest": "4.1.10",
|
|
31
|
+
"@internal/types-builder": "0.0.90",
|
|
32
|
+
"@internal/workspace-test-utils": "0.0.59",
|
|
33
|
+
"@internal/lint": "0.0.115",
|
|
34
|
+
"@mastra/core": "1.52.0"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
37
|
"@mastra/core": ">=1.12.0-0 <2.0.0-0"
|