1313from sqlalchemy .exc import IntegrityError
1414
1515from basic_memory .config import BasicMemoryConfig
16- from basic_memory .file_utils import compute_checksum , has_frontmatter
16+ from basic_memory .file_utils import compute_checksum , has_frontmatter , remove_frontmatter
1717from basic_memory .markdown .schemas import EntityMarkdown
1818from basic_memory .indexing .models import (
1919 IndexedEntity ,
@@ -47,6 +47,7 @@ class _PreparedEntity:
4747 checksum : str
4848 content_type : str | None
4949 search_content : str | None
50+ markdown_content : str | None = None
5051
5152
5253class BatchIndexer :
@@ -253,6 +254,7 @@ async def _normalize_markdown_file(
253254 reserved_permalinks : set [str ],
254255 ) -> _PreparedMarkdownFile :
255256 final_checksum = prepared .final_checksum
257+ final_content = prepared .content
256258 final_permalink = await self ._resolve_batch_permalink (prepared , reserved_permalinks )
257259
258260 # Trigger: markdown file has no frontmatter and sync enforcement is enabled.
@@ -264,9 +266,11 @@ async def _normalize_markdown_file(
264266 "type" : prepared .markdown .frontmatter .type ,
265267 "permalink" : final_permalink ,
266268 }
267- final_checksum = await self .file_writer .write_frontmatter (
269+ write_result = await self .file_writer .write_frontmatter (
268270 IndexFrontmatterUpdate (path = prepared .file .path , metadata = frontmatter_updates )
269271 )
272+ final_checksum = write_result .checksum
273+ final_content = write_result .content
270274 prepared .markdown .frontmatter .metadata .update (frontmatter_updates )
271275
272276 # Trigger: existing markdown frontmatter may lack the canonical permalink.
@@ -278,16 +282,18 @@ async def _normalize_markdown_file(
278282 and final_permalink != prepared .markdown .frontmatter .permalink
279283 ):
280284 prepared .markdown .frontmatter .metadata ["permalink" ] = final_permalink
281- final_checksum = await self .file_writer .write_frontmatter (
285+ write_result = await self .file_writer .write_frontmatter (
282286 IndexFrontmatterUpdate (
283287 path = prepared .file .path ,
284288 metadata = {"permalink" : final_permalink },
285289 )
286290 )
291+ final_checksum = write_result .checksum
292+ final_content = write_result .content
287293
288294 return _PreparedMarkdownFile (
289295 file = prepared .file ,
290- content = prepared . content ,
296+ content = final_content ,
291297 final_checksum = final_checksum ,
292298 markdown = prepared .markdown ,
293299 file_contains_frontmatter = prepared .file_contains_frontmatter ,
@@ -351,7 +357,8 @@ async def _upsert_markdown_file(self, prepared: _PreparedMarkdownFile) -> _Prepa
351357 entity_id = updated .id ,
352358 checksum = prepared .final_checksum ,
353359 content_type = prepared .file .content_type ,
354- search_content = prepared .markdown .content ,
360+ search_content = remove_frontmatter (prepared .content ),
361+ markdown_content = prepared .content ,
355362 )
356363
357364 async def _upsert_regular_file (self , file : IndexInputFile ) -> _PreparedEntity :
@@ -412,6 +419,7 @@ async def _upsert_regular_file(self, file: IndexInputFile) -> _PreparedEntity:
412419 checksum = checksum ,
413420 content_type = file .content_type ,
414421 search_content = None ,
422+ markdown_content = None ,
415423 )
416424
417425 # --- Relations ---
@@ -487,6 +495,7 @@ async def _refresh_search_index(
487495 permalink = entity .permalink ,
488496 checksum = prepared .checksum ,
489497 content_type = prepared .content_type ,
498+ markdown_content = prepared .markdown_content ,
490499 )
491500
492501 # --- Helpers ---
0 commit comments