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
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
Paul Hernandez
a872947e03
fix(cli): show cloud index freshness in project info ( #734 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-10 09:22:35 -05:00
Paul Hernandez
cff31c5797
feat(cli): support cloud project visibility on add ( #715 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-03 17:30:09 -05:00
phernandez
01cbad1dbe
Allow long relation_type values in responses
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-03-28 09:56:22 -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
phernandez
76ac880f2d
feat(api): add GET /knowledge/graph endpoint for full graph visualization
...
Returns all entities and resolved relations in a flat node/edge format
optimized for graph rendering. Replaces the frontend's use of the
recent memory endpoint which only returned a subset of relations.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
Signed-off-by: phernandez <paul@basicmachines.co >
2026-03-08 11:52:17 -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
373893a7ee
fix: restore API backward compatibility for v0.18.x clients ( #638 )
...
v0.18.5 clients (homebrew) fail against v0.19.0 servers because:
- `entity_type` was renamed to `note_type` in EntityResponse
- 13 fields gained `Field(exclude=True)` and vanished from JSON
🔧 EntityResponse: add `entity_type` computed_field mirroring `note_type`
🔧 memory.py: remove `exclude=True` from 13 fields across EntitySummary,
RelationSummary, ObservationSummary, and MemoryMetadata
🔧 Add v0.18 backward-compat contract tests
Closes #638
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
Signed-off-by: phernandez <paul@basicmachines.co >
2026-03-01 12:08:25 -06:00
Paul Hernandez
e97eafa55a
fix: build_context related_results schema validation failure ( #631 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-27 12:30:44 -06:00
phernandez
b09eca1698
feat: add EmbeddingStatus schema and get_embedding_status() service method
...
Add EmbeddingStatus model to project_info schemas and wire it into
ProjectInfoResponse. ProjectService.get_embedding_status() queries
vector tables for chunk/embedding counts, detects orphaned chunks
and missing embeddings, and recommends reindex when appropriate.
Handles both SQLite and Postgres backends. 🔍
Includes 6 unit tests covering: disabled search, missing vector tables,
entities without chunks, orphaned chunks, healthy state, and integration
with get_project_info().
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
Signed-off-by: phernandez <paul@basicmachines.co >
2026-02-25 11:44:50 -06:00
jope-bm
da4d369c32
feat: add created_by and last_updated_by user tracking to Entity ( #602 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 11:20:59 -07:00
Paul Hernandez
0f3889fdd0
fix: Return matched chunk text in search results ( #601 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 21:01:20 -06:00
Paul Hernandez
c44291830c
chore: rename entity_type to note_type ( #600 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 20:28:57 -06:00
Paul Hernandez
ee0397513d
fix: recent_activity dedup + pagination across MCP tools ( #595 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-20 21:48:58 -06:00
jope-bm
deef89a724
feat: Add display_name and is_private to ProjectItem ( #574 )
...
Signed-off-by: Joe P <joe@basicmemory.com >
Signed-off-by: phernandez <paul@basicmachines.co >
Signed-off-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: Paul Hernandez <60959+phernandez@users.noreply.github.com >
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Paul Hernandez <phernandez@users.noreply.github.com >
Co-authored-by: phernandez <paul@basicmachines.co >
Co-authored-by: jope-bm <jope-bm@users.noreply.github.com >
2026-02-20 01:44:07 -06:00
Paul Hernandez
f2683291e4
feat: add workspace selection flow for MCP and CLI ( #576 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-02-17 22:48:06 -06:00
Paul Hernandez
55d675e278
feat: min_similarity override, cloud promo improvements ( #570 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 16:44:02 -06:00
Drew Cain
6afe4fd0cc
feat: expose external_id in EntityResponse and link resolver ( #569 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-15 20:33:37 -06:00
Paul Hernandez
07778790d3
feat: add semantic vector search for SQLite and Postgres ( #550 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Signed-off-by: bm-clawd <clawd@basicmemory.com >
Co-authored-by: bm-clawd <clawd@basicmemory.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-12 15:44:47 -06:00
Paul Hernandez
c97733d785
feat: Schema system for Basic Memory ( #549 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-11 15:04:42 -06:00
Paul Hernandez
530cbac73f
feat: fast edit entities, refactors for webui, enhance search ( #532 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-01-31 15:16:52 -06:00
Drew Cain
0023e736ab
feat: add context-aware wiki link resolution with source_path support ( #527 )
...
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 19:11:41 -06:00
Paul Hernandez
0b2080114b
feat: add directory support to move_note and delete_note tools ( #518 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 19:52:10 -06:00
phernandez
9206e7960a
return external_id with directory response
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-01-02 23:43:14 -06:00
Paul Hernandez
b4486d20bd
test: remove stdlib mocks, strengthen integration coverage ( #489 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-02 14:22:01 -06:00
jope-bm
a4000f64ce
feat: add stable external_id (UUID) to Project and Entity models ( #485 )
...
Signed-off-by: Joe P <joe@basicmemory.com >
Signed-off-by: Paul Hernandez <60959+phernandez@users.noreply.github.com >
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com >
Co-authored-by: Paul Hernandez <60959+phernandez@users.noreply.github.com >
Co-authored-by: phernandez <paul@basicmachines.co >
2026-01-02 13:00:35 -06:00
Paul Hernandez
537e58ad7d
fix: make RelationResponse.from_id optional to handle null permalinks ( #484 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-30 08:12:29 -06:00
phernandez
45d6caf723
fix: remove MaxLen constraint from observation content
...
The API Pydantic schema had a MaxLen(1000) constraint on observation
content while the database uses SQLAlchemy's Text type (unlimited).
This mismatch caused validation errors when observations exceeded
1000 characters (e.g., JSON schemas with 1458+ chars).
Removed the MaxLen constraint to match the DB schema. Retained:
- BeforeValidator(str.strip) for whitespace cleaning
- MinLen(1) to ensure non-empty content
Added comprehensive tests to verify:
- Long content (10K+ chars) is accepted
- Very long content (50K+ chars) is accepted
- Empty/whitespace-only content is still rejected
- Whitespace stripping still works
Fixes #385
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
Signed-off-by: phernandez <paul@basicmachines.co >
2025-12-24 13:41:28 -06:00
jope-bm
1a74d85973
feat: Complete Phase 2 of API v2 migration - Update MCP tools to use v2 endpoints ( #447 )
...
Signed-off-by: Joe P <joe@basicmemory.com >
Signed-off-by: Paul Hernandez <60959+phernandez@users.noreply.github.com >
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Paul Hernandez <60959+phernandez@users.noreply.github.com >
Co-authored-by: phernandez <paul@basicmachines.co >
2025-12-24 12:59:14 -06:00
jope-bm
28cc5225a7
feat: Implement API v2 with ID-based endpoints (Phase 1) ( #441 )
...
Signed-off-by: Joe P <joe@basicmemory.com >
Signed-off-by: phernandez <paul@basicmachines.co >
Signed-off-by: Claude <noreply@anthropic.com >
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Paul Hernandez <60959+phernandez@users.noreply.github.com >
Co-authored-by: phernandez <paul@basicmachines.co >
2025-11-27 10:35:55 -06:00
Cedric Hurst
b004565df9
fix: handle periods in kebab_filenames mode ( #424 )
2025-11-18 06:49:55 -05:00
Paul Hernandez
434cdf24dd
feat: Add circuit breaker for file sync failures ( #364 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude <noreply@anthropic.com >
2025-10-16 09:47:48 -05:00
phernandez
a78e8c3ac5
style: Apply linter formatting changes
2025-10-14 09:34:10 -05:00
phernandez
ba74ca7e18
fix: Update CloudProjectCreateResponse schema to match API response
...
The /proxy/projects/projects POST endpoint returns a ProjectStatusResponse
with fields: message, status, default, old_project, new_project.
Updated CloudProjectCreateResponse schema to match this format instead of
expecting name, path, message fields.
Also updated all related tests to use the correct response format:
- tests/cli/test_cloud_utils.py (3 tests)
- tests/cli/test_bisync_commands.py (1 test)
Fixes the validation error when creating cloud projects via upload command:
"bm cloud upload --project test --create-project specs"
Signed-off-by: Pablo Hernandez <pablo@basicmachines.co >
Signed-off-by: phernandez <paul@basicmachines.co >
2025-10-13 23:56:59 -05:00
Paul Hernandez
3e876a7549
fix: correct ProjectItem.home property to return path instead of name ( #341 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Paul Hernandez <phernandez@users.noreply.github.com >
Co-authored-by: Claude <noreply@anthropic.com >
2025-10-08 01:03:12 -05:00
Paul Hernandez
a7bf42ef49
fix: Add proper datetime JSON schema format annotations for MCP validation ( #312 )
...
Signed-off-by: Claude Code <noreply@anthropic.com >
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Paul Hernandez <phernandez@users.noreply.github.com >
2025-10-03 22:47:02 -05:00
Paul Hernandez
903591384d
feat: Add disable_permalinks config flag ( #313 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Paul Hernandez <phernandez@users.noreply.github.com >
Co-authored-by: Claude <noreply@anthropic.com >
2025-10-03 22:11:47 -05:00
Paul Hernandez
99a35a7fb4
feat: Cloud CLI cloud sync via rclone bisync ( #322 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude <noreply@anthropic.com >
2025-10-03 10:18:43 -05:00
Paul Hernandez
324844a670
fix: resolve entity relations in background to prevent cold start blocking ( #319 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude <noreply@anthropic.com >
2025-09-28 09:24:29 -05:00
Paul Hernandez
f818702ab7
fix: enforce minimum 1-day timeframe for recent_activity to handle timezone issues ( #318 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude <noreply@anthropic.com >
2025-09-27 23:37:00 -05:00
Paul Hernandez
a1d7792bdb
feat: Implement SPEC-6 Stateless Architecture for MCP Tools ( #298 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Signed-off-by: Paul Hernandez <60959+phernandez@users.noreply.github.com >
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Drew Cain <groksrc@users.noreply.github.com >
2025-09-21 20:39:19 -05:00
Paul Hernandez
e0d8aeb149
feat: Basic memory cloud upload ( #296 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Signed-off-by: Drew Cain <groksrc@gmail.com >
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Paul Hernandez <phernandez@users.noreply.github.com >
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Drew Cain <groksrc@gmail.com >
2025-09-16 15:07:14 -05:00
Brandon Mayes
17b929446a
fix: Sanitize folder names and properly join paths ( #292 )
2025-09-15 23:26:56 -04:00
Paul Hernandez
b00e4ff5a1
fix: replace deprecated json_encoders with Pydantic V2 field serializers ( #295 )
...
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Paul Hernandez <phernandez@users.noreply.github.com >
2025-09-14 22:19:16 -05:00
jope-bm
3a6baf80fc
feat: Merge Cloud auth ( #291 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Signed-off-by: Joe P <joe@basicmemory.com >
Co-authored-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude <noreply@anthropic.com >
2025-09-09 14:48:17 -06:00
jope-bm
ec2fa07350
chore: apply lint and formatting fixes for 0.14.4 release ( #290 )
...
Signed-off-by: Joe P <joe@basicmemory.com >
Co-authored-by: Claude <noreply@anthropic.com >
2025-09-05 10:00:52 -06:00
jope-bm
cd7cee650f
fix: complete project management special character support ( #272 ) ( #279 )
...
Signed-off-by: Joe P <joe@basicmemory.com >
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: jope-bm <jope-bm@users.noreply.github.com >
Co-authored-by: Claude <noreply@anthropic.com >
2025-08-29 10:57:13 -06:00
Brandon Mayes
74e12eb782
fix: Sanitize filenames and allow optional kebab case ( #260 )
...
Signed-off-by: Brandon Mayes <5610870+bdmayes@users.noreply.github.com >
2025-08-27 19:29:01 -04:00
jope-bm
7aff836c57
fix: Add ISO datetime serialization to MCP schema models ( #270 )
...
Signed-off-by: Joe P <joe@basicmemory.com >
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: jope-bm <jope-bm@users.noreply.github.com >
Co-authored-by: Claude <noreply@anthropic.com >
2025-08-23 07:23:07 -06:00