Skip to content

Commit 9571af8

Browse files
Fix response history limit ordering
Retain the newest history items when local response providers apply a limit, and add regression coverage for both in-memory and file-backed storage.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent b56dd0b commit 9571af8

5 files changed

Lines changed: 5 additions & 4 deletions

File tree

‎sdk/agentserver/azure-ai-agentserver-responses/CHANGELOG.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
### Bugs Fixed
2323

2424
- Restored JSON-string encoding for response-level `internal_metadata` so resilient response checkpoints round-trip through Foundry storage.
25+
- Fixed local response providers to retain the newest conversation history items when applying the history limit.
2526

2627
### Other Changes
2728

‎sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_file.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,7 @@ async def get_history_item_ids(
579579

580580
if limit <= 0:
581581
return []
582-
return resolved[:limit]
582+
return resolved[-limit:]
583583

584584
# ------------------------------------------------------------------
585585
# Internal helpers (must be called with self._lock held)

‎sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_memory.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ async def get_history_item_ids(
325325

326326
if limit <= 0:
327327
return []
328-
return resolved[:limit]
328+
return resolved[-limit:]
329329

330330
async def create_execution(self, execution: ResponseExecution, *, ttl_seconds: int | None = None) -> None:
331331
"""Create a new execution and replay container for ``execution.response_id``.

‎sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_file_response_store_parity.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ async def test_history_respects_limit(tmp_path: Path) -> None:
327327
history_item_ids=["hist1", "hist2"],
328328
)
329329
ids = await provider.get_history_item_ids("r_prev", None, limit=3)
330-
assert ids == ["hist1", "hist2", "in1"]
330+
assert ids == ["out1", "out2", "out3"]
331331
# Non-positive limit returns empty.
332332
ids_zero = await provider.get_history_item_ids("r_prev", None, limit=0)
333333
assert ids_zero == []

‎sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_in_memory_provider_crud.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ def test_history__respects_limit() -> None:
373373
asyncio.run(provider.create_response(_response("resp_lim"), many_inputs, None))
374374

375375
ids = asyncio.run(provider.get_history_item_ids("resp_lim", None, 3))
376-
assert len(ids) == 3
376+
assert ids == ["in_lim_7", "in_lim_8", "in_lim_9"]
377377

378378

379379
def test_history__zero_limit_returns_empty() -> None:

0 commit comments

Comments
 (0)