@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.
Files changed (227) hide show
  1. package/README.md +125 -54
  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-72UVAC7B.js +99 -0
  5. package/dist/chunk-72UVAC7B.js.map +1 -0
  6. package/dist/chunk-BIWNFKGV.js +22 -0
  7. package/dist/chunk-BIWNFKGV.js.map +1 -0
  8. package/dist/chunk-NGBM7T3E.js +76 -0
  9. package/dist/chunk-NGBM7T3E.js.map +1 -0
  10. package/dist/chunk-Q5W3WQVU.js +25569 -0
  11. package/dist/chunk-Q5W3WQVU.js.map +1 -0
  12. package/dist/chunk-UPDEQ2U7.js +362 -0
  13. package/dist/chunk-UPDEQ2U7.js.map +1 -0
  14. package/dist/chunk-Z7O2WNRU.js +26934 -0
  15. package/dist/chunk-Z7O2WNRU.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 +19256 -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/package.json +15 -14
  39. package/dist/AgentProvider.d.ts +0 -134
  40. package/dist/AgentProvider.d.ts.map +0 -1
  41. package/dist/AgentProvider.js +0 -647
  42. package/dist/AgentProvider.js.map +0 -1
  43. package/dist/AgentStreamEmitter.d.ts +0 -36
  44. package/dist/AgentStreamEmitter.d.ts.map +0 -1
  45. package/dist/AgentStreamEmitter.js +0 -21
  46. package/dist/AgentStreamEmitter.js.map +0 -1
  47. package/dist/CopyToWorktree.d.ts +0 -15
  48. package/dist/CopyToWorktree.d.ts.map +0 -1
  49. package/dist/CopyToWorktree.js +0 -60
  50. package/dist/CopyToWorktree.js.map +0 -1
  51. package/dist/Display.d.ts +0 -58
  52. package/dist/Display.d.ts.map +0 -1
  53. package/dist/Display.js +0 -142
  54. package/dist/Display.js.map +0 -1
  55. package/dist/DockerLifecycle.d.ts +0 -54
  56. package/dist/DockerLifecycle.d.ts.map +0 -1
  57. package/dist/DockerLifecycle.js +0 -123
  58. package/dist/DockerLifecycle.js.map +0 -1
  59. package/dist/EnvResolver.d.ts +0 -11
  60. package/dist/EnvResolver.d.ts.map +0 -1
  61. package/dist/EnvResolver.js +0 -63
  62. package/dist/EnvResolver.js.map +0 -1
  63. package/dist/ErrorHandler.d.ts +0 -15
  64. package/dist/ErrorHandler.d.ts.map +0 -1
  65. package/dist/ErrorHandler.js +0 -85
  66. package/dist/ErrorHandler.js.map +0 -1
  67. package/dist/InitService.d.ts +0 -63
  68. package/dist/InitService.d.ts.map +0 -1
  69. package/dist/InitService.js +0 -733
  70. package/dist/InitService.js.map +0 -1
  71. package/dist/MountConfig.d.ts.map +0 -1
  72. package/dist/MountConfig.js +0 -7
  73. package/dist/MountConfig.js.map +0 -1
  74. package/dist/Orchestrator.d.ts +0 -56
  75. package/dist/Orchestrator.d.ts.map +0 -1
  76. package/dist/Orchestrator.js +0 -293
  77. package/dist/Orchestrator.js.map +0 -1
  78. package/dist/Output.d.ts +0 -107
  79. package/dist/Output.d.ts.map +0 -1
  80. package/dist/Output.js +0 -95
  81. package/dist/Output.js.map +0 -1
  82. package/dist/PodmanLifecycle.d.ts +0 -17
  83. package/dist/PodmanLifecycle.d.ts.map +0 -1
  84. package/dist/PodmanLifecycle.js +0 -45
  85. package/dist/PodmanLifecycle.js.map +0 -1
  86. package/dist/PromptArgumentSubstitution.d.ts +0 -32
  87. package/dist/PromptArgumentSubstitution.d.ts.map +0 -1
  88. package/dist/PromptArgumentSubstitution.js +0 -104
  89. package/dist/PromptArgumentSubstitution.js.map +0 -1
  90. package/dist/PromptPreprocessor.d.ts +0 -15
  91. package/dist/PromptPreprocessor.d.ts.map +0 -1
  92. package/dist/PromptPreprocessor.js +0 -55
  93. package/dist/PromptPreprocessor.js.map +0 -1
  94. package/dist/PromptResolver.d.ts +0 -21
  95. package/dist/PromptResolver.d.ts.map +0 -1
  96. package/dist/PromptResolver.js +0 -27
  97. package/dist/PromptResolver.js.map +0 -1
  98. package/dist/RecoveryMessage.d.ts +0 -15
  99. package/dist/RecoveryMessage.d.ts.map +0 -1
  100. package/dist/RecoveryMessage.js +0 -81
  101. package/dist/RecoveryMessage.js.map +0 -1
  102. package/dist/SandboxFactory.d.ts +0 -90
  103. package/dist/SandboxFactory.d.ts.map +0 -1
  104. package/dist/SandboxFactory.js +0 -324
  105. package/dist/SandboxFactory.js.map +0 -1
  106. package/dist/SandboxLifecycle.d.ts +0 -65
  107. package/dist/SandboxLifecycle.d.ts.map +0 -1
  108. package/dist/SandboxLifecycle.js +0 -296
  109. package/dist/SandboxLifecycle.js.map +0 -1
  110. package/dist/SandboxProvider.d.ts.map +0 -1
  111. package/dist/SandboxProvider.js +0 -28
  112. package/dist/SandboxProvider.js.map +0 -1
  113. package/dist/SessionStore.d.ts +0 -110
  114. package/dist/SessionStore.d.ts.map +0 -1
  115. package/dist/SessionStore.js +0 -330
  116. package/dist/SessionStore.js.map +0 -1
  117. package/dist/TextDeltaBuffer.d.ts +0 -24
  118. package/dist/TextDeltaBuffer.d.ts.map +0 -1
  119. package/dist/TextDeltaBuffer.js +0 -68
  120. package/dist/TextDeltaBuffer.js.map +0 -1
  121. package/dist/WorktreeManager.d.ts +0 -79
  122. package/dist/WorktreeManager.d.ts.map +0 -1
  123. package/dist/WorktreeManager.js +0 -283
  124. package/dist/WorktreeManager.js.map +0 -1
  125. package/dist/boundedTail.d.ts +0 -48
  126. package/dist/boundedTail.d.ts.map +0 -1
  127. package/dist/boundedTail.js +0 -64
  128. package/dist/boundedTail.js.map +0 -1
  129. package/dist/cli.d.ts +0 -30
  130. package/dist/cli.d.ts.map +0 -1
  131. package/dist/cli.js +0 -309
  132. package/dist/cli.js.map +0 -1
  133. package/dist/createSandbox.d.ts +0 -154
  134. package/dist/createSandbox.d.ts.map +0 -1
  135. package/dist/createSandbox.js +0 -476
  136. package/dist/createSandbox.js.map +0 -1
  137. package/dist/createWorktree.d.ts +0 -154
  138. package/dist/createWorktree.d.ts.map +0 -1
  139. package/dist/createWorktree.js +0 -391
  140. package/dist/createWorktree.js.map +0 -1
  141. package/dist/errors.d.ts +0 -227
  142. package/dist/errors.d.ts.map +0 -1
  143. package/dist/errors.js +0 -81
  144. package/dist/errors.js.map +0 -1
  145. package/dist/extractStructuredOutput.d.ts +0 -23
  146. package/dist/extractStructuredOutput.d.ts.map +0 -1
  147. package/dist/extractStructuredOutput.js +0 -102
  148. package/dist/extractStructuredOutput.js.map +0 -1
  149. package/dist/index.d.ts.map +0 -1
  150. package/dist/interactive.d.ts +0 -74
  151. package/dist/interactive.d.ts.map +0 -1
  152. package/dist/interactive.js +0 -279
  153. package/dist/interactive.js.map +0 -1
  154. package/dist/main.d.ts.map +0 -1
  155. package/dist/mergeProviderEnv.d.ts +0 -13
  156. package/dist/mergeProviderEnv.d.ts.map +0 -1
  157. package/dist/mergeProviderEnv.js +0 -23
  158. package/dist/mergeProviderEnv.js.map +0 -1
  159. package/dist/mountUtils.d.ts +0 -146
  160. package/dist/mountUtils.d.ts.map +0 -1
  161. package/dist/mountUtils.js +0 -301
  162. package/dist/mountUtils.js.map +0 -1
  163. package/dist/raceAbortSignal.d.ts +0 -18
  164. package/dist/raceAbortSignal.d.ts.map +0 -1
  165. package/dist/raceAbortSignal.js +0 -32
  166. package/dist/raceAbortSignal.js.map +0 -1
  167. package/dist/resolveCwd.d.ts +0 -24
  168. package/dist/resolveCwd.d.ts.map +0 -1
  169. package/dist/resolveCwd.js +0 -32
  170. package/dist/resolveCwd.js.map +0 -1
  171. package/dist/resumePrecheck.d.ts +0 -26
  172. package/dist/resumePrecheck.d.ts.map +0 -1
  173. package/dist/resumePrecheck.js +0 -40
  174. package/dist/resumePrecheck.js.map +0 -1
  175. package/dist/run.d.ts +0 -216
  176. package/dist/run.d.ts.map +0 -1
  177. package/dist/run.js +0 -313
  178. package/dist/run.js.map +0 -1
  179. package/dist/sandboxExec.d.ts +0 -12
  180. package/dist/sandboxExec.d.ts.map +0 -1
  181. package/dist/sandboxExec.js +0 -26
  182. package/dist/sandboxExec.js.map +0 -1
  183. package/dist/sandboxes/daytona.d.ts.map +0 -1
  184. package/dist/sandboxes/docker.d.ts.map +0 -1
  185. package/dist/sandboxes/no-sandbox.d.ts.map +0 -1
  186. package/dist/sandboxes/podman.d.ts.map +0 -1
  187. package/dist/sandboxes/test-bind-mount.d.ts +0 -17
  188. package/dist/sandboxes/test-bind-mount.d.ts.map +0 -1
  189. package/dist/sandboxes/test-bind-mount.js +0 -92
  190. package/dist/sandboxes/test-bind-mount.js.map +0 -1
  191. package/dist/sandboxes/test-isolated.d.ts +0 -17
  192. package/dist/sandboxes/test-isolated.d.ts.map +0 -1
  193. package/dist/sandboxes/test-isolated.js +0 -98
  194. package/dist/sandboxes/test-isolated.js.map +0 -1
  195. package/dist/sandboxes/vercel.d.ts.map +0 -1
  196. package/dist/shutdownRegistry.d.ts +0 -30
  197. package/dist/shutdownRegistry.d.ts.map +0 -1
  198. package/dist/shutdownRegistry.js +0 -73
  199. package/dist/shutdownRegistry.js.map +0 -1
  200. package/dist/startSandbox.d.ts +0 -50
  201. package/dist/startSandbox.d.ts.map +0 -1
  202. package/dist/startSandbox.js +0 -117
  203. package/dist/startSandbox.js.map +0 -1
  204. package/dist/syncIn.d.ts +0 -24
  205. package/dist/syncIn.d.ts.map +0 -1
  206. package/dist/syncIn.js +0 -107
  207. package/dist/syncIn.js.map +0 -1
  208. package/dist/syncOut.d.ts +0 -27
  209. package/dist/syncOut.d.ts.map +0 -1
  210. package/dist/syncOut.js +0 -271
  211. package/dist/syncOut.js.map +0 -1
  212. package/dist/templates.d.ts +0 -2
  213. package/dist/templates.d.ts.map +0 -1
  214. package/dist/templates.js +0 -26
  215. package/dist/templates.js.map +0 -1
  216. package/dist/terminalCleanup.d.ts +0 -30
  217. package/dist/terminalCleanup.d.ts.map +0 -1
  218. package/dist/terminalCleanup.js +0 -37
  219. package/dist/terminalCleanup.js.map +0 -1
  220. package/dist/testSandbox.d.ts +0 -8
  221. package/dist/testSandbox.d.ts.map +0 -1
  222. package/dist/testSandbox.js +0 -109
  223. package/dist/testSandbox.js.map +0 -1
  224. package/dist/testSetup.d.ts +0 -2
  225. package/dist/testSetup.d.ts.map +0 -1
  226. package/dist/testSetup.js +0 -29
  227. package/dist/testSetup.js.map +0 -1
