basic-memory 0.18.0__tar.gz → 0.18.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. {basic_memory-0.18.0 → basic_memory-0.18.1}/.gitignore +2 -0
  2. basic_memory-0.18.0/CLAUDE.md → basic_memory-0.18.1/AGENTS.md +20 -1
  3. {basic_memory-0.18.0 → basic_memory-0.18.1}/CHANGELOG.md +45 -0
  4. basic_memory-0.18.1/CLAUDE.md +1 -0
  5. {basic_memory-0.18.0 → basic_memory-0.18.1}/PKG-INFO +17 -1
  6. {basic_memory-0.18.0 → basic_memory-0.18.1}/README.md +16 -0
  7. {basic_memory-0.18.0 → basic_memory-0.18.1}/docs/ARCHITECTURE.md +15 -2
  8. basic_memory-0.18.1/docs/NOTE-FORMAT.md +494 -0
  9. {basic_memory-0.18.0 → basic_memory-0.18.1}/docs/ai-assistant-guide-extended.md +49 -1
  10. {basic_memory-0.18.0 → basic_memory-0.18.1}/justfile +28 -0
  11. {basic_memory-0.18.0 → basic_memory-0.18.1}/pyproject.toml +2 -0
  12. {basic_memory-0.18.0 → basic_memory-0.18.1}/server.json +2 -2
  13. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/__init__.py +1 -1
  14. basic_memory-0.18.1/src/basic_memory/alembic/versions/d7e8f9a0b1c2_add_structured_metadata_indexes.py +152 -0
  15. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/api/app.py +43 -25
  16. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/api/v2/routers/knowledge_router.py +108 -53
  17. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/api/v2/routers/memory_router.py +1 -1
  18. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/api/v2/routers/project_router.py +193 -0
  19. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/api/v2/routers/prompt_router.py +1 -1
  20. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/api/v2/routers/search_router.py +12 -9
  21. {basic_memory-0.18.0/src/basic_memory/api/routers → basic_memory-0.18.1/src/basic_memory/api/v2}/utils.py +29 -8
  22. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/app.py +1 -1
  23. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/__init__.py +2 -1
  24. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/cloud/cloud_utils.py +2 -2
  25. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/cloud/rclone_commands.py +12 -1
  26. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/command_utils.py +2 -2
  27. basic_memory-0.18.1/src/basic_memory/cli/commands/doctor.py +153 -0
  28. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/project.py +25 -17
  29. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/status.py +1 -1
  30. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/tool.py +248 -27
  31. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/main.py +1 -0
  32. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/deps/__init__.py +4 -0
  33. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/deps/services.py +83 -2
  34. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/markdown/entity_parser.py +3 -1
  35. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/markdown/utils.py +4 -3
  36. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/clients/knowledge.py +23 -3
  37. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/clients/project.py +2 -2
  38. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/project_context.py +17 -6
  39. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/prompts/continue_conversation.py +6 -4
  40. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/prompts/recent_activity.py +3 -5
  41. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/prompts/search.py +8 -4
  42. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/resources/project_info.py +1 -2
  43. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/__init__.py +2 -1
  44. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/edit_note.py +1 -1
  45. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/move_note.py +3 -1
  46. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/recent_activity.py +1 -1
  47. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/search.py +113 -1
  48. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/write_note.py +4 -2
  49. basic_memory-0.18.1/src/basic_memory/repository/metadata_filters.py +139 -0
  50. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/repository/postgres_search_repository.py +109 -28
  51. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/repository/search_repository.py +1 -0
  52. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/repository/search_repository_base.py +2 -0
  53. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/repository/sqlite_search_repository.py +127 -27
  54. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/cloud.py +1 -1
  55. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/memory.py +4 -0
  56. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/search.py +22 -6
  57. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/services/entity_service.py +220 -45
  58. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/services/exceptions.py +6 -0
  59. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/services/search_service.py +22 -1
  60. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/sync/sync_service.py +5 -13
  61. basic_memory-0.18.1/test-int/cli/test_cli_tool_json_integration.py +126 -0
  62. basic_memory-0.18.1/test-int/mcp/test_smoke_integration.py +55 -0
  63. basic_memory-0.18.1/tests/api/v2/conftest.py +59 -0
  64. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/api/v2/test_importer_router.py +3 -1
  65. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/api/v2/test_knowledge_router.py +154 -3
  66. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/api/v2/test_project_router.py +26 -0
  67. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/cloud/test_cloud_api_client_and_utils.py +2 -2
  68. basic_memory-0.18.1/tests/cli/test_cli_tool_json_output.py +333 -0
  69. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/markdown/test_entity_parser_error_handling.py +94 -0
  70. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/clients/test_clients.py +1 -1
  71. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_prompts.py +1 -0
  72. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_recent_activity_prompt_modes.py +18 -1
  73. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_canvas.py +3 -1
  74. basic_memory-0.18.1/tests/mcp/test_tool_contracts.py +88 -0
  75. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_read_note.py +4 -1
  76. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_recent_activity.py +4 -0
  77. basic_memory-0.18.1/tests/repository/test_metadata_filters.py +82 -0
  78. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/repository/test_project_repository.py +23 -17
  79. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/repository/test_search_repository.py +106 -0
  80. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/schemas/test_memory_serialization.py +7 -0
  81. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/services/test_entity_service.py +64 -0
  82. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/services/test_link_resolver.py +18 -38
  83. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/services/test_search_service.py +66 -0
  84. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/sync/test_sync_service.py +2 -3
  85. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/test_rclone_commands.py +18 -0
  86. {basic_memory-0.18.0 → basic_memory-0.18.1}/uv.lock +15 -0
  87. basic_memory-0.18.0/src/basic_memory/api/routers/__init__.py +0 -11
  88. basic_memory-0.18.0/src/basic_memory/api/routers/directory_router.py +0 -84
  89. basic_memory-0.18.0/src/basic_memory/api/routers/importer_router.py +0 -152
  90. basic_memory-0.18.0/src/basic_memory/api/routers/knowledge_router.py +0 -364
  91. basic_memory-0.18.0/src/basic_memory/api/routers/management_router.py +0 -80
  92. basic_memory-0.18.0/src/basic_memory/api/routers/memory_router.py +0 -90
  93. basic_memory-0.18.0/src/basic_memory/api/routers/project_router.py +0 -472
  94. basic_memory-0.18.0/src/basic_memory/api/routers/prompt_router.py +0 -260
  95. basic_memory-0.18.0/src/basic_memory/api/routers/resource_router.py +0 -252
  96. basic_memory-0.18.0/src/basic_memory/api/routers/search_router.py +0 -36
  97. basic_memory-0.18.0/tests/api/conftest.py +0 -40
  98. basic_memory-0.18.0/tests/api/test_api_container.py +0 -62
  99. basic_memory-0.18.0/tests/api/test_async_client.py +0 -53
  100. basic_memory-0.18.0/tests/api/test_continue_conversation_template.py +0 -145
  101. basic_memory-0.18.0/tests/api/test_directory_router.py +0 -212
  102. basic_memory-0.18.0/tests/api/test_importer_router.py +0 -465
  103. basic_memory-0.18.0/tests/api/test_knowledge_router.py +0 -1406
  104. basic_memory-0.18.0/tests/api/test_management_router.py +0 -121
  105. basic_memory-0.18.0/tests/api/test_memory_router.py +0 -146
  106. basic_memory-0.18.0/tests/api/test_project_router.py +0 -843
  107. basic_memory-0.18.0/tests/api/test_project_router_operations.py +0 -55
  108. basic_memory-0.18.0/tests/api/test_prompt_router.py +0 -155
  109. basic_memory-0.18.0/tests/api/test_relation_background_resolution.py +0 -52
  110. basic_memory-0.18.0/tests/api/test_resource_router.py +0 -454
  111. basic_memory-0.18.0/tests/api/test_search_router.py +0 -179
  112. basic_memory-0.18.0/tests/api/test_search_template.py +0 -158
  113. basic_memory-0.18.0/tests/api/test_template_loader.py +0 -219
  114. basic_memory-0.18.0/tests/api/test_template_loader_helpers.py +0 -203
  115. basic_memory-0.18.0/tests/api/v2/conftest.py +0 -21
  116. {basic_memory-0.18.0 → basic_memory-0.18.1}/.claude/commands/release/beta.md +0 -0
  117. {basic_memory-0.18.0 → basic_memory-0.18.1}/.claude/commands/release/changelog.md +0 -0
  118. {basic_memory-0.18.0 → basic_memory-0.18.1}/.claude/commands/release/release-check.md +0 -0
  119. {basic_memory-0.18.0 → basic_memory-0.18.1}/.claude/commands/release/release.md +0 -0
  120. {basic_memory-0.18.0 → basic_memory-0.18.1}/.claude/commands/spec.md +0 -0
  121. {basic_memory-0.18.0 → basic_memory-0.18.1}/.claude/commands/test-live.md +0 -0
  122. {basic_memory-0.18.0 → basic_memory-0.18.1}/.claude/settings.json +0 -0
  123. {basic_memory-0.18.0 → basic_memory-0.18.1}/.dockerignore +0 -0
  124. {basic_memory-0.18.0 → basic_memory-0.18.1}/.env.example +0 -0
  125. {basic_memory-0.18.0 → basic_memory-0.18.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  126. {basic_memory-0.18.0 → basic_memory-0.18.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  127. {basic_memory-0.18.0 → basic_memory-0.18.1}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  128. {basic_memory-0.18.0 → basic_memory-0.18.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  129. {basic_memory-0.18.0 → basic_memory-0.18.1}/.github/dependabot.yml +0 -0
  130. {basic_memory-0.18.0 → basic_memory-0.18.1}/.github/workflows/claude-code-review.yml +0 -0
  131. {basic_memory-0.18.0 → basic_memory-0.18.1}/.github/workflows/claude-issue-triage.yml +0 -0
  132. {basic_memory-0.18.0 → basic_memory-0.18.1}/.github/workflows/claude.yml +0 -0
  133. {basic_memory-0.18.0 → basic_memory-0.18.1}/.github/workflows/dev-release.yml +0 -0
  134. {basic_memory-0.18.0 → basic_memory-0.18.1}/.github/workflows/docker.yml +0 -0
  135. {basic_memory-0.18.0 → basic_memory-0.18.1}/.github/workflows/pr-title.yml +0 -0
  136. {basic_memory-0.18.0 → basic_memory-0.18.1}/.github/workflows/release.yml +0 -0
  137. {basic_memory-0.18.0 → basic_memory-0.18.1}/.github/workflows/test.yml +0 -0
  138. {basic_memory-0.18.0 → basic_memory-0.18.1}/.python-version +0 -0
  139. {basic_memory-0.18.0 → basic_memory-0.18.1}/CITATION.cff +0 -0
  140. {basic_memory-0.18.0 → basic_memory-0.18.1}/CLA.md +0 -0
  141. {basic_memory-0.18.0 → basic_memory-0.18.1}/CODE_OF_CONDUCT.md +0 -0
  142. {basic_memory-0.18.0 → basic_memory-0.18.1}/CONTRIBUTING.md +0 -0
  143. {basic_memory-0.18.0 → basic_memory-0.18.1}/Dockerfile +0 -0
  144. {basic_memory-0.18.0 → basic_memory-0.18.1}/LICENSE +0 -0
  145. {basic_memory-0.18.0 → basic_memory-0.18.1}/SECURITY.md +0 -0
  146. {basic_memory-0.18.0 → basic_memory-0.18.1}/docker-compose-postgres.yml +0 -0
  147. {basic_memory-0.18.0 → basic_memory-0.18.1}/docker-compose.yml +0 -0
  148. {basic_memory-0.18.0 → basic_memory-0.18.1}/docs/Docker.md +0 -0
  149. {basic_memory-0.18.0 → basic_memory-0.18.1}/docs/character-handling.md +0 -0
  150. {basic_memory-0.18.0 → basic_memory-0.18.1}/docs/cloud-cli.md +0 -0
  151. {basic_memory-0.18.0 → basic_memory-0.18.1}/docs/testing-coverage.md +0 -0
  152. {basic_memory-0.18.0 → basic_memory-0.18.1}/llms-install.md +0 -0
  153. {basic_memory-0.18.0 → basic_memory-0.18.1}/smithery.yaml +0 -0
  154. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/alembic.ini +0 -0
  155. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/env.py +0 -0
  156. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/migrations.py +0 -0
  157. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/script.py.mako +0 -0
  158. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/versions/314f1ea54dc4_add_postgres_full_text_search_support_.py +0 -0
  159. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
  160. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
  161. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +0 -0
  162. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +0 -0
  163. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/versions/6830751f5fb6_merge_multiple_heads.py +0 -0
  164. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/versions/9d9c1cb7d8f5_add_mtime_and_size_columns_to_entity_.py +0 -0
  165. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/versions/a1b2c3d4e5f6_fix_project_foreign_keys.py +0 -0
  166. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/versions/a2b3c4d5e6f7_add_search_index_entity_cascade.py +0 -0
  167. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
  168. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
  169. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/versions/e7e1f4367280_add_scan_watermark_tracking_to_project.py +0 -0
  170. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/versions/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py +0 -0
  171. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/alembic/versions/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py +0 -0
  172. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/api/__init__.py +0 -0
  173. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/api/container.py +0 -0
  174. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/api/template_loader.py +0 -0
  175. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/api/v2/__init__.py +0 -0
  176. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/api/v2/routers/__init__.py +0 -0
  177. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/api/v2/routers/directory_router.py +0 -0
  178. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/api/v2/routers/importer_router.py +0 -0
  179. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/api/v2/routers/resource_router.py +0 -0
  180. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/__init__.py +0 -0
  181. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/auth.py +0 -0
  182. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/cloud/__init__.py +0 -0
  183. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/cloud/api_client.py +0 -0
  184. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/cloud/bisync_commands.py +0 -0
  185. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/cloud/core_commands.py +0 -0
  186. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/cloud/rclone_config.py +0 -0
  187. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/cloud/rclone_installer.py +0 -0
  188. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/cloud/restore.py +0 -0
  189. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/cloud/schemas.py +0 -0
  190. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/cloud/snapshot.py +0 -0
  191. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/cloud/upload.py +0 -0
  192. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/cloud/upload_command.py +0 -0
  193. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/db.py +0 -0
  194. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/format.py +0 -0
  195. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/import_chatgpt.py +0 -0
  196. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/import_claude_conversations.py +0 -0
  197. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/import_claude_projects.py +0 -0
  198. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/import_memory_json.py +0 -0
  199. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/mcp.py +0 -0
  200. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/commands/routing.py +0 -0
  201. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/cli/container.py +0 -0
  202. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/config.py +0 -0
  203. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/db.py +0 -0
  204. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/deps/config.py +0 -0
  205. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/deps/db.py +0 -0
  206. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/deps/importers.py +0 -0
  207. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/deps/projects.py +0 -0
  208. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/deps/repositories.py +0 -0
  209. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/deps.py +0 -0
  210. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/file_utils.py +0 -0
  211. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/ignore_utils.py +0 -0
  212. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/importers/__init__.py +0 -0
  213. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/importers/base.py +0 -0
  214. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/importers/chatgpt_importer.py +0 -0
  215. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/importers/claude_conversations_importer.py +0 -0
  216. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/importers/claude_projects_importer.py +0 -0
  217. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/importers/memory_json_importer.py +0 -0
  218. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/importers/utils.py +0 -0
  219. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/markdown/__init__.py +0 -0
  220. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/markdown/markdown_processor.py +0 -0
  221. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/markdown/plugins.py +0 -0
  222. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/markdown/schemas.py +0 -0
  223. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/__init__.py +0 -0
  224. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/async_client.py +0 -0
  225. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/clients/__init__.py +0 -0
  226. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/clients/directory.py +0 -0
  227. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/clients/memory.py +0 -0
  228. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/clients/resource.py +0 -0
  229. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/clients/search.py +0 -0
  230. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/container.py +0 -0
  231. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/prompts/__init__.py +0 -0
  232. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +0 -0
  233. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/prompts/utils.py +0 -0
  234. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/resources/ai_assistant_guide.md +0 -0
  235. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/server.py +0 -0
  236. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/build_context.py +0 -0
  237. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/canvas.py +0 -0
  238. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/chatgpt_tools.py +0 -0
  239. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/delete_note.py +0 -0
  240. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/list_directory.py +0 -0
  241. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/project_management.py +0 -0
  242. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/read_content.py +0 -0
  243. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/read_note.py +0 -0
  244. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/utils.py +0 -0
  245. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/mcp/tools/view_note.py +0 -0
  246. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/models/__init__.py +0 -0
  247. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/models/base.py +0 -0
  248. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/models/knowledge.py +0 -0
  249. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/models/project.py +0 -0
  250. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/models/search.py +0 -0
  251. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/project_resolver.py +0 -0
  252. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/repository/__init__.py +0 -0
  253. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/repository/entity_repository.py +0 -0
  254. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/repository/observation_repository.py +0 -0
  255. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/repository/project_info_repository.py +0 -0
  256. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/repository/project_repository.py +0 -0
  257. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/repository/relation_repository.py +0 -0
  258. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/repository/repository.py +0 -0
  259. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/repository/search_index_row.py +0 -0
  260. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/runtime.py +0 -0
  261. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/__init__.py +0 -0
  262. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/base.py +0 -0
  263. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/delete.py +0 -0
  264. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/directory.py +0 -0
  265. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/importer.py +0 -0
  266. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/project_info.py +0 -0
  267. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/prompt.py +0 -0
  268. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/request.py +0 -0
  269. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/response.py +0 -0
  270. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/sync_report.py +0 -0
  271. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/v2/__init__.py +0 -0
  272. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/v2/entity.py +0 -0
  273. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/schemas/v2/resource.py +0 -0
  274. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/services/__init__.py +0 -0
  275. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/services/context_service.py +0 -0
  276. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/services/directory_service.py +0 -0
  277. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/services/file_service.py +0 -0
  278. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/services/initialization.py +0 -0
  279. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/services/link_resolver.py +0 -0
  280. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/services/project_service.py +0 -0
  281. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/services/service.py +0 -0
  282. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/sync/__init__.py +0 -0
  283. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/sync/background_sync.py +0 -0
  284. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/sync/coordinator.py +0 -0
  285. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/sync/watch_service.py +0 -0
  286. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
  287. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/templates/prompts/search.hbs +0 -0
  288. {basic_memory-0.18.0 → basic_memory-0.18.1}/src/basic_memory/utils.py +0 -0
  289. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/BENCHMARKS.md +0 -0
  290. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/cli/test_project_commands_integration.py +0 -0
  291. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/cli/test_routing_integration.py +0 -0
  292. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/cli/test_version_integration.py +0 -0
  293. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/conftest.py +0 -0
  294. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_build_context_underscore.py +0 -0
  295. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_build_context_validation.py +0 -0
  296. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_chatgpt_tools_integration.py +0 -0
  297. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_default_project_mode_integration.py +0 -0
  298. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_delete_directory_integration.py +0 -0
  299. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_delete_note_integration.py +0 -0
  300. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_edit_note_integration.py +0 -0
  301. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_lifespan_shutdown_sync_task_cancellation_integration.py +0 -0
  302. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_list_directory_integration.py +0 -0
  303. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_move_directory_integration.py +0 -0
  304. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_move_note_integration.py +0 -0
  305. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_project_management_integration.py +0 -0
  306. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_project_state_sync_integration.py +0 -0
  307. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_read_content_integration.py +0 -0
  308. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_read_note_integration.py +0 -0
  309. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_search_integration.py +0 -0
  310. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_single_project_mcp_integration.py +0 -0
  311. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/mcp/test_write_note_integration.py +0 -0
  312. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/test_db_wal_mode.py +0 -0
  313. {basic_memory-0.18.0 → basic_memory-0.18.1}/test-int/test_disable_permalinks_integration.py +0 -0
  314. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/Non-MarkdownFileSupport.pdf +0 -0
  315. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/README.md +0 -0
  316. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/Screenshot.png +0 -0
  317. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/__init__.py +0 -0
  318. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/api/v2/__init__.py +0 -0
  319. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/api/v2/test_directory_router.py +0 -0
  320. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/api/v2/test_memory_router.py +0 -0
  321. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/api/v2/test_prompt_router.py +0 -0
  322. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/api/v2/test_resource_router.py +0 -0
  323. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/api/v2/test_search_router.py +0 -0
  324. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/cloud/test_rclone_config_and_bmignore_filters.py +0 -0
  325. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/cloud/test_upload_path.py +0 -0
  326. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/conftest.py +0 -0
  327. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_auth_cli_auth.py +0 -0
  328. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_cli_container.py +0 -0
  329. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_cli_exit.py +0 -0
  330. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_cli_tool_exit.py +0 -0
  331. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_cli_tools.py +0 -0
  332. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_cloud_authentication.py +0 -0
  333. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_ignore_utils.py +0 -0
  334. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_import_chatgpt.py +0 -0
  335. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_import_claude_conversations.py +0 -0
  336. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_import_claude_projects.py +0 -0
  337. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_import_memory_json.py +0 -0
  338. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_project_add_with_local_path.py +0 -0
  339. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_restore_commands.py +0 -0
  340. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_routing.py +0 -0
  341. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_snapshot_commands.py +0 -0
  342. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/cli/test_upload.py +0 -0
  343. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/conftest.py +0 -0
  344. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/db/test_issue_254_foreign_key_constraints.py +0 -0
  345. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/importers/test_conversation_indexing.py +0 -0
  346. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/importers/test_importer_base.py +0 -0
  347. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/importers/test_importer_utils.py +0 -0
  348. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/markdown/__init__.py +0 -0
  349. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/markdown/test_date_frontmatter_parsing.py +0 -0
  350. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/markdown/test_entity_parser.py +0 -0
  351. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/markdown/test_markdown_plugins.py +0 -0
  352. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/markdown/test_markdown_processor.py +0 -0
  353. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/markdown/test_markdown_utils.py +0 -0
  354. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/markdown/test_observation_edge_cases.py +0 -0
  355. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/markdown/test_parser_edge_cases.py +0 -0
  356. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/markdown/test_relation_edge_cases.py +0 -0
  357. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/markdown/test_task_detection.py +0 -0
  358. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/clients/__init__.py +0 -0
  359. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/conftest.py +0 -0
  360. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_async_client_force_local.py +0 -0
  361. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_async_client_modes.py +0 -0
  362. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_mcp_container.py +0 -0
  363. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_obsidian_yaml_formatting.py +0 -0
  364. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_permalink_collision_file_overwrite.py +0 -0
  365. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_project_context.py +0 -0
  366. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_resources.py +0 -0
  367. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_server_lifespan_branches.py +0 -0
  368. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_build_context.py +0 -0
  369. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_delete_note.py +0 -0
  370. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_edit_note.py +0 -0
  371. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_list_directory.py +0 -0
  372. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_move_note.py +0 -0
  373. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_project_management.py +0 -0
  374. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_read_content.py +0 -0
  375. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_resource.py +0 -0
  376. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_search.py +0 -0
  377. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_utils.py +0 -0
  378. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_view_note.py +0 -0
  379. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_write_note.py +0 -0
  380. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/test_tool_write_note_kebab_filenames.py +0 -0
  381. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/mcp/tools/test_chatgpt_tools.py +0 -0
  382. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/repository/test_entity_repository.py +0 -0
  383. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/repository/test_entity_repository_upsert.py +0 -0
  384. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/repository/test_entity_upsert_issue_187.py +0 -0
  385. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/repository/test_observation_repository.py +0 -0
  386. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/repository/test_postgres_search_repository.py +0 -0
  387. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/repository/test_project_info_repository.py +0 -0
  388. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/repository/test_relation_repository.py +0 -0
  389. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/repository/test_repository.py +0 -0
  390. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/repository/test_search_repository_edit_bug_fix.py +0 -0
  391. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/schemas/test_base_timeframe_minimum.py +0 -0
  392. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/schemas/test_memory_url.py +0 -0
  393. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/schemas/test_memory_url_validation.py +0 -0
  394. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/schemas/test_relation_response_reference_resolution.py +0 -0
  395. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/schemas/test_schemas.py +0 -0
  396. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/schemas/test_search.py +0 -0
  397. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/services/test_context_service.py +0 -0
  398. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/services/test_directory_service.py +0 -0
  399. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/services/test_entity_service_disable_permalinks.py +0 -0
  400. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/services/test_file_service.py +0 -0
  401. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/services/test_initialization.py +0 -0
  402. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/services/test_initialization_cloud_mode_branches.py +0 -0
  403. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/services/test_project_removal_bug.py +0 -0
  404. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/services/test_project_service.py +0 -0
  405. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/services/test_project_service_operations.py +0 -0
  406. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/sync/test_character_conflicts.py +0 -0
  407. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/sync/test_coordinator.py +0 -0
  408. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/sync/test_sync_service_incremental.py +0 -0
  409. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/sync/test_sync_wikilink_issue.py +0 -0
  410. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/sync/test_tmp_files.py +0 -0
  411. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/sync/test_watch_service.py +0 -0
  412. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/sync/test_watch_service_atomic_adds.py +0 -0
  413. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/sync/test_watch_service_edge_cases.py +0 -0
  414. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/sync/test_watch_service_reload.py +0 -0
  415. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/test_config.py +0 -0
  416. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/test_deps.py +0 -0
  417. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/test_production_cascade_delete.py +0 -0
  418. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/test_project_resolver.py +0 -0
  419. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/test_runtime.py +0 -0
  420. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/utils/test_file_utils.py +0 -0
  421. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/utils/test_frontmatter_obsidian_compatible.py +0 -0
  422. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/utils/test_parse_tags.py +0 -0
  423. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/utils/test_permalink_formatting.py +0 -0
  424. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/utils/test_timezone_utils.py +0 -0
  425. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/utils/test_utf8_handling.py +0 -0
  426. {basic_memory-0.18.0 → basic_memory-0.18.1}/tests/utils/test_validate_project_path.py +0 -0
@@ -1,6 +1,7 @@
1
1
  *.py[cod]
2
2
  __pycache__/
3
3
  .pytest_cache/
4
+ .testmondata*
4
5
  .coverage
5
6
  htmlcov/
6
7
 
@@ -55,3 +56,4 @@ claude-output
55
56
  **/.claude/settings.local.json
56
57
  .mcp.json
57
58
  .mcpregistry_*
59
+ /.testmondata
@@ -1,4 +1,4 @@
1
- # CLAUDE.md - Basic Memory Project Guide
1
+ # AGENTS.md - Basic Memory Project Guide
2
2
 
3
3
  ## Project Overview
4
4
 
@@ -22,6 +22,10 @@ See the [README.md](README.md) file for a project overview.
22
22
  - Run unit tests (Postgres): `just test-unit-postgres`
23
23
  - Run integration tests (SQLite): `just test-int-sqlite`
24
24
  - Run integration tests (Postgres): `just test-int-postgres`
25
+ - Run impacted tests: `just testmon` (pytest-testmon)
26
+ - Run MCP smoke test: `just test-smoke`
27
+ - Fast local loop: `just fast-check`
28
+ - Local consistency check: `just doctor`
25
29
  - Generate HTML coverage: `just coverage`
26
30
  - Single test: `pytest tests/path/to/test_file.py::test_function_name`
27
31
  - Run benchmarks: `pytest test-int/test_sync_performance_benchmark.py -v -m "benchmark and not slow"`
@@ -36,6 +40,19 @@ See the [README.md](README.md) file for a project overview.
36
40
 
37
41
  **Postgres Testing:** Uses [testcontainers](https://testcontainers-python.readthedocs.io/) which automatically spins up a Postgres instance in Docker. No manual database setup required - just have Docker running.
38
42
 
43
+ **Doctor Note:** `just doctor` runs with a temporary HOME/config so it won't touch your local Basic Memory settings. It leaves temp dirs in `/tmp` (safe to ignore or remove).
44
+
45
+ **Testmon Note:** When no files have changed, `just testmon` may collect 0 tests. That's expected and means no impacted tests were detected.
46
+
47
+ ### Code/Test/Verify Loop (fast path)
48
+
49
+ 1) **Code:** make changes.
50
+ 2) **Test:** `just fast-check` (lint/format/typecheck + impacted tests + MCP smoke).
51
+ 3) **Verify:** `just doctor` (end-to-end file ↔ DB loop in a temp project).
52
+ 4) **Full gate (when needed):** `just test` or `just check` for SQLite + Postgres.
53
+
54
+ If testmon is “cold,” the first run may be long. Subsequent runs get much faster.
55
+
39
56
  ### Test Structure
