basic-memory 0.13.0b3__py3-none-any.whl → 0.13.0b5__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.

Files changed (41) hide show
  1. basic_memory/__init__.py +1 -7
  2. basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py +104 -0
  3. basic_memory/api/routers/knowledge_router.py +13 -0
  4. basic_memory/api/routers/memory_router.py +3 -4
  5. basic_memory/api/routers/project_router.py +9 -9
  6. basic_memory/api/routers/prompt_router.py +2 -2
  7. basic_memory/cli/commands/project.py +2 -2
  8. basic_memory/cli/commands/status.py +1 -1
  9. basic_memory/cli/commands/sync.py +1 -1
  10. basic_memory/mcp/prompts/__init__.py +2 -0
  11. basic_memory/mcp/prompts/sync_status.py +116 -0
  12. basic_memory/mcp/server.py +6 -6
  13. basic_memory/mcp/tools/__init__.py +4 -0
  14. basic_memory/mcp/tools/build_context.py +32 -7
  15. basic_memory/mcp/tools/canvas.py +2 -1
  16. basic_memory/mcp/tools/delete_note.py +159 -4
  17. basic_memory/mcp/tools/edit_note.py +17 -11
  18. basic_memory/mcp/tools/move_note.py +252 -40
  19. basic_memory/mcp/tools/project_management.py +35 -3
  20. basic_memory/mcp/tools/read_note.py +9 -2
  21. basic_memory/mcp/tools/search.py +180 -8
  22. basic_memory/mcp/tools/sync_status.py +254 -0
  23. basic_memory/mcp/tools/utils.py +47 -0
  24. basic_memory/mcp/tools/view_note.py +66 -0
  25. basic_memory/mcp/tools/write_note.py +13 -2
  26. basic_memory/models/project.py +1 -3
  27. basic_memory/repository/search_repository.py +99 -26
  28. basic_memory/schemas/base.py +33 -5
  29. basic_memory/schemas/memory.py +58 -1
  30. basic_memory/services/entity_service.py +4 -4
  31. basic_memory/services/initialization.py +32 -5
  32. basic_memory/services/link_resolver.py +20 -5
  33. basic_memory/services/migration_service.py +168 -0
  34. basic_memory/services/project_service.py +157 -56
  35. basic_memory/services/sync_status_service.py +181 -0
  36. basic_memory/sync/sync_service.py +55 -2
  37. {basic_memory-0.13.0b3.dist-info → basic_memory-0.13.0b5.dist-info}/METADATA +2 -2
  38. {basic_memory-0.13.0b3.dist-info → basic_memory-0.13.0b5.dist-info}/RECORD +41 -35
  39. {basic_memory-0.13.0b3.dist-info → basic_memory-0.13.0b5.dist-info}/WHEEL +0 -0
  40. {basic_memory-0.13.0b3.dist-info → basic_memory-0.13.0b5.dist-info}/entry_points.txt +0 -0
  41. {basic_memory-0.13.0b3.dist-info → basic_memory-0.13.0b5.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
- # Initialize progress tracking if requested
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}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: basic-memory
3
- Version: 0.13.0b3
3
+ Version: 0.13.0b5
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=4JBLRdCwrUwNtv3qPAFmcDiktOIhvAF8hgT-Ku5RL1U,342
1
+ basic_memory/__init__.py,sha256=GahMpH_d-907_9wZslmIx_KTDsdFvbhYBONrRrXphc0,125
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
@@ -11,6 +11,7 @@ basic_memory/alembic/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl
11
11
  basic_memory/alembic/versions/3dae7c7b1564_initial_schema.py,sha256=lTbWlAnd1es7xU99DoJgfaRe1_Kte8TL98riqeKGV80,4363
12
12
  basic_memory/alembic/versions/502b60eaa905_remove_required_from_entity_permalink.py,sha256=k6xYTmYPM9Ros-7CA7BwZBKYwoK_gmVdC-2n8FAjdoE,1840
13
13
  basic_memory/alembic/versions/5fe1ab1ccebe_add_projects_table.py,sha256=2CCY9ayjzbraYMcinqSsJi9Sc0nu2e-ehkUJus-sz34,4379
