The API code in @packages/enterprise/src/routes/api/ uses the Storage module from @packages/enterprise/src/core/storage.ts, which creates an adapter for R2 storage using the aws4fetch library to make direct HTTP API calls to Cloudflare R2's endpoint (https://${accountId}.r2.cloudflarestorage.com). This is not using Cloudflare bindings directly, but rather making HTTP requests to the R2 API.
The vite.config.ts shows that when targeting Cloudflare (OPENCODE_DEPLOYMENT_TARGET === "cloudflare"), it uses the cloudflare_module preset with nodeCompat: true, but this doesn't create Cloudflare bindings for R2 - it just configures the build for Cloudflare Workers compatibility.
There is no .output/server directory in the enterprise package, suggesting the build artifacts aren't currently present in the repository. The storage implementation uses environment variables (OPENCODE_STORAGE_ACCOUNT_ID, OPENCODE_STORAGE_ACCESS_KEY_ID, etc.) to configure the R2 client, rather than Cloudflare bindings.
So to answer your question: The code uses direct API calls to R2 via the aws4fetch library, not Cloudflare bindings.