core: Policy, Pflege-Agent (HITL), Healer, Lifecycle-Pipeline, Graduierung + Konfiguration
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -176,3 +176,46 @@ class FakeChat:
|
||||
@pytest.fixture
|
||||
def fake_chat() -> FakeChat:
|
||||
return FakeChat()
|
||||
|
||||
|
||||
class Clock:
|
||||
def __init__(self, t: float | None = None):
|
||||
import time
|
||||
|
||||
self.t = time.time() if t is None else t
|
||||
|
||||
def __call__(self) -> float:
|
||||
return self.t
|
||||
|
||||
def advance(self, seconds: float) -> None:
|
||||
self.t += seconds
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def clock() -> Clock:
|
||||
return Clock()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def make_system(tmp_path, skills_dir, fake_chat, clock):
|
||||
import yaml
|
||||
|
||||
from knaster.embeddings import HashingEmbedder
|
||||
from knaster.healer.drivers import DryRunDriver
|
||||
from knaster.lifecycle import LoggingJobRunner
|
||||
from knaster.settings import REPO_ROOT, Settings
|
||||
from knaster.system import build_system
|
||||
|
||||
def make(**overrides):
|
||||
site = tmp_path / "site"
|
||||
site.mkdir(exist_ok=True)
|
||||
(site / "registry.yaml").write_text(yaml.safe_dump(REGISTRY))
|
||||
settings = Settings(db_url="sqlite://", site_dir=site, skills_dir=skills_dir,
|
||||
config_dir=overrides.pop("config_dir", REPO_ROOT / "config"),
|
||||
api_token=overrides.pop("api_token", "secret"))
|
||||
kw = dict(embedder=HashingEmbedder(), chat=fake_chat, jobs=LoggingJobRunner(), notifier=DryRunDriver(),
|
||||
clock=clock)
|
||||
kw.update(overrides)
|
||||
return build_system(settings, **kw)
|
||||
|
||||
return make
|
||||
|
||||
Reference in New Issue
Block a user