basic-memory 0.20.2__tar.gz → 0.21.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (939) hide show
  1. basic_memory-0.21.0/.agents/skills/instrumentation/SKILL.md +244 -0
  2. basic_memory-0.21.0/.agents/skills/instrumentation/references/javascript/frameworks.md +78 -0
  3. basic_memory-0.21.0/.agents/skills/instrumentation/references/javascript/patterns.md +75 -0
  4. basic_memory-0.21.0/.agents/skills/instrumentation/references/python/integrations.md +67 -0
  5. basic_memory-0.21.0/.agents/skills/instrumentation/references/python/logging-patterns.md +101 -0
  6. basic_memory-0.21.0/.agents/skills/instrumentation/references/rust/patterns.md +106 -0
  7. basic_memory-0.21.0/.claude/settings.json +21 -0
  8. basic_memory-0.21.0/.github/workflows/claude-code-review.yml +86 -0
  9. basic_memory-0.21.0/.github/workflows/claude-issue-triage.yml +74 -0
  10. basic_memory-0.21.0/.github/workflows/claude.yml +70 -0
  11. basic_memory-0.21.0/.github/workflows/dev-release.yml +56 -0
  12. basic_memory-0.21.0/.github/workflows/docker.yml +61 -0
  13. basic_memory-0.21.0/.github/workflows/pr-title.yml +44 -0
  14. basic_memory-0.21.0/.github/workflows/release.yml +87 -0
  15. basic_memory-0.21.0/.github/workflows/test.yml +294 -0
  16. basic_memory-0.21.0/AGENTS.md +452 -0
  17. basic_memory-0.21.0/CHANGELOG.md +2797 -0
  18. basic_memory-0.21.0/PKG-INFO +609 -0
  19. basic_memory-0.21.0/README.md +556 -0
  20. basic_memory-0.21.0/SECURITY.md +78 -0
  21. basic_memory-0.21.0/docker-compose.yml +85 -0
  22. basic_memory-0.21.0/docs/NOTE-FORMAT.md +512 -0
  23. basic_memory-0.21.0/docs/ai-assistant-guide-extended.md +3400 -0
  24. basic_memory-0.21.0/docs/cloud-cli.md +926 -0
  25. basic_memory-0.21.0/docs/logfire-instrumentation-strategy.md +499 -0
  26. basic_memory-0.21.0/justfile +416 -0
  27. basic_memory-0.21.0/pyproject.toml +165 -0
  28. basic_memory-0.21.0/server.json +25 -0
  29. basic_memory-0.21.0/skills-lock.json +10 -0
  30. basic_memory-0.21.0/src/basic_memory/__init__.py +7 -0
  31. basic_memory-0.21.0/src/basic_memory/alembic/env.py +217 -0
  32. basic_memory-0.21.0/src/basic_memory/alembic/versions/l5g6h7i8j9k0_add_note_content_table.py +65 -0
  33. basic_memory-0.21.0/src/basic_memory/alembic/versions/m6h7i8j9k0l1_add_vector_sync_fingerprints.py +84 -0
  34. basic_memory-0.21.0/src/basic_memory/alembic/versions/n7i8j9k0l1m2_cleanup_sqlite_search_orphans.py +86 -0
  35. basic_memory-0.21.0/src/basic_memory/api/app.py +185 -0
  36. basic_memory-0.21.0/src/basic_memory/api/v2/routers/importer_router.py +205 -0
  37. basic_memory-0.21.0/src/basic_memory/api/v2/routers/knowledge_router.py +705 -0
  38. basic_memory-0.21.0/src/basic_memory/api/v2/routers/memory_router.py +182 -0
  39. basic_memory-0.21.0/src/basic_memory/api/v2/routers/project_router.py +599 -0
  40. basic_memory-0.21.0/src/basic_memory/api/v2/routers/prompt_router.py +262 -0
  41. basic_memory-0.21.0/src/basic_memory/api/v2/routers/resource_router.py +353 -0
  42. basic_memory-0.21.0/src/basic_memory/api/v2/routers/search_router.py +155 -0
  43. basic_memory-0.21.0/src/basic_memory/api/v2/utils.py +278 -0
  44. basic_memory-0.21.0/src/basic_memory/cli/app.py +112 -0
  45. basic_memory-0.21.0/src/basic_memory/cli/auto_update.py +389 -0
  46. basic_memory-0.21.0/src/basic_memory/cli/commands/__init__.py +29 -0
  47. basic_memory-0.21.0/src/basic_memory/cli/commands/cloud/api_client.py +137 -0
  48. basic_memory-0.21.0/src/basic_memory/cli/commands/cloud/bisync_commands.py +120 -0
  49. basic_memory-0.21.0/src/basic_memory/cli/commands/cloud/cloud_utils.py +153 -0
  50. basic_memory-0.21.0/src/basic_memory/cli/commands/cloud/core_commands.py +293 -0
  51. basic_memory-0.21.0/src/basic_memory/cli/commands/cloud/project_sync.py +343 -0
  52. basic_memory-0.21.0/src/basic_memory/cli/commands/cloud/rclone_commands.py +421 -0
  53. basic_memory-0.21.0/src/basic_memory/cli/commands/cloud/rclone_installer.py +335 -0
  54. basic_memory-0.21.0/src/basic_memory/cli/commands/cloud/upload_command.py +150 -0
  55. basic_memory-0.21.0/src/basic_memory/cli/commands/cloud/workspace.py +118 -0
  56. basic_memory-0.21.0/src/basic_memory/cli/commands/db.py +450 -0
  57. basic_memory-0.21.0/src/basic_memory/cli/commands/doctor.py +156 -0
  58. basic_memory-0.21.0/src/basic_memory/cli/commands/orphans.py +93 -0
  59. basic_memory-0.21.0/src/basic_memory/cli/commands/project.py +1506 -0
  60. basic_memory-0.21.0/src/basic_memory/cli/commands/tool.py +780 -0
  61. basic_memory-0.21.0/src/basic_memory/cli/main.py +39 -0
  62. basic_memory-0.21.0/src/basic_memory/config.py +1130 -0
  63. basic_memory-0.21.0/src/basic_memory/db.py +439 -0
  64. basic_memory-0.21.0/src/basic_memory/deps/services.py +586 -0
  65. basic_memory-0.21.0/src/basic_memory/file_utils.py +496 -0
  66. basic_memory-0.21.0/src/basic_memory/ignore_utils.py +302 -0
  67. basic_memory-0.21.0/src/basic_memory/importers/utils.py +62 -0
  68. basic_memory-0.21.0/src/basic_memory/indexing/__init__.py +31 -0
  69. basic_memory-0.21.0/src/basic_memory/indexing/batch_indexer.py +710 -0
  70. basic_memory-0.21.0/src/basic_memory/indexing/batching.py +63 -0
  71. basic_memory-0.21.0/src/basic_memory/indexing/models.py +110 -0
  72. basic_memory-0.21.0/src/basic_memory/markdown/entity_parser.py +314 -0
  73. basic_memory-0.21.0/src/basic_memory/markdown/plugins.py +281 -0
  74. basic_memory-0.21.0/src/basic_memory/markdown/schemas.py +94 -0
  75. basic_memory-0.21.0/src/basic_memory/mcp/async_client.py +268 -0
  76. basic_memory-0.21.0/src/basic_memory/mcp/clients/knowledge.py +326 -0
  77. basic_memory-0.21.0/src/basic_memory/mcp/clients/memory.py +141 -0
  78. basic_memory-0.21.0/src/basic_memory/mcp/clients/resource.py +63 -0
  79. basic_memory-0.21.0/src/basic_memory/mcp/clients/search.py +76 -0
  80. basic_memory-0.21.0/src/basic_memory/mcp/project_context.py +1528 -0
  81. basic_memory-0.21.0/src/basic_memory/mcp/prompts/utils.py +161 -0
  82. basic_memory-0.21.0/src/basic_memory/mcp/resources/ai_assistant_guide.md +324 -0
  83. basic_memory-0.21.0/src/basic_memory/mcp/server.py +147 -0
  84. basic_memory-0.21.0/src/basic_memory/mcp/tools/build_context.py +290 -0
  85. basic_memory-0.21.0/src/basic_memory/mcp/tools/canvas.py +162 -0
  86. basic_memory-0.21.0/src/basic_memory/mcp/tools/chatgpt_tools.py +216 -0
  87. basic_memory-0.21.0/src/basic_memory/mcp/tools/delete_note.py +472 -0
  88. basic_memory-0.21.0/src/basic_memory/mcp/tools/edit_note.py +638 -0
  89. basic_memory-0.21.0/src/basic_memory/mcp/tools/list_directory.py +174 -0
  90. basic_memory-0.21.0/src/basic_memory/mcp/tools/move_note.py +884 -0
  91. basic_memory-0.21.0/src/basic_memory/mcp/tools/project_management.py +629 -0
  92. basic_memory-0.21.0/src/basic_memory/mcp/tools/read_content.py +330 -0
  93. basic_memory-0.21.0/src/basic_memory/mcp/tools/read_note.py +477 -0
  94. basic_memory-0.21.0/src/basic_memory/mcp/tools/recent_activity.py +608 -0
  95. basic_memory-0.21.0/src/basic_memory/mcp/tools/schema.py +531 -0
  96. basic_memory-0.21.0/src/basic_memory/mcp/tools/search.py +1021 -0
  97. basic_memory-0.21.0/src/basic_memory/mcp/tools/ui_sdk.py +132 -0
  98. basic_memory-0.21.0/src/basic_memory/mcp/tools/utils.py +723 -0
  99. basic_memory-0.21.0/src/basic_memory/mcp/tools/view_note.py +81 -0
  100. basic_memory-0.21.0/src/basic_memory/mcp/tools/workspaces.py +77 -0
  101. basic_memory-0.21.0/src/basic_memory/mcp/tools/write_note.py +354 -0
  102. basic_memory-0.21.0/src/basic_memory/models/__init__.py +16 -0
  103. basic_memory-0.21.0/src/basic_memory/models/base.py +13 -0
  104. basic_memory-0.21.0/src/basic_memory/models/knowledge.py +311 -0
  105. basic_memory-0.21.0/src/basic_memory/models/search.py +153 -0
  106. basic_memory-0.21.0/src/basic_memory/repository/__init__.py +13 -0
  107. basic_memory-0.21.0/src/basic_memory/repository/embedding_provider.py +22 -0
  108. basic_memory-0.21.0/src/basic_memory/repository/embedding_provider_factory.py +161 -0
  109. basic_memory-0.21.0/src/basic_memory/repository/entity_repository.py +576 -0
  110. basic_memory-0.21.0/src/basic_memory/repository/fastembed_provider.py +138 -0
  111. basic_memory-0.21.0/src/basic_memory/repository/metadata_filters.py +160 -0
  112. basic_memory-0.21.0/src/basic_memory/repository/note_content_repository.py +191 -0
  113. basic_memory-0.21.0/src/basic_memory/repository/openai_provider.py +132 -0
  114. basic_memory-0.21.0/src/basic_memory/repository/postgres_search_repository.py +1057 -0
  115. basic_memory-0.21.0/src/basic_memory/repository/project_repository.py +278 -0
  116. basic_memory-0.21.0/src/basic_memory/repository/repository.py +421 -0
  117. basic_memory-0.21.0/src/basic_memory/repository/search_repository.py +142 -0
  118. basic_memory-0.21.0/src/basic_memory/repository/search_repository_base.py +2252 -0
  119. basic_memory-0.21.0/src/basic_memory/repository/sqlite_search_repository.py +1070 -0
  120. basic_memory-0.21.0/src/basic_memory/runtime.py +60 -0
  121. basic_memory-0.21.0/src/basic_memory/schema/parser.py +327 -0
  122. basic_memory-0.21.0/src/basic_memory/schemas/base.py +306 -0
  123. basic_memory-0.21.0/src/basic_memory/schemas/cloud.py +183 -0
  124. basic_memory-0.21.0/src/basic_memory/schemas/memory.py +292 -0
  125. basic_memory-0.21.0/src/basic_memory/schemas/response.py +362 -0
  126. basic_memory-0.21.0/src/basic_memory/schemas/search.py +146 -0
  127. basic_memory-0.21.0/src/basic_memory/schemas/sync_report.py +72 -0
  128. basic_memory-0.21.0/src/basic_memory/schemas/v2/__init__.py +41 -0
  129. basic_memory-0.21.0/src/basic_memory/schemas/v2/graph.py +40 -0
  130. basic_memory-0.21.0/src/basic_memory/services/context_service.py +653 -0
  131. basic_memory-0.21.0/src/basic_memory/services/entity_service.py +1721 -0
  132. basic_memory-0.21.0/src/basic_memory/services/file_service.py +616 -0
  133. basic_memory-0.21.0/src/basic_memory/services/initialization.py +252 -0
  134. basic_memory-0.21.0/src/basic_memory/services/link_resolver.py +535 -0
  135. basic_memory-0.21.0/src/basic_memory/services/project_service.py +1153 -0
  136. basic_memory-0.21.0/src/basic_memory/services/search_service.py +979 -0
  137. basic_memory-0.21.0/src/basic_memory/sync/sync_service.py +1767 -0
  138. basic_memory-0.21.0/src/basic_memory/sync/watch_service.py +606 -0
  139. basic_memory-0.21.0/src/basic_memory/telemetry.py +64 -0
  140. basic_memory-0.21.0/src/basic_memory/utils.py +753 -0
  141. basic_memory-0.21.0/src/basic_memory/workspace_context.py +114 -0
  142. basic_memory-0.21.0/test-int/conftest.py +480 -0
  143. basic_memory-0.21.0/test-int/mcp/test_long_relation_type_integration.py +81 -0
  144. basic_memory-0.21.0/test-int/mcp/test_output_format_json_integration.py +399 -0
  145. basic_memory-0.21.0/test-int/mcp/test_pagination_integration.py +306 -0
  146. basic_memory-0.21.0/test-int/mcp/test_param_aliases_integration.py +540 -0
  147. basic_memory-0.21.0/test-int/mcp/test_project_management_integration.py +709 -0
  148. basic_memory-0.21.0/test-int/mcp/test_read_note_integration.py +170 -0
  149. basic_memory-0.21.0/test-int/mcp/test_string_params_integration.py +169 -0
  150. basic_memory-0.21.0/test-int/mcp/test_workspace_permalink_integration.py +463 -0
  151. basic_memory-0.21.0/test-int/semantic/conftest.py +300 -0
  152. basic_memory-0.21.0/test-int/semantic/test_search_diagnostics.py +466 -0
  153. basic_memory-0.21.0/test-int/semantic/test_semantic_coverage.py +284 -0
  154. basic_memory-0.21.0/test-int/semantic/test_semantic_quality.py +157 -0
  155. basic_memory-0.21.0/test-int/test_db_wal_mode.py +171 -0
  156. basic_memory-0.21.0/test-int/test_sync_batching_integration.py +201 -0
  157. basic_memory-0.21.0/tests/api/v2/conftest.py +68 -0
  158. basic_memory-0.21.0/tests/api/v2/test_importer_router.py +549 -0
  159. basic_memory-0.21.0/tests/api/v2/test_knowledge_router.py +909 -0
  160. basic_memory-0.21.0/tests/api/v2/test_knowledge_router_telemetry.py +195 -0
  161. basic_memory-0.21.0/tests/api/v2/test_memory_hydration.py +279 -0
  162. basic_memory-0.21.0/tests/api/v2/test_orphan_router.py +92 -0
  163. basic_memory-0.21.0/tests/api/v2/test_project_router.py +450 -0
  164. basic_memory-0.21.0/tests/api/v2/test_search_hydration.py +306 -0
  165. basic_memory-0.21.0/tests/api/v2/test_search_router.py +662 -0
  166. basic_memory-0.21.0/tests/api/v2/test_search_router_telemetry.py +63 -0
  167. basic_memory-0.21.0/tests/api/v2/test_utils_telemetry.py +67 -0
  168. basic_memory-0.21.0/tests/api/v2/test_workspace_permalink_headers.py +41 -0
  169. basic_memory-0.21.0/tests/cli/cloud/test_cloud_api_client_and_utils.py +339 -0
  170. basic_memory-0.21.0/tests/cli/cloud/test_project_sync_command.py +92 -0
  171. basic_memory-0.21.0/tests/cli/cloud/test_rclone_config_and_bmignore_filters.py +113 -0
  172. basic_memory-0.21.0/tests/cli/cloud/test_rclone_installer.py +54 -0
  173. basic_memory-0.21.0/tests/cli/cloud/test_upload_command_routing.py +143 -0
  174. basic_memory-0.21.0/tests/cli/conftest.py +70 -0
  175. basic_memory-0.21.0/tests/cli/test_auto_update.py +404 -0
  176. basic_memory-0.21.0/tests/cli/test_cli_exit.py +105 -0
  177. basic_memory-0.21.0/tests/cli/test_cli_telemetry.py +53 -0
  178. basic_memory-0.21.0/tests/cli/test_cli_tool_json_output.py +737 -0
  179. basic_memory-0.21.0/tests/cli/test_cloud_authentication.py +266 -0
  180. basic_memory-0.21.0/tests/cli/test_cloud_promo.py +317 -0
  181. basic_memory-0.21.0/tests/cli/test_db_reindex.py +322 -0
  182. basic_memory-0.21.0/tests/cli/test_db_reset_exit.py +61 -0
  183. basic_memory-0.21.0/tests/cli/test_db_reset_zombie_check.py +157 -0
  184. basic_memory-0.21.0/tests/cli/test_ignore_utils.py +332 -0
  185. basic_memory-0.21.0/tests/cli/test_json_output.py +420 -0
  186. basic_memory-0.21.0/tests/cli/test_orphans_command.py +150 -0
  187. basic_memory-0.21.0/tests/cli/test_project_add_with_local_path.py +360 -0
  188. basic_memory-0.21.0/tests/cli/test_project_info_cloud_status.py +673 -0
  189. basic_memory-0.21.0/tests/cli/test_project_list_and_ls.py +1054 -0
  190. basic_memory-0.21.0/tests/cli/test_project_set_cloud_local.py +385 -0
  191. basic_memory-0.21.0/tests/cli/test_workspace_commands.py +251 -0
  192. basic_memory-0.21.0/tests/conftest.py +772 -0
  193. basic_memory-0.21.0/tests/db/test_issue_254_foreign_key_constraints.py +171 -0
  194. basic_memory-0.21.0/tests/importers/test_importer_utils.py +60 -0
  195. basic_memory-0.21.0/tests/indexing/test_batch_indexer.py +797 -0
  196. basic_memory-0.21.0/tests/indexing/test_batching.py +85 -0
  197. basic_memory-0.21.0/tests/markdown/test_date_frontmatter_parsing.py +362 -0
  198. basic_memory-0.21.0/tests/markdown/test_entity_parser.py +272 -0
  199. basic_memory-0.21.0/tests/markdown/test_entity_parser_error_handling.py +423 -0
  200. basic_memory-0.21.0/tests/markdown/test_markdown_plugins.py +328 -0
  201. basic_memory-0.21.0/tests/markdown/test_markdown_processor.py +187 -0
  202. basic_memory-0.21.0/tests/markdown/test_observation_edge_cases.py +129 -0
  203. basic_memory-0.21.0/tests/markdown/test_parser_edge_cases.py +207 -0
  204. basic_memory-0.21.0/tests/markdown/test_relation_edge_cases.py +178 -0
  205. basic_memory-0.21.0/tests/mcp/clients/test_clients.py +405 -0
  206. basic_memory-0.21.0/tests/mcp/conftest.py +67 -0
  207. basic_memory-0.21.0/tests/mcp/test_async_client_modes.py +388 -0
  208. basic_memory-0.21.0/tests/mcp/test_async_client_telemetry.py +47 -0
  209. basic_memory-0.21.0/tests/mcp/test_client_telemetry.py +185 -0
  210. basic_memory-0.21.0/tests/mcp/test_permalink_collision_file_overwrite.py +390 -0
  211. basic_memory-0.21.0/tests/mcp/test_project_context.py +2599 -0
  212. basic_memory-0.21.0/tests/mcp/test_project_context_telemetry.py +96 -0
  213. basic_memory-0.21.0/tests/mcp/test_recent_activity_prompt_modes.py +109 -0
  214. basic_memory-0.21.0/tests/mcp/test_server_telemetry.py +29 -0
  215. basic_memory-0.21.0/tests/mcp/test_tool_build_context.py +256 -0
  216. basic_memory-0.21.0/tests/mcp/test_tool_contracts.py +156 -0
  217. basic_memory-0.21.0/tests/mcp/test_tool_delete_note.py +277 -0
  218. basic_memory-0.21.0/tests/mcp/test_tool_edit_note.py +1188 -0
  219. basic_memory-0.21.0/tests/mcp/test_tool_json_output_modes.py +384 -0
  220. basic_memory-0.21.0/tests/mcp/test_tool_project_management.py +984 -0
  221. basic_memory-0.21.0/tests/mcp/test_tool_read_note.py +876 -0
  222. basic_memory-0.21.0/tests/mcp/test_tool_recent_activity.py +613 -0
  223. basic_memory-0.21.0/tests/mcp/test_tool_schema.py +626 -0
  224. basic_memory-0.21.0/tests/mcp/test_tool_search.py +1648 -0
  225. basic_memory-0.21.0/tests/mcp/test_tool_telemetry.py +284 -0
  226. basic_memory-0.21.0/tests/mcp/test_tool_utils.py +241 -0
  227. basic_memory-0.21.0/tests/mcp/test_tool_utils_cloud_auth.py +59 -0
  228. basic_memory-0.21.0/tests/mcp/test_tool_view_note.py +224 -0
  229. basic_memory-0.21.0/tests/mcp/test_tool_workspace_management.py +267 -0
  230. basic_memory-0.21.0/tests/mcp/test_tool_write_note.py +1313 -0
  231. basic_memory-0.21.0/tests/mcp/test_ui_sdk.py +140 -0
  232. basic_memory-0.21.0/tests/mcp/test_workspace_permalink_resolution.py +102 -0
  233. basic_memory-0.21.0/tests/mcp/tools/test_chatgpt_tools.py +284 -0
  234. basic_memory-0.21.0/tests/mcp/tools/test_search_notes_multi_project.py +368 -0
  235. basic_memory-0.21.0/tests/repository/test_entity_repository.py +1282 -0
  236. basic_memory-0.21.0/tests/repository/test_entity_repository_upsert.py +512 -0
  237. basic_memory-0.21.0/tests/repository/test_fastembed_provider.py +150 -0
  238. basic_memory-0.21.0/tests/repository/test_hybrid_fusion.py +304 -0
  239. basic_memory-0.21.0/tests/repository/test_note_content_repository.py +425 -0
  240. basic_memory-0.21.0/tests/repository/test_observation_repository.py +468 -0
  241. basic_memory-0.21.0/tests/repository/test_openai_provider.py +580 -0
  242. basic_memory-0.21.0/tests/repository/test_postgres_search_repository.py +818 -0
  243. basic_memory-0.21.0/tests/repository/test_postgres_search_repository_unit.py +510 -0
  244. basic_memory-0.21.0/tests/repository/test_relation_repository.py +507 -0
  245. basic_memory-0.21.0/tests/repository/test_repository.py +224 -0
  246. basic_memory-0.21.0/tests/repository/test_search_repository.py +1046 -0
  247. basic_memory-0.21.0/tests/repository/test_search_repository_edit_bug_fix.py +273 -0
  248. basic_memory-0.21.0/tests/repository/test_semantic_search_base.py +810 -0
  249. basic_memory-0.21.0/tests/repository/test_sqlite_vector_search_repository.py +562 -0
  250. basic_memory-0.21.0/tests/repository/test_vector_pagination.py +177 -0
  251. basic_memory-0.21.0/tests/repository/test_vector_threshold.py +466 -0
  252. basic_memory-0.21.0/tests/schema/test_parser.py +489 -0
  253. basic_memory-0.21.0/tests/schema/test_resolver.py +165 -0
  254. basic_memory-0.21.0/tests/schema/test_validator.py +415 -0
  255. basic_memory-0.21.0/tests/schemas/test_schemas.py +713 -0
  256. basic_memory-0.21.0/tests/schemas/test_search.py +133 -0
  257. basic_memory-0.21.0/tests/services/test_entity_service.py +2549 -0
  258. basic_memory-0.21.0/tests/services/test_entity_service_disable_permalinks.py +221 -0
  259. basic_memory-0.21.0/tests/services/test_entity_service_prepare.py +334 -0
  260. basic_memory-0.21.0/tests/services/test_entity_service_telemetry.py +72 -0
  261. basic_memory-0.21.0/tests/services/test_entity_service_write_result.py +142 -0
  262. basic_memory-0.21.0/tests/services/test_file_service.py +285 -0
  263. basic_memory-0.21.0/tests/services/test_initialization.py +253 -0
  264. basic_memory-0.21.0/tests/services/test_link_resolver.py +1008 -0
  265. basic_memory-0.21.0/tests/services/test_project_removal_bug.py +352 -0
  266. basic_memory-0.21.0/tests/services/test_project_service.py +1575 -0
  267. basic_memory-0.21.0/tests/services/test_project_service_embedding_status.py +335 -0
  268. basic_memory-0.21.0/tests/services/test_search_service.py +1387 -0
  269. basic_memory-0.21.0/tests/services/test_search_service_telemetry.py +77 -0
  270. basic_memory-0.21.0/tests/services/test_semantic_search.py +348 -0
  271. basic_memory-0.21.0/tests/services/test_task_scheduler_semantic.py +87 -0
  272. basic_memory-0.21.0/tests/services/test_upsert_entity_optimization.py +454 -0
  273. basic_memory-0.21.0/tests/sync/test_sync_one_markdown_file.py +399 -0
  274. basic_memory-0.21.0/tests/sync/test_sync_service.py +1814 -0
  275. basic_memory-0.21.0/tests/sync/test_sync_service_batching.py +256 -0
  276. basic_memory-0.21.0/tests/sync/test_sync_service_incremental.py +820 -0
  277. basic_memory-0.21.0/tests/sync/test_sync_service_subprocess.py +108 -0
  278. basic_memory-0.21.0/tests/sync/test_sync_service_telemetry.py +212 -0
  279. basic_memory-0.21.0/tests/sync/test_watch_service.py +652 -0
  280. basic_memory-0.21.0/tests/sync/test_watch_service_edge_cases.py +335 -0
  281. basic_memory-0.21.0/tests/sync/test_watch_service_reload.py +359 -0
  282. basic_memory-0.21.0/tests/test_alembic_env.py +112 -0
  283. basic_memory-0.21.0/tests/test_coerce.py +57 -0
  284. basic_memory-0.21.0/tests/test_config.py +1574 -0
  285. basic_memory-0.21.0/tests/test_note_content_migration.py +75 -0
  286. basic_memory-0.21.0/tests/test_permalink_utils.py +90 -0
  287. basic_memory-0.21.0/tests/test_production_cascade_delete.py +384 -0
  288. basic_memory-0.21.0/tests/test_rclone_commands.py +564 -0
  289. basic_memory-0.21.0/tests/test_telemetry.py +143 -0
  290. basic_memory-0.21.0/tests/utils/test_file_utils.py +564 -0
  291. basic_memory-0.21.0/tests/utils/test_parse_tags.py +68 -0
  292. basic_memory-0.21.0/tests/utils/test_permalink_formatting.py +180 -0
  293. basic_memory-0.21.0/tests/utils/test_setup_logging.py +227 -0
  294. basic_memory-0.21.0/tests/utils/test_validate_project_path.py +461 -0
  295. basic_memory-0.21.0/tests/utils/test_workspace_context.py +50 -0
  296. basic_memory-0.21.0/ui/tool-ui-react/package-lock.json +2507 -0
  297. basic_memory-0.21.0/ui/tool-ui-react/src/components/tool-ui/data-table/utilities.ts +186 -0
  298. basic_memory-0.21.0/uv.lock +3715 -0
  299. basic_memory-0.20.2/.claude/settings.json +0 -3
  300. basic_memory-0.20.2/.github/workflows/claude-code-review.yml +0 -83
  301. basic_memory-0.20.2/.github/workflows/claude-issue-triage.yml +0 -71
  302. basic_memory-0.20.2/.github/workflows/claude.yml +0 -68
  303. basic_memory-0.20.2/.github/workflows/dev-release.yml +0 -53
  304. basic_memory-0.20.2/.github/workflows/docker.yml +0 -61
  305. basic_memory-0.20.2/.github/workflows/pr-title.yml +0 -41
  306. basic_memory-0.20.2/.github/workflows/release.yml +0 -85
  307. basic_memory-0.20.2/.github/workflows/test.yml +0 -267
  308. basic_memory-0.20.2/AGENTS.md +0 -446
  309. basic_memory-0.20.2/CHANGELOG.md +0 -2670
  310. basic_memory-0.20.2/PKG-INFO +0 -731
  311. basic_memory-0.20.2/README.md +0 -680
  312. basic_memory-0.20.2/SECURITY.md +0 -13
  313. basic_memory-0.20.2/docker-compose.yml +0 -83
  314. basic_memory-0.20.2/docs/NOTE-FORMAT.md +0 -494
  315. basic_memory-0.20.2/docs/ai-assistant-guide-extended.md +0 -3360
  316. basic_memory-0.20.2/docs/cloud-cli.md +0 -855
  317. basic_memory-0.20.2/justfile +0 -367
  318. basic_memory-0.20.2/pyproject.toml +0 -155
  319. basic_memory-0.20.2/server.json +0 -25
  320. basic_memory-0.20.2/src/basic_memory/__init__.py +0 -7
  321. basic_memory-0.20.2/src/basic_memory/alembic/env.py +0 -189
  322. basic_memory-0.20.2/src/basic_memory/api/app.py +0 -139
  323. basic_memory-0.20.2/src/basic_memory/api/v2/routers/importer_router.py +0 -181
  324. basic_memory-0.20.2/src/basic_memory/api/v2/routers/knowledge_router.py +0 -684
  325. basic_memory-0.20.2/src/basic_memory/api/v2/routers/memory_router.py +0 -130
  326. basic_memory-0.20.2/src/basic_memory/api/v2/routers/project_router.py +0 -550
  327. basic_memory-0.20.2/src/basic_memory/api/v2/routers/prompt_router.py +0 -269
  328. basic_memory-0.20.2/src/basic_memory/api/v2/routers/resource_router.py +0 -289
  329. basic_memory-0.20.2/src/basic_memory/api/v2/routers/search_router.py +0 -94
  330. basic_memory-0.20.2/src/basic_memory/api/v2/utils.py +0 -192
  331. basic_memory-0.20.2/src/basic_memory/cli/app.py +0 -103
  332. basic_memory-0.20.2/src/basic_memory/cli/auto_update.py +0 -389
  333. basic_memory-0.20.2/src/basic_memory/cli/commands/__init__.py +0 -28
  334. basic_memory-0.20.2/src/basic_memory/cli/commands/cloud/api_client.py +0 -127
  335. basic_memory-0.20.2/src/basic_memory/cli/commands/cloud/bisync_commands.py +0 -110
  336. basic_memory-0.20.2/src/basic_memory/cli/commands/cloud/cloud_utils.py +0 -108
  337. basic_memory-0.20.2/src/basic_memory/cli/commands/cloud/core_commands.py +0 -281
  338. basic_memory-0.20.2/src/basic_memory/cli/commands/cloud/project_sync.py +0 -372
  339. basic_memory-0.20.2/src/basic_memory/cli/commands/cloud/rclone_commands.py +0 -417
  340. basic_memory-0.20.2/src/basic_memory/cli/commands/cloud/rclone_installer.py +0 -263
  341. basic_memory-0.20.2/src/basic_memory/cli/commands/cloud/upload_command.py +0 -130
  342. basic_memory-0.20.2/src/basic_memory/cli/commands/cloud/workspace.py +0 -113
  343. basic_memory-0.20.2/src/basic_memory/cli/commands/db.py +0 -230
  344. basic_memory-0.20.2/src/basic_memory/cli/commands/doctor.py +0 -153
  345. basic_memory-0.20.2/src/basic_memory/cli/commands/project.py +0 -917
  346. basic_memory-0.20.2/src/basic_memory/cli/commands/tool.py +0 -758
  347. basic_memory-0.20.2/src/basic_memory/cli/main.py +0 -38
  348. basic_memory-0.20.2/src/basic_memory/config.py +0 -983
  349. basic_memory-0.20.2/src/basic_memory/db.py +0 -542
  350. basic_memory-0.20.2/src/basic_memory/deps/services.py +0 -611
  351. basic_memory-0.20.2/src/basic_memory/file_utils.py +0 -478
  352. basic_memory-0.20.2/src/basic_memory/ignore_utils.py +0 -297
  353. basic_memory-0.20.2/src/basic_memory/importers/utils.py +0 -61
  354. basic_memory-0.20.2/src/basic_memory/markdown/entity_parser.py +0 -310
  355. basic_memory-0.20.2/src/basic_memory/markdown/plugins.py +0 -244
  356. basic_memory-0.20.2/src/basic_memory/markdown/schemas.py +0 -70
  357. basic_memory-0.20.2/src/basic_memory/mcp/async_client.py +0 -211
  358. basic_memory-0.20.2/src/basic_memory/mcp/clients/knowledge.py +0 -246
  359. basic_memory-0.20.2/src/basic_memory/mcp/clients/memory.py +0 -120
  360. basic_memory-0.20.2/src/basic_memory/mcp/clients/resource.py +0 -71
  361. basic_memory-0.20.2/src/basic_memory/mcp/clients/search.py +0 -65
  362. basic_memory-0.20.2/src/basic_memory/mcp/project_context.py +0 -562
  363. basic_memory-0.20.2/src/basic_memory/mcp/prompts/utils.py +0 -161
  364. basic_memory-0.20.2/src/basic_memory/mcp/resources/ai_assistant_guide.md +0 -314
  365. basic_memory-0.20.2/src/basic_memory/mcp/server.py +0 -167
  366. basic_memory-0.20.2/src/basic_memory/mcp/tools/build_context.py +0 -227
  367. basic_memory-0.20.2/src/basic_memory/mcp/tools/canvas.py +0 -153
  368. basic_memory-0.20.2/src/basic_memory/mcp/tools/chatgpt_tools.py +0 -207
  369. basic_memory-0.20.2/src/basic_memory/mcp/tools/delete_note.py +0 -395
  370. basic_memory-0.20.2/src/basic_memory/mcp/tools/edit_note.py +0 -472
  371. basic_memory-0.20.2/src/basic_memory/mcp/tools/list_directory.py +0 -154
  372. basic_memory-0.20.2/src/basic_memory/mcp/tools/move_note.py +0 -858
  373. basic_memory-0.20.2/src/basic_memory/mcp/tools/project_management.py +0 -466
  374. basic_memory-0.20.2/src/basic_memory/mcp/tools/read_content.py +0 -301
  375. basic_memory-0.20.2/src/basic_memory/mcp/tools/read_note.py +0 -432
  376. basic_memory-0.20.2/src/basic_memory/mcp/tools/recent_activity.py +0 -580
  377. basic_memory-0.20.2/src/basic_memory/mcp/tools/schema.py +0 -513
  378. basic_memory-0.20.2/src/basic_memory/mcp/tools/search.py +0 -646
  379. basic_memory-0.20.2/src/basic_memory/mcp/tools/ui_sdk.py +0 -134
  380. basic_memory-0.20.2/src/basic_memory/mcp/tools/utils.py +0 -575
  381. basic_memory-0.20.2/src/basic_memory/mcp/tools/view_note.py +0 -87
  382. basic_memory-0.20.2/src/basic_memory/mcp/tools/workspaces.py +0 -63
  383. basic_memory-0.20.2/src/basic_memory/mcp/tools/write_note.py +0 -325
  384. basic_memory-0.20.2/src/basic_memory/models/__init__.py +0 -15
  385. basic_memory-0.20.2/src/basic_memory/models/base.py +0 -10
  386. basic_memory-0.20.2/src/basic_memory/models/knowledge.py +0 -235
  387. basic_memory-0.20.2/src/basic_memory/models/search.py +0 -149
  388. basic_memory-0.20.2/src/basic_memory/repository/__init__.py +0 -11
  389. basic_memory-0.20.2/src/basic_memory/repository/embedding_provider.py +0 -18
  390. basic_memory-0.20.2/src/basic_memory/repository/embedding_provider_factory.py +0 -85
  391. basic_memory-0.20.2/src/basic_memory/repository/entity_repository.py +0 -528
  392. basic_memory-0.20.2/src/basic_memory/repository/fastembed_provider.py +0 -129
  393. basic_memory-0.20.2/src/basic_memory/repository/metadata_filters.py +0 -139
  394. basic_memory-0.20.2/src/basic_memory/repository/openai_provider.py +0 -99
  395. basic_memory-0.20.2/src/basic_memory/repository/postgres_search_repository.py +0 -879
  396. basic_memory-0.20.2/src/basic_memory/repository/project_repository.py +0 -140
  397. basic_memory-0.20.2/src/basic_memory/repository/repository.py +0 -386
  398. basic_memory-0.20.2/src/basic_memory/repository/search_repository.py +0 -122
  399. basic_memory-0.20.2/src/basic_memory/repository/search_repository_base.py +0 -1680
  400. basic_memory-0.20.2/src/basic_memory/repository/sqlite_search_repository.py +0 -880
  401. basic_memory-0.20.2/src/basic_memory/runtime.py +0 -53
  402. basic_memory-0.20.2/src/basic_memory/schema/parser.py +0 -280
  403. basic_memory-0.20.2/src/basic_memory/schemas/base.py +0 -301
  404. basic_memory-0.20.2/src/basic_memory/schemas/cloud.py +0 -75
  405. basic_memory-0.20.2/src/basic_memory/schemas/memory.py +0 -292
  406. basic_memory-0.20.2/src/basic_memory/schemas/response.py +0 -362
  407. basic_memory-0.20.2/src/basic_memory/schemas/search.py +0 -145
  408. basic_memory-0.20.2/src/basic_memory/schemas/sync_report.py +0 -72
  409. basic_memory-0.20.2/src/basic_memory/schemas/v2/__init__.py +0 -39
  410. basic_memory-0.20.2/src/basic_memory/schemas/v2/graph.py +0 -31
  411. basic_memory-0.20.2/src/basic_memory/services/context_service.py +0 -636
  412. basic_memory-0.20.2/src/basic_memory/services/entity_service.py +0 -1359
  413. basic_memory-0.20.2/src/basic_memory/services/file_service.py +0 -549
  414. basic_memory-0.20.2/src/basic_memory/services/initialization.py +0 -244
  415. basic_memory-0.20.2/src/basic_memory/services/link_resolver.py +0 -462
  416. basic_memory-0.20.2/src/basic_memory/services/project_service.py +0 -1143
  417. basic_memory-0.20.2/src/basic_memory/services/search_service.py +0 -634
  418. basic_memory-0.20.2/src/basic_memory/sync/sync_service.py +0 -1312
  419. basic_memory-0.20.2/src/basic_memory/sync/watch_service.py +0 -530
  420. basic_memory-0.20.2/src/basic_memory/utils.py +0 -572
  421. basic_memory-0.20.2/test-int/conftest.py +0 -361
  422. basic_memory-0.20.2/test-int/mcp/test_output_format_json_integration.py +0 -398
  423. basic_memory-0.20.2/test-int/mcp/test_pagination_integration.py +0 -305
  424. basic_memory-0.20.2/test-int/mcp/test_project_management_integration.py +0 -590
  425. basic_memory-0.20.2/test-int/mcp/test_read_note_integration.py +0 -102
  426. basic_memory-0.20.2/test-int/mcp/test_string_params_integration.py +0 -167
  427. basic_memory-0.20.2/test-int/semantic/conftest.py +0 -267
  428. basic_memory-0.20.2/test-int/semantic/test_search_diagnostics.py +0 -465
  429. basic_memory-0.20.2/test-int/semantic/test_semantic_coverage.py +0 -282
  430. basic_memory-0.20.2/test-int/semantic/test_semantic_quality.py +0 -157
  431. basic_memory-0.20.2/test-int/test_db_wal_mode.py +0 -166
  432. basic_memory-0.20.2/tests/api/v2/conftest.py +0 -59
  433. basic_memory-0.20.2/tests/api/v2/test_importer_router.py +0 -532
  434. basic_memory-0.20.2/tests/api/v2/test_knowledge_router.py +0 -854
  435. basic_memory-0.20.2/tests/api/v2/test_project_router.py +0 -425
  436. basic_memory-0.20.2/tests/api/v2/test_search_router.py +0 -516
  437. basic_memory-0.20.2/tests/cli/cloud/test_cloud_api_client_and_utils.py +0 -165
  438. basic_memory-0.20.2/tests/cli/cloud/test_rclone_config_and_bmignore_filters.py +0 -78
  439. basic_memory-0.20.2/tests/cli/cloud/test_upload_command_routing.py +0 -55
  440. basic_memory-0.20.2/tests/cli/conftest.py +0 -60
  441. basic_memory-0.20.2/tests/cli/test_auto_update.py +0 -399
  442. basic_memory-0.20.2/tests/cli/test_cli_exit.py +0 -79
  443. basic_memory-0.20.2/tests/cli/test_cli_tool_json_output.py +0 -738
  444. basic_memory-0.20.2/tests/cli/test_cloud_authentication.py +0 -196
  445. basic_memory-0.20.2/tests/cli/test_cloud_promo.py +0 -311
  446. basic_memory-0.20.2/tests/cli/test_db_reset_exit.py +0 -56
  447. basic_memory-0.20.2/tests/cli/test_ignore_utils.py +0 -315
  448. basic_memory-0.20.2/tests/cli/test_json_output.py +0 -420
  449. basic_memory-0.20.2/tests/cli/test_project_add_with_local_path.py +0 -175
  450. basic_memory-0.20.2/tests/cli/test_project_list_and_ls.py +0 -283
  451. basic_memory-0.20.2/tests/cli/test_project_set_cloud_local.py +0 -289
  452. basic_memory-0.20.2/tests/cli/test_workspace_commands.py +0 -184
  453. basic_memory-0.20.2/tests/conftest.py +0 -657
  454. basic_memory-0.20.2/tests/db/test_issue_254_foreign_key_constraints.py +0 -170
  455. basic_memory-0.20.2/tests/importers/test_importer_utils.py +0 -60
  456. basic_memory-0.20.2/tests/markdown/test_date_frontmatter_parsing.py +0 -361
  457. basic_memory-0.20.2/tests/markdown/test_entity_parser.py +0 -272
  458. basic_memory-0.20.2/tests/markdown/test_entity_parser_error_handling.py +0 -421
  459. basic_memory-0.20.2/tests/markdown/test_markdown_plugins.py +0 -257
  460. basic_memory-0.20.2/tests/markdown/test_markdown_processor.py +0 -186
  461. basic_memory-0.20.2/tests/markdown/test_observation_edge_cases.py +0 -122
  462. basic_memory-0.20.2/tests/markdown/test_parser_edge_cases.py +0 -184
  463. basic_memory-0.20.2/tests/markdown/test_relation_edge_cases.py +0 -124
  464. basic_memory-0.20.2/tests/mcp/clients/test_clients.py +0 -311
  465. basic_memory-0.20.2/tests/mcp/conftest.py +0 -56
  466. basic_memory-0.20.2/tests/mcp/test_async_client_modes.py +0 -288
  467. basic_memory-0.20.2/tests/mcp/test_permalink_collision_file_overwrite.py +0 -388
  468. basic_memory-0.20.2/tests/mcp/test_project_context.py +0 -575
  469. basic_memory-0.20.2/tests/mcp/test_recent_activity_prompt_modes.py +0 -108
  470. basic_memory-0.20.2/tests/mcp/test_tool_build_context.py +0 -222
  471. basic_memory-0.20.2/tests/mcp/test_tool_contracts.py +0 -148
  472. basic_memory-0.20.2/tests/mcp/test_tool_delete_note.py +0 -122
  473. basic_memory-0.20.2/tests/mcp/test_tool_edit_note.py +0 -772
  474. basic_memory-0.20.2/tests/mcp/test_tool_json_output_modes.py +0 -363
  475. basic_memory-0.20.2/tests/mcp/test_tool_project_management.py +0 -510
  476. basic_memory-0.20.2/tests/mcp/test_tool_read_note.py +0 -591
  477. basic_memory-0.20.2/tests/mcp/test_tool_recent_activity.py +0 -535
  478. basic_memory-0.20.2/tests/mcp/test_tool_schema.py +0 -561
  479. basic_memory-0.20.2/tests/mcp/test_tool_search.py +0 -1569
  480. basic_memory-0.20.2/tests/mcp/test_tool_utils.py +0 -207
  481. basic_memory-0.20.2/tests/mcp/test_tool_utils_cloud_auth.py +0 -56
  482. basic_memory-0.20.2/tests/mcp/test_tool_view_note.py +0 -243
  483. basic_memory-0.20.2/tests/mcp/test_tool_workspace_management.py +0 -194
  484. basic_memory-0.20.2/tests/mcp/test_tool_write_note.py +0 -1305
  485. basic_memory-0.20.2/tests/mcp/test_ui_sdk.py +0 -137
  486. basic_memory-0.20.2/tests/mcp/tools/test_chatgpt_tools.py +0 -234
  487. basic_memory-0.20.2/tests/repository/test_entity_repository.py +0 -1114
  488. basic_memory-0.20.2/tests/repository/test_entity_repository_upsert.py +0 -468
  489. basic_memory-0.20.2/tests/repository/test_fastembed_provider.py +0 -150
  490. basic_memory-0.20.2/tests/repository/test_hybrid_fusion.py +0 -269
  491. basic_memory-0.20.2/tests/repository/test_observation_repository.py +0 -468
  492. basic_memory-0.20.2/tests/repository/test_openai_provider.py +0 -302
  493. basic_memory-0.20.2/tests/repository/test_postgres_search_repository.py +0 -599
  494. basic_memory-0.20.2/tests/repository/test_postgres_search_repository_unit.py +0 -242
  495. basic_memory-0.20.2/tests/repository/test_relation_repository.py +0 -506
  496. basic_memory-0.20.2/tests/repository/test_repository.py +0 -189
  497. basic_memory-0.20.2/tests/repository/test_search_repository.py +0 -974
  498. basic_memory-0.20.2/tests/repository/test_search_repository_edit_bug_fix.py +0 -271
  499. basic_memory-0.20.2/tests/repository/test_semantic_search_base.py +0 -375
  500. basic_memory-0.20.2/tests/repository/test_sqlite_vector_search_repository.py +0 -314
  501. basic_memory-0.20.2/tests/repository/test_vector_pagination.py +0 -146
  502. basic_memory-0.20.2/tests/repository/test_vector_threshold.py +0 -439
  503. basic_memory-0.20.2/tests/schema/test_parser.py +0 -333
  504. basic_memory-0.20.2/tests/schema/test_resolver.py +0 -162
  505. basic_memory-0.20.2/tests/schema/test_validator.py +0 -413
  506. basic_memory-0.20.2/tests/schemas/test_schemas.py +0 -693
  507. basic_memory-0.20.2/tests/schemas/test_search.py +0 -129
  508. basic_memory-0.20.2/tests/services/test_entity_service.py +0 -2428
  509. basic_memory-0.20.2/tests/services/test_entity_service_disable_permalinks.py +0 -220
  510. basic_memory-0.20.2/tests/services/test_file_service.py +0 -256
  511. basic_memory-0.20.2/tests/services/test_initialization.py +0 -424
  512. basic_memory-0.20.2/tests/services/test_link_resolver.py +0 -921
  513. basic_memory-0.20.2/tests/services/test_project_removal_bug.py +0 -138
  514. basic_memory-0.20.2/tests/services/test_project_service.py +0 -1547
  515. basic_memory-0.20.2/tests/services/test_project_service_embedding_status.py +0 -274
  516. basic_memory-0.20.2/tests/services/test_search_service.py +0 -1288
  517. basic_memory-0.20.2/tests/services/test_semantic_search.py +0 -91
  518. basic_memory-0.20.2/tests/services/test_task_scheduler_semantic.py +0 -130
  519. basic_memory-0.20.2/tests/sync/test_sync_service.py +0 -1812
  520. basic_memory-0.20.2/tests/sync/test_sync_service_incremental.py +0 -790
  521. basic_memory-0.20.2/tests/sync/test_watch_service.py +0 -533
  522. basic_memory-0.20.2/tests/sync/test_watch_service_edge_cases.py +0 -271
  523. basic_memory-0.20.2/tests/sync/test_watch_service_reload.py +0 -339
  524. basic_memory-0.20.2/tests/test_coerce.py +0 -58
  525. basic_memory-0.20.2/tests/test_config.py +0 -1409
  526. basic_memory-0.20.2/tests/test_production_cascade_delete.py +0 -353
  527. basic_memory-0.20.2/tests/test_rclone_commands.py +0 -555
  528. basic_memory-0.20.2/tests/utils/test_file_utils.py +0 -550
  529. basic_memory-0.20.2/tests/utils/test_parse_tags.py +0 -68
  530. basic_memory-0.20.2/tests/utils/test_permalink_formatting.py +0 -126
  531. basic_memory-0.20.2/tests/utils/test_setup_logging.py +0 -162
  532. basic_memory-0.20.2/tests/utils/test_validate_project_path.py +0 -413
  533. basic_memory-0.20.2/ui/tool-ui-react/package-lock.json +0 -2453
  534. basic_memory-0.20.2/ui/tool-ui-react/src/components/tool-ui/data-table/utilities.ts +0 -186
  535. basic_memory-0.20.2/uv.lock +0 -3465
  536. {basic_memory-0.20.2 → basic_memory-0.21.0}/.claude/commands/release/beta.md +0 -0
  537. {basic_memory-0.20.2 → basic_memory-0.21.0}/.claude/commands/release/changelog.md +0 -0
  538. {basic_memory-0.20.2 → basic_memory-0.21.0}/.claude/commands/release/release-check.md +0 -0
  539. {basic_memory-0.20.2 → basic_memory-0.21.0}/.claude/commands/release/release.md +0 -0
  540. {basic_memory-0.20.2 → basic_memory-0.21.0}/.claude/commands/spec.md +0 -0
  541. {basic_memory-0.20.2 → basic_memory-0.21.0}/.claude/commands/test-live.md +0 -0
  542. {basic_memory-0.20.2 → basic_memory-0.21.0}/.dockerignore +0 -0
  543. {basic_memory-0.20.2 → basic_memory-0.21.0}/.env.example +0 -0
  544. {basic_memory-0.20.2 → basic_memory-0.21.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  545. {basic_memory-0.20.2 → basic_memory-0.21.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  546. {basic_memory-0.20.2 → basic_memory-0.21.0}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  547. {basic_memory-0.20.2 → basic_memory-0.21.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  548. {basic_memory-0.20.2 → basic_memory-0.21.0}/.github/dependabot.yml +0 -0
  549. {basic_memory-0.20.2 → basic_memory-0.21.0}/.gitignore +0 -0
  550. {basic_memory-0.20.2 → basic_memory-0.21.0}/.python-version +0 -0
  551. {basic_memory-0.20.2 → basic_memory-0.21.0}/CITATION.cff +0 -0
  552. {basic_memory-0.20.2 → basic_memory-0.21.0}/CLA.md +0 -0
  553. {basic_memory-0.20.2 → basic_memory-0.21.0}/CLAUDE.md +0 -0
  554. {basic_memory-0.20.2 → basic_memory-0.21.0}/CODE_OF_CONDUCT.md +0 -0
  555. {basic_memory-0.20.2 → basic_memory-0.21.0}/CONTRIBUTING.md +0 -0
  556. {basic_memory-0.20.2 → basic_memory-0.21.0}/Dockerfile +0 -0
  557. {basic_memory-0.20.2 → basic_memory-0.21.0}/LICENSE +0 -0
  558. {basic_memory-0.20.2 → basic_memory-0.21.0}/NOTE-FORMAT.md +0 -0
  559. {basic_memory-0.20.2 → basic_memory-0.21.0}/docker-compose-postgres.yml +0 -0
  560. {basic_memory-0.20.2 → basic_memory-0.21.0}/docs/ARCHITECTURE.md +0 -0
  561. {basic_memory-0.20.2 → basic_memory-0.21.0}/docs/Docker.md +0 -0
  562. {basic_memory-0.20.2 → basic_memory-0.21.0}/docs/SPEC-PER-PROJECT-ROUTING.md +0 -0
  563. {basic_memory-0.20.2 → basic_memory-0.21.0}/docs/character-handling.md +0 -0
  564. {basic_memory-0.20.2 → basic_memory-0.21.0}/docs/cloud-semantic-search-value.md +0 -0
  565. {basic_memory-0.20.2 → basic_memory-0.21.0}/docs/mcp-ui-bakeoff-instructions.md +0 -0
  566. {basic_memory-0.20.2 → basic_memory-0.21.0}/docs/metadata-search.md +0 -0
  567. {basic_memory-0.20.2 → basic_memory-0.21.0}/docs/post-v0.18.0-test-plan.md +0 -0
  568. {basic_memory-0.20.2 → basic_memory-0.21.0}/docs/releases/v0.19.0.md +0 -0
  569. {basic_memory-0.20.2 → basic_memory-0.21.0}/docs/semantic-search-test-log.md +0 -0
  570. {basic_memory-0.20.2 → basic_memory-0.21.0}/docs/semantic-search.md +0 -0
  571. {basic_memory-0.20.2 → basic_memory-0.21.0}/docs/specs/SPEC-LOCAL-PLUS-PUBLISH.md +0 -0
  572. {basic_memory-0.20.2 → basic_memory-0.21.0}/docs/specs/SPEC-SCHEMA-IMPL.md +0 -0
  573. {basic_memory-0.20.2 → basic_memory-0.21.0}/docs/specs/SPEC-SCHEMA.md +0 -0
  574. {basic_memory-0.20.2 → basic_memory-0.21.0}/docs/testing-coverage.md +0 -0
  575. {basic_memory-0.20.2 → basic_memory-0.21.0}/llms-install.md +0 -0
  576. {basic_memory-0.20.2 → basic_memory-0.21.0}/smithery.yaml +0 -0
  577. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/alembic.ini +0 -0
  578. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/migrations.py +0 -0
  579. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/script.py.mako +0 -0
  580. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/314f1ea54dc4_add_postgres_full_text_search_support_.py +0 -0
  581. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
  582. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
  583. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +0 -0
  584. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +0 -0
  585. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/6830751f5fb6_merge_multiple_heads.py +0 -0
  586. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/9d9c1cb7d8f5_add_mtime_and_size_columns_to_entity_.py +0 -0
  587. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/a1b2c3d4e5f6_fix_project_foreign_keys.py +0 -0
  588. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/a2b3c4d5e6f7_add_search_index_entity_cascade.py +0 -0
  589. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
  590. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
  591. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/d7e8f9a0b1c2_add_structured_metadata_indexes.py +0 -0
  592. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/e7e1f4367280_add_scan_watermark_tracking_to_project.py +0 -0
  593. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py +0 -0
  594. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py +0 -0
  595. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/h1b2c3d4e5f6_add_postgres_vector_search_tables.py +0 -0
  596. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/i2c3d4e5f6g7_auto_backfill_semantic_embeddings.py +0 -0
  597. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/j3d4e5f6g7h8_rename_entity_type_to_note_type.py +0 -0
  598. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/alembic/versions/k4e5f6g7h8i9_add_created_by_and_last_updated_by_to_entity.py +0 -0
  599. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/api/__init__.py +0 -0
  600. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/api/container.py +0 -0
  601. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/api/template_loader.py +0 -0
  602. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/api/v2/__init__.py +0 -0
  603. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/api/v2/routers/__init__.py +0 -0
  604. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/api/v2/routers/directory_router.py +0 -0
  605. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/api/v2/routers/schema_router.py +0 -0
  606. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/__init__.py +0 -0
  607. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/analytics.py +0 -0
  608. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/auth.py +0 -0
  609. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/cloud/__init__.py +0 -0
  610. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/cloud/rclone_config.py +0 -0
  611. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/cloud/restore.py +0 -0
  612. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/cloud/schemas.py +0 -0
  613. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/cloud/snapshot.py +0 -0
  614. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/cloud/upload.py +0 -0
  615. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/command_utils.py +0 -0
  616. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/format.py +0 -0
  617. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/import_chatgpt.py +0 -0
  618. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/import_claude_conversations.py +0 -0
  619. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/import_claude_projects.py +0 -0
  620. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/import_memory_json.py +0 -0
  621. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/mcp.py +0 -0
  622. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/routing.py +0 -0
  623. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/schema.py +0 -0
  624. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/status.py +0 -0
  625. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/commands/update.py +0 -0
  626. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/container.py +0 -0
  627. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/cli/promo.py +0 -0
  628. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/deps/__init__.py +0 -0
  629. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/deps/config.py +0 -0
  630. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/deps/db.py +0 -0
  631. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/deps/importers.py +0 -0
  632. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/deps/projects.py +0 -0
  633. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/deps/repositories.py +0 -0
  634. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/deps.py +0 -0
  635. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/importers/__init__.py +0 -0
  636. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/importers/base.py +0 -0
  637. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/importers/chatgpt_importer.py +0 -0
  638. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/importers/claude_conversations_importer.py +0 -0
  639. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/importers/claude_projects_importer.py +0 -0
  640. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/importers/memory_json_importer.py +0 -0
  641. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/markdown/__init__.py +0 -0
  642. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/markdown/markdown_processor.py +0 -0
  643. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/markdown/utils.py +0 -0
  644. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/__init__.py +0 -0
  645. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/clients/__init__.py +0 -0
  646. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/clients/directory.py +0 -0
  647. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/clients/project.py +0 -0
  648. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/clients/schema.py +0 -0
  649. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/container.py +0 -0
  650. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/formatting.py +0 -0
  651. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/prompts/__init__.py +0 -0
  652. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +0 -0
  653. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/prompts/continue_conversation.py +0 -0
  654. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/prompts/recent_activity.py +0 -0
  655. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/prompts/search.py +0 -0
  656. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/resources/__init__.py +0 -0
  657. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/resources/cloud_info.md +0 -0
  658. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/resources/project_info.py +0 -0
  659. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/resources/release_notes.md +0 -0
  660. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/resources/ui.py +0 -0
  661. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/tools/__init__.py +0 -0
  662. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/tools/cloud_info.py +0 -0
  663. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/tools/release_notes.py +0 -0
  664. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/ui/__init__.py +0 -0
  665. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/ui/html/note-preview-mcp-ui.html +0 -0
  666. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/ui/html/note-preview-tool-ui.html +0 -0
  667. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/ui/html/note-preview-vanilla.html +0 -0
  668. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/ui/html/search-results-mcp-ui.html +0 -0
  669. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/ui/html/search-results-tool-ui.html +0 -0
  670. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/ui/html/search-results-vanilla.html +0 -0
  671. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/ui/sdk.py +0 -0
  672. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/mcp/ui/templates.py +0 -0
  673. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/models/project.py +0 -0
  674. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/project_resolver.py +0 -0
  675. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/repository/observation_repository.py +0 -0
  676. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/repository/project_info_repository.py +0 -0
  677. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/repository/relation_repository.py +0 -0
  678. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/repository/search_index_row.py +0 -0
  679. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/repository/semantic_errors.py +0 -0
  680. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/schema/__init__.py +0 -0
  681. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/schema/diff.py +0 -0
  682. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/schema/inference.py +0 -0
  683. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/schema/resolver.py +0 -0
  684. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/schema/validator.py +0 -0
  685. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/schemas/__init__.py +0 -0
  686. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/schemas/delete.py +0 -0
  687. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/schemas/directory.py +0 -0
  688. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/schemas/importer.py +0 -0
  689. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/schemas/project_info.py +0 -0
  690. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/schemas/prompt.py +0 -0
  691. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/schemas/request.py +0 -0
  692. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/schemas/schema.py +0 -0
  693. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/schemas/v2/entity.py +0 -0
  694. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/schemas/v2/resource.py +0 -0
  695. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/services/__init__.py +0 -0
  696. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/services/directory_service.py +0 -0
  697. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/services/exceptions.py +0 -0
  698. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/services/service.py +0 -0
  699. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/sync/__init__.py +0 -0
  700. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/sync/background_sync.py +0 -0
  701. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/sync/coordinator.py +0 -0
  702. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
  703. {basic_memory-0.20.2 → basic_memory-0.21.0}/src/basic_memory/templates/prompts/search.hbs +0 -0
  704. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/BENCHMARKS.md +0 -0
  705. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/cli/test_cli_tool_edit_note_integration.py +0 -0
  706. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/cli/test_cli_tool_json_failure_integration.py +0 -0
  707. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/cli/test_cli_tool_json_integration.py +0 -0
  708. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/cli/test_project_commands_integration.py +0 -0
  709. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/cli/test_routing_integration.py +0 -0
  710. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/cli/test_search_notes_meta_integration.py +0 -0
  711. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/cli/test_version_integration.py +0 -0
  712. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/compare_search_benchmarks.py +0 -0
  713. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-01.md +0 -0
  714. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-02.md +0 -0
  715. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-03.md +0 -0
  716. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-04.md +0 -0
  717. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-05.md +0 -0
  718. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-06.md +0 -0
  719. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-07.md +0 -0
  720. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-08.md +0 -0
  721. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-09.md +0 -0
  722. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-10.md +0 -0
  723. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-11.md +0 -0
  724. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-12.md +0 -0
  725. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-13.md +0 -0
  726. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-14.md +0 -0
  727. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-15.md +0 -0
  728. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-16.md +0 -0
  729. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-17.md +0 -0
  730. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-18.md +0 -0
  731. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-19.md +0 -0
  732. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/people/drift-person-20.md +0 -0
  733. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/drift/schema/Person.md +0 -0
  734. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/edge-cases/array-single.md +0 -0
  735. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/edge-cases/empty-note.md +0 -0
  736. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/edge-cases/explicit-overrides-type.md +0 -0
  737. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/edge-cases/inline-and-type.md +0 -0
  738. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/edge-cases/no-frontmatter.md +0 -0
  739. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/edge-cases/relation-only.md +0 -0
  740. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/edge-cases/type-no-schema.md +0 -0
  741. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/edge-cases/unicode-fields.md +0 -0
  742. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/ada-lovelace.md +0 -0
  743. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/alan-turing.md +0 -0
  744. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/anders-hejlsberg.md +0 -0
  745. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/andrej-karpathy.md +0 -0
  746. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/barbara-liskov.md +0 -0
  747. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/bjarne-stroustrup.md +0 -0
  748. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/brendan-eich.md +0 -0
  749. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/claude-shannon.md +0 -0
  750. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/dennis-ritchie.md +0 -0
  751. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/dijkstra.md +0 -0
  752. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/donald-knuth.md +0 -0
  753. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/fei-fei-li.md +0 -0
  754. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/geoffrey-hinton.md +0 -0
  755. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/grace-hopper.md +0 -0
  756. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/guido-van-rossum.md +0 -0
  757. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/james-gosling.md +0 -0
  758. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/john-carmack.md +0 -0
  759. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/ken-thompson.md +0 -0
  760. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/larry-page.md +0 -0
  761. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/leslie-lamport.md +0 -0
  762. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/linus-torvalds.md +0 -0
  763. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/margaret-hamilton.md +0 -0
  764. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/rasmus-lerdorf.md +0 -0
  765. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/richard-stallman.md +0 -0
  766. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/rob-pike.md +0 -0
  767. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/satoshi-nakamoto.md +0 -0
  768. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/tim-berners-lee.md +0 -0
  769. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/vint-cerf.md +0 -0
  770. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/yann-lecun.md +0 -0
  771. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/inference/people/yukihiro-matsumoto.md +0 -0
  772. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/schemas/Book.md +0 -0
  773. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/schemas/Meeting.md +0 -0
  774. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/schemas/Person.md +0 -0
  775. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/schemas/SoftwareProject.md +0 -0
  776. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/schemas/StrictSchema.md +0 -0
  777. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/valid/basic-memory.md +0 -0
  778. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/valid/explicit-ref-note.md +0 -0
  779. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/valid/no-schema-note.md +0 -0
  780. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/valid/paul-graham.md +0 -0
  781. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/valid/rich-hickey.md +0 -0
  782. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/valid/standup-2024-01-15.md +0 -0
  783. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/warnings/extra-observations.md +0 -0
  784. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/warnings/missing-multiple.md +0 -0
  785. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/warnings/missing-required.md +0 -0
  786. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/fixtures/schema/warnings/wrong-enum-value.md +0 -0
  787. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_build_context_underscore.py +0 -0
  788. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_build_context_validation.py +0 -0
  789. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_chatgpt_tools_integration.py +0 -0
  790. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_default_project_mode_integration.py +0 -0
  791. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_delete_directory_integration.py +0 -0
  792. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_delete_note_integration.py +0 -0
  793. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_edit_note_integration.py +0 -0
  794. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_lifespan_shutdown_sync_task_cancellation_integration.py +0 -0
  795. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_list_directory_integration.py +0 -0
  796. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_move_directory_integration.py +0 -0
  797. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_move_note_integration.py +0 -0
  798. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_permalink_collision_integration.py +0 -0
  799. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_project_state_sync_integration.py +0 -0
  800. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_read_content_integration.py +0 -0
  801. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_search_integration.py +0 -0
  802. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_single_project_mcp_integration.py +0 -0
  803. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_smoke_integration.py +0 -0
  804. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_ui_sdk_integration.py +0 -0
  805. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/mcp/test_write_note_integration.py +0 -0
  806. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/semantic/__init__.py +0 -0
  807. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/semantic/corpus.py +0 -0
  808. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/semantic/metrics.py +0 -0
  809. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/semantic/report.py +0 -0
  810. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/semantic/test_multiterm_semantic_queries.py +0 -0
  811. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/test_disable_permalinks_integration.py +0 -0
  812. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/test_schema/__init__.py +0 -0
  813. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/test_schema/conftest.py +0 -0
  814. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/test_schema/helpers.py +0 -0
  815. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/test_schema/test_diff_integration.py +0 -0
  816. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/test_schema/test_inference_integration.py +0 -0
  817. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/test_schema/test_parser_integration.py +0 -0
  818. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/test_schema/test_validator_integration.py +0 -0
  819. {basic_memory-0.20.2 → basic_memory-0.21.0}/test-int/test_search_performance_benchmark.py +0 -0
  820. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/Non-MarkdownFileSupport.pdf +0 -0
  821. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/README.md +0 -0
  822. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/Screenshot.png +0 -0
  823. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/__init__.py +0 -0
  824. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/api/v2/__init__.py +0 -0
  825. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/api/v2/test_directory_router.py +0 -0
  826. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/api/v2/test_memory_router.py +0 -0
  827. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/api/v2/test_prompt_router.py +0 -0
  828. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/api/v2/test_resource_router.py +0 -0
  829. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/api/v2/test_schema_router.py +0 -0
  830. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/cloud/test_upload_path.py +0 -0
  831. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_analytics.py +0 -0
  832. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_auth_cli_auth.py +0 -0
  833. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_cli_container.py +0 -0
  834. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_cli_schema.py +0 -0
  835. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_cli_tool_exit.py +0 -0
  836. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_cli_tools.py +0 -0
  837. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_cloud_status.py +0 -0
  838. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_import_chatgpt.py +0 -0
  839. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_import_claude_conversations.py +0 -0
  840. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_import_claude_projects.py +0 -0
  841. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_import_memory_json.py +0 -0
  842. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_project_info_errors.py +0 -0
  843. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_restore_commands.py +0 -0
  844. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_routing.py +0 -0
  845. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_snapshot_commands.py +0 -0
  846. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_update_command.py +0 -0
  847. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/cli/test_upload.py +0 -0
  848. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/importers/test_conversation_indexing.py +0 -0
  849. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/importers/test_importer_base.py +0 -0
  850. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/markdown/__init__.py +0 -0
  851. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/markdown/test_markdown_utils.py +0 -0
  852. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/markdown/test_task_detection.py +0 -0
  853. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/clients/__init__.py +0 -0
  854. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_async_client_force_local.py +0 -0
  855. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_client_schema.py +0 -0
  856. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_mcp_container.py +0 -0
  857. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_obsidian_yaml_formatting.py +0 -0
  858. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_prompt_tool_delegation.py +0 -0
  859. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_prompts.py +0 -0
  860. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_resources.py +0 -0
  861. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_server_lifespan_branches.py +0 -0
  862. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_tool_canvas.py +0 -0
  863. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_tool_cloud_discovery.py +0 -0
  864. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_tool_list_directory.py +0 -0
  865. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_tool_move_note.py +0 -0
  866. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_tool_read_content.py +0 -0
  867. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_tool_resource.py +0 -0
  868. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_tool_write_note_kebab_filenames.py +0 -0
  869. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_tool_write_note_metadata.py +0 -0
  870. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_ui_resources.py +0 -0
  871. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/mcp/test_ui_templates.py +0 -0
  872. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/repository/test_distance_to_similarity.py +0 -0
  873. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/repository/test_entity_upsert_issue_187.py +0 -0
  874. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/repository/test_metadata_filters.py +0 -0
  875. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/repository/test_metadata_filters_edge_cases.py +0 -0
  876. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/repository/test_project_info_repository.py +0 -0
  877. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/repository/test_project_repository.py +0 -0
  878. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/repository/test_search_index_row.py +0 -0
  879. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/repository/test_search_text_with_metadata_filters.py +0 -0
  880. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/schema/__init__.py +0 -0
  881. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/schema/test_diff.py +0 -0
  882. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/schema/test_inference.py +0 -0
  883. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/schemas/test_base_timeframe_minimum.py +0 -0
  884. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/schemas/test_memory_serialization.py +0 -0
  885. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/schemas/test_memory_url.py +0 -0
  886. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/schemas/test_memory_url_validation.py +0 -0
  887. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/schemas/test_relation_response_reference_resolution.py +0 -0
  888. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/services/test_context_service.py +0 -0
  889. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/services/test_directory_service.py +0 -0
  890. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/services/test_initialization_cloud_mode_branches.py +0 -0
  891. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/services/test_project_service_cloud_info.py +0 -0
  892. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/services/test_project_service_operations.py +0 -0
  893. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/sync/test_character_conflicts.py +0 -0
  894. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/sync/test_coordinator.py +0 -0
  895. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/sync/test_sync_wikilink_issue.py +0 -0
  896. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/sync/test_tmp_files.py +0 -0
  897. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/sync/test_watch_service_atomic_adds.py +0 -0
  898. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/sync/test_watch_service_stress.py +0 -0
  899. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/test_deps.py +0 -0
  900. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/test_project_resolver.py +0 -0
  901. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/test_runtime.py +0 -0
  902. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/utils/test_frontmatter_obsidian_compatible.py +0 -0
  903. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/utils/test_timezone_utils.py +0 -0
  904. {basic_memory-0.20.2 → basic_memory-0.21.0}/tests/utils/test_utf8_handling.py +0 -0
  905. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/.gitignore +0 -0
  906. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/build.mjs +0 -0
  907. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/package.json +0 -0
  908. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/data-table/_adapter.tsx +0 -0
  909. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/data-table/data-table.tsx +0 -0
  910. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/data-table/error-boundary.tsx +0 -0
  911. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/data-table/formatters.tsx +0 -0
  912. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/data-table/index.tsx +0 -0
  913. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/data-table/schema.ts +0 -0
  914. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/data-table/types.ts +0 -0
  915. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/shared/_adapter.tsx +0 -0
  916. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/shared/action-buttons.tsx +0 -0
  917. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/shared/actions-config.ts +0 -0
  918. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/shared/error-boundary.tsx +0 -0
  919. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/shared/index.ts +0 -0
  920. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/shared/media/aspect-ratio.ts +0 -0
  921. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/shared/media/format-utils.ts +0 -0
  922. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/shared/media/index.ts +0 -0
  923. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/shared/media/overlay-gradient.ts +0 -0
  924. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/shared/media/sanitize-href.ts +0 -0
  925. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/shared/parse.ts +0 -0
  926. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/shared/schema.ts +0 -0
  927. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/shared/use-action-buttons.tsx +0 -0
  928. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/shared/use-copy-to-clipboard.ts +0 -0
  929. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/tool-ui/shared/utils.ts +0 -0
  930. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/ui/accordion.tsx +0 -0
  931. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/ui/badge.tsx +0 -0
  932. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/ui/button.tsx +0 -0
  933. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/ui/dropdown-menu.tsx +0 -0
  934. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/ui/table.tsx +0 -0
  935. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/components/ui/tooltip.tsx +0 -0
  936. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/note-preview.tsx +0 -0
  937. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/search-results.tsx +0 -0
  938. {basic_memory-0.20.2 → basic_memory-0.21.0}/ui/tool-ui-react/src/styles.css +0 -0
  939. {basic_memory-0.20.2 → basic_memory-0.21.0}/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
+ }