basic-memory 0.7.0__py3-none-any.whl → 0.16.1__py3-none-any.whl
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/__init__.py +5 -1
- basic_memory/alembic/alembic.ini +119 -0
- basic_memory/alembic/env.py +27 -3
- basic_memory/alembic/migrations.py +4 -9
- basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py +51 -0
- basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py +108 -0
- basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +104 -0
- basic_memory/alembic/versions/9d9c1cb7d8f5_add_mtime_and_size_columns_to_entity_.py +49 -0
- basic_memory/alembic/versions/a1b2c3d4e5f6_fix_project_foreign_keys.py +49 -0
- basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py +44 -0
- basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py +100 -0
- basic_memory/alembic/versions/e7e1f4367280_add_scan_watermark_tracking_to_project.py +37 -0
- basic_memory/api/app.py +64 -18
- basic_memory/api/routers/__init__.py +4 -1
- basic_memory/api/routers/directory_router.py +84 -0
- basic_memory/api/routers/importer_router.py +152 -0
- basic_memory/api/routers/knowledge_router.py +166 -21
- basic_memory/api/routers/management_router.py +80 -0
- basic_memory/api/routers/memory_router.py +9 -64
- basic_memory/api/routers/project_router.py +406 -0
- basic_memory/api/routers/prompt_router.py +260 -0
- basic_memory/api/routers/resource_router.py +119 -4
- basic_memory/api/routers/search_router.py +5 -5
- basic_memory/api/routers/utils.py +130 -0
- basic_memory/api/template_loader.py +292 -0
- basic_memory/cli/app.py +43 -9
- basic_memory/cli/auth.py +277 -0
- basic_memory/cli/commands/__init__.py +13 -2
- basic_memory/cli/commands/cloud/__init__.py +6 -0
- basic_memory/cli/commands/cloud/api_client.py +112 -0
- basic_memory/cli/commands/cloud/bisync_commands.py +110 -0
- basic_memory/cli/commands/cloud/cloud_utils.py +101 -0
- basic_memory/cli/commands/cloud/core_commands.py +195 -0
- basic_memory/cli/commands/cloud/rclone_commands.py +301 -0
- basic_memory/cli/commands/cloud/rclone_config.py +110 -0
- basic_memory/cli/commands/cloud/rclone_installer.py +249 -0
- basic_memory/cli/commands/cloud/upload.py +233 -0
- basic_memory/cli/commands/cloud/upload_command.py +124 -0
- basic_memory/cli/commands/command_utils.py +51 -0
- basic_memory/cli/commands/db.py +28 -12
- basic_memory/cli/commands/import_chatgpt.py +40 -220
- basic_memory/cli/commands/import_claude_conversations.py +41 -168
- basic_memory/cli/commands/import_claude_projects.py +46 -157
- basic_memory/cli/commands/import_memory_json.py +48 -108
- basic_memory/cli/commands/mcp.py +84 -10
- basic_memory/cli/commands/project.py +876 -0
- basic_memory/cli/commands/status.py +50 -33
- basic_memory/cli/commands/tool.py +341 -0
- basic_memory/cli/main.py +8 -7
- basic_memory/config.py +477 -23
- basic_memory/db.py +168 -17
- basic_memory/deps.py +251 -25
- basic_memory/file_utils.py +113 -58
- basic_memory/ignore_utils.py +297 -0
- basic_memory/importers/__init__.py +27 -0
- basic_memory/importers/base.py +79 -0
- basic_memory/importers/chatgpt_importer.py +232 -0
- basic_memory/importers/claude_conversations_importer.py +177 -0
- basic_memory/importers/claude_projects_importer.py +148 -0
- basic_memory/importers/memory_json_importer.py +108 -0
- basic_memory/importers/utils.py +58 -0
- basic_memory/markdown/entity_parser.py +143 -23
- basic_memory/markdown/markdown_processor.py +3 -3
- basic_memory/markdown/plugins.py +39 -21
- basic_memory/markdown/schemas.py +1 -1
- basic_memory/markdown/utils.py +28 -13
- basic_memory/mcp/async_client.py +134 -4
- basic_memory/mcp/project_context.py +141 -0
- basic_memory/mcp/prompts/__init__.py +19 -0
- basic_memory/mcp/prompts/ai_assistant_guide.py +70 -0
- basic_memory/mcp/prompts/continue_conversation.py +62 -0
- basic_memory/mcp/prompts/recent_activity.py +188 -0
- basic_memory/mcp/prompts/search.py +57 -0
- basic_memory/mcp/prompts/utils.py +162 -0
- basic_memory/mcp/resources/ai_assistant_guide.md +283 -0
- basic_memory/mcp/resources/project_info.py +71 -0
- basic_memory/mcp/server.py +7 -13
- basic_memory/mcp/tools/__init__.py +33 -21
- basic_memory/mcp/tools/build_context.py +120 -0
- basic_memory/mcp/tools/canvas.py +130 -0
- basic_memory/mcp/tools/chatgpt_tools.py +187 -0
- basic_memory/mcp/tools/delete_note.py +225 -0
- basic_memory/mcp/tools/edit_note.py +320 -0
- basic_memory/mcp/tools/list_directory.py +167 -0
- basic_memory/mcp/tools/move_note.py +545 -0
- basic_memory/mcp/tools/project_management.py +200 -0
- basic_memory/mcp/tools/read_content.py +271 -0
- basic_memory/mcp/tools/read_note.py +255 -0
- basic_memory/mcp/tools/recent_activity.py +534 -0
- basic_memory/mcp/tools/search.py +369 -23
- basic_memory/mcp/tools/utils.py +374 -16
- basic_memory/mcp/tools/view_note.py +77 -0
- basic_memory/mcp/tools/write_note.py +207 -0
- basic_memory/models/__init__.py +3 -2
- basic_memory/models/knowledge.py +67 -15
- basic_memory/models/project.py +87 -0
- basic_memory/models/search.py +10 -6
- basic_memory/repository/__init__.py +2 -0
- basic_memory/repository/entity_repository.py +229 -7
- basic_memory/repository/observation_repository.py +35 -3
- basic_memory/repository/project_info_repository.py +10 -0
- basic_memory/repository/project_repository.py +103 -0
- basic_memory/repository/relation_repository.py +21 -2
- basic_memory/repository/repository.py +147 -29
- basic_memory/repository/search_repository.py +411 -62
- basic_memory/schemas/__init__.py +22 -9
- basic_memory/schemas/base.py +97 -8
- basic_memory/schemas/cloud.py +50 -0
- basic_memory/schemas/directory.py +30 -0
- basic_memory/schemas/importer.py +35 -0
- basic_memory/schemas/memory.py +187 -25
- basic_memory/schemas/project_info.py +211 -0
- basic_memory/schemas/prompt.py +90 -0
- basic_memory/schemas/request.py +56 -2
- basic_memory/schemas/response.py +1 -1
- basic_memory/schemas/search.py +31 -35
- basic_memory/schemas/sync_report.py +72 -0
- basic_memory/services/__init__.py +2 -1
- basic_memory/services/context_service.py +241 -104
- basic_memory/services/directory_service.py +295 -0
- basic_memory/services/entity_service.py +590 -60
- basic_memory/services/exceptions.py +21 -0
- basic_memory/services/file_service.py +284 -30
- basic_memory/services/initialization.py +191 -0
- basic_memory/services/link_resolver.py +49 -56
- basic_memory/services/project_service.py +863 -0
- basic_memory/services/search_service.py +168 -32
- basic_memory/sync/__init__.py +3 -2
- basic_memory/sync/background_sync.py +26 -0
- basic_memory/sync/sync_service.py +1180 -109
- basic_memory/sync/watch_service.py +412 -135
- basic_memory/templates/prompts/continue_conversation.hbs +110 -0
- basic_memory/templates/prompts/search.hbs +101 -0
- basic_memory/utils.py +383 -51
- basic_memory-0.16.1.dist-info/METADATA +493 -0
- basic_memory-0.16.1.dist-info/RECORD +148 -0
- {basic_memory-0.7.0.dist-info → basic_memory-0.16.1.dist-info}/entry_points.txt +1 -0
- basic_memory/alembic/README +0 -1
- basic_memory/cli/commands/sync.py +0 -206
- basic_memory/cli/commands/tools.py +0 -157
- basic_memory/mcp/tools/knowledge.py +0 -68
- basic_memory/mcp/tools/memory.py +0 -170
- basic_memory/mcp/tools/notes.py +0 -202
- basic_memory/schemas/discovery.py +0 -28
- basic_memory/sync/file_change_scanner.py +0 -158
- basic_memory/sync/utils.py +0 -31
- basic_memory-0.7.0.dist-info/METADATA +0 -378
- basic_memory-0.7.0.dist-info/RECORD +0 -82
- {basic_memory-0.7.0.dist-info → basic_memory-0.16.1.dist-info}/WHEEL +0 -0
- {basic_memory-0.7.0.dist-info → basic_memory-0.16.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Continuing conversation on: {{ topic }}
|
|
2
|
+
|
|
3
|
+
This is a memory retrieval session.
|
|
4
|
+
|
|
5
|
+
Please use the available basic-memory tools to gather relevant context before responding. Start by executing one of the suggested commands below to retrieve content.
|
|
6
|
+
|
|
7
|
+
> **Knowledge Capture Recommendation:** As you continue this conversation, actively look for opportunities to record new information, decisions, or insights that emerge. Use `write_note()` to document important context.
|
|
8
|
+
|
|
9
|
+
Here's what I found from previous conversations:
|
|
10
|
+
|
|
11
|
+
{{#if has_results}}
|
|
12
|
+
{{#each hierarchical_results}}
|
|
13
|
+
<memory>
|
|
14
|
+
--- memory://{{ primary_result.permalink }}
|
|
15
|
+
|
|
16
|
+
## {{ primary_result.title }}
|
|
17
|
+
- **Type**: {{ primary_result.type }}
|
|
18
|
+
- **Created**: {{date primary_result.created_at "%Y-%m-%d %H:%M"}}
|
|
19
|
+
|
|
20
|
+
{{#if primary_result.content}}
|
|
21
|
+
**Excerpt**:
|
|
22
|
+
<excerpt>
|
|
23
|
+
{{ primary_result.content }}
|
|
24
|
+
</excerpt>
|
|
25
|
+
{{/if}}
|
|
26
|
+
|
|
27
|
+
{{#if observations}}
|
|
28
|
+
## Observations
|
|
29
|
+
{{#each observations}}
|
|
30
|
+
<observation>
|
|
31
|
+
- [{{ category }}] {{ content }}
|
|
32
|
+
</observation>
|
|
33
|
+
{{/each}}
|
|
34
|
+
{{/if}}
|
|
35
|
+
|
|
36
|
+
You can read this document with: `read_note("{{ primary_result.permalink }}")`
|
|
37
|
+
|
|
38
|
+
{{#if related_results}}
|
|
39
|
+
## Related Context
|
|
40
|
+
|
|
41
|
+
{{#each related_results}}
|
|
42
|
+
<related>
|
|
43
|
+
- type: **{{ type }}**
|
|
44
|
+
- title: {{ title }}
|
|
45
|
+
|
|
46
|
+
{{#if permalink}}
|
|
47
|
+
You can view this document with: `read_note("{{ permalink }}")`
|
|
48
|
+
{{else}}
|
|
49
|
+
You can view this file with: `read_file("{{ file_path }}")`
|
|
50
|
+
{{/if}}
|
|
51
|
+
</related>
|
|
52
|
+
{{/each}}
|
|
53
|
+
{{/if}}
|
|
54
|
+
|
|
55
|
+
</memory>
|
|
56
|
+
{{/each}}
|
|
57
|
+
{{else}}
|
|
58
|
+
The supplied query did not return any information specifically on this topic.
|
|
59
|
+
|
|
60
|
+
## Opportunity to Capture New Knowledge!
|
|
61
|
+
|
|
62
|
+
This is an excellent chance to start documenting this topic:
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
await write_note(
|
|
66
|
+
title="{{ topic }}",
|
|
67
|
+
content=f'''
|
|
68
|
+
# {{ topic }}
|
|
69
|
+
|
|
70
|
+
## Overview
|
|
71
|
+
[Summary of what we know about {{ topic }}]
|
|
72
|
+
|
|
73
|
+
## Key Points
|
|
74
|
+
[Main aspects or components of {{ topic }}]
|
|
75
|
+
|
|
76
|
+
## Observations
|
|
77
|
+
- [category] [First important observation about {{ topic }}]
|
|
78
|
+
- [category] [Second observation about {{ topic }}]
|
|
79
|
+
|
|
80
|
+
## Relations
|
|
81
|
+
- relates_to [[Related Topic]]
|
|
82
|
+
- part_of [[Broader Context]]
|
|
83
|
+
'''
|
|
84
|
+
)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Other Options
|
|
88
|
+
|
|
89
|
+
Please use the available basic-memory tools to gather relevant context before responding.
|
|
90
|
+
You can also:
|
|
91
|
+
- Try a different search term
|
|
92
|
+
- Check recent activity with `recent_activity(timeframe="1w")`
|
|
93
|
+
{{/if}}
|
|
94
|
+
## Next Steps
|
|
95
|
+
<instructions>
|
|
96
|
+
You can:
|
|
97
|
+
- Explore more with: `search_notes("{{ topic }}")`
|
|
98
|
+
- See what's changed: `recent_activity(timeframe="{{default timeframe "7d"}}")`
|
|
99
|
+
- **Record new learnings or decisions from this conversation:** `write_note(folder="[Choose a folder]" title="[Create a meaningful title]", content="[Content with observations and relations]")`
|
|
100
|
+
|
|
101
|
+
## Knowledge Capture Recommendation
|
|
102
|
+
|
|
103
|
+
As you continue this conversation, **actively look for opportunities to:**
|
|
104
|
+
1. Record key information, decisions, or insights that emerge
|
|
105
|
+
2. Link new knowledge to existing topics
|
|
106
|
+
3. Suggest capturing important context when appropriate
|
|
107
|
+
4. Create forward references to topics that might be created later
|
|
108
|
+
|
|
109
|
+
Remember that capturing knowledge during conversations is one of the most valuable aspects of Basic Memory.
|
|
110
|
+
</instructions>
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Search Results for: "{{ query }}"{{#if timeframe}} (after {{ timeframe }}){{/if}}
|
|
2
|
+
|
|
3
|
+
This is a memory search session.
|
|
4
|
+
Please use the available basic-memory tools to gather relevant context before responding.
|
|
5
|
+
I found {{ result_count }} result(s) that match your query.
|
|
6
|
+
|
|
7
|
+
{{#if has_results}}
|
|
8
|
+
Here are the most relevant results:
|
|
9
|
+
|
|
10
|
+
{{#each results}}
|
|
11
|
+
{{#if_cond (lt @index 5)}}
|
|
12
|
+
{{#dedent}}
|
|
13
|
+
## {{math @index "+" 1}}. {{ title }}
|
|
14
|
+
- **Type**: {{ type.value }}
|
|
15
|
+
{{#if metadata.created_at}}
|
|
16
|
+
- **Created**: {{date metadata.created_at "%Y-%m-%d %H:%M"}}
|
|
17
|
+
{{/if}}
|
|
18
|
+
- **Relevance Score**: {{round score 2}}
|
|
19
|
+
|
|
20
|
+
{{#if content}}
|
|
21
|
+
- **Excerpt**:
|
|
22
|
+
{{ content }}
|
|
23
|
+
{{/if}}
|
|
24
|
+
|
|
25
|
+
{{#if permalink}}
|
|
26
|
+
You can view this content with: `read_note("{{ permalink }}")`
|
|
27
|
+
Or explore its context with: `build_context("memory://{{ permalink }}")`
|
|
28
|
+
{{else}}
|
|
29
|
+
You can view this file with: `read_file("{{ file_path }}")`
|
|
30
|
+
{{/if}}
|
|
31
|
+
{{/dedent}}
|
|
32
|
+
{{/if_cond}}
|
|
33
|
+
{{/each}}
|
|
34
|
+
|
|
35
|
+
## Next Steps
|
|
36
|
+
|
|
37
|
+
You can:
|
|
38
|
+
- Refine your search: `search_notes("{{ query }} AND additional_term")`
|
|
39
|
+
- Exclude terms: `search_notes("{{ query }} NOT exclude_term")`
|
|
40
|
+
- View more results: `search_notes("{{ query }}", after_date=None)`
|
|
41
|
+
- Check recent activity: `recent_activity()`
|
|
42
|
+
|
|
43
|
+
## Synthesize and Capture Knowledge
|
|
44
|
+
|
|
45
|
+
Consider creating a new note that synthesizes what you've learned:
|
|
46
|
+
|
|
47
|
+
```python
|
|
48
|
+
await write_note(
|
|
49
|
+
title="Synthesis of {{capitalize query}} Information",
|
|
50
|
+
content='''
|
|
51
|
+
# Synthesis of {{capitalize query}} Information
|
|
52
|
+
|
|
53
|
+
## Overview
|
|
54
|
+
[Synthesis of the search results and your conversation]
|
|
55
|
+
|
|
56
|
+
## Key Insights
|
|
57
|
+
[Summary of main points learned from these results]
|
|
58
|
+
|
|
59
|
+
## Observations
|
|
60
|
+
- [insight] [Important observation from search results]
|
|
61
|
+
- [connection] [How this connects to other topics]
|
|
62
|
+
|
|
63
|
+
## Relations
|
|
64
|
+
- relates_to [[{{#if results.length}}{{#if results.0.title}}{{results.0.title}}{{else}}Related Topic{{/if}}{{else}}Related Topic{{/if}}]]
|
|
65
|
+
- extends [[Another Relevant Topic]]
|
|
66
|
+
'''
|
|
67
|
+
)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Remember that capturing synthesized knowledge is one of the most valuable features of Basic Memory.
|
|
71
|
+
{{else}}
|
|
72
|
+
I couldn't find any results for this query.
|
|
73
|
+
|
|
74
|
+
## Opportunity to Capture Knowledge!
|
|
75
|
+
|
|
76
|
+
This is an excellent opportunity to create new knowledge on this topic. Consider:
|
|
77
|
+
|
|
78
|
+
```python
|
|
79
|
+
await write_note(
|
|
80
|
+
title="{{capitalize query}}",
|
|
81
|
+
content='''
|
|
82
|
+
# {{capitalize query}}
|
|
83
|
+
|
|
84
|
+
## Overview
|
|
85
|
+
[Summary of what we've discussed about {{ query }}]
|
|
86
|
+
|
|
87
|
+
## Observations
|
|
88
|
+
- [category] [First observation about {{ query }}]
|
|
89
|
+
- [category] [Second observation about {{ query }}]
|
|
90
|
+
|
|
91
|
+
## Relations
|
|
92
|
+
- relates_to [[Other Relevant Topic]]
|
|
93
|
+
'''
|
|
94
|
+
)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Other Suggestions
|
|
98
|
+
- Try a different search term
|
|
99
|
+
- Broaden your search criteria
|
|
100
|
+
- Check recent activity with `recent_activity(timeframe="1w")`
|
|
101
|
+
{{/if}}
|