Is your feature request related to a problem? Please describe.
Two related pagination issues affect developer experience:
get_last_k_turns(k=200) - Requesting 200 turns only fetches 100 events (default max_results), so users don't get the expected number of turns. k and max_results are independent parameters, which is unintuitive.
# User expects 200 turns, but only gets turns found within 100 events
turns = client.get_last_k_turns(k=200) # max_results=100 by default
list_messages(limit=None) - Returns 100 messages instead of all messages. Users must guess a "large enough" number to fetch complete history.
# Expected: all messages, Actual: 100 messages
messages = session_repository.list_messages()
# Current workaround - arbitrary large number
messages = session_repository.list_messages(limit=10000)
Describe the solution you'd like
get_last_k_turns(k) in memory/session.py, memory/client.py: Auto-calculate max_results based on k if not explicitly specified
def get_last_k_turns(self, ..., k: int = 5, max_results: Optional[int] = None):
if max_results is None:
max_results = max(100, k * 3) # estimate ~2-3 events per turn
events = self.list_events(max_results=max_results)
...
list_messages() in memory/integrations/strands/session_manager.py: Add fetch_all parameter for explicit intent.
messages = list_messages() # 100 (default, backward compatible)
messages = list_messages(limit=500) # 500
messages = list_messages(fetch_all=True) # all messages
Describe alternatives you've considered
- Change
limit=None to mean "fetch all" - Follows common API conventions, but may break existing code that relies on current default behavior (max 100).
- Increase default
max_results to a larger value (e.g., 1000) - Simple but doesn't solve the core issue and may cause performance problems.
- Document current behavior more clearly - Doesn't improve DevX, just shifts burden to users.
Additional context
Use cases affected:
- Session restoration requiring complete conversation history
- Context compaction / summarization
- Conversation export
- Analytics
Is your feature request related to a problem? Please describe.
Two related pagination issues affect developer experience:
get_last_k_turns(k=200)- Requesting 200 turns only fetches 100 events (defaultmax_results), so users don't get the expected number of turns.kandmax_resultsare independent parameters, which is unintuitive.list_messages(limit=None)- Returns 100 messages instead of all messages. Users must guess a "large enough" number to fetch complete history.Describe the solution you'd like
get_last_k_turns(k)inmemory/session.py,memory/client.py: Auto-calculatemax_resultsbased onkif not explicitly specifiedlist_messages()inmemory/integrations/strands/session_manager.py: Addfetch_allparameter for explicit intent.Describe alternatives you've considered
limit=Noneto mean "fetch all" - Follows common API conventions, but may break existing code that relies on current default behavior (max 100).max_resultsto a larger value (e.g., 1000) - Simple but doesn't solve the core issue and may cause performance problems.Additional context
Use cases affected: