Minimal ToolManager stub for bridge tests.
| 23 | |
| 24 | |
| 25 | class FakeToolManager: |
| 26 | """Minimal ToolManager stub for bridge tests.""" |
| 27 | |
| 28 | def __init__(self): |
| 29 | self.executed_tools: list[tuple[str, dict, str | None]] = [] |
| 30 | self.read_resources: list[tuple[str, str | None]] = [] |
| 31 | self._next_result = FakeToolResult(True, result="ok") |
| 32 | self._next_resource = { |
| 33 | "contents": [{"uri": "ui://test", "text": "<html></html>"}] |
| 34 | } |
| 35 | self._raise_on_execute: Exception | None = None |
| 36 | self._execute_delay: float = 0 |
| 37 | |
| 38 | async def execute_tool(self, name, arguments, namespace=None): |
| 39 | if self._execute_delay: |
| 40 | await asyncio.sleep(self._execute_delay) |
| 41 | self.executed_tools.append((name, arguments, namespace)) |
| 42 | if self._raise_on_execute: |
| 43 | raise self._raise_on_execute |
| 44 | return self._next_result |
| 45 | |
| 46 | async def read_resource(self, uri, server_name=None): |
| 47 | self.read_resources.append((uri, server_name)) |
| 48 | return self._next_resource |
| 49 | |
| 50 | |
| 51 | class FakeWs: |