Ctrl K
ComunidadGuías…

butler/orchestrator/loop_factory_ops.py

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

Archivo original ↗Preguntar a KiBot
"""AgentLoop factory best-effort helpers (P0-A)."""

from __future__ import annotations

from typing import TYPE_CHECKING

from butler.core.best_effort import safe_best_effort

if TYPE_CHECKING:
    from butler.orchestrator import ButlerOrchestrator


def apply_project_plugins_safe(orch: "ButlerOrchestrator", session_key: str) -> None:
    def _run() -> None:
        from butler.project.plugins import apply_project_plugins

        proj = orch.project_manager.get_current(session_key=session_key)
        apply_project_plugins(proj)

    safe_best_effort(_run, label="loop_factory.project_plugins", default=None)


def append_plan_mode_appendix_safe(session_key: str, system_prompt: str) -> str:
    def _run() -> str:
        from butler.plan.mode import is_plan_mode, load_plan_mode_system_appendix

        if is_plan_mode(session_key):
            return str(system_prompt.rstrip() + "\n\n" + load_plan_mode_system_appendix())
        return system_prompt

    result = safe_best_effort(
        _run,
        label="loop_factory.plan_mode_appendix",
        default=system_prompt,
    )
    return str(result) if isinstance(result, str) else system_prompt