@ai-hero/sandcastle 0.6.5 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/README.md +137 -62
  2. package/dist/{MountConfig.d.ts → MountConfig-CmXclHA5.d.ts} +3 -2
  3. package/dist/{SandboxProvider.d.ts → SandboxProvider-EkSMuBp8.d.ts} +25 -39
  4. package/dist/chunk-52CIJF45.js +25569 -0
  5. package/dist/chunk-52CIJF45.js.map +1 -0
  6. package/dist/chunk-5VM5QZ26.js +26988 -0
  7. package/dist/chunk-5VM5QZ26.js.map +1 -0
  8. package/dist/chunk-72UVAC7B.js +99 -0
  9. package/dist/chunk-72UVAC7B.js.map +1 -0
  10. package/dist/chunk-BIWNFKGV.js +22 -0
  11. package/dist/chunk-BIWNFKGV.js.map +1 -0
  12. package/dist/chunk-NGBM7T3E.js +76 -0
  13. package/dist/chunk-NGBM7T3E.js.map +1 -0
  14. package/dist/chunk-NSFQW6ML.js +362 -0
  15. package/dist/chunk-NSFQW6ML.js.map +1 -0
  16. package/dist/index.d.ts +920 -22
  17. package/dist/index.js +3212 -9
  18. package/dist/index.js.map +1 -1
  19. package/dist/main.d.ts +0 -2
  20. package/dist/main.js +19349 -13
  21. package/dist/main.js.map +1 -1
  22. package/dist/mountUtils-CCA-bbpK.d.ts +25 -0
  23. package/dist/sandboxes/daytona.d.ts +8 -5
  24. package/dist/sandboxes/daytona.js +118 -124
  25. package/dist/sandboxes/daytona.js.map +1 -1
  26. package/dist/sandboxes/docker.d.ts +10 -8
  27. package/dist/sandboxes/docker.js +8 -255
  28. package/dist/sandboxes/docker.js.map +1 -1
  29. package/dist/sandboxes/no-sandbox.d.ts +7 -4
  30. package/dist/sandboxes/no-sandbox.js +6 -114
  31. package/dist/sandboxes/no-sandbox.js.map +1 -1
  32. package/dist/sandboxes/podman.d.ts +10 -8
  33. package/dist/sandboxes/podman.js +287 -297
  34. package/dist/sandboxes/podman.js.map +1 -1
  35. package/dist/sandboxes/vercel.d.ts +7 -4
  36. package/dist/sandboxes/vercel.js +144 -165
  37. package/dist/sandboxes/vercel.js.map +1 -1
  38. package/dist/templates/sequential-reviewer/implement-prompt.md +2 -2
  39. package/dist/templates/simple-loop/prompt.md +2 -2
  40. package/package.json +15 -14
  41. package/dist/AgentProvider.d.ts +0 -134
  42. package/dist/AgentProvider.d.ts.map +0 -1
  43. package/dist/AgentProvider.js +0 -647
  44. package/dist/AgentProvider.js.map +0 -1
  45. package/dist/AgentStreamEmitter.d.ts +0 -36
  46. package/dist/AgentStreamEmitter.d.ts.map +0 -1
  47. package/dist/AgentStreamEmitter.js +0 -21
  48. package/dist/AgentStreamEmitter.js.map +0 -1
  49. package/dist/CopyToWorktree.d.ts +0 -15
  50. package/dist/CopyToWorktree.d.ts.map +0 -1
  51. package/dist/CopyToWorktree.js +0 -60
  52. package/dist/CopyToWorktree.js.map +0 -1
  53. package/dist/Display.d.ts +0 -58
  54. package/dist/Display.d.ts.map +0 -1
  55. package/dist/Display.js +0 -142
  56. package/dist/Display.js.map +0 -1
  57. package/dist/DockerLifecycle.d.ts +0 -54
  58. package/dist/DockerLifecycle.d.ts.map +0 -1
  59. package/dist/DockerLifecycle.js +0 -123
  60. package/dist/DockerLifecycle.js.map +0 -1
  61. package/dist/EnvResolver.d.ts +0 -11
  62. package/dist/EnvResolver.d.ts.map +0 -1
  63. package/dist/EnvResolver.js +0 -63
  64. package/dist/EnvResolver.js.map +0 -1
  65. package/dist/ErrorHandler.d.ts +0 -15
  66. package/dist/ErrorHandler.d.ts.map +0 -1
  67. package/dist/ErrorHandler.js +0 -85
  68. package/dist/ErrorHandler.js.map +0 -1
  69. package/dist/InitService.d.ts +0 -92
  70. package/dist/InitService.d.ts.map +0 -1
  71. package/dist/InitService.js +0 -836
  72. package/dist/InitService.js.map +0 -1
  73. package/dist/MountConfig.d.ts.map +0 -1
  74. package/dist/MountConfig.js +0 -7
  75. package/dist/MountConfig.js.map +0 -1
  76. package/dist/Orchestrator.d.ts +0 -56
  77. package/dist/Orchestrator.d.ts.map +0 -1
  78. package/dist/Orchestrator.js +0 -293
  79. package/dist/Orchestrator.js.map +0 -1
  80. package/dist/Output.d.ts +0 -107
  81. package/dist/Output.d.ts.map +0 -1
  82. package/dist/Output.js +0 -95
  83. package/dist/Output.js.map +0 -1
  84. package/dist/PodmanLifecycle.d.ts +0 -17
  85. package/dist/PodmanLifecycle.d.ts.map +0 -1
  86. package/dist/PodmanLifecycle.js +0 -45
  87. package/dist/PodmanLifecycle.js.map +0 -1
  88. package/dist/PromptArgumentSubstitution.d.ts +0 -32
  89. package/dist/PromptArgumentSubstitution.d.ts.map +0 -1
  90. package/dist/PromptArgumentSubstitution.js +0 -104
  91. package/dist/PromptArgumentSubstitution.js.map +0 -1
  92. package/dist/PromptPreprocessor.d.ts +0 -15
  93. package/dist/PromptPreprocessor.d.ts.map +0 -1
  94. package/dist/PromptPreprocessor.js +0 -55
  95. package/dist/PromptPreprocessor.js.map +0 -1
  96. package/dist/PromptResolver.d.ts +0 -21
  97. package/dist/PromptResolver.d.ts.map +0 -1
  98. package/dist/PromptResolver.js +0 -27
  99. package/dist/PromptResolver.js.map +0 -1
  100. package/dist/RecoveryMessage.d.ts +0 -15
  101. package/dist/RecoveryMessage.d.ts.map +0 -1
  102. package/dist/RecoveryMessage.js +0 -81
  103. package/dist/RecoveryMessage.js.map +0 -1
  104. package/dist/SandboxFactory.d.ts +0 -90
  105. package/dist/SandboxFactory.d.ts.map +0 -1
  106. package/dist/SandboxFactory.js +0 -324
  107. package/dist/SandboxFactory.js.map +0 -1
  108. package/dist/SandboxLifecycle.d.ts +0 -65
  109. package/dist/SandboxLifecycle.d.ts.map +0 -1
  110. package/dist/SandboxLifecycle.js +0 -296
  111. package/dist/SandboxLifecycle.js.map +0 -1
  112. package/dist/SandboxProvider.d.ts.map +0 -1
  113. package/dist/SandboxProvider.js +0 -28
  114. package/dist/SandboxProvider.js.map +0 -1
  115. package/dist/SessionStore.d.ts +0 -110
  116. package/dist/SessionStore.d.ts.map +0 -1
  117. package/dist/SessionStore.js +0 -330
  118. package/dist/SessionStore.js.map +0 -1
  119. package/dist/TextDeltaBuffer.d.ts +0 -24
  120. package/dist/TextDeltaBuffer.d.ts.map +0 -1
  121. package/dist/TextDeltaBuffer.js +0 -68
  122. package/dist/TextDeltaBuffer.js.map +0 -1
  123. package/dist/WorktreeManager.d.ts +0 -79
  124. package/dist/WorktreeManager.d.ts.map +0 -1
  125. package/dist/WorktreeManager.js +0 -283
  126. package/dist/WorktreeManager.js.map +0 -1
  127. package/dist/boundedTail.d.ts +0 -48
  128. package/dist/boundedTail.d.ts.map +0 -1
  129. package/dist/boundedTail.js +0 -64
  130. package/dist/boundedTail.js.map +0 -1
  131. package/dist/cli.d.ts +0 -30
  132. package/dist/cli.d.ts.map +0 -1
  133. package/dist/cli.js +0 -340
  134. package/dist/cli.js.map +0 -1
  135. package/dist/createSandbox.d.ts +0 -154
  136. package/dist/createSandbox.d.ts.map +0 -1
  137. package/dist/createSandbox.js +0 -476
  138. package/dist/createSandbox.js.map +0 -1
  139. package/dist/createWorktree.d.ts +0 -154
  140. package/dist/createWorktree.d.ts.map +0 -1
  141. package/dist/createWorktree.js +0 -391
  142. package/dist/createWorktree.js.map +0 -1
  143. package/dist/errors.d.ts +0 -227
  144. package/dist/errors.d.ts.map +0 -1
  145. package/dist/errors.js +0 -81
  146. package/dist/errors.js.map +0 -1
  147. package/dist/extractStructuredOutput.d.ts +0 -23
  148. package/dist/extractStructuredOutput.d.ts.map +0 -1
  149. package/dist/extractStructuredOutput.js +0 -102
  150. package/dist/extractStructuredOutput.js.map +0 -1
  151. package/dist/index.d.ts.map +0 -1
  152. package/dist/interactive.d.ts +0 -74
  153. package/dist/interactive.d.ts.map +0 -1
  154. package/dist/interactive.js +0 -279
  155. package/dist/interactive.js.map +0 -1
  156. package/dist/main.d.ts.map +0 -1
  157. package/dist/mergeProviderEnv.d.ts +0 -13
  158. package/dist/mergeProviderEnv.d.ts.map +0 -1
  159. package/dist/mergeProviderEnv.js +0 -23
  160. package/dist/mergeProviderEnv.js.map +0 -1
  161. package/dist/mountUtils.d.ts +0 -146
  162. package/dist/mountUtils.d.ts.map +0 -1
  163. package/dist/mountUtils.js +0 -301
  164. package/dist/mountUtils.js.map +0 -1
  165. package/dist/raceAbortSignal.d.ts +0 -18
  166. package/dist/raceAbortSignal.d.ts.map +0 -1
  167. package/dist/raceAbortSignal.js +0 -32
  168. package/dist/raceAbortSignal.js.map +0 -1
  169. package/dist/resolveCwd.d.ts +0 -24
  170. package/dist/resolveCwd.d.ts.map +0 -1
  171. package/dist/resolveCwd.js +0 -32
  172. package/dist/resolveCwd.js.map +0 -1
  173. package/dist/resumePrecheck.d.ts +0 -26
  174. package/dist/resumePrecheck.d.ts.map +0 -1
  175. package/dist/resumePrecheck.js +0 -40
  176. package/dist/resumePrecheck.js.map +0 -1
  177. package/dist/run.d.ts +0 -216
  178. package/dist/run.d.ts.map +0 -1
  179. package/dist/run.js +0 -313
  180. package/dist/run.js.map +0 -1
  181. package/dist/sandboxExec.d.ts +0 -12
  182. package/dist/sandboxExec.d.ts.map +0 -1
  183. package/dist/sandboxExec.js +0 -26
  184. package/dist/sandboxExec.js.map +0 -1
  185. package/dist/sandboxes/daytona.d.ts.map +0 -1
  186. package/dist/sandboxes/docker.d.ts.map +0 -1
  187. package/dist/sandboxes/no-sandbox.d.ts.map +0 -1
  188. package/dist/sandboxes/podman.d.ts.map +0 -1
  189. package/dist/sandboxes/test-bind-mount.d.ts +0 -17
  190. package/dist/sandboxes/test-bind-mount.d.ts.map +0 -1
  191. package/dist/sandboxes/test-bind-mount.js +0 -92
  192. package/dist/sandboxes/test-bind-mount.js.map +0 -1
  193. package/dist/sandboxes/test-isolated.d.ts +0 -17
  194. package/dist/sandboxes/test-isolated.d.ts.map +0 -1
  195. package/dist/sandboxes/test-isolated.js +0 -98
  196. package/dist/sandboxes/test-isolated.js.map +0 -1
  197. package/dist/sandboxes/vercel.d.ts.map +0 -1
  198. package/dist/shutdownRegistry.d.ts +0 -30
  199. package/dist/shutdownRegistry.d.ts.map +0 -1
  200. package/dist/shutdownRegistry.js +0 -73
  201. package/dist/shutdownRegistry.js.map +0 -1
  202. package/dist/startSandbox.d.ts +0 -50
  203. package/dist/startSandbox.d.ts.map +0 -1
  204. package/dist/startSandbox.js +0 -117
  205. package/dist/startSandbox.js.map +0 -1
  206. package/dist/syncIn.d.ts +0 -24
  207. package/dist/syncIn.d.ts.map +0 -1
  208. package/dist/syncIn.js +0 -107
  209. package/dist/syncIn.js.map +0 -1
  210. package/dist/syncOut.d.ts +0 -27
  211. package/dist/syncOut.d.ts.map +0 -1
  212. package/dist/syncOut.js +0 -271
  213. package/dist/syncOut.js.map +0 -1
  214. package/dist/templates.d.ts +0 -2
  215. package/dist/templates.d.ts.map +0 -1
  216. package/dist/templates.js +0 -26
  217. package/dist/templates.js.map +0 -1
  218. package/dist/terminalCleanup.d.ts +0 -30
  219. package/dist/terminalCleanup.d.ts.map +0 -1
  220. package/dist/terminalCleanup.js +0 -37
  221. package/dist/terminalCleanup.js.map +0 -1
  222. package/dist/testSandbox.d.ts +0 -8
  223. package/dist/testSandbox.d.ts.map +0 -1
  224. package/dist/testSandbox.js +0 -109
  225. package/dist/testSandbox.js.map +0 -1
  226. package/dist/testSetup.d.ts +0 -2
  227. package/dist/testSetup.d.ts.map +0 -1
  228. package/dist/testSetup.js +0 -29
  229. package/dist/testSetup.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/errors.js DELETED
