basic-memory 0.7.0__tar.gz → 0.8.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.7.0 → basic_memory-0.8.0}/CHANGELOG.md +59 -0
- basic_memory-0.8.0/CLAUDE.md +465 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/Makefile +12 -3
- {basic_memory-0.7.0 → basic_memory-0.8.0}/PKG-INFO +2 -1
- basic_memory-0.8.0/data/ai_assistant_guide.md +275 -0
- basic_memory-0.8.0/data/json_canvas_spec_1_0.md +115 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/pyproject.toml +2 -1
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/__init__.py +1 -1
- basic_memory-0.8.0/src/basic_memory/alembic/alembic.ini +119 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/alembic/env.py +23 -1
- basic_memory-0.8.0/src/basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +51 -0
- basic_memory-0.8.0/src/basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +44 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/api/app.py +0 -4
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/api/routers/knowledge_router.py +1 -1
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/api/routers/memory_router.py +16 -16
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/api/routers/resource_router.py +105 -4
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/cli/app.py +0 -2
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/status.py +9 -21
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/sync.py +12 -16
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/tools.py +36 -13
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/cli/main.py +0 -1
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/config.py +15 -1
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/file_utils.py +6 -4
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/markdown/entity_parser.py +3 -3
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/mcp/async_client.py +1 -1
- basic_memory-0.8.0/src/basic_memory/mcp/main.py +25 -0
- basic_memory-0.8.0/src/basic_memory/mcp/prompts/__init__.py +15 -0
- basic_memory-0.8.0/src/basic_memory/mcp/prompts/ai_assistant_guide.py +28 -0
- basic_memory-0.8.0/src/basic_memory/mcp/prompts/continue_conversation.py +172 -0
- basic_memory-0.8.0/src/basic_memory/mcp/prompts/json_canvas_spec.py +25 -0
- basic_memory-0.8.0/src/basic_memory/mcp/prompts/recent_activity.py +46 -0
- basic_memory-0.8.0/src/basic_memory/mcp/prompts/search.py +127 -0
- basic_memory-0.8.0/src/basic_memory/mcp/prompts/utils.py +98 -0
- basic_memory-0.8.0/src/basic_memory/mcp/server.py +11 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/mcp/tools/__init__.py +6 -4
- basic_memory-0.8.0/src/basic_memory/mcp/tools/canvas.py +99 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/mcp/tools/memory.py +12 -5
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/mcp/tools/notes.py +1 -2
- basic_memory-0.8.0/src/basic_memory/mcp/tools/resource.py +192 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/mcp/tools/utils.py +2 -1
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/models/knowledge.py +27 -11
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/repository/repository.py +1 -1
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/repository/search_repository.py +14 -4
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/schemas/__init__.py +0 -11
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/schemas/base.py +4 -1
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/schemas/memory.py +11 -2
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/schemas/search.py +2 -1
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/services/entity_service.py +19 -12
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/services/file_service.py +69 -2
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/services/link_resolver.py +12 -9
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/services/search_service.py +56 -12
- basic_memory-0.8.0/src/basic_memory/sync/__init__.py +6 -0
- basic_memory-0.8.0/src/basic_memory/sync/sync_service.py +345 -0
- basic_memory-0.8.0/src/basic_memory/sync/watch_service.py +214 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/utils.py +24 -9
- basic_memory-0.8.0/tests/Non-MarkdownFileSupport.pdf +0 -0
- basic_memory-0.8.0/tests/Screenshot.png +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/__init__.py +2 -2
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/api/test_resource_router.py +124 -0
- basic_memory-0.8.0/tests/cli/test_cli_tools.py +367 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/cli/test_status.py +8 -39
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/cli/test_sync.py +2 -1
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/conftest.py +39 -9
- basic_memory-0.8.0/tests/mcp/test_prompts.py +61 -0
- basic_memory-0.8.0/tests/mcp/test_resources.py +37 -0
- basic_memory-0.8.0/tests/mcp/test_tool_canvas.py +273 -0
- basic_memory-0.8.0/tests/mcp/test_tool_resource.py +228 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/schemas/test_memory_url.py +18 -1
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/schemas/test_schemas.py +14 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/schemas/test_search.py +5 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/services/test_entity_service.py +19 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/services/test_link_resolver.py +26 -1
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/sync/test_sync_service.py +188 -7
- basic_memory-0.8.0/tests/sync/test_watch_service.py +363 -0
- basic_memory-0.8.0/tests/sync/test_watch_service_edge_cases.py +75 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/uv.lock +119 -79
- basic_memory-0.7.0/src/basic_memory/alembic/README +0 -1
- basic_memory-0.7.0/src/basic_memory/mcp/server.py +0 -15
- basic_memory-0.7.0/src/basic_memory/schemas/discovery.py +0 -28
- basic_memory-0.7.0/src/basic_memory/sync/__init__.py +0 -5
- basic_memory-0.7.0/src/basic_memory/sync/file_change_scanner.py +0 -158
- basic_memory-0.7.0/src/basic_memory/sync/sync_service.py +0 -174
- basic_memory-0.7.0/src/basic_memory/sync/utils.py +0 -31
- basic_memory-0.7.0/src/basic_memory/sync/watch_service.py +0 -218
- basic_memory-0.7.0/tests/cli/test_cli_tools.py +0 -294
- basic_memory-0.7.0/tests/sync/test_file_change_scanner.py +0 -245
- basic_memory-0.7.0/tests/sync/test_watch_service.py +0 -121
- {basic_memory-0.7.0 → basic_memory-0.8.0}/.github/workflows/pr-title.yml +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/.github/workflows/release.yml +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/.github/workflows/test.yml +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/.gitignore +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/.python-version +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/CITATION.cff +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/CODE_OF_CONDUCT.md +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/CONTRIBUTING.md +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/LICENSE +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/README.md +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/basic-memory.md +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/installer/Basic.icns +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/installer/README.md +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/installer/icon.svg +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/installer/installer.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/installer/make_icons.sh +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/installer/setup.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/memory.json +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/scripts/install.sh +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/alembic/migrations.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/alembic/script.py.mako +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/api/__init__.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/api/routers/__init__.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/api/routers/search_router.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/cli/__init__.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/__init__.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/db.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/import_chatgpt.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/import_claude_conversations.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/import_claude_projects.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/import_memory_json.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/cli/commands/mcp.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/db.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/deps.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/markdown/__init__.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/markdown/markdown_processor.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/markdown/plugins.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/markdown/schemas.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/markdown/utils.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/mcp/__init__.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/mcp/tools/knowledge.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/mcp/tools/search.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/models/__init__.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/models/base.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/models/search.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/repository/__init__.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/repository/entity_repository.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/repository/observation_repository.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/repository/relation_repository.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/schemas/delete.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/schemas/request.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/schemas/response.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/services/__init__.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/services/context_service.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/services/exceptions.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/src/basic_memory/services/service.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/api/conftest.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/api/test_knowledge_router.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/api/test_memory_router.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/api/test_search_router.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/cli/test_import_chatgpt.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/cli/test_import_claude_conversations.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/cli/test_import_claude_projects.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/cli/test_import_memory_json.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/edit_file_test.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/markdown/__init__.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/markdown/test_entity_parser.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/markdown/test_markdown_plugins.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/markdown/test_markdown_processor.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/markdown/test_observation_edge_cases.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/markdown/test_parser_edge_cases.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/markdown/test_relation_edge_cases.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/markdown/test_task_detection.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/mcp/conftest.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/mcp/test_tool_knowledge.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/mcp/test_tool_memory.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/mcp/test_tool_notes.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/mcp/test_tool_search.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/mcp/test_tool_utils.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/repository/test_entity_repository.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/repository/test_observation_repository.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/repository/test_relation_repository.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/repository/test_repository.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/services/test_context_service.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/services/test_file_service.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/services/test_search_service.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/test_basic_memory.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/utils/test_file_utils.py +0 -0
- {basic_memory-0.7.0 → basic_memory-0.8.0}/tests/utils/test_permalink_formatting.py +0 -0
|
@@ -1,6 +1,65 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## v0.8.0 (2025-02-28)
|
|
5
|
+
|
|
6
|
+
### Chores
|
|
7
|
+
|
|
8
|
+
- Formatting
|
|
9
|
+
([`93cc637`](https://github.com/basicmachines-co/basic-memory/commit/93cc6379ebb9ecc6a1652feeeecbf47fc992d478))
|
|
10
|
+
|
|
11
|
+
- Refactor logging setup
|
|
12
|
+
([`f4b703e`](https://github.com/basicmachines-co/basic-memory/commit/f4b703e57f0ddf686de6840ff346b8be2be499ad))
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
- Add enhanced prompts and resources
|
|
17
|
+
([#15](https://github.com/basicmachines-co/basic-memory/pull/15),
|
|
18
|
+
[`093dab5`](https://github.com/basicmachines-co/basic-memory/commit/093dab5f03cf7b090a9f4003c55507859bf355b0))
|
|
19
|
+
|
|
20
|
+
## Summary - Add comprehensive documentation to all MCP prompt modules - Enhance search prompt with
|
|
21
|
+
detailed contextual output formatting - Implement consistent logging and docstring patterns across
|
|
22
|
+
prompt utilities - Fix type checking in prompt modules
|
|
23
|
+
|
|
24
|
+
## Prompts Added/Enhanced - `search.py`: New formatted output with relevance scores, excerpts, and
|
|
25
|
+
next steps - `recent_activity.py`: Enhanced with better metadata handling and documentation -
|
|
26
|
+
`continue_conversation.py`: Improved context management
|
|
27
|
+
|
|
28
|
+
## Resources Added/Enhanced - `ai_assistant_guide`: Resource with description to give to LLM to
|
|
29
|
+
understand how to use the tools
|
|
30
|
+
|
|
31
|
+
## Technical improvements - Added detailed docstrings to all prompt modules explaining their purpose
|
|
32
|
+
and usage - Enhanced the search prompt with rich contextual output that helps LLMs understand
|
|
33
|
+
results - Created a consistent pattern for formatting output across prompts - Improved error
|
|
34
|
+
handling in metadata extraction - Standardized import organization and naming conventions - Fixed
|
|
35
|
+
various type checking issues across the codebase
|
|
36
|
+
|
|
37
|
+
This PR is part of our ongoing effort to improve the MCP's interaction quality with LLMs, making the
|
|
38
|
+
system more helpful and intuitive for AI assistants to navigate knowledge bases.
|
|
39
|
+
|
|
40
|
+
🤖 Generated with [Claude Code](https://claude.ai/code)
|
|
41
|
+
|
|
42
|
+
---------
|
|
43
|
+
|
|
44
|
+
Co-authored-by: phernandez <phernandez@basicmachines.co>
|
|
45
|
+
|
|
46
|
+
- Add new `canvas` tool to create json canvas files in obsidian.
|
|
47
|
+
([#14](https://github.com/basicmachines-co/basic-memory/pull/14),
|
|
48
|
+
[`0d7b0b3`](https://github.com/basicmachines-co/basic-memory/commit/0d7b0b3d7ede7555450ddc9728951d4b1edbbb80))
|
|
49
|
+
|
|
50
|
+
Add new `canvas` tool to create json canvas files in obsidian.
|
|
51
|
+
|
|
52
|
+
---------
|
|
53
|
+
|
|
54
|
+
Co-authored-by: phernandez <phernandez@basicmachines.co>
|
|
55
|
+
|
|
56
|
+
- Incremental sync on watch ([#13](https://github.com/basicmachines-co/basic-memory/pull/13),
|
|
57
|
+
[`37a01b8`](https://github.com/basicmachines-co/basic-memory/commit/37a01b806d0758029d34a862e76d44c7e5d538a5))
|
|
58
|
+
|
|
59
|
+
- incremental sync on watch - sync non-markdown files in knowledge base - experimental
|
|
60
|
+
`read_resource` tool for reading non-markdown files in raw form (pdf, image)
|
|
61
|
+
|
|
62
|
+
|
|
4
63
|
## v0.7.0 (2025-02-19)
|
|
5
64
|
|
|
6
65
|
### Bug Fixes
|
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
# CLAUDE.md - Basic Memory Project Guide
|
|
2
|
+
|
|
3
|
+
## Project Overview
|
|
4
|
+
|
|
5
|
+
Basic Memory is a local-first knowledge management system built on the Model Context Protocol (MCP). It enables
|
|
6
|
+
bidirectional communication between LLMs (like Claude) and markdown files, creating a personal knowledge graph that can
|
|
7
|
+
be traversed using memory:// URLs.
|
|
8
|
+
|
|
9
|
+
## CODEBASE DEVELOPMENT
|
|
10
|
+
|
|
11
|
+
### Build and Test Commands
|
|
12
|
+
|
|
13
|
+
- Install: `make install` or `pip install -e ".[dev]"`
|
|
14
|
+
- Run tests: `uv run pytest -p pytest_mock -v` or `make test`
|
|
15
|
+
- Single test: `pytest tests/path/to/test_file.py::test_function_name`
|
|
16
|
+
- Lint: `make lint` or `ruff check . --fix`
|
|
17
|
+
- Type check: `make type-check` or `uv run pyright`
|
|
18
|
+
- Format: `make format` or `uv run ruff format .`
|
|
19
|
+
- Run checks: `make check` (runs lint, format, type-check, test)
|
|
20
|
+
- Create migration: `make migration m="Your migration message"`
|
|
21
|
+
- Run development MCP server: `uv run mcp dev src/basic_memory/mcp/main.py`
|
|
22
|
+
|
|
23
|
+
### Code Style Guidelines
|
|
24
|
+
|
|
25
|
+
- Line length: 100 characters max
|
|
26
|
+
- Python 3.12+ with full type annotations
|
|
27
|
+
- Format with ruff (consistent styling)
|
|
28
|
+
- Import order: standard lib, third-party, local imports
|
|
29
|
+
- Naming: snake_case for functions/variables, PascalCase for classes
|
|
30
|
+
- Prefer async patterns with SQLAlchemy 2.0
|
|
31
|
+
- Use Pydantic v2 for data validation and schemas
|
|
32
|
+
- CLI uses Typer for command structure
|
|
33
|
+
- API uses FastAPI for endpoints
|
|
34
|
+
- Use dedicated exceptions from services/exceptions.py
|
|
35
|
+
- Follow the repository pattern for data access
|
|
36
|
+
|
|
37
|
+
### Codebase Architecture
|
|
38
|
+
|
|
39
|
+
- `/api` - FastAPI implementation of REST endpoints
|
|
40
|
+
- `/cli` - Typer command-line interface
|
|
41
|
+
- `/mcp` - Model Context Protocol server implementation
|
|
42
|
+
- `/models` - SQLAlchemy ORM models
|
|
43
|
+
- `/repository` - Data access layer
|
|
44
|
+
- `/schemas` - Pydantic models for validation
|
|
45
|
+
- `/services` - Business logic layer
|
|
46
|
+
- `/sync` - File synchronization services
|
|
47
|
+
- `/markdown` - Markdown parsing and processing
|
|
48
|
+
|
|
49
|
+
### Development Notes
|
|
50
|
+
|
|
51
|
+
- MCP tools are defined in src/basic_memory/mcp/tools/
|
|
52
|
+
- MCP prompts are defined in src/basic_memory/mcp/prompts/
|
|
53
|
+
- Schema changes require Alembic migrations
|
|
54
|
+
- SQLite is used for indexing, files are source of truth
|
|
55
|
+
- Testing uses pytest with asyncio support (strict mode)
|
|
56
|
+
- Test database uses in-memory SQLite
|
|
57
|
+
- MCP tools should be atomic, composable operations
|
|
58
|
+
- Use `textwrap.dedent()` for multi-line string formatting in prompts and tools
|
|
59
|
+
- Prompts are special types of tools that format content for user consumption
|
|
60
|
+
|
|
61
|
+
## BASIC MEMORY PRODUCT USAGE
|
|
62
|
+
|
|
63
|
+
### Knowledge Structure
|
|
64
|
+
|
|
65
|
+
- Entity: Any concept, document, or idea represented as a markdown file
|
|
66
|
+
- Observation: A categorized fact about an entity (`[category] content`)
|
|
67
|
+
- Relation: A directional link between entities (`relation_type [[Target]]`)
|
|
68
|
+
- Frontmatter: YAML metadata at the top of markdown files
|
|
69
|
+
- Knowledge representation follows precise markdown format:
|
|
70
|
+
- Observations with [category] prefixes
|
|
71
|
+
- Relations with WikiLinks [[Entity]]
|
|
72
|
+
- Frontmatter with metadata
|
|
73
|
+
|
|
74
|
+
### Basic Memory Commands
|
|
75
|
+
|
|
76
|
+
- Sync knowledge: `basic-memory sync` or `basic-memory sync --watch`
|
|
77
|
+
- Import from Claude: `basic-memory import claude conversations`
|
|
78
|
+
- Import from ChatGPT: `basic-memory import chatgpt`
|
|
79
|
+
- Import from JSON: `basic-memory import memory-json`
|
|
80
|
+
- Check status: `basic-memory status`
|
|
81
|
+
- Tool access: `basic-memory tools` (provides CLI access to MCP tools)
|
|
82
|
+
- Guide: `basic-memory tools basic-memory-guide`
|
|
83
|
+
- Continue: `basic-memory tools continue-conversation --topic="search"`
|
|
84
|
+
|
|
85
|
+
### MCP Capabilities
|
|
86
|
+
|
|
87
|
+
- Basic Memory exposes these MCP tools to LLMs:
|
|
88
|
+
- `write_note()` - Create/update markdown notes
|
|
89
|
+
- `read_note()` - Read existing notes
|
|
90
|
+
- `build_context()` - Navigate the knowledge graph via memory:// URLs
|
|
91
|
+
- `search()` - Query the knowledge base
|
|
92
|
+
- `recent_activity()` - Get recently updated information
|
|
93
|
+
- `canvas()` - Generate JSON canvas files for Obsidian
|
|
94
|
+
|
|
95
|
+
- MCP Prompts for better AI interaction:
|
|
96
|
+
- `basic_memory_guide()` - Get guidance on using Basic Memory tools
|
|
97
|
+
- `continue_session()` - Continue previous conversations with context
|
|
98
|
+
|
|
99
|
+
### Best Practices
|
|
100
|
+
|
|
101
|
+
- Use memory:// URLs to reference entities
|
|
102
|
+
- Add clear categories to observations (e.g., [idea], [decision], [requirement])
|
|
103
|
+
- Use descriptive relation types (e.g., implements, depends_on, contradicts)
|
|
104
|
+
- Maintain unique permalinks for stable entity references
|
|
105
|
+
- Take advantage of both manual editing and LLM-assisted knowledge creation
|
|
106
|
+
- Use `basic_memory_guide()` when starting new conversations to bootstrap tool knowledge
|
|
107
|
+
- Use `continue_session()` with topic keywords to pick up previous conversations
|
|
108
|
+
- Encourage Claude to proactively use tools by providing clear instructions
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
id: process/ai-code-flow.md
|
|
112
|
+
created: '2025-01-03T22:11:42.803071+00:00'
|
|
113
|
+
modified: '2025-01-03T22:11:42.803071+00:00'
|
|
114
|
+
permalink: process/ai-code-flow
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## AI-Human Collaborative Development: A New Model
|
|
118
|
+
|
|
119
|
+
What makes Basic Memory unique isn't just its technical architecture - it emerged from and enables a new kind of
|
|
120
|
+
development process. While many use AI for code generation or problem-solving, we've discovered something more powerful:
|
|
121
|
+
true collaborative development between humans and AI.
|
|
122
|
+
|
|
123
|
+
### The Basic Memory Development Story
|
|
124
|
+
|
|
125
|
+
Our own development process demonstrates this:
|
|
126
|
+
|
|
127
|
+
1. AI (Claude) writes initial implementation
|
|
128
|
+
2. Human (Paul) reviews, runs, and commits code
|
|
129
|
+
3. Knowledge persists across conversations
|
|
130
|
+
4. Development continues seamlessly even across different AI instances
|
|
131
|
+
5. Results improve through iterative collaboration
|
|
132
|
+
|
|
133
|
+
```mermaid
|
|
134
|
+
graph TD
|
|
135
|
+
subgraph "Human Activities"
|
|
136
|
+
Review[Code Review]
|
|
137
|
+
Test[Run Tests]
|
|
138
|
+
Commit[Git Commit]
|
|
139
|
+
Plan[Strategic Planning]
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
subgraph "AI Activities"
|
|
143
|
+
Code[Write Code]
|
|
144
|
+
Design[Architecture Design]
|
|
145
|
+
Debug[Problem Solving]
|
|
146
|
+
Doc[Documentation]
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
subgraph "Shared Knowledge"
|
|
150
|
+
KB[Knowledge Base]
|
|
151
|
+
Context[Conversation Context]
|
|
152
|
+
History[Development History]
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
Code --> Review
|
|
156
|
+
Review --> Test
|
|
157
|
+
Test --> Commit
|
|
158
|
+
KB --> Code
|
|
159
|
+
KB --> Design
|
|
160
|
+
Context --> Debug
|
|
161
|
+
Review --> KB
|
|
162
|
+
Commit --> History
|
|
163
|
+
Plan --> Context
|
|
164
|
+
classDef default fill: #2d2d2d, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
|
|
165
|
+
classDef shared fill: #353535, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
|
|
166
|
+
class KB, Context, History shared
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Beyond "AI Tools"
|
|
170
|
+
|
|
171
|
+
This isn't just about using AI to generate code. It's about:
|
|
172
|
+
|
|
173
|
+
- True collaborative development
|
|
174
|
+
- Persistent knowledge across sessions
|
|
175
|
+
- Seamless context switching between AI instances
|
|
176
|
+
- Iterative improvement through shared understanding
|
|
177
|
+
- Building complex systems through sustained collaboration
|
|
178
|
+
|
|
179
|
+
### The Multiplier Effect
|
|
180
|
+
|
|
181
|
+
Having an AI collaborator who:
|
|
182
|
+
|
|
183
|
+
- Remembers all technical discussions
|
|
184
|
+
- Can reference any previous decision
|
|
185
|
+
- Writes consistent, well-documented code
|
|
186
|
+
- Maintains context across sessions
|
|
187
|
+
- Works at human speed but with machine precision
|
|
188
|
+
|
|
189
|
+
It's like having a team of senior developers who:
|
|
190
|
+
|
|
191
|
+
- Never forget project details
|
|
192
|
+
- Always write clear documentation
|
|
193
|
+
- Maintain perfect consistency
|
|
194
|
+
- Are available 24/7
|
|
195
|
+
- Learn and adapt from every interaction
|
|
196
|
+
|
|
197
|
+
### Key Innovation
|
|
198
|
+
|
|
199
|
+
The breakthrough is turning automated assistance into true collaboration:
|
|
200
|
+
|
|
201
|
+
- AI isn't just a tool, but a development partner
|
|
202
|
+
- Knowledge builds naturally through use
|
|
203
|
+
- Context persists across all interactions
|
|
204
|
+
- Work continues seamlessly across sessions
|
|
205
|
+
- Development becomes truly collaborative
|
|
206
|
+
|
|
207
|
+
This approach has implications far beyond just our project - it's a new model for how humans and AI can work together to
|
|
208
|
+
build complex systems.
|
|
209
|
+
|
|
210
|
+
## AI-Human Collaboration: Lessons from Basic Memory
|
|
211
|
+
|
|
212
|
+
### Technical Breakthroughs
|
|
213
|
+
|
|
214
|
+
#### Session Management Evolution
|
|
215
|
+
|
|
216
|
+
```mermaid
|
|
217
|
+
graph TD
|
|
218
|
+
S1[Session Start] -->|Load Context| KG[Knowledge Graph]
|
|
219
|
+
KG -->|Build Context| AI[AI Understanding]
|
|
220
|
+
AI -->|Collaborate| H[Human Review]
|
|
221
|
+
H -->|Commit Changes| Git
|
|
222
|
+
Git -->|New Session| S2[Session Resume]
|
|
223
|
+
classDef default fill: #2d2d2d, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
#### File Collaboration Pattern
|
|
227
|
+
|
|
228
|
+
```mermaid
|
|
229
|
+
graph TD
|
|
230
|
+
H1[Human] -->|1 . Update & Commit| Git
|
|
231
|
+
Git -->|2 . Read File| AI
|
|
232
|
+
AI -->|3 . Write Changes| File
|
|
233
|
+
File -->|4 . Review in IDE| H2[Human]
|
|
234
|
+
|
|
235
|
+
subgraph "Synchronization"
|
|
236
|
+
Git
|
|
237
|
+
File
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
classDef default fill: #2d2d2d, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
|
|
241
|
+
classDef sync fill: #353535, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
|
|
242
|
+
class Git, File sync
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### Productivity Transformation
|
|
246
|
+
|
|
247
|
+
#### Development Timeline Comparison
|
|
248
|
+
|
|
249
|
+
```mermaid
|
|
250
|
+
graph LR
|
|
251
|
+
subgraph "Solo Development"
|
|
252
|
+
S1[basic-foundation] -->|6 months| S2[Completion]
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
subgraph "Collaborative Development"
|
|
256
|
+
C1[basic-memory] -->|Rapid Progress| C2[basic-factory]
|
|
257
|
+
C2 -->|Continuous Evolution| C3[Future Projects]
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
classDef default fill: #2d2d2d, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### Key Learnings
|
|
264
|
+
|
|
265
|
+
1. **Technical Process Innovation**
|
|
266
|
+
- Discovered effective file collaboration patterns
|
|
267
|
+
- Mastered MCP server interface together
|
|
268
|
+
- Developed robust session management
|
|
269
|
+
- Created reliable git-based workflow
|
|
270
|
+
|
|
271
|
+
2. **Expanded Possibility Space**
|
|
272
|
+
- Projects previously considered too complex become achievable
|
|
273
|
+
- Rapid iteration on complex technical concepts
|
|
274
|
+
- Broader exploration of solution spaces
|
|
275
|
+
- Confidence to tackle ambitious challenges
|
|
276
|
+
|
|
277
|
+
3. **Motivation and Momentum**
|
|
278
|
+
- No more solo debugging sessions
|
|
279
|
+
- Shared problem-solving reduces cognitive load
|
|
280
|
+
- Continuous progress maintains motivation
|
|
281
|
+
- Complex learning curves become collaborative adventures
|
|
282
|
+
|
|
283
|
+
4. **Knowledge Management**
|
|
284
|
+
- Git commits capture decision points
|
|
285
|
+
- Conversations document rationale
|
|
286
|
+
- Code reviews become learning opportunities
|
|
287
|
+
- Shared context builds over time
|
|
288
|
+
|
|
289
|
+
### The "10x Developer" Truth
|
|
290
|
+
|
|
291
|
+
It's not about having an AI that makes you 10x faster - it's about:
|
|
292
|
+
|
|
293
|
+
- Never facing a blank editor alone
|
|
294
|
+
- Always having a thought partner
|
|
295
|
+
- Reducing decision fatigue
|
|
296
|
+
- Maintaining momentum through challenges
|
|
297
|
+
- Building shared knowledge over time
|
|
298
|
+
|
|
299
|
+
### Real Examples from Our Work
|
|
300
|
+
|
|
301
|
+
#### Session Management Evolution
|
|
302
|
+
|
|
303
|
+
```python
|
|
304
|
+
# Before: Opaque MCP server interface
|
|
305
|
+
server = MCPServer()
|
|
306
|
+
server.handle_request(...)
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
# After: Clear context management
|
|
310
|
+
class MemoryServer(MCPServer):
|
|
311
|
+
def __init__(self, project_config):
|
|
312
|
+
self.memory_service = MemoryService(project_config)
|
|
313
|
+
|
|
314
|
+
async def handle_create_entities(self, request):
|
|
315
|
+
context = await self.memory_service.load_context(
|
|
316
|
+
request.project,
|
|
317
|
+
include_relations=True
|
|
318
|
+
)
|
|
319
|
+
# Collaborative magic happens here
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
#### File Collaboration
|
|
323
|
+
|
|
324
|
+
```markdown
|
|
325
|
+
# Memory Service Discussion (Chat Log)
|
|
326
|
+
|
|
327
|
+
Claude: Here's the updated memory service implementation...
|
|
328
|
+
Human: Looks good! I'll commit and we can iterate.
|
|
329
|
+
Claude: Reading latest version from git...
|
|
330
|
+
Human: Want to add relation support?
|
|
331
|
+
Claude: Analyzing current implementation...
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### Impact on Development Culture
|
|
335
|
+
|
|
336
|
+
What we've discovered is more than a technical process - it's a new way of thinking about development:
|
|
337
|
+
|
|
338
|
+
1. **From Solo to Collaborative**
|
|
339
|
+
- Traditional: Developer alone with problems
|
|
340
|
+
- New: Continuous collaborative problem-solving
|
|
341
|
+
|
|
342
|
+
2. **From Linear to Exploratory**
|
|
343
|
+
- Traditional: Constrained by individual knowledge
|
|
344
|
+
- New: Free to explore broader solution spaces
|
|
345
|
+
|
|
346
|
+
3. **From Draining to Energizing**
|
|
347
|
+
- Traditional: High cognitive load
|
|
348
|
+
- New: Shared intellectual adventure
|
|
349
|
+
|
|
350
|
+
```mermaid
|
|
351
|
+
graph TD
|
|
352
|
+
C1[Chat: Initial Design] -->|leads_to| D1{Design Decision}
|
|
353
|
+
C2[Chat: Implementation] -->|references| D1
|
|
354
|
+
C2 -->|results_in| Code[Code Change]
|
|
355
|
+
D1 -->|influences| Code
|
|
356
|
+
Code -->|implements| Concept{Semantic Web}
|
|
357
|
+
Test[Test Suite] -->|validates| Code
|
|
358
|
+
Doc[Documentation] -->|describes| Code
|
|
359
|
+
D1 -.->|captured_in| Basic[Basic Memory]
|
|
360
|
+
Code -.->|tracked_in| Basic
|
|
361
|
+
Test -.->|stored_in| Basic
|
|
362
|
+
classDef default fill: #2d2d2d, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
|
|
363
|
+
classDef decision fill: #353535, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
|
|
364
|
+
classDef system fill: #404040, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
|
|
365
|
+
class D1 decision
|
|
366
|
+
class Basic system
|
|
367
|
+
class Concept decision
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### Future Implications
|
|
371
|
+
|
|
372
|
+
This model of human-AI collaboration suggests:
|
|
373
|
+
|
|
374
|
+
1. More ambitious projects become accessible
|
|
375
|
+
2. Learning curves become less daunting
|
|
376
|
+
3. Development becomes more enjoyable
|
|
377
|
+
4. Complex systems can be built more reliably
|
|
378
|
+
|
|
379
|
+
The real breakthrough isn't just the technical achievements, but discovering how to make complex development sustainable
|
|
380
|
+
and enjoyable through true collaboration.
|
|
381
|
+
|
|
382
|
+
## Beyond Code Generation: A New Development Paradigm
|
|
383
|
+
|
|
384
|
+
What we've discovered through building Basic Memory isn't just a knowledge management system - it's a new way of
|
|
385
|
+
thinking about human-AI collaboration. This isn't about AI completing your code or suggesting functions. It's about true
|
|
386
|
+
intellectual partnership.
|
|
387
|
+
|
|
388
|
+
### From Tools to Partners
|
|
389
|
+
|
|
390
|
+
```mermaid
|
|
391
|
+
graph TD
|
|
392
|
+
subgraph "Traditional AI Tools"
|
|
393
|
+
AC[Autocomplete]
|
|
394
|
+
CG[Code Generation]
|
|
395
|
+
SR[Syntax Review]
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
subgraph "Collaborative Development"
|
|
399
|
+
TP[Thought Partnership]
|
|
400
|
+
PS[Problem Solving]
|
|
401
|
+
AD[Architecture Design]
|
|
402
|
+
KS[Knowledge Synthesis]
|
|
403
|
+
end
|
|
404
|
+
|
|
405
|
+
subgraph "Outcomes"
|
|
406
|
+
BI[Bigger Ideas]
|
|
407
|
+
CP[Complex Projects]
|
|
408
|
+
KB[Knowledge Building]
|
|
409
|
+
MI[More Innovation]
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
TP --> BI
|
|
413
|
+
PS --> CP
|
|
414
|
+
AD --> MI
|
|
415
|
+
KS --> KB
|
|
416
|
+
classDef default fill: #2d2d2d, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
|
|
417
|
+
classDef outcomes fill: #353535, stroke: #d4d4d4, stroke-width: 2px, color: #d4d4d4
|
|
418
|
+
class BI, CP, KB, MI outcomes
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
### The Power of Partnership
|
|
422
|
+
|
|
423
|
+
Through our own development journey, we've discovered that true AI collaboration means:
|
|
424
|
+
|
|
425
|
+
1. **Expanded Thinking Space**
|
|
426
|
+
- Explore more possibilities
|
|
427
|
+
- Challenge assumptions
|
|
428
|
+
- Combine different perspectives
|
|
429
|
+
- Take on bigger challenges
|
|
430
|
+
|
|
431
|
+
2. **Continuous Momentum**
|
|
432
|
+
- Never face complex problems alone
|
|
433
|
+
- Maintain enthusiasm through challenges
|
|
434
|
+
- Turn obstacles into opportunities
|
|
435
|
+
- Keep projects moving forward
|
|
436
|
+
|
|
437
|
+
3. **Knowledge Amplification**
|
|
438
|
+
- Build on every interaction
|
|
439
|
+
- Capture insights automatically
|
|
440
|
+
- Learn from each decision
|
|
441
|
+
- Grow shared understanding
|
|
442
|
+
|
|
443
|
+
### Beyond Code Generation
|
|
444
|
+
|
|
445
|
+
This new paradigm transforms development from:
|
|
446
|
+
|
|
447
|
+
- Solo problem-solving → Collaborative exploration
|
|
448
|
+
- Limited perspective → Multiple viewpoints
|
|
449
|
+
- Linear progress → Parallel innovation
|
|
450
|
+
- Isolated knowledge → Shared understanding
|
|
451
|
+
|
|
452
|
+
### Real Impact
|
|
453
|
+
|
|
454
|
+
What makes this transformative:
|
|
455
|
+
|
|
456
|
+
- Projects that seemed too ambitious become achievable
|
|
457
|
+
- Complex problems become engaging challenges
|
|
458
|
+
- Learning curves become collaborative adventures
|
|
459
|
+
- Development becomes a shared journey of discovery
|
|
460
|
+
|
|
461
|
+
The result isn't just better code - it's better thinking, more ambitious projects, and a more enjoyable development
|
|
462
|
+
process.
|
|
463
|
+
|
|
464
|
+
This is the future of development: not AI replacing developers, but empowering them to think bigger, work smarter, and
|
|
465
|
+
build more amazing things together.
|
|
@@ -27,7 +27,7 @@ format:
|
|
|
27
27
|
uv run ruff format .
|
|
28
28
|
|
|
29
29
|
# run inspector tool
|
|
30
|
-
run-
|
|
30
|
+
run-inspector:
|
|
31
31
|
uv run mcp dev src/basic_memory/mcp/main.py
|
|
32
32
|
|
|
33
33
|
# Build app installer
|
|
@@ -40,6 +40,15 @@ installer-win:
|
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
update-deps:
|
|
43
|
-
uv lock
|
|
43
|
+
uv lock --upgrade
|
|
44
44
|
|
|
45
|
-
check: lint format type-check test
|
|
45
|
+
check: lint format type-check test
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
# Target for generating Alembic migrations with a message from command line
|
|
49
|
+
migration:
|
|
50
|
+
@if [ -z "$(m)" ]; then \
|
|
51
|
+
echo "Usage: make migration m=\"Your migration message\""; \
|
|
52
|
+
exit 1; \
|
|
53
|
+
fi; \
|
|
54
|
+
cd src/basic_memory/alembic && alembic revision --autogenerate -m "$(m)"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: basic-memory
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.0
|
|
4
4
|
Summary: Local-first knowledge management combining Zettelkasten with knowledge graphs
|
|
5
5
|
Project-URL: Homepage, https://github.com/basicmachines-co/basic-memory
|
|
6
6
|
Project-URL: Repository, https://github.com/basicmachines-co/basic-memory
|
|
@@ -19,6 +19,7 @@ Requires-Dist: logfire[fastapi,httpx,sqlalchemy,sqlite3]>=3.6.0
|
|
|
19
19
|
Requires-Dist: loguru>=0.7.3
|
|
20
20
|
Requires-Dist: markdown-it-py>=3.0.0
|
|
21
21
|
Requires-Dist: mcp>=1.2.0
|
|
22
|
+
Requires-Dist: pillow>=11.1.0
|
|
22
23
|
Requires-Dist: pydantic-settings>=2.6.1
|
|
23
24
|
Requires-Dist: pydantic[email,timezone]>=2.10.3
|
|
24
25
|
Requires-Dist: pyright>=1.1.390
|