Ctrl K
ComunidadGuías…

butler/tools/delegate_subagent_ops.py

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
"""Delegate subagent loop best-effort helpers (P0-A)."""

from __future__ import annotations

from pathlib import Path

from butler.core.best_effort import safe_best_effort
from butler.tools.delegate_run_state import DelegateRunState


def merge_agents_md_context_safe(state: DelegateRunState) -> None:
    if state.project is None:
        return

    def _run() -> None:
        from butler.agents_md import merge_agent_md_into_context

        state.context = merge_agent_md_into_context(
            Path(state.project.workspace),
            state.role,
            state.context,
        )

    safe_best_effort(_run, label="delegate_subagent.agents_md", default=None)


def apply_one_tool_per_iteration_safe(state: DelegateRunState) -> None:
    def _run() -> None:
        from butler.delegate.policy import delegate_one_tool_per_iteration

        if delegate_one_tool_per_iteration():
            state.agent.config.enable_parallel_tools = False
            state.agent.diagnostics["delegate_one_tool_per_iteration"] = True

    safe_best_effort(_run, label="delegate_subagent.one_tool_policy", default=None)


def inject_dev_engine_prompt_safe(state: DelegateRunState) -> None:
    def _run() -> None:
        from butler.agent_profiles import get_dev_agent_prompt

        enhanced = get_dev_agent_prompt()
        if enhanced and len(enhanced) > len(state.agent.system_prompt):
            state.agent.system_prompt = enhanced

    safe_best_effort(_run, label="delegate_subagent.dev_prompt", default=None)