@fgv/ts-agent-memory 5.1.0-47 → 5.1.0-49
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/dist/packlets/ingest/orchestrator.js +11 -1
- package/dist/packlets/ingest/orchestrator.js.map +1 -1
- package/dist/packlets/observe/memoryObservationStore.js +6 -0
- package/dist/packlets/observe/memoryObservationStore.js.map +1 -1
- package/dist/packlets/observe/observer.js.map +1 -1
- package/dist/packlets/retrieve/linkTraversalRetriever.js +1 -1
- package/dist/packlets/retrieve/linkTraversalRetriever.js.map +1 -1
- package/dist/packlets/retrieve/recencyRetriever.js +1 -1
- package/dist/packlets/retrieve/recencyRetriever.js.map +1 -1
- package/dist/packlets/retrieve/retriever.js +11 -5
- package/dist/packlets/retrieve/retriever.js.map +1 -1
- package/dist/packlets/retrieve/structuredFilterRetriever.js +27 -5
- package/dist/packlets/retrieve/structuredFilterRetriever.js.map +1 -1
- package/dist/packlets/retrieve/tagRetriever.js +1 -1
- package/dist/packlets/retrieve/tagRetriever.js.map +1 -1
- package/dist/packlets/retrieve/temporalRetrievers.js +1 -1
- package/dist/packlets/retrieve/temporalRetrievers.js.map +1 -1
- package/dist/packlets/store/fileTreeMemoryStore.js +152 -132
- package/dist/packlets/store/fileTreeMemoryStore.js.map +1 -1
- package/dist/packlets/store/vectorMaintenance.js +251 -0
- package/dist/packlets/store/vectorMaintenance.js.map +1 -0
- package/dist/packlets/types/envelope.js.map +1 -1
- package/dist/packlets/vector/inMemoryCosineIndex.js +81 -18
- package/dist/packlets/vector/inMemoryCosineIndex.js.map +1 -1
- package/dist/packlets/vector/inMemoryFragmentCosineIndex.js +7 -0
- package/dist/packlets/vector/inMemoryFragmentCosineIndex.js.map +1 -1
- package/dist/packlets/vector/vectorIndex.js.map +1 -1
- package/dist/ts-agent-memory.d.ts +431 -79
- package/lib/packlets/ingest/orchestrator.d.ts.map +1 -1
- package/lib/packlets/ingest/orchestrator.js +11 -1
- package/lib/packlets/ingest/orchestrator.js.map +1 -1
- package/lib/packlets/observe/memoryObservationStore.d.ts.map +1 -1
- package/lib/packlets/observe/memoryObservationStore.js +6 -0
- package/lib/packlets/observe/memoryObservationStore.js.map +1 -1
- package/lib/packlets/observe/observer.d.ts +61 -0
- package/lib/packlets/observe/observer.d.ts.map +1 -1
- package/lib/packlets/observe/observer.js.map +1 -1
- package/lib/packlets/retrieve/linkTraversalRetriever.d.ts +1 -1
- package/lib/packlets/retrieve/linkTraversalRetriever.js +1 -1
- package/lib/packlets/retrieve/linkTraversalRetriever.js.map +1 -1
- package/lib/packlets/retrieve/recencyRetriever.d.ts +1 -1
- package/lib/packlets/retrieve/recencyRetriever.js +1 -1
- package/lib/packlets/retrieve/recencyRetriever.js.map +1 -1
- package/lib/packlets/retrieve/retriever.d.ts +26 -7
- package/lib/packlets/retrieve/retriever.d.ts.map +1 -1
- package/lib/packlets/retrieve/retriever.js +11 -5
- package/lib/packlets/retrieve/retriever.js.map +1 -1
- package/lib/packlets/retrieve/structuredFilterRetriever.d.ts +26 -4
- package/lib/packlets/retrieve/structuredFilterRetriever.d.ts.map +1 -1
- package/lib/packlets/retrieve/structuredFilterRetriever.js +27 -5
- package/lib/packlets/retrieve/structuredFilterRetriever.js.map +1 -1
- package/lib/packlets/retrieve/tagRetriever.d.ts +1 -1
- package/lib/packlets/retrieve/tagRetriever.js +1 -1
- package/lib/packlets/retrieve/tagRetriever.js.map +1 -1
- package/lib/packlets/retrieve/temporalRetrievers.js +1 -1
- package/lib/packlets/retrieve/temporalRetrievers.js.map +1 -1
- package/lib/packlets/store/fileTreeMemoryStore.d.ts +135 -59
- package/lib/packlets/store/fileTreeMemoryStore.d.ts.map +1 -1
- package/lib/packlets/store/fileTreeMemoryStore.js +151 -131
- package/lib/packlets/store/fileTreeMemoryStore.js.map +1 -1
- package/lib/packlets/store/vectorMaintenance.d.ts +149 -0
- package/lib/packlets/store/vectorMaintenance.d.ts.map +1 -0
- package/lib/packlets/store/vectorMaintenance.js +255 -0
- package/lib/packlets/store/vectorMaintenance.js.map +1 -0
- package/lib/packlets/types/envelope.d.ts +11 -0
- package/lib/packlets/types/envelope.d.ts.map +1 -1
- package/lib/packlets/types/envelope.js.map +1 -1
- package/lib/packlets/vector/inMemoryCosineIndex.d.ts +30 -7
- package/lib/packlets/vector/inMemoryCosineIndex.d.ts.map +1 -1
- package/lib/packlets/vector/inMemoryCosineIndex.js +80 -17
- package/lib/packlets/vector/inMemoryCosineIndex.js.map +1 -1
- package/lib/packlets/vector/inMemoryFragmentCosineIndex.d.ts +7 -0
- package/lib/packlets/vector/inMemoryFragmentCosineIndex.d.ts.map +1 -1
- package/lib/packlets/vector/inMemoryFragmentCosineIndex.js +7 -0
- package/lib/packlets/vector/inMemoryFragmentCosineIndex.js.map +1 -1
- package/lib/packlets/vector/vectorIndex.d.ts +129 -1
- package/lib/packlets/vector/vectorIndex.d.ts.map +1 -1
- package/lib/packlets/vector/vectorIndex.js.map +1 -1
- package/package.json +17 -7
- package/.rush/temp/5667e36f1c0cc503a5c20a3ebff76e7b9a702d41.tar.log +0 -468
- package/.rush/temp/chunked-rush-logs/ts-agent-memory.build.chunks.jsonl +0 -9
- package/.rush/temp/operation/build/all.log +0 -9
- package/.rush/temp/operation/build/log-chunks.jsonl +0 -9
- package/.rush/temp/operation/build/state.json +0 -3
- package/.rush/temp/shrinkwrap-deps.json +0 -689
- package/config/api-extractor.json +0 -343
- package/config/jest.config.json +0 -14
- package/config/rig.json +0 -4
- package/dist/test/unit/converters/antagonistRoundTrip.test.js +0 -95
- package/dist/test/unit/converters/antagonistRoundTrip.test.js.map +0 -1
- package/dist/test/unit/converters/bodyConverterRegistry.test.js +0 -72
- package/dist/test/unit/converters/bodyConverterRegistry.test.js.map +0 -1
- package/dist/test/unit/converters/envelopeConverter.test.js +0 -313
- package/dist/test/unit/converters/envelopeConverter.test.js.map +0 -1
- package/dist/test/unit/index/memoryIndex.test.js +0 -214
- package/dist/test/unit/index/memoryIndex.test.js.map +0 -1
- package/dist/test/unit/ingest/antagonistCycleAndParity.test.js +0 -277
- package/dist/test/unit/ingest/antagonistCycleAndParity.test.js.map +0 -1
- package/dist/test/unit/ingest/cycleGuard.test.js +0 -81
- package/dist/test/unit/ingest/cycleGuard.test.js.map +0 -1
- package/dist/test/unit/ingest/dedupScope.test.js +0 -434
- package/dist/test/unit/ingest/dedupScope.test.js.map +0 -1
- package/dist/test/unit/ingest/orchestrator.test.js +0 -1058
- package/dist/test/unit/ingest/orchestrator.test.js.map +0 -1
- package/dist/test/unit/observe/memoryObservationStore.test.js +0 -118
- package/dist/test/unit/observe/memoryObservationStore.test.js.map +0 -1
- package/dist/test/unit/retrieve/fragmentSemanticRetriever.test.js +0 -116
- package/dist/test/unit/retrieve/fragmentSemanticRetriever.test.js.map +0 -1
- package/dist/test/unit/retrieve/linkTraversalRetriever.test.js +0 -257
- package/dist/test/unit/retrieve/linkTraversalRetriever.test.js.map +0 -1
- package/dist/test/unit/retrieve/retrievers.test.js +0 -768
- package/dist/test/unit/retrieve/retrievers.test.js.map +0 -1
- package/dist/test/unit/retrieve/temporalRetrievers.test.js +0 -182
- package/dist/test/unit/retrieve/temporalRetrievers.test.js.map +0 -1
- package/dist/test/unit/store/antagonistTemporalBoundary.test.js +0 -120
- package/dist/test/unit/store/antagonistTemporalBoundary.test.js.map +0 -1
- package/dist/test/unit/store/embedOnWrite.test.js +0 -317
- package/dist/test/unit/store/embedOnWrite.test.js.map +0 -1
- package/dist/test/unit/store/fileTreeMemoryStore.test.js +0 -778
- package/dist/test/unit/store/fileTreeMemoryStore.test.js.map +0 -1
- package/dist/test/unit/store/fragmentEmbedOnWrite.test.js +0 -255
- package/dist/test/unit/store/fragmentEmbedOnWrite.test.js.map +0 -1
- package/dist/test/unit/store/indexInjection.test.js +0 -432
- package/dist/test/unit/store/indexInjection.test.js.map +0 -1
- package/dist/test/unit/store/lenientOpen.test.js +0 -248
- package/dist/test/unit/store/lenientOpen.test.js.map +0 -1
- package/dist/test/unit/store/listScoped.test.js +0 -109
- package/dist/test/unit/store/listScoped.test.js.map +0 -1
- package/dist/test/unit/store/observations.test.js +0 -239
- package/dist/test/unit/store/observations.test.js.map +0 -1
- package/dist/test/unit/store/rankAxis.test.js +0 -254
- package/dist/test/unit/store/rankAxis.test.js.map +0 -1
- package/dist/test/unit/store/scopeEncoding.test.js +0 -24
- package/dist/test/unit/store/scopeEncoding.test.js.map +0 -1
- package/dist/test/unit/store/temporalStore.test.js +0 -398
- package/dist/test/unit/store/temporalStore.test.js.map +0 -1
- package/dist/test/unit/tools/memoryTools.test.js +0 -842
- package/dist/test/unit/tools/memoryTools.test.js.map +0 -1
- package/dist/test/unit/types/identityCodec.test.js +0 -187
- package/dist/test/unit/types/identityCodec.test.js.map +0 -1
- package/dist/test/unit/types/ids.test.js +0 -84
- package/dist/test/unit/types/ids.test.js.map +0 -1
- package/dist/test/unit/types/temporalCodec.test.js +0 -203
- package/dist/test/unit/types/temporalCodec.test.js.map +0 -1
- package/dist/test/unit/types/temporalPolicy.test.js +0 -83
- package/dist/test/unit/types/temporalPolicy.test.js.map +0 -1
- package/dist/test/unit/types/writePolicy.test.js +0 -331
- package/dist/test/unit/types/writePolicy.test.js.map +0 -1
- package/dist/test/unit/vector/fragmentConverters.test.js +0 -58
- package/dist/test/unit/vector/fragmentConverters.test.js.map +0 -1
- package/dist/test/unit/vector/inMemoryCosineIndex.test.js +0 -252
- package/dist/test/unit/vector/inMemoryCosineIndex.test.js.map +0 -1
- package/dist/test/unit/vector/inMemoryFragmentCosineIndex.test.js +0 -362
- package/dist/test/unit/vector/inMemoryFragmentCosineIndex.test.js.map +0 -1
- package/dist/test/unit/vector/vectorIndex.test.js +0 -51
- package/dist/test/unit/vector/vectorIndex.test.js.map +0 -1
- package/eslint.config.js +0 -15
- package/etc/ts-agent-memory.api.md +0 -940
- package/lib/test/unit/converters/antagonistRoundTrip.test.d.ts +0 -10
- package/lib/test/unit/converters/antagonistRoundTrip.test.d.ts.map +0 -1
- package/lib/test/unit/converters/antagonistRoundTrip.test.js +0 -97
- package/lib/test/unit/converters/antagonistRoundTrip.test.js.map +0 -1
- package/lib/test/unit/converters/bodyConverterRegistry.test.d.ts +0 -2
- package/lib/test/unit/converters/bodyConverterRegistry.test.d.ts.map +0 -1
- package/lib/test/unit/converters/bodyConverterRegistry.test.js +0 -74
- package/lib/test/unit/converters/bodyConverterRegistry.test.js.map +0 -1
- package/lib/test/unit/converters/envelopeConverter.test.d.ts +0 -2
- package/lib/test/unit/converters/envelopeConverter.test.d.ts.map +0 -1
- package/lib/test/unit/converters/envelopeConverter.test.js +0 -315
- package/lib/test/unit/converters/envelopeConverter.test.js.map +0 -1
- package/lib/test/unit/index/memoryIndex.test.d.ts +0 -2
- package/lib/test/unit/index/memoryIndex.test.d.ts.map +0 -1
- package/lib/test/unit/index/memoryIndex.test.js +0 -216
- package/lib/test/unit/index/memoryIndex.test.js.map +0 -1
- package/lib/test/unit/ingest/antagonistCycleAndParity.test.d.ts +0 -9
- package/lib/test/unit/ingest/antagonistCycleAndParity.test.d.ts.map +0 -1
- package/lib/test/unit/ingest/antagonistCycleAndParity.test.js +0 -279
- package/lib/test/unit/ingest/antagonistCycleAndParity.test.js.map +0 -1
- package/lib/test/unit/ingest/cycleGuard.test.d.ts +0 -2
- package/lib/test/unit/ingest/cycleGuard.test.d.ts.map +0 -1
- package/lib/test/unit/ingest/cycleGuard.test.js +0 -83
- package/lib/test/unit/ingest/cycleGuard.test.js.map +0 -1
- package/lib/test/unit/ingest/dedupScope.test.d.ts +0 -2
- package/lib/test/unit/ingest/dedupScope.test.d.ts.map +0 -1
- package/lib/test/unit/ingest/dedupScope.test.js +0 -436
- package/lib/test/unit/ingest/dedupScope.test.js.map +0 -1
- package/lib/test/unit/ingest/orchestrator.test.d.ts +0 -2
- package/lib/test/unit/ingest/orchestrator.test.d.ts.map +0 -1
- package/lib/test/unit/ingest/orchestrator.test.js +0 -1060
- package/lib/test/unit/ingest/orchestrator.test.js.map +0 -1
- package/lib/test/unit/observe/memoryObservationStore.test.d.ts +0 -2
- package/lib/test/unit/observe/memoryObservationStore.test.d.ts.map +0 -1
- package/lib/test/unit/observe/memoryObservationStore.test.js +0 -120
- package/lib/test/unit/observe/memoryObservationStore.test.js.map +0 -1
- package/lib/test/unit/retrieve/fragmentSemanticRetriever.test.d.ts +0 -2
- package/lib/test/unit/retrieve/fragmentSemanticRetriever.test.d.ts.map +0 -1
- package/lib/test/unit/retrieve/fragmentSemanticRetriever.test.js +0 -118
- package/lib/test/unit/retrieve/fragmentSemanticRetriever.test.js.map +0 -1
- package/lib/test/unit/retrieve/linkTraversalRetriever.test.d.ts +0 -2
- package/lib/test/unit/retrieve/linkTraversalRetriever.test.d.ts.map +0 -1
- package/lib/test/unit/retrieve/linkTraversalRetriever.test.js +0 -259
- package/lib/test/unit/retrieve/linkTraversalRetriever.test.js.map +0 -1
- package/lib/test/unit/retrieve/retrievers.test.d.ts +0 -2
- package/lib/test/unit/retrieve/retrievers.test.d.ts.map +0 -1
- package/lib/test/unit/retrieve/retrievers.test.js +0 -770
- package/lib/test/unit/retrieve/retrievers.test.js.map +0 -1
- package/lib/test/unit/retrieve/temporalRetrievers.test.d.ts +0 -2
- package/lib/test/unit/retrieve/temporalRetrievers.test.d.ts.map +0 -1
- package/lib/test/unit/retrieve/temporalRetrievers.test.js +0 -184
- package/lib/test/unit/retrieve/temporalRetrievers.test.js.map +0 -1
- package/lib/test/unit/store/antagonistTemporalBoundary.test.d.ts +0 -9
- package/lib/test/unit/store/antagonistTemporalBoundary.test.d.ts.map +0 -1
- package/lib/test/unit/store/antagonistTemporalBoundary.test.js +0 -122
- package/lib/test/unit/store/antagonistTemporalBoundary.test.js.map +0 -1
- package/lib/test/unit/store/embedOnWrite.test.d.ts +0 -2
- package/lib/test/unit/store/embedOnWrite.test.d.ts.map +0 -1
- package/lib/test/unit/store/embedOnWrite.test.js +0 -319
- package/lib/test/unit/store/embedOnWrite.test.js.map +0 -1
- package/lib/test/unit/store/fileTreeMemoryStore.test.d.ts +0 -2
- package/lib/test/unit/store/fileTreeMemoryStore.test.d.ts.map +0 -1
- package/lib/test/unit/store/fileTreeMemoryStore.test.js +0 -780
- package/lib/test/unit/store/fileTreeMemoryStore.test.js.map +0 -1
- package/lib/test/unit/store/fragmentEmbedOnWrite.test.d.ts +0 -2
- package/lib/test/unit/store/fragmentEmbedOnWrite.test.d.ts.map +0 -1
- package/lib/test/unit/store/fragmentEmbedOnWrite.test.js +0 -257
- package/lib/test/unit/store/fragmentEmbedOnWrite.test.js.map +0 -1
- package/lib/test/unit/store/indexInjection.test.d.ts +0 -2
- package/lib/test/unit/store/indexInjection.test.d.ts.map +0 -1
- package/lib/test/unit/store/indexInjection.test.js +0 -434
- package/lib/test/unit/store/indexInjection.test.js.map +0 -1
- package/lib/test/unit/store/lenientOpen.test.d.ts +0 -2
- package/lib/test/unit/store/lenientOpen.test.d.ts.map +0 -1
- package/lib/test/unit/store/lenientOpen.test.js +0 -250
- package/lib/test/unit/store/lenientOpen.test.js.map +0 -1
- package/lib/test/unit/store/listScoped.test.d.ts +0 -2
- package/lib/test/unit/store/listScoped.test.d.ts.map +0 -1
- package/lib/test/unit/store/listScoped.test.js +0 -111
- package/lib/test/unit/store/listScoped.test.js.map +0 -1
- package/lib/test/unit/store/observations.test.d.ts +0 -2
- package/lib/test/unit/store/observations.test.d.ts.map +0 -1
- package/lib/test/unit/store/observations.test.js +0 -241
- package/lib/test/unit/store/observations.test.js.map +0 -1
- package/lib/test/unit/store/rankAxis.test.d.ts +0 -2
- package/lib/test/unit/store/rankAxis.test.d.ts.map +0 -1
- package/lib/test/unit/store/rankAxis.test.js +0 -256
- package/lib/test/unit/store/rankAxis.test.js.map +0 -1
- package/lib/test/unit/store/scopeEncoding.test.d.ts +0 -2
- package/lib/test/unit/store/scopeEncoding.test.d.ts.map +0 -1
- package/lib/test/unit/store/scopeEncoding.test.js +0 -26
- package/lib/test/unit/store/scopeEncoding.test.js.map +0 -1
- package/lib/test/unit/store/temporalStore.test.d.ts +0 -2
- package/lib/test/unit/store/temporalStore.test.d.ts.map +0 -1
- package/lib/test/unit/store/temporalStore.test.js +0 -400
- package/lib/test/unit/store/temporalStore.test.js.map +0 -1
- package/lib/test/unit/tools/memoryTools.test.d.ts +0 -2
- package/lib/test/unit/tools/memoryTools.test.d.ts.map +0 -1
- package/lib/test/unit/tools/memoryTools.test.js +0 -844
- package/lib/test/unit/tools/memoryTools.test.js.map +0 -1
- package/lib/test/unit/types/identityCodec.test.d.ts +0 -2
- package/lib/test/unit/types/identityCodec.test.d.ts.map +0 -1
- package/lib/test/unit/types/identityCodec.test.js +0 -189
- package/lib/test/unit/types/identityCodec.test.js.map +0 -1
- package/lib/test/unit/types/ids.test.d.ts +0 -2
- package/lib/test/unit/types/ids.test.d.ts.map +0 -1
- package/lib/test/unit/types/ids.test.js +0 -86
- package/lib/test/unit/types/ids.test.js.map +0 -1
- package/lib/test/unit/types/temporalCodec.test.d.ts +0 -2
- package/lib/test/unit/types/temporalCodec.test.d.ts.map +0 -1
- package/lib/test/unit/types/temporalCodec.test.js +0 -205
- package/lib/test/unit/types/temporalCodec.test.js.map +0 -1
- package/lib/test/unit/types/temporalPolicy.test.d.ts +0 -2
- package/lib/test/unit/types/temporalPolicy.test.d.ts.map +0 -1
- package/lib/test/unit/types/temporalPolicy.test.js +0 -85
- package/lib/test/unit/types/temporalPolicy.test.js.map +0 -1
- package/lib/test/unit/types/writePolicy.test.d.ts +0 -2
- package/lib/test/unit/types/writePolicy.test.d.ts.map +0 -1
- package/lib/test/unit/types/writePolicy.test.js +0 -333
- package/lib/test/unit/types/writePolicy.test.js.map +0 -1
- package/lib/test/unit/vector/fragmentConverters.test.d.ts +0 -2
- package/lib/test/unit/vector/fragmentConverters.test.d.ts.map +0 -1
- package/lib/test/unit/vector/fragmentConverters.test.js +0 -60
- package/lib/test/unit/vector/fragmentConverters.test.js.map +0 -1
- package/lib/test/unit/vector/inMemoryCosineIndex.test.d.ts +0 -2
- package/lib/test/unit/vector/inMemoryCosineIndex.test.d.ts.map +0 -1
- package/lib/test/unit/vector/inMemoryCosineIndex.test.js +0 -254
- package/lib/test/unit/vector/inMemoryCosineIndex.test.js.map +0 -1
- package/lib/test/unit/vector/inMemoryFragmentCosineIndex.test.d.ts +0 -2
- package/lib/test/unit/vector/inMemoryFragmentCosineIndex.test.d.ts.map +0 -1
- package/lib/test/unit/vector/inMemoryFragmentCosineIndex.test.js +0 -364
- package/lib/test/unit/vector/inMemoryFragmentCosineIndex.test.js.map +0 -1
- package/lib/test/unit/vector/vectorIndex.test.d.ts +0 -2
- package/lib/test/unit/vector/vectorIndex.test.d.ts.map +0 -1
- package/lib/test/unit/vector/vectorIndex.test.js +0 -53
- package/lib/test/unit/vector/vectorIndex.test.js.map +0 -1
- package/rush-logs/ts-agent-memory.build.cache.log +0 -3
- package/rush-logs/ts-agent-memory.build.log +0 -9
- package/src/index.ts +0 -14
- package/src/packlets/converters/bodyConverterRegistry.ts +0 -105
- package/src/packlets/converters/envelopeConverter.ts +0 -233
- package/src/packlets/converters/index.ts +0 -7
- package/src/packlets/index/index.ts +0 -6
- package/src/packlets/index/memoryIndex.ts +0 -332
- package/src/packlets/ingest/cycleGuard.ts +0 -153
- package/src/packlets/ingest/hostStages.ts +0 -111
- package/src/packlets/ingest/index.ts +0 -9
- package/src/packlets/ingest/model.ts +0 -195
- package/src/packlets/ingest/orchestrator.ts +0 -968
- package/src/packlets/observe/index.ts +0 -7
- package/src/packlets/observe/memoryObservationStore.ts +0 -153
- package/src/packlets/observe/observer.ts +0 -119
- package/src/packlets/retrieve/fragmentSemanticRetriever.ts +0 -138
- package/src/packlets/retrieve/hybridRetriever.ts +0 -194
- package/src/packlets/retrieve/index.ts +0 -14
- package/src/packlets/retrieve/linkTraversalRetriever.ts +0 -158
- package/src/packlets/retrieve/recencyRetriever.ts +0 -54
- package/src/packlets/retrieve/retriever.ts +0 -291
- package/src/packlets/retrieve/semanticRetriever.ts +0 -152
- package/src/packlets/retrieve/structuredFilterRetriever.ts +0 -58
- package/src/packlets/retrieve/tagRetriever.ts +0 -58
- package/src/packlets/retrieve/temporalRetrievers.ts +0 -210
- package/src/packlets/store/fileTreeMemoryStore.ts +0 -1872
- package/src/packlets/store/index.ts +0 -7
- package/src/packlets/store/scopeEncoding.ts +0 -36
- package/src/packlets/tools/index.ts +0 -6
- package/src/packlets/tools/memoryTools.ts +0 -706
- package/src/packlets/types/envelope.ts +0 -196
- package/src/packlets/types/filenameSafety.ts +0 -57
- package/src/packlets/types/identityCodec.ts +0 -447
- package/src/packlets/types/ids.ts +0 -124
- package/src/packlets/types/index.ts +0 -11
- package/src/packlets/types/temporal.ts +0 -96
- package/src/packlets/types/writePolicy.ts +0 -612
- package/src/packlets/vector/fragmentConverters.ts +0 -55
- package/src/packlets/vector/inMemoryCosineIndex.ts +0 -196
- package/src/packlets/vector/inMemoryFragmentCosineIndex.ts +0 -289
- package/src/packlets/vector/index.ts +0 -9
- package/src/packlets/vector/vectorIndex.ts +0 -273
- package/src/test/unit/converters/antagonistRoundTrip.test.ts +0 -110
- package/src/test/unit/converters/bodyConverterRegistry.test.ts +0 -89
- package/src/test/unit/converters/envelopeConverter.test.ts +0 -418
- package/src/test/unit/index/memoryIndex.test.ts +0 -272
- package/src/test/unit/ingest/antagonistCycleAndParity.test.ts +0 -367
- package/src/test/unit/ingest/cycleGuard.test.ts +0 -110
- package/src/test/unit/ingest/dedupScope.test.ts +0 -542
- package/src/test/unit/ingest/orchestrator.test.ts +0 -1355
- package/src/test/unit/observe/memoryObservationStore.test.ts +0 -158
- package/src/test/unit/retrieve/fragmentSemanticRetriever.test.ts +0 -163
- package/src/test/unit/retrieve/linkTraversalRetriever.test.ts +0 -329
- package/src/test/unit/retrieve/retrievers.test.ts +0 -1018
- package/src/test/unit/retrieve/temporalRetrievers.test.ts +0 -226
- package/src/test/unit/store/antagonistTemporalBoundary.test.ts +0 -158
- package/src/test/unit/store/embedOnWrite.test.ts +0 -418
- package/src/test/unit/store/fileTreeMemoryStore.test.ts +0 -1041
- package/src/test/unit/store/fragmentEmbedOnWrite.test.ts +0 -349
- package/src/test/unit/store/indexInjection.test.ts +0 -550
- package/src/test/unit/store/lenientOpen.test.ts +0 -292
- package/src/test/unit/store/listScoped.test.ts +0 -138
- package/src/test/unit/store/observations.test.ts +0 -290
- package/src/test/unit/store/rankAxis.test.ts +0 -349
- package/src/test/unit/store/scopeEncoding.test.ts +0 -37
- package/src/test/unit/store/temporalStore.test.ts +0 -469
- package/src/test/unit/tools/memoryTools.test.ts +0 -1121
- package/src/test/unit/types/identityCodec.test.ts +0 -266
- package/src/test/unit/types/ids.test.ts +0 -94
- package/src/test/unit/types/temporalCodec.test.ts +0 -259
- package/src/test/unit/types/temporalPolicy.test.ts +0 -124
- package/src/test/unit/types/writePolicy.test.ts +0 -446
- package/src/test/unit/vector/fragmentConverters.test.ts +0 -80
- package/src/test/unit/vector/inMemoryCosineIndex.test.ts +0 -318
- package/src/test/unit/vector/inMemoryFragmentCosineIndex.test.ts +0 -477
- package/src/test/unit/vector/vectorIndex.test.ts +0 -64
- package/temp/build/lint/_eslint-5eVG3S6w.json +0 -306
- package/temp/build/typescript/ts_8nwakTlr.json +0 -1
- package/temp/ts-agent-memory.api.json +0 -21030
- package/temp/ts-agent-memory.api.md +0 -940
- package/tsconfig.json +0 -8
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dedupScope.test.js","sourceRoot":"","sources":["../../../../src/test/unit/ingest/dedupScope.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) 2026 Erik Fortune\n * SPDX-License-Identifier: MIT\n */\n\nimport '@fgv/ts-utils-jest';\nimport { Converters, Result, succeed } from '@fgv/ts-utils';\nimport { FileTree } from '@fgv/ts-json-base';\nimport {\n BodyConverterRegistry,\n DedupScope,\n EntityId,\n FileTreeMemoryStore,\n IBodyConverterRegistry,\n ICandidateEdge,\n ICandidateRecord,\n IEdgeTarget,\n IEntityResolutionCandidate,\n IEntityResolver,\n IFactExtractor,\n IIdentityCodec,\n IIngestItem,\n IIngestItemResult,\n IMemoryClassification,\n IMemoryClassifier,\n IMemoryRecord,\n IProvenance,\n IRelationContext,\n IRelationExtractor,\n IVectorIndex,\n IWritePolicy,\n InMemoryCosineIndex,\n Kind,\n KnowledgeIdentityCodec,\n KnowledgeLwwPolicy,\n LinkType,\n LtmIdentityCodec,\n MemoryCapCullPolicy,\n MemoryEmbedder,\n MemoryId,\n MemoryIngestOrchestrator,\n MemoryScopeKey,\n MtmIdentityCodec,\n ResolutionVerdict,\n Tag,\n TemporalIdentityCodec,\n TemporalVersionedPolicy\n} from '../../../index';\n\n// --- kinds --------------------------------------------------------------------\n// `mem` is the entity-scoped kind under test: a FLAT (non-versioned) kind whose\n// policy declares `dedupScope: 'entity'`. This is the shape the reporter runs —\n// an experience family — and the one whose ingest-path behavior this stream fixes.\nconst memKind: Kind = 'mem' as Kind;\n// `doc` is the content-scoped control: cross-id collapse is CORRECT for it and\n// must keep working exactly as before.\nconst docKind: Kind = 'doc' as Kind;\n// `claim` is the sibling candidate whose edge points at a collapsed candidate.\n// It has no registered policy, so it resolves through the store's DEFAULT policy.\nconst claimKind: Kind = 'claim' as Kind;\n// `turn` is the reporter's LITERAL shape: an MTM kind whose turns share one\n// conversation scope and differ only by idStem. This is where the bug bit.\nconst turnKind: Kind = 'turn' as Kind;\n// `evt` is a TEMPORAL entity-scoped kind. TemporalIdentityCodec gives each entity\n// its own scope (`<base>/entities/<id>`), so distinct temporal entities were\n// already isolated by the scope filter alone — see the test below.\nconst evtKind: Kind = 'evt' as Kind;\n\nconst memScope: MemoryScopeKey = LtmIdentityCodec.scope;\nconst docScope: MemoryScopeKey = KnowledgeIdentityCodec.scope;\n\n// --- fixtures -----------------------------------------------------------------\nconst clock = (): number => 1000;\n\nfunction mutableRoot(): FileTree.IMutableFileTreeDirectoryItem {\n const tree = FileTree.inMemory([], { mutable: true }).orThrow();\n const root = tree.getDirectory('/').orThrow();\n if (!FileTree.isMutableDirectoryItem(root)) {\n throw new Error('expected a mutable root directory');\n }\n return root;\n}\n\nfunction registry(): IBodyConverterRegistry {\n const reg = BodyConverterRegistry.create().orThrow();\n reg.register(memKind, Converters.string);\n reg.register(docKind, Converters.string);\n reg.register(claimKind, Converters.string);\n reg.register(turnKind, Converters.string);\n reg.register(evtKind, Converters.string);\n return reg;\n}\n\nconst codecs: ReadonlyMap<Kind, IIdentityCodec> = new Map<Kind, IIdentityCodec>([\n [memKind, new LtmIdentityCodec()],\n [docKind, new KnowledgeIdentityCodec()],\n [claimKind, new KnowledgeIdentityCodec()],\n [turnKind, new MtmIdentityCodec()],\n [evtKind, TemporalIdentityCodec.create('events').orThrow()]\n]);\n\n/**\n * `mem` declares `'entity'` (the experience family), `doc` declares `'content'`\n * (the knowledge family). `claim` is deliberately absent so it exercises the\n * store's default-policy fallback.\n */\nfunction policies(): ReadonlyMap<Kind, IWritePolicy> {\n return new Map<Kind, IWritePolicy>([\n [\n memKind,\n MemoryCapCullPolicy.create({\n mutableFields: ['body', 'tags', 'links', 'provenance']\n }).orThrow()\n ],\n [docKind, KnowledgeLwwPolicy.create().orThrow()],\n [\n turnKind,\n MemoryCapCullPolicy.create({\n mutableFields: ['body', 'tags', 'links', 'provenance']\n }).orThrow()\n ],\n [evtKind, TemporalVersionedPolicy.create().orThrow()]\n ]);\n}\n\n/** A deterministic embedder: identical bodies embed identically (cosine 1.0). */\nconst embed: MemoryEmbedder = (record) => {\n const vec: ReadonlyArray<number> = record.body === 'shared body' ? [1, 0, 0] : [0, 1, 0];\n return Promise.resolve(succeed(Float32Array.from(vec)));\n};\n\nfunction buildStore(vectorIndex?: IVectorIndex): FileTreeMemoryStore {\n return FileTreeMemoryStore.create({\n root: mutableRoot(),\n registry: registry(),\n codecs,\n writePolicies: policies(),\n clock,\n vectorIndex,\n embed: vectorIndex !== undefined ? embed : undefined\n }).orThrow();\n}\n\n/**\n * Write a record straight through the store (the direct-put path). The envelope\n * `id` is the CODEC-DERIVED stem, which is not always the `entityId` — an MTM\n * entity `conv-1:2` addresses to `conversations/conv-1` + stem `turn-2`.\n */\nasync function put(\n store: FileTreeMemoryStore,\n kind: Kind,\n entityId: string,\n body: string\n): Promise<Result<IMemoryRecord<unknown>>> {\n const idStem: string = codecs\n .get(kind)!\n .encode(entityId as EntityId)\n .orThrow().idStem;\n return store.put({\n envelope: {\n id: idStem as MemoryId,\n entityId: entityId as EntityId,\n kind,\n tags: [] as ReadonlyArray<Tag>,\n links: [],\n created: 0,\n updated: 0,\n seq: 0,\n contentHash: '',\n provenance: { source: 'agent' } as IProvenance\n },\n body\n });\n}\n\nfunction candidate(kind: Kind, entityId: string, body: string): ICandidateRecord {\n return {\n envelope: {\n entityId: entityId as EntityId,\n kind,\n tags: [] as ReadonlyArray<Tag>,\n links: [],\n provenance: { source: 'agent' } as IProvenance\n },\n body\n };\n}\n\nfunction target(scope: MemoryScopeKey, id: string): IEdgeTarget {\n return { scope, id: id as MemoryId };\n}\n\nconst classifyMem: IMemoryClassifier = {\n classify: () => Promise.resolve(succeed({ kind: memKind } as IMemoryClassification))\n};\n\nfunction extractorFor(candidates: ReadonlyArray<ICandidateRecord>): IFactExtractor {\n return { extract: () => Promise.resolve(succeed(candidates)) };\n}\n\nfunction relaterFor(edges: ReadonlyArray<ICandidateEdge>): IRelationExtractor {\n return { relate: (__ctx: IRelationContext) => Promise.resolve(succeed(edges)) };\n}\n\nconst noEdges: IRelationExtractor = relaterFor([]);\n\ninterface IBuildOrchestratorParams {\n readonly store: FileTreeMemoryStore;\n readonly candidates: ReadonlyArray<ICandidateRecord>;\n readonly edges?: ReadonlyArray<ICandidateEdge>;\n readonly entityResolver?: IEntityResolver;\n readonly vectorIndex?: IVectorIndex;\n}\n\nfunction buildOrchestrator(params: IBuildOrchestratorParams): MemoryIngestOrchestrator {\n return MemoryIngestOrchestrator.create({\n store: params.store,\n registry: registry(),\n codecs,\n classifier: classifyMem,\n extractor: extractorFor(params.candidates),\n relationExtractor: params.edges !== undefined ? relaterFor(params.edges) : noEdges,\n entityResolver: params.entityResolver,\n vectorIndex: params.vectorIndex,\n embed: params.vectorIndex !== undefined ? embed : undefined\n }).orThrow();\n}\n\nconst item: IIngestItem = { id: 'item-1', content: 'irrelevant' };\n\n/** The per-candidate outcome for `entityId`, or `undefined` when absent. */\nfunction outcomeFor(\n result: IIngestItemResult,\n entityId: string\n): IIngestItemResult['records'][number] | undefined {\n return result.records.find((r) => r.candidate.envelope.entityId === (entityId as EntityId));\n}\n\ndescribe('dedupScope on the ingest path', () => {\n describe('IMemoryStore.dedupScopeFor (deliverable 1)', () => {\n test(\"reports 'entity' for a kind whose policy declares it\", () => {\n expect(buildStore().dedupScopeFor(memKind)).toBe('entity');\n });\n\n test(\"reports 'content' for a kind whose policy declares it\", () => {\n expect(buildStore().dedupScopeFor(docKind)).toBe('content');\n });\n\n test(\"reports 'content' for a kind with NO registered policy (the store's default policy is KnowledgeLwwPolicy)\", () => {\n // Documents the real fallback: the store's default policy is a\n // KnowledgeLwwPolicy, which DECLARES 'content'. An unpoliced kind therefore\n // resolves to 'content' and never reaches DEFAULT_DEDUP_SCOPE ('entity').\n expect(buildStore().dedupScopeFor(claimKind)).toBe('content');\n expect(buildStore().dedupScopeFor('never-registered' as Kind)).toBe('content');\n });\n\n test('agrees with what the write path actually does', async () => {\n // The accessor is not a parallel declaration — it is the same read the\n // store's own dedup branch performs. An 'entity' kind keeps two identical\n // bodies; a 'content' kind collapses them.\n const store: FileTreeMemoryStore = buildStore();\n const scopes: ReadonlyArray<DedupScope> = [store.dedupScopeFor(memKind), store.dedupScopeFor(docKind)];\n expect(scopes).toEqual(['entity', 'content']);\n });\n });\n\n describe('direct-put path (unchanged, the parity baseline)', () => {\n test(\"an 'entity' kind keeps two distinct entities with byte-identical bodies\", async () => {\n const store: FileTreeMemoryStore = buildStore();\n expect(await put(store, memKind, 'turn-1', 'shared body')).toSucceed();\n expect(await put(store, memKind, 'turn-2', 'shared body')).toSucceedAndSatisfy((rec) => {\n expect(rec.envelope.id).toBe('turn-2');\n });\n expect(await store.list({ kind: memKind })).toSucceedAndSatisfy((records) => {\n expect(records).toHaveLength(2);\n });\n });\n\n test(\"a 'content' kind collapses two distinct entities with byte-identical bodies\", async () => {\n const store: FileTreeMemoryStore = buildStore();\n expect(await put(store, docKind, 'doc-a', 'shared body')).toSucceed();\n expect(await put(store, docKind, 'doc-b', 'shared body')).toSucceedAndSatisfy((rec) => {\n // The existing record is returned unchanged — the cross-id collapse.\n expect(rec.envelope.id).toBe('doc-a');\n });\n expect(await store.list({ kind: docKind })).toSucceedAndSatisfy((records) => {\n expect(records).toHaveLength(1);\n });\n });\n });\n\n describe('layer-1 exact match honors dedupScope (deliverable 2)', () => {\n test(\"an 'entity' kind does NOT collapse a cross-id body collision (fails against pre-fix code)\", async () => {\n const store: FileTreeMemoryStore = buildStore();\n expect(await put(store, memKind, 'turn-1', 'shared body')).toSucceed();\n\n const orchestrator: MemoryIngestOrchestrator = buildOrchestrator({\n store,\n candidates: [candidate(memKind, 'turn-2', 'shared body')]\n });\n\n expect(await orchestrator.ingestItem(item)).toSucceedAndSatisfy((result) => {\n const turn2 = outcomeFor(result, 'turn-2');\n // Pre-fix this was `deduped` against turn-1 — layer-1 ignored the\n // declaration and always behaved as 'content'.\n expect(turn2?.disposition).toBe('written');\n expect(turn2?.resolution.verdict).toBe('new');\n expect(turn2?.id).toBe('turn-2');\n });\n expect(await store.list({ kind: memKind })).toSucceedAndSatisfy((records) => {\n expect(records).toHaveLength(2);\n });\n });\n\n test(\"a 'content' kind still collapses a cross-id body collision\", async () => {\n const store: FileTreeMemoryStore = buildStore();\n expect(await put(store, docKind, 'doc-a', 'shared body')).toSucceed();\n\n const orchestrator: MemoryIngestOrchestrator = buildOrchestrator({\n store,\n candidates: [candidate(docKind, 'doc-b', 'shared body')]\n });\n\n expect(await orchestrator.ingestItem(item)).toSucceedAndSatisfy((result) => {\n const docB = outcomeFor(result, 'doc-b');\n expect(docB?.disposition).toBe('deduped');\n expect(docB?.resolution).toEqual({\n verdict: 'duplicate-of',\n target: target(docScope, 'doc-a')\n });\n expect(docB?.id).toBe('doc-a');\n });\n expect(await store.list({ kind: docKind })).toSucceedAndSatisfy((records) => {\n expect(records).toHaveLength(1);\n });\n });\n\n test(\"an 'entity' kind still reports duplicate-of for a SAME-entity identical body (OQ-2)\", async () => {\n const store: FileTreeMemoryStore = buildStore();\n expect(await put(store, memKind, 'turn-1', 'shared body')).toSucceed();\n\n const orchestrator: MemoryIngestOrchestrator = buildOrchestrator({\n store,\n candidates: [candidate(memKind, 'turn-1', 'shared body')]\n });\n\n expect(await orchestrator.ingestItem(item)).toSucceedAndSatisfy((result) => {\n const turn1 = outcomeFor(result, 'turn-1');\n // A genuine no-op the store would also collapse. Emitting the verdict\n // keeps it honest, and it is safe because the redirect (deliverable 3)\n // keeps the address resolvable for sibling edges.\n expect(turn1?.disposition).toBe('deduped');\n expect(turn1?.resolution).toEqual({\n verdict: 'duplicate-of',\n target: target(memScope, 'turn-1')\n });\n });\n });\n\n test(\"the reporter's literal shape: two MTM turns in ONE conversation scope with identical bodies\", async () => {\n // MtmIdentityCodec puts every turn of a conversation in the SAME scope\n // (`conversations/<id>`), differing only by idStem (`turn-<n>`). That is\n // exactly where the bug bit: same kind, same scope, different entity, and\n // a body collision was enough to collapse one turn into the other.\n const store: FileTreeMemoryStore = buildStore();\n expect(await put(store, turnKind, 'conv-1:1', 'ok, thanks')).toSucceed();\n\n const orchestrator: MemoryIngestOrchestrator = buildOrchestrator({\n store,\n candidates: [candidate(turnKind, 'conv-1:2', 'ok, thanks')]\n });\n\n expect(await orchestrator.ingestItem(item)).toSucceedAndSatisfy((result) => {\n expect(outcomeFor(result, 'conv-1:2')?.disposition).toBe('written');\n });\n expect(await store.list({ kind: turnKind })).toSucceedAndSatisfy((records) => {\n // Both turns persist. Pre-fix, turn 2 was silently swallowed.\n expect(records).toHaveLength(2);\n });\n });\n\n test('a TEMPORAL entity kind keeps distinct entities apart (scope isolation, unchanged)', async () => {\n // TemporalIdentityCodec addresses each entity to its OWN scope\n // (`events/entities/<id>`), so two distinct temporal entities were never\n // in one exact-match cohort even before this change — the scope filter\n // alone separated them. Guarding it so the entity narrowing (which is a\n // no-op within a single entity's scope, where every version shares the\n // idStem) is never mistaken for what protects temporal kinds.\n const store: FileTreeMemoryStore = buildStore();\n expect(await put(store, evtKind, 'evt-1', 'shared body')).toSucceed();\n\n const orchestrator: MemoryIngestOrchestrator = buildOrchestrator({\n store,\n candidates: [candidate(evtKind, 'evt-2', 'shared body')]\n });\n\n expect(await orchestrator.ingestItem(item)).toSucceedAndSatisfy((result) => {\n expect(outcomeFor(result, 'evt-2')?.disposition).toBe('written');\n });\n });\n\n test(\"an 'entity' kind does not match across scopes\", async () => {\n // A doc and a mem record can share a body without either seeing the other:\n // the cohort is scope-filtered before the entity narrowing applies.\n const store: FileTreeMemoryStore = buildStore();\n expect(await put(store, docKind, 'doc-a', 'shared body')).toSucceed();\n\n const orchestrator: MemoryIngestOrchestrator = buildOrchestrator({\n store,\n candidates: [candidate(memKind, 'turn-1', 'shared body')]\n });\n\n expect(await orchestrator.ingestItem(item)).toSucceedAndSatisfy((result) => {\n expect(outcomeFor(result, 'turn-1')?.disposition).toBe('written');\n });\n });\n });\n\n describe(\"the reporter's scenario end to end\", () => {\n test('a cross-id body collision on an entity kind no longer fails the whole item, and the claim is written', async () => {\n // Two live records, same kind, same scope, byte-identical bodies, different\n // entity ids — plus a sibling edge to the second. Pre-fix: turn-2 collapsed\n // to turn-1, its address vanished from `refIds`, and the edge failed\n // validation, taking the WHOLE ingest item (claim included) down with it.\n const store: FileTreeMemoryStore = buildStore();\n expect(await put(store, memKind, 'turn-1', 'shared body')).toSucceed();\n\n const orchestrator: MemoryIngestOrchestrator = buildOrchestrator({\n store,\n candidates: [candidate(memKind, 'turn-2', 'shared body'), candidate(claimKind, 'c-1', 'a claim')],\n edges: [\n {\n source: target(docScope, 'c-1'),\n edge: { type: 'supports' as LinkType, target: target(memScope, 'turn-2') }\n }\n ]\n });\n\n expect(await orchestrator.ingestItem(item)).toSucceedAndSatisfy((result) => {\n expect(outcomeFor(result, 'turn-2')?.disposition).toBe('written');\n const claim = outcomeFor(result, 'c-1');\n expect(claim?.disposition).toBe('written');\n // The claim's edge survived and still points at turn-2, which was written.\n expect(claim?.record?.envelope.links).toEqual([\n { type: 'supports', target: target(memScope, 'turn-2') }\n ]);\n });\n expect(await store.list({ kind: memKind })).toSucceedAndSatisfy((records) => {\n expect(records).toHaveLength(2);\n });\n });\n });\n\n describe('duplicate-of edge redirect (deliverable 3)', () => {\n test(\"a 'content' kind's collapse redirects a sibling edge to the collapse target\", async () => {\n // The collapse is CORRECT here — doc-b really is doc-a. The ingest must\n // still not fail: the claim's edge is redirected onto doc-a.\n const store: FileTreeMemoryStore = buildStore();\n expect(await put(store, docKind, 'doc-a', 'shared body')).toSucceed();\n\n const orchestrator: MemoryIngestOrchestrator = buildOrchestrator({\n store,\n candidates: [candidate(docKind, 'doc-b', 'shared body'), candidate(claimKind, 'c-1', 'a claim')],\n edges: [\n {\n source: target(docScope, 'c-1'),\n edge: { type: 'supports' as LinkType, target: target(docScope, 'doc-b') }\n }\n ]\n });\n\n expect(await orchestrator.ingestItem(item)).toSucceedAndSatisfy((result) => {\n expect(outcomeFor(result, 'doc-b')?.disposition).toBe('deduped');\n const claim = outcomeFor(result, 'c-1');\n expect(claim?.disposition).toBe('written');\n // Redirected from the collapsed doc-b to the record it collapsed into.\n expect(claim?.record?.envelope.links).toEqual([\n { type: 'supports', target: target(docScope, 'doc-a') }\n ]);\n });\n });\n\n test(\"an 'entity' kind's resolver-driven duplicate-of redirects a sibling edge\", async () => {\n // Layer-1 no longer collapses cross-id on an entity kind, so the\n // duplicate-of here comes from the host resolver (layer 2) — the remaining\n // way an entity-scoped candidate legitimately collapses onto another entity.\n const vectorIndex: IVectorIndex = InMemoryCosineIndex.create().orThrow();\n const store: FileTreeMemoryStore = buildStore(vectorIndex);\n expect(await put(store, memKind, 'turn-1', 'shared body')).toSucceed();\n\n const entityResolver: IEntityResolver = {\n resolve: (__candidate: ICandidateRecord, similar: ReadonlyArray<IEntityResolutionCandidate>) =>\n Promise.resolve(\n succeed({ verdict: 'duplicate-of', target: similar[0].target } as ResolutionVerdict)\n )\n };\n\n const orchestrator: MemoryIngestOrchestrator = buildOrchestrator({\n store,\n candidates: [candidate(memKind, 'turn-2', 'shared body'), candidate(claimKind, 'c-1', 'a claim')],\n edges: [\n {\n source: target(docScope, 'c-1'),\n edge: { type: 'supports' as LinkType, target: target(memScope, 'turn-2') }\n }\n ],\n entityResolver,\n vectorIndex\n });\n\n expect(await orchestrator.ingestItem(item)).toSucceedAndSatisfy((result) => {\n expect(outcomeFor(result, 'turn-2')?.disposition).toBe('deduped');\n const claim = outcomeFor(result, 'c-1');\n expect(claim?.disposition).toBe('written');\n expect(claim?.record?.envelope.links).toEqual([\n { type: 'supports', target: target(memScope, 'turn-1') }\n ]);\n });\n });\n\n test('an edge SOURCED at a collapsed candidate is still rejected loudly', async () => {\n // Sources are the records an edge is written ONTO. A collapsed candidate is\n // never written, so silently relocating the edge would attribute a link the\n // host never asked for. The loud failure is the correct outcome here.\n const store: FileTreeMemoryStore = buildStore();\n expect(await put(store, docKind, 'doc-a', 'shared body')).toSucceed();\n\n const orchestrator: MemoryIngestOrchestrator = buildOrchestrator({\n store,\n candidates: [candidate(docKind, 'doc-b', 'shared body'), candidate(claimKind, 'c-1', 'a claim')],\n edges: [\n {\n source: target(docScope, 'doc-b'),\n edge: { type: 'supports' as LinkType, target: target(docScope, 'c-1') }\n }\n ]\n });\n\n expect(await orchestrator.ingestItem(item)).toFailWith(/is not a candidate being written/i);\n });\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.test.d.ts","sourceRoot":"","sources":["../../../../src/test/unit/ingest/orchestrator.test.ts"],"names":[],"mappings":"AAKA,OAAO,oBAAoB,CAAC"}
|