@assemblyline-agents/docker 0.1.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 OpenEve contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # @assemblyline-agents/docker
2
+
3
+ Official Assembly Line Docker sandbox and deployment plugin.
4
+
5
+ It plays two roles: a sandbox adapter that runs agent sandbox sessions in local Docker containers (command execution, file access, session reconnect), and a deploy provider that packages and runs compiled Assembly Line agents as Docker containers. Provider metadata is exported so the CLI can discover both roles.
6
+
7
+ ## Install
8
+
9
+ ```sh
10
+ npm install @assemblyline-agents/docker
11
+ ```
12
+
13
+ ## Part of Assembly Line
14
+
15
+ This package is part of [Assembly Line](https://github.com/jasonbadeaux/openeve), a vendor-neutral, filesystem-first framework for durable AI agents. See the developer documentation in [docs/developers/](https://github.com/jasonbadeaux/openeve/tree/main/docs/developers) for setup, agent authoring, and deployment guides.
16
+
17
+ ## License
18
+
19
+ MIT
@@ -0,0 +1,148 @@
1
+ import { type AdapterDefinition, type DeployArtifact, type DeployPlan, type DeployPublisher, type JsonObject, type RunDeployCommand, type SandboxFileEntry, type SandboxSession } from "@assemblyline-agents/core";
2
+ import type { RunRecord, SandboxAdapter, SandboxCreateInput, SandboxLookupInput, SandboxLookupResult, SandboxReconnectInput } from "@assemblyline-agents/runtime";
3
+ export { DOCKER_DEPLOY_PROVIDER_METADATA, DOCKER_SANDBOX_PROVIDER_METADATA, openeveProvider } from "./provider.js";
4
+ export interface DockerDeployAdapter extends AdapterDefinition {
5
+ kind: "docker";
6
+ }
7
+ export interface DockerSandboxDefinition extends AdapterDefinition {
8
+ kind: "docker";
9
+ }
10
+ export interface DockerSandboxOptions {
11
+ image?: string;
12
+ env?: Record<string, string>;
13
+ workingDirectory?: string;
14
+ network?: "none" | "default" | string;
15
+ cpus?: string;
16
+ memory?: string;
17
+ pullPolicy?: "never" | "missing" | "always";
18
+ commandTimeoutMs?: number;
19
+ }
20
+ export type { DeployArtifact as DeployArtifactLike, DeployCommandOptions, DeployCommandResult, DeployPlan as DeployPlanLike } from "@assemblyline-agents/core";
21
+ export interface DockerDeployPublisherOptions {
22
+ dockerBin?: string;
23
+ image?: string;
24
+ serve?: boolean;
25
+ port?: number;
26
+ cwd?: string;
27
+ env?: Record<string, string | undefined>;
28
+ runCommand: RunDeployCommand;
29
+ runInteractiveCommand?: RunDeployCommand;
30
+ volumeName?: string;
31
+ containerName?: string;
32
+ now?: () => Date;
33
+ }
34
+ export interface DockerEnvironment {
35
+ DOCKER_HOST?: string;
36
+ OPENEVE_DOCKER_NETWORK?: string;
37
+ OPENEVE_DOCKER_CPUS?: string;
38
+ OPENEVE_DOCKER_MEMORY?: string;
39
+ OPENEVE_DOCKER_PULL_POLICY?: string;
40
+ OPENEVE_DOCKER_COMMAND_TIMEOUT_MS?: string;
41
+ }
42
+ export interface DockerClientLike {
43
+ createContainer(options: {
44
+ name: string;
45
+ image: string;
46
+ workingDirectory: string;
47
+ labels?: Record<string, string>;
48
+ env?: Record<string, string>;
49
+ network?: string;
50
+ cpus?: string;
51
+ memory?: string;
52
+ pullPolicy?: DockerSandboxOptions["pullPolicy"];
53
+ }): Promise<string>;
54
+ exec(containerId: string, command: string, options?: {
55
+ cwd?: string;
56
+ timeoutMs?: number;
57
+ env?: Record<string, string>;
58
+ }): Promise<{
59
+ exitCode: number;
60
+ stdout: string;
61
+ stderr: string;
62
+ }>;
63
+ readFile(containerId: string, path: string): Promise<string>;
64
+ writeFile(containerId: string, path: string, contents: string | Uint8Array): Promise<void>;
65
+ listFiles(containerId: string, path: string, options?: {
66
+ excludeTopLevel?: string[];
67
+ }): Promise<SandboxFileEntry[]>;
68
+ inspectContainer?(containerId: string): Promise<{
69
+ id: string;
70
+ state?: string;
71
+ } | undefined>;
72
+ findContainerByLabel?(labels: Record<string, string>): Promise<Array<{
73
+ id: string;
74
+ state?: string;
75
+ name?: string;
76
+ }>>;
77
+ startContainer?(containerId: string): Promise<boolean | void>;
78
+ stopContainer?(containerId: string): Promise<void>;
79
+ removeContainer(containerId: string): Promise<void>;
80
+ }
81
+ export declare function dockerDeploy(options?: JsonObject): DockerDeployAdapter;
82
+ export declare function createDockerDeployPublisher(options: DockerDeployPublisherOptions): DeployPublisher;
83
+ export declare function dockerDeploymentNames(artifact: DeployArtifact, options?: Pick<DockerDeployPublisherOptions, "volumeName" | "containerName">, plan?: Pick<DeployPlan, "environment" | "defaultEnvironment">): {
84
+ volume: string;
85
+ container: string;
86
+ };
87
+ export declare function ensureDockerRuntimeVolume(artifact: DeployArtifact, options: DockerDeployPublisherOptions, plan?: Pick<DeployPlan, "environment" | "defaultEnvironment">): Promise<string | undefined>;
88
+ export declare function dockerSandbox(options?: JsonObject): DockerSandboxDefinition;
89
+ export declare function dockerSandboxOptionsFromEnv(env: DockerEnvironment): DockerSandboxOptions;
90
+ export declare class DockerSandboxAdapter implements SandboxAdapter {
91
+ private readonly client;
92
+ private readonly options;
93
+ readonly provider = "docker";
94
+ constructor(client?: DockerClientLike, options?: DockerSandboxOptions);
95
+ acquire(run: RunRecord): Promise<SandboxSession>;
96
+ create(run: RunRecord, input: SandboxCreateInput): Promise<SandboxSession>;
97
+ lookup(input: SandboxLookupInput): Promise<SandboxLookupResult | undefined>;
98
+ connect(input: SandboxReconnectInput): Promise<SandboxSession | undefined>;
99
+ wake(input: SandboxReconnectInput): Promise<SandboxSession | undefined>;
100
+ pauseOrRetain(session: SandboxSession): Promise<void>;
101
+ disposeClean(session: SandboxSession): Promise<void>;
102
+ private initializeSession;
103
+ private sessionFromContainer;
104
+ }
105
+ export declare class DockerCliClient implements DockerClientLike {
106
+ private readonly dockerBin;
107
+ constructor(dockerBin?: string);
108
+ createContainer(options: {
109
+ name: string;
110
+ image: string;
111
+ workingDirectory: string;
112
+ labels?: Record<string, string>;
113
+ env?: Record<string, string>;
114
+ network?: string;
115
+ cpus?: string;
116
+ memory?: string;
117
+ pullPolicy?: DockerSandboxOptions["pullPolicy"];
118
+ }): Promise<string>;
119
+ exec(containerId: string, command: string, options?: {
120
+ cwd?: string;
121
+ timeoutMs?: number;
122
+ env?: Record<string, string>;
123
+ }): Promise<{
124
+ exitCode: number;
125
+ stdout: string;
126
+ stderr: string;
127
+ }>;
128
+ readFile(containerId: string, path: string): Promise<string>;
129
+ writeFile(containerId: string, path: string, contents: string | Uint8Array): Promise<void>;
130
+ listFiles(containerId: string, path: string, options?: {
131
+ excludeTopLevel?: string[];
132
+ }): Promise<SandboxFileEntry[]>;
133
+ inspectContainer(containerId: string): Promise<{
134
+ id: string;
135
+ state?: string;
136
+ } | undefined>;
137
+ findContainerByLabel(labels: Record<string, string>): Promise<Array<{
138
+ id: string;
139
+ state?: string;
140
+ name?: string;
141
+ }>>;
142
+ startContainer(containerId: string): Promise<boolean>;
143
+ stopContainer(containerId: string): Promise<void>;
144
+ removeContainer(containerId: string): Promise<void>;
145
+ private run;
146
+ private runBuffer;
147
+ }
148
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,528 @@
1
+ import { execFile, spawn } from "node:child_process";
2
+ import { basename, posix } from "node:path";
3
+ import { promisify } from "node:util";
4
+ import { OPENEVE_SANDBOX_ROOT, assertCanonicalSandboxWorkingDirectory, assertSandboxFilesystemContractProbe, adapter, canonicalizeSandboxListingPath, hasCurrentSandboxFilesystemContract, resolveSandboxPath, sandboxFilesystemContractMetadata, sandboxFilesystemContractKey, sandboxFilesystemContractProbeCommand, environmentScopedName, shellQuote } from "@assemblyline-agents/core";
5
+ import { DOCKER_DEPLOY_PROVIDER_METADATA as dockerDeployProviderMetadata, DOCKER_SANDBOX_PROVIDER_METADATA as dockerSandboxProviderMetadata } from "./provider.js";
6
+ export { DOCKER_DEPLOY_PROVIDER_METADATA, DOCKER_SANDBOX_PROVIDER_METADATA, openeveProvider } from "./provider.js";
7
+ const execFileAsync = promisify(execFile);
8
+ export function dockerDeploy(options = {}) {
9
+ const metadata = dockerDeployProviderMetadata;
10
+ const definition = { ...adapter("docker", options), kind: "docker" };
11
+ if (metadata.capabilities)
12
+ definition.capabilities = metadata.capabilities;
13
+ return definition;
14
+ }
15
+ export function createDockerDeployPublisher(options) {
16
+ // Docker has no remote secret store: synced secrets are held in memory for
17
+ // this lifecycle only and handed to `docker run` through the child process
18
+ // environment with value-less `--env KEY` flags — never on argv or disk.
19
+ // They only take effect for serve-mode deploys; image-only builds never
20
+ // bake secrets.
21
+ let syncedSecrets = {};
22
+ return {
23
+ target: "docker",
24
+ async syncSecrets(secrets) {
25
+ const syncedKeys = [];
26
+ const skippedKeys = [];
27
+ for (const [key, value] of Object.entries(secrets)) {
28
+ (value ? syncedKeys : skippedKeys).push(key);
29
+ }
30
+ syncedSecrets = Object.fromEntries(syncedKeys.map((key) => [key, secrets[key] ?? ""]));
31
+ return { target: "docker", syncedKeys, skippedKeys };
32
+ },
33
+ async runRemoteCommand(artifact, plan, command, remoteOptions = {}) {
34
+ const dockerBin = options.dockerBin ?? "docker";
35
+ const image = options.image ?? `openeve:${plan.agentRevision.slice(0, 12)}`;
36
+ const imageResult = await options.runCommand(dockerBin, ["image", "inspect", image], dockerCommandOptions(options, true));
37
+ if (imageResult.exitCode !== 0)
38
+ throw new Error(`Docker image ${image} is not available. Deploy the agent before running hosted authentication.`);
39
+ const names = dockerDeploymentNames(artifact, options, plan);
40
+ if (artifactRequiresPersistentPath(artifact, "/data")) {
41
+ if (command.join(" ") === "codex login status") {
42
+ const inspect = await options.runCommand(dockerBin, ["volume", "inspect", names.volume], dockerCommandOptions(options, true));
43
+ if (inspect.exitCode !== 0)
44
+ return { exitCode: 1, stdout: "", stderr: "Codex OAuth volume is not provisioned." };
45
+ }
46
+ else {
47
+ await ensureDockerRuntimeVolume(artifact, options, plan);
48
+ }
49
+ }
50
+ const args = ["run", "--rm", "-i"];
51
+ if (remoteOptions.interactive && process.stdin.isTTY)
52
+ args.push("-t");
53
+ if (artifactRequiresPersistentPath(artifact, "/data")) {
54
+ args.push("--mount", `type=volume,src=${names.volume},dst=/data`);
55
+ }
56
+ if (command[0] === "codex") {
57
+ args.push(image, "sh", "-c", 'umask 077; mkdir -p "$CODEX_HOME"; chmod 700 "$CODEX_HOME"; exec "$@"', "--", ...command);
58
+ }
59
+ else {
60
+ args.push(image, ...command);
61
+ }
62
+ const runner = remoteOptions.interactive && options.runInteractiveCommand
63
+ ? options.runInteractiveCommand
64
+ : options.runCommand;
65
+ return runner(dockerBin, args, dockerCommandOptions(options, remoteOptions.silent));
66
+ },
67
+ async publish(artifact, plan) {
68
+ const dockerBin = options.dockerBin ?? "docker";
69
+ const image = options.image ?? `openeve:${plan.agentRevision.slice(0, 12)}`;
70
+ const buildArgs = ["build", "-t", image, artifact.root];
71
+ const commandOptions = {};
72
+ if (options.cwd)
73
+ commandOptions.cwd = options.cwd;
74
+ if (options.env)
75
+ commandOptions.env = options.env;
76
+ const build = await options.runCommand(dockerBin, buildArgs, commandOptions);
77
+ if (build.exitCode !== 0)
78
+ throw new Error(`Docker build failed with exit code ${build.exitCode}.`);
79
+ const names = dockerDeploymentNames(artifact, options, plan);
80
+ const volume = await ensureDockerRuntimeVolume(artifact, options, plan);
81
+ let containerId = null;
82
+ const port = options.port ?? 3000;
83
+ if (options.serve && plan.defaultEnvironment && plan.environment !== plan.defaultEnvironment && options.port === undefined) {
84
+ throw new Error(`Docker deploys to the "${plan.environment}" environment need an explicit --port; the default port would collide with the "${plan.defaultEnvironment}" container.`);
85
+ }
86
+ if (options.serve) {
87
+ await options.runCommand(dockerBin, ["rm", "-f", names.container], { ...commandOptions, silent: true });
88
+ const runArgs = ["run", "-d", "--name", names.container, "-p", `${port}:3000`];
89
+ if (volume)
90
+ runArgs.push("--mount", `type=volume,src=${volume},dst=/data`);
91
+ const passthroughKeys = new Set(Object.keys(syncedSecrets));
92
+ for (const requirement of artifact.manifest?.preflight ?? []) {
93
+ if (requirement.kind === "env" && options.env?.[requirement.name])
94
+ passthroughKeys.add(requirement.name);
95
+ }
96
+ for (const key of passthroughKeys)
97
+ runArgs.push("--env", key);
98
+ runArgs.push(image);
99
+ const runEnv = { ...(options.env ?? process.env), ...syncedSecrets };
100
+ const run = await options.runCommand(dockerBin, runArgs, { ...commandOptions, env: runEnv });
101
+ if (run.exitCode !== 0)
102
+ throw new Error(`Docker run failed with exit code ${run.exitCode}.`);
103
+ containerId = run.stdout.trim() || null;
104
+ }
105
+ const receipt = {
106
+ target: "docker",
107
+ status: containerId ? "running" : "built",
108
+ environment: plan.environment,
109
+ agentRevision: plan.agentRevision,
110
+ artifactRoot: artifact.root,
111
+ image,
112
+ containerId,
113
+ containerName: options.serve ? names.container : null,
114
+ persistentStorage: volume ? { mountPath: "/data", volume } : null,
115
+ port: options.serve ? port : null,
116
+ deploymentUrl: containerId ? `http://127.0.0.1:${port}` : null,
117
+ completedAt: (options.now?.() ?? new Date()).toISOString()
118
+ };
119
+ return receipt;
120
+ },
121
+ async destroy(artifact, plan, destroyOptions = {}) {
122
+ const dockerBin = options.dockerBin ?? "docker";
123
+ const names = dockerDeploymentNames(artifact, options, plan);
124
+ const commandOptions = dockerCommandOptions(options, true);
125
+ const removed = await options.runCommand(dockerBin, ["rm", "-f", names.container], commandOptions);
126
+ let volumeRemoved = false;
127
+ if (destroyOptions.purgeData) {
128
+ const volume = await options.runCommand(dockerBin, ["volume", "rm", "-f", names.volume], commandOptions);
129
+ volumeRemoved = volume.exitCode === 0;
130
+ }
131
+ return {
132
+ target: "docker",
133
+ status: "destroyed",
134
+ environment: plan.environment,
135
+ container: names.container,
136
+ containerRemoved: removed.exitCode === 0,
137
+ volume: destroyOptions.purgeData ? names.volume : null,
138
+ volumeRemoved,
139
+ completedAt: (options.now?.() ?? new Date()).toISOString()
140
+ };
141
+ }
142
+ };
143
+ }
144
+ export function dockerDeploymentNames(artifact, options = {}, plan) {
145
+ const identity = artifact.manifest?.agent?.id
146
+ ?? artifact.manifest?.agent?.name
147
+ ?? basename(artifact.manifest?.root ?? artifact.root);
148
+ const slug = identity.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, 40) || "agent";
149
+ // Explicit names are respected verbatim; derived names are environment-scoped
150
+ // so a non-default environment never replaces the default one's container.
151
+ const scope = (base) => plan ? environmentScopedName(base, plan) : base;
152
+ return {
153
+ volume: options.volumeName ?? scope(`openeve-${slug}-data`),
154
+ container: options.containerName ?? scope(`openeve-${slug}`)
155
+ };
156
+ }
157
+ export async function ensureDockerRuntimeVolume(artifact, options, plan) {
158
+ if (!artifactRequiresPersistentPath(artifact, "/data"))
159
+ return undefined;
160
+ const dockerBin = options.dockerBin ?? "docker";
161
+ const name = dockerDeploymentNames(artifact, options, plan).volume;
162
+ const inspect = await options.runCommand(dockerBin, ["volume", "inspect", name], dockerCommandOptions(options, true));
163
+ if (inspect.exitCode === 0)
164
+ return name;
165
+ const create = await options.runCommand(dockerBin, ["volume", "create", name], dockerCommandOptions(options));
166
+ if (create.exitCode !== 0)
167
+ throw new Error(`Docker volume provisioning failed with exit code ${create.exitCode}.`);
168
+ return name;
169
+ }
170
+ function artifactRequiresPersistentPath(artifact, path) {
171
+ return artifact.manifest?.deploymentRequirements?.persistentDirectories.some((entry) => entry.path === path) ?? false;
172
+ }
173
+ function dockerCommandOptions(options, silent) {
174
+ const commandOptions = {};
175
+ if (options.cwd)
176
+ commandOptions.cwd = options.cwd;
177
+ if (options.env)
178
+ commandOptions.env = options.env;
179
+ if (silent !== undefined)
180
+ commandOptions.silent = silent;
181
+ return commandOptions;
182
+ }
183
+ export function dockerSandbox(options = {}) {
184
+ const metadata = dockerSandboxProviderMetadata;
185
+ const definition = { ...adapter("docker", options), kind: "docker" };
186
+ if (metadata.capabilities)
187
+ definition.capabilities = metadata.capabilities;
188
+ return definition;
189
+ }
190
+ export function dockerSandboxOptionsFromEnv(env) {
191
+ const options = {};
192
+ if (env.OPENEVE_DOCKER_NETWORK)
193
+ options.network = env.OPENEVE_DOCKER_NETWORK;
194
+ if (env.OPENEVE_DOCKER_CPUS)
195
+ options.cpus = env.OPENEVE_DOCKER_CPUS;
196
+ if (env.OPENEVE_DOCKER_MEMORY)
197
+ options.memory = env.OPENEVE_DOCKER_MEMORY;
198
+ if (env.OPENEVE_DOCKER_PULL_POLICY === "never" || env.OPENEVE_DOCKER_PULL_POLICY === "missing" || env.OPENEVE_DOCKER_PULL_POLICY === "always") {
199
+ options.pullPolicy = env.OPENEVE_DOCKER_PULL_POLICY;
200
+ }
201
+ const timeout = positiveInteger(env.OPENEVE_DOCKER_COMMAND_TIMEOUT_MS);
202
+ if (timeout)
203
+ options.commandTimeoutMs = timeout;
204
+ return options;
205
+ }
206
+ export class DockerSandboxAdapter {
207
+ client;
208
+ options;
209
+ provider = "docker";
210
+ constructor(client = new DockerCliClient(), options = {}) {
211
+ this.client = client;
212
+ this.options = options;
213
+ }
214
+ async acquire(run) {
215
+ return this.create(run, { sessionKey: `run:${run.id}` });
216
+ }
217
+ async create(run, input) {
218
+ const sessionKey = input.sessionKey;
219
+ const image = this.options.image ?? "node:22-slim";
220
+ const workingDirectory = assertCanonicalSandboxWorkingDirectory(this.options.workingDirectory, "Docker");
221
+ const name = dockerSafeName(`openeve-${sandboxFilesystemContractKey(sessionKey)}`);
222
+ const createOptions = {
223
+ name,
224
+ image,
225
+ workingDirectory,
226
+ labels: {
227
+ "openeve.sessionKey": sessionKey,
228
+ "openeve.run": run.id,
229
+ "openeve.agentRevision": run.agentRevision,
230
+ ...stringifyJsonRecord(sandboxFilesystemContractMetadata())
231
+ },
232
+ network: this.options.network ?? "none",
233
+ pullPolicy: this.options.pullPolicy ?? "missing"
234
+ };
235
+ if (this.options.env)
236
+ createOptions.env = this.options.env;
237
+ if (this.options.cpus)
238
+ createOptions.cpus = this.options.cpus;
239
+ if (this.options.memory)
240
+ createOptions.memory = this.options.memory;
241
+ const containerId = await this.client.createContainer(createOptions);
242
+ try {
243
+ return await this.initializeSession(containerId);
244
+ }
245
+ catch (error) {
246
+ await this.client.removeContainer(containerId).catch(() => undefined);
247
+ throw error;
248
+ }
249
+ }
250
+ async lookup(input) {
251
+ const labels = {
252
+ "openeve.sessionKey": input.sessionKey,
253
+ ...stringifyJsonRecord(sandboxFilesystemContractMetadata())
254
+ };
255
+ const containers = await this.client.findContainerByLabel?.(labels);
256
+ const container = containers?.[0];
257
+ if (!container)
258
+ return undefined;
259
+ return {
260
+ sandboxId: container.id,
261
+ state: container.state === "running" ? "live" : "warm",
262
+ manifest: { sessionKey: input.sessionKey, ...sandboxFilesystemContractMetadata() }
263
+ };
264
+ }
265
+ async connect(input) {
266
+ if (!hasCurrentSandboxFilesystemContract(input.manifest))
267
+ return undefined;
268
+ const inspected = await this.client.inspectContainer?.(input.sandboxId);
269
+ if (this.client.inspectContainer && !inspected)
270
+ return undefined;
271
+ if (inspected?.state && inspected.state !== "running")
272
+ return undefined;
273
+ return this.initializeSession(input.sandboxId);
274
+ }
275
+ async wake(input) {
276
+ if (!hasCurrentSandboxFilesystemContract(input.manifest))
277
+ return undefined;
278
+ // `docker start` on a removed/crashed container fails silently; if the
279
+ // client reports the start did not succeed, return undefined so the runtime
280
+ // recreates the sandbox instead of wedging the session on a dead container.
281
+ const started = await this.client.startContainer?.(input.sandboxId);
282
+ if (started === false)
283
+ return undefined;
284
+ return this.initializeSession(input.sandboxId);
285
+ }
286
+ async pauseOrRetain(session) {
287
+ await this.client.stopContainer?.(session.id);
288
+ }
289
+ async disposeClean(session) {
290
+ await this.client.removeContainer(session.id);
291
+ }
292
+ async initializeSession(containerId) {
293
+ const commandTimeoutMs = this.options.commandTimeoutMs ?? 30_000;
294
+ const probe = await this.client.exec(containerId, sandboxFilesystemContractProbeCommand(), {
295
+ cwd: OPENEVE_SANDBOX_ROOT,
296
+ timeoutMs: commandTimeoutMs
297
+ });
298
+ assertSandboxFilesystemContractProbe("Docker", probe);
299
+ return this.sessionFromContainer(containerId);
300
+ }
301
+ sessionFromContainer(containerId) {
302
+ const workingDirectory = OPENEVE_SANDBOX_ROOT;
303
+ const commandTimeoutMs = this.options.commandTimeoutMs ?? 30_000;
304
+ return {
305
+ id: containerId,
306
+ root: workingDirectory,
307
+ provider: this.provider,
308
+ metadata: sandboxFilesystemContractMetadata(),
309
+ readFile: (path) => this.client.readFile(containerId, resolveSandboxPath(workingDirectory, path)),
310
+ writeFile: (path, contents) => this.client.writeFile(containerId, resolveSandboxPath(workingDirectory, path), contents),
311
+ listFiles: async (path, options) => {
312
+ const entries = await this.client.listFiles(containerId, resolveSandboxPath(workingDirectory, path), options);
313
+ return entries.map((entry) => ({
314
+ ...entry,
315
+ path: canonicalizeSandboxListingPath(workingDirectory, entry.path)
316
+ }));
317
+ },
318
+ deletePath: async (path, options = {}) => {
319
+ const target = resolveSandboxPath(workingDirectory, path);
320
+ const flag = options.recursive === false ? "" : "-r";
321
+ const result = await this.client.exec(containerId, `rm ${flag} -f -- ${shellQuote(target)}`, {
322
+ cwd: workingDirectory,
323
+ timeoutMs: commandTimeoutMs
324
+ });
325
+ if (result.exitCode !== 0)
326
+ throw new Error(result.stderr || `Docker delete failed for ${target}`);
327
+ },
328
+ shell: async (command, shellOptions = {}) => {
329
+ const started = Date.now();
330
+ // A 0/negative caller timeout would disable the exec timeout entirely.
331
+ const timeoutMs = typeof shellOptions.timeoutMs === "number" && Number.isFinite(shellOptions.timeoutMs) && shellOptions.timeoutMs > 0
332
+ ? Math.floor(shellOptions.timeoutMs)
333
+ : commandTimeoutMs;
334
+ const result = await this.client.exec(containerId, command, {
335
+ cwd: shellOptions.cwd ? resolveSandboxPath(workingDirectory, shellOptions.cwd) : workingDirectory,
336
+ timeoutMs,
337
+ ...(shellOptions.env ? { env: shellOptions.env } : {})
338
+ });
339
+ return {
340
+ command,
341
+ exitCode: result.exitCode,
342
+ stdout: result.stdout,
343
+ stderr: result.stderr,
344
+ durationMs: Date.now() - started
345
+ };
346
+ },
347
+ dispose: () => this.client.removeContainer(containerId)
348
+ };
349
+ }
350
+ }
351
+ export class DockerCliClient {
352
+ dockerBin;
353
+ constructor(dockerBin = "docker") {
354
+ this.dockerBin = dockerBin;
355
+ }
356
+ async createContainer(options) {
357
+ if (options.pullPolicy === "always")
358
+ await this.run(["pull", options.image]);
359
+ const args = ["run", "-d", "--name", options.name, "--workdir", options.workingDirectory, "--network", options.network ?? "none"];
360
+ if (options.cpus)
361
+ args.push("--cpus", options.cpus);
362
+ if (options.memory)
363
+ args.push("--memory", options.memory);
364
+ for (const [name, value] of Object.entries(options.labels ?? {}))
365
+ args.push("--label", `${name}=${value}`);
366
+ for (const [name, value] of Object.entries(options.env ?? {}))
367
+ args.push("--env", `${name}=${value}`);
368
+ args.push(options.image, "sh", "-lc", `mkdir -p ${shellQuote(options.workingDirectory)} && tail -f /dev/null`);
369
+ const result = await this.run(args);
370
+ return result.stdout.trim();
371
+ }
372
+ async exec(containerId, command, options = {}) {
373
+ const args = ["exec"];
374
+ if (options.cwd)
375
+ args.push("--workdir", options.cwd);
376
+ for (const [name, value] of Object.entries(options.env ?? {}))
377
+ args.push("--env", `${name}=${value}`);
378
+ args.push(containerId, "sh", "-lc", command);
379
+ const result = await this.run(args, undefined, options.timeoutMs, true);
380
+ return result;
381
+ }
382
+ async readFile(containerId, path) {
383
+ const result = await this.runBuffer(["exec", containerId, "cat", path], undefined, 30_000, true);
384
+ if (result.exitCode !== 0)
385
+ throw new Error(result.stderr || `Docker read failed for ${path}`);
386
+ return result.stdout.toString("utf8");
387
+ }
388
+ async writeFile(containerId, path, contents) {
389
+ const dir = path.includes("/") ? path.slice(0, path.lastIndexOf("/")) || "/" : ".";
390
+ const result = await this.run(["exec", "-i", containerId, "sh", "-lc", `mkdir -p ${shellQuote(dir)} && cat > ${shellQuote(path)}`], contents);
391
+ if (result.exitCode !== 0)
392
+ throw new Error(result.stderr || `Docker write failed for ${path}`);
393
+ }
394
+ async listFiles(containerId, path, options = {}) {
395
+ const prune = (options.excludeTopLevel ?? [])
396
+ .map((entry) => `-path ${shellQuote(posix.join(path, entry))}`)
397
+ .join(" -o ");
398
+ const pruneExpression = prune ? `\\( ${prune} \\) -prune -o ` : "";
399
+ const result = await this.exec(containerId, `find ${shellQuote(path)} -maxdepth 20 ${pruneExpression}-type f -print`);
400
+ if (result.exitCode !== 0)
401
+ return [];
402
+ const entries = [];
403
+ for (const file of result.stdout.split("\n").map((line) => line.trim()).filter(Boolean)) {
404
+ const result = await this.runBuffer(["exec", containerId, "cat", file], undefined, 30_000, true);
405
+ if (result.exitCode !== 0)
406
+ continue;
407
+ const contents = result.stdout;
408
+ entries.push({ path: file, contents, size: contents.byteLength });
409
+ }
410
+ return entries;
411
+ }
412
+ async inspectContainer(containerId) {
413
+ const result = await this.run(["inspect", "--format", "{{.Id}}\t{{.State.Status}}", containerId], undefined, 10_000, true);
414
+ if (result.exitCode !== 0)
415
+ return undefined;
416
+ const [id, state] = result.stdout.trim().split("\t");
417
+ return id ? { id, ...(state ? { state } : {}) } : undefined;
418
+ }
419
+ async findContainerByLabel(labels) {
420
+ const args = ["ps", "-a"];
421
+ for (const [name, value] of Object.entries(labels))
422
+ args.push("--filter", `label=${name}=${value}`);
423
+ args.push("--format", "{{.ID}}\t{{.State}}\t{{.Names}}");
424
+ const result = await this.run(args, undefined, 10_000, true);
425
+ if (result.exitCode !== 0)
426
+ return [];
427
+ return result.stdout
428
+ .split("\n")
429
+ .map((line) => line.trim())
430
+ .filter(Boolean)
431
+ .map((line) => {
432
+ const [id, state, name] = line.split("\t");
433
+ return { id: id ?? "", ...(state ? { state } : {}), ...(name ? { name } : {}) };
434
+ })
435
+ .filter((container) => container.id);
436
+ }
437
+ async startContainer(containerId) {
438
+ const result = await this.run(["start", containerId], undefined, 10_000, true);
439
+ return result.exitCode === 0;
440
+ }
441
+ async stopContainer(containerId) {
442
+ await this.run(["stop", containerId], undefined, 10_000, true);
443
+ }
444
+ async removeContainer(containerId) {
445
+ await this.run(["rm", "-f", containerId], undefined, 10_000, true);
446
+ }
447
+ async run(args, input, timeoutMs = 30_000, allowFailure = false) {
448
+ if (input === undefined) {
449
+ try {
450
+ const result = await execFileAsync(this.dockerBin, args, { timeout: timeoutMs, maxBuffer: 1024 * 1024 * 50 });
451
+ return { exitCode: 0, stdout: result.stdout, stderr: result.stderr };
452
+ }
453
+ catch (error) {
454
+ const candidate = error;
455
+ if (allowFailure)
456
+ return { exitCode: typeof candidate.code === "number" ? candidate.code : 1, stdout: candidate.stdout ?? "", stderr: candidate.stderr ?? String(error) };
457
+ throw error;
458
+ }
459
+ }
460
+ return new Promise((resolve, reject) => {
461
+ const child = spawn(this.dockerBin, args, { stdio: ["pipe", "pipe", "pipe"] });
462
+ const timer = setTimeout(() => child.kill("SIGKILL"), timeoutMs);
463
+ let stdout = "";
464
+ let stderr = "";
465
+ child.stdout.on("data", (chunk) => {
466
+ stdout += chunk.toString("utf8");
467
+ });
468
+ child.stderr.on("data", (chunk) => {
469
+ stderr += chunk.toString("utf8");
470
+ });
471
+ child.on("error", reject);
472
+ child.on("close", (code) => {
473
+ clearTimeout(timer);
474
+ resolve({ exitCode: code ?? 1, stdout, stderr });
475
+ });
476
+ child.stdin.end(input);
477
+ });
478
+ }
479
+ async runBuffer(args, input, timeoutMs = 30_000, allowFailure = false) {
480
+ return new Promise((resolve, reject) => {
481
+ const child = spawn(this.dockerBin, args, { stdio: ["pipe", "pipe", "pipe"] });
482
+ const timer = setTimeout(() => child.kill("SIGKILL"), timeoutMs);
483
+ const stdout = [];
484
+ const stderr = [];
485
+ child.stdout.on("data", (chunk) => {
486
+ stdout.push(chunk);
487
+ });
488
+ child.stderr.on("data", (chunk) => {
489
+ stderr.push(chunk);
490
+ });
491
+ child.on("error", (error) => {
492
+ clearTimeout(timer);
493
+ if (allowFailure) {
494
+ resolve({ exitCode: 1, stdout: Buffer.concat(stdout), stderr: Buffer.concat(stderr).toString("utf8") || String(error) });
495
+ }
496
+ else {
497
+ reject(error);
498
+ }
499
+ });
500
+ child.on("close", (code) => {
501
+ clearTimeout(timer);
502
+ const exitCode = code ?? 1;
503
+ if (!allowFailure && exitCode !== 0) {
504
+ reject(new Error(Buffer.concat(stderr).toString("utf8") || `Docker command failed with exit code ${exitCode}.`));
505
+ return;
506
+ }
507
+ resolve({ exitCode, stdout: Buffer.concat(stdout), stderr: Buffer.concat(stderr).toString("utf8") });
508
+ });
509
+ child.stdin.end(input);
510
+ });
511
+ }
512
+ }
513
+ function dockerSafeName(value) {
514
+ return value.toLowerCase().replace(/[^a-z0-9_.-]/g, "-").slice(0, 120);
515
+ }
516
+ function stringifyJsonRecord(value) {
517
+ return Object.fromEntries(Object.entries(value).map(([key, entry]) => [
518
+ key,
519
+ typeof entry === "string" ? entry : JSON.stringify(entry)
520
+ ]));
521
+ }
522
+ function positiveInteger(value) {
523
+ if (!value)
524
+ return undefined;
525
+ const parsed = Number.parseInt(value, 10);
526
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;
527
+ }
528
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AdapterProviderMetadata, ProviderModule } from "@assemblyline-agents/core";
2
+ /** Metadata owned by this package; the core registry mirrors it as an offline default. */
3
+ export declare const DOCKER_DEPLOY_PROVIDER_METADATA: AdapterProviderMetadata;
4
+ export declare const DOCKER_SANDBOX_PROVIDER_METADATA: AdapterProviderMetadata;
5
+ export declare const openeveProvider: ProviderModule;
6
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EAIvB,cAAc,EAEf,MAAM,2BAA2B,CAAC;AAUnC,0FAA0F;AAC1F,eAAO,MAAM,+BAA+B,EAAE,uBAc7C,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,uBAc9C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cAoC7B,CAAC"}
@@ -0,0 +1,115 @@
1
+ import { spawn } from "node:child_process";
2
+ import { DockerCliClient, DockerSandboxAdapter, createDockerDeployPublisher, dockerSandboxOptionsFromEnv } from "./index.js";
3
+ /** Metadata owned by this package; the core registry mirrors it as an offline default. */
4
+ export const DOCKER_DEPLOY_PROVIDER_METADATA = {
5
+ kind: "docker",
6
+ role: "deploy",
7
+ packageName: "@assemblyline-agents/docker",
8
+ optionalEnv: ["OPENEVE_DOCKER_IMAGE"],
9
+ capabilities: ["container-runtime", "persistent-storage", "remote-exec"],
10
+ setup: [
11
+ {
12
+ kind: "deploy",
13
+ name: "docker-cli",
14
+ required: true,
15
+ message: "Install and start Docker before publishing with the Docker deploy adapter."
16
+ }
17
+ ]
18
+ };
19
+ export const DOCKER_SANDBOX_PROVIDER_METADATA = {
20
+ kind: "docker",
21
+ role: "sandbox",
22
+ packageName: "@assemblyline-agents/docker",
23
+ optionalEnv: ["DOCKER_HOST", "OPENEVE_DOCKER_NETWORK", "OPENEVE_DOCKER_CPUS", "OPENEVE_DOCKER_MEMORY", "OPENEVE_DOCKER_PULL_POLICY", "OPENEVE_DOCKER_COMMAND_TIMEOUT_MS"],
24
+ capabilities: ["sandbox", "shell", "filesystem", "containers", "lifecycle"],
25
+ setup: [
26
+ {
27
+ kind: "sandbox",
28
+ name: "docker-cli",
29
+ required: true,
30
+ message: "Install and start Docker before using the Docker sandbox adapter."
31
+ }
32
+ ]
33
+ };
34
+ export const openeveProvider = {
35
+ providers: [
36
+ {
37
+ metadata: DOCKER_SANDBOX_PROVIDER_METADATA,
38
+ create(ctx) {
39
+ return new DockerSandboxAdapter(new DockerCliClient(), {
40
+ ...dockerSandboxOptionsFromEnv(ctx.env),
41
+ ...ctx.options
42
+ });
43
+ }
44
+ },
45
+ {
46
+ metadata: DOCKER_DEPLOY_PROVIDER_METADATA,
47
+ create(ctx) {
48
+ const image = stringOption(ctx.options, "image") ?? ctx.env.OPENEVE_DOCKER_IMAGE;
49
+ const dockerBin = stringOption(ctx.options, "dockerBin");
50
+ const serve = booleanOption(ctx.options, "serve");
51
+ const port = numberOption(ctx.options, "port");
52
+ const cwd = stringOption(ctx.options, "cwd");
53
+ const volumeName = stringOption(ctx.options, "volumeName");
54
+ const containerName = stringOption(ctx.options, "containerName");
55
+ return createDockerDeployPublisher({
56
+ ...(dockerBin ? { dockerBin } : {}),
57
+ ...(image ? { image } : {}),
58
+ ...(serve !== undefined ? { serve } : {}),
59
+ ...(port !== undefined ? { port } : {}),
60
+ ...(cwd ? { cwd } : {}),
61
+ ...(volumeName ? { volumeName } : {}),
62
+ ...(containerName ? { containerName } : {}),
63
+ env: ctx.env,
64
+ runCommand: spawnDeployCommand,
65
+ runInteractiveCommand: spawnInteractiveDeployCommand
66
+ });
67
+ }
68
+ }
69
+ ]
70
+ };
71
+ const spawnInteractiveDeployCommand = (executable, args, options = {}) => {
72
+ return new Promise((resolvePromise, reject) => {
73
+ const child = spawn(executable, args, {
74
+ cwd: options.cwd ?? process.cwd(),
75
+ env: (options.env ?? process.env),
76
+ stdio: "inherit"
77
+ });
78
+ child.on("error", reject);
79
+ child.on("close", (code) => resolvePromise({ exitCode: code ?? 1, stdout: "", stderr: "" }));
80
+ });
81
+ };
82
+ function stringOption(options, name) {
83
+ const value = options[name];
84
+ return typeof value === "string" ? value : undefined;
85
+ }
86
+ function numberOption(options, name) {
87
+ const value = options[name];
88
+ return typeof value === "number" ? value : undefined;
89
+ }
90
+ function booleanOption(options, name) {
91
+ const value = options[name];
92
+ return typeof value === "boolean" ? value : undefined;
93
+ }
94
+ const spawnDeployCommand = (executable, args, options = {}) => {
95
+ return new Promise((resolvePromise, reject) => {
96
+ const child = spawn(executable, args, {
97
+ cwd: options.cwd ?? process.cwd(),
98
+ env: (options.env ?? process.env),
99
+ stdio: ["ignore", "pipe", "pipe"]
100
+ });
101
+ let stdout = "";
102
+ let stderr = "";
103
+ child.stdout.on("data", (chunk) => {
104
+ stdout += chunk.toString("utf8");
105
+ });
106
+ child.stderr.on("data", (chunk) => {
107
+ stderr += chunk.toString("utf8");
108
+ });
109
+ child.on("error", reject);
110
+ child.on("close", (code) => {
111
+ resolvePromise({ exitCode: code ?? 1, stdout, stderr });
112
+ });
113
+ });
114
+ };
115
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@assemblyline-agents/docker",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./dist/index.d.ts",
8
+ "default": "./dist/index.js"
9
+ }
10
+ },
11
+ "dependencies": {
12
+ "@assemblyline-agents/runtime": "0.1.0",
13
+ "@assemblyline-agents/core": "0.1.0"
14
+ },
15
+ "description": "Official OpenEve Docker sandbox and deployment plugin.",
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "engines": {
20
+ "node": ">=22.19.0"
21
+ },
22
+ "license": "MIT",
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://github.com/jasonbadeaux/openeve.git",
26
+ "directory": "packages/docker"
27
+ },
28
+ "bugs": {
29
+ "url": "https://github.com/jasonbadeaux/openeve/issues"
30
+ },
31
+ "homepage": "https://github.com/jasonbadeaux/openeve#readme",
32
+ "author": "OpenEve contributors",
33
+ "keywords": [
34
+ "openeve",
35
+ "ai",
36
+ "agents",
37
+ "docker",
38
+ "sandbox",
39
+ "deployment",
40
+ "plugin"
41
+ ],
42
+ "publishConfig": {
43
+ "access": "public"
44
+ },
45
+ "scripts": {
46
+ "build": "tsc -p tsconfig.json",
47
+ "check": "tsc -p tsconfig.json --noEmit"
48
+ }
49
+ }