14
+ basic_memory/alembic/versions/647e7a75e2cd_project_constraint_fix.py,sha256=YErFkIpZdicvUil4ZtE6uxSpk5BZCTXZ_TfPE-MgSfo,4210
14
15
  basic_memory/alembic/versions/b3c3938bacdb_relation_to_name_unique_index.py,sha256=RsGymQzfRXV1LSNKiyi0lMilTxW1NgwS9jR67ye2apI,1428
15
16
  basic_memory/alembic/versions/cc7172b46608_update_search_index_schema.py,sha256=kDavR9Qqx9wSu5P3qd4SZq_waIsDG1UMTg2SmDoktMU,3679
16
17
  basic_memory/api/__init__.py,sha256=wCpj-21j1D0KzKl9Ql6unLBVFY0K1uGp_FeSZRKtqpk,72
@@ -19,11 +20,11 @@ basic_memory/api/template_loader.py,sha256=exbTeXyJRgyLFmSjNeroxjT7X2DWFm2X5qUVa
19
20
  basic_memory/api/routers/__init__.py,sha256=REO5CKQ96o5vtGWACcsIxIpWybIUSeKXc83RWbWc8BQ,398
20
21
  basic_memory/api/routers/directory_router.py,sha256=rBQHvuwffUOk0iKvcEs2QlWclgvr8ur24f_pH3-sVRQ,2054
21
22
  basic_memory/api/routers/importer_router.py,sha256=xFUCorkPWo8AF0ya0UrcLmXNf8CjPZdAqddQIH8PO-o,4513
22
- basic_memory/api/routers/knowledge_router.py,sha256=sdRGWqBmAjELkJ7ZXyZB6qTU1CVH4EXpKOyDDVGV4yU,9133
23
+ basic_memory/api/routers/knowledge_router.py,sha256=4dD_tPpcJGWCuoRKEbQXCS3hoXNWe-VbcGC7xV-8VoE,9738
23
24
  basic_memory/api/routers/management_router.py,sha256=INT5PzUXhfBH2546CTZKqZnRuECYIA4Ypfgdf6JNyu0,2686
24
- basic_memory/api/routers/memory_router.py,sha256=M344_tHIFzgi-i5PqltaPHdZaut_bMejqktmzLKto0c,2995
25
- basic_memory/api/routers/project_router.py,sha256=TMREu8qVnTvx1y9crdx6UsfY8OtaXfpG4KhgJ9O1Gs0,8246
26
- basic_memory/api/routers/prompt_router.py,sha256=LzZAerGtDLPdyTKjThQciVGPUkjbIc3dmdJHX-ievSo,9913
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
27
28
  basic_memory/api/routers/resource_router.py,sha256=WEJEqEaY_yTKj5-U-rW4kXQKUcJflykgwI6_g_R41ck,8058
28
29
  basic_memory/api/routers/search_router.py,sha256=GD62jlCQTiL_VNsdibi-b1f6H40KCWo9SX2Cl7YH4QU,1226
29
30
  basic_memory/api/routers/utils.py,sha256=vW-bYUmATQPe-pYbQfNjuho-BzsHhy9bmWv-LZX3HTc,5153
@@ -38,9 +39,9 @@ basic_memory/cli/commands/import_claude_conversations.py,sha256=sXnP0hjfwUapwHQD
38
39
  basic_memory/cli/commands/import_claude_projects.py,sha256=mWYIeA-mu_Pq23R7OEtY2XHXG5CAh1dMGIBhckB4zRk,2811
39
40
  basic_memory/cli/commands/import_memory_json.py,sha256=Vz5rt7KCel5B3Dtv57WPEUJTHCMwFUqQlOCm2djwUi8,2867
40
41
  basic_memory/cli/commands/mcp.py,sha256=jmRUv1U5FT3AQ1cDbvTfAUnjhBw6UsNEmIkpbNr-_qQ,3093
