basic-memory 0.14.0b1__tar.gz → 0.14.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.14.0b1 → basic_memory-0.14.2}/CHANGELOG.md +167 -39
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/PKG-INFO +14 -3
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/README.md +12 -1
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/justfile +1 -1
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/pyproject.toml +2 -2
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/__init__.py +1 -1
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/markdown/utils.py +3 -1
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/auth_provider.py +8 -8
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/supabase_auth_provider.py +5 -5
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/__init__.py +4 -4
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/project_management.py +13 -8
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/search.py +115 -38
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/schemas/response.py +1 -1
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/utils.py +2 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_auth_provider.py +4 -4
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_server.py +1 -1
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_tool_edit_note.py +39 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_tool_search.py +63 -22
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/repository/test_search_repository.py +11 -9
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/schemas/test_schemas.py +30 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/uv.lock +1 -1
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.claude/commands/release/beta.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.claude/commands/release/changelog.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.claude/commands/release/release-check.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.claude/commands/release/release.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.claude/commands/test-live.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.dockerignore +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.github/dependabot.yml +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.github/workflows/claude.yml +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.github/workflows/dev-release.yml +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.github/workflows/docker.yml +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.github/workflows/pr-title.yml +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.github/workflows/release.yml +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.github/workflows/test.yml +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.gitignore +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/.python-version +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/CITATION.cff +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/CLA.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/CLAUDE.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/CODE_OF_CONDUCT.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/CONTRIBUTING.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/Dockerfile +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/LICENSE +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/SECURITY.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/docker-compose.yml +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/docs/AI Assistant Guide.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/docs/Docker.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/llms-install.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/memory.json +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/smithery.yaml +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/alembic/alembic.ini +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/alembic/env.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/alembic/migrations.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/alembic/script.py.mako +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/api/__init__.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/api/app.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/api/routers/__init__.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/api/routers/directory_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/api/routers/importer_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/api/routers/knowledge_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/api/routers/management_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/api/routers/memory_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/api/routers/project_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/api/routers/prompt_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/api/routers/resource_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/api/routers/search_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/api/routers/utils.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/api/template_loader.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/cli/__init__.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/cli/app.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/__init__.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/auth.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/db.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/import_chatgpt.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/import_claude_conversations.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/import_claude_projects.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/import_memory_json.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/mcp.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/project.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/status.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/sync.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/cli/commands/tool.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/cli/main.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/config.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/db.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/deps.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/file_utils.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/importers/__init__.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/importers/base.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/importers/chatgpt_importer.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/importers/claude_conversations_importer.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/importers/claude_projects_importer.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/importers/memory_json_importer.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/importers/utils.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/markdown/__init__.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/markdown/entity_parser.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/markdown/markdown_processor.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/markdown/plugins.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/markdown/schemas.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/__init__.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/async_client.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/external_auth_provider.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/project_session.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/prompts/__init__.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/prompts/continue_conversation.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/prompts/recent_activity.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/prompts/search.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/prompts/sync_status.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/prompts/utils.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/resources/ai_assistant_guide.md +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/resources/project_info.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/server.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/build_context.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/canvas.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/delete_note.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/edit_note.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/list_directory.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/move_note.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/read_content.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/read_note.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/recent_activity.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/sync_status.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/utils.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/view_note.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/write_note.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/models/__init__.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/models/base.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/models/knowledge.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/models/project.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/models/search.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/repository/__init__.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/repository/entity_repository.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/repository/observation_repository.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/repository/project_info_repository.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/repository/project_repository.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/repository/relation_repository.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/repository/repository.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/repository/search_repository.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/schemas/__init__.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/schemas/base.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/schemas/delete.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/schemas/directory.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/schemas/importer.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/schemas/memory.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/schemas/project_info.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/schemas/prompt.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/schemas/request.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/schemas/search.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/services/__init__.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/services/context_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/services/directory_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/services/entity_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/services/exceptions.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/services/file_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/services/initialization.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/services/link_resolver.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/services/migration_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/services/project_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/services/search_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/services/service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/services/sync_status_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/sync/__init__.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/sync/background_sync.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/sync/sync_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/sync/watch_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/templates/prompts/search.hbs +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/test-int/cli/test_reset_integration.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/test-int/conftest.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/test-int/mcp/test_build_context_validation.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/test-int/mcp/test_delete_note_integration.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/test-int/mcp/test_edit_note_integration.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/test-int/mcp/test_list_directory_integration.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/test-int/mcp/test_move_note_integration.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/test-int/mcp/test_project_management_integration.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/test-int/mcp/test_project_state_sync_integration.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/test-int/mcp/test_read_content_integration.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/test-int/mcp/test_read_note_integration.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/test-int/mcp/test_search_integration.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/test-int/mcp/test_write_note_integration.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/Non-MarkdownFileSupport.pdf +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/Screenshot.png +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/__init__.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/api/conftest.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/api/test_continue_conversation_template.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/api/test_directory_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/api/test_importer_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/api/test_knowledge_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/api/test_management_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/api/test_memory_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/api/test_project_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/api/test_project_router_operations.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/api/test_prompt_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/api/test_resource_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/api/test_search_router.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/api/test_search_template.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/api/test_template_loader.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/api/test_template_loader_helpers.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/cli/conftest.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/cli/test_auth_commands.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/cli/test_cli_tools.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/cli/test_import_chatgpt.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/cli/test_import_claude_conversations.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/cli/test_import_claude_projects.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/cli/test_import_memory_json.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/cli/test_project_commands.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/cli/test_project_info.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/cli/test_status.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/cli/test_sync.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/cli/test_version.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/conftest.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/importers/test_importer_base.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/importers/test_importer_utils.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/markdown/__init__.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/markdown/test_entity_parser.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/markdown/test_markdown_plugins.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/markdown/test_markdown_processor.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/markdown/test_observation_edge_cases.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/markdown/test_parser_edge_cases.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/markdown/test_relation_edge_cases.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/markdown/test_task_detection.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/conftest.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_prompts.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_resource_project_info.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_resources.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_tool_build_context.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_tool_canvas.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_tool_delete_note.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_tool_list_directory.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_tool_move_note.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_tool_read_note.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_tool_recent_activity.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_tool_resource.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_tool_sync_status.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_tool_utils.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_tool_view_note.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/mcp/test_tool_write_note.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/repository/test_entity_repository.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/repository/test_entity_repository_upsert.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/repository/test_observation_repository.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/repository/test_project_info_repository.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/repository/test_project_repository.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/repository/test_relation_repository.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/repository/test_repository.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/schemas/test_memory_url.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/schemas/test_memory_url_validation.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/schemas/test_search.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/services/test_context_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/services/test_directory_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/services/test_entity_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/services/test_file_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/services/test_initialization.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/services/test_link_resolver.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/services/test_project_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/services/test_project_service_operations.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/services/test_search_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/services/test_sync_status_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/sync/test_sync_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/sync/test_sync_wikilink_issue.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/sync/test_tmp_files.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/sync/test_watch_service.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/sync/test_watch_service_edge_cases.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/test_config.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/test_db_migration_deduplication.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/utils/test_file_utils.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/utils/test_parse_tags.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/utils/test_permalink_formatting.py +0 -0
- {basic_memory-0.14.0b1 → basic_memory-0.14.2}/tests/utils/test_utf8_handling.py +0 -0
|
@@ -1,56 +1,184 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
-
## v0.
|
|
3
|
+
## v0.14.2 (2025-07-03)
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
- **#204**: Fix MCP Error with MCP-Hub integration
|
|
8
|
+
([`3621bb7`](https://github.com/basicmachines-co/basic-memory/commit/3621bb7b4d6ac12d892b18e36bb8f7c9101c7b10))
|
|
9
|
+
- Resolve compatibility issues with MCP-Hub
|
|
10
|
+
- Improve error handling in project management tools
|
|
11
|
+
- Ensure stable MCP tool integration across different environments
|
|
12
|
+
|
|
13
|
+
- **Modernize datetime handling and suppress SQLAlchemy warnings**
|
|
14
|
+
([`f80ac0e`](https://github.com/basicmachines-co/basic-memory/commit/f80ac0e3e74b7a737a7fc7b956b5c1d61b0c67b8))
|
|
15
|
+
- Replace deprecated `datetime.utcnow()` with timezone-aware alternatives
|
|
16
|
+
- Suppress SQLAlchemy deprecation warnings for cleaner output
|
|
17
|
+
- Improve future compatibility with Python datetime best practices
|
|
18
|
+
|
|
19
|
+
## v0.14.1 (2025-07-03)
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
- **#203**: Constrain fastmcp version to prevent breaking changes
|
|
24
|
+
([`827f7cf`](https://github.com/basicmachines-co/basic-memory/commit/827f7cf86e7b84c56e7a43bb83f2e5d84a1ad8b8))
|
|
25
|
+
- Pin fastmcp to compatible version range to avoid API breaking changes
|
|
26
|
+
- Ensure stable MCP server functionality across updates
|
|
27
|
+
- Improve dependency management for production deployments
|
|
28
|
+
|
|
29
|
+
- **#190**: Fix Problems with MCP integration
|
|
30
|
+
([`bd4f551`](https://github.com/basicmachines-co/basic-memory/commit/bd4f551a5bb0b7b4d3a5b04de70e08987c6ab2f9))
|
|
31
|
+
- Resolve MCP server initialization and communication issues
|
|
32
|
+
- Improve error handling and recovery in MCP operations
|
|
33
|
+
- Enhance stability for AI assistant integrations
|
|
4
34
|
|
|
5
35
|
### Features
|
|
6
36
|
|
|
7
|
-
- **
|
|
8
|
-
([`
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
|
|
37
|
+
- **Add Cursor IDE integration button** - One-click setup for Cursor IDE users
|
|
38
|
+
([`5360005`](https://github.com/basicmachines-co/basic-memory/commit/536000512294d66090bf87abc8014f4dfc284310))
|
|
39
|
+
- Direct installation button for Cursor IDE in README
|
|
40
|
+
- Streamlined setup process for Cursor users
|
|
41
|
+
- Enhanced developer experience for AI-powered coding
|
|
42
|
+
|
|
43
|
+
- **Add Homebrew installation instructions** - Official Homebrew tap support
|
|
44
|
+
([`39f811f`](https://github.com/basicmachines-co/basic-memory/commit/39f811f8b57dd998445ae43537cd492c680b2e11))
|
|
45
|
+
- Official Homebrew formula in basicmachines-co/basic-memory tap
|
|
46
|
+
- Simplified installation process for macOS users
|
|
47
|
+
- Package manager integration for easier dependency management
|
|
48
|
+
|
|
49
|
+
## v0.14.0 (2025-06-26)
|
|
50
|
+
|
|
51
|
+
### Features
|
|
52
|
+
|
|
53
|
+
- **Docker Container Registry Migration** - Switch from Docker Hub to GitHub Container Registry for better security and integration
|
|
54
|
+
([`616c1f0`](https://github.com/basicmachines-co/basic-memory/commit/616c1f0710da59c7098a5f4843d4f017877ff7b2))
|
|
55
|
+
- Automated Docker image publishing via GitHub Actions CI/CD pipeline
|
|
56
|
+
- Enhanced container security with GitHub's integrated vulnerability scanning
|
|
57
|
+
- Streamlined container deployment workflow for production environments
|
|
58
|
+
|
|
59
|
+
- **Enhanced Search Documentation** - Comprehensive search syntax examples for improved user experience
|
|
60
|
+
([`a589f8b`](https://github.com/basicmachines-co/basic-memory/commit/a589f8b894e78cce01eb25656856cfea8785fbbf))
|
|
61
|
+
- Detailed examples for Boolean search operators (AND, OR, NOT)
|
|
62
|
+
- Advanced search patterns including phrase matching and field-specific queries
|
|
63
|
+
- User-friendly documentation for complex search scenarios
|
|
64
|
+
|
|
65
|
+
- **Cross-Project File Management** - Intelligent move operations with project boundary detection
|
|
66
|
+
([`db5ef7d`](https://github.com/basicmachines-co/basic-memory/commit/db5ef7d35cc0894309c7a57b5741c9dd978526d4))
|
|
67
|
+
- Automatic detection of cross-project move attempts with helpful guidance
|
|
68
|
+
- Clear error messages when attempting unsupported cross-project operations
|
|
13
69
|
|
|
14
70
|
### Bug Fixes
|
|
15
71
|
|
|
16
|
-
- **#
|
|
17
|
-
([`
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
- **#
|
|
23
|
-
([`
|
|
24
|
-
- Fix
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
|
|
72
|
+
- **#184**: Preserve permalinks when editing notes without frontmatter permalinks
|
|
73
|
+
([`c2f4b63`](https://github.com/basicmachines-co/basic-memory/commit/c2f4b632cf04921b1a3c2f0d43831b80c519cb31))
|
|
74
|
+
- Fix permalink preservation during note editing operations
|
|
75
|
+
- Ensure consistent permalink handling across different note formats
|
|
76
|
+
- Maintain note identity and searchability during incremental edits
|
|
77
|
+
|
|
78
|
+
- **#183**: Implement project-specific sync status checks for MCP tools
|
|
79
|
+
([`12b5152`](https://github.com/basicmachines-co/basic-memory/commit/12b51522bc953fca117fc5bc01fcb29c6ca7e13c))
|
|
80
|
+
- Fix sync status reporting to correctly reflect current project state
|
|
81
|
+
- Resolve inconsistencies where sync status showed global instead of project-specific information
|
|
82
|
+
- Improve project isolation for sync operations and status reporting
|
|
83
|
+
|
|
84
|
+
- **#180**: Handle Boolean search syntax with hyphenated terms
|
|
85
|
+
([`546e3cd`](https://github.com/basicmachines-co/basic-memory/commit/546e3cd8db98b74f746749d41887f8a213cd0b11))
|
|
86
|
+
- Fix search parsing issues with hyphenated terms in Boolean queries
|
|
87
|
+
- Improve search query tokenization for complex term structures
|
|
88
|
+
- Enhanced search reliability for technical documentation and multi-word concepts
|
|
89
|
+
|
|
90
|
+
- **#174**: Respect BASIC_MEMORY_HOME environment variable in Docker containers
|
|
91
|
+
([`9f1db23`](https://github.com/basicmachines-co/basic-memory/commit/9f1db23c78d4648e2c242ad1ee27eed85e3f3b5d))
|
|
92
|
+
- Fix Docker container configuration to properly honor custom home directory settings
|
|
93
|
+
- Improve containerized deployment flexibility with environment variable support
|
|
94
|
+
- Ensure consistent behavior between local and containerized installations
|
|
95
|
+
|
|
96
|
+
- **#168**: Scope entity queries by project_id in upsert_entity method
|
|
97
|
+
([`2a3adc1`](https://github.com/basicmachines-co/basic-memory/commit/2a3adc109a3e4d7ccd65cae4abf63d9bb2338326))
|
|
98
|
+
- Fix entity isolation issues in multi-project setups
|
|
99
|
+
- Prevent cross-project entity conflicts during database operations
|
|
100
|
+
- Strengthen project boundary enforcement at the database level
|
|
101
|
+
|
|
102
|
+
- **#166**: Handle None from_entity in Context API RelationSummary
|
|
103
|
+
([`8a065c3`](https://github.com/basicmachines-co/basic-memory/commit/8a065c32f4e41613207d29aafc952a56e3a52241))
|
|
104
|
+
- Fix null pointer exceptions in relation processing
|
|
105
|
+
- Improve error handling for incomplete relation data
|
|
106
|
+
- Enhanced stability for knowledge graph traversal operations
|
|
107
|
+
|
|
108
|
+
- **#164**: Remove log level configuration from mcp_server.run()
|
|
109
|
+
([`224e4bf`](https://github.com/basicmachines-co/basic-memory/commit/224e4bf9e4438c44a82ffc21bd1a282fe9087690))
|
|
110
|
+
- Simplify MCP server startup by removing redundant log level settings
|
|
111
|
+
- Fix potential logging configuration conflicts
|
|
112
|
+
- Streamline server initialization process
|
|
113
|
+
|
|
114
|
+
- **#162**: Ensure permalinks are generated for entities with null permalinks during move operations
|
|
115
|
+
([`f506507`](https://github.com/basicmachines-co/basic-memory/commit/f50650763dbd4322c132e4bdc959ce4bf074374b))
|
|
116
|
+
- Fix move operations for entities without existing permalinks
|
|
117
|
+
- Automatic permalink generation during file move operations
|
|
118
|
+
- Maintain database consistency during file reorganization
|
|
34
119
|
|
|
35
120
|
### Technical Improvements
|
|
36
121
|
|
|
37
|
-
- **Comprehensive
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
122
|
+
- **Comprehensive Test Coverage** - Extensive test suites for new features and edge cases
|
|
123
|
+
- Enhanced test coverage for project-specific sync status functionality
|
|
124
|
+
- Additional test scenarios for search syntax validation and edge cases
|
|
125
|
+
- Integration tests for Docker CI workflow and container publishing
|
|
126
|
+
- Comprehensive move operations testing with project boundary validation
|
|
127
|
+
|
|
128
|
+
- **Docker CI/CD Pipeline** - Production-ready automated container publishing
|
|
129
|
+
([`74847cc`](https://github.com/basicmachines-co/basic-memory/commit/74847cc3807b0c6ed511e0d83e0d560e9f07ec44))
|
|
130
|
+
- Automated Docker image building and publishing on release
|
|
131
|
+
- Multi-architecture container support for AMD64 and ARM64 platforms
|
|
132
|
+
- Integrated security scanning and vulnerability assessments
|
|
133
|
+
- Streamlined deployment pipeline for production environments
|
|
134
|
+
|
|
135
|
+
- **Release Process Improvements** - Enhanced automation and quality gates
|
|
136
|
+
([`a52ce1c`](https://github.com/basicmachines-co/basic-memory/commit/a52ce1c8605ec2cd450d1f909154172cbc30faa2))
|
|
137
|
+
- Homebrew formula updates limited to stable releases only
|
|
138
|
+
- Improved release automation with better quality control
|
|
139
|
+
- Enhanced CI/CD pipeline reliability and error handling
|
|
140
|
+
|
|
141
|
+
- **Code Quality Enhancements** - Improved error handling and validation
|
|
142
|
+
- Better null safety in entity and relation processing
|
|
143
|
+
- Enhanced project isolation validation throughout the codebase
|
|
144
|
+
- Improved error messages and user guidance for edge cases
|
|
145
|
+
- Strengthened database consistency guarantees across operations
|
|
146
|
+
|
|
147
|
+
### Infrastructure
|
|
148
|
+
|
|
149
|
+
- **GitHub Container Registry Integration** - Modern container infrastructure
|
|
150
|
+
- Migration from Docker Hub to GitHub Container Registry (ghcr.io)
|
|
151
|
+
- Improved security with integrated vulnerability scanning
|
|
152
|
+
- Better integration with GitHub-based development workflow
|
|
153
|
+
- Enhanced container versioning and artifact management
|
|
154
|
+
|
|
155
|
+
- **Enhanced CI/CD Workflows** - Robust automated testing and deployment
|
|
156
|
+
- Automated Docker image publishing on releases
|
|
157
|
+
- Comprehensive test coverage validation before deployment
|
|
158
|
+
- Multi-platform container building and publishing
|
|
159
|
+
- Integration with GitHub's security and monitoring tools
|
|
42
160
|
|
|
43
|
-
|
|
44
|
-
- Improved project state management across system components
|
|
45
|
-
- Better session refresh patterns for configuration changes
|
|
46
|
-
- Streamlined Docker setup with reduced image size
|
|
161
|
+
### Migration Guide
|
|
47
162
|
|
|
48
|
-
|
|
163
|
+
This release includes several behind-the-scenes improvements and fixes. All changes are backward compatible:
|
|
164
|
+
|
|
165
|
+
- **Docker Users**: Container images now served from `ghcr.io/basicmachines-co/basic-memory` instead of Docker Hub
|
|
166
|
+
- **Search Users**: Enhanced search syntax handling - existing queries continue to work unchanged
|
|
167
|
+
- **Multi-Project Users**: Improved project isolation - all existing projects remain fully functional
|
|
168
|
+
- **All Users**: Enhanced stability and error handling - no breaking changes to existing workflows
|
|
169
|
+
|
|
170
|
+
### Installation
|
|
49
171
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
172
|
+
```bash
|
|
173
|
+
# Latest stable release
|
|
174
|
+
uv tool install basic-memory
|
|
175
|
+
|
|
176
|
+
# Update existing installation
|
|
177
|
+
uv tool upgrade basic-memory
|
|
178
|
+
|
|
179
|
+
# Docker (new registry)
|
|
180
|
+
docker pull ghcr.io/basicmachines-co/basic-memory:latest
|
|
181
|
+
```
|
|
54
182
|
|
|
55
183
|
## v0.13.7 (2025-06-19)
|
|
56
184
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: basic-memory
|
|
3
|
-
Version: 0.14.
|
|
3
|
+
Version: 0.14.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
|
|
@@ -13,7 +13,7 @@ Requires-Dist: aiosqlite>=0.20.0
|
|
|
13
13
|
Requires-Dist: alembic>=1.14.1
|
|
14
14
|
Requires-Dist: dateparser>=1.2.0
|
|
15
15
|
Requires-Dist: fastapi[standard]>=0.115.8
|
|
16
|
-
Requires-Dist: fastmcp
|
|
16
|
+
Requires-Dist: fastmcp<2.10.0,>=2.3.4
|
|
17
17
|
Requires-Dist: greenlet>=3.1.1
|
|
18
18
|
Requires-Dist: icecream>=2.1.3
|
|
19
19
|
Requires-Dist: loguru>=0.7.3
|
|
@@ -71,6 +71,10 @@ https://github.com/user-attachments/assets/a55d8238-8dd0-454a-be4c-8860dbbd0ddc
|
|
|
71
71
|
# Install with uv (recommended)
|
|
72
72
|
uv tool install basic-memory
|
|
73
73
|
|
|
74
|
+
# or with Homebrew
|
|
75
|
+
brew tap basicmachines-co/basic-memory
|
|
76
|
+
brew install basic-memory
|
|
77
|
+
|
|
74
78
|
# Configure Claude Desktop (edit ~/Library/Application Support/Claude/claude_desktop_config.json)
|
|
75
79
|
# Add this to your config:
|
|
76
80
|
{
|
|
@@ -104,6 +108,13 @@ npx -y @smithery/cli install @basicmachines-co/basic-memory --client claude
|
|
|
104
108
|
|
|
105
109
|
This installs and configures Basic Memory without requiring manual edits to the Claude Desktop configuration file. Note: The Smithery installation uses their hosted MCP server, while your data remains stored locally as Markdown files.
|
|
106
110
|
|
|
111
|
+
### Add to Cursor
|
|
112
|
+
|
|
113
|
+
Once you have installed Basic Memory revisit this page for the 1-click installer for Cursor:
|
|
114
|
+
|
|
115
|
+
[](https://cursor.com/install-mcp?name=basic-memory&config=eyJjb21tYW5kIjoiL1VzZXJzL2RyZXcvLmxvY2FsL2Jpbi91dnggYmFzaWMtbWVtb3J5IG1jcCJ9)
|
|
116
|
+
|
|
117
|
+
|
|
107
118
|
### Glama.ai
|
|
108
119
|
|
|
109
120
|
<a href="https://glama.ai/mcp/servers/o90kttu9ym">
|
|
@@ -252,7 +263,7 @@ title: <Entity title>
|
|
|
252
263
|
type: <The type of Entity> (e.g. note)
|
|
253
264
|
permalink: <a uri slug>
|
|
254
265
|
|
|
255
|
-
- <optional metadata> (such as tags)
|
|
266
|
+
- <optional metadata> (such as tags)
|
|
256
267
|
```
|
|
257
268
|
|
|
258
269
|
### Observations
|
|
@@ -33,6 +33,10 @@ https://github.com/user-attachments/assets/a55d8238-8dd0-454a-be4c-8860dbbd0ddc
|
|
|
33
33
|
# Install with uv (recommended)
|
|
34
34
|
uv tool install basic-memory
|
|
35
35
|
|
|
36
|
+
# or with Homebrew
|
|
37
|
+
brew tap basicmachines-co/basic-memory
|
|
38
|
+
brew install basic-memory
|
|
39
|
+
|
|
36
40
|
# Configure Claude Desktop (edit ~/Library/Application Support/Claude/claude_desktop_config.json)
|
|
37
41
|
# Add this to your config:
|
|
38
42
|
{
|
|
@@ -66,6 +70,13 @@ npx -y @smithery/cli install @basicmachines-co/basic-memory --client claude
|
|
|
66
70
|
|
|
67
71
|
This installs and configures Basic Memory without requiring manual edits to the Claude Desktop configuration file. Note: The Smithery installation uses their hosted MCP server, while your data remains stored locally as Markdown files.
|
|
68
72
|
|
|
73
|
+
### Add to Cursor
|
|
74
|
+
|
|
75
|
+
Once you have installed Basic Memory revisit this page for the 1-click installer for Cursor:
|
|
76
|
+
|
|
77
|
+
[](https://cursor.com/install-mcp?name=basic-memory&config=eyJjb21tYW5kIjoiL1VzZXJzL2RyZXcvLmxvY2FsL2Jpbi91dnggYmFzaWMtbWVtb3J5IG1jcCJ9)
|
|
78
|
+
|
|
79
|
+
|
|
69
80
|
### Glama.ai
|
|
70
81
|
|
|
71
82
|
<a href="https://glama.ai/mcp/servers/o90kttu9ym">
|
|
@@ -214,7 +225,7 @@ title: <Entity title>
|
|
|
214
225
|
type: <The type of Entity> (e.g. note)
|
|
215
226
|
permalink: <a uri slug>
|
|
216
227
|
|
|
217
|
-
- <optional metadata> (such as tags)
|
|
228
|
+
- <optional metadata> (such as tags)
|
|
218
229
|
```
|
|
219
230
|
|
|
220
231
|
### Observations
|
|
@@ -30,7 +30,7 @@ dependencies = [
|
|
|
30
30
|
"alembic>=1.14.1",
|
|
31
31
|
"pillow>=11.1.0",
|
|
32
32
|
"pybars3>=0.9.7",
|
|
33
|
-
"fastmcp>=2.3.4",
|
|
33
|
+
"fastmcp>=2.3.4,<2.10.0",
|
|
34
34
|
"pyjwt>=2.10.1",
|
|
35
35
|
"python-dotenv>=1.1.0",
|
|
36
36
|
"pytest-aio>=1.9.0",
|
|
@@ -123,4 +123,4 @@ omit = [
|
|
|
123
123
|
]
|
|
124
124
|
|
|
125
125
|
[tool.logfire]
|
|
126
|
-
ignore_no_config = true
|
|
126
|
+
ignore_no_config = true
|
|
@@ -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.14.
|
|
4
|
+
__version__ = "0.14.2"
|
|
5
5
|
|
|
6
6
|
# API version for FastAPI - independent of package version
|
|
7
7
|
__api_version__ = "v0"
|
|
@@ -38,7 +38,9 @@ def entity_model_from_markdown(
|
|
|
38
38
|
# Update basic fields
|
|
39
39
|
model.title = markdown.frontmatter.title
|
|
40
40
|
model.entity_type = markdown.frontmatter.type
|
|
41
|
-
|
|
41
|
+
# Only update permalink if it exists in frontmatter, otherwise preserve existing
|
|
42
|
+
if markdown.frontmatter.permalink is not None:
|
|
43
|
+
model.permalink = markdown.frontmatter.permalink
|
|
42
44
|
model.file_path = str(file_path)
|
|
43
45
|
model.content_type = "text/markdown"
|
|
44
46
|
model.created_at = markdown.created
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""OAuth authentication provider for Basic Memory MCP server."""
|
|
2
2
|
|
|
3
3
|
import secrets
|
|
4
|
-
from datetime import datetime, timedelta
|
|
4
|
+
from datetime import datetime, timedelta, timezone
|
|
5
5
|
from typing import Dict, Optional
|
|
6
6
|
|
|
7
7
|
import jwt
|
|
@@ -92,7 +92,7 @@ class BasicMemoryOAuthProvider(
|
|
|
92
92
|
self.authorization_codes[auth_code] = BasicMemoryAuthorizationCode(
|
|
93
93
|
code=auth_code,
|
|
94
94
|
scopes=params.scopes or [],
|
|
95
|
-
expires_at=(datetime.
|
|
95
|
+
expires_at=(datetime.now(timezone.utc) + timedelta(minutes=10)).timestamp(),
|
|
96
96
|
client_id=client.client_id,
|
|
97
97
|
code_challenge=params.code_challenge,
|
|
98
98
|
redirect_uri=params.redirect_uri,
|
|
@@ -119,7 +119,7 @@ class BasicMemoryOAuthProvider(
|
|
|
119
119
|
|
|
120
120
|
if code and code.client_id == client.client_id:
|
|
121
121
|
# Check if expired
|
|
122
|
-
if datetime.
|
|
122
|
+
if datetime.now(timezone.utc).timestamp() > code.expires_at:
|
|
123
123
|
del self.authorization_codes[authorization_code]
|
|
124
124
|
return None
|
|
125
125
|
return code
|
|
@@ -135,7 +135,7 @@ class BasicMemoryOAuthProvider(
|
|
|
135
135
|
refresh_token = secrets.token_urlsafe(32)
|
|
136
136
|
|
|
137
137
|
# Store tokens
|
|
138
|
-
expires_at = (datetime.
|
|
138
|
+
expires_at = (datetime.now(timezone.utc) + timedelta(hours=1)).timestamp()
|
|
139
139
|
|
|
140
140
|
self.access_tokens[access_token] = BasicMemoryAccessToken(
|
|
141
141
|
token=access_token,
|
|
@@ -187,7 +187,7 @@ class BasicMemoryOAuthProvider(
|
|
|
187
187
|
new_refresh_token = secrets.token_urlsafe(32)
|
|
188
188
|
|
|
189
189
|
# Store new tokens
|
|
190
|
-
expires_at = (datetime.
|
|
190
|
+
expires_at = (datetime.now(timezone.utc) + timedelta(hours=1)).timestamp()
|
|
191
191
|
|
|
192
192
|
self.access_tokens[new_access_token] = BasicMemoryAccessToken(
|
|
193
193
|
token=new_access_token,
|
|
@@ -220,7 +220,7 @@ class BasicMemoryOAuthProvider(
|
|
|
220
220
|
|
|
221
221
|
if access_token:
|
|
222
222
|
# Check if expired
|
|
223
|
-
if access_token.expires_at and datetime.
|
|
223
|
+
if access_token.expires_at and datetime.now(timezone.utc).timestamp() > access_token.expires_at:
|
|
224
224
|
logger.debug("Token found in memory but expired, removing")
|
|
225
225
|
del self.access_tokens[token]
|
|
226
226
|
return None
|
|
@@ -262,8 +262,8 @@ class BasicMemoryOAuthProvider(
|
|
|
262
262
|
"iss": self.issuer_url,
|
|
263
263
|
"sub": client_id,
|
|
264
264
|
"aud": "basic-memory",
|
|
265
|
-
"exp": datetime.
|
|
266
|
-
"iat": datetime.
|
|
265
|
+
"exp": datetime.now(timezone.utc) + timedelta(hours=1),
|
|
266
|
+
"iat": datetime.now(timezone.utc),
|
|
267
267
|
"scopes": scopes,
|
|
268
268
|
}
|
|
269
269
|
|
{basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/supabase_auth_provider.py
RENAMED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import os
|
|
4
4
|
import secrets
|
|
5
5
|
from dataclasses import dataclass
|
|
6
|
-
from datetime import datetime, timedelta
|
|
6
|
+
from datetime import datetime, timedelta, timezone
|
|
7
7
|
from typing import Optional, Dict, Any
|
|
8
8
|
|
|
9
9
|
import httpx
|
|
@@ -123,7 +123,7 @@ class SupabaseOAuthProvider(
|
|
|
123
123
|
self.pending_auth_codes[state] = SupabaseAuthorizationCode(
|
|
124
124
|
code=state,
|
|
125
125
|
scopes=params.scopes or [],
|
|
126
|
-
expires_at=(datetime.
|
|
126
|
+
expires_at=(datetime.now(timezone.utc) + timedelta(minutes=10)).timestamp(),
|
|
127
127
|
client_id=client.client_id,
|
|
128
128
|
code_challenge=params.code_challenge,
|
|
129
129
|
redirect_uri=params.redirect_uri,
|
|
@@ -218,7 +218,7 @@ class SupabaseOAuthProvider(
|
|
|
218
218
|
|
|
219
219
|
if code and code.client_id == client.client_id:
|
|
220
220
|
# Check expiration
|
|
221
|
-
if datetime.
|
|
221
|
+
if datetime.now(timezone.utc).timestamp() > code.expires_at:
|
|
222
222
|
del self.pending_auth_codes[authorization_code]
|
|
223
223
|
return None
|
|
224
224
|
return code
|
|
@@ -453,8 +453,8 @@ class SupabaseOAuthProvider(
|
|
|
453
453
|
"email": email,
|
|
454
454
|
"scopes": scopes,
|
|
455
455
|
"supabase_token": supabase_access_token[:10] + "...", # Reference only
|
|
456
|
-
"exp": datetime.
|
|
457
|
-
"iat": datetime.
|
|
456
|
+
"exp": datetime.now(timezone.utc) + timedelta(hours=1),
|
|
457
|
+
"iat": datetime.now(timezone.utc),
|
|
458
458
|
}
|
|
459
459
|
|
|
460
460
|
# Use Supabase JWT secret if available
|
|
@@ -20,24 +20,24 @@ from basic_memory.mcp.tools.edit_note import edit_note
|
|
|
20
20
|
from basic_memory.mcp.tools.move_note import move_note
|
|
21
21
|
from basic_memory.mcp.tools.sync_status import sync_status
|
|
22
22
|
from basic_memory.mcp.tools.project_management import (
|
|
23
|
-
|
|
23
|
+
list_memory_projects,
|
|
24
24
|
switch_project,
|
|
25
25
|
get_current_project,
|
|
26
26
|
set_default_project,
|
|
27
|
-
|
|
27
|
+
create_memory_project,
|
|
28
28
|
delete_project,
|
|
29
29
|
)
|
|
30
30
|
|
|
31
31
|
__all__ = [
|
|
32
32
|
"build_context",
|
|
33
33
|
"canvas",
|
|
34
|
-
"
|
|
34
|
+
"create_memory_project",
|
|
35
35
|
"delete_note",
|
|
36
36
|
"delete_project",
|
|
37
37
|
"edit_note",
|
|
38
38
|
"get_current_project",
|
|
39
39
|
"list_directory",
|
|
40
|
-
"
|
|
40
|
+
"list_memory_projects",
|
|
41
41
|
"move_note",
|
|
42
42
|
"read_content",
|
|
43
43
|
"read_note",
|
{basic_memory-0.14.0b1 → basic_memory-0.14.2}/src/basic_memory/mcp/tools/project_management.py
RENAMED
|
@@ -5,6 +5,7 @@ and manage project context during conversations.
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
from textwrap import dedent
|
|
8
|
+
from typing import Optional
|
|
8
9
|
|
|
9
10
|
from fastmcp import Context
|
|
10
11
|
from loguru import logger
|
|
@@ -19,7 +20,9 @@ from basic_memory.utils import generate_permalink
|
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
@mcp.tool("list_memory_projects")
|
|
22
|
-
async def
|
|
23
|
+
async def list_memory_projects(
|
|
24
|
+
ctx: Context | None = None, _compatibility: Optional[str] = None
|
|
25
|
+
) -> str:
|
|
23
26
|
"""List all available projects with their status.
|
|
24
27
|
|
|
25
28
|
Shows all Basic Memory projects that are available, indicating which one
|
|
@@ -29,7 +32,7 @@ async def list_projects(ctx: Context | None = None) -> str:
|
|
|
29
32
|
Formatted list of projects with status indicators
|
|
30
33
|
|
|
31
34
|
Example:
|
|
32
|
-
|
|
35
|
+
list_memory_projects()
|
|
33
36
|
"""
|
|
34
37
|
if ctx: # pragma: no cover
|
|
35
38
|
await ctx.info("Listing all available projects")
|
|
@@ -144,13 +147,13 @@ async def switch_project(project_name: str, ctx: Context | None = None) -> str:
|
|
|
144
147
|
Your session remains on the previous project.
|
|
145
148
|
|
|
146
149
|
## Troubleshooting:
|
|
147
|
-
1. **Check available projects**: Use `
|
|
150
|
+
1. **Check available projects**: Use `list_memory_projects()` to see valid project names
|
|
148
151
|
2. **Verify spelling**: Ensure the project name is spelled correctly
|
|
149
152
|
3. **Check permissions**: Verify you have access to the requested project
|
|
150
153
|
4. **Try again**: The error might be temporary
|
|
151
154
|
|
|
152
155
|
## Available options:
|
|
153
|
-
- See all projects: `
|
|
156
|
+
- See all projects: `list_memory_projects()`
|
|
154
157
|
- Stay on current project: `get_current_project()`
|
|
155
158
|
- Try different project: `switch_project("correct-project-name")`
|
|
156
159
|
|
|
@@ -159,7 +162,9 @@ async def switch_project(project_name: str, ctx: Context | None = None) -> str:
|
|
|
159
162
|
|
|
160
163
|
|
|
161
164
|
@mcp.tool()
|
|
162
|
-
async def get_current_project(
|
|
165
|
+
async def get_current_project(
|
|
166
|
+
ctx: Context | None = None, _compatibility: Optional[str] = None
|
|
167
|
+
) -> str:
|
|
163
168
|
"""Show the currently active project and basic stats.
|
|
164
169
|
|
|
165
170
|
Displays which project is currently active and provides basic information
|
|
@@ -231,7 +236,7 @@ async def set_default_project(project_name: str, ctx: Context | None = None) ->
|
|
|
231
236
|
|
|
232
237
|
|
|
233
238
|
@mcp.tool("create_memory_project")
|
|
234
|
-
async def
|
|
239
|
+
async def create_memory_project(
|
|
235
240
|
project_name: str, project_path: str, set_default: bool = False, ctx: Context | None = None
|
|
236
241
|
) -> str:
|
|
237
242
|
"""Create a new Basic Memory project.
|
|
@@ -248,8 +253,8 @@ async def create_project(
|
|
|
248
253
|
Confirmation message with project details
|
|
249
254
|
|
|
250
255
|
Example:
|
|
251
|
-
|
|
252
|
-
|
|
256
|
+
create_memory_project("my-research", "~/Documents/research")
|
|
257
|
+
create_memory_project("work-notes", "/home/user/work", set_default=True)
|
|
253
258
|
"""
|
|
254
259
|
if ctx: # pragma: no cover
|
|
255
260
|
await ctx.info(f"Creating project: {project_name} at {project_path}")
|