@@ -1,81 +0,0 @@
1
- import { Data, Duration, Effect } from "effect";
2
- /** Command execution failed in the sandbox */
3
- export class ExecError extends Data.TaggedError("ExecError") {
4
- }
5
- /** Command execution failed on the host */
6
- export class ExecHostError extends Data.TaggedError("ExecHostError") {
7
- }
8
- /** File copy between host and sandbox failed */
9
- export class CopyError extends Data.TaggedError("CopyError") {
10
- }
11
- /** Docker infrastructure operation failed */
12
- export class DockerError extends Data.TaggedError("DockerError") {
13
- }
14
- /** Podman infrastructure operation failed */
15
- export class PodmanError extends Data.TaggedError("PodmanError") {
16
- }
17
- /** Git sync-in or sync-out operation failed */
18
- export class SyncError extends Data.TaggedError("SyncError") {
19
- }
20
- /** Git worktree operation failed */
21
- export class WorktreeError extends Data.TaggedError("WorktreeError") {
22
- }
23
- /** Prompt resolution or preprocessing failed */
24
- export class PromptError extends Data.TaggedError("PromptError") {
25
- }
26
- /** Agent invocation failed */
27
- export class AgentError extends Data.TaggedError("AgentError") {
28
- }
29
- /** .sandcastle/ config directory missing */
30
- export class ConfigDirError extends Data.TaggedError("ConfigDirError") {
31
- }
32
- /** Initialization or setup operation failed */
33
- export class InitError extends Data.TaggedError("InitError") {
34
- }
35
- /** Run exceeded the configured agent idle timeout */
36
- export class AgentIdleTimeoutError extends Data.TaggedError("AgentIdleTimeoutError") {
37
- }
38
- /** Git worktree create or prune timed out */
39
- export class WorktreeTimeoutError extends Data.TaggedError("WorktreeTimeoutError") {
40
- }
41
- /** Sandbox container start timed out */
42
- export class ContainerStartTimeoutError extends Data.TaggedError("ContainerStartTimeoutError") {
43
- }
44
- /** Copying files to worktree timed out */
45
- export class CopyToWorktreeTimeoutError extends Data.TaggedError("CopyToWorktreeTimeoutError") {
46
- }
47
- /** Fallback cp -R to worktree failed */
48
- export class CopyToWorktreeError extends Data.TaggedError("CopyToWorktreeError") {
49
- }
50
- /** Git sync-in for isolated providers timed out */
51
- export class SyncInTimeoutError extends Data.TaggedError("SyncInTimeoutError") {
52
- }
53
- /** onSandboxReady hook command timed out */
54
- export class HookTimeoutError extends Data.TaggedError("HookTimeoutError") {
55
- }
56
- /** Git config setup command timed out */
57
- export class GitSetupTimeoutError extends Data.TaggedError("GitSetupTimeoutError") {
58
- }
59
- /** Prompt shell expression expansion timed out */
60
- export class PromptExpansionTimeoutError extends Data.TaggedError("PromptExpansionTimeoutError") {
61
- }
62
- /** Commit collection timed out */
63
- export class CommitCollectionTimeoutError extends Data.TaggedError("CommitCollectionTimeoutError") {
64
- }
65
- /** Merge-to-host branch timed out */
66
- export class MergeToHostTimeoutError extends Data.TaggedError("MergeToHostTimeoutError") {
67
- }
68
- /**
69
- * Wrap an effect with a timeout that fails with a specific error on expiry.
70
- * Uses `Effect.timeoutFail` under the hood.
71
- */
72
- export const withTimeout = (timeoutMs, onTimeout) => (effect) => effect.pipe(Effect.timeoutFail({
73
- duration: Duration.millis(timeoutMs),
74
- onTimeout,
75
- }));
76
- /** Session capture (read, rewrite, or write) failed */
77
- export class SessionCaptureError extends Data.TaggedError("SessionCaptureError") {
78
- }
79
- /** The provided `cwd` path does not exist or is not a directory. */
80
- export { CwdError } from "./resolveCwd.js";
81
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import { type OutputDefinition } from "./Output.js";
2
- interface ExtractionContext {
3
- readonly commits: {
4
- sha: string;
5
- }[];
6
- readonly branch: string;
7
- readonly preservedWorktreePath?: string;
8
- readonly sessionId?: string;
9
- readonly sessionFilePath?: string;
10
- }
11
- /**
12
- * Extract and validate structured output from the agent's stdout.
13
- *
14
- * - Finds the **last** occurrence of `<tag>...</tag>` in stdout.
15
- * - For `Output.object`: unwraps optional Markdown fences, JSON-parses,
16
- * and validates against the Standard Schema.
17
- * - For `Output.string`: trims whitespace only.
18
- *
19
- * Throws `StructuredOutputError` on missing tag, invalid JSON, or schema failure.
20
- */
21
- export declare const extractStructuredOutput: <T>(stdout: string, definition: OutputDefinition, context: ExtractionContext) => Promise<T>;
22
- export {};
23
- //# sourceMappingURL=extractStructuredOutput.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extractStructuredOutput.d.ts","sourceRoot":"","sources":["../src/extractStructuredOutput.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EAGtB,MAAM,aAAa,CAAC;AAErB,UAAU,iBAAiB;IACzB,QAAQ,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,GAAU,CAAC,yFAa9C,CAAC"}
@@ -1,102 +0,0 @@
1
- import { StructuredOutputError, } from "./Output.js";
2
- /**
3
- * Extract and validate structured output from the agent's stdout.
4
- *
5
- * - Finds the **last** occurrence of `<tag>...</tag>` in stdout.
6
- * - For `Output.object`: unwraps optional Markdown fences, JSON-parses,
7
- * and validates against the Standard Schema.
8
- * - For `Output.string`: trims whitespace only.
9
- *
10
- * Throws `StructuredOutputError` on missing tag, invalid JSON, or schema failure.
11
- */
12
- export const extractStructuredOutput = async (stdout, definition, context) => {
13
- if (definition._tag === "object") {
14
- return extractObject(stdout, definition, context);
15
- }
16
- return extractString(stdout, definition, context);
17
- };
18
- // ---------------------------------------------------------------------------
19
- // Object extraction
20
- // ---------------------------------------------------------------------------
21
- const extractObject = async (stdout, definition, context) => {
22
- const raw = findLastTagContent(stdout, definition.tag);
23
- if (raw === undefined) {
24
- throw new StructuredOutputError(`Structured output tag <${definition.tag}> not found in agent output`, { tag: definition.tag, rawMatched: undefined, ...context });
25
- }
26
- // Fence-aware unwrap + JSON parse
27
- const unwrapped = unwrapFences(raw.trim());
28
- let parsed;
29
- try {
30
- parsed = JSON.parse(unwrapped);
31
- }
32
- catch (cause) {
33
- throw new StructuredOutputError(`Structured output tag <${definition.tag}> contains invalid JSON`, { tag: definition.tag, rawMatched: raw, cause, ...context });
34
- }
35
- // Standard Schema validation
36
- const result = await definition.schema["~standard"].validate(parsed);
37
- if (result.issues) {
38
- throw new StructuredOutputError(`Structured output tag <${definition.tag}> failed schema validation`, {
39
- tag: definition.tag,
40
- rawMatched: raw,
41
- cause: result.issues,
42
- ...context,
43
- });
44
- }
45
- return result.value;
46
- };
47
- // ---------------------------------------------------------------------------
48
- // String extraction
49
- // ---------------------------------------------------------------------------
50
- const extractString = (stdout, definition, context) => {
51
- const raw = findLastTagContent(stdout, definition.tag);
52
- if (raw === undefined) {
53
- throw new StructuredOutputError(`Structured output tag <${definition.tag}> not found in agent output`, { tag: definition.tag, rawMatched: undefined, ...context });
54
- }
55
- return raw.trim();
56
- };
57
- // ---------------------------------------------------------------------------
58
- // Tag extraction — last match wins
59
- // ---------------------------------------------------------------------------
60
- /**
61
- * Find the content between the **last** `<tag>` and `</tag>` pair in text.
62
- * Returns `undefined` if the tag is not found.
63
- */
64
- const findLastTagContent = (text, tag) => {
65
- const openTag = `<${tag}>`;
66
- const closeTag = `</${tag}>`;
67
- let lastContent;
68
- let searchFrom = 0;
69
- while (true) {
70
- const openIdx = text.indexOf(openTag, searchFrom);
71
- if (openIdx === -1)
72
- break;
73
- const contentStart = openIdx + openTag.length;
74
- const closeIdx = text.indexOf(closeTag, contentStart);
75
- if (closeIdx === -1)
76
- break;
77
- lastContent = text.slice(contentStart, closeIdx);
78
- searchFrom = closeIdx + closeTag.length;
79
- }
80
- return lastContent;
81
- };
82
- // ---------------------------------------------------------------------------
83
- // Fence-aware unwrap (object mode only)
84
- // ---------------------------------------------------------------------------
85
- /**
86
- * Strip an optional Markdown code fence from text.
87
- *
88
- * Recognises:
89
- * - ` ```json\n...\n``` `
90
- * - ` ```\n...\n``` `
91
- *
92
- * If no fence is detected, returns the input unchanged (already trimmed by caller).
93
- */
94
- const unwrapFences = (text) => {
95
- // Match ```json ... ``` or ``` ... ``` (with optional language hint)
96
- const fenceMatch = text.match(/^```(?:json)?\s*\n([\s\S]*?)\n\s*```\s*$/);
97
- if (fenceMatch) {
98
- return fenceMatch[1].trim();
99
- }
100
- return text;
101
- };
102
- //# sourceMappingURL=extractStructuredOutput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extractStructuredOutput.js","sourceRoot":"","sources":["../src/extractStructuredOutput.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,GAItB,MAAM,aAAa,CAAC;AAUrB;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,MAAc,EACd,UAA4B,EAC5B,OAA0B,EACd,EAAE;IACd,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,aAAa,CAClB,MAAM,EACN,UAAuC,EACvC,OAAO,CACR,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAM,CAAC;AACzD,CAAC,CAAC;AAEF,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,aAAa,GAAG,KAAK,EACzB,MAAc,EACd,UAAqC,EACrC,OAA0B,EACd,EAAE;IACd,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAEvD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,qBAAqB,CAC7B,0BAA0B,UAAU,CAAC,GAAG,6BAA6B,EACrE,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAC3D,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAE3C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,qBAAqB,CAC7B,0BAA0B,UAAU,CAAC,GAAG,yBAAyB,EACjE,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAC5D,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAErE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,qBAAqB,CAC7B,0BAA0B,UAAU,CAAC,GAAG,4BAA4B,EACpE;YACE,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,GAAG,OAAO;SACX,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC,CAAC;AAEF,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,aAAa,GAAG,CACpB,MAAc,EACd,UAAkC,EAClC,OAA0B,EAClB,EAAE;IACV,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAEvD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,qBAAqB,CAC7B,0BAA0B,UAAU,CAAC,GAAG,6BAA6B,EACrE,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAC3D,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC,CAAC;AAEF,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,GAAW,EAAsB,EAAE;IAC3E,MAAM,OAAO,GAAG,IAAI,GAAG,GAAG,CAAC;IAC3B,MAAM,QAAQ,GAAG,KAAK,GAAG,GAAG,CAAC;IAE7B,IAAI,WAA+B,CAAC;IACpC,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,MAAM;QAE1B,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACtD,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,MAAM;QAE3B,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACjD,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC1C,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,8EAA8E;AAC9E,wCAAwC;AACxC,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,YAAY,GAAG,CAAC,IAAY,EAAU,EAAE;IAC5C,qEAAqE;IACrE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC1E,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,YAAY,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,eAAe,EACf,cAAc,EACd,QAAQ,GACT,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EACV,oBAAoB,EACpB,OAAO,EACP,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,wBAAwB,EACxB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EACV,qBAAqB,EACrB,QAAQ,EACR,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACL,UAAU,EACV,KAAK,EACL,OAAO,EACP,MAAM,EACN,QAAQ,EACR,EAAE,GACH,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,eAAe,EACf,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,sBAAsB,EACtB,8BAA8B,EAC9B,qBAAqB,EACrB,6BAA6B,EAC7B,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC"}
@@ -1,74 +0,0 @@
1
- import type { AgentProvider } from "./AgentProvider.js";
2
- import { type SandboxHooks } from "./SandboxLifecycle.js";
3
- import type { AnySandboxProvider, BranchStrategy } from "./SandboxProvider.js";
4
- import { type PromptArgs } from "./PromptArgumentSubstitution.js";
5
- import type { Timeouts } from "./run.js";
6
- export interface InteractiveOptions {
7
- /** Agent provider to use (e.g. claudeCode("claude-opus-4-7")) */
8
- readonly agent: AgentProvider;
9
- /** Sandbox provider (e.g. docker(), noSandbox()). */
10
- readonly sandbox?: AnySandboxProvider;
11
- /** Inline prompt string (mutually exclusive with promptFile). */
12
- readonly prompt?: string;
13
- /** Path to a prompt file (mutually exclusive with prompt). */
14
- readonly promptFile?: string;
15
- /** Optional name for the interactive session. */
16
- readonly name?: string;
17
- /** Branch strategy — controls how the agent's changes relate to branches.
18
- * Defaults to { type: "head" } for bind-mount providers and { type: "merge-to-head" } for isolated providers. */
19
- readonly branchStrategy?: BranchStrategy;
20
- /** Hooks to run during sandbox lifecycle */
21
- readonly hooks?: SandboxHooks;
22
- /** Paths relative to the host repo root to copy into the worktree before sandbox start. */
23
- readonly copyToWorktree?: string[];
24
- /** Key-value map for {{KEY}} placeholder substitution in prompts */
25
- readonly promptArgs?: PromptArgs;
26
- /** Environment variables to inject into the sandbox. */
27
- readonly env?: Record<string, string>;
28
- /**
29
- * Host repo directory to use instead of `process.cwd()`.
30
- *
31
- * Relative paths resolve against `process.cwd()`; absolute paths pass
32
- * through as-is. A {@link CwdError} is thrown if the path does not exist
33
- * or is not a directory.
34
- */
35
- readonly cwd?: string;
36
- /**
37
- * An `AbortSignal` that cancels the interactive session when aborted.
38
- *
39
- * - If `signal.aborted` is already `true` at entry, `interactive()` rejects
40
- * immediately without doing any setup work.
41
- * - Aborting during an active session kills the agent subprocess.
42
- * - The rejected promise surfaces `signal.reason` via
43
- * `signal.throwIfAborted()` — no Sandcastle-specific wrapping.
44
- * - The worktree is preserved on disk after abort (error-path behavior).
45
- */
46
- readonly signal?: AbortSignal;
47
- /** Override default timeouts for built-in lifecycle steps. Unset keys keep their defaults. */
48
- readonly timeouts?: Timeouts;
49
- }
50
- export interface InteractiveResult {
51
- /** List of commits made during the interactive session. */
52
- readonly commits: {
53
- sha: string;
54
- }[];
55
- /** The branch name the agent worked on. */
56
- readonly branch: string;
57
- /** Host path to the preserved worktree, if worktree had uncommitted changes. */
58
- readonly preservedWorktreePath?: string;
59
- /** Exit code of the interactive process. */
60
- readonly exitCode: number;
61
- }
62
- /**
63
- * Launch an interactive agent session inside a sandbox.
64
- *
65
- * The user sees the agent's TUI directly. When the session ends,
66
- * Sandcastle collects commits and handles branch merging, just like run().
67
- *
68
- * Full prompt preprocessing pipeline: PromptResolver -> PromptArgumentSubstitution
69
- * -> PromptPreprocessor (shell expressions inside sandbox).
70
- *
71
- * All three branch strategies are supported: head, merge-to-head, branch.
72
- */
73
- export declare const interactive: (options: InteractiveOptions) => Promise<InteractiveResult>;
74
- //# sourceMappingURL=interactive.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASxD,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EAIf,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EACL,KAAK,UAAU,EAMhB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IACtC,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;qHACiH;IACjH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,2FAA2F;IAC3F,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,wDAAwD;IACxD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,8FAA8F;IAC9F,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpC,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,6DA4WvB,CAAC"}
@@ -1,279 +0,0 @@
1
- import { NodeContext, NodeFileSystem } from "@effect/platform-node";
2
- import { join } from "node:path";
3
- import * as clack from "@clack/prompts";
4
- import { Effect } from "effect";
5
- import { ClackDisplay, Display } from "./Display.js";
6
- import { preprocessPrompt } from "./PromptPreprocessor.js";
7
- import { resolvePrompt } from "./PromptResolver.js";
8
- import { makeSandboxLayerFromHandle, resolveGitMounts, SANDBOX_REPO_DIR, } from "./SandboxFactory.js";
9
- import { withSandboxLifecycle, runHostHooks, } from "./SandboxLifecycle.js";
10
- import { resolveEnv } from "./EnvResolver.js";
11
- import { mergeProviderEnv } from "./mergeProviderEnv.js";
12
- import { copyToWorktree } from "./CopyToWorktree.js";
13
- import { startSandbox } from "./startSandbox.js";
14
- import { syncOut } from "./syncOut.js";
15
- import * as WorktreeManager from "./WorktreeManager.js";
16
- import { generateTempBranchName, getCurrentBranch } from "./WorktreeManager.js";
17
- import { substitutePromptArgs, validateNoArgsWithInlinePrompt, validateNoBuiltInArgOverride, findMissingPromptArgKeys, BUILT_IN_PROMPT_ARG_KEYS, } from "./PromptArgumentSubstitution.js";
18
- import { noSandbox } from "./sandboxes/no-sandbox.js";
19
- import { raceAbortSignal } from "./raceAbortSignal.js";
20
- import { resolveCwd } from "./resolveCwd.js";
21
- /**
22
- * Launch an interactive agent session inside a sandbox.
23
- *
24
- * The user sees the agent's TUI directly. When the session ends,
25
- * Sandcastle collects commits and handles branch merging, just like run().
26
- *
27
- * Full prompt preprocessing pipeline: PromptResolver -> PromptArgumentSubstitution
28
- * -> PromptPreprocessor (shell expressions inside sandbox).
29
- *
30
- * All three branch strategies are supported: head, merge-to-head, branch.
31
- */
32
- export const interactive = async (options) => {
33
- // If signal is already aborted, reject immediately without any setup
34
- options.signal?.throwIfAborted();
35
- const { prompt, promptFile, hooks, agent: provider } = options;
36
- const resolvedSandbox = options.sandbox ?? noSandbox();
37
- // Derive branch strategy
38
- const branchStrategy = options.branchStrategy ??
39
- (resolvedSandbox.tag === "isolated"
40
- ? { type: "merge-to-head" }
41
- : { type: "head" }); // "bind-mount" and "none" both default to head
42
- // Validate: head strategy is not supported with isolated providers
43
- if (branchStrategy.type === "head" && resolvedSandbox.tag === "isolated") {
44
- throw new Error("head branch strategy is not supported with isolated providers");
45
- }
46
- // Validate: copyToWorktree is incompatible with head strategy
47
- if (branchStrategy.type === "head" &&
48
- options.copyToWorktree &&
49
- options.copyToWorktree.length > 0) {
50
- throw new Error("copyToWorktree is not supported with head branch strategy. " +
51
- "In head mode the host working directory is bind-mounted directly.");
52
- }
53
- // Validate buildInteractiveArgs is available
54
- if (!provider.buildInteractiveArgs) {
55
- throw new Error(`Agent provider "${provider.name}" does not support buildInteractiveArgs, required for interactive sessions.`);
56
- }
57
- const branch = branchStrategy.type === "branch" ? branchStrategy.branch : undefined;
58
- const isHeadMode = branchStrategy.type === "head";
59
- const sandboxProvider = resolvedSandbox;
60
- const inner = Effect.gen(function* () {
61
- const hostRepoDir = yield* resolveCwd(options.cwd);
62
- const d = yield* Display;
63
- // 1. Resolve prompt (from string or file), or skip if neither provided
64
- const hasPromptSource = prompt !== undefined || promptFile !== undefined;
65
- const resolved = hasPromptSource
66
- ? yield* resolvePrompt({ prompt, promptFile })
67
- : undefined;
68
- const rawPrompt = resolved?.text ?? "";
69
- const isInlinePrompt = resolved?.source === "inline";
70
- // 2. Resolve env vars
71
- const resolvedEnv = yield* resolveEnv(hostRepoDir);
72
- const env = mergeProviderEnv({
73
- resolvedEnv,
74
- agentProviderEnv: provider.env,
75
- sandboxProviderEnv: sandboxProvider.env,
76
- });
77
- const effectiveEnv = { ...env, ...(options.env ?? {}) };
78
- // 3. Capture host's current branch
79
- const currentHostBranch = yield* getCurrentBranch(hostRepoDir);
80
- const resolvedBranch = branchStrategy.type === "head"
81
- ? currentHostBranch
82
- : (branch ?? generateTempBranchName(options.name));
83
- // 4. Validate prompt args and collect missing ones interactively (skip when no prompt).
84
- // Inline prompts pass through literally — skip scanning, substitution, and built-in args.
85
- let substitutedPrompt = rawPrompt;
86
- if (hasPromptSource && !isInlinePrompt) {
87
- const userArgs = options.promptArgs ?? {};
88
- yield* validateNoBuiltInArgOverride(userArgs);
89
- // Scan for missing keys and prompt the user for each one
90
- const missingKeys = findMissingPromptArgKeys(rawPrompt, userArgs);
91
- const collectedArgs = {};
92
- for (const key of missingKeys) {
93
- const value = yield* Effect.promise(() => clack.text({
94
- message: `Enter value for {{${key}}}`,
95
- validate: (v) => {
96
- if (!v)
97
- return `A value is required for {{${key}}}`;
98
- },
99
- }));
100
- if (clack.isCancel(value)) {
101
- clack.cancel("Prompt arg collection cancelled.");
102
- return yield* Effect.fail(new Error("User cancelled prompt arg collection"));
103
- }
104
- collectedArgs[key] = value;
105
- }
106
- const mergedUserArgs = { ...userArgs, ...collectedArgs };
107
- const effectiveArgs = {
108
- SOURCE_BRANCH: resolvedBranch,
109
- TARGET_BRANCH: currentHostBranch,
110
- ...mergedUserArgs,
111
- };
112
- const builtInArgKeysSet = new Set(BUILT_IN_PROMPT_ARG_KEYS);
113
- substitutedPrompt = yield* substitutePromptArgs(rawPrompt, effectiveArgs, builtInArgKeysSet);
114
- }
115
- else if (isInlinePrompt) {
116
- const userArgs = options.promptArgs ?? {};
117
- yield* validateNoArgsWithInlinePrompt(userArgs);
118
- }
119
- // In head mode, pass the host branch so SandboxLifecycle skips the merge step.
120
- const lifecycleBranch = isHeadMode ? currentHostBranch : branch;
121
- // Display intro and summary
122
- yield* d.intro(options.name ?? "sandcastle interactive");
123
- yield* d.summary("Interactive Session", {
124
- Agent: options.name ?? provider.name,
125
- Sandbox: sandboxProvider.name,
126
- Branch: resolvedBranch,
127
- });
128
- // 5. Create worktree (unless head mode)
129
- let worktreeInfo;
130
- if (!isHeadMode) {
131
- worktreeInfo = yield* d.taskLog("Creating worktree", () => WorktreeManager.pruneStale(hostRepoDir).pipe(Effect.catchAll(() => Effect.void), Effect.andThen(branch
132
- ? WorktreeManager.create(hostRepoDir, { branch })
133
- : WorktreeManager.create(hostRepoDir, { name: options.name }))));
134
- }
135
- // 6. Prepare the worktree and start the sandbox. If any step fails after the
136
- // worktree exists (copying, hooks, or sandbox start), remove the worktree so
137
- // it is not orphaned on disk.
138
- const handle = yield* Effect.gen(function* () {
139
- if (!isHeadMode) {
140
- // Copy files to worktree (bind-mount and no-sandbox, non-head)
141
- if ((sandboxProvider.tag === "bind-mount" ||
142
- sandboxProvider.tag === "none") &&
143
- options.copyToWorktree &&
144
- options.copyToWorktree.length > 0) {
145
- yield* d.taskLog("Copying files to worktree", () => copyToWorktree(options.copyToWorktree, hostRepoDir, worktreeInfo.path, options.timeouts?.copyToWorktreeMs));
146
- }
147
- // Run host.onWorktreeReady hooks
148
- if (hooks?.host?.onWorktreeReady?.length) {
149
- yield* runHostHooks(hooks.host.onWorktreeReady, worktreeInfo.path);
150
- }
151
- }
152
- else if (hooks?.host?.onWorktreeReady?.length) {
153
- // Head strategy: cwd is the host repo root
154
- yield* runHostHooks(hooks.host.onWorktreeReady, hostRepoDir);
155
- }
156
- // Start sandbox
157
- if (sandboxProvider.tag === "none") {
158
- // No-sandbox: run directly on the host, no container
159
- const worktreePath = isHeadMode ? hostRepoDir : worktreeInfo.path;
160
- return yield* Effect.promise(() => sandboxProvider.create({
161
- worktreePath,
162
- env: effectiveEnv,
163
- }));
164
- }
165
- else if (sandboxProvider.tag === "isolated") {
166
- const startResult = yield* d.taskLog("Starting sandbox", () => startSandbox({
167
- provider: sandboxProvider,
168
- hostRepoDir: worktreeInfo.path,
169
- env: effectiveEnv,
170
- copyPaths: options.copyToWorktree,
171
- }));
172
- return startResult.handle;
173
- }
174
- else {
175
- const gitPath = join(hostRepoDir, ".git");
176
- const gitMounts = yield* resolveGitMounts(gitPath);
177
- const startResult = yield* d.taskLog("Starting sandbox", () => startSandbox({
178
- provider: sandboxProvider,
179
- hostRepoDir,
180
- env: effectiveEnv,
181
- worktreeOrRepoPath: isHeadMode ? hostRepoDir : worktreeInfo.path,
182
- gitMounts,
183
- repoDir: SANDBOX_REPO_DIR,
184
- }));
185
- return startResult.handle;
186
- }
187
- }).pipe(Effect.tapError(() => worktreeInfo
188
- ? WorktreeManager.remove(worktreeInfo.path).pipe(Effect.catchAll(() => Effect.void))
189
- : Effect.void));
190
- // Run lifecycle with guaranteed cleanup of handle and worktree
191
- return yield* Effect.gen(function* () {
192
- // Check interactiveExec is available (no-sandbox always has it; bind-mount/isolated it's optional)
193
- if (!handle.interactiveExec) {
194
- throw new Error(`Sandbox provider does not support interactiveExec. ` +
195
- `The provider must implement the optional interactiveExec method to use interactive().`);
196
- }
197
- const interactiveExecFn = handle.interactiveExec.bind(handle);
198
- // Build sandbox layer and run withSandboxLifecycle
199
- const sandboxLayer = makeSandboxLayerFromHandle(handle);
200
- const worktreePath = handle.worktreePath;
201
- const applyToHost = sandboxProvider.tag === "isolated" && worktreeInfo
202
- ? () => syncOut(worktreeInfo.path, handle)
203
- : () => Effect.void; // bind-mount and no-sandbox don't need sync
204
- const lifecycleEffect = withSandboxLifecycle({
205
- hostRepoDir,
206
- sandboxRepoDir: worktreePath,
207
- hooks,
208
- branch: lifecycleBranch,
209
- hostWorktreePath: isHeadMode ? hostRepoDir : worktreeInfo?.path,
210
- applyToHost,
211
- timeouts: options.timeouts,
212
- }, (ctx) => Effect.gen(function* () {
213
- // Preprocess prompt (expand !`command` shell expressions inside sandbox).
214
- // Skip when no prompt source was provided, or when inline (literal passthrough).
215
- const fullPrompt = !hasPromptSource || isInlinePrompt
216
- ? substitutedPrompt
217
- : yield* preprocessPrompt(substitutedPrompt, ctx.sandbox, ctx.sandboxRepoDir);
218
- // Build interactive args and run the session
219
- const interactiveArgs = provider.buildInteractiveArgs({
220
- prompt: fullPrompt,
221
- dangerouslySkipPermissions: sandboxProvider.tag !== "none",
222
- });
223
- const result = yield* raceAbortSignal(Effect.promise(() => interactiveExecFn(interactiveArgs, {
224
- stdin: process.stdin,
225
- stdout: process.stdout,
226
- stderr: process.stderr,
227
- cwd: worktreePath,
228
- })), options.signal);
229
- return result.exitCode;
230
- }));
231
- const lifecycleResult = yield* lifecycleEffect.pipe(Effect.provide(sandboxLayer));
232
- const exitCode = lifecycleResult.result;
233
- // Check for uncommitted changes (worktree mode only)
234
- let preservedWorktreePath;
235
- if (worktreeInfo) {
236
- const hasUncommitted = yield* WorktreeManager.hasUncommittedChanges(worktreeInfo.path).pipe(Effect.catchAll(() => Effect.succeed(false)));
237
- if (hasUncommitted) {
238
- preservedWorktreePath = worktreeInfo.path;
239
- }
240
- }
241
- // Clean up worktree if not preserved
242
- if (worktreeInfo && !preservedWorktreePath) {
243
- yield* WorktreeManager.remove(worktreeInfo.path).pipe(Effect.catchAll(() => Effect.void));
244
- }
245
- // Final summary
246
- yield* d.summary("Session Complete", {
247
- Commits: String(lifecycleResult.commits.length),
248
- Branch: lifecycleResult.branch,
249
- "Exit code": String(exitCode),
250
- ...(preservedWorktreePath
251
- ? { "Preserved worktree": preservedWorktreePath }
252
- : {}),
253
- });
254
- return {
255
- commits: lifecycleResult.commits,
256
- branch: lifecycleResult.branch,
257
- preservedWorktreePath,
258
- exitCode,
259
- };
260
- }).pipe(
261
- // On error, always clean up worktree (on success, handled above with preserve check)
262
- Effect.tapError(() => worktreeInfo
263
- ? WorktreeManager.remove(worktreeInfo.path).pipe(Effect.catchAll(() => Effect.void))
264
- : Effect.void),
265
- // Always close sandbox handle
266
- Effect.ensuring(Effect.promise(() => handle.close().catch(() => { }))));
267
- });
268
- let result;
269
- try {
270
- result = await Effect.runPromise(inner.pipe(Effect.provide(ClackDisplay.layer), Effect.provide(NodeContext.layer), Effect.provide(NodeFileSystem.layer)));
271
- }
272
- catch (error) {
273
- // If the signal was aborted, surface its reason verbatim (no wrapping)
274
- options.signal?.throwIfAborted();
275
- throw error;
276
- }
277
- return result;
278
- };
279
- //# sourceMappingURL=interactive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":""}
@@ -1,13 +0,0 @@
1
- /**
2
- * Merge env vars from the env resolver, agent provider, and sandbox provider.
3
- *
4
- * Provider env (agent + sandbox) overrides env resolver output for shared keys.
5
- * Agent and sandbox provider env must NOT have overlapping keys — if they do,
6
- * this function throws.
7
- */
8
- export declare const mergeProviderEnv: (options: {
9
- readonly resolvedEnv: Record<string, string>;
10
- readonly agentProviderEnv: Record<string, string>;
11
- readonly sandboxProviderEnv: Record<string, string>;
12
- }) => Record<string, string>;
13
- //# sourceMappingURL=mergeProviderEnv.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mergeProviderEnv.d.ts","sourceRoot":"","sources":["../src/mergeProviderEnv.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;;;;4BAuB5B,CAAC"}