{"record":{"id":"83f3243bc4e73575","repo":"JuliusBrussee/caveman","slug":"recordoutcome-no-global-fetch-pass-client-fetch","errorCode":null,"errorMessage":"recordOutcome: no global fetch; pass client.fetch","messagePattern":"recordOutcome: no global fetch; pass client\\.fetch","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/mastra/src/index.ts","lineNumber":723,"sourceCode":"  );\n\n  const text = await response.text();\n  const ok = response.ok ?? (response.status >= 200 && response.status < 300);\n  if (!ok) throw new CavemanOutcomeError(response.status, text);\n\n  let parsed: { data?: unknown; created?: unknown };\n  try {\n    parsed = JSON.parse(text) as { data?: unknown; created?: unknown };\n  } catch {\n    throw new CavemanOutcomeError(response.status, text);\n  }\n  return { status: response.status, created: parsed.created === true, record: parsed.data ?? null };\n}\n\nfunction globalFetch(url: string, init: RequestInitLike): Promise<ResponseLike> {\n  const fetchImpl = (globalThis as { fetch?: (u: string, i: unknown) => Promise<ResponseLike> }).fetch;\n  if (typeof fetchImpl !== \"function\") {\n    throw new Error(\"recordOutcome: no global fetch; pass client.fetch\");\n  }\n  return fetchImpl(url, init);\n}\n\n/**\n * JSON with object keys sorted at every level. Throws on anything that is not a\n * plain object, array, string, finite number, boolean, or null — a Date, a Map,\n * or a class instance would serialize into something the caller did not mean,\n * and the record's digest is its identity.\n */\nexport function stableStringify(value: unknown, path = \"value\"): string {\n  if (value === null) return \"null\";\n  switch (typeof value) {\n    case \"string\":\n      return JSON.stringify(value);\n    case \"boolean\":\n      return value ? \"true\" : \"false\";\n    case \"number\":","sourceCodeStart":705,"sourceCodeEnd":741,"githubUrl":"https://github.com/JuliusBrussee/caveman/blob/27d5a3981a347890211bb1bf2439e5c821a63bc9/packages/mastra/src/index.ts#L705-L741","documentation":"Error \"recordOutcome: no global fetch; pass client.fetch\" thrown in JuliusBrussee/caveman.","triggerScenarios":"Thrown at packages/mastra/src/index.ts:723 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide client.fetch or run in an environment with global fetch."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"27d5a3981a347890211bb1bf2439e5c821a63bc9","analyzedAt":"2026-08-15T09:26:11.751Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}