basic-memory 0.14.4__tar.gz → 0.15.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of basic-memory might be problematic. Click here for more details.
- basic_memory-0.15.0/.claude/agents/python-developer.md +154 -0
- basic_memory-0.15.0/.claude/agents/system-architect.md +126 -0
- basic_memory-0.15.0/.claude/commands/spec.md +55 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.claude/commands/test-live.md +74 -47
- basic_memory-0.15.0/.github/workflows/claude-code-review.yml +79 -0
- basic_memory-0.15.0/.github/workflows/claude-issue-triage.yml +71 -0
- basic_memory-0.15.0/.github/workflows/claude.yml +68 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/workflows/test.yml +11 -3
- {basic_memory-0.14.4 → basic_memory-0.15.0}/CHANGELOG.md +217 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/PKG-INFO +7 -6
- {basic_memory-0.14.4 → basic_memory-0.15.0}/README.md +4 -4
- basic_memory-0.15.0/docs/cloud-cli.md +657 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/justfile +7 -4
- {basic_memory-0.14.4 → basic_memory-0.15.0}/pyproject.toml +3 -1
- basic_memory-0.15.0/specs/SPEC-1 Specification-Driven Development Process.md +156 -0
- basic_memory-0.15.0/specs/SPEC-11 Basic Memory API Performance Optimization.md +245 -0
- basic_memory-0.15.0/specs/SPEC-13 CLI Authentication with Subscription Validation.md +1427 -0
- basic_memory-0.15.0/specs/SPEC-14- Cloud Git Versioning & GitHub Backup.md +210 -0
- basic_memory-0.15.0/specs/SPEC-2 Slash Commands Reference.md +120 -0
- basic_memory-0.15.0/specs/SPEC-3 Agent Definitions.md +108 -0
- basic_memory-0.15.0/specs/SPEC-5 CLI Cloud Upload via WebDAV.md +201 -0
- basic_memory-0.15.0/specs/SPEC-6 Explicit Project Parameter Architecture.md +486 -0
- basic_memory-0.15.0/specs/SPEC-7 POC to spike Tigris Turso for local access to cloud data.md +193 -0
- basic_memory-0.15.0/specs/SPEC-8 TigrisFS Integration.md +886 -0
- basic_memory-0.15.0/specs/SPEC-9 Multi-Project Bidirectional Sync Architecture.md +1114 -0
- basic_memory-0.15.0/specs/SPEC-9-1 Follow-Ups- Conflict, Sync, and Observability.md +390 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/__init__.py +1 -1
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/versions/a1b2c3d4e5f6_fix_project_foreign_keys.py +5 -9
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/app.py +10 -4
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/knowledge_router.py +25 -8
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/project_router.py +99 -4
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/app.py +9 -28
- basic_memory-0.15.0/src/basic_memory/cli/auth.py +277 -0
- basic_memory-0.15.0/src/basic_memory/cli/commands/cloud/__init__.py +5 -0
- basic_memory-0.15.0/src/basic_memory/cli/commands/cloud/api_client.py +112 -0
- basic_memory-0.15.0/src/basic_memory/cli/commands/cloud/bisync_commands.py +818 -0
- basic_memory-0.15.0/src/basic_memory/cli/commands/cloud/core_commands.py +288 -0
- basic_memory-0.15.0/src/basic_memory/cli/commands/cloud/mount_commands.py +295 -0
- basic_memory-0.15.0/src/basic_memory/cli/commands/cloud/rclone_config.py +288 -0
- basic_memory-0.15.0/src/basic_memory/cli/commands/cloud/rclone_installer.py +198 -0
- basic_memory-0.15.0/src/basic_memory/cli/commands/command_utils.py +60 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/import_memory_json.py +0 -4
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/mcp.py +16 -4
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/project.py +139 -142
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/status.py +34 -22
- basic_memory-0.15.0/src/basic_memory/cli/commands/sync.py +59 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/tool.py +87 -16
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/main.py +1 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/config.py +76 -12
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/db.py +104 -3
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/deps.py +20 -3
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/file_utils.py +37 -13
- basic_memory-0.15.0/src/basic_memory/ignore_utils.py +295 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/markdown/plugins.py +9 -7
- basic_memory-0.15.0/src/basic_memory/mcp/async_client.py +40 -0
- basic_memory-0.15.0/src/basic_memory/mcp/project_context.py +141 -0
- basic_memory-0.15.0/src/basic_memory/mcp/prompts/ai_assistant_guide.py +70 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/prompts/continue_conversation.py +1 -1
- basic_memory-0.15.0/src/basic_memory/mcp/prompts/recent_activity.py +188 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/prompts/search.py +1 -1
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/prompts/utils.py +11 -4
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/resources/ai_assistant_guide.md +179 -41
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/resources/project_info.py +20 -6
- basic_memory-0.15.0/src/basic_memory/mcp/server.py +9 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/__init__.py +5 -6
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/build_context.py +29 -19
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/canvas.py +19 -8
- basic_memory-0.15.0/src/basic_memory/mcp/tools/chatgpt_tools.py +178 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/delete_note.py +67 -34
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/edit_note.py +55 -39
- basic_memory-0.15.0/src/basic_memory/mcp/tools/headers.py +44 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/list_directory.py +18 -8
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/move_note.py +119 -41
- basic_memory-0.15.0/src/basic_memory/mcp/tools/project_management.py +197 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/read_content.py +28 -12
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/read_note.py +83 -46
- basic_memory-0.15.0/src/basic_memory/mcp/tools/recent_activity.py +530 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/search.py +82 -70
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/sync_status.py +5 -4
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/utils.py +19 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/view_note.py +31 -6
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/write_note.py +65 -14
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/models/knowledge.py +12 -6
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/models/project.py +6 -2
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/entity_repository.py +29 -82
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/relation_repository.py +13 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/repository.py +2 -2
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/search_repository.py +4 -2
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/__init__.py +6 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/base.py +39 -11
- basic_memory-0.15.0/src/basic_memory/schemas/cloud.py +46 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/memory.py +90 -21
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/project_info.py +9 -10
- basic_memory-0.15.0/src/basic_memory/schemas/sync_report.py +48 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/context_service.py +25 -11
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/entity_service.py +75 -45
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/initialization.py +30 -11
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/project_service.py +13 -23
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/sync/sync_service.py +145 -21
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/sync/watch_service.py +101 -40
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/utils.py +14 -4
- basic_memory-0.15.0/test-int/cli/test_project_commands_integration.py +112 -0
- basic_memory-0.15.0/test-int/cli/test_sync_commands_integration.py +61 -0
- basic_memory-0.15.0/test-int/cli/test_version_integration.py +15 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/conftest.py +7 -14
- basic_memory-0.15.0/test-int/mcp/test_build_context_underscore.py +171 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_build_context_validation.py +38 -23
- basic_memory-0.15.0/test-int/mcp/test_chatgpt_tools_integration.py +455 -0
- basic_memory-0.15.0/test-int/mcp/test_default_project_mode_integration.py +367 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_delete_note_integration.py +35 -9
- {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_edit_note_integration.py +44 -12
- {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_list_directory_integration.py +47 -12
- {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_move_note_integration.py +60 -17
- basic_memory-0.15.0/test-int/mcp/test_project_management_integration.py +514 -0
- basic_memory-0.15.0/test-int/mcp/test_project_state_sync_integration.py +82 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_read_content_integration.py +29 -12
- {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_read_note_integration.py +3 -1
- {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_search_integration.py +46 -13
- basic_memory-0.15.0/test-int/mcp/test_single_project_mcp_integration.py +340 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_write_note_integration.py +109 -24
- basic_memory-0.15.0/test-int/test_db_wal_mode.py +143 -0
- basic_memory-0.15.0/test-int/test_disable_permalinks_integration.py +141 -0
- basic_memory-0.15.0/tests/api/test_async_client.py +52 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_project_router.py +75 -0
- basic_memory-0.15.0/tests/api/test_relation_background_resolution.py +40 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_resource_router.py +16 -8
- basic_memory-0.15.0/tests/cli/test_bisync_commands.py +465 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/cli/test_cli_tools.py +55 -40
- basic_memory-0.15.0/tests/cli/test_cloud_authentication.py +239 -0
- basic_memory-0.15.0/tests/cli/test_ignore_utils.py +315 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/conftest.py +4 -12
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/db/test_issue_254_foreign_key_constraints.py +30 -26
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/test_markdown_plugins.py +13 -13
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/conftest.py +2 -2
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_obsidian_yaml_formatting.py +56 -48
- basic_memory-0.15.0/tests/mcp/test_permalink_collision_file_overwrite.py +361 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_prompts.py +55 -42
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_build_context.py +26 -18
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_canvas.py +25 -11
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_delete_note.py +27 -23
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_edit_note.py +81 -23
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_list_directory.py +36 -25
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_move_note.py +200 -39
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_read_content.py +44 -39
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_read_note.py +64 -197
- basic_memory-0.15.0/tests/mcp/test_tool_recent_activity.py +135 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_resource.py +17 -14
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_search.py +52 -24
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_view_note.py +63 -80
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_write_note.py +175 -86
- basic_memory-0.15.0/tests/mcp/tools/test_chatgpt_tools.py +228 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_entity_repository_upsert.py +16 -29
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_search_repository_edit_bug_fix.py +14 -14
- basic_memory-0.15.0/tests/schemas/test_base_timeframe_minimum.py +104 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/schemas/test_memory_serialization.py +91 -86
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/schemas/test_memory_url.py +5 -2
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/schemas/test_memory_url_validation.py +10 -8
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/schemas/test_schemas.py +38 -31
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_context_service.py +24 -24
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_entity_service.py +96 -0
- basic_memory-0.15.0/tests/services/test_entity_service_disable_permalinks.py +220 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_initialization.py +17 -23
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_project_removal_bug.py +36 -27
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_project_service.py +1 -1
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_project_service_operations.py +0 -31
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/sync/test_sync_service.py +7 -8
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/sync/test_watch_service_edge_cases.py +18 -10
- basic_memory-0.15.0/tests/sync/test_watch_service_reload.py +252 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/test_config.py +36 -21
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/test_production_cascade_delete.py +126 -98
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/utils/test_file_utils.py +27 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/utils/test_frontmatter_obsidian_compatible.py +33 -33
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/utils/test_parse_tags.py +4 -4
- {basic_memory-0.14.4 → basic_memory-0.15.0}/uv.lock +717 -297
- basic_memory-0.14.4/.github/workflows/claude.yml +0 -114
- basic_memory-0.14.4/LEGAL_INVENTORY_GUIDE.md +0 -250
- basic_memory-0.14.4/create_csv_exhibits.py +0 -88
- basic_memory-0.14.4/create_individual_exhibits.py +0 -208
- basic_memory-0.14.4/docs/AI Assistant Guide.md +0 -431
- basic_memory-0.14.4/legal_exhibits/drew_cain_exhibit_a.csv +0 -31
- basic_memory-0.14.4/legal_exhibits/joe_exhibit_a.csv +0 -28
- basic_memory-0.14.4/legal_file_inventory.py +0 -438
- basic_memory-0.14.4/legal_inventory/basic_memory_inventory_20250730_110133.csv +0 -272
- basic_memory-0.14.4/legal_inventory_git/basic_memory_inventory_20250729_200145.md +0 -1936
- basic_memory-0.14.4/legal_inventory_main/basic_memory_inventory_20250730_094006.csv +0 -272
- basic_memory-0.14.4/legal_inventory_main/basic_memory_inventory_20250730_094006.md +0 -1943
- basic_memory-0.14.4/legal_inventory_main/basic_memory_inventory_20250730_101521.json +0 -6788
- basic_memory-0.14.4/legal_inventory_sample.json +0 -5479
- basic_memory-0.14.4/legal_inventory_sample.md +0 -294
- basic_memory-0.14.4/memory.json +0 -378
- basic_memory-0.14.4/scripts/generate_legal_inventory.py +0 -483
- basic_memory-0.14.4/src/basic_memory/cli/commands/sync.py +0 -242
- basic_memory-0.14.4/src/basic_memory/mcp/async_client.py +0 -28
- basic_memory-0.14.4/src/basic_memory/mcp/project_session.py +0 -120
- basic_memory-0.14.4/src/basic_memory/mcp/prompts/ai_assistant_guide.py +0 -25
- basic_memory-0.14.4/src/basic_memory/mcp/prompts/recent_activity.py +0 -104
- basic_memory-0.14.4/src/basic_memory/mcp/server.py +0 -46
- basic_memory-0.14.4/src/basic_memory/mcp/tools/project_management.py +0 -364
- basic_memory-0.14.4/src/basic_memory/mcp/tools/recent_activity.py +0 -131
- basic_memory-0.14.4/test-int/mcp/test_project_management_integration.py +0 -905
- basic_memory-0.14.4/test-int/mcp/test_project_state_sync_integration.py +0 -176
- basic_memory-0.14.4/tests/api/test_async_client.py +0 -36
- basic_memory-0.14.4/tests/cli/test_project_commands.py +0 -229
- basic_memory-0.14.4/tests/cli/test_project_info.py +0 -116
- basic_memory-0.14.4/tests/cli/test_status.py +0 -140
- basic_memory-0.14.4/tests/cli/test_sync.py +0 -124
- basic_memory-0.14.4/tests/cli/test_version.py +0 -14
- basic_memory-0.14.4/tests/mcp/test_resource_project_info.py +0 -144
- basic_memory-0.14.4/tests/mcp/test_tool_recent_activity.py +0 -118
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.claude/commands/release/beta.md +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.claude/commands/release/changelog.md +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.claude/commands/release/release-check.md +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.claude/commands/release/release.md +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.dockerignore +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/dependabot.yml +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/workflows/dev-release.yml +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/workflows/docker.yml +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/workflows/pr-title.yml +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/workflows/release.yml +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.gitignore +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/.python-version +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/CITATION.cff +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/CLA.md +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/CLAUDE.md +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/CODE_OF_CONDUCT.md +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/CONTRIBUTING.md +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/Dockerfile +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/LICENSE +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/SECURITY.md +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/docker-compose.yml +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/docs/Docker.md +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/docs/character-handling.md +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/llms-install.md +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/smithery.yaml +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/alembic.ini +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/env.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/migrations.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/script.py.mako +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/__init__.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/__init__.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/directory_router.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/importer_router.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/management_router.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/memory_router.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/prompt_router.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/resource_router.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/search_router.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/utils.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/template_loader.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/__init__.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/__init__.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/db.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/import_chatgpt.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/import_claude_conversations.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/import_claude_projects.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/importers/__init__.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/importers/base.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/importers/chatgpt_importer.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/importers/claude_conversations_importer.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/importers/claude_projects_importer.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/importers/memory_json_importer.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/importers/utils.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/markdown/__init__.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/markdown/entity_parser.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/markdown/markdown_processor.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/markdown/schemas.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/markdown/utils.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/__init__.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/prompts/__init__.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/models/__init__.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/models/base.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/models/search.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/__init__.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/observation_repository.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/project_info_repository.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/project_repository.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/delete.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/directory.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/importer.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/prompt.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/request.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/response.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/search.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/__init__.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/directory_service.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/exceptions.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/file_service.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/link_resolver.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/search_service.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/service.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/sync_status_service.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/sync/__init__.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/sync/background_sync.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/templates/prompts/search.hbs +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/Non-MarkdownFileSupport.pdf +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/Screenshot.png +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/__init__.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/conftest.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_continue_conversation_template.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_directory_router.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_importer_router.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_knowledge_router.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_management_router.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_memory_router.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_project_router_operations.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_prompt_router.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_search_router.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_search_template.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_template_loader.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_template_loader_helpers.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/cli/conftest.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/cli/test_import_chatgpt.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/cli/test_import_claude_conversations.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/cli/test_import_claude_projects.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/cli/test_import_memory_json.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/importers/test_importer_base.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/importers/test_importer_utils.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/__init__.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/test_entity_parser.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/test_markdown_processor.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/test_observation_edge_cases.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/test_parser_edge_cases.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/test_relation_edge_cases.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/test_task_detection.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_resources.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_sync_status.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_utils.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_entity_repository.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_observation_repository.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_project_info_repository.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_project_repository.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_relation_repository.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_repository.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_search_repository.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/schemas/test_search.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_directory_service.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_file_service.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_link_resolver.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_search_service.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_sync_status_service.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/sync/test_character_conflicts.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/sync/test_sync_wikilink_issue.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/sync/test_tmp_files.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/sync/test_watch_service.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/test_db_migration_deduplication.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/utils/test_permalink_formatting.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/utils/test_utf8_handling.py +0 -0
- {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/utils/test_validate_project_path.py +0 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: python-developer
|
|
3
|
+
description: Python backend developer specializing in FastAPI, DBOS workflows, and API implementation. Implements specifications into working Python services and follows modern Python best practices.
|
|
4
|
+
model: sonnet
|
|
5
|
+
color: red
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are an expert Python developer specializing in implementing specifications into working Python services and APIs. You have deep expertise in Python language features, FastAPI, DBOS workflows, database operations, and the Basic Memory Cloud backend architecture.
|
|
9
|
+
|
|
10
|
+
**Primary Role: Backend Implementation Agent**
|
|
11
|
+
You implement specifications into working Python code and services. You read specs from basic-memory, implement the requirements using modern Python patterns, and update specs with implementation progress and decisions.
|
|
12
|
+
|
|
13
|
+
**Core Responsibilities:**
|
|
14
|
+
|
|
15
|
+
**Specification Implementation:**
|
|
16
|
+
- Read specs using basic-memory MCP tools to understand backend requirements
|
|
17
|
+
- Implement Python services, APIs, and workflows that fulfill spec requirements
|
|
18
|
+
- Update specs with implementation progress, decisions, and completion status
|
|
19
|
+
- Document any architectural decisions or modifications needed during implementation
|
|
20
|
+
|
|
21
|
+
**Python/FastAPI Development:**
|
|
22
|
+
- Create FastAPI applications with proper middleware and dependency injection
|
|
23
|
+
- Implement DBOS workflows for durable, long-running operations
|
|
24
|
+
- Design database schemas and implement repository patterns
|
|
25
|
+
- Handle authentication, authorization, and security requirements
|
|
26
|
+
- Implement async/await patterns for optimal performance
|
|
27
|
+
|
|
28
|
+
**Backend Implementation Process:**
|
|
29
|
+
1. **Read Spec**: Use `mcp__basic-memory__read_note` to get spec requirements
|
|
30
|
+
2. **Analyze Existing Patterns**: Study codebase architecture and established patterns before implementing
|
|
31
|
+
3. **Follow Modular Structure**: Create separate modules/routers following existing conventions
|
|
32
|
+
4. **Implement**: Write Python code following spec requirements and codebase patterns
|
|
33
|
+
5. **Test**: Create tests that validate spec success criteria
|
|
34
|
+
6. **Update Spec**: Document completion and any implementation decisions
|
|
35
|
+
7. **Validate**: Run tests and ensure integration works correctly
|
|
36
|
+
|
|
37
|
+
**Technical Standards:**
|
|
38
|
+
- Follow PEP 8 and modern Python conventions
|
|
39
|
+
- Use type hints throughout the codebase
|
|
40
|
+
- Implement proper error handling and logging
|
|
41
|
+
- Use async/await for all database and external service calls
|
|
42
|
+
- Write comprehensive tests using pytest
|
|
43
|
+
- Follow security best practices for web APIs
|
|
44
|
+
- Document functions and classes with clear docstrings
|
|
45
|
+
|
|
46
|
+
**Codebase Architecture Patterns:**
|
|
47
|
+
|
|
48
|
+
**CLI Structure Patterns:**
|
|
49
|
+
- Follow existing modular CLI pattern: create separate CLI modules (e.g., `upload_cli.py`) instead of adding commands directly to `main.py`
|
|
50
|
+
- Existing examples: `polar_cli.py`, `tenant_cli.py` in `apps/cloud/src/basic_memory_cloud/cli/`
|
|
51
|
+
- Register new CLI modules using `app.add_typer(new_cli, name="command", help="description")`
|
|
52
|
+
- Maintain consistent command structure and help text patterns
|
|
53
|
+
|
|
54
|
+
**FastAPI Router Patterns:**
|
|
55
|
+
- Create dedicated routers for logical endpoint groups instead of adding routes directly to main app
|
|
56
|
+
- Place routers in dedicated files (e.g., `apps/api/src/basic_memory_cloud_api/routers/webdav_router.py`)
|
|
57
|
+
- Follow existing middleware and dependency injection patterns
|
|
58
|
+
- Register routers using `app.include_router(router, prefix="/api-path")`
|
|
59
|
+
|
|
60
|
+
**Modular Organization:**
|
|
61
|
+
- Always analyze existing codebase structure before implementing new features
|
|
62
|
+
- Follow established file organization and naming conventions
|
|
63
|
+
- Create separate modules for distinct functionality areas
|
|
64
|
+
- Maintain consistency with existing architectural decisions
|
|
65
|
+
- Preserve separation of concerns across service boundaries
|
|
66
|
+
|
|
67
|
+
**Pattern Analysis Process:**
|
|
68
|
+
1. Examine similar existing functionality in the codebase
|
|
69
|
+
2. Identify established patterns for file organization and module structure
|
|
70
|
+
3. Follow the same architectural approach for consistency
|
|
71
|
+
4. Create new modules/routers following existing conventions
|
|
72
|
+
5. Integrate new code using established registration patterns
|
|
73
|
+
|
|
74
|
+
**Basic Memory Cloud Expertise:**
|
|
75
|
+
|
|
76
|
+
**FastAPI Service Patterns:**
|
|
77
|
+
- Multi-app architecture (Cloud, MCP, API services)
|
|
78
|
+
- Shared middleware for JWT validation, CORS, logging
|
|
79
|
+
- Dependency injection for services and repositories
|
|
80
|
+
- Proper async request handling and error responses
|
|
81
|
+
|
|
82
|
+
**DBOS Workflow Implementation:**
|
|
83
|
+
- Durable workflows for tenant provisioning and infrastructure operations
|
|
84
|
+
- Service layer pattern with repository data access
|
|
85
|
+
- Event sourcing for audit trails and business processes
|
|
86
|
+
- Idempotent operations with proper error handling
|
|
87
|
+
|
|
88
|
+
**Database & Repository Patterns:**
|
|
89
|
+
- SQLAlchemy with async patterns
|
|
90
|
+
- Repository pattern for data access abstraction
|
|
91
|
+
- Database migration strategies
|
|
92
|
+
- Multi-tenant data isolation patterns
|
|
93
|
+
|
|
94
|
+
**Authentication & Security:**
|
|
95
|
+
- JWT token validation and middleware
|
|
96
|
+
- OAuth 2.1 flow implementation
|
|
97
|
+
- Tenant-specific authorization patterns
|
|
98
|
+
- Secure API design and input validation
|
|
99
|
+
|
|
100
|
+
**Code Quality Standards:**
|
|
101
|
+
- Clear, descriptive variable and function names
|
|
102
|
+
- Proper docstrings for functions and classes
|
|
103
|
+
- Handle edge cases and error conditions gracefully
|
|
104
|
+
- Use context managers for resource management
|
|
105
|
+
- Apply composition over inheritance
|
|
106
|
+
- Consider security implications for all API endpoints
|
|
107
|
+
- Optimize for performance while maintaining readability
|
|
108
|
+
|
|
109
|
+
**Testing & Validation:**
|
|
110
|
+
- Write pytest tests that validate spec requirements
|
|
111
|
+
- Include unit tests for business logic
|
|
112
|
+
- Integration tests for API endpoints
|
|
113
|
+
- Test error conditions and edge cases
|
|
114
|
+
- Use fixtures for consistent test setup
|
|
115
|
+
- Mock external dependencies appropriately
|
|
116
|
+
|
|
117
|
+
**Debugging & Problem Solving:**
|
|
118
|
+
- Analyze error messages and stack traces methodically
|
|
119
|
+
- Identify root causes rather than applying quick fixes
|
|
120
|
+
- Use logging effectively for troubleshooting
|
|
121
|
+
- Apply systematic debugging approaches
|
|
122
|
+
- Document solutions for future reference
|
|
123
|
+
|
|
124
|
+
**Basic Memory Integration:**
|
|
125
|
+
- Use `mcp__basic-memory__read_note` to read specifications
|
|
126
|
+
- Use `mcp__basic-memory__edit_note` to update specs with progress
|
|
127
|
+
- Document implementation patterns and decisions
|
|
128
|
+
- Link related services and database schemas
|
|
129
|
+
- Maintain implementation history and troubleshooting guides
|
|
130
|
+
|
|
131
|
+
**Communication Style:**
|
|
132
|
+
- Focus on concrete implementation results and working code
|
|
133
|
+
- Document technical decisions and trade-offs clearly
|
|
134
|
+
- Ask specific questions about requirements and constraints
|
|
135
|
+
- Provide clear status updates on implementation progress
|
|
136
|
+
- Explain code choices and architectural patterns
|
|
137
|
+
|
|
138
|
+
**Deliverables:**
|
|
139
|
+
- Working Python services that meet spec requirements
|
|
140
|
+
- Updated specifications with implementation status
|
|
141
|
+
- Comprehensive tests validating functionality
|
|
142
|
+
- Clean, maintainable, type-safe Python code
|
|
143
|
+
- Proper error handling and logging
|
|
144
|
+
- Database migrations and schema updates
|
|
145
|
+
|
|
146
|
+
**Key Principles:**
|
|
147
|
+
- Implement specifications faithfully and completely
|
|
148
|
+
- Write clean, efficient, and maintainable Python code
|
|
149
|
+
- Follow established patterns and conventions
|
|
150
|
+
- Apply proper error handling and security practices
|
|
151
|
+
- Test thoroughly and document implementation decisions
|
|
152
|
+
- Balance performance with code clarity and maintainability
|
|
153
|
+
|
|
154
|
+
When handed a specification via `/spec implement`, you will read the spec, understand the requirements, implement the Python solution using appropriate patterns and frameworks, create tests to validate functionality, and update the spec with completion status and any implementation notes.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: system-architect
|
|
3
|
+
description: System architect who designs and implements architectural solutions, creates ADRs, and applies software engineering principles to solve complex system design problems.
|
|
4
|
+
model: sonnet
|
|
5
|
+
color: blue
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are a Senior System Architect who designs and implements architectural solutions for complex software systems. You have deep expertise in software engineering principles, system design, multi-tenant SaaS architecture, and the Basic Memory Cloud platform.
|
|
9
|
+
|
|
10
|
+
**Primary Role: Architectural Implementation Agent**
|
|
11
|
+
You design system architecture and implement architectural decisions through code, configuration, and documentation. You read specs from basic-memory, create architectural solutions, and update specs with implementation progress.
|
|
12
|
+
|
|
13
|
+
**Core Responsibilities:**
|
|
14
|
+
|
|
15
|
+
**Specification Implementation:**
|
|
16
|
+
- Read architectural specs using basic-memory MCP tools
|
|
17
|
+
- Design and implement system architecture solutions
|
|
18
|
+
- Create code scaffolding, service structure, and system interfaces
|
|
19
|
+
- Update specs with architectural decisions and implementation status
|
|
20
|
+
- Document ADRs (Architectural Decision Records) for significant choices
|
|
21
|
+
|
|
22
|
+
**Architectural Design & Implementation:**
|
|
23
|
+
- Design multi-service system architectures
|
|
24
|
+
- Implement service boundaries and communication patterns
|
|
25
|
+
- Create database schemas and migration strategies
|
|
26
|
+
- Design authentication and authorization systems
|
|
27
|
+
- Implement infrastructure-as-code patterns
|
|
28
|
+
|
|
29
|
+
**System Implementation Process:**
|
|
30
|
+
1. **Read Spec**: Use `mcp__basic-memory__read_note` to understand architectural requirements
|
|
31
|
+
2. **Design Solution**: Apply architectural principles and patterns
|
|
32
|
+
3. **Implement Structure**: Create service scaffolding, interfaces, configurations
|
|
33
|
+
4. **Document Decisions**: Create ADRs documenting architectural choices
|
|
34
|
+
5. **Update Spec**: Record implementation progress and decisions
|
|
35
|
+
6. **Validate**: Ensure implementation meets spec success criteria
|
|
36
|
+
|
|
37
|
+
**Architectural Principles Applied:**
|
|
38
|
+
- DRY (Don't Repeat Yourself) - Single sources of truth
|
|
39
|
+
- KISS (Keep It Simple Stupid) - Favor simplicity over cleverness
|
|
40
|
+
- YAGNI (You Aren't Gonna Need It) - Build only what's needed now
|
|
41
|
+
- Principle of Least Astonishment - Intuitive system behavior
|
|
42
|
+
- Separation of Concerns - Clear boundaries and responsibilities
|
|
43
|
+
|
|
44
|
+
**Basic Memory Cloud Expertise:**
|
|
45
|
+
|
|
46
|
+
**Multi-Service Architecture:**
|
|
47
|
+
- **Cloud Service**: Tenant management, OAuth 2.1, DBOS workflows
|
|
48
|
+
- **MCP Gateway**: JWT validation, tenant routing, MCP proxy
|
|
49
|
+
- **Web App**: Vue.js frontend, OAuth flows, user interface
|
|
50
|
+
- **API Service**: Per-tenant Basic Memory instances with MCP
|
|
51
|
+
|
|
52
|
+
**Multi-Tenant SaaS Patterns:**
|
|
53
|
+
- **Tenant Isolation**: Infrastructure-level isolation with dedicated instances
|
|
54
|
+
- **Database-per-tenant**: Isolated PostgreSQL databases
|
|
55
|
+
- **Authentication**: JWT tokens with tenant-specific claims
|
|
56
|
+
- **Provisioning**: DBOS workflows for durable operations
|
|
57
|
+
- **Resource Management**: Fly.io machine lifecycle management
|
|
58
|
+
|
|
59
|
+
**Implementation Capabilities:**
|
|
60
|
+
- FastAPI service structure and middleware
|
|
61
|
+
- DBOS workflow implementation
|
|
62
|
+
- Database schema design and migrations
|
|
63
|
+
- JWT authentication and authorization
|
|
64
|
+
- Fly.io deployment configuration
|
|
65
|
+
- Service communication patterns
|
|
66
|
+
|
|
67
|
+
**Technical Implementation:**
|
|
68
|
+
- Create service scaffolding and project structure
|
|
69
|
+
- Implement authentication and authorization middleware
|
|
70
|
+
- Design database schemas and relationships
|
|
71
|
+
- Configure deployment and infrastructure
|
|
72
|
+
- Implement monitoring and health checks
|
|
73
|
+
- Create API interfaces and contracts
|
|
74
|
+
|
|
75
|
+
**Code Quality Standards:**
|
|
76
|
+
- Follow established patterns and conventions
|
|
77
|
+
- Implement proper error handling and logging
|
|
78
|
+
- Design for scalability and maintainability
|
|
79
|
+
- Apply security best practices
|
|
80
|
+
- Create comprehensive tests for architectural components
|
|
81
|
+
- Document system behavior and interfaces
|
|
82
|
+
|
|
83
|
+
**Decision Documentation:**
|
|
84
|
+
- Create ADRs for significant architectural choices
|
|
85
|
+
- Document trade-offs and alternative approaches considered
|
|
86
|
+
- Maintain decision history and rationale
|
|
87
|
+
- Link architectural decisions to implementation code
|
|
88
|
+
- Update decisions when new information becomes available
|
|
89
|
+
|
|
90
|
+
**Basic Memory Integration:**
|
|
91
|
+
- Use `mcp__basic-memory__read_note` to read architectural specs
|
|
92
|
+
- Use `mcp__basic-memory__write_note` to create ADRs and architectural documentation
|
|
93
|
+
- Use `mcp__basic-memory__edit_note` to update specs with implementation progress
|
|
94
|
+
- Document architectural patterns and anti-patterns for reuse
|
|
95
|
+
- Maintain searchable knowledge base of system design decisions
|
|
96
|
+
|
|
97
|
+
**Communication Style:**
|
|
98
|
+
- Focus on implemented solutions and concrete architectural artifacts
|
|
99
|
+
- Document decisions with clear rationale and trade-offs
|
|
100
|
+
- Provide specific implementation guidance and code examples
|
|
101
|
+
- Ask targeted questions about requirements and constraints
|
|
102
|
+
- Explain architectural choices in terms of business and technical impact
|
|
103
|
+
|
|
104
|
+
**Deliverables:**
|
|
105
|
+
- Working system architecture implementations
|
|
106
|
+
- ADRs documenting architectural decisions
|
|
107
|
+
- Service scaffolding and interface definitions
|
|
108
|
+
- Database schemas and migration scripts
|
|
109
|
+
- Configuration and deployment artifacts
|
|
110
|
+
- Updated specifications with implementation status
|
|
111
|
+
|
|
112
|
+
**Anti-Patterns to Avoid:**
|
|
113
|
+
- Premature optimization over correctness
|
|
114
|
+
- Over-engineering for current needs
|
|
115
|
+
- Building without clear requirements
|
|
116
|
+
- Creating multiple sources of truth
|
|
117
|
+
- Implementing solutions without understanding root causes
|
|
118
|
+
|
|
119
|
+
**Key Principles:**
|
|
120
|
+
- Implement architectural decisions through working code
|
|
121
|
+
- Document all significant decisions and trade-offs
|
|
122
|
+
- Build systems that teams can understand and maintain
|
|
123
|
+
- Apply proven patterns and avoid reinventing solutions
|
|
124
|
+
- Balance current needs with long-term maintainability
|
|
125
|
+
|
|
126
|
+
When handed an architectural specification via `/spec implement`, you will read the spec, design the solution applying architectural principles, implement the necessary code and configuration, document decisions through ADRs, and update the spec with completion status and architectural notes.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
allowed-tools: mcp__basic-memory__write_note, mcp__basic-memory__read_note, mcp__basic-memory__search_notes, mcp__basic-memory__edit_note, Task
|
|
3
|
+
argument-hint: [create|status|implement|review] [spec-name]
|
|
4
|
+
description: Manage specifications in our development process
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
You are managing specifications using our specification-driven development process defined in @docs/specs/SPEC-001.md.
|
|
10
|
+
|
|
11
|
+
Available commands:
|
|
12
|
+
- `create [name]` - Create new specification
|
|
13
|
+
- `status` - Show all spec statuses
|
|
14
|
+
- `implement [spec-name]` - Hand spec to appropriate agent
|
|
15
|
+
- `review [spec-name]` - Review implementation against spec
|
|
16
|
+
|
|
17
|
+
## Your task
|
|
18
|
+
|
|
19
|
+
Execute the spec command: `/spec $ARGUMENTS`
|
|
20
|
+
|
|
21
|
+
### If command is "create":
|
|
22
|
+
1. Get next SPEC number by searching existing specs
|
|
23
|
+
2. Create new spec using template from @docs/specs/Slash\ Commands\ Reference.md
|
|
24
|
+
3. Place in `/specs` folder with title "SPEC-XXX: [name]"
|
|
25
|
+
4. Include standard sections: Why, What, How, How to Evaluate
|
|
26
|
+
|
|
27
|
+
### If command is "status":
|
|
28
|
+
1. Search all notes in `/specs` folder
|
|
29
|
+
2. Display table with spec number, title, and status
|
|
30
|
+
3. Show any dependencies or assigned agents
|
|
31
|
+
|
|
32
|
+
### If command is "implement":
|
|
33
|
+
1. Read the specified spec
|
|
34
|
+
2. Determine appropriate agent based on content:
|
|
35
|
+
- Frontend/UI → vue-developer
|
|
36
|
+
- Architecture/system → system-architect
|
|
37
|
+
- Backend/API → python-developer
|
|
38
|
+
3. Launch Task tool with appropriate agent and spec context
|
|
39
|
+
|
|
40
|
+
### If command is "review":
|
|
41
|
+
1. Read the specified spec and its "How to Evaluate" section
|
|
42
|
+
2. Review current implementation against success criteria with careful evaluation of:
|
|
43
|
+
- **Functional completeness** - All specified features working
|
|
44
|
+
- **Test coverage analysis** - Actual test files and coverage percentage
|
|
45
|
+
- Count existing test files vs required components/APIs/composables
|
|
46
|
+
- Verify unit tests, integration tests, and end-to-end tests
|
|
47
|
+
- Check for missing test categories (component, API, workflow)
|
|
48
|
+
- **Code quality metrics** - TypeScript compilation, linting, performance
|
|
49
|
+
- **Architecture compliance** - Component isolation, state management patterns
|
|
50
|
+
- **Documentation completeness** - Implementation matches specification
|
|
51
|
+
3. Provide honest, accurate assessment - do not overstate completeness
|
|
52
|
+
4. Document findings and update spec with review results
|
|
53
|
+
5. If gaps found, clearly identify what still needs to be implemented/tested
|
|
54
|
+
|
|
55
|
+
Use the agent definitions from @docs/specs/Agent\ Definitions.md for implementation handoffs.
|
|
@@ -11,7 +11,7 @@ All test results are recorded as notes in a dedicated test project.
|
|
|
11
11
|
**Parameters:**
|
|
12
12
|
- `phase` (optional): Specific test phase to run (`recent`, `core`, `features`, `edge`, `workflows`, `stress`, or `all`)
|
|
13
13
|
- `recent` - Focus on recent changes and new features (recommended for regular testing)
|
|
14
|
-
- `core` - Essential tools only (Tier 1: write_note, read_note, search_notes, edit_note,
|
|
14
|
+
- `core` - Essential tools only (Tier 1: write_note, read_note, search_notes, edit_note, list_memory_projects, recent_activity)
|
|
15
15
|
- `features` - Core + important workflows (Tier 1 + Tier 2)
|
|
16
16
|
- `all` - Comprehensive testing of all tools and scenarios
|
|
17
17
|
|
|
@@ -24,30 +24,66 @@ When the user runs `/project:test-live`, execute comprehensive test plan:
|
|
|
24
24
|
|
|
25
25
|
### **Tier 1: Critical Core (Always Test)**
|
|
26
26
|
1. **write_note** - Foundation of all knowledge creation
|
|
27
|
-
2. **read_note** - Primary knowledge retrieval mechanism
|
|
27
|
+
2. **read_note** - Primary knowledge retrieval mechanism
|
|
28
28
|
3. **search_notes** - Essential for finding information
|
|
29
29
|
4. **edit_note** - Core content modification capability
|
|
30
|
-
5. **list_memory_projects** - Project discovery and
|
|
31
|
-
6. **
|
|
30
|
+
5. **list_memory_projects** - Project discovery and session guidance
|
|
31
|
+
6. **recent_activity** - Project discovery mode and activity analysis
|
|
32
32
|
|
|
33
33
|
### **Tier 2: Important Workflows (Usually Test)**
|
|
34
|
-
7. **
|
|
35
|
-
8. **
|
|
36
|
-
9. **
|
|
37
|
-
10. **
|
|
38
|
-
11. **
|
|
34
|
+
7. **build_context** - Conversation continuity via memory:// URLs
|
|
35
|
+
8. **create_memory_project** - Essential for project setup
|
|
36
|
+
9. **move_note** - Knowledge organization
|
|
37
|
+
10. **sync_status** - Understanding system state
|
|
38
|
+
11. **delete_project** - Project lifecycle management
|
|
39
39
|
|
|
40
40
|
### **Tier 3: Enhanced Functionality (Sometimes Test)**
|
|
41
41
|
12. **view_note** - Claude Desktop artifact display
|
|
42
42
|
13. **read_content** - Raw content access
|
|
43
43
|
14. **delete_note** - Content removal
|
|
44
44
|
15. **list_directory** - File system exploration
|
|
45
|
-
16. **
|
|
46
|
-
17. **delete_project** - Administrative cleanup
|
|
45
|
+
16. **edit_note** (advanced modes) - Complex find/replace operations
|
|
47
46
|
|
|
48
47
|
### **Tier 4: Specialized (Rarely Test)**
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
17. **canvas** - Obsidian visualization (specialized use case)
|
|
49
|
+
18. **MCP Prompts** - Enhanced UX tools (ai_assistant_guide, continue_conversation)
|
|
50
|
+
|
|
51
|
+
## Stateless Architecture Testing
|
|
52
|
+
|
|
53
|
+
### **Project Discovery Workflow (CRITICAL)**
|
|
54
|
+
Test the new stateless project selection flow:
|
|
55
|
+
|
|
56
|
+
1. **Initial Discovery**
|
|
57
|
+
- Call `list_memory_projects()` without knowing which project to use
|
|
58
|
+
- Verify clear session guidance appears: "Next: Ask which project to use"
|
|
59
|
+
- Confirm removal of CLI-specific references
|
|
60
|
+
|
|
61
|
+
2. **Activity-Based Discovery**
|
|
62
|
+
- Call `recent_activity()` without project parameter (discovery mode)
|
|
63
|
+
- Verify intelligent project suggestions based on activity
|
|
64
|
+
- Test guidance: "Should I use [most-active-project] for this task?"
|
|
65
|
+
|
|
66
|
+
3. **Session Tracking Validation**
|
|
67
|
+
- Verify all tool responses include `[Session: Using project 'name']`
|
|
68
|
+
- Confirm guidance reminds about session-wide project tracking
|
|
69
|
+
|
|
70
|
+
4. **Single Project Constraint Mode**
|
|
71
|
+
- Test MCP server with `--project` parameter
|
|
72
|
+
- Verify all operations constrained to specified project
|
|
73
|
+
- Test project override behavior in constrained mode
|
|
74
|
+
|
|
75
|
+
### **Explicit Project Parameters (CRITICAL)**
|
|
76
|
+
All tools must require explicit project parameters:
|
|
77
|
+
|
|
78
|
+
1. **Parameter Validation**
|
|
79
|
+
- Test all Tier 1 tools require `project` parameter
|
|
80
|
+
- Verify clear error messages for missing project
|
|
81
|
+
- Test invalid project name handling
|
|
82
|
+
|
|
83
|
+
2. **No Session State Dependencies**
|
|
84
|
+
- Confirm no tool relies on "current project" concept
|
|
85
|
+
- Test rapid project switching within conversation
|
|
86
|
+
- Verify each call is truly independent
|
|
51
87
|
|
|
52
88
|
### Pre-Test Setup
|
|
53
89
|
|
|
@@ -72,7 +108,7 @@ Run the bash `date` command to get the current date/time.
|
|
|
72
108
|
Purpose: Record all test observations and results
|
|
73
109
|
```
|
|
74
110
|
|
|
75
|
-
Make sure to
|
|
111
|
+
Make sure to use the newly created project for all subsequent test operations by specifying it in the `project` parameter of each tool call.
|
|
76
112
|
|
|
77
113
|
4. **Baseline Documentation**
|
|
78
114
|
Create initial test session note with:
|
|
@@ -143,46 +179,42 @@ Test essential MCP tools that form the foundation of Basic Memory:
|
|
|
143
179
|
- ⚠️ Error scenarios (invalid operations)
|
|
144
180
|
|
|
145
181
|
**5. list_memory_projects Tests (Critical):**
|
|
146
|
-
- ✅ Display all projects with
|
|
147
|
-
- ✅
|
|
182
|
+
- ✅ Display all projects with clear session guidance
|
|
183
|
+
- ✅ Project discovery workflow prompts
|
|
184
|
+
- ✅ Removal of CLI-specific references
|
|
148
185
|
- ✅ Empty project list handling
|
|
149
|
-
- ✅
|
|
186
|
+
- ✅ Single project constraint mode display
|
|
150
187
|
|
|
151
|
-
**6.
|
|
152
|
-
- ✅
|
|
153
|
-
- ✅
|
|
154
|
-
-
|
|
155
|
-
- ✅
|
|
188
|
+
**6. recent_activity Tests (Critical - Discovery Mode):**
|
|
189
|
+
- ✅ Discovery mode without project parameter
|
|
190
|
+
- ✅ Intelligent project suggestions based on activity
|
|
191
|
+
- ✅ Guidance prompts for project selection
|
|
192
|
+
- ✅ Session tracking reminders in responses
|
|
193
|
+
- ⚠️ Performance with multiple projects
|
|
156
194
|
|
|
157
195
|
### Phase 2: Important Workflows (Tier 2 Tools)
|
|
158
196
|
|
|
159
|
-
**7.
|
|
160
|
-
- ✅ Various timeframes ("today", "1 week", "1d")
|
|
161
|
-
- ✅ Type filtering capabilities
|
|
162
|
-
- ✅ Empty project scenarios
|
|
163
|
-
- ⚠️ Performance with many recent changes
|
|
164
|
-
|
|
165
|
-
**8. build_context Tests (Important):**
|
|
197
|
+
**7. build_context Tests (Important):**
|
|
166
198
|
- ✅ Different depth levels (1, 2, 3+)
|
|
167
199
|
- ✅ Various timeframes for context
|
|
168
200
|
- ✅ memory:// URL navigation
|
|
169
201
|
- ⚠️ Performance with complex relation graphs
|
|
170
202
|
|
|
171
|
-
**
|
|
203
|
+
**8. create_memory_project Tests (Important):**
|
|
172
204
|
- ✅ Create projects dynamically
|
|
173
205
|
- ✅ Set default during creation
|
|
174
206
|
- ✅ Path validation and creation
|
|
175
207
|
- ⚠️ Invalid paths and names
|
|
176
208
|
- ✅ Integration with existing projects
|
|
177
209
|
|
|
178
|
-
**
|
|
210
|
+
**9. move_note Tests (Important):**
|
|
179
211
|
- ✅ Move within same project
|
|
180
212
|
- ✅ Cross-project moves with detection (#161)
|
|
181
213
|
- ✅ Automatic folder creation
|
|
182
214
|
- ✅ Database consistency validation
|
|
183
215
|
- ⚠️ Special characters in paths
|
|
184
216
|
|
|
185
|
-
**
|
|
217
|
+
**10. sync_status Tests (Important):**
|
|
186
218
|
- ✅ Background operation monitoring
|
|
187
219
|
- ✅ File synchronization status
|
|
188
220
|
- ✅ Project sync state reporting
|
|
@@ -190,36 +222,31 @@ Test essential MCP tools that form the foundation of Basic Memory:
|
|
|
190
222
|
|
|
191
223
|
### Phase 3: Enhanced Functionality (Tier 3 Tools)
|
|
192
224
|
|
|
193
|
-
**
|
|
225
|
+
**11. view_note Tests (Enhanced):**
|
|
194
226
|
- ✅ Claude Desktop artifact display
|
|
195
227
|
- ✅ Title extraction from frontmatter
|
|
196
228
|
- ✅ Unicode and emoji content rendering
|
|
197
229
|
- ⚠️ Error handling for non-existent notes
|
|
198
230
|
|
|
199
|
-
**
|
|
231
|
+
**12. read_content Tests (Enhanced):**
|
|
200
232
|
- ✅ Raw file content access
|
|
201
233
|
- ✅ Binary file handling
|
|
202
234
|
- ✅ Image file reading
|
|
203
235
|
- ⚠️ Large file performance
|
|
204
236
|
|
|
205
|
-
**
|
|
237
|
+
**13. delete_note Tests (Enhanced):**
|
|
206
238
|
- ✅ Single note deletion
|
|
207
239
|
- ✅ Database consistency after deletion
|
|
208
240
|
- ⚠️ Non-existent note handling
|
|
209
241
|
- ✅ Confirmation of successful deletion
|
|
210
242
|
|
|
211
|
-
**
|
|
243
|
+
**14. list_directory Tests (Enhanced):**
|
|
212
244
|
- ✅ Directory content listing
|
|
213
245
|
- ✅ Depth control and filtering
|
|
214
246
|
- ✅ File name globbing
|
|
215
247
|
- ⚠️ Empty directory handling
|
|
216
248
|
|
|
217
|
-
**
|
|
218
|
-
- ✅ Change default project
|
|
219
|
-
- ✅ Configuration persistence
|
|
220
|
-
- ⚠️ Invalid project handling
|
|
221
|
-
|
|
222
|
-
**17. delete_project Tests (Enhanced):**
|
|
249
|
+
**15. delete_project Tests (Enhanced):**
|
|
223
250
|
- ✅ Project removal from config
|
|
224
251
|
- ✅ Database cleanup
|
|
225
252
|
- ⚠️ Default project protection
|
|
@@ -269,7 +296,7 @@ Test essential MCP tools that form the foundation of Basic Memory:
|
|
|
269
296
|
1. Technical documentation project
|
|
270
297
|
2. Personal recipe collection project
|
|
271
298
|
3. Learning/course notes project
|
|
272
|
-
4.
|
|
299
|
+
4. Specify different projects for different operations
|
|
273
300
|
5. Cross-reference related concepts
|
|
274
301
|
|
|
275
302
|
**Content Evolution:**
|
|
@@ -281,13 +308,13 @@ Test essential MCP tools that form the foundation of Basic Memory:
|
|
|
281
308
|
|
|
282
309
|
### Phase 6: Specialized Tools Testing (Tier 4)
|
|
283
310
|
|
|
284
|
-
**
|
|
311
|
+
**16. canvas Tests (Specialized):**
|
|
285
312
|
- ✅ JSON Canvas generation
|
|
286
313
|
- ✅ Node and edge creation
|
|
287
314
|
- ✅ Obsidian compatibility
|
|
288
315
|
- ⚠️ Complex graph handling
|
|
289
316
|
|
|
290
|
-
**
|
|
317
|
+
**17. MCP Prompts Tests (Specialized):**
|
|
291
318
|
- ✅ ai_assistant_guide output
|
|
292
319
|
- ✅ continue_conversation functionality
|
|
293
320
|
- ✅ Formatted search results
|
|
@@ -382,7 +409,7 @@ permalink: test-session-[phase]-[timestamp]
|
|
|
382
409
|
### 📊 Performance Metrics
|
|
383
410
|
- Average write_note time: 0.3s
|
|
384
411
|
- Search with 100+ notes: 0.6s
|
|
385
|
-
- Project
|
|
412
|
+
- Project parameter overhead: <0.1s
|
|
386
413
|
- Memory usage: [observed levels]
|
|
387
414
|
|
|
388
415
|
## Relations
|
|
@@ -402,7 +429,7 @@ permalink: test-session-[phase]-[timestamp]
|
|
|
402
429
|
- Learning curve and intuitiveness
|
|
403
430
|
|
|
404
431
|
**System Behavior:**
|
|
405
|
-
-
|
|
432
|
+
- Stateless operation independence
|
|
406
433
|
- memory:// URL navigation reliability
|
|
407
434
|
- Multi-step workflow cohesion
|
|
408
435
|
- Edge case graceful handling
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
name: Claude Code Review
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
types: [opened, synchronize]
|
|
6
|
+
# Optional: Only run on specific file changes
|
|
7
|
+
# paths:
|
|
8
|
+
# - "src/**/*.ts"
|
|
9
|
+
# - "src/**/*.tsx"
|
|
10
|
+
# - "src/**/*.js"
|
|
11
|
+
# - "src/**/*.jsx"
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
claude-review:
|
|
15
|
+
# Only run for organization members and collaborators
|
|
16
|
+
if: |
|
|
17
|
+
github.event.pull_request.author_association == 'OWNER' ||
|
|
18
|
+
github.event.pull_request.author_association == 'MEMBER' ||
|
|
19
|
+
github.event.pull_request.author_association == 'COLLABORATOR'
|
|
20
|
+
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
permissions:
|
|
23
|
+
contents: read
|
|
24
|
+
pull-requests: write
|
|
25
|
+
issues: read
|
|
26
|
+
id-token: write
|
|
27
|
+
|
|
28
|
+
steps:
|
|
29
|
+
- name: Checkout repository
|
|
30
|
+
uses: actions/checkout@v4
|
|
31
|
+
with:
|
|
32
|
+
fetch-depth: 1
|
|
33
|
+
|
|
34
|
+
- name: Run Claude Code Review
|
|
35
|
+
id: claude-review
|
|
36
|
+
uses: anthropics/claude-code-action@v1
|
|
37
|
+
with:
|
|
38
|
+
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
|
39
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
40
|
+
track_progress: true # Enable visual progress tracking
|
|
41
|
+
allowed_bots: '*'
|
|
42
|
+
prompt: |
|
|
43
|
+
Review this Basic Memory PR against our team checklist:
|
|
44
|
+
|
|
45
|
+
## Code Quality & Standards
|
|
46
|
+
- [ ] Follows Basic Memory's coding conventions in CLAUDE.md
|
|
47
|
+
- [ ] Python 3.12+ type annotations and async patterns
|
|
48
|
+
- [ ] SQLAlchemy 2.0 best practices
|
|
49
|
+
- [ ] FastAPI and Typer conventions followed
|
|
50
|
+
- [ ] 100-character line length limit maintained
|
|
51
|
+
- [ ] No commented-out code blocks
|
|
52
|
+
|
|
53
|
+
## Testing & Documentation
|
|
54
|
+
- [ ] Unit tests for new functions/methods
|
|
55
|
+
- [ ] Integration tests for new MCP tools
|
|
56
|
+
- [ ] Test coverage for edge cases
|
|
57
|
+
- [ ] Documentation updated (README, docstrings)
|
|
58
|
+
- [ ] CLAUDE.md updated if conventions change
|
|
59
|
+
|
|
60
|
+
## Basic Memory Architecture
|
|
61
|
+
- [ ] MCP tools follow atomic, composable design
|
|
62
|
+
- [ ] Database changes include Alembic migrations
|
|
63
|
+
- [ ] Preserves local-first architecture principles
|
|
64
|
+
- [ ] Knowledge graph operations maintain consistency
|
|
65
|
+
- [ ] Markdown file handling preserves integrity
|
|
66
|
+
- [ ] AI-human collaboration patterns followed
|
|
67
|
+
|
|
68
|
+
## Security & Performance
|
|
69
|
+
- [ ] No hardcoded secrets or credentials
|
|
70
|
+
- [ ] Input validation for MCP tools
|
|
71
|
+
- [ ] Proper error handling and logging
|
|
72
|
+
- [ ] Performance considerations addressed
|
|
73
|
+
- [ ] No sensitive data in logs or commits
|
|
74
|
+
|
|
75
|
+
Read the CLAUDE.md file for detailed project context. For each checklist item, verify if it's satisfied and comment on any that need attention. Use inline comments for specific code issues and post a summary with checklist results.
|
|
76
|
+
|
|
77
|
+
# Allow broader tool access for thorough code review
|
|
78
|
+
claude_args: '--allowed-tools "Bash(gh pr:*),Bash(gh issue:*),Bash(gh api:*),Bash(git log:*),Bash(git show:*),Read,Grep,Glob"'
|
|
79
|
+
|