basic-memory 0.17.8__tar.gz → 0.17.9__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.8 → basic_memory-0.17.9}/CHANGELOG.md +9 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/PKG-INFO +1 -1
- {basic_memory-0.17.8 → basic_memory-0.17.9}/server.json +2 -2
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/__init__.py +1 -1
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/services/project_service.py +7 -2
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/services/test_project_service.py +181 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.claude/commands/release/beta.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.claude/commands/release/changelog.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.claude/commands/release/release-check.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.claude/commands/release/release.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.claude/commands/spec.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.claude/commands/test-live.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.claude/settings.json +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.dockerignore +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.env.example +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.github/dependabot.yml +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.github/workflows/claude-code-review.yml +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.github/workflows/claude-issue-triage.yml +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.github/workflows/claude.yml +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.github/workflows/dev-release.yml +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.github/workflows/docker.yml +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.github/workflows/pr-title.yml +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.github/workflows/release.yml +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.github/workflows/test.yml +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.gitignore +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/.python-version +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/CITATION.cff +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/CLA.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/CLAUDE.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/CODE_OF_CONDUCT.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/CONTRIBUTING.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/Dockerfile +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/LICENSE +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/README.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/SECURITY.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/docker-compose-postgres.yml +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/docker-compose.yml +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/docs/ARCHITECTURE.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/docs/Docker.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/docs/ai-assistant-guide-extended.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/docs/character-handling.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/docs/cloud-cli.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/docs/testing-coverage.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/justfile +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/llms-install.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/pyproject.toml +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/smithery.yaml +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/alembic.ini +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/env.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/migrations.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/script.py.mako +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/versions/314f1ea54dc4_add_postgres_full_text_search_support_.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/versions/6830751f5fb6_merge_multiple_heads.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/versions/9d9c1cb7d8f5_add_mtime_and_size_columns_to_entity_.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/versions/a1b2c3d4e5f6_fix_project_foreign_keys.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/versions/a2b3c4d5e6f7_add_search_index_entity_cascade.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/versions/e7e1f4367280_add_scan_watermark_tracking_to_project.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/versions/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/alembic/versions/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/app.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/container.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/routers/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/routers/directory_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/routers/importer_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/routers/knowledge_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/routers/management_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/routers/memory_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/routers/project_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/routers/prompt_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/routers/resource_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/routers/search_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/routers/utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/template_loader.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/directory_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/importer_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/knowledge_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/memory_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/project_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/prompt_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/resource_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/search_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/app.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/auth.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/api_client.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/bisync_commands.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/cloud_utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/core_commands.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/rclone_commands.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/rclone_config.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/rclone_installer.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/restore.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/schemas.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/snapshot.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/upload.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/upload_command.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/command_utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/db.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/format.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/import_chatgpt.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/import_claude_conversations.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/import_claude_projects.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/import_memory_json.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/mcp.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/project.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/status.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/tool.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/container.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/main.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/config.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/db.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/deps/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/deps/config.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/deps/db.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/deps/importers.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/deps/projects.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/deps/repositories.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/deps/services.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/deps.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/file_utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/ignore_utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/importers/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/importers/base.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/importers/chatgpt_importer.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/importers/claude_conversations_importer.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/importers/claude_projects_importer.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/importers/memory_json_importer.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/importers/utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/markdown/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/markdown/entity_parser.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/markdown/markdown_processor.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/markdown/plugins.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/markdown/schemas.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/markdown/utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/async_client.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/clients/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/clients/directory.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/clients/knowledge.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/clients/memory.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/clients/project.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/clients/resource.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/clients/search.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/container.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/project_context.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/prompts/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/prompts/continue_conversation.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/prompts/recent_activity.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/prompts/search.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/prompts/utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/resources/ai_assistant_guide.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/resources/project_info.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/server.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/build_context.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/canvas.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/chatgpt_tools.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/delete_note.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/edit_note.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/list_directory.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/move_note.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/project_management.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/read_content.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/read_note.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/recent_activity.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/search.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/view_note.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/mcp/tools/write_note.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/models/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/models/base.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/models/knowledge.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/models/project.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/models/search.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/project_resolver.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/repository/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/repository/entity_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/repository/observation_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/repository/postgres_search_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/repository/project_info_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/repository/project_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/repository/relation_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/repository/repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/repository/search_index_row.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/repository/search_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/repository/search_repository_base.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/repository/sqlite_search_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/runtime.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/base.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/cloud.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/delete.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/directory.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/importer.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/memory.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/project_info.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/prompt.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/request.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/response.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/search.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/sync_report.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/v2/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/v2/entity.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/schemas/v2/resource.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/services/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/services/context_service.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/services/directory_service.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/services/entity_service.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/services/exceptions.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/services/file_service.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/services/initialization.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/services/link_resolver.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/services/search_service.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/services/service.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/sync/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/sync/background_sync.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/sync/coordinator.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/sync/sync_service.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/sync/watch_service.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/templates/prompts/search.hbs +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/BENCHMARKS.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/cli/test_project_commands_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/cli/test_version_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/conftest.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_build_context_underscore.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_build_context_validation.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_chatgpt_tools_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_default_project_mode_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_delete_note_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_edit_note_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_lifespan_shutdown_sync_task_cancellation_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_list_directory_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_move_note_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_project_management_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_project_state_sync_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_read_content_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_read_note_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_search_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_single_project_mcp_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/mcp/test_write_note_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/test_db_wal_mode.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/test-int/test_disable_permalinks_integration.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/Non-MarkdownFileSupport.pdf +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/README.md +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/Screenshot.png +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/conftest.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_api_container.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_async_client.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_continue_conversation_template.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_directory_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_importer_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_knowledge_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_management_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_memory_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_project_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_project_router_operations.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_prompt_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_relation_background_resolution.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_resource_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_search_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_search_template.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_template_loader.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/test_template_loader_helpers.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/v2/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/v2/conftest.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/v2/test_directory_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/v2/test_importer_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/v2/test_knowledge_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/v2/test_memory_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/v2/test_project_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/v2/test_prompt_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/v2/test_resource_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/api/v2/test_search_router.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/cloud/test_cloud_api_client_and_utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/cloud/test_rclone_config_and_bmignore_filters.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/cloud/test_upload_path.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/conftest.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/test_auth_cli_auth.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/test_cli_container.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/test_cli_exit.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/test_cli_tool_exit.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/test_cli_tools.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/test_cloud_authentication.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/test_ignore_utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/test_import_chatgpt.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/test_import_claude_conversations.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/test_import_claude_projects.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/test_import_memory_json.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/test_project_add_with_local_path.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/test_restore_commands.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/test_snapshot_commands.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/cli/test_upload.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/conftest.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/db/test_issue_254_foreign_key_constraints.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/importers/test_conversation_indexing.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/importers/test_importer_base.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/importers/test_importer_utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/markdown/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/markdown/test_date_frontmatter_parsing.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/markdown/test_entity_parser.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/markdown/test_entity_parser_error_handling.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/markdown/test_markdown_plugins.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/markdown/test_markdown_processor.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/markdown/test_markdown_utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/markdown/test_observation_edge_cases.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/markdown/test_parser_edge_cases.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/markdown/test_relation_edge_cases.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/markdown/test_task_detection.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/clients/__init__.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/clients/test_clients.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/conftest.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_async_client_modes.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_mcp_container.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_obsidian_yaml_formatting.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_permalink_collision_file_overwrite.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_project_context.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_prompts.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_recent_activity_prompt_modes.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_resources.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_server_lifespan_branches.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_build_context.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_canvas.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_delete_note.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_edit_note.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_list_directory.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_move_note.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_project_management.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_read_content.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_read_note.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_recent_activity.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_resource.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_search.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_view_note.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_write_note.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/test_tool_write_note_kebab_filenames.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/mcp/tools/test_chatgpt_tools.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/repository/test_entity_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/repository/test_entity_repository_upsert.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/repository/test_entity_upsert_issue_187.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/repository/test_observation_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/repository/test_postgres_search_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/repository/test_project_info_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/repository/test_project_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/repository/test_relation_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/repository/test_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/repository/test_search_repository.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/repository/test_search_repository_edit_bug_fix.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/schemas/test_base_timeframe_minimum.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/schemas/test_memory_serialization.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/schemas/test_memory_url.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/schemas/test_memory_url_validation.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/schemas/test_relation_response_reference_resolution.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/schemas/test_schemas.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/schemas/test_search.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/services/test_context_service.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/services/test_directory_service.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/services/test_entity_service.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/services/test_entity_service_disable_permalinks.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/services/test_file_service.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/services/test_initialization.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/services/test_initialization_cloud_mode_branches.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/services/test_link_resolver.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/services/test_project_removal_bug.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/services/test_project_service_operations.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/services/test_search_service.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/sync/test_character_conflicts.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/sync/test_coordinator.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/sync/test_sync_service.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/sync/test_sync_service_incremental.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/sync/test_sync_wikilink_issue.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/sync/test_tmp_files.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/sync/test_watch_service.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/sync/test_watch_service_atomic_adds.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/sync/test_watch_service_edge_cases.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/sync/test_watch_service_reload.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/test_config.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/test_deps.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/test_production_cascade_delete.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/test_project_resolver.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/test_rclone_commands.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/test_runtime.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/utils/test_file_utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/utils/test_frontmatter_obsidian_compatible.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/utils/test_parse_tags.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/utils/test_permalink_formatting.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/utils/test_timezone_utils.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/utils/test_utf8_handling.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/tests/utils/test_validate_project_path.py +0 -0
- {basic_memory-0.17.8 → basic_memory-0.17.9}/uv.lock +0 -0
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## v0.17.9 (2026-01-24)
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
- **#523**: Fix `remove_project()` checking stale config in cloud mode
|
|
8
|
+
([`17c0e0a`](https://github.com/basicmachines-co/basic-memory/commit/17c0e0a))
|
|
9
|
+
- In cloud mode, only check database `is_default` field (source of truth)
|
|
10
|
+
- Config file can become stale when users set default project via v2 API
|
|
11
|
+
|
|
3
12
|
## v0.17.8 (2026-01-24)
|
|
4
13
|
|
|
5
14
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: basic-memory
|
|
3
|
-
Version: 0.17.
|
|
3
|
+
Version: 0.17.9
|
|
4
4
|
Summary: Local-first knowledge management combining Zettelkasten with knowledge graphs
|
|
5
5
|
Project-URL: Homepage, https://github.com/basicmachines-co/basic-memory
|
|
6
6
|
Project-URL: Repository, https://github.com/basicmachines-co/basic-memory
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
"url": "https://github.com/basicmachines-co/basic-memory.git",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.17.
|
|
9
|
+
"version": "0.17.9",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "pypi",
|
|
13
13
|
"identifier": "basic-memory",
|
|
14
|
-
"version": "0.17.
|
|
14
|
+
"version": "0.17.9",
|
|
15
15
|
"runtimeHint": "uvx",
|
|
16
16
|
"runtimeArguments": [
|
|
17
17
|
{"type": "positional", "value": "basic-memory"},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""basic-memory - Local-first knowledge management combining Zettelkasten with knowledge graphs"""
|
|
2
2
|
|
|
3
3
|
# Package version - updated by release automation
|
|
4
|
-
__version__ = "0.17.
|
|
4
|
+
__version__ = "0.17.9"
|
|
5
5
|
|
|
6
6
|
# API version for FastAPI - independent of package version
|
|
7
7
|
__api_version__ = "v0"
|
|
@@ -241,8 +241,13 @@ class ProjectService:
|
|
|
241
241
|
|
|
242
242
|
project_path = project.path
|
|
243
243
|
|
|
244
|
-
# Check if project is default
|
|
245
|
-
|
|
244
|
+
# Check if project is default
|
|
245
|
+
# In cloud mode: database is source of truth
|
|
246
|
+
# In local mode: also check config file
|
|
247
|
+
is_default = project.is_default
|
|
248
|
+
if not self.config_manager.config.cloud_mode:
|
|
249
|
+
is_default = is_default or name == self.config_manager.config.default_project
|
|
250
|
+
if is_default:
|
|
246
251
|
raise ValueError(f"Cannot remove the default project '{name}'") # pragma: no cover
|
|
247
252
|
|
|
248
253
|
# Remove from config if it exists there (may not exist in cloud mode)
|
|
@@ -1348,3 +1348,184 @@ async def test_remove_project_delete_notes_missing_directory(project_service: Pr
|
|
|
1348
1348
|
project_service.config_manager.remove_project(test_project_name)
|
|
1349
1349
|
except Exception:
|
|
1350
1350
|
pass
|
|
1351
|
+
|
|
1352
|
+
|
|
1353
|
+
@pytest.mark.asyncio
|
|
1354
|
+
async def test_remove_project_cloud_mode_uses_database_not_config(project_service: ProjectService):
|
|
1355
|
+
"""Test that in cloud mode, remove_project only checks database for default status.
|
|
1356
|
+
|
|
1357
|
+
Regression test for bug where cloud mode checked config file (stale) instead of
|
|
1358
|
+
database (source of truth) when determining if a project is the default.
|
|
1359
|
+
"""
|
|
1360
|
+
test_project_name = f"test-cloud-default-{os.urandom(4).hex()}"
|
|
1361
|
+
test_project_path = f"/tmp/test-cloud-{os.urandom(8).hex()}"
|
|
1362
|
+
|
|
1363
|
+
# Save original cloud_mode setting
|
|
1364
|
+
config = project_service.config_manager.config
|
|
1365
|
+
original_cloud_mode = config.cloud_mode
|
|
1366
|
+
original_default = config.default_project
|
|
1367
|
+
|
|
1368
|
+
try:
|
|
1369
|
+
# Add a test project (not default)
|
|
1370
|
+
await project_service.add_project(test_project_name, test_project_path, set_default=False)
|
|
1371
|
+
|
|
1372
|
+
# Verify project exists and is NOT default in database
|
|
1373
|
+
db_project = await project_service.repository.get_by_name(test_project_name)
|
|
1374
|
+
assert db_project is not None
|
|
1375
|
+
assert db_project.is_default is not True # Should be None or False
|
|
1376
|
+
|
|
1377
|
+
# Simulate stale config: manually set this project as default in config only
|
|
1378
|
+
# (This simulates what happens when config isn't updated after API calls)
|
|
1379
|
+
config.default_project = test_project_name
|
|
1380
|
+
|
|
1381
|
+
# Enable cloud mode
|
|
1382
|
+
config.cloud_mode = True
|
|
1383
|
+
project_service.config_manager.save_config(config)
|
|
1384
|
+
|
|
1385
|
+
# In cloud mode, should be able to remove the project because database says it's not default
|
|
1386
|
+
# (even though stale config says it is) - this should NOT raise ValueError
|
|
1387
|
+
await project_service.remove_project(test_project_name, delete_notes=False)
|
|
1388
|
+
|
|
1389
|
+
# Verify project was removed from database
|
|
1390
|
+
db_project = await project_service.repository.get_by_name(test_project_name)
|
|
1391
|
+
assert db_project is None
|
|
1392
|
+
|
|
1393
|
+
finally:
|
|
1394
|
+
# Restore original settings
|
|
1395
|
+
config = project_service.config_manager.config
|
|
1396
|
+
config.cloud_mode = original_cloud_mode
|
|
1397
|
+
config.default_project = original_default
|
|
1398
|
+
project_service.config_manager.save_config(config)
|
|
1399
|
+
|
|
1400
|
+
# Cleanup from config if test failed partway
|
|
1401
|
+
try:
|
|
1402
|
+
project_service.config_manager.remove_project(test_project_name)
|
|
1403
|
+
except (ValueError, KeyError):
|
|
1404
|
+
pass # Project may not be in config
|
|
1405
|
+
|
|
1406
|
+
|
|
1407
|
+
@pytest.mark.asyncio
|
|
1408
|
+
async def test_remove_project_local_mode_checks_both_config_and_database(
|
|
1409
|
+
project_service: ProjectService,
|
|
1410
|
+
):
|
|
1411
|
+
"""Test that in local mode, remove_project checks both config AND database for default status.
|
|
1412
|
+
|
|
1413
|
+
In local mode, we check both sources to be safe - if either says the project is default,
|
|
1414
|
+
we prevent deletion.
|
|
1415
|
+
"""
|
|
1416
|
+
test_project_name = f"test-local-default-{os.urandom(4).hex()}"
|
|
1417
|
+
test_project_path = f"/tmp/test-local-{os.urandom(8).hex()}"
|
|
1418
|
+
|
|
1419
|
+
# Save original settings
|
|
1420
|
+
config = project_service.config_manager.config
|
|
1421
|
+
original_cloud_mode = config.cloud_mode
|
|
1422
|
+
original_default = config.default_project
|
|
1423
|
+
|
|
1424
|
+
try:
|
|
1425
|
+
# Ensure we're in local mode before adding project
|
|
1426
|
+
config.cloud_mode = False
|
|
1427
|
+
project_service.config_manager.save_config(config)
|
|
1428
|
+
|
|
1429
|
+
# Add a test project (not default) - this will add to both DB and config in local mode
|
|
1430
|
+
await project_service.add_project(test_project_name, test_project_path, set_default=False)
|
|
1431
|
+
|
|
1432
|
+
# Verify project exists and is NOT default in database
|
|
1433
|
+
db_project = await project_service.repository.get_by_name(test_project_name)
|
|
1434
|
+
assert db_project is not None
|
|
1435
|
+
assert db_project.is_default is not True
|
|
1436
|
+
|
|
1437
|
+
# Re-read config to get the updated version (after add_project added the project)
|
|
1438
|
+
config = project_service.config_manager.config
|
|
1439
|
+
|
|
1440
|
+
# Set this project as default in config only (not in DB)
|
|
1441
|
+
config.default_project = test_project_name
|
|
1442
|
+
project_service.config_manager.save_config(config)
|
|
1443
|
+
|
|
1444
|
+
# In local mode, should NOT be able to remove because config says it's default
|
|
1445
|
+
with pytest.raises(ValueError, match="Cannot remove the default project"):
|
|
1446
|
+
await project_service.remove_project(test_project_name, delete_notes=False)
|
|
1447
|
+
|
|
1448
|
+
# Verify project still exists in database
|
|
1449
|
+
db_project = await project_service.repository.get_by_name(test_project_name)
|
|
1450
|
+
assert db_project is not None
|
|
1451
|
+
|
|
1452
|
+
finally:
|
|
1453
|
+
# Restore original settings
|
|
1454
|
+
config = project_service.config_manager.config
|
|
1455
|
+
config.cloud_mode = original_cloud_mode
|
|
1456
|
+
config.default_project = original_default
|
|
1457
|
+
project_service.config_manager.save_config(config)
|
|
1458
|
+
|
|
1459
|
+
# Cleanup
|
|
1460
|
+
try:
|
|
1461
|
+
project_service.config_manager.remove_project(test_project_name)
|
|
1462
|
+
except (ValueError, KeyError):
|
|
1463
|
+
pass
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
@pytest.mark.asyncio
|
|
1467
|
+
async def test_remove_project_rejects_database_default_in_both_modes(
|
|
1468
|
+
project_service: ProjectService,
|
|
1469
|
+
):
|
|
1470
|
+
"""Test that remove_project rejects deletion when project is default in database.
|
|
1471
|
+
|
|
1472
|
+
This should be blocked in BOTH cloud mode and local mode.
|
|
1473
|
+
"""
|
|
1474
|
+
test_project_name = f"test-db-default-{os.urandom(4).hex()}"
|
|
1475
|
+
test_project_path = f"/tmp/test-db-default-{os.urandom(8).hex()}"
|
|
1476
|
+
|
|
1477
|
+
# Save original settings
|
|
1478
|
+
original_cloud_mode = project_service.config_manager.config.cloud_mode
|
|
1479
|
+
original_default = project_service.config_manager.config.default_project
|
|
1480
|
+
|
|
1481
|
+
try:
|
|
1482
|
+
# Add a test project and set it as default
|
|
1483
|
+
await project_service.add_project(test_project_name, test_project_path, set_default=True)
|
|
1484
|
+
|
|
1485
|
+
# Verify project is default in database
|
|
1486
|
+
db_project = await project_service.repository.get_by_name(test_project_name)
|
|
1487
|
+
assert db_project is not None
|
|
1488
|
+
assert db_project.is_default is True
|
|
1489
|
+
|
|
1490
|
+
# Test in cloud mode - should reject
|
|
1491
|
+
config = project_service.config_manager.config
|
|
1492
|
+
config.cloud_mode = True
|
|
1493
|
+
project_service.config_manager.save_config(config)
|
|
1494
|
+
|
|
1495
|
+
with pytest.raises(ValueError, match="Cannot remove the default project"):
|
|
1496
|
+
await project_service.remove_project(test_project_name, delete_notes=False)
|
|
1497
|
+
|
|
1498
|
+
# Test in local mode - should also reject
|
|
1499
|
+
config.cloud_mode = False
|
|
1500
|
+
project_service.config_manager.save_config(config)
|
|
1501
|
+
|
|
1502
|
+
with pytest.raises(ValueError, match="Cannot remove the default project"):
|
|
1503
|
+
await project_service.remove_project(test_project_name, delete_notes=False)
|
|
1504
|
+
|
|
1505
|
+
# Verify project still exists in both cases
|
|
1506
|
+
assert test_project_name in project_service.projects
|
|
1507
|
+
|
|
1508
|
+
finally:
|
|
1509
|
+
# Restore original settings
|
|
1510
|
+
config = project_service.config_manager.config
|
|
1511
|
+
config.cloud_mode = original_cloud_mode
|
|
1512
|
+
config.default_project = original_default
|
|
1513
|
+
project_service.config_manager.save_config(config)
|
|
1514
|
+
|
|
1515
|
+
# Set original default back in database so we can clean up
|
|
1516
|
+
if original_default:
|
|
1517
|
+
original_project = await project_service.repository.get_by_name(original_default)
|
|
1518
|
+
if original_project:
|
|
1519
|
+
await project_service.repository.set_as_default(original_project.id)
|
|
1520
|
+
|
|
1521
|
+
# Cleanup test project
|
|
1522
|
+
if test_project_name in project_service.projects:
|
|
1523
|
+
try:
|
|
1524
|
+
# Clear default in DB first
|
|
1525
|
+
db_project = await project_service.repository.get_by_name(test_project_name)
|
|
1526
|
+
if db_project and db_project.is_default:
|
|
1527
|
+
# Find another project to make default
|
|
1528
|
+
pass # Let the config_manager handle it
|
|
1529
|
+
project_service.config_manager.remove_project(test_project_name)
|
|
1530
|
+
except Exception:
|
|
1531
|
+
pass
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/routers/directory_router.py
RENAMED
|
File without changes
|
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/routers/knowledge_router.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/routers/management_router.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/directory_router.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/importer_router.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/knowledge_router.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/memory_router.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/project_router.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/prompt_router.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/resource_router.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/api/v2/routers/search_router.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/api_client.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/bisync_commands.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/cloud_utils.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/core_commands.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/rclone_commands.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/rclone_config.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/rclone_installer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/cloud/upload_command.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/import_claude_projects.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/cli/commands/import_memory_json.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/importers/claude_projects_importer.py
RENAMED
|
File without changes
|
{basic_memory-0.17.8 → basic_memory-0.17.9}/src/basic_memory/importers/memory_json_importer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|