Something went wrong. Try again.
personal memory agent
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167# SPDX-License-Identifier: AGPL-3.0-only# Copyright (c) 2026 sol pbc
import importlibimport jsonfrom pathlib import Path
from jsonschema import Draft202012Validator
import solstone.think.models as models
mod = importlib.import_module("solstone.think.detect_transcript")
DETECT_TRANSCRIPT_SEGMENT_SCHEMA_PATH = ( Path(__file__).resolve().parents[1] / "solstone" / "think" / "detect_transcript_segment.schema.json")DETECT_TRANSCRIPT_JSON_SCHEMA_PATH = ( Path(__file__).resolve().parents[1] / "solstone" / "think" / "detect_transcript_json.schema.json")
def _load_detect_transcript_segment_schema() -> dict: return json.loads(DETECT_TRANSCRIPT_SEGMENT_SCHEMA_PATH.read_text(encoding="utf-8"))
def _load_detect_transcript_json_schema() -> dict: return json.loads(DETECT_TRANSCRIPT_JSON_SCHEMA_PATH.read_text(encoding="utf-8"))
def test_detect_transcript_segment_schema_file_is_valid_draft_2020_12(): Draft202012Validator.check_schema(_load_detect_transcript_segment_schema())
def test_detect_transcript_json_schema_file_is_valid_draft_2020_12(): Draft202012Validator.check_schema(_load_detect_transcript_json_schema())
def test_detect_transcript_segment_schema_accepts_and_rejects_expected_values(): schema = _load_detect_transcript_segment_schema() validator = Draft202012Validator(schema) valid = {"segments": [{"start_at": "12:34:56", "line": 1}]}
assert validator.is_valid(valid) assert not validator.is_valid([{"start_at": "12:34:56", "line": 1}]) assert not validator.is_valid({"segments": [{"start_at": "12:34:56"}]}) assert not validator.is_valid({"segments": [{"start_at": "12:34", "line": 1}]}) assert not validator.is_valid({"segments": [{"start_at": "12:34:56", "line": "1"}]}) assert not validator.is_valid( {"segments": [{"start_at": "12:34:56", "line": 1, "extra": "x"}]} )
def test_detect_transcript_json_schema_accepts_and_rejects_expected_values(): schema = _load_detect_transcript_json_schema() validator = Draft202012Validator(schema) valid = { "entries": [{"start": "12:34:56", "speaker": "Alice", "text": "Hello"}], "topics": "planning, budget", "setting": "workplace", }
assert validator.is_valid(valid) assert validator.is_valid({**valid, "topics": "", "setting": ""}) assert not validator.is_valid( {"topics": "planning, budget", "setting": "workplace"} ) assert not validator.is_valid( { **valid, "entries": [{"start": "12:34", "speaker": "Alice", "text": "Hello"}], } ) assert not validator.is_valid( { **valid, "entries": [{"start": "12:34:56", "speaker": 1, "text": "Hello"}], } ) assert not validator.is_valid( { **valid, "entries": [{"start": "12:34:56", "speaker": "Alice", "text": 7}], } ) assert not validator.is_valid({**valid, "extra": "x"}) assert not validator.is_valid( { **valid, "entries": [ { "start": "12:34:56", "speaker": "Alice", "text": "Hello", "extra": "x", } ], } )
def test_detect_transcript_segment_passes_schema_to_generate(monkeypatch): captured = {}
def fake_generate(**kwargs): captured.update(kwargs) return '{"segments": [{"start_at": "12:00:00", "line": 1}]}'
monkeypatch.setattr(models, "generate", fake_generate)
result = mod.detect_transcript_segment("01\n02\n", "12:00:00")
assert captured["json_schema"] is mod._SEGMENT_SCHEMA assert result assert all(isinstance(item, tuple) and len(item) == 2 for item in result)
def test_detect_transcript_segment_schema_validation_error_returns_empty(monkeypatch): def fake_generate(**kwargs): raise models.SchemaValidationError( [{"path": "", "constraint": "json_parse", "message": "empty"}], "", )
monkeypatch.setattr(models, "generate", fake_generate)
assert mod.detect_transcript_segment("01\n02\n", "12:00:00") == []
def test_detect_transcript_json_passes_schema_to_generate(monkeypatch): captured = {}
def fake_generate(**kwargs): captured.update(kwargs) return ( '{"entries": [{"start": "12:00:00", "speaker": "Alice", "text": "Hello"}], ' '"topics": "planning", "setting": "workplace"}' )
monkeypatch.setattr(models, "generate", fake_generate)
result = mod.detect_transcript_json("some text", "12:00:00")
assert captured["json_schema"] is mod._JSON_SCHEMA assert result == { "entries": [{"start": "12:00:00", "speaker": "Alice", "text": "Hello"}], "topics": "planning", "setting": "workplace", }
def test_detect_transcript_json_schema_validation_error_returns_none(monkeypatch): def fake_generate(**kwargs): raise models.SchemaValidationError( [{"path": "", "constraint": "json_parse", "message": "empty"}], "", )
monkeypatch.setattr(models, "generate", fake_generate)
assert mod.detect_transcript_json("some text", "12:00:00") is None