basic-memory 0.8.0__tar.gz → 0.10.0__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 (242) hide show
  1. basic_memory-0.10.0/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  2. basic_memory-0.10.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
  3. basic_memory-0.10.0/.github/ISSUE_TEMPLATE/documentation.md +19 -0
  4. basic_memory-0.10.0/.github/ISSUE_TEMPLATE/feature_request.md +28 -0
  5. basic_memory-0.10.0/.github/dependabot.yml +12 -0
  6. {basic_memory-0.8.0 → basic_memory-0.10.0}/.gitignore +5 -0
  7. {basic_memory-0.8.0 → basic_memory-0.10.0}/CHANGELOG.md +112 -0
  8. basic_memory-0.10.0/CLA.md +34 -0
  9. basic_memory-0.10.0/CLAUDE.md +171 -0
  10. basic_memory-0.10.0/CONTRIBUTING.md +163 -0
  11. basic_memory-0.10.0/Dockerfile +16 -0
  12. {basic_memory-0.8.0 → basic_memory-0.10.0}/Makefile +14 -1
  13. basic_memory-0.10.0/PKG-INFO +386 -0
  14. basic_memory-0.10.0/README.md +352 -0
  15. basic_memory-0.10.0/SECURITY.md +13 -0
  16. basic_memory-0.10.0/docs/AI Assistant Guide.md +396 -0
  17. basic_memory-0.10.0/docs/CLI Reference.md +289 -0
  18. basic_memory-0.10.0/docs/Canvas.md +107 -0
  19. basic_memory-0.10.0/docs/Getting Started with Basic Memory.md +267 -0
  20. basic_memory-0.10.0/docs/Knowledge Format.md +195 -0
  21. basic_memory-0.10.0/docs/Obsidian Integration.md +146 -0
  22. basic_memory-0.10.0/docs/Technical Information.md +243 -0
  23. basic_memory-0.10.0/docs/User Guide.md +556 -0
  24. basic_memory-0.10.0/docs/Welcome to Basic memory.md +68 -0
  25. basic_memory-0.10.0/docs/attachments/Canvas.png +0 -0
  26. basic_memory-0.10.0/docs/attachments/Claude-Obsidian-Demo.mp4 +0 -0
  27. basic_memory-0.10.0/docs/attachments/Prompt.png +0 -0
  28. basic_memory-0.10.0/docs/attachments/disk-ai-logo.png +0 -0
  29. basic_memory-0.10.0/docs/attachments/prompt 1.png +0 -0
  30. basic_memory-0.10.0/docs/attachments/prompt2.png +0 -0
  31. basic_memory-0.10.0/docs/attachments/prompt3.png +0 -0
  32. basic_memory-0.10.0/docs/attachments/prompt4.png +0 -0
  33. basic_memory-0.10.0/docs/publish.js +5 -0
  34. basic_memory-0.10.0/examples/Coffee Notes/Brewing Equipment.md +83 -0
  35. basic_memory-0.10.0/examples/Coffee Notes/Coffee Bean Origins.md +78 -0
  36. basic_memory-0.10.0/examples/Coffee Notes/Coffee Brewing Methods.md +70 -0
  37. basic_memory-0.10.0/examples/Coffee Notes/Coffee Flavor Map.md +89 -0
  38. basic_memory-0.10.0/examples/Coffee Notes/Coffee Knowledge Base.md +73 -0
  39. basic_memory-0.10.0/examples/Coffee Notes/Flavor Extraction.md +79 -0
  40. basic_memory-0.10.0/examples/Coffee Notes/Perfect Pour Over Coffee Method.canvas +161 -0
  41. basic_memory-0.10.0/examples/Coffee Notes/Tasting Notes.md +84 -0
  42. {basic_memory-0.8.0 → basic_memory-0.10.0}/installer/installer.py +0 -4
  43. {basic_memory-0.8.0 → basic_memory-0.10.0}/pyproject.toml +4 -2
  44. basic_memory-0.10.0/smithery.yaml +15 -0
  45. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/__init__.py +1 -1
  46. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/alembic/migrations.py +4 -9
  47. basic_memory-0.10.0/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +106 -0
  48. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/api/app.py +9 -6
  49. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/api/routers/__init__.py +2 -1
  50. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/api/routers/knowledge_router.py +30 -4
  51. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/api/routers/memory_router.py +3 -2
  52. basic_memory-0.10.0/src/basic_memory/api/routers/project_info_router.py +274 -0
  53. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/api/routers/search_router.py +22 -4
  54. basic_memory-0.10.0/src/basic_memory/cli/app.py +69 -0
  55. basic_memory-0.10.0/src/basic_memory/cli/commands/__init__.py +18 -0
  56. basic_memory-0.10.0/src/basic_memory/cli/commands/db.py +24 -0
  57. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/import_chatgpt.py +31 -36
  58. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/import_claude_conversations.py +32 -35
  59. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/import_claude_projects.py +34 -37
  60. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/import_memory_json.py +26 -28
  61. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/mcp.py +7 -1
  62. basic_memory-0.10.0/src/basic_memory/cli/commands/project.py +119 -0
  63. basic_memory-0.10.0/src/basic_memory/cli/commands/project_info.py +167 -0
  64. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/status.py +7 -9
  65. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/cli/commands/sync.py +54 -9
  66. basic_memory-0.8.0/src/basic_memory/cli/commands/tools.py → basic_memory-0.10.0/src/basic_memory/cli/commands/tool.py +92 -19
  67. basic_memory-0.10.0/src/basic_memory/cli/main.py +58 -0
  68. basic_memory-0.10.0/src/basic_memory/config.py +223 -0
  69. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/db.py +19 -4
  70. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/deps.py +10 -3
  71. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/file_utils.py +34 -18
  72. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/markdown/markdown_processor.py +1 -1
  73. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/markdown/utils.py +5 -0
  74. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/mcp/main.py +1 -2
  75. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/mcp/prompts/__init__.py +6 -2
  76. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +9 -10
  77. basic_memory-0.10.0/src/basic_memory/mcp/prompts/continue_conversation.py +111 -0
  78. basic_memory-0.10.0/src/basic_memory/mcp/prompts/recent_activity.py +88 -0
  79. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/mcp/prompts/search.py +72 -17
  80. basic_memory-0.10.0/src/basic_memory/mcp/prompts/utils.py +155 -0
  81. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/mcp/server.py +1 -1
  82. basic_memory-0.10.0/src/basic_memory/mcp/tools/__init__.py +27 -0
  83. basic_memory-0.10.0/src/basic_memory/mcp/tools/build_context.py +85 -0
  84. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/mcp/tools/canvas.py +17 -19
  85. basic_memory-0.10.0/src/basic_memory/mcp/tools/delete_note.py +28 -0
  86. basic_memory-0.10.0/src/basic_memory/mcp/tools/project_info.py +51 -0
  87. basic_memory-0.8.0/src/basic_memory/mcp/tools/resource.py → basic_memory-0.10.0/src/basic_memory/mcp/tools/read_content.py +42 -5
  88. basic_memory-0.10.0/src/basic_memory/mcp/tools/read_note.py +190 -0
  89. basic_memory-0.10.0/src/basic_memory/mcp/tools/recent_activity.py +100 -0
  90. basic_memory-0.10.0/src/basic_memory/mcp/tools/search.py +77 -0
  91. basic_memory-0.10.0/src/basic_memory/mcp/tools/utils.py +383 -0
  92. basic_memory-0.10.0/src/basic_memory/mcp/tools/write_note.py +124 -0
  93. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/models/search.py +2 -1
  94. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/repository/entity_repository.py +3 -2
  95. basic_memory-0.10.0/src/basic_memory/repository/project_info_repository.py +9 -0
  96. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/repository/repository.py +23 -6
  97. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/repository/search_repository.py +33 -10
  98. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/schemas/__init__.py +12 -0
  99. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/schemas/memory.py +3 -2
  100. basic_memory-0.10.0/src/basic_memory/schemas/project_info.py +96 -0
  101. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/schemas/search.py +27 -32
  102. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/services/context_service.py +3 -3
  103. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/services/entity_service.py +8 -2
  104. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/services/file_service.py +107 -57
  105. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/services/link_resolver.py +5 -45
  106. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/services/search_service.py +45 -16
  107. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/sync/sync_service.py +274 -39
  108. basic_memory-0.10.0/src/basic_memory/sync/watch_service.py +354 -0
  109. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/utils.py +40 -40
  110. basic_memory-0.10.0/static/ai_assistant_guide.md +413 -0
  111. basic_memory-0.10.0/tests/api/test_project_info_router.py +110 -0
  112. basic_memory-0.10.0/tests/cli/conftest.py +30 -0
  113. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/cli/test_cli_tools.py +90 -45
  114. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/cli/test_import_chatgpt.py +2 -0
  115. basic_memory-0.10.0/tests/cli/test_project_commands.py +158 -0
  116. basic_memory-0.10.0/tests/cli/test_project_info.py +38 -0
  117. basic_memory-0.10.0/tests/cli/test_version.py +14 -0
  118. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/conftest.py +1 -1
  119. basic_memory-0.10.0/tests/mcp/test_prompts.py +215 -0
  120. basic_memory-0.10.0/tests/mcp/test_resources.py +19 -0
  121. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/mcp/test_tool_memory.py +1 -1
  122. basic_memory-0.10.0/tests/mcp/test_tool_notes.py +231 -0
  123. basic_memory-0.10.0/tests/mcp/test_tool_project_info.py +127 -0
  124. basic_memory-0.10.0/tests/mcp/test_tool_read_note.py +291 -0
  125. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/mcp/test_tool_resource.py +41 -72
  126. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/mcp/test_tool_search.py +5 -5
  127. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/mcp/test_tool_utils.py +34 -4
  128. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/repository/test_entity_repository.py +17 -3
  129. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/schemas/test_search.py +10 -22
  130. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/services/test_context_service.py +3 -3
  131. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/services/test_entity_service.py +77 -41
  132. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/services/test_link_resolver.py +16 -1
  133. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/services/test_search_service.py +116 -0
  134. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/sync/test_sync_service.py +34 -34
  135. basic_memory-0.10.0/tests/sync/test_tmp_files.py +181 -0
  136. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/sync/test_watch_service.py +75 -6
  137. basic_memory-0.10.0/tests/test_config.py +156 -0
  138. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/utils/test_permalink_formatting.py +1 -1
  139. {basic_memory-0.8.0 → basic_memory-0.10.0}/uv.lock +10 -411
  140. basic_memory-0.8.0/CLAUDE.md +0 -465
  141. basic_memory-0.8.0/CONTRIBUTING.md +0 -17
  142. basic_memory-0.8.0/PKG-INFO +0 -379
  143. basic_memory-0.8.0/README.md +0 -344
  144. basic_memory-0.8.0/data/ai_assistant_guide.md +0 -275
  145. basic_memory-0.8.0/src/basic_memory/cli/app.py +0 -18
  146. basic_memory-0.8.0/src/basic_memory/cli/commands/__init__.py +0 -5
  147. basic_memory-0.8.0/src/basic_memory/cli/commands/db.py +0 -28
  148. basic_memory-0.8.0/src/basic_memory/cli/main.py +0 -19
  149. basic_memory-0.8.0/src/basic_memory/config.py +0 -76
  150. basic_memory-0.8.0/src/basic_memory/mcp/prompts/continue_conversation.py +0 -172
  151. basic_memory-0.8.0/src/basic_memory/mcp/prompts/json_canvas_spec.py +0 -25
  152. basic_memory-0.8.0/src/basic_memory/mcp/prompts/recent_activity.py +0 -46
  153. basic_memory-0.8.0/src/basic_memory/mcp/prompts/utils.py +0 -98
  154. basic_memory-0.8.0/src/basic_memory/mcp/tools/__init__.py +0 -38
  155. basic_memory-0.8.0/src/basic_memory/mcp/tools/knowledge.py +0 -68
  156. basic_memory-0.8.0/src/basic_memory/mcp/tools/memory.py +0 -177
  157. basic_memory-0.8.0/src/basic_memory/mcp/tools/notes.py +0 -201
  158. basic_memory-0.8.0/src/basic_memory/mcp/tools/search.py +0 -38
  159. basic_memory-0.8.0/src/basic_memory/mcp/tools/utils.py +0 -155
  160. basic_memory-0.8.0/src/basic_memory/sync/watch_service.py +0 -214
  161. basic_memory-0.8.0/tests/mcp/test_prompts.py +0 -61
  162. basic_memory-0.8.0/tests/mcp/test_resources.py +0 -37
  163. basic_memory-0.8.0/tests/mcp/test_tool_knowledge.py +0 -162
  164. basic_memory-0.8.0/tests/mcp/test_tool_notes.py +0 -352
  165. {basic_memory-0.8.0 → basic_memory-0.10.0}/.github/workflows/pr-title.yml +0 -0
  166. {basic_memory-0.8.0 → basic_memory-0.10.0}/.github/workflows/release.yml +0 -0
  167. {basic_memory-0.8.0 → basic_memory-0.10.0}/.github/workflows/test.yml +0 -0
  168. {basic_memory-0.8.0 → basic_memory-0.10.0}/.python-version +0 -0
  169. {basic_memory-0.8.0 → basic_memory-0.10.0}/CITATION.cff +0 -0
  170. {basic_memory-0.8.0 → basic_memory-0.10.0}/CODE_OF_CONDUCT.md +0 -0
  171. {basic_memory-0.8.0 → basic_memory-0.10.0}/LICENSE +0 -0
  172. {basic_memory-0.8.0 → basic_memory-0.10.0}/basic-memory.md +0 -0
  173. {basic_memory-0.8.0 → basic_memory-0.10.0}/installer/Basic.icns +0 -0
  174. {basic_memory-0.8.0 → basic_memory-0.10.0}/installer/README.md +0 -0
  175. {basic_memory-0.8.0 → basic_memory-0.10.0}/installer/icon.svg +0 -0
  176. {basic_memory-0.8.0 → basic_memory-0.10.0}/installer/make_icons.sh +0 -0
  177. {basic_memory-0.8.0 → basic_memory-0.10.0}/installer/setup.py +0 -0
  178. {basic_memory-0.8.0 → basic_memory-0.10.0}/memory.json +0 -0
  179. {basic_memory-0.8.0 → basic_memory-0.10.0}/scripts/install.sh +0 -0
  180. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/alembic/alembic.ini +0 -0
  181. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/alembic/env.py +0 -0
  182. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/alembic/script.py.mako +0 -0
  183. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
  184. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
  185. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
  186. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/api/__init__.py +0 -0
  187. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/api/routers/resource_router.py +0 -0
  188. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/cli/__init__.py +0 -0
  189. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/markdown/__init__.py +0 -0
  190. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/markdown/entity_parser.py +0 -0
  191. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/markdown/plugins.py +0 -0
  192. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/markdown/schemas.py +0 -0
  193. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/mcp/__init__.py +0 -0
  194. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/mcp/async_client.py +0 -0
  195. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/models/__init__.py +0 -0
  196. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/models/base.py +0 -0
  197. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/models/knowledge.py +0 -0
  198. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/repository/__init__.py +0 -0
  199. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/repository/observation_repository.py +0 -0
  200. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/repository/relation_repository.py +0 -0
  201. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/schemas/base.py +0 -0
  202. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/schemas/delete.py +0 -0
  203. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/schemas/request.py +0 -0
  204. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/schemas/response.py +0 -0
  205. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/services/__init__.py +0 -0
  206. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/services/exceptions.py +0 -0
  207. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/services/service.py +0 -0
  208. {basic_memory-0.8.0 → basic_memory-0.10.0}/src/basic_memory/sync/__init__.py +0 -0
  209. {basic_memory-0.8.0/data → basic_memory-0.10.0/static}/json_canvas_spec_1_0.md +0 -0
  210. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/Non-MarkdownFileSupport.pdf +0 -0
  211. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/Screenshot.png +0 -0
  212. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/__init__.py +0 -0
  213. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/api/conftest.py +0 -0
  214. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/api/test_knowledge_router.py +0 -0
  215. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/api/test_memory_router.py +0 -0
  216. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/api/test_resource_router.py +0 -0
  217. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/api/test_search_router.py +0 -0
  218. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/cli/test_import_claude_conversations.py +0 -0
  219. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/cli/test_import_claude_projects.py +0 -0
  220. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/cli/test_import_memory_json.py +0 -0
  221. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/cli/test_status.py +0 -0
  222. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/cli/test_sync.py +0 -0
  223. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/edit_file_test.py +0 -0
  224. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/markdown/__init__.py +0 -0
  225. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/markdown/test_entity_parser.py +0 -0
  226. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/markdown/test_markdown_plugins.py +0 -0
  227. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/markdown/test_markdown_processor.py +0 -0
  228. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/markdown/test_observation_edge_cases.py +0 -0
  229. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/markdown/test_parser_edge_cases.py +0 -0
  230. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/markdown/test_relation_edge_cases.py +0 -0
  231. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/markdown/test_task_detection.py +0 -0
  232. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/mcp/conftest.py +0 -0
  233. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/mcp/test_tool_canvas.py +0 -0
  234. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/repository/test_observation_repository.py +0 -0
  235. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/repository/test_relation_repository.py +0 -0
  236. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/repository/test_repository.py +0 -0
  237. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/schemas/test_memory_url.py +0 -0
  238. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/schemas/test_schemas.py +0 -0
  239. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/services/test_file_service.py +0 -0
  240. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/sync/test_watch_service_edge_cases.py +0 -0
  241. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/test_basic_memory.py +0 -0
  242. {basic_memory-0.8.0 → basic_memory-0.10.0}/tests/utils/test_file_utils.py +0 -0
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve Basic Memory
4
+ title: '[BUG] '
5
+ labels: bug
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Bug Description
10
+ A clear and concise description of what the bug is.
11
+
12
+ ## Steps To Reproduce
13
+ Steps to reproduce the behavior:
14
+ 1. Install version '...'
15
+ 2. Run command '...'
16
+ 3. Use tool/feature '...'
17
+ 4. See error
18
+
19
+ ## Expected Behavior
20
+ A clear and concise description of what you expected to happen.
21
+
22
+ ## Actual Behavior
23
+ What actually happened, including error messages and output.
24
+
25
+ ## Environment
26
+ - OS: [e.g. macOS 14.2, Ubuntu 22.04]
27
+ - Python version: [e.g. 3.12.1]
28
+ - Basic Memory version: [e.g. 0.1.0]
29
+ - Installation method: [e.g. pip, uv, source]
30
+ - Claude Desktop version (if applicable):
31
+
32
+ ## Additional Context
33
+ - Configuration files (if relevant)
34
+ - Logs or screenshots
35
+ - Any special configuration or environment variables
36
+
37
+ ## Possible Solution
38
+ If you have any ideas on what might be causing the issue or how to fix it, please share them here.
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Basic Memory Discussions
4
+ url: https://github.com/basicmachines-co/basic-memory/discussions
5
+ about: For questions, ideas, or more open-ended discussions
6
+ - name: Documentation
7
+ url: https://github.com/basicmachines-co/basic-memory#readme
8
+ about: Please check the documentation first before reporting an issue
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: Documentation improvement
3
+ about: Suggest improvements or report issues with documentation
4
+ title: '[DOCS] '
5
+ labels: documentation
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Documentation Issue
10
+ Describe what's missing, unclear, or incorrect in the current documentation.
11
+
12
+ ## Location
13
+ Where is the problematic documentation? (URL, file path, or section)
14
+
15
+ ## Suggested Improvement
16
+ How would you improve this documentation? Please be as specific as possible.
17
+
18
+ ## Additional Context
19
+ Any additional information or screenshots that might help explain the issue or improvement.
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for Basic Memory
4
+ title: '[FEATURE] '
5
+ labels: enhancement
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Feature Description
10
+ A clear and concise description of the feature you'd like to see implemented.
11
+
12
+ ## Problem This Feature Solves
13
+ Describe the problem or limitation you're experiencing that this feature would address.
14
+
15
+ ## Proposed Solution
16
+ Describe how you envision this feature working. Include:
17
+ - User workflow
18
+ - Interface design (if applicable)
19
+ - Technical approach (if you have ideas)
20
+
21
+ ## Alternative Solutions
22
+ Have you considered any alternative solutions or workarounds?
23
+
24
+ ## Additional Context
25
+ Add any other context, screenshots, or examples about the feature request here.
26
+
27
+ ## Impact
28
+ How would this feature benefit you and other users of Basic Memory?
@@ -0,0 +1,12 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ schedule:
11
+ interval: "weekly"
12
+
@@ -43,3 +43,8 @@ ENV/
43
43
  # macOS
