basic-memory 0.6.0__tar.gz → 0.8.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 (179) hide show
  1. {basic_memory-0.6.0 → basic_memory-0.8.0}/CHANGELOG.md +100 -0
  2. basic_memory-0.8.0/CLAUDE.md +465 -0
  3. {basic_memory-0.6.0 → basic_memory-0.8.0}/Makefile +14 -3
  4. {basic_memory-0.6.0 → basic_memory-0.8.0}/PKG-INFO +3 -2
  5. basic_memory-0.8.0/data/ai_assistant_guide.md +275 -0
  6. basic_memory-0.8.0/data/json_canvas_spec_1_0.md +115 -0
  7. {basic_memory-0.6.0 → basic_memory-0.8.0}/pyproject.toml +3 -2
  8. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/__init__.py +1 -1
  9. basic_memory-0.8.0/src/basic_memory/alembic/alembic.ini +119 -0
  10. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/alembic/env.py +23 -1
  11. basic_memory-0.8.0/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +51 -0
  12. basic_memory-0.8.0/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +44 -0
  13. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/api/app.py +0 -4
  14. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/api/routers/knowledge_router.py +1 -9
  15. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/api/routers/memory_router.py +41 -25
  16. basic_memory-0.8.0/src/basic_memory/api/routers/resource_router.py +225 -0
  17. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/api/routers/search_router.py +17 -9
  18. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/cli/app.py +0 -2
  19. basic_memory-0.8.0/src/basic_memory/cli/commands/db.py +28 -0
  20. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/import_chatgpt.py +31 -27
  21. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/import_claude_conversations.py +29 -27
  22. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/import_claude_projects.py +30 -29
  23. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/import_memory_json.py +28 -26
  24. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/status.py +16 -26
  25. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/sync.py +11 -12
  26. basic_memory-0.8.0/src/basic_memory/cli/commands/tools.py +180 -0
  27. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/cli/main.py +1 -1
  28. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/config.py +16 -2
  29. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/db.py +1 -0
  30. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/deps.py +5 -1
  31. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/file_utils.py +6 -4
  32. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/markdown/entity_parser.py +3 -3
  33. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/mcp/async_client.py +1 -1
  34. basic_memory-0.8.0/src/basic_memory/mcp/main.py +25 -0
  35. basic_memory-0.8.0/src/basic_memory/mcp/prompts/__init__.py +15 -0
  36. basic_memory-0.8.0/src/basic_memory/mcp/prompts/ai_assistant_guide.py +28 -0
  37. basic_memory-0.8.0/src/basic_memory/mcp/prompts/continue_conversation.py +172 -0
  38. basic_memory-0.8.0/src/basic_memory/mcp/prompts/json_canvas_spec.py +25 -0
  39. basic_memory-0.8.0/src/basic_memory/mcp/prompts/recent_activity.py +46 -0
  40. basic_memory-0.8.0/src/basic_memory/mcp/prompts/search.py +127 -0
  41. basic_memory-0.8.0/src/basic_memory/mcp/prompts/utils.py +98 -0
  42. basic_memory-0.8.0/src/basic_memory/mcp/server.py +11 -0
  43. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/mcp/tools/__init__.py +6 -4
  44. basic_memory-0.8.0/src/basic_memory/mcp/tools/canvas.py +99 -0
  45. basic_memory-0.8.0/src/basic_memory/mcp/tools/knowledge.py +68 -0
  46. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/mcp/tools/memory.py +57 -31
  47. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/mcp/tools/notes.py +65 -72
  48. basic_memory-0.8.0/src/basic_memory/mcp/tools/resource.py +192 -0
  49. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/mcp/tools/search.py +13 -4
  50. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/mcp/tools/utils.py +2 -1
  51. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/models/knowledge.py +27 -11
  52. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/repository/repository.py +1 -1
  53. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/repository/search_repository.py +17 -4
  54. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/schemas/__init__.py +0 -11
  55. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/schemas/base.py +4 -1
  56. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/schemas/memory.py +14 -2
  57. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/schemas/request.py +1 -1
  58. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/schemas/search.py +4 -1
  59. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/services/context_service.py +14 -6
  60. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/services/entity_service.py +19 -12
  61. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/services/file_service.py +69 -2
  62. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/services/link_resolver.py +12 -9
  63. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/services/search_service.py +59 -13
  64. basic_memory-0.8.0/src/basic_memory/sync/__init__.py +6 -0
  65. basic_memory-0.8.0/src/basic_memory/sync/sync_service.py +345 -0
  66. basic_memory-0.8.0/src/basic_memory/sync/watch_service.py +214 -0
  67. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/utils.py +27 -15
  68. basic_memory-0.8.0/tests/Non-MarkdownFileSupport.pdf +0 -0
  69. basic_memory-0.8.0/tests/Screenshot.png +0 -0
  70. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/__init__.py +2 -2
  71. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/api/test_memory_router.py +30 -0
  72. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/api/test_resource_router.py +201 -0
  73. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/api/test_search_router.py +12 -22
  74. basic_memory-0.8.0/tests/cli/test_cli_tools.py +367 -0
  75. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/cli/test_import_chatgpt.py +3 -6
  76. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/cli/test_status.py +8 -39
  77. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/cli/test_sync.py +2 -1
  78. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/conftest.py +39 -9
  79. basic_memory-0.8.0/tests/mcp/test_prompts.py +61 -0
  80. basic_memory-0.8.0/tests/mcp/test_resources.py +37 -0
  81. basic_memory-0.8.0/tests/mcp/test_tool_canvas.py +273 -0
  82. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/mcp/test_tool_knowledge.py +74 -0
  83. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/mcp/test_tool_memory.py +6 -2
  84. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/mcp/test_tool_notes.py +29 -0
  85. basic_memory-0.8.0/tests/mcp/test_tool_resource.py +228 -0
  86. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/mcp/test_tool_search.py +21 -0
  87. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/schemas/test_memory_url.py +18 -1
  88. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/schemas/test_schemas.py +14 -0
  89. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/schemas/test_search.py +6 -1
  90. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/services/test_context_service.py +0 -12
  91. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/services/test_entity_service.py +19 -0
  92. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/services/test_link_resolver.py +26 -9
  93. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/services/test_search_service.py +19 -0
  94. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/sync/test_sync_service.py +188 -7
  95. basic_memory-0.8.0/tests/sync/test_watch_service.py +363 -0
  96. basic_memory-0.8.0/tests/sync/test_watch_service_edge_cases.py +75 -0
  97. {basic_memory-0.6.0 → basic_memory-0.8.0}/uv.lock +140 -81
  98. basic_memory-0.6.0/src/basic_memory/alembic/README +0 -1
  99. basic_memory-0.6.0/src/basic_memory/api/routers/resource_router.py +0 -118
  100. basic_memory-0.6.0/src/basic_memory/cli/commands/db.py +0 -25
  101. basic_memory-0.6.0/src/basic_memory/mcp/server.py +0 -15
  102. basic_memory-0.6.0/src/basic_memory/mcp/tools/knowledge.py +0 -56
  103. basic_memory-0.6.0/src/basic_memory/schemas/discovery.py +0 -28
  104. basic_memory-0.6.0/src/basic_memory/sync/__init__.py +0 -5
  105. basic_memory-0.6.0/src/basic_memory/sync/file_change_scanner.py +0 -158
  106. basic_memory-0.6.0/src/basic_memory/sync/sync_service.py +0 -165
  107. basic_memory-0.6.0/src/basic_memory/sync/utils.py +0 -31
  108. basic_memory-0.6.0/src/basic_memory/sync/watch_service.py +0 -218
  109. basic_memory-0.6.0/tests/sync/test_file_change_scanner.py +0 -245
  110. basic_memory-0.6.0/tests/sync/test_watch_service.py +0 -121
  111. {basic_memory-0.6.0 → basic_memory-0.8.0}/.github/workflows/pr-title.yml +0 -0
  112. {basic_memory-0.6.0 → basic_memory-0.8.0}/.github/workflows/release.yml +0 -0
  113. {basic_memory-0.6.0 → basic_memory-0.8.0}/.github/workflows/test.yml +0 -0
  114. {basic_memory-0.6.0 → basic_memory-0.8.0}/.gitignore +0 -0
  115. {basic_memory-0.6.0 → basic_memory-0.8.0}/.python-version +0 -0
  116. {basic_memory-0.6.0 → basic_memory-0.8.0}/CITATION.cff +0 -0
  117. {basic_memory-0.6.0 → basic_memory-0.8.0}/CODE_OF_CONDUCT.md +0 -0
  118. {basic_memory-0.6.0 → basic_memory-0.8.0}/CONTRIBUTING.md +0 -0
  119. {basic_memory-0.6.0 → basic_memory-0.8.0}/LICENSE +0 -0
  120. {basic_memory-0.6.0 → basic_memory-0.8.0}/README.md +0 -0
  121. {basic_memory-0.6.0 → basic_memory-0.8.0}/basic-memory.md +0 -0
  122. {basic_memory-0.6.0 → basic_memory-0.8.0}/installer/Basic.icns +0 -0
  123. {basic_memory-0.6.0 → basic_memory-0.8.0}/installer/README.md +0 -0
  124. {basic_memory-0.6.0 → basic_memory-0.8.0}/installer/icon.svg +0 -0
  125. {basic_memory-0.6.0 → basic_memory-0.8.0}/installer/installer.py +0 -0
  126. {basic_memory-0.6.0 → basic_memory-0.8.0}/installer/make_icons.sh +0 -0
  127. {basic_memory-0.6.0 → basic_memory-0.8.0}/installer/setup.py +0 -0
  128. {basic_memory-0.6.0 → basic_memory-0.8.0}/memory.json +0 -0
  129. {basic_memory-0.6.0 → basic_memory-0.8.0}/scripts/install.sh +0 -0
  130. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/alembic/migrations.py +0 -0
  131. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/alembic/script.py.mako +0 -0
  132. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
  133. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/api/__init__.py +0 -0
  134. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/api/routers/__init__.py +0 -0
  135. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/cli/__init__.py +0 -0
  136. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/__init__.py +0 -0
  137. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/mcp.py +0 -0
  138. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/markdown/__init__.py +0 -0
  139. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/markdown/markdown_processor.py +0 -0
  140. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/markdown/plugins.py +0 -0
  141. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/markdown/schemas.py +0 -0
  142. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/markdown/utils.py +0 -0
  143. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/mcp/__init__.py +0 -0
  144. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/models/__init__.py +0 -0
  145. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/models/base.py +0 -0
  146. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/models/search.py +0 -0
  147. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/repository/__init__.py +0 -0
  148. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/repository/entity_repository.py +0 -0
  149. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/repository/observation_repository.py +0 -0
  150. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/repository/relation_repository.py +0 -0
  151. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/schemas/delete.py +0 -0
  152. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/schemas/response.py +0 -0
  153. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/services/__init__.py +0 -0
  154. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/services/exceptions.py +0 -0
  155. {basic_memory-0.6.0 → basic_memory-0.8.0}/src/basic_memory/services/service.py +0 -0
  156. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/api/conftest.py +0 -0
  157. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/api/test_knowledge_router.py +0 -0
  158. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/cli/test_import_claude_conversations.py +0 -0
  159. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/cli/test_import_claude_projects.py +0 -0
  160. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/cli/test_import_memory_json.py +0 -0
  161. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/edit_file_test.py +0 -0
  162. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/markdown/__init__.py +0 -0
  163. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/markdown/test_entity_parser.py +0 -0
  164. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/markdown/test_markdown_plugins.py +0 -0
  165. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/markdown/test_markdown_processor.py +0 -0
  166. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/markdown/test_observation_edge_cases.py +0 -0
  167. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/markdown/test_parser_edge_cases.py +0 -0
  168. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/markdown/test_relation_edge_cases.py +0 -0
  169. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/markdown/test_task_detection.py +0 -0
  170. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/mcp/conftest.py +0 -0
  171. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/mcp/test_tool_utils.py +0 -0
  172. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/repository/test_entity_repository.py +0 -0
  173. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/repository/test_observation_repository.py +0 -0
  174. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/repository/test_relation_repository.py +0 -0
  175. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/repository/test_repository.py +0 -0
  176. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/services/test_file_service.py +0 -0
  177. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/test_basic_memory.py +0 -0
  178. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/utils/test_file_utils.py +0 -0
  179. {basic_memory-0.6.0 → basic_memory-0.8.0}/tests/utils/test_permalink_formatting.py +0 -0
