{
  "schemaVersion": 1,
  "checkedAt": "2026-06-17T22:58:57.009Z",
  "status": "CLOUDFLARE_DISCOVERY_AUTH_NEEDED",
  "label": "Cloudflare Discovery Needs API Token",
  "wrangler": {
    "available": true,
    "version": "4.95.0",
    "source": "npx-fallback",
    "pinnedVersion": "4.95.0",
    "installCommand": "npm install --save-dev wrangler@4.95.0"
  },
  "authentication": {
    "status": "AUTH_NEEDED",
    "accountCount": 0,
    "accounts": [],
    "apiTokenPresent": false,
    "automationCredential": "CLOUDFLARE_API_TOKEN",
    "automationAuthRequired": true,
    "wranglerLoggedIn": false
  },
  "counts": {
    "targetCount": 9,
    "targetMatches": 0,
    "suggestedDashboardUpdates": 0,
    "commandFailures": 0,
    "commandsRun": 2,
    "d1Observed": 0,
    "r2Observed": 0,
    "pagesObserved": 0,
    "workerDeploymentsObserved": 0
  },
  "commands": [
    {
      "command": "wrangler --version",
      "ok": true
    },
    {
      "command": "wrangler whoami --json",
      "ok": true
    }
  ],
  "commandFailures": [],
  "targets": {
    "d1": [
      {
        "kind": "d1",
        "label": "Command center D1",
        "name": "nyra_command_center",
        "found": false,
        "statePath": "cloudMigration.d1DatabaseId",
        "dashboardPage": "pages/cloud.html",
        "dashboardField": "cloudMigration.d1DatabaseId",
        "value": "",
        "detail": "Not found in current Wrangler account.",
        "discovered": null
      },
      {
        "kind": "d1",
        "label": "Billing D1",
        "name": "nyra_billing",
        "found": false,
        "statePath": "billingCloud.d1DatabaseId",
        "dashboardPage": "pages/cloud-billing.html",
        "dashboardField": "billingCloud.d1DatabaseId",
        "value": "",
        "detail": "Not found in current Wrangler account.",
        "discovered": null
      }
    ],
    "r2": [
      {
        "kind": "r2",
        "label": "Command center uploads R2",
        "name": "nyra-command-center-uploads",
        "found": false,
        "statePath": "cloudMigration.r2Bucket",
        "dashboardPage": "pages/cloud.html",
        "dashboardField": "cloudMigration.r2Bucket",
        "value": "",
        "detail": "Not found in current Wrangler account.",
        "discovered": null
      },
      {
        "kind": "r2",
        "label": "Mobile support logs R2",
        "name": "nyra-mobile-support-logs",
        "found": false,
        "statePath": "mobileBridge.r2BucketName",
        "dashboardPage": "pages/cloud-mobile-bridge.html",
        "dashboardField": "mobileBridge.r2BucketName",
        "value": "",
        "detail": "Not found in current Wrangler account.",
        "discovered": null
      },
      {
        "kind": "r2",
        "label": "Android releases R2",
        "name": "nyra-android-releases",
        "found": false,
        "statePath": "mobileBridge.androidReleasesBucketName",
        "dashboardPage": "pages/cloud-mobile-bridge.html",
        "dashboardField": "mobileBridge.androidReleasesBucketName",
        "value": "",
        "detail": "Not found in current Wrangler account.",
        "discovered": null
      }
    ],
    "pages": [
      {
        "kind": "pages",
        "label": "Command center Pages dashboard",
        "name": "nyra-command-center-dashboard",
        "found": false,
        "statePath": "cloudPages.projectName",
        "dashboardPage": "pages/cloud.html",
        "dashboardField": "cloudPages.projectName",
        "value": "",
        "detail": "Not found in current Wrangler account.",
        "discovered": null
      }
    ],
    "workers": [
      {
        "kind": "workers",
        "label": "Command center Worker",
        "name": "nyra-command-center-api",
        "found": false,
        "statePath": "cloudSync.apiUrl",
        "dashboardPage": "pages/cloud.html",
        "dashboardField": "cloudSync.apiUrl",
        "value": "",
        "detail": "Not found in current Wrangler account.",
        "discovered": null
      },
      {
        "kind": "workers",
        "label": "Billing Worker",
        "name": "nyra-billing-api",
        "found": false,
        "statePath": "billingCloud.workerUrl",
        "dashboardPage": "pages/cloud-billing.html",
        "dashboardField": "billingCloud.workerUrl",
        "value": "",
        "detail": "Not found in current Wrangler account.",
        "discovered": null
      },
      {
        "kind": "workers",
        "label": "Mobile bridge Worker",
        "name": "nyra-mobile-bridge-api",
        "found": false,
        "statePath": "mobileBridge.workerUrl",
        "dashboardPage": "pages/cloud-mobile-bridge.html",
        "dashboardField": "mobileBridge.workerUrl",
        "value": "",
        "detail": "Not found in current Wrangler account.",
        "discovered": null
      }
    ]
  },
  "suggestedDashboardUpdates": [],
  "actions": [
    {
      "id": "cloudflare-api-token",
      "phase": "1. Authenticate",
      "priority": "P0",
      "owner": "User",
      "status": "Waiting on user",
      "label": "Cloudflare API token required",
      "action": "Create a scoped Cloudflare API token for the account that will host NyrA, set it as CLOUDFLARE_API_TOKEN in the local shell or automation secret store, then rerun discovery. Do not paste the token into the dashboard or repo.",
      "command": "npm run cloudflare:discover",
      "dashboardPage": "pages/cloudflare-discovery.html",
      "dashboardField": "cloudMigration.accountReady",
      "noGoRule": "Cloudflare API tokens, Worker bearer tokens, recovery codes, Stripe secrets, private keys, and password material must stay in Wrangler secrets, Cloudflare dashboard secret stores, browser localStorage, or a temporary shell only. This discovery pack stores non-secret resource names/IDs and redacted account context only."
    },
    {
      "id": "wrangler-login",
      "phase": "1. Authenticate",
      "priority": "P1",
      "owner": "User",
      "status": "Interactive fallback",
      "label": "Wrangler login",
      "action": "If you are sitting at the Windows desktop and prefer browser auth, run npx wrangler login from this repo and approve the Cloudflare account that will host NyrA. Automation still needs CLOUDFLARE_API_TOKEN.",
      "command": "npx wrangler login",
      "dashboardPage": "pages/cloudflare-discovery.html",
      "dashboardField": "cloudMigration.accountReady",
      "noGoRule": "Cloudflare API tokens, Worker bearer tokens, recovery codes, Stripe secrets, private keys, and password material must stay in Wrangler secrets, Cloudflare dashboard secret stores, browser localStorage, or a temporary shell only. This discovery pack stores non-secret resource names/IDs and redacted account context only."
    }
  ],
  "outputs": {
    "json": "docs/launch_command_center/cloudflare-handoff-discovery.json",
    "csv": "docs/launch_command_center/cloudflare-handoff-discovery.csv",
    "report": "docs/launch_command_center/CLOUDFLARE_HANDOFF_DISCOVERY.md",
    "dashboard": "docs/launch_command_center/pages/cloudflare-discovery.html"
  },
  "noSecretRule": "Cloudflare API tokens, Worker bearer tokens, recovery codes, Stripe secrets, private keys, and password material must stay in Wrangler secrets, Cloudflare dashboard secret stores, browser localStorage, or a temporary shell only. This discovery pack stores non-secret resource names/IDs and redacted account context only."
}
