@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.
Files changed (376) hide show
  1. package/dist/packlets/ingest/orchestrator.js +11 -1
  2. package/dist/packlets/ingest/orchestrator.js.map +1 -1
  3. package/dist/packlets/observe/memoryObservationStore.js +6 -0
  4. package/dist/packlets/observe/memoryObservationStore.js.map +1 -1
  5. package/dist/packlets/observe/observer.js.map +1 -1
  6. package/dist/packlets/retrieve/linkTraversalRetriever.js +1 -1
  7. package/dist/packlets/retrieve/linkTraversalRetriever.js.map +1 -1
  8. package/dist/packlets/retrieve/recencyRetriever.js +1 -1
  9. package/dist/packlets/retrieve/recencyRetriever.js.map +1 -1
  10. package/dist/packlets/retrieve/retriever.js +11 -5
  11. package/dist/packlets/retrieve/retriever.js.map +1 -1
  12. package/dist/packlets/retrieve/structuredFilterRetriever.js +27 -5
  13. package/dist/packlets/retrieve/structuredFilterRetriever.js.map +1 -1
  14. package/dist/packlets/retrieve/tagRetriever.js +1 -1
  15. package/dist/packlets/retrieve/tagRetriever.js.map +1 -1
  16. package/dist/packlets/retrieve/temporalRetrievers.js +1 -1
  17. package/dist/packlets/retrieve/temporalRetrievers.js.map +1 -1
  18. package/dist/packlets/store/fileTreeMemoryStore.js +152 -132
  19. package/dist/packlets/store/fileTreeMemoryStore.js.map +1 -1
  20. package/dist/packlets/store/vectorMaintenance.js +251 -0
  21. package/dist/packlets/store/vectorMaintenance.js.map +1 -0
  22. package/dist/packlets/types/envelope.js.map +1 -1
  23. package/dist/packlets/vector/inMemoryCosineIndex.js +81 -18
  24. package/dist/packlets/vector/inMemoryCosineIndex.js.map +1 -1
  25. package/dist/packlets/vector/inMemoryFragmentCosineIndex.js +7 -0
  26. package/dist/packlets/vector/inMemoryFragmentCosineIndex.js.map +1 -1
  27. package/dist/packlets/vector/vectorIndex.js.map +1 -1
  28. package/dist/ts-agent-memory.d.ts +431 -79
  29. package/lib/packlets/ingest/orchestrator.d.ts.map +1 -1
  30. package/lib/packlets/ingest/orchestrator.js +11 -1
  31. package/lib/packlets/ingest/orchestrator.js.map +1 -1
  32. package/lib/packlets/observe/memoryObservationStore.d.ts.map +1 -1
  33. package/lib/packlets/observe/memoryObservationStore.js +6 -0
  34. package/lib/packlets/observe/memoryObservationStore.js.map +1 -1
  35. package/lib/packlets/observe/observer.d.ts +61 -0
  36. package/lib/packlets/observe/observer.d.ts.map +1 -1
  37. package/lib/packlets/observe/observer.js.map +1 -1
  38. package/lib/packlets/retrieve/linkTraversalRetriever.d.ts +1 -1
  39. package/lib/packlets/retrieve/linkTraversalRetriever.js +1 -1
  40. package/lib/packlets/retrieve/linkTraversalRetriever.js.map +1 -1
  41. package/lib/packlets/retrieve/recencyRetriever.d.ts +1 -1
  42. package/lib/packlets/retrieve/recencyRetriever.js +1 -1
  43. package/lib/packlets/retrieve/recencyRetriever.js.map +1 -1
  44. package/lib/packlets/retrieve/retriever.d.ts +26 -7
  45. package/lib/packlets/retrieve/retriever.d.ts.map +1 -1
  46. package/lib/packlets/retrieve/retriever.js +11 -5
  47. package/lib/packlets/retrieve/retriever.js.map +1 -1
  48. package/lib/packlets/retrieve/structuredFilterRetriever.d.ts +26 -4
  49. package/lib/packlets/retrieve/structuredFilterRetriever.d.ts.map +1 -1
  50. package/lib/packlets/retrieve/structuredFilterRetriever.js +27 -5
  51. package/lib/packlets/retrieve/structuredFilterRetriever.js.map +1 -1
  52. package/lib/packlets/retrieve/tagRetriever.d.ts +1 -1
  53. package/lib/packlets/retrieve/tagRetriever.js +1 -1
  54. package/lib/packlets/retrieve/tagRetriever.js.map +1 -1
  55. package/lib/packlets/retrieve/temporalRetrievers.js +1 -1
  56. package/lib/packlets/retrieve/temporalRetrievers.js.map +1 -1
  57. package/lib/packlets/store/fileTreeMemoryStore.d.ts +135 -59
  58. package/lib/packlets/store/fileTreeMemoryStore.d.ts.map +1 -1
  59. package/lib/packlets/store/fileTreeMemoryStore.js +151 -131
  60. package/lib/packlets/store/fileTreeMemoryStore.js.map +1 -1
  61. package/lib/packlets/store/vectorMaintenance.d.ts +149 -0
  62. package/lib/packlets/store/vectorMaintenance.d.ts.map +1 -0
  63. package/lib/packlets/store/vectorMaintenance.js +255 -0
  64. package/lib/packlets/store/vectorMaintenance.js.map +1 -0
  65. package/lib/packlets/types/envelope.d.ts +11 -0
  66. package/lib/packlets/types/envelope.d.ts.map +1 -1
  67. package/lib/packlets/types/envelope.js.map +1 -1
  68. package/lib/packlets/vector/inMemoryCosineIndex.d.ts +30 -7
  69. package/lib/packlets/vector/inMemoryCosineIndex.d.ts.map +1 -1
  70. package/lib/packlets/vector/inMemoryCosineIndex.js +80 -17
  71. package/lib/packlets/vector/inMemoryCosineIndex.js.map +1 -1
  72. package/lib/packlets/vector/inMemoryFragmentCosineIndex.d.ts +7 -0
  73. package/lib/packlets/vector/inMemoryFragmentCosineIndex.d.ts.map +1 -1
  74. package/lib/packlets/vector/inMemoryFragmentCosineIndex.js +7 -0
  75. package/lib/packlets/vector/inMemoryFragmentCosineIndex.js.map +1 -1
  76. package/lib/packlets/vector/vectorIndex.d.ts +129 -1
  77. package/lib/packlets/vector/vectorIndex.d.ts.map +1 -1
  78. package/lib/packlets/vector/vectorIndex.js.map +1 -1
  79. package/package.json +17 -7
  80. package/.rush/temp/5667e36f1c0cc503a5c20a3ebff76e7b9a702d41.tar.log +0 -468
  81. package/.rush/temp/chunked-rush-logs/ts-agent-memory.build.chunks.jsonl +0 -9
  82. package/.rush/temp/operation/build/all.log +0 -9
  83. package/.rush/temp/operation/build/log-chunks.jsonl +0 -9
  84. package/.rush/temp/operation/build/state.json +0 -3
  85. package/.rush/temp/shrinkwrap-deps.json +0 -689
  86. package/config/api-extractor.json +0 -343
  87. package/config/jest.config.json +0 -14
  88. package/config/rig.json +0 -4
  89. package/dist/test/unit/converters/antagonistRoundTrip.test.js +0 -95
  90. package/dist/test/unit/converters/antagonistRoundTrip.test.js.map +0 -1
  91. package/dist/test/unit/converters/bodyConverterRegistry.test.js +0 -72
  92. package/dist/test/unit/converters/bodyConverterRegistry.test.js.map +0 -1
  93. package/dist/test/unit/converters/envelopeConverter.test.js +0 -313
  94. package/dist/test/unit/converters/envelopeConverter.test.js.map +0 -1
  95. package/dist/test/unit/index/memoryIndex.test.js +0 -214
  96. package/dist/test/unit/index/memoryIndex.test.js.map +0 -1
  97. package/dist/test/unit/ingest/antagonistCycleAndParity.test.js +0 -277
  98. package/dist/test/unit/ingest/antagonistCycleAndParity.test.js.map +0 -1
  99. package/dist/test/unit/ingest/cycleGuard.test.js +0 -81
  100. package/dist/test/unit/ingest/cycleGuard.test.js.map +0 -1
  101. package/dist/test/unit/ingest/dedupScope.test.js +0 -434
  102. package/dist/test/unit/ingest/dedupScope.test.js.map +0 -1
  103. package/dist/test/unit/ingest/orchestrator.test.js +0 -1058
  104. package/dist/test/unit/ingest/orchestrator.test.js.map +0 -1
  105. package/dist/test/unit/observe/memoryObservationStore.test.js +0 -118
  106. package/dist/test/unit/observe/memoryObservationStore.test.js.map +0 -1
  107. package/dist/test/unit/retrieve/fragmentSemanticRetriever.test.js +0 -116
  108. package/dist/test/unit/retrieve/fragmentSemanticRetriever.test.js.map +0 -1
  109. package/dist/test/unit/retrieve/linkTraversalRetriever.test.js +0 -257
  110. package/dist/test/unit/retrieve/linkTraversalRetriever.test.js.map +0 -1
  111. package/dist/test/unit/retrieve/retrievers.test.js +0 -768
  112. package/dist/test/unit/retrieve/retrievers.test.js.map +0 -1
  113. package/dist/test/unit/retrieve/temporalRetrievers.test.js +0 -182
  114. package/dist/test/unit/retrieve/temporalRetrievers.test.js.map +0 -1
  115. package/dist/test/unit/store/antagonistTemporalBoundary.test.js +0 -120
  116. package/dist/test/unit/store/antagonistTemporalBoundary.test.js.map +0 -1
  117. package/dist/test/unit/store/embedOnWrite.test.js +0 -317
  118. package/dist/test/unit/store/embedOnWrite.test.js.map +0 -1
  119. package/dist/test/unit/store/fileTreeMemoryStore.test.js +0 -778
  120. package/dist/test/unit/store/fileTreeMemoryStore.test.js.map +0 -1
  121. package/dist/test/unit/store/fragmentEmbedOnWrite.test.js +0 -255
  122. package/dist/test/unit/store/fragmentEmbedOnWrite.test.js.map +0 -1
  123. package/dist/test/unit/store/indexInjection.test.js +0 -432
  124. package/dist/test/unit/store/indexInjection.test.js.map +0 -1
  125. package/dist/test/unit/store/lenientOpen.test.js +0 -248
  126. package/dist/test/unit/store/lenientOpen.test.js.map +0 -1
  127. package/dist/test/unit/store/listScoped.test.js +0 -109
  128. package/dist/test/unit/store/listScoped.test.js.map +0 -1
  129. package/dist/test/unit/store/observations.test.js +0 -239
  130. package/dist/test/unit/store/observations.test.js.map +0 -1
  131. package/dist/test/unit/store/rankAxis.test.js +0 -254
  132. package/dist/test/unit/store/rankAxis.test.js.map +0 -1
  133. package/dist/test/unit/store/scopeEncoding.test.js +0 -24
  134. package/dist/test/unit/store/scopeEncoding.test.js.map +0 -1
  135. package/dist/test/unit/store/temporalStore.test.js +0 -398
  136. package/dist/test/unit/store/temporalStore.test.js.map +0 -1
  137. package/dist/test/unit/tools/memoryTools.test.js +0 -842
  138. package/dist/test/unit/tools/memoryTools.test.js.map +0 -1
  139. package/dist/test/unit/types/identityCodec.test.js +0 -187
  140. package/dist/test/unit/types/identityCodec.test.js.map +0 -1
  141. package/dist/test/unit/types/ids.test.js +0 -84
  142. package/dist/test/unit/types/ids.test.js.map +0 -1
  143. package/dist/test/unit/types/temporalCodec.test.js +0 -203
  144. package/dist/test/unit/types/temporalCodec.test.js.map +0 -1
  145. package/dist/test/unit/types/temporalPolicy.test.js +0 -83
  146. package/dist/test/unit/types/temporalPolicy.test.js.map +0 -1
  147. package/dist/test/unit/types/writePolicy.test.js +0 -331
  148. package/dist/test/unit/types/writePolicy.test.js.map +0 -1
  149. package/dist/test/unit/vector/fragmentConverters.test.js +0 -58
  150. package/dist/test/unit/vector/fragmentConverters.test.js.map +0 -1
  151. package/dist/test/unit/vector/inMemoryCosineIndex.test.js +0 -252
  152. package/dist/test/unit/vector/inMemoryCosineIndex.test.js.map +0 -1
  153. package/dist/test/unit/vector/inMemoryFragmentCosineIndex.test.js +0 -362
  154. package/dist/test/unit/vector/inMemoryFragmentCosineIndex.test.js.map +0 -1
  155. package/dist/test/unit/vector/vectorIndex.test.js +0 -51
  156. package/dist/test/unit/vector/vectorIndex.test.js.map +0 -1
  157. package/eslint.config.js +0 -15
  158. package/etc/ts-agent-memory.api.md +0 -940
  159. package/lib/test/unit/converters/antagonistRoundTrip.test.d.ts +0 -10
  160. package/lib/test/unit/converters/antagonistRoundTrip.test.d.ts.map +0 -1
  161. package/lib/test/unit/converters/antagonistRoundTrip.test.js +0 -97
  162. package/lib/test/unit/converters/antagonistRoundTrip.test.js.map +0 -1
  163. package/lib/test/unit/converters/bodyConverterRegistry.test.d.ts +0 -2
  164. package/lib/test/unit/converters/bodyConverterRegistry.test.d.ts.map +0 -1
  165. package/lib/test/unit/converters/bodyConverterRegistry.test.js +0 -74
  166. package/lib/test/unit/converters/bodyConverterRegistry.test.js.map +0 -1
  167. package/lib/test/unit/converters/envelopeConverter.test.d.ts +0 -2
  168. package/lib/test/unit/converters/envelopeConverter.test.d.ts.map +0 -1
  169. package/lib/test/unit/converters/envelopeConverter.test.js +0 -315
  170. package/lib/test/unit/converters/envelopeConverter.test.js.map +0 -1
  171. package/lib/test/unit/index/memoryIndex.test.d.ts +0 -2
  172. package/lib/test/unit/index/memoryIndex.test.d.ts.map +0 -1
  173. package/lib/test/unit/index/memoryIndex.test.js +0 -216
  174. package/lib/test/unit/index/memoryIndex.test.js.map +0 -1
  175. package/lib/test/unit/ingest/antagonistCycleAndParity.test.d.ts +0 -9
  176. package/lib/test/unit/ingest/antagonistCycleAndParity.test.d.ts.map +0 -1
  177. package/lib/test/unit/ingest/antagonistCycleAndParity.test.js +0 -279
  178. package/lib/test/unit/ingest/antagonistCycleAndParity.test.js.map +0 -1
  179. package/lib/test/unit/ingest/cycleGuard.test.d.ts +0 -2
  180. package/lib/test/unit/ingest/cycleGuard.test.d.ts.map +0 -1
  181. package/lib/test/unit/ingest/cycleGuard.test.js +0 -83
  182. package/lib/test/unit/ingest/cycleGuard.test.js.map +0 -1
  183. package/lib/test/unit/ingest/dedupScope.test.d.ts +0 -2
  184. package/lib/test/unit/ingest/dedupScope.test.d.ts.map +0 -1
  185. package/lib/test/unit/ingest/dedupScope.test.js +0 -436
  186. package/lib/test/unit/ingest/dedupScope.test.js.map +0 -1
  187. package/lib/test/unit/ingest/orchestrator.test.d.ts +0 -2
  188. package/lib/test/unit/ingest/orchestrator.test.d.ts.map +0 -1
  189. package/lib/test/unit/ingest/orchestrator.test.js +0 -1060
  190. package/lib/test/unit/ingest/orchestrator.test.js.map +0 -1
  191. package/lib/test/unit/observe/memoryObservationStore.test.d.ts +0 -2
  192. package/lib/test/unit/observe/memoryObservationStore.test.d.ts.map +0 -1
  193. package/lib/test/unit/observe/memoryObservationStore.test.js +0 -120
  194. package/lib/test/unit/observe/memoryObservationStore.test.js.map +0 -1
  195. package/lib/test/unit/retrieve/fragmentSemanticRetriever.test.d.ts +0 -2
  196. package/lib/test/unit/retrieve/fragmentSemanticRetriever.test.d.ts.map +0 -1
  197. package/lib/test/unit/retrieve/fragmentSemanticRetriever.test.js +0 -118
  198. package/lib/test/unit/retrieve/fragmentSemanticRetriever.test.js.map +0 -1
  199. package/lib/test/unit/retrieve/linkTraversalRetriever.test.d.ts +0 -2
  200. package/lib/test/unit/retrieve/linkTraversalRetriever.test.d.ts.map +0 -1
  201. package/lib/test/unit/retrieve/linkTraversalRetriever.test.js +0 -259
  202. package/lib/test/unit/retrieve/linkTraversalRetriever.test.js.map +0 -1
  203. package/lib/test/unit/retrieve/retrievers.test.d.ts +0 -2
  204. package/lib/test/unit/retrieve/retrievers.test.d.ts.map +0 -1
  205. package/lib/test/unit/retrieve/retrievers.test.js +0 -770
  206. package/lib/test/unit/retrieve/retrievers.test.js.map +0 -1
  207. package/lib/test/unit/retrieve/temporalRetrievers.test.d.ts +0 -2
  208. package/lib/test/unit/retrieve/temporalRetrievers.test.d.ts.map +0 -1
  209. package/lib/test/unit/retrieve/temporalRetrievers.test.js +0 -184
  210. package/lib/test/unit/retrieve/temporalRetrievers.test.js.map +0 -1
  211. package/lib/test/unit/store/antagonistTemporalBoundary.test.d.ts +0 -9
  212. package/lib/test/unit/store/antagonistTemporalBoundary.test.d.ts.map +0 -1
  213. package/lib/test/unit/store/antagonistTemporalBoundary.test.js +0 -122
  214. package/lib/test/unit/store/antagonistTemporalBoundary.test.js.map +0 -1
  215. package/lib/test/unit/store/embedOnWrite.test.d.ts +0 -2
  216. package/lib/test/unit/store/embedOnWrite.test.d.ts.map +0 -1
  217. package/lib/test/unit/store/embedOnWrite.test.js +0 -319
  218. package/lib/test/unit/store/embedOnWrite.test.js.map +0 -1
  219. package/lib/test/unit/store/fileTreeMemoryStore.test.d.ts +0 -2
  220. package/lib/test/unit/store/fileTreeMemoryStore.test.d.ts.map +0 -1
  221. package/lib/test/unit/store/fileTreeMemoryStore.test.js +0 -780
  222. package/lib/test/unit/store/fileTreeMemoryStore.test.js.map +0 -1
  223. package/lib/test/unit/store/fragmentEmbedOnWrite.test.d.ts +0 -2
  224. package/lib/test/unit/store/fragmentEmbedOnWrite.test.d.ts.map +0 -1
  225. package/lib/test/unit/store/fragmentEmbedOnWrite.test.js +0 -257
  226. package/lib/test/unit/store/fragmentEmbedOnWrite.test.js.map +0 -1
  227. package/lib/test/unit/store/indexInjection.test.d.ts +0 -2
  228. package/lib/test/unit/store/indexInjection.test.d.ts.map +0 -1
  229. package/lib/test/unit/store/indexInjection.test.js +0 -434
  230. package/lib/test/unit/store/indexInjection.test.js.map +0 -1
  231. package/lib/test/unit/store/lenientOpen.test.d.ts +0 -2
  232. package/lib/test/unit/store/lenientOpen.test.d.ts.map +0 -1
  233. package/lib/test/unit/store/lenientOpen.test.js +0 -250
  234. package/lib/test/unit/store/lenientOpen.test.js.map +0 -1
  235. package/lib/test/unit/store/listScoped.test.d.ts +0 -2
  236. package/lib/test/unit/store/listScoped.test.d.ts.map +0 -1
  237. package/lib/test/unit/store/listScoped.test.js +0 -111
  238. package/lib/test/unit/store/listScoped.test.js.map +0 -1
  239. package/lib/test/unit/store/observations.test.d.ts +0 -2
  240. package/lib/test/unit/store/observations.test.d.ts.map +0 -1
  241. package/lib/test/unit/store/observations.test.js +0 -241
  242. package/lib/test/unit/store/observations.test.js.map +0 -1
  243. package/lib/test/unit/store/rankAxis.test.d.ts +0 -2
  244. package/lib/test/unit/store/rankAxis.test.d.ts.map +0 -1
  245. package/lib/test/unit/store/rankAxis.test.js +0 -256
  246. package/lib/test/unit/store/rankAxis.test.js.map +0 -1
  247. package/lib/test/unit/store/scopeEncoding.test.d.ts +0 -2
  248. package/lib/test/unit/store/scopeEncoding.test.d.ts.map +0 -1
  249. package/lib/test/unit/store/scopeEncoding.test.js +0 -26
  250. package/lib/test/unit/store/scopeEncoding.test.js.map +0 -1
  251. package/lib/test/unit/store/temporalStore.test.d.ts +0 -2
  252. package/lib/test/unit/store/temporalStore.test.d.ts.map +0 -1
  253. package/lib/test/unit/store/temporalStore.test.js +0 -400
  254. package/lib/test/unit/store/temporalStore.test.js.map +0 -1
  255. package/lib/test/unit/tools/memoryTools.test.d.ts +0 -2
  256. package/lib/test/unit/tools/memoryTools.test.d.ts.map +0 -1
  257. package/lib/test/unit/tools/memoryTools.test.js +0 -844
  258. package/lib/test/unit/tools/memoryTools.test.js.map +0 -1
  259. package/lib/test/unit/types/identityCodec.test.d.ts +0 -2
  260. package/lib/test/unit/types/identityCodec.test.d.ts.map +0 -1
  261. package/lib/test/unit/types/identityCodec.test.js +0 -189
  262. package/lib/test/unit/types/identityCodec.test.js.map +0 -1
  263. package/lib/test/unit/types/ids.test.d.ts +0 -2
  264. package/lib/test/unit/types/ids.test.d.ts.map +0 -1
  265. package/lib/test/unit/types/ids.test.js +0 -86
  266. package/lib/test/unit/types/ids.test.js.map +0 -1
  267. package/lib/test/unit/types/temporalCodec.test.d.ts +0 -2
  268. package/lib/test/unit/types/temporalCodec.test.d.ts.map +0 -1
  269. package/lib/test/unit/types/temporalCodec.test.js +0 -205
  270. package/lib/test/unit/types/temporalCodec.test.js.map +0 -1
  271. package/lib/test/unit/types/temporalPolicy.test.d.ts +0 -2
  272. package/lib/test/unit/types/temporalPolicy.test.d.ts.map +0 -1
  273. package/lib/test/unit/types/temporalPolicy.test.js +0 -85
  274. package/lib/test/unit/types/temporalPolicy.test.js.map +0 -1
  275. package/lib/test/unit/types/writePolicy.test.d.ts +0 -2
  276. package/lib/test/unit/types/writePolicy.test.d.ts.map +0 -1
  277. package/lib/test/unit/types/writePolicy.test.js +0 -333
  278. package/lib/test/unit/types/writePolicy.test.js.map +0 -1
  279. package/lib/test/unit/vector/fragmentConverters.test.d.ts +0 -2
  280. package/lib/test/unit/vector/fragmentConverters.test.d.ts.map +0 -1
  281. package/lib/test/unit/vector/fragmentConverters.test.js +0 -60
  282. package/lib/test/unit/vector/fragmentConverters.test.js.map +0 -1
  283. package/lib/test/unit/vector/inMemoryCosineIndex.test.d.ts +0 -2
  284. package/lib/test/unit/vector/inMemoryCosineIndex.test.d.ts.map +0 -1
  285. package/lib/test/unit/vector/inMemoryCosineIndex.test.js +0 -254
  286. package/lib/test/unit/vector/inMemoryCosineIndex.test.js.map +0 -1
  287. package/lib/test/unit/vector/inMemoryFragmentCosineIndex.test.d.ts +0 -2
  288. package/lib/test/unit/vector/inMemoryFragmentCosineIndex.test.d.ts.map +0 -1
  289. package/lib/test/unit/vector/inMemoryFragmentCosineIndex.test.js +0 -364
  290. package/lib/test/unit/vector/inMemoryFragmentCosineIndex.test.js.map +0 -1
  291. package/lib/test/unit/vector/vectorIndex.test.d.ts +0 -2
  292. package/lib/test/unit/vector/vectorIndex.test.d.ts.map +0 -1
  293. package/lib/test/unit/vector/vectorIndex.test.js +0 -53
  294. package/lib/test/unit/vector/vectorIndex.test.js.map +0 -1
  295. package/rush-logs/ts-agent-memory.build.cache.log +0 -3
  296. package/rush-logs/ts-agent-memory.build.log +0 -9
  297. package/src/index.ts +0 -14
  298. package/src/packlets/converters/bodyConverterRegistry.ts +0 -105
  299. package/src/packlets/converters/envelopeConverter.ts +0 -233
  300. package/src/packlets/converters/index.ts +0 -7
  301. package/src/packlets/index/index.ts +0 -6
  302. package/src/packlets/index/memoryIndex.ts +0 -332
  303. package/src/packlets/ingest/cycleGuard.ts +0 -153
  304. package/src/packlets/ingest/hostStages.ts +0 -111
  305. package/src/packlets/ingest/index.ts +0 -9
  306. package/src/packlets/ingest/model.ts +0 -195
  307. package/src/packlets/ingest/orchestrator.ts +0 -968
  308. package/src/packlets/observe/index.ts +0 -7
  309. package/src/packlets/observe/memoryObservationStore.ts +0 -153
  310. package/src/packlets/observe/observer.ts +0 -119
  311. package/src/packlets/retrieve/fragmentSemanticRetriever.ts +0 -138
  312. package/src/packlets/retrieve/hybridRetriever.ts +0 -194
  313. package/src/packlets/retrieve/index.ts +0 -14
  314. package/src/packlets/retrieve/linkTraversalRetriever.ts +0 -158
  315. package/src/packlets/retrieve/recencyRetriever.ts +0 -54
  316. package/src/packlets/retrieve/retriever.ts +0 -291
  317. package/src/packlets/retrieve/semanticRetriever.ts +0 -152
  318. package/src/packlets/retrieve/structuredFilterRetriever.ts +0 -58
  319. package/src/packlets/retrieve/tagRetriever.ts +0 -58
  320. package/src/packlets/retrieve/temporalRetrievers.ts +0 -210
  321. package/src/packlets/store/fileTreeMemoryStore.ts +0 -1872
  322. package/src/packlets/store/index.ts +0 -7
  323. package/src/packlets/store/scopeEncoding.ts +0 -36
  324. package/src/packlets/tools/index.ts +0 -6
  325. package/src/packlets/tools/memoryTools.ts +0 -706
  326. package/src/packlets/types/envelope.ts +0 -196
  327. package/src/packlets/types/filenameSafety.ts +0 -57
  328. package/src/packlets/types/identityCodec.ts +0 -447
  329. package/src/packlets/types/ids.ts +0 -124
  330. package/src/packlets/types/index.ts +0 -11
  331. package/src/packlets/types/temporal.ts +0 -96
  332. package/src/packlets/types/writePolicy.ts +0 -612
  333. package/src/packlets/vector/fragmentConverters.ts +0 -55
  334. package/src/packlets/vector/inMemoryCosineIndex.ts +0 -196
  335. package/src/packlets/vector/inMemoryFragmentCosineIndex.ts +0 -289
  336. package/src/packlets/vector/index.ts +0 -9
  337. package/src/packlets/vector/vectorIndex.ts +0 -273
  338. package/src/test/unit/converters/antagonistRoundTrip.test.ts +0 -110
  339. package/src/test/unit/converters/bodyConverterRegistry.test.ts +0 -89
  340. package/src/test/unit/converters/envelopeConverter.test.ts +0 -418
  341. package/src/test/unit/index/memoryIndex.test.ts +0 -272
  342. package/src/test/unit/ingest/antagonistCycleAndParity.test.ts +0 -367
  343. package/src/test/unit/ingest/cycleGuard.test.ts +0 -110
  344. package/src/test/unit/ingest/dedupScope.test.ts +0 -542
  345. package/src/test/unit/ingest/orchestrator.test.ts +0 -1355
  346. package/src/test/unit/observe/memoryObservationStore.test.ts +0 -158
  347. package/src/test/unit/retrieve/fragmentSemanticRetriever.test.ts +0 -163
  348. package/src/test/unit/retrieve/linkTraversalRetriever.test.ts +0 -329
  349. package/src/test/unit/retrieve/retrievers.test.ts +0 -1018
  350. package/src/test/unit/retrieve/temporalRetrievers.test.ts +0 -226
  351. package/src/test/unit/store/antagonistTemporalBoundary.test.ts +0 -158
  352. package/src/test/unit/store/embedOnWrite.test.ts +0 -418
  353. package/src/test/unit/store/fileTreeMemoryStore.test.ts +0 -1041
  354. package/src/test/unit/store/fragmentEmbedOnWrite.test.ts +0 -349
  355. package/src/test/unit/store/indexInjection.test.ts +0 -550
  356. package/src/test/unit/store/lenientOpen.test.ts +0 -292
  357. package/src/test/unit/store/listScoped.test.ts +0 -138
  358. package/src/test/unit/store/observations.test.ts +0 -290
  359. package/src/test/unit/store/rankAxis.test.ts +0 -349
  360. package/src/test/unit/store/scopeEncoding.test.ts +0 -37
  361. package/src/test/unit/store/temporalStore.test.ts +0 -469
  362. package/src/test/unit/tools/memoryTools.test.ts +0 -1121
  363. package/src/test/unit/types/identityCodec.test.ts +0 -266
  364. package/src/test/unit/types/ids.test.ts +0 -94
  365. package/src/test/unit/types/temporalCodec.test.ts +0 -259
  366. package/src/test/unit/types/temporalPolicy.test.ts +0 -124
  367. package/src/test/unit/types/writePolicy.test.ts +0 -446
  368. package/src/test/unit/vector/fragmentConverters.test.ts +0 -80
  369. package/src/test/unit/vector/inMemoryCosineIndex.test.ts +0 -318
  370. package/src/test/unit/vector/inMemoryFragmentCosineIndex.test.ts +0 -477
  371. package/src/test/unit/vector/vectorIndex.test.ts +0 -64
  372. package/temp/build/lint/_eslint-5eVG3S6w.json +0 -306
  373. package/temp/build/typescript/ts_8nwakTlr.json +0 -1
  374. package/temp/ts-agent-memory.api.json +0 -21030
  375. package/temp/ts-agent-memory.api.md +0 -940
  376. package/tsconfig.json +0 -8
