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
- 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.