Skip to content

Commit 6f91aac

Browse files
shreyas-lyzrclaude
andcommitted
Add --sandbox-repo and --sandbox-token CLI flags
Allows passing repository URL and PAT directly from the command line: gitclaw --sandbox --sandbox-repo https://github.com/org/repo --sandbox-token ghp_... Falls back to env vars (GITHUB_TOKEN/GIT_TOKEN) and git remote detection when not provided. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent b8ad654 commit 6f91aac

1 file changed

Lines changed: 26 additions & 4 deletions

File tree

src/index.ts

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,25 @@ const bold = (s: string) => `\x1b[1m${s}\x1b[0m`;
2323
const red = (s: string) => `\x1b[31m${s}\x1b[0m`;
2424
const green = (s: string) => `\x1b[32m${s}\x1b[0m`;
2525

26-
function parseArgs(argv: string[]): { model?: string; dir: string; prompt?: string; env?: string; sandbox?: boolean } {
26+
interface ParsedArgs {
27+
model?: string;
28+
dir: string;
29+
prompt?: string;
30+
env?: string;
31+
sandbox?: boolean;
32+
sandboxRepo?: string;
33+
sandboxToken?: string;
34+
}
35+
36+
function parseArgs(argv: string[]): ParsedArgs {
2737
const args = argv.slice(2);
2838
let model: string | undefined;
2939
let dir = process.cwd();
3040
let prompt: string | undefined;
3141
let env: string | undefined;
3242
let sandbox = false;
43+
let sandboxRepo: string | undefined;
44+
let sandboxToken: string | undefined;
3345

3446
for (let i = 0; i < args.length; i++) {
3547
switch (args[i]) {
@@ -53,6 +65,12 @@ function parseArgs(argv: string[]): { model?: string; dir: string; prompt?: stri
5365
case "-s":
5466
sandbox = true;
5567
break;
68+
case "--sandbox-repo":
69+
sandboxRepo = args[++i];
70+
break;
71+
case "--sandbox-token":
72+
sandboxToken = args[++i];
73+
break;
5674
default:
5775
if (!args[i].startsWith("-")) {
5876
prompt = args[i];
@@ -61,7 +79,7 @@ function parseArgs(argv: string[]): { model?: string; dir: string; prompt?: stri
6179
}
6280
}
6381

64-
return { model, dir, prompt, env, sandbox };
82+
return { model, dir, prompt, env, sandbox, sandboxRepo, sandboxToken };
6583
}
6684

6785
function handleEvent(
@@ -239,7 +257,7 @@ async function ensureRepo(dir: string, model?: string): Promise<string> {
239257
}
240258

241259
async function main(): Promise<void> {
242-
const { model, dir: rawDir, prompt, env, sandbox: useSandbox } = parseArgs(process.argv);
260+
const { model, dir: rawDir, prompt, env, sandbox: useSandbox, sandboxRepo, sandboxToken } = parseArgs(process.argv);
243261

244262
// If no --dir given interactively, ask for it
245263
let dir = rawDir;
@@ -253,7 +271,11 @@ async function main(): Promise<void> {
253271
// Create sandbox context if --sandbox flag is set
254272
let sandboxCtx: SandboxContext | undefined;
255273
if (useSandbox) {
256-
const sandboxConfig: SandboxConfig = { provider: "e2b" };
274+
const sandboxConfig: SandboxConfig = {
275+
provider: "e2b",
276+
repository: sandboxRepo,
277+
token: sandboxToken,
278+
};
257279
sandboxCtx = await createSandboxContext(sandboxConfig, resolve(dir));
258280
console.log(dim("Starting sandbox VM..."));
259281
await sandboxCtx.gitMachine.start();

0 commit comments

Comments
 (0)