basic-memory 0.13.0b4__tar.gz → 0.13.0b6__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.13.0b4 → basic_memory-0.13.0b6}/.claude/commands/commands.md +3 -3
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.claude/commands/release/beta.md +3 -3
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.claude/commands/release/release-check.md +3 -3
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.claude/commands/release/release.md +1 -1
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.claude/commands/test-live.md +14 -1
- basic_memory-0.13.0b6/.github/workflows/claude.yml +114 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.github/workflows/release.yml +4 -10
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.github/workflows/test.yml +6 -2
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.gitignore +2 -2
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/CLAUDE.md +8 -8
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/CONTRIBUTING.md +10 -8
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/PKG-INFO +2 -2
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/RELEASE_NOTES_v0.13.0.md +4 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/AI Assistant Guide.md +25 -2
- basic_memory-0.13.0b6/justfile +63 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/pyproject.toml +4 -8
- basic_memory-0.13.0b6/src/basic_memory/__init__.py +4 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/routers/knowledge_router.py +13 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/routers/memory_router.py +3 -4
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/routers/project_router.py +6 -5
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/routers/prompt_router.py +2 -2
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/cli/commands/project.py +3 -3
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/cli/commands/status.py +1 -1
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/cli/commands/sync.py +1 -1
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/cli/commands/tool.py +6 -6
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/prompts/__init__.py +2 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/prompts/recent_activity.py +1 -1
- basic_memory-0.13.0b6/src/basic_memory/mcp/prompts/sync_status.py +116 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/server.py +6 -6
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/tools/__init__.py +4 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/tools/build_context.py +32 -7
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/tools/canvas.py +2 -1
- basic_memory-0.13.0b6/src/basic_memory/mcp/tools/delete_note.py +191 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/tools/edit_note.py +17 -11
- basic_memory-0.13.0b6/src/basic_memory/mcp/tools/move_note.py +299 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/tools/project_management.py +35 -3
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/tools/read_note.py +11 -4
- basic_memory-0.13.0b6/src/basic_memory/mcp/tools/search.py +294 -0
- basic_memory-0.13.0b6/src/basic_memory/mcp/tools/sync_status.py +254 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/tools/utils.py +47 -0
- basic_memory-0.13.0b6/src/basic_memory/mcp/tools/view_note.py +66 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/tools/write_note.py +13 -2
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/repository/search_repository.py +116 -38
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/schemas/base.py +33 -5
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/schemas/memory.py +58 -1
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/services/entity_service.py +18 -5
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/services/initialization.py +32 -5
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/services/link_resolver.py +20 -5
- basic_memory-0.13.0b6/src/basic_memory/services/migration_service.py +168 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/services/project_service.py +121 -50
- basic_memory-0.13.0b6/src/basic_memory/services/sync_status_service.py +181 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/sync/sync_service.py +91 -13
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/static/ai_assistant_guide.md +189 -122
- basic_memory-0.13.0b6/test-int/mcp/test_build_context_validation.py +172 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/test-int/mcp/test_delete_note_integration.py +0 -1
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/test-int/mcp/test_edit_note_integration.py +1 -2
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/test-int/mcp/test_move_note_integration.py +36 -42
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/api/test_knowledge_router.py +82 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/cli/conftest.py +2 -2
- basic_memory-0.13.0b6/tests/cli/test_project_info.py +116 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/cli/test_status.py +27 -18
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/cli/test_sync.py +40 -5
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/conftest.py +2 -1
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/test_prompts.py +9 -9
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/test_resource_project_info.py +2 -2
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/test_resources.py +1 -1
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/test_tool_build_context.py +7 -7
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/test_tool_canvas.py +6 -6
- basic_memory-0.13.0b6/tests/mcp/test_tool_delete_note.py +94 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/test_tool_edit_note.py +33 -31
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/test_tool_list_directory.py +17 -17
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/test_tool_move_note.py +168 -123
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/test_tool_read_note.py +17 -17
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/test_tool_recent_activity.py +10 -10
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/test_tool_resource.py +10 -10
- basic_memory-0.13.0b6/tests/mcp/test_tool_search.py +248 -0
- basic_memory-0.13.0b6/tests/mcp/test_tool_sync_status.py +170 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/test_tool_utils.py +89 -3
- basic_memory-0.13.0b6/tests/mcp/test_tool_view_note.py +306 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/test_tool_write_note.py +21 -21
- basic_memory-0.13.0b6/tests/repository/test_search_repository.py +519 -0
- basic_memory-0.13.0b6/tests/schemas/test_memory_url_validation.py +272 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/schemas/test_schemas.py +149 -1
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/services/test_entity_service.py +113 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/services/test_initialization.py +22 -16
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/services/test_link_resolver.py +136 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/services/test_project_service.py +138 -6
- basic_memory-0.13.0b6/tests/services/test_sync_status_service.py +213 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/sync/test_sync_service.py +223 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/uv.lock +97 -273
- basic_memory-0.13.0b4/.github/workflows/claude.yml +0 -81
- basic_memory-0.13.0b4/Makefile +0 -59
- basic_memory-0.13.0b4/TESTING.md +0 -337
- basic_memory-0.13.0b4/src/basic_memory/__init__.py +0 -9
- basic_memory-0.13.0b4/src/basic_memory/mcp/tools/delete_note.py +0 -36
- basic_memory-0.13.0b4/src/basic_memory/mcp/tools/move_note.py +0 -87
- basic_memory-0.13.0b4/src/basic_memory/mcp/tools/search.py +0 -122
- basic_memory-0.13.0b4/test-int/mcp/.coverage.Pauls-MacBook-Pro-2.local.66900.XDhpuELx +0 -0
- basic_memory-0.13.0b4/tests/.coverage.Pauls-MacBook-Pro-2.local.28077.XqMfGOxx +0 -0
- basic_memory-0.13.0b4/tests/api/.coverage.Pauls-MacBook-Pro-2.local.60974.XPpBfqqx +0 -0
- basic_memory-0.13.0b4/tests/cli/.coverage.Pauls-MacBook-Pro-2.local.63666.XDIUQNrx +0 -0
- basic_memory-0.13.0b4/tests/cli/test_project_info.py +0 -38
- basic_memory-0.13.0b4/tests/mcp/.coverage.Pauls-MacBook-Pro-2.local.63904.XiAZuuhx +0 -0
- basic_memory-0.13.0b4/tests/mcp/test_tool_search.py +0 -159
- basic_memory-0.13.0b4/tests/repository/test_search_repository.py +0 -303
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.claude/commands/check-health.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.claude/commands/lint-fix.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.claude/commands/release/changelog.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.claude/commands/test-coverage.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.env.oauth.example +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.github/dependabot.yml +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.github/workflows/dev-release.yml +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.github/workflows/pr-title.yml +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.mcp.json +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/.python-version +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/AUTH.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/CHANGELOG.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/CITATION.cff +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/CLA.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/CODE_OF_CONDUCT.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/Dockerfile +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/LICENSE +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/README.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/SECURITY.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/basic-memory.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/CLI Reference.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/Canvas.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/Claude.ai Integration.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/Getting Started with Basic Memory.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/Knowledge Format.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/OAuth Authentication Guide.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/Obsidian Integration.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/Supabase OAuth Setup.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/Technical Information.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/User Guide.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/Welcome to Basic memory.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/attachments/Canvas.png +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/attachments/Claude-Obsidian-Demo.mp4 +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/attachments/Prompt.png +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/attachments/disk-ai-logo-400x400.png +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/attachments/disk-ai-logo.png +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/attachments/prompt 1.png +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/attachments/prompt2.png +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/attachments/prompt3.png +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/attachments/prompt4.png +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/docs/publish.js +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/examples/Coffee Notes/Brewing Equipment.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/examples/Coffee Notes/Coffee Bean Origins.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/examples/Coffee Notes/Coffee Brewing Methods.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/examples/Coffee Notes/Coffee Flavor Map.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/examples/Coffee Notes/Coffee Knowledge Base.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/examples/Coffee Notes/Flavor Extraction.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/examples/Coffee Notes/Perfect Pour Over Coffee Method.canvas +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/examples/Coffee Notes/Tasting Notes.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/examples/testing/Test Note Creation - Basic Functionality.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/llms-install.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/memory.json +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/scripts/install.sh +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/smithery.yaml +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/alembic/alembic.ini +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/alembic/env.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/alembic/migrations.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/alembic/script.py.mako +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/__init__.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/app.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/routers/__init__.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/routers/directory_router.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/routers/importer_router.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/routers/management_router.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/routers/resource_router.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/routers/search_router.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/routers/utils.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/template_loader.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/cli/__init__.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/cli/app.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/cli/commands/__init__.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/cli/commands/auth.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/cli/commands/db.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/cli/commands/import_chatgpt.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/cli/commands/import_claude_conversations.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/cli/commands/import_claude_projects.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/cli/commands/import_memory_json.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/cli/commands/mcp.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/cli/main.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/config.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/db.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/deps.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/file_utils.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/importers/__init__.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/importers/base.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/importers/chatgpt_importer.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/importers/claude_conversations_importer.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/importers/claude_projects_importer.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/importers/memory_json_importer.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/importers/utils.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/markdown/__init__.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/markdown/entity_parser.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/markdown/markdown_processor.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/markdown/plugins.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/markdown/schemas.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/markdown/utils.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/__init__.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/async_client.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/auth_provider.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/external_auth_provider.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/project_session.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/prompts/ai_assistant_guide.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/prompts/continue_conversation.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/prompts/search.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/prompts/utils.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/resources/ai_assistant_guide.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/resources/project_info.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/supabase_auth_provider.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/tools/list_directory.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/tools/read_content.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/mcp/tools/recent_activity.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/models/__init__.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/models/base.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/models/knowledge.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/models/project.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/models/search.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/repository/__init__.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/repository/entity_repository.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/repository/observation_repository.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/repository/project_info_repository.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/repository/project_repository.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/repository/relation_repository.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/repository/repository.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/schemas/__init__.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/schemas/delete.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/schemas/directory.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/schemas/importer.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/schemas/project_info.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/schemas/prompt.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/schemas/request.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/schemas/response.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/schemas/search.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/services/__init__.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/services/context_service.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/services/directory_service.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/services/exceptions.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/services/file_service.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/services/search_service.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/services/service.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/sync/__init__.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/sync/background_sync.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/sync/watch_service.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/templates/prompts/search.hbs +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/utils.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/static/json_canvas_spec_1_0.md +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/test-int/conftest.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/test-int/mcp/test_list_directory_integration.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/test-int/mcp/test_project_management_integration.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/test-int/mcp/test_read_content_integration.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/test-int/mcp/test_read_note_integration.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/test-int/mcp/test_search_integration.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/test-int/mcp/test_write_note_integration.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/Non-MarkdownFileSupport.pdf +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/Screenshot.png +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/__init__.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/api/conftest.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/api/test_continue_conversation_template.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/api/test_directory_router.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/api/test_importer_router.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/api/test_management_router.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/api/test_memory_router.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/api/test_project_router.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/api/test_project_router_operations.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/api/test_prompt_router.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/api/test_resource_router.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/api/test_search_router.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/api/test_search_template.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/api/test_template_loader.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/api/test_template_loader_helpers.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/cli/test_auth_commands.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/cli/test_cli_tools.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/cli/test_import_chatgpt.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/cli/test_import_claude_conversations.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/cli/test_import_claude_projects.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/cli/test_import_memory_json.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/cli/test_project_commands.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/cli/test_version.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/conftest.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/importers/test_importer_base.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/importers/test_importer_utils.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/markdown/__init__.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/markdown/test_entity_parser.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/markdown/test_markdown_plugins.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/markdown/test_markdown_processor.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/markdown/test_observation_edge_cases.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/markdown/test_parser_edge_cases.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/markdown/test_relation_edge_cases.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/markdown/test_task_detection.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/test_auth_provider.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/mcp/test_server.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/repository/test_entity_repository.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/repository/test_observation_repository.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/repository/test_project_info_repository.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/repository/test_project_repository.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/repository/test_relation_repository.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/repository/test_repository.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/schemas/test_memory_url.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/schemas/test_search.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/services/test_context_service.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/services/test_directory_service.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/services/test_file_service.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/services/test_project_service_operations.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/services/test_search_service.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/sync/test_sync_wikilink_issue.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/sync/test_tmp_files.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/sync/test_watch_service.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/sync/test_watch_service_edge_cases.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/utils/test_file_utils.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/utils/test_parse_tags.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/utils/test_permalink_formatting.py +0 -0
- {basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/tests/utils/test_utf8_handling.py +0 -0
|
@@ -54,9 +54,9 @@ Each command is implemented as a Markdown file containing structured prompts tha
|
|
|
54
54
|
## Tooling Integration
|
|
55
55
|
|
|
56
56
|
Commands leverage existing project tooling:
|
|
57
|
-
- `
|
|
58
|
-
- `
|
|
59
|
-
- `
|
|
57
|
+
- `just check` - Quality checks
|
|
58
|
+
- `just test` - Test suite
|
|
59
|
+
- `just update-deps` - Dependency updates
|
|
60
60
|
- `uv` - Package management
|
|
61
61
|
- `git` - Version control
|
|
62
62
|
- GitHub Actions - CI/CD pipeline
|
|
@@ -20,9 +20,9 @@ You are an expert release manager for the Basic Memory project. When the user ru
|
|
|
20
20
|
3. Get the latest beta tag to determine next version if not provided
|
|
21
21
|
|
|
22
22
|
### Step 2: Quality Assurance
|
|
23
|
-
1. Run `
|
|
23
|
+
1. Run `just check` to ensure code quality
|
|
24
24
|
2. If any checks fail, report issues and stop
|
|
25
|
-
3. Run `
|
|
25
|
+
3. Run `just update-deps` to ensure latest dependencies
|
|
26
26
|
4. Commit any dependency updates with proper message
|
|
27
27
|
|
|
28
28
|
### Step 3: Version Determination
|
|
@@ -62,7 +62,7 @@ Monitor release: https://github.com/basicmachines-co/basic-memory/actions
|
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
## Context
|
|
65
|
-
- Use the existing
|
|
65
|
+
- Use the existing justfile targets (`just check`, `just update-deps`)
|
|
66
66
|
- Follow semantic versioning for beta releases
|
|
67
67
|
- Maintain release notes in CHANGELOG.md
|
|
68
68
|
- Use conventional commit messages
|
|
@@ -28,7 +28,7 @@ You are an expert QA engineer for the Basic Memory project. When the user runs `
|
|
|
28
28
|
### Step 2: Code Quality Gates
|
|
29
29
|
1. **Test Suite Validation**
|
|
30
30
|
```bash
|
|
31
|
-
|
|
31
|
+
just test
|
|
32
32
|
```
|
|
33
33
|
- All tests must pass
|
|
34
34
|
- Check test coverage (target: 95%+)
|
|
@@ -36,8 +36,8 @@ You are an expert QA engineer for the Basic Memory project. When the user runs `
|
|
|
36
36
|
|
|
37
37
|
2. **Code Quality Checks**
|
|
38
38
|
```bash
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
just lint
|
|
40
|
+
just type-check
|
|
41
41
|
```
|
|
42
42
|
- No linting errors
|
|
43
43
|
- No type checking errors
|
|
@@ -21,7 +21,7 @@ You are an expert release manager for the Basic Memory project. When the user ru
|
|
|
21
21
|
4. Confirm no existing tag with this version
|
|
22
22
|
|
|
23
23
|
### Step 2: Comprehensive Quality Checks
|
|
24
|
-
1. Run `
|
|
24
|
+
1. Run `just check` (lint, format, type-check, full test suite)
|
|
25
25
|
2. Verify test coverage meets minimum requirements (95%+)
|
|
26
26
|
3. Check that CHANGELOG.md contains entry for this version
|
|
27
27
|
4. Validate all high-priority issues are closed
|
|
@@ -12,7 +12,8 @@ Execute comprehensive real-world testing of Basic Memory using the installed ver
|
|
|
12
12
|
|
|
13
13
|
## Implementation
|
|
14
14
|
|
|
15
|
-
You are an expert QA engineer conducting live testing of Basic Memory.
|
|
15
|
+
You are an expert QA engineer conducting live testing of Basic Memory.
|
|
16
|
+
When the user runs `/project:test-live`, execute comprehensive testing following the TESTING.md methodology:
|
|
16
17
|
|
|
17
18
|
### Pre-Test Setup
|
|
18
19
|
|
|
@@ -22,12 +23,17 @@ You are an expert QA engineer conducting live testing of Basic Memory. When the
|
|
|
22
23
|
- Test MCP connection and tool availability
|
|
23
24
|
|
|
24
25
|
2. **Test Project Creation**
|
|
26
|
+
|
|
27
|
+
Run the bash `date` command to get the current date/time.
|
|
28
|
+
|
|
25
29
|
```
|
|
26
30
|
Create project: "basic-memory-testing-[timestamp]"
|
|
27
31
|
Location: ~/basic-memory-testing-[timestamp]
|
|
28
32
|
Purpose: Record all test observations and results
|
|
29
33
|
```
|
|
30
34
|
|
|
35
|
+
Make sure to switch to the newly created project with the `switch_project()` tool.
|
|
36
|
+
|
|
31
37
|
3. **Baseline Documentation**
|
|
32
38
|
Create initial test session note with:
|
|
33
39
|
- Test environment details
|
|
@@ -52,6 +58,13 @@ Test all fundamental MCP tools systematically:
|
|
|
52
58
|
- Notes with complex formatting
|
|
53
59
|
- Performance with large notes
|
|
54
60
|
|
|
61
|
+
**view_note Tests:**
|
|
62
|
+
- View notes as formatted artifacts (Claude Desktop)
|
|
63
|
+
- Title extraction from frontmatter and headings
|
|
64
|
+
- Unicode and emoji content in artifacts
|
|
65
|
+
- Error handling for non-existent notes
|
|
66
|
+
- Artifact display quality and readability
|
|
67
|
+
|
|
55
68
|
**search_notes Tests:**
|
|
56
69
|
- Simple text queries
|
|
57
70
|
- Tag-based searches
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
name: Claude Code
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
issue_comment:
|
|
5
|
+
types: [created]
|
|
6
|
+
pull_request_review_comment:
|
|
7
|
+
types: [created]
|
|
8
|
+
issues:
|
|
9
|
+
types: [opened, assigned]
|
|
10
|
+
pull_request_review:
|
|
11
|
+
types: [submitted]
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
claude:
|
|
15
|
+
if: |
|
|
16
|
+
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
|
|
17
|
+
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
|
|
18
|
+
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
|
|
19
|
+
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
|
|
20
|
+
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
permissions:
|
|
23
|
+
contents: read
|
|
24
|
+
pull-requests: read
|
|
25
|
+
issues: read
|
|
26
|
+
id-token: write
|
|
27
|
+
steps:
|
|
28
|
+
- name: Check user permissions
|
|
29
|
+
id: check_membership
|
|
30
|
+
uses: actions/github-script@v7
|
|
31
|
+
with:
|
|
32
|
+
script: |
|
|
33
|
+
let actor;
|
|
34
|
+
if (context.eventName === 'issue_comment') {
|
|
35
|
+
actor = context.payload.comment.user.login;
|
|
36
|
+
} else if (context.eventName === 'pull_request_review_comment') {
|
|
37
|
+
actor = context.payload.comment.user.login;
|
|
38
|
+
} else if (context.eventName === 'pull_request_review') {
|
|
39
|
+
actor = context.payload.review.user.login;
|
|
40
|
+
} else if (context.eventName === 'issues') {
|
|
41
|
+
actor = context.payload.issue.user.login;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
console.log(`Checking permissions for user: ${actor}`);
|
|
45
|
+
|
|
46
|
+
// List of explicitly allowed users (organization members)
|
|
47
|
+
const allowedUsers = [
|
|
48
|
+
'phernandez',
|
|
49
|
+
'groksrc',
|
|
50
|
+
'nellins',
|
|
51
|
+
'bm-claudeai'
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
if (allowedUsers.includes(actor)) {
|
|
55
|
+
console.log(`User ${actor} is in the allowed list`);
|
|
56
|
+
core.setOutput('is_member', true);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Fallback: Check if user has repository permissions
|
|
61
|
+
try {
|
|
62
|
+
const collaboration = await github.rest.repos.getCollaboratorPermissionLevel({
|
|
63
|
+
owner: context.repo.owner,
|
|
64
|
+
repo: context.repo.repo,
|
|
65
|
+
username: actor
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
const permission = collaboration.data.permission;
|
|
69
|
+
console.log(`User ${actor} has permission level: ${permission}`);
|
|
70
|
+
|
|
71
|
+
// Allow if user has push access or higher (write, maintain, admin)
|
|
72
|
+
const allowed = ['write', 'maintain', 'admin'].includes(permission);
|
|
73
|
+
|
|
74
|
+
core.setOutput('is_member', allowed);
|
|
75
|
+
|
|
76
|
+
if (!allowed) {
|
|
77
|
+
core.notice(`User ${actor} does not have sufficient repository permissions (has: ${permission})`);
|
|
78
|
+
}
|
|
79
|
+
} catch (error) {
|
|
80
|
+
console.log(`Error checking permissions: ${error.message}`);
|
|
81
|
+
|
|
82
|
+
// Final fallback: Check if user is a public member of the organization
|
|
83
|
+
try {
|
|
84
|
+
const membership = await github.rest.orgs.getMembershipForUser({
|
|
85
|
+
org: 'basicmachines-co',
|
|
86
|
+
username: actor
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
const allowed = membership.data.state === 'active';
|
|
90
|
+
core.setOutput('is_member', allowed);
|
|
91
|
+
|
|
92
|
+
if (!allowed) {
|
|
93
|
+
core.notice(`User ${actor} is not a public member of basicmachines-co organization`);
|
|
94
|
+
}
|
|
95
|
+
} catch (membershipError) {
|
|
96
|
+
console.log(`Error checking organization membership: ${membershipError.message}`);
|
|
97
|
+
core.setOutput('is_member', false);
|
|
98
|
+
core.notice(`User ${actor} does not have access to this repository`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
- name: Checkout repository
|
|
103
|
+
if: steps.check_membership.outputs.is_member == 'true'
|
|
104
|
+
uses: actions/checkout@v4
|
|
105
|
+
with:
|
|
106
|
+
fetch-depth: 1
|
|
107
|
+
|
|
108
|
+
- name: Run Claude Code
|
|
109
|
+
if: steps.check_membership.outputs.is_member == 'true'
|
|
110
|
+
id: claude
|
|
111
|
+
uses: anthropics/claude-code-action@beta
|
|
112
|
+
with:
|
|
113
|
+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
114
|
+
allowed_tools: Bash(uv run pytest),Bash(uv run ruff check . --fix),Bash(uv run ruff format .),Bash(uv run pyright),Bash(just test),Bash(just lint),Bash(just format),Bash(just type-check),Bash(just check),Read,Write,Edit,MultiEdit,Glob,Grep,LS
|
|
@@ -32,17 +32,11 @@ jobs:
|
|
|
32
32
|
uv sync
|
|
33
33
|
uv build
|
|
34
34
|
|
|
35
|
-
- name: Verify
|
|
35
|
+
- name: Verify build succeeded
|
|
36
36
|
run: |
|
|
37
|
-
#
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
echo "Package version: $PACKAGE_VERSION"
|
|
41
|
-
echo "Tag version: $TAG_VERSION"
|
|
42
|
-
if [ "$PACKAGE_VERSION" != "$TAG_VERSION" ]; then
|
|
43
|
-
echo "Version mismatch! Package: $PACKAGE_VERSION, Tag: $TAG_VERSION"
|
|
44
|
-
exit 1
|
|
45
|
-
fi
|
|
37
|
+
# Verify that build artifacts exist
|
|
38
|
+
ls -la dist/
|
|
39
|
+
echo "Build completed successfully"
|
|
46
40
|
|
|
47
41
|
- name: Create GitHub Release
|
|
48
42
|
uses: softprops/action-gh-release@v2
|
|
@@ -35,6 +35,10 @@ jobs:
|
|
|
35
35
|
run: |
|
|
36
36
|
pip install uv
|
|
37
37
|
|
|
38
|
+
- name: Install just
|
|
39
|
+
run: |
|
|
40
|
+
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to /usr/local/bin
|
|
41
|
+
|
|
38
42
|
- name: Create virtual env
|
|
39
43
|
run: |
|
|
40
44
|
uv venv
|
|
@@ -45,9 +49,9 @@ jobs:
|
|
|
45
49
|
|
|
46
50
|
- name: Run type checks
|
|
47
51
|
run: |
|
|
48
|
-
|
|
52
|
+
just type-check
|
|
49
53
|
|
|
50
54
|
- name: Run tests
|
|
51
55
|
run: |
|
|
52
56
|
uv pip install pytest pytest-cov
|
|
53
|
-
|
|
57
|
+
just test
|
|
@@ -14,15 +14,15 @@ 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: `uv run pytest -p pytest_mock -v` or `
|
|
17
|
+
- Install: `just install` or `pip install -e ".[dev]"`
|
|
18
|
+
- Run tests: `uv run pytest -p pytest_mock -v` or `just test`
|
|
19
19
|
- Single test: `pytest tests/path/to/test_file.py::test_function_name`
|
|
20
|
-
- Lint: `
|
|
21
|
-
- Type check: `
|
|
22
|
-
- Format: `
|
|
23
|
-
- Run all code checks: `
|
|
24
|
-
- Create db migration: `
|
|
25
|
-
- Run development MCP Inspector: `
|
|
20
|
+
- Lint: `just lint` or `ruff check . --fix`
|
|
21
|
+
- Type check: `just type-check` or `uv run pyright`
|
|
22
|
+
- Format: `just format` or `uv run ruff format .`
|
|
23
|
+
- Run all code checks: `just check` (runs lint, format, type-check, test)
|
|
24
|
+
- Create db migration: `just migration "Your migration message"`
|
|
25
|
+
- Run development MCP Inspector: `just run-inspector`
|
|
26
26
|
|
|
27
27
|
### Code Style Guidelines
|
|
28
28
|
|
|
@@ -15,8 +15,8 @@ project and how to get started as a developer.
|
|
|
15
15
|
|
|
16
16
|
2. **Install Dependencies**:
|
|
17
17
|
```bash
|
|
18
|
-
# Using
|
|
19
|
-
|
|
18
|
+
# Using just (recommended)
|
|
19
|
+
just install
|
|
20
20
|
|
|
21
21
|
# Or using uv
|
|
22
22
|
uv install -e ".[dev]"
|
|
@@ -25,10 +25,12 @@ project and how to get started as a developer.
|
|
|
25
25
|
pip install -e ".[dev]"
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
+
> **Note**: Basic Memory uses [just](https://just.systems) as a modern command runner. Install with `brew install just` or `cargo install just`.
|
|
29
|
+
|
|
28
30
|
3. **Run the Tests**:
|
|
29
31
|
```bash
|
|
30
32
|
# Run all tests
|
|
31
|
-
|
|
33
|
+
just test
|
|
32
34
|
# or
|
|
33
35
|
uv run pytest -p pytest_mock -v
|
|
34
36
|
|
|
@@ -49,16 +51,16 @@ project and how to get started as a developer.
|
|
|
49
51
|
4. **Check Code Quality**:
|
|
50
52
|
```bash
|
|
51
53
|
# Run all checks at once
|
|
52
|
-
|
|
54
|
+
just check
|
|
53
55
|
|
|
54
56
|
# Or run individual checks
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
just lint # Run linting
|
|
58
|
+
just format # Format code
|
|
59
|
+
just type-check # Type checking
|
|
58
60
|
```
|
|
59
61
|
5. **Test Your Changes**: Ensure all tests pass locally and maintain 100% test coverage.
|
|
60
62
|
```bash
|
|
61
|
-
|
|
63
|
+
just test
|
|
62
64
|
```
|
|
63
65
|
6. **Submit a PR**: Submit a pull request with a detailed description of your changes.
|
|
64
66
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: basic-memory
|
|
3
|
-
Version: 0.13.
|
|
3
|
+
Version: 0.13.0b6
|
|
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
|
|
@@ -25,10 +25,10 @@ Requires-Dist: pydantic-settings>=2.6.1
|
|
|
25
25
|
Requires-Dist: pydantic[email,timezone]>=2.10.3
|
|
26
26
|
Requires-Dist: pyjwt>=2.10.1
|
|
27
27
|
Requires-Dist: pyright>=1.1.390
|
|
28
|
+
Requires-Dist: pytest-aio>=1.9.0
|
|
28
29
|
Requires-Dist: python-dotenv>=1.1.0
|
|
29
30
|
Requires-Dist: python-frontmatter>=1.1.0
|
|
30
31
|
Requires-Dist: pyyaml>=6.0.1
|
|
31
|
-
Requires-Dist: qasync>=0.27.1
|
|
32
32
|
Requires-Dist: rich>=13.9.4
|
|
33
33
|
Requires-Dist: sqlalchemy>=2.0.0
|
|
34
34
|
Requires-Dist: typer>=0.9.0
|
|
@@ -8,6 +8,7 @@ Basic Memory v0.13.0 is a **major release** that transforms Basic Memory into a
|
|
|
8
8
|
- 🎯 **Switch between projects instantly** during conversations with Claude
|
|
9
9
|
- ✏️ **Edit notes incrementally** without rewriting entire documents
|
|
10
10
|
- 📁 **Move and organize notes** with full database consistency
|
|
11
|
+
- 📖 **View notes as formatted artifacts** for better readability in Claude Desktop
|
|
11
12
|
- 🔍 **Search frontmatter tags** to discover content more easily
|
|
12
13
|
- 🔐 **OAuth authentication** for secure remote access
|
|
13
14
|
- ⚡ **Development builds** automatically published for beta testing
|
|
@@ -15,6 +16,7 @@ Basic Memory v0.13.0 is a **major release** that transforms Basic Memory into a
|
|
|
15
16
|
**Key v0.13.0 Accomplishments:**
|
|
16
17
|
- ✅ **Complete Project Management System** - Project switching and project-specific operations
|
|
17
18
|
- ✅ **Advanced Note Editing** - Incremental editing with append, prepend, find/replace, and section operations
|
|
19
|
+
- ✅ **View Notes as Artifacts in Claude Desktop/Web** - Use the view_note tool to view a note as an artifact
|
|
18
20
|
- ✅ **File Management System** - Full move operations with database consistency and rollback protection
|
|
19
21
|
- ✅ **Enhanced Search Capabilities** - Frontmatter tags now searchable, improved content discoverability
|
|
20
22
|
- ✅ **Unified Database Architecture** - Single app-level database for better performance and project management
|
|
@@ -133,10 +135,12 @@ Now searchable by: "coffee", "brewing", "equipment", or "Coffee Brewing Methods"
|
|
|
133
135
|
- **`switch_project(project_name)`** - Change active project context during conversations
|
|
134
136
|
- **`get_current_project()`** - Show currently active project with statistics
|
|
135
137
|
- **`set_default_project(project_name)`** - Update default project configuration
|
|
138
|
+
- **`sync_status()`** - Check file synchronization status and background operations
|
|
136
139
|
|
|
137
140
|
### New Note Operations Tools
|
|
138
141
|
- **`edit_note()`** - Incremental note editing (append, prepend, find/replace, section replace)
|
|
139
142
|
- **`move_note()`** - Move notes with database consistency and search reindexing
|
|
143
|
+
- **`view_note()`** - Display notes as formatted artifacts for better readability in Claude Desktop
|
|
140
144
|
|
|
141
145
|
### Enhanced Existing Tools
|
|
142
146
|
All existing tools now support:
|
|
@@ -77,22 +77,31 @@ read_note("specs/search-design") # By path
|
|
|
77
77
|
read_note("memory://specs/search") # By memory URL
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
+
**Viewing notes as formatted artifacts (Claude Desktop):**
|
|
81
|
+
```
|
|
82
|
+
view_note("Search Design") # Creates readable artifact
|
|
83
|
+
view_note("specs/search-design") # By permalink
|
|
84
|
+
view_note("memory://specs/search") # By memory URL
|
|
85
|
+
```
|
|
86
|
+
|
|
80
87
|
**Incremental editing** (v0.13.0):
|
|
81
88
|
```
|
|
82
89
|
edit_note(
|
|
83
|
-
identifier="Search Design",
|
|
90
|
+
identifier="Search Design", # Must be EXACT title/permalink (strict matching)
|
|
84
91
|
operation="append", # append, prepend, find_replace, replace_section
|
|
85
92
|
content="\n## New Section\nContent here..."
|
|
86
93
|
)
|
|
87
94
|
```
|
|
95
|
+
**⚠️ Important:** `edit_note` requires exact identifiers (no fuzzy matching). Use `search_notes()` first if uncertain.
|
|
88
96
|
|
|
89
97
|
**File organization** (v0.13.0):
|
|
90
98
|
```
|
|
91
99
|
move_note(
|
|
92
|
-
identifier="Old Note",
|
|
100
|
+
identifier="Old Note", # Must be EXACT title/permalink (strict matching)
|
|
93
101
|
destination="archive/old-note.md" # Folders created automatically
|
|
94
102
|
)
|
|
95
103
|
```
|
|
104
|
+
**⚠️ Important:** `move_note` requires exact identifiers (no fuzzy matching). Use `search_notes()` first if uncertain.
|
|
96
105
|
|
|
97
106
|
### Project Management (v0.13.0)
|
|
98
107
|
|
|
@@ -364,6 +373,20 @@ When creating relations:
|
|
|
364
373
|
- If information seems outdated, suggest `basic-memory sync`
|
|
365
374
|
- Use `recent_activity()` to check if content is current
|
|
366
375
|
|
|
376
|
+
**Strict Mode for Edit/Move Operations:**
|
|
377
|
+
- `edit_note()` and `move_note()` require **exact identifiers** (no fuzzy matching for safety)
|
|
378
|
+
- If identifier not found: use `search_notes()` first to find the exact title/permalink
|
|
379
|
+
- Error messages will guide you to find correct identifiers
|
|
380
|
+
- Example workflow:
|
|
381
|
+
```
|
|
382
|
+
# ❌ This might fail if identifier isn't exact
|
|
383
|
+
edit_note("Meeting Note", "append", "content")
|
|
384
|
+
|
|
385
|
+
# ✅ Safe approach: search first, then use exact result
|
|
386
|
+
results = search_notes("meeting")
|
|
387
|
+
edit_note("Meeting Notes 2024", "append", "content") # Use exact title from search
|
|
388
|
+
```
|
|
389
|
+
|
|
367
390
|
## Best Practices
|
|
368
391
|
|
|
369
392
|
1. **Proactively Record Context**
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Basic Memory - Modern Command Runner
|
|
2
|
+
|
|
3
|
+
# Install dependencies
|
|
4
|
+
install:
|
|
5
|
+
pip install -e ".[dev]"
|
|
6
|
+
|
|
7
|
+
# Run unit tests in parallel
|
|
8
|
+
test-unit:
|
|
9
|
+
uv run pytest -p pytest_mock -v -n auto
|
|
10
|
+
|
|
11
|
+
# Run integration tests in parallel
|
|
12
|
+
test-int:
|
|
13
|
+
uv run pytest -p pytest_mock -v --no-cov -n auto test-int
|
|
14
|
+
|
|
15
|
+
# Run all tests
|
|
16
|
+
test: test-unit test-int
|
|
17
|
+
|
|
18
|
+
# Lint and fix code
|
|
19
|
+
lint:
|
|
20
|
+
ruff check . --fix
|
|
21
|
+
|
|
22
|
+
# Type check code
|
|
23
|
+
type-check:
|
|
24
|
+
uv run pyright
|
|
25
|
+
|
|
26
|
+
# Clean build artifacts and cache files
|
|
27
|
+
clean:
|
|
28
|
+
find . -type f -name '*.pyc' -delete
|
|
29
|
+
find . -type d -name '__pycache__' -exec rm -r {} +
|
|
30
|
+
rm -rf installer/build/ installer/dist/ dist/
|
|
31
|
+
rm -f rw.*.dmg .coverage.*
|
|
32
|
+
|
|
33
|
+
# Format code with ruff
|
|
34
|
+
format:
|
|
35
|
+
uv run ruff format .
|
|
36
|
+
|
|
37
|
+
# Run MCP inspector tool
|
|
38
|
+
run-inspector:
|
|
39
|
+
npx @modelcontextprotocol/inspector
|
|
40
|
+
|
|
41
|
+
# Build macOS installer
|
|
42
|
+
installer-mac:
|
|
43
|
+
cd installer && chmod +x make_icons.sh && ./make_icons.sh
|
|
44
|
+
cd installer && uv run python setup.py bdist_mac
|
|
45
|
+
|
|
46
|
+
# Build Windows installer
|
|
47
|
+
installer-win:
|
|
48
|
+
cd installer && uv run python setup.py bdist_win32
|
|
49
|
+
|
|
50
|
+
# Update all dependencies to latest versions
|
|
51
|
+
update-deps:
|
|
52
|
+
uv sync --upgrade
|
|
53
|
+
|
|
54
|
+
# Run all code quality checks and tests
|
|
55
|
+
check: lint format type-check test
|
|
56
|
+
|
|
57
|
+
# Generate Alembic migration with descriptive message
|
|
58
|
+
migration message:
|
|
59
|
+
cd src/basic_memory/alembic && alembic revision --autogenerate -m "{{message}}"
|
|
60
|
+
|
|
61
|
+
# List all available recipes
|
|
62
|
+
default:
|
|
63
|
+
@just --list
|
|
@@ -28,12 +28,12 @@ dependencies = [
|
|
|
28
28
|
"watchfiles>=1.0.4",
|
|
29
29
|
"fastapi[standard]>=0.115.8",
|
|
30
30
|
"alembic>=1.14.1",
|
|
31
|
-
"qasync>=0.27.1",
|
|
32
31
|
"pillow>=11.1.0",
|
|
33
32
|
"pybars3>=0.9.7",
|
|
34
33
|
"fastmcp>=2.3.4",
|
|
35
34
|
"pyjwt>=2.10.1",
|
|
36
35
|
"python-dotenv>=1.1.0",
|
|
36
|
+
"pytest-aio>=1.9.0",
|
|
37
37
|
]
|
|
38
38
|
|
|
39
39
|
|
|
@@ -69,14 +69,8 @@ dev-dependencies = [
|
|
|
69
69
|
"pytest-cov>=4.1.0",
|
|
70
70
|
"pytest-mock>=3.12.0",
|
|
71
71
|
"pytest-asyncio>=0.24.0",
|
|
72
|
+
"pytest-xdist>=3.0.0",
|
|
72
73
|
"ruff>=0.1.6",
|
|
73
|
-
"pytest>=8.3.4",
|
|
74
|
-
"pytest-cov>=4.1.0",
|
|
75
|
-
"pytest-mock>=3.12.0",
|
|
76
|
-
"pytest-asyncio>=0.24.0",
|
|
77
|
-
"ruff>=0.1.6",
|
|
78
|
-
"cx-freeze>=7.2.10",
|
|
79
|
-
"pyqt6>=6.8.1",
|
|
80
74
|
]
|
|
81
75
|
|
|
82
76
|
[tool.hatch.version]
|
|
@@ -124,6 +118,8 @@ omit = [
|
|
|
124
118
|
"*/background_sync.py", # Background processes
|
|
125
119
|
"*/cli/main.py", # CLI entry point
|
|
126
120
|
"*/mcp/tools/project_management.py", # Covered by integration tests
|
|
121
|
+
"*/mcp/tools/sync_status.py", # Covered by integration tests
|
|
122
|
+
"*/services/migration_service.py", # Complex migration scenarios
|
|
127
123
|
]
|
|
128
124
|
|
|
129
125
|
[tool.logfire]
|
{basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/routers/knowledge_router.py
RENAMED
|
@@ -14,6 +14,7 @@ from basic_memory.deps import (
|
|
|
14
14
|
FileServiceDep,
|
|
15
15
|
ProjectConfigDep,
|
|
16
16
|
AppConfigDep,
|
|
17
|
+
SyncServiceDep,
|
|
17
18
|
)
|
|
18
19
|
from basic_memory.schemas import (
|
|
19
20
|
EntityListResponse,
|
|
@@ -63,6 +64,7 @@ async def create_or_update_entity(
|
|
|
63
64
|
entity_service: EntityServiceDep,
|
|
64
65
|
search_service: SearchServiceDep,
|
|
65
66
|
file_service: FileServiceDep,
|
|
67
|
+
sync_service: SyncServiceDep,
|
|
66
68
|
) -> EntityResponse:
|
|
67
69
|
"""Create or update an entity. If entity exists, it will be updated, otherwise created."""
|
|
68
70
|
logger.info(
|
|
@@ -85,6 +87,17 @@ async def create_or_update_entity(
|
|
|
85
87
|
|
|
86
88
|
# reindex
|
|
87
89
|
await search_service.index_entity(entity, background_tasks=background_tasks)
|
|
90
|
+
|
|
91
|
+
# Attempt immediate relation resolution when creating new entities
|
|
92
|
+
# This helps resolve forward references when related entities are created in the same session
|
|
93
|
+
if created:
|
|
94
|
+
try:
|
|
95
|
+
await sync_service.resolve_relations()
|
|
96
|
+
logger.debug(f"Resolved relations after creating entity: {entity.permalink}")
|
|
97
|
+
except Exception as e: # pragma: no cover
|
|
98
|
+
# Don't fail the entire request if relation resolution fails
|
|
99
|
+
logger.warning(f"Failed to resolve relations after entity creation: {e}")
|
|
100
|
+
|
|
88
101
|
result = EntityResponse.model_validate(entity)
|
|
89
102
|
|
|
90
103
|
logger.info(
|
{basic_memory-0.13.0b4 → basic_memory-0.13.0b6}/src/basic_memory/api/routers/memory_router.py
RENAMED
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
from typing import Annotated, Optional
|
|
4
4
|
|
|
5
|
-
from dateparser import parse
|
|
6
5
|
from fastapi import APIRouter, Query
|
|
7
6
|
from loguru import logger
|
|
8
7
|
|
|
9
8
|
from basic_memory.deps import ContextServiceDep, EntityRepositoryDep
|
|
10
|
-
from basic_memory.schemas.base import TimeFrame
|
|
9
|
+
from basic_memory.schemas.base import TimeFrame, parse_timeframe
|
|
11
10
|
from basic_memory.schemas.memory import (
|
|
12
11
|
GraphContext,
|
|
13
12
|
normalize_memory_url,
|
|
@@ -40,7 +39,7 @@ async def recent(
|
|
|
40
39
|
f"Getting recent context: `{types}` depth: `{depth}` timeframe: `{timeframe}` page: `{page}` page_size: `{page_size}` max_related: `{max_related}`"
|
|
41
40
|
)
|
|
42
41
|
# Parse timeframe
|
|
43
|
-
since =
|
|
42
|
+
since = parse_timeframe(timeframe)
|
|
44
43
|
limit = page_size
|
|
45
44
|
offset = (page - 1) * page_size
|
|
46
45
|
|
|
@@ -78,7 +77,7 @@ async def get_memory_context(
|
|
|
78
77
|
memory_url = normalize_memory_url(uri)
|
|
79
78
|
|
|
80
79
|
# Parse timeframe
|
|
81
|
-
since =
|
|
80
|
+
since = parse_timeframe(timeframe) if timeframe else None
|
|
82
81
|
limit = page_size
|
|
83
82
|
offset = (page - 1) * page_size
|
|
84
83
|
|