@ai-hero/sandcastle 0.5.12 → 0.6.1

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 (111) hide show
  1. package/README.md +106 -79
  2. package/dist/AgentProvider.d.ts +56 -3
  3. package/dist/AgentProvider.d.ts.map +1 -1
  4. package/dist/AgentProvider.js +324 -9
  5. package/dist/AgentProvider.js.map +1 -1
  6. package/dist/DockerLifecycle.d.ts +6 -0
  7. package/dist/DockerLifecycle.d.ts.map +1 -1
  8. package/dist/DockerLifecycle.js +12 -0
  9. package/dist/DockerLifecycle.js.map +1 -1
  10. package/dist/InitService.d.ts.map +1 -1
  11. package/dist/InitService.js +115 -14
  12. package/dist/InitService.js.map +1 -1
  13. package/dist/Orchestrator.d.ts +4 -2
  14. package/dist/Orchestrator.d.ts.map +1 -1
  15. package/dist/Orchestrator.js +15 -14
  16. package/dist/Orchestrator.js.map +1 -1
  17. package/dist/SandboxFactory.d.ts.map +1 -1
  18. package/dist/SandboxFactory.js +51 -64
  19. package/dist/SandboxFactory.js.map +1 -1
  20. package/dist/SandboxLifecycle.d.ts +3 -0
  21. package/dist/SandboxLifecycle.d.ts.map +1 -1
  22. package/dist/SandboxLifecycle.js +44 -18
  23. package/dist/SandboxLifecycle.js.map +1 -1
  24. package/dist/SessionStore.d.ts +71 -10
  25. package/dist/SessionStore.d.ts.map +1 -1
  26. package/dist/SessionStore.js +222 -17
  27. package/dist/SessionStore.js.map +1 -1
  28. package/dist/WorktreeManager.d.ts +27 -0
  29. package/dist/WorktreeManager.d.ts.map +1 -1
  30. package/dist/WorktreeManager.js +50 -8
  31. package/dist/WorktreeManager.js.map +1 -1
  32. package/dist/boundedTail.d.ts +48 -0
  33. package/dist/boundedTail.d.ts.map +1 -0
  34. package/dist/boundedTail.js +64 -0
  35. package/dist/boundedTail.js.map +1 -0
  36. package/dist/cli.d.ts +1 -0
  37. package/dist/cli.d.ts.map +1 -1
  38. package/dist/cli.js +19 -3
  39. package/dist/cli.js.map +1 -1
  40. package/dist/createSandbox.d.ts.map +1 -1
  41. package/dist/createSandbox.js +116 -122
  42. package/dist/createSandbox.js.map +1 -1
  43. package/dist/createWorktree.d.ts.map +1 -1
  44. package/dist/createWorktree.js +10 -9
  45. package/dist/createWorktree.js.map +1 -1
  46. package/dist/errors.d.ts +3 -0
  47. package/dist/errors.d.ts.map +1 -1
  48. package/dist/errors.js.map +1 -1
  49. package/dist/index.d.ts +3 -4
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +2 -3
  52. package/dist/index.js.map +1 -1
  53. package/dist/interactive.d.ts.map +1 -1
  54. package/dist/interactive.js +55 -46
  55. package/dist/interactive.js.map +1 -1
  56. package/dist/resumePrecheck.d.ts +26 -0
  57. package/dist/resumePrecheck.d.ts.map +1 -0
  58. package/dist/resumePrecheck.js +40 -0
  59. package/dist/resumePrecheck.js.map +1 -0
  60. package/dist/run.d.ts +15 -5
  61. package/dist/run.d.ts.map +1 -1
  62. package/dist/run.js +23 -9
  63. package/dist/run.js.map +1 -1
  64. package/dist/sandboxes/daytona.d.ts +9 -0
  65. package/dist/sandboxes/daytona.d.ts.map +1 -1
  66. package/dist/sandboxes/daytona.js +9 -7
  67. package/dist/sandboxes/daytona.js.map +1 -1
  68. package/dist/sandboxes/docker.d.ts +45 -0
  69. package/dist/sandboxes/docker.d.ts.map +1 -1
  70. package/dist/sandboxes/docker.js +40 -28
  71. package/dist/sandboxes/docker.js.map +1 -1
  72. package/dist/sandboxes/no-sandbox.d.ts +9 -0
  73. package/dist/sandboxes/no-sandbox.d.ts.map +1 -1
  74. package/dist/sandboxes/no-sandbox.js +32 -17
  75. package/dist/sandboxes/no-sandbox.js.map +1 -1
  76. package/dist/sandboxes/podman.d.ts +47 -0
  77. package/dist/sandboxes/podman.d.ts.map +1 -1
  78. package/dist/sandboxes/podman.js +49 -28
  79. package/dist/sandboxes/podman.js.map +1 -1
  80. package/dist/sandboxes/test-bind-mount.d.ts.map +1 -1
  81. package/dist/sandboxes/test-bind-mount.js +7 -6
  82. package/dist/sandboxes/test-bind-mount.js.map +1 -1
  83. package/dist/sandboxes/test-isolated.d.ts.map +1 -1
  84. package/dist/sandboxes/test-isolated.js +7 -6
  85. package/dist/sandboxes/test-isolated.js.map +1 -1
  86. package/dist/sandboxes/vercel.d.ts +9 -0
  87. package/dist/sandboxes/vercel.d.ts.map +1 -1
  88. package/dist/sandboxes/vercel.js +9 -7
  89. package/dist/sandboxes/vercel.js.map +1 -1
  90. package/dist/shutdownRegistry.d.ts +30 -0
  91. package/dist/shutdownRegistry.d.ts.map +1 -0
  92. package/dist/shutdownRegistry.js +73 -0
  93. package/dist/shutdownRegistry.js.map +1 -0
  94. package/dist/syncOut.js +1 -1
  95. package/dist/syncOut.js.map +1 -1
  96. package/dist/templates/parallel-planner/main.mts +19 -17
  97. package/dist/templates/parallel-planner/plan-prompt.md +4 -2
  98. package/dist/templates/parallel-planner-with-review/main.mts +19 -17
  99. package/dist/templates/parallel-planner-with-review/plan-prompt.md +4 -2
  100. package/dist/templates/parallel-planner-with-review/review-prompt.md +2 -2
  101. package/dist/templates/sequential-reviewer/main.mts +13 -5
  102. package/dist/templates/sequential-reviewer/review-prompt.md +2 -2
  103. package/dist/templates/simple-loop/main.mts +1 -1
  104. package/dist/testSandbox.d.ts.map +1 -1
  105. package/dist/testSandbox.js +32 -19
  106. package/dist/testSandbox.js.map +1 -1
  107. package/package.json +3 -2
  108. package/dist/SessionPaths.d.ts +0 -26
  109. package/dist/SessionPaths.d.ts.map +0 -1
  110. package/dist/SessionPaths.js +0 -22
  111. package/dist/SessionPaths.js.map +0 -1