41
- basic_memory/cli/commands/project.py,sha256=RDeVI18SR-OZkBVZfTwimBYQRhn7Qh-RlvZsXkiCEI0,12864
42
- basic_memory/cli/commands/status.py,sha256=SnwNK7d2cAT16i_k4jRnQsDC0fwU1XtZza5o2tIX51s,5699
43
- basic_memory/cli/commands/sync.py,sha256=g5RZMST68SkUenp2VZ_vQN-I50nZtvE1wZkPhHH-1zM,7983
42
+ basic_memory/cli/commands/project.py,sha256=fOjbUryrS2aZMtgjMRq8Uw-oVyLZua_f3brc_1OA4Vw,12904
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
44
45
  basic_memory/cli/commands/tool.py,sha256=7wte1TqjG__NcC7BB0BRLl8THB3t5eAngud0zVHBQ8k,9506
45
46
  basic_memory/importers/__init__.py,sha256=BTcBW97P3thcsWa5w9tQsvOu8ynHDgw2-8tPgkCZoh8,795
46
47
  basic_memory/importers/base.py,sha256=awwe_U-CfzSINKoM6iro7ru4QqLlsfXzdHztDvebnxM,2531
@@ -60,34 +61,37 @@ basic_memory/mcp/async_client.py,sha256=Eo345wANiBRSM4u3j_Vd6Ax4YtMg7qbWd9PIoFfj
60
61
  basic_memory/mcp/auth_provider.py,sha256=CTydkEBvxh_fg_Z0hxKjTT8nHJoFhxrwp5hTQuToiIU,9977
61
62
  basic_memory/mcp/external_auth_provider.py,sha256=Z1GDbr6P4C-flZVHMWkIqAu30kcfeHv2iSp0EYbFuxo,11483
62
63
  basic_memory/mcp/project_session.py,sha256=OP1X10iG4wIWHgfkwC2q7Inl6b68zrioqkD1-Ju_S6w,3462
63
- basic_memory/mcp/server.py,sha256=2J6uWnpsGFnrlp8G6XlUknhjpD72vFI8nP5OLPw3H28,3665
64
+ basic_memory/mcp/server.py,sha256=QbRkkYaDWK5Vrvez39ET8C6h5uGS6y4wDHMVaCgdD78,3787
64
65
  basic_memory/mcp/supabase_auth_provider.py,sha256=MLHfSHjdx2Q5jr_Ljx0qZBaOwp7CkPdk_ybR_LQ7Mvw,16472
65
- basic_memory/mcp/prompts/__init__.py,sha256=-Bl9Dgj2TD9PULjzggPqXuvPEjWCRy7S9Yg03h2-U7A,615
66
+ basic_memory/mcp/prompts/__init__.py,sha256=UvaIw5KA8PaXj3Wz1Dr-VjlkEq6T5D8AGtYFVwaHqnA,683
66
67
  basic_memory/mcp/prompts/ai_assistant_guide.py,sha256=8TI5xObiRVcwv6w9by1xQHlX0whvyE7-LGsiqDMRTFg,821
67
68
  basic_memory/mcp/prompts/continue_conversation.py,sha256=rsmlC2V7e7G6DAK0K825vFsPKgsRQ702HFzn6lkHaDM,1998
68
69
  basic_memory/mcp/prompts/recent_activity.py,sha256=Q-KKOt33hWVH4PSPO4AkCpc0y0rFPGFzARLN2MphKuY,3308
69
70
  basic_memory/mcp/prompts/search.py,sha256=nb88MZy9tdW_MmCLUVItiukrLdb3xEHWLv0JVLUlc4o,1692
71
+ basic_memory/mcp/prompts/sync_status.py,sha256=_5EqnCavY9BTsaxX2tPp-AgQZLt4bUrqQ6TwbM0L5w8,4645
70
72
  basic_memory/mcp/prompts/utils.py,sha256=VacrbqwYtySpIlYIrKHo5s6jtoTMscYJqrFRH3zpC6Q,5431
71
73
  basic_memory/mcp/resources/ai_assistant_guide.md,sha256=qnYWDkYlb-JmKuOoZ5llmRas_t4dWDXB_i8LE277Lgs,14777
