Dennis Hempel
4fd9cae293
fix(mcp): resolve write_note overwrite conflicts by file_path strictly
...
`write_note(overwrite=True)` caught the 409 from create_entity and then
called `knowledge_client.resolve_entity(entity.permalink)` with the
default `strict=False`. In workspace-prefixed palaces the client-built
permalink omits the workspace slug, so exact permalink lookup misses
and the fuzzy fallback could pick an orphan row that shares tokens with
the canonical permalink. The update then wrote to the orphan, leaving
the canonical row stale. On the next overwrite the permalink uniqueness
check in `_resolve_schema_permalink` found duplicate rows and minted
`-1`/`-2` suffixes on the canonical entity, accumulating orphans on
every re-synthesis run.
The 409 came from a `file_service.exists(file_path)` check in
`prepare_create_entity_content`, so the file_path is the authoritative
key for the canonical row — no fuzzy matching needed. Resolve by
file_path with `strict=True`, POSIX-normalized so Windows clients send
the form the server stores.
Adds a regression test that spies on `resolve_entity` and asserts the
identifier and `strict` flag, plus checks that no `-1`/`-2` suffix is
minted under the canonical permalink.
Reported in basic-memory-bug-report Issue 1.
Signed-off-by: Dennis Hempel <uhg.dennnis@gmail.com >
2026-05-28 09:26:38 +02: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
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
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
Drew Cain
c4ef7abff5
test(core): isolate XDG_CONFIG_HOME so host env can't leak into tests ( #845 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 13:34:41 -05:00
Drew Cain
5ae8a733ea
fix(mcp): route mixed local/cloud projects correctly ( #837 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
2026-05-23 11:31:13 -05:00
Rafael Madriz
b94ef01f82
feat(core): add XDG_CONFIG_HOME support ( #844 )
...
Signed-off-by: Rafael Madriz <rafa@rafaelmadriz.com >
2026-05-22 15:18:06 -05:00
Sean Campbell
12af7930de
docs(installer): use pgvector image for Postgres compose ( #840 )
...
Signed-off-by: rudi193-cmd <rudi193@gmail.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Drew Cain <groksrc@gmail.com >
2026-05-22 08:54:18 -05:00
Paul Hernandez
9e3fe26a83
fix(core): purge SQLite search_index on project delete ( #832 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-16 16:47:24 -05:00
Paul Hernandez
47ee982041
perf(cli): defer local ASGI app import ( #828 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-15 17:59:58 -05:00
Paul Hernandez
4d22c398c6
fix(sync): preserve bmignore rclone filters ( #827 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-15 17:48:49 -05:00
Paul Hernandez
3bed6d8890
chore(deps): update deps and harden security ( #825 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-15 10:45:14 -05:00
Paul Hernandez
4cba7ba01c
fix(core): parse prose wikilinks as inline links ( #824 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-14 11:43:11 -05:00
Drew Cain
8eeec64e28
fix: basic-memory project list does not list projects from all workspaces ( #822 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
2026-05-14 09:46:02 -05:00
Paul Hernandez
c6fa185bf3
fix(mcp): route edit_note workspace-qualified permalinks ( #813 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-11 12:56:26 -05:00
Paul Hernandez
415c2b3d6e
feat(cli): add orphan entity command ( #816 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-11 12:13:14 -05:00
Paul Hernandez
4aa0cbdd62
fix(sync): ignore hidden paths relative to watched project ( #815 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-11 11:14:03 -05:00
Paul Hernandez
55f314237d
fix(sync): avoid shell for scan subprocesses ( #814 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-11 09:20:11 -05:00
Drew Cain
9862ef5411
fix(core): use updated_at for recent_activity filter and ordering ( #812 )
...
Signed-off-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Signed-off-by: Drew Cain <groksrc@gmail.com >
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
Co-authored-by: phernandez <paul@basicmachines.co >
2026-05-11 09:14:06 -05:00
Paul Hernandez
df5e8d805f
fix(mcp): centralize workspace permalink routing ( #808 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-08 16:44:57 -05:00
Paul Hernandez
831dc1ecdc
fix(mcp): make multi-project search opt-in ( #807 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-08 12:54:20 -05:00
Paul Hernandez
26381aeed1
fix(mcp): use lightweight graph hydration lookup ( #806 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-08 10:07:29 -05:00
Paul Hernandez
7918e5c6bf
fix(mcp): preserve workspace paths in build_context ( #801 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-08 09:53:54 -05:00
Paul Hernandez
f312341020
fix(mcp): add workspace routing to delete_project ( #803 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-08 09:48:51 -05:00
Drew Cain
3415fd1014
fix(core): parse picoschema modifier descriptions ( #796 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: phernandez <paul@basicmachines.co >
2026-05-06 12:21:35 -05:00
Paul Hernandez
b08659e228
fix(api): accept qualified project resolver hints ( #795 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-06 10:33:11 -05:00
Paul Hernandez
09a4b09436
feat(api): include search result totals ( #791 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-04 14:57:04 -05:00
Paul Hernandez
a661e924df
feat(mcp): create projects by workspace slug ( #789 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-03 19:31:55 -05:00
Paul Hernandez
05adda1502
fix(mcp): route workspace-qualified memory urls ( #790 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-03 18:18:10 -05:00
Drew Cain
0a72d81bb3
fix(mcp): cap recent_activity rows with explicit truncation footer ( #785 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-03 17:43:42 -05:00
Paul Hernandez
b4bf14ebf7
fix(mcp): list factory projects across workspaces ( #778 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-02 09:17:25 -05:00
Paul Hernandez
0b335476d6
fix(mcp): resolve projects by external_id, remove workspace from MCP tools ( #777 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-01 05:15:44 -05:00
Paul Hernandez
2fccc74a20
feat(cli): refuse db reset while basic-memory mcp processes run ( #776 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-29 15:48:19 -05:00
Paul Hernandez
c4956cac16
fix(cli): cleanup local DB state on set-cloud/set-local ( #775 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-29 11:50:14 -05:00
Paul Hernandez
128c2da40c
fix(cli): clear default_workspace on cloud logout ( #773 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-29 09:53:09 -05:00
Paul Hernandez
2bfb9c76df
fix(core): degrade gracefully when sqlite-vec cannot load on init ( #774 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-29 08:57:31 -05:00
Paul Hernandez
953fe20aef
test(core): regression guard for vector-row cleanup on entity delete ( #764 ) ( #771 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-28 23:20:15 -05:00
Paul Hernandez
a4282d9f2f
fix(core): skip Obsidian callouts in observation parser ( #769 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-28 23:15:13 -05:00
Paul Hernandez
799dd6c629
fix(mcp): remove no-op pagination params from read_note and view_note ( #768 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-28 23:05:14 -05:00
Viktor Szépe
4d62b623db
chore(core): fix typos ( #761 )
...
Signed-off-by: Viktor Szépe <viktor@szepe.net >
2026-04-23 10:12:46 -05:00
Paul Hernandez
2fe4488eda
fix(sync): constrain watch service to --project scope ( #759 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-20 13:46:13 -05:00
Paul Hernandez
f3e46d7984
feat(mcp): discover projects across workspaces ( #757 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-18 14:04:57 -05:00
jope-bm
56d6f1b4a5
fix(mcp): report cloud projects as source=cloud in factory mode ( #752 )
...
Signed-off-by: Joe P <joe@basicmemory.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-18 11:10:20 -06:00
Paul Hernandez
1b39062ecd
refactor(core): rip telemetry wrappers, use logfire directly ( #754 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-17 13:58:19 -05:00
Paul Hernandez
c4cf0aff1e
perf(sync): speed up single markdown file indexing ( #751 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-17 07:08:21 -05:00
phernandez
1c343bed66
perf(sync): skip unchanged markdown indexing
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-16 18:27:52 -05:00
phernandez
c50d97e548
fix(sync): instrument single markdown indexing
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-16 18:04:17 -05:00
Drew Cain
e2e65575d6
fix(core): honor BASIC_MEMORY_CONFIG_DIR across remaining call sites ( #744 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-15 22:55:25 -05:00
Drew Cain
bf9a6b4a75
fix(core): resolve FastEmbed cache under data dir instead of /tmp ( #743 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-15 22:55:00 -05:00