@ai-hero/sandcastle 0.1.5 → 0.1.7
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 +59 -30
- package/dist/ErrorHandler.js +1 -1
- package/dist/ErrorHandler.js.map +1 -1
- package/dist/Orchestrator.d.ts +5 -4
- package/dist/Orchestrator.d.ts.map +1 -1
- package/dist/Orchestrator.js +64 -41
- package/dist/Orchestrator.js.map +1 -1
- package/dist/PromptArgumentSubstitution.d.ts +11 -1
- package/dist/PromptArgumentSubstitution.d.ts.map +1 -1
- package/dist/PromptArgumentSubstitution.js +25 -2
- package/dist/PromptArgumentSubstitution.js.map +1 -1
- package/dist/SandboxFactory.d.ts.map +1 -1
- package/dist/SandboxFactory.js +55 -24
- package/dist/SandboxFactory.js.map +1 -1
- package/dist/errors.d.ts +6 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/run.d.ts +7 -7
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +21 -12
- package/dist/run.js.map +1 -1
- package/dist/templates/parallel-planner/main.ts +28 -39
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://res.cloudinary.com/total-typescript/image/upload/v1775033787/readme-sandcastle-ondark_2x.png">
|
|
4
|
+
<source media="(prefers-color-scheme: light)" srcset="https://res.cloudinary.com/total-typescript/image/upload/v1775033787/readme-sandcastle-onlight_2x.png">
|
|
5
|
+
<img alt="Sandcastle" src="https://res.cloudinary.com/total-typescript/image/upload/v1775033787/readme-sandcastle-onlight_2x.png" height="200" style="margin-bottom: 20px;">
|
|
6
|
+
</picture>
|
|
7
|
+
</div>
|
|
2
8
|
|
|
3
9
|
A TypeScript library for orchestrating AI coding agents in isolated Docker containers. Sandcastle handles the hard parts — building worktrees, invoking the agent, and merging commits back — so you can run AFK agents with a single `run()`.
|
|
4
10
|
|
|
@@ -101,16 +107,16 @@ const result = await run({
|
|
|
101
107
|
logging: { type: "file", path: ".sandcastle/logs/my-run.log" },
|
|
102
108
|
// logging: { type: "stdout" }, // OR render an interactive UI in the terminal
|
|
103
109
|
|
|
104
|
-
// String the agent emits to end the iteration loop early.
|
|
110
|
+
// String (or array of strings) the agent emits to end the iteration loop early.
|
|
105
111
|
// Default: "<promise>COMPLETE</promise>"
|
|
106
112
|
completionSignal: "<promise>COMPLETE</promise>",
|
|
107
113
|
|
|
108
|
-
//
|
|
109
|
-
|
|
114
|
+
// Idle timeout in seconds — resets whenever the agent produces output. Default: 300 (5 minutes)
|
|
115
|
+
idleTimeoutSeconds: 300,
|
|
110
116
|
});
|
|
111
117
|
|
|
112
118
|
console.log(result.iterationsRun); // number of iterations executed
|
|
113
|
-
console.log(result.
|
|
119
|
+
console.log(result.completionSignal); // matched signal string, or undefined if none fired
|
|
114
120
|
console.log(result.commits); // array of { sha } for commits created
|
|
115
121
|
console.log(result.branch); // target branch name
|
|
116
122
|
```
|
|
@@ -186,22 +192,45 @@ Prompt argument substitution runs on the host before shell expression expansion,
|
|
|
186
192
|
|
|
187
193
|
A `{{KEY}}` placeholder with no matching prompt argument is an error. Unused prompt arguments produce a warning.
|
|
188
194
|
|
|
195
|
+
### Built-in prompt arguments
|
|
196
|
+
|
|
197
|
+
Sandcastle automatically injects two built-in prompt arguments into every prompt:
|
|
198
|
+
|
|
199
|
+
| Placeholder | Value |
|
|
200
|
+
| ------------------- | -------------------------------------------------------------------- |
|
|
201
|
+
| `{{SOURCE_BRANCH}}` | The branch the agent works on inside the worktree (temp or explicit) |
|
|
202
|
+
| `{{TARGET_BRANCH}}` | The host's active branch at `run()` time |
|
|
203
|
+
|
|
204
|
+
Use them in your prompt without passing them via `promptArgs`:
|
|
205
|
+
|
|
206
|
+
```markdown
|
|
207
|
+
You are working on {{SOURCE_BRANCH}}. When diffing, compare against {{TARGET_BRANCH}}.
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Passing `SOURCE_BRANCH` or `TARGET_BRANCH` in `promptArgs` is an error — built-in prompt arguments cannot be overridden.
|
|
211
|
+
|
|
189
212
|
### Early termination with `<promise>COMPLETE</promise>`
|
|
190
213
|
|
|
191
214
|
When the agent outputs `<promise>COMPLETE</promise>`, the orchestrator stops the iteration loop early. This is a convention you document in your prompt for the agent to follow — the engine never injects it.
|
|
192
215
|
|
|
193
216
|
This is useful for task-based workflows where the agent should stop once it has finished, rather than running all remaining iterations.
|
|
194
217
|
|
|
195
|
-
You can override the default signal by passing `completionSignal` to `run()
|
|
218
|
+
You can override the default signal by passing `completionSignal` to `run()`. It accepts a single string or an array of strings:
|
|
196
219
|
|
|
197
220
|
```ts
|
|
198
221
|
await run({
|
|
199
222
|
// ...
|
|
200
223
|
completionSignal: "DONE",
|
|
201
224
|
});
|
|
225
|
+
|
|
226
|
+
// Or pass multiple signals — the loop stops on the first match:
|
|
227
|
+
await run({
|
|
228
|
+
// ...
|
|
229
|
+
completionSignal: ["TASK_COMPLETE", "TASK_ABORTED"],
|
|
230
|
+
});
|
|
202
231
|
```
|
|
203
232
|
|
|
204
|
-
Tell the agent to output your chosen string in the prompt, and the orchestrator will stop when it detects
|
|
233
|
+
Tell the agent to output your chosen string(s) in the prompt, and the orchestrator will stop when it detects any of them. The matched signal is returned as `result.completionSignal`.
|
|
205
234
|
|
|
206
235
|
### Templates
|
|
207
236
|
|
|
@@ -257,32 +286,32 @@ Removes the Docker image.
|
|
|
257
286
|
|
|
258
287
|
### `RunOptions`
|
|
259
288
|
|
|
260
|
-
| Option
|
|
261
|
-
|
|
|
262
|
-
| `prompt`
|
|
263
|
-
| `promptFile`
|
|
264
|
-
| `maxIterations`
|
|
265
|
-
| `hooks`
|
|
266
|
-
| `branch`
|
|
267
|
-
| `model`
|
|
268
|
-
| `imageName`
|
|
269
|
-
| `name`
|
|
270
|
-
| `promptArgs`
|
|
271
|
-
| `copyToSandbox`
|
|
272
|
-
| `logging`
|
|
273
|
-
| `completionSignal`
|
|
274
|
-
| `
|
|
289
|
+
| Option | Type | Default | Description |
|
|
290
|
+
| -------------------- | ------------------ | ----------------------------- | --------------------------------------------------------------------------- |
|
|
291
|
+
| `prompt` | string | — | Inline prompt (mutually exclusive with `promptFile`) |
|
|
292
|
+
| `promptFile` | string | — | Path to prompt file (mutually exclusive with `prompt`) |
|
|
293
|
+
| `maxIterations` | number | `1` | Maximum iterations to run |
|
|
294
|
+
| `hooks` | object | — | Lifecycle hooks (`onSandboxReady`) |
|
|
295
|
+
| `branch` | string | — | Target branch for sandbox work |
|
|
296
|
+
| `model` | string | `claude-opus-4-6` | Model to use for the agent |
|
|
297
|
+
| `imageName` | string | `sandcastle:<repo-dir-name>` | Docker image name for the sandbox |
|
|
298
|
+
| `name` | string | — | Display name for the run, shown as a prefix in log output |
|
|
299
|
+
| `promptArgs` | PromptArgs | — | Key-value map for `{{KEY}}` placeholder substitution |
|
|
300
|
+
| `copyToSandbox` | string[] | — | Host-relative file paths to copy into the worktree before start |
|
|
301
|
+
| `logging` | object | file (auto-generated) | `{ type: 'file', path }` or `{ type: 'stdout' }` |
|
|
302
|
+
| `completionSignal` | string \| string[] | `<promise>COMPLETE</promise>` | String or array of strings the agent emits to stop the iteration loop early |
|
|
303
|
+
| `idleTimeoutSeconds` | number | `300` | Idle timeout in seconds — resets on each agent output event |
|
|
275
304
|
|
|
276
305
|
### `RunResult`
|
|
277
306
|
|
|
278
|
-
| Field
|
|
279
|
-
|
|
|
280
|
-
| `iterationsRun`
|
|
281
|
-
| `
|
|
282
|
-
| `stdout`
|
|
283
|
-
| `commits`
|
|
284
|
-
| `branch`
|
|
285
|
-
| `logFilePath`
|
|
307
|
+
| Field | Type | Description |
|
|
308
|
+
| ------------------ | ----------- | ------------------------------------------------------------------ |
|
|
309
|
+
| `iterationsRun` | number | Number of iterations that were executed |
|
|
310
|
+
| `completionSignal` | string? | The matched completion signal string, or `undefined` if none fired |
|
|
311
|
+
| `stdout` | string | Agent output |
|
|
312
|
+
| `commits` | `{ sha }[]` | Commits created during the run |
|
|
313
|
+
| `branch` | string | Target branch name |
|
|
314
|
+
| `logFilePath` | string? | Path to the log file (only when logging to a file) |
|
|
286
315
|
|
|
287
316
|
Environment variables are resolved automatically from `.sandcastle/.env` and `process.env` — no need to pass them to the API. The required variables depend on the **agent provider** (see `sandcastle init` output for details).
|
|
288
317
|
|
package/dist/ErrorHandler.js
CHANGED
|
@@ -27,7 +27,7 @@ export const formatErrorMessage = (error) => {
|
|
|
27
27
|
case "InitError":
|
|
28
28
|
return `${error.message}`;
|
|
29
29
|
case "TimeoutError":
|
|
30
|
-
return
|
|
30
|
+
return error.message;
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
33
|
const showErrorAndExit = (error) => Effect.gen(function* () {
|
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,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,cAAc;YACjB,OAAO,
|
|
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,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,cAAc;YACjB,OAAO,KAAK,CAAC,OAAO,CAAC;IACzB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,KAAmB,EAAE,EAAE,CAC/C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;IACzB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAU,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEL;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,MAA8B,EAC2B,EAAE;AAC3D,8DAA8D;AAC9D,MAAM,CAAC,SAAS,CAAC,MAA2C,EAAE;IAC5D,SAAS,EAAE,gBAAgB;IAC3B,aAAa,EAAE,gBAAgB;IAC/B,SAAS,EAAE,gBAAgB;IAC3B,WAAW,EAAE,gBAAgB;IAC7B,SAAS,EAAE,gBAAgB;IAC3B,aAAa,EAAE,gBAAgB;IAC/B,WAAW,EAAE,gBAAgB;IAC7B,UAAU,EAAE,gBAAgB;IAC5B,cAAc,EAAE,gBAAgB;IAChC,SAAS,EAAE,gBAAgB;IAC3B,YAAY,EAAE,gBAAgB;CAC/B,CAA4D,CAAC"}
|
package/dist/Orchestrator.d.ts
CHANGED
|
@@ -43,15 +43,16 @@ export interface OrchestrateOptions {
|
|
|
43
43
|
readonly prompt: string;
|
|
44
44
|
readonly branch?: string;
|
|
45
45
|
readonly model?: string;
|
|
46
|
-
readonly completionSignal?: string;
|
|
47
|
-
/**
|
|
48
|
-
readonly
|
|
46
|
+
readonly completionSignal?: string | string[];
|
|
47
|
+
/** Idle timeout in seconds. If the agent produces no output for this long, it fails with TimeoutError. Default: 300 (5 minutes) */
|
|
48
|
+
readonly idleTimeoutSeconds?: number;
|
|
49
49
|
/** Optional name for the run, prepended to status messages as [name] */
|
|
50
50
|
readonly name?: string;
|
|
51
51
|
}
|
|
52
52
|
export interface OrchestrateResult {
|
|
53
53
|
readonly iterationsRun: number;
|
|
54
|
-
|
|
54
|
+
/** The matched completion signal string, or undefined if none fired. */
|
|
55
|
+
readonly completionSignal?: string;
|
|
55
56
|
readonly stdout: string;
|
|
56
57
|
readonly commits: {
|
|
57
58
|
sha: string;
|
|
@@ -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;AAGvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEhF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,aAAa,oBAAoB,CAAC;AA6B/C,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,CAAC;IAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAUtD,yDAAyD;AACzD,eAAO,MAAM,mBAAmB,uCA+C/B,CAAC;AAeF;;;GAGG;AACH,eAAO,MAAM,cAAc;;;QAS1B,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;AAGvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEhF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,aAAa,oBAAoB,CAAC;AA6B/C,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,CAAC;IAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAUtD,yDAAyD;AACzD,eAAO,MAAM,mBAAmB,uCA+C/B,CAAC;AAeF;;;GAGG;AACH,eAAO,MAAM,cAAc;;;QAS1B,CAAC;AA4FF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,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,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9C,mIAAmI;IACnI,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,wEAAwE;IACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,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;CACzB;AAED,eAAO,MAAM,WAAW,2GAsHvB,CAAC"}
|
package/dist/Orchestrator.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Deferred, Effect } from "effect";
|
|
2
2
|
import { Display } from "./Display.js";
|
|
3
3
|
import { preprocessPrompt } from "./PromptPreprocessor.js";
|
|
4
4
|
import { AgentError, TimeoutError } from "./errors.js";
|
|
@@ -99,29 +99,54 @@ export const formatToolCall = (name, input) => {
|
|
|
99
99
|
return null;
|
|
100
100
|
return { name, formattedArgs: arg };
|
|
101
101
|
};
|
|
102
|
-
const invokeAgent = (sandbox, sandboxRepoDir, prompt, model, onText, onToolCall) => Effect.gen(function* () {
|
|
102
|
+
const invokeAgent = (sandbox, sandboxRepoDir, prompt, model, idleTimeoutMs, onText, onToolCall) => Effect.gen(function* () {
|
|
103
103
|
let resultText = "";
|
|
104
104
|
let tokenUsage = null;
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
105
|
+
// Deferred that will be failed when the idle timer fires
|
|
106
|
+
const timeoutSignal = yield* Deferred.make();
|
|
107
|
+
let timeoutHandle = null;
|
|
108
|
+
const idleTimeoutSeconds = idleTimeoutMs / 1000;
|
|
109
|
+
const resetIdleTimer = () => {
|
|
110
|
+
if (timeoutHandle !== null)
|
|
111
|
+
clearTimeout(timeoutHandle);
|
|
112
|
+
timeoutHandle = setTimeout(() => {
|
|
113
|
+
Effect.runPromise(Deferred.fail(timeoutSignal, new TimeoutError({
|
|
114
|
+
message: `Agent idle for ${idleTimeoutSeconds} seconds — no output received. Consider increasing the idle timeout with --idle-timeout.`,
|
|
115
|
+
idleTimeoutSeconds,
|
|
116
|
+
}))).catch(() => { });
|
|
117
|
+
}, idleTimeoutMs);
|
|
118
|
+
};
|
|
119
|
+
resetIdleTimer();
|
|
120
|
+
const execEffect = Effect.gen(function* () {
|
|
121
|
+
const execResult = yield* sandbox.execStreaming(`claude --print --verbose --dangerously-skip-permissions --output-format stream-json --model ${model} -p ${shellEscape(prompt)}`, (line) => {
|
|
122
|
+
for (const parsed of parseStreamJsonLine(line)) {
|
|
123
|
+
if (parsed.type === "text") {
|
|
124
|
+
resetIdleTimer();
|
|
125
|
+
onText(parsed.text);
|
|
126
|
+
}
|
|
127
|
+
else if (parsed.type === "result") {
|
|
128
|
+
resultText = parsed.result;
|
|
129
|
+
tokenUsage = parsed.usage;
|
|
130
|
+
}
|
|
131
|
+
else if (parsed.type === "tool_call") {
|
|
132
|
+
resetIdleTimer();
|
|
133
|
+
onToolCall(parsed.name, parsed.args);
|
|
134
|
+
}
|
|
116
135
|
}
|
|
136
|
+
}, { cwd: sandboxRepoDir });
|
|
137
|
+
if (execResult.exitCode !== 0) {
|
|
138
|
+
return yield* Effect.fail(new AgentError({
|
|
139
|
+
message: `Claude exited with code ${execResult.exitCode}:\n${execResult.stderr}`,
|
|
140
|
+
}));
|
|
117
141
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
142
|
+
return { result: resultText || execResult.stdout, usage: tokenUsage };
|
|
143
|
+
}).pipe(Effect.ensuring(Effect.sync(() => {
|
|
144
|
+
if (timeoutHandle !== null) {
|
|
145
|
+
clearTimeout(timeoutHandle);
|
|
146
|
+
timeoutHandle = null;
|
|
147
|
+
}
|
|
148
|
+
})));
|
|
149
|
+
return yield* Effect.raceFirst(execEffect, Deferred.await(timeoutSignal));
|
|
125
150
|
});
|
|
126
151
|
const shellEscape = (s) => "'" + s.replace(/'/g, "'\\''") + "'";
|
|
127
152
|
const formatNumber = (n) => n.toLocaleString("en-US");
|
|
@@ -130,15 +155,24 @@ const formatUsageRows = (usage) => ({
|
|
|
130
155
|
Turns: `${usage.num_turns}`,
|
|
131
156
|
});
|
|
132
157
|
const DEFAULT_COMPLETION_SIGNAL = "<promise>COMPLETE</promise>";
|
|
133
|
-
const
|
|
158
|
+
const DEFAULT_IDLE_TIMEOUT_SECONDS = 5 * 60; // 300 seconds
|
|
134
159
|
export const orchestrate = (options) => {
|
|
135
|
-
const
|
|
160
|
+
const idleTimeoutMs = (options.idleTimeoutSeconds ?? DEFAULT_IDLE_TIMEOUT_SECONDS) * 1000;
|
|
136
161
|
return Effect.gen(function* () {
|
|
137
162
|
const factory = yield* SandboxFactory;
|
|
138
163
|
const display = yield* Display;
|
|
139
164
|
const { hostRepoDir, sandboxRepoDir, iterations, hooks, prompt, branch } = options;
|
|
140
165
|
const resolvedModel = options.model ?? DEFAULT_MODEL;
|
|
141
|
-
|
|
166
|
+
let completionSignals;
|
|
167
|
+
if (options.completionSignal === undefined) {
|
|
168
|
+
completionSignals = [DEFAULT_COMPLETION_SIGNAL];
|
|
169
|
+
}
|
|
170
|
+
else if (Array.isArray(options.completionSignal)) {
|
|
171
|
+
completionSignals = options.completionSignal;
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
completionSignals = [options.completionSignal];
|
|
175
|
+
}
|
|
142
176
|
const label = (msg) => options.name ? `[${options.name}] ${msg}` : msg;
|
|
143
177
|
const allCommits = [];
|
|
144
178
|
let allStdout = "";
|
|
@@ -162,32 +196,27 @@ export const orchestrate = (options) => {
|
|
|
162
196
|
const onToolCall = (name, formattedArgs) => {
|
|
163
197
|
Effect.runPromise(display.toolCall(name, formattedArgs));
|
|
164
198
|
};
|
|
165
|
-
const { result: agentOutput, usage } = yield* invokeAgent(ctx.sandbox, ctx.sandboxRepoDir, fullPrompt, resolvedModel, onText, onToolCall);
|
|
199
|
+
const { result: agentOutput, usage } = yield* invokeAgent(ctx.sandbox, ctx.sandboxRepoDir, fullPrompt, resolvedModel, idleTimeoutMs, onText, onToolCall);
|
|
166
200
|
yield* display.status(label("Agent stopped"), "info");
|
|
167
201
|
// Log usage summary
|
|
168
202
|
if (usage) {
|
|
169
203
|
yield* display.summary("Token Usage", formatUsageRows(usage));
|
|
170
204
|
}
|
|
171
205
|
// Check completion signal
|
|
172
|
-
|
|
173
|
-
return {
|
|
174
|
-
wasCompletionSignalDetected: true,
|
|
175
|
-
stdout: agentOutput,
|
|
176
|
-
};
|
|
177
|
-
}
|
|
206
|
+
const matchedSignal = completionSignals.find((sig) => agentOutput.includes(sig));
|
|
178
207
|
return {
|
|
179
|
-
|
|
208
|
+
completionSignal: matchedSignal,
|
|
180
209
|
stdout: agentOutput,
|
|
181
210
|
};
|
|
182
211
|
})));
|
|
183
212
|
allCommits.push(...lifecycleResult.commits);
|
|
184
213
|
allStdout += lifecycleResult.result.stdout;
|
|
185
214
|
resolvedBranch = lifecycleResult.branch;
|
|
186
|
-
if (lifecycleResult.result.
|
|
215
|
+
if (lifecycleResult.result.completionSignal !== undefined) {
|
|
187
216
|
yield* display.status(label(`Agent signaled completion after ${i} iteration(s).`), "success");
|
|
188
217
|
return {
|
|
189
218
|
iterationsRun: i,
|
|
190
|
-
|
|
219
|
+
completionSignal: lifecycleResult.result.completionSignal,
|
|
191
220
|
stdout: allStdout,
|
|
192
221
|
commits: allCommits,
|
|
193
222
|
branch: resolvedBranch,
|
|
@@ -197,17 +226,11 @@ export const orchestrate = (options) => {
|
|
|
197
226
|
yield* display.status(label(`Reached max iterations (${iterations}).`), "info");
|
|
198
227
|
return {
|
|
199
228
|
iterationsRun: iterations,
|
|
200
|
-
|
|
229
|
+
completionSignal: undefined,
|
|
201
230
|
stdout: allStdout,
|
|
202
231
|
commits: allCommits,
|
|
203
232
|
branch: resolvedBranch,
|
|
204
233
|
};
|
|
205
|
-
})
|
|
206
|
-
duration: Duration.seconds(timeoutSeconds),
|
|
207
|
-
onTimeout: () => new TimeoutError({
|
|
208
|
-
message: `Run timed out after ${timeoutSeconds / 60} minutes`,
|
|
209
|
-
timeoutSeconds,
|
|
210
|
-
}),
|
|
211
|
-
}));
|
|
234
|
+
});
|
|
212
235
|
};
|
|
213
236
|
//# sourceMappingURL=Orchestrator.js.map
|
package/dist/Orchestrator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Orchestrator.js","sourceRoot":"","sources":["../src/Orchestrator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Orchestrator.js","sourceRoot":"","sources":["../src/Orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,5 +7,15 @@ import { PromptError } from "./errors.js";
|
|
|
7
7
|
* replaces it before the prompt is passed to the agent.
|
|
8
8
|
*/
|
|
9
9
|
export type PromptArgs = Record<string, string | number | boolean>;
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Prompt argument keys that Sandcastle injects automatically.
|
|
12
|
+
* These cannot be overridden via `promptArgs`.
|
|
13
|
+
*/
|
|
14
|
+
export declare const BUILT_IN_PROMPT_ARG_KEYS: readonly ["SOURCE_BRANCH", "TARGET_BRANCH"];
|
|
15
|
+
/**
|
|
16
|
+
* Validates that the user has not provided any built-in prompt argument keys.
|
|
17
|
+
* Fails with a PromptError if any built-in key is found in `args`.
|
|
18
|
+
*/
|
|
19
|
+
export declare const validateNoBuiltInArgOverride: (args: PromptArgs) => Effect.Effect<void, PromptError, never>;
|
|
20
|
+
export declare const substitutePromptArgs: (prompt: string, args: PromptArgs, silentKeys?: ReadonlySet<string> | undefined) => Effect.Effect<string, PromptError, Display>;
|
|
11
21
|
//# sourceMappingURL=PromptArgumentSubstitution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptArgumentSubstitution.d.ts","sourceRoot":"","sources":["../src/PromptArgumentSubstitution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"PromptArgumentSubstitution.d.ts","sourceRoot":"","sources":["../src/PromptArgumentSubstitution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,6CAG3B,CAAC;AAIX;;;GAGG;AACH,eAAO,MAAM,4BAA4B,+DAaxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,iIA8ChC,CAAC"}
|
|
@@ -1,8 +1,30 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
import { Display } from "./Display.js";
|
|
3
3
|
import { PromptError } from "./errors.js";
|
|
4
|
+
/**
|
|
5
|
+
* Prompt argument keys that Sandcastle injects automatically.
|
|
6
|
+
* These cannot be overridden via `promptArgs`.
|
|
7
|
+
*/
|
|
8
|
+
export const BUILT_IN_PROMPT_ARG_KEYS = [
|
|
9
|
+
"SOURCE_BRANCH",
|
|
10
|
+
"TARGET_BRANCH",
|
|
11
|
+
];
|
|
4
12
|
const PLACEHOLDER_PATTERN = /\{\{([A-Za-z_][A-Za-z0-9_]*)\}\}/g;
|
|
5
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Validates that the user has not provided any built-in prompt argument keys.
|
|
15
|
+
* Fails with a PromptError if any built-in key is found in `args`.
|
|
16
|
+
*/
|
|
17
|
+
export const validateNoBuiltInArgOverride = (args) => {
|
|
18
|
+
for (const key of BUILT_IN_PROMPT_ARG_KEYS) {
|
|
19
|
+
if (key in args) {
|
|
20
|
+
return Effect.fail(new PromptError({
|
|
21
|
+
message: `"${key}" is a built-in prompt argument and cannot be overridden via promptArgs`,
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return Effect.void;
|
|
26
|
+
};
|
|
27
|
+
export const substitutePromptArgs = (prompt, args, silentKeys) => {
|
|
6
28
|
const matches = [...prompt.matchAll(PLACEHOLDER_PATTERN)];
|
|
7
29
|
if (matches.length === 0 && Object.keys(args).length === 0) {
|
|
8
30
|
return Effect.succeed(prompt);
|
|
@@ -20,8 +42,9 @@ export const substitutePromptArgs = (prompt, args) => {
|
|
|
20
42
|
}
|
|
21
43
|
}
|
|
22
44
|
// Warn about unused keys (arg provided but no matching placeholder)
|
|
45
|
+
// Skip keys listed in silentKeys (e.g. built-in args)
|
|
23
46
|
for (const key of Object.keys(args)) {
|
|
24
|
-
if (!referencedKeys.has(key)) {
|
|
47
|
+
if (!referencedKeys.has(key) && !silentKeys?.has(key)) {
|
|
25
48
|
yield* display.status(`Prompt argument "${key}" was provided but not referenced in the prompt`, "warn");
|
|
26
49
|
}
|
|
27
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptArgumentSubstitution.js","sourceRoot":"","sources":["../src/PromptArgumentSubstitution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS1C,MAAM,mBAAmB,GAAG,mCAAmC,CAAC;AAEhE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAc,EACd,IAAgB,
|
|
1
|
+
{"version":3,"file":"PromptArgumentSubstitution.js","sourceRoot":"","sources":["../src/PromptArgumentSubstitution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS1C;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,eAAe;IACf,eAAe;CACP,CAAC;AAEX,MAAM,mBAAmB,GAAG,mCAAmC,CAAC;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,IAAgB,EACkB,EAAE;IACpC,KAAK,MAAM,GAAG,IAAI,wBAAwB,EAAE,CAAC;QAC3C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,WAAW,CAAC;gBACd,OAAO,EAAE,IAAI,GAAG,yEAAyE;aAC1F,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAc,EACd,IAAgB,EAChB,UAAgC,EACa,EAAE;IAC/C,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE1D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;QAE/B,4CAA4C;QAC5C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;QAE1D,qEAAqE;QACrE,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;gBACnB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,WAAW,CAAC;oBACd,OAAO,EAAE,sBAAsB,GAAG,yCAAyC;iBAC5E,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,sDAAsD;QACtD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtD,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CACnB,oBAAoB,GAAG,iDAAiD,EACxE,MAAM,CACP,CAAC;YACJ,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CACjE,IAAI,CAAC,GAAa,CAAE,CAAC,QAAQ,EAAE,CAChC,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SandboxFactory.d.ts","sourceRoot":"","sources":["../src/SandboxFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"SandboxFactory.d.ts","sourceRoot":"","sources":["../src/SandboxFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAQ,KAAK,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAW9C,OAAO,EAEL,SAAS,EACT,SAAS,EAET,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,CACb,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,KACvB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAE1C,QAAQ,CAAC,aAAa,EAAE,CACtB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACpC,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,KACvB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAE1C,QAAQ,CAAC,MAAM,EAAE,CACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAEpC,QAAQ,CAAC,OAAO,EAAE,CAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;CACrC;;AAED,qBAAa,OAAQ,SAAQ,YAG1B;CAAG;AAgLN,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;;2BAK0B,CAAC,EAAE,CAAC,EAAE,CAAC;;AAHlC,qBAAa,cAAe,SAAQ,mBAOjC;CAAG;;;;;IAoBF,+FAA+F;;IAE/F,6FAA6F;;IAE7F,kGAAkG;;;AAVtG,qBAAa,qBAAsB,SAAQ,0BAaxC;CAAG;AAYN;;;;GAIG;AACH,eAAO,MAAM,4BAA4B;;CAyKxC,CAAC"}
|
package/dist/SandboxFactory.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Context, Effect, Layer } from "effect";
|
|
1
|
+
import { Context, Effect, Exit, Layer } from "effect";
|
|
2
2
|
import { FileSystem } from "@effect/platform";
|
|
3
3
|
import { NodeFileSystem } from "@effect/platform-node";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
@@ -6,7 +6,7 @@ import { execFile, execFileSync, spawn } from "node:child_process";
|
|
|
6
6
|
import { dirname, join } from "node:path";
|
|
7
7
|
import { createInterface } from "node:readline";
|
|
8
8
|
import { startContainer, removeContainer, chownInContainer, } from "./DockerLifecycle.js";
|
|
9
|
-
import { CopyError, ExecError, } from "./errors.js";
|
|
9
|
+
import { AgentError, CopyError, ExecError, TimeoutError, } from "./errors.js";
|
|
10
10
|
import * as WorktreeManager from "./WorktreeManager.js";
|
|
11
11
|
import { copyToSandbox } from "./CopyToSandbox.js";
|
|
12
12
|
import { Display } from "./Display.js";
|
|
@@ -138,19 +138,13 @@ const forceRemoveContainerSync = (containerName) => {
|
|
|
138
138
|
export class WorktreeSandboxConfig extends Context.Tag("WorktreeSandboxConfig")() {
|
|
139
139
|
}
|
|
140
140
|
/**
|
|
141
|
-
*
|
|
142
|
-
*
|
|
141
|
+
* Print a message to stderr telling the developer where the preserved worktree is
|
|
142
|
+
* and how to clean it up manually.
|
|
143
143
|
*/
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
cwd: repoDir,
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
catch {
|
|
152
|
-
// Best-effort — worktree may already be gone
|
|
153
|
-
}
|
|
144
|
+
const printWorktreePreservedMessage = (worktreePath) => {
|
|
145
|
+
console.error(`\nWorktree preserved at ${worktreePath}`);
|
|
146
|
+
console.error(` To review: cd ${worktreePath}`);
|
|
147
|
+
console.error(` To clean up: git worktree remove --force ${worktreePath}`);
|
|
154
148
|
};
|
|
155
149
|
/**
|
|
156
150
|
* Worktree sandbox mode: creates a git worktree and bind-mounts it into the
|
|
@@ -165,6 +159,9 @@ export const WorktreeDockerSandboxFactory = {
|
|
|
165
159
|
return {
|
|
166
160
|
withSandbox: (makeEffect) => {
|
|
167
161
|
const containerName = `sandcastle-${randomUUID()}`;
|
|
162
|
+
// Populated by the release phase when a worktree is preserved on failure,
|
|
163
|
+
// so we can attach the path to recognized error types before they propagate.
|
|
164
|
+
let preservedWorktreePath;
|
|
168
165
|
return Effect.acquireUseRelease(
|
|
169
166
|
// Acquire: prune stale worktrees (best-effort), create worktree, then start container
|
|
170
167
|
WorktreeManager.pruneStale(hostRepoDir)
|
|
@@ -184,34 +181,68 @@ export const WorktreeDockerSandboxFactory = {
|
|
|
184
181
|
`${worktreeInfo.path}:${SANDBOX_WORKSPACE_DIR}`,
|
|
185
182
|
`${gitDir}:${gitDir}`,
|
|
186
183
|
];
|
|
187
|
-
|
|
184
|
+
// On signals: remove the container but preserve the worktree so the
|
|
185
|
+
// developer can inspect the agent's work.
|
|
186
|
+
const cleanupContainerOnly = () => {
|
|
188
187
|
forceRemoveContainerSync(containerName);
|
|
189
|
-
forceRemoveWorktreeSync(worktreeInfo.path, hostRepoDir);
|
|
190
188
|
};
|
|
191
189
|
const onSignal = () => {
|
|
192
|
-
|
|
190
|
+
cleanupContainerOnly();
|
|
191
|
+
printWorktreePreservedMessage(worktreeInfo.path);
|
|
193
192
|
process.exit(1);
|
|
194
193
|
};
|
|
195
194
|
const hostUid = process.getuid?.() ?? 1000;
|
|
196
195
|
const hostGid = process.getgid?.() ?? 1000;
|
|
197
|
-
return startContainer(containerName, imageName, env, {
|
|
196
|
+
return startContainer(containerName, imageName, { ...env, HOME: "/home/agent" }, {
|
|
198
197
|
volumeMounts,
|
|
199
198
|
workdir: SANDBOX_WORKSPACE_DIR,
|
|
200
199
|
user: `${hostUid}:${hostGid}`,
|
|
201
200
|
}).pipe(Effect.andThen(chownInContainer(containerName, `${hostUid}:${hostGid}`, "/home/agent")), Effect.tap(() => Effect.sync(() => {
|
|
202
|
-
|
|
201
|
+
// exit handler only removes the container; the worktree is preserved
|
|
202
|
+
// on abnormal exit just as on SIGINT/SIGTERM.
|
|
203
|
+
process.on("exit", cleanupContainerOnly);
|
|
203
204
|
process.on("SIGINT", onSignal);
|
|
204
205
|
process.on("SIGTERM", onSignal);
|
|
205
|
-
})), Effect.map(() => ({
|
|
206
|
+
})), Effect.map(() => ({
|
|
207
|
+
worktreeInfo,
|
|
208
|
+
cleanupContainerOnly,
|
|
209
|
+
onSignal,
|
|
210
|
+
})));
|
|
206
211
|
})),
|
|
207
212
|
// Use
|
|
208
213
|
({ worktreeInfo }) => makeEffect({ hostWorktreePath: worktreeInfo.path }).pipe(Effect.provide(makeDockerSandboxLayer(containerName))),
|
|
209
|
-
// Release: remove container
|
|
210
|
-
({ worktreeInfo,
|
|
211
|
-
process.removeListener("exit",
|
|
214
|
+
// Release: always remove container; remove worktree only on success.
|
|
215
|
+
({ worktreeInfo, cleanupContainerOnly, onSignal }, exit) => Effect.sync(() => {
|
|
216
|
+
process.removeListener("exit", cleanupContainerOnly);
|
|
212
217
|
process.removeListener("SIGINT", onSignal);
|
|
213
218
|
process.removeListener("SIGTERM", onSignal);
|
|
214
|
-
}).pipe(Effect.andThen(removeContainer(containerName)), Effect.andThen(
|
|
219
|
+
}).pipe(Effect.andThen(removeContainer(containerName)), Effect.andThen(Exit.isSuccess(exit)
|
|
220
|
+
? WorktreeManager.remove(worktreeInfo.path)
|
|
221
|
+
: Effect.sync(() => {
|
|
222
|
+
preservedWorktreePath = worktreeInfo.path;
|
|
223
|
+
printWorktreePreservedMessage(worktreeInfo.path);
|
|
224
|
+
})), Effect.orDie)).pipe(
|
|
225
|
+
// Attach the preserved worktree path to TimeoutError and AgentError so
|
|
226
|
+
// programmatic callers can build on top of the preserved worktree.
|
|
227
|
+
Effect.mapError((e) => {
|
|
228
|
+
const path = preservedWorktreePath;
|
|
229
|
+
if (path !== undefined) {
|
|
230
|
+
if (e instanceof TimeoutError) {
|
|
231
|
+
return new TimeoutError({
|
|
232
|
+
message: e.message,
|
|
233
|
+
idleTimeoutSeconds: e.idleTimeoutSeconds,
|
|
234
|
+
preservedWorktreePath: path,
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
if (e instanceof AgentError) {
|
|
238
|
+
return new AgentError({
|
|
239
|
+
message: e.message,
|
|
240
|
+
preservedWorktreePath: path,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return e;
|
|
245
|
+
}));
|
|
215
246
|
},
|
|
216
247
|
};
|
|
217
248
|
})),
|
|
@@ -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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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -62,6 +62,8 @@ declare const AgentError_base: new <A extends Record<string, any> = {}>(args: im
|
|
|
62
62
|
/** Agent invocation failed */
|
|
63
63
|
export declare class AgentError extends AgentError_base<{
|
|
64
64
|
readonly message: string;
|
|
65
|
+
/** Host path to the preserved worktree, set when the worktree was kept after failure. */
|
|
66
|
+
readonly preservedWorktreePath?: string;
|
|
65
67
|
}> {
|
|
66
68
|
}
|
|
67
69
|
declare const ConfigDirError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
@@ -83,10 +85,12 @@ export declare class InitError extends InitError_base<{
|
|
|
83
85
|
declare const TimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
84
86
|
readonly _tag: "TimeoutError";
|
|
85
87
|
} & Readonly<A>;
|
|
86
|
-
/** Run exceeded the configured timeout */
|
|
88
|
+
/** Run exceeded the configured idle timeout */
|
|
87
89
|
export declare class TimeoutError extends TimeoutError_base<{
|
|
88
90
|
readonly message: string;
|
|
89
|
-
readonly
|
|
91
|
+
readonly idleTimeoutSeconds: number;
|
|
92
|
+
/** Host path to the preserved worktree, set when the worktree was kept after failure. */
|
|
93
|
+
readonly preservedWorktreePath?: string;
|
|
90
94
|
}> {
|
|
91
95
|
}
|
|
92
96
|
/** Union of all sandbox-related errors */
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAEA,8CAA8C;AAC9C,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,2CAA2C;AAC3C,qBAAa,aAAc,SAAQ,mBAAkC;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,gDAAgD;AAChD,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,6CAA6C;AAC7C,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,+CAA+C;AAC/C,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,oCAAoC;AACpC,qBAAa,aAAc,SAAQ,mBAAkC;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,gDAAgD;AAChD,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,8BAA8B;AAC9B,qBAAa,UAAW,SAAQ,gBAA+B;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAEA,8CAA8C;AAC9C,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,2CAA2C;AAC3C,qBAAa,aAAc,SAAQ,mBAAkC;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,gDAAgD;AAChD,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,6CAA6C;AAC7C,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,+CAA+C;AAC/C,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,oCAAoC;AACpC,qBAAa,aAAc,SAAQ,mBAAkC;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,gDAAgD;AAChD,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,8BAA8B;AAC9B,qBAAa,UAAW,SAAQ,gBAA+B;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yFAAyF;IACzF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;CAAG;;;;AAEL,4CAA4C;AAC5C,qBAAa,cAAe,SAAQ,oBAAmC;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,+CAA+C;AAC/C,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,+CAA+C;AAC/C,qBAAa,YAAa,SAAQ,kBAAiC;IACjE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,yFAAyF;IACzF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;CAAG;AAEL,0CAA0C;AAC1C,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,aAAa,GACb,SAAS,GACT,WAAW,GACX,SAAS,GACT,aAAa,GACb,WAAW,GACX,UAAU,GACV,cAAc,GACd,SAAS,GACT,YAAY,CAAC"}
|
package/dist/errors.js
CHANGED
|
@@ -29,7 +29,7 @@ export class ConfigDirError extends Data.TaggedError("ConfigDirError") {
|
|
|
29
29
|
/** Initialization or setup operation failed */
|
|
30
30
|
export class InitError extends Data.TaggedError("InitError") {
|
|
31
31
|
}
|
|
32
|
-
/** Run exceeded the configured timeout */
|
|
32
|
+
/** Run exceeded the configured idle timeout */
|
|
33
33
|
export class TimeoutError extends Data.TaggedError("TimeoutError") {
|
|
34
34
|
}
|
|
35
35
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,8CAA8C;AAC9C,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAGzD;CAAG;AAEL,2CAA2C;AAC3C,MAAM,OAAO,aAAc,SAAQ,IAAI,CAAC,WAAW,CAAC,eAAe,CAGjE;CAAG;AAEL,gDAAgD;AAChD,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAEzD;CAAG;AAEL,6CAA6C;AAC7C,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAE7D;CAAG;AAEL,+CAA+C;AAC/C,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAEzD;CAAG;AAEL,oCAAoC;AACpC,MAAM,OAAO,aAAc,SAAQ,IAAI,CAAC,WAAW,CAAC,eAAe,CAEjE;CAAG;AAEL,gDAAgD;AAChD,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAE7D;CAAG;AAEL,8BAA8B;AAC9B,MAAM,OAAO,UAAW,SAAQ,IAAI,CAAC,WAAW,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,8CAA8C;AAC9C,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAGzD;CAAG;AAEL,2CAA2C;AAC3C,MAAM,OAAO,aAAc,SAAQ,IAAI,CAAC,WAAW,CAAC,eAAe,CAGjE;CAAG;AAEL,gDAAgD;AAChD,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAEzD;CAAG;AAEL,6CAA6C;AAC7C,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAE7D;CAAG;AAEL,+CAA+C;AAC/C,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAEzD;CAAG;AAEL,oCAAoC;AACpC,MAAM,OAAO,aAAc,SAAQ,IAAI,CAAC,WAAW,CAAC,eAAe,CAEjE;CAAG;AAEL,gDAAgD;AAChD,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAE7D;CAAG;AAEL,8BAA8B;AAC9B,MAAM,OAAO,UAAW,SAAQ,IAAI,CAAC,WAAW,CAAC,YAAY,CAI3D;CAAG;AAEL,4CAA4C;AAC5C,MAAM,OAAO,cAAe,SAAQ,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAEnE;CAAG;AAEL,+CAA+C;AAC/C,MAAM,OAAO,SAAU,SAAQ,IAAI,CAAC,WAAW,CAAC,WAAW,CAEzD;CAAG;AAEL,+CAA+C;AAC/C,MAAM,OAAO,YAAa,SAAQ,IAAI,CAAC,WAAW,CAAC,cAAc,CAK/D;CAAG"}
|
package/dist/run.d.ts
CHANGED
|
@@ -47,7 +47,7 @@ export declare const buildRunSummaryRows: (options: RunSummaryRowsOptions) => Re
|
|
|
47
47
|
* Build the completion status message for a run, used in both terminal mode
|
|
48
48
|
* and log-to-file mode to record the final outcome.
|
|
49
49
|
*/
|
|
50
|
-
export declare const buildCompletionMessage: (
|
|
50
|
+
export declare const buildCompletionMessage: (completionSignal: string | undefined, iterationsRun: number) => {
|
|
51
51
|
readonly message: string;
|
|
52
52
|
readonly severity: Severity;
|
|
53
53
|
};
|
|
@@ -89,10 +89,10 @@ export interface RunOptions {
|
|
|
89
89
|
readonly promptArgs?: PromptArgs;
|
|
90
90
|
/** Logging mode (default: { type: 'file' } with auto-generated path under .sandcastle/logs/) */
|
|
91
91
|
readonly logging?: LoggingOption;
|
|
92
|
-
/**
|
|
93
|
-
readonly completionSignal?: string;
|
|
94
|
-
/**
|
|
95
|
-
readonly
|
|
92
|
+
/** Substring(s) the agent emits to stop the iteration loop early. Matched via `includes` against agent output. (default: `"<promise>COMPLETE</promise>"`) */
|
|
93
|
+
readonly completionSignal?: string | string[];
|
|
94
|
+
/** Idle timeout in seconds. If the agent produces no output for this long, it fails. Default: 300 (5 minutes) */
|
|
95
|
+
readonly idleTimeoutSeconds?: number;
|
|
96
96
|
/** Optional name for the run, shown as a prefix in log output */
|
|
97
97
|
readonly name?: string;
|
|
98
98
|
/** Paths relative to the host repo root to copy into the worktree before container start. */
|
|
@@ -101,8 +101,8 @@ export interface RunOptions {
|
|
|
101
101
|
export interface RunResult {
|
|
102
102
|
/** Number of iterations the agent completed during this run. */
|
|
103
103
|
readonly iterationsRun: number;
|
|
104
|
-
/**
|
|
105
|
-
readonly
|
|
104
|
+
/** The matched completion signal string, or undefined if no signal fired before the iteration limit. */
|
|
105
|
+
readonly completionSignal?: string;
|
|
106
106
|
/** Combined stdout output from all agent iterations. */
|
|
107
107
|
readonly stdout: string;
|
|
108
108
|
/** List of commits made by the agent during the run, each identified by its SHA. */
|
package/dist/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,cAAc,CAAC;AAUtB,OAAO,EACL,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,cAAc,CAAC;AAUtB,OAAO,EACL,KAAK,UAAU,EAIhB,MAAM,iCAAiC,CAAC;AAEzC,sDAAsD;AACtD,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,4BACA,CAAC;AAEvC,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,8CASnC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,6BAI5B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,kGAa5B,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,4DAW/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;CAclC,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa;AACvB,0FAA0F;AACxF;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAClD,6FAA6F;GAC3F;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEhC,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,6CAA6C;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE;QACf,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC9D,CAAC;IACF,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,qFAAqF;IACrF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,gGAAgG;IAChG,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IACjC,6JAA6J;IAC7J,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9C,iHAAiH;IACjH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,iEAAiE;IACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,gEAAgE;IAChE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,wGAAwG;IACxG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,wDAAwD;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,QAAQ,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpC,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,GAAG,6CA0Jf,CAAC"}
|
package/dist/run.js
CHANGED
|
@@ -9,7 +9,7 @@ import { resolvePrompt } from "./PromptResolver.js";
|
|
|
9
9
|
import { WorktreeDockerSandboxFactory, WorktreeSandboxConfig, SANDBOX_WORKSPACE_DIR, } from "./SandboxFactory.js";
|
|
10
10
|
import { resolveEnv } from "./EnvResolver.js";
|
|
11
11
|
import { generateTempBranchName, getCurrentBranch } from "./WorktreeManager.js";
|
|
12
|
-
import { substitutePromptArgs, } from "./PromptArgumentSubstitution.js";
|
|
12
|
+
import { substitutePromptArgs, validateNoBuiltInArgOverride, BUILT_IN_PROMPT_ARG_KEYS, } from "./PromptArgumentSubstitution.js";
|
|
13
13
|
/** Default maximum number of iterations for a run. */
|
|
14
14
|
export const DEFAULT_MAX_ITERATIONS = 1;
|
|
15
15
|
/** Replace characters that are invalid or problematic in file paths with dashes. */
|
|
@@ -74,8 +74,8 @@ export const buildRunSummaryRows = (options) => {
|
|
|
74
74
|
* Build the completion status message for a run, used in both terminal mode
|
|
75
75
|
* and log-to-file mode to record the final outcome.
|
|
76
76
|
*/
|
|
77
|
-
export const buildCompletionMessage = (
|
|
78
|
-
if (
|
|
77
|
+
export const buildCompletionMessage = (completionSignal, iterationsRun) => {
|
|
78
|
+
if (completionSignal !== undefined) {
|
|
79
79
|
return {
|
|
80
80
|
message: `Run complete: agent finished after ${iterationsRun} iteration(s).`,
|
|
81
81
|
severity: "success",
|
|
@@ -104,11 +104,12 @@ export const run = async (options) => {
|
|
|
104
104
|
// This names the log file after the temp branch and also directs
|
|
105
105
|
// the sandbox to work on that branch (instead of the current host branch).
|
|
106
106
|
const resolvedBranch = branch ?? generateTempBranchName(agentName);
|
|
107
|
+
// Always capture the host's current branch for the TARGET_BRANCH built-in
|
|
108
|
+
// prompt argument. When using a temp branch, it also prefixes the log filename.
|
|
109
|
+
const currentHostBranch = await Effect.runPromise(getCurrentBranch(hostRepoDir));
|
|
107
110
|
// When using a temp branch, prefix the log filename with the target branch
|
|
108
111
|
// (the host's current branch) so developers can tell which branch was targeted.
|
|
109
|
-
const targetBranch = branch === undefined
|
|
110
|
-
? await Effect.runPromise(getCurrentBranch(hostRepoDir))
|
|
111
|
-
: undefined;
|
|
112
|
+
const targetBranch = branch === undefined ? currentHostBranch : undefined;
|
|
112
113
|
// Resolve logging option
|
|
113
114
|
const resolvedLogging = options.logging ?? {
|
|
114
115
|
type: "file",
|
|
@@ -147,10 +148,18 @@ export const run = async (options) => {
|
|
|
147
148
|
model: resolvedModel,
|
|
148
149
|
});
|
|
149
150
|
yield* d.summary("Sandcastle Run", rows);
|
|
150
|
-
//
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
151
|
+
// Validate that the user has not provided built-in prompt argument keys
|
|
152
|
+
const userArgs = options.promptArgs ?? {};
|
|
153
|
+
yield* validateNoBuiltInArgOverride(userArgs);
|
|
154
|
+
// Build effective args: built-in args merged with user-provided args.
|
|
155
|
+
// Built-in keys are silenced so they don't trigger unused-arg warnings.
|
|
156
|
+
const effectiveArgs = {
|
|
157
|
+
SOURCE_BRANCH: resolvedBranch,
|
|
158
|
+
TARGET_BRANCH: currentHostBranch,
|
|
159
|
+
...userArgs,
|
|
160
|
+
};
|
|
161
|
+
const builtInArgKeysSet = new Set(BUILT_IN_PROMPT_ARG_KEYS);
|
|
162
|
+
const resolvedPrompt = yield* substitutePromptArgs(rawPrompt, effectiveArgs, builtInArgKeysSet);
|
|
154
163
|
const orchestrateResult = yield* orchestrate({
|
|
155
164
|
hostRepoDir,
|
|
156
165
|
sandboxRepoDir: SANDBOX_WORKSPACE_DIR,
|
|
@@ -160,10 +169,10 @@ export const run = async (options) => {
|
|
|
160
169
|
branch,
|
|
161
170
|
model: resolvedModel,
|
|
162
171
|
completionSignal: options.completionSignal,
|
|
163
|
-
|
|
172
|
+
idleTimeoutSeconds: options.idleTimeoutSeconds,
|
|
164
173
|
name: options.name,
|
|
165
174
|
});
|
|
166
|
-
const completion = buildCompletionMessage(orchestrateResult.
|
|
175
|
+
const completion = buildCompletionMessage(orchestrateResult.completionSignal, orchestrateResult.iterationsRun);
|
|
167
176
|
yield* d.status(completion.message, completion.severity);
|
|
168
177
|
return orchestrateResult;
|
|
169
178
|
}).pipe(Effect.provide(runLayer)));
|
package/dist/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,OAAO,EACP,WAAW,GAEZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAEL,oBAAoB,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -167,45 +167,34 @@ for (let iteration = 1; iteration <= MAX_ITERATIONS; iteration++) {
|
|
|
167
167
|
continue;
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
//
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
// A markdown list of branch names, one per line.
|
|
199
|
-
BRANCHES: completedBranches.map((b) => `- ${b}`).join("\n"),
|
|
200
|
-
// A markdown list of issue numbers and titles, one per line.
|
|
201
|
-
ISSUES: completedIssues
|
|
202
|
-
.map((i) => `- #${i.number}: ${i.title}`)
|
|
203
|
-
.join("\n"),
|
|
204
|
-
},
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
console.log("\nBranches merged.");
|
|
208
|
-
}
|
|
170
|
+
// -------------------------------------------------------------------------
|
|
171
|
+
// Phase 3: Merge
|
|
172
|
+
//
|
|
173
|
+
// One sonnet agent merges all completed branches into the current branch,
|
|
174
|
+
// resolving any conflicts and running tests to confirm everything still works.
|
|
175
|
+
//
|
|
176
|
+
// The {{BRANCHES}} and {{ISSUES}} prompt arguments are lists that the agent
|
|
177
|
+
// uses to know which branches to merge and which issues to close.
|
|
178
|
+
// -------------------------------------------------------------------------
|
|
179
|
+
await sandcastle.run({
|
|
180
|
+
hooks,
|
|
181
|
+
copyToSandbox,
|
|
182
|
+
name: "merger",
|
|
183
|
+
maxIterations: 10,
|
|
184
|
+
// Sonnet is sufficient for merge conflict resolution.
|
|
185
|
+
model: "claude-sonnet-4-6",
|
|
186
|
+
promptFile: "./.sandcastle/merge-prompt.md",
|
|
187
|
+
promptArgs: {
|
|
188
|
+
// A markdown list of branch names, one per line.
|
|
189
|
+
BRANCHES: completedBranches.map((b) => `- ${b}`).join("\n"),
|
|
190
|
+
// A markdown list of issue numbers and titles, one per line.
|
|
191
|
+
ISSUES: completedIssues
|
|
192
|
+
.map((i) => `- #${i.number}: ${i.title}`)
|
|
193
|
+
.join("\n"),
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
console.log("\nBranches merged.");
|
|
209
198
|
}
|
|
210
199
|
|
|
211
200
|
console.log("\nAll done.");
|