mirror of
https://github.com/harivansh-afk/sandbox-agent.git
synced 2026-04-15 12:03:53 +00:00
* Improve Daytona sandbox provisioning and frontend UI Refactor git clone script in Daytona provider to use cleaner shell logic for GitHub token authentication and branch checkout. Add support for private repository clones with token-based auth. Improve Daytona provider error handling and git configuration setup. Frontend improvements include enhanced dev panel, workspace dashboard, sidebar navigation, and UI components for better task/session management. Update interest manager and backend client to support improved session state handling. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> * Add header status pill showing task/session/sandbox state Surface aggregate status (error, provisioning, running, ready, no sandbox) as a colored pill in the transcript panel header. Integrates task runtime status, session status, and sandbox availability via the sandboxProcesses interest topic so the pill accurately reflects unreachable sandboxes. Includes mock tasks demonstrating error, provisioning, and running states, unit tests for deriveHeaderStatus, and workspace-dashboard integration. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
109 lines
4.9 KiB
YAML
109 lines
4.9 KiB
YAML
name: foundry
|
|
|
|
services:
|
|
backend:
|
|
build:
|
|
context: ..
|
|
dockerfile: foundry/docker/backend.dev.Dockerfile
|
|
image: foundry-backend-dev
|
|
working_dir: /app
|
|
env_file:
|
|
- path: .env
|
|
required: false
|
|
environment:
|
|
HF_BACKEND_HOST: "0.0.0.0"
|
|
HF_BACKEND_PORT: "7741"
|
|
RIVETKIT_STORAGE_PATH: "/root/.local/share/foundry/rivetkit"
|
|
# Pass through credentials needed for agent execution + PR creation in dev/e2e.
|
|
# Do not hardcode secrets; set these in your environment when starting compose.
|
|
ANTHROPIC_API_KEY: "${ANTHROPIC_API_KEY:-}"
|
|
CLAUDE_API_KEY: "${CLAUDE_API_KEY:-${ANTHROPIC_API_KEY:-}}"
|
|
OPENAI_API_KEY: "${OPENAI_API_KEY:-}"
|
|
# sandbox-agent codex plugin currently expects CODEX_API_KEY. Map from OPENAI_API_KEY for convenience.
|
|
CODEX_API_KEY: "${CODEX_API_KEY:-${OPENAI_API_KEY:-}}"
|
|
# Support either GITHUB_TOKEN or GITHUB_PAT in local env files.
|
|
GITHUB_TOKEN: "${GITHUB_TOKEN:-${GITHUB_PAT:-}}"
|
|
GH_TOKEN: "${GH_TOKEN:-${GITHUB_TOKEN:-${GITHUB_PAT:-}}}"
|
|
APP_URL: "${APP_URL:-}"
|
|
BETTER_AUTH_URL: "${BETTER_AUTH_URL:-}"
|
|
BETTER_AUTH_SECRET: "${BETTER_AUTH_SECRET:-}"
|
|
GITHUB_CLIENT_ID: "${GITHUB_CLIENT_ID:-}"
|
|
GITHUB_CLIENT_SECRET: "${GITHUB_CLIENT_SECRET:-}"
|
|
GITHUB_REDIRECT_URI: "${GITHUB_REDIRECT_URI:-}"
|
|
GITHUB_APP_ID: "${GITHUB_APP_ID:-}"
|
|
GITHUB_APP_CLIENT_ID: "${GITHUB_APP_CLIENT_ID:-}"
|
|
GITHUB_APP_CLIENT_SECRET: "${GITHUB_APP_CLIENT_SECRET:-}"
|
|
GITHUB_APP_PRIVATE_KEY: "${GITHUB_APP_PRIVATE_KEY:-}"
|
|
GITHUB_WEBHOOK_SECRET: "${GITHUB_WEBHOOK_SECRET:-${GITHUB_APP_WEBHOOK_SECRET:-}}"
|
|
STRIPE_PUBLISHABLE_KEY: "${STRIPE_PUBLISHABLE_KEY:-}"
|
|
STRIPE_SECRET_KEY: "${STRIPE_SECRET_KEY:-}"
|
|
STRIPE_WEBHOOK_SECRET: "${STRIPE_WEBHOOK_SECRET:-}"
|
|
STRIPE_PRICE_TEAM: "${STRIPE_PRICE_TEAM:-}"
|
|
FOUNDRY_SANDBOX_PROVIDER: "${FOUNDRY_SANDBOX_PROVIDER:-local}"
|
|
E2B_API_KEY: "${E2B_API_KEY:-}"
|
|
E2B_TEMPLATE: "${E2B_TEMPLATE:-}"
|
|
HF_E2B_TEMPLATE: "${HF_E2B_TEMPLATE:-${E2B_TEMPLATE:-}}"
|
|
DAYTONA_ENDPOINT: "${DAYTONA_ENDPOINT:-}"
|
|
DAYTONA_API_KEY: "${DAYTONA_API_KEY:-}"
|
|
HF_DAYTONA_ENDPOINT: "${HF_DAYTONA_ENDPOINT:-}"
|
|
HF_DAYTONA_API_KEY: "${HF_DAYTONA_API_KEY:-}"
|
|
ports:
|
|
- "6420:6420"
|
|
- "7741:7741"
|
|
volumes:
|
|
- "..:/app"
|
|
# The linked RivetKit checkout resolves from Foundry packages to /task/rivet-checkout in-container.
|
|
- "../../../task/rivet-checkout:/task/rivet-checkout:ro"
|
|
# Reuse the host Codex auth profile for local sandbox-agent Codex sessions in dev.
|
|
- "${HOME}/.codex:/root/.codex"
|
|
- "/var/run/docker.sock:/var/run/docker.sock"
|
|
# Keep backend dependency installs Linux-native instead of using host node_modules.
|
|
- "foundry_backend_root_node_modules:/app/node_modules"
|
|
- "foundry_backend_backend_node_modules:/app/foundry/packages/backend/node_modules"
|
|
- "foundry_backend_shared_node_modules:/app/foundry/packages/shared/node_modules"
|
|
- "foundry_backend_persist_rivet_node_modules:/app/sdks/persist-rivet/node_modules"
|
|
- "foundry_backend_typescript_node_modules:/app/sdks/typescript/node_modules"
|
|
- "foundry_backend_pnpm_store:/root/.local/share/pnpm/store"
|
|
# Persist backend-managed local git clones across container restarts.
|
|
- "foundry_git_repos:/root/.local/share/foundry/repos"
|
|
# Persist RivetKit local storage across container restarts.
|
|
- "foundry_rivetkit_storage:/root/.local/share/foundry/rivetkit"
|
|
|
|
frontend:
|
|
build:
|
|
context: ..
|
|
dockerfile: foundry/docker/frontend.dev.Dockerfile
|
|
working_dir: /app
|
|
depends_on:
|
|
- backend
|
|
environment:
|
|
HOME: "/tmp"
|
|
HF_BACKEND_HTTP: "http://backend:7741"
|
|
ports:
|
|
- "4173:4173"
|
|
volumes:
|
|
- "..:/app"
|
|
# Ensure logs in .foundry/ persist on the host even if we change source mounts later.
|
|
- "./.foundry:/app/foundry/.foundry"
|
|
- "../../../task/rivet-checkout:/task/rivet-checkout:ro"
|
|
# Use Linux-native workspace dependencies inside the container instead of host node_modules.
|
|
- "foundry_node_modules:/app/node_modules"
|
|
- "foundry_client_node_modules:/app/foundry/packages/client/node_modules"
|
|
- "foundry_frontend_node_modules:/app/foundry/packages/frontend/node_modules"
|
|
- "foundry_shared_node_modules:/app/foundry/packages/shared/node_modules"
|
|
- "foundry_pnpm_store:/tmp/.local/share/pnpm/store"
|
|
|
|
volumes:
|
|
foundry_backend_root_node_modules: {}
|
|
foundry_backend_backend_node_modules: {}
|
|
foundry_backend_shared_node_modules: {}
|
|
foundry_backend_persist_rivet_node_modules: {}
|
|
foundry_backend_typescript_node_modules: {}
|
|
foundry_backend_pnpm_store: {}
|
|
foundry_git_repos: {}
|
|
foundry_rivetkit_storage: {}
|
|
foundry_node_modules: {}
|
|
foundry_client_node_modules: {}
|
|
foundry_frontend_node_modules: {}
|
|
foundry_shared_node_modules: {}
|
|
foundry_pnpm_store: {}
|