diff --git a/sdk/agentserver/azure-ai-agentserver-responses/CHANGELOG.md b/sdk/agentserver/azure-ai-agentserver-responses/CHANGELOG.md index 312ac5bb7990..4ae7f4fa224b 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/CHANGELOG.md +++ b/sdk/agentserver/azure-ai-agentserver-responses/CHANGELOG.md @@ -1,6 +1,10 @@ # Release History -## 2.1.0b1 (2026-08-11) +## 2.1.0b1 (2026-08-13) + +### Bugs Fixed + +- `get_history_item_ids` on the in-memory and file stores now keeps the newest item IDs when applying `limit`. (#48514) ### Breaking Changes diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_file.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_file.py index 1ff434cb118a..6069faea9044 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_file.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_file.py @@ -579,7 +579,8 @@ async def get_history_item_ids( if limit <= 0: return [] - return resolved[:limit] + # Keep the most recent N history items (drop oldest when over limit). + return resolved[-limit:] # ------------------------------------------------------------------ # Internal helpers (must be called with self._lock held) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_memory.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_memory.py index 941be36ee682..97dec94f1d2f 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_memory.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_memory.py @@ -325,7 +325,8 @@ async def get_history_item_ids( if limit <= 0: return [] - return resolved[:limit] + # Keep the most recent N history items (drop oldest when over limit). + return resolved[-limit:] async def create_execution(self, execution: ResponseExecution, *, ttl_seconds: int | None = None) -> None: """Create a new execution and replay container for ``execution.response_id``. diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_file_response_store_parity.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_file_response_store_parity.py index 89a94485b6f6..0779ed7cf260 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_file_response_store_parity.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_file_response_store_parity.py @@ -327,7 +327,8 @@ async def test_history_respects_limit(tmp_path: Path) -> None: history_item_ids=["hist1", "hist2"], ) ids = await provider.get_history_item_ids("r_prev", None, limit=3) - assert ids == ["hist1", "hist2", "in1"] + # Chronological order is oldest-first; truncation must keep the newest IDs. + assert ids == ["out1", "out2", "out3"] # Non-positive limit returns empty. ids_zero = await provider.get_history_item_ids("r_prev", None, limit=0) assert ids_zero == [] diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_in_memory_provider_crud.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_in_memory_provider_crud.py index 3915baeb02fd..9b36e9b0f77a 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_in_memory_provider_crud.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_in_memory_provider_crud.py @@ -374,6 +374,8 @@ def test_history__respects_limit() -> None: ids = asyncio.run(provider.get_history_item_ids("resp_lim", None, 3)) assert len(ids) == 3 + # Chronological order is oldest-first; truncation must keep the newest IDs. + assert ids == ["in_lim_7", "in_lim_8", "in_lim_9"] def test_history__zero_limit_returns_empty() -> None: