@neuralis/brain-core 0.1.0 → 0.2.1
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.
- package/README.md +26 -35
- package/app/README.md +1 -1
- package/app/cards/DiffView.tsx +9 -7
- package/app/cards/README.md +1 -1
- package/app/cards/diffLine.tsx +2 -4
- package/app/filesystem/README.md +4 -4
- package/app/filesystem/api/README.md +3 -3
- package/app/filesystem/api/index.ts +137 -123
- package/app/filesystem/domain/types.ts +36 -5
- package/app/filesystem/hooks/README.md +5 -5
- package/app/filesystem/hooks/useDiscoverableSources.ts +4 -2
- package/app/filesystem/hooks/useFilesystemSSE.ts +31 -23
- package/app/filesystem/hooks/useGitChangesInventory.ts +4 -2
- package/app/filesystem/host/README.md +3 -2
- package/app/filesystem/host/installFilesystemHostComponents.tsx +22 -9
- package/app/filesystem/store/README.md +11 -7
- package/app/filesystem/store/filesystemStore.ts +454 -162
- package/app/filesystem/store/gitSlice.ts +6 -6
- package/app/filesystem/store/listSlice.ts +10 -6
- package/app/filesystem/store/searchSlice.ts +27 -4
- package/app/filesystem/ui/FileEditor.tsx +48 -35
- package/app/filesystem/ui/FileTree.tsx +10 -9
- package/app/filesystem/ui/FileTreeSearch.tsx +29 -2
- package/app/filesystem/ui/GitCommitChangesView.tsx +5 -3
- package/app/filesystem/ui/GitCommitGraph.tsx +6 -5
- package/app/filesystem/ui/GitControlPanel.tsx +14 -13
- package/app/filesystem/ui/GitDiffView.tsx +2 -1
- package/app/filesystem/ui/GitFileDiff.tsx +7 -6
- package/app/filesystem/ui/PendingChangesPanel.tsx +88 -28
- package/app/filesystem/ui/PendingReviewDialog.tsx +52 -24
- package/app/filesystem/ui/README.md +8 -7
- package/app/filesystem/ui/ReembedDialog.tsx +22 -9
- package/app/filesystem/ui/SourceDeleteConfirm.tsx +1 -1
- package/app/filesystem/ui/SourcesPanel.tsx +135 -42
- package/app/filesystem/ui/VectorHealthPanel.tsx +20 -4
- package/app/filesystem/ui/pendingChangesModel.ts +9 -5
- package/dist/app/chunks/{astro-LRAFGXNX.js → astro-B2J4AS2D.js} +1 -1
- package/dist/app/chunks/bash-KY6SAQTH.js +1 -0
- package/dist/app/chunks/c-OBOPYVZ7.js +1 -0
- package/dist/app/chunks/{chunk-5H7ZCOD3.js → chunk-2X3GNKJ3.js} +1 -1
- package/dist/app/chunks/{chunk-XIFGTNRM.js → chunk-JPJIVRFI.js} +1 -1
- package/dist/app/chunks/{chunk-RH3QY5LF.js → chunk-LEFIFWND.js} +1 -1
- package/dist/app/chunks/{chunk-G4RZ3UNX.js → chunk-N6RXX3PH.js} +1 -1
- package/dist/app/chunks/{chunk-QXXJ73P5.js → chunk-PZAW4HPB.js} +1 -1
- package/dist/app/chunks/{chunk-3QLE7Y4L.js → chunk-ZBYWWTO6.js} +1 -1
- package/dist/app/chunks/cpp-TVWVOTEQ.js +1 -0
- package/dist/app/chunks/css-MANZBYA4.js +1 -0
- package/dist/app/chunks/{elixir-M36XROA6.js → elixir-S725Z7EH.js} +1 -1
- package/dist/app/chunks/{elm-7BG6QAIK.js → elm-5WUUSTNB.js} +1 -1
- package/dist/app/chunks/graphql-UGOPR3WU.js +1 -0
- package/dist/app/chunks/html-F6FWTBSG.js +1 -0
- package/dist/app/chunks/java-ANIVV5H5.js +1 -0
- package/dist/app/chunks/javascript-IH374YWG.js +1 -0
- package/dist/app/chunks/json-WGGVVXSB.js +1 -0
- package/dist/app/chunks/jsx-OTXJQD32.js +1 -0
- package/dist/app/chunks/{latex-ZWK7SXB6.js → latex-QCZNITGN.js} +1 -1
- package/dist/app/chunks/lua-4CRZ64PU.js +1 -0
- package/dist/app/chunks/{nginx-2L6VRV3A.js → nginx-V4CYS7WR.js} +1 -1
- package/dist/app/chunks/{perl-PBUAXXK6.js → perl-BHTX7F5B.js} +1 -1
- package/dist/app/chunks/{php-QJX57PA6.js → php-AYGJ5WYZ.js} +1 -1
- package/dist/app/chunks/r-4YFCFA4B.js +1 -0
- package/dist/app/chunks/{ruby-RLOWMVPO.js → ruby-42NMJWAL.js} +1 -1
- package/dist/app/chunks/{scss-B5CAI3HR.js → scss-XD7VU2CU.js} +1 -1
- package/dist/app/chunks/sql-B55MH6JJ.js +1 -0
- package/dist/app/chunks/{svelte-GT3D4C44.js → svelte-WR3QPIJU.js} +1 -1
- package/dist/app/chunks/tsx-S73GAE2L.js +1 -0
- package/dist/app/chunks/typescript-NEWOAB5Z.js +1 -0
- package/dist/app/chunks/{vue-JOW62MHD.js → vue-CCDS4VZK.js} +1 -1
- package/dist/app/chunks/xml-UXKAGLDR.js +1 -0
- package/dist/app/chunks/yaml-UMWKDTK7.js +1 -0
- package/dist/app/host.js +46 -46
- package/dist/scripts/embeddingLockV3.d.ts +30 -0
- package/dist/scripts/embeddingLockV3.d.ts.map +1 -0
- package/dist/scripts/embeddingLockV3.js +100 -0
- package/dist/scripts/embeddingLockV3.js.map +1 -0
- package/dist/scripts/vectorProofV1.d.ts +90 -0
- package/dist/scripts/vectorProofV1.d.ts.map +1 -0
- package/dist/scripts/vectorProofV1.js +220 -0
- package/dist/scripts/vectorProofV1.js.map +1 -0
- package/dist/src/config/env.d.ts +21 -0
- package/dist/src/config/env.d.ts.map +1 -1
- package/dist/src/config/env.js +55 -0
- package/dist/src/config/env.js.map +1 -1
- package/dist/src/connectors/AppSourceConfigStore.d.ts +12 -2
- package/dist/src/connectors/AppSourceConfigStore.d.ts.map +1 -1
- package/dist/src/connectors/AppSourceConfigStore.js +48 -40
- package/dist/src/connectors/AppSourceConfigStore.js.map +1 -1
- package/dist/src/connectors/LocalDiskConnector.d.ts +11 -14
- package/dist/src/connectors/LocalDiskConnector.d.ts.map +1 -1
- package/dist/src/connectors/LocalDiskConnector.js +87 -107
- package/dist/src/connectors/LocalDiskConnector.js.map +1 -1
- package/dist/src/connectors/sourceConfigMutation.d.ts +11 -1
- package/dist/src/connectors/sourceConfigMutation.d.ts.map +1 -1
- package/dist/src/connectors/sourceConfigMutation.js +36 -3
- package/dist/src/connectors/sourceConfigMutation.js.map +1 -1
- package/dist/src/domain/chunker.js +8 -3
- package/dist/src/domain/chunker.js.map +1 -1
- package/dist/src/domain/healthTypes.d.ts +11 -0
- package/dist/src/domain/healthTypes.d.ts.map +1 -1
- package/dist/src/domain/mime.d.ts +1 -0
- package/dist/src/domain/mime.d.ts.map +1 -1
- package/dist/src/domain/mime.js +48 -0
- package/dist/src/domain/mime.js.map +1 -1
- package/dist/src/domain/pendingChange.d.ts +7 -0
- package/dist/src/domain/pendingChange.d.ts.map +1 -1
- package/dist/src/domain/pendingChange.js +11 -0
- package/dist/src/domain/pendingChange.js.map +1 -1
- package/dist/src/domain/sourceConfig.d.ts +7 -14
- package/dist/src/domain/sourceConfig.d.ts.map +1 -1
- package/dist/src/domain/sourceConfig.js +1 -13
- package/dist/src/domain/sourceConfig.js.map +1 -1
- package/dist/src/domain/sourcePackages.d.ts +11 -2
- package/dist/src/domain/sourcePackages.d.ts.map +1 -1
- package/dist/src/domain/syncTrigger.d.ts +2 -3
- package/dist/src/domain/syncTrigger.d.ts.map +1 -1
- package/dist/src/domain/syncTrigger.js +2 -3
- package/dist/src/domain/syncTrigger.js.map +1 -1
- package/dist/src/domain/syncTypes.d.ts +21 -4
- package/dist/src/domain/syncTypes.d.ts.map +1 -1
- package/dist/src/domain/syncTypes.js.map +1 -1
- package/dist/src/domain/text.d.ts +3 -0
- package/dist/src/domain/text.d.ts.map +1 -1
- package/dist/src/domain/text.js +5 -0
- package/dist/src/domain/text.js.map +1 -1
- package/dist/src/domain/types.d.ts +9 -0
- package/dist/src/domain/types.d.ts.map +1 -1
- package/dist/src/embeddings/clients/GeminiEmbedder.d.ts.map +1 -1
- package/dist/src/embeddings/clients/GeminiEmbedder.js +11 -5
- package/dist/src/embeddings/clients/GeminiEmbedder.js.map +1 -1
- package/dist/src/embeddings/clients/OllamaEmbedder.d.ts.map +1 -1
- package/dist/src/embeddings/clients/OllamaEmbedder.js +13 -6
- package/dist/src/embeddings/clients/OllamaEmbedder.js.map +1 -1
- package/dist/src/embeddings/clients/OpenAIEmbedder.d.ts.map +1 -1
- package/dist/src/embeddings/clients/OpenAIEmbedder.js +12 -9
- package/dist/src/embeddings/clients/OpenAIEmbedder.js.map +1 -1
- package/dist/src/embeddings/clients/QwenEmbedder.d.ts.map +1 -1
- package/dist/src/embeddings/clients/QwenEmbedder.js +12 -5
- package/dist/src/embeddings/clients/QwenEmbedder.js.map +1 -1
- package/dist/src/embeddings/clients/VoyageEmbedder.d.ts.map +1 -1
- package/dist/src/embeddings/clients/VoyageEmbedder.js +12 -5
- package/dist/src/embeddings/clients/VoyageEmbedder.js.map +1 -1
- package/dist/src/embeddings/factory.d.ts +2 -0
- package/dist/src/embeddings/factory.d.ts.map +1 -1
- package/dist/src/embeddings/factory.js +23 -3
- package/dist/src/embeddings/factory.js.map +1 -1
- package/dist/src/embeddings/lock.d.ts +22 -11
- package/dist/src/embeddings/lock.d.ts.map +1 -1
- package/dist/src/embeddings/lock.js +47 -29
- package/dist/src/embeddings/lock.js.map +1 -1
- package/dist/src/embeddings/retry.d.ts +5 -0
- package/dist/src/embeddings/retry.d.ts.map +1 -1
- package/dist/src/embeddings/retry.js +35 -0
- package/dist/src/embeddings/retry.js.map +1 -1
- package/dist/src/events/pending.d.ts +56 -0
- package/dist/src/events/pending.d.ts.map +1 -0
- package/dist/src/events/pending.js +108 -0
- package/dist/src/events/pending.js.map +1 -0
- package/dist/src/events/source.d.ts +60 -14
- package/dist/src/events/source.d.ts.map +1 -1
- package/dist/src/events/source.js +149 -31
- package/dist/src/events/source.js.map +1 -1
- package/dist/src/events/vector.d.ts +33 -0
- package/dist/src/events/vector.d.ts.map +1 -0
- package/dist/src/events/vector.js +57 -0
- package/dist/src/events/vector.js.map +1 -0
- package/dist/src/git/GitRunner.d.ts.map +1 -1
- package/dist/src/git/GitRunner.js +11 -8
- package/dist/src/git/GitRunner.js.map +1 -1
- package/dist/src/git/sourceGitControl.d.ts.map +1 -1
- package/dist/src/git/sourceGitControl.js +2 -1
- package/dist/src/git/sourceGitControl.js.map +1 -1
- package/dist/src/index.d.ts +5 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/lifecycle.d.ts +20 -4
- package/dist/src/lifecycle.d.ts.map +1 -1
- package/dist/src/lifecycle.js +5 -1
- package/dist/src/lifecycle.js.map +1 -1
- package/dist/src/routes/health.js +6 -1
- package/dist/src/routes/health.js.map +1 -1
- package/dist/src/routes/pending.d.ts.map +1 -1
- package/dist/src/routes/pending.js +2 -1
- package/dist/src/routes/pending.js.map +1 -1
- package/dist/src/routes/sources.d.ts.map +1 -1
- package/dist/src/routes/sources.js +60 -11
- package/dist/src/routes/sources.js.map +1 -1
- package/dist/src/services/BridgeService.d.ts +2 -2
- package/dist/src/services/BridgeService.d.ts.map +1 -1
- package/dist/src/services/BridgeService.js +11 -2
- package/dist/src/services/BridgeService.js.map +1 -1
- package/dist/src/services/FilesystemService.d.ts +3 -1
- package/dist/src/services/FilesystemService.d.ts.map +1 -1
- package/dist/src/services/FilesystemService.js +3 -1
- package/dist/src/services/FilesystemService.js.map +1 -1
- package/dist/src/services/FilesystemUiService.js +1 -1
- package/dist/src/services/FilesystemUiService.js.map +1 -1
- package/dist/src/services/SyncScheduler.d.ts.map +1 -1
- package/dist/src/services/SyncScheduler.js +0 -14
- package/dist/src/services/SyncScheduler.js.map +1 -1
- package/dist/src/services/VectorHealthService.d.ts.map +1 -1
- package/dist/src/services/VectorHealthService.js +2 -46
- package/dist/src/services/VectorHealthService.js.map +1 -1
- package/dist/src/services/baselineRepair.d.ts +2 -2
- package/dist/src/services/baselineRepair.js +2 -2
- package/dist/src/services/declaredSources.d.ts +8 -1
- package/dist/src/services/declaredSources.d.ts.map +1 -1
- package/dist/src/services/declaredSources.js +19 -19
- package/dist/src/services/declaredSources.js.map +1 -1
- package/dist/src/store/dataFormats.d.ts +14 -3
- package/dist/src/store/dataFormats.d.ts.map +1 -1
- package/dist/src/store/dataFormats.js +15 -5
- package/dist/src/store/dataFormats.js.map +1 -1
- package/dist/src/sync/DeltaSyncRunner.d.ts.map +1 -1
- package/dist/src/sync/DeltaSyncRunner.js +78 -243
- package/dist/src/sync/DeltaSyncRunner.js.map +1 -1
- package/dist/src/sync/SyncJobQueue.d.ts +33 -4
- package/dist/src/sync/SyncJobQueue.d.ts.map +1 -1
- package/dist/src/sync/SyncJobQueue.js +179 -19
- package/dist/src/sync/SyncJobQueue.js.map +1 -1
- package/dist/src/sync/moveDetector.d.ts +2 -1
- package/dist/src/sync/moveDetector.d.ts.map +1 -1
- package/dist/src/sync/moveDetector.js +2 -1
- package/dist/src/sync/moveDetector.js.map +1 -1
- package/dist/src/tools/fs_search.d.ts.map +1 -1
- package/dist/src/tools/fs_search.js +8 -0
- package/dist/src/tools/fs_search.js.map +1 -1
- package/dist/src/tools/fs_write.js +3 -1
- package/dist/src/tools/fs_write.js.map +1 -1
- package/dist/src/usecases/chunkUpsert.d.ts +4 -0
- package/dist/src/usecases/chunkUpsert.d.ts.map +1 -1
- package/dist/src/usecases/chunkUpsert.js +103 -60
- package/dist/src/usecases/chunkUpsert.js.map +1 -1
- package/dist/src/usecases/embeddingBacklog.d.ts +31 -0
- package/dist/src/usecases/embeddingBacklog.d.ts.map +1 -0
- package/dist/src/usecases/embeddingBacklog.js +244 -0
- package/dist/src/usecases/embeddingBacklog.js.map +1 -0
- package/dist/src/usecases/listSourcePackages.js +17 -1
- package/dist/src/usecases/listSourcePackages.js.map +1 -1
- package/dist/src/usecases/mediaLane.d.ts +11 -4
- package/dist/src/usecases/mediaLane.d.ts.map +1 -1
- package/dist/src/usecases/mediaLane.js +67 -30
- package/dist/src/usecases/mediaLane.js.map +1 -1
- package/dist/src/usecases/pendingReview.d.ts.map +1 -1
- package/dist/src/usecases/pendingReview.js +24 -7
- package/dist/src/usecases/pendingReview.js.map +1 -1
- package/dist/src/usecases/purgeExcludedPoints.d.ts +2 -0
- package/dist/src/usecases/purgeExcludedPoints.d.ts.map +1 -1
- package/dist/src/usecases/purgeExcludedPoints.js +3 -2
- package/dist/src/usecases/purgeExcludedPoints.js.map +1 -1
- package/dist/src/usecases/readFiles.d.ts.map +1 -1
- package/dist/src/usecases/readFiles.js +33 -6
- package/dist/src/usecases/readFiles.js.map +1 -1
- package/dist/src/usecases/reconcileSourcePackageRoots.d.ts +31 -0
- package/dist/src/usecases/reconcileSourcePackageRoots.d.ts.map +1 -0
- package/dist/src/usecases/reconcileSourcePackageRoots.js +114 -0
- package/dist/src/usecases/reconcileSourcePackageRoots.js.map +1 -0
- package/dist/src/usecases/searchFiles.d.ts.map +1 -1
- package/dist/src/usecases/searchFiles.js +62 -64
- package/dist/src/usecases/searchFiles.js.map +1 -1
- package/dist/src/usecases/syncIndexedFile.d.ts +42 -0
- package/dist/src/usecases/syncIndexedFile.d.ts.map +1 -0
- package/dist/src/usecases/syncIndexedFile.js +242 -0
- package/dist/src/usecases/syncIndexedFile.js.map +1 -0
- package/dist/src/usecases/syncPointWrites.d.ts +5 -0
- package/dist/src/usecases/syncPointWrites.d.ts.map +1 -1
- package/dist/src/usecases/syncPointWrites.js +32 -5
- package/dist/src/usecases/syncPointWrites.js.map +1 -1
- package/dist/src/usecases/uploadBinary.d.ts.map +1 -1
- package/dist/src/usecases/uploadBinary.js +36 -49
- package/dist/src/usecases/uploadBinary.js.map +1 -1
- package/dist/src/usecases/vector/endpointGuard.js +2 -1
- package/dist/src/usecases/vector/endpointGuard.js.map +1 -1
- package/dist/src/usecases/vector/estimate.d.ts +7 -4
- package/dist/src/usecases/vector/estimate.d.ts.map +1 -1
- package/dist/src/usecases/vector/estimate.js +8 -5
- package/dist/src/usecases/vector/estimate.js.map +1 -1
- package/dist/src/usecases/vector/rebuildGeneration.d.ts +29 -5
- package/dist/src/usecases/vector/rebuildGeneration.d.ts.map +1 -1
- package/dist/src/usecases/vector/rebuildGeneration.js +224 -82
- package/dist/src/usecases/vector/rebuildGeneration.js.map +1 -1
- package/dist/src/usecases/vectorMaintenance.d.ts +46 -4
- package/dist/src/usecases/vectorMaintenance.d.ts.map +1 -1
- package/dist/src/usecases/vectorMaintenance.js +190 -11
- package/dist/src/usecases/vectorMaintenance.js.map +1 -1
- package/dist/src/usecases/write/commit.d.ts +6 -8
- package/dist/src/usecases/write/commit.d.ts.map +1 -1
- package/dist/src/usecases/write/commit.js +96 -112
- package/dist/src/usecases/write/commit.js.map +1 -1
- package/dist/src/usecases/write/content.js +1 -2
- package/dist/src/usecases/write/content.js.map +1 -1
- package/dist/src/usecases/write/ports.d.ts +1 -0
- package/dist/src/usecases/write/ports.d.ts.map +1 -1
- package/dist/src/vector/FilesystemVectorIndex.d.ts +34 -3
- package/dist/src/vector/FilesystemVectorIndex.d.ts.map +1 -1
- package/dist/src/vector/FilesystemVectorIndex.js +254 -20
- package/dist/src/vector/FilesystemVectorIndex.js.map +1 -1
- package/dist/src/vector/InMemoryVectorIndex.d.ts +9 -2
- package/dist/src/vector/InMemoryVectorIndex.d.ts.map +1 -1
- package/dist/src/vector/InMemoryVectorIndex.js +25 -6
- package/dist/src/vector/InMemoryVectorIndex.js.map +1 -1
- package/dist/src/vector/QdrantVectorIndex.d.ts +35 -9
- package/dist/src/vector/QdrantVectorIndex.d.ts.map +1 -1
- package/dist/src/vector/QdrantVectorIndex.js +209 -90
- package/dist/src/vector/QdrantVectorIndex.js.map +1 -1
- package/dist/src/vector/qdrantFilter.d.ts +3 -1
- package/dist/src/vector/qdrantFilter.d.ts.map +1 -1
- package/dist/src/vector/qdrantFilter.js +2 -0
- package/dist/src/vector/qdrantFilter.js.map +1 -1
- package/dist/src/vector/types.d.ts +81 -0
- package/dist/src/vector/types.d.ts.map +1 -1
- package/dist/src/vector/types.js +2 -0
- package/dist/src/vector/types.js.map +1 -1
- package/dist/src/wiring.d.ts +6 -0
- package/dist/src/wiring.d.ts.map +1 -1
- package/dist/src/wiring.js +62 -3
- package/dist/src/wiring.js.map +1 -1
- package/dist/tools/fs_search.json +2 -2
- package/docs/drive-overview.md +2 -2
- package/instructions/brain-model.md +1 -1
- package/package.json +1000 -11
- package/rules/brain-rules.md +1 -1
- package/skills/connect-business-data/SKILL.md +6 -4
- package/skills/create-package/SKILL.md +14 -12
- package/skills/create-package/references/config-and-credentials.md +3 -3
- package/skills/create-package/references/connectors-and-uri-policies.md +5 -3
- package/skills/create-package/references/manifest-and-discovery.md +5 -4
- package/skills/create-package/references/runtime-and-build.md +9 -9
- package/skills/create-package/references/skills-and-context.md +3 -3
- package/skills/create-package/references/surfaces-and-design.md +9 -6
- package/skills/create-package/references/team-and-workflows.md +2 -2
- package/skills/create-package/references/test-and-ship.md +15 -15
- package/skills/create-package/references/tools-and-schemas.md +1 -1
- package/skills/create-package/scripts/check-package.sh +50 -4
- package/skills/create-package/scripts/verify-loaded.sh +16 -16
- package/skills/manage-files/SKILL.md +2 -2
- package/skills/manage-sources/SKILL.md +16 -15
- package/skills/manage-sources/scripts/reembed.sh +9 -3
- package/skills/sync/SKILL.md +4 -4
- package/tools/fs_search.json +2 -2
- package/app/filesystem/hooks/useContainerWidth.ts +0 -39
- package/dist/app/chunks/bash-M45GHPBQ.js +0 -1
- package/dist/app/chunks/c-X3REOAWD.js +0 -1
- package/dist/app/chunks/cpp-VOWI743W.js +0 -1
- package/dist/app/chunks/css-2ZVPHE25.js +0 -1
- package/dist/app/chunks/graphql-7V2NP54C.js +0 -1
- package/dist/app/chunks/html-UF3LFLNA.js +0 -1
- package/dist/app/chunks/java-PNTAU4L3.js +0 -1
- package/dist/app/chunks/javascript-4JJTQGEL.js +0 -1
- package/dist/app/chunks/json-VLQ6D3JH.js +0 -1
- package/dist/app/chunks/jsx-KQKSLAAH.js +0 -1
- package/dist/app/chunks/lua-UFPYUJ2O.js +0 -1
- package/dist/app/chunks/r-QEZB45SR.js +0 -1
- package/dist/app/chunks/sql-DTZHNUZP.js +0 -1
- package/dist/app/chunks/tsx-WPR2WRZD.js +0 -1
- package/dist/app/chunks/typescript-LWO362OA.js +0 -1
- package/dist/app/chunks/xml-A5H72RTS.js +0 -1
- package/dist/app/chunks/yaml-MXHSIJCI.js +0 -1
- package/dist/src/services/purgePendingNodes.d.ts +0 -32
- package/dist/src/services/purgePendingNodes.d.ts.map +0 -1
- package/dist/src/services/purgePendingNodes.js +0 -61
- package/dist/src/services/purgePendingNodes.js.map +0 -1
- /package/dist/app/chunks/{chunk-737Y24HS.js → chunk-3JASFUPF.js} +0 -0
- /package/dist/app/chunks/{chunk-DKD2L57N.js → chunk-6EYLOQ4F.js} +0 -0
- /package/dist/app/chunks/{chunk-KYH5EHHY.js → chunk-7YRZ5LOQ.js} +0 -0
- /package/dist/app/chunks/{chunk-6TC3DVWV.js → chunk-C7LU4RID.js} +0 -0
- /package/dist/app/chunks/{chunk-TY33BMKR.js → chunk-CD52YDZP.js} +0 -0
- /package/dist/app/chunks/{chunk-OLEIKJ3X.js → chunk-DCJKTCJ5.js} +0 -0
- /package/dist/app/chunks/{chunk-QLBZ4JR2.js → chunk-EXIU2KBV.js} +0 -0
- /package/dist/app/chunks/{chunk-SFUNBBEA.js → chunk-FDP4LO4P.js} +0 -0
- /package/dist/app/chunks/{chunk-BGRVFATT.js → chunk-HNETUS7U.js} +0 -0
- /package/dist/app/chunks/{chunk-4QNMHAIR.js → chunk-LBFZJEDR.js} +0 -0
- /package/dist/app/chunks/{chunk-TRRUHDPN.js → chunk-ULRXL5VM.js} +0 -0
- /package/dist/app/chunks/{chunk-S6B4WWIF.js → chunk-XJK47SMJ.js} +0 -0
- /package/dist/app/chunks/{chunk-DZ5C5FKI.js → chunk-YYAAIAU2.js} +0 -0
- /package/dist/app/chunks/{clojure-OC6KPSJO.js → clojure-4QCN4GHG.js} +0 -0
- /package/dist/app/chunks/{core-KGE7TQJ3.js → core-ZHTX3P2Q.js} +0 -0
- /package/dist/app/chunks/{csharp-E7VIFITL.js → csharp-HQWR4N52.js} +0 -0
- /package/dist/app/chunks/{dark-plus-BOSCZXE4.js → dark-plus-GYPKKZES.js} +0 -0
- /package/dist/app/chunks/{dart-6Y3X27SZ.js → dart-FO4TTVO2.js} +0 -0
- /package/dist/app/chunks/{diff-TR2NPA64.js → diff-SHANV4YC.js} +0 -0
- /package/dist/app/chunks/{dist-T32U2VVR.js → dist-WSDF34DM.js} +0 -0
- /package/dist/app/chunks/{docker-N33HOW54.js → docker-VX55HTDS.js} +0 -0
- /package/dist/app/chunks/{go-6DGG5UTP.js → go-5UCPEC6S.js} +0 -0
- /package/dist/app/chunks/{haskell-KK36PMMM.js → haskell-25PJ3OSG.js} +0 -0
- /package/dist/app/chunks/{ini-VHVQ5TPB.js → ini-BJIVD5MK.js} +0 -0
- /package/dist/app/chunks/{kotlin-44WS3JHE.js → kotlin-MNR6XOEQ.js} +0 -0
- /package/dist/app/chunks/{less-5WZ3KLAK.js → less-KA5JURX6.js} +0 -0
- /package/dist/app/chunks/{light-plus-HGGBC43G.js → light-plus-QXH2UUWZ.js} +0 -0
- /package/dist/app/chunks/{make-X7RXMVW7.js → make-LPD5KOCO.js} +0 -0
- /package/dist/app/chunks/{markdown-46IKUAIB.js → markdown-LMWF6MQR.js} +0 -0
- /package/dist/app/chunks/{mdx-DGLHDAO7.js → mdx-WPMNN5BS.js} +0 -0
- /package/dist/app/chunks/{nix-Q6FYQZLX.js → nix-QGWLUUMZ.js} +0 -0
- /package/dist/app/chunks/{powershell-L4KJJ6DK.js → powershell-7GSBBEFF.js} +0 -0
- /package/dist/app/chunks/{prisma-IKS4LVH2.js → prisma-FPMPQISO.js} +0 -0
- /package/dist/app/chunks/{proto-AYCDOTJO.js → proto-7KDX5Z2U.js} +0 -0
- /package/dist/app/chunks/{python-KXMCSAFQ.js → python-CFG4FTQW.js} +0 -0
- /package/dist/app/chunks/{rust-J3BC3P6V.js → rust-X7A37WU3.js} +0 -0
- /package/dist/app/chunks/{scala-AYIIHBJK.js → scala-OYHJSUG2.js} +0 -0
- /package/dist/app/chunks/{swift-QPHHCQD3.js → swift-PE7VNYW5.js} +0 -0
- /package/dist/app/chunks/{toml-UV7JK7K7.js → toml-ETQRDILP.js} +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SourceConfigPort } from '../connectors/types.js';
|
|
1
2
|
/**
|
|
2
3
|
* The ONE filesystem-specialised write boundary in front of a vector backend.
|
|
3
4
|
*
|
|
@@ -52,18 +53,48 @@
|
|
|
52
53
|
import type { FilesystemNode } from '../domain/types.js';
|
|
53
54
|
import type { WriteMonitor } from '../usecases/writeMonitor.js';
|
|
54
55
|
import type { DiscoveryInvalidation } from './discoveryInvalidation.js';
|
|
55
|
-
import type { QueryPrefetch, VectorFilter, VectorIndexPort, VectorPoint, VectorReadProjection, VectorSearchHit } from './types.js';
|
|
56
|
+
import type { QueryPrefetch, VectorBackend, VectorFilter, VectorIndexPort, VectorPoint, VectorReadProjection, VectorSearchHit } from './types.js';
|
|
56
57
|
export declare class FilesystemVectorIndex implements VectorIndexPort<FilesystemNode> {
|
|
57
58
|
#private;
|
|
58
59
|
/** The wrapped backend — read by the wiring-identity test, never by product code. */
|
|
59
|
-
get backend():
|
|
60
|
+
get backend(): VectorBackend<FilesystemNode>;
|
|
60
61
|
/** The discovery generation registry, if one was wired. Read by the wiring test. */
|
|
61
62
|
get discovery(): DiscoveryInvalidation | undefined;
|
|
62
63
|
/** The per-uri write monitor, if one was wired. Read by the health route's usecase. */
|
|
63
64
|
get writeMonitor(): WriteMonitor | undefined;
|
|
64
|
-
constructor(inner:
|
|
65
|
+
constructor(inner: VectorBackend<FilesystemNode> | FilesystemVectorIndex, discovery?: DiscoveryInvalidation, monitor?: WriteMonitor);
|
|
65
66
|
ensureAgentCollection(agentId: string): Promise<void>;
|
|
66
67
|
upsert(point: VectorPoint<FilesystemNode>): Promise<void>;
|
|
68
|
+
writeEpoch(): number;
|
|
69
|
+
exclusive<T>(run: () => Promise<T>): Promise<T>;
|
|
70
|
+
writePayload(point: Pick<VectorPoint<FilesystemNode>, 'id' | 'payload'>): Promise<void>;
|
|
71
|
+
/** Bind after project infra adopts the shared backend; all app stores share one coordinator. */
|
|
72
|
+
bindSourceConfigs(store: SourceConfigPort): void;
|
|
73
|
+
writePayloadBatch(points: Array<Pick<VectorPoint<FilesystemNode>, 'id' | 'payload'>>): Promise<void>;
|
|
74
|
+
conditionalUpsert(params: {
|
|
75
|
+
id: string;
|
|
76
|
+
vector: number[];
|
|
77
|
+
expected: Record<string, string | number | boolean | undefined>;
|
|
78
|
+
patch: Partial<FilesystemNode>;
|
|
79
|
+
authorize?: (current: FilesystemNode) => Promise<boolean>;
|
|
80
|
+
epoch?: number;
|
|
81
|
+
}): Promise<boolean>;
|
|
82
|
+
conditionalUpsertBatch(points: Array<{
|
|
83
|
+
id: string;
|
|
84
|
+
vector: number[];
|
|
85
|
+
expected: Record<string, string | number | boolean | undefined>;
|
|
86
|
+
patch: Partial<FilesystemNode>;
|
|
87
|
+
authorize?: (current: FilesystemNode) => Promise<boolean>;
|
|
88
|
+
epoch?: number;
|
|
89
|
+
}>): Promise<boolean[]>;
|
|
90
|
+
conditionalProof(params: {
|
|
91
|
+
id: string;
|
|
92
|
+
expected: Record<string, string | number | boolean | undefined>;
|
|
93
|
+
patch: Partial<FilesystemNode>;
|
|
94
|
+
activeGeneration: number;
|
|
95
|
+
authorize?: (current: FilesystemNode) => Promise<boolean>;
|
|
96
|
+
epoch?: number;
|
|
97
|
+
}): Promise<boolean>;
|
|
67
98
|
retainPayload(point: Pick<VectorPoint<FilesystemNode>, 'id' | 'payload'>): Promise<void>;
|
|
68
99
|
retrieve(id: string, projection?: VectorReadProjection): Promise<VectorPoint<FilesystemNode> | null>;
|
|
69
100
|
scroll(params: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilesystemVectorIndex.d.ts","sourceRoot":"","sources":["../../../src/vector/FilesystemVectorIndex.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"FilesystemVectorIndex.d.ts","sourceRoot":"","sources":["../../../src/vector/FilesystemVectorIndex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
import { searchableFilter } from '../usecases/vector/indexEligibility.js';
|
|
1
|
+
import { searchableFilter, indexEligibilityReader } from '../usecases/vector/indexEligibility.js';
|
|
2
2
|
import { stampEnrichment } from '../sync/categoryInference.js';
|
|
3
|
+
import { nodeEmbeddingInputHash } from '../usecases/syncPointWrites.js';
|
|
3
4
|
import { embedModelMarker, embeddingMarkerOf } from '../embeddings/models.js';
|
|
4
5
|
import { peekActiveLock } from '../embeddings/lock.js';
|
|
5
6
|
import { getGenerationMirror } from '../usecases/vector/rebuildGeneration.js';
|
|
7
|
+
/** The dense proof a payload replacement carries forward from the stored point. */
|
|
8
|
+
const PROOF_FIELDS = ['embed_model', 'embedding_status', 'embedding_input_hash', 'embedding_generation', 'embedding_updated_at'];
|
|
9
|
+
/** What a late dense/proof commit re-reads: eligibility, the final authority and the proof — never the text. */
|
|
10
|
+
const COMMIT_FIELDS = ['id', 'projectId', 'userId', 'agentId', 'uri', 'filename', 'folder_ancestors', 'category', 'status',
|
|
11
|
+
'recovery_only', 'modality', 'page', 'parent_id', 'content_hash', 'updatedAt', ...PROOF_FIELDS];
|
|
6
12
|
export class FilesystemVectorIndex {
|
|
7
13
|
#inner;
|
|
14
|
+
#coordinator;
|
|
15
|
+
#eligibility;
|
|
16
|
+
#sourceMutations;
|
|
8
17
|
#discovery;
|
|
9
18
|
#monitor;
|
|
10
19
|
/** The wrapped backend — read by the wiring-identity test, never by product code. */
|
|
@@ -28,6 +37,8 @@ export class FilesystemVectorIndex {
|
|
|
28
37
|
// shared port never silently drops its invalidation or its counts.
|
|
29
38
|
const nested = inner instanceof FilesystemVectorIndex;
|
|
30
39
|
this.#inner = nested ? inner.backend : inner;
|
|
40
|
+
this.#coordinator = writeCoordinators.get(this.#inner) ?? new WriteCoordinator();
|
|
41
|
+
writeCoordinators.set(this.#inner, this.#coordinator);
|
|
31
42
|
this.#discovery = discovery ?? (nested ? inner.discovery : undefined);
|
|
32
43
|
this.#monitor = monitor ?? (nested ? inner.writeMonitor : undefined);
|
|
33
44
|
// The OPTIONAL members are mirrored only when the backend has them:
|
|
@@ -38,7 +49,7 @@ export class FilesystemVectorIndex {
|
|
|
38
49
|
if (backend.upsertBatch) {
|
|
39
50
|
this.upsertBatch = async (points) => {
|
|
40
51
|
let stamped = [];
|
|
41
|
-
return this.#mirrored(async () => {
|
|
52
|
+
return this.#coordinator.lease(false, () => this.#coordinator.points(points.map(point => point.id), () => this.#mirrored(async () => {
|
|
42
53
|
stamped = points.map(stampPoint);
|
|
43
54
|
this.#monitor?.record(stamped.map((p) => p.payload));
|
|
44
55
|
await this.#observed(stamped.map((p) => p.payload), async () => {
|
|
@@ -54,7 +65,7 @@ export class FilesystemVectorIndex {
|
|
|
54
65
|
for (const point of stamped)
|
|
55
66
|
if (!point.vector && point.payload.recovery_only)
|
|
56
67
|
mirror.afterRetention(point);
|
|
57
|
-
});
|
|
68
|
+
}, points.map(point => point.id))));
|
|
58
69
|
};
|
|
59
70
|
}
|
|
60
71
|
if (backend.query) {
|
|
@@ -66,20 +77,22 @@ export class FilesystemVectorIndex {
|
|
|
66
77
|
if (backend.facet) {
|
|
67
78
|
this.facet = (params) => backend.facet(params);
|
|
68
79
|
}
|
|
69
|
-
// Collection
|
|
70
|
-
//
|
|
71
|
-
// through without a stamp or an invalidation.
|
|
80
|
+
// Collection work shares the exclusive epoch. Dense clear changes only
|
|
81
|
+
// proof status; index/tuning/sparse work does not change file content.
|
|
72
82
|
if (backend.maintenance) {
|
|
73
83
|
const maintenance = backend.maintenance;
|
|
74
84
|
this.maintenance = {
|
|
75
85
|
generations: maintenance.generations,
|
|
86
|
+
// Dense clear takes the exclusive epoch PER PAGE: writes run between pages,
|
|
87
|
+
// and a late result embedded before a page was cleared is refused by its epoch.
|
|
88
|
+
...(maintenance.clearDense ? { clearDense: (params) => this.exclusive(() => maintenance.clearDense(params)) } : {}),
|
|
76
89
|
report: params => maintenance.report({ filter: searchableFilter(params?.filter ?? {}) }),
|
|
77
90
|
readOptimizations: params => maintenance.readOptimizations(params),
|
|
78
|
-
migratePayloadIndexes: () => maintenance.migratePayloadIndexes(),
|
|
79
|
-
applyTuning: tuning => maintenance.applyTuning(tuning),
|
|
80
|
-
applyQuantization: mode => maintenance.applyQuantization(mode),
|
|
81
|
-
enableTextRanking: () => maintenance.enableTextRanking(),
|
|
82
|
-
backfillTextRanking: params => maintenance.backfillTextRanking({ ...params, filter: searchableFilter(params.filter ?? {}) }),
|
|
91
|
+
migratePayloadIndexes: () => this.exclusive(() => maintenance.migratePayloadIndexes()),
|
|
92
|
+
applyTuning: tuning => this.exclusive(() => maintenance.applyTuning(tuning)),
|
|
93
|
+
applyQuantization: mode => this.exclusive(() => maintenance.applyQuantization(mode)),
|
|
94
|
+
enableTextRanking: () => this.exclusive(() => maintenance.enableTextRanking()),
|
|
95
|
+
backfillTextRanking: params => this.exclusive(() => maintenance.backfillTextRanking({ ...params, filter: searchableFilter(params.filter ?? {}) })),
|
|
83
96
|
};
|
|
84
97
|
}
|
|
85
98
|
}
|
|
@@ -98,7 +111,7 @@ export class FilesystemVectorIndex {
|
|
|
98
111
|
/**
|
|
99
112
|
* The mirror seam: with no rebuild running this is the write itself; during
|
|
100
113
|
* one, the write runs inside the swap gate and its shadow copy is queued
|
|
101
|
-
* once it returned
|
|
114
|
+
* once it returned; partial failures queue bounded reconciliation debt.
|
|
102
115
|
*
|
|
103
116
|
* BOTH halves run inside the gate. The `embed_model` stamp and the retired-
|
|
104
117
|
* generation refusal happen in `write` (the callers build their stamp there),
|
|
@@ -107,12 +120,18 @@ export class FilesystemVectorIndex {
|
|
|
107
120
|
* shadow enqueue happens before the gate's in-flight count drops, so the
|
|
108
121
|
* swap's drain cannot run between an active write and its mirror item.
|
|
109
122
|
*/
|
|
110
|
-
async #mirrored(write, mirror) {
|
|
123
|
+
async #mirrored(write, mirror, ids = []) {
|
|
111
124
|
const active = getGenerationMirror();
|
|
112
125
|
if (!active)
|
|
113
126
|
return write();
|
|
114
127
|
await active.primary(async () => {
|
|
115
|
-
|
|
128
|
+
try {
|
|
129
|
+
await write();
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
active.afterUncertainWrite(ids);
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
116
135
|
mirror(active);
|
|
117
136
|
});
|
|
118
137
|
}
|
|
@@ -123,17 +142,132 @@ export class FilesystemVectorIndex {
|
|
|
123
142
|
if (!point.vector && point.payload.recovery_only)
|
|
124
143
|
return this.retainPayload(point);
|
|
125
144
|
let stamped = point;
|
|
126
|
-
return this.#mirrored(async () => {
|
|
145
|
+
return this.#coordinator.lease(false, () => this.#coordinator.points([point.id], () => this.#mirrored(async () => {
|
|
127
146
|
stamped = stampPoint(point);
|
|
128
147
|
this.#monitor?.record([stamped.payload]);
|
|
129
148
|
await this.#observed([stamped.payload], () => this.#inner.upsert(stamped));
|
|
130
|
-
}, (mirror) => mirror.afterUpsert([stamped]));
|
|
149
|
+
}, (mirror) => mirror.afterUpsert([stamped]), [point.id])));
|
|
150
|
+
}
|
|
151
|
+
writeEpoch() { return this.#coordinator.epoch; }
|
|
152
|
+
exclusive(run) {
|
|
153
|
+
return this.#coordinator.lease(true, run);
|
|
154
|
+
}
|
|
155
|
+
async writePayload(point) {
|
|
156
|
+
if (point.payload.recovery_only)
|
|
157
|
+
return this.retainPayload(point);
|
|
158
|
+
await this.#writePayloads([point]);
|
|
159
|
+
}
|
|
160
|
+
/** ONE backend read (the proof rides the backend's own pre-write read) + the write itself. */
|
|
161
|
+
async #writePayloads(points) {
|
|
162
|
+
const ids = points.map(point => point.id);
|
|
163
|
+
const written = new Map();
|
|
164
|
+
await this.#coordinator.lease(false, () => this.#coordinator.points(ids, () => this.#mirrored(async () => {
|
|
165
|
+
const enriched = points.map(point => stampPoint(point));
|
|
166
|
+
this.#monitor?.record(enriched.map(point => point.payload));
|
|
167
|
+
await this.#observed(enriched.map(point => point.payload), () => this.#inner.writePayloads(enriched, {
|
|
168
|
+
readFields: PROOF_FIELDS,
|
|
169
|
+
derive: (point, stored) => {
|
|
170
|
+
const stamped = stampPayloadPoint(point, stored);
|
|
171
|
+
written.set(stamped.id, stamped);
|
|
172
|
+
return stamped.payload;
|
|
173
|
+
},
|
|
174
|
+
}));
|
|
175
|
+
}, mirror => mirror.afterUpsert([...written.values()]), ids)));
|
|
176
|
+
}
|
|
177
|
+
/** Bind after project infra adopts the shared backend; all app stores share one coordinator. */
|
|
178
|
+
bindSourceConfigs(store) {
|
|
179
|
+
if (!store.mutations)
|
|
180
|
+
throw new Error('SOURCE_CONFIG_COORDINATOR_REQUIRED');
|
|
181
|
+
if (this.#sourceMutations && this.#sourceMutations !== store.mutations)
|
|
182
|
+
throw new Error('FILESYSTEM_SOURCE_CONFIG_COORDINATOR_CHANGED');
|
|
183
|
+
if (this.#sourceMutations)
|
|
184
|
+
return;
|
|
185
|
+
this.#sourceMutations = store.mutations;
|
|
186
|
+
this.#eligibility = indexEligibilityReader(store);
|
|
187
|
+
}
|
|
188
|
+
async writePayloadBatch(points) {
|
|
189
|
+
if (!points.length)
|
|
190
|
+
return;
|
|
191
|
+
if (new Set(points.map(point => point.id)).size !== points.length)
|
|
192
|
+
throw new Error('DUPLICATE_PAYLOAD_BATCH_ID');
|
|
193
|
+
const ordinary = points.filter(point => !point.payload.recovery_only);
|
|
194
|
+
if (ordinary.length)
|
|
195
|
+
await this.#writePayloads(ordinary);
|
|
196
|
+
for (const point of points)
|
|
197
|
+
if (point.payload.recovery_only)
|
|
198
|
+
await this.retainPayload(point);
|
|
199
|
+
}
|
|
200
|
+
async conditionalUpsert(params) {
|
|
201
|
+
return (await this.conditionalUpsertBatch([params]))[0];
|
|
202
|
+
}
|
|
203
|
+
async conditionalUpsertBatch(points) {
|
|
204
|
+
return this.#conditionalWrites(points.map(point => ({ ...point, kind: 'dense' })));
|
|
205
|
+
}
|
|
206
|
+
async conditionalProof(params) {
|
|
207
|
+
if (params.patch.embedding_status !== 'missing' && params.patch.embedding_status !== 'stale')
|
|
208
|
+
throw new Error('INVALID_DEBT_PROOF_PATCH');
|
|
209
|
+
return (await this.#conditionalWrites([{ ...params, kind: 'proof' }]))[0];
|
|
210
|
+
}
|
|
211
|
+
async #conditionalWrites(points) {
|
|
212
|
+
if (!points.length)
|
|
213
|
+
return [];
|
|
214
|
+
if (new Set(points.map(point => point.id)).size !== points.length)
|
|
215
|
+
throw new Error('DUPLICATE_DENSE_BATCH_ID');
|
|
216
|
+
const proofFields = new Set(['embedding_status', 'embedding_input_hash', 'embedding_generation', 'embedding_updated_at', 'embed_model']);
|
|
217
|
+
if (points.some(point => Object.keys(point.patch).some(field => !proofFields.has(field))))
|
|
218
|
+
throw new Error('INVALID_EMBEDDING_PROOF_PATCH');
|
|
219
|
+
const written = points.map(() => false);
|
|
220
|
+
const committed = [];
|
|
221
|
+
await this.#coordinator.lease(false, () => this.#coordinator.points(points.map(point => point.id), () => this.#mirrored(() => {
|
|
222
|
+
const commit = async () => {
|
|
223
|
+
// A running rebuild mirrors the WHOLE point into its shadow; otherwise
|
|
224
|
+
// the commit reads only what it judges and writes only vector + proof.
|
|
225
|
+
const mirroring = getGenerationMirror() !== null;
|
|
226
|
+
const stored = await this.#inner.scroll({ filter: { mustMatchAny: [{ field: 'id', values: points.map(point => point.id) }] }, limit: points.length,
|
|
227
|
+
...(mirroring ? {} : { payloadFields: [...new Set([...COMMIT_FIELDS, ...points.flatMap(point => Object.keys(point.expected))])] }) });
|
|
228
|
+
const currentById = new Map(stored.points.map(point => [point.id, point.payload]));
|
|
229
|
+
const lock = peekActiveLock();
|
|
230
|
+
const patches = [];
|
|
231
|
+
const positions = [];
|
|
232
|
+
for (const [index, point] of points.entries()) {
|
|
233
|
+
if (point.epoch !== this.writeEpoch())
|
|
234
|
+
continue;
|
|
235
|
+
const current = currentById.get(point.id);
|
|
236
|
+
if (!current || current.recovery_only || current.status === 'deleted')
|
|
237
|
+
continue;
|
|
238
|
+
if (lock?.mode !== 'dense' || (point.kind === 'dense' ? point.patch.embedding_generation : point.activeGeneration) !== lock.generation)
|
|
239
|
+
continue;
|
|
240
|
+
if (this.#eligibility && (await this.#eligibility(current)).eligibility !== 'eligible')
|
|
241
|
+
continue;
|
|
242
|
+
if (point.authorize && !(await point.authorize(current)))
|
|
243
|
+
continue;
|
|
244
|
+
const payload = current;
|
|
245
|
+
if (Object.entries(point.expected).some(([field, expected]) => payload[field] !== expected))
|
|
246
|
+
continue;
|
|
247
|
+
const stamped = stampPoint({ id: point.id, ...(point.kind === 'dense' ? { vector: point.vector } : {}), payload: { ...current, ...point.patch } });
|
|
248
|
+
committed.push(stamped);
|
|
249
|
+
patches.push({ id: point.id, ...(point.kind === 'dense' ? { vector: point.vector } : {}),
|
|
250
|
+
patch: { ...point.patch, ...(stamped.payload.embed_model ? { embed_model: stamped.payload.embed_model } : {}) } });
|
|
251
|
+
positions.push(index);
|
|
252
|
+
}
|
|
253
|
+
if (!committed.length)
|
|
254
|
+
return;
|
|
255
|
+
this.#monitor?.record(committed.map(point => point.payload));
|
|
256
|
+
await this.#observed(committed.map(point => point.payload), () => this.#inner.patchPoints(patches));
|
|
257
|
+
for (const index of positions)
|
|
258
|
+
written[index] = true;
|
|
259
|
+
};
|
|
260
|
+
return this.#sourceMutations ? this.#sourceMutations.exclusive(commit) : commit();
|
|
261
|
+
}, mirror => { if (committed.length)
|
|
262
|
+
mirror.afterUpsert(committed); }, points.map(point => point.id))));
|
|
263
|
+
return written;
|
|
131
264
|
}
|
|
132
265
|
async retainPayload(point) {
|
|
133
|
-
|
|
266
|
+
point = { ...point, payload: { ...point.payload, embedding_status: 'missing' } };
|
|
267
|
+
await this.#coordinator.lease(false, () => this.#coordinator.points([point.id], () => this.#mirrored(async () => {
|
|
134
268
|
this.#monitor?.record([point.payload]);
|
|
135
269
|
await this.#observed([point.payload], () => this.#inner.retainPayload(point));
|
|
136
|
-
}, mirror => mirror.afterRetention(point));
|
|
270
|
+
}, mirror => mirror.afterRetention(point), [point.id])));
|
|
137
271
|
}
|
|
138
272
|
retrieve(id, projection) {
|
|
139
273
|
return this.#inner.retrieve(id, projection);
|
|
@@ -156,7 +290,17 @@ export class FilesystemVectorIndex {
|
|
|
156
290
|
const token = this.#discovery.beginDelete(filter);
|
|
157
291
|
removed = await this.#inner.deleteByFilter(filter).finally(() => this.#discovery?.complete(token));
|
|
158
292
|
};
|
|
159
|
-
|
|
293
|
+
// Drains the collection but keeps the epoch: a late commit for a deleted
|
|
294
|
+
// point already fails its re-read, and an unrelated in-flight one stays valid.
|
|
295
|
+
await this.#coordinator.lease(true, () => this.#mirrored(async () => {
|
|
296
|
+
try {
|
|
297
|
+
await run();
|
|
298
|
+
}
|
|
299
|
+
catch (error) {
|
|
300
|
+
getGenerationMirror()?.afterUncertainDelete(filter);
|
|
301
|
+
throw error;
|
|
302
|
+
}
|
|
303
|
+
}, (mirror) => mirror.afterDelete(filter)), false);
|
|
160
304
|
return removed;
|
|
161
305
|
}
|
|
162
306
|
upsertBatch;
|
|
@@ -182,7 +326,7 @@ export class EmbeddingGenerationChangedError extends Error {
|
|
|
182
326
|
/** The marker of the active generation, when this process knows it. */
|
|
183
327
|
function activeMarker() {
|
|
184
328
|
const lock = peekActiveLock();
|
|
185
|
-
return lock ? embedModelMarker(lock.modelId, lock.dimension, lock.embedRecipe) : undefined;
|
|
329
|
+
return lock?.mode === 'dense' ? embedModelMarker(lock.modelId, lock.dimension, lock.embedRecipe) : undefined;
|
|
186
330
|
}
|
|
187
331
|
/**
|
|
188
332
|
* Stamp one point's payload. The envelope (`id`, `vector`) is passed through
|
|
@@ -210,4 +354,94 @@ function stampPoint(point) {
|
|
|
210
354
|
return point;
|
|
211
355
|
return { ...point, payload };
|
|
212
356
|
}
|
|
357
|
+
/** One coordinator is shared by every wrapper adopting the same backend. */
|
|
358
|
+
class WriteCoordinator {
|
|
359
|
+
epoch = 0;
|
|
360
|
+
#readers = 0;
|
|
361
|
+
#writer = false;
|
|
362
|
+
#leases = [];
|
|
363
|
+
#points = new Map();
|
|
364
|
+
/** `invalidate`: an exclusive lease that also retires every epoch captured before it (maintenance). */
|
|
365
|
+
lease(exclusive, run, invalidate = exclusive) {
|
|
366
|
+
return new Promise((resolve, reject) => {
|
|
367
|
+
this.#leases.push({ exclusive, start: () => {
|
|
368
|
+
if (exclusive) {
|
|
369
|
+
this.#writer = true;
|
|
370
|
+
if (invalidate)
|
|
371
|
+
this.epoch += 1;
|
|
372
|
+
}
|
|
373
|
+
else
|
|
374
|
+
this.#readers += 1;
|
|
375
|
+
const release = () => {
|
|
376
|
+
if (exclusive)
|
|
377
|
+
this.#writer = false;
|
|
378
|
+
else
|
|
379
|
+
this.#readers -= 1;
|
|
380
|
+
this.#pump();
|
|
381
|
+
};
|
|
382
|
+
void Promise.resolve().then(run).then(value => { release(); resolve(value); }, error => { release(); reject(error); });
|
|
383
|
+
} });
|
|
384
|
+
this.#pump();
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
#pump() {
|
|
388
|
+
if (this.#writer)
|
|
389
|
+
return;
|
|
390
|
+
while (this.#leases.length) {
|
|
391
|
+
const next = this.#leases[0];
|
|
392
|
+
if (next.exclusive && this.#readers)
|
|
393
|
+
return;
|
|
394
|
+
this.#leases.shift();
|
|
395
|
+
next.start();
|
|
396
|
+
if (next.exclusive)
|
|
397
|
+
return;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
async points(ids, run) {
|
|
401
|
+
const releases = [];
|
|
402
|
+
try {
|
|
403
|
+
for (const id of [...new Set(ids)].sort()) {
|
|
404
|
+
const previous = this.#points.get(id) ?? Promise.resolve();
|
|
405
|
+
let release;
|
|
406
|
+
const current = new Promise(resolve => { release = resolve; });
|
|
407
|
+
this.#points.set(id, current);
|
|
408
|
+
await previous;
|
|
409
|
+
releases.push(() => {
|
|
410
|
+
if (this.#points.get(id) === current)
|
|
411
|
+
this.#points.delete(id);
|
|
412
|
+
release();
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
return await run();
|
|
416
|
+
}
|
|
417
|
+
finally {
|
|
418
|
+
for (const release of releases.reverse())
|
|
419
|
+
release();
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
const writeCoordinators = new WeakMap();
|
|
424
|
+
/**
|
|
425
|
+
* Carry only the STORED dense proof across a full payload replacement. A payload
|
|
426
|
+
* write keeps or DEMOTES the status — never promotes: `missing`/`stale` stay,
|
|
427
|
+
* `current` turns `stale` when the input no longer matches the active proof.
|
|
428
|
+
* Only a dense vector write certifies `current`.
|
|
429
|
+
*/
|
|
430
|
+
function stampPayloadPoint(point, previous) {
|
|
431
|
+
const proof = previous ? {
|
|
432
|
+
embed_model: previous.embed_model, embedding_status: previous.embedding_status,
|
|
433
|
+
embedding_input_hash: previous.embedding_input_hash, embedding_generation: previous.embedding_generation,
|
|
434
|
+
embedding_updated_at: previous.embedding_updated_at,
|
|
435
|
+
} : { embedding_status: 'missing' };
|
|
436
|
+
const lock = peekActiveLock();
|
|
437
|
+
const marker = activeMarker();
|
|
438
|
+
const input = nodeEmbeddingInputHash(point.payload);
|
|
439
|
+
if (proof.embedding_status === 'current' && !(marker !== undefined && proof.embedding_input_hash === input
|
|
440
|
+
&& lock?.mode === 'dense' && proof.embedding_generation === lock.generation && proof.embed_model === marker)) {
|
|
441
|
+
proof.embedding_status = 'stale';
|
|
442
|
+
}
|
|
443
|
+
if (point.payload.recovery_only)
|
|
444
|
+
proof.embedding_status = 'missing';
|
|
445
|
+
return { ...point, payload: { ...point.payload, ...proof } };
|
|
446
|
+
}
|
|
213
447
|
//# sourceMappingURL=FilesystemVectorIndex.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilesystemVectorIndex.js","sourceRoot":"","sources":["../../../src/vector/FilesystemVectorIndex.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FilesystemVectorIndex.js","sourceRoot":"","sources":["../../../src/vector/FilesystemVectorIndex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
import type { VectorFacetHit, VectorFilter,
|
|
1
|
+
import type { PayloadDerivation, VectorBackend, VectorFacetHit, VectorFilter, VectorPoint, VectorReadProjection, VectorSearchHit } from './types.js';
|
|
2
2
|
export declare class InMemoryVectorIndex<TPayload extends {
|
|
3
3
|
id: string;
|
|
4
|
-
}> implements
|
|
4
|
+
}> implements VectorBackend<TPayload> {
|
|
5
5
|
#private;
|
|
6
6
|
ensureAgentCollection(_agentId: string): Promise<void>;
|
|
7
7
|
upsert(point: VectorPoint<TPayload>): Promise<void>;
|
|
8
8
|
retainPayload(point: Pick<VectorPoint<TPayload>, 'id' | 'payload'>): Promise<void>;
|
|
9
|
+
writePayload(point: Pick<VectorPoint<TPayload>, 'id' | 'payload'>): Promise<void>;
|
|
10
|
+
writePayloads(points: Array<Pick<VectorPoint<TPayload>, 'id' | 'payload'>>, derivation: PayloadDerivation<TPayload>): Promise<void>;
|
|
11
|
+
patchPoints(points: Array<{
|
|
12
|
+
id: string;
|
|
13
|
+
vector?: number[];
|
|
14
|
+
patch: Partial<TPayload>;
|
|
15
|
+
}>): Promise<void>;
|
|
9
16
|
retrieve(id: string, projection?: VectorReadProjection): Promise<VectorPoint<TPayload> | null>;
|
|
10
17
|
scroll(params: {
|
|
11
18
|
filter: VectorFilter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryVectorIndex.d.ts","sourceRoot":"","sources":["../../../src/vector/InMemoryVectorIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"InMemoryVectorIndex.d.ts","sourceRoot":"","sources":["../../../src/vector/InMemoryVectorIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA0HrJ,qBAAa,mBAAmB,CAAC,QAAQ,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAE,YAAW,aAAa,CAAC,QAAQ,CAAC;;IAG5F,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAG;IAEzD,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CASxD;IAEK,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvF;IAEK,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtF;IAEK,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,iBAAiB,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxI;IAEK,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3G;IAEK,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAWnG;IAEK,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CA0B/K;IAEK,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAMzD;IAED;;;;;OAKG;IACG,KAAK,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,cAAc,EAAE,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAejI;IAEK,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1D;IAEK,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAWnJ;CACF"}
|
|
@@ -29,7 +29,9 @@ function textTokens(value) {
|
|
|
29
29
|
const tokens = value.toLowerCase().split(/[^\p{L}\p{N}]+/u);
|
|
30
30
|
return new Set(tokens.filter((t) => t.length > 0));
|
|
31
31
|
}
|
|
32
|
-
function matchesFilter(payload, filter) {
|
|
32
|
+
function matchesFilter(payload, filter, vector) {
|
|
33
|
+
if ((filter.mustHasVector ?? []).some(name => name !== '' || !vector?.length))
|
|
34
|
+
return false;
|
|
33
35
|
const must = filter.must ?? [];
|
|
34
36
|
for (const clause of must) {
|
|
35
37
|
const value = getFieldValue(payload, clause.field);
|
|
@@ -150,6 +152,23 @@ export class InMemoryVectorIndex {
|
|
|
150
152
|
async retainPayload(point) {
|
|
151
153
|
this.#points.set(point.id, { id: point.id, payload: { ...point.payload, id: point.id } });
|
|
152
154
|
}
|
|
155
|
+
async writePayload(point) {
|
|
156
|
+
await this.upsert(point);
|
|
157
|
+
}
|
|
158
|
+
async writePayloads(points, derivation) {
|
|
159
|
+
for (const point of points) {
|
|
160
|
+
const stored = this.#points.get(point.id);
|
|
161
|
+
await this.upsert({ id: point.id, payload: derivation.derive(point, stored ? projectPayload(stored.payload, derivation.readFields) : undefined) });
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
async patchPoints(points) {
|
|
165
|
+
for (const point of points) {
|
|
166
|
+
const stored = this.#points.get(point.id);
|
|
167
|
+
if (!stored)
|
|
168
|
+
throw new Error(`VECTOR_MISSING_FOR_UPSERT:${point.id}`);
|
|
169
|
+
this.#points.set(point.id, { id: point.id, vector: point.vector ?? stored.vector, payload: { ...stored.payload, ...point.patch, id: point.id } });
|
|
170
|
+
}
|
|
171
|
+
}
|
|
153
172
|
async retrieve(id, projection) {
|
|
154
173
|
const point = this.#points.get(id);
|
|
155
174
|
if (!point)
|
|
@@ -174,7 +193,7 @@ export class InMemoryVectorIndex {
|
|
|
174
193
|
const p = this.#points.get(ids[i]);
|
|
175
194
|
if (!p)
|
|
176
195
|
continue;
|
|
177
|
-
if (!matchesFilter(p.payload, params.filter))
|
|
196
|
+
if (!matchesFilter(p.payload, params.filter, p.vector))
|
|
178
197
|
continue;
|
|
179
198
|
// The `vector` is kept as-is; Qdrant's scroll always sends
|
|
180
199
|
// `with_vector:false`, so a caller must not rely on it being present from
|
|
@@ -193,7 +212,7 @@ export class InMemoryVectorIndex {
|
|
|
193
212
|
async countByFilter(filter) {
|
|
194
213
|
let n = 0;
|
|
195
214
|
for (const p of this.#points.values()) {
|
|
196
|
-
if (matchesFilter(p.payload, filter))
|
|
215
|
+
if (matchesFilter(p.payload, filter, p.vector))
|
|
197
216
|
n++;
|
|
198
217
|
}
|
|
199
218
|
return n;
|
|
@@ -207,7 +226,7 @@ export class InMemoryVectorIndex {
|
|
|
207
226
|
async facet(params) {
|
|
208
227
|
const counts = new Map();
|
|
209
228
|
for (const p of this.#points.values()) {
|
|
210
|
-
if (!matchesFilter(p.payload, params.filter))
|
|
229
|
+
if (!matchesFilter(p.payload, params.filter, p.vector))
|
|
211
230
|
continue;
|
|
212
231
|
const raw = getFieldValue(p.payload, params.key);
|
|
213
232
|
const values = Array.isArray(raw) ? new Set(raw) : [raw];
|
|
@@ -225,7 +244,7 @@ export class InMemoryVectorIndex {
|
|
|
225
244
|
async deleteByFilter(filter) {
|
|
226
245
|
let deleted = 0;
|
|
227
246
|
for (const [id, p] of this.#points) {
|
|
228
|
-
if (matchesFilter(p.payload, filter)) {
|
|
247
|
+
if (matchesFilter(p.payload, filter, p.vector)) {
|
|
229
248
|
this.#points.delete(id);
|
|
230
249
|
deleted++;
|
|
231
250
|
}
|
|
@@ -236,7 +255,7 @@ export class InMemoryVectorIndex {
|
|
|
236
255
|
const query = normalize(params.vector);
|
|
237
256
|
const hits = [];
|
|
238
257
|
for (const p of this.#points.values()) {
|
|
239
|
-
if (!matchesFilter(p.payload, params.filter))
|
|
258
|
+
if (!matchesFilter(p.payload, params.filter, p.vector))
|
|
240
259
|
continue;
|
|
241
260
|
const v = p.vector ? normalize(p.vector) : [];
|
|
242
261
|
const score = v.length ? dot(query, v) : 0;
|