2727from src .adapter import OpenBotClaudeAgentAdapter
2828
2929
30- def request (thread = "thread-a" , run = "run-1" , results = (), tool_count = 1 ):
30+ def request (thread = "thread-a" , run = "run-1" , results = (), tool_count = 1 , tool_name = "computer_navigate" ):
3131 return RunAgentInput .model_validate (
3232 {
3333 "threadId" : thread ,
@@ -47,19 +47,24 @@ def request(thread="thread-a", run="run-1", results=(), tool_count=1):
4747 ],
4848 "tools" : [
4949 {
50- "name" : "computer_navigate" ,
50+ "name" : tool_name ,
5151 "description" : "Navigate" ,
5252 "parameters" : {"type" : "object" , "properties" : {}},
5353 }
5454 ],
55- "context" : [],
55+ "context" : [{ "description" : "OpenBot learned skills" , "value" : "LEARNED_CATALOG_MARKER" } ],
5656 "forwardedProps" : {},
5757 }
5858 )
5959
6060
6161@pytest .fixture
62- def sdk (monkeypatch ):
62+ def tool_name ():
63+ return "computer_navigate"
64+
65+
66+ @pytest .fixture
67+ def sdk (monkeypatch , tool_name ):
6368 clients = []
6469
6570 class Client :
@@ -106,7 +111,7 @@ async def receive_response(self):
106111 calls = [
107112 ToolUseBlock (
108113 id = f"{ thread } -tool-{ i } " ,
109- name = "mcp__ag_ui__computer_navigate " ,
114+ name = f"mcp__ag_ui__ { tool_name } " ,
110115 input = {},
111116 )
112117 for i in range (count )
@@ -206,15 +211,16 @@ async def events(adapter, input_data):
206211
207212@pytest .mark .parametrize ("streaming" , [False , True ])
208213@pytest .mark .parametrize ("model_only" , [False , True ])
209- def test_client_result_resumes_original_sdk_query (sdk , streaming , model_only ):
214+ @pytest .mark .parametrize ("tool_name" , ["computer_navigate" , "copilotkit_load_skill" , "copilotkit_read_skill_file" ])
215+ def test_client_result_resumes_original_sdk_query (sdk , streaming , model_only , tool_name ):
210216 async def scenario ():
211217 adapter = OpenBotClaudeAgentAdapter (
212218 name = "test" ,
213219 options = {"include_partial_messages" : streaming },
214220 model_only = model_only ,
215221 )
216222 try :
217- first = await events (adapter , request ())
223+ first = await events (adapter , request (tool_name = tool_name ))
218224 assert any (event .type == "TOOL_CALL_END" for event in first )
219225 opened = [
220226 event .message_id
@@ -231,6 +237,7 @@ async def scenario():
231237 adapter ,
232238 request (
233239 run = "run-2" ,
240+ tool_name = tool_name ,
234241 results = [
235242 (
236243 "thread-a-tool-0" ,
@@ -239,6 +246,7 @@ async def scenario():
239246 ],
240247 ),
241248 )
249+ assert "LEARNED_CATALOG_MARKER" in str (sdk [0 ].options .system_prompt )
242250 assert sdk [0 ].queries == [("1" , "thread-a" )], (
243251 "a tool result must not become another SDK user prompt"
244252 )
0 commit comments