basic-memory 0.17.0__tar.gz → 0.17.7__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 (447) hide show
  1. {basic_memory-0.17.0 → basic_memory-0.17.7}/.claude/commands/release/release.md +31 -1
  2. {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/claude-code-review.yml +1 -0
  3. {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/test.yml +57 -3
  4. basic_memory-0.17.7/.python-version +1 -0
  5. {basic_memory-0.17.0 → basic_memory-0.17.7}/CHANGELOG.md +108 -0
  6. {basic_memory-0.17.0 → basic_memory-0.17.7}/CLAUDE.md +26 -4
  7. {basic_memory-0.17.0 → basic_memory-0.17.7}/Dockerfile +10 -4
  8. {basic_memory-0.17.0 → basic_memory-0.17.7}/PKG-INFO +7 -37
  9. {basic_memory-0.17.0 → basic_memory-0.17.7}/README.md +1 -33
  10. basic_memory-0.17.7/docs/ARCHITECTURE.md +412 -0
  11. basic_memory-0.17.7/docs/testing-coverage.md +28 -0
  12. {basic_memory-0.17.0 → basic_memory-0.17.7}/justfile +55 -18
  13. {basic_memory-0.17.0 → basic_memory-0.17.7}/pyproject.toml +13 -10
  14. basic_memory-0.17.7/server.json +22 -0
  15. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/__init__.py +1 -1
  16. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/env.py +17 -9
  17. basic_memory-0.17.7/src/basic_memory/alembic/versions/6830751f5fb6_merge_multiple_heads.py +24 -0
  18. basic_memory-0.17.7/src/basic_memory/alembic/versions/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py +173 -0
  19. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/app.py +31 -43
  20. basic_memory-0.17.7/src/basic_memory/api/container.py +133 -0
  21. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/knowledge_router.py +4 -3
  22. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/project_router.py +17 -5
  23. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/resource_router.py +7 -4
  24. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/directory_router.py +13 -13
  25. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/importer_router.py +18 -19
  26. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/knowledge_router.py +120 -108
  27. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/memory_router.py +11 -11
  28. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/project_router.py +86 -71
  29. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/prompt_router.py +16 -17
  30. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/resource_router.py +62 -59
  31. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/search_router.py +11 -11
  32. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/app.py +10 -18
  33. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/auth.py +27 -4
  34. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/__init__.py +1 -2
  35. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/api_client.py +20 -5
  36. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/cloud_utils.py +13 -6
  37. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/core_commands.py +5 -7
  38. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/rclone_commands.py +48 -21
  39. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/upload.py +10 -3
  40. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/upload_command.py +2 -2
  41. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/command_utils.py +27 -5
  42. basic_memory-0.17.7/src/basic_memory/cli/commands/db.py +105 -0
  43. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/format.py +2 -2
  44. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/import_chatgpt.py +12 -9
  45. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/import_claude_conversations.py +12 -9
  46. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/import_claude_projects.py +12 -9
  47. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/import_memory_json.py +12 -9
  48. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/project.py +21 -22
  49. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/tool.py +7 -7
  50. basic_memory-0.17.7/src/basic_memory/cli/container.py +84 -0
  51. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/main.py +0 -1
  52. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/config.py +5 -16
  53. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/db.py +31 -7
  54. basic_memory-0.17.7/src/basic_memory/deps/__init__.py +293 -0
  55. basic_memory-0.17.7/src/basic_memory/deps/config.py +26 -0
  56. basic_memory-0.17.7/src/basic_memory/deps/db.py +56 -0
  57. basic_memory-0.17.7/src/basic_memory/deps/importers.py +200 -0
  58. basic_memory-0.17.7/src/basic_memory/deps/projects.py +236 -0
  59. basic_memory-0.17.7/src/basic_memory/deps/repositories.py +183 -0
  60. basic_memory-0.17.7/src/basic_memory/deps/services.py +484 -0
  61. basic_memory-0.17.7/src/basic_memory/deps.py +16 -0
  62. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/file_utils.py +4 -4
  63. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/ignore_utils.py +5 -5
  64. basic_memory-0.17.7/src/basic_memory/importers/base.py +100 -0
  65. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/importers/chatgpt_importer.py +17 -4
  66. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/importers/claude_conversations_importer.py +23 -11
  67. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/importers/claude_projects_importer.py +50 -14
  68. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/importers/memory_json_importer.py +36 -16
  69. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/markdown/markdown_processor.py +48 -4
  70. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/markdown/utils.py +7 -0
  71. basic_memory-0.17.7/src/basic_memory/mcp/clients/__init__.py +28 -0
  72. basic_memory-0.17.7/src/basic_memory/mcp/clients/directory.py +70 -0
  73. basic_memory-0.17.7/src/basic_memory/mcp/clients/knowledge.py +176 -0
  74. basic_memory-0.17.7/src/basic_memory/mcp/clients/memory.py +120 -0
  75. basic_memory-0.17.7/src/basic_memory/mcp/clients/project.py +89 -0
  76. basic_memory-0.17.7/src/basic_memory/mcp/clients/resource.py +71 -0
  77. basic_memory-0.17.7/src/basic_memory/mcp/clients/search.py +65 -0
  78. basic_memory-0.17.7/src/basic_memory/mcp/container.py +108 -0
  79. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/project_context.py +47 -33
  80. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +2 -2
  81. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/prompts/recent_activity.py +2 -2
  82. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/prompts/utils.py +3 -3
  83. basic_memory-0.17.7/src/basic_memory/mcp/server.py +61 -0
  84. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/build_context.py +12 -14
  85. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/canvas.py +8 -8
  86. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/chatgpt_tools.py +1 -4
  87. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/delete_note.py +18 -13
  88. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/edit_note.py +10 -11
  89. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/list_directory.py +5 -18
  90. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/move_note.py +29 -33
  91. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/project_management.py +25 -26
  92. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/read_content.py +4 -4
  93. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/read_note.py +11 -15
  94. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/recent_activity.py +40 -38
  95. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/search.py +15 -11
  96. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/utils.py +14 -10
  97. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/view_note.py +0 -2
  98. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/write_note.py +18 -18
  99. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/models/knowledge.py +5 -1
  100. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/models/project.py +5 -1
  101. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/models/search.py +9 -0
  102. basic_memory-0.17.7/src/basic_memory/project_resolver.py +222 -0
  103. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/entity_repository.py +32 -16
  104. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/postgres_search_repository.py +92 -20
  105. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/project_repository.py +12 -0
  106. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/relation_repository.py +7 -7
  107. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/repository.py +4 -3
  108. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/search_repository.py +11 -4
  109. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/search_repository_base.py +2 -2
  110. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/sqlite_search_repository.py +5 -7
  111. basic_memory-0.17.7/src/basic_memory/runtime.py +61 -0
  112. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/base.py +2 -2
  113. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/directory.py +2 -1
  114. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/memory.py +2 -2
  115. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/project_info.py +1 -0
  116. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/response.py +84 -27
  117. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/sync_report.py +1 -1
  118. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/v2/entity.py +13 -9
  119. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/v2/resource.py +2 -1
  120. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/context_service.py +7 -5
  121. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/directory_service.py +13 -11
  122. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/file_service.py +12 -8
  123. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/project_service.py +33 -25
  124. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/search_service.py +29 -11
  125. basic_memory-0.17.7/src/basic_memory/sync/__init__.py +7 -0
  126. basic_memory-0.17.7/src/basic_memory/sync/coordinator.py +160 -0
  127. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/sync/sync_service.py +11 -3
  128. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/sync/watch_service.py +12 -7
  129. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/utils.py +5 -5
  130. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/conftest.py +2 -0
  131. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_lifespan_shutdown_sync_task_cancellation_integration.py +24 -11
  132. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_write_note_integration.py +1 -0
  133. basic_memory-0.17.7/tests/api/test_api_container.py +62 -0
  134. basic_memory-0.17.7/tests/api/test_async_client.py +53 -0
  135. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_directory_router.py +0 -200
  136. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_knowledge_router.py +0 -36
  137. basic_memory-0.17.7/tests/api/test_management_router.py +121 -0
  138. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_project_router.py +4 -2
  139. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_relation_background_resolution.py +21 -9
  140. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/conftest.py +3 -3
  141. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_knowledge_router.py +66 -62
  142. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_project_router.py +61 -53
  143. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_resource_router.py +28 -22
  144. basic_memory-0.17.7/tests/cli/cloud/test_cloud_api_client_and_utils.py +165 -0
  145. basic_memory-0.17.7/tests/cli/cloud/test_rclone_config_and_bmignore_filters.py +78 -0
  146. basic_memory-0.17.7/tests/cli/cloud/test_upload_path.py +73 -0
  147. basic_memory-0.17.7/tests/cli/test_auth_cli_auth.py +152 -0
  148. basic_memory-0.17.7/tests/cli/test_cli_container.py +96 -0
  149. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_cli_tool_exit.py +22 -3
  150. basic_memory-0.17.7/tests/cli/test_cli_tools.py +38 -0
  151. basic_memory-0.17.7/tests/cli/test_cloud_authentication.py +223 -0
  152. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_import_memory_json.py +5 -3
  153. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_project_add_with_local_path.py +35 -23
  154. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_upload.py +84 -182
  155. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/conftest.py +30 -0
  156. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/importers/test_conversation_indexing.py +4 -2
  157. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/importers/test_importer_base.py +28 -43
  158. basic_memory-0.17.7/tests/markdown/test_markdown_utils.py +163 -0
  159. basic_memory-0.17.7/tests/mcp/clients/__init__.py +0 -0
  160. basic_memory-0.17.7/tests/mcp/clients/test_clients.py +311 -0
  161. basic_memory-0.17.7/tests/mcp/test_async_client_modes.py +80 -0
  162. basic_memory-0.17.7/tests/mcp/test_mcp_container.py +93 -0
  163. basic_memory-0.17.7/tests/mcp/test_project_context.py +103 -0
  164. basic_memory-0.17.7/tests/mcp/test_recent_activity_prompt_modes.py +111 -0
  165. basic_memory-0.17.7/tests/mcp/test_server_lifespan_branches.py +33 -0
  166. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_move_note.py +28 -68
  167. basic_memory-0.17.7/tests/mcp/test_tool_project_management.py +49 -0
  168. basic_memory-0.17.7/tests/mcp/test_tool_read_content.py +168 -0
  169. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_read_note.py +83 -25
  170. basic_memory-0.17.7/tests/mcp/test_tool_recent_activity.py +411 -0
  171. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_search.py +56 -20
  172. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_utils.py +54 -31
  173. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_view_note.py +12 -57
  174. basic_memory-0.17.7/tests/mcp/tools/test_chatgpt_tools.py +215 -0
  175. basic_memory-0.17.7/tests/repository/test_postgres_search_repository.py +199 -0
  176. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_search_repository.py +163 -12
  177. basic_memory-0.17.7/tests/schemas/test_relation_response_reference_resolution.py +39 -0
  178. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/schemas/test_schemas.py +43 -0
  179. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_entity_service.py +6 -6
  180. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_file_service.py +37 -19
  181. basic_memory-0.17.7/tests/services/test_initialization.py +126 -0
  182. basic_memory-0.17.7/tests/services/test_initialization_cloud_mode_branches.py +25 -0
  183. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_project_service.py +4 -12
  184. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_project_service_operations.py +0 -40
  185. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_search_service.py +8 -40
  186. basic_memory-0.17.7/tests/sync/test_coordinator.py +135 -0
  187. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/sync/test_sync_service.py +74 -503
  188. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/sync/test_watch_service.py +10 -8
  189. basic_memory-0.17.7/tests/sync/test_watch_service_atomic_adds.py +51 -0
  190. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/sync/test_watch_service_edge_cases.py +5 -15
  191. basic_memory-0.17.7/tests/sync/test_watch_service_reload.py +257 -0
  192. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/test_deps.py +26 -0
  193. basic_memory-0.17.7/tests/test_project_resolver.py +209 -0
  194. basic_memory-0.17.7/tests/test_rclone_commands.py +497 -0
  195. basic_memory-0.17.7/tests/test_runtime.py +52 -0
  196. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/utils/test_timezone_utils.py +6 -10
  197. basic_memory-0.17.7/uv.lock +2690 -0
  198. basic_memory-0.17.0/.python-version +0 -1
  199. basic_memory-0.17.0/specs/SPEC-1 Specification-Driven Development Process.md +0 -156
  200. basic_memory-0.17.0/specs/SPEC-10 Unified Deployment Workflow and Event Tracking.md +0 -569
  201. basic_memory-0.17.0/specs/SPEC-11 Basic Memory API Performance Optimization.md +0 -186
  202. basic_memory-0.17.0/specs/SPEC-12 OpenTelemetry Observability.md +0 -182
  203. basic_memory-0.17.0/specs/SPEC-13 CLI Authentication with Subscription Validation.md +0 -917
  204. basic_memory-0.17.0/specs/SPEC-14 Cloud Git Versioning & GitHub Backup.md +0 -210
  205. basic_memory-0.17.0/specs/SPEC-14- Cloud Git Versioning & GitHub Backup.md +0 -210
  206. basic_memory-0.17.0/specs/SPEC-15 Configuration Persistence via Tigris for Cloud Tenants.md +0 -273
  207. basic_memory-0.17.0/specs/SPEC-16 MCP Cloud Service Consolidation.md +0 -800
  208. basic_memory-0.17.0/specs/SPEC-17 Semantic Search with ChromaDB.md +0 -1439
  209. basic_memory-0.17.0/specs/SPEC-18 AI Memory Management Tool.md +0 -528
  210. basic_memory-0.17.0/specs/SPEC-19 Sync Performance and Memory Optimization.md +0 -1046
  211. basic_memory-0.17.0/specs/SPEC-2 Slash Commands Reference.md +0 -120
  212. basic_memory-0.17.0/specs/SPEC-20 Simplified Project-Scoped Rclone Sync.md +0 -1216
  213. basic_memory-0.17.0/specs/SPEC-3 Agent Definitions.md +0 -108
  214. basic_memory-0.17.0/specs/SPEC-4 Notes Web UI Component Architecture.md +0 -311
  215. basic_memory-0.17.0/specs/SPEC-5 CLI Cloud Upload via WebDAV.md +0 -201
  216. basic_memory-0.17.0/specs/SPEC-6 Explicit Project Parameter Architecture.md +0 -497
  217. basic_memory-0.17.0/specs/SPEC-7 POC to spike Tigris Turso for local access to cloud data.md +0 -324
  218. basic_memory-0.17.0/specs/SPEC-8 TigrisFS Integration.md +0 -886
  219. basic_memory-0.17.0/specs/SPEC-9 Multi-Project Bidirectional Sync Architecture.md +0 -1114
  220. basic_memory-0.17.0/specs/SPEC-9 Signed Header Tenant Information.md +0 -196
  221. basic_memory-0.17.0/specs/SPEC-9-1 Follow-Ups- Conflict, Sync, and Observability.md +0 -390
  222. basic_memory-0.17.0/src/basic_memory/cli/commands/db.py +0 -44
  223. basic_memory-0.17.0/src/basic_memory/cli/commands/telemetry.py +0 -81
  224. basic_memory-0.17.0/src/basic_memory/deps.py +0 -705
  225. basic_memory-0.17.0/src/basic_memory/importers/base.py +0 -79
  226. basic_memory-0.17.0/src/basic_memory/mcp/server.py +0 -81
  227. basic_memory-0.17.0/src/basic_memory/sync/__init__.py +0 -6
  228. basic_memory-0.17.0/src/basic_memory/telemetry.py +0 -249
  229. basic_memory-0.17.0/tests/api/test_async_client.py +0 -56
  230. basic_memory-0.17.0/tests/api/test_management_router.py +0 -211
  231. basic_memory-0.17.0/tests/cli/test_cli_tools.py +0 -497
  232. basic_memory-0.17.0/tests/cli/test_cloud_authentication.py +0 -239
  233. basic_memory-0.17.0/tests/mcp/test_tool_read_content.py +0 -495
  234. basic_memory-0.17.0/tests/mcp/test_tool_recent_activity.py +0 -135
  235. basic_memory-0.17.0/tests/mcp/tools/test_chatgpt_tools.py +0 -228
  236. basic_memory-0.17.0/tests/services/test_initialization.py +0 -122
  237. basic_memory-0.17.0/tests/sync/test_watch_service_reload.py +0 -252
  238. basic_memory-0.17.0/tests/test_rclone_commands.py +0 -647
  239. basic_memory-0.17.0/tests/test_telemetry.py +0 -276
  240. basic_memory-0.17.0/uv.lock +0 -2355
  241. {basic_memory-0.17.0 → basic_memory-0.17.7}/.claude/commands/release/beta.md +0 -0
  242. {basic_memory-0.17.0 → basic_memory-0.17.7}/.claude/commands/release/changelog.md +0 -0
  243. {basic_memory-0.17.0 → basic_memory-0.17.7}/.claude/commands/release/release-check.md +0 -0
  244. {basic_memory-0.17.0 → basic_memory-0.17.7}/.claude/commands/spec.md +0 -0
  245. {basic_memory-0.17.0 → basic_memory-0.17.7}/.claude/commands/test-live.md +0 -0
  246. {basic_memory-0.17.0 → basic_memory-0.17.7}/.claude/settings.json +0 -0
  247. {basic_memory-0.17.0 → basic_memory-0.17.7}/.dockerignore +0 -0
  248. {basic_memory-0.17.0 → basic_memory-0.17.7}/.env.example +0 -0
  249. {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  250. {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  251. {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  252. {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  253. {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/dependabot.yml +0 -0
  254. {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/claude-issue-triage.yml +0 -0
  255. {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/claude.yml +0 -0
  256. {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/dev-release.yml +0 -0
  257. {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/docker.yml +0 -0
  258. {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/pr-title.yml +0 -0
  259. {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/release.yml +0 -0
  260. {basic_memory-0.17.0 → basic_memory-0.17.7}/.gitignore +0 -0
  261. {basic_memory-0.17.0 → basic_memory-0.17.7}/CITATION.cff +0 -0
  262. {basic_memory-0.17.0 → basic_memory-0.17.7}/CLA.md +0 -0
  263. {basic_memory-0.17.0 → basic_memory-0.17.7}/CODE_OF_CONDUCT.md +0 -0
  264. {basic_memory-0.17.0 → basic_memory-0.17.7}/CONTRIBUTING.md +0 -0
  265. {basic_memory-0.17.0 → basic_memory-0.17.7}/LICENSE +0 -0
  266. {basic_memory-0.17.0 → basic_memory-0.17.7}/SECURITY.md +0 -0
  267. {basic_memory-0.17.0 → basic_memory-0.17.7}/docker-compose-postgres.yml +0 -0
  268. {basic_memory-0.17.0 → basic_memory-0.17.7}/docker-compose.yml +0 -0
  269. {basic_memory-0.17.0 → basic_memory-0.17.7}/docs/Docker.md +0 -0
  270. {basic_memory-0.17.0 → basic_memory-0.17.7}/docs/ai-assistant-guide-extended.md +0 -0
  271. {basic_memory-0.17.0 → basic_memory-0.17.7}/docs/character-handling.md +0 -0
  272. {basic_memory-0.17.0 → basic_memory-0.17.7}/docs/cloud-cli.md +0 -0
  273. {basic_memory-0.17.0 → basic_memory-0.17.7}/llms-install.md +0 -0
  274. {basic_memory-0.17.0 → basic_memory-0.17.7}/smithery.yaml +0 -0
  275. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/alembic.ini +0 -0
  276. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/migrations.py +0 -0
  277. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/script.py.mako +0 -0
  278. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/314f1ea54dc4_add_postgres_full_text_search_support_.py +0 -0
  279. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
  280. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
  281. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +0 -0
  282. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +0 -0
  283. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/9d9c1cb7d8f5_add_mtime_and_size_columns_to_entity_.py +0 -0
  284. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/a1b2c3d4e5f6_fix_project_foreign_keys.py +0 -0
  285. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/a2b3c4d5e6f7_add_search_index_entity_cascade.py +0 -0
  286. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
  287. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
  288. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/e7e1f4367280_add_scan_watermark_tracking_to_project.py +0 -0
  289. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py +0 -0
  290. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/__init__.py +0 -0
  291. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/__init__.py +0 -0
  292. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/directory_router.py +0 -0
  293. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/importer_router.py +0 -0
  294. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/management_router.py +0 -0
  295. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/memory_router.py +0 -0
  296. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/prompt_router.py +0 -0
  297. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/search_router.py +0 -0
  298. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/utils.py +0 -0
  299. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/template_loader.py +0 -0
  300. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/__init__.py +0 -0
  301. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/__init__.py +0 -0
  302. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/__init__.py +0 -0
  303. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/__init__.py +0 -0
  304. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/bisync_commands.py +0 -0
  305. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/rclone_config.py +0 -0
  306. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/rclone_installer.py +0 -0
  307. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/mcp.py +0 -0
  308. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/status.py +0 -0
  309. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/importers/__init__.py +0 -0
  310. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/importers/utils.py +0 -0
  311. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/markdown/__init__.py +0 -0
  312. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/markdown/entity_parser.py +0 -0
  313. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/markdown/plugins.py +0 -0
  314. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/markdown/schemas.py +0 -0
  315. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/__init__.py +0 -0
  316. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/async_client.py +0 -0
  317. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/prompts/__init__.py +0 -0
  318. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/prompts/continue_conversation.py +0 -0
  319. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/prompts/search.py +0 -0
  320. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/resources/ai_assistant_guide.md +0 -0
  321. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/resources/project_info.py +0 -0
  322. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/__init__.py +0 -0
  323. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/models/__init__.py +0 -0
  324. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/models/base.py +0 -0
  325. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/__init__.py +0 -0
  326. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/observation_repository.py +0 -0
  327. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/project_info_repository.py +0 -0
  328. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/search_index_row.py +0 -0
  329. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/__init__.py +0 -0
  330. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/cloud.py +0 -0
  331. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/delete.py +0 -0
  332. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/importer.py +0 -0
  333. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/prompt.py +0 -0
  334. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/request.py +0 -0
  335. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/search.py +0 -0
  336. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/v2/__init__.py +0 -0
  337. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/__init__.py +0 -0
  338. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/entity_service.py +0 -0
  339. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/exceptions.py +0 -0
  340. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/initialization.py +0 -0
  341. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/link_resolver.py +0 -0
  342. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/service.py +0 -0
  343. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/sync/background_sync.py +0 -0
  344. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
  345. {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/templates/prompts/search.hbs +0 -0
  346. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/BENCHMARKS.md +0 -0
  347. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/cli/test_project_commands_integration.py +0 -0
  348. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/cli/test_version_integration.py +0 -0
  349. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_build_context_underscore.py +0 -0
  350. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_build_context_validation.py +0 -0
  351. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_chatgpt_tools_integration.py +0 -0
  352. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_default_project_mode_integration.py +0 -0
  353. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_delete_note_integration.py +0 -0
  354. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_edit_note_integration.py +0 -0
  355. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_list_directory_integration.py +0 -0
  356. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_move_note_integration.py +0 -0
  357. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_project_management_integration.py +0 -0
  358. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_project_state_sync_integration.py +0 -0
  359. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_read_content_integration.py +0 -0
  360. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_read_note_integration.py +0 -0
  361. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_search_integration.py +0 -0
  362. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_single_project_mcp_integration.py +0 -0
  363. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/test_db_wal_mode.py +0 -0
  364. {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/test_disable_permalinks_integration.py +0 -0
  365. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/Non-MarkdownFileSupport.pdf +0 -0
  366. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/README.md +0 -0
  367. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/Screenshot.png +0 -0
  368. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/__init__.py +0 -0
  369. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/conftest.py +0 -0
  370. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_continue_conversation_template.py +0 -0
  371. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_importer_router.py +0 -0
  372. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_memory_router.py +0 -0
  373. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_project_router_operations.py +0 -0
  374. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_prompt_router.py +0 -0
  375. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_resource_router.py +0 -0
  376. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_search_router.py +0 -0
  377. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_search_template.py +0 -0
  378. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_template_loader.py +0 -0
  379. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_template_loader_helpers.py +0 -0
  380. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/__init__.py +0 -0
  381. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_directory_router.py +0 -0
  382. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_importer_router.py +0 -0
  383. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_memory_router.py +0 -0
  384. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_prompt_router.py +0 -0
  385. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_search_router.py +0 -0
  386. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/conftest.py +0 -0
  387. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_cli_exit.py +0 -0
  388. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_ignore_utils.py +0 -0
  389. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_import_chatgpt.py +0 -0
  390. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_import_claude_conversations.py +0 -0
  391. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_import_claude_projects.py +0 -0
  392. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/db/test_issue_254_foreign_key_constraints.py +0 -0
  393. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/importers/test_importer_utils.py +0 -0
  394. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/__init__.py +0 -0
  395. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_date_frontmatter_parsing.py +0 -0
  396. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_entity_parser.py +0 -0
  397. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_entity_parser_error_handling.py +0 -0
  398. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_markdown_plugins.py +0 -0
  399. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_markdown_processor.py +0 -0
  400. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_observation_edge_cases.py +0 -0
  401. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_parser_edge_cases.py +0 -0
  402. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_relation_edge_cases.py +0 -0
  403. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_task_detection.py +0 -0
  404. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/conftest.py +0 -0
  405. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_obsidian_yaml_formatting.py +0 -0
  406. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_permalink_collision_file_overwrite.py +0 -0
  407. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_prompts.py +0 -0
  408. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_resources.py +0 -0
  409. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_build_context.py +0 -0
  410. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_canvas.py +0 -0
  411. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_delete_note.py +0 -0
  412. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_edit_note.py +0 -0
  413. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_list_directory.py +0 -0
  414. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_resource.py +0 -0
  415. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_write_note.py +0 -0
  416. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_write_note_kebab_filenames.py +0 -0
  417. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_entity_repository.py +0 -0
  418. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_entity_repository_upsert.py +0 -0
  419. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_entity_upsert_issue_187.py +0 -0
  420. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_observation_repository.py +0 -0
  421. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_project_info_repository.py +0 -0
  422. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_project_repository.py +0 -0
  423. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_relation_repository.py +0 -0
  424. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_repository.py +0 -0
  425. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_search_repository_edit_bug_fix.py +0 -0
  426. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/schemas/test_base_timeframe_minimum.py +0 -0
  427. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/schemas/test_memory_serialization.py +0 -0
  428. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/schemas/test_memory_url.py +0 -0
  429. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/schemas/test_memory_url_validation.py +0 -0
  430. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/schemas/test_search.py +0 -0
  431. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_context_service.py +0 -0
  432. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_directory_service.py +0 -0
  433. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_entity_service_disable_permalinks.py +0 -0
  434. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_link_resolver.py +0 -0
  435. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_project_removal_bug.py +0 -0
  436. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/sync/test_character_conflicts.py +0 -0
  437. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/sync/test_sync_service_incremental.py +0 -0
  438. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/sync/test_sync_wikilink_issue.py +0 -0
  439. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/sync/test_tmp_files.py +0 -0
  440. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/test_config.py +0 -0
  441. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/test_production_cascade_delete.py +0 -0
  442. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/utils/test_file_utils.py +0 -0
  443. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/utils/test_frontmatter_obsidian_compatible.py +0 -0
  444. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/utils/test_parse_tags.py +0 -0
  445. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/utils/test_permalink_formatting.py +0 -0
  446. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/utils/test_utf8_handling.py +0 -0
  447. {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/utils/test_validate_project_path.py +0 -0
@@ -78,6 +78,34 @@ The GitHub Actions workflow (`.github/workflows/release.yml`) then:
78
78
  2. Verify formula version matches release
79
79
  3. Test Homebrew installation: `brew install basicmachines-co/basic-memory/basic-memory`
80
80
 
81
+ #### MCP Registry Publication
82
+
83
+ After PyPI release is published, update the MCP registry:
84
+
85
+ 1. **Verify PyPI Release**
86
+ - Confirm package is live: https://pypi.org/project/basic-memory/<version>/
87
+ - The `server.json` version was auto-updated by `just release`
88
+
89
+ 2. **Publish to MCP Registry**
90
+ ```bash
91
+ cd /Users/drew/code/basic-memory
92
+ mcp-publisher publish
93
+ ```
94
+
95
+ If not authenticated:
96
+ ```bash
97
+ mcp-publisher login github
98
+ # Follow device authentication flow
99
+ mcp-publisher publish
100
+ ```
101
+
102
+ 3. **Verify Publication**
103
+ ```bash
104
+ curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=basic-memory"
105
+ ```
106
+
107
+ **Note:** The `mcp-publisher` CLI can be installed via Homebrew (`brew install mcp-publisher`) or from GitHub releases.
108
+
81
109
  #### Website Updates
82
110
 
83
111
  **1. basicmachines.co** (`/Users/drew/code/basicmachines.co`)
@@ -145,6 +173,7 @@ Before starting, verify:
145
173
  📋 GitHub Release: https://github.com/basicmachines-co/basic-memory/releases/tag/v0.13.2
146
174
  📦 PyPI: https://pypi.org/project/basic-memory/0.13.2/
147
175
  🍺 Homebrew: https://github.com/basicmachines-co/homebrew-basic-memory
176
+ 🔌 MCP Registry: https://registry.modelcontextprotocol.io
148
177
  🚀 GitHub Actions: Completed
149
178
 
150
179
  Install with pip/uv:
@@ -162,8 +191,9 @@ Users can now upgrade:
162
191
  - This creates production releases used by end users
163
192
  - Must pass all quality gates before proceeding
164
193
  - Uses the automated justfile target for consistency
165
- - Version is automatically updated in `__init__.py`
194
+ - Version is automatically updated in `__init__.py` and `server.json`
166
195
  - Triggers automated GitHub release with changelog
167
196
  - Package is published to PyPI for `pip` and `uv` users
168
197
  - Homebrew formula is automatically updated for stable releases
198
+ - MCP Registry is updated manually via `mcp-publisher publish`
169
199
  - Supports multiple installation methods (uv, pip, Homebrew)
@@ -54,6 +54,7 @@ jobs:
54
54
  - [ ] Unit tests for new functions/methods
55
55
  - [ ] Integration tests for new MCP tools
56
56
  - [ ] Test coverage for edge cases
57
+ - [ ] **100% test coverage maintained** (use `# pragma: no cover` only for truly hard-to-test code)
57
58
  - [ ] Documentation updated (README, docstrings)
58
59
  - [ ] CLAUDE.md updated if conventions change
59
60
 
@@ -19,7 +19,7 @@ jobs:
19
19
  fail-fast: false
20
20
  matrix:
21
21
  os: [ubuntu-latest, windows-latest]
22
- python-version: [ "3.12", "3.13" ]
22
+ python-version: [ "3.12", "3.13", "3.14" ]
23
23
  runs-on: ${{ matrix.os }}
24
24
 
25
25
  steps:
@@ -75,7 +75,7 @@ jobs:
75
75
  strategy:
76
76
  fail-fast: false
77
77
  matrix:
78
- python-version: [ "3.12", "3.13" ]
78
+ python-version: [ "3.12", "3.13", "3.14" ]
79
79
  runs-on: ubuntu-latest
80
80
 
81
81
  # Note: No services section needed - testcontainers handles Postgres in Docker
@@ -110,4 +110,58 @@ jobs:
110
110
  - name: Run tests (Postgres via testcontainers)
111
111
  run: |
112
112
  uv pip install pytest pytest-cov
113
- just test-postgres
113
+ just test-postgres
114
+
115
+ coverage:
116
+ name: Coverage Summary (combined, Python 3.12)
117
+ runs-on: ubuntu-latest
118
+
119
+ steps:
120
+ - uses: actions/checkout@v4
121
+ with:
122
+ submodules: true
123
+
124
+ - name: Set up Python 3.12
125
+ uses: actions/setup-python@v4
126
+ with:
127
+ python-version: "3.12"
128
+ cache: "pip"
129
+
130
+ - name: Install uv
131
+ run: |
132
+ pip install uv
133
+
134
+ - name: Install just
135
+ run: |
136
+ curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to /usr/local/bin
137
+
138
+ - name: Create virtual env
139
+ run: |
140
+ uv venv
141
+
142
+ - name: Install dependencies
143
+ run: |
144
+ uv pip install -e .[dev]
145
+
146
+ - name: Run combined coverage (SQLite + Postgres)
147
+ run: |
148
+ uv pip install pytest pytest-cov
149
+ just coverage
150
+
151
+ - name: Add coverage report to job summary
152
+ if: always()
153
+ run: |
154
+ {
155
+ echo "## Coverage"
156
+ echo ""
157
+ echo '```'
158
+ uv run coverage report -m
159
+ echo '```'
160
+ } >> "$GITHUB_STEP_SUMMARY"
161
+
162
+ - name: Upload HTML coverage report
163
+ if: always()
164
+ uses: actions/upload-artifact@v4
165
+ with:
166
+ name: htmlcov
167
+ path: htmlcov/
@@ -0,0 +1 @@
1
+ 3.14
@@ -1,5 +1,113 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.17.6 (2026-01-17)
4
+
5
+ ### Bug Fixes
6
+
7
+ - **#510**: Fix Docker container Python symlink broken at runtime
8
+ ([`1799c94`](https://github.com/basicmachines-co/basic-memory/commit/1799c94))
9
+
10
+ ### Internal
11
+
12
+ - Remove logfire config and specs docs, reduce lifespan and sync logging to debug level
13
+ ([`d1d433d`](https://github.com/basicmachines-co/basic-memory/commit/d1d433d),
14
+ [`803f3ef`](https://github.com/basicmachines-co/basic-memory/commit/803f3ef))
15
+
16
+ ## v0.17.5 (2026-01-11)
17
+
18
+ ### Bug Fixes
19
+
20
+ - **#505**: Prevent CLI commands from hanging on exit (Python 3.14 compatibility)
21
+ ([`863e0a4`](https://github.com/basicmachines-co/basic-memory/commit/863e0a4))
22
+ - Skip `nest_asyncio` on Python 3.14+ where it causes event loop issues
23
+ - Simplify CLI test infrastructure for cross-version compatibility
24
+ - Update pyright to 1.1.408 for Python 3.14 support
25
+ - Fix SQLAlchemy rowcount typing for Python 3.14
26
+
27
+ ## v0.17.4 (2026-01-05)
28
+
29
+ ### Bug Fixes
30
+
31
+ - **#503**: Preserve search index across server restarts
32
+ ([`26f7e98`](https://github.com/basicmachines-co/basic-memory/commit/26f7e98))
33
+ - Fixes critical bug where search index was wiped on every MCP server restart
34
+ - Bug was introduced in v0.16.3, affecting v0.16.3-v0.17.3
35
+ - **User action**: Run `basic-memory reset` once after updating to rebuild search index
36
+
37
+ ### Internal
38
+
39
+ - **#502**: Major architecture refactor with composition roots and typed API clients
40
+ ([`5947f04`](https://github.com/basicmachines-co/basic-memory/commit/5947f04))
41
+ - Add composition roots for API, MCP, and CLI entrypoints
42
+ - Split deps.py into feature-scoped modules (config, db, projects, repositories, services, importers)
43
+ - Add ProjectResolver for unified project selection
44
+ - Add SyncCoordinator for centralized sync/watch lifecycle
45
+ - Introduce typed API clients for MCP tools (KnowledgeClient, SearchClient, MemoryClient, etc.)
46
+
47
+ ## v0.17.3 (2026-01-03)
48
+
49
+ ### Features
50
+
51
+ - **#485**: Add stable external_id (UUID) to Project and Entity models
52
+ ([`a4000f6`](https://github.com/basicmachines-co/basic-memory/commit/a4000f6))
53
+ - Projects and entities now have immutable UUID identifiers
54
+ - API v2 endpoints use external_id for stable references
55
+ - Directory responses include external_id for entities
56
+
57
+ ### Bug Fixes
58
+
59
+ - **#501**: Update mcp dependency to support protocol version 2025-11-25
60
+ ([`c6baf58`](https://github.com/basicmachines-co/basic-memory/commit/c6baf58))
61
+ - Fixes "Unsupported protocol version" error when using Claude Code
62
+ - Bump mcp from >=1.2.0 to >=1.23.1
63
+
64
+ - **#499**: Fix route ordering for cloud deployments
65
+ ([`53c4c20`](https://github.com/basicmachines-co/basic-memory/commit/53c4c20))
66
+
67
+ - **#486**: Skip config file update for set_default_project in cloud mode
68
+ ([`fd732aa`](https://github.com/basicmachines-co/basic-memory/commit/fd732aa))
69
+
70
+ - **#484**: Make RelationResponse.from_id optional to handle null permalinks
71
+ ([`537e58a`](https://github.com/basicmachines-co/basic-memory/commit/537e58a))
72
+
73
+ - Use upsert to prevent IntegrityError during parallel search indexing
74
+ ([`4ce2198`](https://github.com/basicmachines-co/basic-memory/commit/4ce2198))
75
+
76
+ - Use relative file paths in importers for cloud storage compatibility
77
+ ([`8adf1f4`](https://github.com/basicmachines-co/basic-memory/commit/8adf1f4))
78
+
79
+ ### Internal
80
+
81
+ - Refactor importers to use FileService for cloud compatibility
82
+ ([`45ce181`](https://github.com/basicmachines-co/basic-memory/commit/45ce181))
83
+
84
+ - Strengthen integration test coverage, remove stdlib mocks
85
+ ([`b4486d2`](https://github.com/basicmachines-co/basic-memory/commit/b4486d2))
86
+
87
+ ## v0.17.2 (2025-12-29)
88
+
89
+ ### Bug Fixes
90
+
91
+ - Allow recent_activity discovery mode in cloud mode
92
+ ([`0bcda4a`](https://github.com/basicmachines-co/basic-memory/commit/0bcda4a))
93
+ - Add `allow_discovery` parameter to `resolve_project_parameter()`
94
+ - Tools like `recent_activity` can now work across all projects in cloud mode
95
+ - Fix circular import in project_context module
96
+
97
+ ### Internal
98
+
99
+ - Optimize release workflow by running lint/typecheck only (skip full tests)
100
+ ([`0b5425f`](https://github.com/basicmachines-co/basic-memory/commit/0b5425f))
101
+
102
+ ## v0.17.1 (2025-12-29)
103
+
104
+ ### Bug Fixes
105
+
106
+ - **#482**: Only set BASIC_MEMORY_ENV=test during pytest runs
107
+ ([`98fbd60`](https://github.com/basicmachines-co/basic-memory/commit/98fbd60))
108
+ - Fixes environment variable pollution affecting alembic migrations
109
+ - Test environment detection now scoped to pytest execution only
110
+
3
111
  ## v0.17.0 (2025-12-28)
4
112
 
5
113
  ### Features
@@ -117,17 +117,38 @@ counter += 1 # track retries for backoff calculation
117
117
 
118
118
  ### Codebase Architecture
119
119
 
120
+ See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for detailed architecture documentation.
121
+
122
+ **Directory Structure:**
120
123
  - `/alembic` - Alembic db migrations
121
- - `/api` - FastAPI implementation of REST endpoints
122
- - `/cli` - Typer command-line interface
124
+ - `/api` - FastAPI REST endpoints + `container.py` composition root
125
+ - `/cli` - Typer CLI + `container.py` composition root
126
+ - `/deps` - Feature-scoped FastAPI dependencies (config, db, projects, repositories, services, importers)
123
127
  - `/importers` - Import functionality for Claude, ChatGPT, and other sources
124
128
  - `/markdown` - Markdown parsing and processing
125
- - `/mcp` - Model Context Protocol server implementation
129
+ - `/mcp` - MCP server + `container.py` composition root + `clients/` typed API clients
126
130
  - `/models` - SQLAlchemy ORM models
127
131
  - `/repository` - Data access layer
128
132
  - `/schemas` - Pydantic models for validation
129
133
  - `/services` - Business logic layer
130
- - `/sync` - File synchronization services
134
+ - `/sync` - File synchronization services + `coordinator.py` for lifecycle management
135
+
136
+ **Composition Roots:**
137
+ Each entrypoint (API, MCP, CLI) has a composition root that:
138
+ - Reads `ConfigManager` (the only place that reads global config)
139
+ - Resolves runtime mode via `RuntimeMode` enum (TEST > CLOUD > LOCAL)
140
+ - Provides dependencies to downstream code explicitly
141
+
142
+ **Typed API Clients (MCP):**
143
+ MCP tools use typed clients in `mcp/clients/` to communicate with the API:
144
+ - `KnowledgeClient` - Entity CRUD operations
145
+ - `SearchClient` - Search operations
146
+ - `MemoryClient` - Context building
147
+ - `DirectoryClient` - Directory listing
148
+ - `ResourceClient` - Resource reading
149
+ - `ProjectClient` - Project management
150
+
151
+ Flow: MCP Tool → Typed Client → HTTP API → Router → Service → Repository
131
152
 
132
153
  ### Development Notes
133
154
 
@@ -146,6 +167,7 @@ counter += 1 # track retries for backoff calculation
146
167
  - CI runs SQLite and Postgres tests in parallel for faster feedback
147
168
  - Performance benchmarks are in `test-int/test_sync_performance_benchmark.py`
148
169
  - Use pytest markers: `@pytest.mark.benchmark` for benchmarks, `@pytest.mark.slow` for slow tests
170
+ - **Coverage must stay at 100%**: Write tests for new code. Only use `# pragma: no cover` when tests would require excessive mocking (e.g., TYPE_CHECKING blocks, error handlers that need failure injection, runtime-mode-dependent code paths)
149
171
 
150
172
  ### Async Client Pattern (Important!)
151
173
 
@@ -8,8 +8,13 @@ ARG GID=1000
8
8
  COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
9
9
 
10
10
  # Set environment variables
11
+ # UV_PYTHON_INSTALL_DIR ensures Python is installed to a persistent location
12
+ # that survives in the final image (not in /root/.local which gets lost)
13
+ # UV_PYTHON_PREFERENCE=only-managed tells uv to use its managed Python version
11
14
  ENV PYTHONUNBUFFERED=1 \
12
- PYTHONDONTWRITEBYTECODE=1
15
+ PYTHONDONTWRITEBYTECODE=1 \
16
+ UV_PYTHON_INSTALL_DIR=/python \
17
+ UV_PYTHON_PREFERENCE=only-managed
13
18
 
14
19
  # Create a group and user with the provided UID/GID
15
20
  # Check if the GID already exists, if not create appgroup
@@ -19,9 +24,10 @@ RUN (getent group ${GID} || groupadd --gid ${GID} appgroup) && \
19
24
  # Copy the project into the image
20
25
  ADD . /app
21
26
 
22
- # Sync the project into a new environment, asserting the lockfile is up to date
27
+ # Install Python 3.13 explicitly and sync the project
23
28
  WORKDIR /app
24
- RUN uv sync --locked
29
+ RUN uv python install 3.13
30
+ RUN uv sync --locked --python 3.13
25
31
 
26
32
  # Create necessary directories and set ownership
27
33
  RUN mkdir -p /app/data/basic-memory /app/.basic-memory && \
@@ -43,4 +49,4 @@ HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
43
49
  CMD basic-memory --version || exit 1
44
50
 
45
51
  # Use the basic-memory entrypoint to run the MCP server with default SSE transport
46
- CMD ["basic-memory", "mcp", "--transport", "sse", "--host", "0.0.0.0", "--port", "8000"]
52
+ CMD ["basic-memory", "mcp", "--transport", "sse", "--host", "0.0.0.0", "--port", "8000"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: basic-memory
3
- Version: 0.17.0
3
+ Version: 0.17.7
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
@@ -12,24 +12,25 @@ 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
15
+ Requires-Dist: anyio>=4.10.0
15
16
  Requires-Dist: asyncpg>=0.30.0
16
17
  Requires-Dist: dateparser>=1.2.0
17
18
  Requires-Dist: fastapi[standard]>=0.115.8
18
19
  Requires-Dist: fastmcp==2.12.3
19
20
  Requires-Dist: greenlet>=3.1.1
21
+ Requires-Dist: httpx>=0.28.0
20
22
  Requires-Dist: loguru>=0.7.3
21
23
  Requires-Dist: markdown-it-py>=3.0.0
22
- Requires-Dist: mcp>=1.2.0
24
+ Requires-Dist: mcp>=1.23.1
23
25
  Requires-Dist: mdformat-frontmatter>=2.0.8
24
26
  Requires-Dist: mdformat-gfm>=0.3.7
25
27
  Requires-Dist: mdformat>=0.7.22
26
28
  Requires-Dist: nest-asyncio>=1.6.0
27
- Requires-Dist: openpanel>=0.0.1
28
29
  Requires-Dist: pillow>=11.1.0
29
30
  Requires-Dist: psycopg==3.3.1
30
31
  Requires-Dist: pybars3>=0.9.7
31
32
  Requires-Dist: pydantic-settings>=2.6.1
32
- Requires-Dist: pydantic[email,timezone]>=2.10.3
33
+ Requires-Dist: pydantic[email,timezone]>=2.12.0
33
34
  Requires-Dist: pyjwt>=2.10.1
34
35
  Requires-Dist: pyright>=1.1.390
35
36
  Requires-Dist: pytest-aio>=1.9.0
@@ -38,12 +39,14 @@ Requires-Dist: python-dotenv>=1.1.0
38
39
  Requires-Dist: python-frontmatter>=1.1.0
39
40
  Requires-Dist: pyyaml>=6.0.1
40
41
  Requires-Dist: rich>=13.9.4
42
+ Requires-Dist: sniffio>=1.3.1
41
43
  Requires-Dist: sqlalchemy>=2.0.0
42
44
  Requires-Dist: typer>=0.9.0
43
45
  Requires-Dist: unidecode>=1.3.8
44
46
  Requires-Dist: watchfiles>=1.0.4
45
47
  Description-Content-Type: text/markdown
46
48
 
49
+ <!-- mcp-name: io.github.basicmachines-co/basic-memory -->
47
50
  [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
48
51
  [![PyPI version](https://badge.fury.io/py/basic-memory.svg)](https://badge.fury.io/py/basic-memory)
49
52
  [![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
@@ -512,39 +515,6 @@ tail -f ~/.basic-memory/basic-memory.log
512
515
  BASIC_MEMORY_CLOUD_MODE=true uvicorn basic_memory.api.app:app
513
516
  ```
514
517
 
515
- ## Telemetry
516
-
517
- Basic Memory collects anonymous usage statistics to help improve the software. This follows the [Homebrew model](https://docs.brew.sh/Analytics) - telemetry is on by default with easy opt-out.
518
-
519
- **What we collect:**
520
- - App version, Python version, OS, architecture
521
- - Feature usage (which MCP tools and CLI commands are used)
522
- - Error types (sanitized - no file paths or personal data)
523
-
524
- **What we NEVER collect:**
525
- - Note content, file names, or paths
526
- - Personal information
527
- - IP addresses
528
-
529
- **Opting out:**
530
- ```bash
531
- # Disable telemetry
532
- basic-memory telemetry disable
533
-
534
- # Check status
535
- basic-memory telemetry status
536
-
537
- # Re-enable
538
- basic-memory telemetry enable
539
- ```
540
-
541
- Or set the environment variable:
542
- ```bash
543
- export BASIC_MEMORY_TELEMETRY_ENABLED=false
544
- ```
545
-
546
- For more details, see the [Telemetry documentation](https://basicmemory.com/telemetry).
547
-
548
518
  ## Development
549
519
 
550
520
  ### Running Tests
@@ -1,3 +1,4 @@
1
+ <!-- mcp-name: io.github.basicmachines-co/basic-memory -->
1
2
  [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
2
3
  [![PyPI version](https://badge.fury.io/py/basic-memory.svg)](https://badge.fury.io/py/basic-memory)
3
4
  [![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
@@ -466,39 +467,6 @@ tail -f ~/.basic-memory/basic-memory.log
466
467
  BASIC_MEMORY_CLOUD_MODE=true uvicorn basic_memory.api.app:app
467
468
  ```
468
469
 
469
- ## Telemetry
470
-
471
- Basic Memory collects anonymous usage statistics to help improve the software. This follows the [Homebrew model](https://docs.brew.sh/Analytics) - telemetry is on by default with easy opt-out.
472
-
473
- **What we collect:**
474
- - App version, Python version, OS, architecture
475
- - Feature usage (which MCP tools and CLI commands are used)
476
- - Error types (sanitized - no file paths or personal data)
477
-
478
- **What we NEVER collect:**
479
- - Note content, file names, or paths
480
- - Personal information
481
- - IP addresses
482
-
483
- **Opting out:**
484
- ```bash
485
- # Disable telemetry
486
- basic-memory telemetry disable
487
-
488
- # Check status
489
- basic-memory telemetry status
490
-
491
- # Re-enable
492
- basic-memory telemetry enable
493
- ```
494
-
495
- Or set the environment variable:
496
- ```bash
497
- export BASIC_MEMORY_TELEMETRY_ENABLED=false
498
- ```
499
-
500
- For more details, see the [Telemetry documentation](https://basicmemory.com/telemetry).
501
-
502
470
  ## Development
503
471
 
504
472
  ### Running Tests