basic-memory 0.10.1__py3-none-any.whl → 0.11.0__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 +1 -1
- basic_memory/cli/commands/db.py +15 -2
- basic_memory/cli/commands/tool.py +3 -3
- basic_memory/config.py +45 -10
- basic_memory/mcp/prompts/continue_conversation.py +3 -3
- basic_memory/mcp/prompts/search.py +4 -4
- basic_memory/mcp/resources/ai_assistant_guide.md +5 -5
- basic_memory/mcp/tools/__init__.py +2 -2
- basic_memory/mcp/tools/read_note.py +3 -3
- basic_memory/mcp/tools/search.py +9 -9
- {basic_memory-0.10.1.dist-info → basic_memory-0.11.0.dist-info}/METADATA +5 -4
- {basic_memory-0.10.1.dist-info → basic_memory-0.11.0.dist-info}/RECORD +15 -15
- {basic_memory-0.10.1.dist-info → basic_memory-0.11.0.dist-info}/entry_points.txt +1 -0
- {basic_memory-0.10.1.dist-info → basic_memory-0.11.0.dist-info}/WHEEL +0 -0
- {basic_memory-0.10.1.dist-info → basic_memory-0.11.0.dist-info}/licenses/LICENSE +0 -0
basic_memory/__init__.py
CHANGED
basic_memory/cli/commands/db.py
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
"""Database management commands."""
|
|
2
2
|
|
|
3
|
+
import asyncio
|
|
4
|
+
|
|
3
5
|
import typer
|
|
4
6
|
from loguru import logger
|
|
5
7
|
|
|
6
|
-
from basic_memory
|
|
8
|
+
from basic_memory import db
|
|
7
9
|
from basic_memory.cli.app import app
|
|
10
|
+
from basic_memory.config import config
|
|
8
11
|
|
|
9
12
|
|
|
10
13
|
@app.command()
|
|
@@ -14,7 +17,17 @@ def reset(
|
|
|
14
17
|
"""Reset database (drop all tables and recreate)."""
|
|
15
18
|
if typer.confirm("This will delete all data in your db. Are you sure?"):
|
|
16
19
|
logger.info("Resetting database...")
|
|
17
|
-
|
|
20
|
+
# Get database path
|
|
21
|
+
db_path = config.database_path
|
|
22
|
+
|
|
23
|
+
# Delete the database file if it exists
|
|
24
|
+
if db_path.exists():
|
|
25
|
+
db_path.unlink()
|
|
26
|
+
logger.info(f"Database file deleted: {db_path}")
|
|
27
|
+
|
|
28
|
+
# Create a new empty database
|
|
29
|
+
asyncio.run(db.run_migrations(config))
|
|
30
|
+
logger.info("Database reset complete")
|
|
18
31
|
|
|
19
32
|
if reindex:
|
|
20
33
|
# Import and run sync
|
|
@@ -12,7 +12,7 @@ from basic_memory.cli.app import app
|
|
|
12
12
|
from basic_memory.mcp.tools import build_context as mcp_build_context
|
|
13
13
|
from basic_memory.mcp.tools import read_note as mcp_read_note
|
|
14
14
|
from basic_memory.mcp.tools import recent_activity as mcp_recent_activity
|
|
15
|
-
from basic_memory.mcp.tools import
|
|
15
|
+
from basic_memory.mcp.tools import search_notes as mcp_search
|
|
16
16
|
from basic_memory.mcp.tools import write_note as mcp_write_note
|
|
17
17
|
|
|
18
18
|
# Import prompts
|
|
@@ -180,8 +180,8 @@ def recent_activity(
|
|
|
180
180
|
raise
|
|
181
181
|
|
|
182
182
|
|
|
183
|
-
@tool_app.command()
|
|
184
|
-
def
|
|
183
|
+
@tool_app.command("search-notes")
|
|
184
|
+
def search_notes(
|
|
185
185
|
query: str,
|
|
186
186
|
permalink: Annotated[bool, typer.Option("--permalink", help="Search permalink values")] = False,
|
|
187
187
|
title: Annotated[bool, typer.Option("--title", help="Search title values")] = False,
|
basic_memory/config.py
CHANGED
|
@@ -5,12 +5,13 @@ import os
|
|
|
5
5
|
from pathlib import Path
|
|
6
6
|
from typing import Any, Dict, Literal, Optional
|
|
7
7
|
|
|
8
|
-
import basic_memory
|
|
9
|
-
from basic_memory.utils import setup_logging
|
|
10
8
|
from loguru import logger
|
|
11
9
|
from pydantic import Field, field_validator
|
|
12
10
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
13
11
|
|
|
12
|
+
import basic_memory
|
|
13
|
+
from basic_memory.utils import setup_logging
|
|
14
|
+
|
|
14
15
|
DATABASE_NAME = "memory.db"
|
|
15
16
|
DATA_DIR_NAME = ".basic-memory"
|
|
16
17
|
CONFIG_FILE_NAME = "config.json"
|
|
@@ -213,11 +214,45 @@ user_home = Path.home()
|
|
|
213
214
|
log_dir = user_home / DATA_DIR_NAME
|
|
214
215
|
log_dir.mkdir(parents=True, exist_ok=True)
|
|
215
216
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
217
|
+
|
|
218
|
+
def get_process_name(): # pragma: no cover
|
|
219
|
+
"""
|
|
220
|
+
get the type of process for logging
|
|
221
|
+
"""
|
|
222
|
+
import sys
|
|
223
|
+
|
|
224
|
+
if "sync" in sys.argv:
|
|
225
|
+
return "sync"
|
|
226
|
+
elif "mcp" in sys.argv:
|
|
227
|
+
return "mcp"
|
|
228
|
+
else:
|
|
229
|
+
return "cli"
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
process_name = get_process_name()
|
|
233
|
+
|
|
234
|
+
# Global flag to track if logging has been set up
|
|
235
|
+
_LOGGING_SETUP = False
|
|
236
|
+
|
|
237
|
+
def setup_basic_memory_logging(): # pragma: no cover
|
|
238
|
+
"""Set up logging for basic-memory, ensuring it only happens once."""
|
|
239
|
+
global _LOGGING_SETUP
|
|
240
|
+
if _LOGGING_SETUP:
|
|
241
|
+
# We can't log before logging is set up
|
|
242
|
+
# print("Skipping duplicate logging setup")
|
|
243
|
+
return
|
|
244
|
+
|
|
245
|
+
setup_logging(
|
|
246
|
+
env=config.env,
|
|
247
|
+
home_dir=user_home, # Use user home for logs
|
|
248
|
+
log_level=config.log_level,
|
|
249
|
+
log_file=f"{DATA_DIR_NAME}/basic-memory-{process_name}.log",
|
|
250
|
+
console=False,
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
logger.info(f"Starting Basic Memory {basic_memory.__version__} (Project: {config.project})")
|
|
254
|
+
_LOGGING_SETUP = True
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
# Set up logging
|
|
258
|
+
setup_basic_memory_logging()
|
|
@@ -14,7 +14,7 @@ from basic_memory.mcp.prompts.utils import format_prompt_context, PromptContext,
|
|
|
14
14
|
from basic_memory.mcp.server import mcp
|
|
15
15
|
from basic_memory.mcp.tools.build_context import build_context
|
|
16
16
|
from basic_memory.mcp.tools.recent_activity import recent_activity
|
|
17
|
-
from basic_memory.mcp.tools.search import
|
|
17
|
+
from basic_memory.mcp.tools.search import search_notes
|
|
18
18
|
from basic_memory.schemas.base import TimeFrame
|
|
19
19
|
from basic_memory.schemas.memory import GraphContext
|
|
20
20
|
from basic_memory.schemas.search import SearchQuery, SearchItemType
|
|
@@ -47,7 +47,7 @@ async def continue_conversation(
|
|
|
47
47
|
|
|
48
48
|
# If topic provided, search for it
|
|
49
49
|
if topic:
|
|
50
|
-
search_results = await
|
|
50
|
+
search_results = await search_notes(
|
|
51
51
|
SearchQuery(text=topic, after_date=timeframe, types=[SearchItemType.ENTITY])
|
|
52
52
|
)
|
|
53
53
|
|
|
@@ -93,7 +93,7 @@ async def continue_conversation(
|
|
|
93
93
|
## Next Steps
|
|
94
94
|
|
|
95
95
|
You can:
|
|
96
|
-
- Explore more with: `
|
|
96
|
+
- Explore more with: `search_notes({{"text": "{topic}"}})`
|
|
97
97
|
- See what's changed: `recent_activity(timeframe="{timeframe or "7d"}")`
|
|
98
98
|
- **Record new learnings or decisions from this conversation:** `write_note(title="[Create a meaningful title]", content="[Content with observations and relations]")`
|
|
99
99
|
|
|
@@ -10,7 +10,7 @@ from loguru import logger
|
|
|
10
10
|
from pydantic import Field
|
|
11
11
|
|
|
12
12
|
from basic_memory.mcp.server import mcp
|
|
13
|
-
from basic_memory.mcp.tools.search import
|
|
13
|
+
from basic_memory.mcp.tools.search import search_notes as search_tool
|
|
14
14
|
from basic_memory.schemas.base import TimeFrame
|
|
15
15
|
from basic_memory.schemas.search import SearchQuery, SearchResponse
|
|
16
16
|
|
|
@@ -144,9 +144,9 @@ def format_search_results(
|
|
|
144
144
|
## Next Steps
|
|
145
145
|
|
|
146
146
|
You can:
|
|
147
|
-
- Refine your search: `
|
|
148
|
-
- Exclude terms: `
|
|
149
|
-
- View more results: `
|
|
147
|
+
- Refine your search: `search_notes("{query} AND additional_term")`
|
|
148
|
+
- Exclude terms: `search_notes("{query} NOT exclude_term")`
|
|
149
|
+
- View more results: `search_notes("{query}", after_date=None)`
|
|
150
150
|
- Check recent activity: `recent_activity()`
|
|
151
151
|
|
|
152
152
|
## Synthesize and Capture Knowledge
|
|
@@ -49,7 +49,7 @@ content = await read_note("specs/search-design") # By path
|
|
|
49
49
|
content = await read_note("memory://specs/search") # By memory URL
|
|
50
50
|
|
|
51
51
|
# Searching for knowledge
|
|
52
|
-
results = await
|
|
52
|
+
results = await search_notes(
|
|
53
53
|
query="authentication system", # Text to search for
|
|
54
54
|
page=1, # Optional: Pagination
|
|
55
55
|
page_size=10 # Optional: Results per page
|
|
@@ -154,7 +154,7 @@ Users will interact with Basic Memory in patterns like:
|
|
|
154
154
|
Human: "What were our decisions about auth?"
|
|
155
155
|
|
|
156
156
|
You: Let me find that information for you.
|
|
157
|
-
[Use
|
|
157
|
+
[Use search_notes() to find relevant notes]
|
|
158
158
|
[Then build_context() to understand connections]
|
|
159
159
|
```
|
|
160
160
|
|
|
@@ -263,7 +263,7 @@ When creating relations, you can:
|
|
|
263
263
|
# Example workflow for creating notes with effective relations
|
|
264
264
|
async def create_note_with_effective_relations():
|
|
265
265
|
# Search for existing entities to reference
|
|
266
|
-
search_results = await
|
|
266
|
+
search_results = await search_notes("travel")
|
|
267
267
|
existing_entities = [result.title for result in search_results.primary_results]
|
|
268
268
|
|
|
269
269
|
# Check if specific entities exist
|
|
@@ -335,7 +335,7 @@ Common issues to watch for:
|
|
|
335
335
|
content = await read_note("Document")
|
|
336
336
|
except:
|
|
337
337
|
# Try search instead
|
|
338
|
-
results = await
|
|
338
|
+
results = await search_notes("Document")
|
|
339
339
|
if results and results.primary_results:
|
|
340
340
|
# Found something similar
|
|
341
341
|
content = await read_note(results.primary_results[0].permalink)
|
|
@@ -381,7 +381,7 @@ Common issues to watch for:
|
|
|
381
381
|
- **Create deliberate relations**: Connect each note to at least 2-3 related entities
|
|
382
382
|
- **Use existing entities**: Before creating a new relation, search for existing entities
|
|
383
383
|
- **Verify wikilinks**: When referencing `[[Entity]]`, use exact titles of existing notes
|
|
384
|
-
- **Check accuracy**: Use `
|
|
384
|
+
- **Check accuracy**: Use `search_notes()` or `recent_activity()` to confirm entity titles
|
|
385
385
|
- **Use precise relation types**: Choose specific relation types that convey meaning (e.g., "implements" instead
|
|
386
386
|
of "relates_to")
|
|
387
387
|
- **Consider bidirectional relations**: When appropriate, create inverse relations in both entities
|
|
@@ -12,7 +12,7 @@ from basic_memory.mcp.tools.build_context import build_context
|
|
|
12
12
|
from basic_memory.mcp.tools.recent_activity import recent_activity
|
|
13
13
|
from basic_memory.mcp.tools.read_note import read_note
|
|
14
14
|
from basic_memory.mcp.tools.write_note import write_note
|
|
15
|
-
from basic_memory.mcp.tools.search import
|
|
15
|
+
from basic_memory.mcp.tools.search import search_notes
|
|
16
16
|
from basic_memory.mcp.tools.canvas import canvas
|
|
17
17
|
|
|
18
18
|
__all__ = [
|
|
@@ -22,6 +22,6 @@ __all__ = [
|
|
|
22
22
|
"read_content",
|
|
23
23
|
"read_note",
|
|
24
24
|
"recent_activity",
|
|
25
|
-
"
|
|
25
|
+
"search_notes",
|
|
26
26
|
"write_note",
|
|
27
27
|
]
|
|
@@ -6,7 +6,7 @@ from loguru import logger
|
|
|
6
6
|
|
|
7
7
|
from basic_memory.mcp.async_client import client
|
|
8
8
|
from basic_memory.mcp.server import mcp
|
|
9
|
-
from basic_memory.mcp.tools.search import
|
|
9
|
+
from basic_memory.mcp.tools.search import search_notes
|
|
10
10
|
from basic_memory.mcp.tools.utils import call_get
|
|
11
11
|
from basic_memory.schemas.memory import memory_url_path
|
|
12
12
|
from basic_memory.schemas.search import SearchQuery
|
|
@@ -63,7 +63,7 @@ async def read_note(identifier: str, page: int = 1, page_size: int = 10) -> str:
|
|
|
63
63
|
|
|
64
64
|
# Fallback 1: Try title search via API
|
|
65
65
|
logger.info(f"Search title for: {identifier}")
|
|
66
|
-
title_results = await
|
|
66
|
+
title_results = await search_notes(SearchQuery(title=identifier))
|
|
67
67
|
|
|
68
68
|
if title_results and title_results.results:
|
|
69
69
|
result = title_results.results[0] # Get the first/best match
|
|
@@ -87,7 +87,7 @@ async def read_note(identifier: str, page: int = 1, page_size: int = 10) -> str:
|
|
|
87
87
|
|
|
88
88
|
# Fallback 2: Text search as a last resort
|
|
89
89
|
logger.info(f"Title search failed, trying text search for: {identifier}")
|
|
90
|
-
text_results = await
|
|
90
|
+
text_results = await search_notes(SearchQuery(text=identifier))
|
|
91
91
|
|
|
92
92
|
# We didn't find a direct match, construct a helpful error message
|
|
93
93
|
if not text_results or not text_results.results:
|
basic_memory/mcp/tools/search.py
CHANGED
|
@@ -11,7 +11,7 @@ from basic_memory.mcp.async_client import client
|
|
|
11
11
|
@mcp.tool(
|
|
12
12
|
description="Search across all content in the knowledge base.",
|
|
13
13
|
)
|
|
14
|
-
async def
|
|
14
|
+
async def search_notes(query: SearchQuery, page: int = 1, page_size: int = 10) -> SearchResponse:
|
|
15
15
|
"""Search across all content in the knowledge base.
|
|
16
16
|
|
|
17
17
|
This tool searches the knowledge base using full-text search, pattern matching,
|
|
@@ -36,34 +36,34 @@ async def search(query: SearchQuery, page: int = 1, page_size: int = 10) -> Sear
|
|
|
36
36
|
|
|
37
37
|
Examples:
|
|
38
38
|
# Basic text search
|
|
39
|
-
results = await
|
|
39
|
+
results = await search_notes(SearchQuery(text="project planning"))
|
|
40
40
|
|
|
41
41
|
# Boolean AND search (both terms must be present)
|
|
42
|
-
results = await
|
|
42
|
+
results = await search_notes(SearchQuery(text="project AND planning"))
|
|
43
43
|
|
|
44
44
|
# Boolean OR search (either term can be present)
|
|
45
|
-
results = await
|
|
45
|
+
results = await search_notes(SearchQuery(text="project OR meeting"))
|
|
46
46
|
|
|
47
47
|
# Boolean NOT search (exclude terms)
|
|
48
|
-
results = await
|
|
48
|
+
results = await search_notes(SearchQuery(text="project NOT meeting"))
|
|
49
49
|
|
|
50
50
|
# Boolean search with grouping
|
|
51
|
-
results = await
|
|
51
|
+
results = await search_notes(SearchQuery(text="(project OR planning) AND notes"))
|
|
52
52
|
|
|
53
53
|
# Search with type filter
|
|
54
|
-
results = await
|
|
54
|
+
results = await search_notes(SearchQuery(
|
|
55
55
|
text="meeting notes",
|
|
56
56
|
types=["entity"],
|
|
57
57
|
))
|
|
58
58
|
|
|
59
59
|
# Search for recent content
|
|
60
|
-
results = await
|
|
60
|
+
results = await search_notes(SearchQuery(
|
|
61
61
|
text="bug report",
|
|
62
62
|
after_date="1 week"
|
|
63
63
|
))
|
|
64
64
|
|
|
65
65
|
# Pattern matching on permalinks
|
|
66
|
-
results = await
|
|
66
|
+
results = await search_notes(SearchQuery(
|
|
67
67
|
permalink_match="docs/meeting-*"
|
|
68
68
|
))
|
|
69
69
|
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: basic-memory
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.11.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
|
|
@@ -319,7 +319,8 @@ for OS X):
|
|
|
319
319
|
}
|
|
320
320
|
```
|
|
321
321
|
|
|
322
|
-
If you want to use a specific project (see [Multiple Projects](#multiple-projects)
|
|
322
|
+
If you want to use a specific project (see [Multiple Projects](docs/User%20Guide.md#multiple-projects)), update your
|
|
323
|
+
Claude Desktop
|
|
323
324
|
config:
|
|
324
325
|
|
|
325
326
|
```json
|
|
@@ -354,7 +355,7 @@ basic-memory sync --watch
|
|
|
354
355
|
write_note(title, content, folder, tags) - Create or update notes
|
|
355
356
|
read_note(identifier, page, page_size) - Read notes by title or permalink
|
|
356
357
|
build_context(url, depth, timeframe) - Navigate knowledge graph via memory:// URLs
|
|
357
|
-
|
|
358
|
+
search_notes(query, page, page_size) - Search across your knowledge base
|
|
358
359
|
recent_activity(type, depth, timeframe) - Find recently updated information
|
|
359
360
|
canvas(nodes, edges, title, folder) - Generate knowledge visualizations
|
|
360
361
|
```
|
|
@@ -395,4 +396,4 @@ and submitting PRs.
|
|
|
395
396
|
</picture>
|
|
396
397
|
</a>
|
|
397
398
|
|
|
398
|
-
Built with ♥️ by Basic Machines
|
|
399
|
+
Built with ♥️ by Basic Machines
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
basic_memory/__init__.py,sha256=
|
|
2
|
-
basic_memory/config.py,sha256=
|
|
1
|
+
basic_memory/__init__.py,sha256=06l2-O3MzDid6DzYEdAOjAn3OLuVGdUYBo17g6ZALWQ,123
|
|
2
|
+
basic_memory/config.py,sha256=3lwRFYA1e2dk5JIRNvnuVVIAGT3UXI4FUjN-CEHpJy8,8432
|
|
3
3
|
basic_memory/db.py,sha256=UDWBr52u7oBT4aXputhAG_Prmsv5og00sYVzPmaylhk,6026
|
|
4
4
|
basic_memory/deps.py,sha256=yI6RL_5-8LXw7ywSJ_84BXAczDtv2h9GFLw-E9XDJFg,5770
|
|
5
5
|
basic_memory/file_utils.py,sha256=csvij8o_j14A-rr8NTDeH6pUaI4DdBqNAWJIVc5r4A0,6658
|
|
@@ -24,7 +24,7 @@ basic_memory/cli/__init__.py,sha256=arcKLAWRDhPD7x5t80MlviZeYzwHZ0GZigyy3NKVoGk,
|
|
|
24
24
|
basic_memory/cli/app.py,sha256=J4mkWnxbevOYmJwwRMx344olGOxoXq0o4RNG6DMQLKE,1804
|
|
25
25
|
basic_memory/cli/main.py,sha256=9uwxOUc4mDeTeZCEWyJh7X5PzPXG1fva2veV2OPbFtg,1442
|
|
26
26
|
basic_memory/cli/commands/__init__.py,sha256=3oojcC-Y-4RPqff9vtwWziT_T4uvBVicL0pSHNilVkU,393
|
|
27
|
-
basic_memory/cli/commands/db.py,sha256
|
|
27
|
+
basic_memory/cli/commands/db.py,sha256=-jgVH2fs_s1vvBNJx_FWspQVHv0F6Qd7V5ZPxtYn_jQ,1125
|
|
28
28
|
basic_memory/cli/commands/import_chatgpt.py,sha256=M4_oUN9o_BaW5jpKQu2pTEybivB5ccVolhdZzmhLOsI,8162
|
|
29
29
|
basic_memory/cli/commands/import_claude_conversations.py,sha256=D_4-0xFKkZka7xFvvW8OkgjLv3TFqsC_VuB2Z-Y3avU,6827
|
|
30
30
|
basic_memory/cli/commands/import_claude_projects.py,sha256=KzUuf3wrlvJlqTWCzoLRrNxD3OYNteRXaTFj5IB1FA8,6649
|
|
@@ -33,7 +33,7 @@ basic_memory/cli/commands/mcp.py,sha256=ue_zDA8w0zZZToHLvu56s8hWkalgZsC64CfTyXX6
|
|
|
33
33
|
basic_memory/cli/commands/project.py,sha256=BSjdz07xDM3R4CUXggv1qhrWLJsEgvGFir6aOUzdr2Q,11330
|
|
34
34
|
basic_memory/cli/commands/status.py,sha256=nbs3myxaNtehEEJ4BBngPuKs-vqZTHNCCb0bTgDsE-s,5277
|
|
35
35
|
basic_memory/cli/commands/sync.py,sha256=JxGJA6b7Qksz0ZKonHfB3s--7qzY7eWeLogPX8tR1pY,8351
|
|
36
|
-
basic_memory/cli/commands/tool.py,sha256=
|
|
36
|
+
basic_memory/cli/commands/tool.py,sha256=0YFWEmaKZ--1SsNjs_Q3hBsg94CMiyqVc3S8gUmxJNo,9101
|
|
37
37
|
basic_memory/markdown/__init__.py,sha256=DdzioCWtDnKaq05BHYLgL_78FawEHLpLXnp-kPSVfIc,501
|
|
38
38
|
basic_memory/markdown/entity_parser.py,sha256=Pc6hTm9TB5SRW_ghf7WD-UMjEgOPyc8j8tgCtxEWfLQ,3893
|
|
39
39
|
basic_memory/markdown/markdown_processor.py,sha256=S5ny69zu2dlqO7tWJoLrpLSzg8emQIDq7Du7olpJUsk,4968
|
|
@@ -46,20 +46,20 @@ basic_memory/mcp/main.py,sha256=0kbcyf1PxRC1bLnHv2zzParfJ6cOq7Am9ScF9UoI50U,703
|
|
|
46
46
|
basic_memory/mcp/server.py,sha256=VGv0uWma6JGkT6Y_GESYGhGMYfPavkhEKlCNza8bvtY,287
|
|
47
47
|
basic_memory/mcp/prompts/__init__.py,sha256=-Bl9Dgj2TD9PULjzggPqXuvPEjWCRy7S9Yg03h2-U7A,615
|
|
48
48
|
basic_memory/mcp/prompts/ai_assistant_guide.py,sha256=8TI5xObiRVcwv6w9by1xQHlX0whvyE7-LGsiqDMRTFg,821
|
|
49
|
-
basic_memory/mcp/prompts/continue_conversation.py,sha256=
|
|
49
|
+
basic_memory/mcp/prompts/continue_conversation.py,sha256=0AN44p8eF9l3VbtFX8RToSuHwnGYAkKYTZCgWpbbHX0,4442
|
|
50
50
|
basic_memory/mcp/prompts/recent_activity.py,sha256=7607MWiGJWY0vPurhVII17LxLZlXY_zmH3xH9LfT6SY,2793
|
|
51
|
-
basic_memory/mcp/prompts/search.py,sha256=
|
|
51
|
+
basic_memory/mcp/prompts/search.py,sha256=wokpuP4uN-N2YVN3VTyIjBG8Uu_HkjYSaln7i4dvfDw,6307
|
|
52
52
|
basic_memory/mcp/prompts/utils.py,sha256=u_bG8DMtMMERvGPJfA3gbl5VAs0xmkuK8ZJBkY8xyV8,5371
|
|
53
|
-
basic_memory/mcp/resources/ai_assistant_guide.md,sha256=
|
|
54
|
-
basic_memory/mcp/tools/__init__.py,sha256=
|
|
53
|
+
basic_memory/mcp/resources/ai_assistant_guide.md,sha256=qnYWDkYlb-JmKuOoZ5llmRas_t4dWDXB_i8LE277Lgs,14777
|
|
54
|
+
basic_memory/mcp/tools/__init__.py,sha256=prvB6M150ba8WT-v-tmo4Yfu4JG-0yCi6nfK4SsL7XI,882
|
|
55
55
|
basic_memory/mcp/tools/build_context.py,sha256=8xYRPpeYCEU8F9Dv_ctvbunZ8ciKwmFu9i8Pdv5vYfI,2891
|
|
56
56
|
basic_memory/mcp/tools/canvas.py,sha256=fHC90eshnSSmROTBV-tBB-FSuXSpYVj_BcDrc96pWi0,2993
|
|
57
57
|
basic_memory/mcp/tools/delete_note.py,sha256=mnrgOv-D7f6nsgZIAK0Wvyn0dbkwCg8adW_xJd7jwc0,829
|
|
58
58
|
basic_memory/mcp/tools/project_info.py,sha256=pyoHpOMhjMIvZFku2iEIpXc2XDtbnNeb-OMrJlYR9LU,1710
|
|
59
59
|
basic_memory/mcp/tools/read_content.py,sha256=PKnvLzNmHfzoIxRKXNaYW5P5q0d1azVwG9juPXPYeQo,8148
|
|
60
|
-
basic_memory/mcp/tools/read_note.py,sha256=
|
|
60
|
+
basic_memory/mcp/tools/read_note.py,sha256=1i1iaCBpGEhkHwOCn83zkil72tdKSCN_Ndt_HVcnTAw,6487
|
|
61
61
|
basic_memory/mcp/tools/recent_activity.py,sha256=S0LgIk9RaeYzIsi2FIHs0KK7R1K-LJy3QaSokGlY9ew,3501
|
|
62
|
-
basic_memory/mcp/tools/search.py,sha256=
|
|
62
|
+
basic_memory/mcp/tools/search.py,sha256=96mc8KTo23Olz918S9C2u4UOWD5QAo-koGfuWBqDVjQ,3032
|
|
63
63
|
basic_memory/mcp/tools/utils.py,sha256=tOWklfSlDcoAJCRBmxkCVwkTY_TDBa5vOGxzU8J5eiQ,13636
|
|
64
64
|
basic_memory/mcp/tools/write_note.py,sha256=Z2z92pHb74-uLzahY2Cz5Kj8kGikS4VSWPZ1I1rGy1U,4942
|
|
65
65
|
basic_memory/models/__init__.py,sha256=Bf0xXV_ryndogvZDiVM_Wb6iV2fHUxYNGMZNWNcZi0s,307
|
|
@@ -92,8 +92,8 @@ basic_memory/services/service.py,sha256=V-d_8gOV07zGIQDpL-Ksqs3ZN9l3qf3HZOK1f_YN
|
|
|
92
92
|
basic_memory/sync/__init__.py,sha256=CVHguYH457h2u2xoM8KvOilJC71XJlZ-qUh8lHcjYj4,156
|
|
93
93
|
basic_memory/sync/sync_service.py,sha256=YirSOgk0PyqPJoHXVUzAxhNKdd2pebP8sFeXeAYmGjM,21957
|
|
94
94
|
basic_memory/sync/watch_service.py,sha256=IliisNN8HMKLnBaF95wGHpA5WqRWujprWJVxOnAQ2yc,13468
|
|
95
|
-
basic_memory-0.
|
|
96
|
-
basic_memory-0.
|
|
97
|
-
basic_memory-0.
|
|
98
|
-
basic_memory-0.
|
|
99
|
-
basic_memory-0.
|
|
95
|
+
basic_memory-0.11.0.dist-info/METADATA,sha256=G3NFwoGFvifzfrnPYnBemgmGYmz7jUF8qlaN3LpFe_8,13504
|
|
96
|
+
basic_memory-0.11.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
97
|
+
basic_memory-0.11.0.dist-info/entry_points.txt,sha256=wvE2mRF6-Pg4weIYcfQ-86NOLZD4WJg7F7TIsRVFLb8,90
|
|
98
|
+
basic_memory-0.11.0.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
|
|
99
|
+
basic_memory-0.11.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|