Paul Hernandez
8cbe1634b6
fix(cli): don't let bm cloud setup overwrite an existing rclone remote ( #923 )
...
Closes #922
Signed-off-by: phernandez <paul@basicmemory.com >
2026-06-10 01:02:43 -05:00
Paul Hernandez
c4b651f5b0
fix(mcp): accept page/page_size in read_note for parity with sibling tools ( #933 )
...
Closes #883
Refs #882
Signed-off-by: phernandez <paul@basicmemory.com >
2026-06-10 00:03:22 -05:00
Paul Hernandez
ca9a4d9c12
fix(mcp): split comma-separated tags in search_notes tags param ( #932 )
...
Closes #910
Signed-off-by: phernandez <paul@basicmemory.com >
2026-06-09 22:23:26 -05:00
Paul Hernandez
93ed34001b
fix(core): disambiguate truncated observation permalinks to prevent index collisions ( #931 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-09 20:20:46 -05:00
Paul Hernandez
de53e0ecc5
feat(cli): per-workspace rclone remotes for Team push/pull ( #920 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-06-08 17:39:37 -05:00
Paul Hernandez
9b53d7863f
feat(cli): add Team-safe cloud push/pull and gate sync to Personal workspaces ( #917 )
...
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.
2026-06-08 14:08:49 -05:00
Paul Hernandez
a8d034b940
fix(mcp): point move mismatch guidance at landing path ( #916 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-06-08 10:42:38 -05:00
Paul Hernandez
7c0937f658
fix(mcp): validate navigation pagination and fix recent_activity project display ( #915 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 23:03:00 -05:00
Paul Hernandez
8570d96bad
fix(cli): align bm tool commands with MCP (error exits, overwrite, category, default) ( #913 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 22:56:43 -05:00
Paul Hernandez
480a2d9468
fix(mcp): resolve memory:// in move_note and stop false cross-project rejections ( #914 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 22:44:08 -05:00
Paul Hernandez
df7452e3ba
fix(core): make note_types search filter case-insensitive ( #912 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 22:44:04 -05:00
Paul Hernandez
85a8e59d0f
fix(core): split comma-separated tags in parse_tags ( #911 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 22:44:01 -05:00
Paul Hernandez
0ef03edde6
feat(cli): add --type to the write-note tool command ( #907 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 20:06:44 -05:00
Paul Hernandez
efe43a10ea
feat(cli): add --wait and --timeout to bm status ( #906 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 19:58:02 -05:00
Paul Hernandez
4fe6fe09c8
feat(core): add observation category filter to search ( #908 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 19:57:19 -05:00
Paul Hernandez
8acdb49a41
fix(core): reuse a single embedding provider per process ( #903 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 19:14:07 -05:00
Paul Hernandez
f7304bf553
feat(cli): improve workspace and cloud bisync command discoverability ( #905 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 18:18:17 -05:00
Paul Hernandez
5b034f081d
fix(core): self-heal corrupt FastEmbed model cache ( #900 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 17:37:30 -05:00
Paul Hernandez
271c883ea8
fix(core): load sqlite-vec for embedding-status query ( #901 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 17:37:27 -05:00
Paul Hernandez
816ee85fb9
fix(core): prevent asyncpg engine-dispose crash on Postgres backend ( #902 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 17:37:23 -05:00
Paul Hernandez
3ba3a9504d
fix(mcp): stop move_note reporting false success across boundaries ( #904 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 17:37:20 -05:00
Sourish Chakraborty
f916662ff3
fix(core): allow cross-project context traversal
2026-06-06 21:43:21 -05:00
DoubleDeeRuffy
0c9800cd3b
fix(sync): use strict deferred relation resolution
2026-06-06 21:43:09 -05:00
Adit Karode
476239d878
feat(cli): add delete-note tool command
2026-06-06 21:41:46 -05:00
DoubleDeeRuffy
20bb19f4cd
fix(mcp): resolve write-note overwrite conflicts
2026-06-06 21:41:36 -05:00
tk
f6565b9d23
fix(core): L2-normalize FastEmbed vectors ( #843 )
...
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 >
2026-06-06 17:15:19 -05:00
Aarish Alam
b6e8c636ce
feat(core): add LiteLLM embedding provider ( #809 )
...
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 >
2026-06-06 17:13:09 -05:00
phernandez
59e865c079
chore: update version to 0.21.6 for v0.21.6 release
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-06-04 23:41:42 -05:00
Paul Hernandez
8887267256
fix(ci): improve auto bm note narrative ( #893 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-06-04 22:34:57 -05:00
Paul Hernandez
2de8183e85
fix(ci): require all codex synthesis schema fields
...
Fixes the Auto BM Codex structured-output schema guardrail so live synthesis can run.
2026-06-04 20:48:55 -05:00
Paul Hernandez
0adbc12f09
docs(ci): document auto bm dogfood install
...
Documents the temporary checkout install used while dogfooding Auto BM before the next package release.
2026-06-04 20:44:51 -05:00
phernandez
4502bd3c3b
ci(cli): configure auto bm workflow
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-06-04 20:27:42 -05:00
phernandez
b386502020
fix(cli): show copyable workspace identifiers
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-06-04 20:20:56 -05:00
phernandez
16ba55d7b4
feat(cli): add auto bm github ci
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-06-04 20:14:59 -05:00
Paul Hernandez
fc2ee07076
feat(api): expose owning project on entity resolve
...
Expose project_external_id on v2 entity resolve responses so cloud callers can authorize cross-project targets without a second tenant DB lookup.
2026-06-02 18:01:17 -05:00
phernandez
5365f971ef
chore(integrations): consolidate agent packages
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-30 14:16:04 -05:00
phernandez
8d21a38588
fix(cli): handle non-subscription errors in cloud login
...
`bm cloud login` only caught SubscriptionRequiredError after the
post-login `/proxy/health` subscription check. OAuth succeeds and tokens
are saved, but if that check returns anything else — a 5xx while the
tenant instance is still provisioning, a 403/401 whose body doesn't match
the subscription_required shape, or a transport error — make_api_request
raises a generic CloudAPIError that escaped uncaught, dumping a raw
httpx.raise_for_status traceback. Users read this as "login failed" even
though authentication actually worked.
Add a CloudAPIError handler that prints a clean, actionable message and
exits non-zero. make_api_request wraps every httpx error (status and
transport) in CloudAPIError, so the single handler covers them all.
Fixes #863 .
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-30 14:13:32 -05:00
Drew Cain
f07643d3a8
feat(cli): expose project sync support metadata
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
2026-05-28 15:00:05 -05:00
Drew Cain
8bf7bdbc0d
fix(cli): limit team workspace guard to bisync
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
2026-05-28 14:59:48 -05:00
Drew Cain
d0ae373f45
docs(cli): clarify team mirror sync guard
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
2026-05-28 14:59:48 -05:00
Drew Cain
1acec0a69d
test(cli): cover workspace sync guard branches
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
2026-05-28 14:59:48 -05:00
Drew Cain
a2276a8a04
fix(cli): block team workspace rclone sync
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
2026-05-28 14:59:48 -05:00
Drew Cain
ff5d872a8c
chore: update version to 0.21.5 for v0.21.5 release
2026-05-26 10:58:09 -05:00
Drew Cain
b109b7337f
fix(mcp): attach local state to one workspace project row ( #854 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
2026-05-26 10:54:44 -05:00
Drew Cain
36b51b676e
fix(mcp): return workspace-qualified write permalinks ( #853 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
2026-05-26 00:33:21 -05:00
Drew Cain
9af320187c
fix(core): load sqlite-vec before vector table cleanup ( #852 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
2026-05-26 00:27:47 -05:00
Paul Hernandez
5a34a420c9
fix(mcp): preinitialize local ASGI database ( #838 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-25 15:57:00 -05:00
Drew Cain
a7e2368f9e
chore: update version to 0.21.4 for v0.21.4 release
2026-05-23 14:55:49 -05:00
Sean Campbell
c755127317
fix(cli): ignore CancelledError in background task done callback ( #839 ) ( #842 )
...
Signed-off-by: rudi193-cmd <rudi193@gmail.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-23 14:27:59 -05:00
Sean Campbell
94c04ee456
fix(mcp): restore write_note overwrite schema for external clients ( #818 ) ( #841 )
...
Signed-off-by: rudi193-cmd <rudi193@gmail.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-23 14:19:43 -05:00