stablyai/orca · error · Error

response.error.message

Error message

response.error.message

What it means

The github.workItem RPC returned an RpcFailure (response.ok === false) when looking up a single GitHub issue or PR by repo-scoped number. The call passes { repo: 'id:<repoId>', number } and expects a GitHubWorkItem or null on success. A failure means the host could not reach GitHub or the repo integration is misconfigured.

Source

Thrown at mobile/src/tasks/smart-source-paste-intent.ts:137

        resolved = null
      }
      cache.set(repo.id, resolved ?? null)
    }
    if (slugsEqual(resolved ?? null, slug)) {
      return repo
    }
  }
  return null
}

export async function lookupGitHubItemByNumber(
  client: RpcClient,
  repoId: string,
  number: number
): Promise<GitHubWorkItem | null> {
  const response = await client.sendRequest('github.workItem', { repo: `id:${repoId}`, number })
  if (!response.ok) {
    throw new Error(response.error.message)
  }
  const item = (response as RpcSuccess).result as GitHubWorkItem | null
  return item ? { ...item, repoId } : null
}

export async function lookupGitHubItemByOwnerRepo(
  client: RpcClient,
  repoId: string,
  slug: RepoSlug,
  number: number,
  type: 'issue' | 'pr'
): Promise<GitHubWorkItem | null> {
  const response = await client.sendRequest('github.workItemByOwnerRepo', {
    repo: `id:${repoId}`,
    owner: slug.owner,
    ownerRepo: slug.repo,
    ...(slug.host ? { host: slug.host } : {}),
    number,

View on GitHub (pinned to 1136503c6a)

Solutions

  1. Check response.error.code: 'method_not_found' → degrade to the search-based path; 'unauthorized' → re-pair.
  2. Catch and return null (item not resolvable) so the paste flow falls back to a search.
  3. Verify the repo has a GitHub upstream configured via repo metadata before calling.
  4. Retry once after reconnect for transient transport errors.

Example fix

// before
if (!response.ok) {
  throw new Error(response.error.message)
}

// after — degrade to null so the picker falls back to search
if (!response.ok) {
  if (response.error.code === 'method_not_found' || response.error.code === 'not_found') {
    return null
  }
  throw new Error(response.error.message)
}
Defensive patterns

Strategy: fallback

Validate before calling

// Check GitHub is configured before lookup
const hasGithub = await client.sendRequest('github.repoSlug', { repo: `id:${repoId}` })
if (!hasGithub.ok && hasGithub.error.code === 'method_not_found') {
  return null // GitHub not available
}

Type guard

function isRpcFailure(r: RpcResponse): r is RpcFailure {
  return !r.ok
}

Try / catch

try {
  const item = await lookupGitHubItemByNumber(client, repoId, number)
} catch (e) {
  // Fall back to search
  return null
}

Prevention

When it happens

Trigger: GitHub integration not configured for the repo on the host; the repo's GitHub token expired or was revoked; the host returned 'method_not_found' (older runtime without github.workItem); a transport-level failure mid-call.

Common situations: User pastes a #123 number into the smart source picker for a repo whose GitHub remote isn't linked on the host; host's GitHub OAuth token scope was reduced; mixed mobile/desktop versions; relay disconnect during lookup.

Related errors


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