@ai-hero/sandcastle 0.2.3 → 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.
Files changed (54) hide show
  1. package/README.md +40 -14
  2. package/dist/AgentProvider.d.ts +4 -1
  3. package/dist/AgentProvider.d.ts.map +1 -1
  4. package/dist/AgentProvider.js +7 -6
  5. package/dist/AgentProvider.js.map +1 -1
  6. package/dist/SandboxFactory.d.ts +15 -4
  7. package/dist/SandboxFactory.d.ts.map +1 -1
  8. package/dist/SandboxFactory.js +156 -203
  9. package/dist/SandboxFactory.js.map +1 -1
  10. package/dist/SandboxProvider.d.ts +114 -0
  11. package/dist/SandboxProvider.d.ts.map +1 -0
  12. package/dist/SandboxProvider.js +25 -0
  13. package/dist/SandboxProvider.js.map +1 -0
  14. package/dist/cli.d.ts +7 -5
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +10 -9
  17. package/dist/cli.js.map +1 -1
  18. package/dist/createSandbox.d.ts +3 -2
  19. package/dist/createSandbox.d.ts.map +1 -1
  20. package/dist/createSandbox.js +19 -32
  21. package/dist/createSandbox.js.map +1 -1
  22. package/dist/index.d.ts +3 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/run.d.ts +4 -9
  27. package/dist/run.d.ts.map +1 -1
  28. package/dist/run.js +3 -15
  29. package/dist/run.js.map +1 -1
  30. package/dist/sandboxExec.d.ts +12 -0
  31. package/dist/sandboxExec.d.ts.map +1 -0
  32. package/dist/sandboxExec.js +26 -0
  33. package/dist/sandboxExec.js.map +1 -0
  34. package/dist/sandboxes/docker.d.ts +26 -0
  35. package/dist/sandboxes/docker.d.ts.map +1 -0
  36. package/dist/sandboxes/docker.js +133 -0
  37. package/dist/sandboxes/docker.js.map +1 -0
  38. package/dist/sandboxes/test-isolated.d.ts +17 -0
  39. package/dist/sandboxes/test-isolated.d.ts.map +1 -0
  40. package/dist/sandboxes/test-isolated.js +86 -0
  41. package/dist/sandboxes/test-isolated.js.map +1 -0
  42. package/dist/syncIn.d.ts +22 -0
  43. package/dist/syncIn.d.ts.map +1 -0
  44. package/dist/syncIn.js +57 -0
  45. package/dist/syncIn.js.map +1 -0
  46. package/dist/syncOut.d.ts +25 -0
  47. package/dist/syncOut.d.ts.map +1 -0
  48. package/dist/syncOut.js +192 -0
  49. package/dist/syncOut.js.map +1 -0
  50. package/dist/templates/blank/main.mts +2 -0
  51. package/dist/templates/parallel-planner/main.mts +4 -0
  52. package/dist/templates/sequential-reviewer/main.mts +3 -0
  53. package/dist/templates/simple-loop/main.mts +4 -0
  54. package/package.json +5 -1
@@ -1,140 +1,60 @@
1
1
  import { Context, Effect, Exit, Layer } from "effect";
2
2
  import { FileSystem } from "@effect/platform";
3
- import { NodeFileSystem } from "@effect/platform-node";
4
- import { randomUUID } from "node:crypto";
5
- import { execFile, execFileSync, spawn } from "node:child_process";
6
- import { dirname, join, resolve } from "node:path";
7
- import { createInterface } from "node:readline";
8
- import { startContainer, removeContainer, chownInContainer, } from "./DockerLifecycle.js";
3
+ import { existsSync } from "node:fs";
4
+ import { join, resolve } from "node:path";
9
5
  import { AgentError, CopyError, ExecError, TimeoutError, WorktreeError, } from "./errors.js";
10
6
  import * as WorktreeManager from "./WorktreeManager.js";
11
7
  import { copyToSandbox } from "./CopyToSandbox.js";
12
8
  import { Display } from "./Display.js";
9
+ import { syncIn } from "./syncIn.js";
10
+ import { syncOut } from "./syncOut.js";
13
11
  export class Sandbox extends Context.Tag("Sandbox")() {
14
12
  }
