mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-09 07:13:17 +08:00
Specialists-only binding/prewarm/MCP allowlists fold legacy manager aliases into generalist; stop persisting confirm/plan prefs and strip inherit from prompt signatures. Co-authored-by: Cursor <cursoragent@cursor.com>
93 lines
3.4 KiB
Python
93 lines
3.4 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from runtime import prompt_prebuild as pp
|
|
|
|
|
|
class _DummyStore:
|
|
def __init__(self, settings: dict[str, str] | None = None):
|
|
self._settings = dict(settings or {})
|
|
|
|
def get_setting(self, key: str) -> str:
|
|
return str(self._settings.get(key, ""))
|
|
|
|
|
|
def test_get_manager_prompt_prebuild_is_legacy_stub(monkeypatch) -> None:
|
|
monkeypatch.setattr(pp, "discover_specialist_ids", lambda: ("generalist", "ops", "memory", "image"))
|
|
|
|
out = pp.get_manager_prompt_prebuild(
|
|
store=_DummyStore(),
|
|
registry=object(),
|
|
base_url="",
|
|
memory_enabled=True,
|
|
)
|
|
assert "generalist" in str(out.get("allowed_fixed") or "")
|
|
assert "ops" in str(out.get("allowed_fixed") or "")
|
|
assert str(out.get("manager_context") or "") == ""
|
|
|
|
|
|
def test_warm_startup_prompt_prebuild_warms_specialists_only(monkeypatch) -> None:
|
|
monkeypatch.setattr(pp, "discover_specialist_ids", lambda: ("generalist", "ops"))
|
|
monkeypatch.setattr(pp, "build_role_system_context", lambda role, template_vars=None: f"{role}_ctx")
|
|
|
|
captured: dict[str, Any] = {}
|
|
|
|
def _warm(**kwargs):
|
|
captured.update(kwargs)
|
|
return {"roles_warmed": len(kwargs.get("role_base_systems") or {})}
|
|
|
|
monkeypatch.setattr(pp, "warm_executor_prompt_cache", _warm)
|
|
|
|
out = pp.warm_startup_prompt_prebuild(
|
|
store=_DummyStore(),
|
|
registry=object(),
|
|
base_url="",
|
|
memory_enabled=True,
|
|
)
|
|
assert out["ok"] is True
|
|
role_map = captured.get("role_base_systems") if isinstance(captured, dict) else {}
|
|
assert isinstance(role_map, dict)
|
|
assert "manager" not in role_map
|
|
assert "generalist" in role_map
|
|
assert "ops" in role_map
|
|
|
|
|
|
def test_runtime_prewarm_prompts_snapshot_returns_roles(monkeypatch) -> None:
|
|
monkeypatch.setattr(pp, "discover_specialist_ids", lambda: ("generalist", "ops"))
|
|
monkeypatch.setattr(pp, "build_role_system_context", lambda role, template_vars=None: f"{role}_ctx")
|
|
monkeypatch.setattr(pp, "get_executor_prompt_static", lambda **kwargs: f"exec::{kwargs.get('skill_binding_role')}")
|
|
monkeypatch.setattr(pp, "default_registry", lambda **kwargs: object())
|
|
|
|
out = pp.runtime_prewarm_prompts_snapshot(store=_DummyStore())
|
|
assert out["ok"] is True
|
|
prompts = out.get("prompts") or {}
|
|
assert "manager" not in prompts
|
|
assert "generalist" in prompts
|
|
assert "ops" in prompts
|
|
assert prompts["generalist"].get("system_prompt") == "exec::generalist"
|
|
assert prompts["ops"].get("system_prompt") == "exec::ops"
|
|
|
|
aliased = pp.runtime_prewarm_prompts_snapshot(store=_DummyStore(), role="manager")
|
|
assert aliased["ok"] is True
|
|
assert aliased.get("roles") == ["generalist"]
|
|
assert "generalist" in (aliased.get("prompts") or {})
|
|
|
|
|
|
def test_manager_prompt_prebuild_stub_is_stateless(monkeypatch) -> None:
|
|
monkeypatch.setattr(pp, "discover_specialist_ids", lambda: ("generalist", "ops", "memory"))
|
|
a = pp.get_manager_prompt_prebuild(
|
|
store=_DummyStore(),
|
|
registry=object(),
|
|
base_url="",
|
|
memory_enabled=True,
|
|
)
|
|
b = pp.get_manager_prompt_prebuild(
|
|
store=_DummyStore(),
|
|
registry=object(),
|
|
base_url="",
|
|
memory_enabled=False,
|
|
)
|
|
assert a.get("manager_context") == ""
|
|
assert "memory" not in (b.get("allowed_fixed") or ())
|
|
assert "memory" in (a.get("allowed_fixed") or ())
|