personal memory agent
1# SPDX-License-Identifier: AGPL-3.0-only
2# Copyright (c) 2026 sol pbc
3
4from __future__ import annotations
5
6import pytest
7
8from solstone.observe.transcribe import resource
9
10
11def test_stt_floor_constants_are_exact_gibibytes() -> None:
12 assert resource.STT_LOCAL_FLOOR_LINUX_BYTES == 4 * 1024**3
13 assert resource.STT_LOCAL_FLOOR_DARWIN_BYTES == 2 * 1024**3
14
15
16@pytest.mark.parametrize(
17 ("system", "machine", "expected"),
18 [
19 ("Darwin", "arm64", resource.STT_LOCAL_FLOOR_DARWIN_BYTES),
20 ("Linux", "x86_64", resource.STT_LOCAL_FLOOR_LINUX_BYTES),
21 ("Linux", "aarch64", resource.STT_LOCAL_FLOOR_LINUX_BYTES),
22 ("Linux", "arm64", resource.STT_LOCAL_FLOOR_LINUX_BYTES),
23 ("Windows", "AMD64", None),
24 ],
25)
26def test_stt_local_floor_bytes_platform_mapping(
27 monkeypatch: pytest.MonkeyPatch,
28 system: str,
29 machine: str,
30 expected: int | None,
31) -> None:
32 monkeypatch.setattr(resource.platform, "system", lambda: system)
33 monkeypatch.setattr(resource.platform, "machine", lambda: machine)
34
35 assert resource.stt_local_floor_bytes() == expected
36
37
38@pytest.mark.parametrize(
39 ("system", "machine", "expected"),
40 [
41 ("Darwin", "arm64", "parakeet"),
42 ("Linux", "x86_64", "parakeet"),
43 ("Linux", "aarch64", "parakeet"),
44 ("Linux", "arm64", "parakeet"),
45 ("Windows", "AMD64", None),
46 ],
47)
48def test_local_stt_backend_platform_mapping(
49 monkeypatch: pytest.MonkeyPatch,
50 system: str,
51 machine: str,
52 expected: str | None,
53) -> None:
54 monkeypatch.setattr(resource.platform, "system", lambda: system)
55 monkeypatch.setattr(resource.platform, "machine", lambda: machine)
56
57 assert resource.local_stt_backend() == expected
58
59
60@pytest.mark.parametrize(
61 (
62 "explicit_backend",
63 "available_bytes",
64 "floor_bytes",
65 "local_backend",
66 "confidential_lane_active",
67 "confidential_audio_enabled",
68 "expected",
69 ),
70 [
71 ("parakeet", 1, 4 * 1024**3, "parakeet", True, True, "parakeet"),
72 (
73 "parakeet-cpp",
74 1,
75 4 * 1024**3,
76 "parakeet",
77 True,
78 True,
79 "parakeet-cpp",
80 ),
81 ("confidential", 1, 4 * 1024**3, "parakeet", True, True, "confidential"),
82 ("confidential", 1, 4 * 1024**3, "parakeet", True, False, "parakeet"),
83 (
84 "confidential",
85 1,
86 4 * 1024**3,
87 None,
88 True,
89 False,
90 resource.STT_SURFACE,
91 ),
92 ("confidential", 1, 4 * 1024**3, "parakeet", False, True, "parakeet"),
93 (
94 "confidential",
95 1,
96 4 * 1024**3,
97 None,
98 False,
99 True,
100 resource.STT_SURFACE,
101 ),
102 (None, 1, 4 * 1024**3, "parakeet", True, True, "confidential"),
103 (None, 1, 4 * 1024**3, "parakeet", True, False, "parakeet"),
104 (
105 None,
106 1,
107 4 * 1024**3,
108 None,
109 True,
110 False,
111 resource.STT_SURFACE,
112 ),
113 (None, 4 * 1024**3, 4 * 1024**3, "parakeet", False, True, "parakeet"),
114 (None, 5 * 1024**3, 4 * 1024**3, "parakeet", False, True, "parakeet"),
115 (
116 None,
117 3 * 1024**3,
118 4 * 1024**3,
119 "parakeet",
120 False,
121 True,
122 resource.STT_SURFACE,
123 ),
124 (None, None, 4 * 1024**3, "parakeet", False, True, resource.STT_SURFACE),
125 (None, 3 * 1024**3, None, None, False, True, resource.STT_SURFACE),
126 (
127 None,
128 None,
129 4 * 1024**3,
130 "parakeet",
131 False,
132 True,
133 resource.STT_SURFACE,
134 ),
135 (None, 3 * 1024**3, None, None, False, True, resource.STT_SURFACE),
136 ],
137)
138def test_resolve_stt_backend_choice_matrix(
139 explicit_backend: str | None,
140 available_bytes: int | None,
141 floor_bytes: int | None,
142 local_backend: str | None,
143 confidential_lane_active: bool,
144 confidential_audio_enabled: bool,
145 expected: str,
146) -> None:
147 assert (
148 resource.resolve_stt_backend_choice(
149 explicit_backend,
150 available_bytes,
151 floor_bytes=floor_bytes,
152 local_backend=local_backend,
153 confidential_lane_active=confidential_lane_active,
154 confidential_audio_enabled=confidential_audio_enabled,
155 )
156 == expected
157 )
158
159
160def test_resolve_stt_backend_choice_is_deterministic() -> None:
161 args = {
162 "explicit_backend": None,
163 "available_bytes": 3 * 1024**3,
164 "floor_bytes": 4 * 1024**3,
165 "local_backend": "parakeet",
166 "confidential_lane_active": False,
167 "confidential_audio_enabled": True,
168 }
169
170 assert resource.resolve_stt_backend_choice(
171 **args
172 ) == resource.resolve_stt_backend_choice(**args)