Skip to content
1 change: 1 addition & 0 deletions src/bedrock_agentcore/memory/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -860,6 +860,7 @@ def list_events(
all_events.extend(events)

next_token = response.get("nextToken")
# Break if: no more pages or reached max
if not next_token or len(all_events) >= max_results:
break

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def events_to_messages(events: list[dict[str, Any]]) -> list[SessionMessage]:
list[SessionMessage]: list of SessionMessage objects.
"""
messages = []
for event in events:
for event in reversed(events):
for payload_item in event.get("payload", []):
if "conversational" in payload_item:
conv = payload_item["conversational"]
Expand All @@ -93,7 +93,7 @@ def events_to_messages(events: list[dict[str, Any]]) -> list[SessionMessage]:
logger.error("This is not a SessionMessage but just a blob message. Ignoring")
except (json.JSONDecodeError, ValueError):
logger.error("Failed to parse blob content: %s", payload_item)
return list(reversed(messages))
return messages

@staticmethod
def total_length(message: tuple[str, str]) -> int:
Expand Down
3 changes: 3 additions & 0 deletions src/bedrock_agentcore/memory/integrations/strands/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,12 @@ class AgentCoreMemoryConfig(BaseModel):
session_id: Required unique ID for the session
actor_id: Required unique ID for the agent instance/user
retrieval_config: Optional dictionary mapping namespaces to retrieval configurations
batch_size: Number of messages to batch before sending to AgentCore Memory.
Default of 1 means immediate sending (no batching). Max 100.
"""

memory_id: str = Field(min_length=1)
session_id: str = Field(min_length=1)
actor_id: str = Field(min_length=1)
retrieval_config: Optional[Dict[str, RetrievalConfig]] = None
batch_size: int = Field(default=1, ge=1, le=100)
Loading
Loading