personal memory agent
1[build-system]
2requires = ["setuptools>=61.0", "wheel"]
3build-backend = "setuptools.build_meta"
4
5[project]
6name = "solstone"
7version = "0.1.0"
8description = "Navigate Life Intelligently"
9readme = "README.md"
10requires-python = ">=3.10"
11license = {text = "AGPL-3.0-only"}
12authors = [
13 {name = "Jer+AI", email = "jeremie.miller@gmail.com"}
14]
15classifiers = [
16 "Development Status :: 3 - Alpha",
17 "Intended Audience :: Developers",
18 "License :: OSI Approved :: GNU Affero General Public License v3",
19 "Operating System :: POSIX :: Linux",
20 "Operating System :: MacOS :: MacOS X",
21 "Programming Language :: Python :: 3",
22 "Programming Language :: Python :: 3.10",
23 "Programming Language :: Python :: 3.11",
24 "Programming Language :: Python :: 3.12",
25 "Programming Language :: Python :: 3.13",
26 "Topic :: Multimedia :: Sound/Audio :: Analysis",
27 "Topic :: Multimedia :: Graphics :: Capture :: Screen Capture",
28 "Topic :: Scientific/Engineering :: Artificial Intelligence",
29]
30keywords = ["audio", "transcription", "screenshot", "multimodal", "ai", "gemini"]
31
32dependencies = [
33 # Core dependencies
34 "python-dotenv",
35 "google-genai",
36 "Flask[async]",
37 "flask-sock",
38 "Markdown",
39 "mistune",
40 "python-frontmatter",
41
42 # Natural language time parsing
43 "timefhuman",
44 "Pillow",
45 "numpy",
46 "desktop-notifier",
47 "setproctitle",
48 "av",
49
50 "openai>=1.2.0",
51 "openai-agents>=0.1.0",
52 "anthropic",
53 "genai-prices",
54 "pypdf",
55 "pdf2image",
56 "pytesseract",
57 "icalendar",
58 "blessed>=1.20.0",
59 "psutil",
60 "tzlocal",
61 "python-slugify",
62 "rapidfuzz",
63 "typer",
64
65 # Audio processing
66 "soundfile",
67 "faster-whisper>=1.0.0",
68 "resemblyzer>=0.1.0",
69 "webrtcvad-wheels>=2.0.12",
70
71 # Media processing
72 "opencv-python",
73
74 # Development tools
75 "ruff",
76 "mypy",
77 "pytest",
78 "pytest-asyncio",
79 "pytest-cov",
80 "pytest-timeout",
81 "playwright>=1.40.0",
82 "requests",
83]
84
85[project.scripts]
86sol = "sol:main"
87
88[project.urls]
89Homepage = "https://github.com/solpbc/solstone"
90Repository = "https://github.com/solpbc/solstone"
91Documentation = "https://github.com/solpbc/solstone/blob/main/README.md"
92"Bug Tracker" = "https://github.com/solpbc/solstone/issues"
93
94[tool.setuptools.packages.find]
95include = ["apps*", "think*", "convey*", "observe*", "muse*"]
96
97[tool.setuptools]
98py-modules = ["media", "sol"]
99
100[tool.setuptools.package-data]
101apps = ["*/templates/*.html", "*/muse/*.md"]
102think = ["*.md", "*.json", "templates/*.md"]
103muse = ["*.md", "*.py"]
104observe = ["*.md", "categories/*.md", "transcribe/*.md"]
105convey = [
106 "templates/*.html",
107 "static/*",
108]
109
110# Development tools configuration
111[tool.ruff]
112target-version = "py310"
113exclude = [".venv", "scratch", "logs", "build", "dist"]
114
115[tool.ruff.lint]
116select = ["F", "E", "W", "I"]
117ignore = ["E501", "E203", "E402"]
118
119[tool.mypy]
120python_version = "3.12"
121warn_return_any = true
122warn_unused_configs = true
123exclude = ["tests", ".venv", "scratch", "logs", "build", "dist"]
124ignore_missing_imports = true
125ignore_errors = true
126
127[tool.uv]
128# resemblyzer -> librosa -> numba: force modern version (old numba only supports Python <3.10)
129constraint-dependencies = ["numba>=0.60"]
130# resemblyzer -> webrtcvad: abandoned (2017), uses pkg_resources removed in setuptools 82.
131# Replace with maintained fork webrtcvad-wheels (same Python module, pkg_resources fix since 2.0.12).
132override-dependencies = ["webrtcvad>=99; python_version < '0'"]
133
134[tool.pytest.ini_options]
135addopts = "--import-mode=importlib"
136testpaths = ["tests", "apps"]
137python_files = ["test_*.py"]
138python_classes = ["Test*"]
139python_functions = ["test_*"]
140markers = [
141 "integration: marks tests as integration tests (deselect with '-m \"not integration\"')",
142]
143timeout = 5
144filterwarnings = [
145 # Third-party deprecation warnings (Python 3.14+)
146 "ignore:codecs.open.* is deprecated:DeprecationWarning",
147 "ignore:.*_UnionGenericAlias.* is deprecated:DeprecationWarning",
148 "ignore:.*DefaultEventLoopPolicy.* is deprecated:DeprecationWarning",
149]