@@ -1,15 +1,26 @@
1
1
  /**
2
2
  * SessionStore — keyed collection of agent session JSONLs.
3
3
  *
4
- * Provides read/write access to Claude Code session files, with two
5
- * implementations: host-backed (filesystem) and sandbox-backed (via
6
- * bind-mount handle file-transfer primitives). The `transferSession`
7
- * function copies a session between stores, rewriting `cwd` fields in
8
- * the JSONL entries from source cwd to target cwd.
4
+ * Provides read/write access to agent session files, with host-backed
5
+ * (filesystem) and sandbox-backed (via bind-mount handle file-transfer
6
+ * primitives) implementations. Per ADR 0012, the per-provider `transfer`
7
+ * op (e.g. `transferClaudeSession`, `transferCodexSession`) copies a session
8
+ * between stores and applies any format-specific content rewriting — for
9
+ * JSONL agents, rewriting `cwd` fields from source cwd to target cwd via the
10
+ * shared `rewriteSessionCwd` primitive.
9
11
  */
10
- import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
12
+ import { access, mkdir, readdir, readFile, rm, writeFile, } from "node:fs/promises";
11
13
  import { tmpdir } from "node:os";
12
- import { join, posix } from "node:path";
14
+ import { dirname, join, posix, relative } from "node:path";
15
+ const pathExists = async (path) => {
16
+ try {
17
+ await access(path);
18
+ return true;
19
+ }
20
+ catch {
21
+ return false;
22
+ }
23
+ };
13
24
  // ---------------------------------------------------------------------------
14
25
  // Path encoding
15
26
  // ---------------------------------------------------------------------------
@@ -39,6 +50,7 @@ export const hostSessionStore = (cwd, projectsDir) => {
39
50
  return {
40
51
  cwd,
41
52
  sessionFilePath: (id) => join(projectDir, `${id}.jsonl`),
53
+ exists: async (id) => pathExists(join(projectDir, `${id}.jsonl`)),
42
54
  readSession: async (id) => {
43
55
  return await readFile(join(projectDir, `${id}.jsonl`), "utf-8");
44
56
  },
@@ -48,6 +60,35 @@ export const hostSessionStore = (cwd, projectsDir) => {
48
60
  },
49
61
  };
50
62
  };
