JuliusBrussee/caveman · error · Error
cave_conversation_invalid
cave_conversation_invalid
Error message
cave_conversation_invalid
What it means
Internal invariant guard in beginConversation: no session state is registered for the Conversation owner (it was never created through the runtime's own path or was already torn down). This is a runtime bookkeeping failure, not a user-input validation error.
Source
Thrown at packages/agent/src/runtime.ts:304
export type ConversationState = Conversation;
export function createConversation(): Conversation {
return new Conversation();
}
type ConversationTransaction = {
readonly owner: Conversation;
readonly sessionId: string;
messages: AgentMessage[];
fingerprint: string | undefined;
cachePrefixDigest: string | undefined;
providerFrozen: ProviderFrozenView | undefined;
originalFrozen: ProviderFrozenView | undefined;
};
function beginConversation(owner: Conversation): ConversationTransaction {
const state = conversationStates.get(owner);
if (!state) throw new Error("cave_conversation_invalid");
if (state.busy) throw new Error("cave_conversation_in_use");
const transaction: ConversationTransaction = {
owner,
sessionId: state.sessionId,
messages: structuredClone(state.messages),
fingerprint: state.fingerprint,
cachePrefixDigest: state.cachePrefixDigest,
providerFrozen: state.providerFrozen === undefined
? undefined
: structuredClone(state.providerFrozen),
originalFrozen: state.originalFrozen === undefined
? undefined
: structuredClone(state.originalFrozen),
};
state.busy = true;
return transaction;
}
View on GitHub (pinned to 766dce6b13)
Solutions
- Create conversations via createConversation() only
- Avoid copying/spreading Conversation instances
- If serializing sessions, store the sessionId and re-open a fresh Conversation
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at packages/agent/src/runtime.ts:304 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of JuliusBrussee/caveman@766dce6b13 (2026-08-18).
Data as JSON: /api/errors/a2bad5059838c0fc.
Report an issue: GitHub.