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

  1. Create conversations via createConversation() only
  2. Avoid copying/spreading Conversation instances
  3. 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.