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.

Files changed (359) hide show
  1. basic_memory-0.15.0/.claude/agents/python-developer.md +154 -0
  2. basic_memory-0.15.0/.claude/agents/system-architect.md +126 -0
  3. basic_memory-0.15.0/.claude/commands/spec.md +55 -0
  4. {basic_memory-0.14.4 → basic_memory-0.15.0}/.claude/commands/test-live.md +74 -47
  5. basic_memory-0.15.0/.github/workflows/claude-code-review.yml +79 -0
  6. basic_memory-0.15.0/.github/workflows/claude-issue-triage.yml +71 -0
  7. basic_memory-0.15.0/.github/workflows/claude.yml +68 -0
  8. {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/workflows/test.yml +11 -3
  9. {basic_memory-0.14.4 → basic_memory-0.15.0}/CHANGELOG.md +217 -0
  10. {basic_memory-0.14.4 → basic_memory-0.15.0}/PKG-INFO +7 -6
  11. {basic_memory-0.14.4 → basic_memory-0.15.0}/README.md +4 -4
  12. basic_memory-0.15.0/docs/cloud-cli.md +657 -0
  13. {basic_memory-0.14.4 → basic_memory-0.15.0}/justfile +7 -4
  14. {basic_memory-0.14.4 → basic_memory-0.15.0}/pyproject.toml +3 -1
  15. basic_memory-0.15.0/specs/SPEC-1 Specification-Driven Development Process.md +156 -0
  16. basic_memory-0.15.0/specs/SPEC-11 Basic Memory API Performance Optimization.md +245 -0
  17. basic_memory-0.15.0/specs/SPEC-13 CLI Authentication with Subscription Validation.md +1427 -0
  18. basic_memory-0.15.0/specs/SPEC-14- Cloud Git Versioning & GitHub Backup.md +210 -0
  19. basic_memory-0.15.0/specs/SPEC-2 Slash Commands Reference.md +120 -0
  20. basic_memory-0.15.0/specs/SPEC-3 Agent Definitions.md +108 -0
  21. basic_memory-0.15.0/specs/SPEC-5 CLI Cloud Upload via WebDAV.md +201 -0
  22. basic_memory-0.15.0/specs/SPEC-6 Explicit Project Parameter Architecture.md +486 -0
  23. basic_memory-0.15.0/specs/SPEC-7 POC to spike Tigris Turso for local access to cloud data.md +193 -0
  24. basic_memory-0.15.0/specs/SPEC-8 TigrisFS Integration.md +886 -0
  25. basic_memory-0.15.0/specs/SPEC-9 Multi-Project Bidirectional Sync Architecture.md +1114 -0
  26. basic_memory-0.15.0/specs/SPEC-9-1 Follow-Ups- Conflict, Sync, and Observability.md +390 -0
  27. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/__init__.py +1 -1
  28. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/versions/a1b2c3d4e5f6_fix_project_foreign_keys.py +5 -9
  29. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/app.py +10 -4
  30. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/knowledge_router.py +25 -8
  31. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/project_router.py +99 -4
  32. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/app.py +9 -28
  33. basic_memory-0.15.0/src/basic_memory/cli/auth.py +277 -0
  34. basic_memory-0.15.0/src/basic_memory/cli/commands/cloud/__init__.py +5 -0
  35. basic_memory-0.15.0/src/basic_memory/cli/commands/cloud/api_client.py +112 -0
  36. basic_memory-0.15.0/src/basic_memory/cli/commands/cloud/bisync_commands.py +818 -0
  37. basic_memory-0.15.0/src/basic_memory/cli/commands/cloud/core_commands.py +288 -0
  38. basic_memory-0.15.0/src/basic_memory/cli/commands/cloud/mount_commands.py +295 -0
  39. basic_memory-0.15.0/src/basic_memory/cli/commands/cloud/rclone_config.py +288 -0
  40. basic_memory-0.15.0/src/basic_memory/cli/commands/cloud/rclone_installer.py +198 -0
  41. basic_memory-0.15.0/src/basic_memory/cli/commands/command_utils.py +60 -0
  42. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/import_memory_json.py +0 -4
  43. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/mcp.py +16 -4
  44. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/project.py +139 -142
  45. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/status.py +34 -22
  46. basic_memory-0.15.0/src/basic_memory/cli/commands/sync.py +59 -0
  47. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/tool.py +87 -16
  48. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/main.py +1 -0
  49. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/config.py +76 -12
  50. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/db.py +104 -3
  51. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/deps.py +20 -3
  52. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/file_utils.py +37 -13
  53. basic_memory-0.15.0/src/basic_memory/ignore_utils.py +295 -0
  54. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/markdown/plugins.py +9 -7
  55. basic_memory-0.15.0/src/basic_memory/mcp/async_client.py +40 -0
  56. basic_memory-0.15.0/src/basic_memory/mcp/project_context.py +141 -0
  57. basic_memory-0.15.0/src/basic_memory/mcp/prompts/ai_assistant_guide.py +70 -0
  58. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/prompts/continue_conversation.py +1 -1
  59. basic_memory-0.15.0/src/basic_memory/mcp/prompts/recent_activity.py +188 -0
  60. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/prompts/search.py +1 -1
  61. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/prompts/utils.py +11 -4
  62. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/resources/ai_assistant_guide.md +179 -41
  63. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/resources/project_info.py +20 -6
  64. basic_memory-0.15.0/src/basic_memory/mcp/server.py +9 -0
  65. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/__init__.py +5 -6
  66. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/build_context.py +29 -19
  67. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/canvas.py +19 -8
  68. basic_memory-0.15.0/src/basic_memory/mcp/tools/chatgpt_tools.py +178 -0
  69. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/delete_note.py +67 -34
  70. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/edit_note.py +55 -39
  71. basic_memory-0.15.0/src/basic_memory/mcp/tools/headers.py +44 -0
  72. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/list_directory.py +18 -8
  73. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/move_note.py +119 -41
  74. basic_memory-0.15.0/src/basic_memory/mcp/tools/project_management.py +197 -0
  75. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/read_content.py +28 -12
  76. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/read_note.py +83 -46
  77. basic_memory-0.15.0/src/basic_memory/mcp/tools/recent_activity.py +530 -0
  78. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/search.py +82 -70
  79. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/sync_status.py +5 -4
  80. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/utils.py +19 -0
  81. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/view_note.py +31 -6
  82. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/tools/write_note.py +65 -14
  83. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/models/knowledge.py +12 -6
  84. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/models/project.py +6 -2
  85. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/entity_repository.py +29 -82
  86. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/relation_repository.py +13 -0
  87. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/repository.py +2 -2
  88. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/search_repository.py +4 -2
  89. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/__init__.py +6 -0
  90. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/base.py +39 -11
  91. basic_memory-0.15.0/src/basic_memory/schemas/cloud.py +46 -0
  92. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/memory.py +90 -21
  93. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/project_info.py +9 -10
  94. basic_memory-0.15.0/src/basic_memory/schemas/sync_report.py +48 -0
  95. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/context_service.py +25 -11
  96. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/entity_service.py +75 -45
  97. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/initialization.py +30 -11
  98. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/project_service.py +13 -23
  99. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/sync/sync_service.py +145 -21
  100. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/sync/watch_service.py +101 -40
  101. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/utils.py +14 -4
  102. basic_memory-0.15.0/test-int/cli/test_project_commands_integration.py +112 -0
  103. basic_memory-0.15.0/test-int/cli/test_sync_commands_integration.py +61 -0
  104. basic_memory-0.15.0/test-int/cli/test_version_integration.py +15 -0
  105. {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/conftest.py +7 -14
  106. basic_memory-0.15.0/test-int/mcp/test_build_context_underscore.py +171 -0
  107. {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_build_context_validation.py +38 -23
  108. basic_memory-0.15.0/test-int/mcp/test_chatgpt_tools_integration.py +455 -0
  109. basic_memory-0.15.0/test-int/mcp/test_default_project_mode_integration.py +367 -0
  110. {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_delete_note_integration.py +35 -9
  111. {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_edit_note_integration.py +44 -12
  112. {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_list_directory_integration.py +47 -12
  113. {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_move_note_integration.py +60 -17
  114. basic_memory-0.15.0/test-int/mcp/test_project_management_integration.py +514 -0
  115. basic_memory-0.15.0/test-int/mcp/test_project_state_sync_integration.py +82 -0
  116. {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_read_content_integration.py +29 -12
  117. {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_read_note_integration.py +3 -1
  118. {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_search_integration.py +46 -13
  119. basic_memory-0.15.0/test-int/mcp/test_single_project_mcp_integration.py +340 -0
  120. {basic_memory-0.14.4 → basic_memory-0.15.0}/test-int/mcp/test_write_note_integration.py +109 -24
  121. basic_memory-0.15.0/test-int/test_db_wal_mode.py +143 -0
  122. basic_memory-0.15.0/test-int/test_disable_permalinks_integration.py +141 -0
  123. basic_memory-0.15.0/tests/api/test_async_client.py +52 -0
  124. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_project_router.py +75 -0
  125. basic_memory-0.15.0/tests/api/test_relation_background_resolution.py +40 -0
  126. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_resource_router.py +16 -8
  127. basic_memory-0.15.0/tests/cli/test_bisync_commands.py +465 -0
  128. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/cli/test_cli_tools.py +55 -40
  129. basic_memory-0.15.0/tests/cli/test_cloud_authentication.py +239 -0
  130. basic_memory-0.15.0/tests/cli/test_ignore_utils.py +315 -0
  131. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/conftest.py +4 -12
  132. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/db/test_issue_254_foreign_key_constraints.py +30 -26
  133. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/test_markdown_plugins.py +13 -13
  134. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/conftest.py +2 -2
  135. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_obsidian_yaml_formatting.py +56 -48
  136. basic_memory-0.15.0/tests/mcp/test_permalink_collision_file_overwrite.py +361 -0
  137. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_prompts.py +55 -42
  138. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_build_context.py +26 -18
  139. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_canvas.py +25 -11
  140. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_delete_note.py +27 -23
  141. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_edit_note.py +81 -23
  142. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_list_directory.py +36 -25
  143. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_move_note.py +200 -39
  144. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_read_content.py +44 -39
  145. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_read_note.py +64 -197
  146. basic_memory-0.15.0/tests/mcp/test_tool_recent_activity.py +135 -0
  147. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_resource.py +17 -14
  148. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_search.py +52 -24
  149. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_view_note.py +63 -80
  150. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_write_note.py +175 -86
  151. basic_memory-0.15.0/tests/mcp/tools/test_chatgpt_tools.py +228 -0
  152. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_entity_repository_upsert.py +16 -29
  153. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_search_repository_edit_bug_fix.py +14 -14
  154. basic_memory-0.15.0/tests/schemas/test_base_timeframe_minimum.py +104 -0
  155. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/schemas/test_memory_serialization.py +91 -86
  156. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/schemas/test_memory_url.py +5 -2
  157. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/schemas/test_memory_url_validation.py +10 -8
  158. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/schemas/test_schemas.py +38 -31
  159. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_context_service.py +24 -24
  160. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_entity_service.py +96 -0
  161. basic_memory-0.15.0/tests/services/test_entity_service_disable_permalinks.py +220 -0
  162. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_initialization.py +17 -23
  163. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_project_removal_bug.py +36 -27
  164. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_project_service.py +1 -1
  165. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_project_service_operations.py +0 -31
  166. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/sync/test_sync_service.py +7 -8
  167. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/sync/test_watch_service_edge_cases.py +18 -10
  168. basic_memory-0.15.0/tests/sync/test_watch_service_reload.py +252 -0
  169. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/test_config.py +36 -21
  170. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/test_production_cascade_delete.py +126 -98
  171. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/utils/test_file_utils.py +27 -0
  172. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/utils/test_frontmatter_obsidian_compatible.py +33 -33
  173. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/utils/test_parse_tags.py +4 -4
  174. {basic_memory-0.14.4 → basic_memory-0.15.0}/uv.lock +717 -297
  175. basic_memory-0.14.4/.github/workflows/claude.yml +0 -114
  176. basic_memory-0.14.4/LEGAL_INVENTORY_GUIDE.md +0 -250
  177. basic_memory-0.14.4/create_csv_exhibits.py +0 -88
  178. basic_memory-0.14.4/create_individual_exhibits.py +0 -208
  179. basic_memory-0.14.4/docs/AI Assistant Guide.md +0 -431
  180. basic_memory-0.14.4/legal_exhibits/drew_cain_exhibit_a.csv +0 -31
  181. basic_memory-0.14.4/legal_exhibits/joe_exhibit_a.csv +0 -28
  182. basic_memory-0.14.4/legal_file_inventory.py +0 -438
  183. basic_memory-0.14.4/legal_inventory/basic_memory_inventory_20250730_110133.csv +0 -272
  184. basic_memory-0.14.4/legal_inventory_git/basic_memory_inventory_20250729_200145.md +0 -1936
  185. basic_memory-0.14.4/legal_inventory_main/basic_memory_inventory_20250730_094006.csv +0 -272
  186. basic_memory-0.14.4/legal_inventory_main/basic_memory_inventory_20250730_094006.md +0 -1943
  187. basic_memory-0.14.4/legal_inventory_main/basic_memory_inventory_20250730_101521.json +0 -6788
  188. basic_memory-0.14.4/legal_inventory_sample.json +0 -5479
  189. basic_memory-0.14.4/legal_inventory_sample.md +0 -294
  190. basic_memory-0.14.4/memory.json +0 -378
  191. basic_memory-0.14.4/scripts/generate_legal_inventory.py +0 -483
  192. basic_memory-0.14.4/src/basic_memory/cli/commands/sync.py +0 -242
  193. basic_memory-0.14.4/src/basic_memory/mcp/async_client.py +0 -28
  194. basic_memory-0.14.4/src/basic_memory/mcp/project_session.py +0 -120
  195. basic_memory-0.14.4/src/basic_memory/mcp/prompts/ai_assistant_guide.py +0 -25
  196. basic_memory-0.14.4/src/basic_memory/mcp/prompts/recent_activity.py +0 -104
  197. basic_memory-0.14.4/src/basic_memory/mcp/server.py +0 -46
  198. basic_memory-0.14.4/src/basic_memory/mcp/tools/project_management.py +0 -364
  199. basic_memory-0.14.4/src/basic_memory/mcp/tools/recent_activity.py +0 -131
  200. basic_memory-0.14.4/test-int/mcp/test_project_management_integration.py +0 -905
  201. basic_memory-0.14.4/test-int/mcp/test_project_state_sync_integration.py +0 -176
  202. basic_memory-0.14.4/tests/api/test_async_client.py +0 -36
  203. basic_memory-0.14.4/tests/cli/test_project_commands.py +0 -229
  204. basic_memory-0.14.4/tests/cli/test_project_info.py +0 -116
  205. basic_memory-0.14.4/tests/cli/test_status.py +0 -140
  206. basic_memory-0.14.4/tests/cli/test_sync.py +0 -124
  207. basic_memory-0.14.4/tests/cli/test_version.py +0 -14
  208. basic_memory-0.14.4/tests/mcp/test_resource_project_info.py +0 -144
  209. basic_memory-0.14.4/tests/mcp/test_tool_recent_activity.py +0 -118
  210. {basic_memory-0.14.4 → basic_memory-0.15.0}/.claude/commands/release/beta.md +0 -0
  211. {basic_memory-0.14.4 → basic_memory-0.15.0}/.claude/commands/release/changelog.md +0 -0
  212. {basic_memory-0.14.4 → basic_memory-0.15.0}/.claude/commands/release/release-check.md +0 -0
  213. {basic_memory-0.14.4 → basic_memory-0.15.0}/.claude/commands/release/release.md +0 -0
  214. {basic_memory-0.14.4 → basic_memory-0.15.0}/.dockerignore +0 -0
  215. {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  216. {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  217. {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  218. {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  219. {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/dependabot.yml +0 -0
  220. {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/workflows/dev-release.yml +0 -0
  221. {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/workflows/docker.yml +0 -0
  222. {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/workflows/pr-title.yml +0 -0
  223. {basic_memory-0.14.4 → basic_memory-0.15.0}/.github/workflows/release.yml +0 -0
  224. {basic_memory-0.14.4 → basic_memory-0.15.0}/.gitignore +0 -0
  225. {basic_memory-0.14.4 → basic_memory-0.15.0}/.python-version +0 -0
  226. {basic_memory-0.14.4 → basic_memory-0.15.0}/CITATION.cff +0 -0
  227. {basic_memory-0.14.4 → basic_memory-0.15.0}/CLA.md +0 -0
  228. {basic_memory-0.14.4 → basic_memory-0.15.0}/CLAUDE.md +0 -0
  229. {basic_memory-0.14.4 → basic_memory-0.15.0}/CODE_OF_CONDUCT.md +0 -0
  230. {basic_memory-0.14.4 → basic_memory-0.15.0}/CONTRIBUTING.md +0 -0
  231. {basic_memory-0.14.4 → basic_memory-0.15.0}/Dockerfile +0 -0
  232. {basic_memory-0.14.4 → basic_memory-0.15.0}/LICENSE +0 -0
  233. {basic_memory-0.14.4 → basic_memory-0.15.0}/SECURITY.md +0 -0
  234. {basic_memory-0.14.4 → basic_memory-0.15.0}/docker-compose.yml +0 -0
  235. {basic_memory-0.14.4 → basic_memory-0.15.0}/docs/Docker.md +0 -0
  236. {basic_memory-0.14.4 → basic_memory-0.15.0}/docs/character-handling.md +0 -0
  237. {basic_memory-0.14.4 → basic_memory-0.15.0}/llms-install.md +0 -0
  238. {basic_memory-0.14.4 → basic_memory-0.15.0}/smithery.yaml +0 -0
  239. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/alembic.ini +0 -0
  240. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/env.py +0 -0
  241. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/migrations.py +0 -0
  242. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/script.py.mako +0 -0
  243. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
  244. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +0 -0
  245. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +0 -0
  246. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +0 -0
  247. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +0 -0
  248. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +0 -0
  249. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/__init__.py +0 -0
  250. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/__init__.py +0 -0
  251. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/directory_router.py +0 -0
  252. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/importer_router.py +0 -0
  253. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/management_router.py +0 -0
  254. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/memory_router.py +0 -0
  255. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/prompt_router.py +0 -0
  256. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/resource_router.py +0 -0
  257. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/search_router.py +0 -0
  258. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/routers/utils.py +0 -0
  259. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/api/template_loader.py +0 -0
  260. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/__init__.py +0 -0
  261. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/__init__.py +0 -0
  262. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/db.py +0 -0
  263. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/import_chatgpt.py +0 -0
  264. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/import_claude_conversations.py +0 -0
  265. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/cli/commands/import_claude_projects.py +0 -0
  266. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/importers/__init__.py +0 -0
  267. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/importers/base.py +0 -0
  268. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/importers/chatgpt_importer.py +0 -0
  269. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/importers/claude_conversations_importer.py +0 -0
  270. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/importers/claude_projects_importer.py +0 -0
  271. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/importers/memory_json_importer.py +0 -0
  272. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/importers/utils.py +0 -0
  273. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/markdown/__init__.py +0 -0
  274. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/markdown/entity_parser.py +0 -0
  275. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/markdown/markdown_processor.py +0 -0
  276. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/markdown/schemas.py +0 -0
  277. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/markdown/utils.py +0 -0
  278. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/__init__.py +0 -0
  279. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/mcp/prompts/__init__.py +0 -0
  280. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/models/__init__.py +0 -0
  281. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/models/base.py +0 -0
  282. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/models/search.py +0 -0
  283. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/__init__.py +0 -0
  284. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/observation_repository.py +0 -0
  285. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/project_info_repository.py +0 -0
  286. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/repository/project_repository.py +0 -0
  287. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/delete.py +0 -0
  288. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/directory.py +0 -0
  289. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/importer.py +0 -0
  290. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/prompt.py +0 -0
  291. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/request.py +0 -0
  292. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/response.py +0 -0
  293. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/schemas/search.py +0 -0
  294. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/__init__.py +0 -0
  295. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/directory_service.py +0 -0
  296. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/exceptions.py +0 -0
  297. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/file_service.py +0 -0
  298. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/link_resolver.py +0 -0
  299. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/search_service.py +0 -0
  300. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/service.py +0 -0
  301. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/services/sync_status_service.py +0 -0
  302. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/sync/__init__.py +0 -0
  303. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/sync/background_sync.py +0 -0
  304. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/templates/prompts/continue_conversation.hbs +0 -0
  305. {basic_memory-0.14.4 → basic_memory-0.15.0}/src/basic_memory/templates/prompts/search.hbs +0 -0
  306. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/Non-MarkdownFileSupport.pdf +0 -0
  307. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/Screenshot.png +0 -0
  308. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/__init__.py +0 -0
  309. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/conftest.py +0 -0
  310. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_continue_conversation_template.py +0 -0
  311. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_directory_router.py +0 -0
  312. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_importer_router.py +0 -0
  313. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_knowledge_router.py +0 -0
  314. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_management_router.py +0 -0
  315. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_memory_router.py +0 -0
  316. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_project_router_operations.py +0 -0
  317. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_prompt_router.py +0 -0
  318. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_search_router.py +0 -0
  319. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_search_template.py +0 -0
  320. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_template_loader.py +0 -0
  321. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/api/test_template_loader_helpers.py +0 -0
  322. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/cli/conftest.py +0 -0
  323. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/cli/test_import_chatgpt.py +0 -0
  324. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/cli/test_import_claude_conversations.py +0 -0
  325. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/cli/test_import_claude_projects.py +0 -0
  326. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/cli/test_import_memory_json.py +0 -0
  327. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/importers/test_importer_base.py +0 -0
  328. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/importers/test_importer_utils.py +0 -0
  329. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/__init__.py +0 -0
  330. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/test_entity_parser.py +0 -0
  331. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/test_markdown_processor.py +0 -0
  332. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/test_observation_edge_cases.py +0 -0
  333. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/test_parser_edge_cases.py +0 -0
  334. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/test_relation_edge_cases.py +0 -0
  335. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/markdown/test_task_detection.py +0 -0
  336. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_resources.py +0 -0
  337. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_sync_status.py +0 -0
  338. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/mcp/test_tool_utils.py +0 -0
  339. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_entity_repository.py +0 -0
  340. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_observation_repository.py +0 -0
  341. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_project_info_repository.py +0 -0
  342. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_project_repository.py +0 -0
  343. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_relation_repository.py +0 -0
  344. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_repository.py +0 -0
  345. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/repository/test_search_repository.py +0 -0
  346. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/schemas/test_search.py +0 -0
  347. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_directory_service.py +0 -0
  348. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_file_service.py +0 -0
  349. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_link_resolver.py +0 -0
  350. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_search_service.py +0 -0
  351. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/services/test_sync_status_service.py +0 -0
  352. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/sync/test_character_conflicts.py +0 -0
  353. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/sync/test_sync_wikilink_issue.py +0 -0
  354. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/sync/test_tmp_files.py +0 -0
  355. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/sync/test_watch_service.py +0 -0
  356. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/test_db_migration_deduplication.py +0 -0
  357. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/utils/test_permalink_formatting.py +0 -0
  358. {basic_memory-0.14.4 → basic_memory-0.15.0}/tests/utils/test_utf8_handling.py +0 -0
  359. {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, list_projects, switch_project)
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 status
31
- 6. **switch_project** - Context switching for multi-project workflows
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. **recent_activity** - Understanding what's changed
35
- 8. **build_context** - Conversation continuity via memory:// URLs
36
- 9. **create_memory_project** - Essential for project setup
37
- 10. **move_note** - Knowledge organization
38
- 11. **sync_status** - Understanding system state
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. **set_default_project** - Configuration
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
- 18. **canvas** - Obsidian visualization (specialized use case)
50
- 19. **MCP Prompts** - Enhanced UX tools (ai_assistant_guide, continue_conversation)
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 switch to the newly created project with the `switch_project()` tool.
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 status indicators
147
- - ✅ Current and default project identification
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
- - ✅ Project metadata accuracy
186
+ - ✅ Single project constraint mode display
150
187
 
151
- **6. switch_project Tests (Critical):**
152
- - ✅ Switch between existing projects
153
- - ✅ Context preservation during switch
154
- - ⚠️ Invalid project name handling
155
- - ✅ Confirmation of successful switch
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. recent_activity Tests (Important):**
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
- **9. create_memory_project Tests (Important):**
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
- **10. move_note Tests (Important):**
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
- **11. sync_status Tests (Important):**
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
- **12. view_note Tests (Enhanced):**
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
- **13. read_content Tests (Enhanced):**
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
- **14. delete_note Tests (Enhanced):**
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
- **15. list_directory Tests (Enhanced):**
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
- **16. set_default_project Tests (Enhanced):**
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. Switch contexts during conversation
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
- **18. canvas Tests (Specialized):**
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
- **19. MCP Prompts Tests (Specialized):**
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 switch overhead: 0.1s
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
- - Context preservation across operations
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
+