fix(core): descriptive error for empty message_ids instead of IndexError (#9464)

fix(core): replace IndexError with descriptive error for empty message_ids

Agent with no in-context messages (empty/None message_ids) would crash
with a cryptic IndexError on message_ids[0]. Now raises a clear
LettaError explaining the system message was not initialized.

Datadog: https://us5.datadoghq.com/error-tracking/issue/6c061c28-0830-11f1-b060-da7ad0900000

🐾 Generated with [Letta Code](https://letta.com)

Co-authored-by: Letta <noreply@letta.com>
This commit is contained in:
Kian Jones
2026-02-12 17:02:45 -08:00
committed by Caren Thomas
parent 80f34f134d
commit f55ff3a822

View File

@@ -4,7 +4,7 @@ import xml.etree.ElementTree as ET
from typing import Any, Dict, List, Optional, Tuple
from uuid import UUID, uuid4
from letta.errors import PendingApprovalError
from letta.errors import LettaError, PendingApprovalError
from letta.helpers import ToolRulesSolver
from letta.helpers.datetime_helpers import get_utc_time
from letta.log import get_logger
@@ -233,6 +233,11 @@ async def _prepare_in_context_messages_no_persist_async(
current_in_context_messages = [system_message]
else:
# Default mode: load messages from agent_state.message_ids
if not agent_state.message_ids:
raise LettaError(
message=f"Agent {agent_state.id} has no in-context messages. "
"This typically means the agent's system message was not initialized correctly.",
)
if agent_state.message_buffer_autoclear:
# If autoclear is enabled, only include the most recent system message (usually at index 0)
current_in_context_messages = [