basic-memory 0.20.3__tar.gz → 0.21.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 (946) hide show
  1. basic_memory-0.21.1/.agents/skills/instrumentation/SKILL.md +244 -0
  2. basic_memory-0.21.1/.agents/skills/instrumentation/references/javascript/frameworks.md +78 -0
  3. basic_memory-0.21.1/.agents/skills/instrumentation/references/javascript/patterns.md +75 -0
  4. basic_memory-0.21.1/.agents/skills/instrumentation/references/python/integrations.md +67 -0
  5. basic_memory-0.21.1/.agents/skills/instrumentation/references/python/logging-patterns.md +101 -0
  6. basic_memory-0.21.1/.agents/skills/instrumentation/references/rust/patterns.md +106 -0
  7. basic_memory-0.21.1/.claude/settings.json +21 -0
  8. basic_memory-0.21.1/.github/workflows/claude-code-review.yml +86 -0
  9. basic_memory-0.21.1/.github/workflows/claude-issue-triage.yml +74 -0
  10. basic_memory-0.21.1/.github/workflows/claude.yml +70 -0
  11. basic_memory-0.21.1/.github/workflows/dev-release.yml +56 -0
  12. basic_memory-0.21.1/.github/workflows/docker.yml +61 -0
  13. basic_memory-0.21.1/.github/workflows/pr-title.yml +44 -0
  14. basic_memory-0.21.1/.github/workflows/release.yml +125 -0
  15. basic_memory-0.21.1/.github/workflows/test.yml +294 -0
  16. basic_memory-0.21.1/AGENTS.md +452 -0
  17. basic_memory-0.21.1/CHANGELOG.md +2811 -0
  18. basic_memory-0.21.1/PKG-INFO +609 -0
  19. basic_memory-0.21.1/README.md +556 -0
  20. basic_memory-0.21.1/SECURITY.md +78 -0
  21. basic_memory-0.21.1/docker-compose.yml +85 -0
  22. basic_memory-0.21.1/docs/NOTE-FORMAT.md +512 -0
  23. basic_memory-0.21.1/docs/ai-assistant-guide-extended.md +3400 -0
  24. basic_memory-0.21.1/docs/cloud-cli.md +926 -0
  25. basic_memory-0.21.1/justfile +416 -0
  26. basic_memory-0.21.1/pyproject.toml +165 -0
  27. basic_memory-0.21.1/server.json +25 -0
  28. basic_memory-0.21.1/skills-lock.json +10 -0
  29. basic_memory-0.21.1/src/basic_memory/__init__.py +7 -0
  30. basic_memory-0.21.1/src/basic_memory/alembic/env.py +217 -0
  31. basic_memory-0.21.1/src/basic_memory/alembic/versions/l5g6h7i8j9k0_add_note_content_table.py +65 -0
  32. basic_memory-0.21.1/src/basic_memory/alembic/versions/m6h7i8j9k0l1_add_vector_sync_fingerprints.py +84 -0
  33. basic_memory-0.21.1/src/basic_memory/alembic/versions/n7i8j9k0l1m2_cleanup_sqlite_search_orphans.py +86 -0
  34. basic_memory-0.21.1/src/basic_memory/api/app.py +185 -0
  35. basic_memory-0.21.1/src/basic_memory/api/v2/routers/importer_router.py +205 -0
  36. basic_memory-0.21.1/src/basic_memory/api/v2/routers/knowledge_router.py +705 -0
  37. basic_memory-0.21.1/src/basic_memory/api/v2/routers/memory_router.py +182 -0
  38. basic_memory-0.21.1/src/basic_memory/api/v2/routers/project_router.py +599 -0
  39. basic_memory-0.21.1/src/basic_memory/api/v2/routers/prompt_router.py +262 -0
  40. basic_memory-0.21.1/src/basic_memory/api/v2/routers/resource_router.py +353 -0
  41. basic_memory-0.21.1/src/basic_memory/api/v2/routers/search_router.py +155 -0
  42. basic_memory-0.21.1/src/basic_memory/api/v2/utils.py +278 -0
  43. basic_memory-0.21.1/src/basic_memory/cli/app.py +112 -0
  44. basic_memory-0.21.1/src/basic_memory/cli/auto_update.py +389 -0
  45. basic_memory-0.21.1/src/basic_memory/cli/commands/__init__.py +29 -0
  46. basic_memory-0.21.1/src/basic_memory/cli/commands/cloud/api_client.py +137 -0
  47. basic_memory-0.21.1/src/basic_memory/cli/commands/cloud/bisync_commands.py +120 -0
  48. basic_memory-0.21.1/src/basic_memory/cli/commands/cloud/cloud_utils.py +153 -0
  49. basic_memory-0.21.1/src/basic_memory/cli/commands/cloud/core_commands.py +293 -0
  50. basic_memory-0.21.1/src/basic_memory/cli/commands/cloud/project_sync.py +343 -0
  51. basic_memory-0.21.1/src/basic_memory/cli/commands/cloud/rclone_commands.py +421 -0
  52. basic_memory-0.21.1/src/basic_memory/cli/commands/cloud/rclone_installer.py +335 -0
  53. basic_memory-0.21.1/src/basic_memory/cli/commands/cloud/upload_command.py +150 -0
  54. basic_memory-0.21.1/src/basic_memory/cli/commands/cloud/workspace.py +118 -0
  55. basic_memory-0.21.1/src/basic_memory/cli/commands/db.py +450 -0
  56. basic_memory-0.21.1/src/basic_memory/cli/commands/doctor.py +156 -0
  57. basic_memory-0.21.1/src/basic_memory/cli/commands/orphans.py +93 -0
  58. basic_memory-0.21.1/src/basic_memory/cli/commands/project.py +1506 -0
  59. basic_memory-0.21.1/src/basic_memory/cli/commands/tool.py +780 -0
  60. basic_memory-0.21.1/src/basic_memory/cli/main.py +39 -0
  61. basic_memory-0.21.1/src/basic_memory/config.py +1130 -0
  62. basic_memory-0.21.1/src/basic_memory/db.py +439 -0
  63. basic_memory-0.21.1/src/basic_memory/deps/services.py +586 -0
  64. basic_memory-0.21.1/src/basic_memory/file_utils.py +496 -0
  65. basic_memory-0.21.1/src/basic_memory/ignore_utils.py +302 -0
  66. basic_memory-0.21.1/src/basic_memory/importers/utils.py +62 -0
  67. basic_memory-0.21.1/src/basic_memory/indexing/__init__.py +31 -0
  68. basic_memory-0.21.1/src/basic_memory/indexing/batch_indexer.py +710 -0
  69. basic_memory-0.21.1/src/basic_memory/indexing/batching.py +63 -0
  70. basic_memory-0.21.1/src/basic_memory/indexing/models.py +110 -0
  71. basic_memory-0.21.1/src/basic_memory/markdown/entity_parser.py +314 -0
  72. basic_memory-0.21.1/src/basic_memory/markdown/plugins.py +281 -0
  73. basic_memory-0.21.1/src/basic_memory/markdown/schemas.py +94 -0
  74. basic_memory-0.21.1/src/basic_memory/mcp/async_client.py +268 -0
  75. basic_memory-0.21.1/src/basic_memory/mcp/clients/knowledge.py +326 -0
  76. basic_memory-0.21.1/src/basic_memory/mcp/clients/memory.py +141 -0
  77. basic_memory-0.21.1/src/basic_memory/mcp/clients/resource.py +63 -0
  78. basic_memory-0.21.1/src/basic_memory/mcp/clients/search.py +76 -0
  79. basic_memory-0.21.1/src/basic_memory/mcp/project_context.py +1528 -0
  80. basic_memory-0.21.1/src/basic_memory/mcp/prompts/utils.py +161 -0
  81. basic_memory-0.21.1/src/basic_memory/mcp/resources/ai_assistant_guide.md +324 -0
  82. basic_memory-0.21.1/src/basic_memory/mcp/server.py +147 -0
  83. basic_memory-0.21.1/src/basic_memory/mcp/tools/build_context.py +290 -0
  84. basic_memory-0.21.1/src/basic_memory/mcp/tools/canvas.py +162 -0
  85. basic_memory-0.21.1/src/basic_memory/mcp/tools/chatgpt_tools.py +216 -0
  86. basic_memory-0.21.1/src/basic_memory/mcp/tools/delete_note.py +472 -0
  87. basic_memory-0.21.1/src/basic_memory/mcp/tools/edit_note.py +638 -0
  88. basic_memory-0.21.1/src/basic_memory/mcp/tools/list_directory.py +174 -0
  89. basic_memory-0.21.1/src/basic_memory/mcp/tools/move_note.py +884 -0
  90. basic_memory-0.21.1/src/basic_memory/mcp/tools/project_management.py +629 -0
  91. basic_memory-0.21.1/src/basic_memory/mcp/tools/read_content.py +330 -0
  92. basic_memory-0.21.1/src/basic_memory/mcp/tools/read_note.py +477 -0
  93. basic_memory-0.21.1/src/basic_memory/mcp/tools/recent_activity.py +608 -0
  94. basic_memory-0.21.1/src/basic_memory/mcp/tools/schema.py +531 -0
  95. basic_memory-0.21.1/src/basic_memory/mcp/tools/search.py +1021 -0
  96. basic_memory-0.21.1/src/basic_memory/mcp/tools/ui_sdk.py +132 -0
  97. basic_memory-0.21.1/src/basic_memory/mcp/tools/utils.py +723 -0
  98. basic_memory-0.21.1/src/basic_memory/mcp/tools/view_note.py +81 -0
  99. basic_memory-0.21.1/src/basic_memory/mcp/tools/workspaces.py +77 -0
  100. basic_memory-0.21.1/src/basic_memory/mcp/tools/write_note.py +354 -0
  101. basic_memory-0.21.1/src/basic_memory/models/__init__.py +16 -0
  102. basic_memory-0.21.1/src/basic_memory/models/base.py +13 -0
  103. basic_memory-0.21.1/src/basic_memory/models/knowledge.py +311 -0
  104. basic_memory-0.21.1/src/basic_memory/models/search.py +153 -0
  105. basic_memory-0.21.1/src/basic_memory/repository/__init__.py +13 -0
  106. basic_memory-0.21.1/src/basic_memory/repository/embedding_provider.py +22 -0
  107. basic_memory-0.21.1/src/basic_memory/repository/embedding_provider_factory.py +161 -0
  108. basic_memory-0.21.1/src/basic_memory/repository/entity_repository.py +576 -0
  109. basic_memory-0.21.1/src/basic_memory/repository/fastembed_provider.py +138 -0
  110. basic_memory-0.21.1/src/basic_memory/repository/metadata_filters.py +160 -0
  111. basic_memory-0.21.1/src/basic_memory/repository/note_content_repository.py +191 -0
  112. basic_memory-0.21.1/src/basic_memory/repository/openai_provider.py +132 -0
  113. basic_memory-0.21.1/src/basic_memory/repository/postgres_search_repository.py +1057 -0
  114. basic_memory-0.21.1/src/basic_memory/repository/project_repository.py +278 -0
  115. basic_memory-0.21.1/src/basic_memory/repository/repository.py +421 -0
  116. basic_memory-0.21.1/src/basic_memory/repository/search_repository.py +142 -0
  117. basic_memory-0.21.1/src/basic_memory/repository/search_repository_base.py +2252 -0
  118. basic_memory-0.21.1/src/basic_memory/repository/sqlite_search_repository.py +1070 -0
  119. basic_memory-0.21.1/src/basic_memory/schema/parser.py +327 -0
  120. basic_memory-0.21.1/src/basic_memory/schemas/base.py +306 -0
  121. basic_memory-0.21.1/src/basic_memory/schemas/cloud.py +183 -0
  122. basic_memory-0.21.1/src/basic_memory/schemas/memory.py +292 -0
  123. basic_memory-0.21.1/src/basic_memory/schemas/response.py +362 -0
  124. basic_memory-0.21.1/src/basic_memory/schemas/search.py +146 -0
  125. basic_memory-0.21.1/src/basic_memory/schemas/sync_report.py +72 -0
  126. basic_memory-0.21.1/src/basic_memory/schemas/v2/__init__.py +41 -0
  127. basic_memory-0.21.1/src/basic_memory/schemas/v2/graph.py +40 -0
  128. basic_memory-0.21.1/src/basic_memory/services/context_service.py +653 -0
  129. basic_memory-0.21.1/src/basic_memory/services/entity_service.py +1721 -0
  130. basic_memory-0.21.1/src/basic_memory/services/file_service.py +616 -0
  131. basic_memory-0.21.1/src/basic_memory/services/initialization.py +252 -0
  132. basic_memory-0.21.1/src/basic_memory/services/link_resolver.py +535 -0
  133. basic_memory-0.21.1/src/basic_memory/services/project_service.py +1153 -0
  134. basic_memory-0.21.1/src/basic_memory/services/search_service.py +979 -0
  135. basic_memory-0.21.1/src/basic_memory/sync/sync_service.py +1767 -0
  136. basic_memory-0.21.1/src/basic_memory/sync/watch_service.py +606 -0
  137. basic_memory-0.21.1/src/basic_memory/telemetry.py +64 -0
  138. basic_memory-0.21.1/src/basic_memory/utils.py +753 -0
  139. basic_memory-0.21.1/src/basic_memory/workspace_context.py +114 -0
  140. basic_memory-0.21.1/test-int/conftest.py +480 -0
  141. basic_memory-0.21.1/test-int/mcp/test_long_relation_type_integration.py +81 -0
  142. basic_memory-0.21.1/test-int/mcp/test_output_format_json_integration.py +399 -0
  143. basic_memory-0.21.1/test-int/mcp/test_pagination_integration.py +306 -0
  144. basic_memory-0.21.1/test-int/mcp/test_param_aliases_integration.py +540 -0
  145. basic_memory-0.21.1/test-int/mcp/test_project_management_integration.py +709 -0
  146. basic_memory-0.21.1/test-int/mcp/test_read_note_integration.py +170 -0
  147. basic_memory-0.21.1/test-int/mcp/test_string_params_integration.py +169 -0
  148. basic_memory-0.21.1/test-int/mcp/test_workspace_permalink_integration.py +463 -0
  149. basic_memory-0.21.1/test-int/semantic/conftest.py +300 -0
  150. basic_memory-0.21.1/test-int/semantic/test_search_diagnostics.py +466 -0
  151. basic_memory-0.21.1/test-int/semantic/test_semantic_coverage.py +284 -0
  152. basic_memory-0.21.1/test-int/semantic/test_semantic_quality.py +157 -0
  153. basic_memory-0.21.1/test-int/test_db_wal_mode.py +171 -0
  154. basic_memory-0.21.1/test-int/test_sync_batching_integration.py +201 -0
  155. basic_memory-0.21.1/tests/api/v2/conftest.py +68 -0
  156. basic_memory-0.21.1/tests/api/v2/test_importer_router.py +549 -0
  157. basic_memory-0.21.1/tests/api/v2/test_knowledge_router.py +909 -0
  158. basic_memory-0.21.1/tests/api/v2/test_knowledge_router_telemetry.py +195 -0
  159. basic_memory-0.21.1/tests/api/v2/test_memory_hydration.py +279 -0
  160. basic_memory-0.21.1/tests/api/v2/test_orphan_router.py +92 -0
  161. basic_memory-0.21.1/tests/api/v2/test_project_router.py +450 -0
  162. basic_memory-0.21.1/tests/api/v2/test_search_hydration.py +306 -0
  163. basic_memory-0.21.1/tests/api/v2/test_search_router.py +662 -0
  164. basic_memory-0.21.1/tests/api/v2/test_search_router_telemetry.py +63 -0
  165. basic_memory-0.21.1/tests/api/v2/test_utils_telemetry.py +67 -0
  166. basic_memory-0.21.1/tests/api/v2/test_workspace_permalink_headers.py +41 -0
  167. basic_memory-0.21.1/tests/cli/cloud/test_cloud_api_client_and_utils.py +339 -0
  168. basic_memory-0.21.1/tests/cli/cloud/test_project_sync_command.py +92 -0
  169. basic_memory-0.21.1/tests/cli/cloud/test_rclone_config_and_bmignore_filters.py +113 -0
  170. basic_memory-0.21.1/tests/cli/cloud/test_rclone_installer.py +54 -0
  171. basic_memory-0.21.1/tests/cli/cloud/test_upload_command_routing.py +143 -0
  172. basic_memory-0.21.1/tests/cli/conftest.py +70 -0
  173. basic_memory-0.21.1/tests/cli/test_auto_update.py +404 -0
  174. basic_memory-0.21.1/tests/cli/test_cli_exit.py +105 -0
  175. basic_memory-0.21.1/tests/cli/test_cli_telemetry.py +53 -0
  176. basic_memory-0.21.1/tests/cli/test_cli_tool_json_output.py +737 -0
  177. basic_memory-0.21.1/tests/cli/test_cloud_authentication.py +266 -0
  178. basic_memory-0.21.1/tests/cli/test_cloud_promo.py +317 -0
  179. basic_memory-0.21.1/tests/cli/test_db_reindex.py +322 -0
  180. basic_memory-0.21.1/tests/cli/test_db_reset_exit.py +61 -0
  181. basic_memory-0.21.1/tests/cli/test_db_reset_zombie_check.py +157 -0
  182. basic_memory-0.21.1/tests/cli/test_ignore_utils.py +332 -0
  183. basic_memory-0.21.1/tests/cli/test_json_output.py +420 -0
  184. basic_memory-0.21.1/tests/cli/test_orphans_command.py +150 -0
  185. basic_memory-0.21.1/tests/cli/test_project_add_with_local_path.py +360 -0
  186. basic_memory-0.21.1/tests/cli/test_project_info_cloud_status.py +673 -0
  187. basic_memory-0.21.1/tests/cli/test_project_list_and_ls.py +1054 -0
  188. basic_memory-0.21.1/tests/cli/test_project_set_cloud_local.py +385 -0
  189. basic_memory-0.21.1/tests/cli/test_workspace_commands.py +251 -0
  190. basic_memory-0.21.1/tests/conftest.py +772 -0
  191. basic_memory-0.21.1/tests/db/test_issue_254_foreign_key_constraints.py +171 -0
  192. basic_memory-0.21.1/tests/importers/test_importer_utils.py +60 -0
  193. basic_memory-0.21.1/tests/indexing/test_batch_indexer.py +797 -0
  194. basic_memory-0.21.1/tests/indexing/test_batching.py +85 -0
  195. basic_memory-0.21.1/tests/markdown/test_date_frontmatter_parsing.py +362 -0
  196. basic_memory-0.21.1/tests/markdown/test_entity_parser.py +272 -0
  197. basic_memory-0.21.1/tests/markdown/test_entity_parser_error_handling.py +423 -0
  198. basic_memory-0.21.1/tests/markdown/test_markdown_plugins.py +328 -0
  199. basic_memory-0.21.1/tests/markdown/test_markdown_processor.py +187 -0
  200. basic_memory-0.21.1/tests/markdown/test_observation_edge_cases.py +129 -0
  201. basic_memory-0.21.1/tests/markdown/test_parser_edge_cases.py +207 -0
  202. basic_memory-0.21.1/tests/markdown/test_relation_edge_cases.py +178 -0
  203. basic_memory-0.21.1/tests/mcp/clients/test_clients.py +405 -0
  204. basic_memory-0.21.1/tests/mcp/conftest.py +67 -0
  205. basic_memory-0.21.1/tests/mcp/test_async_client_modes.py +388 -0
  206. basic_memory-0.21.1/tests/mcp/test_async_client_telemetry.py +47 -0
  207. basic_memory-0.21.1/tests/mcp/test_client_telemetry.py +185 -0
  208. basic_memory-0.21.1/tests/mcp/test_permalink_collision_file_overwrite.py +390 -0
  209. basic_memory-0.21.1/tests/mcp/test_project_context.py +2599 -0
  210. basic_memory-0.21.1/tests/mcp/test_project_context_telemetry.py +96 -0
  211. basic_memory-0.21.1/tests/mcp/test_recent_activity_prompt_modes.py +109 -0
  212. basic_memory-0.21.1/tests/mcp/test_server_telemetry.py +29 -0
  213. basic_memory-0.21.1/tests/mcp/test_tool_build_context.py +256 -0
  214. basic_memory-0.21.1/tests/mcp/test_tool_contracts.py +156 -0
  215. basic_memory-0.21.1/tests/mcp/test_tool_delete_note.py +277 -0
  216. basic_memory-0.21.1/tests/mcp/test_tool_edit_note.py +1188 -0
  217. basic_memory-0.21.1/tests/mcp/test_tool_json_output_modes.py +384 -0
  218. basic_memory-0.21.1/tests/mcp/test_tool_project_management.py +984 -0
  219. basic_memory-0.21.1/tests/mcp/test_tool_read_note.py +876 -0
  220. basic_memory-0.21.1/tests/mcp/test_tool_recent_activity.py +613 -0
  221. basic_memory-0.21.1/tests/mcp/test_tool_schema.py +626 -0
  222. basic_memory-0.21.1/tests/mcp/test_tool_search.py +1648 -0
  223. basic_memory-0.21.1/tests/mcp/test_tool_telemetry.py +284 -0
  224. basic_memory-0.21.1/tests/mcp/test_tool_utils.py +241 -0
  225. basic_memory-0.21.1/tests/mcp/test_tool_utils_cloud_auth.py +59 -0
  226. basic_memory-0.21.1/tests/mcp/test_tool_view_note.py +224 -0
  227. basic_memory-0.21.1/tests/mcp/test_tool_workspace_management.py +267 -0
  228. basic_memory-0.21.1/tests/mcp/test_tool_write_note.py +1313 -0
  229. basic_memory-0.21.1/tests/mcp/test_ui_sdk.py +140 -0
  230. basic_memory-0.21.1/tests/mcp/test_workspace_permalink_resolution.py +102 -0
  231. basic_memory-0.21.1/tests/mcp/tools/test_chatgpt_tools.py +284 -0
  232. basic_memory-0.21.1/tests/mcp/tools/test_search_notes_multi_project.py +368 -0
  233. basic_memory-0.21.1/tests/repository/test_entity_repository.py +1282 -0
  234. basic_memory-0.21.1/tests/repository/test_entity_repository_upsert.py +512 -0
  235. basic_memory-0.21.1/tests/repository/test_fastembed_provider.py +150 -0
  236. basic_memory-0.21.1/tests/repository/test_hybrid_fusion.py +304 -0
  237. basic_memory-0.21.1/tests/repository/test_note_content_repository.py +425 -0
  238. basic_memory-0.21.1/tests/repository/test_observation_repository.py +468 -0
  239. basic_memory-0.21.1/tests/repository/test_openai_provider.py +580 -0
  240. basic_memory-0.21.1/tests/repository/test_postgres_search_repository.py +818 -0
  241. basic_memory-0.21.1/tests/repository/test_postgres_search_repository_unit.py +510 -0
  242. basic_memory-0.21.1/tests/repository/test_relation_repository.py +507 -0
  243. basic_memory-0.21.1/tests/repository/test_repository.py +224 -0
  244. basic_memory-0.21.1/tests/repository/test_search_repository.py +1046 -0
  245. basic_memory-0.21.1/tests/repository/test_search_repository_edit_bug_fix.py +273 -0
  246. basic_memory-0.21.1/tests/repository/test_semantic_search_base.py +810 -0
  247. basic_memory-0.21.1/tests/repository/test_sqlite_vector_search_repository.py +562 -0
  248. basic_memory-0.21.1/tests/repository/test_vector_pagination.py +177 -0
  249. basic_memory-0.21.1/tests/repository/test_vector_threshold.py +466 -0
  250. basic_memory-0.21.1/tests/schema/test_parser.py +489 -0
  251. basic_memory-0.21.1/tests/schema/test_resolver.py +165 -0
  252. basic_memory-0.21.1/tests/schema/test_validator.py +415 -0
  253. basic_memory-0.21.1/tests/schemas/test_schemas.py +713 -0
  254. basic_memory-0.21.1/tests/schemas/test_search.py +133 -0
  255. basic_memory-0.21.1/tests/services/test_entity_service.py +2549 -0
  256. basic_memory-0.21.1/tests/services/test_entity_service_disable_permalinks.py +221 -0
  257. basic_memory-0.21.1/tests/services/test_entity_service_prepare.py +334 -0
  258. basic_memory-0.21.1/tests/services/test_entity_service_telemetry.py +72 -0
  259. basic_memory-0.21.1/tests/services/test_entity_service_write_result.py +142 -0
  260. basic_memory-0.21.1/tests/services/test_file_service.py +285 -0
  261. basic_memory-0.21.1/tests/services/test_initialization.py +253 -0
  262. basic_memory-0.21.1/tests/services/test_link_resolver.py +1008 -0
  263. basic_memory-0.21.1/tests/services/test_project_removal_bug.py +352 -0
  264. basic_memory-0.21.1/tests/services/test_project_service.py +1575 -0
  265. basic_memory-0.21.1/tests/services/test_project_service_embedding_status.py +335 -0
  266. basic_memory-0.21.1/tests/services/test_search_service.py +1387 -0
  267. basic_memory-0.21.1/tests/services/test_search_service_telemetry.py +77 -0
  268. basic_memory-0.21.1/tests/services/test_semantic_search.py +348 -0
  269. basic_memory-0.21.1/tests/services/test_task_scheduler_semantic.py +87 -0
  270. basic_memory-0.21.1/tests/services/test_upsert_entity_optimization.py +454 -0
  271. basic_memory-0.21.1/tests/sync/test_sync_one_markdown_file.py +399 -0
  272. basic_memory-0.21.1/tests/sync/test_sync_service.py +1814 -0
  273. basic_memory-0.21.1/tests/sync/test_sync_service_batching.py +256 -0
  274. basic_memory-0.21.1/tests/sync/test_sync_service_incremental.py +820 -0
  275. basic_memory-0.21.1/tests/sync/test_sync_service_subprocess.py +108 -0
  276. basic_memory-0.21.1/tests/sync/test_sync_service_telemetry.py +212 -0
  277. basic_memory-0.21.1/tests/sync/test_watch_service.py +652 -0
  278. basic_memory-0.21.1/tests/sync/test_watch_service_edge_cases.py +335 -0
  279. basic_memory-0.21.1/tests/sync/test_watch_service_reload.py +359 -0
  280. basic_memory-0.21.1/tests/test_alembic_env.py +112 -0
  281. basic_memory-0.21.1/tests/test_config.py +1574 -0
  282. basic_memory-0.21.1/tests/test_note_content_migration.py +75 -0
  283. basic_memory-0.21.1/tests/test_permalink_utils.py +90 -0
  284. basic_memory-0.21.1/tests/test_production_cascade_delete.py +384 -0
  285. basic_memory-0.21.1/tests/test_rclone_commands.py +564 -0
  286. basic_memory-0.21.1/tests/test_telemetry.py +143 -0
  287. basic_memory-0.21.1/tests/utils/test_file_utils.py +564 -0
  288. basic_memory-0.21.1/tests/utils/test_parse_tags.py +68 -0
  289. basic_memory-0.21.1/tests/utils/test_permalink_formatting.py +180 -0
  290. basic_memory-0.21.1/tests/utils/test_setup_logging.py +227 -0
  291. basic_memory-0.21.1/tests/utils/test_workspace_context.py +50 -0
  292. basic_memory-0.21.1/ui/tool-ui-react/package-lock.json +2507 -0
  293. basic_memory-0.21.1/ui/tool-ui-react/src/components/tool-ui/data-table/utilities.ts +186 -0
  294. basic_memory-0.21.1/uv.lock +3715 -0
  295. basic_memory-0.20.3/.claude/settings.json +0 -3
  296. basic_memory-0.20.3/.github/workflows/claude-code-review.yml +0 -83
  297. basic_memory-0.20.3/.github/workflows/claude-issue-triage.yml +0 -71
  298. basic_memory-0.20.3/.github/workflows/claude.yml +0 -68
  299. basic_memory-0.20.3/.github/workflows/dev-release.yml +0 -53
  300. basic_memory-0.20.3/.github/workflows/docker.yml +0 -61
  301. basic_memory-0.20.3/.github/workflows/pr-title.yml +0 -41
  302. basic_memory-0.20.3/.github/workflows/release.yml +0 -85
  303. basic_memory-0.20.3/.github/workflows/test.yml +0 -267
  304. basic_memory-0.20.3/AGENTS.md +0 -446
  305. basic_memory-0.20.3/CHANGELOG.md +0 -2680
  306. basic_memory-0.20.3/PKG-INFO +0 -733
  307. basic_memory-0.20.3/README.md +0 -680
  308. basic_memory-0.20.3/SECURITY.md +0 -13
  309. basic_memory-0.20.3/docker-compose.yml +0 -83
  310. basic_memory-0.20.3/docs/NOTE-FORMAT.md +0 -494
  311. basic_memory-0.20.3/docs/ai-assistant-guide-extended.md +0 -3360
  312. basic_memory-0.20.3/docs/cloud-cli.md +0 -855
  313. basic_memory-0.20.3/justfile +0 -412
  314. basic_memory-0.20.3/pyproject.toml +0 -159
  315. basic_memory-0.20.3/server.json +0 -25
  316. basic_memory-0.20.3/src/basic_memory/__init__.py +0 -7
  317. basic_memory-0.20.3/src/basic_memory/alembic/env.py +0 -189
  318. basic_memory-0.20.3/src/basic_memory/api/app.py +0 -149
  319. basic_memory-0.20.3/src/basic_memory/api/v2/routers/importer_router.py +0 -181
  320. basic_memory-0.20.3/src/basic_memory/api/v2/routers/knowledge_router.py +0 -684
  321. basic_memory-0.20.3/src/basic_memory/api/v2/routers/memory_router.py +0 -130
  322. basic_memory-0.20.3/src/basic_memory/api/v2/routers/project_router.py +0 -550
  323. basic_memory-0.20.3/src/basic_memory/api/v2/routers/prompt_router.py +0 -269
  324. basic_memory-0.20.3/src/basic_memory/api/v2/routers/resource_router.py +0 -289
  325. basic_memory-0.20.3/src/basic_memory/api/v2/routers/search_router.py +0 -105
  326. basic_memory-0.20.3/src/basic_memory/api/v2/utils.py +0 -192
  327. basic_memory-0.20.3/src/basic_memory/cli/app.py +0 -112
  328. basic_memory-0.20.3/src/basic_memory/cli/auto_update.py +0 -389
  329. basic_memory-0.20.3/src/basic_memory/cli/commands/__init__.py +0 -28
  330. basic_memory-0.20.3/src/basic_memory/cli/commands/cloud/api_client.py +0 -139
  331. basic_memory-0.20.3/src/basic_memory/cli/commands/cloud/bisync_commands.py +0 -110
  332. basic_memory-0.20.3/src/basic_memory/cli/commands/cloud/cloud_utils.py +0 -108
  333. basic_memory-0.20.3/src/basic_memory/cli/commands/cloud/core_commands.py +0 -281
  334. basic_memory-0.20.3/src/basic_memory/cli/commands/cloud/project_sync.py +0 -372
  335. basic_memory-0.20.3/src/basic_memory/cli/commands/cloud/rclone_commands.py +0 -417
  336. basic_memory-0.20.3/src/basic_memory/cli/commands/cloud/rclone_installer.py +0 -263
  337. basic_memory-0.20.3/src/basic_memory/cli/commands/cloud/upload_command.py +0 -130
  338. basic_memory-0.20.3/src/basic_memory/cli/commands/cloud/workspace.py +0 -113
  339. basic_memory-0.20.3/src/basic_memory/cli/commands/db.py +0 -230
  340. basic_memory-0.20.3/src/basic_memory/cli/commands/doctor.py +0 -156
  341. basic_memory-0.20.3/src/basic_memory/cli/commands/project.py +0 -917
  342. basic_memory-0.20.3/src/basic_memory/cli/commands/tool.py +0 -758
  343. basic_memory-0.20.3/src/basic_memory/cli/main.py +0 -38
  344. basic_memory-0.20.3/src/basic_memory/config.py +0 -1026
  345. basic_memory-0.20.3/src/basic_memory/db.py +0 -542
  346. basic_memory-0.20.3/src/basic_memory/deps/services.py +0 -611
  347. basic_memory-0.20.3/src/basic_memory/file_utils.py +0 -483
  348. basic_memory-0.20.3/src/basic_memory/ignore_utils.py +0 -297
  349. basic_memory-0.20.3/src/basic_memory/importers/utils.py +0 -61
  350. basic_memory-0.20.3/src/basic_memory/markdown/entity_parser.py +0 -310
  351. basic_memory-0.20.3/src/basic_memory/markdown/plugins.py +0 -244
  352. basic_memory-0.20.3/src/basic_memory/markdown/schemas.py +0 -70
  353. basic_memory-0.20.3/src/basic_memory/mcp/async_client.py +0 -217
  354. basic_memory-0.20.3/src/basic_memory/mcp/clients/knowledge.py +0 -246
  355. basic_memory-0.20.3/src/basic_memory/mcp/clients/memory.py +0 -120
  356. basic_memory-0.20.3/src/basic_memory/mcp/clients/resource.py +0 -71
  357. basic_memory-0.20.3/src/basic_memory/mcp/clients/search.py +0 -65
  358. basic_memory-0.20.3/src/basic_memory/mcp/project_context.py +0 -654
  359. basic_memory-0.20.3/src/basic_memory/mcp/prompts/utils.py +0 -161
  360. basic_memory-0.20.3/src/basic_memory/mcp/resources/ai_assistant_guide.md +0 -314
  361. basic_memory-0.20.3/src/basic_memory/mcp/server.py +0 -181
  362. basic_memory-0.20.3/src/basic_memory/mcp/tools/build_context.py +0 -263
  363. basic_memory-0.20.3/src/basic_memory/mcp/tools/canvas.py +0 -153
  364. basic_memory-0.20.3/src/basic_memory/mcp/tools/chatgpt_tools.py +0 -207
  365. basic_memory-0.20.3/src/basic_memory/mcp/tools/delete_note.py +0 -406
  366. basic_memory-0.20.3/src/basic_memory/mcp/tools/edit_note.py +0 -513
  367. basic_memory-0.20.3/src/basic_memory/mcp/tools/list_directory.py +0 -154
  368. basic_memory-0.20.3/src/basic_memory/mcp/tools/move_note.py +0 -859
  369. basic_memory-0.20.3/src/basic_memory/mcp/tools/project_management.py +0 -466
  370. basic_memory-0.20.3/src/basic_memory/mcp/tools/read_content.py +0 -313
  371. basic_memory-0.20.3/src/basic_memory/mcp/tools/read_note.py +0 -459
  372. basic_memory-0.20.3/src/basic_memory/mcp/tools/recent_activity.py +0 -580
  373. basic_memory-0.20.3/src/basic_memory/mcp/tools/schema.py +0 -513
  374. basic_memory-0.20.3/src/basic_memory/mcp/tools/search.py +0 -680
  375. basic_memory-0.20.3/src/basic_memory/mcp/tools/ui_sdk.py +0 -134
  376. basic_memory-0.20.3/src/basic_memory/mcp/tools/utils.py +0 -575
  377. basic_memory-0.20.3/src/basic_memory/mcp/tools/view_note.py +0 -87
  378. basic_memory-0.20.3/src/basic_memory/mcp/tools/workspaces.py +0 -63
  379. basic_memory-0.20.3/src/basic_memory/mcp/tools/write_note.py +0 -345
  380. basic_memory-0.20.3/src/basic_memory/models/__init__.py +0 -15
  381. basic_memory-0.20.3/src/basic_memory/models/base.py +0 -10
  382. basic_memory-0.20.3/src/basic_memory/models/knowledge.py +0 -235
  383. basic_memory-0.20.3/src/basic_memory/models/search.py +0 -149
  384. basic_memory-0.20.3/src/basic_memory/repository/__init__.py +0 -11
  385. basic_memory-0.20.3/src/basic_memory/repository/embedding_provider.py +0 -18
  386. basic_memory-0.20.3/src/basic_memory/repository/embedding_provider_factory.py +0 -85
  387. basic_memory-0.20.3/src/basic_memory/repository/entity_repository.py +0 -528
  388. basic_memory-0.20.3/src/basic_memory/repository/fastembed_provider.py +0 -129
  389. basic_memory-0.20.3/src/basic_memory/repository/metadata_filters.py +0 -139
  390. basic_memory-0.20.3/src/basic_memory/repository/openai_provider.py +0 -99
  391. basic_memory-0.20.3/src/basic_memory/repository/postgres_search_repository.py +0 -879
  392. basic_memory-0.20.3/src/basic_memory/repository/project_repository.py +0 -140
  393. basic_memory-0.20.3/src/basic_memory/repository/repository.py +0 -386
  394. basic_memory-0.20.3/src/basic_memory/repository/search_repository.py +0 -122
  395. basic_memory-0.20.3/src/basic_memory/repository/search_repository_base.py +0 -1680
  396. basic_memory-0.20.3/src/basic_memory/repository/sqlite_search_repository.py +0 -880
  397. basic_memory-0.20.3/src/basic_memory/schema/parser.py +0 -280
  398. basic_memory-0.20.3/src/basic_memory/schemas/base.py +0 -301
  399. basic_memory-0.20.3/src/basic_memory/schemas/cloud.py +0 -75
  400. basic_memory-0.20.3/src/basic_memory/schemas/memory.py +0 -292
  401. basic_memory-0.20.3/src/basic_memory/schemas/response.py +0 -362
  402. basic_memory-0.20.3/src/basic_memory/schemas/search.py +0 -145
  403. basic_memory-0.20.3/src/basic_memory/schemas/sync_report.py +0 -72
  404. basic_memory-0.20.3/src/basic_memory/schemas/v2/__init__.py +0 -39
  405. basic_memory-0.20.3/src/basic_memory/schemas/v2/graph.py +0 -31
  406. basic_memory-0.20.3/src/basic_memory/services/context_service.py +0 -636
  407. basic_memory-0.20.3/src/basic_memory/services/entity_service.py +0 -1359
  408. basic_memory-0.20.3/src/basic_memory/services/file_service.py +0 -549
  409. basic_memory-0.20.3/src/basic_memory/services/initialization.py +0 -244
  410. basic_memory-0.20.3/src/basic_memory/services/link_resolver.py +0 -462
  411. basic_memory-0.20.3/src/basic_memory/services/project_service.py +0 -1155
  412. basic_memory-0.20.3/src/basic_memory/services/search_service.py +0 -701
  413. basic_memory-0.20.3/src/basic_memory/sync/sync_service.py +0 -1390
  414. basic_memory-0.20.3/src/basic_memory/sync/watch_service.py +0 -530
  415. basic_memory-0.20.3/src/basic_memory/telemetry.py +0 -209
  416. basic_memory-0.20.3/src/basic_memory/utils.py +0 -593
  417. basic_memory-0.20.3/test-int/conftest.py +0 -361
  418. basic_memory-0.20.3/test-int/mcp/test_output_format_json_integration.py +0 -398
  419. basic_memory-0.20.3/test-int/mcp/test_pagination_integration.py +0 -305
  420. basic_memory-0.20.3/test-int/mcp/test_project_management_integration.py +0 -590
  421. basic_memory-0.20.3/test-int/mcp/test_read_note_integration.py +0 -102
  422. basic_memory-0.20.3/test-int/mcp/test_string_params_integration.py +0 -165
  423. basic_memory-0.20.3/test-int/semantic/conftest.py +0 -267
  424. basic_memory-0.20.3/test-int/semantic/test_search_diagnostics.py +0 -465
  425. basic_memory-0.20.3/test-int/semantic/test_semantic_coverage.py +0 -282
  426. basic_memory-0.20.3/test-int/semantic/test_semantic_quality.py +0 -157
  427. basic_memory-0.20.3/test-int/test_db_wal_mode.py +0 -166
  428. basic_memory-0.20.3/tests/api/v2/conftest.py +0 -59
  429. basic_memory-0.20.3/tests/api/v2/test_importer_router.py +0 -532
  430. basic_memory-0.20.3/tests/api/v2/test_knowledge_router.py +0 -854
  431. basic_memory-0.20.3/tests/api/v2/test_project_router.py +0 -425
  432. basic_memory-0.20.3/tests/api/v2/test_search_router.py +0 -516
  433. basic_memory-0.20.3/tests/api/v2/test_search_router_telemetry.py +0 -62
  434. basic_memory-0.20.3/tests/cli/cloud/test_cloud_api_client_and_utils.py +0 -233
  435. basic_memory-0.20.3/tests/cli/cloud/test_rclone_config_and_bmignore_filters.py +0 -78
  436. basic_memory-0.20.3/tests/cli/cloud/test_upload_command_routing.py +0 -55
  437. basic_memory-0.20.3/tests/cli/conftest.py +0 -60
  438. basic_memory-0.20.3/tests/cli/test_auto_update.py +0 -399
  439. basic_memory-0.20.3/tests/cli/test_cli_exit.py +0 -79
  440. basic_memory-0.20.3/tests/cli/test_cli_telemetry.py +0 -49
  441. basic_memory-0.20.3/tests/cli/test_cli_tool_json_output.py +0 -738
  442. basic_memory-0.20.3/tests/cli/test_cloud_authentication.py +0 -196
  443. basic_memory-0.20.3/tests/cli/test_cloud_promo.py +0 -311
  444. basic_memory-0.20.3/tests/cli/test_db_reset_exit.py +0 -56
  445. basic_memory-0.20.3/tests/cli/test_ignore_utils.py +0 -315
  446. basic_memory-0.20.3/tests/cli/test_json_output.py +0 -420
  447. basic_memory-0.20.3/tests/cli/test_project_add_with_local_path.py +0 -175
  448. basic_memory-0.20.3/tests/cli/test_project_list_and_ls.py +0 -283
  449. basic_memory-0.20.3/tests/cli/test_project_set_cloud_local.py +0 -289
  450. basic_memory-0.20.3/tests/cli/test_workspace_commands.py +0 -184
  451. basic_memory-0.20.3/tests/conftest.py +0 -663
  452. basic_memory-0.20.3/tests/db/test_issue_254_foreign_key_constraints.py +0 -170
  453. basic_memory-0.20.3/tests/importers/test_importer_utils.py +0 -60
  454. basic_memory-0.20.3/tests/markdown/test_date_frontmatter_parsing.py +0 -361
  455. basic_memory-0.20.3/tests/markdown/test_entity_parser.py +0 -272
  456. basic_memory-0.20.3/tests/markdown/test_entity_parser_error_handling.py +0 -421
  457. basic_memory-0.20.3/tests/markdown/test_markdown_plugins.py +0 -257
  458. basic_memory-0.20.3/tests/markdown/test_markdown_processor.py +0 -186
  459. basic_memory-0.20.3/tests/markdown/test_observation_edge_cases.py +0 -122
  460. basic_memory-0.20.3/tests/markdown/test_parser_edge_cases.py +0 -184
  461. basic_memory-0.20.3/tests/markdown/test_relation_edge_cases.py +0 -124
  462. basic_memory-0.20.3/tests/mcp/clients/test_clients.py +0 -311
  463. basic_memory-0.20.3/tests/mcp/conftest.py +0 -56
  464. basic_memory-0.20.3/tests/mcp/test_async_client_modes.py +0 -288
  465. basic_memory-0.20.3/tests/mcp/test_async_client_telemetry.py +0 -46
  466. basic_memory-0.20.3/tests/mcp/test_permalink_collision_file_overwrite.py +0 -388
  467. basic_memory-0.20.3/tests/mcp/test_project_context.py +0 -596
  468. basic_memory-0.20.3/tests/mcp/test_project_context_telemetry.py +0 -94
  469. basic_memory-0.20.3/tests/mcp/test_recent_activity_prompt_modes.py +0 -108
  470. basic_memory-0.20.3/tests/mcp/test_server_telemetry.py +0 -33
  471. basic_memory-0.20.3/tests/mcp/test_tool_build_context.py +0 -222
  472. basic_memory-0.20.3/tests/mcp/test_tool_contracts.py +0 -148
  473. basic_memory-0.20.3/tests/mcp/test_tool_delete_note.py +0 -177
  474. basic_memory-0.20.3/tests/mcp/test_tool_edit_note.py +0 -831
  475. basic_memory-0.20.3/tests/mcp/test_tool_json_output_modes.py +0 -363
  476. basic_memory-0.20.3/tests/mcp/test_tool_project_management.py +0 -510
  477. basic_memory-0.20.3/tests/mcp/test_tool_read_note.py +0 -591
  478. basic_memory-0.20.3/tests/mcp/test_tool_recent_activity.py +0 -535
  479. basic_memory-0.20.3/tests/mcp/test_tool_schema.py +0 -561
  480. basic_memory-0.20.3/tests/mcp/test_tool_search.py +0 -1631
  481. basic_memory-0.20.3/tests/mcp/test_tool_telemetry.py +0 -309
  482. basic_memory-0.20.3/tests/mcp/test_tool_utils.py +0 -207
  483. basic_memory-0.20.3/tests/mcp/test_tool_utils_cloud_auth.py +0 -56
  484. basic_memory-0.20.3/tests/mcp/test_tool_view_note.py +0 -243
  485. basic_memory-0.20.3/tests/mcp/test_tool_workspace_management.py +0 -194
  486. basic_memory-0.20.3/tests/mcp/test_tool_write_note.py +0 -1305
  487. basic_memory-0.20.3/tests/mcp/test_ui_sdk.py +0 -137
  488. basic_memory-0.20.3/tests/mcp/tools/test_chatgpt_tools.py +0 -234
  489. basic_memory-0.20.3/tests/repository/test_entity_repository.py +0 -1114
  490. basic_memory-0.20.3/tests/repository/test_entity_repository_upsert.py +0 -468
  491. basic_memory-0.20.3/tests/repository/test_fastembed_provider.py +0 -150
  492. basic_memory-0.20.3/tests/repository/test_hybrid_fusion.py +0 -269
  493. basic_memory-0.20.3/tests/repository/test_observation_repository.py +0 -468
  494. basic_memory-0.20.3/tests/repository/test_openai_provider.py +0 -302
  495. basic_memory-0.20.3/tests/repository/test_postgres_search_repository.py +0 -599
  496. basic_memory-0.20.3/tests/repository/test_postgres_search_repository_unit.py +0 -242
  497. basic_memory-0.20.3/tests/repository/test_relation_repository.py +0 -506
  498. basic_memory-0.20.3/tests/repository/test_repository.py +0 -189
  499. basic_memory-0.20.3/tests/repository/test_search_repository.py +0 -974
  500. basic_memory-0.20.3/tests/repository/test_search_repository_edit_bug_fix.py +0 -271
  501. basic_memory-0.20.3/tests/repository/test_semantic_search_base.py +0 -375
  502. basic_memory-0.20.3/tests/repository/test_sqlite_vector_search_repository.py +0 -314
  503. basic_memory-0.20.3/tests/repository/test_vector_pagination.py +0 -146
  504. basic_memory-0.20.3/tests/repository/test_vector_threshold.py +0 -439
  505. basic_memory-0.20.3/tests/schema/test_parser.py +0 -333
  506. basic_memory-0.20.3/tests/schema/test_resolver.py +0 -162
  507. basic_memory-0.20.3/tests/schema/test_validator.py +0 -413
  508. basic_memory-0.20.3/tests/schemas/test_schemas.py +0 -693
  509. basic_memory-0.20.3/tests/schemas/test_search.py +0 -129
  510. basic_memory-0.20.3/tests/services/test_entity_service.py +0 -2428
  511. basic_memory-0.20.3/tests/services/test_entity_service_disable_permalinks.py +0 -220
  512. basic_memory-0.20.3/tests/services/test_file_service.py +0 -256
  513. basic_memory-0.20.3/tests/services/test_initialization.py +0 -424
  514. basic_memory-0.20.3/tests/services/test_link_resolver.py +0 -921
  515. basic_memory-0.20.3/tests/services/test_project_removal_bug.py +0 -138
  516. basic_memory-0.20.3/tests/services/test_project_service.py +0 -1547
  517. basic_memory-0.20.3/tests/services/test_project_service_embedding_status.py +0 -323
  518. basic_memory-0.20.3/tests/services/test_search_service.py +0 -1288
  519. basic_memory-0.20.3/tests/services/test_search_service_telemetry.py +0 -73
  520. basic_memory-0.20.3/tests/services/test_semantic_search.py +0 -91
  521. basic_memory-0.20.3/tests/services/test_task_scheduler_semantic.py +0 -130
  522. basic_memory-0.20.3/tests/sync/test_sync_service.py +0 -1812
  523. basic_memory-0.20.3/tests/sync/test_sync_service_incremental.py +0 -790
  524. basic_memory-0.20.3/tests/sync/test_sync_service_telemetry.py +0 -170
  525. basic_memory-0.20.3/tests/sync/test_watch_service.py +0 -533
  526. basic_memory-0.20.3/tests/sync/test_watch_service_edge_cases.py +0 -271
  527. basic_memory-0.20.3/tests/sync/test_watch_service_reload.py +0 -339
  528. basic_memory-0.20.3/tests/test_config.py +0 -1425
  529. basic_memory-0.20.3/tests/test_production_cascade_delete.py +0 -353
  530. basic_memory-0.20.3/tests/test_rclone_commands.py +0 -555
  531. basic_memory-0.20.3/tests/test_telemetry.py +0 -296
  532. basic_memory-0.20.3/tests/utils/test_file_utils.py +0 -563
  533. basic_memory-0.20.3/tests/utils/test_parse_tags.py +0 -68
  534. basic_memory-0.20.3/tests/utils/test_permalink_formatting.py +0 -126
  535. basic_memory-0.20.3/tests/utils/test_setup_logging.py +0 -213
  536. basic_memory-0.20.3/ui/tool-ui-react/package-lock.json +0 -2453
  537. basic_memory-0.20.3/ui/tool-ui-react/src/components/tool-ui/data-table/utilities.ts +0 -186
  538. basic_memory-0.20.3/uv.lock +0 -3568
  539. {basic_memory-0.20.3 → basic_memory-0.21.1}/.claude/commands/release/beta.md +0 -0
  540. {basic_memory-0.20.3 → basic_memory-0.21.1}/.claude/commands/release/changelog.md +0 -0
  541. {basic_memory-0.20.3 → basic_memory-0.21.1}/.claude/commands/release/release-check.md +0 -0
  542. {basic_memory-0.20.3 → basic_memory-0.21.1}/.claude/commands/release/release.md +0 -0
  543. {basic_memory-0.20.3 → basic_memory-0.21.1}/.claude/commands/spec.md +0 -0
  544. {basic_memory-0.20.3 → basic_memory-0.21.1}/.claude/commands/test-live.md +0 -0
  545. {basic_memory-0.20.3 → basic_memory-0.21.1}/.dockerignore +0 -0
  546. {basic_memory-0.20.3 → basic_memory-0.21.1}/.env.example +0 -0
  547. {basic_memory-0.20.3 → basic_memory-0.21.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  548. {basic_memory-0.20.3 → basic_memory-0.21.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  549. {basic_memory-0.20.3 → basic_memory-0.21.1}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  550. {basic_memory-0.20.3 → basic_memory-0.21.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  551. {basic_memory-0.20.3 → basic_memory-0.21.1}/.github/dependabot.yml +0 -0
  552. {basic_memory-0.20.3 → basic_memory-0.21.1}/.gitignore +0 -0
  553. {basic_memory-0.20.3 → basic_memory-0.21.1}/.python-version +0 -0
  554. {basic_memory-0.20.3 → basic_memory-0.21.1}/CITATION.cff +0 -0
  555. {basic_memory-0.20.3 → basic_memory-0.21.1}/CLA.md +0 -0
  556. {basic_memory-0.20.3 → basic_memory-0.21.1}/CLAUDE.md +0 -0
  557. {basic_memory-0.20.3 → basic_memory-0.21.1}/CODE_OF_CONDUCT.md +0 -0
  558. {basic_memory-0.20.3 → basic_memory-0.21.1}/CONTRIBUTING.md +0 -0
  559. {basic_memory-0.20.3 → basic_memory-0.21.1}/Dockerfile +0 -0
  560. {basic_memory-0.20.3 → basic_memory-0.21.1}/LICENSE +0 -0
  561. {basic_memory-0.20.3 → basic_memory-0.21.1}/NOTE-FORMAT.md +0 -0
  562. {basic_memory-0.20.3 → basic_memory-0.21.1}/docker-compose-postgres.yml +0 -0
  563. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/ARCHITECTURE.md +0 -0
  564. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/Docker.md +0 -0
  565. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/SPEC-PER-PROJECT-ROUTING.md +0 -0
  566. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/character-handling.md +0 -0
  567. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/cloud-semantic-search-value.md +0 -0
  568. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/logfire-instrumentation-strategy.md +0 -0
  569. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/mcp-ui-bakeoff-instructions.md +0 -0
  570. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/metadata-search.md +0 -0
  571. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/post-v0.18.0-test-plan.md +0 -0
  572. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/releases/v0.19.0.md +0 -0
  573. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/semantic-search-test-log.md +0 -0
  574. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/semantic-search.md +0 -0
  575. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/specs/SPEC-LOCAL-PLUS-PUBLISH.md +0 -0
  576. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/specs/SPEC-SCHEMA-IMPL.md +0 -0
  577. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/specs/SPEC-SCHEMA.md +0 -0
  578. {basic_memory-0.20.3 → basic_memory-0.21.1}/docs/testing-coverage.md +0 -0
  579. {basic_memory-0.20.3 → basic_memory-0.21.1}/llms-install.md +0 -0
  580. {basic_memory-0.20.3 → basic_memory-0.21.1}/smithery.yaml +0 -0
  581. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/alembic.ini +0 -0
  582. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/migrations.py +0 -0
  583. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/script.py.mako +0 -0
  584. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/314f1ea54dc4_add_postgres_full_text_search_support_.py +0 -0
  585. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
  586. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
  587. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +0 -0
  588. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +0 -0
  589. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/6830751f5fb6_merge_multiple_heads.py +0 -0
  590. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/9d9c1cb7d8f5_add_mtime_and_size_columns_to_entity_.py +0 -0
  591. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/a1b2c3d4e5f6_fix_project_foreign_keys.py +0 -0
  592. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/a2b3c4d5e6f7_add_search_index_entity_cascade.py +0 -0
  593. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
  594. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
  595. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/d7e8f9a0b1c2_add_structured_metadata_indexes.py +0 -0
  596. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/e7e1f4367280_add_scan_watermark_tracking_to_project.py +0 -0
  597. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py +0 -0
  598. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py +0 -0
  599. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/h1b2c3d4e5f6_add_postgres_vector_search_tables.py +0 -0
  600. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/i2c3d4e5f6g7_auto_backfill_semantic_embeddings.py +0 -0
  601. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/j3d4e5f6g7h8_rename_entity_type_to_note_type.py +0 -0
  602. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/alembic/versions/k4e5f6g7h8i9_add_created_by_and_last_updated_by_to_entity.py +0 -0
  603. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/api/__init__.py +0 -0
  604. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/api/container.py +0 -0
  605. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/api/template_loader.py +0 -0
  606. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/api/v2/__init__.py +0 -0
  607. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/api/v2/routers/__init__.py +0 -0
  608. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/api/v2/routers/directory_router.py +0 -0
  609. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/api/v2/routers/schema_router.py +0 -0
  610. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/__init__.py +0 -0
  611. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/analytics.py +0 -0
  612. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/auth.py +0 -0
  613. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/cloud/__init__.py +0 -0
  614. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/cloud/rclone_config.py +0 -0
  615. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/cloud/restore.py +0 -0
  616. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/cloud/schemas.py +0 -0
  617. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/cloud/snapshot.py +0 -0
  618. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/cloud/upload.py +0 -0
  619. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/command_utils.py +0 -0
  620. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/format.py +0 -0
  621. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/import_chatgpt.py +0 -0
  622. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/import_claude_conversations.py +0 -0
  623. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/import_claude_projects.py +0 -0
  624. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/import_memory_json.py +0 -0
  625. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/mcp.py +0 -0
  626. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/routing.py +0 -0
  627. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/schema.py +0 -0
  628. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/status.py +0 -0
  629. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/commands/update.py +0 -0
  630. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/container.py +0 -0
  631. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/cli/promo.py +0 -0
  632. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/deps/__init__.py +0 -0
  633. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/deps/config.py +0 -0
  634. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/deps/db.py +0 -0
  635. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/deps/importers.py +0 -0
  636. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/deps/projects.py +0 -0
  637. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/deps/repositories.py +0 -0
  638. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/deps.py +0 -0
  639. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/importers/__init__.py +0 -0
  640. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/importers/base.py +0 -0
  641. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/importers/chatgpt_importer.py +0 -0
  642. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/importers/claude_conversations_importer.py +0 -0
  643. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/importers/claude_projects_importer.py +0 -0
  644. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/importers/memory_json_importer.py +0 -0
  645. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/markdown/__init__.py +0 -0
  646. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/markdown/markdown_processor.py +0 -0
  647. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/markdown/utils.py +0 -0
  648. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/__init__.py +0 -0
  649. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/clients/__init__.py +0 -0
  650. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/clients/directory.py +0 -0
  651. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/clients/project.py +0 -0
  652. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/clients/schema.py +0 -0
  653. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/container.py +0 -0
  654. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/formatting.py +0 -0
  655. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/prompts/__init__.py +0 -0
  656. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +0 -0
  657. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/prompts/continue_conversation.py +0 -0
  658. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/prompts/recent_activity.py +0 -0
  659. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/prompts/search.py +0 -0
  660. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/resources/__init__.py +0 -0
  661. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/resources/cloud_info.md +0 -0
  662. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/resources/project_info.py +0 -0
  663. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/resources/release_notes.md +0 -0
  664. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/resources/ui.py +0 -0
  665. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/tools/__init__.py +0 -0
  666. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/tools/cloud_info.py +0 -0
  667. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/tools/release_notes.py +0 -0
  668. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/ui/__init__.py +0 -0
  669. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/ui/html/note-preview-mcp-ui.html +0 -0
  670. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/ui/html/note-preview-tool-ui.html +0 -0
  671. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/ui/html/note-preview-vanilla.html +0 -0
  672. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/ui/html/search-results-mcp-ui.html +0 -0
  673. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/ui/html/search-results-tool-ui.html +0 -0
  674. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/ui/html/search-results-vanilla.html +0 -0
  675. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/ui/sdk.py +0 -0
  676. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/mcp/ui/templates.py +0 -0
  677. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/models/project.py +0 -0
  678. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/project_resolver.py +0 -0
  679. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/repository/observation_repository.py +0 -0
  680. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/repository/project_info_repository.py +0 -0
  681. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/repository/relation_repository.py +0 -0
  682. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/repository/search_index_row.py +0 -0
  683. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/repository/semantic_errors.py +0 -0
  684. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/runtime.py +0 -0
  685. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/schema/__init__.py +0 -0
  686. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/schema/diff.py +0 -0
  687. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/schema/inference.py +0 -0
  688. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/schema/resolver.py +0 -0
  689. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/schema/validator.py +0 -0
  690. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/schemas/__init__.py +0 -0
  691. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/schemas/delete.py +0 -0
  692. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/schemas/directory.py +0 -0
  693. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/schemas/importer.py +0 -0
  694. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/schemas/project_info.py +0 -0
  695. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/schemas/prompt.py +0 -0
  696. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/schemas/request.py +0 -0
  697. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/schemas/schema.py +0 -0
  698. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/schemas/v2/entity.py +0 -0
  699. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/schemas/v2/resource.py +0 -0
  700. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/services/__init__.py +0 -0
  701. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/services/directory_service.py +0 -0
  702. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/services/exceptions.py +0 -0
  703. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/services/service.py +0 -0
  704. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/sync/__init__.py +0 -0
  705. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/sync/background_sync.py +0 -0
  706. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/sync/coordinator.py +0 -0
  707. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
  708. {basic_memory-0.20.3 → basic_memory-0.21.1}/src/basic_memory/templates/prompts/search.hbs +0 -0
  709. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/BENCHMARKS.md +0 -0
  710. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/cli/test_cli_tool_edit_note_integration.py +0 -0
  711. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/cli/test_cli_tool_json_failure_integration.py +0 -0
  712. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/cli/test_cli_tool_json_integration.py +0 -0
  713. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/cli/test_project_commands_integration.py +0 -0
  714. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/cli/test_routing_integration.py +0 -0
  715. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/cli/test_search_notes_meta_integration.py +0 -0
  716. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/cli/test_version_integration.py +0 -0
  717. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/compare_search_benchmarks.py +0 -0
  718. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-01.md +0 -0
  719. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-02.md +0 -0
  720. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-03.md +0 -0
  721. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-04.md +0 -0
  722. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-05.md +0 -0
  723. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-06.md +0 -0
  724. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-07.md +0 -0
  725. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-08.md +0 -0
  726. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-09.md +0 -0
  727. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-10.md +0 -0
  728. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-11.md +0 -0
  729. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-12.md +0 -0
  730. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-13.md +0 -0
  731. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-14.md +0 -0
  732. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-15.md +0 -0
  733. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-16.md +0 -0
  734. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-17.md +0 -0
  735. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-18.md +0 -0
  736. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-19.md +0 -0
  737. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/people/drift-person-20.md +0 -0
  738. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/drift/schema/Person.md +0 -0
  739. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/edge-cases/array-single.md +0 -0
  740. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/edge-cases/empty-note.md +0 -0
  741. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/edge-cases/explicit-overrides-type.md +0 -0
  742. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/edge-cases/inline-and-type.md +0 -0
  743. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/edge-cases/no-frontmatter.md +0 -0
  744. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/edge-cases/relation-only.md +0 -0
  745. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/edge-cases/type-no-schema.md +0 -0
  746. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/edge-cases/unicode-fields.md +0 -0
  747. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/ada-lovelace.md +0 -0
  748. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/alan-turing.md +0 -0
  749. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/anders-hejlsberg.md +0 -0
  750. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/andrej-karpathy.md +0 -0
  751. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/barbara-liskov.md +0 -0
  752. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/bjarne-stroustrup.md +0 -0
  753. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/brendan-eich.md +0 -0
  754. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/claude-shannon.md +0 -0
  755. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/dennis-ritchie.md +0 -0
  756. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/dijkstra.md +0 -0
  757. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/donald-knuth.md +0 -0
  758. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/fei-fei-li.md +0 -0
  759. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/geoffrey-hinton.md +0 -0
  760. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/grace-hopper.md +0 -0
  761. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/guido-van-rossum.md +0 -0
  762. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/james-gosling.md +0 -0
  763. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/john-carmack.md +0 -0
  764. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/ken-thompson.md +0 -0
  765. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/larry-page.md +0 -0
  766. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/leslie-lamport.md +0 -0
  767. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/linus-torvalds.md +0 -0
  768. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/margaret-hamilton.md +0 -0
  769. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/rasmus-lerdorf.md +0 -0
  770. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/richard-stallman.md +0 -0
  771. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/rob-pike.md +0 -0
  772. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/satoshi-nakamoto.md +0 -0
  773. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/tim-berners-lee.md +0 -0
  774. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/vint-cerf.md +0 -0
  775. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/yann-lecun.md +0 -0
  776. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/inference/people/yukihiro-matsumoto.md +0 -0
  777. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/schemas/Book.md +0 -0
  778. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/schemas/Meeting.md +0 -0
  779. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/schemas/Person.md +0 -0
  780. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/schemas/SoftwareProject.md +0 -0
  781. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/schemas/StrictSchema.md +0 -0
  782. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/valid/basic-memory.md +0 -0
  783. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/valid/explicit-ref-note.md +0 -0
  784. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/valid/no-schema-note.md +0 -0
  785. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/valid/paul-graham.md +0 -0
  786. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/valid/rich-hickey.md +0 -0
  787. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/valid/standup-2024-01-15.md +0 -0
  788. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/warnings/extra-observations.md +0 -0
  789. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/warnings/missing-multiple.md +0 -0
  790. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/warnings/missing-required.md +0 -0
  791. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/fixtures/schema/warnings/wrong-enum-value.md +0 -0
  792. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_build_context_underscore.py +0 -0
  793. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_build_context_validation.py +0 -0
  794. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_chatgpt_tools_integration.py +0 -0
  795. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_default_project_mode_integration.py +0 -0
  796. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_delete_directory_integration.py +0 -0
  797. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_delete_note_integration.py +0 -0
  798. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_edit_note_integration.py +0 -0
  799. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_lifespan_shutdown_sync_task_cancellation_integration.py +0 -0
  800. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_list_directory_integration.py +0 -0
  801. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_move_directory_integration.py +0 -0
  802. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_move_note_integration.py +0 -0
  803. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_permalink_collision_integration.py +0 -0
  804. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_project_state_sync_integration.py +0 -0
  805. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_read_content_integration.py +0 -0
  806. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_search_integration.py +0 -0
  807. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_single_project_mcp_integration.py +0 -0
  808. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_smoke_integration.py +0 -0
  809. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_ui_sdk_integration.py +0 -0
  810. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/mcp/test_write_note_integration.py +0 -0
  811. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/semantic/__init__.py +0 -0
  812. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/semantic/corpus.py +0 -0
  813. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/semantic/metrics.py +0 -0
  814. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/semantic/report.py +0 -0
  815. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/semantic/test_multiterm_semantic_queries.py +0 -0
  816. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/test_disable_permalinks_integration.py +0 -0
  817. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/test_schema/__init__.py +0 -0
  818. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/test_schema/conftest.py +0 -0
  819. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/test_schema/helpers.py +0 -0
  820. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/test_schema/test_diff_integration.py +0 -0
  821. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/test_schema/test_inference_integration.py +0 -0
  822. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/test_schema/test_parser_integration.py +0 -0
  823. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/test_schema/test_validator_integration.py +0 -0
  824. {basic_memory-0.20.3 → basic_memory-0.21.1}/test-int/test_search_performance_benchmark.py +0 -0
  825. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/Non-MarkdownFileSupport.pdf +0 -0
  826. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/README.md +0 -0
  827. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/Screenshot.png +0 -0
  828. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/__init__.py +0 -0
  829. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/api/v2/__init__.py +0 -0
  830. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/api/v2/test_directory_router.py +0 -0
  831. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/api/v2/test_memory_router.py +0 -0
  832. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/api/v2/test_prompt_router.py +0 -0
  833. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/api/v2/test_resource_router.py +0 -0
  834. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/api/v2/test_schema_router.py +0 -0
  835. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/cloud/test_upload_path.py +0 -0
  836. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_analytics.py +0 -0
  837. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_auth_cli_auth.py +0 -0
  838. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_cli_container.py +0 -0
  839. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_cli_schema.py +0 -0
  840. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_cli_tool_exit.py +0 -0
  841. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_cli_tools.py +0 -0
  842. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_cloud_status.py +0 -0
  843. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_import_chatgpt.py +0 -0
  844. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_import_claude_conversations.py +0 -0
  845. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_import_claude_projects.py +0 -0
  846. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_import_memory_json.py +0 -0
  847. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_project_info_errors.py +0 -0
  848. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_restore_commands.py +0 -0
  849. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_routing.py +0 -0
  850. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_snapshot_commands.py +0 -0
  851. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_update_command.py +0 -0
  852. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/cli/test_upload.py +0 -0
  853. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/importers/test_conversation_indexing.py +0 -0
  854. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/importers/test_importer_base.py +0 -0
  855. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/markdown/__init__.py +0 -0
  856. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/markdown/test_markdown_utils.py +0 -0
  857. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/markdown/test_task_detection.py +0 -0
  858. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/clients/__init__.py +0 -0
  859. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_async_client_force_local.py +0 -0
  860. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_client_schema.py +0 -0
  861. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_mcp_container.py +0 -0
  862. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_obsidian_yaml_formatting.py +0 -0
  863. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_prompt_tool_delegation.py +0 -0
  864. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_prompts.py +0 -0
  865. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_resources.py +0 -0
  866. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_server_lifespan_branches.py +0 -0
  867. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_tool_canvas.py +0 -0
  868. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_tool_cloud_discovery.py +0 -0
  869. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_tool_list_directory.py +0 -0
  870. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_tool_move_note.py +0 -0
  871. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_tool_read_content.py +0 -0
  872. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_tool_resource.py +0 -0
  873. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_tool_write_note_kebab_filenames.py +0 -0
  874. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_tool_write_note_metadata.py +0 -0
  875. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_ui_resources.py +0 -0
  876. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/mcp/test_ui_templates.py +0 -0
  877. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/repository/test_distance_to_similarity.py +0 -0
  878. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/repository/test_entity_upsert_issue_187.py +0 -0
  879. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/repository/test_metadata_filters.py +0 -0
  880. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/repository/test_metadata_filters_edge_cases.py +0 -0
  881. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/repository/test_project_info_repository.py +0 -0
  882. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/repository/test_project_repository.py +0 -0
  883. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/repository/test_search_index_row.py +0 -0
  884. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/repository/test_search_text_with_metadata_filters.py +0 -0
  885. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/schema/__init__.py +0 -0
  886. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/schema/test_diff.py +0 -0
  887. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/schema/test_inference.py +0 -0
  888. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/schemas/test_base_timeframe_minimum.py +0 -0
  889. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/schemas/test_memory_serialization.py +0 -0
  890. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/schemas/test_memory_url.py +0 -0
  891. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/schemas/test_memory_url_validation.py +0 -0
  892. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/schemas/test_relation_response_reference_resolution.py +0 -0
  893. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/services/test_context_service.py +0 -0
  894. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/services/test_directory_service.py +0 -0
  895. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/services/test_initialization_cloud_mode_branches.py +0 -0
  896. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/services/test_project_service_cloud_info.py +0 -0
  897. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/services/test_project_service_operations.py +0 -0
  898. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/sync/test_character_conflicts.py +0 -0
  899. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/sync/test_coordinator.py +0 -0
  900. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/sync/test_sync_wikilink_issue.py +0 -0
  901. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/sync/test_tmp_files.py +0 -0
  902. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/sync/test_watch_service_atomic_adds.py +0 -0
  903. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/sync/test_watch_service_stress.py +0 -0
  904. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/test_coerce.py +0 -0
  905. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/test_deps.py +0 -0
  906. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/test_project_resolver.py +0 -0
  907. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/test_runtime.py +0 -0
  908. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/utils/test_frontmatter_obsidian_compatible.py +0 -0
  909. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/utils/test_timezone_utils.py +0 -0
  910. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/utils/test_utf8_handling.py +0 -0
  911. {basic_memory-0.20.3 → basic_memory-0.21.1}/tests/utils/test_validate_project_path.py +0 -0
  912. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/.gitignore +0 -0
  913. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/build.mjs +0 -0
  914. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/package.json +0 -0
  915. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/data-table/_adapter.tsx +0 -0
  916. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/data-table/data-table.tsx +0 -0
  917. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/data-table/error-boundary.tsx +0 -0
  918. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/data-table/formatters.tsx +0 -0
  919. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/data-table/index.tsx +0 -0
  920. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/data-table/schema.ts +0 -0
  921. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/data-table/types.ts +0 -0
  922. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/shared/_adapter.tsx +0 -0
  923. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/shared/action-buttons.tsx +0 -0
  924. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/shared/actions-config.ts +0 -0
  925. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/shared/error-boundary.tsx +0 -0
  926. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/shared/index.ts +0 -0
  927. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/shared/media/aspect-ratio.ts +0 -0
  928. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/shared/media/format-utils.ts +0 -0
  929. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/shared/media/index.ts +0 -0
  930. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/shared/media/overlay-gradient.ts +0 -0
  931. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/shared/media/sanitize-href.ts +0 -0
  932. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/shared/parse.ts +0 -0
  933. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/shared/schema.ts +0 -0
  934. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/shared/use-action-buttons.tsx +0 -0
  935. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/shared/use-copy-to-clipboard.ts +0 -0
  936. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/tool-ui/shared/utils.ts +0 -0
  937. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/ui/accordion.tsx +0 -0
  938. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/ui/badge.tsx +0 -0
  939. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/ui/button.tsx +0 -0
  940. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/ui/dropdown-menu.tsx +0 -0
  941. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/ui/table.tsx +0 -0
  942. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/components/ui/tooltip.tsx +0 -0
  943. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/note-preview.tsx +0 -0
  944. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/search-results.tsx +0 -0
  945. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/src/styles.css +0 -0
  946. {basic_memory-0.20.3 → basic_memory-0.21.1}/ui/tool-ui-react/tailwind.config.js +0 -0
@@ -0,0 +1,244 @@
1
+ ---
2
+ name: instrumentation
3
+ description: Add Pydantic Logfire observability to applications. Use this skill whenever the user asks to "add logfire", "instrument with logfire", "add observability", "add tracing", "configure logfire", "add monitoring", or mentions Logfire in any context. Supports Python, JavaScript/TypeScript, and Rust. Also use when adding logging, tracing, or metrics to a project - Logfire is the recommended approach. Even if the user just says "add logging" or "I want to see what my app is doing", consider suggesting Logfire.
4
+ ---
5
+
6
+ # Instrument with Logfire
7
+
8
+ ## When to Use This Skill
9
+
10
+ Invoke this skill when:
11
+ - User asks to "add logfire", "add observability", "add tracing", or "add monitoring"
12
+ - User wants to instrument an app with structured logging or tracing (Python, JS/TS, or Rust)
13
+ - User mentions Logfire in any context
14
+ - User asks to "add logging" or "see what my app is doing"
15
+ - User wants to monitor AI/LLM calls (PydanticAI, OpenAI, Anthropic)
16
+ - User asks to add observability to an AI agent or LLM pipeline
17
+
18
+ ## How Logfire Works
19
+
20
+ Logfire is an observability platform built on OpenTelemetry. It captures traces, logs, and metrics from applications. Logfire has native SDKs for Python, JavaScript/TypeScript, and Rust, plus support for any language via OpenTelemetry.
21
+
22
+ The reason this skill exists is that Claude tends to get a few things subtly wrong with Logfire - especially the ordering of `configure()` vs `instrument_*()` calls, the structured logging syntax, and which extras to install. These matter because a misconfigured setup silently drops traces.
23
+
24
+ ## Step 1: Detect Language and Frameworks
25
+
26
+ Identify the project language and instrumentable libraries:
27
+
28
+ - **Python**: Read `pyproject.toml` or `requirements.txt`. Common instrumentable libraries: FastAPI, httpx, asyncpg, SQLAlchemy, psycopg, Redis, Celery, Django, Flask, requests, PydanticAI.
29
+ - **JavaScript/TypeScript**: Read `package.json`. Common frameworks: Express, Next.js, Fastify. Also check for Cloudflare Workers or Deno.
30
+ - **Rust**: Read `Cargo.toml`.
31
+
32
+ Then follow the language-specific steps below.
33
+
34
+ ---
35
+
36
+ ## Python
37
+
38
+ ### Install with Extras
39
+
40
+ Install `logfire` with extras matching the detected frameworks. Each instrumented library needs its corresponding extra - without it, the `instrument_*()` call will fail at runtime with a missing dependency error.
41
+
42
+ ```bash
43
+ uv add 'logfire[fastapi,httpx,asyncpg]'
44
+ ```
45
+
46
+ The full list of available extras: `fastapi`, `starlette`, `django`, `flask`, `httpx`, `requests`, `asyncpg`, `psycopg`, `psycopg2`, `sqlalchemy`, `redis`, `pymongo`, `mysql`, `sqlite3`, `celery`, `aiohttp`, `aws-lambda`, `system-metrics`, `litellm`, `dspy`, `google-genai`.
47
+
48
+ ### Configure and Instrument
49
+
50
+ This is where ordering matters. `logfire.configure()` initializes the SDK and must come before everything else. The `instrument_*()` calls register hooks into each library. If you call `instrument_*()` before `configure()`, the hooks register but traces go nowhere.
51
+
52
+ ```python
53
+ import logfire
54
+
55
+ # 1. Configure first - always
56
+ logfire.configure()
57
+
58
+ # 2. Instrument libraries - after configure, before app starts
59
+ logfire.instrument_fastapi(app)
60
+ logfire.instrument_httpx()
61
+ logfire.instrument_asyncpg()
62
+ ```
63
+
64
+ Placement rules:
65
+ - `logfire.configure()` goes in the application entry point (`main.py`, or the module that creates the app)
66
+ - Call it **once per process** - not inside request handlers, not in library code
67
+ - `instrument_*()` calls go right after `configure()`
68
+ - Web framework instrumentors (`instrument_fastapi`, `instrument_flask`, `instrument_django`) need the app instance as an argument. HTTP client and database instrumentors (`instrument_httpx`, `instrument_asyncpg`) are global and take no arguments.
69
+ - In **Gunicorn** deployments, call `logfire.configure()` inside the `post_fork` hook, not at module level - each worker is a separate process
70
+
71
+ ### Structured Logging
72
+
73
+ Replace `print()` and `logging.*()` calls with Logfire's structured logging. The key pattern: use `{key}` placeholders with keyword arguments, never f-strings.
74
+
75
+ ```python
76
+ # Correct - each {key} becomes a searchable attribute in the Logfire UI
77
+ logfire.info("Created user {user_id}", user_id=uid)
78
+ logfire.error("Payment failed {amount} {currency}", amount=100, currency="USD")
79
+
80
+ # Wrong - creates a flat string, nothing is searchable
81
+ logfire.info(f"Created user {uid}")
82
+ ```
83
+
84
+ For grouping related operations and measuring duration, use spans:
85
+
86
+ ```python
87
+ with logfire.span("Processing order {order_id}", order_id=order_id):
88
+ items = await fetch_items(order_id)
89
+ total = calculate_total(items)
90
+ logfire.info("Calculated total {total}", total=total)
91
+ ```
92
+
93
+ For exceptions, use `logfire.exception()` which automatically captures the traceback:
94
+
95
+ ```python
96
+ try:
97
+ await process_order(order_id)
98
+ except Exception:
99
+ logfire.exception("Failed to process order {order_id}", order_id=order_id)
100
+ raise
101
+ ```
102
+
103
+ ### AI/LLM Instrumentation (Python)
104
+
105
+ Logfire auto-instruments AI libraries to capture LLM calls, token usage, tool invocations, and agent runs.
106
+
107
+ ```bash
108
+ uv add 'logfire[pydantic-ai]'
109
+ # or: uv add 'logfire[openai]' / uv add 'logfire[anthropic]'
110
+ ```
111
+
112
+ Available AI extras: `pydantic-ai`, `openai`, `anthropic`, `litellm`, `dspy`, `google-genai`.
113
+
114
+ ```python
115
+ logfire.configure()
116
+ logfire.instrument_pydantic_ai() # captures agent runs, tool calls, LLM request/response
117
+ # or:
118
+ logfire.instrument_openai() # captures chat completions, embeddings, token counts
119
+ logfire.instrument_anthropic() # captures messages, token usage
120
+ ```
121
+
122
+ For PydanticAI, each agent run becomes a parent span containing child spans for every tool call and LLM request.
123
+
124
+ ---
125
+
126
+ ## JavaScript / TypeScript
127
+
128
+ ### Install
129
+
130
+ ```bash
131
+ # Node.js
132
+ npm install @pydantic/logfire-node
133
+
134
+ # Cloudflare Workers
135
+ npm install @pydantic/logfire-cf-workers logfire
136
+
137
+ # Next.js / generic
138
+ npm install logfire
139
+ ```
140
+
141
+ ### Configure
142
+
143
+ **Node.js (Express, Fastify, etc.)** - create an `instrumentation.ts` loaded before your app:
144
+
145
+ ```typescript
146
+ import * as logfire from '@pydantic/logfire-node'
147
+ logfire.configure()
148
+ ```
149
+
150
+ Launch with: `node --require ./instrumentation.js app.js`
151
+
152
+ The SDK auto-instruments common libraries when loaded before the app. Set `LOGFIRE_TOKEN` in your environment or pass `token` to `configure()`.
153
+
154
+ **Cloudflare Workers** - wrap your handler with `instrument()`:
155
+
156
+ ```typescript
157
+ import { instrument } from '@pydantic/logfire-cf-workers'
158
+
159
+ export default instrument(handler, {
160
+ service: { name: 'my-worker', version: '1.0.0' }
161
+ })
162
+ ```
163
+
164
+ **Next.js** - set environment variables for OpenTelemetry export:
165
+
166
+ ```
167
+ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://logfire-api.pydantic.dev/v1/traces
168
+ OTEL_EXPORTER_OTLP_HEADERS=Authorization=<your-write-token>
169
+ ```
170
+
171
+ ### Structured Logging (JS/TS)
172
+
173
+ ```typescript
174
+ // Structured attributes as second argument
175
+ logfire.info('Created user', { user_id: uid })
176
+ logfire.error('Payment failed', { amount: 100, currency: 'USD' })
177
+
178
+ // Spans
179
+ logfire.span('Processing order', { order_id }, {}, async () => {
180
+ logfire.info('Processing step completed')
181
+ })
182
+
183
+ // Error reporting
184
+ logfire.reportError('order processing', error)
185
+ ```
186
+
187
+ Log levels: `trace`, `debug`, `info`, `notice`, `warn`, `error`, `fatal`.
188
+
189
+ ---
190
+
191
+ ## Rust
192
+
193
+ ### Install
194
+
195
+ ```toml
196
+ [dependencies]
197
+ logfire = "0.6"
198
+ ```
199
+
200
+ ### Configure
201
+
202
+ ```rust
203
+ let shutdown_handler = logfire::configure()
204
+ .install_panic_handler()
205
+ .finish()?;
206
+ ```
207
+
208
+ Set `LOGFIRE_TOKEN` in your environment or use the Logfire CLI to select a project.
209
+
210
+ ### Structured Logging (Rust)
211
+
212
+ The Rust SDK is built on `tracing` and `opentelemetry` - existing `tracing` macros work automatically.
213
+
214
+ ```rust
215
+ // Spans
216
+ logfire::span!("processing order", order_id = order_id).in_scope(|| {
217
+ // traced code
218
+ });
219
+
220
+ // Events
221
+ logfire::info!("Created user {user_id}", user_id = uid);
222
+ ```
223
+
224
+ Always call `shutdown_handler.shutdown()` before program exit to flush data.
225
+
226
+ ---
227
+
228
+ ## Verify
229
+
230
+ After instrumentation, verify the setup works:
231
+
232
+ 1. Run `logfire auth` to check authentication (or set `LOGFIRE_TOKEN`)
233
+ 2. Start the app and trigger a request
234
+ 3. Check https://logfire.pydantic.dev/ for traces
235
+
236
+ If traces aren't appearing: check that `configure()` is called before `instrument_*()` (Python), check that `LOGFIRE_TOKEN` is set, and check that the correct packages/extras are installed.
237
+
238
+ ## References
239
+
240
+ Detailed patterns and integration tables, organized by language:
241
+
242
+ - **Python**: `${CLAUDE_PLUGIN_ROOT}/skills/instrumentation/references/python/logging-patterns.md` (log levels, spans, stdlib integration, metrics, capfire testing) and `${CLAUDE_PLUGIN_ROOT}/skills/instrumentation/references/python/integrations.md` (full instrumentor table with extras)
243
+ - **JavaScript/TypeScript**: `${CLAUDE_PLUGIN_ROOT}/skills/instrumentation/references/javascript/patterns.md` (log levels, spans, error handling, config) and `${CLAUDE_PLUGIN_ROOT}/skills/instrumentation/references/javascript/frameworks.md` (Node.js, Cloudflare Workers, Next.js, Deno setup)
244
+ - **Rust**: `${CLAUDE_PLUGIN_ROOT}/skills/instrumentation/references/rust/patterns.md` (macros, spans, tracing/log crate integration, async, shutdown)
@@ -0,0 +1,78 @@
1
+ # JavaScript Framework Setup
2
+
3
+ ## Node.js (Express, Fastify, etc.)
4
+
5
+ Create `instrumentation.ts` and load it before your app:
6
+
7
+ ```typescript
8
+ // instrumentation.ts
9
+ import * as logfire from '@pydantic/logfire-node'
10
+ import 'dotenv/config'
11
+
12
+ logfire.configure()
13
+ ```
14
+
15
+ Launch:
16
+
17
+ ```bash
18
+ node --require ./instrumentation.js app.js
19
+ # or with ts-node:
20
+ npx ts-node --require ./instrumentation.ts app.ts
21
+ ```
22
+
23
+ The SDK auto-instruments common libraries (http, fetch, express, etc.) when loaded before the app via `--require`.
24
+
25
+ ## Cloudflare Workers
26
+
27
+ ```typescript
28
+ import { instrument } from '@pydantic/logfire-cf-workers'
29
+
30
+ const handler = {
31
+ async fetch(request: Request, env: Env, ctx: ExecutionContext) {
32
+ return new Response('Hello')
33
+ },
34
+ }
35
+
36
+ export default instrument(handler, {
37
+ service: { name: 'my-worker', version: '1.0.0' },
38
+ })
39
+ ```
40
+
41
+ Add `LOGFIRE_TOKEN` to `.dev.vars` and enable `nodejs_compat` in `wrangler.toml`:
42
+
43
+ ```toml
44
+ compatibility_flags = ["nodejs_compat"]
45
+ ```
46
+
47
+ ## Next.js / Vercel
48
+
49
+ Set environment variables in `.env.local` or Vercel dashboard:
50
+
51
+ ```bash
52
+ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://logfire-api.pydantic.dev/v1/traces
53
+ OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=https://logfire-api.pydantic.dev/v1/metrics
54
+ OTEL_EXPORTER_OTLP_HEADERS=Authorization=<your-write-token>
55
+ ```
56
+
57
+ Optionally use the `logfire` package for manual spans in server components and API routes:
58
+
59
+ ```typescript
60
+ import * as logfire from 'logfire'
61
+
62
+ logfire.info('Server action executed', { action: 'createUser' })
63
+ ```
64
+
65
+ ## Deno
66
+
67
+ Deno has built-in OpenTelemetry support. Set environment variables:
68
+
69
+ ```bash
70
+ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://logfire-api.pydantic.dev/v1/traces
71
+ OTEL_EXPORTER_OTLP_HEADERS=Authorization=<your-write-token>
72
+ ```
73
+
74
+ Run with telemetry enabled:
75
+
76
+ ```bash
77
+ deno run --allow-env --unstable-otel app.ts
78
+ ```
@@ -0,0 +1,75 @@
1
+ # JavaScript / TypeScript Patterns
2
+
3
+ ## Log Levels
4
+
5
+ From lowest to highest severity:
6
+
7
+ ```typescript
8
+ logfire.trace('Detailed trace', { detail: x })
9
+ logfire.debug('Debug info', { state: s })
10
+ logfire.info('Normal operation', { event: e })
11
+ logfire.notice('Notable event', { event: e })
12
+ logfire.warn('Warning', { issue: i })
13
+ logfire.error('Error occurred', { error: err })
14
+ logfire.fatal('Fatal error', { error: err })
15
+ ```
16
+
17
+ All methods accept `(message, attributes?, options?)`. Options can include `{ tags: ['tag1'] }`.
18
+
19
+ ## Spans
20
+
21
+ ### Callback-based (auto-closes)
22
+
23
+ ```typescript
24
+ await logfire.span('Processing order', { order_id }, {}, async () => {
25
+ const items = await fetchItems(order_id)
26
+ logfire.info('Fetched items', { count: items.length })
27
+ return processItems(items)
28
+ })
29
+ ```
30
+
31
+ ### Manual control
32
+
33
+ ```typescript
34
+ const span = logfire.startSpan('Long operation', { job_id })
35
+ try {
36
+ await doWork()
37
+ } finally {
38
+ span.end()
39
+ }
40
+ ```
41
+
42
+ Child spans reference their parent via the `parentSpan` option.
43
+
44
+ ## Error Handling
45
+
46
+ ```typescript
47
+ try {
48
+ await processOrder(orderId)
49
+ } catch (error) {
50
+ logfire.reportError('order processing', error)
51
+ throw error
52
+ }
53
+ ```
54
+
55
+ `reportError` automatically extracts stack traces and error details into structured span attributes.
56
+
57
+ ## Configuration
58
+
59
+ ### Environment variables
60
+
61
+ ```bash
62
+ LOGFIRE_TOKEN=your-write-token
63
+ LOGFIRE_SERVICE_NAME=my-service
64
+ LOGFIRE_SERVICE_VERSION=1.0.0
65
+ ```
66
+
67
+ ### Programmatic
68
+
69
+ ```typescript
70
+ logfire.configure({
71
+ token: process.env.LOGFIRE_TOKEN,
72
+ serviceName: 'my-service',
73
+ serviceVersion: '1.0.0',
74
+ })
75
+ ```
@@ -0,0 +1,67 @@
1
+ # Python Integration Reference
2
+
3
+ ## Web Frameworks
4
+
5
+ | Framework | Instrumentor | Needs app instance | Extra |
6
+ |-----------|-------------|-------------------|-------|
7
+ | FastAPI | `logfire.instrument_fastapi(app)` | Yes | `fastapi` |
8
+ | Django | `logfire.instrument_django(app)` | Yes | `django` |
9
+ | Flask | `logfire.instrument_flask(app)` | Yes | `flask` |
10
+ | Starlette | `logfire.instrument_starlette(app)` | Yes | `starlette` |
11
+ | AIOHTTP | `logfire.instrument_aiohttp_client()` | No | `aiohttp` |
12
+
13
+ ## HTTP Clients
14
+
15
+ | Library | Instrumentor | Extra |
16
+ |---------|-------------|-------|
17
+ | httpx | `logfire.instrument_httpx()` | `httpx` |
18
+ | requests | `logfire.instrument_requests()` | `requests` |
19
+
20
+ ## Databases
21
+
22
+ | Library | Instrumentor | Extra |
23
+ |---------|-------------|-------|
24
+ | asyncpg | `logfire.instrument_asyncpg()` | `asyncpg` |
25
+ | psycopg | `logfire.instrument_psycopg()` | `psycopg` |
26
+ | psycopg2 | `logfire.instrument_psycopg2()` | `psycopg2` |
27
+ | SQLAlchemy | `logfire.instrument_sqlalchemy()` | `sqlalchemy` |
28
+ | PyMongo | `logfire.instrument_pymongo()` | `pymongo` |
29
+ | MySQL | `logfire.instrument_mysql()` | `mysql` |
30
+ | SQLite3 | `logfire.instrument_sqlite3()` | `sqlite3` |
31
+ | Redis | `logfire.instrument_redis()` | `redis` |
32
+
33
+ ## AI/LLM Frameworks
34
+
35
+ | Framework | Instrumentor | Extra |
36
+ |-----------|-------------|-------|
37
+ | PydanticAI | `logfire.instrument_pydantic_ai()` | `pydantic-ai` |
38
+ | OpenAI | `logfire.instrument_openai()` | `openai` |
39
+ | Anthropic | `logfire.instrument_anthropic()` | `anthropic` |
40
+ | LiteLLM | `logfire.instrument_litellm()` | `litellm` |
41
+ | DSPy | `logfire.instrument_dspy()` | `dspy` |
42
+ | Google GenAI | `logfire.instrument_google_genai()` | `google-genai` |
43
+
44
+ ## Task Queues
45
+
46
+ | Framework | Instrumentor | Extra |
47
+ |-----------|-------------|-------|
48
+ | Celery | `logfire.instrument_celery()` | `celery` |
49
+
50
+ ## Other
51
+
52
+ | Feature | Instrumentor | Extra |
53
+ |---------|-------------|-------|
54
+ | System Metrics | `logfire.instrument_system_metrics()` | `system-metrics` |
55
+ | Pydantic Models | `logfire.instrument_pydantic()` | - (built-in) |
56
+ | AWS Lambda | handler wrapper | `aws-lambda` |
57
+
58
+ ## Gunicorn Configuration
59
+
60
+ ```python
61
+ # gunicorn.conf.py
62
+ import logfire
63
+
64
+ def post_fork(server, worker):
65
+ logfire.configure()
66
+ logfire.instrument_fastapi(app)
67
+ ```
@@ -0,0 +1,101 @@
1
+ # Python Logging Patterns
2
+
3
+ ## Log Levels
4
+
5
+ From lowest to highest severity:
6
+
7
+ ```python
8
+ logfire.trace("Detailed trace {detail}", detail=x)
9
+ logfire.debug("Debug info {state}", state=s)
10
+ logfire.info("Normal operation {event}", event=e)
11
+ logfire.notice("Notable event {event}", event=e)
12
+ logfire.warn("Warning {issue}", issue=i)
13
+ logfire.error("Error occurred {error}", error=err)
14
+ logfire.fatal("Fatal error {error}", error=err)
15
+ ```
16
+
17
+ ## Nested Spans
18
+
19
+ Spans nest to create a tree visible in the Logfire UI. Use them to show the structure of an operation, not just that it happened:
20
+
21
+ ```python
22
+ with logfire.span("HTTP request {method} {url}", method="POST", url=url):
23
+ with logfire.span("Serialize payload"):
24
+ payload = model.model_dump_json()
25
+ with logfire.span("Send request"):
26
+ response = await client.post(url, content=payload)
27
+ logfire.info("Response {status}", status=response.status_code)
28
+ ```
29
+
30
+ ## Standard Library Logging Integration
31
+
32
+ For projects that already use Python's `logging` module, route existing log calls through Logfire rather than rewriting them all:
33
+
34
+ ```python
35
+ from logging import basicConfig
36
+ import logfire
37
+
38
+ logfire.configure()
39
+ basicConfig(handlers=[logfire.LogfireLoggingHandler()])
40
+ ```
41
+
42
+ Or with `dictConfig`:
43
+
44
+ ```python
45
+ from logging.config import dictConfig
46
+ import logfire
47
+
48
+ logfire.configure()
49
+ dictConfig({
50
+ 'version': 1,
51
+ 'handlers': {
52
+ 'logfire': {'class': 'logfire.LogfireLoggingHandler'},
53
+ },
54
+ 'root': {'handlers': ['logfire']},
55
+ })
56
+ ```
57
+
58
+ ## Suppressing Noisy Libraries
59
+
60
+ Some libraries emit excessive debug logs. Silence them at the `logging` level:
61
+
62
+ ```python
63
+ import logging
64
+
65
+ logging.getLogger('httpcore').setLevel(logging.WARNING)
66
+ logging.getLogger('httpx').setLevel(logging.WARNING)
67
+ ```
68
+
69
+ ## Custom Metrics
70
+
71
+ For dashboards and alerting, create metrics:
72
+
73
+ ```python
74
+ counter = logfire.metric_counter("orders_processed", unit="1")
75
+ counter.add(1, {"status": "success"})
76
+
77
+ histogram = logfire.metric_histogram("request_duration", unit="s")
78
+ histogram.record(0.123, {"endpoint": "/api/users"})
79
+
80
+ gauge = logfire.metric_gauge("active_connections")
81
+ gauge.set(42)
82
+ ```
83
+
84
+ ## Testing with capfire
85
+
86
+ Use the `capfire` pytest fixture to assert on emitted spans without sending data to production:
87
+
88
+ ```python
89
+ from logfire.testing import CaptureLogfire
90
+
91
+ def test_order_processing(capfire: CaptureLogfire) -> None:
92
+ process_order(order_id=123)
93
+
94
+ spans = capfire.exporter.exported_spans_as_dict()
95
+ assert any(
96
+ span['attributes'].get('order_id') == 123
97
+ for span in spans
98
+ )
99
+ ```
100
+
101
+ Configure logfire with `send_to_logfire=False` in test fixtures to prevent production data leakage.
@@ -0,0 +1,106 @@
1
+ # Rust Patterns
2
+
3
+ ## Core Macros
4
+
5
+ The Rust SDK is built on `tracing` and `opentelemetry`. All `tracing` macros work automatically with Logfire.
6
+
7
+ ### Events (log points)
8
+
9
+ ```rust
10
+ logfire::trace!("Detailed trace {detail}", detail = x);
11
+ logfire::debug!("Debug info {state}", state = s);
12
+ logfire::info!("Normal operation {event}", event = e);
13
+ logfire::warn!("Warning {issue}", issue = i);
14
+ logfire::error!("Error occurred {err}", err = e);
15
+ ```
16
+
17
+ ### Spans
18
+
19
+ ```rust
20
+ // Scoped - span closes when closure completes
21
+ logfire::span!("Processing order {order_id}", order_id = id).in_scope(|| {
22
+ let items = fetch_items(id);
23
+ logfire::info!("Fetched {count} items", count = items.len());
24
+ process_items(items)
25
+ });
26
+
27
+ // Guard-based - span closes when guard is dropped
28
+ let _guard = logfire::span!("Long operation {job_id}", job_id = id).entered();
29
+ do_work();
30
+ // span ends when _guard goes out of scope
31
+ ```
32
+
33
+ ## Configuration
34
+
35
+ ```rust
36
+ use logfire;
37
+
38
+ fn main() -> Result<(), Box<dyn std::error::Error>> {
39
+ let shutdown_handler = logfire::configure()
40
+ .install_panic_handler() // captures panics as error spans
41
+ .finish()?;
42
+
43
+ // application code...
44
+
45
+ shutdown_handler.shutdown()?; // flush all pending spans
46
+ Ok(())
47
+ }
48
+ ```
49
+
50
+ Set `LOGFIRE_TOKEN` in your environment or use the Logfire CLI (`logfire auth`).
51
+
52
+ ## Tracing Crate Compatibility
53
+
54
+ Any library using `tracing` macros automatically sends data through Logfire:
55
+
56
+ ```rust
57
+ use tracing;
58
+
59
+ tracing::info!("This also appears in Logfire");
60
+
61
+ #[tracing::instrument]
62
+ fn my_function(param: &str) {
63
+ // automatically creates a span with param as an attribute
64
+ }
65
+ ```
66
+
67
+ ## Log Crate Integration
68
+
69
+ The `log` crate is automatically captured and forwarded to Logfire. Libraries using `log::info!()`, `log::error!()`, etc. will appear in your Logfire dashboard without any additional configuration.
70
+
71
+ ## Async Spans
72
+
73
+ ```rust
74
+ use tracing::Instrument;
75
+
76
+ async fn process_order(order_id: u64) {
77
+ let span = logfire::span!("process order {order_id}", order_id = order_id);
78
+ async {
79
+ fetch_items(order_id).await;
80
+ logfire::info!("Order processed");
81
+ }
82
+ .instrument(span)
83
+ .await;
84
+ }
85
+ ```
86
+
87
+ ## Shutdown
88
+
89
+ Always call `shutdown()` before program exit to flush pending data:
90
+
91
+ ```rust
92
+ // In main()
93
+ let shutdown_handler = logfire::configure().finish()?;
94
+
95
+ // ... app runs ...
96
+
97
+ // Before exit
98
+ shutdown_handler.shutdown()?;
99
+ ```
100
+
101
+ For web servers using `tokio`, handle shutdown via signal:
102
+
103
+ ```rust
104
+ tokio::signal::ctrl_c().await?;
105
+ shutdown_handler.shutdown()?;
106
+ ```
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/claude-code-settings.json",
3
+ "env": {
4
+ "CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR": "1",
5
+ "CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY": "1",
6
+ "CLAUDE_CODE_NO_FLICKER": "1",
7
+ "CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1"
8
+ },
9
+ "permissions": {
10
+ "allow": [
11
+ "Bash(just fast-check)",
12
+ "Bash(just check)",
13
+ "Bash(just fix)",
14
+ "Bash(just typecheck)",
15
+ "Bash(just lint)",
16
+ "Bash(just test)"
17
+ ],
18
+ "deny": []
19
+ },
20
+ "enableAllProjectMcpServers": true
21
+ }