15
- const makeDockerSandbox = (containerName) => Effect.gen(function* () {
16
- const fs = yield* FileSystem.FileSystem;
17
- return {
18
- exec: (command, options) => Effect.async((resume) => {
19
- const args = ["exec"];
20
- if (options?.cwd) {
21
- args.push("-w", options.cwd);
22
- }
23
- args.push(containerName, "sh", "-c", command);
24
- execFile("docker", args, { maxBuffer: 10 * 1024 * 1024 }, (error, stdout, stderr) => {
25
- if (error && error.code === undefined) {
26
- resume(Effect.fail(new ExecError({
27
- command,
28
- message: `docker exec failed: ${error.message}`,
29
- })));
30
- }
31
- else {
32
- resume(Effect.succeed({
33
- stdout: stdout.toString(),
34
- stderr: stderr.toString(),
35
- exitCode: typeof error?.code === "number"
36
- ? error.code
37
- : 0,
38
- }));
39
- }
40
- });
13
+ /**
14
+ * Wrap a Promise-based sandbox handle into an Effect-based SandboxService layer.
15
+ * Works with both bind-mount handles (copyIn/copyOut unsupported) and
16
+ * isolated handles (copyIn/copyOut delegated to the handle).
17
+ */
18
+ export const makeSandboxLayerFromHandle = (handle) => Layer.succeed(Sandbox, {
19
+ exec: (command, options) => Effect.tryPromise({
20
+ try: () => handle.exec(command, options),
21
+ catch: (e) => new ExecError({
22
+ command,
23
+ message: `exec failed: ${e instanceof Error ? e.message : String(e)}`,
41
24
  }),
42
- execStreaming: (command, onStdoutLine, options) => Effect.async((resume) => {
43
- const args = ["exec"];
44
- if (options?.cwd) {
45
- args.push("-w", options.cwd);
46
- }
47
- args.push(containerName, "sh", "-c", command);
48
- const proc = spawn("docker", args, {
49
- stdio: ["ignore", "pipe", "pipe"],
50
- });
51
- const stdoutChunks = [];
52
- const stderrChunks = [];
53
- const rl = createInterface({ input: proc.stdout });
54
- rl.on("line", (line) => {
55
- stdoutChunks.push(line);
56
- onStdoutLine(line);
57
- });
58
- proc.stderr.on("data", (chunk) => {
59
- stderrChunks.push(chunk.toString());
60
- });
61
- proc.on("error", (error) => {
62
- resume(Effect.fail(new ExecError({
63
- command,
64
- message: `docker exec streaming failed: ${error.message}`,
65
- })));
66
- });
67
- proc.on("close", (code) => {
68
- resume(Effect.succeed({
69
- stdout: stdoutChunks.join("\n"),
70
- stderr: stderrChunks.join(""),
71
- exitCode: code ?? 0,
72
- }));
73
- });
25
+ }),
26
+ execStreaming: (command, onStdoutLine, options) => Effect.tryPromise({
27
+ try: () => handle.execStreaming(command, onStdoutLine, options),
28
+ catch: (e) => new ExecError({
29
+ command,
30
+ message: `exec streaming failed: ${e instanceof Error ? e.message : String(e)}`,
74
31
  }),
75
- copyIn: (hostPath, sandboxPath) => Effect.gen(function* () {
76
- const parentDir = dirname(sandboxPath);
77
- yield* Effect.async((resume) => {
78
- execFile("docker", ["exec", containerName, "mkdir", "-p", parentDir], (error) => {
79
- if (error) {
80
- resume(Effect.fail(new CopyError({
81
- message: `Failed to create dir ${parentDir}: ${error.message}`,
82
- })));
83
- }
84
- else {
85
- resume(Effect.succeed(undefined));
86
- }
87
- });
88
- });
89
- yield* Effect.async((resume) => {
90
- execFile("docker", ["cp", hostPath, `${containerName}:${sandboxPath}`], (error) => {
91
- if (error) {
92
- resume(Effect.fail(new CopyError({
93
- message: `Failed to copy ${hostPath} -> ${containerName}:${sandboxPath}: ${error.message}`,
94
- })));
95
- }
96
- else {
97
- resume(Effect.succeed(undefined));
98
- }
99
- });
100
- });
101
- }),
102
- copyOut: (sandboxPath, hostPath) => Effect.gen(function* () {
103
- yield* fs.makeDirectory(dirname(hostPath), { recursive: true }).pipe(Effect.mapError((error) => new CopyError({
104
- message: `Failed to create host dir ${dirname(hostPath)}: ${error}`,
105
- })));
106
- yield* Effect.async((resume) => {
107
- execFile("docker", ["cp", `${containerName}:${sandboxPath}`, hostPath], (error) => {
108
- if (error) {
109
- resume(Effect.fail(new CopyError({
110
- message: `Failed to copy ${containerName}:${sandboxPath} -> ${hostPath}: ${error.message}`,
111
- })));
112
- }
113
- else {
114
- resume(Effect.succeed(undefined));
115
- }
116
- });
117
- });
118
- }),
119
- };
32
+ }),
33
+ copyIn: "copyIn" in handle
34
+ ? (hostPath, sandboxPath) => Effect.tryPromise({
35
+ try: () => handle.copyIn(hostPath, sandboxPath),
36
+ catch: (e) => new CopyError({
37
+ message: `copyIn failed: ${e instanceof Error ? e.message : String(e)}`,
38
+ }),
39
+ })
40
+ : () => Effect.fail(new CopyError({
41
+ message: "copyIn is not supported for bind-mount sandbox providers",
42
+ })),
43
+ copyOut: "copyOut" in handle
44
+ ? (sandboxPath, hostPath) => Effect.tryPromise({
45
+ try: () => handle.copyOut(sandboxPath, hostPath),
46
+ catch: (e) => new CopyError({
47
+ message: `copyOut failed: ${e instanceof Error ? e.message : String(e)}`,
48
+ }),
49
+ })
50
+ : () => Effect.fail(new CopyError({
51
+ message: "copyOut is not supported for bind-mount sandbox providers",
52
+ })),
120
53
  });
121
- export const makeDockerSandboxLayer = (containerName) => Layer.effect(Sandbox, makeDockerSandbox(containerName)).pipe(Layer.provide(NodeFileSystem.layer));
122
54
  /** The mount point inside the container where the project worktree is bound. */
123
55
  export const SANDBOX_WORKSPACE_DIR = "/home/agent/workspace";
124
56
  export class SandboxFactory extends Context.Tag("SandboxFactory")() {
125
57
  }
126
- /**
127
- * Synchronously force-remove a Docker container.
128
- * Used in process exit handlers where async operations are not possible.
129
- */
130
- const forceRemoveContainerSync = (containerName) => {
131
- try {
132
- execFileSync("docker", ["rm", "-f", containerName], { stdio: "ignore" });
133
- }
134
- catch {
135
- // Best-effort — container may already be gone
136
- }
137
- };
138
58
  export class WorktreeSandboxConfig extends Context.Tag("WorktreeSandboxConfig")() {
139
59
  }
140
60
  /**
@@ -146,93 +66,141 @@ const printWorktreePreservedMessage = (worktreePath, reason) => {
146
66
  console.error(` To clean up: git worktree remove --force ${worktreePath}`);
147
67
  };
148
68
  /**
149
- * Start a Docker container with the given volume mounts and return cleanup helpers.
150
- * Shared between worktree and none modes.
151
- */
152
- const startSandboxContainer = (containerName, imageName, env, volumeMounts) => {
153
- const cleanupContainerOnly = () => {
154
- forceRemoveContainerSync(containerName);
155
- };
156
- const onSignal = () => {
157
- cleanupContainerOnly();
158
- process.exit(1);
159
- };
160
- const hostUid = process.getuid?.() ?? 1000;
161
- const hostGid = process.getgid?.() ?? 1000;
162
- return startContainer(containerName, imageName, { ...env, HOME: "/home/agent" }, {
163
- volumeMounts,
164
- workdir: SANDBOX_WORKSPACE_DIR,
165
- user: `${hostUid}:${hostGid}`,
166
- }).pipe(Effect.andThen(chownInContainer(containerName, `${hostUid}:${hostGid}`, "/home/agent")), Effect.tap(() => Effect.sync(() => {
167
- process.on("exit", cleanupContainerOnly);
168
- process.on("SIGINT", onSignal);
169
- process.on("SIGTERM", onSignal);
170
- })), Effect.map(() => ({ cleanupContainerOnly, onSignal })));
171
- };
172
- /**
173
- * Resolves the git-related volume mounts needed for the Docker container.
69
+ * Resolves the git-related mounts needed for the sandbox.
174
70
  * Handles both normal repos (where .git is a directory) and worktrees
175
71
  * (where .git is a file pointing to the parent repo's .git/worktrees/<name>).
176
72
  */
177
- export const resolveGitVolumeMounts = (gitPath) => Effect.gen(function* () {
73
+ export const resolveGitMounts = (gitPath) => Effect.gen(function* () {
178
74
  const fs = yield* FileSystem.FileSystem;
179
75
  const stat = yield* fs.stat(gitPath);
180
76
  if (stat.type === "Directory") {
181
- return [`${gitPath}:${gitPath}`];
77
+ return [{ hostPath: gitPath, sandboxPath: gitPath }];
182
78
  }
183
79
  // Worktree: .git is a file with "gitdir: <path>"
184
80
  const content = (yield* fs.readFileString(gitPath)).trim();
185
81
  const match = content.match(/^gitdir:\s*(.+)$/);
186
82
  if (!match) {
187
83
  // Unrecognized format — fall back to mounting the file as-is
188
- return [`${gitPath}:${gitPath}`];
84
+ return [{ hostPath: gitPath, sandboxPath: gitPath }];
189
85
  }
190
86
  const gitdirPath = match[1];
191
87
  // gitdirPath is like /path/to/repo/.git/worktrees/<name>
192
88
  // Mount both the .git file and the parent .git directory
193
89
  const parentGitDir = resolve(gitdirPath, "..", "..");
194
- return [`${gitPath}:${gitPath}`, `${parentGitDir}:${parentGitDir}`];
90
+ return [
91
+ { hostPath: gitPath, sandboxPath: gitPath },
92
+ { hostPath: parentGitDir, sandboxPath: parentGitDir },
93
+ ];
195
94
  });
95
+ /**
96
+ * Start a sandbox using the provider abstraction.
97
+ * Returns the handle, sandbox layer, and workspace path.
98
+ */
99
+ const startProviderSandbox = (provider, worktreeOrRepoPath, hostRepoDir, env, gitMounts, workspaceDir) => Effect.tryPromise({
100
+ try: () => {
101
+ const mounts = [
102
+ {
103
+ hostPath: worktreeOrRepoPath,
104
+ sandboxPath: workspaceDir,
105
+ },
106
+ ...gitMounts,
107
+ ];
108
+ return provider.create({
109
+ worktreePath: worktreeOrRepoPath,
110
+ hostRepoPath: hostRepoDir,
111
+ mounts,
112
+ env,
113
+ });
114
+ },
115
+ catch: (e) => new WorktreeError({
116
+ message: `Provider '${provider.name}' create failed: ${e instanceof Error ? e.message : String(e)}`,
117
+ }),
118
+ }).pipe(Effect.map((handle) => ({
119
+ handle,
120
+ sandboxLayer: makeSandboxLayerFromHandle(handle),
121
+ workspacePath: handle.workspacePath,
122
+ })));
123
+ /**
124
+ * Start an isolated sandbox: create handle, sync host repo via git bundle.
125
+ * Returns the handle, sandbox layer, and workspace path.
126
+ */
127
+ const startIsolatedProviderSandbox = (provider, hostRepoDir, env, copyPaths) => Effect.tryPromise({
128
+ try: async () => {
129
+ const handle = await provider.create({ env });
130
+ await syncIn(hostRepoDir, handle);
131
+ if (copyPaths && copyPaths.length > 0) {
132
+ for (const relativePath of copyPaths) {
133
+ const hostPath = join(hostRepoDir, relativePath);
134
+ if (!existsSync(hostPath)) {
135
+ continue;
136
+ }
137
+ const sandboxPath = join(handle.workspacePath, relativePath);
138
+ await handle.copyIn(hostPath, sandboxPath);
139
+ }
140
+ }
141
+ return handle;
142
+ },
143
+ catch: (e) => new WorktreeError({
144
+ message: `Isolated provider '${provider.name}' setup failed: ${e instanceof Error ? e.message : String(e)}`,
145
+ }),
146
+ }).pipe(Effect.map((handle) => ({
147
+ handle,
148
+ sandboxLayer: makeSandboxLayerFromHandle(handle),
149
+ workspacePath: handle.workspacePath,
150
+ })));
196
151
  export const WorktreeDockerSandboxFactory = {
197
152
  layer: Layer.effect(SandboxFactory, Effect.gen(function* () {
198
- const { imageName, env, hostRepoDir, worktree: worktreeMode, copyToSandbox: copyPaths, name, } = yield* WorktreeSandboxConfig;
153
+ const { env, hostRepoDir, worktree: worktreeMode, copyToSandbox: copyPaths, name, sandboxProvider, } = yield* WorktreeSandboxConfig;
199
154
  const isNoneMode = worktreeMode?.mode === "none";
200
155
  const branch = worktreeMode?.mode === "branch" ? worktreeMode.branch : undefined;
201
156
  const fileSystem = yield* FileSystem.FileSystem;
202
157
  const display = yield* Display;
203
158
  return {
204
159
  withSandbox: (makeEffect) => {
205
- const containerName = `sandcastle-${randomUUID()}`;
160
+ // Isolated providers: skip worktree, sync via git bundle
161
+ if (sandboxProvider.tag === "isolated") {
162
+ return Effect.acquireUseRelease(startIsolatedProviderSandbox(sandboxProvider, hostRepoDir, env, copyPaths),
163
+ // Use
164
+ ({ sandboxLayer }) => makeEffect({}).pipe(Effect.provide(sandboxLayer)),
165
+ // Release: sync commits back to host, then close
166
+ ({ handle }) => Effect.tryPromise({
167
+ try: () => syncOut(hostRepoDir, handle),
168
+ catch: (e) => new WorktreeError({
169
+ message: `syncOut failed: ${e instanceof Error ? e.message : String(e)}`,
170
+ }),
171
+ }).pipe(Effect.catchAll((e) => Effect.sync(() => {
172
+ console.error(`[sandcastle] Warning: syncOut failed: ${e.message}`);
173
+ })), Effect.andThen(Effect.tryPromise({
174
+ try: () => handle.close(),
175
+ catch: () => undefined,
176
+ })), Effect.orDie)).pipe(Effect.map((value) => ({
177
+ value,
178
+ preservedWorktreePath: undefined,
179
+ })));
180
+ }
206
181
  if (isNoneMode) {
207
182
  // None mode: bind-mount host directory directly, no worktree
208
183
  const gitPath = join(hostRepoDir, ".git");
209
- return resolveGitVolumeMounts(gitPath).pipe(Effect.provideService(FileSystem.FileSystem, fileSystem), Effect.mapError((e) => new WorktreeError({
184
+ return resolveGitMounts(gitPath).pipe(Effect.provideService(FileSystem.FileSystem, fileSystem), Effect.mapError((e) => new WorktreeError({
210
185
  message: `Failed to resolve git mounts: ${e}`,
211
- })), Effect.flatMap((gitMounts) => {
212
- const volumeMounts = [
213
- `${hostRepoDir}:${SANDBOX_WORKSPACE_DIR}`,
214
- ...gitMounts,
215
- ];
216
- return Effect.acquireUseRelease(startSandboxContainer(containerName, imageName, env, volumeMounts),
217
- // Use
218
- () => makeEffect({}).pipe(Effect.provide(makeDockerSandboxLayer(containerName))),
219
- // Release: remove container only (no worktree to clean up)
220
- ({ cleanupContainerOnly, onSignal }) => Effect.sync(() => {
221
- process.removeListener("exit", cleanupContainerOnly);
222
- process.removeListener("SIGINT", onSignal);
223
- process.removeListener("SIGTERM", onSignal);
224
- }).pipe(Effect.andThen(removeContainer(containerName)), Effect.orDie)).pipe(Effect.map((value) => ({
225
- value,
226
- preservedWorktreePath: undefined,
227
- })));
228
- }));
186
+ })), Effect.flatMap((gitMounts) => Effect.acquireUseRelease(startProviderSandbox(sandboxProvider, hostRepoDir, hostRepoDir, env, gitMounts, SANDBOX_WORKSPACE_DIR),
187
+ // Use
188
+ ({ sandboxLayer }) => makeEffect({}).pipe(Effect.provide(sandboxLayer)),
189
+ // Release
190
+ ({ handle }) => Effect.tryPromise({
191
+ try: () => handle.close(),
192
+ catch: () => undefined,
193
+ }).pipe(Effect.orDie)).pipe(Effect.map((value) => ({
194
+ value,
195
+ preservedWorktreePath: undefined,
196
+ })))));
229
197
  }
230
198
  // Worktree mode (temp-branch or explicit branch)
231
199
  // Populated by the release phase when a worktree is preserved on failure,
232
200
  // so we can attach the path to recognized error types before they propagate.
233
201
  let preservedWorktreePath;
234
202
  return Effect.acquireUseRelease(
235
- // Acquire: prune stale worktrees (best-effort), create worktree, then start container
203
+ // Acquire: prune stale worktrees (best-effort), create worktree, then start sandbox
236
204
  WorktreeManager.pruneStale(hostRepoDir)
237
205
  .pipe(Effect.catchAll((e) => Effect.sync(() => {
238
206
  console.error("[sandcastle] Warning: failed to prune stale worktrees:", e.message);
@@ -246,39 +214,24 @@ export const WorktreeDockerSandboxFactory = {
246
214
  : Effect.succeed(undefined)).pipe(Effect.map(() => worktreeInfo))))
247
215
  .pipe(Effect.flatMap((worktreeInfo) => {
248
216
  const gitPath = join(hostRepoDir, ".git");
249
- return resolveGitVolumeMounts(gitPath).pipe(Effect.provideService(FileSystem.FileSystem, fileSystem), Effect.mapError((e) => new WorktreeError({
217
+ return resolveGitMounts(gitPath).pipe(Effect.provideService(FileSystem.FileSystem, fileSystem), Effect.mapError((e) => new WorktreeError({
250
218
  message: `Failed to resolve git mounts: ${e}`,
251
- })), Effect.flatMap((gitMounts) => {
252
- const volumeMounts = [
253
- `${worktreeInfo.path}:${SANDBOX_WORKSPACE_DIR}`,
254
- ...gitMounts,
255
- ];
256
- return startSandboxContainer(containerName, imageName, env, volumeMounts).pipe(Effect.tap(({ cleanupContainerOnly, onSignal }) => Effect.sync(() => {
257
- // Override the default signal handler to also preserve the worktree
258
- process.removeListener("SIGINT", onSignal);
259
- process.removeListener("SIGTERM", onSignal);
260
- const onSignalWithWorktree = () => {
261
- cleanupContainerOnly();
262
- printWorktreePreservedMessage(worktreeInfo.path, `Worktree preserved at ${worktreeInfo.path}`);
263
- process.exit(1);
264
- };
265
- process.on("SIGINT", onSignalWithWorktree);
266
- process.on("SIGTERM", onSignalWithWorktree);
267
- })), Effect.map(({ cleanupContainerOnly, onSignal }) => ({
268
- worktreeInfo,
269
- cleanupContainerOnly,
270
- onSignal,
271
- })));
272
- }));
219
+ })), Effect.flatMap((gitMounts) =>
220
+ // sandboxProvider is guaranteed bind-mount here
221
+ // (isolated providers return early above)
222
+ startProviderSandbox(sandboxProvider, worktreeInfo.path, hostRepoDir, env, gitMounts, SANDBOX_WORKSPACE_DIR).pipe(Effect.map(({ handle, sandboxLayer }) => ({
223
+ worktreeInfo,
224
+ handle,
225
+ sandboxLayer,
226
+ })))));
273
227
  })),
274
228
  // Use
275
- ({ worktreeInfo }) => makeEffect({ hostWorktreePath: worktreeInfo.path }).pipe(Effect.provide(makeDockerSandboxLayer(containerName))),
276
- // Release: always remove container; remove/preserve worktree based on dirty state.
277
- ({ worktreeInfo, cleanupContainerOnly, onSignal }, exit) => Effect.sync(() => {
278
- process.removeListener("exit", cleanupContainerOnly);
279
- process.removeListener("SIGINT", onSignal);
280
- process.removeListener("SIGTERM", onSignal);
281
- }).pipe(Effect.andThen(removeContainer(containerName)), Effect.andThen(WorktreeManager.hasUncommittedChanges(worktreeInfo.path).pipe(Effect.catchAll(() => Effect.succeed(false)), Effect.flatMap((isDirty) => {
229
+ ({ worktreeInfo, sandboxLayer }) => makeEffect({ hostWorktreePath: worktreeInfo.path }).pipe(Effect.provide(sandboxLayer)),
230
+ // Release: close provider handle, then remove/preserve worktree based on dirty state.
231
+ ({ worktreeInfo, handle }, exit) => Effect.tryPromise({
232
+ try: () => handle.close(),
233
+ catch: () => undefined,
234
+ }).pipe(Effect.asVoid, Effect.andThen(WorktreeManager.hasUncommittedChanges(worktreeInfo.path).pipe(Effect.catchAll(() => Effect.succeed(false)), Effect.flatMap((isDirty) => {
282
235
  if (isDirty) {
283
236
  preservedWorktreePath = worktreeInfo.path;
284
237
  printWorktreePreservedMessage(worktreeInfo.path, Exit.isSuccess(exit)
@@ -1 +1 @@
1
- {"version":3,"file":"SandboxFactory.js","sourceRoot":"","sources":["../src/SandboxFactory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SandboxFactory.js","sourceRoot":"","sources":["../src/SandboxFactory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Sandbox provider types — the pluggable interface for sandbox runtimes.
3
+ *
4
+ * Provider authors implement a small Promise-based interface. Sandcastle
5
+ * handles worktree creation, git mount resolution, and commit extraction.
6
+ */
7
+ /** Result of executing a command inside a sandbox. */
8
+ export interface ExecResult {
9
+ readonly stdout: string;
10
+ readonly stderr: string;
11
+ readonly exitCode: number;
12
+ }
13
+ /** Handle to a running bind-mount sandbox. */
14
+ export interface BindMountSandboxHandle {
15
+ /** Absolute path to the workspace inside the sandbox. */
16
+ readonly workspacePath: string;
17
+ /** Execute a command inside the sandbox. */
18
+ exec(command: string, options?: {
19
+ cwd?: string;
20
+ }): Promise<ExecResult>;
21
+ /** Execute a command, streaming stdout line-by-line. */
22
+ execStreaming(command: string, onLine: (line: string) => void, options?: {
23
+ cwd?: string;
24
+ }): Promise<ExecResult>;
25
+ /** Tear down the sandbox. */
26
+ close(): Promise<void>;
27
+ }
28
+ /** Options passed to a bind-mount provider's `create` function. */
29
+ export interface BindMountCreateOptions {
30
+ /** Host-side path to the worktree directory. */
31
+ readonly worktreePath: string;
32
+ /** Host-side path to the original repo root. */
33
+ readonly hostRepoPath: string;
34
+ /** Volume mounts to apply (host:sandbox pairs). */
35
+ readonly mounts: Array<{
36
+ hostPath: string;
37
+ sandboxPath: string;
38
+ readonly?: boolean;
39
+ }>;
40
+ /** Environment variables to inject into the sandbox. */
41
+ readonly env: Record<string, string>;
42
+ }
43
+ /** Configuration for createBindMountSandboxProvider. */
44
+ export interface BindMountSandboxProviderConfig {
45
+ /** Human-readable name for this provider (e.g. "docker", "podman"). */
46
+ readonly name: string;
47
+ /** Create a sandbox handle from the given options. */
48
+ readonly create: (options: BindMountCreateOptions) => Promise<BindMountSandboxHandle>;
49
+ }
50
+ /** Handle to a running isolated sandbox (extends bind-mount with file transfer). */
51
+ export interface IsolatedSandboxHandle {
52
+ /** Absolute path to the workspace inside the sandbox. */
53
+ readonly workspacePath: string;
54
+ /** Execute a command inside the sandbox. */
55
+ exec(command: string, options?: {
56
+ cwd?: string;
57
+ }): Promise<ExecResult>;
58
+ /** Execute a command, streaming stdout line-by-line. */
59
+ execStreaming(command: string, onLine: (line: string) => void, options?: {
60
+ cwd?: string;
61
+ }): Promise<ExecResult>;
62
+ /** Copy a file from the host into the sandbox. */
63
+ copyIn(hostPath: string, sandboxPath: string): Promise<void>;
64
+ /** Copy a file from the sandbox to the host. */
65
+ copyOut(sandboxPath: string, hostPath: string): Promise<void>;
66
+ /** Tear down the sandbox. */
67
+ close(): Promise<void>;
68
+ }
69
+ /** Options passed to an isolated provider's `create` function. */
70
+ export interface IsolatedCreateOptions {
71
+ /** Environment variables to inject into the sandbox. */
72
+ readonly env: Record<string, string>;
73
+ }
74
+ /** Configuration for createIsolatedSandboxProvider. */
75
+ export interface IsolatedSandboxProviderConfig {
76
+ /** Human-readable name for this provider (e.g. "daytona", "e2b"). */
77
+ readonly name: string;
78
+ /** Create an isolated sandbox handle from the given options. */
79
+ readonly create: (options: IsolatedCreateOptions) => Promise<IsolatedSandboxHandle>;
80
+ }
81
+ /** A bind-mount sandbox provider. */
82
+ export interface BindMountSandboxProvider {
83
+ /** @internal Discriminator for internal dispatch. */
84
+ readonly tag: "bind-mount";
85
+ /** Human-readable provider name. */
86
+ readonly name: string;
87
+ /** @internal Create a sandbox handle. */
88
+ readonly create: (options: BindMountCreateOptions) => Promise<BindMountSandboxHandle>;
89
+ }
90
+ /** An isolated sandbox provider. */
91
+ export interface IsolatedSandboxProvider {
92
+ /** @internal Discriminator for internal dispatch. */
93
+ readonly tag: "isolated";
94
+ /** Human-readable provider name. */
95
+ readonly name: string;
96
+ /** @internal Create an isolated sandbox handle. */
97
+ readonly create: (options: IsolatedCreateOptions) => Promise<IsolatedSandboxHandle>;
98
+ }
99
+ /**
100
+ * A sandbox provider — the pluggable unit that `run()` and `createSandbox()` accept.
101
+ * Tagged for internal dispatch: "bind-mount" or "isolated".
102
+ */
103
+ export type SandboxProvider = BindMountSandboxProvider | IsolatedSandboxProvider;
104
+ /**
105
+ * Create a bind-mount sandbox provider from a config object.
106
+ * The returned provider can be passed to `run()` or `createSandbox()`.
107
+ */
108
+ export declare const createBindMountSandboxProvider: (config: BindMountSandboxProviderConfig) => BindMountSandboxProvider;
109
+ /**
110
+ * Create an isolated sandbox provider from a config object.
111
+ * The returned provider can be passed to `run()` or `createSandbox()`.
112
+ */
113
+ export declare const createIsolatedSandboxProvider: (config: IsolatedSandboxProviderConfig) => IsolatedSandboxProvider;
114
+ //# sourceMappingURL=SandboxProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SandboxProvider.d.ts","sourceRoot":"","sources":["../src/SandboxProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Sandbox provider types — the pluggable interface for sandbox runtimes.
3
+ *
4
+ * Provider authors implement a small Promise-based interface. Sandcastle
5
+ * handles worktree creation, git mount resolution, and commit extraction.
6
+ */
7
+ /**
8
+ * Create a bind-mount sandbox provider from a config object.
9
+ * The returned provider can be passed to `run()` or `createSandbox()`.
10
+ */
11
+ export const createBindMountSandboxProvider = (config) => ({
12
+ tag: "bind-mount",
13
+ name: config.name,
14
+ create: config.create,
15
+ });
16
+ /**
17
+ * Create an isolated sandbox provider from a config object.
18
+ * The returned provider can be passed to `run()` or `createSandbox()`.
19
+ */
20
+ export const createIsolatedSandboxProvider = (config) => ({
21
+ tag: "isolated",
22
+ name: config.name,
23
+ create: config.create,
24
+ });
25
+ //# sourceMappingURL=SandboxProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SandboxProvider.js","sourceRoot":"","sources":["../src/SandboxProvider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuHH;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,MAAsC,EACZ,EAAE,CAAC,CAAC;IAC9B,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,MAAqC,EACZ,EAAE,CAAC,CAAC;IAC7B,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC,CAAC"}