1717 project_index_file_outcome_from_job_result ,
1818)
1919from basic_memory .indexing .change_planning import ChangeReport
20+ from basic_memory .indexing .embedding_index_planning import (
21+ EmbeddingBatchVectorSync ,
22+ EmbeddingIndexBatchJobRequest ,
23+ run_embedding_index_batch ,
24+ )
2025from basic_memory .indexing .project_index_progress import (
2126 ProjectIndexCompletion ,
2227 ProjectIndexCounters ,
@@ -1466,6 +1471,7 @@ async def run_project_index_coordinator(
14661471 batch_enqueuer : ProjectIndexBatchEnqueuer ,
14671472 fanout_failure_recorder : ProjectIndexFanoutFailureRecorder | None ,
14681473 batch_size : int ,
1474+ embedding_vector_sync : EmbeddingBatchVectorSync | None = None ,
14691475) -> ProjectIndexCoordinatorResult :
14701476 """Run the storage-neutral project-index coordinator fan-out."""
14711477 if not request .search :
@@ -1537,6 +1543,12 @@ async def run_project_index_coordinator(
15371543 )
15381544 raise
15391545
1546+ await sync_project_index_vector_targets (
1547+ request = request ,
1548+ batch_results = batch_results ,
1549+ embedding_vector_sync = embedding_vector_sync ,
1550+ )
1551+
15401552 return ProjectIndexCoordinatorResult (
15411553 total_files = len (observed_files ),
15421554 enqueued_files = enqueued_files ,
@@ -1551,6 +1563,34 @@ async def run_project_index_coordinator(
15511563 )
15521564
15531565
1566+ async def sync_project_index_vector_targets (
1567+ * ,
1568+ request : RuntimeProjectIndexJobRequest ,
1569+ batch_results : Sequence [IndexFileBatchJobResult ],
1570+ embedding_vector_sync : EmbeddingBatchVectorSync | None ,
1571+ ) -> None :
1572+ """Refresh vectors produced by inline project-index batch execution."""
1573+ if not request .embeddings or embedding_vector_sync is None :
1574+ return
1575+
1576+ vector_targets = tuple (
1577+ target for batch_result in batch_results for target in batch_result .vector_targets
1578+ )
1579+ if not vector_targets :
1580+ return
1581+
1582+ await run_embedding_index_batch (
1583+ EmbeddingIndexBatchJobRequest (
1584+ tenant_id = request .tenant_id ,
1585+ project_id = request .project .project_id ,
1586+ project_path = request .project .project_path ,
1587+ entities = vector_targets ,
1588+ workflow_id = request .workflow_id ,
1589+ ),
1590+ vector_sync = embedding_vector_sync ,
1591+ )
1592+
1593+
15541594def build_project_index_batch_activity_update (
15551595 * ,
15561596 metadata : Mapping [str , object ],
0 commit comments