{ "name": "robomp", "private": true, "type": "module", "packageManager": "bun@1.3.14", "description": "Self-hosted GitHub triage-and-fix bot driving oh-my-pi.", "scripts": { "dev": "bun run build && bun run up && bun run logs", "build": "bun run pi-artifacts && docker compose build", "rebuild": "docker build --no-cache -t \"${PI_ARTIFACTS_IMAGE:-oh-my-pi/artifacts:dev}\" ../.. && docker compose build --no-cache", "pi-artifacts": "docker build -t \"${PI_ARTIFACTS_IMAGE:-oh-my-pi/artifacts:dev}\" ../..", "clean-pi-artifacts": "docker image rm ${PI_ARTIFACTS_IMAGE:-oh-my-pi/artifacts:dev} || true", "image-info": "docker image inspect robomp:dev --format 'size: {{.Size}} bytes layers: {{len .RootFS.Layers}} created: {{.Created}}'", "up": "docker compose up -d", "down": "docker compose down", "restart": "docker compose restart robomp", "ps": "docker compose ps", "logs": "docker compose logs -f robomp", "proxy-logs": "docker compose logs -f gh-proxy", "tail": "docker compose logs --no-color --tail \"${1:-200}\" robomp", "log-grep": "docker compose logs --no-color robomp | grep -i -- \"$1\" || true", "sh": "docker compose exec robomp bash", "exec": "docker compose exec robomp \"$@\"", "triage": "docker compose exec robomp robomp triage \"$1\"", "replay": "docker compose exec robomp robomp replay \"$1\"", "issue-status": "docker compose exec robomp robomp status", "cleanup": "docker compose exec robomp robomp cleanup \"$1\"", "install:py": "pip install -e '.[dev]'", "test": "pytest -x tests/ \"$@\"", "test:integration": "ROBOMP_INTEGRATION=1 pytest -x tests/test_worker_smoke.py \"$@\"", "test:file": "pytest -x \"$@\"", "serve": "python3 -m robomp serve", "lint": "bun run lint:ts && bun run lint:py", "lint:ts": "biome check . --no-errors-on-unmatched", "lint:py": "ruff check src tests && ruff format --check src tests", "fix": "bun run fix:ts && bun run fix:py", "fix:ts": "biome check --write --unsafe --no-errors-on-unmatched .", "fix:py": "ruff check --fix src tests && ruff format src tests", "fmt": "biome format --write --no-errors-on-unmatched .", "check": "biome check . --no-errors-on-unmatched", "typecheck": "bun --cwd=web run typecheck", "web:dev": "bun --cwd=web run dev", "web:build": "bun --cwd=web run build", "web:preview": "bun --cwd=web run preview", "web:typecheck": "bun --cwd=web run typecheck", "healthz": "curl -fsS \"http://localhost:${ROBOMP_BIND_PORT:-8080}/healthz\" && echo", "readyz": "curl -fsS \"http://localhost:${ROBOMP_BIND_PORT:-8080}/readyz\" && echo", "events": "curl -fsS \"http://localhost:${ROBOMP_BIND_PORT:-8080}/events?limit=${1:-50}\" | python3 -m json.tool", "issues": "curl -fsS \"http://localhost:${ROBOMP_BIND_PORT:-8080}/issues?limit=${1:-100}\" | python3 -m json.tool", "sqlite": "docker compose exec robomp sqlite3 /data/robomp.sqlite", "sql": "docker compose exec robomp sqlite3 -header -column /data/robomp.sqlite \"$1\"", "tool-calls": "docker compose exec robomp sqlite3 -header -column /data/robomp.sqlite \"SELECT id, ts, tool, COALESCE(error,'ok') AS err FROM tool_calls WHERE issue_key='$1' ORDER BY id;\"", "recent-events": "docker compose exec robomp sqlite3 -header -column /data/robomp.sqlite \"SELECT received_at, event_type, issue_key, state, attempts FROM events ORDER BY received_at DESC LIMIT ${1:-20};\"", "stuck": "docker compose exec robomp sqlite3 -header -column /data/robomp.sqlite \"SELECT delivery_id, event_type, issue_key, state, attempts, started_at FROM events WHERE state IN ('queued','running') ORDER BY received_at;\"", "ping": "bash scripts/ping.sh", "wipe-workspaces": "rm -rf ./data/workspaces && mkdir -p ./data/workspaces", "nuke-data": "rm -rf ./data && mkdir -p ./data", "reset": "docker compose down -v && (docker image rm ${PI_ARTIFACTS_IMAGE:-oh-my-pi/artifacts:dev} || true)" } }