Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .sandcastle/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
* AGENTIC_BASE_BRANCH PR base branch (default: main)
* AGENTIC_MODEL claudeCode model (default: claude-sonnet-4-6)
* SANDCASTLE_IMAGE inner image (default: sandcastle:local)
* SANDCASTLE_CONTAINER_UID inner image's non-root UID (default: 1000, sandcastle's
* own default — only needed when a custom image renames its
* user to a different UID, e.g. the dotnet SDK base's 1654)
* SANDCASTLE_CONTAINER_GID matching GID (default: 1000)
* AGENTIC_CONCURRENCY max parallel sandboxes (default: 1, serial)
* SMEE_URL smee.io channel URL (enables event-driven mode)
* WEBHOOK_SECRET shared HMAC secret for X-Hub-Signature-256 validation
Expand Down Expand Up @@ -603,6 +607,12 @@ async function main(): Promise<void> {

const issues = new IssueSource(repo);
const tier = (process.env.AGENTIC_TIER ?? "claude") as "claude" | "local";
const containerUid = process.env.SANDCASTLE_CONTAINER_UID
? Number(process.env.SANDCASTLE_CONTAINER_UID)
: undefined;
const containerGid = process.env.SANDCASTLE_CONTAINER_GID
? Number(process.env.SANDCASTLE_CONTAINER_GID)
: undefined;
const runner = new SandboxRunner({
imageName: process.env.SANDCASTLE_IMAGE,
model: process.env.AGENTIC_MODEL,
Expand All @@ -611,6 +621,8 @@ async function main(): Promise<void> {
localImageName: process.env.SANDCASTLE_OPENCODE_IMAGE,
cwd: repoRoot,
network,
containerUid,
containerGid,
});

const reviewer = new ReviewerAdapter({
Expand Down
6 changes: 6 additions & 0 deletions examples/dotnet-project/orchestrator.env
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ GH_TOKEN=
# docker build -f .sandcastle/Dockerfile.dotnet -t sandcastle-dotnet:local .sandcastle
SANDCASTLE_IMAGE=sandcastle-dotnet:local

# mcr.microsoft.com/dotnet/sdk:8.0 ships its own non-root user at uid/gid 1654
# (not sandcastle's default of 1000) — Dockerfile.dotnet renames it but keeps
# the id, so the runner must be told to expect 1654 instead of assuming 1000.
SANDCASTLE_CONTAINER_UID=1654
SANDCASTLE_CONTAINER_GID=1654

# Target repo is NOT the one `gh` detects from the working directory here —
# this recipe validates against a small, purpose-built dotnet fixture repo,
# so AGENTIC_REPO is set explicitly rather than left to the default.
Expand Down
Loading