@alchemy.run/docker 2.0.0-beta.84 → 2.0.0-beta.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +16 -0
  2. package/lib/Bootstrap.d.ts.map +1 -1
  3. package/lib/Bootstrap.js +2 -1
  4. package/lib/Bootstrap.js.map +1 -1
  5. package/lib/BuildCache.d.ts +87 -0
  6. package/lib/BuildCache.d.ts.map +1 -0
  7. package/lib/BuildCache.js +39 -0
  8. package/lib/BuildCache.js.map +1 -0
  9. package/lib/BuildHash.d.ts +20 -3
  10. package/lib/BuildHash.d.ts.map +1 -1
  11. package/lib/BuildHash.js +60 -21
  12. package/lib/BuildHash.js.map +1 -1
  13. package/lib/BuildPlan.d.ts +202 -0
  14. package/lib/BuildPlan.d.ts.map +1 -0
  15. package/lib/BuildPlan.js +514 -0
  16. package/lib/BuildPlan.js.map +1 -0
  17. package/lib/Container.d.ts +122 -1
  18. package/lib/Container.d.ts.map +1 -1
  19. package/lib/Container.js +232 -4
  20. package/lib/Container.js.map +1 -1
  21. package/lib/Context.d.ts +20 -1
  22. package/lib/Context.d.ts.map +1 -1
  23. package/lib/Context.js +15 -0
  24. package/lib/Context.js.map +1 -1
  25. package/lib/Docker.d.ts +113 -1
  26. package/lib/Docker.d.ts.map +1 -1
  27. package/lib/Docker.js +50 -8
  28. package/lib/Docker.js.map +1 -1
  29. package/lib/Dockerfile.d.ts +0 -2
  30. package/lib/Dockerfile.d.ts.map +1 -1
  31. package/lib/Dockerfile.js.map +1 -1
  32. package/lib/DockerfileParser.d.ts +125 -0
  33. package/lib/DockerfileParser.d.ts.map +1 -0
  34. package/lib/DockerfileParser.js +1040 -0
  35. package/lib/DockerfileParser.js.map +1 -0
  36. package/lib/HealthcheckCommand.d.ts.map +1 -1
  37. package/lib/HealthcheckCommand.js.map +1 -1
  38. package/lib/Image.d.ts +69 -13
  39. package/lib/Image.d.ts.map +1 -1
  40. package/lib/Image.js +59 -9
  41. package/lib/Image.js.map +1 -1
  42. package/lib/ImageArchive.d.ts +41 -0
  43. package/lib/ImageArchive.d.ts.map +1 -0
  44. package/lib/ImageArchive.js +54 -0
  45. package/lib/ImageArchive.js.map +1 -0
  46. package/lib/ImageSource.d.ts +151 -8
  47. package/lib/ImageSource.d.ts.map +1 -1
  48. package/lib/ImageSource.js +247 -72
  49. package/lib/ImageSource.js.map +1 -1
  50. package/lib/Network.d.ts +175 -3
  51. package/lib/Network.d.ts.map +1 -1
  52. package/lib/Network.js +296 -8
  53. package/lib/Network.js.map +1 -1
  54. package/lib/Providers.d.ts.map +1 -1
  55. package/lib/Providers.js.map +1 -1
  56. package/lib/Registry.d.ts.map +1 -1
  57. package/lib/Registry.js.map +1 -1
  58. package/lib/RegistryError.d.ts.map +1 -1
  59. package/lib/RegistryError.js.map +1 -1
  60. package/lib/RemoteImage.d.ts.map +1 -1
  61. package/lib/RemoteImage.js +1 -1
  62. package/lib/RemoteImage.js.map +1 -1
  63. package/lib/Service.d.ts +24 -3
  64. package/lib/Service.d.ts.map +1 -1
  65. package/lib/Service.js +154 -12
  66. package/lib/Service.js.map +1 -1
  67. package/lib/ServiceImage.d.ts.map +1 -1
  68. package/lib/ServiceImage.js.map +1 -1
  69. package/lib/ShellWord.d.ts +28 -0
  70. package/lib/ShellWord.d.ts.map +1 -0
  71. package/lib/ShellWord.js +301 -0
  72. package/lib/ShellWord.js.map +1 -0
  73. package/lib/Swarm.d.ts.map +1 -1
  74. package/lib/Swarm.js.map +1 -1
  75. package/lib/Volume.d.ts +24 -1
  76. package/lib/Volume.d.ts.map +1 -1
  77. package/lib/Volume.js +16 -0
  78. package/lib/Volume.js.map +1 -1
  79. package/lib/index.d.ts.map +1 -1
  80. package/lib/index.js.map +1 -1
  81. package/package.json +9 -9
  82. package/src/Bootstrap.ts +2 -0
  83. package/src/BuildCache.ts +111 -0
  84. package/src/BuildHash.ts +85 -26
  85. package/src/BuildPlan.ts +758 -0
  86. package/src/Container.ts +361 -5
  87. package/src/Context.ts +27 -1
  88. package/src/Docker.ts +157 -9
  89. package/src/Dockerfile.ts +0 -2
  90. package/src/DockerfileParser.ts +1152 -0
  91. package/src/Image.ts +75 -15
  92. package/src/ImageArchive.ts +77 -0
  93. package/src/ImageSource.ts +391 -99
  94. package/src/Network.ts +432 -10
  95. package/src/RemoteImage.ts +1 -1
  96. package/src/Service.ts +246 -62
  97. package/src/ShellWord.ts +326 -0
  98. package/src/Volume.ts +33 -1