72
74
  basic_memory/mcp/resources/project_info.py,sha256=LcUkTx4iXBfU6Lp4TVch78OqLopbOy4ljyKnfr4VXso,1906
73
- basic_memory/mcp/tools/__init__.py,sha256=eU-YqlayCIzzbpipipTi7pX7PUad_W-Uh9CxtY4IjvQ,1441
74
- basic_memory/mcp/tools/build_context.py,sha256=U9ZWqtOwdpxbVm0gPoQfYdl55hJAQ6d6Xdw2-AeyXcE,3325
75
- basic_memory/mcp/tools/canvas.py,sha256=KFbwRAWtr31wLjRgeYyvIDLYRGs1Qs_hHhY_WWuDFWs,3601
76
- basic_memory/mcp/tools/delete_note.py,sha256=mDX7JxmzMzXyRaY0-fKyLiGf2czM51Kxz2ACX-dyrNU,1270
77
- basic_memory/mcp/tools/edit_note.py,sha256=VG1pbB50cm70FTevspAkfDxCj-gs_YbdtPqhHS2i_xA,13025
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
78
80
  basic_memory/mcp/tools/list_directory.py,sha256=-FxDsCru5YD02M4qkQDAurEJWyRaC7YI4YR6zg0atR8,5236
79
- basic_memory/mcp/tools/move_note.py,sha256=oZ83EtKmi5bs8usN2ydc-l_PG1hIXmt86QK4-cSZs6M,2885
80
- basic_memory/mcp/tools/project_management.py,sha256=wMmiGy_n7VGhwKmRpoBMU-z-2NYJouNdvBmujTGkV3w,10952
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
81
83
  basic_memory/mcp/tools/read_content.py,sha256=4FTw13B8UjVVhR78NJB9HKeJb_nA6-BGT1WdGtekN5Q,8596
82
- basic_memory/mcp/tools/read_note.py,sha256=Q2z_9dEoR3lq4v_NKyMyZAW-SP4LUgi1b6kWrYEanQ4,6944
84
+ basic_memory/mcp/tools/read_note.py,sha256=RHju9Cqf8_-hzCdzMZH40YEln2RUe_EGAFkH7gcxblM,7487
83
85
  basic_memory/mcp/tools/recent_activity.py,sha256=XVjNJAJnmxvzx9_Ls1A-QOd2yTR7pJlSTTuRxSivmN4,4833
84
- basic_memory/mcp/tools/search.py,sha256=9imlCXSv5NHpKb75asCxKNzBW5tHOJQNc6XFZjaYL1U,4209
85
- basic_memory/mcp/tools/utils.py,sha256=9TV-RNj_3OrFK-5xTaMl41a6moKlCP-HRrfEI0e0Plo,18161
86
- basic_memory/mcp/tools/write_note.py,sha256=yGPb9HGB5BFnjBD1lFNsZ7wF4ItY2nOxaE05bBNP1Jg,5226
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=7DBrlVinopS6wcYhoF1xzov0ObFHC1nxdEmEgFVVO9g,2496
90
+ basic_memory/mcp/tools/write_note.py,sha256=TW_7-4QfX8GYZ-FU_iSSYAm1lucE7NeOcpZUypRXKOk,5912
87
91
  basic_memory/models/__init__.py,sha256=j0C4dtFi-FOEaQKR8dQWEG-dJtdQ15NBTiJg4nbIXNU,333
88
92
  basic_memory/models/base.py,sha256=4hAXJ8CE1RnjKhb23lPd-QM7G_FXIdTowMJ9bRixspU,225
89
93
  basic_memory/models/knowledge.py,sha256=AFxfKS8fRa43Kq3EjJCAufpte4VNC7fs9YfshDrB4o0,7087
90
- basic_memory/models/project.py,sha256=S3PvS2o8dFLOo8qiSdI12CG29dTvHw2JIpYJLZ0UFmg,2800
94
+ basic_memory/models/project.py,sha256=oUrQaUOu7_muSl-i38Dh0HzmCFrMAtwgxALDUTt9k5c,2773
91
95
  basic_memory/models/search.py,sha256=PhQ8w4taApSvjh1DpPhB4cH9GTt2E2po-DFZzhnoZkY,1300
