@ai-hero/sandcastle 0.6.4 → 0.6.6
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 +125 -54
- package/dist/{MountConfig.d.ts → MountConfig-CmXclHA5.d.ts} +3 -2
- package/dist/{SandboxProvider.d.ts → SandboxProvider-EkSMuBp8.d.ts} +25 -39
- package/dist/chunk-72UVAC7B.js +99 -0
- package/dist/chunk-72UVAC7B.js.map +1 -0
- package/dist/chunk-BIWNFKGV.js +22 -0
- package/dist/chunk-BIWNFKGV.js.map +1 -0
- package/dist/chunk-NGBM7T3E.js +76 -0
- package/dist/chunk-NGBM7T3E.js.map +1 -0
- package/dist/chunk-Q5W3WQVU.js +25569 -0
- package/dist/chunk-Q5W3WQVU.js.map +1 -0
- package/dist/chunk-UPDEQ2U7.js +362 -0
- package/dist/chunk-UPDEQ2U7.js.map +1 -0
- package/dist/chunk-Z7O2WNRU.js +26934 -0
- package/dist/chunk-Z7O2WNRU.js.map +1 -0
- package/dist/index.d.ts +920 -22
- package/dist/index.js +3212 -9
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +0 -2
- package/dist/main.js +19256 -13
- package/dist/main.js.map +1 -1
- package/dist/mountUtils-CCA-bbpK.d.ts +25 -0
- package/dist/sandboxes/daytona.d.ts +8 -5
- package/dist/sandboxes/daytona.js +118 -124
- package/dist/sandboxes/daytona.js.map +1 -1
- package/dist/sandboxes/docker.d.ts +10 -8
- package/dist/sandboxes/docker.js +8 -255
- package/dist/sandboxes/docker.js.map +1 -1
- package/dist/sandboxes/no-sandbox.d.ts +7 -4
- package/dist/sandboxes/no-sandbox.js +6 -114
- package/dist/sandboxes/no-sandbox.js.map +1 -1
- package/dist/sandboxes/podman.d.ts +10 -8
- package/dist/sandboxes/podman.js +287 -297
- package/dist/sandboxes/podman.js.map +1 -1
- package/dist/sandboxes/vercel.d.ts +7 -4
- package/dist/sandboxes/vercel.js +144 -165
- package/dist/sandboxes/vercel.js.map +1 -1
- package/package.json +15 -14
- package/dist/AgentProvider.d.ts +0 -134
- package/dist/AgentProvider.d.ts.map +0 -1
- package/dist/AgentProvider.js +0 -647
- package/dist/AgentProvider.js.map +0 -1
- package/dist/AgentStreamEmitter.d.ts +0 -36
- package/dist/AgentStreamEmitter.d.ts.map +0 -1
- package/dist/AgentStreamEmitter.js +0 -21
- package/dist/AgentStreamEmitter.js.map +0 -1
- package/dist/CopyToWorktree.d.ts +0 -15
- package/dist/CopyToWorktree.d.ts.map +0 -1
- package/dist/CopyToWorktree.js +0 -60
- package/dist/CopyToWorktree.js.map +0 -1
- package/dist/Display.d.ts +0 -58
- package/dist/Display.d.ts.map +0 -1
- package/dist/Display.js +0 -142
- package/dist/Display.js.map +0 -1
- package/dist/DockerLifecycle.d.ts +0 -54
- package/dist/DockerLifecycle.d.ts.map +0 -1
- package/dist/DockerLifecycle.js +0 -123
- package/dist/DockerLifecycle.js.map +0 -1
- package/dist/EnvResolver.d.ts +0 -11
- package/dist/EnvResolver.d.ts.map +0 -1
- package/dist/EnvResolver.js +0 -63
- package/dist/EnvResolver.js.map +0 -1
- package/dist/ErrorHandler.d.ts +0 -15
- package/dist/ErrorHandler.d.ts.map +0 -1
- package/dist/ErrorHandler.js +0 -85
- package/dist/ErrorHandler.js.map +0 -1
- package/dist/InitService.d.ts +0 -63
- package/dist/InitService.d.ts.map +0 -1
- package/dist/InitService.js +0 -733
- package/dist/InitService.js.map +0 -1
- package/dist/MountConfig.d.ts.map +0 -1
- package/dist/MountConfig.js +0 -7
- package/dist/MountConfig.js.map +0 -1
- package/dist/Orchestrator.d.ts +0 -56
- package/dist/Orchestrator.d.ts.map +0 -1
- package/dist/Orchestrator.js +0 -293
- package/dist/Orchestrator.js.map +0 -1
- package/dist/Output.d.ts +0 -107
- package/dist/Output.d.ts.map +0 -1
- package/dist/Output.js +0 -95
- package/dist/Output.js.map +0 -1
- package/dist/PodmanLifecycle.d.ts +0 -17
- package/dist/PodmanLifecycle.d.ts.map +0 -1
- package/dist/PodmanLifecycle.js +0 -45
- package/dist/PodmanLifecycle.js.map +0 -1
- package/dist/PromptArgumentSubstitution.d.ts +0 -32
- package/dist/PromptArgumentSubstitution.d.ts.map +0 -1
- package/dist/PromptArgumentSubstitution.js +0 -104
- package/dist/PromptArgumentSubstitution.js.map +0 -1
- package/dist/PromptPreprocessor.d.ts +0 -15
- package/dist/PromptPreprocessor.d.ts.map +0 -1
- package/dist/PromptPreprocessor.js +0 -55
- package/dist/PromptPreprocessor.js.map +0 -1
- package/dist/PromptResolver.d.ts +0 -21
- package/dist/PromptResolver.d.ts.map +0 -1
- package/dist/PromptResolver.js +0 -27
- package/dist/PromptResolver.js.map +0 -1
- package/dist/RecoveryMessage.d.ts +0 -15
- package/dist/RecoveryMessage.d.ts.map +0 -1
- package/dist/RecoveryMessage.js +0 -81
- package/dist/RecoveryMessage.js.map +0 -1
- package/dist/SandboxFactory.d.ts +0 -90
- package/dist/SandboxFactory.d.ts.map +0 -1
- package/dist/SandboxFactory.js +0 -324
- package/dist/SandboxFactory.js.map +0 -1
- package/dist/SandboxLifecycle.d.ts +0 -65
- package/dist/SandboxLifecycle.d.ts.map +0 -1
- package/dist/SandboxLifecycle.js +0 -296
- package/dist/SandboxLifecycle.js.map +0 -1
- package/dist/SandboxProvider.d.ts.map +0 -1
- package/dist/SandboxProvider.js +0 -28
- package/dist/SandboxProvider.js.map +0 -1
- package/dist/SessionStore.d.ts +0 -110
- package/dist/SessionStore.d.ts.map +0 -1
- package/dist/SessionStore.js +0 -330
- package/dist/SessionStore.js.map +0 -1
- package/dist/TextDeltaBuffer.d.ts +0 -24
- package/dist/TextDeltaBuffer.d.ts.map +0 -1
- package/dist/TextDeltaBuffer.js +0 -68
- package/dist/TextDeltaBuffer.js.map +0 -1
- package/dist/WorktreeManager.d.ts +0 -79
- package/dist/WorktreeManager.d.ts.map +0 -1
- package/dist/WorktreeManager.js +0 -283
- package/dist/WorktreeManager.js.map +0 -1
- package/dist/boundedTail.d.ts +0 -48
- package/dist/boundedTail.d.ts.map +0 -1
- package/dist/boundedTail.js +0 -64
- package/dist/boundedTail.js.map +0 -1
- package/dist/cli.d.ts +0 -30
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -309
- package/dist/cli.js.map +0 -1
- package/dist/createSandbox.d.ts +0 -154
- package/dist/createSandbox.d.ts.map +0 -1
- package/dist/createSandbox.js +0 -476
- package/dist/createSandbox.js.map +0 -1
- package/dist/createWorktree.d.ts +0 -154
- package/dist/createWorktree.d.ts.map +0 -1
- package/dist/createWorktree.js +0 -391
- package/dist/createWorktree.js.map +0 -1
- package/dist/errors.d.ts +0 -227
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -81
- package/dist/errors.js.map +0 -1
- package/dist/extractStructuredOutput.d.ts +0 -23
- package/dist/extractStructuredOutput.d.ts.map +0 -1
- package/dist/extractStructuredOutput.js +0 -102
- package/dist/extractStructuredOutput.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/interactive.d.ts +0 -74
- package/dist/interactive.d.ts.map +0 -1
- package/dist/interactive.js +0 -279
- package/dist/interactive.js.map +0 -1
- package/dist/main.d.ts.map +0 -1
- package/dist/mergeProviderEnv.d.ts +0 -13
- package/dist/mergeProviderEnv.d.ts.map +0 -1
- package/dist/mergeProviderEnv.js +0 -23
- package/dist/mergeProviderEnv.js.map +0 -1
- package/dist/mountUtils.d.ts +0 -146
- package/dist/mountUtils.d.ts.map +0 -1
- package/dist/mountUtils.js +0 -301
- package/dist/mountUtils.js.map +0 -1
- package/dist/raceAbortSignal.d.ts +0 -18
- package/dist/raceAbortSignal.d.ts.map +0 -1
- package/dist/raceAbortSignal.js +0 -32
- package/dist/raceAbortSignal.js.map +0 -1
- package/dist/resolveCwd.d.ts +0 -24
- package/dist/resolveCwd.d.ts.map +0 -1
- package/dist/resolveCwd.js +0 -32
- package/dist/resolveCwd.js.map +0 -1
- package/dist/resumePrecheck.d.ts +0 -26
- package/dist/resumePrecheck.d.ts.map +0 -1
- package/dist/resumePrecheck.js +0 -40
- package/dist/resumePrecheck.js.map +0 -1
- package/dist/run.d.ts +0 -216
- package/dist/run.d.ts.map +0 -1
- package/dist/run.js +0 -313
- package/dist/run.js.map +0 -1
- package/dist/sandboxExec.d.ts +0 -12
- package/dist/sandboxExec.d.ts.map +0 -1
- package/dist/sandboxExec.js +0 -26
- package/dist/sandboxExec.js.map +0 -1
- package/dist/sandboxes/daytona.d.ts.map +0 -1
- package/dist/sandboxes/docker.d.ts.map +0 -1
- package/dist/sandboxes/no-sandbox.d.ts.map +0 -1
- package/dist/sandboxes/podman.d.ts.map +0 -1
- package/dist/sandboxes/test-bind-mount.d.ts +0 -17
- package/dist/sandboxes/test-bind-mount.d.ts.map +0 -1
- package/dist/sandboxes/test-bind-mount.js +0 -92
- package/dist/sandboxes/test-bind-mount.js.map +0 -1
- package/dist/sandboxes/test-isolated.d.ts +0 -17
- package/dist/sandboxes/test-isolated.d.ts.map +0 -1
- package/dist/sandboxes/test-isolated.js +0 -98
- package/dist/sandboxes/test-isolated.js.map +0 -1
- package/dist/sandboxes/vercel.d.ts.map +0 -1
- package/dist/shutdownRegistry.d.ts +0 -30
- package/dist/shutdownRegistry.d.ts.map +0 -1
- package/dist/shutdownRegistry.js +0 -73
- package/dist/shutdownRegistry.js.map +0 -1
- package/dist/startSandbox.d.ts +0 -50
- package/dist/startSandbox.d.ts.map +0 -1
- package/dist/startSandbox.js +0 -117
- package/dist/startSandbox.js.map +0 -1
- package/dist/syncIn.d.ts +0 -24
- package/dist/syncIn.d.ts.map +0 -1
- package/dist/syncIn.js +0 -107
- package/dist/syncIn.js.map +0 -1
- package/dist/syncOut.d.ts +0 -27
- package/dist/syncOut.d.ts.map +0 -1
- package/dist/syncOut.js +0 -271
- package/dist/syncOut.js.map +0 -1
- package/dist/templates.d.ts +0 -2
- package/dist/templates.d.ts.map +0 -1
- package/dist/templates.js +0 -26
- package/dist/templates.js.map +0 -1
- package/dist/terminalCleanup.d.ts +0 -30
- package/dist/terminalCleanup.d.ts.map +0 -1
- package/dist/terminalCleanup.js +0 -37
- package/dist/terminalCleanup.js.map +0 -1
- package/dist/testSandbox.d.ts +0 -8
- package/dist/testSandbox.d.ts.map +0 -1
- package/dist/testSandbox.js +0 -109
- package/dist/testSandbox.js.map +0 -1
- package/dist/testSetup.d.ts +0 -2
- package/dist/testSetup.d.ts.map +0 -1
- package/dist/testSetup.js +0 -29
- package/dist/testSetup.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"daytona.d.ts","sourceRoot":"","sources":["../../src/sandboxes/daytona.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAGV,4BAA4B,EAC5B,+BAA+B,EAChC,MAAM,cAAc,CAAC;AAEtB,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EACZ,4BAA4B,GAC5B,+BAA+B,CAAC;IAEpC,uHAAuH;IACvH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtC;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,OAAO,mEA+IhB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/sandboxes/docker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,OAAO,EAEL,KAAK,eAAe,EAKrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,gBAAgB,EAGjB,MAAM,kBAAkB,CAAC;AAI1B,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,uHAAuH;IACvH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IAC9C;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC/C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,0DAqQlB,CAAC;AAGF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"no-sandbox.d.ts","sourceRoot":"","sources":["../../src/sandboxes/no-sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,+DAgHpB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"podman.d.ts","sourceRoot":"","sources":["../../src/sandboxes/podman.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,EAEL,KAAK,eAAe,EAKrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,gBAAgB,EAIjB,MAAM,kBAAkB,CAAC;AAI1B,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,uHAAuH;IACvH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IAC9C;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC/C;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,0DAwTlB,CAAC;AAGF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Filesystem-based test bind-mount sandbox provider.
|
|
3
|
-
*
|
|
4
|
-
* Uses a temp directory on the local filesystem as the "sandbox".
|
|
5
|
-
* Intended for testing the bind-mount provider abstraction without
|
|
6
|
-
* requiring Docker or Podman.
|
|
7
|
-
*/
|
|
8
|
-
import { type BindMountSandboxProvider } from "../SandboxProvider.js";
|
|
9
|
-
/**
|
|
10
|
-
* Create a filesystem-based test bind-mount sandbox provider.
|
|
11
|
-
*
|
|
12
|
-
* The "sandbox" is a temp directory. `exec` runs shell commands in it,
|
|
13
|
-
* `copyFileIn`/`copyFileOut` copy single files between host and the temp dir,
|
|
14
|
-
* and `close` removes the temp dir.
|
|
15
|
-
*/
|
|
16
|
-
export declare const testBindMount: () => BindMountSandboxProvider;
|
|
17
|
-
//# sourceMappingURL=test-bind-mount.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-bind-mount.d.ts","sourceRoot":"","sources":["../../src/sandboxes/test-bind-mount.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAGL,KAAK,wBAAwB,EAE9B,MAAM,uBAAuB,CAAC;AAG/B;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,gCAkGtB,CAAC"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Filesystem-based test bind-mount sandbox provider.
|
|
3
|
-
*
|
|
4
|
-
* Uses a temp directory on the local filesystem as the "sandbox".
|
|
5
|
-
* Intended for testing the bind-mount provider abstraction without
|
|
6
|
-
* requiring Docker or Podman.
|
|
7
|
-
*/
|
|
8
|
-
import { execFile, spawn } from "node:child_process";
|
|
9
|
-
import { copyFile, mkdir, mkdtemp, rm } from "node:fs/promises";
|
|
10
|
-
import { tmpdir } from "node:os";
|
|
11
|
-
import { dirname, join } from "node:path";
|
|
12
|
-
import { createInterface } from "node:readline";
|
|
13
|
-
import { createBindMountSandboxProvider, } from "../SandboxProvider.js";
|
|
14
|
-
import { BoundedTail, MAX_TAIL_CHARS } from "../boundedTail.js";
|
|
15
|
-
/**
|
|
16
|
-
* Create a filesystem-based test bind-mount sandbox provider.
|
|
17
|
-
*
|
|
18
|
-
* The "sandbox" is a temp directory. `exec` runs shell commands in it,
|
|
19
|
-
* `copyFileIn`/`copyFileOut` copy single files between host and the temp dir,
|
|
20
|
-
* and `close` removes the temp dir.
|
|
21
|
-
*/
|
|
22
|
-
export const testBindMount = () => createBindMountSandboxProvider({
|
|
23
|
-
name: "test-bind-mount",
|
|
24
|
-
create: async () => {
|
|
25
|
-
const sandboxRoot = await mkdtemp(join(tmpdir(), "sandcastle-test-bm-"));
|
|
26
|
-
const worktreePath = join(sandboxRoot, "workspace");
|
|
27
|
-
await mkdir(worktreePath, { recursive: true });
|
|
28
|
-
return {
|
|
29
|
-
worktreePath,
|
|
30
|
-
exec: (command, options) => {
|
|
31
|
-
if (options?.onLine) {
|
|
32
|
-
const onLine = options.onLine;
|
|
33
|
-
return new Promise((resolve, reject) => {
|
|
34
|
-
const proc = spawn("sh", ["-c", command], {
|
|
35
|
-
cwd: options?.cwd ?? worktreePath,
|
|
36
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
37
|
-
});
|
|
38
|
-
const stdoutTail = new BoundedTail(MAX_TAIL_CHARS, "\n");
|
|
39
|
-
const stderrTail = new BoundedTail(MAX_TAIL_CHARS, "");
|
|
40
|
-
const rl = createInterface({ input: proc.stdout });
|
|
41
|
-
rl.on("line", (line) => {
|
|
42
|
-
stdoutTail.push(line);
|
|
43
|
-
onLine(line);
|
|
44
|
-
});
|
|
45
|
-
proc.stderr.on("data", (chunk) => {
|
|
46
|
-
stderrTail.push(chunk.toString());
|
|
47
|
-
});
|
|
48
|
-
proc.on("error", (error) => {
|
|
49
|
-
reject(new Error(`exec failed: ${error.message}`));
|
|
50
|
-
});
|
|
51
|
-
proc.on("close", (code) => {
|
|
52
|
-
resolve({
|
|
53
|
-
stdout: stdoutTail.toString(),
|
|
54
|
-
stderr: stderrTail.toString(),
|
|
55
|
-
exitCode: code ?? 0,
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
return new Promise((resolve, reject) => {
|
|
61
|
-
execFile("sh", ["-c", command], {
|
|
62
|
-
cwd: options?.cwd ?? worktreePath,
|
|
63
|
-
maxBuffer: 10 * 1024 * 1024,
|
|
64
|
-
}, (error, stdout, stderr) => {
|
|
65
|
-
if (error && error.code === undefined) {
|
|
66
|
-
reject(new Error(`exec failed: ${error.message}`));
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
resolve({
|
|
70
|
-
stdout: stdout.toString(),
|
|
71
|
-
stderr: stderr.toString(),
|
|
72
|
-
exitCode: typeof error?.code === "number" ? error.code : 0,
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
},
|
|
78
|
-
copyFileIn: async (hostPath, sandboxPath) => {
|
|
79
|
-
await mkdir(dirname(sandboxPath), { recursive: true });
|
|
80
|
-
await copyFile(hostPath, sandboxPath);
|
|
81
|
-
},
|
|
82
|
-
copyFileOut: async (sandboxPath, hostPath) => {
|
|
83
|
-
await mkdir(dirname(hostPath), { recursive: true });
|
|
84
|
-
await copyFile(sandboxPath, hostPath);
|
|
85
|
-
},
|
|
86
|
-
close: async () => {
|
|
87
|
-
await rm(sandboxRoot, { recursive: true, force: true });
|
|
88
|
-
},
|
|
89
|
-
};
|
|
90
|
-
},
|
|
91
|
-
});
|
|
92
|
-
//# sourceMappingURL=test-bind-mount.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-bind-mount.js","sourceRoot":"","sources":["../../src/sandboxes/test-bind-mount.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Filesystem-based test isolated sandbox provider.
|
|
3
|
-
*
|
|
4
|
-
* Uses a temp directory on the local filesystem as the "sandbox".
|
|
5
|
-
* Intended for testing the isolated provider abstraction without
|
|
6
|
-
* requiring a real remote environment.
|
|
7
|
-
*/
|
|
8
|
-
import { type IsolatedSandboxProvider } from "../SandboxProvider.js";
|
|
9
|
-
/**
|
|
10
|
-
* Create a filesystem-based test isolated sandbox provider.
|
|
11
|
-
*
|
|
12
|
-
* The "sandbox" is a temp directory. `exec` runs shell commands in it,
|
|
13
|
-
* `copyIn`/`copyFileOut` copy files between host and the temp dir,
|
|
14
|
-
* and `close` removes the temp dir.
|
|
15
|
-
*/
|
|
16
|
-
export declare const testIsolated: () => IsolatedSandboxProvider;
|
|
17
|
-
//# sourceMappingURL=test-isolated.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-isolated.d.ts","sourceRoot":"","sources":["../../src/sandboxes/test-isolated.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAG/B;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,+BAuGrB,CAAC"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Filesystem-based test isolated sandbox provider.
|
|
3
|
-
*
|
|
4
|
-
* Uses a temp directory on the local filesystem as the "sandbox".
|
|
5
|
-
* Intended for testing the isolated provider abstraction without
|
|
6
|
-
* requiring a real remote environment.
|
|
7
|
-
*/
|
|
8
|
-
import { execFile, spawn } from "node:child_process";
|
|
9
|
-
import { copyFile, cp, mkdir, mkdtemp, rm, stat } from "node:fs/promises";
|
|
10
|
-
import { tmpdir } from "node:os";
|
|
11
|
-
import { dirname, join } from "node:path";
|
|
12
|
-
import { createInterface } from "node:readline";
|
|
13
|
-
import { createIsolatedSandboxProvider, } from "../SandboxProvider.js";
|
|
14
|
-
import { BoundedTail, MAX_TAIL_CHARS } from "../boundedTail.js";
|
|
15
|
-
/**
|
|
16
|
-
* Create a filesystem-based test isolated sandbox provider.
|
|
17
|
-
*
|
|
18
|
-
* The "sandbox" is a temp directory. `exec` runs shell commands in it,
|
|
19
|
-
* `copyIn`/`copyFileOut` copy files between host and the temp dir,
|
|
20
|
-
* and `close` removes the temp dir.
|
|
21
|
-
*/
|
|
22
|
-
export const testIsolated = () => createIsolatedSandboxProvider({
|
|
23
|
-
name: "test-isolated",
|
|
24
|
-
create: async () => {
|
|
25
|
-
const sandboxRoot = await mkdtemp(join(tmpdir(), "sandcastle-test-"));
|
|
26
|
-
const worktreePath = join(sandboxRoot, "workspace");
|
|
27
|
-
await mkdir(worktreePath, { recursive: true });
|
|
28
|
-
return {
|
|
29
|
-
worktreePath,
|
|
30
|
-
exec: (command, options) => {
|
|
31
|
-
if (options?.onLine) {
|
|
32
|
-
const onLine = options.onLine;
|
|
33
|
-
return new Promise((resolve, reject) => {
|
|
34
|
-
const proc = spawn("sh", ["-c", command], {
|
|
35
|
-
cwd: options?.cwd ?? worktreePath,
|
|
36
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
37
|
-
});
|
|
38
|
-
const stdoutTail = new BoundedTail(MAX_TAIL_CHARS, "\n");
|
|
39
|
-
const stderrTail = new BoundedTail(MAX_TAIL_CHARS, "");
|
|
40
|
-
const rl = createInterface({ input: proc.stdout });
|
|
41
|
-
rl.on("line", (line) => {
|
|
42
|
-
stdoutTail.push(line);
|
|
43
|
-
onLine(line);
|
|
44
|
-
});
|
|
45
|
-
proc.stderr.on("data", (chunk) => {
|
|
46
|
-
stderrTail.push(chunk.toString());
|
|
47
|
-
});
|
|
48
|
-
proc.on("error", (error) => {
|
|
49
|
-
reject(new Error(`exec failed: ${error.message}`));
|
|
50
|
-
});
|
|
51
|
-
proc.on("close", (code) => {
|
|
52
|
-
resolve({
|
|
53
|
-
stdout: stdoutTail.toString(),
|
|
54
|
-
stderr: stderrTail.toString(),
|
|
55
|
-
exitCode: code ?? 0,
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
return new Promise((resolve, reject) => {
|
|
61
|
-
execFile("sh", ["-c", command], {
|
|
62
|
-
cwd: options?.cwd ?? worktreePath,
|
|
63
|
-
maxBuffer: 10 * 1024 * 1024,
|
|
64
|
-
}, (error, stdout, stderr) => {
|
|
65
|
-
if (error && error.code === undefined) {
|
|
66
|
-
reject(new Error(`exec failed: ${error.message}`));
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
resolve({
|
|
70
|
-
stdout: stdout.toString(),
|
|
71
|
-
stderr: stderr.toString(),
|
|
72
|
-
exitCode: typeof error?.code === "number" ? error.code : 0,
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
},
|
|
78
|
-
copyIn: async (hostPath, sandboxPath) => {
|
|
79
|
-
const info = await stat(hostPath);
|
|
80
|
-
if (info.isDirectory()) {
|
|
81
|
-
await cp(hostPath, sandboxPath, { recursive: true });
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
await mkdir(dirname(sandboxPath), { recursive: true });
|
|
85
|
-
await copyFile(hostPath, sandboxPath);
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
copyFileOut: async (sandboxPath, hostPath) => {
|
|
89
|
-
await mkdir(dirname(hostPath), { recursive: true });
|
|
90
|
-
await copyFile(sandboxPath, hostPath);
|
|
91
|
-
},
|
|
92
|
-
close: async () => {
|
|
93
|
-
await rm(sandboxRoot, { recursive: true, force: true });
|
|
94
|
-
},
|
|
95
|
-
};
|
|
96
|
-
},
|
|
97
|
-
});
|
|
98
|
-
//# sourceMappingURL=test-isolated.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-isolated.js","sourceRoot":"","sources":["../../src/sandboxes/test-isolated.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../src/sandboxes/vercel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAM/B;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAIxB;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EACZ;QACE,IAAI,EAAE,KAAK,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GACD;QACE,IAAI,EAAE,SAAS,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;KACb,GACD;QACE,IAAI,EAAE,UAAU,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAEN,kEAAkE;IAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAEF;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjD;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,uHAAuH;IACvH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtC;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,kEA4Kf,CAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Process-wide shutdown registry.
|
|
3
|
-
*
|
|
4
|
-
* Sandboxes need to run synchronous cleanup (remove a container, print
|
|
5
|
-
* worktree-recovery guidance) when the host process is interrupted. Registering
|
|
6
|
-
* `SIGINT`/`SIGTERM`/`exit` listeners per sandbox makes Node emit a
|
|
7
|
-
* `MaxListenersExceededWarning` once more than ~10 sandboxes exist concurrently.
|
|
8
|
-
*
|
|
9
|
-
* This module installs exactly one listener per signal — no matter how many
|
|
10
|
-
* sandboxes are alive — and fans out to a set of teardown callbacks. On
|
|
11
|
-
* `SIGINT`/`SIGTERM` it runs every teardown and then exits once with code 1;
|
|
12
|
-
* on a plain `exit` it runs every teardown without forcing the exit code.
|
|
13
|
-
*/
|
|
14
|
-
/**
|
|
15
|
-
* A synchronous cleanup step run during shutdown. It must not call
|
|
16
|
-
* `process.exit` — the registry owns the single exit — and must not rely on
|
|
17
|
-
* async work completing, because a signal handler cannot await before the
|
|
18
|
-
* process exits.
|
|
19
|
-
*/
|
|
20
|
-
export type ShutdownCallback = () => void;
|
|
21
|
-
/**
|
|
22
|
-
* Register a teardown to run when the process receives `SIGINT`/`SIGTERM` or
|
|
23
|
-
* exits. The first registration installs the shared listeners; the last
|
|
24
|
-
* unregistration removes them, restoring the default signal behavior.
|
|
25
|
-
*
|
|
26
|
-
* @param teardown Synchronous cleanup to run on shutdown.
|
|
27
|
-
* @returns An idempotent function that unregisters the teardown.
|
|
28
|
-
*/
|
|
29
|
-
export declare const registerShutdown: (teardown: ShutdownCallback) => () => void;
|
|
30
|
-
//# sourceMappingURL=shutdownRegistry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shutdownRegistry.d.ts","sourceRoot":"","sources":["../src/shutdownRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC;AA2C1C;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,4CAW5B,CAAC"}
|
package/dist/shutdownRegistry.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Process-wide shutdown registry.
|
|
3
|
-
*
|
|
4
|
-
* Sandboxes need to run synchronous cleanup (remove a container, print
|
|
5
|
-
* worktree-recovery guidance) when the host process is interrupted. Registering
|
|
6
|
-
* `SIGINT`/`SIGTERM`/`exit` listeners per sandbox makes Node emit a
|
|
7
|
-
* `MaxListenersExceededWarning` once more than ~10 sandboxes exist concurrently.
|
|
8
|
-
*
|
|
9
|
-
* This module installs exactly one listener per signal — no matter how many
|
|
10
|
-
* sandboxes are alive — and fans out to a set of teardown callbacks. On
|
|
11
|
-
* `SIGINT`/`SIGTERM` it runs every teardown and then exits once with code 1;
|
|
12
|
-
* on a plain `exit` it runs every teardown without forcing the exit code.
|
|
13
|
-
*/
|
|
14
|
-
const teardownCallbacks = new Set();
|
|
15
|
-
let listenersInstalled = false;
|
|
16
|
-
const runTeardowns = () => {
|
|
17
|
-
for (const teardown of teardownCallbacks) {
|
|
18
|
-
try {
|
|
19
|
-
teardown();
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
// Best-effort: one teardown failing must not block the others.
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
const handleExit = () => {
|
|
27
|
-
runTeardowns();
|
|
28
|
-
};
|
|
29
|
-
const handleSignal = () => {
|
|
30
|
-
// Detach first so the synchronous "exit" event triggered by process.exit()
|
|
31
|
-
// below does not run the same teardowns a second time.
|
|
32
|
-
detachListeners();
|
|
33
|
-
runTeardowns();
|
|
34
|
-
process.exit(1);
|
|
35
|
-
};
|
|
36
|
-
const attachListeners = () => {
|
|
37
|
-
if (listenersInstalled)
|
|
38
|
-
return;
|
|
39
|
-
listenersInstalled = true;
|
|
40
|
-
process.on("exit", handleExit);
|
|
41
|
-
process.on("SIGINT", handleSignal);
|
|
42
|
-
process.on("SIGTERM", handleSignal);
|
|
43
|
-
};
|
|
44
|
-
const detachListeners = () => {
|
|
45
|
-
if (!listenersInstalled)
|
|
46
|
-
return;
|
|
47
|
-
listenersInstalled = false;
|
|
48
|
-
process.removeListener("exit", handleExit);
|
|
49
|
-
process.removeListener("SIGINT", handleSignal);
|
|
50
|
-
process.removeListener("SIGTERM", handleSignal);
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Register a teardown to run when the process receives `SIGINT`/`SIGTERM` or
|
|
54
|
-
* exits. The first registration installs the shared listeners; the last
|
|
55
|
-
* unregistration removes them, restoring the default signal behavior.
|
|
56
|
-
*
|
|
57
|
-
* @param teardown Synchronous cleanup to run on shutdown.
|
|
58
|
-
* @returns An idempotent function that unregisters the teardown.
|
|
59
|
-
*/
|
|
60
|
-
export const registerShutdown = (teardown) => {
|
|
61
|
-
teardownCallbacks.add(teardown);
|
|
62
|
-
attachListeners();
|
|
63
|
-
let active = true;
|
|
64
|
-
return () => {
|
|
65
|
-
if (!active)
|
|
66
|
-
return;
|
|
67
|
-
active = false;
|
|
68
|
-
teardownCallbacks.delete(teardown);
|
|
69
|
-
if (teardownCallbacks.size === 0)
|
|
70
|
-
detachListeners();
|
|
71
|
-
};
|
|
72
|
-
};
|
|
73
|
-
//# sourceMappingURL=shutdownRegistry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shutdownRegistry.js","sourceRoot":"","sources":["../src/shutdownRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAoB,CAAC;AACtD,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAE/B,MAAM,YAAY,GAAG,GAAS,EAAE;IAC9B,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,QAAQ,EAAE,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,GAAS,EAAE;IAC5B,YAAY,EAAE,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,GAAS,EAAE;IAC9B,2EAA2E;IAC3E,uDAAuD;IACvD,eAAe,EAAE,CAAC;IAClB,YAAY,EAAE,CAAC;IACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,GAAS,EAAE;IACjC,IAAI,kBAAkB;QAAE,OAAO;IAC/B,kBAAkB,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,GAAS,EAAE;IACjC,IAAI,CAAC,kBAAkB;QAAE,OAAO;IAChC,kBAAkB,GAAG,KAAK,CAAC;IAC3B,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3C,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC/C,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAA0B,EAAgB,EAAE;IAC3E,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChC,eAAe,EAAE,CAAC;IAElB,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,OAAO,GAAG,EAAE;QACV,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,GAAG,KAAK,CAAC;QACf,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,iBAAiB,CAAC,IAAI,KAAK,CAAC;YAAE,eAAe,EAAE,CAAC;IACtD,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/startSandbox.d.ts
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { Effect, Layer } from "effect";
|
|
2
|
-
import { ContainerStartTimeoutError, CopyToWorktreeTimeoutError, SyncError, SyncInTimeoutError, WorktreeError, type DockerError } from "./errors.js";
|
|
3
|
-
import type { BindMountSandboxProvider, BindMountSandboxHandle, IsolatedSandboxProvider, IsolatedSandboxHandle, NoSandboxProvider, NoSandboxHandle } from "./SandboxProvider.js";
|
|
4
|
-
import { type Sandbox, type MountEntry } from "./SandboxFactory.js";
|
|
5
|
-
export interface StartSandboxBindMountOptions {
|
|
6
|
-
provider: BindMountSandboxProvider;
|
|
7
|
-
hostRepoDir: string;
|
|
8
|
-
env: Record<string, string>;
|
|
9
|
-
worktreeOrRepoPath: string;
|
|
10
|
-
gitMounts: MountEntry[];
|
|
11
|
-
repoDir: string;
|
|
12
|
-
copyPaths?: undefined;
|
|
13
|
-
}
|
|
14
|
-
export interface StartSandboxIsolatedOptions {
|
|
15
|
-
provider: IsolatedSandboxProvider;
|
|
16
|
-
hostRepoDir: string;
|
|
17
|
-
env: Record<string, string>;
|
|
18
|
-
worktreeOrRepoPath?: undefined;
|
|
19
|
-
gitMounts?: undefined;
|
|
20
|
-
repoDir?: undefined;
|
|
21
|
-
copyPaths?: string[];
|
|
22
|
-
}
|
|
23
|
-
export interface StartSandboxNoSandboxOptions {
|
|
24
|
-
provider: NoSandboxProvider;
|
|
25
|
-
hostRepoDir: string;
|
|
26
|
-
env: Record<string, string>;
|
|
27
|
-
/** Host-side worktree path the agent will run in. Equal to hostRepoDir in head mode. */
|
|
28
|
-
worktreeOrRepoPath: string;
|
|
29
|
-
gitMounts?: undefined;
|
|
30
|
-
repoDir?: undefined;
|
|
31
|
-
copyPaths?: undefined;
|
|
32
|
-
}
|
|
33
|
-
export type StartSandboxOptions = StartSandboxBindMountOptions | StartSandboxIsolatedOptions | StartSandboxNoSandboxOptions;
|
|
34
|
-
export interface StartSandboxResult {
|
|
35
|
-
handle: BindMountSandboxHandle | IsolatedSandboxHandle | NoSandboxHandle;
|
|
36
|
-
sandboxLayer: Layer.Layer<Sandbox>;
|
|
37
|
-
worktreePath: string;
|
|
38
|
-
}
|
|
39
|
-
export declare const COPY_PATHS_TIMEOUT_MS = 120000;
|
|
40
|
-
/**
|
|
41
|
-
* Start a sandbox by dispatching on `provider.tag`.
|
|
42
|
-
*
|
|
43
|
-
* - `"bind-mount"`: creates mounts and delegates to the provider's `create()`.
|
|
44
|
-
* - `"isolated"`: creates handle, syncs host repo via git bundle, then copies
|
|
45
|
-
* optional `copyPaths` via `handle.copyIn()`.
|
|
46
|
-
*
|
|
47
|
-
* Returns the handle, a `SandboxService` layer, and the worktree path.
|
|
48
|
-
*/
|
|
49
|
-
export declare const startSandbox: (options: StartSandboxOptions) => Effect.Effect<StartSandboxResult, ContainerStartTimeoutError | CopyToWorktreeTimeoutError | DockerError | SyncError | SyncInTimeoutError | WorktreeError, never>;
|
|
50
|
-
//# sourceMappingURL=startSandbox.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"startSandbox.d.ts","sourceRoot":"","sources":["../src/startSandbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAGvC,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,SAAS,EACT,kBAAkB,EAClB,aAAa,EAEb,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAEV,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,UAAU,EAGhB,MAAM,qBAAqB,CAAC;AAI7B,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,wBAAwB,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,uBAAuB,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,wFAAwF;IACxF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,MAAM,mBAAmB,GAC3B,4BAA4B,GAC5B,2BAA2B,GAC3B,4BAA4B,CAAC;AAEjC,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,sBAAsB,GAAG,qBAAqB,GAAG,eAAe,CAAC;IACzE,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAID,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAE7C;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,oMAkBxB,CAAC"}
|
package/dist/startSandbox.js
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { Effect } from "effect";
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
3
|
-
import { join, posix } from "node:path";
|
|
4
|
-
import { ContainerStartTimeoutError, CopyToWorktreeTimeoutError, SyncInTimeoutError, WorktreeError, withTimeout, } from "./errors.js";
|
|
5
|
-
import { makeSandboxLayerFromHandle, SANDBOX_REPO_DIR, } from "./SandboxFactory.js";
|
|
6
|
-
import { syncIn } from "./syncIn.js";
|
|
7
|
-
import { normalizeMounts } from "./mountUtils.js";
|
|
8
|
-
const CONTAINER_START_TIMEOUT_MS = 120_000;
|
|
9
|
-
const SYNC_IN_TIMEOUT_MS = 120_000;
|
|
10
|
-
export const COPY_PATHS_TIMEOUT_MS = 120_000;
|
|
11
|
-
/**
|
|
12
|
-
* Start a sandbox by dispatching on `provider.tag`.
|
|
13
|
-
*
|
|
14
|
-
* - `"bind-mount"`: creates mounts and delegates to the provider's `create()`.
|
|
15
|
-
* - `"isolated"`: creates handle, syncs host repo via git bundle, then copies
|
|
16
|
-
* optional `copyPaths` via `handle.copyIn()`.
|
|
17
|
-
*
|
|
18
|
-
* Returns the handle, a `SandboxService` layer, and the worktree path.
|
|
19
|
-
*/
|
|
20
|
-
export const startSandbox = (options) => {
|
|
21
|
-
if (options.provider.tag === "bind-mount") {
|
|
22
|
-
return startBindMountSandbox(options);
|
|
23
|
-
}
|
|
24
|
-
if (options.provider.tag === "none") {
|
|
25
|
-
return startNoSandbox(options);
|
|
26
|
-
}
|
|
27
|
-
return startIsolatedSandbox(options);
|
|
28
|
-
};
|
|
29
|
-
const startNoSandbox = (options) => Effect.tryPromise({
|
|
30
|
-
try: () => options.provider.create({
|
|
31
|
-
worktreePath: options.worktreeOrRepoPath,
|
|
32
|
-
env: options.env,
|
|
33
|
-
}),
|
|
34
|
-
catch: (e) => new WorktreeError({
|
|
35
|
-
message: `Provider '${options.provider.name}' create failed: ${e instanceof Error ? e.message : String(e)}`,
|
|
36
|
-
}),
|
|
37
|
-
}).pipe(Effect.map((handle) => ({
|
|
38
|
-
handle,
|
|
39
|
-
sandboxLayer: makeSandboxLayerFromHandle(handle),
|
|
40
|
-
worktreePath: handle.worktreePath,
|
|
41
|
-
})));
|
|
42
|
-
const startBindMountSandbox = (options) => Effect.tryPromise({
|
|
43
|
-
try: () => {
|
|
44
|
-
const rawMounts = [
|
|
45
|
-
{
|
|
46
|
-
hostPath: options.worktreeOrRepoPath,
|
|
47
|
-
sandboxPath: options.repoDir,
|
|
48
|
-
},
|
|
49
|
-
...options.gitMounts,
|
|
50
|
-
];
|
|
51
|
-
const mounts = normalizeMounts(rawMounts, options.worktreeOrRepoPath, SANDBOX_REPO_DIR);
|
|
52
|
-
const worktreePath = process.platform === "win32"
|
|
53
|
-
? options.worktreeOrRepoPath.replace(/\\/g, "/")
|
|
54
|
-
: options.worktreeOrRepoPath;
|
|
55
|
-
return options.provider.create({
|
|
56
|
-
worktreePath,
|
|
57
|
-
hostRepoPath: options.hostRepoDir,
|
|
58
|
-
mounts,
|
|
59
|
-
env: options.env,
|
|
60
|
-
});
|
|
61
|
-
},
|
|
62
|
-
catch: (e) => new WorktreeError({
|
|
63
|
-
message: `Provider '${options.provider.name}' create failed: ${e instanceof Error ? e.message : String(e)}`,
|
|
64
|
-
}),
|
|
65
|
-
}).pipe(Effect.map((handle) => ({
|
|
66
|
-
handle,
|
|
67
|
-
sandboxLayer: makeSandboxLayerFromHandle(handle),
|
|
68
|
-
worktreePath: handle.worktreePath,
|
|
69
|
-
})), withTimeout(CONTAINER_START_TIMEOUT_MS, () => new ContainerStartTimeoutError({
|
|
70
|
-
message: `Sandbox container start timed out after ${CONTAINER_START_TIMEOUT_MS}ms`,
|
|
71
|
-
timeoutMs: CONTAINER_START_TIMEOUT_MS,
|
|
72
|
-
})));
|
|
73
|
-
const startIsolatedSandbox = (options) => Effect.gen(function* () {
|
|
74
|
-
const handle = yield* Effect.tryPromise({
|
|
75
|
-
try: () => options.provider.create({ env: options.env }),
|
|
76
|
-
catch: (e) => new WorktreeError({
|
|
77
|
-
message: `Isolated provider '${options.provider.name}' setup failed: ${e instanceof Error ? e.message : String(e)}`,
|
|
78
|
-
}),
|
|
79
|
-
}).pipe(withTimeout(CONTAINER_START_TIMEOUT_MS, () => new ContainerStartTimeoutError({
|
|
80
|
-
message: `Isolated sandbox container start timed out after ${CONTAINER_START_TIMEOUT_MS}ms`,
|
|
81
|
-
timeoutMs: CONTAINER_START_TIMEOUT_MS,
|
|
82
|
-
})));
|
|
83
|
-
yield* syncIn(options.hostRepoDir, handle).pipe(withTimeout(SYNC_IN_TIMEOUT_MS, () => new SyncInTimeoutError({
|
|
84
|
-
message: `Sync-in timed out after ${SYNC_IN_TIMEOUT_MS}ms`,
|
|
85
|
-
timeoutMs: SYNC_IN_TIMEOUT_MS,
|
|
86
|
-
})));
|
|
87
|
-
if (options.copyPaths && options.copyPaths.length > 0) {
|
|
88
|
-
const pathsToCopy = options.copyPaths;
|
|
89
|
-
yield* Effect.gen(function* () {
|
|
90
|
-
for (const relativePath of pathsToCopy) {
|
|
91
|
-
const hostPath = join(options.hostRepoDir, relativePath);
|
|
92
|
-
if (!existsSync(hostPath)) {
|
|
93
|
-
continue;
|
|
94
|
-
}
|
|
95
|
-
// Sandbox-side path: Linux container, must use POSIX separators
|
|
96
|
-
// regardless of host platform.
|
|
97
|
-
const sandboxPath = posix.join(handle.worktreePath, relativePath);
|
|
98
|
-
yield* Effect.tryPromise({
|
|
99
|
-
try: () => handle.copyIn(hostPath, sandboxPath),
|
|
100
|
-
catch: (e) => new WorktreeError({
|
|
101
|
-
message: `Failed to copy ${relativePath} into sandbox: ${e instanceof Error ? e.message : String(e)}`,
|
|
102
|
-
}),
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
}).pipe(withTimeout(COPY_PATHS_TIMEOUT_MS, () => new CopyToWorktreeTimeoutError({
|
|
106
|
-
message: `Copying paths to worktree timed out after ${COPY_PATHS_TIMEOUT_MS}ms`,
|
|
107
|
-
timeoutMs: COPY_PATHS_TIMEOUT_MS,
|
|
108
|
-
paths: pathsToCopy,
|
|
109
|
-
})));
|
|
110
|
-
}
|
|
111
|
-
return {
|
|
112
|
-
handle,
|
|
113
|
-
sandboxLayer: makeSandboxLayerFromHandle(handle),
|
|
114
|
-
worktreePath: handle.worktreePath,
|
|
115
|
-
};
|
|
116
|
-
});
|
|
117
|
-
//# sourceMappingURL=startSandbox.js.map
|
package/dist/startSandbox.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"startSandbox.js","sourceRoot":"","sources":["../src/startSandbox.ts"],"names":[],"mappings":"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"}
|
package/dist/syncIn.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sync-in: transfer a host git repo into an isolated sandbox via git bundle.
|
|
3
|
-
*
|
|
4
|
-
* Creates a git bundle capturing all refs from the host repo,
|
|
5
|
-
* copies it into the sandbox via the provider's copyIn, and
|
|
6
|
-
* clones from the bundle inside the sandbox.
|
|
7
|
-
*/
|
|
8
|
-
import { Effect } from "effect";
|
|
9
|
-
import type { IsolatedSandboxHandle } from "./SandboxProvider.js";
|
|
10
|
-
import { SyncError } from "./errors.js";
|
|
11
|
-
/**
|
|
12
|
-
* Sync a host git repo into an isolated sandbox.
|
|
13
|
-
*
|
|
14
|
-
* 1. `git bundle create --all` on the host
|
|
15
|
-
* 2. `copyIn` the bundle to the sandbox
|
|
16
|
-
* 3. `git clone` from the bundle inside the sandbox
|
|
17
|
-
* 4. Verify HEAD matches
|
|
18
|
-
*
|
|
19
|
-
* @returns The branch name that was checked out
|
|
20
|
-
*/
|
|
21
|
-
export declare const syncIn: (hostRepoDir: string, handle: IsolatedSandboxHandle) => Effect.Effect<{
|
|
22
|
-
branch: string;
|
|
23
|
-
}, SyncError, never>;
|
|
24
|
-
//# sourceMappingURL=syncIn.d.ts.map
|
package/dist/syncIn.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"syncIn.d.ts","sourceRoot":"","sources":["../src/syncIn.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAwDxC;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM;;oBA2Ff,CAAC"}
|