basic-memory 0.13.0b4__py3-none-any.whl → 0.13.0b6__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 +2 -7
- basic_memory/api/routers/knowledge_router.py +13 -0
- basic_memory/api/routers/memory_router.py +3 -4
- basic_memory/api/routers/project_router.py +6 -5
- basic_memory/api/routers/prompt_router.py +2 -2
- basic_memory/cli/commands/project.py +3 -3
- basic_memory/cli/commands/status.py +1 -1
- basic_memory/cli/commands/sync.py +1 -1
- basic_memory/cli/commands/tool.py +6 -6
- basic_memory/mcp/prompts/__init__.py +2 -0
- basic_memory/mcp/prompts/recent_activity.py +1 -1
- basic_memory/mcp/prompts/sync_status.py +116 -0
- basic_memory/mcp/server.py +6 -6
- basic_memory/mcp/tools/__init__.py +4 -0
- basic_memory/mcp/tools/build_context.py +32 -7
- basic_memory/mcp/tools/canvas.py +2 -1
- basic_memory/mcp/tools/delete_note.py +159 -4
- basic_memory/mcp/tools/edit_note.py +17 -11
- basic_memory/mcp/tools/move_note.py +252 -40
- basic_memory/mcp/tools/project_management.py +35 -3
- basic_memory/mcp/tools/read_note.py +11 -4
- basic_memory/mcp/tools/search.py +180 -8
- basic_memory/mcp/tools/sync_status.py +254 -0
- basic_memory/mcp/tools/utils.py +47 -0
- basic_memory/mcp/tools/view_note.py +66 -0
- basic_memory/mcp/tools/write_note.py +13 -2
- basic_memory/repository/search_repository.py +116 -38
- basic_memory/schemas/base.py +33 -5
- basic_memory/schemas/memory.py +58 -1
- basic_memory/services/entity_service.py +18 -5
- basic_memory/services/initialization.py +32 -5
- basic_memory/services/link_resolver.py +20 -5
- basic_memory/services/migration_service.py +168 -0
- basic_memory/services/project_service.py +121 -50
- basic_memory/services/sync_status_service.py +181 -0
- basic_memory/sync/sync_service.py +91 -13
- {basic_memory-0.13.0b4.dist-info → basic_memory-0.13.0b6.dist-info}/METADATA +2 -2
- {basic_memory-0.13.0b4.dist-info → basic_memory-0.13.0b6.dist-info}/RECORD +41 -36
- {basic_memory-0.13.0b4.dist-info → basic_memory-0.13.0b6.dist-info}/WHEEL +0 -0
- {basic_memory-0.13.0b4.dist-info → basic_memory-0.13.0b6.dist-info}/entry_points.txt +0 -0
- {basic_memory-0.13.0b4.dist-info → basic_memory-0.13.0b6.dist-info}/licenses/LICENSE +0 -0
|
@@ -17,6 +17,7 @@ from basic_memory.models import Entity
|
|
|
17
17
|
from basic_memory.repository import EntityRepository, RelationRepository
|
|
18
18
|
from basic_memory.services import EntityService, FileService
|
|
19
19
|
from basic_memory.services.search_service import SearchService
|
|
20
|
+
from basic_memory.services.sync_status_service import sync_status_tracker, SyncStatus
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
@dataclass
|
|
@@ -80,23 +81,38 @@ class SyncService:
|
|
|
80
81
|
self.search_service = search_service
|
|
81
82
|
self.file_service = file_service
|
|
82
83
|
|
|
83
|
-
async def sync(self, directory: Path) -> SyncReport:
|
|
84
|
+
async def sync(self, directory: Path, project_name: Optional[str] = None) -> SyncReport:
|
|
84
85
|
"""Sync all files with database."""
|
|
85
86
|
|
|
86
87
|
start_time = time.time()
|
|
87
88
|
logger.info(f"Sync operation started for directory: {directory}")
|
|
88
89
|
|
|
90
|
+
# Start tracking sync for this project if project name provided
|
|
91
|
+
if project_name:
|
|
92
|
+
sync_status_tracker.start_project_sync(project_name)
|
|
93
|
+
|
|
89
94
|
# initial paths from db to sync
|
|
90
95
|
# path -> checksum
|
|
91
96
|
report = await self.scan(directory)
|
|
92
97
|
|
|
93
|
-
#
|
|
98
|
+
# Update progress with file counts
|
|
99
|
+
if project_name:
|
|
100
|
+
sync_status_tracker.update_project_progress(
|
|
101
|
+
project_name=project_name,
|
|
102
|
+
status=SyncStatus.SYNCING,
|
|
103
|
+
message="Processing file changes",
|
|
104
|
+
files_total=report.total,
|
|
105
|
+
files_processed=0,
|
|
106
|
+
)
|
|
107
|
+
|
|
94
108
|
# order of sync matters to resolve relations effectively
|
|
95
109
|
logger.info(
|
|
96
110
|
f"Sync changes detected: new_files={len(report.new)}, modified_files={len(report.modified)}, "
|
|
97
111
|
+ f"deleted_files={len(report.deleted)}, moved_files={len(report.moves)}"
|
|
98
112
|
)
|
|
99
113
|
|
|
114
|
+
files_processed = 0
|
|
115
|
+
|
|
100
116
|
# sync moves first
|
|
101
117
|
for old_path, new_path in report.moves.items():
|
|
102
118
|
# in the case where a file has been deleted and replaced by another file
|
|
@@ -109,19 +125,56 @@ class SyncService:
|
|
|
109
125
|
else:
|
|
110
126
|
await self.handle_move(old_path, new_path)
|
|
111
127
|
|
|
128
|
+
files_processed += 1
|
|
129
|
+
if project_name:
|
|
130
|
+
sync_status_tracker.update_project_progress( # pragma: no cover
|
|
131
|
+
project_name=project_name,
|
|
132
|
+
status=SyncStatus.SYNCING,
|
|
133
|
+
message="Processing moves",
|
|
134
|
+
files_processed=files_processed,
|
|
135
|
+
)
|
|
136
|
+
|
|
112
137
|
# deleted next
|
|
113
138
|
for path in report.deleted:
|
|
114
139
|
await self.handle_delete(path)
|
|
140
|
+
files_processed += 1
|
|
141
|
+
if project_name:
|
|
142
|
+
sync_status_tracker.update_project_progress( # pragma: no cover
|
|
143
|
+
project_name=project_name,
|
|
144
|
+
status=SyncStatus.SYNCING,
|
|
145
|
+
message="Processing deletions",
|
|
146
|
+
files_processed=files_processed,
|
|
147
|
+
)
|
|
115
148
|
|
|
116
149
|
# then new and modified
|
|
117
150
|
for path in report.new:
|
|
118
151
|
await self.sync_file(path, new=True)
|
|
152
|
+
files_processed += 1
|
|
153
|
+
if project_name:
|
|
154
|
+
sync_status_tracker.update_project_progress(
|
|
155
|
+
project_name=project_name,
|
|
156
|
+
status=SyncStatus.SYNCING,
|
|
157
|
+
message="Processing new files",
|
|
158
|
+
files_processed=files_processed,
|
|
159
|
+
)
|
|
119
160
|
|
|
120
161
|
for path in report.modified:
|
|
121
162
|
await self.sync_file(path, new=False)
|
|
163
|
+
files_processed += 1
|
|
164
|
+
if project_name:
|
|
165
|
+
sync_status_tracker.update_project_progress( # pragma: no cover
|
|
166
|
+
project_name=project_name,
|
|
167
|
+
status=SyncStatus.SYNCING,
|
|
168
|
+
message="Processing modified files",
|
|
169
|
+
files_processed=files_processed,
|
|
170
|
+
)
|
|
122
171
|
|
|
123
172
|
await self.resolve_relations()
|
|
124
173
|
|
|
174
|
+
# Mark sync as completed
|
|
175
|
+
if project_name:
|
|
176
|
+
sync_status_tracker.complete_project_sync(project_name)
|
|
177
|
+
|
|
125
178
|
duration_ms = int((time.time() - start_time) * 1000)
|
|
126
179
|
logger.info(
|
|
127
180
|
f"Sync operation completed: directory={directory}, total_changes={report.total}, duration_ms={duration_ms}"
|
|
@@ -311,18 +364,43 @@ class SyncService:
|
|
|
311
364
|
content_type = self.file_service.content_type(path)
|
|
312
365
|
|
|
313
366
|
file_path = Path(path)
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
367
|
+
try:
|
|
368
|
+
entity = await self.entity_repository.add(
|
|
369
|
+
Entity(
|
|
370
|
+
entity_type="file",
|
|
371
|
+
file_path=path,
|
|
372
|
+
checksum=checksum,
|
|
373
|
+
title=file_path.name,
|
|
374
|
+
created_at=created,
|
|
375
|
+
updated_at=modified,
|
|
376
|
+
content_type=content_type,
|
|
377
|
+
)
|
|
323
378
|
)
|
|
324
|
-
|
|
325
|
-
|
|
379
|
+
return entity, checksum
|
|
380
|
+
except IntegrityError as e:
|
|
381
|
+
# Handle race condition where entity was created by another process
|
|
382
|
+
if "UNIQUE constraint failed: entity.file_path" in str(e):
|
|
383
|
+
logger.info(
|
|
384
|
+
f"Entity already exists for file_path={path}, updating instead of creating"
|
|
385
|
+
)
|
|
386
|
+
# Treat as update instead of create
|
|
387
|
+
entity = await self.entity_repository.get_by_file_path(path)
|
|
388
|
+
if entity is None: # pragma: no cover
|
|
389
|
+
logger.error(f"Entity not found after constraint violation, path={path}")
|
|
390
|
+
raise ValueError(f"Entity not found after constraint violation: {path}")
|
|
391
|
+
|
|
392
|
+
updated = await self.entity_repository.update(
|
|
393
|
+
entity.id, {"file_path": path, "checksum": checksum}
|
|
394
|
+
)
|
|
395
|
+
|
|
396
|
+
if updated is None: # pragma: no cover
|
|
397
|
+
logger.error(f"Failed to update entity, entity_id={entity.id}, path={path}")
|
|
398
|
+
raise ValueError(f"Failed to update entity with ID {entity.id}")
|
|
399
|
+
|
|
400
|
+
return updated, checksum
|
|
401
|
+
else:
|
|
402
|
+
# Re-raise if it's a different integrity error
|
|
403
|
+
raise
|
|
326
404
|
else:
|
|
327
405
|
entity = await self.entity_repository.get_by_file_path(path)
|
|
328
406
|
if entity is None: # pragma: no cover
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: basic-memory
|
|
3
|
-
Version: 0.13.
|
|
3
|
+
Version: 0.13.0b6
|
|
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
|
|
@@ -25,10 +25,10 @@ Requires-Dist: pydantic-settings>=2.6.1
|
|
|
25
25
|
Requires-Dist: pydantic[email,timezone]>=2.10.3
|
|
26
26
|
Requires-Dist: pyjwt>=2.10.1
|
|
27
27
|
Requires-Dist: pyright>=1.1.390
|
|
28
|
+
Requires-Dist: pytest-aio>=1.9.0
|
|
28
29
|
Requires-Dist: python-dotenv>=1.1.0
|
|
29
30
|
Requires-Dist: python-frontmatter>=1.1.0
|
|
30
31
|
Requires-Dist: pyyaml>=6.0.1
|
|
31
|
-
Requires-Dist: qasync>=0.27.1
|
|
32
32
|
Requires-Dist: rich>=13.9.4
|
|
33
33
|
Requires-Dist: sqlalchemy>=2.0.0
|
|
34
34
|
Requires-Dist: typer>=0.9.0
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
basic_memory/__init__.py,sha256=
|
|
1
|
+
basic_memory/__init__.py,sha256=kYTgbNYjpTOTrVbmkdvP8eII6KD0j3qf2LgF-q01dQQ,178
|
|
2
2
|
basic_memory/config.py,sha256=lNpbn-b1k9nunQ-htciYQHC8XatRIhc_m6SN2Pbvp-E,11101
|
|
3
3
|
basic_memory/db.py,sha256=X4-uyEZdJXVLfFDTpcNZxWzawRZXhDdKoEFWAGgE4Lk,6193
|
|
4
4
|
basic_memory/deps.py,sha256=zXOhqXCoSVIa1iIcO8U6uUiofJn5eT4ycwJkH9I2kX4,12102
|
|
@@ -20,11 +20,11 @@ basic_memory/api/template_loader.py,sha256=exbTeXyJRgyLFmSjNeroxjT7X2DWFm2X5qUVa
|
|
|
20
20
|
basic_memory/api/routers/__init__.py,sha256=REO5CKQ96o5vtGWACcsIxIpWybIUSeKXc83RWbWc8BQ,398
|
|
21
21
|
basic_memory/api/routers/directory_router.py,sha256=rBQHvuwffUOk0iKvcEs2QlWclgvr8ur24f_pH3-sVRQ,2054
|
|
22
22
|
basic_memory/api/routers/importer_router.py,sha256=xFUCorkPWo8AF0ya0UrcLmXNf8CjPZdAqddQIH8PO-o,4513
|
|
23
|
-
basic_memory/api/routers/knowledge_router.py,sha256=
|
|
23
|
+
basic_memory/api/routers/knowledge_router.py,sha256=4dD_tPpcJGWCuoRKEbQXCS3hoXNWe-VbcGC7xV-8VoE,9738
|
|
24
24
|
basic_memory/api/routers/management_router.py,sha256=INT5PzUXhfBH2546CTZKqZnRuECYIA4Ypfgdf6JNyu0,2686
|
|
25
|
-
basic_memory/api/routers/memory_router.py,sha256=
|
|
26
|
-
basic_memory/api/routers/project_router.py,sha256=
|
|
27
|
-
basic_memory/api/routers/prompt_router.py,sha256=
|
|
25
|
+
basic_memory/api/routers/memory_router.py,sha256=a9Cnx3XgwSkO-2ABFzI3wM3PoMGxuyfJFFp7NfFZapc,3003
|
|
26
|
+
basic_memory/api/routers/project_router.py,sha256=cXGx6VZMg67jdzMi1Xf8SodtueEI04xRwtiv9ygf2Bg,8239
|
|
27
|
+
basic_memory/api/routers/prompt_router.py,sha256=4wxq6-NREgVJM8N9C0YsN1AAUDD8nkTCOzWyzSqTSFw,9948
|
|
28
28
|
basic_memory/api/routers/resource_router.py,sha256=WEJEqEaY_yTKj5-U-rW4kXQKUcJflykgwI6_g_R41ck,8058
|
|
29
29
|
basic_memory/api/routers/search_router.py,sha256=GD62jlCQTiL_VNsdibi-b1f6H40KCWo9SX2Cl7YH4QU,1226
|
|
30
30
|
basic_memory/api/routers/utils.py,sha256=vW-bYUmATQPe-pYbQfNjuho-BzsHhy9bmWv-LZX3HTc,5153
|
|
@@ -39,10 +39,10 @@ basic_memory/cli/commands/import_claude_conversations.py,sha256=sXnP0hjfwUapwHQD
|
|
|
39
39
|
basic_memory/cli/commands/import_claude_projects.py,sha256=mWYIeA-mu_Pq23R7OEtY2XHXG5CAh1dMGIBhckB4zRk,2811
|
|
40
40
|
basic_memory/cli/commands/import_memory_json.py,sha256=Vz5rt7KCel5B3Dtv57WPEUJTHCMwFUqQlOCm2djwUi8,2867
|
|
41
41
|
basic_memory/cli/commands/mcp.py,sha256=jmRUv1U5FT3AQ1cDbvTfAUnjhBw6UsNEmIkpbNr-_qQ,3093
|
|
42
|
-
basic_memory/cli/commands/project.py,sha256=
|
|
43
|
-
basic_memory/cli/commands/status.py,sha256=
|
|
44
|
-
basic_memory/cli/commands/sync.py,sha256=
|
|
45
|
-
basic_memory/cli/commands/tool.py,sha256=
|
|
42
|
+
basic_memory/cli/commands/project.py,sha256=YkVYcjxQOVhxIX1M0g_vMaP5dTinYvSnUQIjeOPg8HE,12971
|
|
43
|
+
basic_memory/cli/commands/status.py,sha256=708EK8-iPjyc1iE5MPECzAyZraGYoGpvYjLwTm-BlQs,5719
|
|
44
|
+
basic_memory/cli/commands/sync.py,sha256=gOU_onrMj9_IRiIe8FWU_FLEvfjcOt-qhrvvFJuU-ws,8010
|
|
45
|
+
basic_memory/cli/commands/tool.py,sha256=my-kALn3khv1W2Avi736NrHsfkpbyP57mDi5LjHwqe0,9540
|
|
46
46
|
basic_memory/importers/__init__.py,sha256=BTcBW97P3thcsWa5w9tQsvOu8ynHDgw2-8tPgkCZoh8,795
|
|
47
47
|
basic_memory/importers/base.py,sha256=awwe_U-CfzSINKoM6iro7ru4QqLlsfXzdHztDvebnxM,2531
|
|
48
48
|
basic_memory/importers/chatgpt_importer.py,sha256=36VAsZarI7XE5r_KxNpWeHM1HPfHj6NfTDuH6ExY4hg,7372
|
|
@@ -61,30 +61,33 @@ basic_memory/mcp/async_client.py,sha256=Eo345wANiBRSM4u3j_Vd6Ax4YtMg7qbWd9PIoFfj
|
|
|
61
61
|
basic_memory/mcp/auth_provider.py,sha256=CTydkEBvxh_fg_Z0hxKjTT8nHJoFhxrwp5hTQuToiIU,9977
|
|
62
62
|
basic_memory/mcp/external_auth_provider.py,sha256=Z1GDbr6P4C-flZVHMWkIqAu30kcfeHv2iSp0EYbFuxo,11483
|
|
63
63
|
basic_memory/mcp/project_session.py,sha256=OP1X10iG4wIWHgfkwC2q7Inl6b68zrioqkD1-Ju_S6w,3462
|
|
64
|
-
basic_memory/mcp/server.py,sha256=
|
|
64
|
+
basic_memory/mcp/server.py,sha256=QbRkkYaDWK5Vrvez39ET8C6h5uGS6y4wDHMVaCgdD78,3787
|
|
65
65
|
basic_memory/mcp/supabase_auth_provider.py,sha256=MLHfSHjdx2Q5jr_Ljx0qZBaOwp7CkPdk_ybR_LQ7Mvw,16472
|
|
66
|
-
basic_memory/mcp/prompts/__init__.py,sha256
|
|
66
|
+
basic_memory/mcp/prompts/__init__.py,sha256=UvaIw5KA8PaXj3Wz1Dr-VjlkEq6T5D8AGtYFVwaHqnA,683
|
|
67
67
|
basic_memory/mcp/prompts/ai_assistant_guide.py,sha256=8TI5xObiRVcwv6w9by1xQHlX0whvyE7-LGsiqDMRTFg,821
|
|
68
68
|
basic_memory/mcp/prompts/continue_conversation.py,sha256=rsmlC2V7e7G6DAK0K825vFsPKgsRQ702HFzn6lkHaDM,1998
|
|
69
|
-
basic_memory/mcp/prompts/recent_activity.py,sha256=
|
|
69
|
+
basic_memory/mcp/prompts/recent_activity.py,sha256=0v1c3b2SdDDxXVuF8eOjNooYy04uRYel0pdJ0rnggw4,3311
|
|
70
70
|
basic_memory/mcp/prompts/search.py,sha256=nb88MZy9tdW_MmCLUVItiukrLdb3xEHWLv0JVLUlc4o,1692
|
|
71
|
+
basic_memory/mcp/prompts/sync_status.py,sha256=_5EqnCavY9BTsaxX2tPp-AgQZLt4bUrqQ6TwbM0L5w8,4645
|
|
71
72
|
basic_memory/mcp/prompts/utils.py,sha256=VacrbqwYtySpIlYIrKHo5s6jtoTMscYJqrFRH3zpC6Q,5431
|
|
72
73
|
basic_memory/mcp/resources/ai_assistant_guide.md,sha256=qnYWDkYlb-JmKuOoZ5llmRas_t4dWDXB_i8LE277Lgs,14777
|
|
73
74
|
basic_memory/mcp/resources/project_info.py,sha256=LcUkTx4iXBfU6Lp4TVch78OqLopbOy4ljyKnfr4VXso,1906
|
|
74
|
-
basic_memory/mcp/tools/__init__.py,sha256=
|
|
75
|
-
basic_memory/mcp/tools/build_context.py,sha256=
|
|
76
|
-
basic_memory/mcp/tools/canvas.py,sha256=
|
|
77
|
-
basic_memory/mcp/tools/delete_note.py,sha256=
|
|
78
|
-
basic_memory/mcp/tools/edit_note.py,sha256=
|
|
75
|
+
basic_memory/mcp/tools/__init__.py,sha256=lCCOC0jElvL2v53WI_dxRs4qABq4Eo-YGm6j2XeZ6AQ,1591
|
|
76
|
+
basic_memory/mcp/tools/build_context.py,sha256=RbevfGVblSF901kAD2zc1CQ5z3tzfLC9XV_jcq35d_Y,4490
|
|
77
|
+
basic_memory/mcp/tools/canvas.py,sha256=22F9G9gfPb-l8i1B5ra4Ja_h9zYY83rPY9mDA5C5gkY,3738
|
|
78
|
+
basic_memory/mcp/tools/delete_note.py,sha256=tSyRc_VgBmLyVeenClwX1Sk--LKcGahAMzTX2mK2XIs,7346
|
|
79
|
+
basic_memory/mcp/tools/edit_note.py,sha256=q4x-f7-j_l-wzm17-AVFT1_WGCo0Cq4lI3seYSe21aY,13570
|
|
79
80
|
basic_memory/mcp/tools/list_directory.py,sha256=-FxDsCru5YD02M4qkQDAurEJWyRaC7YI4YR6zg0atR8,5236
|
|
80
|
-
basic_memory/mcp/tools/move_note.py,sha256=
|
|
81
|
-
basic_memory/mcp/tools/project_management.py,sha256=
|
|
81
|
+
basic_memory/mcp/tools/move_note.py,sha256=esnbddG2OcmIgRNuQwx5OhlwZ1CWcOheg3hUobsEcq0,11320
|
|
82
|
+
basic_memory/mcp/tools/project_management.py,sha256=XtZTFWi7--ku6yUR_vwHQx2Ka3vz3pCcWMhVa_y4CQs,12162
|
|
82
83
|
basic_memory/mcp/tools/read_content.py,sha256=4FTw13B8UjVVhR78NJB9HKeJb_nA6-BGT1WdGtekN5Q,8596
|
|
83
|
-
basic_memory/mcp/tools/read_note.py,sha256=
|
|
84
|
+
basic_memory/mcp/tools/read_note.py,sha256=GdsJLkcDrCBnmNeM9BZRx9Xs2LUqH5ty_E471T9Kf1Y,7493
|
|
84
85
|
basic_memory/mcp/tools/recent_activity.py,sha256=XVjNJAJnmxvzx9_Ls1A-QOd2yTR7pJlSTTuRxSivmN4,4833
|
|
85
|
-
basic_memory/mcp/tools/search.py,sha256=
|
|
86
|
-
basic_memory/mcp/tools/
|
|
87
|
-
basic_memory/mcp/tools/
|
|
86
|
+
basic_memory/mcp/tools/search.py,sha256=22sLHed6z53mH9NQqBv37Xi4d6AtOTyrUvKs2Mycijk,11296
|
|
87
|
+
basic_memory/mcp/tools/sync_status.py,sha256=mt0DdcaAlyiKW4NK4gy6psajSqcez0bOm_4MzG1NOdg,10486
|
|
88
|
+
basic_memory/mcp/tools/utils.py,sha256=wsfrgiBScacMilODu85AXbUUKA5fJi4_6phDIC9dQRs,19702
|
|
89
|
+
basic_memory/mcp/tools/view_note.py,sha256=ddNXxyETsdA5SYflIaQVj_Cbd7I7CLVs3atRRDMbGmg,2499
|
|
90
|
+
basic_memory/mcp/tools/write_note.py,sha256=TW_7-4QfX8GYZ-FU_iSSYAm1lucE7NeOcpZUypRXKOk,5912
|
|
88
91
|
basic_memory/models/__init__.py,sha256=j0C4dtFi-FOEaQKR8dQWEG-dJtdQ15NBTiJg4nbIXNU,333
|
|
89
92
|
basic_memory/models/base.py,sha256=4hAXJ8CE1RnjKhb23lPd-QM7G_FXIdTowMJ9bRixspU,225
|
|
90
93
|
basic_memory/models/knowledge.py,sha256=AFxfKS8fRa43Kq3EjJCAufpte4VNC7fs9YfshDrB4o0,7087
|
|
@@ -97,13 +100,13 @@ basic_memory/repository/project_info_repository.py,sha256=8XLVAYKkBWQ6GbKj1iqA9O
|
|
|
97
100
|
basic_memory/repository/project_repository.py,sha256=sgdKxKTSiiOZTzABwUNqli7K5mbXiPiQEAc5r0RD_jQ,3159
|
|
98
101
|
basic_memory/repository/relation_repository.py,sha256=z7Oo5Zz_J-Bj6RvQDpSWR73ZLk2fxG7e7jrMbeFeJvQ,3179
|
|
99
102
|
basic_memory/repository/repository.py,sha256=MJb-cb8QZQbL-Grq_iqv4Kq75aX2yQohLIqh5T4fFxw,15224
|
|
100
|
-
basic_memory/repository/search_repository.py,sha256=
|
|
103
|
+
basic_memory/repository/search_repository.py,sha256=CdALAsROY6W_rE1UB8Bn55ZdMv4DOmNOtShoXCwPI_Q,17897
|
|
101
104
|
basic_memory/schemas/__init__.py,sha256=mEgIFcdTeb-v4y0gkOh_pA5zyqGbZk-9XbXqlSi6WMs,1674
|
|
102
|
-
basic_memory/schemas/base.py,sha256=
|
|
105
|
+
basic_memory/schemas/base.py,sha256=Fx97DEqzOr7y9zeeseO9qVBYbOft_4OQf9EiVfhOJn4,6738
|
|
103
106
|
basic_memory/schemas/delete.py,sha256=UAR2JK99WMj3gP-yoGWlHD3eZEkvlTSRf8QoYIE-Wfw,1180
|
|
104
107
|
basic_memory/schemas/directory.py,sha256=F9_LrJqRqb_kO08GDKJzXLb2nhbYG2PdVUo5eDD_Kf4,881
|
|
105
108
|
basic_memory/schemas/importer.py,sha256=FAh-RGxuhFW2rz3HFxwLzENJOiGgbTR2hUeXZZpM3OA,663
|
|
106
|
-
basic_memory/schemas/memory.py,sha256=
|
|
109
|
+
basic_memory/schemas/memory.py,sha256=6YjEyJ9GJLC4VrFD0EnoRDTfg-Sf6g0D4bhL9rwNBi4,5816
|
|
107
110
|
basic_memory/schemas/project_info.py,sha256=cHXgp9k4RbgolIpCIEcrb-RR9m7WL72KFGwknig4H-E,6884
|
|
108
111
|
basic_memory/schemas/prompt.py,sha256=SpIVfZprQT8E5uP40j3CpBc2nHKflwOo3iZD7BFPIHE,3648
|
|
109
112
|
basic_memory/schemas/request.py,sha256=Mv5EvrLZlFIiPr8dOjo_4QXvkseYhQI7cd_X2zDsxQM,3760
|
|
@@ -112,22 +115,24 @@ basic_memory/schemas/search.py,sha256=ywMsDGAQK2sO2TT5lc-da_k67OKW1x1TenXormHHWv
|
|
|
112
115
|
basic_memory/services/__init__.py,sha256=XGt8WX3fX_0K9L37Msy8HF8nlMZYIG3uQ6mUX6_iJtg,259
|
|
113
116
|
basic_memory/services/context_service.py,sha256=4ReLAF5qifA9ayOePGsVKusw1TWj8oBzRECjrsFiKPI,14462
|
|
114
117
|
basic_memory/services/directory_service.py,sha256=_YOPXseQM4knd7PIFAho9LV_E-FljVE5WVJKQ0uflZs,6017
|
|
115
|
-
basic_memory/services/entity_service.py,sha256=
|
|
118
|
+
basic_memory/services/entity_service.py,sha256=KemsDkKkA7KItVtfsdAlYaGyOR8ryZQCu_O9GhkJucc,30103
|
|
116
119
|
basic_memory/services/exceptions.py,sha256=oVjQr50XQqnFq1-MNKBilI2ShtHDxypavyDk1UeyHhw,390
|
|
117
120
|
basic_memory/services/file_service.py,sha256=jCrmnEkTQ4t9HF7L_M6BL7tdDqjjzty9hpTo9AzwhvM,10059
|
|
118
|
-
basic_memory/services/initialization.py,sha256=
|
|
119
|
-
basic_memory/services/link_resolver.py,sha256=
|
|
120
|
-
basic_memory/services/
|
|
121
|
+
basic_memory/services/initialization.py,sha256=6ZeuTInPksyre4pjmiK_GXi5o_mJk3mfqGGH6apHxko,9271
|
|
122
|
+
basic_memory/services/link_resolver.py,sha256=1-_VFsvqdT5rVBHe8Jrq63U59XQ0hxGezxY8c24Tiow,4594
|
|
123
|
+
basic_memory/services/migration_service.py,sha256=pFJCSD7UgHLx1CHvtN4Df1CzDEp-CZ9Vqx4XYn1m1M0,6096
|
|
124
|
+
basic_memory/services/project_service.py,sha256=nWnrlnjISqtGP6ui1BR8rSTNFzwExW8u7mRYPtWJLok,26856
|
|
121
125
|
basic_memory/services/search_service.py,sha256=c5Ky0ufz7YPFgHhVzNRQ4OecF_JUrt7nALzpMjobW4M,12782
|
|
122
126
|
basic_memory/services/service.py,sha256=V-d_8gOV07zGIQDpL-Ksqs3ZN9l3qf3HZOK1f_YNTag,336
|
|
127
|
+
basic_memory/services/sync_status_service.py,sha256=PRAnYrsNJY8EIlxaxCrDsY0TjySDdhktjta8ReQZyiY,6838
|
|
123
128
|
basic_memory/sync/__init__.py,sha256=CVHguYH457h2u2xoM8KvOilJC71XJlZ-qUh8lHcjYj4,156
|
|
124
129
|
basic_memory/sync/background_sync.py,sha256=4CEx8oP6-qD33uCeowhpzhA8wivmWxaCmSBP37h3Fs8,714
|
|
125
|
-
basic_memory/sync/sync_service.py,sha256=
|
|
130
|
+
basic_memory/sync/sync_service.py,sha256=AxC5J1YTcPWTmA0HdzvOZBthi4-_LZ44kNF0KQoDRPw,23387
|
|
126
131
|
basic_memory/sync/watch_service.py,sha256=JAumrHUjV1lF9NtEK32jgg0myWBfLXotNXxONeIV9SM,15316
|
|
127
132
|
basic_memory/templates/prompts/continue_conversation.hbs,sha256=begMFHOPN3aCm5sHz5PlKMLOfZ8hlpFxFJ-hgy0T9K4,3075
|
|
128
133
|
basic_memory/templates/prompts/search.hbs,sha256=H1cCIsHKp4VC1GrH2KeUB8pGe5vXFPqb2VPotypmeCA,3098
|
|
129
|
-
basic_memory-0.13.
|
|
130
|
-
basic_memory-0.13.
|
|
131
|
-
basic_memory-0.13.
|
|
132
|
-
basic_memory-0.13.
|
|
133
|
-
basic_memory-0.13.
|
|
134
|
+
basic_memory-0.13.0b6.dist-info/METADATA,sha256=WaorkcUqigopjYoHen6E7Ho5QDdBV7o-mKKYxvke4aY,15471
|
|
135
|
+
basic_memory-0.13.0b6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
136
|
+
basic_memory-0.13.0b6.dist-info/entry_points.txt,sha256=wvE2mRF6-Pg4weIYcfQ-86NOLZD4WJg7F7TIsRVFLb8,90
|
|
137
|
+
basic_memory-0.13.0b6.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
|
|
138
|
+
basic_memory-0.13.0b6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|