basic-memory 0.17.6__tar.gz → 0.17.8__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.
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.claude/commands/release/release.md +31 -1
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.gitignore +1 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/CHANGELOG.md +37 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/CLAUDE.md +2 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/PKG-INFO +6 -58
- {basic_memory-0.17.6 → basic_memory-0.17.8}/README.md +5 -56
- {basic_memory-0.17.6 → basic_memory-0.17.8}/docs/testing-coverage.md +1 -3
- {basic_memory-0.17.6 → basic_memory-0.17.8}/justfile +16 -5
- {basic_memory-0.17.6 → basic_memory-0.17.8}/pyproject.toml +0 -2
- basic_memory-0.17.8/server.json +25 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/__init__.py +1 -1
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/routers/project_router.py +15 -3
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/routers/resource_router.py +3 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/v2/routers/resource_router.py +3 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/app.py +0 -8
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/__init__.py +1 -2
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/cloud/__init__.py +10 -0
- basic_memory-0.17.8/src/basic_memory/cli/commands/cloud/restore.py +159 -0
- basic_memory-0.17.8/src/basic_memory/cli/commands/cloud/schemas.py +55 -0
- basic_memory-0.17.8/src/basic_memory/cli/commands/cloud/snapshot.py +370 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/command_utils.py +2 -6
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/main.py +0 -1
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/config.py +1 -12
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/markdown/utils.py +7 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/server.py +0 -6
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/build_context.py +0 -2
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/canvas.py +0 -2
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/chatgpt_tools.py +0 -3
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/delete_note.py +0 -2
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/edit_note.py +0 -2
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/list_directory.py +0 -2
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/move_note.py +0 -2
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/project_management.py +0 -4
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/read_content.py +0 -2
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/read_note.py +0 -2
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/recent_activity.py +0 -2
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/search.py +0 -2
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/view_note.py +0 -2
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/write_note.py +0 -2
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/repository/project_repository.py +1 -1
- basic_memory-0.17.8/tests/cli/test_restore_commands.py +409 -0
- basic_memory-0.17.8/tests/cli/test_snapshot_commands.py +529 -0
- basic_memory-0.17.8/tests/markdown/test_markdown_utils.py +163 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/repository/test_project_repository.py +33 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/uv.lock +0 -14
- basic_memory-0.17.6/src/basic_memory/cli/commands/telemetry.py +0 -81
- basic_memory-0.17.6/src/basic_memory/telemetry.py +0 -320
- basic_memory-0.17.6/tests/test_telemetry.py +0 -290
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.claude/commands/release/beta.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.claude/commands/release/changelog.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.claude/commands/release/release-check.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.claude/commands/spec.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.claude/commands/test-live.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.claude/settings.json +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.dockerignore +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.env.example +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.github/dependabot.yml +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.github/workflows/claude-code-review.yml +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.github/workflows/claude-issue-triage.yml +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.github/workflows/claude.yml +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.github/workflows/dev-release.yml +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.github/workflows/docker.yml +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.github/workflows/pr-title.yml +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.github/workflows/release.yml +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.github/workflows/test.yml +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/.python-version +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/CITATION.cff +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/CLA.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/CODE_OF_CONDUCT.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/CONTRIBUTING.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/Dockerfile +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/LICENSE +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/SECURITY.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/docker-compose-postgres.yml +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/docker-compose.yml +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/docs/ARCHITECTURE.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/docs/Docker.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/docs/ai-assistant-guide-extended.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/docs/character-handling.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/docs/cloud-cli.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/llms-install.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/smithery.yaml +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/alembic.ini +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/env.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/migrations.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/script.py.mako +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/versions/314f1ea54dc4_add_postgres_full_text_search_support_.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/versions/6830751f5fb6_merge_multiple_heads.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/versions/9d9c1cb7d8f5_add_mtime_and_size_columns_to_entity_.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/versions/a1b2c3d4e5f6_fix_project_foreign_keys.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/versions/a2b3c4d5e6f7_add_search_index_entity_cascade.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/versions/e7e1f4367280_add_scan_watermark_tracking_to_project.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/versions/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/alembic/versions/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/app.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/container.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/routers/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/routers/directory_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/routers/importer_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/routers/knowledge_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/routers/management_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/routers/memory_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/routers/prompt_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/routers/search_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/routers/utils.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/template_loader.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/v2/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/v2/routers/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/v2/routers/directory_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/v2/routers/importer_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/v2/routers/knowledge_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/v2/routers/memory_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/v2/routers/project_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/v2/routers/prompt_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/v2/routers/search_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/auth.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/cloud/api_client.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/cloud/bisync_commands.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/cloud/cloud_utils.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/cloud/core_commands.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/cloud/rclone_commands.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/cloud/rclone_config.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/cloud/rclone_installer.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/cloud/upload.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/cloud/upload_command.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/db.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/format.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/import_chatgpt.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/import_claude_conversations.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/import_claude_projects.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/import_memory_json.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/mcp.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/project.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/status.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/commands/tool.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/cli/container.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/db.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/deps/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/deps/config.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/deps/db.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/deps/importers.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/deps/projects.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/deps/repositories.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/deps/services.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/deps.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/file_utils.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/ignore_utils.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/importers/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/importers/base.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/importers/chatgpt_importer.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/importers/claude_conversations_importer.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/importers/claude_projects_importer.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/importers/memory_json_importer.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/importers/utils.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/markdown/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/markdown/entity_parser.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/markdown/markdown_processor.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/markdown/plugins.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/markdown/schemas.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/async_client.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/clients/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/clients/directory.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/clients/knowledge.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/clients/memory.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/clients/project.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/clients/resource.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/clients/search.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/container.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/project_context.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/prompts/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/prompts/continue_conversation.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/prompts/recent_activity.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/prompts/search.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/prompts/utils.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/resources/ai_assistant_guide.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/resources/project_info.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/mcp/tools/utils.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/models/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/models/base.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/models/knowledge.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/models/project.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/models/search.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/project_resolver.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/repository/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/repository/entity_repository.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/repository/observation_repository.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/repository/postgres_search_repository.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/repository/project_info_repository.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/repository/relation_repository.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/repository/repository.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/repository/search_index_row.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/repository/search_repository.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/repository/search_repository_base.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/repository/sqlite_search_repository.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/runtime.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/base.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/cloud.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/delete.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/directory.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/importer.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/memory.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/project_info.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/prompt.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/request.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/response.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/search.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/sync_report.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/v2/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/v2/entity.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/schemas/v2/resource.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/services/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/services/context_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/services/directory_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/services/entity_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/services/exceptions.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/services/file_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/services/initialization.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/services/link_resolver.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/services/project_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/services/search_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/services/service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/sync/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/sync/background_sync.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/sync/coordinator.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/sync/sync_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/sync/watch_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/templates/prompts/search.hbs +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/utils.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/BENCHMARKS.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/cli/test_project_commands_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/cli/test_version_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/conftest.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_build_context_underscore.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_build_context_validation.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_chatgpt_tools_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_default_project_mode_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_delete_note_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_edit_note_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_lifespan_shutdown_sync_task_cancellation_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_list_directory_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_move_note_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_project_management_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_project_state_sync_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_read_content_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_read_note_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_search_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_single_project_mcp_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/mcp/test_write_note_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/test_db_wal_mode.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/test-int/test_disable_permalinks_integration.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/Non-MarkdownFileSupport.pdf +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/README.md +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/Screenshot.png +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/conftest.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_api_container.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_async_client.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_continue_conversation_template.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_directory_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_importer_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_knowledge_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_management_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_memory_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_project_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_project_router_operations.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_prompt_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_relation_background_resolution.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_resource_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_search_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_search_template.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_template_loader.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/test_template_loader_helpers.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/v2/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/v2/conftest.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/v2/test_directory_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/v2/test_importer_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/v2/test_knowledge_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/v2/test_memory_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/v2/test_project_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/v2/test_prompt_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/v2/test_resource_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/api/v2/test_search_router.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/cloud/test_cloud_api_client_and_utils.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/cloud/test_rclone_config_and_bmignore_filters.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/cloud/test_upload_path.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/conftest.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/test_auth_cli_auth.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/test_cli_container.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/test_cli_exit.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/test_cli_tool_exit.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/test_cli_tools.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/test_cloud_authentication.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/test_ignore_utils.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/test_import_chatgpt.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/test_import_claude_conversations.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/test_import_claude_projects.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/test_import_memory_json.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/test_project_add_with_local_path.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/cli/test_upload.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/conftest.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/db/test_issue_254_foreign_key_constraints.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/importers/test_conversation_indexing.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/importers/test_importer_base.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/importers/test_importer_utils.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/markdown/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/markdown/test_date_frontmatter_parsing.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/markdown/test_entity_parser.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/markdown/test_entity_parser_error_handling.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/markdown/test_markdown_plugins.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/markdown/test_markdown_processor.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/markdown/test_observation_edge_cases.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/markdown/test_parser_edge_cases.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/markdown/test_relation_edge_cases.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/markdown/test_task_detection.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/clients/__init__.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/clients/test_clients.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/conftest.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_async_client_modes.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_mcp_container.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_obsidian_yaml_formatting.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_permalink_collision_file_overwrite.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_project_context.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_prompts.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_recent_activity_prompt_modes.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_resources.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_server_lifespan_branches.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_build_context.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_canvas.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_delete_note.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_edit_note.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_list_directory.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_move_note.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_project_management.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_read_content.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_read_note.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_recent_activity.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_resource.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_search.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_utils.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_view_note.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_write_note.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/test_tool_write_note_kebab_filenames.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/mcp/tools/test_chatgpt_tools.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/repository/test_entity_repository.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/repository/test_entity_repository_upsert.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/repository/test_entity_upsert_issue_187.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/repository/test_observation_repository.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/repository/test_postgres_search_repository.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/repository/test_project_info_repository.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/repository/test_relation_repository.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/repository/test_repository.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/repository/test_search_repository.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/repository/test_search_repository_edit_bug_fix.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/schemas/test_base_timeframe_minimum.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/schemas/test_memory_serialization.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/schemas/test_memory_url.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/schemas/test_memory_url_validation.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/schemas/test_relation_response_reference_resolution.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/schemas/test_schemas.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/schemas/test_search.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/services/test_context_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/services/test_directory_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/services/test_entity_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/services/test_entity_service_disable_permalinks.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/services/test_file_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/services/test_initialization.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/services/test_initialization_cloud_mode_branches.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/services/test_link_resolver.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/services/test_project_removal_bug.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/services/test_project_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/services/test_project_service_operations.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/services/test_search_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/sync/test_character_conflicts.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/sync/test_coordinator.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/sync/test_sync_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/sync/test_sync_service_incremental.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/sync/test_sync_wikilink_issue.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/sync/test_tmp_files.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/sync/test_watch_service.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/sync/test_watch_service_atomic_adds.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/sync/test_watch_service_edge_cases.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/sync/test_watch_service_reload.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/test_config.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/test_deps.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/test_production_cascade_delete.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/test_project_resolver.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/test_rclone_commands.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/test_runtime.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/utils/test_file_utils.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/utils/test_frontmatter_obsidian_compatible.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/utils/test_parse_tags.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/utils/test_permalink_formatting.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/utils/test_timezone_utils.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/tests/utils/test_utf8_handling.py +0 -0
- {basic_memory-0.17.6 → basic_memory-0.17.8}/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)
|
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## v0.17.8 (2026-01-24)
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
- **#521**: Fix `get_default_project()` returning multiple results
|
|
8
|
+
([`6888eff`](https://github.com/basicmachines-co/basic-memory/commit/6888eff))
|
|
9
|
+
- Query incorrectly matched any project with non-NULL `is_default` (both True and False)
|
|
10
|
+
- Now correctly checks for `is_default=True` only
|
|
11
|
+
|
|
12
|
+
## v0.17.7 (2026-01-24)
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
- **#476**: Add SPEC-29 Phase 3 bucket snapshot CLI commands
|
|
17
|
+
([`369ad37`](https://github.com/basicmachines-co/basic-memory/commit/369ad37))
|
|
18
|
+
- New `basic-memory cloud snapshot` commands for managing cloud snapshots
|
|
19
|
+
- Commands: `create`, `list`, `delete`, `show`, `browse`
|
|
20
|
+
|
|
21
|
+
- **#515**: Add MCP registry publication files
|
|
22
|
+
([`7a502e6`](https://github.com/basicmachines-co/basic-memory/commit/7a502e6))
|
|
23
|
+
|
|
24
|
+
### Bug Fixes
|
|
25
|
+
|
|
26
|
+
- **#520**: Read default project from database in cloud mode
|
|
27
|
+
([`38616c3`](https://github.com/basicmachines-co/basic-memory/commit/38616c3))
|
|
28
|
+
|
|
29
|
+
- **#513**: Ensure external_id is set on entity creation
|
|
30
|
+
([`c7835a9`](https://github.com/basicmachines-co/basic-memory/commit/c7835a9))
|
|
31
|
+
|
|
32
|
+
### Internal
|
|
33
|
+
|
|
34
|
+
- **#514**: Remove OpenPanel telemetry
|
|
35
|
+
([`85835ae`](https://github.com/basicmachines-co/basic-memory/commit/85835ae))
|
|
36
|
+
|
|
37
|
+
- Update README links to point to basicmemory.com
|
|
38
|
+
([`2aaee73`](https://github.com/basicmachines-co/basic-memory/commit/2aaee73))
|
|
39
|
+
|
|
3
40
|
## v0.17.6 (2026-01-17)
|
|
4
41
|
|
|
5
42
|
### Bug Fixes
|
|
@@ -240,6 +240,8 @@ See SPEC-16 for full context manager refactor details.
|
|
|
240
240
|
- Logout: `basic-memory cloud logout`
|
|
241
241
|
- Check cloud status: `basic-memory cloud status`
|
|
242
242
|
- Setup cloud sync: `basic-memory cloud setup`
|
|
243
|
+
- Manage snapshots: `basic-memory cloud snapshot [create|list|delete|show|browse]`
|
|
244
|
+
- Restore from snapshot: `basic-memory cloud restore <path> --snapshot <id>`
|
|
243
245
|
|
|
244
246
|
### MCP Capabilities
|
|
245
247
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: basic-memory
|
|
3
|
-
Version: 0.17.
|
|
3
|
+
Version: 0.17.8
|
|
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
|
|
@@ -26,7 +26,6 @@ Requires-Dist: mdformat-frontmatter>=2.0.8
|
|
|
26
26
|
Requires-Dist: mdformat-gfm>=0.3.7
|
|
27
27
|
Requires-Dist: mdformat>=0.7.22
|
|
28
28
|
Requires-Dist: nest-asyncio>=1.6.0
|
|
29
|
-
Requires-Dist: openpanel>=0.0.1
|
|
30
29
|
Requires-Dist: pillow>=11.1.0
|
|
31
30
|
Requires-Dist: psycopg==3.3.1
|
|
32
31
|
Requires-Dist: pybars3>=0.9.7
|
|
@@ -47,6 +46,7 @@ Requires-Dist: unidecode>=1.3.8
|
|
|
47
46
|
Requires-Dist: watchfiles>=1.0.4
|
|
48
47
|
Description-Content-Type: text/markdown
|
|
49
48
|
|
|
49
|
+
<!-- mcp-name: io.github.basicmachines-co/basic-memory -->
|
|
50
50
|
[](https://www.gnu.org/licenses/agpl-3.0)
|
|
51
51
|
[](https://badge.fury.io/py/basic-memory)
|
|
52
52
|
[](https://www.python.org/downloads/)
|
|
@@ -54,7 +54,6 @@ Description-Content-Type: text/markdown
|
|
|
54
54
|
[](https://github.com/astral-sh/ruff)
|
|
55
55
|

|
|
56
56
|

|
|
57
|
-
[](https://smithery.ai/server/@basicmachines-co/basic-memory)
|
|
58
57
|
|
|
59
58
|
## 🚀 Basic Memory Cloud is Live!
|
|
60
59
|
|
|
@@ -62,7 +61,7 @@ Description-Content-Type: text/markdown
|
|
|
62
61
|
- **Early Supporter Pricing:** Early users get 25% off forever.
|
|
63
62
|
The open source project continues as always. Cloud just makes it work everywhere.
|
|
64
63
|
|
|
65
|
-
[Sign up now →](https://basicmemory.com
|
|
64
|
+
[Sign up now →](https://basicmemory.com)
|
|
66
65
|
|
|
67
66
|
with a 7 day free trial
|
|
68
67
|
|
|
@@ -72,8 +71,8 @@ Basic Memory lets you build persistent knowledge through natural conversations w
|
|
|
72
71
|
Claude, while keeping everything in simple Markdown files on your computer. It uses the Model Context Protocol (MCP) to
|
|
73
72
|
enable any compatible LLM to read and write to your local knowledge base.
|
|
74
73
|
|
|
75
|
-
- Website: https://
|
|
76
|
-
- Documentation: https://
|
|
74
|
+
- Website: https://basicmemory.com
|
|
75
|
+
- Documentation: https://docs.basicmemory.com
|
|
77
76
|
|
|
78
77
|
## Pick up your conversation right where you left off
|
|
79
78
|
|
|
@@ -111,24 +110,6 @@ uv tool install basic-memory
|
|
|
111
110
|
|
|
112
111
|
You can view shared context via files in `~/basic-memory` (default directory location).
|
|
113
112
|
|
|
114
|
-
### Alternative Installation via Smithery
|
|
115
|
-
|
|
116
|
-
You can use [Smithery](https://smithery.ai/server/@basicmachines-co/basic-memory) to automatically configure Basic
|
|
117
|
-
Memory for Claude Desktop:
|
|
118
|
-
|
|
119
|
-
```bash
|
|
120
|
-
npx -y @smithery/cli install @basicmachines-co/basic-memory --client claude
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
This installs and configures Basic Memory without requiring manual edits to the Claude Desktop configuration file. The
|
|
124
|
-
Smithery server hosts the MCP server component, while your data remains stored locally as Markdown files.
|
|
125
|
-
|
|
126
|
-
### Glama.ai
|
|
127
|
-
|
|
128
|
-
<a href="https://glama.ai/mcp/servers/o90kttu9ym">
|
|
129
|
-
<img width="380" height="200" src="https://glama.ai/mcp/servers/o90kttu9ym/badge" alt="basic-memory MCP server" />
|
|
130
|
-
</a>
|
|
131
|
-
|
|
132
113
|
## Why Basic Memory?
|
|
133
114
|
|
|
134
115
|
Most LLM interactions are ephemeral - you ask a question, get an answer, and everything is forgotten. Each conversation
|
|
@@ -474,7 +455,7 @@ canvas(nodes, edges, title, folder) - Generate knowledge visualizations
|
|
|
474
455
|
|
|
475
456
|
## Futher info
|
|
476
457
|
|
|
477
|
-
See the [Documentation](https://
|
|
458
|
+
See the [Documentation](https://docs.basicmemory.com) for more info, including:
|
|
478
459
|
|
|
479
460
|
- [Complete User Guide](https://docs.basicmemory.com/user-guide/)
|
|
480
461
|
- [CLI tools](https://docs.basicmemory.com/guides/cli-reference/)
|
|
@@ -515,39 +496,6 @@ tail -f ~/.basic-memory/basic-memory.log
|
|
|
515
496
|
BASIC_MEMORY_CLOUD_MODE=true uvicorn basic_memory.api.app:app
|
|
516
497
|
```
|
|
517
498
|
|
|
518
|
-
## Telemetry
|
|
519
|
-
|
|
520
|
-
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.
|
|
521
|
-
|
|
522
|
-
**What we collect:**
|
|
523
|
-
- App version, Python version, OS, architecture
|
|
524
|
-
- Feature usage (which MCP tools and CLI commands are used)
|
|
525
|
-
- Error types (sanitized - no file paths or personal data)
|
|
526
|
-
|
|
527
|
-
**What we NEVER collect:**
|
|
528
|
-
- Note content, file names, or paths
|
|
529
|
-
- Personal information
|
|
530
|
-
- IP addresses
|
|
531
|
-
|
|
532
|
-
**Opting out:**
|
|
533
|
-
```bash
|
|
534
|
-
# Disable telemetry
|
|
535
|
-
basic-memory telemetry disable
|
|
536
|
-
|
|
537
|
-
# Check status
|
|
538
|
-
basic-memory telemetry status
|
|
539
|
-
|
|
540
|
-
# Re-enable
|
|
541
|
-
basic-memory telemetry enable
|
|
542
|
-
```
|
|
543
|
-
|
|
544
|
-
Or set the environment variable:
|
|
545
|
-
```bash
|
|
546
|
-
export BASIC_MEMORY_TELEMETRY_ENABLED=false
|
|
547
|
-
```
|
|
548
|
-
|
|
549
|
-
For more details, see the [Telemetry documentation](https://basicmemory.com/telemetry).
|
|
550
|
-
|
|
551
499
|
## Development
|
|
552
500
|
|
|
553
501
|
### 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/)
|
|
@@ -5,7 +6,6 @@
|
|
|
5
6
|
[](https://github.com/astral-sh/ruff)
|
|
6
7
|

|
|
7
8
|

|
|
8
|
-
[](https://smithery.ai/server/@basicmachines-co/basic-memory)
|
|
9
9
|
|
|
10
10
|
## 🚀 Basic Memory Cloud is Live!
|
|
11
11
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
- **Early Supporter Pricing:** Early users get 25% off forever.
|
|
14
14
|
The open source project continues as always. Cloud just makes it work everywhere.
|
|
15
15
|
|
|
16
|
-
[Sign up now →](https://basicmemory.com
|
|
16
|
+
[Sign up now →](https://basicmemory.com)
|
|
17
17
|
|
|
18
18
|
with a 7 day free trial
|
|
19
19
|
|
|
@@ -23,8 +23,8 @@ Basic Memory lets you build persistent knowledge through natural conversations w
|
|
|
23
23
|
Claude, while keeping everything in simple Markdown files on your computer. It uses the Model Context Protocol (MCP) to
|
|
24
24
|
enable any compatible LLM to read and write to your local knowledge base.
|
|
25
25
|
|
|
26
|
-
- Website: https://
|
|
27
|
-
- Documentation: https://
|
|
26
|
+
- Website: https://basicmemory.com
|
|
27
|
+
- Documentation: https://docs.basicmemory.com
|
|
28
28
|
|
|
29
29
|
## Pick up your conversation right where you left off
|
|
30
30
|
|
|
@@ -62,24 +62,6 @@ uv tool install basic-memory
|
|
|
62
62
|
|
|
63
63
|
You can view shared context via files in `~/basic-memory` (default directory location).
|
|
64
64
|
|
|
65
|
-
### Alternative Installation via Smithery
|
|
66
|
-
|
|
67
|
-
You can use [Smithery](https://smithery.ai/server/@basicmachines-co/basic-memory) to automatically configure Basic
|
|
68
|
-
Memory for Claude Desktop:
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
npx -y @smithery/cli install @basicmachines-co/basic-memory --client claude
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
This installs and configures Basic Memory without requiring manual edits to the Claude Desktop configuration file. The
|
|
75
|
-
Smithery server hosts the MCP server component, while your data remains stored locally as Markdown files.
|
|
76
|
-
|
|
77
|
-
### Glama.ai
|
|
78
|
-
|
|
79
|
-
<a href="https://glama.ai/mcp/servers/o90kttu9ym">
|
|
80
|
-
<img width="380" height="200" src="https://glama.ai/mcp/servers/o90kttu9ym/badge" alt="basic-memory MCP server" />
|
|
81
|
-
</a>
|
|
82
|
-
|
|
83
65
|
## Why Basic Memory?
|
|
84
66
|
|
|
85
67
|
Most LLM interactions are ephemeral - you ask a question, get an answer, and everything is forgotten. Each conversation
|
|
@@ -425,7 +407,7 @@ canvas(nodes, edges, title, folder) - Generate knowledge visualizations
|
|
|
425
407
|
|
|
426
408
|
## Futher info
|
|
427
409
|
|
|
428
|
-
See the [Documentation](https://
|
|
410
|
+
See the [Documentation](https://docs.basicmemory.com) for more info, including:
|
|
429
411
|
|
|
430
412
|
- [Complete User Guide](https://docs.basicmemory.com/user-guide/)
|
|
431
413
|
- [CLI tools](https://docs.basicmemory.com/guides/cli-reference/)
|
|
@@ -466,39 +448,6 @@ tail -f ~/.basic-memory/basic-memory.log
|
|
|
466
448
|
BASIC_MEMORY_CLOUD_MODE=true uvicorn basic_memory.api.app:app
|
|
467
449
|
```
|
|
468
450
|
|
|
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
451
|
## Development
|
|
503
452
|
|
|
504
453
|
### Running Tests
|
|
@@ -8,9 +8,8 @@ To keep the default CI signal **stable and meaningful**, the default `pytest` co
|
|
|
8
8
|
- highly environment-dependent (OS/DB tuning)
|
|
9
9
|
- inherently interactive (CLI)
|
|
10
10
|
- background-task orchestration (watchers/sync runners)
|
|
11
|
-
- external analytics
|
|
12
11
|
|
|
13
|
-
### What
|
|
12
|
+
### What's excluded (and why)
|
|
14
13
|
|
|
15
14
|
Coverage excludes are configured in `pyproject.toml` under `[tool.coverage.report].omit`.
|
|
16
15
|
|
|
@@ -19,7 +18,6 @@ Current exclusions include:
|
|
|
19
18
|
- `src/basic_memory/db.py`: platform/backend tuning paths (SQLite/Postgres/Windows), covered by integration tests and targeted runs.
|
|
20
19
|
- `src/basic_memory/services/initialization.py`: startup orchestration/background tasks; covered indirectly by app/MCP entrypoints.
|
|
21
20
|
- `src/basic_memory/sync/sync_service.py`: heavy filesystem↔DB integration; validated in integration suite (not enforced in unit coverage).
|
|
22
|
-
- `src/basic_memory/telemetry.py`: external analytics; exercised lightly but excluded from strict coverage gate.
|
|
23
21
|
|
|
24
22
|
### Recommended additional runs
|
|
25
23
|
|
|
@@ -204,9 +204,14 @@ release version:
|
|
|
204
204
|
echo "📝 Updating version in __init__.py..."
|
|
205
205
|
sed -i.bak "s/__version__ = \".*\"/__version__ = \"$VERSION_NUM\"/" src/basic_memory/__init__.py
|
|
206
206
|
rm -f src/basic_memory/__init__.py.bak
|
|
207
|
-
|
|
207
|
+
|
|
208
|
+
# Update version in server.json (MCP registry metadata)
|
|
209
|
+
echo "📝 Updating version in server.json..."
|
|
210
|
+
sed -i.bak "s/\"version\": \"[^\"]*\"/\"version\": \"$VERSION_NUM\"/g" server.json
|
|
211
|
+
rm -f server.json.bak
|
|
212
|
+
|
|
208
213
|
# Commit version update
|
|
209
|
-
git add src/basic_memory/__init__.py
|
|
214
|
+
git add src/basic_memory/__init__.py server.json
|
|
210
215
|
git commit -m "chore: update version to $VERSION_NUM for {{version}} release"
|
|
211
216
|
|
|
212
217
|
# Create and push tag
|
|
@@ -221,9 +226,10 @@ release version:
|
|
|
221
226
|
echo "📦 GitHub Actions will build and publish to PyPI"
|
|
222
227
|
echo "🔗 Monitor at: https://github.com/basicmachines-co/basic-memory/actions"
|
|
223
228
|
echo ""
|
|
224
|
-
echo "📝 REMINDER:
|
|
229
|
+
echo "📝 REMINDER: Post-release tasks:"
|
|
225
230
|
echo " 1. docs.basicmemory.com - Add release notes to src/pages/latest-releases.mdx"
|
|
226
231
|
echo " 2. basicmachines.co - Update version in src/components/sections/hero.tsx"
|
|
232
|
+
echo " 3. MCP Registry - Run: mcp-publisher publish"
|
|
227
233
|
echo " See: .claude/commands/release/release.md for detailed instructions"
|
|
228
234
|
|
|
229
235
|
# Create a beta release (e.g., just beta v0.13.2b1)
|
|
@@ -269,9 +275,14 @@ beta version:
|
|
|
269
275
|
echo "📝 Updating version in __init__.py..."
|
|
270
276
|
sed -i.bak "s/__version__ = \".*\"/__version__ = \"$VERSION_NUM\"/" src/basic_memory/__init__.py
|
|
271
277
|
rm -f src/basic_memory/__init__.py.bak
|
|
272
|
-
|
|
278
|
+
|
|
279
|
+
# Update version in server.json (MCP registry metadata)
|
|
280
|
+
echo "📝 Updating version in server.json..."
|
|
281
|
+
sed -i.bak "s/\"version\": \"[^\"]*\"/\"version\": \"$VERSION_NUM\"/g" server.json
|
|
282
|
+
rm -f server.json.bak
|
|
283
|
+
|
|
273
284
|
# Commit version update
|
|
274
|
-
git add src/basic_memory/__init__.py
|
|
285
|
+
git add src/basic_memory/__init__.py server.json
|
|
275
286
|
git commit -m "chore: update version to $VERSION_NUM for {{version}} beta release"
|
|
276
287
|
|
|
277
288
|
# Create and push tag
|
|
@@ -41,7 +41,6 @@ dependencies = [
|
|
|
41
41
|
"mdformat>=0.7.22",
|
|
42
42
|
"mdformat-gfm>=0.3.7",
|
|
43
43
|
"mdformat-frontmatter>=2.0.8",
|
|
44
|
-
"openpanel>=0.0.1", # Anonymous usage telemetry (Homebrew-style opt-out)
|
|
45
44
|
"sniffio>=1.3.1",
|
|
46
45
|
"anyio>=4.10.0",
|
|
47
46
|
"httpx>=0.28.0",
|
|
@@ -143,6 +142,5 @@ omit = [
|
|
|
143
142
|
"*/db.py", # Backend/runtime-dependent (sqlite/postgres/windows tuning); validated via integration tests
|
|
144
143
|
"*/services/initialization.py", # Startup orchestration + background tasks (watchers); exercised indirectly in entrypoints
|
|
145
144
|
"*/sync/sync_service.py", # Heavy filesystem/db integration; covered by integration suite, not enforced in unit coverage
|
|
146
|
-
"*/telemetry.py", # External analytics; tested lightly, excluded from strict coverage target
|
|
147
145
|
"*/services/migration_service.py", # Complex migration scenarios
|
|
148
146
|
]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
|
+
"name": "io.github.basicmachines-co/basic-memory",
|
|
4
|
+
"description": "Local-first knowledge management with bi-directional LLM sync via Markdown files.",
|
|
5
|
+
"repository": {
|
|
6
|
+
"url": "https://github.com/basicmachines-co/basic-memory.git",
|
|
7
|
+
"source": "github"
|
|
8
|
+
},
|
|
9
|
+
"version": "0.17.8",
|
|
10
|
+
"packages": [
|
|
11
|
+
{
|
|
12
|
+
"registryType": "pypi",
|
|
13
|
+
"identifier": "basic-memory",
|
|
14
|
+
"version": "0.17.8",
|
|
15
|
+
"runtimeHint": "uvx",
|
|
16
|
+
"runtimeArguments": [
|
|
17
|
+
{"type": "positional", "value": "basic-memory"},
|
|
18
|
+
{"type": "positional", "value": "mcp"}
|
|
19
|
+
],
|
|
20
|
+
"transport": {
|
|
21
|
+
"type": "stdio"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""basic-memory - Local-first knowledge management combining Zettelkasten with knowledge graphs"""
|
|
2
2
|
|
|
3
3
|
# Package version - updated by release automation
|
|
4
|
-
__version__ = "0.17.
|
|
4
|
+
__version__ = "0.17.8"
|
|
5
5
|
|
|
6
6
|
# API version for FastAPI - independent of package version
|
|
7
7
|
__api_version__ = "v0"
|
|
@@ -322,7 +322,14 @@ async def remove_project(
|
|
|
322
322
|
) # pragma: no cover
|
|
323
323
|
|
|
324
324
|
# Check if trying to delete the default project
|
|
325
|
-
|
|
325
|
+
# In cloud mode, database is source of truth; in local mode, check config
|
|
326
|
+
config_default = project_service.default_project
|
|
327
|
+
db_default = await project_service.repository.get_default_project()
|
|
328
|
+
|
|
329
|
+
# Use database default if available, otherwise fall back to config default
|
|
330
|
+
default_project_name = db_default.name if db_default else config_default
|
|
331
|
+
|
|
332
|
+
if name == default_project_name:
|
|
326
333
|
available_projects = await project_service.list_projects()
|
|
327
334
|
other_projects = [p.name for p in available_projects if p.name != name]
|
|
328
335
|
detail = f"Cannot delete default project '{name}'. "
|
|
@@ -418,8 +425,13 @@ async def get_default_project(
|
|
|
418
425
|
Returns:
|
|
419
426
|
Response with project default information
|
|
420
427
|
"""
|
|
421
|
-
# Get the
|
|
422
|
-
|
|
428
|
+
# Get the default project
|
|
429
|
+
# In cloud mode, database is source of truth; in local mode, check config
|
|
430
|
+
config_default = project_service.default_project
|
|
431
|
+
db_default = await project_service.repository.get_default_project()
|
|
432
|
+
|
|
433
|
+
# Use database default if available, otherwise fall back to config default
|
|
434
|
+
default_name = db_default.name if db_default else config_default
|
|
423
435
|
default_project = await project_service.get_project(default_name)
|
|
424
436
|
if not default_project: # pragma: no cover
|
|
425
437
|
raise HTTPException( # pragma: no cover
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""Routes for getting entity content."""
|
|
2
2
|
|
|
3
3
|
import tempfile
|
|
4
|
+
import uuid
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
from typing import Annotated, Union
|
|
6
7
|
|
|
@@ -218,7 +219,9 @@ async def write_resource(
|
|
|
218
219
|
status_code = 200
|
|
219
220
|
else:
|
|
220
221
|
# Create a new entity model
|
|
222
|
+
# Explicitly set external_id to ensure NOT NULL constraint is satisfied (fixes #512)
|
|
221
223
|
entity = EntityModel(
|
|
224
|
+
external_id=str(uuid.uuid4()),
|
|
222
225
|
title=file_name,
|
|
223
226
|
entity_type=entity_type,
|
|
224
227
|
content_type=content_type,
|
{basic_memory-0.17.6 → basic_memory-0.17.8}/src/basic_memory/api/v2/routers/resource_router.py
RENAMED
|
@@ -9,6 +9,7 @@ Key differences from v1:
|
|
|
9
9
|
- More RESTful: POST for create, PUT for update, GET for read
|
|
10
10
|
"""
|
|
11
11
|
|
|
12
|
+
import uuid
|
|
12
13
|
from pathlib import Path as PathLib
|
|
13
14
|
|
|
14
15
|
from fastapi import APIRouter, HTTPException, Response, Path
|
|
@@ -147,7 +148,9 @@ async def create_resource(
|
|
|
147
148
|
entity_type = "canvas" if data.file_path.endswith(".canvas") else "file"
|
|
148
149
|
|
|
149
150
|
# Create a new entity model
|
|
151
|
+
# Explicitly set external_id to ensure NOT NULL constraint is satisfied (fixes #512)
|
|
150
152
|
entity = EntityModel(
|
|
153
|
+
external_id=str(uuid.uuid4()),
|
|
151
154
|
title=file_name,
|
|
152
155
|
entity_type=entity_type,
|
|
153
156
|
content_type=content_type,
|
|
@@ -10,7 +10,6 @@ import typer # noqa: E402
|
|
|
10
10
|
|
|
11
11
|
from basic_memory.cli.container import CliContainer, set_container # noqa: E402
|
|
12
12
|
from basic_memory.config import init_cli_logging # noqa: E402
|
|
13
|
-
from basic_memory.telemetry import show_notice_if_needed, track_app_started # noqa: E402
|
|
14
13
|
|
|
15
14
|
|
|
16
15
|
def version_callback(value: bool) -> None:
|
|
@@ -47,13 +46,6 @@ def app_callback(
|
|
|
47
46
|
container = CliContainer.create()
|
|
48
47
|
set_container(container)
|
|
49
48
|
|
|
50
|
-
# Show telemetry notice and track CLI startup
|
|
51
|
-
# Skip for 'mcp' command - it handles its own telemetry in lifespan
|
|
52
|
-
# Skip for 'telemetry' command - avoid issues when user is managing telemetry
|
|
53
|
-
if ctx.invoked_subcommand not in {"mcp", "telemetry"}:
|
|
54
|
-
show_notice_if_needed()
|
|
55
|
-
track_app_started("cli")
|
|
56
|
-
|
|
57
49
|
# Run initialization for commands that don't use the API
|
|
58
50
|
# Skip for 'mcp' command - it has its own lifespan that handles initialization
|
|
59
51
|
# Skip for API-using commands (status, sync, etc.) - they handle initialization via deps.py
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""CLI commands for basic-memory."""
|
|
2
2
|
|
|
3
3
|
from . import status, db, import_memory_json, mcp, import_claude_conversations
|
|
4
|
-
from . import import_claude_projects, import_chatgpt, tool, project, format
|
|
4
|
+
from . import import_claude_projects, import_chatgpt, tool, project, format
|
|
5
5
|
|
|
6
6
|
__all__ = [
|
|
7
7
|
"status",
|
|
@@ -14,5 +14,4 @@ __all__ = [
|
|
|
14
14
|
"tool",
|
|
15
15
|
"project",
|
|
16
16
|
"format",
|
|
17
|
-
"telemetry",
|
|
18
17
|
]
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
"""Cloud commands package."""
|
|
2
2
|
|
|
3
|
+
from basic_memory.cli.app import cloud_app
|
|
4
|
+
|
|
3
5
|
# Import all commands to register them with typer
|
|
4
6
|
from basic_memory.cli.commands.cloud.core_commands import * # noqa: F401,F403
|
|
5
7
|
from basic_memory.cli.commands.cloud.api_client import get_authenticated_headers, get_cloud_config # noqa: F401
|
|
6
8
|
from basic_memory.cli.commands.cloud.upload_command import * # noqa: F401,F403
|
|
9
|
+
|
|
10
|
+
# Register snapshot sub-command group
|
|
11
|
+
from basic_memory.cli.commands.cloud.snapshot import snapshot_app
|
|
12
|
+
|
|
13
|
+
cloud_app.add_typer(snapshot_app, name="snapshot")
|
|
14
|
+
|
|
15
|
+
# Register restore command (directly on cloud_app via decorator)
|
|
16
|
+
from basic_memory.cli.commands.cloud.restore import restore # noqa: F401, E402
|