basic-memory 0.15.0__tar.gz → 0.15.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of basic-memory might be problematic. Click here for more details.
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.github/workflows/test.yml +0 -4
- {basic_memory-0.15.0 → basic_memory-0.15.2}/CHANGELOG.md +200 -1
- {basic_memory-0.15.0 → basic_memory-0.15.2}/CLAUDE.md +117 -20
- {basic_memory-0.15.0 → basic_memory-0.15.2}/CONTRIBUTING.md +80 -7
- {basic_memory-0.15.0 → basic_memory-0.15.2}/Dockerfile +3 -2
- {basic_memory-0.15.0 → basic_memory-0.15.2}/PKG-INFO +51 -4
- {basic_memory-0.15.0 → basic_memory-0.15.2}/README.md +49 -2
- basic_memory-0.15.2/docs/ai-assistant-guide-extended.md +3259 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/docs/cloud-cli.md +73 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/justfile +10 -5
- {basic_memory-0.15.0 → basic_memory-0.15.2}/pyproject.toml +9 -5
- basic_memory-0.15.2/specs/SPEC-15 Configuration Persistence via Tigris for Cloud Tenants.md +264 -0
- basic_memory-0.15.2/specs/SPEC-16 MCP Cloud Service Consolidation.md +719 -0
- basic_memory-0.15.2/specs/SPEC-17 Semantic Search with ChromaDB.md +1439 -0
- basic_memory-0.15.2/specs/SPEC-18 AI Memory Management Tool.md +528 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/__init__.py +1 -1
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/api/routers/directory_router.py +23 -2
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/api/routers/project_router.py +1 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/auth.py +2 -2
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/cloud/__init__.py +2 -1
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/cloud/bisync_commands.py +4 -57
- basic_memory-0.15.2/src/basic_memory/cli/commands/cloud/cloud_utils.py +100 -0
- basic_memory-0.15.2/src/basic_memory/cli/commands/cloud/upload.py +128 -0
- basic_memory-0.15.2/src/basic_memory/cli/commands/cloud/upload_command.py +93 -0
- basic_memory-0.15.2/src/basic_memory/cli/commands/command_utils.py +43 -0
- basic_memory-0.15.2/src/basic_memory/cli/commands/mcp.py +94 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/project.py +140 -120
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/status.py +6 -15
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/config.py +55 -9
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/deps.py +7 -5
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/ignore_utils.py +7 -7
- basic_memory-0.15.2/src/basic_memory/mcp/async_client.py +138 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/prompts/continue_conversation.py +16 -15
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/prompts/search.py +12 -11
- basic_memory-0.15.2/src/basic_memory/mcp/resources/ai_assistant_guide.md +283 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/resources/project_info.py +9 -7
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/tools/build_context.py +40 -39
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/tools/canvas.py +21 -20
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/tools/chatgpt_tools.py +11 -2
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/tools/delete_note.py +22 -21
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/tools/edit_note.py +105 -104
- basic_memory-0.15.2/src/basic_memory/mcp/tools/list_directory.py +167 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/tools/move_note.py +127 -125
- basic_memory-0.15.2/src/basic_memory/mcp/tools/project_management.py +200 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/tools/read_content.py +64 -63
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/tools/read_note.py +88 -88
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/tools/recent_activity.py +139 -135
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/tools/search.py +27 -26
- basic_memory-0.15.2/src/basic_memory/mcp/tools/sync_status.py +261 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/tools/utils.py +0 -15
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/tools/view_note.py +14 -28
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/tools/write_note.py +97 -87
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/repository/entity_repository.py +60 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/repository/repository.py +16 -3
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/repository/search_repository.py +42 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/schemas/cloud.py +7 -3
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/schemas/project_info.py +1 -1
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/services/directory_service.py +124 -3
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/services/entity_service.py +31 -9
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/services/project_service.py +97 -10
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/services/search_service.py +16 -8
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/sync/sync_service.py +28 -13
- basic_memory-0.15.2/test-int/BENCHMARKS.md +139 -0
- basic_memory-0.15.2/test-int/cli/test_project_commands_integration.py +121 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/conftest.py +1 -1
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/mcp/test_project_management_integration.py +39 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/mcp/test_write_note_integration.py +59 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/test_disable_permalinks_integration.py +0 -3
- basic_memory-0.15.2/test-int/test_sync_performance_benchmark.py +369 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_directory_router.py +133 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_project_router.py +79 -74
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/cli/test_bisync_commands.py +10 -12
- basic_memory-0.15.2/tests/cli/test_cloud_utils.py +326 -0
- basic_memory-0.15.2/tests/cli/test_upload.py +328 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/conftest.py +5 -0
- basic_memory-0.15.2/tests/db/test_issue_254_foreign_key_constraints.py +170 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_tool_view_note.py +35 -43
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/repository/test_entity_repository.py +212 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/services/test_directory_service.py +48 -0
- basic_memory-0.15.2/tests/services/test_project_removal_bug.py +138 -0
- basic_memory-0.15.2/tests/services/test_project_service.py +1200 -0
- basic_memory-0.15.2/tests/services/test_project_service_operations.py +111 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/test_config.py +89 -0
- basic_memory-0.15.2/tests/test_deps.py +206 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/uv.lock +1 -1
- basic_memory-0.15.2/v0.15.0-RELEASE-DOCS.md +161 -0
- basic_memory-0.15.2/v15-docs/README.md +61 -0
- basic_memory-0.15.2/v15-docs/api-performance.md +585 -0
- basic_memory-0.15.2/v15-docs/background-relations.md +531 -0
- basic_memory-0.15.2/v15-docs/basic-memory-home.md +371 -0
- basic_memory-0.15.2/v15-docs/bug-fixes.md +395 -0
- basic_memory-0.15.2/v15-docs/chatgpt-integration.md +648 -0
- basic_memory-0.15.2/v15-docs/cloud-authentication.md +381 -0
- basic_memory-0.15.2/v15-docs/cloud-bisync.md +531 -0
- basic_memory-0.15.2/v15-docs/cloud-mode-usage.md +546 -0
- basic_memory-0.15.2/v15-docs/cloud-mount.md +501 -0
- basic_memory-0.15.2/v15-docs/default-project-mode.md +425 -0
- basic_memory-0.15.2/v15-docs/env-file-removal.md +434 -0
- basic_memory-0.15.2/v15-docs/env-var-overrides.md +449 -0
- basic_memory-0.15.2/v15-docs/explicit-project-parameter.md +198 -0
- basic_memory-0.15.2/v15-docs/gitignore-integration.md +621 -0
- basic_memory-0.15.2/v15-docs/project-root-env-var.md +424 -0
- basic_memory-0.15.2/v15-docs/sqlite-performance.md +512 -0
- basic_memory-0.15.0/src/basic_memory/cli/commands/command_utils.py +0 -60
- basic_memory-0.15.0/src/basic_memory/cli/commands/mcp.py +0 -89
- basic_memory-0.15.0/src/basic_memory/mcp/async_client.py +0 -40
- basic_memory-0.15.0/src/basic_memory/mcp/resources/ai_assistant_guide.md +0 -551
- basic_memory-0.15.0/src/basic_memory/mcp/tools/headers.py +0 -44
- basic_memory-0.15.0/src/basic_memory/mcp/tools/list_directory.py +0 -164
- basic_memory-0.15.0/src/basic_memory/mcp/tools/project_management.py +0 -197
- basic_memory-0.15.0/src/basic_memory/mcp/tools/sync_status.py +0 -256
- basic_memory-0.15.0/test-int/cli/test_project_commands_integration.py +0 -112
- basic_memory-0.15.0/tests/db/test_issue_254_foreign_key_constraints.py +0 -158
- basic_memory-0.15.0/tests/services/test_project_removal_bug.py +0 -134
- basic_memory-0.15.0/tests/services/test_project_service.py +0 -716
- basic_memory-0.15.0/tests/services/test_project_service_operations.py +0 -103
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.claude/agents/python-developer.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.claude/agents/system-architect.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.claude/commands/release/beta.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.claude/commands/release/changelog.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.claude/commands/release/release-check.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.claude/commands/release/release.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.claude/commands/spec.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.claude/commands/test-live.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.dockerignore +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.github/dependabot.yml +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.github/workflows/claude-code-review.yml +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.github/workflows/claude-issue-triage.yml +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.github/workflows/claude.yml +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.github/workflows/dev-release.yml +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.github/workflows/docker.yml +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.github/workflows/pr-title.yml +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.github/workflows/release.yml +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.gitignore +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/.python-version +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/CITATION.cff +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/CLA.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/CODE_OF_CONDUCT.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/LICENSE +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/SECURITY.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/docker-compose.yml +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/docs/Docker.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/docs/character-handling.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/llms-install.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/smithery.yaml +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/specs/SPEC-1 Specification-Driven Development Process.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/specs/SPEC-11 Basic Memory API Performance Optimization.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/specs/SPEC-13 CLI Authentication with Subscription Validation.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/specs/SPEC-14- Cloud Git Versioning & GitHub Backup.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/specs/SPEC-2 Slash Commands Reference.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/specs/SPEC-3 Agent Definitions.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/specs/SPEC-5 CLI Cloud Upload via WebDAV.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/specs/SPEC-6 Explicit Project Parameter Architecture.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/specs/SPEC-7 POC to spike Tigris Turso for local access to cloud data.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/specs/SPEC-8 TigrisFS Integration.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/specs/SPEC-9 Multi-Project Bidirectional Sync Architecture.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/specs/SPEC-9-1 Follow-Ups- Conflict, Sync, and Observability.md +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/alembic/alembic.ini +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/alembic/env.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/alembic/migrations.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/alembic/script.py.mako +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/alembic/versions/a1b2c3d4e5f6_fix_project_foreign_keys.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/api/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/api/app.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/api/routers/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/api/routers/importer_router.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/api/routers/knowledge_router.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/api/routers/management_router.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/api/routers/memory_router.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/api/routers/prompt_router.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/api/routers/resource_router.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/api/routers/search_router.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/api/routers/utils.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/api/template_loader.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/app.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/cloud/api_client.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/cloud/core_commands.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/cloud/mount_commands.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/cloud/rclone_config.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/cloud/rclone_installer.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/db.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/import_chatgpt.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/import_claude_conversations.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/import_claude_projects.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/import_memory_json.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/sync.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/commands/tool.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/cli/main.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/db.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/file_utils.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/importers/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/importers/base.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/importers/chatgpt_importer.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/importers/claude_conversations_importer.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/importers/claude_projects_importer.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/importers/memory_json_importer.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/importers/utils.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/markdown/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/markdown/entity_parser.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/markdown/markdown_processor.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/markdown/plugins.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/markdown/schemas.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/markdown/utils.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/project_context.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/prompts/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/prompts/recent_activity.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/prompts/utils.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/server.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/mcp/tools/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/models/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/models/base.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/models/knowledge.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/models/project.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/models/search.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/repository/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/repository/observation_repository.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/repository/project_info_repository.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/repository/project_repository.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/repository/relation_repository.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/schemas/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/schemas/base.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/schemas/delete.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/schemas/directory.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/schemas/importer.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/schemas/memory.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/schemas/prompt.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/schemas/request.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/schemas/response.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/schemas/search.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/schemas/sync_report.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/services/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/services/context_service.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/services/exceptions.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/services/file_service.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/services/initialization.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/services/link_resolver.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/services/service.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/services/sync_status_service.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/sync/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/sync/background_sync.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/sync/watch_service.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/templates/prompts/search.hbs +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/src/basic_memory/utils.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/cli/test_sync_commands_integration.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/cli/test_version_integration.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/mcp/test_build_context_underscore.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/mcp/test_build_context_validation.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/mcp/test_chatgpt_tools_integration.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/mcp/test_default_project_mode_integration.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/mcp/test_delete_note_integration.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/mcp/test_edit_note_integration.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/mcp/test_list_directory_integration.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/mcp/test_move_note_integration.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/mcp/test_project_state_sync_integration.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/mcp/test_read_content_integration.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/mcp/test_read_note_integration.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/mcp/test_search_integration.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/mcp/test_single_project_mcp_integration.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/test-int/test_db_wal_mode.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/Non-MarkdownFileSupport.pdf +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/Screenshot.png +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/conftest.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_async_client.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_continue_conversation_template.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_importer_router.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_knowledge_router.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_management_router.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_memory_router.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_project_router_operations.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_prompt_router.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_relation_background_resolution.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_resource_router.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_search_router.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_search_template.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_template_loader.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/api/test_template_loader_helpers.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/cli/conftest.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/cli/test_cli_tools.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/cli/test_cloud_authentication.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/cli/test_ignore_utils.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/cli/test_import_chatgpt.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/cli/test_import_claude_conversations.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/cli/test_import_claude_projects.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/cli/test_import_memory_json.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/importers/test_importer_base.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/importers/test_importer_utils.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/markdown/__init__.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/markdown/test_entity_parser.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/markdown/test_markdown_plugins.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/markdown/test_markdown_processor.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/markdown/test_observation_edge_cases.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/markdown/test_parser_edge_cases.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/markdown/test_relation_edge_cases.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/markdown/test_task_detection.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/conftest.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_obsidian_yaml_formatting.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_permalink_collision_file_overwrite.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_prompts.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_resources.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_tool_build_context.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_tool_canvas.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_tool_delete_note.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_tool_edit_note.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_tool_list_directory.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_tool_move_note.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_tool_read_content.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_tool_read_note.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_tool_recent_activity.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_tool_resource.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_tool_search.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_tool_sync_status.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_tool_utils.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/test_tool_write_note.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/mcp/tools/test_chatgpt_tools.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/repository/test_entity_repository_upsert.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/repository/test_observation_repository.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/repository/test_project_info_repository.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/repository/test_project_repository.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/repository/test_relation_repository.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/repository/test_repository.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/repository/test_search_repository.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/repository/test_search_repository_edit_bug_fix.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/schemas/test_base_timeframe_minimum.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/schemas/test_memory_serialization.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/schemas/test_memory_url.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/schemas/test_memory_url_validation.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/schemas/test_schemas.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/schemas/test_search.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/services/test_context_service.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/services/test_entity_service.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/services/test_entity_service_disable_permalinks.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/services/test_file_service.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/services/test_initialization.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/services/test_link_resolver.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/services/test_search_service.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/services/test_sync_status_service.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/sync/test_character_conflicts.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/sync/test_sync_service.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/sync/test_sync_wikilink_issue.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/sync/test_tmp_files.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/sync/test_watch_service.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/sync/test_watch_service_edge_cases.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/sync/test_watch_service_reload.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/test_db_migration_deduplication.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/test_production_cascade_delete.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/utils/test_file_utils.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/utils/test_frontmatter_obsidian_compatible.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/utils/test_parse_tags.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/utils/test_permalink_formatting.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/utils/test_utf8_handling.py +0 -0
- {basic_memory-0.15.0 → basic_memory-0.15.2}/tests/utils/test_validate_project_path.py +0 -0
|
@@ -1,5 +1,204 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## v0.15.2 (2025-10-14)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- **#356**: Add WebDAV upload command for cloud projects
|
|
8
|
+
([`5258f45`](https://github.com/basicmachines-co/basic-memory/commit/5258f457))
|
|
9
|
+
- New `bm cloud upload` command for uploading local files/directories to cloud projects
|
|
10
|
+
- WebDAV-based file transfer with automatic directory creation
|
|
11
|
+
- Support for `.gitignore` and `.bmignore` pattern filtering
|
|
12
|
+
- Automatic project creation with `--create-project` flag
|
|
13
|
+
- Optional post-upload sync with `--sync` flag (enabled by default)
|
|
14
|
+
- Human-readable file size reporting (bytes, KB, MB)
|
|
15
|
+
- Comprehensive test coverage (28 unit tests)
|
|
16
|
+
|
|
17
|
+
### Migration Guide
|
|
18
|
+
|
|
19
|
+
No manual migration required. Upgrade with:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Update via uv
|
|
23
|
+
uv tool upgrade basic-memory
|
|
24
|
+
|
|
25
|
+
# Or install fresh
|
|
26
|
+
uv tool install basic-memory
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**What's New:**
|
|
30
|
+
- Upload local files to cloud projects with `bm cloud upload`
|
|
31
|
+
- Streamlined cloud project creation and management
|
|
32
|
+
- Better file filtering with gitignore integration
|
|
33
|
+
|
|
34
|
+
### Installation
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Latest stable release
|
|
38
|
+
uv tool install basic-memory
|
|
39
|
+
|
|
40
|
+
# Update existing installation
|
|
41
|
+
uv tool upgrade basic-memory
|
|
42
|
+
|
|
43
|
+
# Docker
|
|
44
|
+
docker pull ghcr.io/basicmachines-co/basic-memory:v0.15.2
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## v0.15.1 (2025-10-13)
|
|
48
|
+
|
|
49
|
+
### Performance Improvements
|
|
50
|
+
|
|
51
|
+
- **#352**: Optimize sync/indexing for 43% faster performance
|
|
52
|
+
([`c0538ad`](https://github.com/basicmachines-co/basic-memory/commit/c0538ad2perf0d68a2a3604e255c3f2c42c5ed))
|
|
53
|
+
- Significant performance improvements to file synchronization and indexing operations
|
|
54
|
+
- 43% reduction in sync time for large knowledge bases
|
|
55
|
+
- Optimized database queries and file processing
|
|
56
|
+
|
|
57
|
+
- **#350**: Optimize directory operations for 10-100x performance improvement
|
|
58
|
+
([`00b73b0`](https://github.com/basicmachines-co/basic-memory/commit/00b73b0d))
|
|
59
|
+
- Dramatic performance improvements for directory listing operations
|
|
60
|
+
- 10-100x faster directory traversal depending on knowledge base size
|
|
61
|
+
- Reduced memory footprint for large directory structures
|
|
62
|
+
- Exclude null fields from directory endpoint responses for smaller payloads
|
|
63
|
+
|
|
64
|
+
### Bug Fixes
|
|
65
|
+
|
|
66
|
+
- **#355**: Update view_note and ChatGPT tools for Claude Desktop compatibility
|
|
67
|
+
([`2b7008d`](https://github.com/basicmachines-co/basic-memory/commit/2b7008d9))
|
|
68
|
+
- Fix view_note tool formatting for better Claude Desktop rendering
|
|
69
|
+
- Update ChatGPT tool integration for improved compatibility
|
|
70
|
+
- Enhanced artifact display in Claude Desktop interface
|
|
71
|
+
|
|
72
|
+
- **#348**: Add permalink normalization to project lookups in deps.py
|
|
73
|
+
([`a09066e`](https://github.com/basicmachines-co/basic-memory/commit/a09066e0))
|
|
74
|
+
- Fix project lookup failures due to case sensitivity
|
|
75
|
+
- Normalize permalinks consistently across project operations
|
|
76
|
+
- Improve project switching reliability
|
|
77
|
+
|
|
78
|
+
- **#345**: Project deletion failing with permalink normalization
|
|
79
|
+
([`be352ab`](https://github.com/basicmachines-co/basic-memory/commit/be352ab4))
|
|
80
|
+
- Fix project deletion errors related to permalink handling
|
|
81
|
+
- Ensure proper cleanup of project resources
|
|
82
|
+
- Improve error messages for deletion failures
|
|
83
|
+
|
|
84
|
+
- **#341**: Correct ProjectItem.home property to return path instead of name
|
|
85
|
+
([`3e876a7`](https://github.com/basicmachines-co/basic-memory/commit/3e876a75))
|
|
86
|
+
- Fix ProjectItem.home to return correct project path
|
|
87
|
+
- Resolve configuration issues with project paths
|
|
88
|
+
- Improve project path resolution consistency
|
|
89
|
+
|
|
90
|
+
- **#339**: Prevent nested project paths to avoid data conflicts
|
|
91
|
+
([`795e339`](https://github.com/basicmachines-co/basic-memory/commit/795e3393))
|
|
92
|
+
- Block creation of nested project paths that could cause data conflicts
|
|
93
|
+
- Add validation to prevent project path hierarchy issues
|
|
94
|
+
- Improve error messages for invalid project configurations
|
|
95
|
+
|
|
96
|
+
- **#338**: Normalize paths to lowercase in cloud mode to prevent case collisions
|
|
97
|
+
([`07e304c`](https://github.com/basicmachines-co/basic-memory/commit/07e304ce))
|
|
98
|
+
- Fix path case sensitivity issues in cloud deployments
|
|
99
|
+
- Normalize paths consistently across cloud operations
|
|
100
|
+
- Prevent data loss from case-insensitive filesystem collisions
|
|
101
|
+
|
|
102
|
+
- **#336**: Cloud mode path validation and sanitization (bmc-issue-103)
|
|
103
|
+
([`2a1c06d`](https://github.com/basicmachines-co/basic-memory/commit/2a1c06d9))
|
|
104
|
+
- Enhanced path validation for cloud deployments
|
|
105
|
+
- Improved path sanitization to prevent security issues
|
|
106
|
+
- Better error handling for invalid paths in cloud mode
|
|
107
|
+
|
|
108
|
+
- **#332**: Cloud mode path validation and sanitization
|
|
109
|
+
([`7616b2b`](https://github.com/basicmachines-co/basic-memory/commit/7616b2bb))
|
|
110
|
+
- Additional cloud mode path fixes and improvements
|
|
111
|
+
- Comprehensive path validation for cloud environments
|
|
112
|
+
- Security enhancements for path handling
|
|
113
|
+
|
|
114
|
+
### Features
|
|
115
|
+
|
|
116
|
+
- **#344**: Async client context manager pattern for cloud consolidation (SPEC-16)
|
|
117
|
+
([`8d2e70c`](https://github.com/basicmachines-co/basic-memory/commit/8d2e70cf))
|
|
118
|
+
- Refactor async client to use context manager pattern
|
|
119
|
+
- Improve resource management and cleanup
|
|
120
|
+
- Enable better dependency injection for cloud deployments
|
|
121
|
+
- Foundation for cloud platform consolidation
|
|
122
|
+
|
|
123
|
+
- **#343**: Add SPEC-15 for configuration persistence via Tigris
|
|
124
|
+
([`53438d1`](https://github.com/basicmachines-co/basic-memory/commit/53438d1e))
|
|
125
|
+
- Design specification for persistent configuration storage
|
|
126
|
+
- Foundation for cloud configuration management
|
|
127
|
+
- Tigris S3-compatible storage integration planning
|
|
128
|
+
|
|
129
|
+
- **#334**: Introduce BASIC_MEMORY_PROJECT_ROOT for path constraints
|
|
130
|
+
([`ccc4386`](https://github.com/basicmachines-co/basic-memory/commit/ccc43866))
|
|
131
|
+
- Add environment variable for constraining project paths
|
|
132
|
+
- Improve security by limiting project creation locations
|
|
133
|
+
- Better control over project directory structure
|
|
134
|
+
|
|
135
|
+
### Documentation
|
|
136
|
+
|
|
137
|
+
- **#335**: v0.15.0 assistant guide updates
|
|
138
|
+
([`c6f93a0`](https://github.com/basicmachines-co/basic-memory/commit/c6f93a02))
|
|
139
|
+
- Update AI assistant guide for v0.15.0 features
|
|
140
|
+
- Improve documentation for new MCP tools
|
|
141
|
+
- Better examples and usage patterns
|
|
142
|
+
|
|
143
|
+
- **#339**: Add tool use documentation to write_note for root folder usage
|
|
144
|
+
([`73202d1`](https://github.com/basicmachines-co/basic-memory/commit/73202d1a))
|
|
145
|
+
- Document how to use empty string for root folder in write_note
|
|
146
|
+
- Clarify folder parameter usage
|
|
147
|
+
- Improve tool documentation clarity
|
|
148
|
+
|
|
149
|
+
- Fix link in ai_assistant_guide resource
|
|
150
|
+
([`2a1c06d`](https://github.com/basicmachines-co/basic-memory/commit/2a1c06d9))
|
|
151
|
+
- Correct broken documentation links
|
|
152
|
+
- Improve resource accessibility
|
|
153
|
+
|
|
154
|
+
### Refactoring
|
|
155
|
+
|
|
156
|
+
- Add SPEC-17 and SPEC-18 documentation
|
|
157
|
+
([`962d88e`](https://github.com/basicmachines-co/basic-memory/commit/962d88ea))
|
|
158
|
+
- New specification documents for future features
|
|
159
|
+
- Architecture planning and design documentation
|
|
160
|
+
|
|
161
|
+
### Breaking Changes
|
|
162
|
+
|
|
163
|
+
**None** - This release maintains full backward compatibility with v0.15.0
|
|
164
|
+
|
|
165
|
+
### Migration Guide
|
|
166
|
+
|
|
167
|
+
No manual migration required. Upgrade with:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# Update via uv
|
|
171
|
+
uv tool upgrade basic-memory
|
|
172
|
+
|
|
173
|
+
# Or install fresh
|
|
174
|
+
uv tool install basic-memory
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**What's Fixed:**
|
|
178
|
+
- Significant performance improvements (43% faster sync, 10-100x faster directory operations)
|
|
179
|
+
- Multiple cloud deployment stability fixes
|
|
180
|
+
- Project path validation and normalization issues resolved
|
|
181
|
+
- Better Claude Desktop and ChatGPT integration
|
|
182
|
+
|
|
183
|
+
**What's New:**
|
|
184
|
+
- Context manager pattern for async clients (foundation for cloud consolidation)
|
|
185
|
+
- BASIC_MEMORY_PROJECT_ROOT environment variable for path constraints
|
|
186
|
+
- Enhanced cloud mode path handling and security
|
|
187
|
+
- SPEC-15 and SPEC-16 architecture documentation
|
|
188
|
+
|
|
189
|
+
### Installation
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# Latest stable release
|
|
193
|
+
uv tool install basic-memory
|
|
194
|
+
|
|
195
|
+
# Update existing installation
|
|
196
|
+
uv tool upgrade basic-memory
|
|
197
|
+
|
|
198
|
+
# Docker
|
|
199
|
+
docker pull ghcr.io/basicmachines-co/basic-memory:v0.15.1
|
|
200
|
+
```
|
|
201
|
+
|
|
3
202
|
## v0.15.0 (2025-10-04)
|
|
4
203
|
|
|
5
204
|
### Critical Bug Fixes
|
|
@@ -1573,4 +1772,4 @@ Co-authored-by: phernandez <phernandez@basicmachines.co>
|
|
|
1573
1772
|
### Chores
|
|
1574
1773
|
|
|
1575
1774
|
- Remove basic-foundation src ref in pyproject.toml
|
|
1576
|
-
([`29fce8b`](https://github.com/basicmachines-co/basic-memory/commit/29fce8b0b922d54d7799bf2534107ee6cfb961b8))
|
|
1775
|
+
([`29fce8b`](https://github.com/basicmachines-co/basic-memory/commit/29fce8b0b922d54d7799bf2534107ee6cfb961b8))
|
|
@@ -14,20 +14,34 @@ See the [README.md](README.md) file for a project overview.
|
|
|
14
14
|
|
|
15
15
|
### Build and Test Commands
|
|
16
16
|
|
|
17
|
-
- Install: `
|
|
18
|
-
- Run tests: `
|
|
17
|
+
- Install: `just install` or `pip install -e ".[dev]"`
|
|
18
|
+
- Run all tests (with coverage): `just test` - Runs both unit and integration tests with unified coverage
|
|
19
|
+
- Run unit tests only: `just test-unit` - Fast, no coverage
|
|
20
|
+
- Run integration tests only: `just test-int` - Fast, no coverage
|
|
21
|
+
- Generate HTML coverage: `just coverage` - Opens in browser
|
|
19
22
|
- Single test: `pytest tests/path/to/test_file.py::test_function_name`
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
23
|
+
- Run benchmarks: `pytest test-int/test_sync_performance_benchmark.py -v -m "benchmark and not slow"`
|
|
24
|
+
- Lint: `just lint` or `ruff check . --fix`
|
|
25
|
+
- Type check: `just typecheck` or `uv run pyright`
|
|
26
|
+
- Format: `just format` or `uv run ruff format .`
|
|
27
|
+
- Run all code checks: `just check` (runs lint, format, typecheck, test)
|
|
28
|
+
- Create db migration: `just migration "Your migration message"`
|
|
29
|
+
- Run development MCP Inspector: `just run-inspector`
|
|
30
|
+
|
|
31
|
+
**Note:** Project requires Python 3.12+ (uses type parameter syntax and `type` aliases introduced in 3.12)
|
|
32
|
+
|
|
33
|
+
### Test Structure
|
|
34
|
+
|
|
35
|
+
- `tests/` - Unit tests for individual components (mocked, fast)
|
|
36
|
+
- `test-int/` - Integration tests for real-world scenarios (no mocks, realistic)
|
|
37
|
+
- Both directories are covered by unified coverage reporting
|
|
38
|
+
- Benchmark tests in `test-int/` are marked with `@pytest.mark.benchmark`
|
|
39
|
+
- Slow tests are marked with `@pytest.mark.slow`
|
|
26
40
|
|
|
27
41
|
### Code Style Guidelines
|
|
28
42
|
|
|
29
43
|
- Line length: 100 characters max
|
|
30
|
-
- Python 3.12+ with full type annotations
|
|
44
|
+
- Python 3.12+ with full type annotations (uses type parameters and type aliases)
|
|
31
45
|
- Format with ruff (consistent styling)
|
|
32
46
|
- Import order: standard lib, third-party, local imports
|
|
33
47
|
- Naming: snake_case for functions/variables, PascalCase for classes
|
|
@@ -61,9 +75,46 @@ See the [README.md](README.md) file for a project overview.
|
|
|
61
75
|
- Schema changes require Alembic migrations
|
|
62
76
|
- SQLite is used for indexing and full text search, files are source of truth
|
|
63
77
|
- Testing uses pytest with asyncio support (strict mode)
|
|
78
|
+
- Unit tests (`tests/`) use mocks when necessary; integration tests (`test-int/`) use real implementations
|
|
64
79
|
- Test database uses in-memory SQLite
|
|
65
|
-
-
|
|
66
|
-
-
|
|
80
|
+
- Each test runs in a standalone environment with in-memory SQLite and tmp_file directory
|
|
81
|
+
- Performance benchmarks are in `test-int/test_sync_performance_benchmark.py`
|
|
82
|
+
- Use pytest markers: `@pytest.mark.benchmark` for benchmarks, `@pytest.mark.slow` for slow tests
|
|
83
|
+
|
|
84
|
+
### Async Client Pattern (Important!)
|
|
85
|
+
|
|
86
|
+
**All MCP tools and CLI commands use the context manager pattern for HTTP clients:**
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
from basic_memory.mcp.async_client import get_client
|
|
90
|
+
|
|
91
|
+
async def my_mcp_tool():
|
|
92
|
+
async with get_client() as client:
|
|
93
|
+
# Use client for API calls
|
|
94
|
+
response = await call_get(client, "/path")
|
|
95
|
+
return response
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Do NOT use:**
|
|
99
|
+
- ❌ `from basic_memory.mcp.async_client import client` (deprecated module-level client)
|
|
100
|
+
- ❌ Manual auth header management
|
|
101
|
+
- ❌ `inject_auth_header()` (deleted)
|
|
102
|
+
|
|
103
|
+
**Key principles:**
|
|
104
|
+
- Auth happens at client creation, not per-request
|
|
105
|
+
- Proper resource management via context managers
|
|
106
|
+
- Supports three modes: Local (ASGI), CLI cloud (HTTP + auth), Cloud app (factory injection)
|
|
107
|
+
- Factory pattern enables dependency injection for cloud consolidation
|
|
108
|
+
|
|
109
|
+
**For cloud app integration:**
|
|
110
|
+
```python
|
|
111
|
+
from basic_memory.mcp import async_client
|
|
112
|
+
|
|
113
|
+
# Set custom factory before importing tools
|
|
114
|
+
async_client.set_client_factory(your_custom_factory)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
See SPEC-16 for full context manager refactor details.
|
|
67
118
|
|
|
68
119
|
## BASIC MEMORY PRODUCT USAGE
|
|
69
120
|
|
|
@@ -80,6 +131,7 @@ See the [README.md](README.md) file for a project overview.
|
|
|
80
131
|
|
|
81
132
|
### Basic Memory Commands
|
|
82
133
|
|
|
134
|
+
**Local Commands:**
|
|
83
135
|
- Sync knowledge: `basic-memory sync` or `basic-memory sync --watch`
|
|
84
136
|
- Import from Claude: `basic-memory import claude conversations`
|
|
85
137
|
- Import from ChatGPT: `basic-memory import chatgpt`
|
|
@@ -89,24 +141,41 @@ See the [README.md](README.md) file for a project overview.
|
|
|
89
141
|
- Guide: `basic-memory tools basic-memory-guide`
|
|
90
142
|
- Continue: `basic-memory tools continue-conversation --topic="search"`
|
|
91
143
|
|
|
144
|
+
**Cloud Commands (requires subscription):**
|
|
145
|
+
- Authenticate: `basic-memory cloud login`
|
|
146
|
+
- Logout: `basic-memory cloud logout`
|
|
147
|
+
- Bidirectional sync: `basic-memory cloud sync`
|
|
148
|
+
- Integrity check: `basic-memory cloud check`
|
|
149
|
+
- Mount cloud storage: `basic-memory cloud mount`
|
|
150
|
+
- Unmount cloud storage: `basic-memory cloud unmount`
|
|
151
|
+
|
|
92
152
|
### MCP Capabilities
|
|
93
153
|
|
|
94
154
|
- Basic Memory exposes these MCP tools to LLMs:
|
|
95
155
|
|
|
96
156
|
**Content Management:**
|
|
97
157
|
- `write_note(title, content, folder, tags)` - Create/update markdown notes with semantic observations and relations
|
|
98
|
-
- `read_note(identifier, page, page_size)` - Read notes by title, permalink, or memory:// URL with knowledge graph
|
|
99
|
-
|
|
100
|
-
- `
|
|
158
|
+
- `read_note(identifier, page, page_size)` - Read notes by title, permalink, or memory:// URL with knowledge graph awareness
|
|
159
|
+
- `read_content(path)` - Read raw file content (text, images, binaries) without knowledge graph processing
|
|
160
|
+
- `view_note(identifier, page, page_size)` - View notes as formatted artifacts for better readability
|
|
161
|
+
- `edit_note(identifier, operation, content)` - Edit notes incrementally (append, prepend, find/replace, replace_section)
|
|
162
|
+
- `move_note(identifier, destination_path)` - Move notes to new locations, updating database and maintaining links
|
|
163
|
+
- `delete_note(identifier)` - Delete notes from the knowledge base
|
|
101
164
|
|
|
102
165
|
**Knowledge Graph Navigation:**
|
|
103
|
-
- `build_context(url, depth, timeframe)` - Navigate the knowledge graph via memory:// URLs for conversation
|
|
104
|
-
|
|
105
|
-
- `
|
|
106
|
-
1d", "1 week")
|
|
166
|
+
- `build_context(url, depth, timeframe)` - Navigate the knowledge graph via memory:// URLs for conversation continuity
|
|
167
|
+
- `recent_activity(type, depth, timeframe)` - Get recently updated information with specified timeframe (e.g., "1d", "1 week")
|
|
168
|
+
- `list_directory(dir_name, depth, file_name_glob)` - Browse directory contents with filtering and depth control
|
|
107
169
|
|
|
108
170
|
**Search & Discovery:**
|
|
109
|
-
- `
|
|
171
|
+
- `search_notes(query, page, page_size, search_type, types, entity_types, after_date)` - Full-text search across all content with advanced filtering options
|
|
172
|
+
|
|
173
|
+
**Project Management:**
|
|
174
|
+
- `list_memory_projects()` - List all available projects with their status
|
|
175
|
+
- `create_memory_project(project_name, project_path, set_default)` - Create new Basic Memory projects
|
|
176
|
+
- `delete_project(project_name)` - Delete a project from configuration
|
|
177
|
+
- `get_current_project()` - Get current project information and stats
|
|
178
|
+
- `sync_status()` - Check file synchronization and background operation status
|
|
110
179
|
|
|
111
180
|
**Visualization:**
|
|
112
181
|
- `canvas(nodes, edges, title, folder)` - Generate Obsidian canvas files for knowledge graph visualization
|
|
@@ -118,6 +187,34 @@ See the [README.md](README.md) file for a project overview.
|
|
|
118
187
|
- `recent_activity(timeframe)` - View recently changed items with formatted output
|
|
119
188
|
- `json_canvas_spec()` - Full JSON Canvas specification for Obsidian visualization
|
|
120
189
|
|
|
190
|
+
### Cloud Features (v0.15.0+)
|
|
191
|
+
|
|
192
|
+
Basic Memory now supports cloud synchronization and storage (requires active subscription):
|
|
193
|
+
|
|
194
|
+
**Authentication:**
|
|
195
|
+
- JWT-based authentication with subscription validation
|
|
196
|
+
- Secure session management with token refresh
|
|
197
|
+
- Support for multiple cloud projects
|
|
198
|
+
|
|
199
|
+
**Bidirectional Sync:**
|
|
200
|
+
- rclone bisync integration for two-way synchronization
|
|
201
|
+
- Conflict resolution and integrity verification
|
|
202
|
+
- Real-time sync with change detection
|
|
203
|
+
- Mount/unmount cloud storage for direct file access
|
|
204
|
+
|
|
205
|
+
**Cloud Project Management:**
|
|
206
|
+
- Create and manage projects in the cloud
|
|
207
|
+
- Toggle between local and cloud modes
|
|
208
|
+
- Per-project sync configuration
|
|
209
|
+
- Subscription-based access control
|
|
210
|
+
|
|
211
|
+
**Security & Performance:**
|
|
212
|
+
- Removed .env file loading for improved security
|
|
213
|
+
- .gitignore integration (respects gitignored files)
|
|
214
|
+
- WAL mode for SQLite performance
|
|
215
|
+
- Background relation resolution (non-blocking startup)
|
|
216
|
+
- API performance optimizations (SPEC-11)
|
|
217
|
+
|
|
121
218
|
## AI-Human Collaborative Development
|
|
122
219
|
|
|
123
220
|
Basic Memory emerged from and enables a new kind of development process that combines human and AI capabilities. Instead
|
|
@@ -168,4 +265,4 @@ With GitHub integration, the development workflow includes:
|
|
|
168
265
|
3. **Branch management** - Claude can create feature branches for implementations
|
|
169
266
|
4. **Documentation maintenance** - Claude can keep documentation updated as the code evolves
|
|
170
267
|
|
|
171
|
-
This level of integration represents a new paradigm in AI-human collaboration, where the AI assistant becomes a full-fledged team member rather than just a tool for generating code snippets.
|
|
268
|
+
This level of integration represents a new paradigm in AI-human collaboration, where the AI assistant becomes a full-fledged team member rather than just a tool for generating code snippets.
|
|
@@ -34,11 +34,18 @@ project and how to get started as a developer.
|
|
|
34
34
|
|
|
35
35
|
4. **Run the Tests**:
|
|
36
36
|
```bash
|
|
37
|
-
# Run all tests
|
|
37
|
+
# Run all tests with unified coverage (unit + integration)
|
|
38
38
|
just test
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
|
|
40
|
+
# Run unit tests only (fast, no coverage)
|
|
41
|
+
just test-unit
|
|
42
|
+
|
|
43
|
+
# Run integration tests only (fast, no coverage)
|
|
44
|
+
just test-int
|
|
45
|
+
|
|
46
|
+
# Generate HTML coverage report
|
|
47
|
+
just coverage
|
|
48
|
+
|
|
42
49
|
# Run a specific test
|
|
43
50
|
pytest tests/path/to/test_file.py::test_function_name
|
|
44
51
|
```
|
|
@@ -134,7 +141,7 @@ agreement to the DCO.
|
|
|
134
141
|
|
|
135
142
|
## Code Style Guidelines
|
|
136
143
|
|
|
137
|
-
- **Python Version**: Python 3.12+ with full type annotations
|
|
144
|
+
- **Python Version**: Python 3.12+ with full type annotations (3.12+ required for type parameter syntax)
|
|
138
145
|
- **Line Length**: 100 characters maximum
|
|
139
146
|
- **Formatting**: Use ruff for consistent styling
|
|
140
147
|
- **Import Order**: Standard lib, third-party, local imports
|
|
@@ -144,12 +151,78 @@ agreement to the DCO.
|
|
|
144
151
|
|
|
145
152
|
## Testing Guidelines
|
|
146
153
|
|
|
147
|
-
|
|
154
|
+
### Test Structure
|
|
155
|
+
|
|
156
|
+
Basic Memory uses two test directories with unified coverage reporting:
|
|
157
|
+
|
|
158
|
+
- **`tests/`**: Unit tests that test individual components in isolation
|
|
159
|
+
- Fast execution with extensive mocking
|
|
160
|
+
- Test individual functions, classes, and modules
|
|
161
|
+
- Run with: `just test-unit` (no coverage, fast)
|
|
162
|
+
|
|
163
|
+
- **`test-int/`**: Integration tests that test real-world scenarios
|
|
164
|
+
- Test full workflows with real database and file operations
|
|
165
|
+
- Include performance benchmarks
|
|
166
|
+
- More realistic but slower than unit tests
|
|
167
|
+
- Run with: `just test-int` (no coverage, fast)
|
|
168
|
+
|
|
169
|
+
### Running Tests
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# Run all tests with unified coverage report
|
|
173
|
+
just test
|
|
174
|
+
|
|
175
|
+
# Run only unit tests (fast iteration)
|
|
176
|
+
just test-unit
|
|
177
|
+
|
|
178
|
+
# Run only integration tests
|
|
179
|
+
just test-int
|
|
180
|
+
|
|
181
|
+
# Generate HTML coverage report
|
|
182
|
+
just coverage
|
|
183
|
+
|
|
184
|
+
# Run specific test
|
|
185
|
+
pytest tests/path/to/test_file.py::test_function_name
|
|
186
|
+
|
|
187
|
+
# Run tests excluding benchmarks
|
|
188
|
+
pytest -m "not benchmark"
|
|
189
|
+
|
|
190
|
+
# Run only benchmark tests
|
|
191
|
+
pytest -m benchmark test-int/test_sync_performance_benchmark.py
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Performance Benchmarks
|
|
195
|
+
|
|
196
|
+
The `test-int/test_sync_performance_benchmark.py` file contains performance benchmarks that measure sync and indexing speed:
|
|
197
|
+
|
|
198
|
+
- `test_benchmark_sync_100_files` - Small repository performance
|
|
199
|
+
- `test_benchmark_sync_500_files` - Medium repository performance
|
|
200
|
+
- `test_benchmark_sync_1000_files` - Large repository performance (marked slow)
|
|
201
|
+
- `test_benchmark_resync_no_changes` - Re-sync performance baseline
|
|
202
|
+
|
|
203
|
+
Run benchmarks with:
|
|
204
|
+
```bash
|
|
205
|
+
# Run all benchmarks (excluding slow ones)
|
|
206
|
+
pytest test-int/test_sync_performance_benchmark.py -v -m "benchmark and not slow"
|
|
207
|
+
|
|
208
|
+
# Run all benchmarks including slow ones
|
|
209
|
+
pytest test-int/test_sync_performance_benchmark.py -v -m benchmark
|
|
210
|
+
|
|
211
|
+
# Run specific benchmark
|
|
212
|
+
pytest test-int/test_sync_performance_benchmark.py::test_benchmark_sync_100_files -v
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
See `test-int/BENCHMARKS.md` for detailed benchmark documentation.
|
|
216
|
+
|
|
217
|
+
### Testing Best Practices
|
|
218
|
+
|
|
219
|
+
- **Coverage Target**: We aim for high test coverage for all code
|
|
148
220
|
- **Test Framework**: Use pytest for unit and integration tests
|
|
149
|
-
- **Mocking**:
|
|
221
|
+
- **Mocking**: Avoid mocking in integration tests; use sparingly in unit tests
|
|
150
222
|
- **Edge Cases**: Test both normal operation and edge cases
|
|
151
223
|
- **Database Testing**: Use in-memory SQLite for testing database operations
|
|
152
224
|
- **Fixtures**: Use async pytest fixtures for setup and teardown
|
|
225
|
+
- **Markers**: Use `@pytest.mark.benchmark` for benchmarks, `@pytest.mark.slow` for slow tests
|
|
153
226
|
|
|
154
227
|
## Release Process
|
|
155
228
|
|
|
@@ -24,11 +24,12 @@ WORKDIR /app
|
|
|
24
24
|
RUN uv sync --locked
|
|
25
25
|
|
|
26
26
|
# Create necessary directories and set ownership
|
|
27
|
-
RUN mkdir -p /app/data /app/.basic-memory && \
|
|
27
|
+
RUN mkdir -p /app/data/basic-memory /app/.basic-memory && \
|
|
28
28
|
chown -R appuser:${GID} /app
|
|
29
29
|
|
|
30
30
|
# Set default data directory and add venv to PATH
|
|
31
|
-
ENV BASIC_MEMORY_HOME=/app/data \
|
|
31
|
+
ENV BASIC_MEMORY_HOME=/app/data/basic-memory \
|
|
32
|
+
BASIC_MEMORY_PROJECT_ROOT=/app/data \
|
|
32
33
|
PATH="/app/.venv/bin:$PATH"
|
|
33
34
|
|
|
34
35
|
# Switch to the non-root user
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: basic-memory
|
|
3
|
-
Version: 0.15.
|
|
3
|
+
Version: 0.15.2
|
|
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
|
|
@@ -8,7 +8,7 @@ Project-URL: Documentation, https://github.com/basicmachines-co/basic-memory#rea
|
|
|
8
8
|
Author-email: Basic Machines <hello@basic-machines.co>
|
|
9
9
|
License: AGPL-3.0-or-later
|
|
10
10
|
License-File: LICENSE
|
|
11
|
-
Requires-Python: >=3.12
|
|
11
|
+
Requires-Python: >=3.12
|
|
12
12
|
Requires-Dist: aiofiles>=24.1.0
|
|
13
13
|
Requires-Dist: aiosqlite>=0.20.0
|
|
14
14
|
Requires-Dist: alembic>=1.14.1
|
|
@@ -139,6 +139,9 @@ With Basic Memory, you can:
|
|
|
139
139
|
- Keep everything local and under your control
|
|
140
140
|
- Use familiar tools like Obsidian to view and edit notes
|
|
141
141
|
- Build a personal knowledge base that grows over time
|
|
142
|
+
- Sync your knowledge to the cloud with bidirectional synchronization
|
|
143
|
+
- Authenticate and manage cloud projects with subscription validation
|
|
144
|
+
- Mount cloud storage for direct file access
|
|
142
145
|
|
|
143
146
|
## How It Works in Practice
|
|
144
147
|
|
|
@@ -385,14 +388,57 @@ basic-memory sync
|
|
|
385
388
|
basic-memory sync --watch
|
|
386
389
|
```
|
|
387
390
|
|
|
388
|
-
3.
|
|
391
|
+
3. Cloud features (optional, requires subscription):
|
|
389
392
|
|
|
393
|
+
```bash
|
|
394
|
+
# Authenticate with cloud
|
|
395
|
+
basic-memory cloud login
|
|
396
|
+
|
|
397
|
+
# Bidirectional sync with cloud
|
|
398
|
+
basic-memory cloud sync
|
|
399
|
+
|
|
400
|
+
# Verify cloud integrity
|
|
401
|
+
basic-memory cloud check
|
|
402
|
+
|
|
403
|
+
# Mount cloud storage
|
|
404
|
+
basic-memory cloud mount
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
4. In Claude Desktop, the LLM can now use these tools:
|
|
408
|
+
|
|
409
|
+
**Content Management:**
|
|
390
410
|
```
|
|
391
411
|
write_note(title, content, folder, tags) - Create or update notes
|
|
392
412
|
read_note(identifier, page, page_size) - Read notes by title or permalink
|
|
413
|
+
read_content(path) - Read raw file content (text, images, binaries)
|
|
414
|
+
view_note(identifier) - View notes as formatted artifacts
|
|
415
|
+
edit_note(identifier, operation, content) - Edit notes incrementally
|
|
416
|
+
move_note(identifier, destination_path) - Move notes with database consistency
|
|
417
|
+
delete_note(identifier) - Delete notes from knowledge base
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
**Knowledge Graph Navigation:**
|
|
421
|
+
```
|
|
393
422
|
build_context(url, depth, timeframe) - Navigate knowledge graph via memory:// URLs
|
|
394
|
-
search(query, page, page_size) - Search across your knowledge base
|
|
395
423
|
recent_activity(type, depth, timeframe) - Find recently updated information
|
|
424
|
+
list_directory(dir_name, depth) - Browse directory contents with filtering
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
**Search & Discovery:**
|
|
428
|
+
```
|
|
429
|
+
search(query, page, page_size) - Search across your knowledge base
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
**Project Management:**
|
|
433
|
+
```
|
|
434
|
+
list_memory_projects() - List all available projects
|
|
435
|
+
create_memory_project(project_name, project_path) - Create new projects
|
|
436
|
+
get_current_project() - Show current project stats
|
|
437
|
+
sync_status() - Check synchronization status
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
**Visualization:**
|
|
441
|
+
```
|
|
396
442
|
canvas(nodes, edges, title, folder) - Generate knowledge visualizations
|
|
397
443
|
```
|
|
398
444
|
|
|
@@ -412,6 +458,7 @@ See the [Documentation](https://memory.basicmachines.co/) for more info, includi
|
|
|
412
458
|
|
|
413
459
|
- [Complete User Guide](https://docs.basicmemory.com/user-guide/)
|
|
414
460
|
- [CLI tools](https://docs.basicmemory.com/guides/cli-reference/)
|
|
461
|
+
- [Cloud CLI and Sync](https://docs.basicmemory.com/guides/cloud-cli/)
|
|
415
462
|
- [Managing multiple Projects](https://docs.basicmemory.com/guides/cli-reference/#project)
|
|
416
463
|
- [Importing data from OpenAI/Claude Projects](https://docs.basicmemory.com/guides/cli-reference/#import)
|
|
417
464
|
|