2424# ---------------------------------------------------------------------------
2525
2626class TestDelegateRegistry :
27- def test_generate_child_id (self ):
28- reg = DelegateRegistry ()
29- assert reg .generate_child_id ("orch" ) == "orch.1"
30- assert reg .generate_child_id ("orch" ) == "orch.2"
31- assert reg .generate_child_id ("orch.1" ) == "orch.1.1"
32- assert reg .generate_child_id ("orch.1" ) == "orch.1.2"
33- assert reg .generate_child_id ("orch" ) == "orch.3"
27+ def test_generate_child_id (self , tmp_path ):
28+ """generate_child_id is now on AgentRegistry (via Runtime)."""
29+ from atn .config import ATNConfig
30+ from atn .runtime import Runtime
31+ from atn .events import EventBus
32+
33+ data_dir = tmp_path / "data"
34+ agents_dir = tmp_path / "agents"
35+ data_dir .mkdir (parents = True , exist_ok = True )
36+ agents_dir .mkdir (parents = True , exist_ok = True )
37+ config = ATNConfig (data_dir = data_dir , agents_dir = agents_dir )
38+ config .autonet .enabled = False
39+ config .voice .enabled = False
40+ rt = Runtime (EventBus (), data_dir = data_dir , config = config )
41+
42+ assert rt .generate_child_id ("orch" ) == "orch.1"
43+ assert rt .generate_child_id ("orch" ) == "orch.2"
44+ assert rt .generate_child_id ("orch.1" ) == "orch.1.1"
45+ assert rt .generate_child_id ("orch.1" ) == "orch.1.2"
46+ assert rt .generate_child_id ("orch" ) == "orch.3"
3447
3548 def test_register_and_get (self ):
3649 reg = DelegateRegistry ()
@@ -140,9 +153,8 @@ def test_persistence(self, tmp_path: Path):
140153 node2 = reg2 .get_node ("orch.2" )
141154 assert node2 is not None
142155
143- # Child counters should be rebuilt correctly
144- next_id = reg2 .generate_child_id ("orch" )
145- assert next_id == "orch.3"
156+ # Verify all nodes loaded correctly
157+ assert len (reg2 .get_children ("orch" )) == 2
146158
147159 def test_to_dict_from_dict_roundtrip (self ):
148160 node = DelegateNode (
@@ -249,35 +261,37 @@ async def _capture(e):
249261 mock_provider .close = AsyncMock ()
250262 mock_provider .interrupt = AsyncMock ()
251263
252- with patch ("atn.runtime.BridgeProvider" , return_value = mock_provider ):
253- from atn .orchestrator .tools import _delegate , _delegate_collect
264+ with patch ("atn.runtime.provider_manager. BridgeProvider" , return_value = mock_provider ):
265+ from atn .orchestrator .tools import _create_agent , _delegate_collect
254266
255- # delegate() returns immediately with "spawned"
256- spawn_result = await _delegate (rt , {
267+ # create_agent with mode=cognitive and prompt auto-activates and triggers
268+ spawn_result = await _create_agent (rt , {
269+ "mode" : "cognitive" ,
257270 "prompt" : "Explore the auth system" ,
258271 "agent_type" : "explore" ,
259- "title" : "Auth exploration" ,
272+ "name" : "Auth exploration" ,
273+ "_caller_id" : "orch" ,
260274 })
261275
262- assert spawn_result ["status" ] == "spawned "
263- assert spawn_result ["agent_id" ] == "orch.1"
264- assert spawn_result [ "agent_type" ] == "explore "
276+ assert spawn_result ["status" ] == "running "
277+ agent_id = spawn_result ["agent_id" ]
278+ assert agent_id == "orch.1 "
265279
266280 # Agent is registered in the unified registry as cognitive
267- defn = rt .get_agent ("orch.1" )
281+ defn = rt .get_agent (agent_id )
268282 assert defn is not None
269283 assert defn .mode .value == "cognitive"
270284 assert defn .parent_id == "orch"
271285
272286 # Collect the result (blocks until execution finishes)
273- collect_result = await _delegate_collect (rt , {"agent_id" : "orch.1" })
287+ collect_result = await _delegate_collect (rt , {"agent_id" : agent_id })
274288
275289 assert collect_result ["status" ] == "completed"
276290 assert "explored the codebase" in collect_result ["result" ]
277291 assert collect_result ["usage" ]["input_tokens" ] == 1000
278292
279293 # Verify delegate registry was synced for UI
280- node = rt .delegate_registry .get_node ("orch.1" )
294+ node = rt .delegate_registry .get_node (agent_id )
281295 assert node is not None
282296 assert node .status == DelegateStatus .COMPLETED
283297
@@ -290,7 +304,7 @@ async def _capture(e):
290304
291305 # Verify send_orchestrate was called with correct args
292306 call_args = mock_provider .send_orchestrate .call_args
293- assert call_args . kwargs [ "message" ] == " Explore the auth system"
307+ assert " Explore the auth system" in call_args . kwargs [ "message" ]
294308 assert "explore" in call_args .kwargs ["system" ].lower () or "Exploration" in call_args .kwargs ["system" ]
295309 assert call_args .kwargs ["max_turns" ] == 50
296310
@@ -316,24 +330,27 @@ async def _capture(e):
316330 )
317331 mock_provider .close = AsyncMock ()
318332
319- with patch ("atn.runtime.BridgeProvider" , return_value = mock_provider ):
320- from atn .orchestrator .tools import _delegate , _delegate_collect
333+ with patch ("atn.runtime.provider_manager. BridgeProvider" , return_value = mock_provider ):
334+ from atn .orchestrator .tools import _create_agent , _delegate_collect
321335
322- spawn_result = await _delegate (rt , {
336+ spawn_result = await _create_agent (rt , {
337+ "mode" : "cognitive" ,
323338 "prompt" : "This will fail" ,
324339 "agent_type" : "implement" ,
340+ "_caller_id" : "orch" ,
325341 })
326342
327- assert spawn_result ["status" ] == "spawned"
343+ assert spawn_result ["status" ] == "running"
344+ agent_id = spawn_result ["agent_id" ]
328345
329346 # Collect — should get the failure result
330- collect_result = await _delegate_collect (rt , {"agent_id" : "orch.1" })
347+ collect_result = await _delegate_collect (rt , {"agent_id" : agent_id })
331348
332349 assert collect_result ["status" ] == "failed"
333350 assert "crashed" in collect_result ["error" ]
334351
335352 # Verify delegate registry reflects failure
336- node = rt .delegate_registry .get_node ("orch.1" )
353+ node = rt .delegate_registry .get_node (agent_id )
337354 assert node .status == DelegateStatus .FAILED
338355
339356 # Verify failure event
@@ -366,11 +383,13 @@ async def _slow_orchestrate(**kwargs):
366383 mock_provider .close = AsyncMock ()
367384 mock_provider .interrupt = AsyncMock ()
368385
369- with patch ("atn.runtime.BridgeProvider" , return_value = mock_provider ):
370- from atn .orchestrator .tools import _delegate , _delegate_status , _delegate_collect
386+ with patch ("atn.runtime.provider_manager. BridgeProvider" , return_value = mock_provider ):
387+ from atn .orchestrator .tools import _create_agent , _delegate_status , _delegate_collect
371388
372- spawn = await _delegate (rt , {
389+ spawn = await _create_agent (rt , {
390+ "mode" : "cognitive" ,
373391 "prompt" : "Do something" , "agent_type" : "implement" ,
392+ "_caller_id" : "orch" ,
374393 })
375394 agent_id = spawn ["agent_id" ]
376395
0 commit comments