92
96
  basic_memory/repository/__init__.py,sha256=MWK-o8QikqzOpe5SyPbKQ2ioB5BWA0Upz65tgg-E0DU,327
93
97
  basic_memory/repository/entity_repository.py,sha256=larjP7r6Sc7YyPD1BloC_m96McYsjHTf6doUQy3gSY4,3776
@@ -96,13 +100,13 @@ basic_memory/repository/project_info_repository.py,sha256=8XLVAYKkBWQ6GbKj1iqA9O
96
100
  basic_memory/repository/project_repository.py,sha256=sgdKxKTSiiOZTzABwUNqli7K5mbXiPiQEAc5r0RD_jQ,3159
97
101
  basic_memory/repository/relation_repository.py,sha256=z7Oo5Zz_J-Bj6RvQDpSWR73ZLk2fxG7e7jrMbeFeJvQ,3179
98
102
  basic_memory/repository/repository.py,sha256=MJb-cb8QZQbL-Grq_iqv4Kq75aX2yQohLIqh5T4fFxw,15224
99
- basic_memory/repository/search_repository.py,sha256=WVj4PlFa4ZywoZZhQaArQg9PtTuMkLYaMe-jr9pASxA,14066
103
+ basic_memory/repository/search_repository.py,sha256=HA8zO9rP1JbNEJEzNfvQVCMLgVahHiMhut8HxQ0Frwo,17549
100
104
  basic_memory/schemas/__init__.py,sha256=mEgIFcdTeb-v4y0gkOh_pA5zyqGbZk-9XbXqlSi6WMs,1674
101
- basic_memory/schemas/base.py,sha256=dwnaI5fJXsdp81mdH0ZpmJ-WICY-0M7ZPWeW5OUgBG8,5685
105
+ basic_memory/schemas/base.py,sha256=Fx97DEqzOr7y9zeeseO9qVBYbOft_4OQf9EiVfhOJn4,6738
102
106
  basic_memory/schemas/delete.py,sha256=UAR2JK99WMj3gP-yoGWlHD3eZEkvlTSRf8QoYIE-Wfw,1180
103
107
  basic_memory/schemas/directory.py,sha256=F9_LrJqRqb_kO08GDKJzXLb2nhbYG2PdVUo5eDD_Kf4,881
104
108
  basic_memory/schemas/importer.py,sha256=FAh-RGxuhFW2rz3HFxwLzENJOiGgbTR2hUeXZZpM3OA,663
105
- basic_memory/schemas/memory.py,sha256=IjdKvOx1l61Sx7Si4lldjtAJCKg2e0yaeW-MUJmkECE,3802
109
+ basic_memory/schemas/memory.py,sha256=6YjEyJ9GJLC4VrFD0EnoRDTfg-Sf6g0D4bhL9rwNBi4,5816
106
110
  basic_memory/schemas/project_info.py,sha256=cHXgp9k4RbgolIpCIEcrb-RR9m7WL72KFGwknig4H-E,6884
107
111
  basic_memory/schemas/prompt.py,sha256=SpIVfZprQT8E5uP40j3CpBc2nHKflwOo3iZD7BFPIHE,3648
108
112
  basic_memory/schemas/request.py,sha256=Mv5EvrLZlFIiPr8dOjo_4QXvkseYhQI7cd_X2zDsxQM,3760
@@ -111,22 +115,24 @@ basic_memory/schemas/search.py,sha256=ywMsDGAQK2sO2TT5lc-da_k67OKW1x1TenXormHHWv
111
115
  basic_memory/services/__init__.py,sha256=XGt8WX3fX_0K9L37Msy8HF8nlMZYIG3uQ6mUX6_iJtg,259
112
116
  basic_memory/services/context_service.py,sha256=4ReLAF5qifA9ayOePGsVKusw1TWj8oBzRECjrsFiKPI,14462
113
117
  basic_memory/services/directory_service.py,sha256=_YOPXseQM4knd7PIFAho9LV_E-FljVE5WVJKQ0uflZs,6017