@@ -1,153 +0,0 @@
1
- /*
2
- * Copyright (c) 2026 Erik Fortune
3
- * SPDX-License-Identifier: MIT
4
- */
5
-
6
- import { Hash, Result, fail, mapResults, succeed } from '@fgv/ts-utils';
7
- import { IEdgeTarget, LinkType, edgeTargetKey } from '../types';
8
-
9
- /**
10
- * A directed edge in the link graph the cycle guard reasons over: scope-qualified
11
- * `source` links to scope-qualified `target` under relation `type`.
12
- * @public
13
- */
14
- export interface ICycleGuardEdge {
15
- readonly source: IEdgeTarget;
16
- readonly target: IEdgeTarget;
17
- readonly type: LinkType;
18
- }
19
-
20
- /** Human-readable `scope/id` rendering of a scoped node, for cycle-guard diagnostics. */
21
- function formatNode(node: IEdgeTarget): string {
22
- return `${node.scope}/${node.id}`;
23
- }
24
-
25
- /**
26
- * Build the design's `buildCycleKey` — a deterministic, canonical (RFC-8785,
27
- * via `Crc32Normalizer` from `@fgv/ts-utils`) identity for a directed edge. Used
28
- * to de-duplicate proposed edges so a repeated `(source, target, type)` proposal
29
- * contributes a single graph edge (and never spuriously "re-closes" a cycle).
30
- * @public
31
- */
32
- export function buildCycleKey(edge: ICycleGuardEdge): Result<string> {
33
- return new Hash.Crc32Normalizer().computeHash({
34
- source: edge.source,
35
- target: edge.target,
36
- type: edge.type
37
- });
38
- }
39
-
40
- /**
41
- * Write-time cycle guard. Given the graph's EXISTING directed edges plus a set of
42
- * PROPOSED edges, verify that adding the proposed edges keeps the union graph a
43
- * DAG. Fails loudly, naming the first proposed edge that would close a directed
44
- * cycle.
45
- *
46
- * @remarks
47
- * Distinct from the read-time BFS in `LinkTraversalRetriever` (which tolerates
48
- * cycles via a visited-set): this is a WRITE-time admission check. Cycle
49
- * detection is DFS reachability — a proposed `source -> target` edge closes a
50
- * cycle iff `target` already reaches `source` in the graph built so far. Proposed
51
- * edges are folded in one at a time (in order), so an intra-batch cycle
52
- * (`A->B`, `B->A` both proposed) is caught as well as a batch-vs-existing cycle.
53
- *
54
- * See the design note §4: this enforces GLOBAL directed-acyclicity over all link
55
- * types (conservative — a mutual associative pair is rejected). Callers that need
56
- * mutual links disable the guard.
57
- * @public
58
- */
59
- export function assertNoCycles(
60
- existing: ReadonlyArray<ICycleGuardEdge>,
61
- proposed: ReadonlyArray<ICycleGuardEdge>
62
- ): Result<true> {
63
- // Canonically key every edge up front (the only fallible step); the graph
64
- // building + cycle detection below is then pure.
65
- return keyEdges(existing).onSuccess((existingKeyed) =>
66
- keyEdges(proposed).onSuccess((proposedKeyed) => {
67
- // Adjacency map, de-duplicated by canonical edge key so a repeated edge is
68
- // one arc. Seed with the existing edges, then fold in each proposed edge,
69
- // checking reachability BEFORE inserting it.
70
- const adjacency: Map<string, Set<string>> = new Map<string, Set<string>>();
71
- const seenKeys: Set<string> = new Set<string>();
72
- for (const keyed of existingKeyed) {
73
- addEdge(adjacency, seenKeys, keyed);
74
- }
75
- for (const keyed of proposedKeyed) {
76
- const edge: ICycleGuardEdge = keyed.edge;
77
- const sourceKey: string = edgeTargetKey(edge.source);
78
- const targetKey: string = edgeTargetKey(edge.target);
79
- // A self-loop is the degenerate one-node cycle.
80
- if (sourceKey === targetKey) {
81
- return fail(
82
- `ingest cycle guard: edge '${formatNode(edge.source)}' -${edge.type}-> '${formatNode(
83
- edge.target
84
- )}' is a self-loop`
85
- );
86
- }
87
- // Reachability: does `target` already reach `source`? If so, adding
88
- // `source -> target` closes a directed cycle.
89
- if (reaches(adjacency, targetKey, sourceKey)) {
90
- return fail(
91
- `ingest cycle guard: edge '${formatNode(edge.source)}' -${edge.type}-> '${formatNode(
92
- edge.target
93
- )}' would create a cycle`
94
- );
95
- }
96
- addEdge(adjacency, seenKeys, keyed);
97
- }
98
- return succeed(true);
99
- })
100
- );
101
- }
102
-
103
- /** An edge paired with its canonical cycle key. */
104
- interface IKeyedEdge {
105
- readonly edge: ICycleGuardEdge;
106
- readonly key: string;
107
- }
108
-
109
- /** Canonically key a set of edges (the guard's only fallible step). */
110
- function keyEdges(edges: ReadonlyArray<ICycleGuardEdge>): Result<ReadonlyArray<IKeyedEdge>> {
111
- return mapResults(edges.map((edge) => buildCycleKey(edge).onSuccess((key) => succeed({ edge, key }))));
112
- }
113
-
114
- /** Add an edge to the adjacency map, de-duplicated by its canonical key. */
115
- function addEdge(adjacency: Map<string, Set<string>>, seenKeys: Set<string>, keyed: IKeyedEdge): void {
116
- if (seenKeys.has(keyed.key)) {
117
- return;
118
- }
119
- seenKeys.add(keyed.key);
120
- const source: string = edgeTargetKey(keyed.edge.source);
121
- const target: string = edgeTargetKey(keyed.edge.target);
122
- const targets: Set<string> | undefined = adjacency.get(source);
123
- if (targets === undefined) {
124
- adjacency.set(source, new Set<string>([target]));
125
- } else {
126
- targets.add(target);
127
- }
128
- }
129
-
130
- /** DFS reachability: is `to` reachable from `from` over `adjacency`? */
131
- function reaches(adjacency: ReadonlyMap<string, Set<string>>, from: string, to: string): boolean {
132
- const visited: Set<string> = new Set<string>();
133
- const stack: string[] = [from];
134
- while (stack.length > 0) {
135
- const node: string = stack.pop() as string;
136
- if (node === to) {
137
- return true;
138
- }
139
- if (visited.has(node)) {
140
- continue;
141
- }
142
- visited.add(node);
143
- const neighbors: Set<string> | undefined = adjacency.get(node);
144
- if (neighbors !== undefined) {
145
- for (const neighbor of neighbors) {
146
- if (!visited.has(neighbor)) {
147
- stack.push(neighbor);
148
- }
149
- }
150
- }
151
- }
152
- return false;
153
- }
@@ -1,111 +0,0 @@
1
- /*
2
- * Copyright (c) 2026 Erik Fortune
3
- * SPDX-License-Identifier: MIT
4
- */
5
-
6
- import { Result } from '@fgv/ts-utils';
7
- import { IEdgeTarget } from '../types';
8
- import {
9
- ICandidateEdge,
10
- ICandidateRecord,
11
- IEntityResolutionCandidate,
12
- IIngestItem,
13
- IMemoryClassification,
14
- ResolutionVerdict
15
- } from './model';
16
-
17
- /**
18
- * Stage 2 — the host's classifier. Decides what {@link IIngestItem} maps to
19
- * which memory {@link Kind} (and optional tags / confidence). LOCKED as a
20
- * separate staged interface (OQ-10): the host plugs its existing classifier
21
- * machinery in here rather than surrendering to an opaque ingestor.
22
- * @public
23
- */
24
- export interface IMemoryClassifier {
25
- /**
26
- * Classify one item. A `fail` aborts the item's ingest loudly (fgv never
27
- * guesses a kind).
28
- */
29
- classify(item: IIngestItem): Promise<Result<IMemoryClassification>>;
30
- }
31
-
32
- /**
33
- * Stage 3 — the host's fact extractor. Turns a classified item into zero or more
34
- * {@link ICandidateRecord}s. Each candidate's body is validated against the
35
- * kind's registered Converter by fgv before it can reach the store (the typed
36
- * validation boundary — no unchecked host data is persisted).
37
- * @public
38
- */
39
- export interface IFactExtractor {
40
- /**
41
- * Extract candidate records from a classified item. An empty array is a valid
42
- * result (the item yielded nothing memorable).
43
- */
44
- extract(
45
- item: IIngestItem,
46
- classification: IMemoryClassification
47
- ): Promise<Result<ReadonlyArray<ICandidateRecord>>>;
48
- }
49
-
50
- /**
51
- * Stage 4 (optional) — the host's entity resolver (OQ-13, LOCKED OPTIONAL). When
52
- * supplied, fgv surfaces near-duplicate {@link IEntityResolutionCandidate}s (from
53
- * layer-2 similarity search) and the resolver returns a
54
- * {@link ResolutionVerdict}. When ABSENT, stage-4 dedup falls back to
55
- * exact-`{ kind, body }`-hash only — the deterministic-identity host path.
56
- * @public
57
- */
58
- export interface IEntityResolver {
59
- /**
60
- * Decide whether `candidate` is new, a duplicate of / supersedes / merges into
61
- * one of the surfaced `similar` records. `similar` is non-empty and ordered by
62
- * descending score when the resolver is invoked (fgv only calls it when
63
- * layer-2 surfaces at least one over-threshold neighbor).
64
- */
65
- resolve(
66
- candidate: ICandidateRecord,
67
- similar: ReadonlyArray<IEntityResolutionCandidate>
68
- ): Promise<Result<ResolutionVerdict>>;
69
- }
70
-
71
- /**
72
- * The context fgv hands the host's relation extractor (stage 5): the source item
73
- * plus the candidates fgv is about to write, each paired with its resolved
74
- * reference id (the codec `idStem`). The extractor proposes attributed edges over
75
- * these ids and existing store records.
76
- * @public
77
- */
78
- export interface IRelationContext {
79
- /** The item being ingested. */
80
- readonly item: IIngestItem;
81
- /** The candidates fgv is about to write, each with its resolved reference id. */
82
- readonly candidates: ReadonlyArray<IRelationCandidate>;
83
- }
84
-
85
- /**
86
- * A candidate paired with its resolved reference id, handed to the relation
87
- * extractor so it can source edges from it.
88
- * @public
89
- */
90
- export interface IRelationCandidate {
91
- /** The candidate about to be written. */
92
- readonly candidate: ICandidateRecord;
93
- /** Its resolved scope-qualified reference (codec `(scope, idStem)` — the stable entity address). */
94
- readonly id: IEdgeTarget;
95
- }
96
-
97
- /**
98
- * Stage 5 — the host's relation extractor. Proposes attributed edges among the
99
- * candidates and existing records. fgv owns the validation, the write-time cycle
100
- * guard, and the actual persistence of the edges (the host brings only the
101
- * relationship judgment).
102
- * @public
103
- */
104
- export interface IRelationExtractor {
105
- /**
106
- * Propose the edges to attach for this ingest. An empty array is valid (no
107
- * relations). Every proposed {@link ICandidateEdge.source | source} must be one
108
- * of the context's candidate reference ids.
109
- */
110
- relate(context: IRelationContext): Promise<Result<ReadonlyArray<ICandidateEdge>>>;
111
- }
@@ -1,9 +0,0 @@
1
- /*
2
- * Copyright (c) 2026 Erik Fortune
3
- * SPDX-License-Identifier: MIT
4
- */
5
-
6
- export * from './model';
7
- export * from './hostStages';
8
- export * from './cycleGuard';
9
- export * from './orchestrator';
@@ -1,195 +0,0 @@
1
- /*
2
- * Copyright (c) 2026 Erik Fortune
3
- * SPDX-License-Identifier: MIT
4
- */
5
-
6
- import { IEdge, IEdgeTarget, IMemoryEnvelope, IMemoryRecord, Kind, MemoryId, Tag } from '../types';
7
-
8
- /**
9
- * A single unit of raw source material handed to the ingest pipeline. The host
10
- * owns the shape of {@link IIngestItem.content | content} — fgv never interprets
11
- * it; it flows opaquely into the host's classifier and extractor (stages 2-3).
12
- *
13
- * Single-item ingest is FIRST-CLASS: the orchestrator's primary entry point
14
- * takes one `IIngestItem` (per-turn streaming), and the batch entry point is a
15
- * convenience loop over it.
16
- * @public
17
- */
18
- export interface IIngestItem {
19
- /**
20
- * Host-owned identity for this source item. Opaque to fgv; used only in
21
- * diagnostics and echoed back on the {@link IIngestItemResult}.
22
- */
23
- readonly id: string;
24
- /**
25
- * The opaque source payload the host's classifier / extractor understand
26
- * (e.g. a raw turn, a document, a tool-call transcript). Never interpreted by
27
- * fgv.
28
- */
29
- readonly content: unknown;
30
- /**
31
- * Optional scope-qualified back-link to the memory record this item was derived
32
- * from (e.g. the MTM turn an extracted fact came from). When present, fgv stamps
33
- * it as {@link IProvenance.derivedFrom | provenance.derivedFrom} on every record
34
- * ingested from this item (stage 6) — the cross-kind provenance spine. A
35
- * scope-qualified {@link IEdgeTarget} (not a bare {@link MemoryId}) because
36
- * per-scope codecs legally reuse a stem across scopes, so a bare id would be
37
- * ambiguous.
38
- */
39
- readonly sourceId?: IEdgeTarget;
40
- /** Optional opaque metadata carried alongside the item; never interpreted by fgv. */
41
- readonly metadata?: Record<string, unknown>;
42
- }
43
-
44
- /**
45
- * The host classifier's verdict for an {@link IIngestItem} (stage 2). Guides the
46
- * host's own extractor (stage 3) and supplies the default `kind` / `tags` /
47
- * `confidence` fgv stamps when the extractor does not override them.
48
- *
49
- * Extensible: the `[key: string]: unknown` arm lets the host attach an opaque
50
- * classification payload without changing this interface.
51
- * @public
52
- */
53
- export interface IMemoryClassification {
54
- /** The record kind the item classifies as. */
55
- readonly kind: Kind;
56
- /** Optional tags the classifier assigns. */
57
- readonly tags?: ReadonlyArray<Tag>;
58
- /** Optional classifier confidence in `[0, 1]`; flows to `provenance.confidence`. */
59
- readonly confidence?: number;
60
- /** Opaque, host-owned extension payload — never interpreted by fgv. */
61
- readonly [key: string]: unknown;
62
- }
63
-
64
- /**
65
- * The store-owned envelope fields fgv derives or stamps: `id` (from the codec),
66
- * and the transaction-time metadata (`seq` / `contentHash` / `created` /
67
- * `updated`). A {@link ICandidateRecord} supplies everything EXCEPT these.
68
- * @public
69
- */
70
- export type StoreStampedEnvelopeField = 'id' | 'seq' | 'contentHash' | 'created' | 'updated';
71
-
72
- /**
73
- * A host-extracted candidate record (stage 3 output). The host supplies the
74
- * full envelope MINUS the {@link StoreStampedEnvelopeField | store-stamped
75
- * fields} (fgv derives `id` from the codec; the store stamps the rest) plus the
76
- * typed body. Every candidate body is validated against the kind's registered
77
- * Converter before it can reach the store (the typed validation boundary).
78
- * @public
79
- */
80
- export interface ICandidateRecord {
81
- /** The host-supplied envelope, minus the store-stamped fields. */
82
- readonly envelope: Omit<IMemoryEnvelope, StoreStampedEnvelopeField>;
83
- /** The per-kind body (a markdown string in v1), validated on ingest. */
84
- readonly body: unknown;
85
- }
86
-
87
- /**
88
- * A near-duplicate candidate surfaced to the {@link IEntityResolver} by stage-4
89
- * layer-2 similarity search: an existing record whose embedding is within the
90
- * similarity threshold of the incoming candidate.
91
- * @public
92
- */
93
- export interface IEntityResolutionCandidate {
94
- /**
95
- * The existing record's scope-qualified `(scope, id)` address. Scope-qualified
96
- * (not a bare {@link MemoryId}) because per-scope codecs legally mint the same
97
- * stem under different scopes — the {@link ResolutionVerdict} target the resolver
98
- * returns must round-trip this exact address so the write binds the intended
99
- * record.
100
- */
101
- readonly target: IEdgeTarget;
102
- /** The existing record. */
103
- readonly record: IMemoryRecord<unknown>;
104
- /** The backend similarity score (higher = more similar). */
105
- readonly score: number;
106
- }
107
-
108
- /**
109
- * The four dedup verdicts a {@link IEntityResolver} (or fgv's exact-match layer)
110
- * returns for a candidate. See the design note §3 for the verdict → write
111
- * disposition mapping. Each target-bearing arm carries a scope-qualified
112
- * {@link IEdgeTarget} (not a bare {@link MemoryId}) so the verdict resolves to a
113
- * single record even when a filename stem is reused across scopes.
114
- * @public
115
- */
116
- export type ResolutionVerdict =
117
- | { readonly verdict: 'new' }
118
- | { readonly verdict: 'duplicate-of'; readonly target: IEdgeTarget }
119
- | { readonly verdict: 'supersede'; readonly target: IEdgeTarget }
120
- | { readonly verdict: 'merge-into'; readonly target: IEdgeTarget };
121
-
122
- /**
123
- * How a candidate was ultimately written (or not) after resolution.
124
- *
125
- * - `written` — persisted as a fresh record (verdict `new`), or as a superseding
126
- * record (verdict `supersede`).
127
- * - `deduped` — not written; an existing record satisfied it (verdict
128
- * `duplicate-of`, incl. every layer-1 exact `{ kind, body }` match).
129
- * - `merged` — merged into an existing target entity (verdict `merge-into`).
130
- * @public
131
- */
132
- export type IngestDisposition = 'written' | 'deduped' | 'merged';
133
-
134
- /**
135
- * A stage-5 attributed edge proposal: the {@link ICandidateEdge.edge | edge} to
136
- * add, sourced from {@link ICandidateEdge.source | source}. The source MUST be a
137
- * candidate being written in this ingest (edges land on the source record's
138
- * `envelope.links`); the edge's `target` must resolve to a sibling candidate or
139
- * an existing store record.
140
- * @public
141
- */
142
- export interface ICandidateEdge {
143
- /** The scope-qualified reference (codec `(scope, idStem)`) of the candidate the edge originates from. */
144
- readonly source: IEdgeTarget;
145
- /** The attributed edge (type / target / optional confidence / provenance). */
146
- readonly edge: IEdge;
147
- }
148
-
149
- /**
150
- * Per-candidate outcome of an ingest run.
151
- * @public
152
- */
153
- export interface IIngestedRecordResult {
154
- /** The candidate the outcome is for. */
155
- readonly candidate: ICandidateRecord;
156
- /** The resolution verdict fgv reached (or the resolver returned). */
157
- readonly resolution: ResolutionVerdict;
158
- /** What the write ultimately did. */
159
- readonly disposition: IngestDisposition;
160
- /**
161
- * The stored record's id: the newly-written id (`written` / `merged`), or the
162
- * existing target's id (`deduped`).
163
- */
164
- readonly id: MemoryId;
165
- /** The persisted record, when a write happened (`written` / `merged`). */
166
- readonly record?: IMemoryRecord<unknown>;
167
- /** The stage-5 edges attached to this candidate before the write. */
168
- readonly edges: ReadonlyArray<ICandidateEdge>;
169
- /**
170
- * Informational diagnostic, set to `'temporal-versioned'` when the
171
- * contradicts→temporal interlock is recognized: a `contradicts` edge was
172
- * attached to a candidate of a temporal kind.
173
- *
174
- * @remarks
175
- * A temporal kind ALWAYS writes through the store's versioned put path (that is
176
- * the codec's `isVersioned` behavior — the prior version is invalidated and a
177
- * new version written on every write, contradicts edge or not). This flag does
178
- * NOT cause that routing; it is a diagnostic marker that the contradicts-driven
179
- * scenario occurred, so callers can distinguish a contradiction-superseding
180
- * version from an ordinary revision.
181
- */
182
- readonly interlock?: 'temporal-versioned';
183
- }
184
-
185
- /**
186
- * The result of ingesting a single {@link IIngestItem}: the item plus the
187
- * per-candidate outcomes (one item can yield zero or many candidate records).
188
- * @public
189
- */
190
- export interface IIngestItemResult {
191
- /** The item that was ingested. */
192
- readonly item: IIngestItem;
193
- /** The per-candidate outcomes, in extraction order. */
194
- readonly records: ReadonlyArray<IIngestedRecordResult>;
195
- }