feat(python/robomp): migrated robomp into monorepo as python/robomp/
- Subtree-merged github.com/can1357/roboomp with full history - Wired python/robomp/web as a Bun workspace; migrated SolidJS deps to root catalog - Removed nested bun.lock/bunfig.toml/biome.json; root configs now own them - Replaced scripts/with-pi-root.sh; default PI_ROOT to ../.. (the monorepo) - Added root recipes: test:py, lint:py, fix:py (Python opt-in, not folded into bun test) - Updated .gitignore/.dockerignore for robomp runtime state (data/, cache/, web dist, static bundle) - Updated README/AGENTS/.env.example to drop ROBOMP_PI_* auto-clone knobs
This commit is contained in:
@@ -108,7 +108,7 @@ Lint + format: TypeScript via Biome (config in `biome.json`), Python via Ruff (c
|
||||
- **Task runner**: `bun` (root `package.json` `scripts`). Always reach for an existing `bun run` recipe before invoking `docker compose` or `pytest` directly.
|
||||
- **Container runtime**: Docker Compose v2. The image embeds Bun 1.3.14 + a rustup launcher and exposes `omp` via a `/usr/local/bin/omp` shim; `ROBOMP_OMP_COMMAND=omp` should not need changing.
|
||||
- **Required env** (set in `.env`, see `.env.example`): `GITHUB_WEBHOOK_SECRET`, `ROBOMP_BOT_LOGIN`, `ROBOMP_GIT_AUTHOR_NAME`, `ROBOMP_GIT_AUTHOR_EMAIL`, `ROBOMP_REPO_ALLOWLIST`, plus model knobs (`ROBOMP_MODEL`, `ROBOMP_THINKING`, optional `ROBOMP_PROVIDER`) and rate-limit / concurrency / timeout overrides. **GitHub auth is mode-exclusive**: either set `ROBOMP_GH_PROXY_URL` + `ROBOMP_GH_PROXY_HMAC_KEY` (gh-proxy mode; PAT lives only in the sidecar container — the bundled compose default), or set `GITHUB_TOKEN` directly (single-process PAT mode). `Settings._validate_proxy_or_pat` rejects a `.env` that sets both.
|
||||
- **PI_ROOT resolution**: build (`bun run pi-artifacts`) and `bun run up` route through `scripts/with-pi-root.sh`, which picks `$PI_ROOT` → `/work/pi` → an auto-cloned cache at `./.cache/oh-my-pi`. Override with `ROBOMP_PI_REPO_URL` / `ROBOMP_PI_REF` / `ROBOMP_PI_CACHE_DIR` / `ROBOMP_PI_AUTO_UPDATE=1`. Inside the container the path is always `/work/pi`; compose mounts whatever the wrapper resolves on the host. Build invalidation stays bounded: Python-only edits in roboomp never trigger a natives recompile.
|
||||
- **PI_ROOT resolution**: roboomp lives inside the oh-my-pi monorepo at `python/robomp/`. `bun run pi-artifacts` builds the parent monorepo (`../..`) as its docker build context, and `docker-compose.yml` mounts that same path read-only at `/work/pi`. Override `PI_ROOT` only when pointing the build/mount at a different oh-my-pi checkout. Inside the container the path is always `/work/pi`. Build invalidation stays bounded: Python-only edits in roboomp never trigger a natives recompile.
|
||||
- **Forbidden**: no docker-in-docker, no extra service containers, no new background workers outside `WorkerPool`. The container itself is the isolation boundary; per-issue isolation is the git worktree.
|
||||
|
||||
## Testing & QA
|
||||
|
||||
Reference in New Issue
Block a user