basic-memory 0.17.0__tar.gz → 0.17.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of basic-memory might be problematic. Click here for more details.
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.claude/commands/release/release.md +31 -1
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/claude-code-review.yml +1 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/test.yml +57 -3
- basic_memory-0.17.7/.python-version +1 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/CHANGELOG.md +108 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/CLAUDE.md +26 -4
- {basic_memory-0.17.0 → basic_memory-0.17.7}/Dockerfile +10 -4
- {basic_memory-0.17.0 → basic_memory-0.17.7}/PKG-INFO +7 -37
- {basic_memory-0.17.0 → basic_memory-0.17.7}/README.md +1 -33
- basic_memory-0.17.7/docs/ARCHITECTURE.md +412 -0
- basic_memory-0.17.7/docs/testing-coverage.md +28 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/justfile +55 -18
- {basic_memory-0.17.0 → basic_memory-0.17.7}/pyproject.toml +13 -10
- basic_memory-0.17.7/server.json +22 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/__init__.py +1 -1
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/env.py +17 -9
- basic_memory-0.17.7/src/basic_memory/alembic/versions/6830751f5fb6_merge_multiple_heads.py +24 -0
- basic_memory-0.17.7/src/basic_memory/alembic/versions/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py +173 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/app.py +31 -43
- basic_memory-0.17.7/src/basic_memory/api/container.py +133 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/knowledge_router.py +4 -3
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/project_router.py +17 -5
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/resource_router.py +7 -4
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/directory_router.py +13 -13
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/importer_router.py +18 -19
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/knowledge_router.py +120 -108
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/memory_router.py +11 -11
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/project_router.py +86 -71
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/prompt_router.py +16 -17
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/resource_router.py +62 -59
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/search_router.py +11 -11
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/app.py +10 -18
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/auth.py +27 -4
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/__init__.py +1 -2
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/api_client.py +20 -5
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/cloud_utils.py +13 -6
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/core_commands.py +5 -7
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/rclone_commands.py +48 -21
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/upload.py +10 -3
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/upload_command.py +2 -2
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/command_utils.py +27 -5
- basic_memory-0.17.7/src/basic_memory/cli/commands/db.py +105 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/format.py +2 -2
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/import_chatgpt.py +12 -9
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/import_claude_conversations.py +12 -9
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/import_claude_projects.py +12 -9
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/import_memory_json.py +12 -9
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/project.py +21 -22
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/tool.py +7 -7
- basic_memory-0.17.7/src/basic_memory/cli/container.py +84 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/main.py +0 -1
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/config.py +5 -16
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/db.py +31 -7
- basic_memory-0.17.7/src/basic_memory/deps/__init__.py +293 -0
- basic_memory-0.17.7/src/basic_memory/deps/config.py +26 -0
- basic_memory-0.17.7/src/basic_memory/deps/db.py +56 -0
- basic_memory-0.17.7/src/basic_memory/deps/importers.py +200 -0
- basic_memory-0.17.7/src/basic_memory/deps/projects.py +236 -0
- basic_memory-0.17.7/src/basic_memory/deps/repositories.py +183 -0
- basic_memory-0.17.7/src/basic_memory/deps/services.py +484 -0
- basic_memory-0.17.7/src/basic_memory/deps.py +16 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/file_utils.py +4 -4
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/ignore_utils.py +5 -5
- basic_memory-0.17.7/src/basic_memory/importers/base.py +100 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/importers/chatgpt_importer.py +17 -4
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/importers/claude_conversations_importer.py +23 -11
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/importers/claude_projects_importer.py +50 -14
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/importers/memory_json_importer.py +36 -16
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/markdown/markdown_processor.py +48 -4
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/markdown/utils.py +7 -0
- basic_memory-0.17.7/src/basic_memory/mcp/clients/__init__.py +28 -0
- basic_memory-0.17.7/src/basic_memory/mcp/clients/directory.py +70 -0
- basic_memory-0.17.7/src/basic_memory/mcp/clients/knowledge.py +176 -0
- basic_memory-0.17.7/src/basic_memory/mcp/clients/memory.py +120 -0
- basic_memory-0.17.7/src/basic_memory/mcp/clients/project.py +89 -0
- basic_memory-0.17.7/src/basic_memory/mcp/clients/resource.py +71 -0
- basic_memory-0.17.7/src/basic_memory/mcp/clients/search.py +65 -0
- basic_memory-0.17.7/src/basic_memory/mcp/container.py +108 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/project_context.py +47 -33
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +2 -2
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/prompts/recent_activity.py +2 -2
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/prompts/utils.py +3 -3
- basic_memory-0.17.7/src/basic_memory/mcp/server.py +61 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/build_context.py +12 -14
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/canvas.py +8 -8
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/chatgpt_tools.py +1 -4
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/delete_note.py +18 -13
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/edit_note.py +10 -11
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/list_directory.py +5 -18
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/move_note.py +29 -33
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/project_management.py +25 -26
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/read_content.py +4 -4
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/read_note.py +11 -15
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/recent_activity.py +40 -38
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/search.py +15 -11
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/utils.py +14 -10
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/view_note.py +0 -2
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/write_note.py +18 -18
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/models/knowledge.py +5 -1
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/models/project.py +5 -1
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/models/search.py +9 -0
- basic_memory-0.17.7/src/basic_memory/project_resolver.py +222 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/entity_repository.py +32 -16
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/postgres_search_repository.py +92 -20
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/project_repository.py +12 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/relation_repository.py +7 -7
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/repository.py +4 -3
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/search_repository.py +11 -4
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/search_repository_base.py +2 -2
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/sqlite_search_repository.py +5 -7
- basic_memory-0.17.7/src/basic_memory/runtime.py +61 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/base.py +2 -2
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/directory.py +2 -1
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/memory.py +2 -2
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/project_info.py +1 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/response.py +84 -27
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/sync_report.py +1 -1
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/v2/entity.py +13 -9
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/v2/resource.py +2 -1
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/context_service.py +7 -5
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/directory_service.py +13 -11
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/file_service.py +12 -8
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/project_service.py +33 -25
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/search_service.py +29 -11
- basic_memory-0.17.7/src/basic_memory/sync/__init__.py +7 -0
- basic_memory-0.17.7/src/basic_memory/sync/coordinator.py +160 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/sync/sync_service.py +11 -3
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/sync/watch_service.py +12 -7
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/utils.py +5 -5
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/conftest.py +2 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_lifespan_shutdown_sync_task_cancellation_integration.py +24 -11
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_write_note_integration.py +1 -0
- basic_memory-0.17.7/tests/api/test_api_container.py +62 -0
- basic_memory-0.17.7/tests/api/test_async_client.py +53 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_directory_router.py +0 -200
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_knowledge_router.py +0 -36
- basic_memory-0.17.7/tests/api/test_management_router.py +121 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_project_router.py +4 -2
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_relation_background_resolution.py +21 -9
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/conftest.py +3 -3
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_knowledge_router.py +66 -62
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_project_router.py +61 -53
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_resource_router.py +28 -22
- basic_memory-0.17.7/tests/cli/cloud/test_cloud_api_client_and_utils.py +165 -0
- basic_memory-0.17.7/tests/cli/cloud/test_rclone_config_and_bmignore_filters.py +78 -0
- basic_memory-0.17.7/tests/cli/cloud/test_upload_path.py +73 -0
- basic_memory-0.17.7/tests/cli/test_auth_cli_auth.py +152 -0
- basic_memory-0.17.7/tests/cli/test_cli_container.py +96 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_cli_tool_exit.py +22 -3
- basic_memory-0.17.7/tests/cli/test_cli_tools.py +38 -0
- basic_memory-0.17.7/tests/cli/test_cloud_authentication.py +223 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_import_memory_json.py +5 -3
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_project_add_with_local_path.py +35 -23
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_upload.py +84 -182
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/conftest.py +30 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/importers/test_conversation_indexing.py +4 -2
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/importers/test_importer_base.py +28 -43
- basic_memory-0.17.7/tests/markdown/test_markdown_utils.py +163 -0
- basic_memory-0.17.7/tests/mcp/clients/__init__.py +0 -0
- basic_memory-0.17.7/tests/mcp/clients/test_clients.py +311 -0
- basic_memory-0.17.7/tests/mcp/test_async_client_modes.py +80 -0
- basic_memory-0.17.7/tests/mcp/test_mcp_container.py +93 -0
- basic_memory-0.17.7/tests/mcp/test_project_context.py +103 -0
- basic_memory-0.17.7/tests/mcp/test_recent_activity_prompt_modes.py +111 -0
- basic_memory-0.17.7/tests/mcp/test_server_lifespan_branches.py +33 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_move_note.py +28 -68
- basic_memory-0.17.7/tests/mcp/test_tool_project_management.py +49 -0
- basic_memory-0.17.7/tests/mcp/test_tool_read_content.py +168 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_read_note.py +83 -25
- basic_memory-0.17.7/tests/mcp/test_tool_recent_activity.py +411 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_search.py +56 -20
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_utils.py +54 -31
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_view_note.py +12 -57
- basic_memory-0.17.7/tests/mcp/tools/test_chatgpt_tools.py +215 -0
- basic_memory-0.17.7/tests/repository/test_postgres_search_repository.py +199 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_search_repository.py +163 -12
- basic_memory-0.17.7/tests/schemas/test_relation_response_reference_resolution.py +39 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/schemas/test_schemas.py +43 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_entity_service.py +6 -6
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_file_service.py +37 -19
- basic_memory-0.17.7/tests/services/test_initialization.py +126 -0
- basic_memory-0.17.7/tests/services/test_initialization_cloud_mode_branches.py +25 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_project_service.py +4 -12
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_project_service_operations.py +0 -40
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_search_service.py +8 -40
- basic_memory-0.17.7/tests/sync/test_coordinator.py +135 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/sync/test_sync_service.py +74 -503
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/sync/test_watch_service.py +10 -8
- basic_memory-0.17.7/tests/sync/test_watch_service_atomic_adds.py +51 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/sync/test_watch_service_edge_cases.py +5 -15
- basic_memory-0.17.7/tests/sync/test_watch_service_reload.py +257 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/test_deps.py +26 -0
- basic_memory-0.17.7/tests/test_project_resolver.py +209 -0
- basic_memory-0.17.7/tests/test_rclone_commands.py +497 -0
- basic_memory-0.17.7/tests/test_runtime.py +52 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/utils/test_timezone_utils.py +6 -10
- basic_memory-0.17.7/uv.lock +2690 -0
- basic_memory-0.17.0/.python-version +0 -1
- basic_memory-0.17.0/specs/SPEC-1 Specification-Driven Development Process.md +0 -156
- basic_memory-0.17.0/specs/SPEC-10 Unified Deployment Workflow and Event Tracking.md +0 -569
- basic_memory-0.17.0/specs/SPEC-11 Basic Memory API Performance Optimization.md +0 -186
- basic_memory-0.17.0/specs/SPEC-12 OpenTelemetry Observability.md +0 -182
- basic_memory-0.17.0/specs/SPEC-13 CLI Authentication with Subscription Validation.md +0 -917
- basic_memory-0.17.0/specs/SPEC-14 Cloud Git Versioning & GitHub Backup.md +0 -210
- basic_memory-0.17.0/specs/SPEC-14- Cloud Git Versioning & GitHub Backup.md +0 -210
- basic_memory-0.17.0/specs/SPEC-15 Configuration Persistence via Tigris for Cloud Tenants.md +0 -273
- basic_memory-0.17.0/specs/SPEC-16 MCP Cloud Service Consolidation.md +0 -800
- basic_memory-0.17.0/specs/SPEC-17 Semantic Search with ChromaDB.md +0 -1439
- basic_memory-0.17.0/specs/SPEC-18 AI Memory Management Tool.md +0 -528
- basic_memory-0.17.0/specs/SPEC-19 Sync Performance and Memory Optimization.md +0 -1046
- basic_memory-0.17.0/specs/SPEC-2 Slash Commands Reference.md +0 -120
- basic_memory-0.17.0/specs/SPEC-20 Simplified Project-Scoped Rclone Sync.md +0 -1216
- basic_memory-0.17.0/specs/SPEC-3 Agent Definitions.md +0 -108
- basic_memory-0.17.0/specs/SPEC-4 Notes Web UI Component Architecture.md +0 -311
- basic_memory-0.17.0/specs/SPEC-5 CLI Cloud Upload via WebDAV.md +0 -201
- basic_memory-0.17.0/specs/SPEC-6 Explicit Project Parameter Architecture.md +0 -497
- basic_memory-0.17.0/specs/SPEC-7 POC to spike Tigris Turso for local access to cloud data.md +0 -324
- basic_memory-0.17.0/specs/SPEC-8 TigrisFS Integration.md +0 -886
- basic_memory-0.17.0/specs/SPEC-9 Multi-Project Bidirectional Sync Architecture.md +0 -1114
- basic_memory-0.17.0/specs/SPEC-9 Signed Header Tenant Information.md +0 -196
- basic_memory-0.17.0/specs/SPEC-9-1 Follow-Ups- Conflict, Sync, and Observability.md +0 -390
- basic_memory-0.17.0/src/basic_memory/cli/commands/db.py +0 -44
- basic_memory-0.17.0/src/basic_memory/cli/commands/telemetry.py +0 -81
- basic_memory-0.17.0/src/basic_memory/deps.py +0 -705
- basic_memory-0.17.0/src/basic_memory/importers/base.py +0 -79
- basic_memory-0.17.0/src/basic_memory/mcp/server.py +0 -81
- basic_memory-0.17.0/src/basic_memory/sync/__init__.py +0 -6
- basic_memory-0.17.0/src/basic_memory/telemetry.py +0 -249
- basic_memory-0.17.0/tests/api/test_async_client.py +0 -56
- basic_memory-0.17.0/tests/api/test_management_router.py +0 -211
- basic_memory-0.17.0/tests/cli/test_cli_tools.py +0 -497
- basic_memory-0.17.0/tests/cli/test_cloud_authentication.py +0 -239
- basic_memory-0.17.0/tests/mcp/test_tool_read_content.py +0 -495
- basic_memory-0.17.0/tests/mcp/test_tool_recent_activity.py +0 -135
- basic_memory-0.17.0/tests/mcp/tools/test_chatgpt_tools.py +0 -228
- basic_memory-0.17.0/tests/services/test_initialization.py +0 -122
- basic_memory-0.17.0/tests/sync/test_watch_service_reload.py +0 -252
- basic_memory-0.17.0/tests/test_rclone_commands.py +0 -647
- basic_memory-0.17.0/tests/test_telemetry.py +0 -276
- basic_memory-0.17.0/uv.lock +0 -2355
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.claude/commands/release/beta.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.claude/commands/release/changelog.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.claude/commands/release/release-check.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.claude/commands/spec.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.claude/commands/test-live.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.claude/settings.json +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.dockerignore +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.env.example +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/dependabot.yml +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/claude-issue-triage.yml +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/claude.yml +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/dev-release.yml +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/docker.yml +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/pr-title.yml +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.github/workflows/release.yml +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/.gitignore +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/CITATION.cff +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/CLA.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/CODE_OF_CONDUCT.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/CONTRIBUTING.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/LICENSE +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/SECURITY.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/docker-compose-postgres.yml +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/docker-compose.yml +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/docs/Docker.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/docs/ai-assistant-guide-extended.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/docs/character-handling.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/docs/cloud-cli.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/llms-install.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/smithery.yaml +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/alembic.ini +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/migrations.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/script.py.mako +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/314f1ea54dc4_add_postgres_full_text_search_support_.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/9d9c1cb7d8f5_add_mtime_and_size_columns_to_entity_.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/a1b2c3d4e5f6_fix_project_foreign_keys.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/a2b3c4d5e6f7_add_search_index_entity_cascade.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/e7e1f4367280_add_scan_watermark_tracking_to_project.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/alembic/versions/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/directory_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/importer_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/management_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/memory_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/prompt_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/search_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/routers/utils.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/template_loader.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/api/v2/routers/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/bisync_commands.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/rclone_config.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/cloud/rclone_installer.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/mcp.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/cli/commands/status.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/importers/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/importers/utils.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/markdown/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/markdown/entity_parser.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/markdown/plugins.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/markdown/schemas.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/async_client.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/prompts/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/prompts/continue_conversation.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/prompts/search.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/resources/ai_assistant_guide.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/resources/project_info.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/mcp/tools/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/models/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/models/base.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/observation_repository.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/project_info_repository.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/repository/search_index_row.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/cloud.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/delete.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/importer.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/prompt.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/request.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/search.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/schemas/v2/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/entity_service.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/exceptions.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/initialization.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/link_resolver.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/services/service.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/sync/background_sync.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/src/basic_memory/templates/prompts/search.hbs +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/BENCHMARKS.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/cli/test_project_commands_integration.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/cli/test_version_integration.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_build_context_underscore.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_build_context_validation.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_chatgpt_tools_integration.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_default_project_mode_integration.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_delete_note_integration.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_edit_note_integration.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_list_directory_integration.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_move_note_integration.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_project_management_integration.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_project_state_sync_integration.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_read_content_integration.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_read_note_integration.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_search_integration.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/mcp/test_single_project_mcp_integration.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/test_db_wal_mode.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/test-int/test_disable_permalinks_integration.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/Non-MarkdownFileSupport.pdf +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/README.md +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/Screenshot.png +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/conftest.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_continue_conversation_template.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_importer_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_memory_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_project_router_operations.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_prompt_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_resource_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_search_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_search_template.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_template_loader.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/test_template_loader_helpers.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_directory_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_importer_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_memory_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_prompt_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/api/v2/test_search_router.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/conftest.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_cli_exit.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_ignore_utils.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_import_chatgpt.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_import_claude_conversations.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/cli/test_import_claude_projects.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/db/test_issue_254_foreign_key_constraints.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/importers/test_importer_utils.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/__init__.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_date_frontmatter_parsing.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_entity_parser.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_entity_parser_error_handling.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_markdown_plugins.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_markdown_processor.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_observation_edge_cases.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_parser_edge_cases.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_relation_edge_cases.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/markdown/test_task_detection.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/conftest.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_obsidian_yaml_formatting.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_permalink_collision_file_overwrite.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_prompts.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_resources.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_build_context.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_canvas.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_delete_note.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_edit_note.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_list_directory.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_resource.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_write_note.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/mcp/test_tool_write_note_kebab_filenames.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_entity_repository.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_entity_repository_upsert.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_entity_upsert_issue_187.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_observation_repository.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_project_info_repository.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_project_repository.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_relation_repository.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_repository.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/repository/test_search_repository_edit_bug_fix.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/schemas/test_base_timeframe_minimum.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/schemas/test_memory_serialization.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/schemas/test_memory_url.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/schemas/test_memory_url_validation.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/schemas/test_search.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_context_service.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_directory_service.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_entity_service_disable_permalinks.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_link_resolver.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/services/test_project_removal_bug.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/sync/test_character_conflicts.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/sync/test_sync_service_incremental.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/sync/test_sync_wikilink_issue.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/sync/test_tmp_files.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/test_config.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/test_production_cascade_delete.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/utils/test_file_utils.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/utils/test_frontmatter_obsidian_compatible.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/utils/test_parse_tags.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/utils/test_permalink_formatting.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/utils/test_utf8_handling.py +0 -0
- {basic_memory-0.17.0 → basic_memory-0.17.7}/tests/utils/test_validate_project_path.py +0 -0
|
@@ -78,6 +78,34 @@ The GitHub Actions workflow (`.github/workflows/release.yml`) then:
|
|
|
78
78
|
2. Verify formula version matches release
|
|
79
79
|
3. Test Homebrew installation: `brew install basicmachines-co/basic-memory/basic-memory`
|
|
80
80
|
|
|
81
|
+
#### MCP Registry Publication
|
|
82
|
+
|
|
83
|
+
After PyPI release is published, update the MCP registry:
|
|
84
|
+
|
|
85
|
+
1. **Verify PyPI Release**
|
|
86
|
+
- Confirm package is live: https://pypi.org/project/basic-memory/<version>/
|
|
87
|
+
- The `server.json` version was auto-updated by `just release`
|
|
88
|
+
|
|
89
|
+
2. **Publish to MCP Registry**
|
|
90
|
+
```bash
|
|
91
|
+
cd /Users/drew/code/basic-memory
|
|
92
|
+
mcp-publisher publish
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
If not authenticated:
|
|
96
|
+
```bash
|
|
97
|
+
mcp-publisher login github
|
|
98
|
+
# Follow device authentication flow
|
|
99
|
+
mcp-publisher publish
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
3. **Verify Publication**
|
|
103
|
+
```bash
|
|
104
|
+
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=basic-memory"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Note:** The `mcp-publisher` CLI can be installed via Homebrew (`brew install mcp-publisher`) or from GitHub releases.
|
|
108
|
+
|
|
81
109
|
#### Website Updates
|
|
82
110
|
|
|
83
111
|
**1. basicmachines.co** (`/Users/drew/code/basicmachines.co`)
|
|
@@ -145,6 +173,7 @@ Before starting, verify:
|
|
|
145
173
|
📋 GitHub Release: https://github.com/basicmachines-co/basic-memory/releases/tag/v0.13.2
|
|
146
174
|
📦 PyPI: https://pypi.org/project/basic-memory/0.13.2/
|
|
147
175
|
🍺 Homebrew: https://github.com/basicmachines-co/homebrew-basic-memory
|
|
176
|
+
🔌 MCP Registry: https://registry.modelcontextprotocol.io
|
|
148
177
|
🚀 GitHub Actions: Completed
|
|
149
178
|
|
|
150
179
|
Install with pip/uv:
|
|
@@ -162,8 +191,9 @@ Users can now upgrade:
|
|
|
162
191
|
- This creates production releases used by end users
|
|
163
192
|
- Must pass all quality gates before proceeding
|
|
164
193
|
- Uses the automated justfile target for consistency
|
|
165
|
-
- Version is automatically updated in `__init__.py`
|
|
194
|
+
- Version is automatically updated in `__init__.py` and `server.json`
|
|
166
195
|
- Triggers automated GitHub release with changelog
|
|
167
196
|
- Package is published to PyPI for `pip` and `uv` users
|
|
168
197
|
- Homebrew formula is automatically updated for stable releases
|
|
198
|
+
- MCP Registry is updated manually via `mcp-publisher publish`
|
|
169
199
|
- Supports multiple installation methods (uv, pip, Homebrew)
|
|
@@ -54,6 +54,7 @@ jobs:
|
|
|
54
54
|
- [ ] Unit tests for new functions/methods
|
|
55
55
|
- [ ] Integration tests for new MCP tools
|
|
56
56
|
- [ ] Test coverage for edge cases
|
|
57
|
+
- [ ] **100% test coverage maintained** (use `# pragma: no cover` only for truly hard-to-test code)
|
|
57
58
|
- [ ] Documentation updated (README, docstrings)
|
|
58
59
|
- [ ] CLAUDE.md updated if conventions change
|
|
59
60
|
|
|
@@ -19,7 +19,7 @@ jobs:
|
|
|
19
19
|
fail-fast: false
|
|
20
20
|
matrix:
|
|
21
21
|
os: [ubuntu-latest, windows-latest]
|
|
22
|
-
python-version: [ "3.12", "3.13" ]
|
|
22
|
+
python-version: [ "3.12", "3.13", "3.14" ]
|
|
23
23
|
runs-on: ${{ matrix.os }}
|
|
24
24
|
|
|
25
25
|
steps:
|
|
@@ -75,7 +75,7 @@ jobs:
|
|
|
75
75
|
strategy:
|
|
76
76
|
fail-fast: false
|
|
77
77
|
matrix:
|
|
78
|
-
python-version: [ "3.12", "3.13" ]
|
|
78
|
+
python-version: [ "3.12", "3.13", "3.14" ]
|
|
79
79
|
runs-on: ubuntu-latest
|
|
80
80
|
|
|
81
81
|
# Note: No services section needed - testcontainers handles Postgres in Docker
|
|
@@ -110,4 +110,58 @@ jobs:
|
|
|
110
110
|
- name: Run tests (Postgres via testcontainers)
|
|
111
111
|
run: |
|
|
112
112
|
uv pip install pytest pytest-cov
|
|
113
|
-
just test-postgres
|
|
113
|
+
just test-postgres
|
|
114
|
+
|
|
115
|
+
coverage:
|
|
116
|
+
name: Coverage Summary (combined, Python 3.12)
|
|
117
|
+
runs-on: ubuntu-latest
|
|
118
|
+
|
|
119
|
+
steps:
|
|
120
|
+
- uses: actions/checkout@v4
|
|
121
|
+
with:
|
|
122
|
+
submodules: true
|
|
123
|
+
|
|
124
|
+
- name: Set up Python 3.12
|
|
125
|
+
uses: actions/setup-python@v4
|
|
126
|
+
with:
|
|
127
|
+
python-version: "3.12"
|
|
128
|
+
cache: "pip"
|
|
129
|
+
|
|
130
|
+
- name: Install uv
|
|
131
|
+
run: |
|
|
132
|
+
pip install uv
|
|
133
|
+
|
|
134
|
+
- name: Install just
|
|
135
|
+
run: |
|
|
136
|
+
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to /usr/local/bin
|
|
137
|
+
|
|
138
|
+
- name: Create virtual env
|
|
139
|
+
run: |
|
|
140
|
+
uv venv
|
|
141
|
+
|
|
142
|
+
- name: Install dependencies
|
|
143
|
+
run: |
|
|
144
|
+
uv pip install -e .[dev]
|
|
145
|
+
|
|
146
|
+
- name: Run combined coverage (SQLite + Postgres)
|
|
147
|
+
run: |
|
|
148
|
+
uv pip install pytest pytest-cov
|
|
149
|
+
just coverage
|
|
150
|
+
|
|
151
|
+
- name: Add coverage report to job summary
|
|
152
|
+
if: always()
|
|
153
|
+
run: |
|
|
154
|
+
{
|
|
155
|
+
echo "## Coverage"
|
|
156
|
+
echo ""
|
|
157
|
+
echo '```'
|
|
158
|
+
uv run coverage report -m
|
|
159
|
+
echo '```'
|
|
160
|
+
} >> "$GITHUB_STEP_SUMMARY"
|
|
161
|
+
|
|
162
|
+
- name: Upload HTML coverage report
|
|
163
|
+
if: always()
|
|
164
|
+
uses: actions/upload-artifact@v4
|
|
165
|
+
with:
|
|
166
|
+
name: htmlcov
|
|
167
|
+
path: htmlcov/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.14
|
|
@@ -1,5 +1,113 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## v0.17.6 (2026-01-17)
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
- **#510**: Fix Docker container Python symlink broken at runtime
|
|
8
|
+
([`1799c94`](https://github.com/basicmachines-co/basic-memory/commit/1799c94))
|
|
9
|
+
|
|
10
|
+
### Internal
|
|
11
|
+
|
|
12
|
+
- Remove logfire config and specs docs, reduce lifespan and sync logging to debug level
|
|
13
|
+
([`d1d433d`](https://github.com/basicmachines-co/basic-memory/commit/d1d433d),
|
|
14
|
+
[`803f3ef`](https://github.com/basicmachines-co/basic-memory/commit/803f3ef))
|
|
15
|
+
|
|
16
|
+
## v0.17.5 (2026-01-11)
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
- **#505**: Prevent CLI commands from hanging on exit (Python 3.14 compatibility)
|
|
21
|
+
([`863e0a4`](https://github.com/basicmachines-co/basic-memory/commit/863e0a4))
|
|
22
|
+
- Skip `nest_asyncio` on Python 3.14+ where it causes event loop issues
|
|
23
|
+
- Simplify CLI test infrastructure for cross-version compatibility
|
|
24
|
+
- Update pyright to 1.1.408 for Python 3.14 support
|
|
25
|
+
- Fix SQLAlchemy rowcount typing for Python 3.14
|
|
26
|
+
|
|
27
|
+
## v0.17.4 (2026-01-05)
|
|
28
|
+
|
|
29
|
+
### Bug Fixes
|
|
30
|
+
|
|
31
|
+
- **#503**: Preserve search index across server restarts
|
|
32
|
+
([`26f7e98`](https://github.com/basicmachines-co/basic-memory/commit/26f7e98))
|
|
33
|
+
- Fixes critical bug where search index was wiped on every MCP server restart
|
|
34
|
+
- Bug was introduced in v0.16.3, affecting v0.16.3-v0.17.3
|
|
35
|
+
- **User action**: Run `basic-memory reset` once after updating to rebuild search index
|
|
36
|
+
|
|
37
|
+
### Internal
|
|
38
|
+
|
|
39
|
+
- **#502**: Major architecture refactor with composition roots and typed API clients
|
|
40
|
+
([`5947f04`](https://github.com/basicmachines-co/basic-memory/commit/5947f04))
|
|
41
|
+
- Add composition roots for API, MCP, and CLI entrypoints
|
|
42
|
+
- Split deps.py into feature-scoped modules (config, db, projects, repositories, services, importers)
|
|
43
|
+
- Add ProjectResolver for unified project selection
|
|
44
|
+
- Add SyncCoordinator for centralized sync/watch lifecycle
|
|
45
|
+
- Introduce typed API clients for MCP tools (KnowledgeClient, SearchClient, MemoryClient, etc.)
|
|
46
|
+
|
|
47
|
+
## v0.17.3 (2026-01-03)
|
|
48
|
+
|
|
49
|
+
### Features
|
|
50
|
+
|
|
51
|
+
- **#485**: Add stable external_id (UUID) to Project and Entity models
|
|
52
|
+
([`a4000f6`](https://github.com/basicmachines-co/basic-memory/commit/a4000f6))
|
|
53
|
+
- Projects and entities now have immutable UUID identifiers
|
|
54
|
+
- API v2 endpoints use external_id for stable references
|
|
55
|
+
- Directory responses include external_id for entities
|
|
56
|
+
|
|
57
|
+
### Bug Fixes
|
|
58
|
+
|
|
59
|
+
- **#501**: Update mcp dependency to support protocol version 2025-11-25
|
|
60
|
+
([`c6baf58`](https://github.com/basicmachines-co/basic-memory/commit/c6baf58))
|
|
61
|
+
- Fixes "Unsupported protocol version" error when using Claude Code
|
|
62
|
+
- Bump mcp from >=1.2.0 to >=1.23.1
|
|
63
|
+
|
|
64
|
+
- **#499**: Fix route ordering for cloud deployments
|
|
65
|
+
([`53c4c20`](https://github.com/basicmachines-co/basic-memory/commit/53c4c20))
|
|
66
|
+
|
|
67
|
+
- **#486**: Skip config file update for set_default_project in cloud mode
|
|
68
|
+
([`fd732aa`](https://github.com/basicmachines-co/basic-memory/commit/fd732aa))
|
|
69
|
+
|
|
70
|
+
- **#484**: Make RelationResponse.from_id optional to handle null permalinks
|
|
71
|
+
([`537e58a`](https://github.com/basicmachines-co/basic-memory/commit/537e58a))
|
|
72
|
+
|
|
73
|
+
- Use upsert to prevent IntegrityError during parallel search indexing
|
|
74
|
+
([`4ce2198`](https://github.com/basicmachines-co/basic-memory/commit/4ce2198))
|
|
75
|
+
|
|
76
|
+
- Use relative file paths in importers for cloud storage compatibility
|
|
77
|
+
([`8adf1f4`](https://github.com/basicmachines-co/basic-memory/commit/8adf1f4))
|
|
78
|
+
|
|
79
|
+
### Internal
|
|
80
|
+
|
|
81
|
+
- Refactor importers to use FileService for cloud compatibility
|
|
82
|
+
([`45ce181`](https://github.com/basicmachines-co/basic-memory/commit/45ce181))
|
|
83
|
+
|
|
84
|
+
- Strengthen integration test coverage, remove stdlib mocks
|
|
85
|
+
([`b4486d2`](https://github.com/basicmachines-co/basic-memory/commit/b4486d2))
|
|
86
|
+
|
|
87
|
+
## v0.17.2 (2025-12-29)
|
|
88
|
+
|
|
89
|
+
### Bug Fixes
|
|
90
|
+
|
|
91
|
+
- Allow recent_activity discovery mode in cloud mode
|
|
92
|
+
([`0bcda4a`](https://github.com/basicmachines-co/basic-memory/commit/0bcda4a))
|
|
93
|
+
- Add `allow_discovery` parameter to `resolve_project_parameter()`
|
|
94
|
+
- Tools like `recent_activity` can now work across all projects in cloud mode
|
|
95
|
+
- Fix circular import in project_context module
|
|
96
|
+
|
|
97
|
+
### Internal
|
|
98
|
+
|
|
99
|
+
- Optimize release workflow by running lint/typecheck only (skip full tests)
|
|
100
|
+
([`0b5425f`](https://github.com/basicmachines-co/basic-memory/commit/0b5425f))
|
|
101
|
+
|
|
102
|
+
## v0.17.1 (2025-12-29)
|
|
103
|
+
|
|
104
|
+
### Bug Fixes
|
|
105
|
+
|
|
106
|
+
- **#482**: Only set BASIC_MEMORY_ENV=test during pytest runs
|
|
107
|
+
([`98fbd60`](https://github.com/basicmachines-co/basic-memory/commit/98fbd60))
|
|
108
|
+
- Fixes environment variable pollution affecting alembic migrations
|
|
109
|
+
- Test environment detection now scoped to pytest execution only
|
|
110
|
+
|
|
3
111
|
## v0.17.0 (2025-12-28)
|
|
4
112
|
|
|
5
113
|
### Features
|
|
@@ -117,17 +117,38 @@ counter += 1 # track retries for backoff calculation
|
|
|
117
117
|
|
|
118
118
|
### Codebase Architecture
|
|
119
119
|
|
|
120
|
+
See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for detailed architecture documentation.
|
|
121
|
+
|
|
122
|
+
**Directory Structure:**
|
|
120
123
|
- `/alembic` - Alembic db migrations
|
|
121
|
-
- `/api` - FastAPI
|
|
122
|
-
- `/cli` - Typer
|
|
124
|
+
- `/api` - FastAPI REST endpoints + `container.py` composition root
|
|
125
|
+
- `/cli` - Typer CLI + `container.py` composition root
|
|
126
|
+
- `/deps` - Feature-scoped FastAPI dependencies (config, db, projects, repositories, services, importers)
|
|
123
127
|
- `/importers` - Import functionality for Claude, ChatGPT, and other sources
|
|
124
128
|
- `/markdown` - Markdown parsing and processing
|
|
125
|
-
- `/mcp` -
|
|
129
|
+
- `/mcp` - MCP server + `container.py` composition root + `clients/` typed API clients
|
|
126
130
|
- `/models` - SQLAlchemy ORM models
|
|
127
131
|
- `/repository` - Data access layer
|
|
128
132
|
- `/schemas` - Pydantic models for validation
|
|
129
133
|
- `/services` - Business logic layer
|
|
130
|
-
- `/sync` - File synchronization services
|
|
134
|
+
- `/sync` - File synchronization services + `coordinator.py` for lifecycle management
|
|
135
|
+
|
|
136
|
+
**Composition Roots:**
|
|
137
|
+
Each entrypoint (API, MCP, CLI) has a composition root that:
|
|
138
|
+
- Reads `ConfigManager` (the only place that reads global config)
|
|
139
|
+
- Resolves runtime mode via `RuntimeMode` enum (TEST > CLOUD > LOCAL)
|
|
140
|
+
- Provides dependencies to downstream code explicitly
|
|
141
|
+
|
|
142
|
+
**Typed API Clients (MCP):**
|
|
143
|
+
MCP tools use typed clients in `mcp/clients/` to communicate with the API:
|
|
144
|
+
- `KnowledgeClient` - Entity CRUD operations
|
|
145
|
+
- `SearchClient` - Search operations
|
|
146
|
+
- `MemoryClient` - Context building
|
|
147
|
+
- `DirectoryClient` - Directory listing
|
|
148
|
+
- `ResourceClient` - Resource reading
|
|
149
|
+
- `ProjectClient` - Project management
|
|
150
|
+
|
|
151
|
+
Flow: MCP Tool → Typed Client → HTTP API → Router → Service → Repository
|
|
131
152
|
|
|
132
153
|
### Development Notes
|
|
133
154
|
|
|
@@ -146,6 +167,7 @@ counter += 1 # track retries for backoff calculation
|
|
|
146
167
|
- CI runs SQLite and Postgres tests in parallel for faster feedback
|
|
147
168
|
- Performance benchmarks are in `test-int/test_sync_performance_benchmark.py`
|
|
148
169
|
- Use pytest markers: `@pytest.mark.benchmark` for benchmarks, `@pytest.mark.slow` for slow tests
|
|
170
|
+
- **Coverage must stay at 100%**: Write tests for new code. Only use `# pragma: no cover` when tests would require excessive mocking (e.g., TYPE_CHECKING blocks, error handlers that need failure injection, runtime-mode-dependent code paths)
|
|
149
171
|
|
|
150
172
|
### Async Client Pattern (Important!)
|
|
151
173
|
|
|
@@ -8,8 +8,13 @@ ARG GID=1000
|
|
|
8
8
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
|
|
9
9
|
|
|
10
10
|
# Set environment variables
|
|
11
|
+
# UV_PYTHON_INSTALL_DIR ensures Python is installed to a persistent location
|
|
12
|
+
# that survives in the final image (not in /root/.local which gets lost)
|
|
13
|
+
# UV_PYTHON_PREFERENCE=only-managed tells uv to use its managed Python version
|
|
11
14
|
ENV PYTHONUNBUFFERED=1 \
|
|
12
|
-
PYTHONDONTWRITEBYTECODE=1
|
|
15
|
+
PYTHONDONTWRITEBYTECODE=1 \
|
|
16
|
+
UV_PYTHON_INSTALL_DIR=/python \
|
|
17
|
+
UV_PYTHON_PREFERENCE=only-managed
|
|
13
18
|
|
|
14
19
|
# Create a group and user with the provided UID/GID
|
|
15
20
|
# Check if the GID already exists, if not create appgroup
|
|
@@ -19,9 +24,10 @@ RUN (getent group ${GID} || groupadd --gid ${GID} appgroup) && \
|
|
|
19
24
|
# Copy the project into the image
|
|
20
25
|
ADD . /app
|
|
21
26
|
|
|
22
|
-
#
|
|
27
|
+
# Install Python 3.13 explicitly and sync the project
|
|
23
28
|
WORKDIR /app
|
|
24
|
-
RUN uv
|
|
29
|
+
RUN uv python install 3.13
|
|
30
|
+
RUN uv sync --locked --python 3.13
|
|
25
31
|
|
|
26
32
|
# Create necessary directories and set ownership
|
|
27
33
|
RUN mkdir -p /app/data/basic-memory /app/.basic-memory && \
|
|
@@ -43,4 +49,4 @@ HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
|
43
49
|
CMD basic-memory --version || exit 1
|
|
44
50
|
|
|
45
51
|
# Use the basic-memory entrypoint to run the MCP server with default SSE transport
|
|
46
|
-
CMD ["basic-memory", "mcp", "--transport", "sse", "--host", "0.0.0.0", "--port", "8000"]
|
|
52
|
+
CMD ["basic-memory", "mcp", "--transport", "sse", "--host", "0.0.0.0", "--port", "8000"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: basic-memory
|
|
3
|
-
Version: 0.17.
|
|
3
|
+
Version: 0.17.7
|
|
4
4
|
Summary: Local-first knowledge management combining Zettelkasten with knowledge graphs
|
|
5
5
|
Project-URL: Homepage, https://github.com/basicmachines-co/basic-memory
|
|
6
6
|
Project-URL: Repository, https://github.com/basicmachines-co/basic-memory
|
|
@@ -12,24 +12,25 @@ Requires-Python: >=3.12
|
|
|
12
12
|
Requires-Dist: aiofiles>=24.1.0
|
|
13
13
|
Requires-Dist: aiosqlite>=0.20.0
|
|
14
14
|
Requires-Dist: alembic>=1.14.1
|
|
15
|
+
Requires-Dist: anyio>=4.10.0
|
|
15
16
|
Requires-Dist: asyncpg>=0.30.0
|
|
16
17
|
Requires-Dist: dateparser>=1.2.0
|
|
17
18
|
Requires-Dist: fastapi[standard]>=0.115.8
|
|
18
19
|
Requires-Dist: fastmcp==2.12.3
|
|
19
20
|
Requires-Dist: greenlet>=3.1.1
|
|
21
|
+
Requires-Dist: httpx>=0.28.0
|
|
20
22
|
Requires-Dist: loguru>=0.7.3
|
|
21
23
|
Requires-Dist: markdown-it-py>=3.0.0
|
|
22
|
-
Requires-Dist: mcp>=1.
|
|
24
|
+
Requires-Dist: mcp>=1.23.1
|
|
23
25
|
Requires-Dist: mdformat-frontmatter>=2.0.8
|
|
24
26
|
Requires-Dist: mdformat-gfm>=0.3.7
|
|
25
27
|
Requires-Dist: mdformat>=0.7.22
|
|
26
28
|
Requires-Dist: nest-asyncio>=1.6.0
|
|
27
|
-
Requires-Dist: openpanel>=0.0.1
|
|
28
29
|
Requires-Dist: pillow>=11.1.0
|
|
29
30
|
Requires-Dist: psycopg==3.3.1
|
|
30
31
|
Requires-Dist: pybars3>=0.9.7
|
|
31
32
|
Requires-Dist: pydantic-settings>=2.6.1
|
|
32
|
-
Requires-Dist: pydantic[email,timezone]>=2.
|
|
33
|
+
Requires-Dist: pydantic[email,timezone]>=2.12.0
|
|
33
34
|
Requires-Dist: pyjwt>=2.10.1
|
|
34
35
|
Requires-Dist: pyright>=1.1.390
|
|
35
36
|
Requires-Dist: pytest-aio>=1.9.0
|
|
@@ -38,12 +39,14 @@ Requires-Dist: python-dotenv>=1.1.0
|
|
|
38
39
|
Requires-Dist: python-frontmatter>=1.1.0
|
|
39
40
|
Requires-Dist: pyyaml>=6.0.1
|
|
40
41
|
Requires-Dist: rich>=13.9.4
|
|
42
|
+
Requires-Dist: sniffio>=1.3.1
|
|
41
43
|
Requires-Dist: sqlalchemy>=2.0.0
|
|
42
44
|
Requires-Dist: typer>=0.9.0
|
|
43
45
|
Requires-Dist: unidecode>=1.3.8
|
|
44
46
|
Requires-Dist: watchfiles>=1.0.4
|
|
45
47
|
Description-Content-Type: text/markdown
|
|
46
48
|
|
|
49
|
+
<!-- mcp-name: io.github.basicmachines-co/basic-memory -->
|
|
47
50
|
[](https://www.gnu.org/licenses/agpl-3.0)
|
|
48
51
|
[](https://badge.fury.io/py/basic-memory)
|
|
49
52
|
[](https://www.python.org/downloads/)
|
|
@@ -512,39 +515,6 @@ tail -f ~/.basic-memory/basic-memory.log
|
|
|
512
515
|
BASIC_MEMORY_CLOUD_MODE=true uvicorn basic_memory.api.app:app
|
|
513
516
|
```
|
|
514
517
|
|
|
515
|
-
## Telemetry
|
|
516
|
-
|
|
517
|
-
Basic Memory collects anonymous usage statistics to help improve the software. This follows the [Homebrew model](https://docs.brew.sh/Analytics) - telemetry is on by default with easy opt-out.
|
|
518
|
-
|
|
519
|
-
**What we collect:**
|
|
520
|
-
- App version, Python version, OS, architecture
|
|
521
|
-
- Feature usage (which MCP tools and CLI commands are used)
|
|
522
|
-
- Error types (sanitized - no file paths or personal data)
|
|
523
|
-
|
|
524
|
-
**What we NEVER collect:**
|
|
525
|
-
- Note content, file names, or paths
|
|
526
|
-
- Personal information
|
|
527
|
-
- IP addresses
|
|
528
|
-
|
|
529
|
-
**Opting out:**
|
|
530
|
-
```bash
|
|
531
|
-
# Disable telemetry
|
|
532
|
-
basic-memory telemetry disable
|
|
533
|
-
|
|
534
|
-
# Check status
|
|
535
|
-
basic-memory telemetry status
|
|
536
|
-
|
|
537
|
-
# Re-enable
|
|
538
|
-
basic-memory telemetry enable
|
|
539
|
-
```
|
|
540
|
-
|
|
541
|
-
Or set the environment variable:
|
|
542
|
-
```bash
|
|
543
|
-
export BASIC_MEMORY_TELEMETRY_ENABLED=false
|
|
544
|
-
```
|
|
545
|
-
|
|
546
|
-
For more details, see the [Telemetry documentation](https://basicmemory.com/telemetry).
|
|
547
|
-
|
|
548
518
|
## Development
|
|
549
519
|
|
|
550
520
|
### Running Tests
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- mcp-name: io.github.basicmachines-co/basic-memory -->
|
|
1
2
|
[](https://www.gnu.org/licenses/agpl-3.0)
|
|
2
3
|
[](https://badge.fury.io/py/basic-memory)
|
|
3
4
|
[](https://www.python.org/downloads/)
|
|
@@ -466,39 +467,6 @@ tail -f ~/.basic-memory/basic-memory.log
|
|
|
466
467
|
BASIC_MEMORY_CLOUD_MODE=true uvicorn basic_memory.api.app:app
|
|
467
468
|
```
|
|
468
469
|
|
|
469
|
-
## Telemetry
|
|
470
|
-
|
|
471
|
-
Basic Memory collects anonymous usage statistics to help improve the software. This follows the [Homebrew model](https://docs.brew.sh/Analytics) - telemetry is on by default with easy opt-out.
|
|
472
|
-
|
|
473
|
-
**What we collect:**
|
|
474
|
-
- App version, Python version, OS, architecture
|
|
475
|
-
- Feature usage (which MCP tools and CLI commands are used)
|
|
476
|
-
- Error types (sanitized - no file paths or personal data)
|
|
477
|
-
|
|
478
|
-
**What we NEVER collect:**
|
|
479
|
-
- Note content, file names, or paths
|
|
480
|
-
- Personal information
|
|
481
|
-
- IP addresses
|
|
482
|
-
|
|
483
|
-
**Opting out:**
|
|
484
|
-
```bash
|
|
485
|
-
# Disable telemetry
|
|
486
|
-
basic-memory telemetry disable
|
|
487
|
-
|
|
488
|
-
# Check status
|
|
489
|
-
basic-memory telemetry status
|
|
490
|
-
|
|
491
|
-
# Re-enable
|
|
492
|
-
basic-memory telemetry enable
|
|
493
|
-
```
|
|
494
|
-
|
|
495
|
-
Or set the environment variable:
|
|
496
|
-
```bash
|
|
497
|
-
export BASIC_MEMORY_TELEMETRY_ENABLED=false
|
|
498
|
-
```
|
|
499
|
-
|
|
500
|
-
For more details, see the [Telemetry documentation](https://basicmemory.com/telemetry).
|
|
501
|
-
|
|
502
470
|
## Development
|
|
503
471
|
|
|
504
472
|
### Running Tests
|