package/dist/cli.js DELETED
@@ -1,309 +0,0 @@
1
- import { Command, Options } from "@effect/cli";
2
- import { FileSystem } from "@effect/platform";
3
- import { Effect } from "effect";
4
- import * as clack from "@clack/prompts";
5
- import { execSync } from "node:child_process";
6
- import { createRequire } from "node:module";
7
- import { join } from "node:path";
8
- import { styleText } from "node:util";
9
- import { Display } from "./Display.js";
10
- import { buildImage, removeImage } from "./DockerLifecycle.js";
11
- import { buildImage as podmanBuildImage, removeImage as podmanRemoveImage, } from "./PodmanLifecycle.js";
12
- import { scaffold, listTemplates, listAgents, getAgent, listIssueTrackers, getIssueTracker, listSandboxProviders, getSandboxProvider, getNextStepsLines, } from "./InitService.js";
13
- import { defaultImageName } from "./sandboxes/docker.js";
14
- import { ConfigDirError, InitError } from "./errors.js";
15
- const require = createRequire(import.meta.url);
16
- const VERSION = require("../package.json").version;
17
- // --- Shared options ---
18
- const imageNameOption = Options.text("image-name").pipe(Options.withDescription("Docker image name"), Options.optional);
19
- const resolveImageName = (cliFlag, cwd) => (cliFlag._tag === "Some" ? cliFlag.value : defaultImageName(cwd));
20
- // --- UID build-args ---
21
- /** Build-args that align the image UID/GID to the host (Linux/macOS). No-op on Windows. */
22
- const defaultUidBuildArgs = () => {
23
- const args = {};
24
- const uid = process.getuid?.();
25
- const gid = process.getgid?.();
26
- if (uid !== undefined)
27
- args.AGENT_UID = String(uid);
28
- if (gid !== undefined)
29
- args.AGENT_GID = String(gid);
30
- return args;
31
- };
32
- // --- Config directory check ---
33
- const CONFIG_DIR = ".sandcastle";
34
- const requireConfigDir = (cwd) => Effect.gen(function* () {
35
- const fs = yield* FileSystem.FileSystem;
36
- const exists = yield* fs
37
- .exists(join(cwd, CONFIG_DIR))
38
- .pipe(Effect.catchAll(() => Effect.succeed(false)));
39
- if (!exists) {
40
- yield* Effect.fail(new ConfigDirError({
41
- message: "No .sandcastle/ found. Run `sandcastle init` first.",
42
- }));
43
- }
44
- });
45
- // --- Init command ---
46
- const templateOption = Options.text("template").pipe(Options.withDescription("Template to scaffold (e.g. blank, simple-loop, parallel-planner)"), Options.optional);
47
- const agentOption = Options.text("agent").pipe(Options.withDescription("Agent to use (e.g. claude-code)"), Options.optional);
48
- const initModelOption = Options.text("model").pipe(Options.withDescription("Model to use for the agent (e.g. claude-sonnet-4-6). Defaults to the agent's default model"), Options.optional);
49
- const sandboxOption = Options.text("sandbox").pipe(Options.withDescription("Sandbox provider to use (e.g. docker, podman)"), Options.optional);
50
- const initCommand = Command.make("init", {
51
- imageName: imageNameOption,
52
- template: templateOption,
53
- agent: agentOption,
54
- model: initModelOption,
55
- sandbox: sandboxOption,
56
- }, ({ imageName: imageNameFlag, template, agent: agentFlag, model: modelFlag, sandbox: sandboxFlag, }) => Effect.gen(function* () {
57
- const d = yield* Display;
58
- const cwd = process.cwd();
59
- const imageName = resolveImageName(imageNameFlag, cwd);
60
- // Early validation of CLI flags before interactive prompts
61
- const templates = listTemplates();
62
- if (template._tag === "Some") {
63
- const valid = templates.find((tmpl) => tmpl.name === template.value);
64
- if (!valid) {
65
- const names = templates.map((tmpl) => tmpl.name).join(", ");
66
- yield* Effect.fail(new InitError({
67
- message: `Unknown template "${template.value}". Available: ${names}`,
68
- }));
69
- }
70
- }
71
- if (sandboxFlag._tag === "Some") {
72
- const valid = getSandboxProvider(sandboxFlag.value);
73
- if (!valid) {
74
- const names = listSandboxProviders()
75
- .map((p) => p.name)
76
- .join(", ");
77
- yield* Effect.fail(new InitError({
78
- message: `Unknown sandbox provider "${sandboxFlag.value}". Available: ${names}`,
79
- }));
80
- }
81
- }
82
- // Resolve agent: CLI flag > interactive select
83
- const agents = listAgents();
84
- let selectedAgent;
85
- if (agentFlag._tag === "Some") {
86
- const entry = getAgent(agentFlag.value);
87
- if (!entry) {
88
- const names = agents.map((a) => a.name).join(", ");
89
- yield* Effect.fail(new InitError({
90
- message: `Unknown agent "${agentFlag.value}". Available: ${names}`,
91
- }));
92
- }
93
- selectedAgent = entry;
94
- }
95
- else {
96
- const selected = yield* Effect.promise(() => clack.select({
97
- message: "Select an agent:",
98
- initialValue: "claude-code",
99
- options: agents.map((a) => ({
100
- value: a.name,
101
- label: a.label,
102
- hint: `Default model: ${a.defaultModel}`,
103
- })),
104
- }));
105
- if (clack.isCancel(selected)) {
106
- yield* Effect.fail(new InitError({ message: "Agent selection cancelled." }));
107
- }
108
- selectedAgent = getAgent(selected);
109
- }
110
- // Resolve model: CLI flag > agent default
111
- const selectedModel = modelFlag._tag === "Some"
112
- ? modelFlag.value
113
- : selectedAgent.defaultModel;
114
- // Resolve sandbox provider: CLI flag > interactive select (no default — user must choose)
115
- const sandboxProviders = listSandboxProviders();
116
- let selectedSandboxProvider;
117
- if (sandboxFlag._tag === "Some") {
118
- selectedSandboxProvider = getSandboxProvider(sandboxFlag.value);
119
- }
120
- else {
121
- const selected = yield* Effect.promise(() => clack.select({
122
- message: "Select a sandbox provider:",
123
- options: sandboxProviders.map((p) => ({
124
- value: p.name,
125
- label: p.label,
126
- })),
127
- }));
128
- if (clack.isCancel(selected)) {
129
- yield* Effect.fail(new InitError({
130
- message: "Sandbox provider selection cancelled.",
131
- }));
132
- }
133
- selectedSandboxProvider = getSandboxProvider(selected);
134
- }
135
- // Resolve issue tracker: interactive select
136
- const issueTrackers = listIssueTrackers();
137
- let selectedIssueTracker;
138
- {
139
- const selected = yield* Effect.promise(() => clack.select({
140
- message: "Select an issue tracker:",
141
- initialValue: "github-issues",
142
- options: issueTrackers.map((b) => ({
143
- value: b.name,
144
- label: b.label,
145
- })),
146
- }));
147
- if (clack.isCancel(selected)) {
148
- yield* Effect.fail(new InitError({
149
- message: "Issue tracker selection cancelled.",
150
- }));
151
- }
152
- selectedIssueTracker = getIssueTracker(selected);
153
- }
154
- // Resolve template: CLI flag > interactive select (already validated above)
155
- let selectedTemplate;
156
- if (template._tag === "Some") {
157
- selectedTemplate = template.value;
158
- }
159
- else {
160
- const selected = yield* Effect.promise(() => clack.select({
161
- message: "Select a template:",
162
- initialValue: "blank",
163
- options: templates.map((tmpl) => ({
164
- value: tmpl.name,
165
- label: tmpl.name,
166
- hint: tmpl.description,
167
- })),
168
- }));
169
- if (clack.isCancel(selected)) {
170
- yield* Effect.fail(new InitError({ message: "Template selection cancelled." }));
171
- }
172
- selectedTemplate = selected;
173
- }
174
- // Offer to create the "Sandcastle" label on the repo (skip for non-GitHub issue trackers)
175
- let shouldCreateLabel = false;
176
- if (selectedIssueTracker.name === "github-issues") {
177
- shouldCreateLabel = yield* Effect.promise(() => clack.confirm({
178
- message: 'Create a "Sandcastle" GitHub label? (Templates filter issues by this label)',
179
- initialValue: true,
180
- }));
181
- if (shouldCreateLabel === true) {
182
- yield* Effect.try({
183
- try: () => execSync('gh label create "Sandcastle" --description "Issues for Sandcastle to work on" --color "F9A825" 2>/dev/null', { cwd, stdio: "ignore" }),
184
- catch: () => undefined,
185
- }).pipe(Effect.ignore);
186
- }
187
- }
188
- const scaffoldResult = yield* d.spinner("Scaffolding .sandcastle/ config directory...", scaffold(cwd, {
189
- agent: selectedAgent,
190
- model: selectedModel,
191
- templateName: selectedTemplate,
192
- createLabel: shouldCreateLabel === true,
193
- issueTracker: selectedIssueTracker,
194
- sandboxProvider: selectedSandboxProvider,
195
- }).pipe(Effect.mapError((e) => new InitError({
196
- message: `${e instanceof Error ? e.message : e}`,
197
- }))));
198
- // Prompt user before building image. The custom issue tracker scaffolds
199
- // an intentionally unfinished Dockerfile (the install block is a TODO),
200
- // so there is nothing valid to build yet — skip the build prompt entirely
201
- // and let the next steps point the user at the setup doc.
202
- const providerLabel = selectedSandboxProvider.label;
203
- if (selectedIssueTracker.name === "custom") {
204
- yield* d.status("Init complete! Your custom issue tracker isn't configured yet — see the steps below before building.", "success");
205
- }
206
- else {
207
- const shouldBuild = yield* Effect.promise(() => clack.confirm({
208
- message: `Build the default ${providerLabel} image now?`,
209
- initialValue: true,
210
- }));
211
- if (shouldBuild === true) {
212
- const containerfileDir = join(cwd, CONFIG_DIR);
213
- if (selectedSandboxProvider.name === "podman") {
214
- yield* d.spinner(`Building ${providerLabel} image '${imageName}'...`, podmanBuildImage(imageName, containerfileDir));
215
- }
216
- else {
217
- yield* d.spinner(`Building ${providerLabel} image '${imageName}'...`, buildImage(imageName, containerfileDir, {
218
- buildArgs: defaultUidBuildArgs(),
219
- }));
220
- }
221
- yield* d.status("Init complete! Image built successfully.", "success");
222
- }
223
- else {
224
- yield* d.status(`Init complete! Run \`sandcastle ${selectedSandboxProvider.cliNamespace} build-image\` to build the ${providerLabel} image later.`, "success");
225
- }
226
- }
227
- // Show template-specific next steps
228
- const nextSteps = getNextStepsLines(selectedTemplate, scaffoldResult.mainFilename, selectedIssueTracker, selectedAgent);
229
- for (const [i, line] of nextSteps.entries()) {
230
- yield* d.text(i === 0 ? line : styleText("dim", line));
231
- }
232
- }));
233
- // --- Build-image command ---
234
- const dockerfileOption = Options.file("dockerfile").pipe(Options.withDescription("Path to a custom Dockerfile (build context will be the current working directory)"), Options.optional);
235
- const buildImageCommand = Command.make("build-image", {
236
- imageName: imageNameOption,
237
- dockerfile: dockerfileOption,
238
- }, ({ imageName: imageNameFlag, dockerfile }) => Effect.gen(function* () {
239
- const d = yield* Display;
240
- const cwd = process.cwd();
241
- yield* requireConfigDir(cwd);
242
- const imageName = resolveImageName(imageNameFlag, cwd);
243
- const dockerfileDir = join(cwd, CONFIG_DIR);
244
- const dockerfilePath = dockerfile._tag === "Some" ? dockerfile.value : undefined;
245
- yield* d.spinner(`Building Docker image '${imageName}'...`, buildImage(imageName, dockerfileDir, {
246
- dockerfile: dockerfilePath,
247
- buildArgs: defaultUidBuildArgs(),
248
- }));
249
- yield* d.status("Build complete!", "success");
250
- }));
251
- // --- Remove-image command ---
252
- const removeImageCommand = Command.make("remove-image", {
253
- imageName: imageNameOption,
254
- }, ({ imageName: imageNameFlag }) => Effect.gen(function* () {
255
- const d = yield* Display;
256
- const cwd = process.cwd();
257
- const imageName = resolveImageName(imageNameFlag, cwd);
258
- yield* d.spinner(`Removing Docker image '${imageName}'...`, removeImage(imageName));
259
- yield* d.status("Image removed.", "success");
260
- }));
261
- // --- Docker namespace command ---
262
- const dockerCommand = Command.make("docker", {}, () => Effect.gen(function* () {
263
- const d = yield* Display;
264
- yield* d.status("Docker sandbox commands. Use --help to see available subcommands.", "info");
265
- })).pipe(Command.withSubcommands([buildImageCommand, removeImageCommand]));
266
- // --- Podman build-image command ---
267
- const containerfileOption = Options.file("containerfile").pipe(Options.withDescription("Path to a custom Containerfile (build context will be the current working directory)"), Options.optional);
268
- const podmanBuildImageCommand = Command.make("build-image", {
269
- imageName: imageNameOption,
270
- containerfile: containerfileOption,
271
- }, ({ imageName: imageNameFlag, containerfile }) => Effect.gen(function* () {
272
- const d = yield* Display;
273
- const cwd = process.cwd();
274
- yield* requireConfigDir(cwd);
275
- const imageName = resolveImageName(imageNameFlag, cwd);
276
- const containerfileDir = join(cwd, CONFIG_DIR);
277
- const containerfilePath = containerfile._tag === "Some" ? containerfile.value : undefined;
278
- yield* d.spinner(`Building Podman image '${imageName}'...`, podmanBuildImage(imageName, containerfileDir, {
279
- containerfile: containerfilePath,
280
- }));
281
- yield* d.status("Build complete!", "success");
282
- }));
283
- // --- Podman remove-image command ---
284
- const podmanRemoveImageCommand = Command.make("remove-image", {
285
- imageName: imageNameOption,
286
- }, ({ imageName: imageNameFlag }) => Effect.gen(function* () {
287
- const d = yield* Display;
288
- const cwd = process.cwd();
289
- const imageName = resolveImageName(imageNameFlag, cwd);
290
- yield* d.spinner(`Removing Podman image '${imageName}'...`, podmanRemoveImage(imageName));
291
- yield* d.status("Image removed.", "success");
292
- }));
293
- // --- Podman namespace command ---
294
- const podmanCommand = Command.make("podman", {}, () => Effect.gen(function* () {
295
- const d = yield* Display;
296
- yield* d.status("Podman sandbox commands. Use --help to see available subcommands.", "info");
297
- })).pipe(Command.withSubcommands([podmanBuildImageCommand, podmanRemoveImageCommand]));
298
- // --- Root command ---
299
- const rootCommand = Command.make("sandcastle", {}, () => Effect.gen(function* () {
300
- const d = yield* Display;
301
- yield* d.status(`Sandcastle v${VERSION}`, "info");
302
- yield* d.status("Use --help to see available commands.", "info");
303
- }));
304
- export const sandcastle = rootCommand.pipe(Command.withSubcommands([initCommand, dockerCommand, podmanCommand]));
305
- export const cli = Command.run(sandcastle, {
306
- name: "sandcastle",
307
- version: VERSION,
308
- });
309
- //# sourceMappingURL=cli.js.map
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,154 +0,0 @@
1
- import { Layer } from "effect";
2
- import type { AgentProvider } from "./AgentProvider.js";
3
- import { type IterationResult } from "./Orchestrator.js";
4
- import { type PromptArgs } from "./PromptArgumentSubstitution.js";
5
- import type { LoggingOption, Timeouts } from "./run.js";
6
- import { type SandboxHooks } from "./SandboxLifecycle.js";
7
- import { Sandbox as SandboxTag } from "./SandboxFactory.js";
8
- import type { SandboxProvider } from "./SandboxProvider.js";
9
- export interface CreateSandboxOptions {
10
- /** Explicit branch for the worktree (required). */
11
- readonly branch: string;
12
- /**
13
- * Ref to fork from when `branch` does not yet exist. Ignored when the branch
14
- * already exists. Defaults to `HEAD`.
15
- */
16
- readonly baseBranch?: string;
17
- /** Sandbox provider (e.g. docker({ imageName: "sandcastle:myrepo" })). */
18
- readonly sandbox: SandboxProvider;
19
- /**
20
- * Host repo directory. Replaces `process.cwd()` as the anchor for
21
- * `.sandcastle/worktrees/`, `.sandcastle/.env`, and git operations.
22
- *
23
- * - Relative paths are resolved against `process.cwd()`.
24
- * - Absolute paths are used as-is.
25
- * - Defaults to `process.cwd()` when omitted.
26
- */
27
- readonly cwd?: string;
28
- /** Lifecycle hooks grouped by execution location (host or sandbox). */
29
- readonly hooks?: SandboxHooks;
30
- /** Paths relative to the host repo root to copy into the worktree at creation time. */
31
- readonly copyToWorktree?: string[];
32
- /** Override default timeouts for built-in lifecycle steps. Unset keys keep their defaults. */
33
- readonly timeouts?: Timeouts;
34
- /** @internal Test-only overrides to bypass the sandbox provider. */
35
- readonly _test?: {
36
- readonly buildSandboxLayer?: (sandboxDir: string) => Layer.Layer<SandboxTag>;
37
- };
38
- }
39
- export interface SandboxRunOptions {
40
- /** Agent provider to use (e.g. claudeCode("claude-opus-4-7")). */
41
- readonly agent: AgentProvider;
42
- /** Inline prompt string (mutually exclusive with promptFile). */
43
- readonly prompt?: string;
44
- /** Path to a prompt file (mutually exclusive with prompt). */
45
- readonly promptFile?: string;
46
- /** Key-value map for {{KEY}} placeholder substitution in prompts. */
47
- readonly promptArgs?: PromptArgs;
48
- /** Maximum iterations to run (default: 1). */
49
- readonly maxIterations?: number;
50
- /** Substring(s) the agent emits to stop the iteration loop early. */
51
- readonly completionSignal?: string | string[];
52
- /** Idle timeout in seconds. Default: 600. */
53
- readonly idleTimeoutSeconds?: number;
54
- /** Display name for this run. */
55
- readonly name?: string;
56
- /** Logging mode. */
57
- readonly logging?: LoggingOption;
58
- /**
59
- * An `AbortSignal` that cancels the run when aborted.
60
- *
61
- * - Pre-aborted signal rejects immediately without setup.
62
- * - Mid-iteration abort kills the in-flight agent subprocess.
63
- * - The rejected promise surfaces `signal.reason` verbatim.
64
- * - The `Sandbox` handle remains usable after abort — call `.run()` again
65
- * with a fresh signal, or `.close()` to tear down.
66
- */
67
- readonly signal?: AbortSignal;
68
- }
69
- export interface SandboxRunResult {
70
- /** Per-iteration results (use `iterations.length` for the count). */
71
- readonly iterations: IterationResult[];
72
- /** The matched completion signal string, or undefined if none fired. */
73
- readonly completionSignal?: string;
74
- /** Combined stdout output from all agent iterations. */
75
- readonly stdout: string;
76
- /** List of commits made by the agent during the run. */
77
- readonly commits: {
78
- sha: string;
79
- }[];
80
- /** Path to the log file, if logging was drained to a file. */
81
- readonly logFilePath?: string;
82
- }
83
- export interface SandboxInteractiveOptions {
84
- /** Agent provider to use (e.g. claudeCode("claude-opus-4-7")). */
85
- readonly agent: AgentProvider;
86
- /** Inline prompt string (mutually exclusive with promptFile). */
87
- readonly prompt?: string;
88
- /** Path to a prompt file (mutually exclusive with prompt). */
89
- readonly promptFile?: string;
90
- /** Key-value map for {{KEY}} placeholder substitution in prompts. */
91
- readonly promptArgs?: PromptArgs;
92
- /** Display name for this interactive session. */
93
- readonly name?: string;
94
- /**
95
- * An `AbortSignal` that cancels the interactive session when aborted.
96
- *
97
- * - Pre-aborted signal rejects immediately without setup.
98
- * - The rejected promise surfaces `signal.reason` verbatim.
99
- * - The `Sandbox` handle remains usable after abort.
100
- */
101
- readonly signal?: AbortSignal;
102
- }
103
- export interface SandboxInteractiveResult {
104
- /** List of commits made during the interactive session. */
105
- readonly commits: {
106
- sha: string;
107
- }[];
108
- /** Exit code of the interactive process. */
109
- readonly exitCode: number;
110
- }
111
- export interface CloseResult {
112
- /** Host path to the preserved worktree, set when the worktree had uncommitted changes. */
113
- readonly preservedWorktreePath?: string;
114
- }
115
- export interface Sandbox {
116
- /** The branch the worktree is on. */
117
- readonly branch: string;
118
- /** Host path to the worktree. */
119
- readonly worktreePath: string;
120
- /** Invoke an agent inside the existing sandbox. */
121
- run(options: SandboxRunOptions): Promise<SandboxRunResult>;
122
- /** Launch an interactive agent session inside the existing sandbox. */
123
- interactive(options: SandboxInteractiveOptions): Promise<SandboxInteractiveResult>;
124
- /** Tear down the sandbox and worktree. */
125
- close(): Promise<CloseResult>;
126
- /** Auto teardown via `await using`. */
127
- [Symbol.asyncDispose](): Promise<void>;
128
- }
129
- /** @internal Options for createSandboxFromWorktree — used by worktree.createSandbox(). */
130
- export interface CreateSandboxFromWorktreeOptions {
131
- readonly branch: string;
132
- readonly worktreePath: string;
133
- readonly hostRepoDir: string;
134
- readonly sandbox: SandboxProvider;
135
- readonly hooks?: SandboxHooks;
136
- readonly copyToWorktree?: string[];
137
- readonly timeouts?: Timeouts;
138
- readonly _test?: {
139
- readonly buildSandboxLayer?: (sandboxDir: string) => Layer.Layer<SandboxTag>;
140
- };
141
- }
142
- /**
143
- * @internal Creates a sandbox backed by an existing worktree.
144
- * Split ownership: close() tears down the container only, leaving the worktree intact.
145
- * Used by Worktree.createSandbox().
146
- */
147
- export declare const createSandboxFromWorktree: (options: CreateSandboxFromWorktreeOptions) => Promise<Sandbox>;
148
- /**
149
- * Eagerly creates a git worktree on the provided explicit branch and starts
150
- * a sandbox with the worktree bind-mounted. Returns a Sandbox handle that
151
- * can be reused across multiple `run()` calls.
152
- */
153
- export declare const createSandbox: (options: CreateSandboxOptions) => Promise<Sandbox>;
154
- //# sourceMappingURL=createSandbox.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createSandbox.d.ts","sourceRoot":"","sources":["../src/createSandbox.ts"],"names":[],"mappings":"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"}