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
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
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
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
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
phernandez
5365f971ef
chore(integrations): consolidate agent packages
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-05-30 14:16:04 -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
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
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
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
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
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
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
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
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
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
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
4e53bb83fd
refactor(core): simplify note write flow ( #739 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-15 17:56:27 -05:00
phernandez
8f2b25f0e0
test(core): stabilize postgres fixtures
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-13 14:25:26 -05:00
Paul Hernandez
052545b661
chore(core): make ty the default typechecker ( #736 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-13 10:34:01 -05:00
Drew Cain
b3403e96b3
fix: add workspace routing to cloud upload and API client ( #704 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
Co-authored-by: phernandez <paul@basicmachines.co >
2026-04-06 18:18:40 -05:00
Paul Hernandez
fe04a0b2a2
fix(mcp): pass workspace parameter through client factory ( #722 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-06 16:57:37 -05:00
Paul Hernandez
e6b98a15c7
fix(cli): propagate cloud workspace routing and incremental sync ( #712 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-03 14:25:02 -05:00
phernandez
7696fca826
fix: restore MCP telemetry compatibility and outcomes
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-03-28 15:31:13 -05:00
phernandez
98a2a3cbaf
Unify MCP telemetry spans across routers and services
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-03-28 14:42:18 -05:00
phernandez
a4e0422926
perf fixes
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-03-27 22:12:44 -05:00
Paul Hernandez
4791e19685
feat: add Logfire phased instrumentation ( #692 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-24 20:39:42 -05:00
Paul Hernandez
36848410a1
feat(core): add default_search_type config setting ( #676 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 22:19:53 -05:00
Paul Hernandez
1a6a65571e
fix(mcp): add project detection from memory:// URLs in edit_note and delete_note ( #668 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 19:14:22 -05:00
Paul Hernandez
013864ebf0
fix(cli): use resolved project path in doctor command ( #667 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 18:43:23 -05:00
Drew Cain
db60942267
fix(core): invalidate config cache when file is modified by another process ( #662 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 23:05:55 -05:00
Paul Hernandez
9809b469c6
fix: enforce strict entity resolution in destructive MCP tools ( #650 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 15:56:07 -05:00
Paul Hernandez
ad3f2650d9
feat: add insert_before_section and insert_after_section edit operations ( #648 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 10:54:10 -05:00
phernandez
e846ae85d8
fix: semantic embeddings not generated on fresh DB or upgrade
...
The previous backfill trigger relied on Alembic revision tracking, but
alembic_version only stores the head revision — intermediate revisions
(like the backfill trigger) are invisible after a multi-step upgrade or
fresh DB creation.
Three changes fix this:
1. Replace Alembic revision check with a simple "entities exist but
embeddings are empty" check that works regardless of migration path
2. Generate embeddings during sync — after FTS indexing, batch-embed all
synced entities at the end of the sync operation
3. Add background backfill at MCP startup for the upgrade path (entities
already exist, no embeddings) without blocking server readiness
Also adds clear startup logging for semantic embedding status so issues
are easy to spot in the logs.
📋 Covers: fresh DB, upgrade from pre-embedding version, db reset,
interrupted backfill
Signed-off-by: Pedro Hernandez <pedro@basicmachines.co >
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
Signed-off-by: phernandez <paul@basicmachines.co >
2026-03-07 13:23:39 -06:00
phernandez
63e4bcdf1d
fix: clarify search_notes parameter naming and fix note_types case sensitivity
...
- Add Annotated descriptions to note_types and entity_types parameters so
LLMs can distinguish frontmatter type filtering from knowledge graph item
type filtering (search.py, ui_sdk.py)
- Lowercase note_types values at filter time so "Chapter" matches stored
"chapter"
- Fix misleading entity_types references in schema.py guidance strings
(should be note_types)
- Add permalink pattern documentation note about full path matching
- Add test for note_types case-insensitive lowercasing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
Signed-off-by: phernandez <paul@basicmachines.co >
2026-03-05 15:08:52 -06:00
phernandez
f23dd0474b
fix(test): patch API fallback in project_context tests for Postgres
...
In Postgres test mode, stale dependency_overrides on the module-level
FastAPI app allow _resolve_default_project_from_api() to query a live
database and return 'test-project' even when the test sets
default_project=None. Monkeypatch the async fallback in the three
affected tests to isolate config-based resolution from API leakage.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
Signed-off-by: phernandez <paul@basicmachines.co >
2026-03-04 15:34:35 -06:00
phernandez
1fdc9fdc69
fix: resolve_project_parameter falls back to projects API for default ( #644 )
...
In cloud mode, ConfigManager has no local config so default_project
is always None. Add API fallback in resolve_project_parameter that
queries /v2/projects/ for the default_project field. This fixes all
MCP tools that rely on project resolution (recent_activity, etc).
Removed discovery mode tests that simulated an invalid state by
clearing is_default — there must always be a default project.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
Signed-off-by: phernandez <paul@basicmachines.co >
2026-03-04 13:17:16 -06:00