@ai-hero/sandcastle 0.4.8 → 0.5.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.
- package/README.md +145 -69
- package/dist/AgentProvider.d.ts +9 -0
- package/dist/AgentProvider.d.ts.map +1 -1
- package/dist/AgentProvider.js +14 -2
- package/dist/AgentProvider.js.map +1 -1
- package/dist/ErrorHandler.d.ts.map +1 -1
- package/dist/ErrorHandler.js +4 -0
- package/dist/ErrorHandler.js.map +1 -1
- package/dist/Orchestrator.d.ts +13 -2
- package/dist/Orchestrator.d.ts.map +1 -1
- package/dist/Orchestrator.js +53 -7
- package/dist/Orchestrator.js.map +1 -1
- package/dist/PodmanLifecycle.d.ts +10 -0
- package/dist/PodmanLifecycle.d.ts.map +1 -1
- package/dist/PodmanLifecycle.js +22 -0
- package/dist/PodmanLifecycle.js.map +1 -1
- package/dist/SandboxFactory.d.ts +6 -2
- package/dist/SandboxFactory.d.ts.map +1 -1
- package/dist/SandboxFactory.js +41 -21
- package/dist/SandboxFactory.js.map +1 -1
- package/dist/SandboxLifecycle.d.ts +23 -5
- package/dist/SandboxLifecycle.d.ts.map +1 -1
- package/dist/SandboxLifecycle.js +59 -13
- package/dist/SandboxLifecycle.js.map +1 -1
- package/dist/SandboxProvider.d.ts +4 -0
- package/dist/SandboxProvider.d.ts.map +1 -1
- package/dist/SandboxProvider.js.map +1 -1
- package/dist/SessionPaths.d.ts +26 -0
- package/dist/SessionPaths.d.ts.map +1 -0
- package/dist/SessionPaths.js +20 -0
- package/dist/SessionPaths.js.map +1 -0
- package/dist/SessionStore.d.ts +49 -0
- package/dist/SessionStore.d.ts.map +1 -0
- package/dist/SessionStore.js +119 -0
- package/dist/SessionStore.js.map +1 -0
- package/dist/createSandbox.d.ts +16 -16
- package/dist/createSandbox.d.ts.map +1 -1
- package/dist/createSandbox.js +53 -26
- package/dist/createSandbox.js.map +1 -1
- package/dist/createWorktree.d.ts +18 -13
- package/dist/createWorktree.d.ts.map +1 -1
- package/dist/createWorktree.js +12 -6
- package/dist/createWorktree.js.map +1 -1
- package/dist/errors.d.ts +13 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +5 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/interactive.d.ts +8 -0
- package/dist/interactive.d.ts.map +1 -1
- package/dist/interactive.js +11 -2
- package/dist/interactive.js.map +1 -1
- package/dist/resolveCwd.d.ts +24 -0
- package/dist/resolveCwd.d.ts.map +1 -0
- package/dist/resolveCwd.js +32 -0
- package/dist/resolveCwd.js.map +1 -0
- package/dist/run.d.ts +31 -10
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +28 -5
- package/dist/run.js.map +1 -1
- package/dist/sandboxes/docker.d.ts.map +1 -1
- package/dist/sandboxes/docker.js +20 -0
- package/dist/sandboxes/docker.js.map +1 -1
- package/dist/sandboxes/podman.d.ts.map +1 -1
- package/dist/sandboxes/podman.js +26 -0
- package/dist/sandboxes/podman.js.map +1 -1
- package/dist/sandboxes/test-bind-mount.d.ts +17 -0
- package/dist/sandboxes/test-bind-mount.d.ts.map +1 -0
- package/dist/sandboxes/test-bind-mount.js +91 -0
- package/dist/sandboxes/test-bind-mount.js.map +1 -0
- package/dist/templates/parallel-planner/main.mts +1 -1
- package/dist/templates/parallel-planner-with-review/main.mts +1 -1
- package/dist/templates/sequential-reviewer/main.mts +1 -1
- package/dist/templates/simple-loop/main.mts +7 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -94,6 +94,7 @@ await interactive({
|
|
|
94
94
|
agent: claudeCode("claude-opus-4-6"),
|
|
95
95
|
sandbox: noSandbox(),
|
|
96
96
|
prompt: "...", // optional — omit to launch the TUI with no initial prompt
|
|
97
|
+
cwd: "/path/to/other-repo", // optional — defaults to process.cwd()
|
|
97
98
|
});
|
|
98
99
|
```
|
|
99
100
|
|
|
@@ -113,7 +114,8 @@ const result = await run({
|
|
|
113
114
|
promptFile: ".sandcastle/prompt.md",
|
|
114
115
|
});
|
|
115
116
|
|
|
116
|
-
console.log(result.
|
|
117
|
+
console.log(result.iterations.length); // number of iterations executed
|
|
118
|
+
console.log(result.iterations); // per-iteration results with optional sessionId
|
|
117
119
|
console.log(result.commits); // array of { sha } for commits created
|
|
118
120
|
console.log(result.branch); // target branch name
|
|
119
121
|
```
|
|
@@ -146,11 +148,17 @@ const result = await run({
|
|
|
146
148
|
network: "my-network",
|
|
147
149
|
}),
|
|
148
150
|
|
|
151
|
+
// Host repo directory — replaces process.cwd() as the anchor for
|
|
152
|
+
// .sandcastle/ artifacts (worktrees, logs, env, patches) and git operations.
|
|
153
|
+
// Relative paths resolve against process.cwd(). Defaults to process.cwd().
|
|
154
|
+
cwd: "../other-repo",
|
|
155
|
+
|
|
149
156
|
// Branch strategy — controls how the agent's changes relate to branches.
|
|
150
157
|
// Defaults to { type: "head" } for bind-mount and { type: "merge-to-head" } for isolated providers.
|
|
151
158
|
branchStrategy: { type: "branch", branch: "agent/fix-42" },
|
|
152
159
|
|
|
153
|
-
// Prompt source — provide one of these, not both
|
|
160
|
+
// Prompt source — provide one of these, not both.
|
|
161
|
+
// Note: promptFile resolves against process.cwd(), NOT cwd.
|
|
154
162
|
promptFile: ".sandcastle/prompt.md", // path to a prompt file
|
|
155
163
|
// prompt: "Fix issue #42 in this repo", // OR an inline prompt string
|
|
156
164
|
|
|
@@ -165,10 +173,15 @@ const result = await run({
|
|
|
165
173
|
// Display name for this run, shown as a prefix in log output.
|
|
166
174
|
name: "fix-issue-42",
|
|
167
175
|
|
|
168
|
-
// Lifecycle hooks
|
|
176
|
+
// Lifecycle hooks grouped by where they run: host or sandbox.
|
|
169
177
|
hooks: {
|
|
170
|
-
|
|
171
|
-
|
|
178
|
+
host: {
|
|
179
|
+
onWorktreeReady: [{ command: "cp .env.example .env" }],
|
|
180
|
+
onSandboxReady: [{ command: "echo setup done" }],
|
|
181
|
+
},
|
|
182
|
+
sandbox: {
|
|
183
|
+
onSandboxReady: [{ command: "npm install" }],
|
|
184
|
+
},
|
|
172
185
|
},
|
|
173
186
|
|
|
174
187
|
// Host-relative file paths to copy into the sandbox before the container starts.
|
|
@@ -187,7 +200,7 @@ const result = await run({
|
|
|
187
200
|
idleTimeoutSeconds: 600,
|
|
188
201
|
});
|
|
189
202
|
|
|
190
|
-
console.log(result.
|
|
203
|
+
console.log(result.iterations.length); // number of iterations executed
|
|
191
204
|
console.log(result.completionSignal); // matched signal string, or undefined if none fired
|
|
192
205
|
console.log(result.commits); // array of { sha } for commits created
|
|
193
206
|
console.log(result.branch); // target branch name
|
|
@@ -227,7 +240,7 @@ import { docker } from "@ai-hero/sandcastle/sandboxes/docker";
|
|
|
227
240
|
await using sandbox = await createSandbox({
|
|
228
241
|
branch: "agent/fix-42",
|
|
229
242
|
sandbox: docker(),
|
|
230
|
-
hooks: { onSandboxReady: [{ command: "npm install" }] },
|
|
243
|
+
hooks: { sandbox: { onSandboxReady: [{ command: "npm install" }] } },
|
|
231
244
|
});
|
|
232
245
|
|
|
233
246
|
// Step 1: implement
|
|
@@ -266,13 +279,14 @@ if (closeResult.preservedWorktreePath) {
|
|
|
266
279
|
|
|
267
280
|
#### `CreateSandboxOptions`
|
|
268
281
|
|
|
269
|
-
| Option | Type | Default
|
|
270
|
-
| -------------------------- | --------------- |
|
|
271
|
-
| `branch` | string | —
|
|
272
|
-
| `sandbox` | SandboxProvider | —
|
|
273
|
-
| `
|
|
274
|
-
| `
|
|
275
|
-
| `
|
|
282
|
+
| Option | Type | Default | Description |
|
|
283
|
+
| -------------------------- | --------------- | --------------- | ------------------------------------------------------------------------ |
|
|
284
|
+
| `branch` | string | — | **Required.** Explicit branch for the sandbox |
|
|
285
|
+
| `sandbox` | SandboxProvider | — | **Required.** Sandbox provider (e.g. `docker()`, `podman()`) |
|
|
286
|
+
| `cwd` | string | `process.cwd()` | Host repo directory — relative paths resolve against `process.cwd()` |
|
|
287
|
+
| `hooks` | SandboxHooks | — | Lifecycle hooks (`host.*`, `sandbox.*`) — run once at creation time |
|
|
288
|
+
| `copyToWorktree` | string[] | — | Host-relative file paths to copy into the sandbox at creation time |
|
|
289
|
+
| `throwOnDuplicateWorktree` | boolean | `true` | When `false`, reuse an existing worktree instead of failing on collision |
|
|
276
290
|
|
|
277
291
|
#### `Sandbox`
|
|
278
292
|
|
|
@@ -300,13 +314,13 @@ if (closeResult.preservedWorktreePath) {
|
|
|
300
314
|
|
|
301
315
|
#### `SandboxRunResult`
|
|
302
316
|
|
|
303
|
-
| Field | Type
|
|
304
|
-
| ------------------ |
|
|
305
|
-
| `
|
|
306
|
-
| `completionSignal` | string?
|
|
307
|
-
| `stdout` | string
|
|
308
|
-
| `commits` | `{ sha }[]`
|
|
309
|
-
| `logFilePath` | string?
|
|
317
|
+
| Field | Type | Description |
|
|
318
|
+
| ------------------ | ------------------- | ------------------------------------------------------------------ |
|
|
319
|
+
| `iterations` | `IterationResult[]` | Per-iteration results (use `.length` for the count) |
|
|
320
|
+
| `completionSignal` | string? | The matched completion signal string, or `undefined` if none fired |
|
|
321
|
+
| `stdout` | string | Combined agent output from all iterations |
|
|
322
|
+
| `commits` | `{ sha }[]` | Commits created during the run |
|
|
323
|
+
| `logFilePath` | string? | Path to the log file (only when logging to a file) |
|
|
310
324
|
|
|
311
325
|
#### `CloseResult`
|
|
312
326
|
|
|
@@ -320,12 +334,15 @@ Use `createWorktree()` when you need a worktree (git worktree) as an independent
|
|
|
320
334
|
|
|
321
335
|
Only `branch` and `merge-to-head` strategies are accepted; `head` is a compile-time type error since it means no worktree.
|
|
322
336
|
|
|
337
|
+
Pass `cwd` to target a repo other than `process.cwd()`. Relative paths resolve against `process.cwd()`; absolute paths pass through. A `CwdError` is thrown if the path does not exist or is not a directory.
|
|
338
|
+
|
|
323
339
|
```typescript
|
|
324
340
|
import { createWorktree } from "@ai-hero/sandcastle";
|
|
325
341
|
|
|
326
342
|
await using wt = await createWorktree({
|
|
327
343
|
branchStrategy: { type: "branch", branch: "agent/fix-42" },
|
|
328
344
|
copyToWorktree: ["node_modules"],
|
|
345
|
+
cwd: "/path/to/other-repo", // optional — defaults to process.cwd()
|
|
329
346
|
});
|
|
330
347
|
|
|
331
348
|
console.log(wt.worktreePath); // host path to the worktree
|
|
@@ -351,7 +368,7 @@ import { docker } from "@ai-hero/sandcastle/sandboxes/docker";
|
|
|
351
368
|
|
|
352
369
|
await using sandbox = await wt.createSandbox({
|
|
353
370
|
sandbox: docker(),
|
|
354
|
-
hooks: { onSandboxReady: [{ command: "npm install" }] },
|
|
371
|
+
hooks: { sandbox: { onSandboxReady: [{ command: "npm install" }] } },
|
|
355
372
|
});
|
|
356
373
|
|
|
357
374
|
// sandbox.close() tears down the container only — the worktree stays
|
|
@@ -392,7 +409,7 @@ await sandbox.close();
|
|
|
392
409
|
| `prompt` | string | — | Inline prompt (mutually exclusive with `promptFile`) |
|
|
393
410
|
| `promptFile` | string | — | Path to prompt file |
|
|
394
411
|
| `name` | string | — | Optional session name |
|
|
395
|
-
| `hooks` | SandboxHooks | — |
|
|
412
|
+
| `hooks` | SandboxHooks | — | Lifecycle hooks (`host.*`, `sandbox.*`) |
|
|
396
413
|
| `promptArgs` | PromptArgs | — | Key-value map for `{{KEY}}` placeholder substitution |
|
|
397
414
|
| `env` | Record<string, string> | — | Environment variables to inject into the sandbox |
|
|
398
415
|
|
|
@@ -409,27 +426,27 @@ await sandbox.close();
|
|
|
409
426
|
| `idleTimeoutSeconds` | number | 600 | Idle timeout in seconds |
|
|
410
427
|
| `name` | string | — | Optional run name |
|
|
411
428
|
| `logging` | LoggingOption | file | Logging mode |
|
|
412
|
-
| `hooks` | SandboxHooks | — |
|
|
429
|
+
| `hooks` | SandboxHooks | — | Lifecycle hooks (`host.*`, `sandbox.*`) |
|
|
413
430
|
| `promptArgs` | PromptArgs | — | Key-value map for `{{KEY}}` placeholder substitution |
|
|
414
431
|
| `env` | Record<string, string> | — | Environment variables to inject into the sandbox |
|
|
415
432
|
|
|
416
433
|
#### `WorktreeRunResult`
|
|
417
434
|
|
|
418
|
-
| Property | Type
|
|
419
|
-
| ------------------ |
|
|
420
|
-
| `
|
|
421
|
-
| `completionSignal` | string
|
|
422
|
-
| `stdout` | string
|
|
423
|
-
| `commits` | { sha: string }[]
|
|
424
|
-
| `branch` | string
|
|
425
|
-
| `logFilePath` | string
|
|
435
|
+
| Property | Type | Description |
|
|
436
|
+
| ------------------ | ------------------- | ------------------------------------------------------ |
|
|
437
|
+
| `iterations` | `IterationResult[]` | Per-iteration results (use `.length` for the count) |
|
|
438
|
+
| `completionSignal` | string | The matched completion signal, or undefined |
|
|
439
|
+
| `stdout` | string | Combined stdout output from all agent iterations |
|
|
440
|
+
| `commits` | { sha: string }[] | List of commits made by the agent during the run |
|
|
441
|
+
| `branch` | string | The branch name the agent worked on |
|
|
442
|
+
| `logFilePath` | string | Path to the log file, if logging was drained to a file |
|
|
426
443
|
|
|
427
444
|
#### `WorktreeCreateSandboxOptions`
|
|
428
445
|
|
|
429
446
|
| Option | Type | Default | Description |
|
|
430
447
|
| ---------------- | --------------- | ------- | ------------------------------------------------------------------- |
|
|
431
448
|
| `sandbox` | SandboxProvider | — | **Required.** Sandbox provider (e.g. `docker()`) |
|
|
432
|
-
| `hooks` | SandboxHooks | — |
|
|
449
|
+
| `hooks` | SandboxHooks | — | Lifecycle hooks (`host.*`, `sandbox.*`) |
|
|
433
450
|
| `copyToWorktree` | string[] | — | Host-relative file paths to copy into the worktree at creation time |
|
|
434
451
|
|
|
435
452
|
## How it works
|
|
@@ -463,7 +480,7 @@ You must provide exactly one of:
|
|
|
463
480
|
|
|
464
481
|
Use `` !`command` `` expressions in your prompt to pull in dynamic context. Each expression is replaced with the command's stdout before the prompt is sent to the agent. All expressions in a prompt run **in parallel** for faster expansion.
|
|
465
482
|
|
|
466
|
-
Commands run **inside the sandbox** after `onSandboxReady` hooks complete, so they see the same repo state the agent sees (including installed dependencies).
|
|
483
|
+
Commands run **inside the sandbox** after `sandbox.onSandboxReady` hooks complete, so they see the same repo state the agent sees (including installed dependencies).
|
|
467
484
|
|
|
468
485
|
```markdown
|
|
469
486
|
# Open issues
|
|
@@ -623,10 +640,11 @@ Removes the Podman image.
|
|
|
623
640
|
| -------------------------- | ------------------ | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
624
641
|
| `agent` | AgentProvider | — | **Required.** Agent provider (e.g. `claudeCode("claude-opus-4-6")`, `pi("claude-sonnet-4-6")`, `codex("gpt-5.4-mini")`, `opencode("opencode/big-pickle")`) |
|
|
625
642
|
| `sandbox` | SandboxProvider | — | **Required.** Sandbox provider (e.g. `docker()`, `podman()`, `docker({ imageName: "sandcastle:local" })`) |
|
|
643
|
+
| `cwd` | string | `process.cwd()` | Host repo directory — anchor for `.sandcastle/` artifacts and git operations. Relative paths resolve against `process.cwd()`. |
|
|
626
644
|
| `prompt` | string | — | Inline prompt (mutually exclusive with `promptFile`) |
|
|
627
|
-
| `promptFile` | string | — | Path to prompt file (mutually exclusive with `prompt`)
|
|
645
|
+
| `promptFile` | string | — | Path to prompt file (mutually exclusive with `prompt`). Resolves against `process.cwd()`, **not** `cwd`. |
|
|
628
646
|
| `maxIterations` | number | `1` | Maximum iterations to run |
|
|
629
|
-
| `hooks` |
|
|
647
|
+
| `hooks` | SandboxHooks | — | Lifecycle hooks (`host.*`, `sandbox.*`) |
|
|
630
648
|
| `name` | string | — | Display name for the run, shown as a prefix in log output |
|
|
631
649
|
| `promptArgs` | PromptArgs | — | Key-value map for `{{KEY}}` placeholder substitution |
|
|
632
650
|
| `branchStrategy` | BranchStrategy | per-provider default | Branch strategy: `{ type: 'head' }`, `{ type: 'merge-to-head' }`, or `{ type: 'branch', branch: '…' }` |
|
|
@@ -635,17 +653,53 @@ Removes the Podman image.
|
|
|
635
653
|
| `completionSignal` | string \| string[] | `<promise>COMPLETE</promise>` | String or array of strings the agent emits to stop the iteration loop early |
|
|
636
654
|
| `idleTimeoutSeconds` | number | `600` | Idle timeout in seconds — resets on each agent output event |
|
|
637
655
|
| `throwOnDuplicateWorktree` | boolean | `true` | When `false`, reuse an existing worktree for the target branch instead of failing on collision |
|
|
656
|
+
| `resumeSession` | string | — | Resume a prior Claude Code session by ID. Incompatible with `maxIterations > 1`. Session file must exist on host. |
|
|
638
657
|
|
|
639
658
|
### `RunResult`
|
|
640
659
|
|
|
641
|
-
| Field | Type
|
|
642
|
-
| ------------------ |
|
|
643
|
-
| `
|
|
644
|
-
| `completionSignal` | string?
|
|
645
|
-
| `stdout` | string
|
|
646
|
-
| `commits` | `{ sha }[]`
|
|
647
|
-
| `branch` | string
|
|
648
|
-
| `logFilePath` | string?
|
|
660
|
+
| Field | Type | Description |
|
|
661
|
+
| ------------------ | ------------------- | ------------------------------------------------------------------ |
|
|
662
|
+
| `iterations` | `IterationResult[]` | Per-iteration results (use `.length` for the count) |
|
|
663
|
+
| `completionSignal` | string? | The matched completion signal string, or `undefined` if none fired |
|
|
664
|
+
| `stdout` | string | Agent output |
|
|
665
|
+
| `commits` | `{ sha }[]` | Commits created during the run |
|
|
666
|
+
| `branch` | string | Target branch name |
|
|
667
|
+
| `logFilePath` | string? | Path to the log file (only when logging to a file) |
|
|
668
|
+
|
|
669
|
+
### `IterationResult`
|
|
670
|
+
|
|
671
|
+
| Field | Type | Description |
|
|
672
|
+
| ----------------- | ------- | ------------------------------------------------------------------------------------ |
|
|
673
|
+
| `sessionId` | string? | Claude Code session ID from the init line, or `undefined` for non-Claude agents |
|
|
674
|
+
| `sessionFilePath` | string? | Absolute host path to the captured session JSONL, or `undefined` when capture is off |
|
|
675
|
+
|
|
676
|
+
### Session capture
|
|
677
|
+
|
|
678
|
+
After each Claude Code iteration, Sandcastle automatically captures the agent's session JSONL from the sandbox to the host at `~/.claude/projects/<encoded-path>/sessions/<session-id>.jsonl`. The `cwd` fields inside each JSONL entry are rewritten to match the host repo root, so `claude --resume` works natively.
|
|
679
|
+
|
|
680
|
+
Session capture is enabled by default for `claudeCode()` and can be opted out via `captureSessions: false`. Non-Claude agent providers never attempt capture. Capture failure fails the run.
|
|
681
|
+
|
|
682
|
+
### Session resume
|
|
683
|
+
|
|
684
|
+
Pass `resumeSession` to `run()` to continue a prior Claude Code conversation inside a new sandbox:
|
|
685
|
+
|
|
686
|
+
```typescript
|
|
687
|
+
const result = await run({
|
|
688
|
+
agent: claudeCode("claude-opus-4-6"),
|
|
689
|
+
sandbox: docker(),
|
|
690
|
+
prompt: "Continue where you left off",
|
|
691
|
+
resumeSession: "abc-123-def",
|
|
692
|
+
});
|
|
693
|
+
```
|
|
694
|
+
|
|
695
|
+
Before the sandbox starts, Sandcastle validates that the session file exists on the host and transfers it into the sandbox with `cwd` fields rewritten to match the sandbox-side path. The Claude Code agent receives `--resume <id>` on its print command for iteration 1.
|
|
696
|
+
|
|
697
|
+
Constraints:
|
|
698
|
+
|
|
699
|
+
- `resumeSession` is incompatible with `maxIterations > 1` (throws before sandbox creation).
|
|
700
|
+
- The session file must exist at `~/.claude/projects/<encoded-path>/sessions/<id>.jsonl` (throws before sandbox creation).
|
|
701
|
+
- Only iteration 1 receives the resume flag; subsequent iterations (if any) start fresh.
|
|
702
|
+
- Non-Claude agent providers ignore `resumeSession`.
|
|
649
703
|
|
|
650
704
|
### `ClaudeCodeOptions`
|
|
651
705
|
|
|
@@ -655,10 +709,11 @@ The `claudeCode()` factory accepts an optional second argument for provider-spec
|
|
|
655
709
|
agent: claudeCode("claude-opus-4-6", { effort: "high" });
|
|
656
710
|
```
|
|
657
711
|
|
|
658
|
-
| Option
|
|
659
|
-
|
|
|
660
|
-
| `effort`
|
|
661
|
-
| `env`
|
|
712
|
+
| Option | Type | Default | Description |
|
|
713
|
+
| ----------------- | -------------------------------------------- | ------- | --------------------------------------------------------- |
|
|
714
|
+
| `effort` | `"low"` \| `"medium"` \| `"high"` \| `"max"` | — | Claude Code reasoning effort level (`max` is Opus only) |
|
|
715
|
+
| `env` | `Record<string, string>` | `{}` | Environment variables injected by this agent provider |
|
|
716
|
+
| `captureSessions` | `boolean` | `true` | Capture agent session JSONL to host for `claude --resume` |
|
|
662
717
|
|
|
663
718
|
### `CodexOptions`
|
|
664
719
|
|
|
@@ -708,13 +763,14 @@ Sandcastle ships with built-in providers for Docker, Podman, and Vercel, but you
|
|
|
708
763
|
|
|
709
764
|
Both provider types return a **sandbox handle** from their `create()` function. The handle exposes:
|
|
710
765
|
|
|
711
|
-
| Method | Required
|
|
712
|
-
| -------------- |
|
|
713
|
-
| `exec` | Both
|
|
714
|
-
| `close` | Both
|
|
715
|
-
| `
|
|
716
|
-
| `
|
|
717
|
-
| `
|
|
766
|
+
| Method | Required | Description |
|
|
767
|
+
| -------------- | ---------- | ---------------------------------------------------------------------------- |
|
|
768
|
+
| `exec` | Both | Run a command, optionally streaming stdout line-by-line via `options.onLine` |
|
|
769
|
+
| `close` | Both | Tear down the sandbox |
|
|
770
|
+
| `copyFileIn` | Bind-mount | Copy a single file from the host into the sandbox |
|
|
771
|
+
| `copyFileOut` | Both | Copy a single file from the sandbox to the host |
|
|
772
|
+
| `copyIn` | Isolated | Copy a file or directory from the host into the sandbox |
|
|
773
|
+
| `worktreePath` | Both | Absolute path to the repo directory inside the sandbox |
|
|
718
774
|
|
|
719
775
|
### `ExecResult`
|
|
720
776
|
|
|
@@ -740,6 +796,8 @@ import {
|
|
|
740
796
|
type ExecResult,
|
|
741
797
|
} from "@ai-hero/sandcastle";
|
|
742
798
|
import { execFile, spawn } from "node:child_process";
|
|
799
|
+
import { copyFile as fsCopyFile, mkdir as fsMkdir } from "node:fs/promises";
|
|
800
|
+
import { dirname } from "node:path";
|
|
743
801
|
import { createInterface } from "node:readline";
|
|
744
802
|
|
|
745
803
|
const localProcess = () =>
|
|
@@ -809,6 +867,16 @@ const localProcess = () =>
|
|
|
809
867
|
});
|
|
810
868
|
},
|
|
811
869
|
|
|
870
|
+
copyFileIn: async (hostPath: string, sandboxPath: string) => {
|
|
871
|
+
await fsMkdir(dirname(sandboxPath), { recursive: true });
|
|
872
|
+
await fsCopyFile(hostPath, sandboxPath);
|
|
873
|
+
},
|
|
874
|
+
|
|
875
|
+
copyFileOut: async (sandboxPath: string, hostPath: string) => {
|
|
876
|
+
await fsMkdir(dirname(hostPath), { recursive: true });
|
|
877
|
+
await fsCopyFile(sandboxPath, hostPath);
|
|
878
|
+
},
|
|
879
|
+
|
|
812
880
|
close: async () => {
|
|
813
881
|
// nothing to tear down for a local process
|
|
814
882
|
},
|
|
@@ -1016,28 +1084,36 @@ Add your project-specific dependencies (e.g., language runtimes, build tools) to
|
|
|
1016
1084
|
|
|
1017
1085
|
### Hooks
|
|
1018
1086
|
|
|
1019
|
-
Hooks are
|
|
1020
|
-
|
|
1021
|
-
| Hook | When it runs | Working directory |
|
|
1022
|
-
| ---------------- | -------------------------- | ---------------------- |
|
|
1023
|
-
| `onSandboxReady` | After the sandbox is ready | Sandbox repo directory |
|
|
1024
|
-
|
|
1025
|
-
**`onSandboxReady`** runs after the sandbox is ready. Use it for dependency installation or build steps (e.g., `npm install`).
|
|
1026
|
-
|
|
1027
|
-
Set `sudo: true` to run a command with elevated privileges inside the sandbox:
|
|
1087
|
+
Hooks are grouped by **where** they run — `host` (on the developer's machine) or `sandbox` (inside the container):
|
|
1028
1088
|
|
|
1029
1089
|
```ts
|
|
1030
|
-
|
|
1031
|
-
|
|
1090
|
+
hooks: {
|
|
1091
|
+
host: {
|
|
1092
|
+
onWorktreeReady: [{ command: "cp .env.example .env" }],
|
|
1093
|
+
onSandboxReady: [{ command: "echo sandbox is up" }],
|
|
1094
|
+
},
|
|
1095
|
+
sandbox: {
|
|
1032
1096
|
onSandboxReady: [
|
|
1033
|
-
{ command: "apt-get install -y ffmpeg", sudo: true },
|
|
1034
1097
|
{ command: "npm install" },
|
|
1098
|
+
{ command: "apt-get install -y ffmpeg", sudo: true },
|
|
1035
1099
|
],
|
|
1036
1100
|
},
|
|
1037
|
-
|
|
1038
|
-
});
|
|
1101
|
+
}
|
|
1039
1102
|
```
|
|
1040
1103
|
|
|
1104
|
+
| Hook | Runs on | When | Working directory |
|
|
1105
|
+
| ------------------------ | ------- | -------------------------------------------- | ------------------------------------------- |
|
|
1106
|
+
| `host.onWorktreeReady` | Host | After `copyToWorktree`, before sandbox start | Worktree path (host repo root under `head`) |
|
|
1107
|
+
| `host.onSandboxReady` | Host | After sandbox is up | Worktree path (host repo root under `head`) |
|
|
1108
|
+
| `sandbox.onSandboxReady` | Sandbox | After sandbox is up | Sandbox repo directory |
|
|
1109
|
+
|
|
1110
|
+
**Ordering:** `copyToWorktree` -> `host.onWorktreeReady` (sequential) -> sandbox created -> `host.onSandboxReady` + `sandbox.onSandboxReady` (parallel).
|
|
1111
|
+
|
|
1112
|
+
- **Host hooks** accept `{ command: string }` — no `sudo`, no `cwd`. Use `cd` or inline env in the command string.
|
|
1113
|
+
- **Sandbox hooks** accept `{ command: string; sudo?: boolean }` — set `sudo: true` for elevated privileges.
|
|
1114
|
+
- Within each hook point, sandbox hooks run in parallel; host hooks within `onSandboxReady` also run in parallel with sandbox hooks. `host.onWorktreeReady` hooks run sequentially in declared order.
|
|
1115
|
+
- If any hook exits non-zero, setup fails fast.
|
|
1116
|
+
|
|
1041
1117
|
## Development
|
|
1042
1118
|
|
|
1043
1119
|
```bash
|
package/dist/AgentProvider.d.ts
CHANGED
|
@@ -8,16 +8,23 @@ export type ParsedStreamEvent = {
|
|
|
8
8
|
type: "tool_call";
|
|
9
9
|
name: string;
|
|
10
10
|
args: string;
|
|
11
|
+
} | {
|
|
12
|
+
type: "session_id";
|
|
13
|
+
sessionId: string;
|
|
11
14
|
};
|
|
12
15
|
/** Options passed to buildPrintCommand and buildInteractiveArgs. */
|
|
13
16
|
export interface AgentCommandOptions {
|
|
14
17
|
readonly prompt: string;
|
|
15
18
|
readonly dangerouslySkipPermissions: boolean;
|
|
19
|
+
/** When set, the agent should resume the given session ID instead of starting fresh. */
|
|
20
|
+
readonly resumeSession?: string;
|
|
16
21
|
}
|
|
17
22
|
export interface AgentProvider {
|
|
18
23
|
readonly name: string;
|
|
19
24
|
/** Environment variables injected by this agent provider. Merged at launch time with env resolver and sandbox provider env. */
|
|
20
25
|
readonly env: Record<string, string>;
|
|
26
|
+
/** When true, session capture is enabled for this provider. Default: true for Claude Code, false for others. */
|
|
27
|
+
readonly captureSessions: boolean;
|
|
21
28
|
buildPrintCommand(options: AgentCommandOptions): string;
|
|
22
29
|
buildInteractiveArgs?(options: AgentCommandOptions): string[];
|
|
23
30
|
parseStreamLine(line: string): ParsedStreamEvent[];
|
|
@@ -46,6 +53,8 @@ export interface ClaudeCodeOptions {
|
|
|
46
53
|
readonly effort?: "low" | "medium" | "high" | "max";
|
|
47
54
|
/** Environment variables injected by this agent provider. */
|
|
48
55
|
readonly env?: Record<string, string>;
|
|
56
|
+
/** When false, session capture is disabled. Default: true. */
|
|
57
|
+
readonly captureSessions?: boolean;
|
|
49
58
|
}
|
|
50
59
|
export declare const claudeCode: (model: string, options?: ClaudeCodeOptions | undefined) => AgentProvider;
|
|
51
60
|
//# sourceMappingURL=AgentProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentProvider.d.ts","sourceRoot":"","sources":["../src/AgentProvider.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentProvider.d.ts","sourceRoot":"","sources":["../src/AgentProvider.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAoE9C,oEAAoE;AACpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC;IAC7C,wFAAwF;IACxF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+HAA+H;IAC/H,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,gHAAgH;IAChH,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAAC;IACxD,oBAAoB,CAAC,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAAC;IAC9D,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAC;CACpD;AAED,eAAO,MAAM,aAAa,oBAAoB,CAAC;AA2D/C,yCAAyC;AACzC,MAAM,WAAW,SAAS;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,eAAO,MAAM,EAAE,mEAkBb,CAAC;AAwCH,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACtD,6DAA6D;IAC7D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,eAAO,MAAM,KAAK,sEAwBhB,CAAC;AAMH,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,eAAO,MAAM,QAAQ,yEAqBnB,CAAC;AAMH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IACpD,6DAA6D;IAC7D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,8DAA8D;IAC9D,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,eAAO,MAAM,UAAU,2EAsCrB,CAAC"}
|
package/dist/AgentProvider.js
CHANGED
|
@@ -46,6 +46,11 @@ const parseStreamJsonLine = (line) => {
|
|
|
46
46
|
if (obj.type === "result" && typeof obj.result === "string") {
|
|
47
47
|
return [{ type: "result", result: obj.result }];
|
|
48
48
|
}
|
|
49
|
+
if (obj.type === "system" &&
|
|
50
|
+
obj.subtype === "init" &&
|
|
51
|
+
typeof obj.session_id === "string") {
|
|
52
|
+
return [{ type: "session_id", sessionId: obj.session_id }];
|
|
53
|
+
}
|
|
49
54
|
}
|
|
50
55
|
catch {
|
|
51
56
|
// Not valid JSON — skip
|
|
@@ -111,6 +116,7 @@ const parsePiStreamLine = (line) => {
|
|
|
111
116
|
export const pi = (model, options) => ({
|
|
112
117
|
name: "pi",
|
|
113
118
|
env: options?.env ?? {},
|
|
119
|
+
captureSessions: false,
|
|
114
120
|
buildPrintCommand({ prompt }) {
|
|
115
121
|
return `pi -p --mode json --no-session --model ${shellEscape(model)} ${shellEscape(prompt)}`;
|
|
116
122
|
},
|
|
@@ -158,6 +164,7 @@ const parseCodexStreamLine = (line) => {
|
|
|
158
164
|
export const codex = (model, options) => ({
|
|
159
165
|
name: "codex",
|
|
160
166
|
env: options?.env ?? {},
|
|
167
|
+
captureSessions: false,
|
|
161
168
|
buildPrintCommand({ prompt }) {
|
|
162
169
|
const effortFlag = options?.effort
|
|
163
170
|
? ` -c ${shellEscape(`model_reasoning_effort="${options.effort}"`)}`
|
|
@@ -177,6 +184,7 @@ export const codex = (model, options) => ({
|
|
|
177
184
|
export const opencode = (model, options) => ({
|
|
178
185
|
name: "opencode",
|
|
179
186
|
env: options?.env ?? {},
|
|
187
|
+
captureSessions: false,
|
|
180
188
|
buildPrintCommand({ prompt }) {
|
|
181
189
|
return `opencode run --model ${shellEscape(model)} ${shellEscape(prompt)}`;
|
|
182
190
|
},
|
|
@@ -193,12 +201,16 @@ export const opencode = (model, options) => ({
|
|
|
193
201
|
export const claudeCode = (model, options) => ({
|
|
194
202
|
name: "claude-code",
|
|
195
203
|
env: options?.env ?? {},
|
|
196
|
-
|
|
204
|
+
captureSessions: options?.captureSessions ?? true,
|
|
205
|
+
buildPrintCommand({ prompt, dangerouslySkipPermissions, resumeSession, }) {
|
|
197
206
|
const skipPerms = dangerouslySkipPermissions
|
|
198
207
|
? " --dangerously-skip-permissions"
|
|
199
208
|
: "";
|
|
200
209
|
const effortFlag = options?.effort ? ` --effort ${options.effort}` : "";
|
|
201
|
-
|
|
210
|
+
const resumeFlag = resumeSession
|
|
211
|
+
? ` --resume ${shellEscape(resumeSession)}`
|
|
212
|
+
: "";
|
|
213
|
+
return `claude --print --verbose${skipPerms} --output-format stream-json --model ${shellEscape(model)}${effortFlag}${resumeFlag} -p ${shellEscape(prompt)}`;
|
|
202
214
|
},
|
|
203
215
|
buildInteractiveArgs({ prompt, dangerouslySkipPermissions, }) {
|
|
204
216
|
const args = ["claude"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentProvider.js","sourceRoot":"","sources":["../src/AgentProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AgentProvider.js","sourceRoot":"","sources":["../src/AgentProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorHandler.d.ts","sourceRoot":"","sources":["../src/ErrorHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"ErrorHandler.d.ts","sourceRoot":"","sources":["../src/ErrorHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,iCAsC9B,CAAC;AASF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,4FA4BqB,CAAC"}
|
package/dist/ErrorHandler.js
CHANGED
|
@@ -38,6 +38,8 @@ export const formatErrorMessage = (error) => {
|
|
|
38
38
|
case "PromptExpansionTimeoutError":
|
|
39
39
|
case "CommitCollectionTimeoutError":
|
|
40
40
|
case "MergeToHostTimeoutError":
|
|
41
|
+
case "SessionCaptureError":
|
|
42
|
+
case "CwdError":
|
|
41
43
|
return error.message;
|
|
42
44
|
}
|
|
43
45
|
};
|
|
@@ -75,5 +77,7 @@ Effect.catchTags(effect, {
|
|
|
75
77
|
PromptExpansionTimeoutError: showErrorAndExit,
|
|
76
78
|
CommitCollectionTimeoutError: showErrorAndExit,
|
|
77
79
|
MergeToHostTimeoutError: showErrorAndExit,
|
|
80
|
+
SessionCaptureError: showErrorAndExit,
|
|
81
|
+
CwdError: showErrorAndExit,
|
|
78
82
|
});
|
|
79
83
|
//# sourceMappingURL=ErrorHandler.js.map
|
package/dist/ErrorHandler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorHandler.js","sourceRoot":"","sources":["../src/ErrorHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAmB,EAAU,EAAE;IAChE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,WAAW;YACd,OAAO,8BAA8B,KAAK,CAAC,OAAO,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1E,KAAK,eAAe;YAClB,OAAO,2BAA2B,KAAK,CAAC,OAAO,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QACvE,KAAK,WAAW;YACd,OAAO,qBAAqB,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9C,KAAK,aAAa;YAChB,OAAO,4BAA4B,KAAK,CAAC,OAAO,sBAAsB,CAAC;QACzE,KAAK,aAAa;YAChB,OAAO,4BAA4B,KAAK,CAAC,OAAO,sBAAsB,CAAC;QACzE,KAAK,WAAW;YACd,OAAO,oBAAoB,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7C,KAAK,eAAe;YAClB,OAAO,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3D,KAAK,aAAa;YAChB,OAAO,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC;QACtD,KAAK,YAAY;YACf,OAAO,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC;QACrD,KAAK,gBAAgB;YACnB,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5B,KAAK,WAAW;YACd,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5B,KAAK,uBAAuB,CAAC;QAC7B,KAAK,sBAAsB,CAAC;QAC5B,KAAK,4BAA4B,CAAC;QAClC,KAAK,4BAA4B,CAAC;QAClC,KAAK,oBAAoB,CAAC;QAC1B,KAAK,kBAAkB,CAAC;QACxB,KAAK,sBAAsB,CAAC;QAC5B,KAAK,6BAA6B,CAAC;QACnC,KAAK,8BAA8B,CAAC;QACpC,KAAK,yBAAyB;
|
|
1
|
+
{"version":3,"file":"ErrorHandler.js","sourceRoot":"","sources":["../src/ErrorHandler.ts"],"names":[],"mappings":"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"}
|
package/dist/Orchestrator.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { SandboxError } from "./errors.js";
|
|
|
4
4
|
import { SandboxFactory } from "./SandboxFactory.js";
|
|
5
5
|
import { type SandboxHooks } from "./SandboxLifecycle.js";
|
|
6
6
|
import type { AgentProvider } from "./AgentProvider.js";
|
|
7
|
+
import { SessionPaths } from "./SessionPaths.js";
|
|
7
8
|
export type { ParsedStreamEvent } from "./AgentProvider.js";
|
|
8
9
|
export interface OrchestrateOptions {
|
|
9
10
|
readonly hostRepoDir: string;
|
|
@@ -19,9 +20,19 @@ export interface OrchestrateOptions {
|
|
|
19
20
|
readonly name?: string;
|
|
20
21
|
/** @internal Test-only override for the idle warning interval in milliseconds. Default: 60000 (1 minute). */
|
|
21
22
|
readonly _idleWarningIntervalMs?: number;
|
|
23
|
+
/** Resume a prior Claude Code session by ID. Applied to iteration 1 only. */
|
|
24
|
+
readonly resumeSession?: string;
|
|
25
|
+
}
|
|
26
|
+
/** Per-iteration result carrying an optional session ID. */
|
|
27
|
+
export interface IterationResult {
|
|
28
|
+
/** Claude Code session ID extracted from the init line, or undefined for non-Claude agents. */
|
|
29
|
+
readonly sessionId?: string;
|
|
30
|
+
/** Absolute host path to the captured session JSONL, or undefined when capture is disabled or provider is non-Claude. */
|
|
31
|
+
readonly sessionFilePath?: string;
|
|
22
32
|
}
|
|
23
33
|
export interface OrchestrateResult {
|
|
24
|
-
|
|
34
|
+
/** Per-iteration results (use `iterations.length` for the count). */
|
|
35
|
+
readonly iterations: IterationResult[];
|
|
25
36
|
/** The matched completion signal string, or undefined if none fired. */
|
|
26
37
|
readonly completionSignal?: string;
|
|
27
38
|
readonly stdout: string;
|
|
@@ -32,5 +43,5 @@ export interface OrchestrateResult {
|
|
|
32
43
|
/** Host path to the preserved worktree from the last iteration, set when the worktree was left behind due to uncommitted changes on a successful run. */
|
|
33
44
|
readonly preservedWorktreePath?: string;
|
|
34
45
|
}
|
|
35
|
-
export declare const orchestrate: (options: OrchestrateOptions) => Effect.Effect<OrchestrateResult, SandboxError, Display | SandboxFactory>;
|
|
46
|
+
export declare const orchestrate: (options: OrchestrateOptions) => Effect.Effect<OrchestrateResult, SandboxError, Display | SandboxFactory | SessionPaths>;
|
|
36
47
|
//# sourceMappingURL=Orchestrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Orchestrator.d.ts","sourceRoot":"","sources":["../src/Orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Orchestrator.d.ts","sourceRoot":"","sources":["../src/Orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAOvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAoB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAgH5D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9C,6IAA6I;IAC7I,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,wEAAwE;IACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,6GAA6G;IAC7G,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAC9B,+FAA+F;IAC/F,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,yHAAyH;IACzH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,eAAe,EAAE,CAAC;IACvC,wEAAwE;IACxE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yJAAyJ;IACzJ,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC;AAED,eAAO,MAAM,WAAW,0HAiMvB,CAAC"}
|