@@ -1,12 +1,14 @@
1
1
  import { AlchemyContext } from "alchemy/AlchemyContext";
2
2
  import * as Bundle from "alchemy/Bundle/Bundle";
3
3
  import { findCwdForBundle, getStableContextDir, resolveMainPath } from "alchemy/Bundle/TempRoot";
4
- import { hashDirectory } from "alchemy/Command/Memo";
5
4
  import { sha256Object } from "alchemy/Util/sha256";
5
+ import * as Data from "effect/Data";
6
6
  import * as Effect from "effect/Effect";
7
7
  import * as FileSystem from "effect/FileSystem";
8
8
  import * as Path from "effect/Path";
9
9
  import * as Schedule from "effect/Schedule";
10
+ import { imageBuildCacheOptions } from "./BuildCache.js";
11
+ import { hashDockerBuildInputs } from "./BuildHash.js";
10
12
  import { Docker } from "./Docker.js";
11
13
  import { isInlineDockerfile } from "./Dockerfile.js";
12
14
  /**
@@ -22,9 +24,36 @@ export const imageSourceKind = (source) => source.main !== undefined
22
24
  : source.context !== undefined || source.dockerfile !== undefined
23
25
  ? "context"
24
26
  : undefined;
27
+ /**
28
+ * `build.args` or `build.secrets` set on an image that is not built from the
29
+ * user's own Dockerfile (a `main` program or a pre-built `image`), or
30
+ * `build.cache` set on a pre-built `image`, which is never built.
31
+ */
32
+ export class DockerfileBuildConflict extends Data.TaggedError("DockerfileBuildConflict") {
33
+ get message() {
34
+ return this.option === "cache"
35
+ ? `'${this.id}': 'build.cache' applies to an image Alchemy builds ('main' / 'context' / 'dockerfile'), not to a pre-built 'image'`
36
+ : `'${this.id}': 'build.args' and 'build.secrets' apply to an image built from your own Dockerfile ('context' / 'dockerfile'), not to '${this.source}'`;
37
+ }
38
+ }
39
+ /**
40
+ * Dies with {@link DockerfileBuildConflict} when `build.args` or
41
+ * `build.secrets` are set alongside `main` or `image`, or `build.cache`
42
+ * alongside `image`.
43
+ */
44
+ export const validateDockerfileBuild = (id, source) => (source.main !== undefined || source.image !== undefined) &&
45
+ (source.build?.args !== undefined || source.build?.secrets !== undefined)
46
+ ? Effect.die(new DockerfileBuildConflict({
47
+ id,
48
+ source: source.main !== undefined ? "main" : "image",
49
+ }))
50
+ : source.main === undefined && source.image !== undefined && source.build?.cache
51
+ ? Effect.die(new DockerfileBuildConflict({ id, source: "image", option: "cache" }))
52
+ : Effect.void;
25
53
  /**
26
54
  * Validate environment-source exclusivity. Dies (plan-time defect) on
27
- * `image`+`dockerfile`, `image`+`context`, or inline-`dockerfile`+`context`.
55
+ * `image`+`dockerfile`, `image`+`context`, inline-`dockerfile`+`context`, or
56
+ * build args/secrets without a Dockerfile build.
28
57
  */
