fix(delegation): integrate lifecycle refactor with tool-history + daemon pool
Follow-ups on the salvaged #63359: - _finalize_child_results carries tool_call_history on subagent_stop (the #62011/#72403 field landed after the PR branched; the shared pipeline must emit it for both delegate_task and plugin-launched children). Lifecycle test updated for the new payload field. - The lifecycle executor uses DaemonThreadPoolExecutor — a wedged or abandoned child must never block interpreter exit at atexit-join time (same rationale as _run_single_child's timeout executor and the async-delegation pool). - delegate_task's batch path keeps live-transcript wiring while routing child construction through the shared _build_child_preserving_parent_tools helper.
This commit is contained in:
@@ -156,7 +156,12 @@ class _Registry:
|
||||
|
||||
|
||||
_REGISTRY = _Registry()
|
||||
_EXECUTOR = ThreadPoolExecutor(max_workers=8, thread_name_prefix="hermes-lifecycle")
|
||||
# Daemon worker pool: a wedged/abandoned child must never block interpreter
|
||||
# exit at atexit-join time (same rationale as _run_single_child's timeout
|
||||
# executor and the async-delegation registry pool).
|
||||
from tools.daemon_pool import DaemonThreadPoolExecutor as _DaemonExecutor
|
||||
|
||||
_EXECUTOR = _DaemonExecutor(max_workers=8, thread_name_prefix="hermes-lifecycle")
|
||||
_SECRET = secrets.token_bytes(32)
|
||||
_ACTIVE_PARENT_AGENT: contextvars.ContextVar[Any] = contextvars.ContextVar(
|
||||
"hermes_subagent_lifecycle_parent", default=None
|
||||
|
||||
@@ -202,6 +202,10 @@ def test_public_lifecycle_runs_host_aggregation(monkeypatch):
|
||||
child_role="leaf",
|
||||
child_summary="aggregated",
|
||||
child_status="completed",
|
||||
# Redacted tool history rides the shared finalization pipeline
|
||||
# (#62011/#72403); empty here because the fabricated result carries
|
||||
# no tool_trace.
|
||||
tool_call_history=[],
|
||||
duration_ms=250,
|
||||
)
|
||||
assert parent.session_estimated_cost_usd == 3.5
|
||||
|
||||
Reference in New Issue
Block a user