44
44
  .DS_Store
45
45
  /.coverage.*
46
+
47
+ # obsidian docs:
48
+ /docs/.obsidian/
49
+ /examples/.obsidian/
50
+ /examples/.basic-memory/
@@ -1,6 +1,118 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v0.10.0 (2025-03-15)
5
+
6
+ ### Bug Fixes
7
+
8
+ - Ai_resource_guide.md path
9
+ ([`da97353`](https://github.com/basicmachines-co/basic-memory/commit/da97353cfc3acc1ceb0eca22ac6af326f77dc199))
10
+
11
+ Signed-off-by: phernandez <paul@basicmachines.co>
12
+
13
+ - Ai_resource_guide.md path
14
+ ([`c4732a4`](https://github.com/basicmachines-co/basic-memory/commit/c4732a47b37dd2e404139fb283b65556c81ce7c9))
15
+
16
+ - Ai_resource_guide.md path
17
+ ([`2e9d673`](https://github.com/basicmachines-co/basic-memory/commit/2e9d673e54ad6a63a971db64f01fc2f4e59c2e69))
18
+
19
+ Signed-off-by: phernandez <paul@basicmachines.co>
20
+
21
+ - Don't sync *.tmp files on watch ([#31](https://github.com/basicmachines-co/basic-memory/pull/31),
22
+ [`6b110b2`](https://github.com/basicmachines-co/basic-memory/commit/6b110b28dd8ba705ebfc0bcb41faf2cb993da2c3))
23
+
24
+ Fixes #30
25
+
26
+ Signed-off-by: phernandez <paul@basicmachines.co>
27
+
28
+ - Drop search_index table on db reindex
29
+ ([`31cca6f`](https://github.com/basicmachines-co/basic-memory/commit/31cca6f913849a0ab8fc944803533e3072e9ef88))
30
+
31
+ Signed-off-by: phernandez <paul@basicmachines.co>
32
+
33
+ - Improve utf-8 support for file reading/writing
34
+ ([#32](https://github.com/basicmachines-co/basic-memory/pull/32),
35
+ [`eb5e4ec`](https://github.com/basicmachines-co/basic-memory/commit/eb5e4ec6bd4d2fe757087be030d867f4ca1d38ba))
36
+
37
+ fixes #29
38
+
39
+ Signed-off-by: phernandez <paul@basicmachines.co>
40
+
41
+ ### Chores
42
+
43
+ - Remove logfire
44
+ ([`9bb8a02`](https://github.com/basicmachines-co/basic-memory/commit/9bb8a020c3425a02cb3a88f6f02adcd281bccee2))
45
+
46
+ Signed-off-by: phernandez <paul@basicmachines.co>
47
+
48
+ ### Documentation
49
+
50
+ - Add glama badge. Fix typos in README.md
51
+ ([#28](https://github.com/basicmachines-co/basic-memory/pull/28),
52
+ [`9af913d`](https://github.com/basicmachines-co/basic-memory/commit/9af913da4fba7bb4908caa3f15f2db2aa03777ec))
53
+
54
+ Signed-off-by: phernandez <paul@basicmachines.co>
55
+
56
+ - Update CLAUDE.md with GitHub integration capabilities
57
+ ([#25](https://github.com/basicmachines-co/basic-memory/pull/25),
58
+ [`fea2f40`](https://github.com/basicmachines-co/basic-memory/commit/fea2f40d1b54d0c533e6d7ee7ce1aa7b83ad9a47))
59
+
60
+ This PR updates the CLAUDE.md file to document the GitHub integration capabilities that enable
61
+ Claude to participate directly in the development workflow.
62
+
63
+ ### Features
64
+
65
+ - Add Smithery integration for easier installation
66
+ ([#24](https://github.com/basicmachines-co/basic-memory/pull/24),
67
+ [`eb1e7b6`](https://github.com/basicmachines-co/basic-memory/commit/eb1e7b6088b0b3dead9c104ee44174b2baebf417))
68
+
69
+ This PR adds support for deploying Basic Memory on the Smithery platform.
70
+
71
+ Signed-off-by: bm-claudeai <claude@basicmachines.co>
72
+
73
+
74
+ ## v0.9.0 (2025-03-07)
75
+
76
+ ### Chores
77
+
78
+ - Pre beta prep ([#20](https://github.com/basicmachines-co/basic-memory/pull/20),
79
+ [`6a4bd54`](https://github.com/basicmachines-co/basic-memory/commit/6a4bd546466a45107007b5000276b6c9bb62ef27))
80
+
81
+ fix: drop search_index table on db reindex
82
+
83
+ fix: ai_resource_guide.md path
84
+
85
+ chore: remove logfire
86
+
87
+ Signed-off-by: phernandez <paul@basicmachines.co>
88
+
89
+ ### Documentation
90
+
91
+ - Update README.md and CLAUDE.md
92
+ ([`182ec78`](https://github.com/basicmachines-co/basic-memory/commit/182ec7835567fc246798d9b4ad121b2f85bc6ade))
93
+
94
+ ### Features
95
+
96
+ - Add project_info tool ([#19](https://github.com/basicmachines-co/basic-memory/pull/19),
97
+ [`d2bd75a`](https://github.com/basicmachines-co/basic-memory/commit/d2bd75a949cc4323cb376ac2f6cb39f47c78c428))
98
+
99
+ Signed-off-by: phernandez <paul@basicmachines.co>
100
+
101
+ - Beta work ([#17](https://github.com/basicmachines-co/basic-memory/pull/17),
102
+ [`e6496df`](https://github.com/basicmachines-co/basic-memory/commit/e6496df595f3cafde6cc836384ee8c60886057a5))
103
+
104
+ feat: Add multiple projects support
105
+
106
+ feat: enhanced read_note for when initial result is not found
107
+
108
+ fix: merge frontmatter when updating note
109
+
110
+ fix: handle directory removed on sync watch
111
+
112
+ - Implement boolean search ([#18](https://github.com/basicmachines-co/basic-memory/pull/18),
113
+ [`90d5754`](https://github.com/basicmachines-co/basic-memory/commit/90d5754180beaf4acd4be38f2438712555640b49))
114
+
115
+
4
116
  ## v0.8.0 (2025-02-28)
5
117
 
6
118
  ### Chores
@@ -0,0 +1,34 @@
1
+ Developer Certificate of Origin
2
+ Version 1.1
3
+ https://developercertificate.org/
4
+
5
+ Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
6
+
7
+ Everyone is permitted to copy and distribute verbatim copies of this
8
+ license document, but changing it is not allowed.
9
+
10
+ Developer's Certificate of Origin 1.1
11
+
12
+ By making a contribution to this project, I certify that:
13
+
14
+ (a) The contribution was created in whole or in part by me and I
15
+ have the right to submit it under the open source license
16
+ indicated in the file; or
17
+
18
+ (b) The contribution is based upon previous work that, to the best
19
+ of my knowledge, is covered under an appropriate open source
20
+ license and I have the right under that license to submit that
21
+ work with modifications, whether created in whole or in part
22
+ by me, under the same open source license (unless I am
23
+ permitted to submit under a different license), as indicated
24
+ in the file; or
25
+
26
+ (c) The contribution was provided directly to me by some other
27
+ person who certified (a), (b) or (c) and I have not modified
28
+ it.
29
+
30
+ (d) I understand and agree that this project and the contribution
31
+ are public and that a record of the contribution (including all
32
+ personal information I submit with it, including my sign-off) is
33
+ maintained indefinitely and may be redistributed consistent with
34
+ this project or the open source license(s) involved.
@@ -0,0 +1,171 @@
1
+ # CLAUDE.md - Basic Memory Project Guide
2
+
3
+ ## Project Overview
4
+
5
+ Basic Memory is a local-first knowledge management system built on the Model Context Protocol (MCP). It enables
6
+ bidirectional communication between LLMs (like Claude) and markdown files, creating a personal knowledge graph that can
7
+ be traversed using links between documents.
8
+
9
+ ## CODEBASE DEVELOPMENT
10
+
11
+ ### Project information
12
+
13
+ See the [README.md](README.md) file for a project overview.
14
+
15
+ ### Build and Test Commands
16
+
17
+ - Install: `make install` or `pip install -e ".[dev]"`
18
+ - Run tests: `uv run pytest -p pytest_mock -v` or `make test`
19
+ - Single test: `pytest tests/path/to/test_file.py::test_function_name`
20
+ - Lint: `make lint` or `ruff check . --fix`
21
+ - Type check: `make type-check` or `uv run pyright`
22
+ - Format: `make format` or `uv run ruff format .`
23
+ - Run all code checks: `make check` (runs lint, format, type-check, test)
24
+ - Create db migration: `make migration m="Your migration message"`
25
+ - Run development MCP Inspector: `make run-inspector`
26
+
27
+ ### Code Style Guidelines
28
+
29
+ - Line length: 100 characters max
30
+ - Python 3.12+ with full type annotations
31
+ - Format with ruff (consistent styling)
32
+ - Import order: standard lib, third-party, local imports
33
+ - Naming: snake_case for functions/variables, PascalCase for classes
34
+ - Prefer async patterns with SQLAlchemy 2.0
35
+ - Use Pydantic v2 for data validation and schemas
36
+ - CLI uses Typer for command structure
37
+ - API uses FastAPI for endpoints
38
+ - Follow the repository pattern for data access
39
+ - Tools communicate to api routers via the httpx ASGI client (in process)
40
+
41
+ ### Codebase Architecture
42
+
43
+ - `/alembic` - Alembic db migrations
44
+ - `/api` - FastAPI implementation of REST endpoints
45
+ - `/cli` - Typer command-line interface
46
+ - `/markdown` - Markdown parsing and processing
47
+ - `/mcp` - Model Context Protocol server implementation
48
+ - `/models` - SQLAlchemy ORM models
49
+ - `/repository` - Data access layer
50
+ - `/schemas` - Pydantic models for validation
51
+ - `/services` - Business logic layer
52
+ - `/sync` - File synchronization services
53
+
54
+ ### Development Notes
55
+
56
+ - MCP tools are defined in src/basic_memory/mcp/tools/
57
+ - MCP prompts are defined in src/basic_memory/mcp/prompts/
58
+ - MCP tools should be atomic, composable operations
59
+ - Use `textwrap.dedent()` for multi-line string formatting in prompts and tools
60
+ - MCP Prompts are used to invoke tools and format content with instructions for an LLM
61
+ - Schema changes require Alembic migrations
62
+ - SQLite is used for indexing and full text search, files are source of truth
63
+ - Testing uses pytest with asyncio support (strict mode)
64
+ - Test database uses in-memory SQLite
65
+ - Avoid creating mocks in tests in most circumstances.
66
+ - Each test runs in a standalone enviroment with in memory SQLite and tmp_file directory
67
+
68
+ ## BASIC MEMORY PRODUCT USAGE
69
+
70
+ ### Knowledge Structure
71
+
72
+ - Entity: Any concept, document, or idea represented as a markdown file
73
+ - Observation: A categorized fact about an entity (`- [category] content`)
74
+ - Relation: A directional link between entities (`- relation_type [[Target]]`)
75
+ - Frontmatter: YAML metadata at the top of markdown files
76
+ - Knowledge representation follows precise markdown format:
77
+ - Observations with [category] prefixes
78
+ - Relations with WikiLinks [[Entity]]
79
+ - Frontmatter with metadata
80
+
81
+ ### Basic Memory Commands
82
+
83
+ - Sync knowledge: `basic-memory sync` or `basic-memory sync --watch`
84
+ - Import from Claude: `basic-memory import claude conversations`
85
+ - Import from ChatGPT: `basic-memory import chatgpt`
86
+ - Import from Memory JSON: `basic-memory import memory-json`
87
+ - Check sync status: `basic-memory status`
88
+ - Tool access: `basic-memory tools` (provides CLI access to MCP tools)
89
+ - Guide: `basic-memory tools basic-memory-guide`
90
+ - Continue: `basic-memory tools continue-conversation --topic="search"`
91
+
92
+ ### MCP Capabilities
93
+
94
+ - Basic Memory exposes these MCP tools to LLMs:
95
+
96
+ **Content Management:**
97
+ - `write_note(title, content, folder, tags)` - Create/update markdown notes with semantic observations and relations
98
+ - `read_note(identifier, page, page_size)` - Read notes by title, permalink, or memory:// URL with knowledge graph
99
+ awareness
100
+ - `read_file(path)` - Read raw file content (text, images, binaries) without knowledge graph processing
101
+
102
+ **Knowledge Graph Navigation:**
103
+ - `build_context(url, depth, timeframe)` - Navigate the knowledge graph via memory:// URLs for conversation
104
+ continuity
105
+ - `recent_activity(type, depth, timeframe)` - Get recently updated information with specified timeframe (e.g., "
106
+ 1d", "1 week")
107
+
108
+ **Search & Discovery:**
109
+ - `search(query, page, page_size)` - Full-text search across all content with filtering options
110
+
111
+ **Visualization:**
112
+ - `canvas(nodes, edges, title, folder)` - Generate Obsidian canvas files for knowledge graph visualization
113
+
114
+ - MCP Prompts for better AI interaction:
115
+ - `ai_assistant_guide()` - Guidance on effectively using Basic Memory tools for AI assistants
116
+ - `continue_conversation(topic, timeframe)` - Continue previous conversations with relevant historical context
117
+ - `search(query, after_date)` - Search with detailed, formatted results for better context understanding
118
+ - `recent_activity(timeframe)` - View recently changed items with formatted output
119
+ - `json_canvas_spec()` - Full JSON Canvas specification for Obsidian visualization
120
+
121
+ ## AI-Human Collaborative Development
122
+
123
+ Basic Memory emerged from and enables a new kind of development process that combines human and AI capabilities. Instead
124
+ of using AI just for code generation, we've developed a true collaborative workflow:
125
+
126
+ 1. AI (LLM) writes initial implementation based on specifications and context
127
+ 2. Human reviews, runs tests, and commits code with any necessary adjustments
128
+ 3. Knowledge persists across conversations using Basic Memory's knowledge graph
129
+ 4. Development continues seamlessly across different AI sessions with consistent context
130
+ 5. Results improve through iterative collaboration and shared understanding
131
+
132
+ This approach has allowed us to tackle more complex challenges and build a more robust system than either humans or AI
133
+ could achieve independently.
134
+
135
+ ## GitHub Integration
136
+
137
+ Basic Memory has taken AI-Human collaboration to the next level by integrating Claude directly into the development workflow through GitHub:
138
+
139
+ ### GitHub MCP Tools
140
+
141
+ Using the GitHub Model Context Protocol server, Claude can now:
142
+
143
+ - **Repository Management**:
144
+ - View repository files and structure
145
+ - Read file contents
146
+ - Create new branches
147
+ - Create and update files
148
+
149
+ - **Issue Management**:
150
+ - Create new issues
151
+ - Comment on existing issues
152
+ - Close and update issues
153
+ - Search across issues
154
+
155
+ - **Pull Request Workflow**:
156
+ - Create pull requests
157
+ - Review code changes
158
+ - Add comments to PRs
159
+
160
+ This integration enables Claude to participate as a full team member in the development process, not just as a code generation tool. Claude's GitHub account ([bm-claudeai](https://github.com/bm-claudeai)) is a member of the Basic Machines organization with direct contributor access to the codebase.
161
+
162
+ ### Collaborative Development Process
163
+
164
+ With GitHub integration, the development workflow includes:
165
+
166
+ 1. **Direct code review** - Claude can analyze PRs and provide detailed feedback
167
+ 2. **Contribution tracking** - All of Claude's contributions are properly attributed in the Git history
168
+ 3. **Branch management** - Claude can create feature branches for implementations
169
+ 4. **Documentation maintenance** - Claude can keep documentation updated as the code evolves
170
+
171
+ This level of integration represents a new paradigm in AI-human collaboration, where the AI assistant becomes a full-fledged team member rather than just a tool for generating code snippets.
@@ -0,0 +1,163 @@
1
+ # Contributing to Basic Memory
2
+
3
+ Thank you for considering contributing to Basic Memory! This document outlines the process for contributing to the
4
+ project and how to get started as a developer.
5
+
6
+ ## Getting Started
7
+
8
+ ### Development Environment
9
+
10
+ 1. **Clone the Repository**:
11
+ ```bash
12
+ git clone https://github.com/basicmachines-co/basic-memory.git
13
+ cd basic-memory
14
+ ```
15
+
16
+ 2. **Install Dependencies**:
17
+ ```bash
18
+ # Using make (recommended)
19
+ make install
20
+
21
+ # Or using uv
22
+ uv install -e ".[dev]"
23
+
24
+ # Or using pip
25
+ pip install -e ".[dev]"
26
+ ```
27
+
28
+ 3. **Run the Tests**:
29
+ ```bash
30
+ # Run all tests
31
+ make test
32
+ # or
33
+ uv run pytest -p pytest_mock -v
34
+
35
+ # Run a specific test
36
+ pytest tests/path/to/test_file.py::test_function_name
37
+ ```
38
+
39
+ ### Development Workflow
40
+
41
+ 1. **Fork the Repo**: Fork the repository on GitHub and clone your copy.
42
+ 2. **Create a Branch**: Create a new branch for your feature or fix.
43
+ ```bash
44
+ git checkout -b feature/your-feature-name
45
+ # or
46
+ git checkout -b fix/issue-you-are-fixing
47
+ ```
48
+ 3. **Make Your Changes**: Implement your changes with appropriate test coverage.
49
+ 4. **Check Code Quality**:
50
+ ```bash
51
+ # Run all checks at once
52
+ make check
53
+
54
+ # Or run individual checks
55
+ make lint # Run linting
56
+ make format # Format code
57
+ make type-check # Type checking
58
+ ```
59
+ 5. **Test Your Changes**: Ensure all tests pass locally and maintain 100% test coverage.
60
+ ```bash
61
+ make test
62
+ ```
63
+ 6. **Submit a PR**: Submit a pull request with a detailed description of your changes.
64
+
65
+ ## LLM-Assisted Development
66
+
67
+ This project is designed for collaborative development between humans and LLMs (Large Language Models):
68
+
69
+ 1. **CLAUDE.md**: The repository includes a `CLAUDE.md` file that serves as a project guide for both humans and LLMs.
70
+ This file contains:
71
+ - Key project information and architectural overview
72
+ - Development commands and workflows
73
+ - Code style guidelines
74
+ - Documentation standards
75
+
76
+ 2. **AI-Human Collaborative Workflow**:
77
+ - We encourage using LLMs like Claude for code generation, reviews, and documentation
78
+ - When possible, save context in markdown files that can be referenced later
79
+ - This enables seamless knowledge transfer between different development sessions
80
+ - Claude can help with implementation details while you focus on architecture and design
81
+
82
+ 3. **Adding to CLAUDE.md**:
83
+ - If you discover useful project information or common commands, consider adding them to CLAUDE.md
84
+ - This helps all contributors (human and AI) maintain consistent knowledge of the project
85
+
86
+ ## Pull Request Process
87
+
88
+ 1. **Create a Pull Request**: Open a PR against the `main` branch with a clear title and description.
89
+ 2. **Sign the Developer Certificate of Origin (DCO)**: All contributions require signing our DCO, which certifies that
90
+ you have the right to submit your contributions. This will be automatically checked by our CLA assistant when you
91
+ create a PR.
92
+ 3. **PR Description**: Include:
93
+ - What the PR changes
94
+ - Why the change is needed
95
+ - How you tested the changes
96
+ - Any related issues (use "Fixes #123" to automatically close issues)
97
+ 4. **Code Review**: Wait for code review and address any feedback.
98
+ 5. **CI Checks**: Ensure all CI checks pass.
99
+ 6. **Merge**: Once approved, a maintainer will merge your PR.
100
+
101
+ ## Developer Certificate of Origin
102
+
103
+ By contributing to this project, you agree to the [Developer Certificate of Origin (DCO)](CLA.md). This means you
104
+ certify that:
105
+
106
+ - You have the right to submit your contributions
107
+ - You're not knowingly submitting code with patent or copyright issues
108
+ - Your contributions are provided under the project's license (AGPL-3.0)
109
+
110
+ This is a lightweight alternative to a Contributor License Agreement and helps ensure that all contributions can be
111
+ properly incorporated into the project and potentially used in commercial applications.
112
+
113
+ ### Signing Your Commits
114
+
115
+ Sign your commit:
116
+
117
+ **Using the `-s` or `--signoff` flag**:
118
+
119
+ ```bash
120
+ git commit -s -m "Your commit message"
121
+ ```
122
+
123
+ This adds a `Signed-off-by` line to your commit message, certifying that you adhere to the DCO.
124
+
125
+ The sign-off certifies that you have the right to submit your contribution under the project's license and verifies your
126
+ agreement to the DCO.
127
+
128
+ ## Code Style Guidelines
129
+
130
+ - **Python Version**: Python 3.12+ with full type annotations
131
+ - **Line Length**: 100 characters maximum
132
+ - **Formatting**: Use ruff for consistent styling
133
+ - **Import Order**: Standard lib, third-party, local imports
134
+ - **Naming**: Use snake_case for functions/variables, PascalCase for classes
135
+ - **Documentation**: Add docstrings to public functions, classes, and methods
136
+ - **Type Annotations**: Use type hints for all functions and methods
137
+
138
+ ## Testing Guidelines
139
+
140
+ - **Coverage Target**: We aim for 100% test coverage for all code
141
+ - **Test Framework**: Use pytest for unit and integration tests
142
+ - **Mocking**: Use pytest-mock for mocking dependencies only when necessary
143
+ - **Edge Cases**: Test both normal operation and edge cases
144
+ - **Database Testing**: Use in-memory SQLite for testing database operations
145
+ - **Fixtures**: Use async pytest fixtures for setup and teardown
146
+
147
+ ## Creating Issues
148
+
149
+ If you're planning to work on something, please create an issue first to discuss the approach. Include:
150
+
151
+ - A clear title and description
152
+ - Steps to reproduce if reporting a bug
153
+ - Expected behavior vs. actual behavior
154
+ - Any relevant logs or screenshots
155
+ - Your proposed solution, if you have one
156
+
157
+ ## Code of Conduct
158
+
159
+ All contributors must follow the [Code of Conduct](CODE_OF_CONDUCT.md).
160
+
161
+ ## Thank You!
162
+
163
+ Your contributions help make Basic Memory better. We appreciate your time and effort!
@@ -0,0 +1,16 @@
1
+ # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile
2
+ FROM python:3.12-slim
3
+
4
+ WORKDIR /app
5
+
6
+ # Copy the project files
7
+ COPY . .
8
+
9
+ # Install pip and build dependencies
10
+ RUN pip install --upgrade pip \
11
+ && pip install . --no-cache-dir --ignore-installed
12
+
13
+ # Expose port if necessary (e.g., uv might use a port, but MCP over stdio so not needed here)
14
+
15
+ # Use the basic-memory entrypoint to run the MCP server
16
+ CMD ["basic-memory", "mcp"]
@@ -1,4 +1,4 @@
1
- .PHONY: install test lint clean format type-check installer-mac installer-win check
1
+ .PHONY: install test test-module lint clean format type-check installer-mac installer-win check
2
2
 
3
3
  install:
4
4
  pip install -e ".[dev]"
@@ -6,6 +6,19 @@ install:
6
6
  test:
7
7
  uv run pytest -p pytest_mock -v
8
8
 
9
+ # Run tests for a specific module
10
+ # Usage: make test-module m=path/to/module.py [cov=module_path]
11
+ test-module:
12
+ @if [ -z "$(m)" ]; then \
13
+ echo "Usage: make test-module m=path/to/module.py [cov=module_path]"; \
14
+ exit 1; \
15
+ fi; \
16
+ if [ -z "$(cov)" ]; then \
17
+ uv run pytest $(m) -v; \
18
+ else \
19
+ uv run pytest $(m) -v --cov=$(cov); \
20
+ fi
21
+
9
22
  lint:
10
23
  ruff check . --fix
11
24