@@ -1,8 +1,108 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v0.8.0 (2025-02-28)
5
+
6
+ ### Chores
7
+
8
+ - Formatting
9
+ ([`93cc637`](https://github.com/basicmachines-co/basic-memory/commit/93cc6379ebb9ecc6a1652feeeecbf47fc992d478))
10
+
11
+ - Refactor logging setup
12
+ ([`f4b703e`](https://github.com/basicmachines-co/basic-memory/commit/f4b703e57f0ddf686de6840ff346b8be2be499ad))
13
+
14
+ ### Features
15
+
16
+ - Add enhanced prompts and resources
17
+ ([#15](https://github.com/basicmachines-co/basic-memory/pull/15),
18
+ [`093dab5`](https://github.com/basicmachines-co/basic-memory/commit/093dab5f03cf7b090a9f4003c55507859bf355b0))
19
+
20
+ ## Summary - Add comprehensive documentation to all MCP prompt modules - Enhance search prompt with
21
+ detailed contextual output formatting - Implement consistent logging and docstring patterns across
22
+ prompt utilities - Fix type checking in prompt modules
23
+
24
+ ## Prompts Added/Enhanced - `search.py`: New formatted output with relevance scores, excerpts, and
25
+ next steps - `recent_activity.py`: Enhanced with better metadata handling and documentation -
26
+ `continue_conversation.py`: Improved context management
27
+
28
+ ## Resources Added/Enhanced - `ai_assistant_guide`: Resource with description to give to LLM to
29
+ understand how to use the tools
30
+
31
+ ## Technical improvements - Added detailed docstrings to all prompt modules explaining their purpose
32
+ and usage - Enhanced the search prompt with rich contextual output that helps LLMs understand
33
+ results - Created a consistent pattern for formatting output across prompts - Improved error
34
+ handling in metadata extraction - Standardized import organization and naming conventions - Fixed
35
+ various type checking issues across the codebase
36
+
37
+ This PR is part of our ongoing effort to improve the MCP's interaction quality with LLMs, making the
38
+ system more helpful and intuitive for AI assistants to navigate knowledge bases.
39
+
40
+ 🤖 Generated with [Claude Code](https://claude.ai/code)
41
+
42
+ ---------
43
+
44
+ Co-authored-by: phernandez <phernandez@basicmachines.co>
45
+
46
+ - Add new `canvas` tool to create json canvas files in obsidian.
47
+ ([#14](https://github.com/basicmachines-co/basic-memory/pull/14),
48
+ [`0d7b0b3`](https://github.com/basicmachines-co/basic-memory/commit/0d7b0b3d7ede7555450ddc9728951d4b1edbbb80))
49
+
50
+ Add new `canvas` tool to create json canvas files in obsidian.
51
+
52
+ ---------
53
+
54
+ Co-authored-by: phernandez <phernandez@basicmachines.co>
55
+
56
+ - Incremental sync on watch ([#13](https://github.com/basicmachines-co/basic-memory/pull/13),
57
+ [`37a01b8`](https://github.com/basicmachines-co/basic-memory/commit/37a01b806d0758029d34a862e76d44c7e5d538a5))
58
+
59
+ - incremental sync on watch - sync non-markdown files in knowledge base - experimental
60
+ `read_resource` tool for reading non-markdown files in raw form (pdf, image)
61
+
62
+
63
+ ## v0.7.0 (2025-02-19)
64
+
65
+ ### Bug Fixes
66
+
67
+ - Add logfire instrumentation to tools
68
+ ([`3e8e3e8`](https://github.com/basicmachines-co/basic-memory/commit/3e8e3e8961eae2e82839746e28963191b0aef0a0))
69
+
70
+ - Add logfire spans to cli
71
+ ([`00d23a5`](https://github.com/basicmachines-co/basic-memory/commit/00d23a5ee15ddac4ea45e702dcd02ab9f0509276))
72
+
73
+ - Add logfire spans to cli
74
+ ([`812136c`](https://github.com/basicmachines-co/basic-memory/commit/812136c8c22ad191d14ff32dcad91aae076d4120))
75
+
76
+ - Search query pagination params
77
+ ([`bc9ca07`](https://github.com/basicmachines-co/basic-memory/commit/bc9ca0744ffe4296d7d597b4dd9b7c73c2d63f3f))
78
+
79
+ ### Chores
80
+
81
+ - Fix tests
82
+ ([`57984aa`](https://github.com/basicmachines-co/basic-memory/commit/57984aa912625dcde7877afb96d874c164af2896))
83
+
84
+ - Remove unused tests
85
+ ([`2c8ed17`](https://github.com/basicmachines-co/basic-memory/commit/2c8ed1737d6769fe1ef5c96f8a2bd75b9899316a))
86
+
87
+ ### Features
88
+
89
+ - Add cli commands for mcp tools
90
+ ([`f5a7541`](https://github.com/basicmachines-co/basic-memory/commit/f5a7541da17e97403b7a702720a05710f68b223a))
91
+
92
+ - Add pagination to build_context and recent_activity
93
+ ([`0123544`](https://github.com/basicmachines-co/basic-memory/commit/0123544556513af943d399d70b849b142b834b15))
94
+
95
+ - Add pagination to read_notes
96
+ ([`02f8e86`](https://github.com/basicmachines-co/basic-memory/commit/02f8e866923d5793d2620076c709c920d99f2c4f))
97
+
98
+
4
99
  ## v0.6.0 (2025-02-18)
5
100
 
101
+ ### Chores
102
+
103
+ - Re-add sync status console on watch
104
+ ([`66b57e6`](https://github.com/basicmachines-co/basic-memory/commit/66b57e682f2e9c432bffd4af293b0d1db1d3469b))
105
+
6
106
  ### Features
7
107
 
8
108
  - Configure logfire telemetry ([#12](https://github.com/basicmachines-co/basic-memory/pull/12),
@@ -0,0 +1,465 @@
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 memory:// URLs.
8
+
9
+ ## CODEBASE DEVELOPMENT
10
+
11
+ ### Build and Test Commands
12
+
13
+ - Install: `make install` or `pip install -e ".[dev]"`
14
+ - Run tests: `uv run pytest -p pytest_mock -v` or `make test`
15
+ - Single test: `pytest tests/path/to/test_file.py::test_function_name`
16
+ - Lint: `make lint` or `ruff check . --fix`
17
+ - Type check: `make type-check` or `uv run pyright`
18
+ - Format: `make format` or `uv run ruff format .`
19
+ - Run checks: `make check` (runs lint, format, type-check, test)
20
+ - Create migration: `make migration m="Your migration message"`
21
+ - Run development MCP server: `uv run mcp dev src/basic_memory/mcp/main.py`
22
+
23
+ ### Code Style Guidelines
24
+
25
+ - Line length: 100 characters max
26
+ - Python 3.12+ with full type annotations
27
+ - Format with ruff (consistent styling)
28
+ - Import order: standard lib, third-party, local imports
29
+ - Naming: snake_case for functions/variables, PascalCase for classes
30
+ - Prefer async patterns with SQLAlchemy 2.0
31
+ - Use Pydantic v2 for data validation and schemas
32
+ - CLI uses Typer for command structure
33
+ - API uses FastAPI for endpoints
34
+ - Use dedicated exceptions from services/exceptions.py
35
+ - Follow the repository pattern for data access
36
+
37
+ ### Codebase Architecture
38
+
39
+ - `/api` - FastAPI implementation of REST endpoints
40
+ - `/cli` - Typer command-line interface
41
+ - `/mcp` - Model Context Protocol server implementation
42
+ - `/models` - SQLAlchemy ORM models
43
+ - `/repository` - Data access layer
44
+ - `/schemas` - Pydantic models for validation
45
+ - `/services` - Business logic layer
46
+ - `/sync` - File synchronization services
47
+ - `/markdown` - Markdown parsing and processing
48
+
49
+ ### Development Notes
50
+
51
+ - MCP tools are defined in src/basic_memory/mcp/tools/
52
+ - MCP prompts are defined in src/basic_memory/mcp/prompts/
53
+ - Schema changes require Alembic migrations
54
+ - SQLite is used for indexing, files are source of truth
55
+ - Testing uses pytest with asyncio support (strict mode)
56
+ - Test database uses in-memory SQLite
57
+ - MCP tools should be atomic, composable operations
58
+ - Use `textwrap.dedent()` for multi-line string formatting in prompts and tools
59
+ - Prompts are special types of tools that format content for user consumption
60
+
61
+ ## BASIC MEMORY PRODUCT USAGE
62
+
63
+ ### Knowledge Structure
64
+
65
+ - Entity: Any concept, document, or idea represented as a markdown file
66
+ - Observation: A categorized fact about an entity (`[category] content`)
67
+ - Relation: A directional link between entities (`relation_type [[Target]]`)
68
+ - Frontmatter: YAML metadata at the top of markdown files
69
+ - Knowledge representation follows precise markdown format:
70
+ - Observations with [category] prefixes
71
+ - Relations with WikiLinks [[Entity]]
72
+ - Frontmatter with metadata
73
+
74
+ ### Basic Memory Commands
75
+
76
+ - Sync knowledge: `basic-memory sync` or `basic-memory sync --watch`
77
+ - Import from Claude: `basic-memory import claude conversations`
78
+ - Import from ChatGPT: `basic-memory import chatgpt`
79
+ - Import from JSON: `basic-memory import memory-json`
80
+ - Check status: `basic-memory status`
81
+ - Tool access: `basic-memory tools` (provides CLI access to MCP tools)
82
+ - Guide: `basic-memory tools basic-memory-guide`
83
+ - Continue: `basic-memory tools continue-conversation --topic="search"`
84
+
85
+ ### MCP Capabilities
86
+
87
+ - Basic Memory exposes these MCP tools to LLMs:
88
+ - `write_note()` - Create/update markdown notes
89
+ - `read_note()` - Read existing notes
90
+ - `build_context()` - Navigate the knowledge graph via memory:// URLs
91
+ - `search()` - Query the knowledge base
92
+ - `recent_activity()` - Get recently updated information
93
+ - `canvas()` - Generate JSON canvas files for Obsidian
94
+
95
+ - MCP Prompts for better AI interaction:
96
+ - `basic_memory_guide()` - Get guidance on using Basic Memory tools
97
+ - `continue_session()` - Continue previous conversations with context
98
+
99
+ ### Best Practices
100
+
101
+ - Use memory:// URLs to reference entities
102
+ - Add clear categories to observations (e.g., [idea], [decision], [requirement])
103
+ - Use descriptive relation types (e.g., implements, depends_on, contradicts)
104
+ - Maintain unique permalinks for stable entity references
105
+ - Take advantage of both manual editing and LLM-assisted knowledge creation
106
+ - Use `basic_memory_guide()` when starting new conversations to bootstrap tool knowledge
107
+ - Use `continue_session()` with topic keywords to pick up previous conversations
108
+ - Encourage Claude to proactively use tools by providing clear instructions
109
+
110
+ ---
111
+ id: process/ai-code-flow.md
112
+ created: '2025-01-03T22:11:42.803071+00:00'
113
+ modified: '2025-01-03T22:11:42.803071+00:00'
114
+ permalink: process/ai-code-flow
115
+ ---
116
+
117
+ ## AI-Human Collaborative Development: A New Model
118
+
119
+ What makes Basic Memory unique isn't just its technical architecture - it emerged from and enables a new kind of
120
+ development process. While many use AI for code generation or problem-solving, we've discovered something more powerful:
121
+ true collaborative development between humans and AI.
122
+
123
+ ### The Basic Memory Development Story
124
+
125
+ Our own development process demonstrates this:
126
+
127
+ 1. AI (Claude) writes initial implementation
128
+ 2. Human (Paul) reviews, runs, and commits code
129
+ 3. Knowledge persists across conversations
130
+ 4. Development continues seamlessly even across different AI instances
131
+ 5. Results improve through iterative collaboration
132
+
133
+ ```mermaid
134
+ graph TD
135
+ subgraph "Human Activities"
136
+ Review[Code Review]
137
+ Test[Run Tests]
138
+ Commit[Git Commit]
139
+ Plan[Strategic Planning]
140
+ end
141
+
142
+ subgraph "AI Activities"
143
+ Code[Write Code]
144
+ Design[Architecture Design]
145
+ Debug[Problem Solving]
146
+ Doc[Documentation]
147
+ end
148
+
149
+ subgraph "Shared Knowledge"
150
+ KB[Knowledge Base]
151
+ Context[Conversation Context]
152
+ History[Development History]
153
+ end
154
+
155
+ Code --> Review
156
+ Review --> Test
157
+ Test --> Commit
158
+ KB --> Code
159
+ KB --> Design
160
+ Context --> Debug
161
+ Review --> KB
162
+ Commit --> History
163
+ Plan --> Context
164
+ classDef default fill: #2d2d2d, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
165
+ classDef shared fill: #353535, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
166
+ class KB, Context, History shared
167
+ ```
168
+
169
+ ### Beyond "AI Tools"
170
+
171
+ This isn't just about using AI to generate code. It's about:
172
+
173
+ - True collaborative development
174
+ - Persistent knowledge across sessions
175
+ - Seamless context switching between AI instances
176
+ - Iterative improvement through shared understanding
177
+ - Building complex systems through sustained collaboration
178
+
179
+ ### The Multiplier Effect
180
+
181
+ Having an AI collaborator who:
182
+
183
+ - Remembers all technical discussions
184
+ - Can reference any previous decision
185
+ - Writes consistent, well-documented code
186
+ - Maintains context across sessions
187
+ - Works at human speed but with machine precision
188
+
189
+ It's like having a team of senior developers who:
190
+
191
+ - Never forget project details
192
+ - Always write clear documentation
193
+ - Maintain perfect consistency
194
+ - Are available 24/7
195
+ - Learn and adapt from every interaction
196
+
197
+ ### Key Innovation
198
+
199
+ The breakthrough is turning automated assistance into true collaboration:
200
+
201
+ - AI isn't just a tool, but a development partner
202
+ - Knowledge builds naturally through use
203
+ - Context persists across all interactions
204
+ - Work continues seamlessly across sessions
205
+ - Development becomes truly collaborative
206
+
207
+ This approach has implications far beyond just our project - it's a new model for how humans and AI can work together to
208
+ build complex systems.
209
+
210
+ ## AI-Human Collaboration: Lessons from Basic Memory
211
+
212
+ ### Technical Breakthroughs
213
+
214
+ #### Session Management Evolution
215
+
216
+ ```mermaid
217
+ graph TD
218
+ S1[Session Start] -->|Load Context| KG[Knowledge Graph]
219
+ KG -->|Build Context| AI[AI Understanding]
220
+ AI -->|Collaborate| H[Human Review]
221
+ H -->|Commit Changes| Git
222
+ Git -->|New Session| S2[Session Resume]
223
+ classDef default fill: #2d2d2d, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
224
+ ```
225
+
226
+ #### File Collaboration Pattern
227
+
228
+ ```mermaid
229
+ graph TD
230
+ H1[Human] -->|1 . Update & Commit| Git
231
+ Git -->|2 . Read File| AI
232
+ AI -->|3 . Write Changes| File
233
+ File -->|4 . Review in IDE| H2[Human]
234
+
235
+ subgraph "Synchronization"
236
+ Git
237
+ File
238
+ end
239
+
240
+ classDef default fill: #2d2d2d, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
241
+ classDef sync fill: #353535, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
242
+ class Git, File sync
243
+ ```
244
+
245
+ ### Productivity Transformation
246
+
247
+ #### Development Timeline Comparison
248
+
249
+ ```mermaid
250
+ graph LR
251
+ subgraph "Solo Development"
252
+ S1[basic-foundation] -->|6 months| S2[Completion]
253
+ end
254
+
255
+ subgraph "Collaborative Development"
256
+ C1[basic-memory] -->|Rapid Progress| C2[basic-factory]
257
+ C2 -->|Continuous Evolution| C3[Future Projects]
258
+ end
259
+
260
+ classDef default fill: #2d2d2d, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
261
+ ```
262
+
263
+ ### Key Learnings
264
+
265
+ 1. **Technical Process Innovation**
266
+ - Discovered effective file collaboration patterns
267
+ - Mastered MCP server interface together
268
+ - Developed robust session management
269
+ - Created reliable git-based workflow
270
+
271
+ 2. **Expanded Possibility Space**
272
+ - Projects previously considered too complex become achievable
273
+ - Rapid iteration on complex technical concepts
274
+ - Broader exploration of solution spaces
275
+ - Confidence to tackle ambitious challenges
276
+
277
+ 3. **Motivation and Momentum**
278
+ - No more solo debugging sessions
279
+ - Shared problem-solving reduces cognitive load
280
+ - Continuous progress maintains motivation
281
+ - Complex learning curves become collaborative adventures
282
+
283
+ 4. **Knowledge Management**
284
+ - Git commits capture decision points
285
+ - Conversations document rationale
286
+ - Code reviews become learning opportunities
287
+ - Shared context builds over time
288
+
289
+ ### The "10x Developer" Truth
290
+
291
+ It's not about having an AI that makes you 10x faster - it's about:
292
+
293
+ - Never facing a blank editor alone
294
+ - Always having a thought partner
295
+ - Reducing decision fatigue
296
+ - Maintaining momentum through challenges
297
+ - Building shared knowledge over time
298
+
299
+ ### Real Examples from Our Work
300
+
301
+ #### Session Management Evolution
302
+
303
+ ```python
304
+ # Before: Opaque MCP server interface
305
+ server = MCPServer()
306
+ server.handle_request(...)
307
+
308
+
309
+ # After: Clear context management
310
+ class MemoryServer(MCPServer):
311
+ def __init__(self, project_config):
312
+ self.memory_service = MemoryService(project_config)
313
+
314
+ async def handle_create_entities(self, request):
315
+ context = await self.memory_service.load_context(
316
+ request.project,
317
+ include_relations=True
318
+ )
319
+ # Collaborative magic happens here
320
+ ```
321
+
322
+ #### File Collaboration
323
+
324
+ ```markdown
325
+ # Memory Service Discussion (Chat Log)
326
+
327
+ Claude: Here's the updated memory service implementation...
328
+ Human: Looks good! I'll commit and we can iterate.
329
+ Claude: Reading latest version from git...
330
+ Human: Want to add relation support?
331
+ Claude: Analyzing current implementation...
332
+ ```
333
+
334
+ ### Impact on Development Culture
335
+
336
+ What we've discovered is more than a technical process - it's a new way of thinking about development:
337
+
338
+ 1. **From Solo to Collaborative**
339
+ - Traditional: Developer alone with problems
340
+ - New: Continuous collaborative problem-solving
341
+
342
+ 2. **From Linear to Exploratory**
343
+ - Traditional: Constrained by individual knowledge
344
+ - New: Free to explore broader solution spaces
345
+
346
+ 3. **From Draining to Energizing**
347
+ - Traditional: High cognitive load
348
+ - New: Shared intellectual adventure
349
+
350
+ ```mermaid
351
+ graph TD
352
+ C1[Chat: Initial Design] -->|leads_to| D1{Design Decision}
353
+ C2[Chat: Implementation] -->|references| D1
354
+ C2 -->|results_in| Code[Code Change]
355
+ D1 -->|influences| Code
356
+ Code -->|implements| Concept{Semantic Web}
357
+ Test[Test Suite] -->|validates| Code
358
+ Doc[Documentation] -->|describes| Code
359
+ D1 -.->|captured_in| Basic[Basic Memory]
360
+ Code -.->|tracked_in| Basic
361
+ Test -.->|stored_in| Basic
362
+ classDef default fill: #2d2d2d, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
363
+ classDef decision fill: #353535, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
364
+ classDef system fill: #404040, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
365
+ class D1 decision
366
+ class Basic system
367
+ class Concept decision
368
+ ```
369
+
370
+ ### Future Implications
371
+
372
+ This model of human-AI collaboration suggests:
373
+
374
+ 1. More ambitious projects become accessible
375
+ 2. Learning curves become less daunting
376
+ 3. Development becomes more enjoyable
377
+ 4. Complex systems can be built more reliably
378
+
379
+ The real breakthrough isn't just the technical achievements, but discovering how to make complex development sustainable
380
+ and enjoyable through true collaboration.
381
+
382
+ ## Beyond Code Generation: A New Development Paradigm
383
+
384
+ What we've discovered through building Basic Memory isn't just a knowledge management system - it's a new way of
385
+ thinking about human-AI collaboration. This isn't about AI completing your code or suggesting functions. It's about true
386
+ intellectual partnership.
387
+
388
+ ### From Tools to Partners
389
+
390
+ ```mermaid
391
+ graph TD
392
+ subgraph "Traditional AI Tools"
393
+ AC[Autocomplete]
394
+ CG[Code Generation]
395
+ SR[Syntax Review]
396
+ end
397
+
398
+ subgraph "Collaborative Development"
399
+ TP[Thought Partnership]
400
+ PS[Problem Solving]
401
+ AD[Architecture Design]
402
+ KS[Knowledge Synthesis]
403
+ end
404
+
405
+ subgraph "Outcomes"
406
+ BI[Bigger Ideas]
407
+ CP[Complex Projects]
408
+ KB[Knowledge Building]
409
+ MI[More Innovation]
410
+ end
411
+
412
+ TP --> BI
413
+ PS --> CP
414
+ AD --> MI
415
+ KS --> KB
416
+ classDef default fill: #2d2d2d, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
417
+ classDef outcomes fill: #353535, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
418
+ class BI, CP, KB, MI outcomes
419
+ ```
420
+
421
+ ### The Power of Partnership
422
+
423
+ Through our own development journey, we've discovered that true AI collaboration means:
424
+
425
+ 1. **Expanded Thinking Space**
426
+ - Explore more possibilities
427
+ - Challenge assumptions
428
+ - Combine different perspectives
429
+ - Take on bigger challenges
430
+
431
+ 2. **Continuous Momentum**
432
+ - Never face complex problems alone
433
+ - Maintain enthusiasm through challenges
434
+ - Turn obstacles into opportunities
435
+ - Keep projects moving forward
436
+
437
+ 3. **Knowledge Amplification**
438
+ - Build on every interaction
439
+ - Capture insights automatically
440
+ - Learn from each decision
441
+ - Grow shared understanding
442
+
443
+ ### Beyond Code Generation
444
+
445
+ This new paradigm transforms development from:
446
+
447
+ - Solo problem-solving → Collaborative exploration
448
+ - Limited perspective → Multiple viewpoints
449
+ - Linear progress → Parallel innovation
450
+ - Isolated knowledge → Shared understanding
451
+
452
+ ### Real Impact
453
+
454
+ What makes this transformative:
455
+
456
+ - Projects that seemed too ambitious become achievable
457
+ - Complex problems become engaging challenges
458
+ - Learning curves become collaborative adventures
459
+ - Development becomes a shared journey of discovery
460
+
461
+ The result isn't just better code - it's better thinking, more ambitious projects, and a more enjoyable development
462
+ process.
463
+
464
+ This is the future of development: not AI replacing developers, but empowering them to think bigger, work smarter, and
465
+ build more amazing things together.
@@ -1,4 +1,4 @@
1
- .PHONY: install test lint clean format type-check installer-mac installer-win
1
+ .PHONY: install test lint clean format type-check installer-mac installer-win check
2
2
 
3
3
  install:
4
4
  pip install -e ".[dev]"
@@ -27,7 +27,7 @@ format:
27
27
  uv run ruff format .
28
28
 
29
29
  # run inspector tool
30
- run-dev:
30
+ run-inspector:
31
31
  uv run mcp dev src/basic_memory/mcp/main.py
32
32
 
33
33
  # Build app installer
@@ -40,4 +40,15 @@ installer-win:
40
40
 
41
41
 
42
42
  update-deps:
43
- uv lock f--upgrade
43
+ uv lock --upgrade
44
+
45
+ check: lint format type-check test
46
+
47
+
48
+ # Target for generating Alembic migrations with a message from command line
49
+ migration:
50
+ @if [ -z "$(m)" ]; then \
51
+ echo "Usage: make migration m=\"Your migration message\""; \
52
+ exit 1; \
53
+ fi; \
54
+ cd src/basic_memory/alembic && alembic revision --autogenerate -m "$(m)"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: basic-memory
3
- Version: 0.6.0
3
+ Version: 0.8.0
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
@@ -15,10 +15,11 @@ Requires-Dist: dateparser>=1.2.0
15
15
  Requires-Dist: fastapi[standard]>=0.115.8
16
16
  Requires-Dist: greenlet>=3.1.1
17
17
  Requires-Dist: icecream>=2.1.3
18
- Requires-Dist: logfire[fastapi,sqlalchemy,sqlite3]>=3.6.0
18
+ Requires-Dist: logfire[fastapi,httpx,sqlalchemy,sqlite3]>=3.6.0
19
19
  Requires-Dist: loguru>=0.7.3
20
20
  Requires-Dist: markdown-it-py>=3.0.0
21
21
  Requires-Dist: mcp>=1.2.0
22
+ Requires-Dist: pillow>=11.1.0
22
23
  Requires-Dist: pydantic-settings>=2.6.1
23
24
  Requires-Dist: pydantic[email,timezone]>=2.10.3
24
25
  Requires-Dist: pyright>=1.1.390