basic-memory 0.15.0__tar.gz → 0.15.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of basic-memory might be problematic. Click here for more details.

Files changed (362) hide show
  1. {basic_memory-0.15.0 → basic_memory-0.15.1}/.github/workflows/test.yml +0 -4
  2. {basic_memory-0.15.0 → basic_memory-0.15.1}/CHANGELOG.md +155 -0
  3. {basic_memory-0.15.0 → basic_memory-0.15.1}/CLAUDE.md +117 -20
  4. {basic_memory-0.15.0 → basic_memory-0.15.1}/CONTRIBUTING.md +80 -7
  5. {basic_memory-0.15.0 → basic_memory-0.15.1}/Dockerfile +3 -2
  6. {basic_memory-0.15.0 → basic_memory-0.15.1}/PKG-INFO +51 -4
  7. {basic_memory-0.15.0 → basic_memory-0.15.1}/README.md +49 -2
  8. basic_memory-0.15.1/docs/ai-assistant-guide-extended.md +3259 -0
  9. {basic_memory-0.15.0 → basic_memory-0.15.1}/justfile +10 -5
  10. {basic_memory-0.15.0 → basic_memory-0.15.1}/pyproject.toml +8 -4
  11. basic_memory-0.15.1/specs/SPEC-15 Configuration Persistence via Tigris for Cloud Tenants.md +264 -0
  12. basic_memory-0.15.1/specs/SPEC-16 MCP Cloud Service Consolidation.md +719 -0
  13. basic_memory-0.15.1/specs/SPEC-17 Semantic Search with ChromaDB.md +1439 -0
  14. basic_memory-0.15.1/specs/SPEC-18 AI Memory Management Tool.md +528 -0
  15. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/__init__.py +1 -1
  16. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/api/routers/directory_router.py +23 -2
  17. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/api/routers/project_router.py +1 -0
  18. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/auth.py +2 -2
  19. basic_memory-0.15.1/src/basic_memory/cli/commands/command_utils.py +43 -0
  20. basic_memory-0.15.1/src/basic_memory/cli/commands/mcp.py +94 -0
  21. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/project.py +54 -49
  22. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/status.py +6 -15
  23. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/config.py +55 -9
  24. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/deps.py +7 -5
  25. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/ignore_utils.py +7 -7
  26. basic_memory-0.15.1/src/basic_memory/mcp/async_client.py +138 -0
  27. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/prompts/continue_conversation.py +16 -15
  28. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/prompts/search.py +12 -11
  29. basic_memory-0.15.1/src/basic_memory/mcp/resources/ai_assistant_guide.md +283 -0
  30. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/resources/project_info.py +9 -7
  31. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/tools/build_context.py +40 -39
  32. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/tools/canvas.py +21 -20
  33. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/tools/chatgpt_tools.py +11 -2
  34. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/tools/delete_note.py +22 -21
  35. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/tools/edit_note.py +105 -104
  36. basic_memory-0.15.1/src/basic_memory/mcp/tools/list_directory.py +167 -0
  37. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/tools/move_note.py +127 -125
  38. basic_memory-0.15.1/src/basic_memory/mcp/tools/project_management.py +200 -0
  39. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/tools/read_content.py +64 -63
  40. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/tools/read_note.py +88 -88
  41. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/tools/recent_activity.py +139 -135
  42. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/tools/search.py +27 -26
  43. basic_memory-0.15.1/src/basic_memory/mcp/tools/sync_status.py +261 -0
  44. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/tools/utils.py +0 -15
  45. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/tools/view_note.py +14 -28
  46. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/tools/write_note.py +97 -87
  47. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/repository/entity_repository.py +60 -0
  48. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/repository/repository.py +16 -3
  49. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/repository/search_repository.py +42 -0
  50. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/schemas/project_info.py +1 -1
  51. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/services/directory_service.py +124 -3
  52. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/services/entity_service.py +31 -9
  53. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/services/project_service.py +97 -10
  54. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/services/search_service.py +16 -8
  55. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/sync/sync_service.py +28 -13
  56. basic_memory-0.15.1/test-int/BENCHMARKS.md +139 -0
  57. basic_memory-0.15.1/test-int/cli/test_project_commands_integration.py +121 -0
  58. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/conftest.py +1 -1
  59. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/mcp/test_project_management_integration.py +39 -0
  60. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/mcp/test_write_note_integration.py +59 -0
  61. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/test_disable_permalinks_integration.py +0 -3
  62. basic_memory-0.15.1/test-int/test_sync_performance_benchmark.py +369 -0
  63. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_directory_router.py +133 -0
  64. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_project_router.py +79 -74
  65. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/conftest.py +5 -0
  66. basic_memory-0.15.1/tests/db/test_issue_254_foreign_key_constraints.py +170 -0
  67. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_tool_view_note.py +35 -43
  68. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/repository/test_entity_repository.py +212 -0
  69. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/services/test_directory_service.py +48 -0
  70. basic_memory-0.15.1/tests/services/test_project_removal_bug.py +138 -0
  71. basic_memory-0.15.1/tests/services/test_project_service.py +1200 -0
  72. basic_memory-0.15.1/tests/services/test_project_service_operations.py +111 -0
  73. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/test_config.py +89 -0
  74. basic_memory-0.15.1/tests/test_deps.py +206 -0
  75. {basic_memory-0.15.0 → basic_memory-0.15.1}/uv.lock +1 -1
  76. basic_memory-0.15.1/v0.15.0-RELEASE-DOCS.md +161 -0
  77. basic_memory-0.15.1/v15-docs/README.md +61 -0
  78. basic_memory-0.15.1/v15-docs/api-performance.md +585 -0
  79. basic_memory-0.15.1/v15-docs/background-relations.md +531 -0
  80. basic_memory-0.15.1/v15-docs/basic-memory-home.md +371 -0
  81. basic_memory-0.15.1/v15-docs/bug-fixes.md +395 -0
  82. basic_memory-0.15.1/v15-docs/chatgpt-integration.md +648 -0
  83. basic_memory-0.15.1/v15-docs/cloud-authentication.md +381 -0
  84. basic_memory-0.15.1/v15-docs/cloud-bisync.md +531 -0
  85. basic_memory-0.15.1/v15-docs/cloud-mode-usage.md +546 -0
  86. basic_memory-0.15.1/v15-docs/cloud-mount.md +501 -0
  87. basic_memory-0.15.1/v15-docs/default-project-mode.md +425 -0
  88. basic_memory-0.15.1/v15-docs/env-file-removal.md +434 -0
  89. basic_memory-0.15.1/v15-docs/env-var-overrides.md +449 -0
  90. basic_memory-0.15.1/v15-docs/explicit-project-parameter.md +198 -0
  91. basic_memory-0.15.1/v15-docs/gitignore-integration.md +621 -0
  92. basic_memory-0.15.1/v15-docs/project-root-env-var.md +424 -0
  93. basic_memory-0.15.1/v15-docs/sqlite-performance.md +512 -0
  94. basic_memory-0.15.0/src/basic_memory/cli/commands/command_utils.py +0 -60
  95. basic_memory-0.15.0/src/basic_memory/cli/commands/mcp.py +0 -89
  96. basic_memory-0.15.0/src/basic_memory/mcp/async_client.py +0 -40
  97. basic_memory-0.15.0/src/basic_memory/mcp/resources/ai_assistant_guide.md +0 -551
  98. basic_memory-0.15.0/src/basic_memory/mcp/tools/headers.py +0 -44
  99. basic_memory-0.15.0/src/basic_memory/mcp/tools/list_directory.py +0 -164
  100. basic_memory-0.15.0/src/basic_memory/mcp/tools/project_management.py +0 -197
  101. basic_memory-0.15.0/src/basic_memory/mcp/tools/sync_status.py +0 -256
  102. basic_memory-0.15.0/test-int/cli/test_project_commands_integration.py +0 -112
  103. basic_memory-0.15.0/tests/db/test_issue_254_foreign_key_constraints.py +0 -158
  104. basic_memory-0.15.0/tests/services/test_project_removal_bug.py +0 -134
  105. basic_memory-0.15.0/tests/services/test_project_service.py +0 -716
  106. basic_memory-0.15.0/tests/services/test_project_service_operations.py +0 -103
  107. {basic_memory-0.15.0 → basic_memory-0.15.1}/.claude/agents/python-developer.md +0 -0
  108. {basic_memory-0.15.0 → basic_memory-0.15.1}/.claude/agents/system-architect.md +0 -0
  109. {basic_memory-0.15.0 → basic_memory-0.15.1}/.claude/commands/release/beta.md +0 -0
  110. {basic_memory-0.15.0 → basic_memory-0.15.1}/.claude/commands/release/changelog.md +0 -0
  111. {basic_memory-0.15.0 → basic_memory-0.15.1}/.claude/commands/release/release-check.md +0 -0
  112. {basic_memory-0.15.0 → basic_memory-0.15.1}/.claude/commands/release/release.md +0 -0
  113. {basic_memory-0.15.0 → basic_memory-0.15.1}/.claude/commands/spec.md +0 -0
  114. {basic_memory-0.15.0 → basic_memory-0.15.1}/.claude/commands/test-live.md +0 -0
  115. {basic_memory-0.15.0 → basic_memory-0.15.1}/.dockerignore +0 -0
  116. {basic_memory-0.15.0 → basic_memory-0.15.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  117. {basic_memory-0.15.0 → basic_memory-0.15.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  118. {basic_memory-0.15.0 → basic_memory-0.15.1}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  119. {basic_memory-0.15.0 → basic_memory-0.15.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  120. {basic_memory-0.15.0 → basic_memory-0.15.1}/.github/dependabot.yml +0 -0
  121. {basic_memory-0.15.0 → basic_memory-0.15.1}/.github/workflows/claude-code-review.yml +0 -0
  122. {basic_memory-0.15.0 → basic_memory-0.15.1}/.github/workflows/claude-issue-triage.yml +0 -0
  123. {basic_memory-0.15.0 → basic_memory-0.15.1}/.github/workflows/claude.yml +0 -0
  124. {basic_memory-0.15.0 → basic_memory-0.15.1}/.github/workflows/dev-release.yml +0 -0
  125. {basic_memory-0.15.0 → basic_memory-0.15.1}/.github/workflows/docker.yml +0 -0
  126. {basic_memory-0.15.0 → basic_memory-0.15.1}/.github/workflows/pr-title.yml +0 -0
  127. {basic_memory-0.15.0 → basic_memory-0.15.1}/.github/workflows/release.yml +0 -0
  128. {basic_memory-0.15.0 → basic_memory-0.15.1}/.gitignore +0 -0
  129. {basic_memory-0.15.0 → basic_memory-0.15.1}/.python-version +0 -0
  130. {basic_memory-0.15.0 → basic_memory-0.15.1}/CITATION.cff +0 -0
  131. {basic_memory-0.15.0 → basic_memory-0.15.1}/CLA.md +0 -0
  132. {basic_memory-0.15.0 → basic_memory-0.15.1}/CODE_OF_CONDUCT.md +0 -0
  133. {basic_memory-0.15.0 → basic_memory-0.15.1}/LICENSE +0 -0
  134. {basic_memory-0.15.0 → basic_memory-0.15.1}/SECURITY.md +0 -0
  135. {basic_memory-0.15.0 → basic_memory-0.15.1}/docker-compose.yml +0 -0
  136. {basic_memory-0.15.0 → basic_memory-0.15.1}/docs/Docker.md +0 -0
  137. {basic_memory-0.15.0 → basic_memory-0.15.1}/docs/character-handling.md +0 -0
  138. {basic_memory-0.15.0 → basic_memory-0.15.1}/docs/cloud-cli.md +0 -0
  139. {basic_memory-0.15.0 → basic_memory-0.15.1}/llms-install.md +0 -0
  140. {basic_memory-0.15.0 → basic_memory-0.15.1}/smithery.yaml +0 -0
  141. {basic_memory-0.15.0 → basic_memory-0.15.1}/specs/SPEC-1 Specification-Driven Development Process.md +0 -0
  142. {basic_memory-0.15.0 → basic_memory-0.15.1}/specs/SPEC-11 Basic Memory API Performance Optimization.md +0 -0
  143. {basic_memory-0.15.0 → basic_memory-0.15.1}/specs/SPEC-13 CLI Authentication with Subscription Validation.md +0 -0
  144. {basic_memory-0.15.0 → basic_memory-0.15.1}/specs/SPEC-14- Cloud Git Versioning & GitHub Backup.md +0 -0
  145. {basic_memory-0.15.0 → basic_memory-0.15.1}/specs/SPEC-2 Slash Commands Reference.md +0 -0
  146. {basic_memory-0.15.0 → basic_memory-0.15.1}/specs/SPEC-3 Agent Definitions.md +0 -0
  147. {basic_memory-0.15.0 → basic_memory-0.15.1}/specs/SPEC-5 CLI Cloud Upload via WebDAV.md +0 -0
  148. {basic_memory-0.15.0 → basic_memory-0.15.1}/specs/SPEC-6 Explicit Project Parameter Architecture.md +0 -0
  149. {basic_memory-0.15.0 → basic_memory-0.15.1}/specs/SPEC-7 POC to spike Tigris Turso for local access to cloud data.md +0 -0
  150. {basic_memory-0.15.0 → basic_memory-0.15.1}/specs/SPEC-8 TigrisFS Integration.md +0 -0
  151. {basic_memory-0.15.0 → basic_memory-0.15.1}/specs/SPEC-9 Multi-Project Bidirectional Sync Architecture.md +0 -0
  152. {basic_memory-0.15.0 → basic_memory-0.15.1}/specs/SPEC-9-1 Follow-Ups- Conflict, Sync, and Observability.md +0 -0
  153. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/alembic/alembic.ini +0 -0
  154. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/alembic/env.py +0 -0
  155. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/alembic/migrations.py +0 -0
  156. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/alembic/script.py.mako +0 -0
  157. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
  158. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
  159. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +0 -0
  160. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +0 -0
  161. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/alembic/versions/a1b2c3d4e5f6_fix_project_foreign_keys.py +0 -0
  162. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
  163. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
  164. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/api/__init__.py +0 -0
  165. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/api/app.py +0 -0
  166. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/api/routers/__init__.py +0 -0
  167. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/api/routers/importer_router.py +0 -0
  168. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/api/routers/knowledge_router.py +0 -0
  169. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/api/routers/management_router.py +0 -0
  170. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/api/routers/memory_router.py +0 -0
  171. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/api/routers/prompt_router.py +0 -0
  172. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/api/routers/resource_router.py +0 -0
  173. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/api/routers/search_router.py +0 -0
  174. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/api/routers/utils.py +0 -0
  175. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/api/template_loader.py +0 -0
  176. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/__init__.py +0 -0
  177. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/app.py +0 -0
  178. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/__init__.py +0 -0
  179. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/cloud/__init__.py +0 -0
  180. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/cloud/api_client.py +0 -0
  181. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/cloud/bisync_commands.py +0 -0
  182. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/cloud/core_commands.py +0 -0
  183. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/cloud/mount_commands.py +0 -0
  184. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/cloud/rclone_config.py +0 -0
  185. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/cloud/rclone_installer.py +0 -0
  186. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/db.py +0 -0
  187. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/import_chatgpt.py +0 -0
  188. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/import_claude_conversations.py +0 -0
  189. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/import_claude_projects.py +0 -0
  190. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/import_memory_json.py +0 -0
  191. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/sync.py +0 -0
  192. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/commands/tool.py +0 -0
  193. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/cli/main.py +0 -0
  194. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/db.py +0 -0
  195. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/file_utils.py +0 -0
  196. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/importers/__init__.py +0 -0
  197. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/importers/base.py +0 -0
  198. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/importers/chatgpt_importer.py +0 -0
  199. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/importers/claude_conversations_importer.py +0 -0
  200. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/importers/claude_projects_importer.py +0 -0
  201. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/importers/memory_json_importer.py +0 -0
  202. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/importers/utils.py +0 -0
  203. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/markdown/__init__.py +0 -0
  204. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/markdown/entity_parser.py +0 -0
  205. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/markdown/markdown_processor.py +0 -0
  206. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/markdown/plugins.py +0 -0
  207. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/markdown/schemas.py +0 -0
  208. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/markdown/utils.py +0 -0
  209. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/__init__.py +0 -0
  210. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/project_context.py +0 -0
  211. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/prompts/__init__.py +0 -0
  212. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +0 -0
  213. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/prompts/recent_activity.py +0 -0
  214. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/prompts/utils.py +0 -0
  215. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/server.py +0 -0
  216. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/mcp/tools/__init__.py +0 -0
  217. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/models/__init__.py +0 -0
  218. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/models/base.py +0 -0
  219. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/models/knowledge.py +0 -0
  220. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/models/project.py +0 -0
  221. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/models/search.py +0 -0
  222. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/repository/__init__.py +0 -0
  223. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/repository/observation_repository.py +0 -0
  224. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/repository/project_info_repository.py +0 -0
  225. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/repository/project_repository.py +0 -0
  226. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/repository/relation_repository.py +0 -0
  227. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/schemas/__init__.py +0 -0
  228. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/schemas/base.py +0 -0
  229. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/schemas/cloud.py +0 -0
  230. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/schemas/delete.py +0 -0
  231. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/schemas/directory.py +0 -0
  232. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/schemas/importer.py +0 -0
  233. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/schemas/memory.py +0 -0
  234. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/schemas/prompt.py +0 -0
  235. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/schemas/request.py +0 -0
  236. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/schemas/response.py +0 -0
  237. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/schemas/search.py +0 -0
  238. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/schemas/sync_report.py +0 -0
  239. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/services/__init__.py +0 -0
  240. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/services/context_service.py +0 -0
  241. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/services/exceptions.py +0 -0
  242. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/services/file_service.py +0 -0
  243. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/services/initialization.py +0 -0
  244. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/services/link_resolver.py +0 -0
  245. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/services/service.py +0 -0
  246. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/services/sync_status_service.py +0 -0
  247. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/sync/__init__.py +0 -0
  248. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/sync/background_sync.py +0 -0
  249. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/sync/watch_service.py +0 -0
  250. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
  251. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/templates/prompts/search.hbs +0 -0
  252. {basic_memory-0.15.0 → basic_memory-0.15.1}/src/basic_memory/utils.py +0 -0
  253. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/cli/test_sync_commands_integration.py +0 -0
  254. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/cli/test_version_integration.py +0 -0
  255. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/mcp/test_build_context_underscore.py +0 -0
  256. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/mcp/test_build_context_validation.py +0 -0
  257. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/mcp/test_chatgpt_tools_integration.py +0 -0
  258. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/mcp/test_default_project_mode_integration.py +0 -0
  259. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/mcp/test_delete_note_integration.py +0 -0
  260. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/mcp/test_edit_note_integration.py +0 -0
  261. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/mcp/test_list_directory_integration.py +0 -0
  262. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/mcp/test_move_note_integration.py +0 -0
  263. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/mcp/test_project_state_sync_integration.py +0 -0
  264. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/mcp/test_read_content_integration.py +0 -0
  265. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/mcp/test_read_note_integration.py +0 -0
  266. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/mcp/test_search_integration.py +0 -0
  267. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/mcp/test_single_project_mcp_integration.py +0 -0
  268. {basic_memory-0.15.0 → basic_memory-0.15.1}/test-int/test_db_wal_mode.py +0 -0
  269. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/Non-MarkdownFileSupport.pdf +0 -0
  270. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/Screenshot.png +0 -0
  271. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/__init__.py +0 -0
  272. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/conftest.py +0 -0
  273. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_async_client.py +0 -0
  274. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_continue_conversation_template.py +0 -0
  275. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_importer_router.py +0 -0
  276. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_knowledge_router.py +0 -0
  277. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_management_router.py +0 -0
  278. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_memory_router.py +0 -0
  279. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_project_router_operations.py +0 -0
  280. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_prompt_router.py +0 -0
  281. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_relation_background_resolution.py +0 -0
  282. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_resource_router.py +0 -0
  283. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_search_router.py +0 -0
  284. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_search_template.py +0 -0
  285. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_template_loader.py +0 -0
  286. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/api/test_template_loader_helpers.py +0 -0
  287. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/cli/conftest.py +0 -0
  288. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/cli/test_bisync_commands.py +0 -0
  289. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/cli/test_cli_tools.py +0 -0
  290. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/cli/test_cloud_authentication.py +0 -0
  291. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/cli/test_ignore_utils.py +0 -0
  292. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/cli/test_import_chatgpt.py +0 -0
  293. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/cli/test_import_claude_conversations.py +0 -0
  294. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/cli/test_import_claude_projects.py +0 -0
  295. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/cli/test_import_memory_json.py +0 -0
  296. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/importers/test_importer_base.py +0 -0
  297. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/importers/test_importer_utils.py +0 -0
  298. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/markdown/__init__.py +0 -0
  299. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/markdown/test_entity_parser.py +0 -0
  300. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/markdown/test_markdown_plugins.py +0 -0
  301. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/markdown/test_markdown_processor.py +0 -0
  302. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/markdown/test_observation_edge_cases.py +0 -0
  303. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/markdown/test_parser_edge_cases.py +0 -0
  304. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/markdown/test_relation_edge_cases.py +0 -0
  305. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/markdown/test_task_detection.py +0 -0
  306. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/conftest.py +0 -0
  307. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_obsidian_yaml_formatting.py +0 -0
  308. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_permalink_collision_file_overwrite.py +0 -0
  309. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_prompts.py +0 -0
  310. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_resources.py +0 -0
  311. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_tool_build_context.py +0 -0
  312. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_tool_canvas.py +0 -0
  313. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_tool_delete_note.py +0 -0
  314. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_tool_edit_note.py +0 -0
  315. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_tool_list_directory.py +0 -0
  316. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_tool_move_note.py +0 -0
  317. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_tool_read_content.py +0 -0
  318. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_tool_read_note.py +0 -0
  319. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_tool_recent_activity.py +0 -0
  320. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_tool_resource.py +0 -0
  321. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_tool_search.py +0 -0
  322. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_tool_sync_status.py +0 -0
  323. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_tool_utils.py +0 -0
  324. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/test_tool_write_note.py +0 -0
  325. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/mcp/tools/test_chatgpt_tools.py +0 -0
  326. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/repository/test_entity_repository_upsert.py +0 -0
  327. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/repository/test_observation_repository.py +0 -0
  328. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/repository/test_project_info_repository.py +0 -0
  329. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/repository/test_project_repository.py +0 -0
  330. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/repository/test_relation_repository.py +0 -0
  331. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/repository/test_repository.py +0 -0
  332. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/repository/test_search_repository.py +0 -0
  333. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/repository/test_search_repository_edit_bug_fix.py +0 -0
  334. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/schemas/test_base_timeframe_minimum.py +0 -0
  335. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/schemas/test_memory_serialization.py +0 -0
  336. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/schemas/test_memory_url.py +0 -0
  337. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/schemas/test_memory_url_validation.py +0 -0
  338. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/schemas/test_schemas.py +0 -0
  339. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/schemas/test_search.py +0 -0
  340. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/services/test_context_service.py +0 -0
  341. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/services/test_entity_service.py +0 -0
  342. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/services/test_entity_service_disable_permalinks.py +0 -0
  343. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/services/test_file_service.py +0 -0
  344. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/services/test_initialization.py +0 -0
  345. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/services/test_link_resolver.py +0 -0
  346. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/services/test_search_service.py +0 -0
  347. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/services/test_sync_status_service.py +0 -0
  348. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/sync/test_character_conflicts.py +0 -0
  349. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/sync/test_sync_service.py +0 -0
  350. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/sync/test_sync_wikilink_issue.py +0 -0
  351. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/sync/test_tmp_files.py +0 -0
  352. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/sync/test_watch_service.py +0 -0
  353. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/sync/test_watch_service_edge_cases.py +0 -0
  354. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/sync/test_watch_service_reload.py +0 -0
  355. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/test_db_migration_deduplication.py +0 -0
  356. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/test_production_cascade_delete.py +0 -0
  357. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/utils/test_file_utils.py +0 -0
  358. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/utils/test_frontmatter_obsidian_compatible.py +0 -0
  359. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/utils/test_parse_tags.py +0 -0
  360. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/utils/test_permalink_formatting.py +0 -0
  361. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/utils/test_utf8_handling.py +0 -0
  362. {basic_memory-0.15.0 → basic_memory-0.15.1}/tests/utils/test_validate_project_path.py +0 -0
@@ -60,10 +60,6 @@ jobs:
60
60
  run: |
61
61
  just typecheck
62
62
 
63
- - name: Run type checks
64
- run: |
65
- just typecheck
66
-
67
63
  - name: Run linting
68
64
  run: |
69
65
  just lint
@@ -1,5 +1,160 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.15.1 (2025-10-13)
4
+
5
+ ### Performance Improvements
6
+
7
+ - **#352**: Optimize sync/indexing for 43% faster performance
8
+ ([`c0538ad`](https://github.com/basicmachines-co/basic-memory/commit/c0538ad2perf0d68a2a3604e255c3f2c42c5ed))
9
+ - Significant performance improvements to file synchronization and indexing operations
10
+ - 43% reduction in sync time for large knowledge bases
11
+ - Optimized database queries and file processing
12
+
13
+ - **#350**: Optimize directory operations for 10-100x performance improvement
14
+ ([`00b73b0`](https://github.com/basicmachines-co/basic-memory/commit/00b73b0d))
15
+ - Dramatic performance improvements for directory listing operations
16
+ - 10-100x faster directory traversal depending on knowledge base size
17
+ - Reduced memory footprint for large directory structures
18
+ - Exclude null fields from directory endpoint responses for smaller payloads
19
+
20
+ ### Bug Fixes
21
+
22
+ - **#355**: Update view_note and ChatGPT tools for Claude Desktop compatibility
23
+ ([`2b7008d`](https://github.com/basicmachines-co/basic-memory/commit/2b7008d9))
24
+ - Fix view_note tool formatting for better Claude Desktop rendering
25
+ - Update ChatGPT tool integration for improved compatibility
26
+ - Enhanced artifact display in Claude Desktop interface
27
+
28
+ - **#348**: Add permalink normalization to project lookups in deps.py
29
+ ([`a09066e`](https://github.com/basicmachines-co/basic-memory/commit/a09066e0))
30
+ - Fix project lookup failures due to case sensitivity
31
+ - Normalize permalinks consistently across project operations
32
+ - Improve project switching reliability
33
+
34
+ - **#345**: Project deletion failing with permalink normalization
35
+ ([`be352ab`](https://github.com/basicmachines-co/basic-memory/commit/be352ab4))
36
+ - Fix project deletion errors related to permalink handling
37
+ - Ensure proper cleanup of project resources
38
+ - Improve error messages for deletion failures
39
+
40
+ - **#341**: Correct ProjectItem.home property to return path instead of name
41
+ ([`3e876a7`](https://github.com/basicmachines-co/basic-memory/commit/3e876a75))
42
+ - Fix ProjectItem.home to return correct project path
43
+ - Resolve configuration issues with project paths
44
+ - Improve project path resolution consistency
45
+
46
+ - **#339**: Prevent nested project paths to avoid data conflicts
47
+ ([`795e339`](https://github.com/basicmachines-co/basic-memory/commit/795e3393))
48
+ - Block creation of nested project paths that could cause data conflicts
49
+ - Add validation to prevent project path hierarchy issues
50
+ - Improve error messages for invalid project configurations
51
+
52
+ - **#338**: Normalize paths to lowercase in cloud mode to prevent case collisions
53
+ ([`07e304c`](https://github.com/basicmachines-co/basic-memory/commit/07e304ce))
54
+ - Fix path case sensitivity issues in cloud deployments
55
+ - Normalize paths consistently across cloud operations
56
+ - Prevent data loss from case-insensitive filesystem collisions
57
+
58
+ - **#336**: Cloud mode path validation and sanitization (bmc-issue-103)
59
+ ([`2a1c06d`](https://github.com/basicmachines-co/basic-memory/commit/2a1c06d9))
60
+ - Enhanced path validation for cloud deployments
61
+ - Improved path sanitization to prevent security issues
62
+ - Better error handling for invalid paths in cloud mode
63
+
64
+ - **#332**: Cloud mode path validation and sanitization
65
+ ([`7616b2b`](https://github.com/basicmachines-co/basic-memory/commit/7616b2bb))
66
+ - Additional cloud mode path fixes and improvements
67
+ - Comprehensive path validation for cloud environments
68
+ - Security enhancements for path handling
69
+
70
+ ### Features
71
+
72
+ - **#344**: Async client context manager pattern for cloud consolidation (SPEC-16)
73
+ ([`8d2e70c`](https://github.com/basicmachines-co/basic-memory/commit/8d2e70cf))
74
+ - Refactor async client to use context manager pattern
75
+ - Improve resource management and cleanup
76
+ - Enable better dependency injection for cloud deployments
77
+ - Foundation for cloud platform consolidation
78
+
79
+ - **#343**: Add SPEC-15 for configuration persistence via Tigris
80
+ ([`53438d1`](https://github.com/basicmachines-co/basic-memory/commit/53438d1e))
81
+ - Design specification for persistent configuration storage
82
+ - Foundation for cloud configuration management
83
+ - Tigris S3-compatible storage integration planning
84
+
85
+ - **#334**: Introduce BASIC_MEMORY_PROJECT_ROOT for path constraints
86
+ ([`ccc4386`](https://github.com/basicmachines-co/basic-memory/commit/ccc43866))
87
+ - Add environment variable for constraining project paths
88
+ - Improve security by limiting project creation locations
89
+ - Better control over project directory structure
90
+
91
+ ### Documentation
92
+
93
+ - **#335**: v0.15.0 assistant guide updates
94
+ ([`c6f93a0`](https://github.com/basicmachines-co/basic-memory/commit/c6f93a02))
95
+ - Update AI assistant guide for v0.15.0 features
96
+ - Improve documentation for new MCP tools
97
+ - Better examples and usage patterns
98
+
99
+ - **#339**: Add tool use documentation to write_note for root folder usage
100
+ ([`73202d1`](https://github.com/basicmachines-co/basic-memory/commit/73202d1a))
101
+ - Document how to use empty string for root folder in write_note
102
+ - Clarify folder parameter usage
103
+ - Improve tool documentation clarity
104
+
105
+ - Fix link in ai_assistant_guide resource
106
+ ([`2a1c06d`](https://github.com/basicmachines-co/basic-memory/commit/2a1c06d9))
107
+ - Correct broken documentation links
108
+ - Improve resource accessibility
109
+
110
+ ### Refactoring
111
+
112
+ - Add SPEC-17 and SPEC-18 documentation
113
+ ([`962d88e`](https://github.com/basicmachines-co/basic-memory/commit/962d88ea))
114
+ - New specification documents for future features
115
+ - Architecture planning and design documentation
116
+
117
+ ### Breaking Changes
118
+
119
+ **None** - This release maintains full backward compatibility with v0.15.0
120
+
121
+ ### Migration Guide
122
+
123
+ No manual migration required. Upgrade with:
124
+
125
+ ```bash
126
+ # Update via uv
127
+ uv tool upgrade basic-memory
128
+
129
+ # Or install fresh
130
+ uv tool install basic-memory
131
+ ```
132
+
133
+ **What's Fixed:**
134
+ - Significant performance improvements (43% faster sync, 10-100x faster directory operations)
135
+ - Multiple cloud deployment stability fixes
136
+ - Project path validation and normalization issues resolved
137
+ - Better Claude Desktop and ChatGPT integration
138
+
139
+ **What's New:**
140
+ - Context manager pattern for async clients (foundation for cloud consolidation)
141
+ - BASIC_MEMORY_PROJECT_ROOT environment variable for path constraints
142
+ - Enhanced cloud mode path handling and security
143
+ - SPEC-15 and SPEC-16 architecture documentation
144
+
145
+ ### Installation
146
+
147
+ ```bash
148
+ # Latest stable release
149
+ uv tool install basic-memory
150
+
151
+ # Update existing installation
152
+ uv tool upgrade basic-memory
153
+
154
+ # Docker
155
+ docker pull ghcr.io/basicmachines-co/basic-memory:v0.15.1
156
+ ```
157
+
3
158
  ## v0.15.0 (2025-10-04)
4
159
 
5
160
  ### Critical Bug Fixes
@@ -14,20 +14,34 @@ See the [README.md](README.md) file for a project overview.
14
14
 
15
15
  ### Build and Test Commands
16
16
 
17
- - Install: `make install` or `pip install -e ".[dev]"`
18
- - Run tests: `uv run pytest -p pytest_mock -v` or `make test`
17
+ - Install: `just install` or `pip install -e ".[dev]"`
18
+ - Run all tests (with coverage): `just test` - Runs both unit and integration tests with unified coverage
19
+ - Run unit tests only: `just test-unit` - Fast, no coverage
20
+ - Run integration tests only: `just test-int` - Fast, no coverage
21
+ - Generate HTML coverage: `just coverage` - Opens in browser
19
22
  - Single test: `pytest tests/path/to/test_file.py::test_function_name`
20
- - Lint: `make lint` or `ruff check . --fix`
21
- - Type check: `make type-check` or `uv run pyright`
22
- - Format: `make format` or `uv run ruff format .`
23
- - Run all code checks: `make check` (runs lint, format, type-check, test)
24
- - Create db migration: `make migration m="Your migration message"`
25
- - Run development MCP Inspector: `make run-inspector`
23
+ - Run benchmarks: `pytest test-int/test_sync_performance_benchmark.py -v -m "benchmark and not slow"`
24
+ - Lint: `just lint` or `ruff check . --fix`
25
+ - Type check: `just typecheck` or `uv run pyright`
26
+ - Format: `just format` or `uv run ruff format .`
27
+ - Run all code checks: `just check` (runs lint, format, typecheck, test)
28
+ - Create db migration: `just migration "Your migration message"`
29
+ - Run development MCP Inspector: `just run-inspector`
30
+
31
+ **Note:** Project requires Python 3.12+ (uses type parameter syntax and `type` aliases introduced in 3.12)
32
+
33
+ ### Test Structure
34
+
35
+ - `tests/` - Unit tests for individual components (mocked, fast)
36
+ - `test-int/` - Integration tests for real-world scenarios (no mocks, realistic)
37
+ - Both directories are covered by unified coverage reporting
38
+ - Benchmark tests in `test-int/` are marked with `@pytest.mark.benchmark`
39
+ - Slow tests are marked with `@pytest.mark.slow`
26
40
 
27
41
  ### Code Style Guidelines
28
42
 
29
43
  - Line length: 100 characters max
30
- - Python 3.12+ with full type annotations
44
+ - Python 3.12+ with full type annotations (uses type parameters and type aliases)
31
45
  - Format with ruff (consistent styling)
32
46
  - Import order: standard lib, third-party, local imports
33
47
  - Naming: snake_case for functions/variables, PascalCase for classes
@@ -61,9 +75,46 @@ See the [README.md](README.md) file for a project overview.
61
75
  - Schema changes require Alembic migrations
62
76
  - SQLite is used for indexing and full text search, files are source of truth
63
77
  - Testing uses pytest with asyncio support (strict mode)
78
+ - Unit tests (`tests/`) use mocks when necessary; integration tests (`test-int/`) use real implementations
64
79
  - Test database uses in-memory SQLite
65
- - Avoid creating mocks in tests in most circumstances.
66
- - Each test runs in a standalone environment with in memory SQLite and tmp_file directory
80
+ - Each test runs in a standalone environment with in-memory SQLite and tmp_file directory
81
+ - Performance benchmarks are in `test-int/test_sync_performance_benchmark.py`
82
+ - Use pytest markers: `@pytest.mark.benchmark` for benchmarks, `@pytest.mark.slow` for slow tests
83
+
84
+ ### Async Client Pattern (Important!)
85
+
86
+ **All MCP tools and CLI commands use the context manager pattern for HTTP clients:**
87
+
88
+ ```python
89
+ from basic_memory.mcp.async_client import get_client
90
+
91
+ async def my_mcp_tool():
92
+ async with get_client() as client:
93
+ # Use client for API calls
94
+ response = await call_get(client, "/path")
95
+ return response
96
+ ```
97
+
98
+ **Do NOT use:**
99
+ - ❌ `from basic_memory.mcp.async_client import client` (deprecated module-level client)
100
+ - ❌ Manual auth header management
101
+ - ❌ `inject_auth_header()` (deleted)
102
+
103
+ **Key principles:**
104
+ - Auth happens at client creation, not per-request
105
+ - Proper resource management via context managers
106
+ - Supports three modes: Local (ASGI), CLI cloud (HTTP + auth), Cloud app (factory injection)
107
+ - Factory pattern enables dependency injection for cloud consolidation
108
+
109
+ **For cloud app integration:**
110
+ ```python
111
+ from basic_memory.mcp import async_client
112
+
113
+ # Set custom factory before importing tools
114
+ async_client.set_client_factory(your_custom_factory)
115
+ ```
116
+
117
+ See SPEC-16 for full context manager refactor details.
67
118
 
68
119
  ## BASIC MEMORY PRODUCT USAGE
69
120
 
@@ -80,6 +131,7 @@ See the [README.md](README.md) file for a project overview.
80
131
 
81
132
  ### Basic Memory Commands
82
133
 
134
+ **Local Commands:**
83
135
  - Sync knowledge: `basic-memory sync` or `basic-memory sync --watch`
84
136
  - Import from Claude: `basic-memory import claude conversations`
85
137
  - Import from ChatGPT: `basic-memory import chatgpt`
@@ -89,24 +141,41 @@ See the [README.md](README.md) file for a project overview.
89
141
  - Guide: `basic-memory tools basic-memory-guide`
90
142
  - Continue: `basic-memory tools continue-conversation --topic="search"`
91
143
 
144
+ **Cloud Commands (requires subscription):**
145
+ - Authenticate: `basic-memory cloud login`
146
+ - Logout: `basic-memory cloud logout`
147
+ - Bidirectional sync: `basic-memory cloud sync`
148
+ - Integrity check: `basic-memory cloud check`
149
+ - Mount cloud storage: `basic-memory cloud mount`
150
+ - Unmount cloud storage: `basic-memory cloud unmount`
151
+
92
152
  ### MCP Capabilities
93
153
 
94
154
  - Basic Memory exposes these MCP tools to LLMs:
95
155
 
96
156
  **Content Management:**
97
157
  - `write_note(title, content, folder, tags)` - Create/update markdown notes with semantic observations and relations
98
- - `read_note(identifier, page, page_size)` - Read notes by title, permalink, or memory:// URL with knowledge graph
99
- awareness
100
- - `read_file(path)` - Read raw file content (text, images, binaries) without knowledge graph processing
158
+ - `read_note(identifier, page, page_size)` - Read notes by title, permalink, or memory:// URL with knowledge graph awareness
159
+ - `read_content(path)` - Read raw file content (text, images, binaries) without knowledge graph processing
160
+ - `view_note(identifier, page, page_size)` - View notes as formatted artifacts for better readability
161
+ - `edit_note(identifier, operation, content)` - Edit notes incrementally (append, prepend, find/replace, replace_section)
162
+ - `move_note(identifier, destination_path)` - Move notes to new locations, updating database and maintaining links
163
+ - `delete_note(identifier)` - Delete notes from the knowledge base
101
164
 
102
165
  **Knowledge Graph Navigation:**
103
- - `build_context(url, depth, timeframe)` - Navigate the knowledge graph via memory:// URLs for conversation
104
- continuity
105
- - `recent_activity(type, depth, timeframe)` - Get recently updated information with specified timeframe (e.g., "
106
- 1d", "1 week")
166
+ - `build_context(url, depth, timeframe)` - Navigate the knowledge graph via memory:// URLs for conversation continuity
167
+ - `recent_activity(type, depth, timeframe)` - Get recently updated information with specified timeframe (e.g., "1d", "1 week")
168
+ - `list_directory(dir_name, depth, file_name_glob)` - Browse directory contents with filtering and depth control
107
169
 
108
170
  **Search & Discovery:**
109
- - `search(query, page, page_size)` - Full-text search across all content with filtering options
171
+ - `search_notes(query, page, page_size, search_type, types, entity_types, after_date)` - Full-text search across all content with advanced filtering options
172
+
173
+ **Project Management:**
174
+ - `list_memory_projects()` - List all available projects with their status
175
+ - `create_memory_project(project_name, project_path, set_default)` - Create new Basic Memory projects
176
+ - `delete_project(project_name)` - Delete a project from configuration
177
+ - `get_current_project()` - Get current project information and stats
178
+ - `sync_status()` - Check file synchronization and background operation status
110
179
 
111
180
  **Visualization:**
112
181
  - `canvas(nodes, edges, title, folder)` - Generate Obsidian canvas files for knowledge graph visualization
@@ -118,6 +187,34 @@ See the [README.md](README.md) file for a project overview.
118
187
  - `recent_activity(timeframe)` - View recently changed items with formatted output
119
188
  - `json_canvas_spec()` - Full JSON Canvas specification for Obsidian visualization
120
189
 
190
+ ### Cloud Features (v0.15.0+)
191
+
192
+ Basic Memory now supports cloud synchronization and storage (requires active subscription):
193
+
194
+ **Authentication:**
195
+ - JWT-based authentication with subscription validation
196
+ - Secure session management with token refresh
197
+ - Support for multiple cloud projects
198
+
199
+ **Bidirectional Sync:**
200
+ - rclone bisync integration for two-way synchronization
201
+ - Conflict resolution and integrity verification
202
+ - Real-time sync with change detection
203
+ - Mount/unmount cloud storage for direct file access
204
+
205
+ **Cloud Project Management:**
206
+ - Create and manage projects in the cloud
207
+ - Toggle between local and cloud modes
208
+ - Per-project sync configuration
209
+ - Subscription-based access control
210
+
211
+ **Security & Performance:**
212
+ - Removed .env file loading for improved security
213
+ - .gitignore integration (respects gitignored files)
214
+ - WAL mode for SQLite performance
215
+ - Background relation resolution (non-blocking startup)
216
+ - API performance optimizations (SPEC-11)
217
+
121
218
  ## AI-Human Collaborative Development
122
219
 
123
220
  Basic Memory emerged from and enables a new kind of development process that combines human and AI capabilities. Instead
@@ -168,4 +265,4 @@ With GitHub integration, the development workflow includes:
168
265
  3. **Branch management** - Claude can create feature branches for implementations
169
266
  4. **Documentation maintenance** - Claude can keep documentation updated as the code evolves
170
267
 
171
- This level of integration represents a new paradigm in AI-human collaboration, where the AI assistant becomes a full-fledged team member rather than just a tool for generating code snippets.
268
+ This level of integration represents a new paradigm in AI-human collaboration, where the AI assistant becomes a full-fledged team member rather than just a tool for generating code snippets.
@@ -34,11 +34,18 @@ project and how to get started as a developer.
34
34
 
35
35
  4. **Run the Tests**:
36
36
  ```bash
37
- # Run all tests
37
+ # Run all tests with unified coverage (unit + integration)
38
38
  just test
39
- # or
40
- uv run pytest -p pytest_mock -v
41
-
39
+
40
+ # Run unit tests only (fast, no coverage)
41
+ just test-unit
42
+
43
+ # Run integration tests only (fast, no coverage)
44
+ just test-int
45
+
46
+ # Generate HTML coverage report
47
+ just coverage
48
+
42
49
  # Run a specific test
43
50
  pytest tests/path/to/test_file.py::test_function_name
44
51
  ```
@@ -134,7 +141,7 @@ agreement to the DCO.
134
141
 
135
142
  ## Code Style Guidelines
136
143
 
137
- - **Python Version**: Python 3.12+ with full type annotations
144
+ - **Python Version**: Python 3.12+ with full type annotations (3.12+ required for type parameter syntax)
138
145
  - **Line Length**: 100 characters maximum
139
146
  - **Formatting**: Use ruff for consistent styling
140
147
  - **Import Order**: Standard lib, third-party, local imports
@@ -144,12 +151,78 @@ agreement to the DCO.
144
151
 
145
152
  ## Testing Guidelines
146
153
 
147
- - **Coverage Target**: We aim for 100% test coverage for all code
154
+ ### Test Structure
155
+
156
+ Basic Memory uses two test directories with unified coverage reporting:
157
+
158
+ - **`tests/`**: Unit tests that test individual components in isolation
159
+ - Fast execution with extensive mocking
160
+ - Test individual functions, classes, and modules
161
+ - Run with: `just test-unit` (no coverage, fast)
162
+
163
+ - **`test-int/`**: Integration tests that test real-world scenarios
164
+ - Test full workflows with real database and file operations
165
+ - Include performance benchmarks
166
+ - More realistic but slower than unit tests
167
+ - Run with: `just test-int` (no coverage, fast)
168
+
169
+ ### Running Tests
170
+
171
+ ```bash
172
+ # Run all tests with unified coverage report
173
+ just test
174
+
175
+ # Run only unit tests (fast iteration)
176
+ just test-unit
177
+
178
+ # Run only integration tests
179
+ just test-int
180
+
181
+ # Generate HTML coverage report
182
+ just coverage
183
+
184
+ # Run specific test
185
+ pytest tests/path/to/test_file.py::test_function_name
186
+
187
+ # Run tests excluding benchmarks
188
+ pytest -m "not benchmark"
189
+
190
+ # Run only benchmark tests
191
+ pytest -m benchmark test-int/test_sync_performance_benchmark.py
192
+ ```
193
+
194
+ ### Performance Benchmarks
195
+
196
+ The `test-int/test_sync_performance_benchmark.py` file contains performance benchmarks that measure sync and indexing speed:
197
+
198
+ - `test_benchmark_sync_100_files` - Small repository performance
199
+ - `test_benchmark_sync_500_files` - Medium repository performance
200
+ - `test_benchmark_sync_1000_files` - Large repository performance (marked slow)
201
+ - `test_benchmark_resync_no_changes` - Re-sync performance baseline
202
+
203
+ Run benchmarks with:
204
+ ```bash
205
+ # Run all benchmarks (excluding slow ones)
206
+ pytest test-int/test_sync_performance_benchmark.py -v -m "benchmark and not slow"
207
+
208
+ # Run all benchmarks including slow ones
209
+ pytest test-int/test_sync_performance_benchmark.py -v -m benchmark
210
+
211
+ # Run specific benchmark
212
+ pytest test-int/test_sync_performance_benchmark.py::test_benchmark_sync_100_files -v
213
+ ```
214
+
215
+ See `test-int/BENCHMARKS.md` for detailed benchmark documentation.
216
+
217
+ ### Testing Best Practices
218
+
219
+ - **Coverage Target**: We aim for high test coverage for all code
148
220
  - **Test Framework**: Use pytest for unit and integration tests
149
- - **Mocking**: Use pytest-mock for mocking dependencies only when necessary
221
+ - **Mocking**: Avoid mocking in integration tests; use sparingly in unit tests
150
222
  - **Edge Cases**: Test both normal operation and edge cases
151
223
  - **Database Testing**: Use in-memory SQLite for testing database operations
152
224
  - **Fixtures**: Use async pytest fixtures for setup and teardown
225
+ - **Markers**: Use `@pytest.mark.benchmark` for benchmarks, `@pytest.mark.slow` for slow tests
153
226
 
154
227
  ## Release Process
155
228
 
@@ -24,11 +24,12 @@ WORKDIR /app
24
24
  RUN uv sync --locked
25
25
 
26
26
  # Create necessary directories and set ownership
27
- RUN mkdir -p /app/data /app/.basic-memory && \
27
+ RUN mkdir -p /app/data/basic-memory /app/.basic-memory && \
28
28
  chown -R appuser:${GID} /app
29
29
 
30
30
  # Set default data directory and add venv to PATH
31
- ENV BASIC_MEMORY_HOME=/app/data \
31
+ ENV BASIC_MEMORY_HOME=/app/data/basic-memory \
32
+ BASIC_MEMORY_PROJECT_ROOT=/app/data \
32
33
  PATH="/app/.venv/bin:$PATH"
33
34
 
34
35
  # Switch to the non-root user
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: basic-memory
3
- Version: 0.15.0
3
+ Version: 0.15.1
4
4
  Summary: Local-first knowledge management combining Zettelkasten with knowledge graphs
5
5
  Project-URL: Homepage, https://github.com/basicmachines-co/basic-memory
6
6
  Project-URL: Repository, https://github.com/basicmachines-co/basic-memory
@@ -8,7 +8,7 @@ Project-URL: Documentation, https://github.com/basicmachines-co/basic-memory#rea
8
8
  Author-email: Basic Machines <hello@basic-machines.co>
9
9
  License: AGPL-3.0-or-later
10
10
  License-File: LICENSE
11
- Requires-Python: >=3.12.1
11
+ Requires-Python: >=3.12
12
12
  Requires-Dist: aiofiles>=24.1.0
13
13
  Requires-Dist: aiosqlite>=0.20.0
14
14
  Requires-Dist: alembic>=1.14.1
@@ -139,6 +139,9 @@ With Basic Memory, you can:
139
139
  - Keep everything local and under your control
140
140
  - Use familiar tools like Obsidian to view and edit notes
141
141
  - Build a personal knowledge base that grows over time
142
+ - Sync your knowledge to the cloud with bidirectional synchronization
143
+ - Authenticate and manage cloud projects with subscription validation
144
+ - Mount cloud storage for direct file access
142
145
 
143
146
  ## How It Works in Practice
144
147
 
@@ -385,14 +388,57 @@ basic-memory sync
385
388
  basic-memory sync --watch
386
389
  ```
387
390
 
388
- 3. In Claude Desktop, the LLM can now use these tools:
391
+ 3. Cloud features (optional, requires subscription):
389
392
 
393
+ ```bash
394
+ # Authenticate with cloud
395
+ basic-memory cloud login
396
+
397
+ # Bidirectional sync with cloud
398
+ basic-memory cloud sync
399
+
400
+ # Verify cloud integrity
401
+ basic-memory cloud check
402
+
403
+ # Mount cloud storage
404
+ basic-memory cloud mount
405
+ ```
406
+
407
+ 4. In Claude Desktop, the LLM can now use these tools:
408
+
409
+ **Content Management:**
390
410
  ```
391
411
  write_note(title, content, folder, tags) - Create or update notes
392
412
  read_note(identifier, page, page_size) - Read notes by title or permalink
413
+ read_content(path) - Read raw file content (text, images, binaries)
414
+ view_note(identifier) - View notes as formatted artifacts
415
+ edit_note(identifier, operation, content) - Edit notes incrementally
416
+ move_note(identifier, destination_path) - Move notes with database consistency
417
+ delete_note(identifier) - Delete notes from knowledge base
418
+ ```
419
+
420
+ **Knowledge Graph Navigation:**
421
+ ```
393
422
  build_context(url, depth, timeframe) - Navigate knowledge graph via memory:// URLs
394
- search(query, page, page_size) - Search across your knowledge base
395
423
  recent_activity(type, depth, timeframe) - Find recently updated information
424
+ list_directory(dir_name, depth) - Browse directory contents with filtering
425
+ ```
426
+
427
+ **Search & Discovery:**
428
+ ```
429
+ search(query, page, page_size) - Search across your knowledge base
430
+ ```
431
+
432
+ **Project Management:**
433
+ ```
434
+ list_memory_projects() - List all available projects
435
+ create_memory_project(project_name, project_path) - Create new projects
436
+ get_current_project() - Show current project stats
437
+ sync_status() - Check synchronization status
438
+ ```
439
+
440
+ **Visualization:**
441
+ ```
396
442
  canvas(nodes, edges, title, folder) - Generate knowledge visualizations
397
443
  ```
398
444
 
@@ -412,6 +458,7 @@ See the [Documentation](https://memory.basicmachines.co/) for more info, includi
412
458
 
413
459
  - [Complete User Guide](https://docs.basicmemory.com/user-guide/)
414
460
  - [CLI tools](https://docs.basicmemory.com/guides/cli-reference/)
461
+ - [Cloud CLI and Sync](https://docs.basicmemory.com/guides/cloud-cli/)
415
462
  - [Managing multiple Projects](https://docs.basicmemory.com/guides/cli-reference/#project)
416
463
  - [Importing data from OpenAI/Claude Projects](https://docs.basicmemory.com/guides/cli-reference/#import)
417
464
 
@@ -100,6 +100,9 @@ With Basic Memory, you can:
100
100
  - Keep everything local and under your control
101
101
  - Use familiar tools like Obsidian to view and edit notes
102
102
  - Build a personal knowledge base that grows over time
103
+ - Sync your knowledge to the cloud with bidirectional synchronization
104
+ - Authenticate and manage cloud projects with subscription validation
105
+ - Mount cloud storage for direct file access
103
106
 
104
107
  ## How It Works in Practice
105
108
 
@@ -346,14 +349,57 @@ basic-memory sync
346
349
  basic-memory sync --watch
347
350
  ```
348
351
 
349
- 3. In Claude Desktop, the LLM can now use these tools:
352
+ 3. Cloud features (optional, requires subscription):
350
353
 
354
+ ```bash
355
+ # Authenticate with cloud
356
+ basic-memory cloud login
357
+
358
+ # Bidirectional sync with cloud
359
+ basic-memory cloud sync
360
+
361
+ # Verify cloud integrity
362
+ basic-memory cloud check
363
+
364
+ # Mount cloud storage
365
+ basic-memory cloud mount
366
+ ```
367
+
368
+ 4. In Claude Desktop, the LLM can now use these tools:
369
+
370
+ **Content Management:**
351
371
  ```
352
372
  write_note(title, content, folder, tags) - Create or update notes
353
373
  read_note(identifier, page, page_size) - Read notes by title or permalink
374
+ read_content(path) - Read raw file content (text, images, binaries)
375
+ view_note(identifier) - View notes as formatted artifacts
376
+ edit_note(identifier, operation, content) - Edit notes incrementally
377
+ move_note(identifier, destination_path) - Move notes with database consistency
378
+ delete_note(identifier) - Delete notes from knowledge base
379
+ ```
380
+
381
+ **Knowledge Graph Navigation:**
382
+ ```
354
383
  build_context(url, depth, timeframe) - Navigate knowledge graph via memory:// URLs
355
- search(query, page, page_size) - Search across your knowledge base
356
384
  recent_activity(type, depth, timeframe) - Find recently updated information
385
+ list_directory(dir_name, depth) - Browse directory contents with filtering
386
+ ```
387
+
388
+ **Search & Discovery:**
389
+ ```
390
+ search(query, page, page_size) - Search across your knowledge base
391
+ ```
392
+
393
+ **Project Management:**
394
+ ```
395
+ list_memory_projects() - List all available projects
396
+ create_memory_project(project_name, project_path) - Create new projects
397
+ get_current_project() - Show current project stats
398
+ sync_status() - Check synchronization status
399
+ ```
400
+
401
+ **Visualization:**
402
+ ```
357
403
  canvas(nodes, edges, title, folder) - Generate knowledge visualizations
358
404
  ```
359
405
 
@@ -373,6 +419,7 @@ See the [Documentation](https://memory.basicmachines.co/) for more info, includi
373
419
 
374
420
  - [Complete User Guide](https://docs.basicmemory.com/user-guide/)
375
421
  - [CLI tools](https://docs.basicmemory.com/guides/cli-reference/)
422
+ - [Cloud CLI and Sync](https://docs.basicmemory.com/guides/cloud-cli/)
376
423
  - [Managing multiple Projects](https://docs.basicmemory.com/guides/cli-reference/#project)
377
424
  - [Importing data from OpenAI/Claude Projects](https://docs.basicmemory.com/guides/cli-reference/#import)
378
425