{"record":{"id":"45cba8107a826c97","repo":"stablyai/orca","slug":"invalid-argument-45cba8","errorCode":"invalid_argument","errorMessage":"missing ${key}","messagePattern":"missing (.+?)","errorType":"validation","errorClass":"RuntimeClientError","httpStatus":null,"severity":"error","filePath":"src/main/computer/desktop-script-provider-params.ts","lineNumber":6,"sourceCode":"import { RuntimeClientError } from './runtime-client-error'\n\nexport function stringParam(params: Record<string, unknown>, key: string): string {\n  const value = params[key]\n  if (typeof value !== 'string' || value.length === 0) {\n    throw new RuntimeClientError('invalid_argument', `missing ${key}`)\n  }\n  return value\n}\n\nexport function optionalStringParam(\n  params: Record<string, unknown>,\n  key: string\n): string | undefined {\n  const value = params[key]\n  return typeof value === 'string' ? value : undefined\n}\n\nexport function optionalNumberParam(\n  params: Record<string, unknown>,\n  key: string\n): number | undefined {\n  const value = params[key]\n  return typeof value === 'number' && Number.isFinite(value) ? value : undefined","sourceCodeStart":1,"sourceCodeEnd":24,"githubUrl":"https://github.com/stablyai/orca/blob/1136503c6a231a16dce8f921f6fadb63d181e8db/src/main/computer/desktop-script-provider-params.ts#L1-L24","documentation":"stringParam (in desktop-script-provider-params.ts) is the top-level required-string guard used by snapshot and listWindows for the `app` field. It throws invalid_argument: missing ${key} when the value is absent, not a string, or empty. Every snapshot and window-list call must name a target app.","triggerScenarios":"Calling snapshot({ app: '' }), snapshot({}), or listWindows({ app: 123 }).","commonSituations":"Caller omits app; passes an empty app name; passes a non-string app identifier.","solutions":["Provide a non-empty app name (bundle id or process name).","Use listApps() to discover valid app names before targeting.","Validate the app field is a non-empty string at the call site."],"exampleFix":"// before\nawait client.snapshot({ app: '' })\n// after\nawait client.snapshot({ app: 'Safari' })","handlingStrategy":"validation","validationCode":"if (typeof params.app !== 'string' || params.app.length === 0) {\n  throw new Error('app is required and must be a non-empty string')\n}","typeGuard":"const isAppName = (v: unknown): v is string => typeof v === 'string' && v.length > 0","tryCatchPattern":null,"preventionTips":["Always pass a non-empty app name.","Resolve app names via listApps() before targeting."],"tags":["invalid-argument","validation","app-name"],"backgroundTag":null,"analyzedSha":"1136503c6a231a16dce8f921f6fadb63d181e8db","analyzedAt":"2026-08-12T23:15:58.167Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}