feat: Workshop Phase 1 — State Schema v1 (#404)
All checks were successful
Tests / lint (push) Successful in 3s
Tests / test (push) Successful in 57s

Co-authored-by: Kimi Agent <kimi@timmy.local>
Co-committed-by: Kimi Agent <kimi@timmy.local>
This commit was merged in pull request #404.
This commit is contained in:
2026-03-19 02:24:13 -04:00
committed by hermes
parent ab3546ae4b
commit 3571d528ad
4 changed files with 134 additions and 20 deletions

View File

@@ -26,17 +26,47 @@ def test_get_state_dict_returns_v1_schema():
assert isinstance(state["active_threads"], list)
assert isinstance(state["recent_events"], list)
assert isinstance(state["concerns"], list)
# Issue #360 enriched fields
assert isinstance(state["confidence"], float)
assert 0.0 <= state["confidence"] <= 1.0
assert isinstance(state["energy"], float)
assert 0.0 <= state["energy"] <= 1.0
assert state["identity"]["name"] == "Timmy"
assert state["identity"]["title"] == "The Workshop Wizard"
assert isinstance(state["identity"]["uptime_seconds"], int)
assert state["activity"]["current"] in ("idle", "thinking")
assert state["environment"]["time_of_day"] in (
"morning",
"afternoon",
"evening",
"night",
"deep-night",
)
assert state["environment"]["day_of_week"] in (
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday",
)
assert state["interaction"]["visitor_present"] is False
assert isinstance(state["interaction"]["conversation_turns"], int)
assert state["meta"]["schema_version"] == 1
assert state["meta"]["writer"] == "timmy-loop"
assert "updated_at" in state["meta"]
def test_get_state_dict_idle_mood():
"""Idle engagement + settled mood → 'idle' presence mood."""
"""Idle engagement + settled mood → 'calm' presence mood."""
from timmy.cognitive_state import CognitiveState, CognitiveTracker
tracker = CognitiveTracker.__new__(CognitiveTracker)
tracker.state = CognitiveState(engagement="idle", mood="settled")
with patch("timmy.cognitive_state.cognitive_tracker", tracker):
state = get_state_dict()
assert state["mood"] == "idle"
assert state["mood"] == "calm"
def test_get_state_dict_maps_mood():
@@ -44,7 +74,7 @@ def test_get_state_dict_maps_mood():
from timmy.cognitive_state import CognitiveState, CognitiveTracker
for cog_mood, expected in [
("curious", "exploring"),
("curious", "contemplative"),
("hesitant", "uncertain"),
("energized", "excited"),
]: