@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.
- package/README.md +137 -62
- 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-52CIJF45.js +25569 -0
- package/dist/chunk-52CIJF45.js.map +1 -0
- package/dist/chunk-5VM5QZ26.js +26988 -0
- package/dist/chunk-5VM5QZ26.js.map +1 -0
- 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-NSFQW6ML.js +362 -0
- package/dist/chunk-NSFQW6ML.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 +19349 -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/dist/templates/sequential-reviewer/implement-prompt.md +2 -2
- package/dist/templates/simple-loop/prompt.md +2 -2
- 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 -92
- package/dist/InitService.d.ts.map +0 -1
- package/dist/InitService.js +0 -836
- 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 -340
- 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
package/dist/cli.js
DELETED
|
@@ -1,340 +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, detectPackageManager, addDependencyCommand, hostHasDependency, getTemplateDependencies, } 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
|
-
// Detect the host package manager so the zod offer below and the next
|
|
199
|
-
// steps below both use the right install command.
|
|
200
|
-
const packageManager = yield* detectPackageManager(cwd);
|
|
201
|
-
// If the chosen template imports zod on the host (the planner templates
|
|
202
|
-
// build their <plan> output schema with it) and the host doesn't already
|
|
203
|
-
// declare it, offer to install it. Without this, the very first
|
|
204
|
-
// `npx tsx .sandcastle/main.ts` crashes with ERR_MODULE_NOT_FOUND.
|
|
205
|
-
if (getTemplateDependencies(selectedTemplate).includes("zod")) {
|
|
206
|
-
const alreadyInstalled = yield* hostHasDependency(cwd, "zod");
|
|
207
|
-
if (!alreadyInstalled) {
|
|
208
|
-
const installCmd = addDependencyCommand(packageManager, "zod");
|
|
209
|
-
const shouldInstall = yield* Effect.promise(() => clack.confirm({
|
|
210
|
-
message: `The ${selectedTemplate} template needs a schema validator. Install zod now (\`${installCmd}\`)?`,
|
|
211
|
-
initialValue: true,
|
|
212
|
-
}));
|
|
213
|
-
if (shouldInstall === true) {
|
|
214
|
-
const installed = yield* Effect.sync(() => {
|
|
215
|
-
try {
|
|
216
|
-
execSync(installCmd, { cwd, stdio: "ignore" });
|
|
217
|
-
return true;
|
|
218
|
-
}
|
|
219
|
-
catch {
|
|
220
|
-
return false;
|
|
221
|
-
}
|
|
222
|
-
});
|
|
223
|
-
yield* installed
|
|
224
|
-
? d.status(`Installed zod with ${packageManager}.`, "success")
|
|
225
|
-
: d.status(`Couldn't install zod automatically. Run \`${installCmd}\` before running the agent.`, "warn");
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
// Prompt user before building image. The custom issue tracker scaffolds
|
|
230
|
-
// an intentionally unfinished Dockerfile (the install block is a TODO),
|
|
231
|
-
// so there is nothing valid to build yet — skip the build prompt entirely
|
|
232
|
-
// and let the next steps point the user at the setup doc.
|
|
233
|
-
const providerLabel = selectedSandboxProvider.label;
|
|
234
|
-
if (selectedIssueTracker.name === "custom") {
|
|
235
|
-
yield* d.status("Init complete! Your custom issue tracker isn't configured yet — see the steps below before building.", "success");
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
const shouldBuild = yield* Effect.promise(() => clack.confirm({
|
|
239
|
-
message: `Build the default ${providerLabel} image now?`,
|
|
240
|
-
initialValue: true,
|
|
241
|
-
}));
|
|
242
|
-
if (shouldBuild === true) {
|
|
243
|
-
const containerfileDir = join(cwd, CONFIG_DIR);
|
|
244
|
-
if (selectedSandboxProvider.name === "podman") {
|
|
245
|
-
yield* d.spinner(`Building ${providerLabel} image '${imageName}'...`, podmanBuildImage(imageName, containerfileDir));
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
yield* d.spinner(`Building ${providerLabel} image '${imageName}'...`, buildImage(imageName, containerfileDir, {
|
|
249
|
-
buildArgs: defaultUidBuildArgs(),
|
|
250
|
-
}));
|
|
251
|
-
}
|
|
252
|
-
yield* d.status("Init complete! Image built successfully.", "success");
|
|
253
|
-
}
|
|
254
|
-
else {
|
|
255
|
-
yield* d.status(`Init complete! Run \`sandcastle ${selectedSandboxProvider.cliNamespace} build-image\` to build the ${providerLabel} image later.`, "success");
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
// Show template-specific next steps
|
|
259
|
-
const nextSteps = getNextStepsLines(selectedTemplate, scaffoldResult.mainFilename, selectedIssueTracker, selectedAgent, packageManager);
|
|
260
|
-
for (const [i, line] of nextSteps.entries()) {
|
|
261
|
-
yield* d.text(i === 0 ? line : styleText("dim", line));
|
|
262
|
-
}
|
|
263
|
-
}));
|
|
264
|
-
// --- Build-image command ---
|
|
265
|
-
const dockerfileOption = Options.file("dockerfile").pipe(Options.withDescription("Path to a custom Dockerfile (build context will be the current working directory)"), Options.optional);
|
|
266
|
-
const buildImageCommand = Command.make("build-image", {
|
|
267
|
-
imageName: imageNameOption,
|
|
268
|
-
dockerfile: dockerfileOption,
|
|
269
|
-
}, ({ imageName: imageNameFlag, dockerfile }) => Effect.gen(function* () {
|
|
270
|
-
const d = yield* Display;
|
|
271
|
-
const cwd = process.cwd();
|
|
272
|
-
yield* requireConfigDir(cwd);
|
|
273
|
-
const imageName = resolveImageName(imageNameFlag, cwd);
|
|
274
|
-
const dockerfileDir = join(cwd, CONFIG_DIR);
|
|
275
|
-
const dockerfilePath = dockerfile._tag === "Some" ? dockerfile.value : undefined;
|
|
276
|
-
yield* d.spinner(`Building Docker image '${imageName}'...`, buildImage(imageName, dockerfileDir, {
|
|
277
|
-
dockerfile: dockerfilePath,
|
|
278
|
-
buildArgs: defaultUidBuildArgs(),
|
|
279
|
-
}));
|
|
280
|
-
yield* d.status("Build complete!", "success");
|
|
281
|
-
}));
|
|
282
|
-
// --- Remove-image command ---
|
|
283
|
-
const removeImageCommand = Command.make("remove-image", {
|
|
284
|
-
imageName: imageNameOption,
|
|
285
|
-
}, ({ imageName: imageNameFlag }) => Effect.gen(function* () {
|
|
286
|
-
const d = yield* Display;
|
|
287
|
-
const cwd = process.cwd();
|
|
288
|
-
const imageName = resolveImageName(imageNameFlag, cwd);
|
|
289
|
-
yield* d.spinner(`Removing Docker image '${imageName}'...`, removeImage(imageName));
|
|
290
|
-
yield* d.status("Image removed.", "success");
|
|
291
|
-
}));
|
|
292
|
-
// --- Docker namespace command ---
|
|
293
|
-
const dockerCommand = Command.make("docker", {}, () => Effect.gen(function* () {
|
|
294
|
-
const d = yield* Display;
|
|
295
|
-
yield* d.status("Docker sandbox commands. Use --help to see available subcommands.", "info");
|
|
296
|
-
})).pipe(Command.withSubcommands([buildImageCommand, removeImageCommand]));
|
|
297
|
-
// --- Podman build-image command ---
|
|
298
|
-
const containerfileOption = Options.file("containerfile").pipe(Options.withDescription("Path to a custom Containerfile (build context will be the current working directory)"), Options.optional);
|
|
299
|
-
const podmanBuildImageCommand = Command.make("build-image", {
|
|
300
|
-
imageName: imageNameOption,
|
|
301
|
-
containerfile: containerfileOption,
|
|
302
|
-
}, ({ imageName: imageNameFlag, containerfile }) => Effect.gen(function* () {
|
|
303
|
-
const d = yield* Display;
|
|
304
|
-
const cwd = process.cwd();
|
|
305
|
-
yield* requireConfigDir(cwd);
|
|
306
|
-
const imageName = resolveImageName(imageNameFlag, cwd);
|
|
307
|
-
const containerfileDir = join(cwd, CONFIG_DIR);
|
|
308
|
-
const containerfilePath = containerfile._tag === "Some" ? containerfile.value : undefined;
|
|
309
|
-
yield* d.spinner(`Building Podman image '${imageName}'...`, podmanBuildImage(imageName, containerfileDir, {
|
|
310
|
-
containerfile: containerfilePath,
|
|
311
|
-
}));
|
|
312
|
-
yield* d.status("Build complete!", "success");
|
|
313
|
-
}));
|
|
314
|
-
// --- Podman remove-image command ---
|
|
315
|
-
const podmanRemoveImageCommand = Command.make("remove-image", {
|
|
316
|
-
imageName: imageNameOption,
|
|
317
|
-
}, ({ imageName: imageNameFlag }) => Effect.gen(function* () {
|
|
318
|
-
const d = yield* Display;
|
|
319
|
-
const cwd = process.cwd();
|
|
320
|
-
const imageName = resolveImageName(imageNameFlag, cwd);
|
|
321
|
-
yield* d.spinner(`Removing Podman image '${imageName}'...`, podmanRemoveImage(imageName));
|
|
322
|
-
yield* d.status("Image removed.", "success");
|
|
323
|
-
}));
|
|
324
|
-
// --- Podman namespace command ---
|
|
325
|
-
const podmanCommand = Command.make("podman", {}, () => Effect.gen(function* () {
|
|
326
|
-
const d = yield* Display;
|
|
327
|
-
yield* d.status("Podman sandbox commands. Use --help to see available subcommands.", "info");
|
|
328
|
-
})).pipe(Command.withSubcommands([podmanBuildImageCommand, podmanRemoveImageCommand]));
|
|
329
|
-
// --- Root command ---
|
|
330
|
-
const rootCommand = Command.make("sandcastle", {}, () => Effect.gen(function* () {
|
|
331
|
-
const d = yield* Display;
|
|
332
|
-
yield* d.status(`Sandcastle v${VERSION}`, "info");
|
|
333
|
-
yield* d.status("Use --help to see available commands.", "info");
|
|
334
|
-
}));
|
|
335
|
-
export const sandcastle = rootCommand.pipe(Command.withSubcommands([initCommand, dockerCommand, podmanCommand]));
|
|
336
|
-
export const cli = Command.run(sandcastle, {
|
|
337
|
-
name: "sandcastle",
|
|
338
|
-
version: VERSION,
|
|
339
|
-
});
|
|
340
|
-
//# 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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"}
|
package/dist/createSandbox.d.ts
DELETED
|
@@ -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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"}
|