mirror of
https://github.com/usestrix/strix.git
synced 2026-09-07 08:25:56 +00:00
The previous commit only kept the root agent alive across cycles. But ``interactive`` propagates to children via ``make_child_factory``, and the legacy harness's continuation loop applied to every interactive agent in the tree — children also stayed alive after ``agent_finish``, ready to receive follow-up messages from the parent or siblings. Lift the demo-loop pattern out of ``entry.run_strix_scan`` into a shared helper :func:`strix.run_loop.run_with_continuation` and use it at both call sites: - ``entry.run_strix_scan`` for the root agent. - ``tools.agents_graph.tools.create_agent`` for child agents — the ``asyncio.create_task(Runner.run(...))`` becomes ``asyncio.create_task(run_with_continuation(...))``. ``StrixOrchestrationHooks.on_agent_end`` drops the ``parent_id is None`` constraint — any interactive agent parks instead of finalizing. Children that crash still finalize so parents stop waiting on them. Cancellation propagates correctly: ``bus.cancel_descendants`` cancels the task; ``run_with_continuation``'s ``await bus.wait_for_message`` catches ``CancelledError`` and returns the last result. Lint at baseline. |
||
|---|---|---|
| .. | ||
| agents | ||
| config | ||
| interface | ||
| io | ||
| llm | ||
| orchestration | ||
| runtime | ||
| skills | ||
| telemetry | ||
| tools | ||
| utils | ||
| __init__.py | ||
| entry.py | ||
| run_config_factory.py | ||
| run_loop.py | ||