Files
agent-desktop/src/pineagents/loop/compiler.py
T
Pine 96659759b0 feat: 智能体后端运行时(src/pineagents)
- Agent OS:agents 决策循环、runtime 编排、providers、governance/security/sandbox
- app 服务层(认证转发到 server-core)、channels 19 路频道、memory、plugins
2026-08-23 22:41:48 +08:00

45 lines
1.2 KiB
Python

# -*- coding: utf-8 -*-
"""Compile declarative custom loop modes into stop handlers."""
from __future__ import annotations
from ..config.config import CustomLoopModeConfig
from .catalog import GateCatalog, get_gate_catalog
from .gates.configured import ConfiguredGate
from .gates.handler import StopHandler
def compile_loop_mode(
config: CustomLoopModeConfig,
catalog: GateCatalog | None = None,
) -> StopHandler:
"""Compile one complete mode atomically."""
gate_catalog = catalog or get_gate_catalog()
for gate in config.gates:
gate_catalog.validate_params(gate.type, gate.params)
enabled = [gate for gate in config.gates if gate.enabled]
gate_catalog.validate_exclusive_groups(
[gate.type for gate in enabled],
)
configured: list[ConfiguredGate] = []
for index, gate_config in enumerate(enabled):
gate = gate_catalog.create(
gate_config.type,
gate_config.params,
)
configured.append(
ConfiguredGate(
instance_id=gate_config.id,
order=index * 10,
gate=gate,
),
)
handler = StopHandler()
handler.replace(configured)
return handler
__all__ = ["compile_loop_mode"]