Files
Hy-Memory/memhub/apps/core/pyproject.toml
T
alvinfeiandClaude Opus 5.5 e5ce0cd964 refactor(memhub): remove the private retrieval vector index
All memory and raw reads and writes go through the Hy Memory SDK. The
one_memory.retrieval index kept a second, MemHub-owned vector copy of
conversation text in a private Chroma store under <data_dir>/retrieval-vectors/,
which that rule does not allow. It was experimental and off by default.

Remove the vector store, runtime, provisioning, supervisor, worker, index
store, chunking and mapped content, the offset tokenizer only chunking used,
the semantic raw lanes that read the index, the retrieval_index_enabled and
retrieval_minimum_free_bytes settings, app.state.retrieval_runtime and their
tests. The context route now calls the lexical raw reader directly, which is
exactly what it did with the index disabled; the v2 coordinator keeps its
lexical lane with the same statuses it produced when no index was configured.

Historical migrations and the legacy retrieval tables in the drop list are
unchanged. An existing retrieval-vectors directory is left on disk.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-24 18:13:47 +08:00

87 lines
3.1 KiB
TOML

[build-system]
requires = ["uv_build>=0.12.5,<0.13.0"]
build-backend = "uv_build"
[project]
name = "one-memory"
version = "1.0.5"
description = "MemHub local-first memory core"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"fastapi>=0.141.1",
"filelock>=3.32.4",
# Public SDK version validated against MemHub's permission and recall contracts.
"hy-memory==2.0.5",
# chromadb arrives through the HY SDK; locked here so an unrelated upgrade
# cannot move the SDK's store. Built-in embedding consumes numpy directly.
"chromadb==1.5.9",
"numpy==2.5.2",
"httpx>=0.28.1",
"keyring>=25.7.0",
# Both already arrive transitively through the HY SDK's chromadb, so
# declaring them costs nothing on disk. Declared anyway for the same reason
# as watchfiles below: built-in embedding runs on them directly now, and a
# transitive version we do not ask for is one an unrelated upgrade could
# drop. Deliberately NOT sentence-transformers or torch: those would take
# the installer past 2GB, and onnxruntime alone runs the exported model.
"onnxruntime==1.23.2",
"tokenizers>=0.21.0",
"pydantic-settings>=2.15.0",
"uvicorn[standard]>=0.52.4",
# Already present transitively through uvicorn[standard]; declared directly
# because live sync now depends on it, and a transitive version we do not
# ask for is one an unrelated upgrade could drop.
"watchfiles>=1.2.0",
"zstandard>=0.25.0",
"aiomysql>=0.3.2",
]
[project.scripts]
one-memory = "one_memory.cli:main"
one-memory-core = "one_memory.cli:main"
[dependency-groups]
dev = [
"mypy>=2.3.1",
"pyinstaller>=6.22.2",
"pytest>=9.1.1",
"pytest-xdist>=3.8.0",
"pyyaml>=6.0.3",
"ruff>=0.16.5",
]
[tool.pytest.ini_options]
testpaths = ["tests"]
# test_training_extraction_and_baseline imports helpers from a sibling test
# module, which needs apps/core itself importable as the `tests` package root.
# Without it the whole suite stops at collection, so no test runs at all.
pythonpath = [".", "../.."]
markers = [
"unit: deterministic isolated unit tests",
"contract: adapter, schema, persistence, permission and protocol contracts",
"integration: multi-component lifecycle and recovery tests",
"performance: scale, latency, contention, soak and query-plan tests",
"live: explicitly authorized machine or external-service tests",
"serial: must not run concurrently with another test worker",
"slow: compatibility marker for tests that need performance classification",
"real_volume: writes a few thousand records and takes seconds; too slow for the standing suite",
"macos: requires macOS-specific behavior",
"linux: requires Linux-specific behavior",
"mysql: requires a configured MySQL service",
"requires_embedding_assets: requires the repository-pinned embedding assets",
"xdist_group(name): tests sharing a named resource group",
]
[tool.ruff]
line-length = 100
target-version = "py312"
[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B", "SIM"]
[tool.mypy]
python_version = "3.12"
strict = true
packages = ["one_memory"]