Files
2026-07-13 13:12:33 +08:00

45 lines
1.3 KiB
Python

from __future__ import annotations
from opensquilla.engine.runtime import TurnRunner
from opensquilla.tools.registry import ToolRegistry
from opensquilla.tools.types import CallerKind, InteractionMode, ToolContext, ToolSpec
async def _handler() -> str:
return "ok"
def _spec(name: str) -> ToolSpec:
return ToolSpec(name=name, description=f"{name} tool", parameters={})
def test_owner_cron_tool_policy_uses_runtime_registry_names() -> None:
registry = ToolRegistry()
for name in ("session_status", "memory_search", "exec_command", "web_fetch"):
registry.register(_spec(name), _handler)
runner = TurnRunner(
provider_selector=None,
tool_registry=registry,
session_manager=object(),
config=object(),
)
ctx = ToolContext(
is_owner=True,
caller_kind=CallerKind.CRON,
interaction_mode=InteractionMode.UNATTENDED,
session_key="cron:owner:run:1",
tool_policy={
"profile": "minimal",
"also_allow": ["memory_search", "exec_command"],
"deny": ["web_fetch"],
},
)
tool_defs, _handler_fn = runner._build_tools(ctx)
names = {tool.name for tool in tool_defs}
assert "session_status" in names
assert "memory_search" in names
assert "exec_command" in names
assert "web_fetch" not in names