@fgv/ts-agent-memory 5.1.0-36
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/.rush/temp/chunked-rush-logs/ts-agent-memory.build.chunks.jsonl +9 -0
- package/.rush/temp/f6a88bfdd66517ccb98c2c7ae1be6e6fe9e15d38.tar.log +282 -0
- package/.rush/temp/operation/build/all.log +9 -0
- package/.rush/temp/operation/build/log-chunks.jsonl +9 -0
- package/.rush/temp/operation/build/state.json +3 -0
- package/.rush/temp/shrinkwrap-deps.json +688 -0
- package/LICENSE +21 -0
- package/README.md +45 -0
- package/config/api-extractor.json +343 -0
- package/config/jest.config.json +14 -0
- package/config/rig.json +4 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/packlets/converters/bodyConverterRegistry.js +51 -0
- package/dist/packlets/converters/bodyConverterRegistry.js.map +1 -0
- package/dist/packlets/converters/envelopeConverter.js +159 -0
- package/dist/packlets/converters/envelopeConverter.js.map +1 -0
- package/dist/packlets/converters/index.js +7 -0
- package/dist/packlets/converters/index.js.map +1 -0
- package/dist/packlets/index/index.js +6 -0
- package/dist/packlets/index/index.js.map +1 -0
- package/dist/packlets/index/memoryIndex.js +170 -0
- package/dist/packlets/index/memoryIndex.js.map +1 -0
- package/dist/packlets/observe/index.js +7 -0
- package/dist/packlets/observe/index.js.map +1 -0
- package/dist/packlets/observe/memoryObservationStore.js +119 -0
- package/dist/packlets/observe/memoryObservationStore.js.map +1 -0
- package/dist/packlets/observe/observer.js +6 -0
- package/dist/packlets/observe/observer.js.map +1 -0
- package/dist/packlets/retrieve/hybridRetriever.js +135 -0
- package/dist/packlets/retrieve/hybridRetriever.js.map +1 -0
- package/dist/packlets/retrieve/index.js +12 -0
- package/dist/packlets/retrieve/index.js.map +1 -0
- package/dist/packlets/retrieve/linkTraversalRetriever.js +143 -0
- package/dist/packlets/retrieve/linkTraversalRetriever.js.map +1 -0
- package/dist/packlets/retrieve/recencyRetriever.js +33 -0
- package/dist/packlets/retrieve/recencyRetriever.js.map +1 -0
- package/dist/packlets/retrieve/retriever.js +110 -0
- package/dist/packlets/retrieve/retriever.js.map +1 -0
- package/dist/packlets/retrieve/semanticRetriever.js +86 -0
- package/dist/packlets/retrieve/semanticRetriever.js.map +1 -0
- package/dist/packlets/retrieve/structuredFilterRetriever.js +37 -0
- package/dist/packlets/retrieve/structuredFilterRetriever.js.map +1 -0
- package/dist/packlets/retrieve/tagRetriever.js +37 -0
- package/dist/packlets/retrieve/tagRetriever.js.map +1 -0
- package/dist/packlets/store/fileTreeMemoryStore.js +698 -0
- package/dist/packlets/store/fileTreeMemoryStore.js.map +1 -0
- package/dist/packlets/store/index.js +7 -0
- package/dist/packlets/store/index.js.map +1 -0
- package/dist/packlets/store/scopeEncoding.js +31 -0
- package/dist/packlets/store/scopeEncoding.js.map +1 -0
- package/dist/packlets/types/envelope.js +6 -0
- package/dist/packlets/types/envelope.js.map +1 -0
- package/dist/packlets/types/filenameSafety.js +52 -0
- package/dist/packlets/types/filenameSafety.js.map +1 -0
- package/dist/packlets/types/identityCodec.js +184 -0
- package/dist/packlets/types/identityCodec.js.map +1 -0
- package/dist/packlets/types/ids.js +67 -0
- package/dist/packlets/types/ids.js.map +1 -0
- package/dist/packlets/types/index.js +10 -0
- package/dist/packlets/types/index.js.map +1 -0
- package/dist/packlets/types/writePolicy.js +263 -0
- package/dist/packlets/types/writePolicy.js.map +1 -0
- package/dist/packlets/vector/inMemoryCosineIndex.js +150 -0
- package/dist/packlets/vector/inMemoryCosineIndex.js.map +1 -0
- package/dist/packlets/vector/index.js +7 -0
- package/dist/packlets/vector/index.js.map +1 -0
- package/dist/packlets/vector/vectorIndex.js +6 -0
- package/dist/packlets/vector/vectorIndex.js.map +1 -0
- package/dist/test/unit/converters/bodyConverterRegistry.test.js +72 -0
- package/dist/test/unit/converters/bodyConverterRegistry.test.js.map +1 -0
- package/dist/test/unit/converters/envelopeConverter.test.js +196 -0
- package/dist/test/unit/converters/envelopeConverter.test.js.map +1 -0
- package/dist/test/unit/index/memoryIndex.test.js +152 -0
- package/dist/test/unit/index/memoryIndex.test.js.map +1 -0
- package/dist/test/unit/observe/memoryObservationStore.test.js +118 -0
- package/dist/test/unit/observe/memoryObservationStore.test.js.map +1 -0
- package/dist/test/unit/retrieve/linkTraversalRetriever.test.js +182 -0
- package/dist/test/unit/retrieve/linkTraversalRetriever.test.js.map +1 -0
- package/dist/test/unit/retrieve/retrievers.test.js +506 -0
- package/dist/test/unit/retrieve/retrievers.test.js.map +1 -0
- package/dist/test/unit/store/embedOnWrite.test.js +260 -0
- package/dist/test/unit/store/embedOnWrite.test.js.map +1 -0
- package/dist/test/unit/store/fileTreeMemoryStore.test.js +647 -0
- package/dist/test/unit/store/fileTreeMemoryStore.test.js.map +1 -0
- package/dist/test/unit/store/observations.test.js +239 -0
- package/dist/test/unit/store/observations.test.js.map +1 -0
- package/dist/test/unit/store/scopeEncoding.test.js +24 -0
- package/dist/test/unit/store/scopeEncoding.test.js.map +1 -0
- package/dist/test/unit/types/identityCodec.test.js +187 -0
- package/dist/test/unit/types/identityCodec.test.js.map +1 -0
- package/dist/test/unit/types/ids.test.js +84 -0
- package/dist/test/unit/types/ids.test.js.map +1 -0
- package/dist/test/unit/types/writePolicy.test.js +241 -0
- package/dist/test/unit/types/writePolicy.test.js.map +1 -0
- package/dist/test/unit/vector/inMemoryCosineIndex.test.js +192 -0
- package/dist/test/unit/vector/inMemoryCosineIndex.test.js.map +1 -0
- package/dist/test/unit/vector/vectorIndex.test.js +42 -0
- package/dist/test/unit/vector/vectorIndex.test.js.map +1 -0
- package/dist/ts-agent-memory.d.ts +1901 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/eslint.config.js +15 -0
- package/etc/ts-agent-memory.api.md +525 -0
- package/lib/index.d.ts +8 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +28 -0
- package/lib/index.js.map +1 -0
- package/lib/packlets/converters/bodyConverterRegistry.d.ts +64 -0
- package/lib/packlets/converters/bodyConverterRegistry.d.ts.map +1 -0
- package/lib/packlets/converters/bodyConverterRegistry.js +55 -0
- package/lib/packlets/converters/bodyConverterRegistry.js.map +1 -0
- package/lib/packlets/converters/envelopeConverter.d.ts +70 -0
- package/lib/packlets/converters/envelopeConverter.d.ts.map +1 -0
- package/lib/packlets/converters/envelopeConverter.js +166 -0
- package/lib/packlets/converters/envelopeConverter.js.map +1 -0
- package/lib/packlets/converters/index.d.ts +3 -0
- package/lib/packlets/converters/index.d.ts.map +1 -0
- package/lib/packlets/converters/index.js +23 -0
- package/lib/packlets/converters/index.js.map +1 -0
- package/lib/packlets/index/index.d.ts +2 -0
- package/lib/packlets/index/index.d.ts.map +1 -0
- package/lib/packlets/index/index.js +22 -0
- package/lib/packlets/index/index.js.map +1 -0
- package/lib/packlets/index/memoryIndex.d.ts +127 -0
- package/lib/packlets/index/memoryIndex.d.ts.map +1 -0
- package/lib/packlets/index/memoryIndex.js +174 -0
- package/lib/packlets/index/memoryIndex.js.map +1 -0
- package/lib/packlets/observe/index.d.ts +3 -0
- package/lib/packlets/observe/index.d.ts.map +1 -0
- package/lib/packlets/observe/index.js +23 -0
- package/lib/packlets/observe/index.js.map +1 -0
- package/lib/packlets/observe/memoryObservationStore.d.ts +91 -0
- package/lib/packlets/observe/memoryObservationStore.d.ts.map +1 -0
- package/lib/packlets/observe/memoryObservationStore.js +123 -0
- package/lib/packlets/observe/memoryObservationStore.js.map +1 -0
- package/lib/packlets/observe/observer.d.ts +110 -0
- package/lib/packlets/observe/observer.d.ts.map +1 -0
- package/lib/packlets/observe/observer.js +7 -0
- package/lib/packlets/observe/observer.js.map +1 -0
- package/lib/packlets/retrieve/hybridRetriever.d.ts +79 -0
- package/lib/packlets/retrieve/hybridRetriever.d.ts.map +1 -0
- package/lib/packlets/retrieve/hybridRetriever.js +140 -0
- package/lib/packlets/retrieve/hybridRetriever.js.map +1 -0
- package/lib/packlets/retrieve/index.d.ts +8 -0
- package/lib/packlets/retrieve/index.d.ts.map +1 -0
- package/lib/packlets/retrieve/index.js +28 -0
- package/lib/packlets/retrieve/index.js.map +1 -0
- package/lib/packlets/retrieve/linkTraversalRetriever.d.ts +61 -0
- package/lib/packlets/retrieve/linkTraversalRetriever.d.ts.map +1 -0
- package/lib/packlets/retrieve/linkTraversalRetriever.js +147 -0
- package/lib/packlets/retrieve/linkTraversalRetriever.js.map +1 -0
- package/lib/packlets/retrieve/recencyRetriever.d.ts +21 -0
- package/lib/packlets/retrieve/recencyRetriever.d.ts.map +1 -0
- package/lib/packlets/retrieve/recencyRetriever.js +37 -0
- package/lib/packlets/retrieve/recencyRetriever.js.map +1 -0
- package/lib/packlets/retrieve/retriever.d.ts +133 -0
- package/lib/packlets/retrieve/retriever.d.ts.map +1 -0
- package/lib/packlets/retrieve/retriever.js +119 -0
- package/lib/packlets/retrieve/retriever.js.map +1 -0
- package/lib/packlets/retrieve/semanticRetriever.d.ts +69 -0
- package/lib/packlets/retrieve/semanticRetriever.d.ts.map +1 -0
- package/lib/packlets/retrieve/semanticRetriever.js +90 -0
- package/lib/packlets/retrieve/semanticRetriever.js.map +1 -0
- package/lib/packlets/retrieve/structuredFilterRetriever.d.ts +22 -0
- package/lib/packlets/retrieve/structuredFilterRetriever.d.ts.map +1 -0
- package/lib/packlets/retrieve/structuredFilterRetriever.js +41 -0
- package/lib/packlets/retrieve/structuredFilterRetriever.js.map +1 -0
- package/lib/packlets/retrieve/tagRetriever.d.ts +22 -0
- package/lib/packlets/retrieve/tagRetriever.d.ts.map +1 -0
- package/lib/packlets/retrieve/tagRetriever.js +41 -0
- package/lib/packlets/retrieve/tagRetriever.js.map +1 -0
- package/lib/packlets/store/fileTreeMemoryStore.d.ts +327 -0
- package/lib/packlets/store/fileTreeMemoryStore.d.ts.map +1 -0
- package/lib/packlets/store/fileTreeMemoryStore.js +702 -0
- package/lib/packlets/store/fileTreeMemoryStore.js.map +1 -0
- package/lib/packlets/store/index.d.ts +3 -0
- package/lib/packlets/store/index.d.ts.map +1 -0
- package/lib/packlets/store/index.js +23 -0
- package/lib/packlets/store/index.js.map +1 -0
- package/lib/packlets/store/scopeEncoding.d.ts +19 -0
- package/lib/packlets/store/scopeEncoding.d.ts.map +1 -0
- package/lib/packlets/store/scopeEncoding.js +34 -0
- package/lib/packlets/store/scopeEncoding.js.map +1 -0
- package/lib/packlets/types/envelope.d.ts +119 -0
- package/lib/packlets/types/envelope.d.ts.map +1 -0
- package/lib/packlets/types/envelope.js +7 -0
- package/lib/packlets/types/envelope.js.map +1 -0
- package/lib/packlets/types/filenameSafety.d.ts +16 -0
- package/lib/packlets/types/filenameSafety.d.ts.map +1 -0
- package/lib/packlets/types/filenameSafety.js +55 -0
- package/lib/packlets/types/filenameSafety.js.map +1 -0
- package/lib/packlets/types/identityCodec.d.ts +136 -0
- package/lib/packlets/types/identityCodec.d.ts.map +1 -0
- package/lib/packlets/types/identityCodec.js +190 -0
- package/lib/packlets/types/identityCodec.js.map +1 -0
- package/lib/packlets/types/ids.d.ts +55 -0
- package/lib/packlets/types/ids.d.ts.map +1 -0
- package/lib/packlets/types/ids.js +70 -0
- package/lib/packlets/types/ids.js.map +1 -0
- package/lib/packlets/types/index.d.ts +6 -0
- package/lib/packlets/types/index.d.ts.map +1 -0
- package/lib/packlets/types/index.js +26 -0
- package/lib/packlets/types/index.js.map +1 -0
- package/lib/packlets/types/writePolicy.d.ts +213 -0
- package/lib/packlets/types/writePolicy.d.ts.map +1 -0
- package/lib/packlets/types/writePolicy.js +268 -0
- package/lib/packlets/types/writePolicy.js.map +1 -0
- package/lib/packlets/vector/inMemoryCosineIndex.d.ts +69 -0
- package/lib/packlets/vector/inMemoryCosineIndex.d.ts.map +1 -0
- package/lib/packlets/vector/inMemoryCosineIndex.js +154 -0
- package/lib/packlets/vector/inMemoryCosineIndex.js.map +1 -0
- package/lib/packlets/vector/index.d.ts +3 -0
- package/lib/packlets/vector/index.d.ts.map +1 -0
- package/lib/packlets/vector/index.js +23 -0
- package/lib/packlets/vector/index.js.map +1 -0
- package/lib/packlets/vector/vectorIndex.d.ts +68 -0
- package/lib/packlets/vector/vectorIndex.d.ts.map +1 -0
- package/lib/packlets/vector/vectorIndex.js +7 -0
- package/lib/packlets/vector/vectorIndex.js.map +1 -0
- package/lib/test/unit/converters/bodyConverterRegistry.test.d.ts +2 -0
- package/lib/test/unit/converters/bodyConverterRegistry.test.d.ts.map +1 -0
- package/lib/test/unit/converters/bodyConverterRegistry.test.js +74 -0
- package/lib/test/unit/converters/bodyConverterRegistry.test.js.map +1 -0
- package/lib/test/unit/converters/envelopeConverter.test.d.ts +2 -0
- package/lib/test/unit/converters/envelopeConverter.test.d.ts.map +1 -0
- package/lib/test/unit/converters/envelopeConverter.test.js +198 -0
- package/lib/test/unit/converters/envelopeConverter.test.js.map +1 -0
- package/lib/test/unit/index/memoryIndex.test.d.ts +2 -0
- package/lib/test/unit/index/memoryIndex.test.d.ts.map +1 -0
- package/lib/test/unit/index/memoryIndex.test.js +154 -0
- package/lib/test/unit/index/memoryIndex.test.js.map +1 -0
- package/lib/test/unit/observe/memoryObservationStore.test.d.ts +2 -0
- package/lib/test/unit/observe/memoryObservationStore.test.d.ts.map +1 -0
- package/lib/test/unit/observe/memoryObservationStore.test.js +120 -0
- package/lib/test/unit/observe/memoryObservationStore.test.js.map +1 -0
- package/lib/test/unit/retrieve/linkTraversalRetriever.test.d.ts +2 -0
- package/lib/test/unit/retrieve/linkTraversalRetriever.test.d.ts.map +1 -0
- package/lib/test/unit/retrieve/linkTraversalRetriever.test.js +184 -0
- package/lib/test/unit/retrieve/linkTraversalRetriever.test.js.map +1 -0
- package/lib/test/unit/retrieve/retrievers.test.d.ts +2 -0
- package/lib/test/unit/retrieve/retrievers.test.d.ts.map +1 -0
- package/lib/test/unit/retrieve/retrievers.test.js +508 -0
- package/lib/test/unit/retrieve/retrievers.test.js.map +1 -0
- package/lib/test/unit/store/embedOnWrite.test.d.ts +2 -0
- package/lib/test/unit/store/embedOnWrite.test.d.ts.map +1 -0
- package/lib/test/unit/store/embedOnWrite.test.js +262 -0
- package/lib/test/unit/store/embedOnWrite.test.js.map +1 -0
- package/lib/test/unit/store/fileTreeMemoryStore.test.d.ts +2 -0
- package/lib/test/unit/store/fileTreeMemoryStore.test.d.ts.map +1 -0
- package/lib/test/unit/store/fileTreeMemoryStore.test.js +649 -0
- package/lib/test/unit/store/fileTreeMemoryStore.test.js.map +1 -0
- package/lib/test/unit/store/observations.test.d.ts +2 -0
- package/lib/test/unit/store/observations.test.d.ts.map +1 -0
- package/lib/test/unit/store/observations.test.js +241 -0
- package/lib/test/unit/store/observations.test.js.map +1 -0
- package/lib/test/unit/store/scopeEncoding.test.d.ts +2 -0
- package/lib/test/unit/store/scopeEncoding.test.d.ts.map +1 -0
- package/lib/test/unit/store/scopeEncoding.test.js +26 -0
- package/lib/test/unit/store/scopeEncoding.test.js.map +1 -0
- package/lib/test/unit/types/identityCodec.test.d.ts +2 -0
- package/lib/test/unit/types/identityCodec.test.d.ts.map +1 -0
- package/lib/test/unit/types/identityCodec.test.js +189 -0
- package/lib/test/unit/types/identityCodec.test.js.map +1 -0
- package/lib/test/unit/types/ids.test.d.ts +2 -0
- package/lib/test/unit/types/ids.test.d.ts.map +1 -0
- package/lib/test/unit/types/ids.test.js +86 -0
- package/lib/test/unit/types/ids.test.js.map +1 -0
- package/lib/test/unit/types/writePolicy.test.d.ts +2 -0
- package/lib/test/unit/types/writePolicy.test.d.ts.map +1 -0
- package/lib/test/unit/types/writePolicy.test.js +243 -0
- package/lib/test/unit/types/writePolicy.test.js.map +1 -0
- package/lib/test/unit/vector/inMemoryCosineIndex.test.d.ts +2 -0
- package/lib/test/unit/vector/inMemoryCosineIndex.test.d.ts.map +1 -0
- package/lib/test/unit/vector/inMemoryCosineIndex.test.js +194 -0
- package/lib/test/unit/vector/inMemoryCosineIndex.test.js.map +1 -0
- package/lib/test/unit/vector/vectorIndex.test.d.ts +2 -0
- package/lib/test/unit/vector/vectorIndex.test.d.ts.map +1 -0
- package/lib/test/unit/vector/vectorIndex.test.js +44 -0
- package/lib/test/unit/vector/vectorIndex.test.js.map +1 -0
- package/package.json +81 -0
- package/rush-logs/ts-agent-memory.build.cache.log +3 -0
- package/rush-logs/ts-agent-memory.build.log +9 -0
- package/src/index.ts +12 -0
- package/src/packlets/converters/bodyConverterRegistry.ts +105 -0
- package/src/packlets/converters/envelopeConverter.ts +210 -0
- package/src/packlets/converters/index.ts +7 -0
- package/src/packlets/index/index.ts +6 -0
- package/src/packlets/index/memoryIndex.ts +268 -0
- package/src/packlets/observe/index.ts +7 -0
- package/src/packlets/observe/memoryObservationStore.ts +153 -0
- package/src/packlets/observe/observer.ts +119 -0
- package/src/packlets/retrieve/hybridRetriever.ts +181 -0
- package/src/packlets/retrieve/index.ts +12 -0
- package/src/packlets/retrieve/linkTraversalRetriever.ts +169 -0
- package/src/packlets/retrieve/recencyRetriever.ts +54 -0
- package/src/packlets/retrieve/retriever.ts +207 -0
- package/src/packlets/retrieve/semanticRetriever.ts +147 -0
- package/src/packlets/retrieve/structuredFilterRetriever.ts +58 -0
- package/src/packlets/retrieve/tagRetriever.ts +58 -0
- package/src/packlets/store/fileTreeMemoryStore.ts +1073 -0
- package/src/packlets/store/index.ts +7 -0
- package/src/packlets/store/scopeEncoding.ts +36 -0
- package/src/packlets/types/envelope.ts +138 -0
- package/src/packlets/types/filenameSafety.ts +57 -0
- package/src/packlets/types/identityCodec.ts +263 -0
- package/src/packlets/types/ids.ts +124 -0
- package/src/packlets/types/index.ts +10 -0
- package/src/packlets/types/writePolicy.ts +447 -0
- package/src/packlets/vector/inMemoryCosineIndex.ts +173 -0
- package/src/packlets/vector/index.ts +7 -0
- package/src/packlets/vector/vectorIndex.ts +78 -0
- package/src/test/unit/converters/bodyConverterRegistry.test.ts +89 -0
- package/src/test/unit/converters/envelopeConverter.test.ts +261 -0
- package/src/test/unit/index/memoryIndex.test.ts +187 -0
- package/src/test/unit/observe/memoryObservationStore.test.ts +158 -0
- package/src/test/unit/retrieve/linkTraversalRetriever.test.ts +230 -0
- package/src/test/unit/retrieve/retrievers.test.ts +662 -0
- package/src/test/unit/store/embedOnWrite.test.ts +346 -0
- package/src/test/unit/store/fileTreeMemoryStore.test.ts +875 -0
- package/src/test/unit/store/observations.test.ts +290 -0
- package/src/test/unit/store/scopeEncoding.test.ts +37 -0
- package/src/test/unit/types/identityCodec.test.ts +266 -0
- package/src/test/unit/types/ids.test.ts +94 -0
- package/src/test/unit/types/writePolicy.test.ts +325 -0
- package/src/test/unit/vector/inMemoryCosineIndex.test.ts +242 -0
- package/src/test/unit/vector/vectorIndex.test.ts +48 -0
- package/temp/build/lint/_eslint-5eVG3S6w.json +182 -0
- package/temp/build/typescript/ts_8nwakTlr.json +1 -0
- package/temp/ts-agent-memory.api.json +12438 -0
- package/temp/ts-agent-memory.api.md +525 -0
- package/tsconfig.json +8 -0
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
import { Logging, Result } from '@fgv/ts-utils';
|
|
2
|
+
import { FileTree } from '@fgv/ts-json-base';
|
|
3
|
+
import { EntityId, IIdentityCodec, IMemoryRecord, IWritePolicy, Kind, MemoryId, MemoryScopeKey, Tag } from '../types';
|
|
4
|
+
import { IBodyConverterRegistry as IRegistry } from '../converters';
|
|
5
|
+
import { IMemoryObserver } from '../observe';
|
|
6
|
+
import { IVectorIndex, MemoryEmbedder } from '../vector';
|
|
7
|
+
/**
|
|
8
|
+
* Filter for {@link IMemoryStore.list}. All present fields are ANDed together.
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export interface IMemoryStoreListFilter {
|
|
12
|
+
/** Restrict to records in this scope. */
|
|
13
|
+
readonly scope?: MemoryScopeKey;
|
|
14
|
+
/** Restrict to records of this kind. */
|
|
15
|
+
readonly kind?: Kind;
|
|
16
|
+
/** Restrict to records carrying this tag (exact match). */
|
|
17
|
+
readonly tag?: Tag;
|
|
18
|
+
/**
|
|
19
|
+
* For temporal kinds: return only records valid at this epoch ms. No-op in
|
|
20
|
+
* B1 (no temporal kinds wired).
|
|
21
|
+
*/
|
|
22
|
+
readonly asOf?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The writable, FileTree-backed, content-hash-deduped memory store.
|
|
26
|
+
* @public
|
|
27
|
+
*/
|
|
28
|
+
export interface IMemoryStore {
|
|
29
|
+
/**
|
|
30
|
+
* Keyed read by entity id. Resolves `entityId` to a storage address via the
|
|
31
|
+
* registered {@link IIdentityCodec} for `kind`. Returns `undefined` when no
|
|
32
|
+
* record exists.
|
|
33
|
+
*/
|
|
34
|
+
get(kind: Kind, entityId: EntityId): Promise<Result<IMemoryRecord<unknown> | undefined>>;
|
|
35
|
+
/**
|
|
36
|
+
* Direct read by `(scope, MemoryId)`. Returns `undefined` when not found.
|
|
37
|
+
*/
|
|
38
|
+
getById(scope: MemoryScopeKey, id: MemoryId): Promise<Result<IMemoryRecord<unknown> | undefined>>;
|
|
39
|
+
/**
|
|
40
|
+
* List records, filtered in-memory over the derived index.
|
|
41
|
+
*/
|
|
42
|
+
list(filter?: IMemoryStoreListFilter): Promise<Result<ReadonlyArray<IMemoryRecord<unknown>>>>;
|
|
43
|
+
/**
|
|
44
|
+
* Write a record. Validates the body, computes a content hash, deduplicates
|
|
45
|
+
* (scope-wide, before policy), applies the kind's {@link IWritePolicy}, stamps
|
|
46
|
+
* transaction-time metadata (`created` / `updated` / `seq` / `contentHash`),
|
|
47
|
+
* writes the file, and patches the index. Returns the written record — or the
|
|
48
|
+
* existing record unchanged on a dedup no-op.
|
|
49
|
+
*/
|
|
50
|
+
put(record: IMemoryRecord<unknown>): Promise<Result<IMemoryRecord<unknown>>>;
|
|
51
|
+
/**
|
|
52
|
+
* Delete a record by `(kind, entityId)`. Non-temporal kinds physically delete
|
|
53
|
+
* the file. Returns the {@link MemoryId} of the deleted record.
|
|
54
|
+
*/
|
|
55
|
+
delete(kind: Kind, entityId: EntityId): Promise<Result<MemoryId>>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Parameters for {@link FileTreeMemoryStore.create}.
|
|
59
|
+
* @public
|
|
60
|
+
*/
|
|
61
|
+
export interface IFileTreeMemoryStoreCreateParams {
|
|
62
|
+
/** Root directory under which scope-encoded sub-trees live. Must be mutable. */
|
|
63
|
+
readonly root: FileTree.IMutableFileTreeDirectoryItem;
|
|
64
|
+
/** Per-kind body converter registry. Gates every body on write and read. */
|
|
65
|
+
readonly registry: IRegistry;
|
|
66
|
+
/** Per-kind write policies. Kinds without an entry use a default LWW policy. */
|
|
67
|
+
readonly writePolicies?: ReadonlyMap<Kind, IWritePolicy>;
|
|
68
|
+
/** Per-kind identity codecs. */
|
|
69
|
+
readonly codecs?: ReadonlyMap<Kind, IIdentityCodec>;
|
|
70
|
+
/** Default codec for kinds without an explicit entry. */
|
|
71
|
+
readonly defaultCodec?: IIdentityCodec;
|
|
72
|
+
/** Scope encoding. Defaults to {@link defaultMemoryScopeEncoding}. */
|
|
73
|
+
readonly scopeEncoding?: (scope: MemoryScopeKey) => Result<string>;
|
|
74
|
+
/**
|
|
75
|
+
* Transaction-time clock. Defaults to `Date.now`. Injectable so tests can
|
|
76
|
+
* make `created` / `updated` deterministic. Also stamps observation
|
|
77
|
+
* `timestamp`s.
|
|
78
|
+
*/
|
|
79
|
+
readonly clock?: () => number;
|
|
80
|
+
/**
|
|
81
|
+
* Optional observers fired once per public `get` / `put` / `delete` call.
|
|
82
|
+
* Purely additive — when absent, no observation records are produced and the
|
|
83
|
+
* store behaves exactly as it did without this parameter. Observer errors
|
|
84
|
+
* never affect the store operation (swallowed, logged to {@link
|
|
85
|
+
* IFileTreeMemoryStoreCreateParams.logger | logger} at `warn`).
|
|
86
|
+
*/
|
|
87
|
+
readonly observers?: ReadonlyArray<IMemoryObserver>;
|
|
88
|
+
/**
|
|
89
|
+
* Diagnostic logger for swallowed observer failures. Defaults to a
|
|
90
|
+
* `Logging.NoOpLogger`.
|
|
91
|
+
*/
|
|
92
|
+
readonly logger?: Logging.ILogger;
|
|
93
|
+
/**
|
|
94
|
+
* Optional vector index for semantic recall. Wired together with
|
|
95
|
+
* {@link IFileTreeMemoryStoreCreateParams.embed | embed}: when both are present
|
|
96
|
+
* the store embeds each written record and maintains the index on
|
|
97
|
+
* `put` / `delete` / cap-cull eviction. Absent (or `embed` absent) → no
|
|
98
|
+
* embedding work happens and the store behaves exactly as it does without this
|
|
99
|
+
* parameter (the additive, zero-overhead-when-unwired default — mirrors the
|
|
100
|
+
* observer hook).
|
|
101
|
+
*/
|
|
102
|
+
readonly vectorIndex?: IVectorIndex;
|
|
103
|
+
/**
|
|
104
|
+
* Optional embedder applied to each record on write, wired together with
|
|
105
|
+
* {@link IFileTreeMemoryStoreCreateParams.vectorIndex | vectorIndex}. The
|
|
106
|
+
* consumer supplies it (e.g. `callProviderEmbedding` or in-process
|
|
107
|
+
* transformers); the store never calls an embedding provider directly, so the
|
|
108
|
+
* core stays embedder-agnostic. Embedding/index maintenance is **best-effort**:
|
|
109
|
+
* a failed (or throwing) `embed` / `add` / `remove` is logged at `warn` via
|
|
110
|
+
* {@link IFileTreeMemoryStoreCreateParams.logger | logger} and the record
|
|
111
|
+
* operation still succeeds — the vector index is a derived view that a later
|
|
112
|
+
* `rebuild` reconciles, so a vector failure never fails an authoritative write.
|
|
113
|
+
*/
|
|
114
|
+
readonly embed?: MemoryEmbedder;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Flat-layout, FileTree-backed {@link IMemoryStore}. The FileTree is the source
|
|
118
|
+
* of truth; the {@link IMemoryIndex} is a derived in-memory view patched on
|
|
119
|
+
* every write. Concurrent writes are serialized through a per-instance async
|
|
120
|
+
* write-lock so the index and the on-disk files never interleave.
|
|
121
|
+
*
|
|
122
|
+
* @remarks
|
|
123
|
+
* B1 supports flat (non-versioned) layout only and string (markdown) bodies.
|
|
124
|
+
* A codec reporting `isVersioned: true`, or a non-string body, fails loudly —
|
|
125
|
+
* the versioned/temporal write path is a fast-follow.
|
|
126
|
+
* @public
|
|
127
|
+
*/
|
|
128
|
+
export declare class FileTreeMemoryStore implements IMemoryStore {
|
|
129
|
+
private readonly _root;
|
|
130
|
+
private readonly _registry;
|
|
131
|
+
private readonly _writePolicies;
|
|
132
|
+
private readonly _codecs;
|
|
133
|
+
private readonly _defaultCodec;
|
|
134
|
+
private readonly _defaultPolicy;
|
|
135
|
+
private readonly _scopeEncoding;
|
|
136
|
+
private readonly _clock;
|
|
137
|
+
private readonly _index;
|
|
138
|
+
private readonly _hasher;
|
|
139
|
+
private readonly _observers;
|
|
140
|
+
private readonly _logger;
|
|
141
|
+
private readonly _vectorIndex;
|
|
142
|
+
private readonly _embed;
|
|
143
|
+
/** Monotonic write counter; incremented inside the write-lock on each put. */
|
|
144
|
+
private _seq;
|
|
145
|
+
/**
|
|
146
|
+
* Monotonic observation-sequence counter. A distinct authority from `_seq`
|
|
147
|
+
* (the envelope write counter): it numbers the audit stream so a single
|
|
148
|
+
* {@link MemoryObservationStore} fed by this store sees strictly increasing
|
|
149
|
+
* `seq`, satisfying the ring buffer's cursor contract.
|
|
150
|
+
*/
|
|
151
|
+
private _observationSeq;
|
|
152
|
+
/** Tail of the write-lock promise chain that serializes mutating ops. */
|
|
153
|
+
private _writeTail;
|
|
154
|
+
/**
|
|
155
|
+
* The record-level mutable-field vocabulary: maps a declared mutable field
|
|
156
|
+
* name to its canonical location on a record. Used to project an incoming
|
|
157
|
+
* record into a merge-patch on update. B1 ships the knowledge-LWW surface
|
|
158
|
+
* (body + envelope metadata); body-internal mutable fields (Phase-C cap-cull)
|
|
159
|
+
* extend this map.
|
|
160
|
+
*/
|
|
161
|
+
private static readonly _mutableFieldAccessors;
|
|
162
|
+
private constructor();
|
|
163
|
+
/**
|
|
164
|
+
* Family-convention factory. Builds the derived index and a default LWW
|
|
165
|
+
* policy, then performs an initial FileTree walk so an existing vault is
|
|
166
|
+
* indexed (and the `seq` counter resumes past the highest persisted `seq`).
|
|
167
|
+
*/
|
|
168
|
+
static create(params: IFileTreeMemoryStoreCreateParams): Result<FileTreeMemoryStore>;
|
|
169
|
+
/** {@inheritDoc IMemoryStore.get} */
|
|
170
|
+
get(kind: Kind, entityId: EntityId): Promise<Result<IMemoryRecord<unknown> | undefined>>;
|
|
171
|
+
/** {@inheritDoc IMemoryStore.getById} */
|
|
172
|
+
getById(scope: MemoryScopeKey, id: MemoryId): Promise<Result<IMemoryRecord<unknown> | undefined>>;
|
|
173
|
+
/** {@inheritDoc IMemoryStore.list} */
|
|
174
|
+
list(filter?: IMemoryStoreListFilter): Promise<Result<ReadonlyArray<IMemoryRecord<unknown>>>>;
|
|
175
|
+
/** {@inheritDoc IMemoryStore.put} */
|
|
176
|
+
put(record: IMemoryRecord<unknown>): Promise<Result<IMemoryRecord<unknown>>>;
|
|
177
|
+
/** {@inheritDoc IMemoryStore.delete} */
|
|
178
|
+
delete(kind: Kind, entityId: EntityId): Promise<Result<MemoryId>>;
|
|
179
|
+
/**
|
|
180
|
+
* Serialize a mutating task behind the write-lock. Tasks run in submission
|
|
181
|
+
* order; a failed task does not break the chain for subsequent ones.
|
|
182
|
+
*/
|
|
183
|
+
private _enqueue;
|
|
184
|
+
/**
|
|
185
|
+
* Build and fan out one observation record for a completed op. A no-op when no
|
|
186
|
+
* observers are wired (the additive-default path pays nothing). The store is
|
|
187
|
+
* the seq authority — it mints `seq` / `timestamp` so every observer sees the
|
|
188
|
+
* same record. The scope is resolved best-effort via the codec.
|
|
189
|
+
*/
|
|
190
|
+
private _fireObservation;
|
|
191
|
+
/** Invoke one observer, swallowing any failure or throw (logged at `warn`). */
|
|
192
|
+
private _safeObserve;
|
|
193
|
+
/**
|
|
194
|
+
* Log a swallowed-issue warning (observer failure or best-effort vector
|
|
195
|
+
* maintenance), tolerating a logger that itself throws — diagnostic logging
|
|
196
|
+
* must never make a store op reject.
|
|
197
|
+
*/
|
|
198
|
+
private _warnSwallowed;
|
|
199
|
+
/** Resolve a scope for an observation, best-effort (undefined when unresolvable). */
|
|
200
|
+
private _scopeBestEffort;
|
|
201
|
+
private _putLocked;
|
|
202
|
+
/**
|
|
203
|
+
* Run dedup → policy → stamp → embed → write for a resolved address and content
|
|
204
|
+
* hash. Async because the embed-on-write hook (when wired) does a network call
|
|
205
|
+
* or in-process inference; the whole chain runs inside the write-lock so the
|
|
206
|
+
* vector index, the on-disk file, and the derived index never interleave.
|
|
207
|
+
*/
|
|
208
|
+
private _writeResolved;
|
|
209
|
+
/**
|
|
210
|
+
* Build → embed → persist → evict for an admitted write.
|
|
211
|
+
*
|
|
212
|
+
* The durable record store is authoritative; the vector index is a **derived,
|
|
213
|
+
* rebuildable** view, so vector maintenance is **best-effort** — a failed embed
|
|
214
|
+
* or `add` is logged and the durable write still succeeds (the index can be
|
|
215
|
+
* rebuilt via {@link InMemoryCosineIndex.rebuild}). Only genuine record-store
|
|
216
|
+
* failures (body/codec/policy, persist, file eviction) fail the `put`.
|
|
217
|
+
*
|
|
218
|
+
* Ordering: the embed + `add` run immediately before the single `_persist` so
|
|
219
|
+
* the index-returned `embeddingRef` lands in one durable write (a post-persist
|
|
220
|
+
* stamp would need a second write whose failure path is effectively untestable).
|
|
221
|
+
* Build and persist the replacement BEFORE evicting the cull-oldest cohort, so a
|
|
222
|
+
* later eviction failure never loses data with nothing written in its place.
|
|
223
|
+
*/
|
|
224
|
+
private _admitWrite;
|
|
225
|
+
/**
|
|
226
|
+
* Best-effort embed-on-write. When a vector index AND an embedder are wired,
|
|
227
|
+
* embeds the built record, `add`s the vector (replace semantics handle a same-id
|
|
228
|
+
* re-embed — no explicit remove), and stamps the returned `embeddingRef`. A
|
|
229
|
+
* failure (returned `fail` OR a thrown/rejected hook) is logged and the
|
|
230
|
+
* unembedded record is returned unchanged — the put still persists, and the
|
|
231
|
+
* derived index is reconciled by a later `rebuild`. A pass-through no-op when
|
|
232
|
+
* unwired (byte-identical record).
|
|
233
|
+
*
|
|
234
|
+
* Always succeeds (`Result` is the chain's shape, never a vector-induced
|
|
235
|
+
* failure).
|
|
236
|
+
*/
|
|
237
|
+
private _embedOnWrite;
|
|
238
|
+
/**
|
|
239
|
+
* Evict the records named by a `cull-oldest` decision, best-effort. Runs only
|
|
240
|
+
* after the authoritative `_persist`, so a failed eviction is logged (never
|
|
241
|
+
* fatal) and the cap self-corrects on the next admission. Returns the ids that
|
|
242
|
+
* were actually evicted (so observations / vector pruning cover only those).
|
|
243
|
+
* `accept` / `reject` decisions evict nothing.
|
|
244
|
+
*/
|
|
245
|
+
private _applyEvictions;
|
|
246
|
+
/** Best-effort vector removal for each evicted record (never fails the put). */
|
|
247
|
+
private _removeEvictedVectors;
|
|
248
|
+
/**
|
|
249
|
+
* Run a consumer-supplied vector hook, normalizing a thrown/rejected hook into a
|
|
250
|
+
* `Failure` and logging any failure at `warn`. Best-effort: the caller proceeds
|
|
251
|
+
* regardless, since the index is rebuildable.
|
|
252
|
+
*/
|
|
253
|
+
private _tryVectorOp;
|
|
254
|
+
/**
|
|
255
|
+
* Best-effort vector removal. A no-op unless the full vector lifecycle is wired
|
|
256
|
+
* (both an index AND an embedder), so an unwired store does no vector work and
|
|
257
|
+
* behaves byte-identically. Failures are logged, never surfaced — a committed
|
|
258
|
+
* delete/eviction must not fail because a derived index could not be pruned.
|
|
259
|
+
*/
|
|
260
|
+
private _removeVectorBestEffort;
|
|
261
|
+
/**
|
|
262
|
+
* Build the record to persist. On a first write the incoming envelope is the
|
|
263
|
+
* base (final content equals the incoming content, so the dedup `hash` is
|
|
264
|
+
* reused). On an update the incoming record's mutable fields are projected into
|
|
265
|
+
* a merge-patch and the policy's `applyUpdate` merges them over the existing
|
|
266
|
+
* record (preserving `created`); the persisted body and `contentHash` are then
|
|
267
|
+
* taken from the policy's actual output, so a body-transforming policy is never
|
|
268
|
+
* bypassed and the stored hash always matches the stored `{ kind, body, links }`.
|
|
269
|
+
* The store stamps the transaction-time metadata it owns
|
|
270
|
+
* (`created` / `updated` / `seq` / `contentHash`).
|
|
271
|
+
*/
|
|
272
|
+
private _buildRecord;
|
|
273
|
+
/** Serialize and write a fully-stamped record, then patch the index. */
|
|
274
|
+
private _persist;
|
|
275
|
+
private _deleteLocked;
|
|
276
|
+
/** Evict (physically delete) a single record file by id, patching the index. */
|
|
277
|
+
private _evict;
|
|
278
|
+
/** Project the incoming record's mutable fields into a merge-patch. */
|
|
279
|
+
private _projectMutablePatch;
|
|
280
|
+
/**
|
|
281
|
+
* The admission cohort for a write: every indexed record in `scope` of `kind`
|
|
282
|
+
* except the one at `idStem` (the record being written or updated). This is
|
|
283
|
+
* the set a per-kind cap (e.g. {@link MemoryCapCullPolicy}) counts against, so
|
|
284
|
+
* a bounded-ring policy can keep a per-scope/per-kind family within
|
|
285
|
+
* `maxRecords`. Excluding the target id makes the post-write count uniform
|
|
286
|
+
* across first-writes and updates.
|
|
287
|
+
*/
|
|
288
|
+
private _admissionCohort;
|
|
289
|
+
/** Find a record in `scope` whose `contentHash` equals `hash`, if any. */
|
|
290
|
+
private _findByContentHash;
|
|
291
|
+
private _contentHash;
|
|
292
|
+
private _codecFor;
|
|
293
|
+
private _policyFor;
|
|
294
|
+
/**
|
|
295
|
+
* Read and validate the record at `<scope>/<idStem>.md`, returning `undefined`
|
|
296
|
+
* when the scope directory or file is absent. Verifies the on-disk id ↔
|
|
297
|
+
* filename round-trip on every load.
|
|
298
|
+
*/
|
|
299
|
+
private _readRecord;
|
|
300
|
+
/** Enforce `envelope.id === filename stem` and the codec round-trip on load. */
|
|
301
|
+
private _verifyLoaded;
|
|
302
|
+
/**
|
|
303
|
+
* Resolve the directory for a scope, returning `undefined` when it does not
|
|
304
|
+
* exist. Navigation only — does not create. Folds the path segments through
|
|
305
|
+
* `getChildren` so an absent segment short-circuits to `undefined`.
|
|
306
|
+
*/
|
|
307
|
+
private _resolveScopeDir;
|
|
308
|
+
/** Ensure the scope directory exists, creating segments as needed. */
|
|
309
|
+
private _ensureScopeDir;
|
|
310
|
+
/** Write (create or overwrite) `<scope>/<idStem>.md` with `raw`. */
|
|
311
|
+
private _writeFile;
|
|
312
|
+
/**
|
|
313
|
+
* Physically delete `<scope>/<idStem>.md`. The scope-missing and file-missing
|
|
314
|
+
* guards are unreachable through the callers (`delete` / `_evict` both read the
|
|
315
|
+
* record first, so the directory and file exist) but are kept so a future
|
|
316
|
+
* direct caller degrades loudly rather than silently.
|
|
317
|
+
*/
|
|
318
|
+
private _deleteFile;
|
|
319
|
+
/**
|
|
320
|
+
* Walk the FileTree once and rebuild the index. Also resumes the `seq`
|
|
321
|
+
* counter past the highest persisted `seq` so new writes stay monotonic.
|
|
322
|
+
*/
|
|
323
|
+
private _initialIndex;
|
|
324
|
+
/** Recursively collect every `.md` record under `dir` (scope = path segments). */
|
|
325
|
+
private _collectEntries;
|
|
326
|
+
}
|
|
327
|
+
//# sourceMappingURL=fileTreeMemoryStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileTreeMemoryStore.d.ts","sourceRoot":"","sources":["../../../src/packlets/store/fileTreeMemoryStore.ts"],"names":[],"mappings":"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"}
|