Files
agentic-mobile-control/tests/test_skill_store.py
T

55 lines
1.5 KiB
Python

from __future__ import annotations
import sys
from skills_learning.models import (
LOCAL_SYNTHESIS_SOURCE,
FlowStep,
FlowTemplateSkill,
SkillMetadata,
)
from skills_learning.store import SkillStore
def _skill(
*,
name: str = "search web",
steps: list[FlowStep] | None = None,
parameters: dict[str, dict[str, object]] | None = None,
) -> FlowTemplateSkill:
return FlowTemplateSkill(
metadata=SkillMetadata(
name=name,
description=f"Learned flow for {name}",
source="external-source",
originating_goal=name,
),
steps=steps or [FlowStep("input_text", {"text": "coffee"})],
parameters=parameters or {},
)
def test_skill_store_enforces_local_synthesis_source_without_catalog_write_path() -> None:
store = SkillStore()
stored = store.create_version(_skill())
assert stored.source == LOCAL_SYNTHESIS_SOURCE
assert "skills.catalog" not in sys.modules
def test_skill_store_keeps_version_chain_and_returns_latest_by_name() -> None:
store = SkillStore()
first = store.create_version(_skill())
second = store.create_version(
_skill(steps=[FlowStep("input_text", {"text": "tea"})]),
parent=first,
)
assert first.version == 1
assert second.version == 2
assert second.parent_version_id == first.id
assert store.get_latest_by_name("search web") == second
assert store.get_by_id(first.id) == first
assert [skill.version for skill in store.list_versions("search web")] == [1, 2]