@neuralis/brain-core 0.1.0 → 0.2.0
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/cards/DiffView.tsx +9 -7
- package/app/cards/README.md +1 -1
- package/app/cards/diffLine.tsx +2 -4
- package/app/filesystem/README.md +1 -1
- package/app/filesystem/api/index.ts +14 -5
- package/app/filesystem/domain/types.ts +24 -5
- package/app/filesystem/store/filesystemStore.ts +20 -1
- package/app/filesystem/store/listSlice.ts +2 -0
- package/app/filesystem/store/searchSlice.ts +24 -1
- package/app/filesystem/ui/FileTreeSearch.tsx +29 -2
- package/app/filesystem/ui/PendingChangesPanel.tsx +74 -17
- package/app/filesystem/ui/PendingReviewDialog.tsx +45 -20
- package/app/filesystem/ui/README.md +8 -7
- package/app/filesystem/ui/ReembedDialog.tsx +20 -9
- package/app/filesystem/ui/SourceDeleteConfirm.tsx +1 -1
- package/app/filesystem/ui/SourcesPanel.tsx +110 -17
- package/app/filesystem/ui/VectorHealthPanel.tsx +14 -0
- 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 +40 -40
- 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 +999 -10
- 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 +4 -3
- 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 +2 -1
- 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 +3 -3
- 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/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
|
@@ -70,7 +70,7 @@ server-side source rows rather than the index-count survey.)
|
|
|
70
70
|
| Forget sync state (next tick re-walks; deletes nothing) | POST | `/sources/reset` | `drive.sync` | `reset.sh` |
|
|
71
71
|
| Rescan changes (full re-walk now; unchanged files keep their vectors; 202 + job) | POST | `/sources/reindex` | `drive.sync` | `reindex.sh` |
|
|
72
72
|
| Clean a file / folder / source index (estimate first) | POST | `/sources/purge` | `drive.mount` + `drive.sync` | `purge-index.sh` |
|
|
73
|
-
|
|
|
73
|
+
| Catch up embedding debt; FORCE=1 re-embeds (estimate first) | POST | `/sources/reindex` + `embeddingOnly` or `force` | `drive.sync` | `reembed.sh` |
|
|
74
74
|
|
|
75
75
|
> **`update` takes no `:slug`.** PATCH targets the bare `/sources` path; the
|
|
76
76
|
> source to patch is the body `source` field (the handler ignores the path).
|
|
@@ -151,6 +151,8 @@ server-side sync queue. Poll `sync-status.sh` (`SOURCE=<slug>`) until
|
|
|
151
151
|
with `SOURCE` stops one source's job mid-run; without it, every job on
|
|
152
152
|
sources you can see.
|
|
153
153
|
|
|
154
|
+
An embedding job can end `paused`: report `result.embedding.pausedReason` and partial counts. Resume is a new explicitly authorized `reembed.sh` request, using durable point debt; no saved job ID or automatic paid restart.
|
|
155
|
+
|
|
154
156
|
`sync.sh` refuses in two ways worth telling apart. **404** — the slug does not
|
|
155
157
|
resolve for you (it does not exist, or it is outside your scope; the two answer
|
|
156
158
|
alike on purpose). **400** — the source exists but carries no `sync` block, so
|
|
@@ -167,11 +169,14 @@ Per-action:
|
|
|
167
169
|
id or a UI label. An unregistered value is `404 Unknown kind "<x>"` for every caller.
|
|
168
170
|
- `PATH_ARG` — for `browse.sh` (we don't reuse `PATH`).
|
|
169
171
|
- `PURGE` — optional for `delete.sh`; `PURGE=1` (or `true`) enqueues an async
|
|
170
|
-
vector purge. Delete then returns **202 + `{purgeJob, …}`** (vs 200 normally).
|
|
172
|
+
vector purge. Delete then returns **202 + `{purgeJob, …}`** (vs 200 normally). Any delete
|
|
173
|
+
resolves the source's open notifications (its unread failure warnings) for you and its creator.
|
|
171
174
|
- `SOURCE` — source name for `sync.sh`, `reindex.sh`, `reset.sh`, `reembed.sh` (required) and
|
|
172
175
|
`cancel.sh`, `sync-status.sh` (optional).
|
|
173
176
|
- `FOLDER` / `URI` — `reembed.sh` scope (one of them, inside `SOURCE`; neither = the whole
|
|
174
|
-
source). `CONFIRM=1` starts
|
|
177
|
+
source). `CONFIRM=1` starts debt catchup; without it the script only ESTIMATES. `FORCE=1` selects a forced connector re-embed instead.
|
|
178
|
+
`SCOPE=platform` (catch-up only, whole source, needs `platform.vector.maintain`) catches up EVERY
|
|
179
|
+
writer's points of the source, not only yours — the way back after an operator dense clear.
|
|
175
180
|
- `ENABLED` — `true | false | auto` for `set-enabled.sh`.
|
|
176
181
|
- `BODY_JSON` — POST/PATCH bodies (`create.sh`, `update.sh`). Both MUST include
|
|
177
182
|
`source` + `permissions`; create additionally requires `connection.kind`. May also
|
|
@@ -182,7 +187,7 @@ Per-action:
|
|
|
182
187
|
means only matching files sync, and an exclude still wins. A `sync.media` object
|
|
183
188
|
(`{"images":true,"pdf":true,"video":false,"audio":false}`, absent key = that default)
|
|
184
189
|
picks which binary kinds a MULTIMODAL active model embeds; a text-only model embeds
|
|
185
|
-
none, and `lastSyncResult.mediaSkipped` counts what was left out. The `invalid` reason is a local PNG structural check before provider work; invalid input preserves existing indexed and recovery payloads. **`include` bounds the
|
|
190
|
+
none, and `lastSyncResult.mediaSkipped` counts what was left out; `lastSyncResult.binarySkipped` is the last count of binary files not indexed as text (a binary extension, or a NUL in the first `brainSyncBinarySniffChars` characters); `lastSyncResult.embeddingDegraded` lists the reasons (`quota`, `credentials`, `rate_limit`, …) when the embedder was unavailable during the pass — the files are indexed and text-searchable, their semantic embedding is owed and caught up by `reembed.sh` once the embedder answers. The `invalid` reason is a local PNG structural check before provider work; invalid input preserves existing indexed and recovery payloads. **`include` bounds the
|
|
186
191
|
INDEX, never the read.** What an agent can `fs_read` is set by the source ROOT and by
|
|
187
192
|
`permissions.paths[]` — so narrowing a wide source with `include` alone leaves every
|
|
188
193
|
file under that root readable. Re-root it, or add a path deny, or both.
|
|
@@ -228,22 +233,18 @@ SOURCE=scratch-demo FOLDER=scratch-demo://docs OBSOLETE_ONLY=false bash ${SKILL_
|
|
|
228
233
|
|
|
229
234
|
## Re-embed (a file, a folder, a source)
|
|
230
235
|
|
|
231
|
-
"Rescan changes" reuses unchanged indexed files, but rebuilds re-included recovery-only content. `reembed.sh`
|
|
232
|
-
scope is read again and embedded with the ACTIVE model, and nothing else about the source
|
|
233
|
-
changes. Run it WITHOUT `CONFIRM` first — it answers `{documents, estimate:{tokens,
|
|
234
|
-
relStdErr, usd, seconds}}` and changes nothing (`usd` is `null` for an unpriced model; the
|
|
235
|
-
count covers only files you may read). Show that to the user, then run it again with
|
|
236
|
-
`CONFIRM=1` (202 + job; poll `sync-status.sh`). A single file you may not read answers
|
|
236
|
+
"Rescan changes" reuses unchanged indexed files, but rebuilds re-included recovery-only content. `reembed.sh` catches up missing/stale indexed embeddings, including brain-only and unchanged legacy records. Its read-only estimate returns `estimate_kind:scope_upper_bound`: authorized indexed scope counts are an upper bound, not a provider quote; no provider call or job starts. Show the estimate before `CONFIRM=1` (202 + embedding job; poll `sync-status.sh`). Disabled embedding refuses: each `list.sh` row's `embedding_enabled` is the live platform switch, and while it is `false` `reembed.sh` answers 409 `embedding_disabled`; without an active dense generation the estimate refuses and a submitted job pauses as `metadata_only`, never activating a model. `FORCE=1` instead rereads and re-embeds the connector scope; its estimate includes `{documents,estimate:{tokens,relStdErr,usd,seconds}}` (`usd:null` for an unpriced model). A single file you may not read answers
|
|
237
237
|
`404`, exactly like a missing one. Switching the platform to a DIFFERENT model is not this:
|
|
238
238
|
that is the owner's rebuild in the admin Vector section.
|
|
239
239
|
|
|
240
240
|
## Package sources (`recognizesPackages`)
|
|
241
241
|
|
|
242
|
-
`create.sh` / `update.sh` accept `recognizesPackages` (boolean) in `BODY_JSON`.
|
|
243
|
-
|
|
244
|
-
instruction / rule / agent / docs
|
|
245
|
-
|
|
246
|
-
|
|
242
|
+
`create.sh` / `update.sh` accept `recognizesPackages` (boolean) in `BODY_JSON`. It does
|
|
243
|
+
NOT switch markdown discovery on — a synced source's markdown becomes source-package
|
|
244
|
+
contributions (skill / instruction / rule / agent / docs) either way; the flag lets the host
|
|
245
|
+
load the source as a runtime package source (create-package
|
|
246
|
+
`references/connectors-and-uri-policies.md` §Declare source instances owns the details). Two
|
|
247
|
+
server-side gates apply regardless of what you send (`src/routes/sources.ts`):
|
|
247
248
|
|
|
248
249
|
- **Owner/admin-STRENGTH only, measured by PRIORITY — not by role name.** The
|
|
249
250
|
gate passes a caller whose `priority` is at or above the built-in `admin`
|
|
@@ -2,19 +2,25 @@
|
|
|
2
2
|
set -euo pipefail
|
|
3
3
|
API_BASE="${NEURALIS_API:?NEURALIS_API not set; activate skill first}"
|
|
4
4
|
TOKEN="${NEURALIS_SESSION_TOKEN:?missing session ticket; activate the skill via execute action=\"skill\"}"
|
|
5
|
-
# Requires drive.sync (403 otherwise).
|
|
5
|
+
# Requires drive.sync (403 otherwise). FORCE=1 re-embeds with the ACTIVE model; otherwise catches up durable embedding debt — a
|
|
6
6
|
# file (URI), a folder's indexed files (FOLDER) or, with neither, the whole
|
|
7
7
|
# source — even when nothing changed. Default = the ESTIMATE only (changes
|
|
8
8
|
# nothing); CONFIRM=1 starts it (202 + job). Only files you may read count.
|
|
9
|
+
# SCOPE=platform (catch-up only, whole source, needs platform.vector.maintain)
|
|
10
|
+
# catches up EVERY writer's points of the source — the way back after a dense clear.
|
|
9
11
|
SOURCE="${SOURCE:?SOURCE is required}"
|
|
10
12
|
FOLDER="${FOLDER:-}"
|
|
11
13
|
URI="${URI:-}"
|
|
12
14
|
CONFIRM="${CONFIRM:-}"
|
|
13
|
-
|
|
15
|
+
FORCE="${FORCE:-}"
|
|
16
|
+
SCOPE="${SCOPE:-}"
|
|
17
|
+
BODY=$(jq -n --arg source "${SOURCE}" --arg folder "${FOLDER}" --arg uri "${URI}" --arg confirm "${CONFIRM}" --arg force "${FORCE}" --arg scope "${SCOPE}" \
|
|
14
18
|
'{ source: $source }
|
|
15
19
|
+ (if $folder == "" then {} else { folder: $folder } end)
|
|
16
20
|
+ (if $uri == "" then {} else { uri: $uri } end)
|
|
17
|
-
+ (if $
|
|
21
|
+
+ (if $force == "1" then {force: ($confirm == "1")} else {embeddingOnly: true} end)
|
|
22
|
+
+ (if $scope == "" then {} else {scope: $scope} end)
|
|
23
|
+
+ (if $confirm == "1" then {} else {estimate: true} end)')
|
|
18
24
|
curl --fail-with-body -sS -X POST \
|
|
19
25
|
-H "Authorization: Bearer ${TOKEN}" -H "X-Neuralis-Skill: manage-sources" \
|
|
20
26
|
-H "Content-Type: application/json" -d "${BODY}" \
|
package/skills/sync/SKILL.md
CHANGED
|
@@ -13,20 +13,20 @@ Trigger a delta sync for the brain-core filesystem.
|
|
|
13
13
|
|
|
14
14
|
1. Use `fs_list` with no `uri` first to identify configured sources, scopes, current sync status, and recent errors.
|
|
15
15
|
2. Call the brain-core source sync route for the intended source. The route answers 202 + a queue job snapshot — the sync runs in the background. Explicit sync requires `drive.sync`; source create/update/delete uses `drive.mount`; file writes use `drive.write`.
|
|
16
|
-
3. Poll `GET /sources/sync-status?source=<slug>` until the job finishes, then report the job `result` counts: `filesAdded`, `filesUpdated`, `filesRemoved`, `filesSkipped`, `filesMoved`, `chunksRemoved`, `chunksEmbedded` and `chunksSkipped`
|
|
16
|
+
3. Poll `GET /sources/sync-status?source=<slug>` until the job finishes, then report the job `result` counts: `filesAdded`, `filesUpdated`, `filesRemoved`, `filesSkipped`, `filesMoved`, `chunksRemoved`, `chunksEmbedded` and `chunksSkipped` plus `embeddingDegraded` (safe, deduplicated embedding stop reasons). Payload indexing can succeed with missing/stale embeddings; report that debt separately. Read the two flags before interpreting completion. `cancelled: true` is not a failure, but the run stopped early: the counts are partial and a re-run converges. `truncated: true` means the walk stopped at `filesScanCap`, so files past the cap were never examined and no deletion or move was inferred — call that a partial pass, never a completed sync.
|
|
17
17
|
4. If any errors occur, list them clearly with the affected source, scope, and file path.
|
|
18
|
-
5.
|
|
18
|
+
5. Distinguish live connector data, indexed payload and embedding freshness. Provider outage or disabled embedding preserves metadata/full-text indexing; semantic results may be old, or the response may fall back to filter search. Ordinary sync completion does not settle all embedding debt. Use `manage-sources` explicit debt catchup; terminal `paused` carries `result.embedding.pausedReason`, and Resume creates a new authorized job from durable debt.
|
|
19
19
|
|
|
20
20
|
## What a sync will and will not index
|
|
21
21
|
|
|
22
|
-
A file is
|
|
22
|
+
A file is indexed only when BOTH inputs allow it, and they are different kinds
|
|
23
23
|
of thing — say which one you mean when you report a missing file:
|
|
24
24
|
|
|
25
25
|
- the source's **exclude/include patterns** — a PREFERENCE the operator owns and
|
|
26
26
|
can edit at any time (`manage-sources`). A file missing for this reason is a
|
|
27
27
|
configuration answer, not a security one.
|
|
28
28
|
- the immutable **uri-policy read floor** — the security half. *What cannot be
|
|
29
|
-
READ cannot be
|
|
29
|
+
READ cannot be INDEXED*: a path a `floor:true` row denies `read` on is never
|
|
30
30
|
newly embedded, on every source including ones attached long before the floor
|
|
31
31
|
shipped, and no `include` whitelist resurrects it. There is no exclude entry to
|
|
32
32
|
add and none to remove.
|
package/tools/fs_search.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"title": "Search Filesystem Nodes",
|
|
4
4
|
"type": "object",
|
|
5
5
|
"additionalProperties": false,
|
|
6
|
-
"description": "Find files by meaning,
|
|
6
|
+
"description": "Find scoped files by meaning, indexed metadata/keywords or fixed-string live grep with line anchors (folder_uri required). Pair semantic and grep to cover index lag. Search before creating or claiming absence; every mode reports truncation.",
|
|
7
7
|
"properties": {
|
|
8
8
|
"search_mode": {
|
|
9
9
|
"type": "string",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"filter",
|
|
13
13
|
"grep"
|
|
14
14
|
],
|
|
15
|
-
"description": "
|
|
15
|
+
"description": "semantic (default): embeddings + indexed text; off/unavailable embedding → filter. Check effective_mode, embedding_degraded and row embedding_status (current/stale/missing/unknown). filter: metadata/keywords, no embed cost. grep: FIXED-STRING, never regex, needs folder_uri. glob alone → filter."
|
|
16
16
|
},
|
|
17
17
|
"query": {
|
|
18
18
|
"type": "string",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./chunk-TY33BMKR.js";import"./chunk-DCANE7XH.js";export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-QLBZ4JR2.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-G4RZ3UNX.js";import"./chunk-XIFGTNRM.js";import"./chunk-QLBZ4JR2.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-DKD2L57N.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-QXXJ73P5.js";import"./chunk-6TC3DVWV.js";import"./chunk-TRRUHDPN.js";import"./chunk-OLEIKJ3X.js";import"./chunk-KYH5EHHY.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-RH3QY5LF.js";import"./chunk-DKD2L57N.js";import"./chunk-OLEIKJ3X.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-BGRVFATT.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-OLEIKJ3X.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-DZ5C5FKI.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-KYH5EHHY.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-5H7ZCOD3.js";import"./chunk-QLBZ4JR2.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-737Y24HS.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-4QNMHAIR.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-TRRUHDPN.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-6TC3DVWV.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-3QLE7Y4L.js";import"./chunk-BGRVFATT.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"./chunk-SFUNBBEA.js";import"./chunk-DCANE7XH.js";export{a as default};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* One-time `_pending` boot self-heal (prudent-indexing-otter, Step C).
|
|
3
|
-
*
|
|
4
|
-
* The durable Pending-Changes journal + baseline blobs live under
|
|
5
|
-
* `data://brain-core/_pending/**` — sync-EXCLUDED (the runtime floor) precisely
|
|
6
|
-
* because the baseline blobs may hold sensitive file content that must NEVER be
|
|
7
|
-
* vectorized. Before this increment the fs write path vectorized EVERY create,
|
|
8
|
-
* so projects predating the floor can carry stale `_pending` nodes in Qdrant.
|
|
9
|
-
*
|
|
10
|
-
* This idempotent boot pass purges them per project — the proven `runPurge`
|
|
11
|
-
* bounded `deleteByFilter` shape (no full-project scroll, no client matching):
|
|
12
|
-
* a single server-side delete scoped to `projectId` + `folder_ancestors` =
|
|
13
|
-
* `data://brain-core/_pending` (chunks carry `folder_ancestors` too, so they are
|
|
14
|
-
* covered by the same filter). `_pending`-ONLY; general excluded-node cleanup
|
|
15
|
-
* rides the existing sync config-change reconcile.
|
|
16
|
-
*/
|
|
17
|
-
import type { SourceConfigPort } from '../connectors/types.js';
|
|
18
|
-
import type { VectorIndexPort } from '../vector/types.js';
|
|
19
|
-
import type { FilesystemNode } from '../domain/types.js';
|
|
20
|
-
export type PurgePendingResult = {
|
|
21
|
-
projects: number;
|
|
22
|
-
removed: number;
|
|
23
|
-
};
|
|
24
|
-
export declare function purgeStalePendingNodes(deps: {
|
|
25
|
-
sourceConfigs: SourceConfigPort;
|
|
26
|
-
getVector: (projectId: string) => Promise<VectorIndexPort<FilesystemNode>>;
|
|
27
|
-
logger?: {
|
|
28
|
-
info?: (msg: string, meta?: Record<string, unknown>) => void;
|
|
29
|
-
warn?: (msg: string, meta?: Record<string, unknown>) => void;
|
|
30
|
-
};
|
|
31
|
-
}): Promise<PurgePendingResult>;
|
|
32
|
-
//# sourceMappingURL=purgePendingNodes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"purgePendingNodes.d.ts","sourceRoot":"","sources":["../../../src/services/purgePendingNodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKzD,MAAM,MAAM,kBAAkB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,aAAa,EAAE,gBAAgB,CAAC;IAChC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC;IAC3E,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;KAAE,CAAC;CACzI,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAyC9B"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* One-time `_pending` boot self-heal (prudent-indexing-otter, Step C).
|
|
3
|
-
*
|
|
4
|
-
* The durable Pending-Changes journal + baseline blobs live under
|
|
5
|
-
* `data://brain-core/_pending/**` — sync-EXCLUDED (the runtime floor) precisely
|
|
6
|
-
* because the baseline blobs may hold sensitive file content that must NEVER be
|
|
7
|
-
* vectorized. Before this increment the fs write path vectorized EVERY create,
|
|
8
|
-
* so projects predating the floor can carry stale `_pending` nodes in Qdrant.
|
|
9
|
-
*
|
|
10
|
-
* This idempotent boot pass purges them per project — the proven `runPurge`
|
|
11
|
-
* bounded `deleteByFilter` shape (no full-project scroll, no client matching):
|
|
12
|
-
* a single server-side delete scoped to `projectId` + `folder_ancestors` =
|
|
13
|
-
* `data://brain-core/_pending` (chunks carry `folder_ancestors` too, so they are
|
|
14
|
-
* covered by the same filter). `_pending`-ONLY; general excluded-node cleanup
|
|
15
|
-
* rides the existing sync config-change reconcile.
|
|
16
|
-
*/
|
|
17
|
-
/** The folder-ancestor key the `_pending` journal + blob nodes carry. */
|
|
18
|
-
const PENDING_FOLDER_ANCESTOR = 'data://brain-core/_pending';
|
|
19
|
-
export async function purgeStalePendingNodes(deps) {
|
|
20
|
-
let scoped;
|
|
21
|
-
try {
|
|
22
|
-
scoped = await deps.sourceConfigs.listAll();
|
|
23
|
-
}
|
|
24
|
-
catch (err) {
|
|
25
|
-
deps.logger?.warn?.('pending purge: listAll failed', {
|
|
26
|
-
error: err instanceof Error ? err.message : String(err),
|
|
27
|
-
});
|
|
28
|
-
return { projects: 0, removed: 0 };
|
|
29
|
-
}
|
|
30
|
-
const projectIds = new Set();
|
|
31
|
-
for (const { scope } of scoped) {
|
|
32
|
-
if (scope.projectId)
|
|
33
|
-
projectIds.add(scope.projectId);
|
|
34
|
-
}
|
|
35
|
-
let removed = 0;
|
|
36
|
-
for (const projectId of projectIds) {
|
|
37
|
-
try {
|
|
38
|
-
const vector = await deps.getVector(projectId);
|
|
39
|
-
removed += await vector.deleteByFilter({
|
|
40
|
-
must: [
|
|
41
|
-
{ field: 'projectId', equals: projectId },
|
|
42
|
-
{ field: 'folder_ancestors', equals: PENDING_FOLDER_ANCESTOR },
|
|
43
|
-
],
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
catch (err) {
|
|
47
|
-
deps.logger?.warn?.('pending purge failed for project', {
|
|
48
|
-
projectId,
|
|
49
|
-
error: err instanceof Error ? err.message : String(err),
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
if (removed > 0) {
|
|
54
|
-
deps.logger?.info?.('stale _pending nodes purged', {
|
|
55
|
-
projects: projectIds.size,
|
|
56
|
-
removed,
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
return { projects: projectIds.size, removed };
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=purgePendingNodes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"purgePendingNodes.js","sourceRoot":"","sources":["../../../src/services/purgePendingNodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,yEAAyE;AACzE,MAAM,uBAAuB,GAAG,4BAA4B,CAAC;AAI7D,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAI5C;IACC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,+BAA+B,EAAE;YACnD,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;QACH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,SAAS;YAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC/C,OAAO,IAAI,MAAM,MAAM,CAAC,cAAc,CAAC;gBACrC,IAAI,EAAE;oBACJ,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE;oBACzC,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,uBAAuB,EAAE;iBAC/D;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,kCAAkC,EAAE;gBACtD,SAAS;gBACT,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,6BAA6B,EAAE;YACjD,QAAQ,EAAE,UAAU,CAAC,IAAI;YACzB,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;AAChD,CAAC"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|