63
+ /**
64
+ * Locate a Claude Code session JSONL on the host by its unique id, scanning each
65
+ * `~/.claude/projects/<encoded-cwd>/` directory rather than reconstructing the
66
+ * cwd encoding. The session id is globally unique, so the first match wins. Used
67
+ * by the no-sandbox resume precheck, where the agent wrote the file in place
68
+ * under a cwd-derived directory Sandcastle cannot reliably reconstruct.
69
+ *
70
+ * @param id - The session id (file basename without `.jsonl`).
71
+ * @param projectsDir - Override for the projects directory (default: `~/.claude/projects`).
72
+ */
73
+ export const findClaudeSessionOnHost = async (id, projectsDir) => {
74
+ const root = projectsDir ?? join(process.env.HOME ?? "~", ".claude", "projects");
75
+ let entries;
76
+ try {
77
+ entries = await readdir(root, { withFileTypes: true });
78
+ }
79
+ catch {
80
+ return { path: undefined, searchedRoot: root };
81
+ }
82
+ for (const entry of entries) {
83
+ if (!entry.isDirectory())
84
+ continue;
85
+ const candidate = join(root, entry.name, `${id}.jsonl`);
86
+ if (await pathExists(candidate)) {
87
+ return { path: candidate, searchedRoot: root };
88
+ }
89
+ }
90
+ return { path: undefined, searchedRoot: root };
91
+ };
51
92
  // ---------------------------------------------------------------------------
52
93
  // Sandbox-backed SessionStore
53
94
  // ---------------------------------------------------------------------------
