stablyai/orca · error

diagnostic upload endpoint is not configured for this build

Error message

diagnostic upload endpoint is not configured for this build

What it means

Thrown by the `diagnostics:deleteBundle` IPC handler when `resolveDiagnosticTokenEndpoint()` returns null. Deleting an already-uploaded bundle by ticket ID requires the same token endpoint as uploading, so the resolver failure is identical in cause to 1103: an official build missing the CI-substituted `ORCA_DIAGNOSTICS_TOKEN_URL`, or a dev build missing both the env var and the build constant.

Source

Thrown at src/main/ipc/diagnostics.ts:304

      throw new Error('could not open review file')
    }
    const pending = pendingBundles.get(bundleSubmissionId as string)
    if (pending) {
      pending.previewOpened = true
    }
  })

  ipcMain.handle('diagnostics:discardBundlePreview', (_event, bundleSubmissionId: unknown) => {
    discardPendingBundle(bundleSubmissionId)
  })

  ipcMain.handle('diagnostics:deleteBundle', async (_event, ticketId: unknown): Promise<void> => {
    if (!isTicketId(ticketId)) {
      throw new Error('ticketId has invalid format')
    }
    const tokenEndpoint = resolveDiagnosticTokenEndpoint()
    if (!tokenEndpoint) {
      throw new Error('diagnostic upload endpoint is not configured for this build')
    }
    await deleteDiagnosticBundle({ tokenEndpoint, ticketId })
  })
}

View on GitHub (pinned to 1136503c6a)

Solutions

  1. Set `ORCA_DIAGNOSTICS_TOKEN_URL` for dev builds before launching.
  2. Fix the release CI to inject the token URL constant for official builds.
  3. Gate the delete-by-ticket UI on endpoint availability so the action is not offered when it cannot succeed.

Example fix

// before
await ipcRenderer.invoke('diagnostics:deleteBundle', ticketId)

// after
// only show 'Delete uploaded bundle' when the build can reach the endpoint
if (endpointConfigured) {
  await ipcRenderer.invoke('diagnostics:deleteBundle', ticketId)
} else {
  showNotice('Bundle deletion needs a configured diagnostics endpoint for this build.')
}
Defensive patterns

Strategy: validation

Validate before calling

// Gate the delete-by-ticket UI on endpoint availability, same as upload.
if (!buildHasDiagnosticEndpoint()) {
  showNotice('Bundle deletion requires a configured diagnostics endpoint.')
  return
}
await ipcRenderer.invoke('diagnostics:deleteBundle', ticketId)

Type guard

function isTicketId(v: unknown): v is string {
  return typeof v === 'string' && /^[A-Za-z0-9_-]{1,128}$/.test(v)
}

Try / catch

try {
  await ipcRenderer.invoke('diagnostics:deleteBundle', ticketId)
} catch (e) {
  if (e instanceof Error && e.message === 'diagnostic upload endpoint is not configured for this build') {
    showBuildConfigNotice()
    return
  }
  throw e
}

Prevention

When it happens

Trigger: Invoking `ipcRenderer.invoke('diagnostics:deleteBundle', ticketId)` (after `isTicketId(ticketId)` passes) on a build where `resolveDiagnosticTokenEndpoint()` is null.

Common situations: Dev build without `ORCA_DIAGNOSTICS_TOKEN_URL`; official build whose CI skipped token-URL substitution; attempting to delete a bundle from a build that never could have uploaded it.

Related errors


AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12). Data as JSON: /api/errors/51c1c9d281c14213. Report an issue: GitHub.