{
  "permissions": {
    "allow": [
      "Bash(npm test:*)",
      "Read(//Users/antialias/projects/**)",
      "Bash(npm run lint:*)",
      "Bash(git add:*)",
      "Bash(git commit:*)",
      "Bash(git push:*)",
      "Bash(git pull:*)",
      "Bash(git stash:*)",
      "Bash(npm run format:*)",
      "Bash(npm run pre-commit:*)",
      "Bash(npm run type-check:*)",
      "Bash(npm run build:*)",
      "Bash(docker ps:*)",
      "Bash(cat:*)",
      "Bash(npm run dev:*)",
      "Bash(git mv:*)",
      "Bash(git rm:*)",
      "Bash(docker build:*)",
      "Read(//Users/antialias/**)",
      "Bash(docker logs:*)",
      "Bash(curl:*)",
      "Bash(docker stop:*)",
      "Bash(docker rm:*)",
      "Bash(docker run:*)",
      "Bash(docker rmi:*)",
      "Bash(gh run list:*)",
      "Bash(gh run view:*)",
      "Bash(timeout 15 pnpm run dev:*)",
      "Bash(npx tsc:*)",
      "Bash(npx biome format:*)",
      "Bash(npx biome check:*)",
      "Bash(npx @biomejs/biome lint:*)",
      "Bash(test -f /Users/antialias/projects/soroban-abacus-flashcards/apps/web/src/hooks/__tests__/useArcadeGuard.test.ts)",
      "Bash(timeout 30 npm test -- AddPlayerButton.popover-persistence.test.tsx --run)",
      "Bash(timeout 30 npm test:*)",
      "Bash(xargs:*)",
      "Bash(for file in page.tsx practice/page.tsx sprint/page.tsx survival/page.tsx)",
      "Bash(do)",
      "Bash(done)",
      "Bash(npx playwright test:*)",
      "Bash(npm run:*)",
      "Bash(\"\")",
      "Bash(npx @biomejs/biome check:*)",
      "Bash(printf '\\n')",
      "Bash(npm install bcryptjs)",
      "Bash(npm install:*)",
      "Bash(pnpm add:*)",
      "Bash(sqlite3:*)",
      "Bash(shasum:*)",
      "Bash(awk:*)",
      "Bash(if npx tsc --noEmit)",
      "Bash(then echo \"TypeScript errors found in our files\")",
      "Bash(else echo \"✓ No TypeScript errors in our modified files\")",
      "Bash(fi)",
      "Bash(then echo \"TypeScript errors found\")",
      "Bash(else echo \"✓ No TypeScript errors in join page\")",
      "Bash(npx @biomejs/biome format:*)",
      "Bash(npx drizzle-kit generate:*)",
      "Bash(ssh nas.home.network \"docker ps | grep -E ''soroban|abaci|web''\")",
      "Bash(ssh:*)",
      "Bash(printf \"\\n\\n\")",
      "Bash(timeout 10 npx drizzle-kit generate:*)",
      "Bash(git checkout:*)",
      "Bash(git log:*)",
      "Bash(python3:*)",
      "Bash(git reset:*)",
      "Bash(lsof:*)",
      "Bash(killall:*)",
      "Bash(echo:*)",
      "Bash(git restore:*)",
      "Bash(timeout 10 npm run dev:*)",
      "Bash(timeout 30 npm run dev)",
      "Bash(pkill:*)",
      "Bash(for i in {1..30})",
      "Bash(do gh run list --limit 1 --json conclusion,status,name,databaseId --jq '.[0] | \"\"\\(.status) - \\(.conclusion // \"\"running\"\") - Run ID: \\(.databaseId)\"\"')",
      "Bash(tsc:*)",
      "Bash(tsc-alias:*)",
      "Bash(npx tsc-alias:*)",
      "Bash(timeout 20 pnpm run:*)",
      "Bash(find:*)",
      "Bash(for:*)",
      "Bash(tree:*)",
      "Bash(do sed -i '' \"s|from ''../context/MemoryPairsContext''|from ''../Provider''|g\" \"$file\")",
      "Bash(do sed -i '' \"s|from ''../../../../../styled-system/css''|from ''@/styled-system/css''|g\" \"$file\")",
      "Bash(tee:*)",
      "Bash(do sed -i '' \"s|from ''@/styled-system/css''|from ''../../../../styled-system/css''|g\" \"$file\")",
      "Bash(do echo \"=== $game ===\" echo \"Required files:\" ls -1 src/arcade-games/$game/)",
      "Bash(do echo \"=== $game%/ ===\")",
      "Bash(ls:*)",
      "Bash(do if [ -f \"$file\" ])",
      "Bash(! echo \"$file\")",
      "Bash(then sed -i '' \"s|from ''''../context/ComplementRaceContext''''|from ''''@/arcade-games/complement-race/Provider''''|g\" \"$file\" sed -i '' \"s|from ''''../../context/ComplementRaceContext''''|from ''''@/arcade-games/complement-race/Provider''''|g\" \"$file\" fi done)",
      "Bash(pnpm install)",
      "Bash(pnpm exec turbo build --filter=@soroban/web)",
      "Bash(do gh run list --limit 1 --json conclusion,status,name,databaseId --jq '.[0] | \"\"\\(.status) - \\(.conclusion // \"\"running\"\")\"\"')",
      "Bash(do gh run list --limit 1 --json conclusion,status,name --jq '.[0] | \"\"\\(.status) - \\(.conclusion // \"\"running\"\") - \\(.name)\"\"')",
      "Bash(do gh run list --limit 1 --workflow=\"Build and Deploy\" --json conclusion,status --jq '.[0] | \"\"\\(.status) - \\(.conclusion // \"\"running\"\")\"\"')",
      "WebFetch(domain:abaci.one)",
      "Bash(do gh run list --limit 1 --workflow=\"Build and Deploy\" --json conclusion,status,databaseId --jq '.[0] | \"\"\\(.status) - \\(.conclusion // \"\"running\"\") - Run ID: \\(.databaseId)\"\"')",
      "Bash(node -e:*)",
      "Bash(do gh run list --limit 1 --workflow=\"Build and Deploy\" --json conclusion,status,databaseId --jq '.[0] | \"\"\\(.status) - \\(.conclusion // \"\"running\"\") - Run \\(.databaseId)\"\"')",
      "Bash(do ssh nas.home.network '/usr/local/bin/docker inspect soroban-abacus-flashcards --format=\"\"{{index .Config.Labels \\\"\"org.opencontainers.image.revision\\\"\"}}\"\"')",
      "Bash(git rev-parse HEAD)",
      "Bash(gh run watch --exit-status 18662351595)"
    ],
    "deny": [],
    "ask": []
  }
}
