Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 13 additions & 17 deletions src/bedrock_agentcore/memory/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,7 @@ def list_events(
"actorId": actor_id,
"sessionId": session_id,
"maxResults": min(100, max_results - len(all_events)),
"includePayloads": include_payload,
}

if next_token:
Expand Down Expand Up @@ -954,31 +955,26 @@ def get_last_k_turns(
turns = []
current_turn = []

# Process events in chronological order
for _, event in enumerate(events):
if "payload" in event and event["payload"]:
for payload_item in event["payload"]:
if "conversational" in payload_item:
role = payload_item["conversational"].get("role")
for event in events:
if len(turns) >= k:
break # Only need last K turns
for payload_item in event.get("payload", []):
if "conversational" in payload_item:
role = payload_item["conversational"].get("role")

# Start a new turn when we see a USER message and already have messages
if role == Role.USER.value and current_turn:
turns.append(current_turn)
current_turn = []
# Start new turn on USER message
if role == Role.USER.value and current_turn:
turns.append(current_turn)
current_turn = []

current_turn.append(payload_item["conversational"])
current_turn.append(payload_item["conversational"])

# Don't forget the last turn
if current_turn:
turns.append(current_turn)

# Return the last k turns
if len(turns) > k:
result = turns[-k:] # Get last k turns
else:
result = turns

return result
return turns[:k] if len(turns) > k else turns

except ClientError as e:
logger.error("Failed to get last K turns: %s", e)
Expand Down
Loading