Unit legs intermittently hang mid-suite (FastMCP/asyncpg cleanup-hang
family) and sit until the runner gives up, eating 20+ minutes per
occurrence. pytest-timeout turns a hang into a fast failure with a
stack dump naming the test.
Signed-off-by: phernandez <paul@basicmachines.co>
CI tooling doesn't need product-suite tests burning time on every
matrix leg. The bossbot status script is exercised by every PR run.
Signed-off-by: phernandez <paul@basicmachines.co>
tests/scripts and tests/ci exercise bossbot scripts and workflow
guards — pure CI tooling. They were running on all unit matrix legs
(3 Pythons x 2 backends x 3 OSes). Move them to a single
test-ci-tooling run inside the Static Checks job.
Signed-off-by: phernandez <paul@basicmachines.co>
The testmon cache (branch-scoped, falling back to main's baseline) has
been in place since #928, but the flags pinned --testmon-noselect, so
every PR build recorded data and still ran the full suite. Flip PR
builds to --testmon --testmon-forceselect like basic-memory-cloud;
pushes to main keep --testmon-noselect to refresh the baseline.
Signed-off-by: phernandez <paul@basicmachines.co>
Disable the silently-on semantic embedding stack in default test fixtures and deselect on-demand benchmarks from CI int jobs. int SQLite 337s -> 110s, Postgres unit ~25min -> ~13min.
Signed-off-by: phernandez <paul@basicmemory.com>
Adds additive, git-style `bm cloud push`/`pull` that are safe on shared Team workspaces (never delete on the destination; conflicts abort by default with `--on-conflict {fail|keep-local|keep-cloud|keep-both}`), and gates the destructive `bm cloud sync`/`bisync` mirrors to Personal workspaces. Closes#858. Longer-term Team-safe reconciler tracked in #862; workspace-scoped mount info (Codex P1) tracked as a follow-up.
L2-normalizes FastEmbed output vectors at the provider boundary so SQLite vector scoring keeps its unit-vector contract for custom FastEmbed models such as multilingual MiniLM variants.
Zero vectors are preserved as-is to avoid division errors, and the provider tests cover both non-unit vectors and zero-vector behavior.
Verification:
- uv run pytest tests/repository/test_fastembed_provider.py -q
- uv run ruff check src/basic_memory/repository/fastembed_provider.py tests/repository/test_fastembed_provider.py
- uv run ruff format --check src/basic_memory/repository/fastembed_provider.py tests/repository/test_fastembed_provider.py
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: tk-pkm111 <133480534+tk-pkm111@users.noreply.github.com>
Signed-off-by: phernandez <paul@basicmachines.co>
Adds LiteLLM as a semantic embedding provider, including provider configuration, vector normalization, live-provider evaluation tooling, and documentation for OpenAI, Cohere, Azure Foundry, Azure OpenAI, and NVIDIA NIM-style cases.
Maintainer follow-up on this PR added provider hardening, asymmetric document/query embedding support, dimension-forwarding controls, SQLite/Postgres vector invalidation coverage, and the repeatable live LiteLLM harness.
Verification:
- Full base-repo Tests workflow passed for 3d4e092ceb: https://github.com/basicmachines-co/basic-memory/actions/runs/27072071785
- Live LiteLLM harness passed locally for OpenAI, Cohere, and Azure Foundry.
Co-authored-by: Aarish Alam <arishalam121@gmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: RheagalFire <arishalam121@gmail.com>
Signed-off-by: phernandez <paul@basicmachines.co>