"""Prompt-facing typed capability helpers.
This module is a thin facade over ``template_variables`` so prompt materialization
and prompt tests share one capability/policy implementation instead of carrying a
second parallel type system.
"""
from __future__ import annotations
from dataclasses import dataclass
from ralph.mcp.protocol.capability_mapping import Capability, SessionDrain
from ralph.mcp.tools.names import (
ARTIFACT_TOOLS,
ENV_READ_TOOLS,
GIT_DIFF_READ_TOOLS,
GIT_STATUS_READ_TOOLS,
PLANNING_DRAFT_TOOLS,
PROCESS_EXEC_TOOLS,
PROGRESS_TOOLS,
TRACKED_WRITE_TOOLS,
WORKSPACE_READ_TOOLS,
)
from ralph.prompts.template_variables import (
CapabilitySet,
PolicyFlag,
PolicyFlagSet,
bool_to_string,
format_capability_summary,
format_mcp_tools_list,
visible_mcp_tool_names,
)
from ralph.prompts.template_variables import (
capability_template_variables as _capability_template_variables,
)
[docs]
@dataclass(frozen=True)
class SessionCapabilities:
"""Bundle of capability/policy sets plus transport-specific prompt decoration."""
capabilities: CapabilitySet
policy_flags: PolicyFlagSet
tool_name_prefix: str = ""
@classmethod
def defaults_for_drain(
cls, drain: SessionDrain, *, tool_name_prefix: str = ""
) -> SessionCapabilities:
return cls(
capabilities=CapabilitySet.defaults_for_drain(drain),
policy_flags=PolicyFlagSet.defaults_for_drain(drain),
tool_name_prefix=tool_name_prefix,
)
[docs]
def capability_template_variables(
capabilities: CapabilitySet,
policy_flags: PolicyFlagSet,
*,
tool_name_prefix: str = "",
) -> dict[str, str]:
"""Return template variable dict derived from the given capability and policy sets."""
return _capability_template_variables(
capabilities,
policy_flags,
tool_name_prefix=tool_name_prefix,
)
[docs]
def bool_to_template_value(value: bool) -> str:
"""Convert a boolean to the canonical template string representation."""
return bool_to_string(value)
__all__ = [
"ARTIFACT_TOOLS",
"ENV_READ_TOOLS",
"GIT_DIFF_READ_TOOLS",
"GIT_STATUS_READ_TOOLS",
"PLANNING_DRAFT_TOOLS",
"PROCESS_EXEC_TOOLS",
"PROGRESS_TOOLS",
"TRACKED_WRITE_TOOLS",
"WORKSPACE_READ_TOOLS",
"Capability",
"CapabilitySet",
"PolicyFlag",
"PolicyFlagSet",
"SessionCapabilities",
"bool_to_template_value",
"capability_template_variables",
"format_capability_summary",
"format_mcp_tools_list",
"visible_mcp_tool_names",
]