{"record":{"id":"e420f837f6bc777e","repo":"tinyhumansai/openhuman","slug":"voice-not-compiled","errorCode":"voice_not_compiled","errorMessage":"Voice transcription is unavailable in this build — the voice module was not compiled into the app. Update OpenHuman to the latest version; restarting will not help.","messagePattern":"Voice transcription is unavailable in this build — the voice module was not compiled into the app\\. Update OpenHuman to the latest version; restarting will not help\\.","errorType":"error_code","errorClass":"VoiceNotCompiledError","httpStatus":null,"severity":"error","filePath":"app/src/features/human/voice/sttClient.ts","lineNumber":122,"sourceCode":"\n  const rpcStart = Date.now();\n  let result: CloudTranscribeResult;\n  try {\n    result = await callCoreRpc<CloudTranscribeResult>({\n      method: 'openhuman.voice_cloud_transcribe',\n      params,\n    });\n  } catch (err) {\n    // An \"unknown method\" error means the core serving this app was built\n    // without the `voice` Cargo feature, so the `openhuman.voice_*`\n    // controllers were never registered (#4901). This is a compile-time\n    // property of the binary — restarting cannot change it, which is why the\n    // old #1289-era \"restart to pick up the latest core sidecar\" copy was\n    // unactionable (and the sidecar itself is gone since #1061).\n    const msg = err instanceof Error ? err.message : String(err);\n    if (msg.includes('unknown method')) {\n      sttLog('[voice-stt] transcribe rpc: voice domain absent from core build: %s', msg);\n      throw new VoiceNotCompiledError();\n    }\n    sttLog('transcribe rpc failed (passthrough): %O', err);\n    throw err;\n  }\n  const text = result?.text?.trim() ?? '';\n  sttLog('transcribed chars=%d rpc_ms=%d', text.length, Math.round(Date.now() - rpcStart));\n  return text;\n}\n\ninterface FactoryTranscribeOptions {\n  /** BCP-47 language hint, e.g. `'en'`. */\n  language?: string;\n  /** Override the server-side provider resolution: `'cloud'` for the backend\n   *  proxy, or a `voice_providers` slug. When unset the core resolves\n   *  `voice_server.stt_engine`. */\n  provider?: string;\n  /** Model id for the selected engine (e.g. `'whisper-1'`, `'scribe_v1'`). */\n  model?: string;","sourceCodeStart":104,"sourceCodeEnd":140,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/a221052e0df5b1f7598fceba7329fd1af95d6699/app/src/features/human/voice/sttClient.ts#L104-L140","documentation":"Argument-loop error from `openhuman memory graph` (alias `graph-query`). Accepted tokens are only `--namespace/-n`, `--subject`, `--predicate` (each with a value), `-v/--verbose`, `-h/--help`. Anything else — unknown flag or positional — aborts. Note a dangling `--subject`/`--predicate` at end of argv produces the separate `missing value for {flag}` error, not this one.","triggerScenarios":"`openhuman memory graph --object x` (typo for --subject); `openhuman memory graph mynamespace` (positional namespace not accepted); `openhuman memory graph --json`.","commonSituations":"Confusing subject/predicate/object vocabulary from RDF tooling; assuming positional forms; automation written against an older CLI revision.","solutions":["Use exactly the three value flags: --namespace, --subject, --predicate","Spell the flags precisely (no --object; the third slot is --predicate)","Run `openhuman memory graph --help` to confirm the usage line"],"exampleFix":"# before\nopenhuman memory graph --object \"doc:1\"\n# after\nopenhuman memory graph --subject \"doc:1\"","handlingStrategy":"validation","validationCode":"# bash: graph accepts only --namespace/--subject/--predicate (+values), -v, -h\nprev=''\nfor a in \"$@\"; do\n  case \"$a\" in\n    --namespace|-n|--subject|--predicate|-v|--verbose|-h|--help) ;;\n    -*) echo \"unknown graph arg: $a\" >&2; exit 2 ;;\n    *) [ -n \"$prev\" ] || { echo \"positional not accepted: $a\" >&2; exit 2; } ;;\n  esac\n  prev=\"$a\"\ndone\nopenhuman memory graph \"$@\"","typeGuard":null,"tryCatchPattern":"if ! out=$(openhuman memory graph \"$@\" 2>&1); then\n  case \"$out\" in *\"unknown graph arg\"*) openhuman memory graph --help >&2; exit 2;; esac\n  printf '%s\\n' \"$out\" >&2; exit 1\nfi","preventionTips":["Remember the triple is subject/predicate only — there is no --object","Namespace is a flag, never a positional"],"tags":["cli","usage","argument-parsing","memory","graph"],"backgroundTag":null,"analyzedSha":"a221052e0df5b1f7598fceba7329fd1af95d6699","analyzedAt":"2026-08-16T12:47:06.542Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}