29
58
  export const validateImageSource = (id, source) => {
30
59
  if (source.image !== undefined && source.dockerfile !== undefined) {
@@ -38,8 +67,60 @@ export const validateImageSource = (id, source) => {
38
67
  source.context !== undefined) {
39
68
  return Effect.die(new Error(`'${id}': inline 'dockerfile' content builds with no context — use a path dockerfile with 'context', or drop 'context'`));
40
69
  }
41
- return Effect.void;
70
+ return validateDockerfileBuild(id, source);
42
71
  };
72
+ /**
73
+ * Where an {@link ImageAgent}'s image copies the agent and its runtime, and
74
+ * where the image's container finds them.
75
+ */
76
+ export const IMAGE_AGENT_DIR = "/opt/alchemy/sandbox";
77
+ /**
78
+ * The entry point that starts an {@link ImageAgent} from
79
+ * {@link IMAGE_AGENT_DIR}. Bun starts through the loader that came with it,
80
+ * so the image's own libc (glibc, another musl, or none) is never consulted
81
+ * and the image needs nothing installed. The container's command arrives as
82
+ * the agent's arguments.
83
+ */
84
+ export const imageAgentEntryPoint = [
85
+ `${IMAGE_AGENT_DIR}/ld-musl.so.1`,
86
+ "--library-path",
87
+ `${IMAGE_AGENT_DIR}/lib`,
88
+ `${IMAGE_AGENT_DIR}/bun`,
89
+ `${IMAGE_AGENT_DIR}/index.mjs`,
90
+ ];
91
+ /**
92
+ * The image the agent's runtime comes from. The musl build of Bun runs on any
93
+ * Linux image once its loader and C++ runtime come with it.
94
+ */
95
+ const AGENT_RUNTIME_IMAGE = "oven/bun:1-alpine";
96
+ /** Where the agent's bundle sits inside its own image. */
97
+ const AGENT_BUNDLE_DIR = "/agent";
98
+ /**
99
+ * The Dockerfile of an {@link ImageAgent}'s image: the runtime's image plus
100
+ * the agent's bundle. Its entry point copies the runtime, the loader, the
101
+ * C++ runtime and the bundle into {@link IMAGE_AGENT_DIR}, where the platform
102
+ * mounted a volume, and exits.
103
+ */
104
+ const AGENT_DOCKERFILE = `${[
105
+ `FROM ${AGENT_RUNTIME_IMAGE}`,
106
+ `COPY index.mjs ${AGENT_BUNDLE_DIR}/index.mjs`,
107
+ `COPY *.js ${AGENT_BUNDLE_DIR}/`,
108
+ `ENTRYPOINT ${JSON.stringify([
109
+ "/bin/sh",
110
+ "-ec",
111
+ [
112
+ `mkdir -p ${IMAGE_AGENT_DIR}/lib`,
113
+ `cp /usr/local/bin/bun ${IMAGE_AGENT_DIR}/bun`,
114
+ `cp /lib/ld-musl-*.so.1 ${IMAGE_AGENT_DIR}/ld-musl.so.1`,
115
+ `cp /usr/lib/libstdc++.so.6 /usr/lib/libgcc_s.so.1 ${IMAGE_AGENT_DIR}/lib/`,
116
+ `cp ${AGENT_BUNDLE_DIR}/* ${IMAGE_AGENT_DIR}/`,
117
+ // The image's container may run as any user.
118
+ `chmod -R a+rX ${IMAGE_AGENT_DIR}`,
119
+ ].join(" && "),
120
+ ])}`,
121
+ ].join("\n")}\n`;
122
+ /** The generated entry of an {@link ImageAgent}: import the module and run it. */
123
+ const agentEntry = (importPath) => `import { bootstrap } from ${JSON.stringify(importPath)};\nawait bootstrap();\n`;
43
124
  /**
44
125
  * Resolve the Dockerfile path for a `context` source: always relative to the
45
126
  * cwd (absolute paths pass through), defaulting to `${context}/Dockerfile`.
@@ -90,23 +171,80 @@ export const computeStaticSourceHash = Effect.fn(function* (source, platform) {
90
171
  return (yield* sha256Object({
91
172
  dockerfile: source.dockerfile.content,
92
173
  platform: platform ?? "linux/amd64",
174
+ // Absent when unset, so existing hashes hold. Secrets are excluded.
175
+ buildArgs: source.build?.args,
93
176
  })).slice(0, 16);
94
177
  }
95
- const fs = yield* FileSystem.FileSystem;
96
178
  const { context, dockerfile } = yield* resolveContextPaths({
97
179
  context: source.context,
98
180
  dockerfile: source.dockerfile,
99
181
  });
100
- const contextHash = yield* hashDirectory({ cwd: context });
101
- const dockerfileContent = yield* fs.readFileString(dockerfile);
102
- return (yield* sha256Object({
103
- contextHash,
104
- dockerfile: dockerfileContent,
182
+ // Hash what Docker receives: the context `.dockerignore` keeps (never a
183
+ // lockfile above it), the Dockerfile, platform and build args.
184
+ return (yield* hashDockerBuildInputs({
185
+ context,
186
+ dockerfile,
105
187
  platform: platform ?? "linux/amd64",
106
- })).slice(0, 16);
188
+ buildArgs: source.build?.args,
189
+ }, "effective")).slice(0, 16);
107
190
  }
108
191
  return undefined;
109
192
  });
193
+ /**
194
+ * The exact rolldown input/output options `bundleMainProgram` hands to
195
+ * `Bundle.build` — shared with {@link watchMain} so a dev watcher's
196
+ * `Bundle.watch` observes the identical module graph.
197
+ */
198
+ export const mainBundleOptions = (source, entry, cwd, plugins) => ({
199
+ inputOptions: {
200
+ ...source.build?.input,
201
+ input: entry,
202
+ cwd,
203
+ platform: "node",
204
+ // The container runs on `bun`; keep `bun`/`bun:*` external (the
205
+ // runtime provides them) and resolve the `bun` export condition
206
+ // so `@effect/platform-bun` picks its Bun implementations.
207
+ external: ["bun", "bun:*", ...(source.build?.input?.external ?? [])],
208
+ resolve: {
209
+ conditionNames: [...Bundle.BUN_CONDITION_NAMES],
210
+ ...source.build?.input?.resolve,
211
+ },
212
+ plugins: [source.build?.input?.plugins, plugins],
213
+ },
214
+ outputOptions: {
215
+ ...source.build?.output,
216
+ format: "esm",
217
+ sourcemap: source.build?.output?.sourcemap ?? false,
218
+ minify: source.build?.output?.minify ?? false,
219
+ entryFileNames: "index.mjs",
220
+ },
221
+ });
222
+ /**
223
+ * Bundle the Effect program behind a `main` source: every emitted file
224
+ * (entry + shared chunks) and the bundle hash. Needs no Docker engine, so
225
+ * builders that are not Docker (`BuildPlan`) share it.
226
+ */
227
+ export const bundleMainProgram = Effect.fn(function* (options) {
228
+ const { source } = options;
229
+ const virtualEntryPlugin = yield* Bundle.virtualEntryPlugin;
230
+ const realMain = yield* resolveMainPath(source.main);
231
+ const cwd = yield* findCwdForBundle(realMain);
232
+ const buildBundle = Effect.fn(function* (entry, plugins) {
233
+ const opts = mainBundleOptions(source, entry, cwd, plugins);
234
+ return yield* Bundle.build(opts.inputOptions, opts.outputOptions, source.build);
235
+ });
236
+ const bundleOutput = options.isExternal
237
+ ? yield* buildBundle(realMain)
238
+ : yield* buildBundle(realMain, virtualEntryPlugin(options.bootstrap));
239
+ // Return every emitted file (entry + shared chunks). Dynamic imports in
240
+ // the Bun HTTP server / AWS SDK split into chunks; dropping any of them
241
+ // crashes the container with `Cannot find module './chunk-XXX.js'`.
242
+ const files = bundleOutput.files.map((file) => ({
243
+ path: file.path,
244
+ content: typeof file.content === "string" ? new TextEncoder().encode(file.content) : file.content,
245
+ }));
246
+ return { files, hash: bundleOutput.hash };
247
+ });
110
248
  /**
111
249
  * Init-time constructor for the image-source resolver. Resolves the services
112
250
  * that are only available at provider-layer construction (Docker, the
@@ -118,60 +256,6 @@ export const makeContainerImageSource = Effect.gen(function* () {
118
256
  const docker = yield* Docker;
119
257
  const { dotAlchemy } = yield* AlchemyContext;
120
258
  const virtualEntryPlugin = yield* Bundle.virtualEntryPlugin;
121
- /**
122
- * The exact rolldown input/output options `bundleProgram` hands to
123
- * `Bundle.build` — shared with {@link watchMain} so a dev watcher's
124
- * `Bundle.watch` observes the identical module graph.
125
- */
126
- const mainBundleOptions = (source, entry, cwd, plugins) => ({
127
- inputOptions: {
128
- ...source.build?.input,
129
- input: entry,
130
- cwd,
131
- platform: "node",
132
- // The container runs on `bun`; keep `bun`/`bun:*` external (the
133
- // runtime provides them) and resolve the `bun` export condition
134
- // so `@effect/platform-bun` picks its Bun implementations.
135
- external: [
136
- "bun",
137
- "bun:*",
138
- ...(source.build?.input?.external ?? []),
139
- ],
140
- resolve: {
141
- conditionNames: [...Bundle.BUN_CONDITION_NAMES],
142
- ...source.build?.input?.resolve,
143
- },
144
- plugins: [source.build?.input?.plugins, plugins],
145
- },
146
- outputOptions: {
147
- ...source.build?.output,
148
- format: "esm",
149
- sourcemap: source.build?.output?.sourcemap ?? false,
150
- minify: source.build?.output?.minify ?? false,
151
- entryFileNames: "index.mjs",
152
- },
153
- });
154
- /** Bundle the Effect program behind a `main` source. */
155
- const bundleProgram = Effect.fn(function* (options) {
156
- const { source } = options;
157
- const realMain = yield* resolveMainPath(source.main);
158
- const cwd = yield* findCwdForBundle(realMain);
159
- const buildBundle = Effect.fn(function* (entry, plugins) {
160
- const opts = mainBundleOptions(source, entry, cwd, plugins);
161
- return yield* Bundle.build(opts.inputOptions, opts.outputOptions, source.build);
162
- });
163
- const bundleOutput = options.isExternal
164
- ? yield* buildBundle(realMain)
165
- : yield* buildBundle(realMain, virtualEntryPlugin(options.bootstrap));
166
- // Return every emitted file (entry + shared chunks). Dynamic imports in
167
- // the Bun HTTP server / AWS SDK split into chunks; dropping any of them
168
- // crashes the container with `Cannot find module './chunk-XXX.js'`.
169
- const files = bundleOutput.files.map((file) => ({
170
- path: file.path,
171
- content: typeof file.content === "string" ? new TextEncoder().encode(file.content) : file.content,
172
- }));
173
- return { files, hash: bundleOutput.hash };
174
- });
175
259
  /**
176
260
  * Bundle a `main` source and compute its content-addressed code hash.
177
261
  *
@@ -182,7 +266,7 @@ export const makeContainerImageSource = Effect.gen(function* () {
182
266
  * pushed image tag always agree.
183
267
  */
184
268
  const computeMainCodeHash = Effect.fn(function* (options) {
185
- const bundled = yield* bundleProgram({
269
+ const bundled = yield* bundleMainProgram({
186
270
  source: options.source,
187
271
  isExternal: options.isExternal,
188
272
  bootstrap: options.bootstrap,
@@ -196,14 +280,12 @@ export const makeContainerImageSource = Effect.gen(function* () {
196
280
  const isPathEnv = df !== undefined && !isInlineDockerfile(df);
197
281
  let envIdentity = {};
198
282
  if (isPathEnv) {
199
- const fs = yield* FileSystem.FileSystem;
200
283
  const { context, dockerfile } = yield* resolveContextPaths({
201
284
  context: options.source.context,
202
285
  dockerfile: df,
203
286
  });
204
287
  envIdentity = {
205
- envContextHash: yield* hashDirectory({ cwd: context }),
206
- envDockerfile: yield* fs.readFileString(dockerfile),
288
+ envContextHash: yield* hashDockerBuildInputs({ context, dockerfile, platform: options.platform }, "effective"),
207
289
  };
208
290
  }
209
291
  const dockerfile = generateDockerfile(options.source, options.port, isPathEnv ? "<env>" : undefined);
@@ -227,10 +309,11 @@ export const makeContainerImageSource = Effect.gen(function* () {
227
309
  const preamble = envFrom !== undefined
228
310
  ? `FROM ${envFrom}`
229
311
  : source.dockerfile !== undefined && isInlineDockerfile(source.dockerfile)
230
- ? String(source.dockerfile.content).trimEnd()
312
+ ? source.dockerfile.content.trimEnd()
231
313
  : `FROM ${source.image ?? "oven/bun:1"}`;
232
314
  const lines = [
233
315
  preamble,
316
+ ...(source.install ?? []),
234
317
  `WORKDIR /app`,
235
318
  `COPY index.mjs /app/index.mjs`,
236
319
  // Copy any additional rolldown chunks (`chunk-XXX.js`,
@@ -244,6 +327,28 @@ export const makeContainerImageSource = Effect.gen(function* () {
244
327
  lines.push(`ENTRYPOINT ["bun", "/app/index.mjs"]`);
245
328
  return `${lines.join("\n")}\n`;
246
329
  };
330
+ /**
331
+ * Bundle an {@link ImageAgent} and compute the content-addressed hash of
332
+ * its image: the bundle, the Dockerfile and the platform. `resolve` and
333
+ * `hash` share this, so the plan-time hash and the pushed tag agree.
334
+ */
335
+ const bundleAgent = Effect.fn(function* (agent, platform) {
336
+ const bundled = yield* bundleMainProgram({
337
+ source: { main: agent.main },
338
+ isExternal: false,
339
+ bootstrap: agentEntry,
340
+ });
341
+ const hash = (yield* sha256Object({
342
+ bundleHash: bundled.hash,
343
+ dockerfile: AGENT_DOCKERFILE,
344
+ platform,
345
+ })).slice(0, 16);
346
+ return { bundled, hash };
347
+ });
348
+ /** One hash for an image and the agent published beside it. */
349
+ const hashWithAgent = Effect.fn(function* (environment, agent) {
350
+ return (yield* sha256Object({ environment, agent })).slice(0, 16);
351
+ });
247
352
  /**
248
353
  * Build (or mirror) and push an image to `target`, pushing with the
249
354
  * target's credentials or — when it has none — the build machine's own
@@ -272,16 +377,19 @@ export const makeContainerImageSource = Effect.gen(function* () {
272
377
  context: options.context,
273
378
  file: options.dockerfile,
274
379
  platform: options.platform,
380
+ "build-arg": options.build?.args,
381
+ secrets: options.build?.secrets,
382
+ ...imageBuildCacheOptions(options.build, options.imageUri, credentials),
275
383
  });
276
384
  yield* push(options.imageUri, credentials, options.platform);
277
385
  return options.imageUri;
278
386
  });
279
387
  /**
280
- * Resolve the image for a props bag: resolve the target repository,
388
+ * Resolve the image of a props bag's own source: resolve the target repository,
281
389
  * compute the content-addressed tag, then build/mirror + push only when
282
390
  * that exact tag is not already in the registry (crash-safe convergence).
283
391
  */
284
- const resolve = Effect.fnUntraced(function* (options, target) {
392
+ const resolveSource = Effect.fnUntraced(function* (options, target) {
285
393
  const { id, source, session } = options;
286
394
  const platform = options.platform ?? "linux/amd64";
287
395
  const kind = imageSourceKind(source);
@@ -320,11 +428,14 @@ export const makeContainerImageSource = Effect.gen(function* () {
320
428
  });
321
429
  envFrom = `alchemy-env-${id.toLowerCase()}:${codeHash}`;
322
430
  yield* session.note(`Building environment image for ${id}...`);
431
+ // The user's Dockerfile holds the expensive steps, so the layer
432
+ // cache applies to this stage rather than the bundle layered on top.
323
433
  yield* docker.image.build({
324
434
  context: env.context,
325
435
  file: env.dockerfile,
326
436
  tag: envFrom,
327
437
  platform,
438
+ ...imageBuildCacheOptions(source.build, imageUri, source.build?.cache ? yield* target.credentials : undefined),
328
439
  });
329
440
  }
330
441
  const finalDockerfile = envFrom === undefined
@@ -347,6 +458,7 @@ export const makeContainerImageSource = Effect.gen(function* () {
347
458
  imageUri,
348
459
  context: contextDir,
349
460
  platform,
461
+ build: envFrom === undefined ? { cache: source.build?.cache } : undefined,
350
462
  });
351
463
  yield* session.note(`Pushed ${imageUri}`);
352
464
  return { imageUri, repositoryUri, codeHash };
@@ -399,6 +511,7 @@ export const makeContainerImageSource = Effect.gen(function* () {
399
511
  imageUri,
400
512
  context: contextDir,
401
513
  platform,
514
+ build: source.build,
402
515
  });
403
516
  yield* session.note(`Pushed ${imageUri}`);
404
517
  return { imageUri, repositoryUri, codeHash };
@@ -418,10 +531,62 @@ export const makeContainerImageSource = Effect.gen(function* () {
418
531
  context,
419
532
  dockerfile,
420
533
  platform,
534
+ build: source.build,
421
535
  });
422
536
  yield* session.note(`Pushed ${imageUri}`);
423
537
  return { imageUri, repositoryUri, codeHash };
424
538
  });
539
+ /**
540
+ * Publish an {@link ImageAgent} as an image of its own, `agent-<hash>` in
541
+ * the target repository, unless that tag is already there.
542
+ */
543
+ const resolveAgent = Effect.fnUntraced(function* (options, target) {
544
+ const { id, platform, session } = options;
545
+ yield* session.note(`Bundling ${id} sandbox agent...`);
546
+ const { bundled, hash } = yield* bundleAgent(options.agent, platform);
547
+ const tag = `agent-${hash}`;
548
+ const imageUri = `${options.repositoryUri}:${tag}`;
549
+ if (yield* target.hasTag(tag)) {
550
+ return { imageUri, hash };
551
+ }
552
+ const contextDir = yield* getStableContextDir(dotAlchemy, dotAlchemy, `${id}-agent`);
553
+ yield* docker.materialize({
554
+ context: contextDir,
555
+ dockerfile: AGENT_DOCKERFILE,
556
+ files: bundled.files.map((file, index) => ({
557
+ path: index === 0 ? "index.mjs" : file.path,
558
+ content: file.content,
559
+ })),
560
+ });
561
+ yield* session.note(`Building sandbox agent image ${imageUri}...`);
562
+ yield* buildAndPush(target, { imageUri, context: contextDir, platform });
563
+ yield* session.note(`Pushed ${imageUri}`);
564
+ return { imageUri, hash };
565
+ });
566
+ /**
567
+ * Resolve the image for a props bag, and the {@link ImageAgent} published
568
+ * beside it when one is asked for. The image is the user's own, unchanged;
569
+ * `codeHash` then covers both images.
570
+ */
571
+ const resolve = Effect.fnUntraced(function* (options, target) {
572
+ const image = yield* resolveSource(options, target);
573
+ if (options.agent === undefined || imageSourceKind(options.source) === "main") {
574
+ return { ...image, agent: undefined };
575
+ }
576
+ const published = yield* resolveAgent({
577
+ id: options.id,
578
+ agent: options.agent,
579
+ platform: options.platform ?? "linux/amd64",
580
+ repositoryUri: image.repositoryUri,
581
+ session: options.session,
582
+ }, target);
583
+ return {
584
+ imageUri: image.imageUri,
585
+ repositoryUri: image.repositoryUri,
586
+ codeHash: yield* hashWithAgent(image.codeHash, published.hash),
587
+ agent: { imageUri: published.imageUri },
588
+ };
589
+ });
425
590
  /**
426
591
  * Content hash for ANY source kind without building or pushing an image.
427
592
  *
@@ -434,7 +599,17 @@ export const makeContainerImageSource = Effect.gen(function* () {
434
599
  */
435
600
  const hash = Effect.fn(function* (options) {
436
601
  const platform = options.platform ?? "linux/amd64";
437
- if (imageSourceKind(options.source) === "main") {
602
+ const kind = imageSourceKind(options.source);
603
+ if (options.agent !== undefined && kind !== undefined && kind !== "main") {
604
+ // The image and its agent are two images. One hash covers both, so a
605
+ // new agent plans an update just as a new image does.
606
+ const environment = yield* computeStaticSourceHash(options.source, platform);
607
+ if (environment === undefined)
608
+ return undefined;
609
+ const agent = yield* bundleAgent(options.agent, platform);
610
+ return yield* hashWithAgent(environment, agent.hash);
611
+ }
612
+ if (kind === "main") {
438
613
  // Unresolved inline environment content (an Output) can't be hashed
439
614
  // at plan time — return undefined so the diff defers to reconcile.
440
615
  const df = options.source.dockerfile;
@@ -1 +1 @@
1
- {"version":3,"file":"ImageSource.js","sourceRoot":"","sources":["../src/ImageSource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ImageSource.js","sources":["../src/ImageSource.ts"],"names":[],"mappings":"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"}