JuliusBrussee/caveman · error · CavemanOutcomeError

recordOutcome: control API responded ${status}: ${body}

Error message

recordOutcome: control API responded ${status}: ${body}

What it means

Error "recordOutcome: control API responded ${status}: ${body}" thrown in JuliusBrussee/caveman.

Source

Thrown at packages/mastra/src/index.ts:709

    observed_outcome: `${contract} ${stableStringify(input.values, "values")}`,
    confidence,
    evidence_refs: evidenceRefs,
    occurred_at: occurredAt.toISOString(),
  });

  const doFetch: FetchLike = client.fetch ?? ((url, init) => globalFetch(url, init));
  const response = await doFetch(
    `${controlApiUrl}/api/v1/projects/${encodeURIComponent(projectId)}/outcomes`,
    {
      method: "POST",
      headers: { "content-type": "application/json", authorization: `Bearer ${token}` },
      body,
    },
  );

  const text = await response.text();
  const ok = response.ok ?? (response.status >= 200 && response.status < 300);
  if (!ok) throw new CavemanOutcomeError(response.status, text);

  let parsed: { data?: unknown; created?: unknown };
  try {
    parsed = JSON.parse(text) as { data?: unknown; created?: unknown };
  } catch {
    throw new CavemanOutcomeError(response.status, text);
  }
  return { status: response.status, created: parsed.created === true, record: parsed.data ?? null };
}

function globalFetch(url: string, init: RequestInitLike): Promise<ResponseLike> {
  const fetchImpl = (globalThis as { fetch?: (u: string, i: unknown) => Promise<ResponseLike> }).fetch;
  if (typeof fetchImpl !== "function") {
    throw new Error("recordOutcome: no global fetch; pass client.fetch");
  }
  return fetchImpl(url, init);
}

View on GitHub (pinned to 27d5a3981a)

Solutions

  1. Check the control API status and body; fix the request or credentials and retry.

When it happens

Trigger: Thrown at packages/mastra/src/index.ts:709 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of JuliusBrussee/caveman@27d5a3981a (2026-08-15). Data as JSON: /api/errors/4f125d64953a830d. Report an issue: GitHub.