{
  "permissions": {
    "allow": [
      "Bash(rm -rf server/.template.config)",
      "Bash(rm -f server/CleanArcTemplate.nuspec)",
      "Bash(rm -f server/.github/workflows/package.yml)",
      "Bash(rmdir server/.github/workflows)",
      "Bash(rmdir server/.github)",
      "Bash(npm -v)",
      "Bash(dotnet --version)",
      "Bash(npm install *)",
      "Bash(node -e \"const p=require\\('./node_modules/next/package.json'\\).version; const m=require\\('./node_modules/@mui/material/package.json'\\).version; const r=require\\('./node_modules/react/package.json'\\).version; const e=require\\('./node_modules/eslint/package.json'\\).version; const mn=require\\('./node_modules/@mui/material-nextjs/package.json'\\).version; console.log\\('next',p\\);console.log\\('@mui/material',m\\);console.log\\('@mui/material-nextjs',mn\\);console.log\\('react',r\\);console.log\\('eslint',e\\);\")",
      "Bash(node -e ' *)",
      "Bash(npx tsc *)",
      "Bash(echo \"TYPE_EXIT=$?\")",
      "Bash(npm run *)",
      "PowerShell(ls \"c:\\\\Users\\\\Lenovo\\\\Desktop\\\\balinyaar\\\\client\\\\node_modules\\\\@mui\\\\material\" | Select-Object Name | Where-Object { $_.Name -match \"Color|Init|Css\" })",
      "PowerShell(node -e \"const v = require\\('c:/Users/Lenovo/Desktop/balinyaar/client/node_modules/@testing-library/jest-dom/package.json'\\).version; console.log\\('@testing-library/jest-dom', v\\)\")",
      "WebFetch(domain:www.nuget.org)",
      "Bash(xargs grep -l \"Route\\\\|ApiVersion\\\\|Controller\")",
      "PowerShell(cd \"c:\\\\Users\\\\Lenovo\\\\Desktop\\\\balinyaar\\\\server\"; dotnet build 2>&1 | Select-String -Pattern \"error|warning|Build succeeded|Build FAILED\" | Where-Object { $_ -notmatch \"NETSDK1057\" })",
      "Read(//c/Users/Lenovo/Desktop/balinyaar/server/src/API/Baya.Web.Api/Controllers/V1/**)",
      "Bash(cd /c/Users/Lenovo/Desktop/balinyaar/client && find . -type f -name \"*.ts\" -o -name \"*.tsx\" -o -name \"*.json\" -o -name \"*.mjs\" | head -50)",
      "Read(//c/c/Users/Lenovo/Desktop/balinyaar/**)",
      "Bash(xargs grep -l \"getLocale\\\\|setRequestLocale\\\\|requestLocale\")",
      "Bash(node -e \"const p=require\\('c:/Users/Lenovo/Desktop/balinyaar/client/package.json'\\); console.log\\(JSON.stringify\\({scripts:p.scripts,next:p.dependencies?.next},null,2\\)\\)\")",
      "Bash(node -e \"const p=require\\('c:/Users/Lenovo/Desktop/balinyaar/client/node_modules/next/package.json'\\); console.log\\(p.version\\)\")",
      "Bash(node -e \"const d=JSON.parse\\(require\\('fs'\\).readFileSync\\('/dev/stdin','utf8'\\)\\); const keys=Object.keys\\(d.exports||{}\\).filter\\(k=>k.includes\\('middleware'\\)||k.includes\\('server'\\)\\); console.log\\(keys.slice\\(0,20\\)\\)\")",
      "Bash(xargs grep -l \"middleware\")",
      "Bash(node -e \"const p=require\\('c:/Users/Lenovo/Desktop/balinyaar/client/node_modules/next-intl/package.json'\\); const exp=p.exports; const keys=Object.keys\\(exp||{}\\).filter\\(k=>k.includes\\('middleware'\\)\\); keys.forEach\\(k=>console.log\\(k,JSON.stringify\\(exp[k]\\)\\)\\)\")",
      "PowerShell(Select-String -Path \"c:\\\\Users\\\\Lenovo\\\\Desktop\\\\balinyaar\\\\client\\\\node_modules\\\\next\\\\dist\\\\lib\\\\constants.js\" -Pattern \"MIDDLEWARE_FILENAME|MIDDLEWARE_LOCATION\" | ForEach-Object { $_.Line.Substring\\(0, [Math]::Min\\(300, $_.Line.Length\\)\\) })",
      "Bash(node -e \"const p = require\\('c:/Users/Lenovo/Desktop/balinyaar/client/node_modules/next-intl/package.json'\\); console.log\\(JSON.stringify\\(p.exports['./plugin'] || p.exports, null, 2\\).substring\\(0, 1000\\)\\);\")",
      "Bash(xargs grep -l \"HEADER_LOCALE_NAME\\\\|X-NEXT-INTL\")",
      "Bash(xargs ls)",
      "Bash(xargs grep \"AppStoreProvider\")",
      "Bash(node -e \"const p = require\\('./node_modules/notistack/package.json'\\); console.log\\('version:', p.version\\); console.log\\('peerDeps:', JSON.stringify\\(p.peerDependencies, null, 2\\)\\)\")",
      "Bash(node -e \"const n = require\\('c:/Users/Lenovo/Desktop/balinyaar/client/node_modules/notistack'\\); console.log\\(Object.keys\\(n\\)\\)\")",
      "Bash(Get-ChildItem -Path \"c:\\\\Users\\\\Lenovo\\\\Desktop\\\\balinyaar\\\\client\" -Force)",
      "Bash(Select-Object Name, PSIsContainer)",
      "Bash(npm audit *)",
      "Bash(*)",
      "Read(*)",
      "Edit(*)",
      "Write(*)",
      "Glob(*)",
      "Grep(*)",
      "WebFetch(*)",
      "WebSearch(*)",
      "Agent(*)",
      "NotebookEdit(*)",
      "Skill(*)",
      "mcp__claude_ai_Mermaid_Chart__validate_and_render_mermaid_diagram",
      "Edit(/.claude/skills/frontend-designer/**)",
      "Bash(rm -f src/Infrastructure/Baya.Infrastructure.Persistence/Migrations/*.cs && echo \"migrations dir now:\" && ls -la src/Infrastructure/Baya.Infrastructure.Persistence/Migrations/ 2>/dev/null || echo \"\\(empty/gone\\)\")",
      "Bash(dotnet build *)",
      "Bash(export ASPNETCORE_ENVIRONMENT=Production)",
      "Bash(export ASPNETCORE_URLS=\"http://127.0.0.1:5080\")",
      "Bash(export Kestrel__EndpointDefaults__Protocols=\"Http1\")",
      "Bash(nohup dotnet run --project src/API/Baya.Web.Api/Baya.Web.Api.csproj --no-build --no-launch-profile)",
      "Bash(echo \"started pid $!\")",
      "Bash(Get-ChildItem -Path \"c:\\\\Users\\\\Lenovo\\\\Desktop\\\\balinyaar\\\\server\" -Recurse -Directory)",
      "Bash(Select-Object FullName)",
      "Bash(dotnet ef *)",
      "Bash(dotnet test *)",
      "Bash(ASPNETCORE_ENVIRONMENT=Development ASPNETCORE_URLS=\"http://localhost:5080\" dotnet run --project src/API/Baya.Web.Api/Baya.Web.Api.csproj --no-build)",
      "Bash(curl -sk https://localhost:5002/swagger/v1/swagger.json -o \"c:/Users/Lenovo/Desktop/balinyaar/dev/contracts/openapi/swagger.v1.json\")",
      "Bash(curl -sk https://localhost:5002/api/v1/ping/get_status)",
      "Bash(taskkill //F //IM Baya.Web.Api.exe)",
      "Bash(taskkill //F //IM dotnet.exe //FI \"MEMUSAGE gt 90000\")",
      "Bash(tasklist)",
      "Bash(ASPNETCORE_ENVIRONMENT=Development dotnet run --project src/API/Baya.Web.Api/Baya.Web.Api.csproj --no-build)",
      "Bash(git add *)",
      "Bash(git commit *)",
      "Bash(xargs echo \"remaining unstaged/untracked entries:\")",
      "Bash(git commit -m ' *)",
      "Bash(dotnet sln *)",
      "Bash(curl -s -o /dev/null -w \"%{http_code}\" http://localhost:5188/swagger/v1/swagger.json)",
      "Read(//c/Users/Lenovo/AppData/Local/Temp/claude/c--Users-Lenovo-Desktop-balinyaar/9f660ead-4935-40d5-9ba2-c846d642a0db/scratchpad/**)",
      "Bash(curl -s -o /dev/null -w \"%{http_code}\\\\n\" http://localhost:5188/api/v1/me)",
      "Bash(curl -s http://localhost:5188/api/v1/me -H 'Authorization: Bearer __TRACKED_VAR__')",
      "Bash(curl -s -X POST http://localhost:5188/api/v1/auth/refresh -H 'Content-Type: application/json' -d '{\"refreshToken\":\"__TRACKED_VAR__\"}')",
      "Bash(node -e \"const d=JSON.parse\\(require\\('fs'\\).readFileSync\\('step5.json'\\)\\); console.log\\('status ok:',d.isSuccess,'| roles:',JSON.stringify\\(d.data.roles\\)\\); require\\('fs'\\).writeFileSync\\('at2.txt',d.data.accessToken\\)\")",
      "Bash(curl -s -o /dev/null -w '%{http_code}\\\\n' -X POST http://localhost:5188/api/v1/auth/refresh -H 'Content-Type: application/json' -d '{\"refreshToken\":\"__TRACKED_VAR__\"}')",
      "Bash(curl -s -o /dev/null -w \"%{http_code}\\\\n\" -X POST http://localhost:5188/api/v1/auth/verify_otp -H \"Content-Type: application/json\" -d '{\"phone\":\"09121112233\",\"code\":\"000000\"}')",
      "Bash(curl -s -o /dev/null -w '%{http_code}\\\\n' -X POST http://localhost:5188/api/v1/auth/logout -H 'Authorization: Bearer __TRACKED_VAR__' -H 'Content-Type: application/json' -d '{}')",
      "Bash(curl -s -o /dev/null -w '%{http_code}\\\\n' http://localhost:5188/api/v1/me -H 'Authorization: Bearer __TRACKED_VAR__')",
      "Bash(curl -s -o /dev/null -w \"%{http_code} \" -X POST http://localhost:5188/api/v1/auth/request_otp -H \"Content-Type: application/json\" -d '{\"phone\":\"09121112244\"}')",
      "Bash(curl -s http://localhost:5188/swagger/v1/swagger.json -o /c/Users/Lenovo/Desktop/balinyaar/dev/contracts/openapi/swagger.v1.json)",
      "Bash(xargs grep -l \"class OperationResult\\\\|record OperationResult\")",
      "Bash(grep \".cs$\")",
      "Bash(git restore *)",
      "Bash(printf '%s\\\\n' 'diff --git a/dev/shared-working-context/reports/mocks-registry.md b/dev/shared-working-context/reports/mocks-registry.md' '--- a/dev/shared-working-context/reports/mocks-registry.md' '+++ b/dev/shared-working-context/reports/mocks-registry.md' '@@ -36,3 +36,13 @@' ' ' ' > Exact config keys and file paths get filled in by the phase that builds each seam. Keep the' ' > \"Make it real →\" column actionable enough that a developer can pick up any single row and ship it.' + '+## Frontend client-side mocks \\(not backend DI seams\\)' + '+These are in-browser mocks behind a `services/{domain}` interface, selected by a config flag. They exist so' '+the frontend can build before the backend phase merges, and swap to the real HTTP client in one line.' + '+| Seam \\(interface\\) | File | What it fakes | Config flag | Make it real → | Status |' '+| --- | --- | --- | --- | --- | --- |' '+| `PatientsApi` | `client/src/services/patients/apis/mockApi.ts` | In-memory patient list/create | `USE_PATIENTS_MOCK` \\(`services/patients/constants.ts`\\) | Publish `/patients` endpoints, set flag `false` | 🟡 |' '+| `AuthApi` | `client/src/services/auth/apis/mockApi.ts` \\(`authMockApi`\\) | Phone-OTP login offline: `requestOtp`→`{otpSent,resendAvailableInSeconds:120}`; `verifyOtp` accepts dev code **`123456`** and locks after 3 wrong tries \\(`otp_locked`\\); `getMe`/`selectRole`/`refresh` from a `MOCK_SCENARIO` toggle \\(`customer`/`nurse_unverified`/`no_role`\\) to exercise all router branches | `USE_AUTH_MOCK` \\(`services/auth/constants.ts`, default **false** — b2 is live\\) + `MOCK_SCENARIO` in `mockApi.ts` | The real `authClientApi` is already wired to the live b2 routes; set `USE_AUTH_MOCK = false` \\(already the default\\) — no hook/screen change | 🟢 real by default, 🟡 mock available |')",
      "Bash(git apply *)",
      "Bash(git reset *)",
      "Bash(NEXT_PUBLIC_API_URL=\"https://localhost:5002\" npm run build)",
      "Bash(grep -i -E \"\\\\.cs$\")",
      "Bash(ls -la \"C:/Users/Lenovo/.claude/projects/c--Users-Lenovo-Desktop-balinyaar/e880cedf-ef23-4ad7-99bd-edb2f9b89d48/subagents/workflows/wf_efb47a22-2e9/\" 2>/dev/null | head; echo \"---journal tail---\"; tail -5 \"C:/Users/Lenovo/.claude/projects/c--Users-Lenovo-Desktop-balinyaar/e880cedf-ef23-4ad7-99bd-edb2f9b89d48/subagents/workflows/wf_efb47a22-2e9/journal.jsonl\" 2>/dev/null)",
      "Read(//c/Users/Lenovo/.claude/projects/c--Users-Lenovo-Desktop-balinyaar/e880cedf-ef23-4ad7-99bd-edb2f9b89d48/subagents/workflows/wf_efb47a22-2e9/**)",
      "Bash(xargs cat)",
      "Bash(curl -s --http2-prior-knowledge -o /tmp/sw.json -w \"%{http_code}\" http://localhost:5099/swagger/v1/swagger.json)",
      "Read(//tmp/**)",
      "Bash(grep -iE \"Now listening|Kestrel|Protocol|http\" /tmp/baya-swagger-run.log 2>/dev/null | head -20; echo \"===\"; tail -8 /tmp/baya-swagger-run.log 2>/dev/null)",
      "Bash(curl --version)",
      "Bash(curl -s --http2-prior-knowledge http://localhost:5099/swagger/v1/swagger.json -o /tmp/sw2.json -w \"code=%{http_code} httpver=%{http_version}\\\\n\")",
      "Bash(echo \"New catalog/variant paths present:\"; grep -oE '\"/api/v1/\\(catalog|admin_catalog|nurse_variants\\)/[a-z_{}/]*\"' /tmp/sw.json | sort -u *)",
      "Bash(cp /tmp/sw.json \"C:/Users/Lenovo/Desktop/balinyaar/dev/contracts/openapi/swagger.v1.json\" *)",
      "Bash(git commit -q -m ' *)",
      "Bash(git branch *)"
    ],
    "defaultMode": "auto",
    "additionalDirectories": [
      "C:\\Users\\Lenovo\\Desktop\\balinyaar\\server\\src\\Infrastructure\\Baya.Infrastructure.Persistence\\Migrations",
      "\\tmp"
    ]
  }
}