@@ -68,6 +109,10 @@ export const sandboxSessionStore = (cwd, handle, projectsDir) => {
68
109
  return {
69
110
  cwd,
70
111
  sessionFilePath: (id) => posix.join(projectDir, `${id}.jsonl`),
112
+ exists: async (id) => {
113
+ const result = await handle.exec(`test -f ${JSON.stringify(posix.join(projectDir, `${id}.jsonl`))}`);
114
+ return result.exitCode === 0;
115
+ },
71
116
  readSession: async (id) => {
72
117
  const sandboxPath = posix.join(projectDir, `${id}.jsonl`);
73
118
  const tmpPath = join(tmpdir(), `sandcastle-session-${id}-${Date.now()}.jsonl`);
@@ -95,31 +140,191 @@ export const sandboxSessionStore = (cwd, handle, projectsDir) => {
95
140
  },
96
141
  };
97
142
  };
98
- // ---------------------------------------------------------------------------
99
- // transferSession
100
- // ---------------------------------------------------------------------------
101
143
  /**
102
- * Transfer a session from one store to another, rewriting `cwd` fields in
103
- * the JSONL entries from the source store's cwd to the target store's cwd.
144
+ * claudeCode's `sessionStorage.transfer` (ADR 0012). Copies a Claude Code
145
+ * session between stores, rewriting `cwd` fields in the JSONL entries from the
146
+ * source store's cwd to the target store's cwd. The rewrite is specific to
147
+ * Claude Code's JSONL format, so it lives with the provider rather than in
148
+ * central code.
104
149
  */
105
- export const transferSession = async (from, to, id) => {
150
+ export const transferClaudeSession = async (from, to, id) => {
106
151
  const content = await from.readSession(id);
107
152
  if (content === "") {
108
153
  await to.writeSession(id, "");
109
154
  return;
110
155
  }
111
- const rewritten = content
156
+ const rewritten = rewriteSessionCwd(content, from.cwd, to.cwd);
157
+ await to.writeSession(id, rewritten);
158
+ };
159
+ const isCodexSessionFilename = (filename, id) => filename.startsWith("rollout-") && filename.endsWith(`-${id}.jsonl`);
160
+ const codexIdFromFilename = (filename) => {
161
+ const match = /([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})\.jsonl$/.exec(filename);
162
+ return match?.[1];
163
+ };
164
+ const findCodexSessionPath = async (rootDir, id) => {
165
+ const visit = async (dir) => {
166
+ let entries;
167
+ try {
168
+ entries = await readdir(dir, { withFileTypes: true });
169
+ }
170
+ catch {
171
+ return undefined;
172
+ }
173
+ for (const entry of entries) {
174
+ const child = join(dir, entry.name);
175
+ if (entry.isFile() && isCodexSessionFilename(entry.name, id)) {
176
+ return child;
177
+ }
178
+ if (entry.isDirectory()) {
179
+ const found = await visit(child);
180
+ if (found)
181
+ return found;
182
+ }
183
+ }
184
+ return undefined;
185
+ };
186
+ return visit(rootDir);
187
+ };
188
+ /**
189
+ * Locate a Codex session rollout file on the host by its id, reusing the
190
+ * date-nested scan. Used by the no-sandbox resume precheck.
191
+ *
192
+ * @param id - The session id.
193
+ * @param sessionsDir - Override for the sessions directory (default: `~/.codex/sessions`).
194
+ */
195
+ export const findCodexSessionOnHost = async (id, sessionsDir) => {
196
+ const root = sessionsDir ?? join(process.env.HOME ?? "~", ".codex", "sessions");
197
+ const path = await findCodexSessionPath(root, id);
198
+ return { path, searchedRoot: root };
199
+ };
200
+ export const codexHostSessionStore = (cwd, sessionsDir) => {
201
+ const rootDir = sessionsDir ?? join(process.env.HOME ?? "~", ".codex", "sessions");
202
+ const locatedPaths = new Map();
203
+ const locateSession = async (id) => {
204
+ const path = await findCodexSessionPath(rootDir, id);
205
+ if (!path) {
206
+ throw new Error(`session ${id} not found in ${rootDir}`);
207
+ }
208
+ locatedPaths.set(id, path);
209
+ return { path, relativePath: relative(rootDir, path) };
210
+ };
211
+ return {
212
+ cwd,
213
+ locateSession,
214
+ sessionFilePath: (id) => locatedPaths.get(id),
215
+ exists: async (id) => {
216
+ return (await findCodexSessionPath(rootDir, id)) !== undefined;
217
+ },
218
+ readSession: async (id) => {
219
+ const located = await locateSession(id);
220
+ return readFile(located.path, "utf-8");
221
+ },
222
+ writeSession: async (id, content) => {
223
+ const existing = await findCodexSessionPath(rootDir, id);
224
+ const target = existing ??
225
+ join(rootDir, "unknown-date", `rollout-${Date.now()}-${id}.jsonl`);
226
+ await mkdir(dirname(target), { recursive: true });
227
+ await writeFile(target, content);
228
+ locatedPaths.set(id, target);
229
+ },
230
+ writeSessionAt: async (relativePath, content) => {
231
+ const target = join(rootDir, relativePath);
232
+ await mkdir(dirname(target), { recursive: true });
233
+ await writeFile(target, content);
234
+ const id = codexIdFromFilename(posix.basename(relativePath));
235
+ if (id)
236
+ locatedPaths.set(id, target);
237
+ },
238
+ };
239
+ };
240
+ export const codexSandboxSessionStore = (cwd, handle, sessionsDir = posix.join("/home/agent", ".codex", "sessions")) => {
241
+ const locatedPaths = new Map();
242
+ const writeSessionAt = async (relativePath, content) => {
243
+ const sandboxPath = posix.join(sessionsDir, relativePath);
244
+ const tmpPath = join(tmpdir(), `sandcastle-codex-session-${Date.now()}.jsonl`);
245
+ await writeFile(tmpPath, content);
246
+ try {
247
+ await handle.exec(`mkdir -p ${JSON.stringify(posix.dirname(sandboxPath))}`);
248
+ await handle.copyFileIn(tmpPath, sandboxPath);
249
+ const id = codexIdFromFilename(posix.basename(relativePath));
250
+ if (id)
251
+ locatedPaths.set(id, sandboxPath);
252
+ }
253
+ finally {
254
+ await rm(tmpPath, { force: true }).catch(() => { });
255
+ }
256
+ };
257
+ const locateSession = async (id) => {
258
+ const result = await handle.exec(`find ${JSON.stringify(sessionsDir)} -type f -name ${JSON.stringify(`rollout-*-${id}.jsonl`)} -print -quit`);
259
+ const path = result.stdout.trim().split("\n")[0];
260
+ if (result.exitCode !== 0 || !path) {
261
+ throw new Error(`session ${id} not found in ${sessionsDir}`);
262
+ }
263
+ locatedPaths.set(id, path);
264
+ return { path, relativePath: posix.relative(sessionsDir, path) };
265
+ };
266
+ return {
267
+ cwd,
268
+ locateSession,
269
+ sessionFilePath: (id) => locatedPaths.get(id),
270
+ exists: async (id) => {
271
+ const result = await handle.exec(`find ${JSON.stringify(sessionsDir)} -type f -name ${JSON.stringify(`rollout-*-${id}.jsonl`)} -print -quit`);
272
+ return result.exitCode === 0 && result.stdout.trim().length > 0;
273
+ },
274
+ readSession: async (id) => {
275
+ const located = await locateSession(id);
276
+ const tmpPath = join(tmpdir(), `sandcastle-codex-session-${id}-${Date.now()}.jsonl`);
277
+ await handle.copyFileOut(located.path, tmpPath);
278
+ try {
279
+ return await readFile(tmpPath, "utf-8");
280
+ }
281
+ finally {
282
+ await rm(tmpPath, { force: true }).catch(() => { });
283
+ }
284
+ },
285
+ writeSession: async (id, content) => {
286
+ const existing = await locateSession(id).catch(() => undefined);
287
+ const relativePath = existing?.relativePath ??
288
+ posix.join("unknown-date", `rollout-${Date.now()}-${id}.jsonl`);
289
+ await writeSessionAt(relativePath, content);
290
+ },
291
+ writeSessionAt,
292
+ };
293
+ };
294
+ const rewriteSessionCwd = (content, fromCwd, toCwd) => {
295
+ if (content === "")
296
+ return "";
297
+ return content
112
298
  .split("\n")
113
299
  .map((line) => {
114
300
  if (line === "")
115
301
  return line;
116
302
  const entry = JSON.parse(line);
117
- if (typeof entry.cwd === "string" && entry.cwd === from.cwd) {
118
- entry.cwd = to.cwd;
303
+ if (typeof entry.cwd === "string" && entry.cwd === fromCwd) {
304
+ entry.cwd = toCwd;
305
+ }
306
+ if (entry.type === "session_meta" &&
307
+ typeof entry.payload === "object" &&
308
+ entry.payload !== null &&
309
+ typeof entry.payload.cwd === "string" &&
310
+ entry.payload.cwd === fromCwd) {
311
+ entry.payload.cwd = toCwd;
119
312
  }
120
313
  return JSON.stringify(entry);
121
314
  })
122
315
  .join("\n");
123
- await to.writeSession(id, rewritten);
316
+ };
317
+ /**
318
+ * codex's `sessionStorage.transfer` (ADR 0012). Copies a Codex session between
319
+ * locatable stores, rewriting the `cwd` in the `session_meta` line and
320
+ * preserving the source's relative date-path on the target so Codex's id-scan
321
+ * rediscovers the file.
322
+ */
323
+ export const transferCodexSession = async (from, to, id) => {
324
+ const located = await from.locateSession(id);
325
+ const content = await from.readSession(id);
326
+ const rewritten = rewriteSessionCwd(content, from.cwd, to.cwd);
327
+ await to.writeSessionAt(located.relativePath, rewritten);
328
+ await to.locateSession(id).catch(() => undefined);
124
329
  };
125
330
  //# sourceMappingURL=SessionStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionStore.js","sourceRoot":"","sources":["../src/SessionStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionStore.js","sourceRoot":"","sources":["../src/SessionStore.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,33 @@ export interface WorktreeInfo {
15
15
  path: string;
16
16
  branch: string;
17
17
  }
18
+ /** A single entry parsed from `git worktree list --porcelain`. */
19
+ export interface WorktreeEntry {
20
+ path: string;
21
+ /** `null` for a detached HEAD (e.g. mid-rebase). */
22
+ branch: string | null;
23
+ }
24
+ /**
25
+ * Finds an existing worktree that collides with `branch` or `worktreePath`.
26
+ *
27
+ * Matches by branch first, then falls back to a path match — covering the
28
+ * mid-rebase detached-HEAD case where git reports a `null` branch. The path
29
+ * fallback normalizes separators so it works on Windows.
30
+ */
31
+ export declare const findCollidingWorktree: (existing: readonly WorktreeEntry[], branch: string, worktreePath: string) => WorktreeEntry | undefined;
32
+ /**
33
+ * Whether `worktreePath` lives under `worktreesDir` (i.e. is a worktree managed
34
+ * by sandcastle rather than the main working tree or an external worktree).
35
+ * Separators are normalized so the check holds on Windows.
36
+ */
37
+ export declare const isManagedWorktreePath: (worktreePath: string, worktreesDir: string) => boolean;
38
+ /**
39
+ * Whether a directory entry under `.sandcastle/worktrees/` is orphaned — not
40
+ * present in the set of active worktree paths reported by git. Both sides are
41
+ * normalized so paths from `join` (backslashes on Windows) match git's
42
+ * forward-slash output.
43
+ */
44
+ export declare const isOrphanedWorktreePath: (entryPath: string, activeWorktreePaths: Iterable<string>) => boolean;
18
45
  /**
19
46
  * Creates a git worktree at `.sandcastle/worktrees/<name>/`.
20
47
  *
@@ -1 +1 @@
1
- {"version":3,"file":"WorktreeManager.d.ts","sourceRoot":"","sources":["../src/WorktreeManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAe,MAAM,aAAa,CAAC;AA0B/E,mEAAmE;AACnE,eAAO,MAAM,YAAY,0BACsB,CAAC;AAsBhD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,uCAMlC,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,gBAAgB,kEAK1B,CAAC;AAEJ,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAsCD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM;;;;0GAyIhB,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,qBAAqB,wEAK/B,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,MAAM,qEAQlB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,uGA6EpB,CAAC"}
1
+ {"version":3,"file":"WorktreeManager.d.ts","sourceRoot":"","sources":["../src/WorktreeManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAe,MAAM,aAAa,CAAC;AA0B/E,mEAAmE;AACnE,eAAO,MAAM,YAAY,0BACsB,CAAC;AA+BhD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,uCAMlC,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,gBAAgB,kEAK1B,CAAC;AAEJ,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAYD;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,yGAM6C,CAAC;AAEhF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,yDAImC,CAAC;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,uEASlC,CAAC;AAiCF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM;;;;0GAwIhB,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,qBAAqB,wEAK/B,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,MAAM,qEAQlB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,uGA6EpB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { Effect, Option } from "effect";
2
2
  import { FileSystem } from "@effect/platform";
3
3
  import { execFile } from "node:child_process";
4
- import { join } from "node:path";
4
+ import { join, normalize } from "node:path";
5
5
  import { WorktreeError, WorktreeTimeoutError, withTimeout } from "./errors.js";
6
6
  const WORKTREE_TIMEOUT_MS = 30_000;
7
7
  /**
@@ -25,7 +25,11 @@ const formatTimestamp = (date) => {
25
25
  /** Sanitize a name for use in branch names and directory names. */
26
26
  export const sanitizeName = (name) => name.toLowerCase().replace(/[^a-z0-9]/g, "-");
27
27
  const execGit = (args, cwd) => Effect.async((resume) => {
28
- execFile("git", args, { cwd }, (error, stdout, stderr) => {
28
+ // Force the C locale so git emits English, machine-stable messages. Several
29
+ // callers match git's stderr (e.g. "invalid reference") to decide control
30
+ // flow; under a localized locale gettext translates those strings and the
31
+ // matches silently fail, breaking worktree creation (issue #595).
32
+ execFile("git", args, { cwd, env: { ...process.env, LC_ALL: "C" } }, (error, stdout, stderr) => {
29
33
  if (error) {
30
34
  resume(Effect.fail(new WorktreeError({
31
35
  message: stderr?.trim() || error.message,
@@ -50,6 +54,44 @@ export const generateTempBranchName = (name) => {
50
54
  };
51
55
  /** Returns the name of the currently checked-out branch in the given repo directory. */
52
56
  export const getCurrentBranch = (repoDir) => execGit(["rev-parse", "--abbrev-ref", "HEAD"], repoDir).pipe(Effect.map((output) => output.trim()));
57
+ /**
58
+ * Normalizes path separators to forward slashes.
59
+ *
60
+ * `git worktree list --porcelain` reports paths with forward slashes on every
61
+ * platform, but `node:path.join` produces backslashes on Windows. Comparing
62
+ * the two without normalizing fails on Windows, so all path comparisons in
63
+ * this module run both sides through this first.
64
+ */
65
+ const normalizePath = (p) => p.replace(/\\/g, "/");
66
+ /**
67
+ * Finds an existing worktree that collides with `branch` or `worktreePath`.
68
+ *
69
+ * Matches by branch first, then falls back to a path match — covering the
70
+ * mid-rebase detached-HEAD case where git reports a `null` branch. The path
71
+ * fallback normalizes separators so it works on Windows.
72
+ */
73
+ export const findCollidingWorktree = (existing, branch, worktreePath) => existing.find((wt) => wt.branch === branch) ??
74
+ existing.find((wt) => normalizePath(wt.path) === normalizePath(worktreePath));
75
+ /**
76
+ * Whether `worktreePath` lives under `worktreesDir` (i.e. is a worktree managed
77
+ * by sandcastle rather than the main working tree or an external worktree).
78
+ * Separators are normalized so the check holds on Windows.
79
+ */
80
+ export const isManagedWorktreePath = (worktreePath, worktreesDir) => normalizePath(worktreePath).startsWith(normalizePath(worktreesDir));
81
+ /**
82
+ * Whether a directory entry under `.sandcastle/worktrees/` is orphaned — not
83
+ * present in the set of active worktree paths reported by git. Both sides are
84
+ * normalized so paths from `join` (backslashes on Windows) match git's
85
+ * forward-slash output.
86
+ */
87
+ export const isOrphanedWorktreePath = (entryPath, activeWorktreePaths) => {
88
+ const normalizedEntry = normalizePath(entryPath);
89
+ for (const active of activeWorktreePaths) {
90
+ if (normalizePath(active) === normalizedEntry)
91
+ return false;
92
+ }
93
+ return true;
94
+ };
53
95
  /** Parses `git worktree list --porcelain` output into structured entries. */
54
96
  const listWorktrees = (repoDir) => execGit(["worktree", "list", "--porcelain"], repoDir).pipe(Effect.map((output) => {
55
97
  const entries = [];
@@ -115,12 +157,10 @@ export const create = (repoDir, opts) => Effect.gen(function* () {
115
157
  // Match by branch first; fall back to target path (covers mid-rebase
116
158
  // detached-HEAD state where the branch field is null).
117
159
  const existing = yield* listWorktrees(repoDir);
118
- const collision = existing.find((wt) => wt.branch === branch) ??
119
- existing.find((wt) => wt.path === worktreePath);
160
+ const collision = findCollidingWorktree(existing, branch, worktreePath);
120
161
  if (collision) {
121
162
  // Only reuse worktrees managed by sandcastle (under .sandcastle/worktrees/)
122
- const isManagedWorktree = collision.path.startsWith(worktreesDir);
123
- if (isManagedWorktree) {
163
+ if (isManagedWorktreePath(collision.path, worktreesDir)) {
124
164
  const dirty = yield* hasUncommittedChanges(collision.path);
125
165
  if (dirty) {
126
166
  console.warn(`Reusing worktree at ${collision.path} (branch '${branch}') — worktree has uncommitted changes`);
@@ -128,7 +168,9 @@ export const create = (repoDir, opts) => Effect.gen(function* () {
128
168
  else {
129
169
  console.log(`Reusing existing worktree at ${collision.path} (branch '${branch}')`);
130
170
  }
131
- return { path: collision.path, branch };
171
+ // git reports forward slashes even on Windows; return a
172
+ // platform-native path so downstream join/fs calls stay consistent.
173
+ return { path: normalize(collision.path), branch };
132
174
  }
133
175
  // Branch is checked out in the main working tree or external worktree
134
176
  yield* Effect.fail(new WorktreeError({
@@ -226,7 +268,7 @@ export const pruneStale = (repoDir) => Effect.gen(function* () {
226
268
  for (const entry of entries) {
227
269
  const entryPath = join(realWorktreesDir, entry);
228
270
  const isDir = yield* fs.stat(entryPath).pipe(Effect.map((s) => s.type === "Directory"), Effect.catchAll(() => Effect.succeed(false)));
229
- if (isDir && !activeWorktreePaths.has(entryPath)) {
271
+ if (isDir && isOrphanedWorktreePath(entryPath, activeWorktreePaths)) {
230
272
  yield* fs.remove(entryPath, { recursive: true, force: true }).pipe(Effect.mapError((e) => new WorktreeError({
231
273
  message: `Failed to remove ${entryPath}: ${e.message}`,
232
274
  })));
@@ -1 +1 @@
1
- {"version":3,"file":"WorktreeManager.js","sourceRoot":"","sources":["../src/WorktreeManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorktreeManager.js","sourceRoot":"","sources":["../src/WorktreeManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * A bounded, rolling tail of streamed output — a pure, provider-agnostic
3
+ * utility shared by every sandbox provider that streams `exec` output.
4
+ *
5
+ * When a provider streams output line-by-line, it accumulates the stream only
6
+ * to build the returned `ExecResult.stdout`/`stderr`. Consumers read just the
7
+ * tail of that value (e.g. the last lines of an error, or a fallback for the
8
+ * agent's final result), so retaining the whole stream is unnecessary — and,
9
+ * once the accumulated string passes V8's ~512MB max string length, fatal: a
10
+ * naive `chunks.join()` throws `RangeError: Invalid string length`, which on a
11
+ * long agent run crashes the whole orchestration.
12
+ */
13
+ /**
14
+ * Default maximum number of characters retained in a bounded output tail.
15
+ *
16
+ * 64KiB sits comfortably above any agent completion signal or structured-output
17
+ * payload while staying far below V8's max string length.
18
+ */
19
+ export declare const MAX_TAIL_CHARS: number;
20
+ /**
21
+ * A fixed-size rolling tail of strings, bounded by total character length.
22
+ *
23
+ * `push` appends to the tail; once the joined length would exceed `maxChars`,
24
+ * the oldest items are dropped from the front. A single item longer than
25
+ * `maxChars` is truncated to its own tail, so a newline-free blob can't
26
+ * overflow on one push. `toString` joins the retained items, and its length is
27
+ * always at most `maxChars`.
28
+ *
29
+ * The running length counter is encapsulated so callers can't desync it.
30
+ */
31
+ export declare class BoundedTail {
32
+ private readonly items;
33
+ private totalChars;
34
+ private readonly maxChars;
35
+ private readonly separator;
36
+ /**
37
+ * @param maxChars Maximum length of the joined tail. Defaults to {@link MAX_TAIL_CHARS}.
38
+ * @param separator String placed between items by {@link toString}. Must match
39
+ * how the caller would otherwise have joined the accumulated chunks (e.g.
40
+ * `"\n"` for line streams, `""` for raw chunk streams).
41
+ */
42
+ constructor(maxChars?: number, separator?: string);
43
+ /** Append one item to the tail, evicting oldest items to stay within budget. */
44
+ push(item: string): void;
45
+ /** Join the retained tail into a single string (length ≤ `maxChars`). */
46
+ toString(): string;
47
+ }
48
+ //# sourceMappingURL=boundedTail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundedTail.d.ts","sourceRoot":"","sources":["../src/boundedTail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAY,CAAC;AAExC;;;;;;;;;;GAUG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC;;;;;OAKG;IACH,YAAY,QAAQ,GAAE,MAAuB,EAAE,SAAS,SAAK,EAG5D;IAED,gFAAgF;IAChF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAYvB;IAED,yEAAyE;IACzE,QAAQ,IAAI,MAAM,CAEjB;CACF"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * A bounded, rolling tail of streamed output — a pure, provider-agnostic
3
+ * utility shared by every sandbox provider that streams `exec` output.
4
+ *
5
+ * When a provider streams output line-by-line, it accumulates the stream only
6
+ * to build the returned `ExecResult.stdout`/`stderr`. Consumers read just the
7
+ * tail of that value (e.g. the last lines of an error, or a fallback for the
8
+ * agent's final result), so retaining the whole stream is unnecessary — and,
9
+ * once the accumulated string passes V8's ~512MB max string length, fatal: a
10
+ * naive `chunks.join()` throws `RangeError: Invalid string length`, which on a
11
+ * long agent run crashes the whole orchestration.
12
+ */
13
+ /**
14
+ * Default maximum number of characters retained in a bounded output tail.
15
+ *
16
+ * 64KiB sits comfortably above any agent completion signal or structured-output
17
+ * payload while staying far below V8's max string length.
18
+ */
19
+ export const MAX_TAIL_CHARS = 64 * 1024;
20
+ /**
21
+ * A fixed-size rolling tail of strings, bounded by total character length.
22
+ *
23
+ * `push` appends to the tail; once the joined length would exceed `maxChars`,
24
+ * the oldest items are dropped from the front. A single item longer than
25
+ * `maxChars` is truncated to its own tail, so a newline-free blob can't
26
+ * overflow on one push. `toString` joins the retained items, and its length is
27
+ * always at most `maxChars`.
28
+ *
29
+ * The running length counter is encapsulated so callers can't desync it.
30
+ */
31
+ export class BoundedTail {
32
+ items = [];
33
+ totalChars = 0;
34
+ maxChars;
35
+ separator;
36
+ /**
37
+ * @param maxChars Maximum length of the joined tail. Defaults to {@link MAX_TAIL_CHARS}.
38
+ * @param separator String placed between items by {@link toString}. Must match
39
+ * how the caller would otherwise have joined the accumulated chunks (e.g.
40
+ * `"\n"` for line streams, `""` for raw chunk streams).
41
+ */
42
+ constructor(maxChars = MAX_TAIL_CHARS, separator = "") {
43
+ this.maxChars = maxChars;
44
+ this.separator = separator;
45
+ }
46
+ /** Append one item to the tail, evicting oldest items to stay within budget. */
47
+ push(item) {
48
+ const bounded = item.length > this.maxChars
49
+ ? item.slice(item.length - this.maxChars)
50
+ : item;
51
+ this.totalChars +=
52
+ bounded.length + (this.items.length > 0 ? this.separator.length : 0);
53
+ this.items.push(bounded);
54
+ while (this.totalChars > this.maxChars && this.items.length > 1) {
55
+ const dropped = this.items.shift();
56
+ this.totalChars -= dropped.length + this.separator.length;
57
+ }
58
+ }
59
+ /** Join the retained tail into a single string (length ≤ `maxChars`). */
60
+ toString() {
61
+ return this.items.join(this.separator);
62
+ }
63
+ }
64
+ //# sourceMappingURL=boundedTail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundedTail.js","sourceRoot":"","sources":["../src/boundedTail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC;AAExC;;;;;;;;;;GAUG;AACH,MAAM,OAAO,WAAW;IACL,KAAK,GAAa,EAAE,CAAC;IAC9B,UAAU,GAAG,CAAC,CAAC;IACN,QAAQ,CAAS;IACjB,SAAS,CAAS;IAEnC;;;;;OAKG;IACH,YAAY,QAAQ,GAAW,cAAc,EAAE,SAAS,GAAG,EAAE;QAC3D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,gFAAgF;IAChF,IAAI,CAAC,IAAY;QACf,MAAM,OAAO,GACX,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ;YACzB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YACzC,CAAC,CAAC,IAAI,CAAC;QACX,IAAI,CAAC,UAAU;YACb,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC;YACpC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;CACF"}
package/dist/cli.d.ts CHANGED
@@ -9,6 +9,7 @@ export declare const sandcastle: Command.Command<"sandcastle", Display | FileSys
9
9
  readonly template: import("effect/Option").Option<string>;
10
10
  readonly agent: import("effect/Option").Option<string>;
11
11
  readonly model: import("effect/Option").Option<string>;
12
+ readonly sandbox: import("effect/Option").Option<string>;
12
13
  } | {
13
14
  readonly subcommand: import("effect/Option").Option<{
14
15
  readonly imageName: import("effect/Option").Option<string>;