basic-memory 0.21.3__tar.gz → 0.21.4__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 (703) hide show
  1. {basic_memory-0.21.3 → basic_memory-0.21.4}/AGENTS.md +25 -0
  2. {basic_memory-0.21.3 → basic_memory-0.21.4}/CONTRIBUTING.md +0 -34
  3. {basic_memory-0.21.3 → basic_memory-0.21.4}/PKG-INFO +1 -1
  4. {basic_memory-0.21.3 → basic_memory-0.21.4}/server.json +2 -2
  5. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/__init__.py +1 -1
  6. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/deps/services.py +4 -0
  7. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/write_note.py +1 -5
  8. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_param_aliases_integration.py +33 -8
  9. basic_memory-0.21.4/tests/deps/test_task_failure_callback.py +38 -0
  10. {basic_memory-0.21.3 → basic_memory-0.21.4}/.agents/skills/instrumentation/SKILL.md +0 -0
  11. {basic_memory-0.21.3 → basic_memory-0.21.4}/.agents/skills/instrumentation/references/javascript/frameworks.md +0 -0
  12. {basic_memory-0.21.3 → basic_memory-0.21.4}/.agents/skills/instrumentation/references/javascript/patterns.md +0 -0
  13. {basic_memory-0.21.3 → basic_memory-0.21.4}/.agents/skills/instrumentation/references/python/integrations.md +0 -0
  14. {basic_memory-0.21.3 → basic_memory-0.21.4}/.agents/skills/instrumentation/references/python/logging-patterns.md +0 -0
  15. {basic_memory-0.21.3 → basic_memory-0.21.4}/.agents/skills/instrumentation/references/rust/patterns.md +0 -0
  16. {basic_memory-0.21.3 → basic_memory-0.21.4}/.claude/commands/release/beta.md +0 -0
  17. {basic_memory-0.21.3 → basic_memory-0.21.4}/.claude/commands/release/changelog.md +0 -0
  18. {basic_memory-0.21.3 → basic_memory-0.21.4}/.claude/commands/release/release-check.md +0 -0
  19. {basic_memory-0.21.3 → basic_memory-0.21.4}/.claude/commands/release/release.md +0 -0
  20. {basic_memory-0.21.3 → basic_memory-0.21.4}/.claude/commands/spec.md +0 -0
  21. {basic_memory-0.21.3 → basic_memory-0.21.4}/.claude/commands/test-live.md +0 -0
  22. {basic_memory-0.21.3 → basic_memory-0.21.4}/.claude/settings.json +0 -0
  23. {basic_memory-0.21.3 → basic_memory-0.21.4}/.dockerignore +0 -0
  24. {basic_memory-0.21.3 → basic_memory-0.21.4}/.env.example +0 -0
  25. {basic_memory-0.21.3 → basic_memory-0.21.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  26. {basic_memory-0.21.3 → basic_memory-0.21.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  27. {basic_memory-0.21.3 → basic_memory-0.21.4}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  28. {basic_memory-0.21.3 → basic_memory-0.21.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  29. {basic_memory-0.21.3 → basic_memory-0.21.4}/.github/dependabot.yml +0 -0
  30. {basic_memory-0.21.3 → basic_memory-0.21.4}/.github/workflows/claude-code-review.yml +0 -0
  31. {basic_memory-0.21.3 → basic_memory-0.21.4}/.github/workflows/claude-issue-triage.yml +0 -0
  32. {basic_memory-0.21.3 → basic_memory-0.21.4}/.github/workflows/claude.yml +0 -0
  33. {basic_memory-0.21.3 → basic_memory-0.21.4}/.github/workflows/dev-release.yml +0 -0
  34. {basic_memory-0.21.3 → basic_memory-0.21.4}/.github/workflows/docker.yml +0 -0
  35. {basic_memory-0.21.3 → basic_memory-0.21.4}/.github/workflows/pr-title.yml +0 -0
  36. {basic_memory-0.21.3 → basic_memory-0.21.4}/.github/workflows/release.yml +0 -0
  37. {basic_memory-0.21.3 → basic_memory-0.21.4}/.github/workflows/test.yml +0 -0
  38. {basic_memory-0.21.3 → basic_memory-0.21.4}/.gitignore +0 -0
  39. {basic_memory-0.21.3 → basic_memory-0.21.4}/.python-version +0 -0
  40. {basic_memory-0.21.3 → basic_memory-0.21.4}/CHANGELOG.md +0 -0
  41. {basic_memory-0.21.3 → basic_memory-0.21.4}/CITATION.cff +0 -0
  42. {basic_memory-0.21.3 → basic_memory-0.21.4}/CLA.md +0 -0
  43. {basic_memory-0.21.3 → basic_memory-0.21.4}/CLAUDE.md +0 -0
  44. {basic_memory-0.21.3 → basic_memory-0.21.4}/CODE_OF_CONDUCT.md +0 -0
  45. {basic_memory-0.21.3 → basic_memory-0.21.4}/Dockerfile +0 -0
  46. {basic_memory-0.21.3 → basic_memory-0.21.4}/LICENSE +0 -0
  47. {basic_memory-0.21.3 → basic_memory-0.21.4}/NOTE-FORMAT.md +0 -0
  48. {basic_memory-0.21.3 → basic_memory-0.21.4}/README.md +0 -0
  49. {basic_memory-0.21.3 → basic_memory-0.21.4}/SECURITY.md +0 -0
  50. {basic_memory-0.21.3 → basic_memory-0.21.4}/docker-compose-postgres.yml +0 -0
  51. {basic_memory-0.21.3 → basic_memory-0.21.4}/docker-compose.yml +0 -0
  52. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/ARCHITECTURE.md +0 -0
  53. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/Docker.md +0 -0
  54. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/NOTE-FORMAT.md +0 -0
  55. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/SPEC-PER-PROJECT-ROUTING.md +0 -0
  56. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/ai-assistant-guide-extended.md +0 -0
  57. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/character-handling.md +0 -0
  58. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/cloud-cli.md +0 -0
  59. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/cloud-semantic-search-value.md +0 -0
  60. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/logfire-instrumentation-strategy.md +0 -0
  61. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/mcp-ui-bakeoff-instructions.md +0 -0
  62. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/metadata-search.md +0 -0
  63. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/post-v0.18.0-test-plan.md +0 -0
  64. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/releases/v0.19.0.md +0 -0
  65. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/semantic-search-test-log.md +0 -0
  66. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/semantic-search.md +0 -0
  67. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/specs/SPEC-LOCAL-PLUS-PUBLISH.md +0 -0
  68. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/specs/SPEC-SCHEMA-IMPL.md +0 -0
  69. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/specs/SPEC-SCHEMA.md +0 -0
  70. {basic_memory-0.21.3 → basic_memory-0.21.4}/docs/testing-coverage.md +0 -0
  71. {basic_memory-0.21.3 → basic_memory-0.21.4}/justfile +0 -0
  72. {basic_memory-0.21.3 → basic_memory-0.21.4}/llms-install.md +0 -0
  73. {basic_memory-0.21.3 → basic_memory-0.21.4}/pyproject.toml +0 -0
  74. {basic_memory-0.21.3 → basic_memory-0.21.4}/skills-lock.json +0 -0
  75. {basic_memory-0.21.3 → basic_memory-0.21.4}/smithery.yaml +0 -0
  76. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/alembic.ini +0 -0
  77. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/env.py +0 -0
  78. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/migrations.py +0 -0
  79. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/script.py.mako +0 -0
  80. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/314f1ea54dc4_add_postgres_full_text_search_support_.py +0 -0
  81. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
  82. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
  83. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +0 -0
  84. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +0 -0
  85. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/6830751f5fb6_merge_multiple_heads.py +0 -0
  86. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/9d9c1cb7d8f5_add_mtime_and_size_columns_to_entity_.py +0 -0
  87. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/a1b2c3d4e5f6_fix_project_foreign_keys.py +0 -0
  88. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/a2b3c4d5e6f7_add_search_index_entity_cascade.py +0 -0
  89. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
  90. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
  91. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/d7e8f9a0b1c2_add_structured_metadata_indexes.py +0 -0
  92. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/e7e1f4367280_add_scan_watermark_tracking_to_project.py +0 -0
  93. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py +0 -0
  94. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py +0 -0
  95. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/h1b2c3d4e5f6_add_postgres_vector_search_tables.py +0 -0
  96. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/i2c3d4e5f6g7_auto_backfill_semantic_embeddings.py +0 -0
  97. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/j3d4e5f6g7h8_rename_entity_type_to_note_type.py +0 -0
  98. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/k4e5f6g7h8i9_add_created_by_and_last_updated_by_to_entity.py +0 -0
  99. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/l5g6h7i8j9k0_add_note_content_table.py +0 -0
  100. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/m6h7i8j9k0l1_add_vector_sync_fingerprints.py +0 -0
  101. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/alembic/versions/n7i8j9k0l1m2_cleanup_sqlite_search_orphans.py +0 -0
  102. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/__init__.py +0 -0
  103. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/app.py +0 -0
  104. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/container.py +0 -0
  105. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/template_loader.py +0 -0
  106. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/v2/__init__.py +0 -0
  107. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/v2/routers/__init__.py +0 -0
  108. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/v2/routers/directory_router.py +0 -0
  109. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/v2/routers/importer_router.py +0 -0
  110. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/v2/routers/knowledge_router.py +0 -0
  111. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/v2/routers/memory_router.py +0 -0
  112. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/v2/routers/project_router.py +0 -0
  113. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/v2/routers/prompt_router.py +0 -0
  114. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/v2/routers/resource_router.py +0 -0
  115. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/v2/routers/schema_router.py +0 -0
  116. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/v2/routers/search_router.py +0 -0
  117. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/api/v2/utils.py +0 -0
  118. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/__init__.py +0 -0
  119. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/analytics.py +0 -0
  120. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/app.py +0 -0
  121. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/auth.py +0 -0
  122. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/auto_update.py +0 -0
  123. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/__init__.py +0 -0
  124. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/cloud/__init__.py +0 -0
  125. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/cloud/api_client.py +0 -0
  126. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/cloud/bisync_commands.py +0 -0
  127. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/cloud/cloud_utils.py +0 -0
  128. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/cloud/core_commands.py +0 -0
  129. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/cloud/project_sync.py +0 -0
  130. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/cloud/rclone_commands.py +0 -0
  131. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/cloud/rclone_config.py +0 -0
  132. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/cloud/rclone_installer.py +0 -0
  133. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/cloud/restore.py +0 -0
  134. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/cloud/schemas.py +0 -0
  135. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/cloud/snapshot.py +0 -0
  136. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/cloud/upload.py +0 -0
  137. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/cloud/upload_command.py +0 -0
  138. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/cloud/workspace.py +0 -0
  139. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/command_utils.py +0 -0
  140. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/db.py +0 -0
  141. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/doctor.py +0 -0
  142. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/format.py +0 -0
  143. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/import_chatgpt.py +0 -0
  144. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/import_claude_conversations.py +0 -0
  145. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/import_claude_projects.py +0 -0
  146. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/import_memory_json.py +0 -0
  147. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/mcp.py +0 -0
  148. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/orphans.py +0 -0
  149. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/project.py +0 -0
  150. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/routing.py +0 -0
  151. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/schema.py +0 -0
  152. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/status.py +0 -0
  153. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/tool.py +0 -0
  154. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/commands/update.py +0 -0
  155. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/container.py +0 -0
  156. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/main.py +0 -0
  157. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/cli/promo.py +0 -0
  158. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/config.py +0 -0
  159. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/db.py +0 -0
  160. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/deps/__init__.py +0 -0
  161. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/deps/config.py +0 -0
  162. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/deps/db.py +0 -0
  163. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/deps/importers.py +0 -0
  164. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/deps/projects.py +0 -0
  165. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/deps/repositories.py +0 -0
  166. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/deps.py +0 -0
  167. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/file_utils.py +0 -0
  168. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/ignore_utils.py +0 -0
  169. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/importers/__init__.py +0 -0
  170. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/importers/base.py +0 -0
  171. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/importers/chatgpt_importer.py +0 -0
  172. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/importers/claude_conversations_importer.py +0 -0
  173. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/importers/claude_projects_importer.py +0 -0
  174. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/importers/memory_json_importer.py +0 -0
  175. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/importers/utils.py +0 -0
  176. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/indexing/__init__.py +0 -0
  177. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/indexing/batch_indexer.py +0 -0
  178. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/indexing/batching.py +0 -0
  179. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/indexing/models.py +0 -0
  180. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/markdown/__init__.py +0 -0
  181. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/markdown/entity_parser.py +0 -0
  182. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/markdown/markdown_processor.py +0 -0
  183. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/markdown/plugins.py +0 -0
  184. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/markdown/schemas.py +0 -0
  185. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/markdown/utils.py +0 -0
  186. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/__init__.py +0 -0
  187. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/async_client.py +0 -0
  188. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/clients/__init__.py +0 -0
  189. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/clients/directory.py +0 -0
  190. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/clients/knowledge.py +0 -0
  191. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/clients/memory.py +0 -0
  192. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/clients/project.py +0 -0
  193. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/clients/resource.py +0 -0
  194. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/clients/schema.py +0 -0
  195. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/clients/search.py +0 -0
  196. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/container.py +0 -0
  197. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/formatting.py +0 -0
  198. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/project_context.py +0 -0
  199. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/prompts/__init__.py +0 -0
  200. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +0 -0
  201. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/prompts/continue_conversation.py +0 -0
  202. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/prompts/recent_activity.py +0 -0
  203. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/prompts/search.py +0 -0
  204. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/prompts/utils.py +0 -0
  205. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/resources/__init__.py +0 -0
  206. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/resources/ai_assistant_guide.md +0 -0
  207. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/resources/cloud_info.md +0 -0
  208. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/resources/project_info.py +0 -0
  209. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/resources/release_notes.md +0 -0
  210. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/resources/ui.py +0 -0
  211. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/server.py +0 -0
  212. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/__init__.py +0 -0
  213. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/build_context.py +0 -0
  214. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/canvas.py +0 -0
  215. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/chatgpt_tools.py +0 -0
  216. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/cloud_info.py +0 -0
  217. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/delete_note.py +0 -0
  218. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/edit_note.py +0 -0
  219. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/list_directory.py +0 -0
  220. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/move_note.py +0 -0
  221. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/project_management.py +0 -0
  222. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/read_content.py +0 -0
  223. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/read_note.py +0 -0
  224. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/recent_activity.py +0 -0
  225. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/release_notes.py +0 -0
  226. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/schema.py +0 -0
  227. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/search.py +0 -0
  228. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/ui_sdk.py +0 -0
  229. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/utils.py +0 -0
  230. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/view_note.py +0 -0
  231. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/tools/workspaces.py +0 -0
  232. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/ui/__init__.py +0 -0
  233. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/ui/html/note-preview-mcp-ui.html +0 -0
  234. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/ui/html/note-preview-tool-ui.html +0 -0
  235. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/ui/html/note-preview-vanilla.html +0 -0
  236. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/ui/html/search-results-mcp-ui.html +0 -0
  237. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/ui/html/search-results-tool-ui.html +0 -0
  238. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/ui/html/search-results-vanilla.html +0 -0
  239. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/ui/sdk.py +0 -0
  240. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/mcp/ui/templates.py +0 -0
  241. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/models/__init__.py +0 -0
  242. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/models/base.py +0 -0
  243. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/models/knowledge.py +0 -0
  244. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/models/project.py +0 -0
  245. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/models/search.py +0 -0
  246. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/project_resolver.py +0 -0
  247. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/__init__.py +0 -0
  248. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/embedding_provider.py +0 -0
  249. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/embedding_provider_factory.py +0 -0
  250. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/entity_repository.py +0 -0
  251. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/fastembed_provider.py +0 -0
  252. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/metadata_filters.py +0 -0
  253. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/note_content_repository.py +0 -0
  254. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/observation_repository.py +0 -0
  255. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/openai_provider.py +0 -0
  256. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/postgres_search_repository.py +0 -0
  257. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/project_info_repository.py +0 -0
  258. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/project_repository.py +0 -0
  259. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/relation_repository.py +0 -0
  260. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/repository.py +0 -0
  261. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/search_index_row.py +0 -0
  262. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/search_repository.py +0 -0
  263. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/search_repository_base.py +0 -0
  264. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/semantic_errors.py +0 -0
  265. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/repository/sqlite_search_repository.py +0 -0
  266. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/runtime.py +0 -0
  267. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schema/__init__.py +0 -0
  268. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schema/diff.py +0 -0
  269. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schema/inference.py +0 -0
  270. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schema/parser.py +0 -0
  271. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schema/resolver.py +0 -0
  272. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schema/validator.py +0 -0
  273. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/__init__.py +0 -0
  274. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/base.py +0 -0
  275. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/cloud.py +0 -0
  276. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/delete.py +0 -0
  277. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/directory.py +0 -0
  278. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/importer.py +0 -0
  279. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/memory.py +0 -0
  280. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/project_info.py +0 -0
  281. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/prompt.py +0 -0
  282. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/request.py +0 -0
  283. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/response.py +0 -0
  284. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/schema.py +0 -0
  285. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/search.py +0 -0
  286. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/sync_report.py +0 -0
  287. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/v2/__init__.py +0 -0
  288. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/v2/entity.py +0 -0
  289. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/v2/graph.py +0 -0
  290. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/schemas/v2/resource.py +0 -0
  291. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/services/__init__.py +0 -0
  292. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/services/context_service.py +0 -0
  293. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/services/directory_service.py +0 -0
  294. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/services/entity_service.py +0 -0
  295. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/services/exceptions.py +0 -0
  296. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/services/file_service.py +0 -0
  297. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/services/initialization.py +0 -0
  298. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/services/link_resolver.py +0 -0
  299. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/services/project_service.py +0 -0
  300. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/services/search_service.py +0 -0
  301. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/services/service.py +0 -0
  302. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/sync/__init__.py +0 -0
  303. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/sync/background_sync.py +0 -0
  304. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/sync/coordinator.py +0 -0
  305. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/sync/sync_service.py +0 -0
  306. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/sync/watch_service.py +0 -0
  307. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/telemetry.py +0 -0
  308. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
  309. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/templates/prompts/search.hbs +0 -0
  310. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/utils.py +0 -0
  311. {basic_memory-0.21.3 → basic_memory-0.21.4}/src/basic_memory/workspace_context.py +0 -0
  312. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/BENCHMARKS.md +0 -0
  313. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/cli/test_cli_tool_edit_note_integration.py +0 -0
  314. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/cli/test_cli_tool_json_failure_integration.py +0 -0
  315. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/cli/test_cli_tool_json_integration.py +0 -0
  316. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/cli/test_project_commands_integration.py +0 -0
  317. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/cli/test_routing_integration.py +0 -0
  318. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/cli/test_search_notes_meta_integration.py +0 -0
  319. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/cli/test_version_integration.py +0 -0
  320. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/compare_search_benchmarks.py +0 -0
  321. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/conftest.py +0 -0
  322. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-01.md +0 -0
  323. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-02.md +0 -0
  324. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-03.md +0 -0
  325. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-04.md +0 -0
  326. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-05.md +0 -0
  327. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-06.md +0 -0
  328. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-07.md +0 -0
  329. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-08.md +0 -0
  330. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-09.md +0 -0
  331. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-10.md +0 -0
  332. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-11.md +0 -0
  333. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-12.md +0 -0
  334. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-13.md +0 -0
  335. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-14.md +0 -0
  336. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-15.md +0 -0
  337. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-16.md +0 -0
  338. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-17.md +0 -0
  339. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-18.md +0 -0
  340. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-19.md +0 -0
  341. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/people/drift-person-20.md +0 -0
  342. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/drift/schema/Person.md +0 -0
  343. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/edge-cases/array-single.md +0 -0
  344. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/edge-cases/empty-note.md +0 -0
  345. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/edge-cases/explicit-overrides-type.md +0 -0
  346. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/edge-cases/inline-and-type.md +0 -0
  347. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/edge-cases/no-frontmatter.md +0 -0
  348. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/edge-cases/relation-only.md +0 -0
  349. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/edge-cases/type-no-schema.md +0 -0
  350. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/edge-cases/unicode-fields.md +0 -0
  351. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/ada-lovelace.md +0 -0
  352. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/alan-turing.md +0 -0
  353. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/anders-hejlsberg.md +0 -0
  354. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/andrej-karpathy.md +0 -0
  355. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/barbara-liskov.md +0 -0
  356. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/bjarne-stroustrup.md +0 -0
  357. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/brendan-eich.md +0 -0
  358. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/claude-shannon.md +0 -0
  359. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/dennis-ritchie.md +0 -0
  360. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/dijkstra.md +0 -0
  361. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/donald-knuth.md +0 -0
  362. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/fei-fei-li.md +0 -0
  363. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/geoffrey-hinton.md +0 -0
  364. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/grace-hopper.md +0 -0
  365. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/guido-van-rossum.md +0 -0
  366. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/james-gosling.md +0 -0
  367. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/john-carmack.md +0 -0
  368. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/ken-thompson.md +0 -0
  369. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/larry-page.md +0 -0
  370. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/leslie-lamport.md +0 -0
  371. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/linus-torvalds.md +0 -0
  372. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/margaret-hamilton.md +0 -0
  373. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/rasmus-lerdorf.md +0 -0
  374. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/richard-stallman.md +0 -0
  375. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/rob-pike.md +0 -0
  376. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/satoshi-nakamoto.md +0 -0
  377. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/tim-berners-lee.md +0 -0
  378. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/vint-cerf.md +0 -0
  379. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/yann-lecun.md +0 -0
  380. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/inference/people/yukihiro-matsumoto.md +0 -0
  381. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/schemas/Book.md +0 -0
  382. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/schemas/Meeting.md +0 -0
  383. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/schemas/Person.md +0 -0
  384. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/schemas/SoftwareProject.md +0 -0
  385. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/schemas/StrictSchema.md +0 -0
  386. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/valid/basic-memory.md +0 -0
  387. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/valid/explicit-ref-note.md +0 -0
  388. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/valid/no-schema-note.md +0 -0
  389. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/valid/paul-graham.md +0 -0
  390. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/valid/rich-hickey.md +0 -0
  391. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/valid/standup-2024-01-15.md +0 -0
  392. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/warnings/extra-observations.md +0 -0
  393. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/warnings/missing-multiple.md +0 -0
  394. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/warnings/missing-required.md +0 -0
  395. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/fixtures/schema/warnings/wrong-enum-value.md +0 -0
  396. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_build_context_underscore.py +0 -0
  397. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_build_context_validation.py +0 -0
  398. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_chatgpt_tools_integration.py +0 -0
  399. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_default_project_mode_integration.py +0 -0
  400. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_delete_directory_integration.py +0 -0
  401. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_delete_note_integration.py +0 -0
  402. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_edit_note_integration.py +0 -0
  403. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_lifespan_shutdown_sync_task_cancellation_integration.py +0 -0
  404. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_list_directory_integration.py +0 -0
  405. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_long_relation_type_integration.py +0 -0
  406. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_move_directory_integration.py +0 -0
  407. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_move_note_integration.py +0 -0
  408. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_output_format_json_integration.py +0 -0
  409. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_pagination_integration.py +0 -0
  410. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_permalink_collision_integration.py +0 -0
  411. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_project_management_integration.py +0 -0
  412. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_project_state_sync_integration.py +0 -0
  413. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_read_content_integration.py +0 -0
  414. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_read_note_integration.py +0 -0
  415. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_search_integration.py +0 -0
  416. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_single_project_mcp_integration.py +0 -0
  417. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_smoke_integration.py +0 -0
  418. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_string_params_integration.py +0 -0
  419. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_ui_sdk_integration.py +0 -0
  420. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_workspace_permalink_integration.py +0 -0
  421. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/mcp/test_write_note_integration.py +0 -0
  422. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/semantic/__init__.py +0 -0
  423. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/semantic/conftest.py +0 -0
  424. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/semantic/corpus.py +0 -0
  425. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/semantic/metrics.py +0 -0
  426. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/semantic/report.py +0 -0
  427. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/semantic/test_multiterm_semantic_queries.py +0 -0
  428. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/semantic/test_search_diagnostics.py +0 -0
  429. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/semantic/test_semantic_coverage.py +0 -0
  430. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/semantic/test_semantic_quality.py +0 -0
  431. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/test_db_wal_mode.py +0 -0
  432. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/test_disable_permalinks_integration.py +0 -0
  433. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/test_schema/__init__.py +0 -0
  434. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/test_schema/conftest.py +0 -0
  435. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/test_schema/helpers.py +0 -0
  436. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/test_schema/test_diff_integration.py +0 -0
  437. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/test_schema/test_inference_integration.py +0 -0
  438. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/test_schema/test_parser_integration.py +0 -0
  439. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/test_schema/test_validator_integration.py +0 -0
  440. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/test_search_performance_benchmark.py +0 -0
  441. {basic_memory-0.21.3 → basic_memory-0.21.4}/test-int/test_sync_batching_integration.py +0 -0
  442. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/Non-MarkdownFileSupport.pdf +0 -0
  443. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/README.md +0 -0
  444. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/Screenshot.png +0 -0
  445. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/__init__.py +0 -0
  446. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/__init__.py +0 -0
  447. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/conftest.py +0 -0
  448. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_directory_router.py +0 -0
  449. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_importer_router.py +0 -0
  450. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_knowledge_router.py +0 -0
  451. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_knowledge_router_telemetry.py +0 -0
  452. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_memory_hydration.py +0 -0
  453. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_memory_router.py +0 -0
  454. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_orphan_router.py +0 -0
  455. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_project_router.py +0 -0
  456. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_prompt_router.py +0 -0
  457. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_resource_router.py +0 -0
  458. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_schema_router.py +0 -0
  459. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_search_hydration.py +0 -0
  460. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_search_router.py +0 -0
  461. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_search_router_telemetry.py +0 -0
  462. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_utils_telemetry.py +0 -0
  463. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/api/v2/test_workspace_permalink_headers.py +0 -0
  464. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/cloud/test_cloud_api_client_and_utils.py +0 -0
  465. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/cloud/test_project_sync_command.py +0 -0
  466. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/cloud/test_rclone_config_and_bmignore_filters.py +0 -0
  467. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/cloud/test_rclone_installer.py +0 -0
  468. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/cloud/test_upload_command_routing.py +0 -0
  469. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/cloud/test_upload_path.py +0 -0
  470. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/conftest.py +0 -0
  471. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_analytics.py +0 -0
  472. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_auth_cli_auth.py +0 -0
  473. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_auto_update.py +0 -0
  474. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_cli_container.py +0 -0
  475. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_cli_exit.py +0 -0
  476. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_cli_schema.py +0 -0
  477. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_cli_telemetry.py +0 -0
  478. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_cli_tool_exit.py +0 -0
  479. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_cli_tool_json_output.py +0 -0
  480. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_cli_tools.py +0 -0
  481. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_cloud_authentication.py +0 -0
  482. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_cloud_promo.py +0 -0
  483. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_cloud_status.py +0 -0
  484. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_db_reindex.py +0 -0
  485. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_db_reset_exit.py +0 -0
  486. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_db_reset_zombie_check.py +0 -0
  487. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_ignore_utils.py +0 -0
  488. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_import_chatgpt.py +0 -0
  489. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_import_claude_conversations.py +0 -0
  490. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_import_claude_projects.py +0 -0
  491. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_import_memory_json.py +0 -0
  492. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_json_output.py +0 -0
  493. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_orphans_command.py +0 -0
  494. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_project_add_with_local_path.py +0 -0
  495. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_project_info_cloud_status.py +0 -0
  496. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_project_info_errors.py +0 -0
  497. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_project_list_and_ls.py +0 -0
  498. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_project_set_cloud_local.py +0 -0
  499. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_restore_commands.py +0 -0
  500. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_routing.py +0 -0
  501. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_snapshot_commands.py +0 -0
  502. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_update_command.py +0 -0
  503. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_upload.py +0 -0
  504. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/cli/test_workspace_commands.py +0 -0
  505. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/conftest.py +0 -0
  506. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/db/test_issue_254_foreign_key_constraints.py +0 -0
  507. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/importers/test_conversation_indexing.py +0 -0
  508. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/importers/test_importer_base.py +0 -0
  509. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/importers/test_importer_utils.py +0 -0
  510. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/indexing/test_batch_indexer.py +0 -0
  511. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/indexing/test_batching.py +0 -0
  512. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/markdown/__init__.py +0 -0
  513. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/markdown/test_date_frontmatter_parsing.py +0 -0
  514. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/markdown/test_entity_parser.py +0 -0
  515. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/markdown/test_entity_parser_error_handling.py +0 -0
  516. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/markdown/test_markdown_plugins.py +0 -0
  517. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/markdown/test_markdown_processor.py +0 -0
  518. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/markdown/test_markdown_utils.py +0 -0
  519. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/markdown/test_observation_edge_cases.py +0 -0
  520. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/markdown/test_parser_edge_cases.py +0 -0
  521. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/markdown/test_relation_edge_cases.py +0 -0
  522. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/markdown/test_task_detection.py +0 -0
  523. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/clients/__init__.py +0 -0
  524. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/clients/test_clients.py +0 -0
  525. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/conftest.py +0 -0
  526. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_async_client_force_local.py +0 -0
  527. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_async_client_modes.py +0 -0
  528. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_async_client_telemetry.py +0 -0
  529. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_client_schema.py +0 -0
  530. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_client_telemetry.py +0 -0
  531. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_mcp_container.py +0 -0
  532. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_obsidian_yaml_formatting.py +0 -0
  533. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_permalink_collision_file_overwrite.py +0 -0
  534. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_project_context.py +0 -0
  535. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_project_context_telemetry.py +0 -0
  536. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_prompt_tool_delegation.py +0 -0
  537. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_prompts.py +0 -0
  538. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_recent_activity_prompt_modes.py +0 -0
  539. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_resources.py +0 -0
  540. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_server_lifespan_branches.py +0 -0
  541. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_server_telemetry.py +0 -0
  542. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_build_context.py +0 -0
  543. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_canvas.py +0 -0
  544. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_cloud_discovery.py +0 -0
  545. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_contracts.py +0 -0
  546. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_delete_note.py +0 -0
  547. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_edit_note.py +0 -0
  548. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_json_output_modes.py +0 -0
  549. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_list_directory.py +0 -0
  550. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_move_note.py +0 -0
  551. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_project_management.py +0 -0
  552. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_read_content.py +0 -0
  553. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_read_note.py +0 -0
  554. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_recent_activity.py +0 -0
  555. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_resource.py +0 -0
  556. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_schema.py +0 -0
  557. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_search.py +0 -0
  558. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_telemetry.py +0 -0
  559. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_utils.py +0 -0
  560. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_utils_cloud_auth.py +0 -0
  561. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_view_note.py +0 -0
  562. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_workspace_management.py +0 -0
  563. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_write_note.py +0 -0
  564. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_write_note_kebab_filenames.py +0 -0
  565. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_tool_write_note_metadata.py +0 -0
  566. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_ui_resources.py +0 -0
  567. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_ui_sdk.py +0 -0
  568. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_ui_templates.py +0 -0
  569. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/test_workspace_permalink_resolution.py +0 -0
  570. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/tools/test_chatgpt_tools.py +0 -0
  571. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/mcp/tools/test_search_notes_multi_project.py +0 -0
  572. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_distance_to_similarity.py +0 -0
  573. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_entity_repository.py +0 -0
  574. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_entity_repository_upsert.py +0 -0
  575. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_entity_upsert_issue_187.py +0 -0
  576. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_fastembed_provider.py +0 -0
  577. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_hybrid_fusion.py +0 -0
  578. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_metadata_filters.py +0 -0
  579. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_metadata_filters_edge_cases.py +0 -0
  580. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_note_content_repository.py +0 -0
  581. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_observation_repository.py +0 -0
  582. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_openai_provider.py +0 -0
  583. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_postgres_search_repository.py +0 -0
  584. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_postgres_search_repository_unit.py +0 -0
  585. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_project_info_repository.py +0 -0
  586. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_project_repository.py +0 -0
  587. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_relation_repository.py +0 -0
  588. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_repository.py +0 -0
  589. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_search_index_row.py +0 -0
  590. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_search_repository.py +0 -0
  591. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_search_repository_edit_bug_fix.py +0 -0
  592. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_search_text_with_metadata_filters.py +0 -0
  593. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_semantic_search_base.py +0 -0
  594. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_sqlite_vector_search_repository.py +0 -0
  595. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_vector_pagination.py +0 -0
  596. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/repository/test_vector_threshold.py +0 -0
  597. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/schema/__init__.py +0 -0
  598. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/schema/test_diff.py +0 -0
  599. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/schema/test_inference.py +0 -0
  600. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/schema/test_parser.py +0 -0
  601. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/schema/test_resolver.py +0 -0
  602. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/schema/test_validator.py +0 -0
  603. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/schemas/test_base_timeframe_minimum.py +0 -0
  604. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/schemas/test_memory_serialization.py +0 -0
  605. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/schemas/test_memory_url.py +0 -0
  606. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/schemas/test_memory_url_validation.py +0 -0
  607. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/schemas/test_relation_response_reference_resolution.py +0 -0
  608. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/schemas/test_schemas.py +0 -0
  609. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/schemas/test_search.py +0 -0
  610. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_context_service.py +0 -0
  611. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_directory_service.py +0 -0
  612. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_entity_service.py +0 -0
  613. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_entity_service_disable_permalinks.py +0 -0
  614. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_entity_service_prepare.py +0 -0
  615. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_entity_service_telemetry.py +0 -0
  616. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_entity_service_write_result.py +0 -0
  617. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_file_service.py +0 -0
  618. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_initialization.py +0 -0
  619. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_initialization_cloud_mode_branches.py +0 -0
  620. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_link_resolver.py +0 -0
  621. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_project_removal_bug.py +0 -0
  622. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_project_service.py +0 -0
  623. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_project_service_cloud_info.py +0 -0
  624. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_project_service_embedding_status.py +0 -0
  625. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_project_service_operations.py +0 -0
  626. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_search_service.py +0 -0
  627. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_search_service_telemetry.py +0 -0
  628. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_semantic_search.py +0 -0
  629. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_task_scheduler_semantic.py +0 -0
  630. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/services/test_upsert_entity_optimization.py +0 -0
  631. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/sync/test_character_conflicts.py +0 -0
  632. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/sync/test_coordinator.py +0 -0
  633. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/sync/test_sync_one_markdown_file.py +0 -0
  634. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/sync/test_sync_service.py +0 -0
  635. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/sync/test_sync_service_batching.py +0 -0
  636. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/sync/test_sync_service_incremental.py +0 -0
  637. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/sync/test_sync_service_subprocess.py +0 -0
  638. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/sync/test_sync_service_telemetry.py +0 -0
  639. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/sync/test_sync_wikilink_issue.py +0 -0
  640. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/sync/test_tmp_files.py +0 -0
  641. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/sync/test_watch_service.py +0 -0
  642. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/sync/test_watch_service_atomic_adds.py +0 -0
  643. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/sync/test_watch_service_edge_cases.py +0 -0
  644. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/sync/test_watch_service_reload.py +0 -0
  645. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/sync/test_watch_service_stress.py +0 -0
  646. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/test_alembic_env.py +0 -0
  647. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/test_coerce.py +0 -0
  648. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/test_config.py +0 -0
  649. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/test_deps.py +0 -0
  650. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/test_note_content_migration.py +0 -0
  651. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/test_permalink_utils.py +0 -0
  652. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/test_production_cascade_delete.py +0 -0
  653. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/test_project_resolver.py +0 -0
  654. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/test_rclone_commands.py +0 -0
  655. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/test_runtime.py +0 -0
  656. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/test_telemetry.py +0 -0
  657. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/utils/test_file_utils.py +0 -0
  658. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/utils/test_frontmatter_obsidian_compatible.py +0 -0
  659. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/utils/test_parse_tags.py +0 -0
  660. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/utils/test_permalink_formatting.py +0 -0
  661. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/utils/test_setup_logging.py +0 -0
  662. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/utils/test_timezone_utils.py +0 -0
  663. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/utils/test_utf8_handling.py +0 -0
  664. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/utils/test_validate_project_path.py +0 -0
  665. {basic_memory-0.21.3 → basic_memory-0.21.4}/tests/utils/test_workspace_context.py +0 -0
  666. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/.gitignore +0 -0
  667. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/build.mjs +0 -0
  668. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/package-lock.json +0 -0
  669. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/package.json +0 -0
  670. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/data-table/_adapter.tsx +0 -0
  671. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/data-table/data-table.tsx +0 -0
  672. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/data-table/error-boundary.tsx +0 -0
  673. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/data-table/formatters.tsx +0 -0
  674. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/data-table/index.tsx +0 -0
  675. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/data-table/schema.ts +0 -0
  676. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/data-table/types.ts +0 -0
  677. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/data-table/utilities.ts +0 -0
  678. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/shared/_adapter.tsx +0 -0
  679. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/shared/action-buttons.tsx +0 -0
  680. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/shared/actions-config.ts +0 -0
  681. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/shared/error-boundary.tsx +0 -0
  682. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/shared/index.ts +0 -0
  683. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/shared/media/aspect-ratio.ts +0 -0
  684. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/shared/media/format-utils.ts +0 -0
  685. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/shared/media/index.ts +0 -0
  686. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/shared/media/overlay-gradient.ts +0 -0
  687. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/shared/media/sanitize-href.ts +0 -0
  688. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/shared/parse.ts +0 -0
  689. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/shared/schema.ts +0 -0
  690. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/shared/use-action-buttons.tsx +0 -0
  691. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/shared/use-copy-to-clipboard.ts +0 -0
  692. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/tool-ui/shared/utils.ts +0 -0
  693. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/ui/accordion.tsx +0 -0
  694. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/ui/badge.tsx +0 -0
  695. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/ui/button.tsx +0 -0
  696. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/ui/dropdown-menu.tsx +0 -0
  697. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/ui/table.tsx +0 -0
  698. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/components/ui/tooltip.tsx +0 -0
  699. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/note-preview.tsx +0 -0
  700. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/search-results.tsx +0 -0
  701. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/src/styles.css +0 -0
  702. {basic_memory-0.21.3 → basic_memory-0.21.4}/ui/tool-ui-react/tailwind.config.js +0 -0
  703. {basic_memory-0.21.3 → basic_memory-0.21.4}/uv.lock +0 -0
@@ -253,6 +253,31 @@ async_client.set_client_factory(your_custom_factory)
253
253
 
254
254
  See SPEC-16 for full context manager refactor details.
255
255
 
256
+ ### Release Process
257
+
258
+ Releases are driven by `just release` / `just beta` — never by a bare `git tag`. The recipes bump version metadata, run pre-flight checks, commit, tag, and push. GitHub Actions then publishes to PyPI and updates the Homebrew formula.
259
+
260
+ **Stable release:**
261
+
262
+ ```
263
+ just release v0.21.3
264
+ ```
265
+
266
+ The recipe runs `just lint` + `just typecheck`, then updates `__version__` in `src/basic_memory/__init__.py` and `"version"` in `server.json` (MCP registry metadata), commits as `chore: update version to X.Y.Z for vX.Y.Z release`, creates the `vX.Y.Z` tag, and pushes both the commit and the tag to `origin/main`. After the tag lands, the `Release` workflow builds the package, publishes to PyPI, creates the GitHub release with auto-generated notes, and updates the Homebrew formula. The recipe finishes by printing the post-release tasks the workflow doesn't cover.
267
+
268
+ **Beta release:** `just beta v0.21.3b1` — same flow with a beta-suffixed tag. PyPI consumers install with `pip install basic-memory --pre`.
269
+
270
+ **Development builds:** every commit to `main` publishes a `0.21.3.dev26+468a22f`-style version to PyPI automatically via `.github/workflows/dev-release.yml`. No human action.
271
+
272
+ **Do not tag releases by hand.** A bare `git tag vX.Y.Z` skips the in-code version bump. Package metadata is still correct (uv-dynamic-versioning derives it from the git tag) but `basic-memory --version` reports the previous release, which is what happened with v0.21.2 → v0.21.3.
273
+
274
+ **Post-release tasks** the recipe surfaces but doesn't run:
275
+ - `docs.basicmemory.com` — add notes to `src/pages/latest-releases.mdx`
276
+ - `basicmachines.co` — bump version in `src/components/sections/hero.tsx`
277
+ - MCP Registry — `mcp-publisher publish` from the repo root
278
+
279
+ See `.claude/commands/release/release.md` (and `beta.md`, `release-check.md`, `changelog.md` alongside it) for the full release + post-release runbook, including the slash commands.
280
+
256
281
  ## BASIC MEMORY PRODUCT USAGE
257
282
 
258
283
  ### Knowledge Structure
@@ -224,40 +224,6 @@ See `test-int/BENCHMARKS.md` for detailed benchmark documentation.
224
224
  - **Fixtures**: Use async pytest fixtures for setup and teardown
225
225
  - **Markers**: Use `@pytest.mark.benchmark` for benchmarks, `@pytest.mark.slow` for slow tests
226
226
 
227
- ## Release Process
228
-
229
- Basic Memory uses automatic versioning based on git tags with `uv-dynamic-versioning`. Here's how releases work:
230
-
231
- ### Version Management
232
- - **Development versions**: Automatically generated from git commits (e.g., `0.12.4.dev26+468a22f`)
233
- - **Beta releases**: Created by tagging with beta suffixes (e.g., `git tag v0.13.0b1`)
234
- - **Stable releases**: Created by tagging with version numbers (e.g., `git tag v0.13.0`)
235
-
236
- ### Release Workflows
237
-
238
- #### Development Builds
239
- - Automatically published to PyPI on every commit to `main`
240
- - Version format: `0.12.4.dev26+468a22f` (base version + dev + commit count + hash)
241
- - Users install with: `pip install basic-memory --pre --force-reinstall`
242
-
243
- #### Beta Releases
244
- 1. Create and push a beta tag: `git tag v0.13.0b1 && git push origin v0.13.0b1`
245
- 2. GitHub Actions automatically builds and publishes to PyPI
246
- 3. Users install with: `pip install basic-memory --pre`
247
-
248
- #### Stable Releases
249
- 1. Create and push a version tag: `git tag v0.13.0 && git push origin v0.13.0`
250
- 2. GitHub Actions automatically:
251
- - Builds the package with version `0.13.0`
252
- - Creates GitHub release with auto-generated notes
253
- - Publishes to PyPI
254
- 3. Users install with: `pip install basic-memory`
255
-
256
- ### For Contributors
257
- - No manual version bumping required
258
- - Versions are automatically derived from git tags
259
- - Focus on code changes, not version management
260
-
261
227
  ## Creating Issues
262
228
 
263
229
  If you're planning to work on something, please create an issue first to discuss the approach. Include:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: basic-memory
3
- Version: 0.21.3
3
+ Version: 0.21.4
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
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/basicmachines-co/basic-memory.git",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.21.3",
9
+ "version": "0.21.4",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "pypi",
13
13
  "identifier": "basic-memory",
14
- "version": "0.21.3",
14
+ "version": "0.21.4",
15
15
  "runtimeHint": "uvx",
16
16
  "runtimeArguments": [
17
17
  {"type": "positional", "value": "basic-memory"},
@@ -1,7 +1,7 @@
1
1
  """basic-memory - Local-first knowledge management combining Zettelkasten with knowledge graphs"""
2
2
 
3
3
  # Package version - updated by release automation
4
- __version__ = "0.21.3"
4
+ __version__ = "0.21.4"
5
5
 
6
6
  # API version for FastAPI - independent of package version
7
7
  __api_version__ = "v0"
@@ -447,8 +447,12 @@ class TaskScheduler(Protocol):
447
447
 
448
448
 
449
449
  def _log_task_failure(completed: asyncio.Task) -> None:
450
+ if completed.cancelled():
451
+ return
450
452
  try:
451
453
  completed.result()
454
+ except asyncio.CancelledError:
455
+ return
452
456
  except Exception as exc: # pragma: no cover
453
457
  logger.exception("Background task failed", error=str(exc))
454
458
 
@@ -35,11 +35,7 @@ async def write_note(
35
35
  tags: list[str] | str | None = None,
36
36
  note_type: str = "note",
37
37
  metadata: Annotated[dict | None, BeforeValidator(coerce_dict)] = None,
38
- # Force/replace are the file-write idioms models default to.
39
- overwrite: Annotated[
40
- bool | None,
41
- Field(default=None, validation_alias=AliasChoices("overwrite", "force", "replace")),
42
- ] = None,
38
+ overwrite: bool | None = None,
43
39
  output_format: Literal["text", "json"] = "text",
44
40
  context: Context | None = None,
45
41
  ) -> str | dict:
@@ -310,31 +310,40 @@ async def test_write_note_accepts_directory_aliases(mcp_server, app, test_projec
310
310
 
311
311
 
312
312
  @pytest.mark.asyncio
313
- async def test_write_note_accepts_overwrite_aliases(mcp_server, app, test_project):
314
- """`force`/`replace` should map to `overwrite`."""
313
+ async def test_write_note_overwrite_canonical_via_mcp(mcp_server, app, test_project):
314
+ """Canonical overwrite=True must reach the handler (#818 regression)."""
315
315
  async with Client(mcp_server) as client:
316
- # First create
317
316
  await client.call_tool(
318
317
  "write_note",
319
318
  {
320
319
  "project": test_project.name,
321
- "title": "Overwrite Alias Note",
320
+ "title": "Overwrite Canonical Note",
322
321
  "directory": "overwrite-test",
323
322
  "content": "v1",
324
323
  },
325
324
  )
326
- # Overwrite using `force` alias
325
+ blocked = await client.call_tool(
326
+ "write_note",
327
+ {
328
+ "project": test_project.name,
329
+ "title": "Overwrite Canonical Note",
330
+ "directory": "overwrite-test",
331
+ "content": "v2",
332
+ },
333
+ )
334
+ assert "# Error: Note already exists" in blocked.content[0].text
335
+
327
336
  result = await client.call_tool(
328
337
  "write_note",
329
338
  {
330
339
  "project": test_project.name,
331
- "title": "Overwrite Alias Note",
340
+ "title": "Overwrite Canonical Note",
332
341
  "directory": "overwrite-test",
333
342
  "content": "v2",
334
- "force": True, # alias for overwrite
343
+ "overwrite": True,
335
344
  },
336
345
  )
337
- assert "Updated note" in result.content[0].text or "Created note" in result.content[0].text
346
+ assert "# Updated note" in result.content[0].text
338
347
 
339
348
 
340
349
  # --- move_note aliases ---
@@ -538,3 +547,19 @@ async def test_aliases_not_advertised_in_schema(mcp_server, app):
538
547
  assert canonical in props, f"{tool_name}: canonical '{canonical}' missing"
539
548
  for alias in must_not_have:
540
549
  assert alias not in props, f"{tool_name}: alias '{alias}' leaked into schema"
550
+
551
+ # #818: AliasChoices on optional bool broke external-client JSON schema (null-only).
552
+ overwrite_schema = tools["write_note"].inputSchema["properties"]["overwrite"]
553
+ schema_types: set[str] = set()
554
+ if "type" in overwrite_schema:
555
+ raw = overwrite_schema["type"]
556
+ if isinstance(raw, str):
557
+ schema_types.add(raw)
558
+ else:
559
+ schema_types.update(raw)
560
+ for option in overwrite_schema.get("anyOf", ()):
561
+ if "type" in option:
562
+ schema_types.add(option["type"])
563
+ assert "boolean" in schema_types, (
564
+ f"write_note overwrite must expose boolean in schema, got {overwrite_schema}"
565
+ )
@@ -0,0 +1,38 @@
1
+ """Tests for background task done-callback error handling."""
2
+
3
+ import asyncio
4
+ from unittest.mock import patch
5
+
6
+ import pytest
7
+
8
+ from basic_memory.deps.services import _log_task_failure
9
+
10
+
11
+ @pytest.mark.asyncio
12
+ async def test_log_task_failure_ignores_cancelled_task():
13
+ async def slow():
14
+ await asyncio.sleep(10)
15
+
16
+ task = asyncio.create_task(slow())
17
+ task.cancel()
18
+ with pytest.raises(asyncio.CancelledError):
19
+ await task
20
+
21
+ with patch("basic_memory.deps.services.logger.exception") as mock_exc:
22
+ _log_task_failure(task)
23
+ mock_exc.assert_not_called()
24
+
25
+
26
+ @pytest.mark.asyncio
27
+ async def test_log_task_failure_logs_real_exception():
28
+ async def boom():
29
+ raise ValueError("sync failed")
30
+
31
+ task = asyncio.create_task(boom())
32
+ with pytest.raises(ValueError):
33
+ await task
34
+
35
+ with patch("basic_memory.deps.services.logger.exception") as mock_exc:
36
+ _log_task_failure(task)
37
+ mock_exc.assert_called_once()
38
+ assert "sync failed" in str(mock_exc.call_args)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes