Skip to content

Commit 2f2f112

Browse files
committed
Make sure default middlewares are always ordered in the same order
1 parent 3abde98 commit 2f2f112

2 files changed

Lines changed: 12 additions & 2 deletions

File tree

splunklib/ai/base_agent.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,9 @@ def __init__(
9494
]
9595

9696
self._middleware = (
97-
*{m for m in predefined_before if type(m) not in user_middleware_types},
97+
*[m for m in predefined_before if type(m) not in user_middleware_types],
9898
*user_middleware,
99-
*{m for m in predefined_after if type(m) not in user_middleware_types},
99+
*[m for m in predefined_after if type(m) not in user_middleware_types],
100100
)
101101

102102
self._trace_id = secrets.token_hex(16) # 32 Hex characters

tests/unit/ai/test_default_limits.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
TimeoutLimitMiddleware,
2727
TokenLimitExceededException,
2828
TokenLimitMiddleware,
29+
StructuredOutputRetryLimitMiddleware,
2930
)
3031
from splunklib.ai.messages import AIMessage, AgentResponse
3132
from splunklib.ai.middleware import AgentMiddleware, AgentRequest, AgentState, ModelRequest, ModelResponse
@@ -173,3 +174,12 @@ async def test_raises_when_steps_in_request_reach_limit(self) -> None:
173174
await mw.model_middleware(_make_model_request(total_steps=2), _noop_model_handler)
174175
with self.assertRaises(StepsLimitExceededException):
175176
await mw.model_middleware(_make_model_request(total_steps=3), _noop_model_handler)
177+
178+
179+
def test_default_middleware() -> None:
180+
agent = _make_agent()
181+
mw = list(agent.middleware or [])
182+
assert isinstance(mw[0], StructuredOutputRetryLimitMiddleware)
183+
assert isinstance(mw[1], TokenLimitMiddleware)
184+
assert isinstance(mw[2], StepLimitMiddleware)
185+
assert isinstance(mw[3], TimeoutLimitMiddleware)

0 commit comments

Comments
 (0)