basic-memory 0.14.1__tar.gz → 0.14.2__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 (279) hide show
  1. {basic_memory-0.14.1 → basic_memory-0.14.2}/CHANGELOG.md +46 -0
  2. {basic_memory-0.14.1 → basic_memory-0.14.2}/PKG-INFO +1 -1
  3. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/__init__.py +1 -1
  4. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/auth_provider.py +8 -8
  5. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/supabase_auth_provider.py +5 -5
  6. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/project_management.py +7 -2
  7. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/utils.py +2 -0
  8. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_auth_provider.py +4 -4
  9. {basic_memory-0.14.1 → basic_memory-0.14.2}/.claude/commands/release/beta.md +0 -0
  10. {basic_memory-0.14.1 → basic_memory-0.14.2}/.claude/commands/release/changelog.md +0 -0
  11. {basic_memory-0.14.1 → basic_memory-0.14.2}/.claude/commands/release/release-check.md +0 -0
  12. {basic_memory-0.14.1 → basic_memory-0.14.2}/.claude/commands/release/release.md +0 -0
  13. {basic_memory-0.14.1 → basic_memory-0.14.2}/.claude/commands/test-live.md +0 -0
  14. {basic_memory-0.14.1 → basic_memory-0.14.2}/.dockerignore +0 -0
  15. {basic_memory-0.14.1 → basic_memory-0.14.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  16. {basic_memory-0.14.1 → basic_memory-0.14.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  17. {basic_memory-0.14.1 → basic_memory-0.14.2}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  18. {basic_memory-0.14.1 → basic_memory-0.14.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  19. {basic_memory-0.14.1 → basic_memory-0.14.2}/.github/dependabot.yml +0 -0
  20. {basic_memory-0.14.1 → basic_memory-0.14.2}/.github/workflows/claude.yml +0 -0
  21. {basic_memory-0.14.1 → basic_memory-0.14.2}/.github/workflows/dev-release.yml +0 -0
  22. {basic_memory-0.14.1 → basic_memory-0.14.2}/.github/workflows/docker.yml +0 -0
  23. {basic_memory-0.14.1 → basic_memory-0.14.2}/.github/workflows/pr-title.yml +0 -0
  24. {basic_memory-0.14.1 → basic_memory-0.14.2}/.github/workflows/release.yml +0 -0
  25. {basic_memory-0.14.1 → basic_memory-0.14.2}/.github/workflows/test.yml +0 -0
  26. {basic_memory-0.14.1 → basic_memory-0.14.2}/.gitignore +0 -0
  27. {basic_memory-0.14.1 → basic_memory-0.14.2}/.python-version +0 -0
  28. {basic_memory-0.14.1 → basic_memory-0.14.2}/CITATION.cff +0 -0
  29. {basic_memory-0.14.1 → basic_memory-0.14.2}/CLA.md +0 -0
  30. {basic_memory-0.14.1 → basic_memory-0.14.2}/CLAUDE.md +0 -0
  31. {basic_memory-0.14.1 → basic_memory-0.14.2}/CODE_OF_CONDUCT.md +0 -0
  32. {basic_memory-0.14.1 → basic_memory-0.14.2}/CONTRIBUTING.md +0 -0
  33. {basic_memory-0.14.1 → basic_memory-0.14.2}/Dockerfile +0 -0
  34. {basic_memory-0.14.1 → basic_memory-0.14.2}/LICENSE +0 -0
  35. {basic_memory-0.14.1 → basic_memory-0.14.2}/README.md +0 -0
  36. {basic_memory-0.14.1 → basic_memory-0.14.2}/SECURITY.md +0 -0
  37. {basic_memory-0.14.1 → basic_memory-0.14.2}/docker-compose.yml +0 -0
  38. {basic_memory-0.14.1 → basic_memory-0.14.2}/docs/AI Assistant Guide.md +0 -0
  39. {basic_memory-0.14.1 → basic_memory-0.14.2}/docs/Docker.md +0 -0
  40. {basic_memory-0.14.1 → basic_memory-0.14.2}/justfile +0 -0
  41. {basic_memory-0.14.1 → basic_memory-0.14.2}/llms-install.md +0 -0
  42. {basic_memory-0.14.1 → basic_memory-0.14.2}/memory.json +0 -0
  43. {basic_memory-0.14.1 → basic_memory-0.14.2}/pyproject.toml +0 -0
  44. {basic_memory-0.14.1 → basic_memory-0.14.2}/smithery.yaml +0 -0
  45. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/alembic/alembic.ini +0 -0
  46. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/alembic/env.py +0 -0
  47. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/alembic/migrations.py +0 -0
  48. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/alembic/script.py.mako +0 -0
  49. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
  50. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
  51. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +0 -0
  52. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +0 -0
  53. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
  54. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
  55. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/api/__init__.py +0 -0
  56. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/api/app.py +0 -0
  57. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/api/routers/__init__.py +0 -0
  58. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/api/routers/directory_router.py +0 -0
  59. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/api/routers/importer_router.py +0 -0
  60. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/api/routers/knowledge_router.py +0 -0
  61. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/api/routers/management_router.py +0 -0
  62. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/api/routers/memory_router.py +0 -0
  63. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/api/routers/project_router.py +0 -0
  64. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/api/routers/prompt_router.py +0 -0
  65. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/api/routers/resource_router.py +0 -0
  66. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/api/routers/search_router.py +0 -0
  67. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/api/routers/utils.py +0 -0
  68. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/api/template_loader.py +0 -0
  69. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/cli/__init__.py +0 -0
  70. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/cli/app.py +0 -0
  71. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/__init__.py +0 -0
  72. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/auth.py +0 -0
  73. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/db.py +0 -0
  74. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/import_chatgpt.py +0 -0
  75. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/import_claude_conversations.py +0 -0
  76. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/import_claude_projects.py +0 -0
  77. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/import_memory_json.py +0 -0
  78. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/mcp.py +0 -0
  79. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/project.py +0 -0
  80. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/status.py +0 -0
  81. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/sync.py +0 -0
  82. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/tool.py +0 -0
  83. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/cli/main.py +0 -0
  84. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/config.py +0 -0
  85. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/db.py +0 -0
  86. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/deps.py +0 -0
  87. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/file_utils.py +0 -0
  88. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/importers/__init__.py +0 -0
  89. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/importers/base.py +0 -0
  90. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/importers/chatgpt_importer.py +0 -0
  91. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/importers/claude_conversations_importer.py +0 -0
  92. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/importers/claude_projects_importer.py +0 -0
  93. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/importers/memory_json_importer.py +0 -0
  94. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/importers/utils.py +0 -0
  95. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/markdown/__init__.py +0 -0
  96. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/markdown/entity_parser.py +0 -0
  97. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/markdown/markdown_processor.py +0 -0
  98. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/markdown/plugins.py +0 -0
  99. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/markdown/schemas.py +0 -0
  100. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/markdown/utils.py +0 -0
  101. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/__init__.py +0 -0
  102. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/async_client.py +0 -0
  103. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/external_auth_provider.py +0 -0
  104. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/project_session.py +0 -0
  105. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/prompts/__init__.py +0 -0
  106. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +0 -0
  107. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/prompts/continue_conversation.py +0 -0
  108. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/prompts/recent_activity.py +0 -0
  109. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/prompts/search.py +0 -0
  110. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/prompts/sync_status.py +0 -0
  111. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/prompts/utils.py +0 -0
  112. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/resources/ai_assistant_guide.md +0 -0
  113. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/resources/project_info.py +0 -0
  114. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/server.py +0 -0
  115. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/__init__.py +0 -0
  116. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/build_context.py +0 -0
  117. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/canvas.py +0 -0
  118. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/delete_note.py +0 -0
  119. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/edit_note.py +0 -0
  120. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/list_directory.py +0 -0
  121. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/move_note.py +0 -0
  122. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/read_content.py +0 -0
  123. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/read_note.py +0 -0
  124. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/recent_activity.py +0 -0
  125. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/search.py +0 -0
  126. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/sync_status.py +0 -0
  127. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/utils.py +0 -0
  128. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/view_note.py +0 -0
  129. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/write_note.py +0 -0
  130. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/models/__init__.py +0 -0
  131. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/models/base.py +0 -0
  132. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/models/knowledge.py +0 -0
  133. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/models/project.py +0 -0
  134. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/models/search.py +0 -0
  135. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/repository/__init__.py +0 -0
  136. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/repository/entity_repository.py +0 -0
  137. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/repository/observation_repository.py +0 -0
  138. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/repository/project_info_repository.py +0 -0
  139. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/repository/project_repository.py +0 -0
  140. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/repository/relation_repository.py +0 -0
  141. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/repository/repository.py +0 -0
  142. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/repository/search_repository.py +0 -0
  143. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/schemas/__init__.py +0 -0
  144. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/schemas/base.py +0 -0
  145. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/schemas/delete.py +0 -0
  146. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/schemas/directory.py +0 -0
  147. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/schemas/importer.py +0 -0
  148. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/schemas/memory.py +0 -0
  149. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/schemas/project_info.py +0 -0
  150. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/schemas/prompt.py +0 -0
  151. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/schemas/request.py +0 -0
  152. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/schemas/response.py +0 -0
  153. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/schemas/search.py +0 -0
  154. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/services/__init__.py +0 -0
  155. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/services/context_service.py +0 -0
  156. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/services/directory_service.py +0 -0
  157. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/services/entity_service.py +0 -0
  158. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/services/exceptions.py +0 -0
  159. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/services/file_service.py +0 -0
  160. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/services/initialization.py +0 -0
  161. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/services/link_resolver.py +0 -0
  162. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/services/migration_service.py +0 -0
  163. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/services/project_service.py +0 -0
  164. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/services/search_service.py +0 -0
  165. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/services/service.py +0 -0
  166. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/services/sync_status_service.py +0 -0
  167. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/sync/__init__.py +0 -0
  168. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/sync/background_sync.py +0 -0
  169. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/sync/sync_service.py +0 -0
  170. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/sync/watch_service.py +0 -0
  171. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
  172. {basic_memory-0.14.1 → basic_memory-0.14.2}/src/basic_memory/templates/prompts/search.hbs +0 -0
  173. {basic_memory-0.14.1 → basic_memory-0.14.2}/test-int/cli/test_reset_integration.py +0 -0
  174. {basic_memory-0.14.1 → basic_memory-0.14.2}/test-int/conftest.py +0 -0
  175. {basic_memory-0.14.1 → basic_memory-0.14.2}/test-int/mcp/test_build_context_validation.py +0 -0
  176. {basic_memory-0.14.1 → basic_memory-0.14.2}/test-int/mcp/test_delete_note_integration.py +0 -0
  177. {basic_memory-0.14.1 → basic_memory-0.14.2}/test-int/mcp/test_edit_note_integration.py +0 -0
  178. {basic_memory-0.14.1 → basic_memory-0.14.2}/test-int/mcp/test_list_directory_integration.py +0 -0
  179. {basic_memory-0.14.1 → basic_memory-0.14.2}/test-int/mcp/test_move_note_integration.py +0 -0
  180. {basic_memory-0.14.1 → basic_memory-0.14.2}/test-int/mcp/test_project_management_integration.py +0 -0
  181. {basic_memory-0.14.1 → basic_memory-0.14.2}/test-int/mcp/test_project_state_sync_integration.py +0 -0
  182. {basic_memory-0.14.1 → basic_memory-0.14.2}/test-int/mcp/test_read_content_integration.py +0 -0
  183. {basic_memory-0.14.1 → basic_memory-0.14.2}/test-int/mcp/test_read_note_integration.py +0 -0
  184. {basic_memory-0.14.1 → basic_memory-0.14.2}/test-int/mcp/test_search_integration.py +0 -0
  185. {basic_memory-0.14.1 → basic_memory-0.14.2}/test-int/mcp/test_write_note_integration.py +0 -0
  186. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/Non-MarkdownFileSupport.pdf +0 -0
  187. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/Screenshot.png +0 -0
  188. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/__init__.py +0 -0
  189. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/api/conftest.py +0 -0
  190. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/api/test_continue_conversation_template.py +0 -0
  191. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/api/test_directory_router.py +0 -0
  192. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/api/test_importer_router.py +0 -0
  193. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/api/test_knowledge_router.py +0 -0
  194. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/api/test_management_router.py +0 -0
  195. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/api/test_memory_router.py +0 -0
  196. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/api/test_project_router.py +0 -0
  197. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/api/test_project_router_operations.py +0 -0
  198. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/api/test_prompt_router.py +0 -0
  199. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/api/test_resource_router.py +0 -0
  200. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/api/test_search_router.py +0 -0
  201. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/api/test_search_template.py +0 -0
  202. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/api/test_template_loader.py +0 -0
  203. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/api/test_template_loader_helpers.py +0 -0
  204. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/cli/conftest.py +0 -0
  205. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/cli/test_auth_commands.py +0 -0
  206. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/cli/test_cli_tools.py +0 -0
  207. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/cli/test_import_chatgpt.py +0 -0
  208. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/cli/test_import_claude_conversations.py +0 -0
  209. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/cli/test_import_claude_projects.py +0 -0
  210. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/cli/test_import_memory_json.py +0 -0
  211. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/cli/test_project_commands.py +0 -0
  212. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/cli/test_project_info.py +0 -0
  213. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/cli/test_status.py +0 -0
  214. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/cli/test_sync.py +0 -0
  215. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/cli/test_version.py +0 -0
  216. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/conftest.py +0 -0
  217. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/importers/test_importer_base.py +0 -0
  218. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/importers/test_importer_utils.py +0 -0
  219. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/markdown/__init__.py +0 -0
  220. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/markdown/test_entity_parser.py +0 -0
  221. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/markdown/test_markdown_plugins.py +0 -0
  222. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/markdown/test_markdown_processor.py +0 -0
  223. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/markdown/test_observation_edge_cases.py +0 -0
  224. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/markdown/test_parser_edge_cases.py +0 -0
  225. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/markdown/test_relation_edge_cases.py +0 -0
  226. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/markdown/test_task_detection.py +0 -0
  227. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/conftest.py +0 -0
  228. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_prompts.py +0 -0
  229. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_resource_project_info.py +0 -0
  230. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_resources.py +0 -0
  231. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_server.py +0 -0
  232. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_tool_build_context.py +0 -0
  233. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_tool_canvas.py +0 -0
  234. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_tool_delete_note.py +0 -0
  235. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_tool_edit_note.py +0 -0
  236. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_tool_list_directory.py +0 -0
  237. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_tool_move_note.py +0 -0
  238. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_tool_read_note.py +0 -0
  239. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_tool_recent_activity.py +0 -0
  240. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_tool_resource.py +0 -0
  241. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_tool_search.py +0 -0
  242. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_tool_sync_status.py +0 -0
  243. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_tool_utils.py +0 -0
  244. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_tool_view_note.py +0 -0
  245. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/mcp/test_tool_write_note.py +0 -0
  246. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/repository/test_entity_repository.py +0 -0
  247. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/repository/test_entity_repository_upsert.py +0 -0
  248. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/repository/test_observation_repository.py +0 -0
  249. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/repository/test_project_info_repository.py +0 -0
  250. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/repository/test_project_repository.py +0 -0
  251. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/repository/test_relation_repository.py +0 -0
  252. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/repository/test_repository.py +0 -0
  253. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/repository/test_search_repository.py +0 -0
  254. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/schemas/test_memory_url.py +0 -0
  255. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/schemas/test_memory_url_validation.py +0 -0
  256. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/schemas/test_schemas.py +0 -0
  257. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/schemas/test_search.py +0 -0
  258. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/services/test_context_service.py +0 -0
  259. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/services/test_directory_service.py +0 -0
  260. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/services/test_entity_service.py +0 -0
  261. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/services/test_file_service.py +0 -0
  262. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/services/test_initialization.py +0 -0
  263. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/services/test_link_resolver.py +0 -0
  264. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/services/test_project_service.py +0 -0
  265. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/services/test_project_service_operations.py +0 -0
  266. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/services/test_search_service.py +0 -0
  267. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/services/test_sync_status_service.py +0 -0
  268. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/sync/test_sync_service.py +0 -0
  269. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/sync/test_sync_wikilink_issue.py +0 -0
  270. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/sync/test_tmp_files.py +0 -0
  271. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/sync/test_watch_service.py +0 -0
  272. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/sync/test_watch_service_edge_cases.py +0 -0
  273. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/test_config.py +0 -0
  274. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/test_db_migration_deduplication.py +0 -0
  275. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/utils/test_file_utils.py +0 -0
  276. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/utils/test_parse_tags.py +0 -0
  277. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/utils/test_permalink_formatting.py +0 -0
  278. {basic_memory-0.14.1 → basic_memory-0.14.2}/tests/utils/test_utf8_handling.py +0 -0
  279. {basic_memory-0.14.1 → basic_memory-0.14.2}/uv.lock +0 -0
@@ -1,5 +1,51 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.14.2 (2025-07-03)
4
+
5
+ ### Bug Fixes
6
+
7
+ - **#204**: Fix MCP Error with MCP-Hub integration
8
+ ([`3621bb7`](https://github.com/basicmachines-co/basic-memory/commit/3621bb7b4d6ac12d892b18e36bb8f7c9101c7b10))
9
+ - Resolve compatibility issues with MCP-Hub
10
+ - Improve error handling in project management tools
11
+ - Ensure stable MCP tool integration across different environments
12
+
13
+ - **Modernize datetime handling and suppress SQLAlchemy warnings**
14
+ ([`f80ac0e`](https://github.com/basicmachines-co/basic-memory/commit/f80ac0e3e74b7a737a7fc7b956b5c1d61b0c67b8))
15
+ - Replace deprecated `datetime.utcnow()` with timezone-aware alternatives
16
+ - Suppress SQLAlchemy deprecation warnings for cleaner output
17
+ - Improve future compatibility with Python datetime best practices
18
+
19
+ ## v0.14.1 (2025-07-03)
20
+
21
+ ### Bug Fixes
22
+
23
+ - **#203**: Constrain fastmcp version to prevent breaking changes
24
+ ([`827f7cf`](https://github.com/basicmachines-co/basic-memory/commit/827f7cf86e7b84c56e7a43bb83f2e5d84a1ad8b8))
25
+ - Pin fastmcp to compatible version range to avoid API breaking changes
26
+ - Ensure stable MCP server functionality across updates
27
+ - Improve dependency management for production deployments
28
+
29
+ - **#190**: Fix Problems with MCP integration
30
+ ([`bd4f551`](https://github.com/basicmachines-co/basic-memory/commit/bd4f551a5bb0b7b4d3a5b04de70e08987c6ab2f9))
31
+ - Resolve MCP server initialization and communication issues
32
+ - Improve error handling and recovery in MCP operations
33
+ - Enhance stability for AI assistant integrations
34
+
35
+ ### Features
36
+
37
+ - **Add Cursor IDE integration button** - One-click setup for Cursor IDE users
38
+ ([`5360005`](https://github.com/basicmachines-co/basic-memory/commit/536000512294d66090bf87abc8014f4dfc284310))
39
+ - Direct installation button for Cursor IDE in README
40
+ - Streamlined setup process for Cursor users
41
+ - Enhanced developer experience for AI-powered coding
42
+
43
+ - **Add Homebrew installation instructions** - Official Homebrew tap support
44
+ ([`39f811f`](https://github.com/basicmachines-co/basic-memory/commit/39f811f8b57dd998445ae43537cd492c680b2e11))
45
+ - Official Homebrew formula in basicmachines-co/basic-memory tap
46
+ - Simplified installation process for macOS users
47
+ - Package manager integration for easier dependency management
48
+
3
49
  ## v0.14.0 (2025-06-26)
4
50
 
5
51
  ### Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: basic-memory
3
- Version: 0.14.1
3
+ Version: 0.14.2
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
@@ -1,7 +1,7 @@
1
1
  """basic-memory - Local-first knowledge management combining Zettelkasten with knowledge graphs"""
2
2
 
3
3
  # Package version - updated by release automation
4
- __version__ = "0.14.1"
4
+ __version__ = "0.14.2"
5
5
 
6
6
  # API version for FastAPI - independent of package version
7
7
  __api_version__ = "v0"
@@ -1,7 +1,7 @@
1
1
  """OAuth authentication provider for Basic Memory MCP server."""
2
2
 
3
3
  import secrets
4
- from datetime import datetime, timedelta
4
+ from datetime import datetime, timedelta, timezone
5
5
  from typing import Dict, Optional
6
6
 
7
7
  import jwt
@@ -92,7 +92,7 @@ class BasicMemoryOAuthProvider(
92
92
  self.authorization_codes[auth_code] = BasicMemoryAuthorizationCode(
93
93
  code=auth_code,
94
94
  scopes=params.scopes or [],
95
- expires_at=(datetime.utcnow() + timedelta(minutes=10)).timestamp(),
95
+ expires_at=(datetime.now(timezone.utc) + timedelta(minutes=10)).timestamp(),
96
96
  client_id=client.client_id,
97
97
  code_challenge=params.code_challenge,
98
98
  redirect_uri=params.redirect_uri,
@@ -119,7 +119,7 @@ class BasicMemoryOAuthProvider(
119
119
 
120
120
  if code and code.client_id == client.client_id:
121
121
  # Check if expired
122
- if datetime.utcnow().timestamp() > code.expires_at:
122
+ if datetime.now(timezone.utc).timestamp() > code.expires_at:
123
123
  del self.authorization_codes[authorization_code]
124
124
  return None
125
125
  return code
@@ -135,7 +135,7 @@ class BasicMemoryOAuthProvider(
135
135
  refresh_token = secrets.token_urlsafe(32)
136
136
 
137
137
  # Store tokens
138
- expires_at = (datetime.utcnow() + timedelta(hours=1)).timestamp()
138
+ expires_at = (datetime.now(timezone.utc) + timedelta(hours=1)).timestamp()
139
139
 
140
140
  self.access_tokens[access_token] = BasicMemoryAccessToken(
141
141
  token=access_token,
@@ -187,7 +187,7 @@ class BasicMemoryOAuthProvider(
187
187
  new_refresh_token = secrets.token_urlsafe(32)
188
188
 
189
189
  # Store new tokens
190
- expires_at = (datetime.utcnow() + timedelta(hours=1)).timestamp()
190
+ expires_at = (datetime.now(timezone.utc) + timedelta(hours=1)).timestamp()
191
191
 
192
192
  self.access_tokens[new_access_token] = BasicMemoryAccessToken(
193
193
  token=new_access_token,
@@ -220,7 +220,7 @@ class BasicMemoryOAuthProvider(
220
220
 
221
221
  if access_token:
222
222
  # Check if expired
223
- if access_token.expires_at and datetime.utcnow().timestamp() > access_token.expires_at:
223
+ if access_token.expires_at and datetime.now(timezone.utc).timestamp() > access_token.expires_at:
224
224
  logger.debug("Token found in memory but expired, removing")
225
225
  del self.access_tokens[token]
226
226
  return None
@@ -262,8 +262,8 @@ class BasicMemoryOAuthProvider(
262
262
  "iss": self.issuer_url,
263
263
  "sub": client_id,
264
264
  "aud": "basic-memory",
265
- "exp": datetime.utcnow() + timedelta(hours=1),
266
- "iat": datetime.utcnow(),
265
+ "exp": datetime.now(timezone.utc) + timedelta(hours=1),
266
+ "iat": datetime.now(timezone.utc),
267
267
  "scopes": scopes,
268
268
  }
269
269
 
@@ -3,7 +3,7 @@
3
3
  import os
4
4
  import secrets
5
5
  from dataclasses import dataclass
6
- from datetime import datetime, timedelta
6
+ from datetime import datetime, timedelta, timezone
7
7
  from typing import Optional, Dict, Any
8
8
 
9
9
  import httpx
@@ -123,7 +123,7 @@ class SupabaseOAuthProvider(
123
123
  self.pending_auth_codes[state] = SupabaseAuthorizationCode(
124
124
  code=state,
125
125
  scopes=params.scopes or [],
126
- expires_at=(datetime.utcnow() + timedelta(minutes=10)).timestamp(),
126
+ expires_at=(datetime.now(timezone.utc) + timedelta(minutes=10)).timestamp(),
127
127
  client_id=client.client_id,
128
128
  code_challenge=params.code_challenge,
129
129
  redirect_uri=params.redirect_uri,
@@ -218,7 +218,7 @@ class SupabaseOAuthProvider(
218
218
 
219
219
  if code and code.client_id == client.client_id:
220
220
  # Check expiration
221
- if datetime.utcnow().timestamp() > code.expires_at:
221
+ if datetime.now(timezone.utc).timestamp() > code.expires_at:
222
222
  del self.pending_auth_codes[authorization_code]
223
223
  return None
224
224
  return code
@@ -453,8 +453,8 @@ class SupabaseOAuthProvider(
453
453
  "email": email,
454
454
  "scopes": scopes,
455
455
  "supabase_token": supabase_access_token[:10] + "...", # Reference only
456
- "exp": datetime.utcnow() + timedelta(hours=1),
457
- "iat": datetime.utcnow(),
456
+ "exp": datetime.now(timezone.utc) + timedelta(hours=1),
457
+ "iat": datetime.now(timezone.utc),
458
458
  }
459
459
 
460
460
  # Use Supabase JWT secret if available
@@ -5,6 +5,7 @@ and manage project context during conversations.
5
5
  """
6
6
 
7
7
  from textwrap import dedent
8
+ from typing import Optional
8
9
 
9
10
  from fastmcp import Context
10
11
  from loguru import logger
@@ -19,7 +20,9 @@ from basic_memory.utils import generate_permalink
19
20
 
20
21
 
21
22
  @mcp.tool("list_memory_projects")
22
- async def list_memory_projects(ctx: Context | None = None) -> str:
23
+ async def list_memory_projects(
24
+ ctx: Context | None = None, _compatibility: Optional[str] = None
25
+ ) -> str:
23
26
  """List all available projects with their status.
24
27
 
25
28
  Shows all Basic Memory projects that are available, indicating which one
@@ -159,7 +162,9 @@ async def switch_project(project_name: str, ctx: Context | None = None) -> str:
159
162
 
160
163
 
161
164
  @mcp.tool()
162
- async def get_current_project(ctx: Context | None = None) -> str:
165
+ async def get_current_project(
166
+ ctx: Context | None = None, _compatibility: Optional[str] = None
167
+ ) -> str:
163
168
  """Show the currently active project and basic stats.
164
169
 
165
170
  Displays which project is currently active and provides basic information
@@ -173,6 +173,8 @@ def setup_logging(
173
173
  "httpx": logging.WARNING,
174
174
  # File watching logs
175
175
  "watchfiles.main": logging.WARNING,
176
+ # SQLAlchemy deprecation warnings
177
+ "sqlalchemy": logging.WARNING,
176
178
  }
177
179
 
178
180
  # Set log levels for noisy loggers
@@ -1,7 +1,7 @@
1
1
  """Tests for OAuth authentication provider."""
2
2
 
3
3
  import pytest
4
- from datetime import datetime, timedelta
4
+ from datetime import datetime, timedelta, timezone
5
5
  from mcp.server.auth.provider import AuthorizationParams
6
6
  from mcp.shared.auth import OAuthClientInformationFull
7
7
  from pydantic import AnyHttpUrl
@@ -185,7 +185,7 @@ class TestBasicMemoryOAuthProvider:
185
185
  token=token_str,
186
186
  client_id=client.client_id,
187
187
  scopes=["read", "write"],
188
- expires_at=int((datetime.utcnow() + timedelta(hours=1)).timestamp()),
188
+ expires_at=int((datetime.now(timezone.utc) + timedelta(hours=1)).timestamp()),
189
189
  )
190
190
  provider.access_tokens[token_str] = access_token
191
191
 
@@ -226,7 +226,7 @@ class TestBasicMemoryOAuthProvider:
226
226
  provider.authorization_codes[auth_code] = BasicMemoryAuthorizationCode(
227
227
  code=auth_code,
228
228
  scopes=["read"],
229
- expires_at=(datetime.utcnow() - timedelta(minutes=1)).timestamp(),
229
+ expires_at=(datetime.now(timezone.utc) - timedelta(minutes=1)).timestamp(),
230
230
  client_id=client.client_id,
231
231
  code_challenge="challenge",
232
232
  redirect_uri=AnyHttpUrl("http://localhost:3000/callback"),
@@ -288,7 +288,7 @@ class TestBasicMemoryOAuthProvider:
288
288
  token=expired_token_str,
289
289
  client_id="test-client",
290
290
  scopes=["read"],
291
- expires_at=int((datetime.utcnow() - timedelta(minutes=1)).timestamp()), # Expired
291
+ expires_at=int((datetime.now(timezone.utc) - timedelta(minutes=1)).timestamp()), # Expired
292
292
  )
293
293
  provider.access_tokens[expired_token_str] = expired_access_token
294
294
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes