[project] name = "droste-memory" version = "1.1.6" readme = "README.md" description = "Local hybrid structural and semantic graph memory engine." license = "MIT" keywords = [ "ai-agents", "code-intelligence", "code-search", "developer-tools", "local-first", "mcp", "rag", "semantic-search", "tree-sitter", ] classifiers = [ "Development Status :: 3 - Alpha", "Environment :: Console", "Framework :: FastAPI", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Software Development", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Quality Assurance", "Typing :: Typed", ] requires-python = ">=3.10" # Core runtime. fastembed (ONNX, no torch) is the default semantic backend and # tree-sitter-language-pack powers the polyglot call-graph — both are REQUIRED, # not optional: a missing install silently degrades retrieval (the dormant-moat # bug). sentence-transformers (torch) is an opt-in heavy fallback, not core. dependencies = [ "mcp>=1.2.0", "numpy>=1.24.0", "scikit-learn>=1.3.0", "fastembed>=0.8.0", "truststore>=0.10.0", "pydantic>=2.0.0", "fastapi>=0.110.0", "uvicorn[standard]>=0.27.0", "tree-sitter>=0.23.0", "tree-sitter-language-pack>=1.9.0", ] [project.optional-dependencies] heavy-embed = ["sentence-transformers>=2.7.0"] dev = ["pytest>=7.0"] [project.scripts] droste = "core.droste_cli:main" [project.urls] Homepage = "https://github.com/lorismascio17/droste-memory" Repository = "https://github.com/lorismascio17/droste-memory" Issues = "https://github.com/lorismascio17/droste-memory/issues" PyPI = "https://pypi.org/project/droste-memory/" [tool.pytest.ini_options] # Deterministic regression suite lives in tests/; eval/ stays benchmark-only. minversion = "7.0" testpaths = ["tests"] addopts = "-ra -v --tb=short" markers = [ "slow: concurrency / timing tests (cross-process shard race)", ] [tool.setuptools.packages.find] include = ["core*", "visualizer*"] [tool.setuptools.package-data] # `droste view` serves these straight from site-packages: the cockpit page, # its Jinja template, and the public demo graph used as the zero-setup # fallback. Without them the README's third command crashes on a pip install. visualizer = ["*.html", "demo_graph.json", "templates/*.html"]