114
- basic_memory/services/entity_service.py,sha256=5l17i13xneUPwIAKGYi78VeWvwwpz4Yhfgphgx295Jg,29326
118
+ basic_memory/services/entity_service.py,sha256=9X3fjuOe30y9QOBvfWI4wyJhjVHH32jjHf8HWvaU540,29440
115
119
  basic_memory/services/exceptions.py,sha256=oVjQr50XQqnFq1-MNKBilI2ShtHDxypavyDk1UeyHhw,390
116
120
  basic_memory/services/file_service.py,sha256=jCrmnEkTQ4t9HF7L_M6BL7tdDqjjzty9hpTo9AzwhvM,10059
117
- basic_memory/services/initialization.py,sha256=1sPz0dAsFVJOaiWBG6FgxKmwLNrMtBrmX4I4qVTI0aY,7786
118
- basic_memory/services/link_resolver.py,sha256=8KgozYS8reQaihzDMS8_0tDKo-BdqHjhECIM39I_wis,4078
119
- basic_memory/services/project_service.py,sha256=7P3fCmS5YOmD64vN_WKpJJ_V52ca600uBnlqf264_2Y,20520
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=j3744CmOj6iI6ugv4rEVZct3uFDaN-qQYX8isgSJZmw,25978
120
125
  basic_memory/services/search_service.py,sha256=c5Ky0ufz7YPFgHhVzNRQ4OecF_JUrt7nALzpMjobW4M,12782
121
126
  basic_memory/services/service.py,sha256=V-d_8gOV07zGIQDpL-Ksqs3ZN9l3qf3HZOK1f_YNTag,336
127
+ basic_memory/services/sync_status_service.py,sha256=PRAnYrsNJY8EIlxaxCrDsY0TjySDdhktjta8ReQZyiY,6838
122
128
  basic_memory/sync/__init__.py,sha256=CVHguYH457h2u2xoM8KvOilJC71XJlZ-qUh8lHcjYj4,156
123
129
  basic_memory/sync/background_sync.py,sha256=4CEx8oP6-qD33uCeowhpzhA8wivmWxaCmSBP37h3Fs8,714
124
- basic_memory/sync/sync_service.py,sha256=7ccn4_YWcmC9VSEgm6diosRAibn4LxBS3lWb8vcTaoQ,19833
130
+ basic_memory/sync/sync_service.py,sha256=oqUh5R8ABBgxXxJB9YbNKOziDk03fouUmcLe_LMLcow,21998
125
131
  basic_memory/sync/watch_service.py,sha256=JAumrHUjV1lF9NtEK32jgg0myWBfLXotNXxONeIV9SM,15316
126
132
  basic_memory/templates/prompts/continue_conversation.hbs,sha256=begMFHOPN3aCm5sHz5PlKMLOfZ8hlpFxFJ-hgy0T9K4,3075
127
133
  basic_memory/templates/prompts/search.hbs,sha256=H1cCIsHKp4VC1GrH2KeUB8pGe5vXFPqb2VPotypmeCA,3098
128
- basic_memory-0.13.0b3.dist-info/METADATA,sha256=9PsyggvtWB9fpo9h4RfUOfy4g4JVqrRYbeOjGWiIwz0,15468
129
- basic_memory-0.13.0b3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
130
- basic_memory-0.13.0b3.dist-info/entry_points.txt,sha256=wvE2mRF6-Pg4weIYcfQ-86NOLZD4WJg7F7TIsRVFLb8,90
131
- basic_memory-0.13.0b3.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
132
- basic_memory-0.13.0b3.dist-info/RECORD,,
134
+ basic_memory-0.13.0b5.dist-info/METADATA,sha256=m67Zt3zvqV9MK_ycxb8JlpEUJ1gTO9AGQ1Jy5DYsuHc,15471
135
+ basic_memory-0.13.0b5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
136
+ basic_memory-0.13.0b5.dist-info/entry_points.txt,sha256=wvE2mRF6-Pg4weIYcfQ-86NOLZD4WJg7F7TIsRVFLb8,90
137
+ basic_memory-0.13.0b5.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
138
+ basic_memory-0.13.0b5.dist-info/RECORD,,