feat: add skill learning runtime
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
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]
|
||||
Reference in New Issue
Block a user