{
  "ok": true,
  "auth": "All /browser/* routes require Authorization: Bearer <jwt> (HS256, claims 含 tenant_id)",
  "phase4_integration": {
    "start": "JWT → adk_session_id + profile → D1 INSERT(active) → 容器 profile → open → D1 opened_at；已起沙箱后任一步失败则 failed + destroy",
    "commands": "JWT → body.adk_session_id 与 URL :id、D1 中 tenant_id 的 active 行一致",
    "delete": "JWT → 容器 zip + 预签名 PUT/curl 上 R2 → destroy（export 失败仍 destroy）→ D1 ended"
  },
  "phase5_session_type": "启动 body：`sessionType` 或 `session_type`（二选一需一致）为 headed|headless，缺省 headed；写入 D1 `session_type`；agent-browser：`headed`→`--headed`，`headless`→不传（CLI 默认无头）",
  "endpoints": {
    "startBrowser": "POST /browser/sessions",
    "runCommand": "POST /browser/sessions/:id/commands",
    "closeBrowser": "DELETE /browser/sessions/:id",
    "shutdownNoExport": "DELETE /browser/sessions/:id/shutdown",
    "listProfileRefs": "POST /browser/profile-refs",
    "querySessions": "POST /browser/sandbox-sessions/query"
  },
  "example": {
    "start": {
      "method": "POST",
      "path": "/browser/sessions",
      "headers": {
        "Authorization": "Bearer <jwt>"
      },
      "body": {
        "adk_session_id": "adk-xxx",
        "profile": {
          "mode": "new",
          "name": "myprofile"
        },
        "sessionType": "headed",
        "url": "https://example.com",
        "novnc": false
      }
    },
    "command": {
      "method": "POST",
      "path": "/browser/sessions/br-xxx/commands",
      "headers": {
        "Authorization": "Bearer <jwt>"
      },
      "body": {
        "adk_session_id": "adk-xxx",
        "argv": [
          "screenshot",
          "/workspace/out/s.png"
        ]
      }
    },
    "close": {
      "method": "DELETE",
      "path": "/browser/sessions/br-xxx",
      "headers": {
        "Authorization": "Bearer <jwt>",
        "content-type": "application/json"
      },
      "body": {
        "adk_session_id": "adk-xxx"
      }
    }
  }
}