{"record":{"id":"a5b87d71d4cfa9ca","repo":"stablyai/orca","slug":"unsupported-capability-a5b87d","errorCode":"unsupported_capability","errorMessage":"{computerProviderUnavailableMessage(process.platform)}","messagePattern":"\\{computerProviderUnavailableMessage\\(process\\.platform\\)\\}","errorType":"error_code","errorClass":"RuntimeClientError","httpStatus":null,"severity":"error","filePath":"src/main/computer/sidecar-entry.ts","lineNumber":43,"sourceCode":"\nasync function handleMessage(message: unknown): Promise<void> {\n  if (!isRequest(message)) {\n    return\n  }\n\n  try {\n    const result = await dispatch(message.method, message.params ?? {})\n    process.send?.({ id: message.id, ok: true, result })\n  } catch (error) {\n    const mapped = errorToResponse(error)\n    process.send?.({ id: message.id, ok: false, error: mapped })\n  }\n}\n\nasync function dispatch(method: string, params: Record<string, unknown>): Promise<unknown> {\n  const provider = currentComputerProvider()\n  if (!provider) {\n    throw new RuntimeClientError(\n      'unsupported_capability',\n      computerProviderUnavailableMessage(process.platform)\n    )\n  }\n\n  switch (method) {\n    case 'capabilities': {\n      return await provider.capabilities()\n    }\n    case 'listApps': {\n      return await provider.listApps()\n    }\n    case 'listWindows': {\n      return await provider.listWindows(params)\n    }\n    case 'getAppState': {\n      return await provider.snapshot(params)\n    }","sourceCodeStart":25,"sourceCodeEnd":61,"githubUrl":"https://github.com/stablyai/orca/blob/1136503c6a231a16dce8f921f6fadb63d181e8db/src/main/computer/sidecar-entry.ts#L25-L61","documentation":"sidecar-entry.ts dispatch is the function the forked child runs. currentComputerProvider() returns the platform provider registered by computer-provider-lifecycle; if none registered, dispatch throws 'unsupported_capability' with computerProviderUnavailableMessage(platform). On darwin that message explains the helper .app was not found or macOS is unsupported; on linux/win32 it says the platform runtime file is missing.","triggerScenarios":"The sidecar child was forked before any provider was registered (lifecycle race), the native helper binary/platform runtime file is missing, or the platform is unsupported and no provider exists at all.","commonSituations":"First computer-use call before provider registration completed; a packaged build missing the platform runtime file in app.asar.unpacked; running on an OS for which no provider ships (e.g. freebsd).","solutions":["On darwin: run `pnpm build:computer-macos` (or reinstall) so the macOS provider registers; see also error 960/961.","On linux/win32: ensure the platform runtime file is present in the packaged tree (app.asar.unpacked/out) — reinstall if missing.","Gate computer-use in the UI on whether a provider is available (call callComputerSidecarCapabilities and handle unsupported_capability).","If you control the lifecycle, await provider registration before forking the sidecar."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// call from the parent before any computer-use action\ntry {\n  const caps = await callComputerSidecarCapabilities()\n  // provider is registered; proceed\n} catch (e) {\n  if (e instanceof RuntimeClientError && e.code === 'unsupported_capability') {\n    // no provider for this platform; surface setup hint\n  } else throw e\n}","typeGuard":"import { RuntimeClientError } from './runtime-client-error'\n\nfunction isProviderUnavailable(e: unknown): e is RuntimeClientError {\n  return e instanceof RuntimeClientError && e.code === 'unsupported_capability'\n}","tryCatchPattern":"try {\n  await provider.dispatch(method, params)\n} catch (e) {\n  if (isProviderUnavailable(e)) {\n    // platform has no provider; tell the user to install/build the runtime\n  } else throw e\n}","preventionTips":["Build/install the platform runtime file (helper .app on macOS) before enabling computer-use.","Gate the UI affordance on capabilities() so users on unsupported platforms never trigger this.","In dev, ensure provider lifecycle registration completes before forking the sidecar."],"tags":["computer-use","sidecar","provider","platform","unsupported-capability"],"backgroundTag":null,"analyzedSha":"1136503c6a231a16dce8f921f6fadb63d181e8db","analyzedAt":"2026-08-12T23:15:58.167Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}