40
57
 
41
58
  - `tests/` - Unit tests for individual components (mocked, fast)
@@ -43,6 +60,7 @@ See the [README.md](README.md) file for a project overview.
43
60
  - Both directories are covered by unified coverage reporting
44
61
  - Benchmark tests in `test-int/` are marked with `@pytest.mark.benchmark`
45
62
  - Slow tests are marked with `@pytest.mark.slow`
63
+ - Smoke tests are marked with `@pytest.mark.smoke`
46
64
 
47
65
  ### Code Style Guidelines
48
66
 
@@ -221,6 +239,7 @@ See SPEC-16 for full context manager refactor details.
221
239
 
222
240
  **Local Commands:**
223
241
  - Check sync status: `basic-memory status`
242
+ - Doctor check (file <-> DB loop): `basic-memory doctor`
224
243
  - Import from Claude: `basic-memory import claude conversations`
225
244
  - Import from ChatGPT: `basic-memory import chatgpt`
226
245
  - Import from Memory JSON: `basic-memory import memory-json`
@@ -1,5 +1,50 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.18.1 (2026-02-11)
4
+
5
+ ### Features
6
+
7
+ - **#552**: Add `--format json` to CLI tool commands
8
+ ([`a47c9c0`](https://github.com/basicmachines-co/basic-memory/commit/a47c9c0))
9
+ - CLI tool commands now support `--format json` for machine-readable output
10
+
11
+ - **#535**: Support `tag:` query shorthand in search
12
+ ([`f1d50c2`](https://github.com/basicmachines-co/basic-memory/commit/f1d50c2))
13
+ - Use `tag:mytag` as a convenient shorthand in search queries
14
+
15
+ - **#532**: Fast edit entities, refactors for webui, enhanced search
16
+ ([`530cbac`](https://github.com/basicmachines-co/basic-memory/commit/530cbac))
17
+ - Performance improvements for entity editing and search operations
18
+
19
+ ### Bug Fixes
20
+
21
+ - **#558**: Add X-Tigris-Consistent headers to all rclone commands
22
+ ([`8489a3d`](https://github.com/basicmachines-co/basic-memory/commit/8489a3d))
23
+ - Ensures consistent reads from Tigris object storage during sync
24
+
25
+ - **#541**: Handle EntityCreationError as conflict
26
+ ([`343a6e1`](https://github.com/basicmachines-co/basic-memory/commit/343a6e1))
27
+
28
+ - **#536**: Stabilize metadata filters on Postgres
29
+ ([`009e849`](https://github.com/basicmachines-co/basic-memory/commit/009e849))
30
+
31
+ - **#533**: Fix recent_activity prompt defaults
32
+ ([`24ca5f6`](https://github.com/basicmachines-co/basic-memory/commit/24ca5f6))
33
+
34
+ - **#530**: Prevent spurious `metadata: {}` in frontmatter output
35
+ ([`e3ced49`](https://github.com/basicmachines-co/basic-memory/commit/e3ced49))
36
+
37
+ - Add POST legacy compat routes for v0.18.0 CLI
38
+ ([`c46d7a6`](https://github.com/basicmachines-co/basic-memory/commit/c46d7a6))
39
+
40
+ - Restore legacy `/projects/projects` endpoint for older CLI versions
41
+ ([`a0e754b`](https://github.com/basicmachines-co/basic-memory/commit/a0e754b))
42
+
43
+ ### Internal
44
+
45
+ - **#538**: Add fast feedback loop tooling (`just fast-check`, `just doctor`, `just testmon`)
46
+ ([`8072449`](https://github.com/basicmachines-co/basic-memory/commit/8072449))
47
+
3
48
  ## v0.18.0 (2026-01-28)
4
49
 
5
50
  ### Features
@@ -0,0 +1 @@
1
+ AGENTS.md
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: basic-memory
3
- Version: 0.18.0
3
+ Version: 0.18.1
4
4
  Summary: Local-first knowledge management combining Zettelkasten with knowledge graphs
5
5
  Project-URL: Homepage, https://github.com/basicmachines-co/basic-memory
6
6
  Project-URL: Repository, https://github.com/basicmachines-co/basic-memory
@@ -444,6 +444,8 @@ list_directory(dir_name, depth) - Browse directory contents with filtering
444
444
  **Search & Discovery:**
445
445
  ```
446
446
  search(query, page, page_size) - Search across your knowledge base
447
+ search_notes(query, page, page_size, search_type, types, entity_types, after_date, metadata_filters, tags, status, project) - Search with filters
448
+ search_by_metadata(filters, limit, offset, project) - Structured frontmatter search
447
449
  ```
448
450
 
449
451
  **Project Management:**
@@ -542,16 +544,23 @@ just test
542
544
  - `just test-int-postgres` - Run integration tests against Postgres
543
545
  - `just test-windows` - Run Windows-specific tests (auto-skips on other platforms)
544
546
  - `just test-benchmark` - Run performance benchmark tests
547
+ - `just testmon` - Run tests impacted by recent changes (pytest-testmon)
548
+ - `just test-smoke` - Run fast MCP end-to-end smoke test
549
+ - `just fast-check` - Run fix/format/typecheck + impacted tests + smoke test
550
+ - `just doctor` - Run local file <-> DB consistency checks with temp config
545
551
 
546
552
  **Postgres Testing:**
547
553
 
548
554
  Postgres tests use [testcontainers](https://testcontainers-python.readthedocs.io/) which automatically spins up a Postgres instance in Docker. No manual database setup required - just have Docker running.
549
555
 
556
+ **Testmon Note:** When no files have changed, `just testmon` may collect 0 tests. That's expected and means no impacted tests were detected.
557
+
550
558
  **Test Markers:**
551
559
 
552
560
  Tests use pytest markers for selective execution:
553
561
  - `windows` - Windows-specific database optimizations
554
562
  - `benchmark` - Performance tests (excluded from default runs)
563
+ - `smoke` - Fast MCP end-to-end smoke tests
555
564
 
556
565
  **Other Development Commands:**
557
566
  ```bash
@@ -559,10 +568,17 @@ just install # Install with dev dependencies
559
568
  just lint # Run linting checks
560
569
  just typecheck # Run type checking
561
570
  just format # Format code with ruff
571
+ just fast-check # Fast local loop (fix/format/typecheck + testmon + smoke)
572
+ just doctor # Local consistency check (temp config)
562
573
  just check # Run all quality checks
563
574
  just migration "msg" # Create database migration
564
575
  ```
565
576
 
577
+ **Local Consistency Check:**
578
+ ```bash
579
+ basic-memory doctor # Verifies file <-> database sync in a temp project
580
+ ```
581
+
566
582
  See the [justfile](justfile) for the complete list of development commands.
567
583
 
568
584
  ## License
@@ -396,6 +396,8 @@ list_directory(dir_name, depth) - Browse directory contents with filtering
396
396
  **Search & Discovery:**
397
397
  ```
398
398
  search(query, page, page_size) - Search across your knowledge base
399
+ search_notes(query, page, page_size, search_type, types, entity_types, after_date, metadata_filters, tags, status, project) - Search with filters
400
+ search_by_metadata(filters, limit, offset, project) - Structured frontmatter search
399
401
  ```
400
402
 
401
403
  **Project Management:**
@@ -494,16 +496,23 @@ just test
494
496
  - `just test-int-postgres` - Run integration tests against Postgres
495
497
  - `just test-windows` - Run Windows-specific tests (auto-skips on other platforms)
496
498
  - `just test-benchmark` - Run performance benchmark tests
499
+ - `just testmon` - Run tests impacted by recent changes (pytest-testmon)
500
+ - `just test-smoke` - Run fast MCP end-to-end smoke test
501
+ - `just fast-check` - Run fix/format/typecheck + impacted tests + smoke test
502
+ - `just doctor` - Run local file <-> DB consistency checks with temp config
497
503
 
498
504
  **Postgres Testing:**
499
505
 
500
506
  Postgres tests use [testcontainers](https://testcontainers-python.readthedocs.io/) which automatically spins up a Postgres instance in Docker. No manual database setup required - just have Docker running.
501
507
 
508
+ **Testmon Note:** When no files have changed, `just testmon` may collect 0 tests. That's expected and means no impacted tests were detected.
509
+
502
510
  **Test Markers:**
503
511
 
504
512
  Tests use pytest markers for selective execution:
505
513
  - `windows` - Windows-specific database optimizations
506
514
  - `benchmark` - Performance tests (excluded from default runs)
515
+ - `smoke` - Fast MCP end-to-end smoke tests
507
516
 
508
517
  **Other Development Commands:**
509
518
  ```bash
@@ -511,10 +520,17 @@ just install # Install with dev dependencies
511
520
  just lint # Run linting checks
512
521
  just typecheck # Run type checking
513
522
  just format # Format code with ruff
523
+ just fast-check # Fast local loop (fix/format/typecheck + testmon + smoke)
524
+ just doctor # Local consistency check (temp config)
514
525
  just check # Run all quality checks
515
526
  just migration "msg" # Create database migration
516
527
  ```
517
528
 
529
+ **Local Consistency Check:**
530
+ ```bash
531
+ basic-memory doctor # Verifies file <-> database sync in a temp project
532
+ ```
533
+
518
534
  See the [justfile](justfile) for the complete list of development commands.
519
535
 
520
536
  ## License
@@ -214,15 +214,28 @@ Example tool using typed client:
214
214
 
215
215
  ```python
216
216
  @mcp.tool()
217
- async def search_notes(query: str, project: str | None = None) -> SearchResponse:
217
+ async def search_notes(
218
+ query: str,
219
+ project: str | None = None,
220
+ metadata_filters: dict | None = None,
221
+ tags: list[str] | None = None,
222
+ status: str | None = None,
223
+ ) -> SearchResponse:
218
224
  async with get_client() as client:
219
225
  active_project = await get_active_project(client, project)
220
226
 
221
227
  # Import client inside function to avoid circular imports
222
228
  from basic_memory.mcp.clients import SearchClient
229
+ from basic_memory.schemas.search import SearchQuery
223
230
 
231
+ search_query = SearchQuery(
232
+ text=query,
233
+ metadata_filters=metadata_filters,
234
+ tags=tags,
235
+ status=status,
236
+ )
224
237
  search_client = SearchClient(client, active_project.external_id)
225
- return await search_client.search(query)
238
+ return await search_client.search(search_query.model_dump())
226
239
  ```
227
240
 
228
241
  ## Sync Coordination