@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,226 +0,0 @@
1
- /*
2
- * Copyright (c) 2026 Erik Fortune
3
- * SPDX-License-Identifier: MIT
4
- */
5
-
6
- import '@fgv/ts-utils-jest';
7
- import {
8
- AsOfRetriever,
9
- CurrentValidRetriever,
10
- HistoryRetriever,
11
- HybridRetriever,
12
- IIndexedMemoryRecord,
13
- IMemoryRecord,
14
- Kind,
15
- MemoryIndex,
16
- MemoryScopeKey,
17
- RecencyRetriever,
18
- ScoreUnionMergeStrategy,
19
- envelopeConverter
20
- } from '../../../index';
21
-
22
- const factKind: Kind = 'fact' as Kind;
23
-
24
- interface IVersionSpec {
25
- readonly entityId: string;
26
- readonly seq: number;
27
- readonly validAt: number;
28
- // eslint-disable-next-line @rushstack/no-new-null -- invalid_at null is the meaningful still-valid sentinel
29
- readonly invalidAt?: number | null;
30
- readonly kind?: string;
31
- }
32
-
33
- function versionEntry(spec: IVersionSpec): IIndexedMemoryRecord {
34
- const temporal: Record<string, unknown> = { valid_at: spec.validAt };
35
- if (spec.invalidAt !== undefined) {
36
- temporal.invalid_at = spec.invalidAt;
37
- }
38
- const record: IMemoryRecord<unknown> = {
39
- envelope: envelopeConverter
40
- .convert({
41
- id: `${spec.entityId}-v${spec.seq}`,
42
- entityId: spec.entityId,
43
- kind: spec.kind ?? 'fact',
44
- tags: [],
45
- links: [],
46
- created: spec.validAt,
47
- updated: spec.validAt,
48
- seq: spec.seq,
49
- contentHash: `h-${spec.entityId}-${spec.seq}`,
50
- provenance: { source: 'agent' },
51
- temporal
52
- })
53
- .orThrow(),
54
- body: `${spec.entityId} v${spec.seq}`
55
- };
56
- return { scope: `facts/entities/${spec.entityId}` as MemoryScopeKey, record };
57
- }
58
-
59
- /** A flat (non-temporal) entry, to prove the temporal retrievers ignore it. */
60
- function flatEntry(id: string): IIndexedMemoryRecord {
61
- const record: IMemoryRecord<unknown> = {
62
- envelope: envelopeConverter
63
- .convert({
64
- id,
65
- entityId: id,
66
- kind: 'knowledge',
67
- tags: [],
68
- links: [],
69
- created: 0,
70
- updated: 0,
71
- seq: 0,
72
- contentHash: `h-${id}`,
73
- provenance: { source: 'agent' }
74
- })
75
- .orThrow(),
76
- body: id
77
- };
78
- return { scope: 'knowledge' as MemoryScopeKey, record };
79
- }
80
-
81
- function ids(records: ReadonlyArray<IMemoryRecord<unknown>>): string[] {
82
- return records.map((r) => r.envelope.id as string);
83
- }
84
-
85
- // fact-1: v1 [100,200), v2 [200,∞) current. fact-2: v1 [150,∞) current. Plus a flat doc.
86
- function buildIndex(): MemoryIndex {
87
- const index = MemoryIndex.create().orThrow();
88
- index
89
- .rebuild([
90
- versionEntry({ entityId: 'fact-1', seq: 1, validAt: 100, invalidAt: 200 }),
91
- versionEntry({ entityId: 'fact-1', seq: 2, validAt: 200 }),
92
- versionEntry({ entityId: 'fact-2', seq: 3, validAt: 150 }),
93
- flatEntry('doc-a')
94
- ])
95
- .orThrow();
96
- return index;
97
- }
98
-
99
- describe('temporal retrievers', () => {
100
- const index: MemoryIndex = buildIndex();
101
-
102
- describe('CurrentValidRetriever', () => {
103
- const retriever = CurrentValidRetriever.create(index).orThrow();
104
-
105
- test('declares supportsTemporalQuery', () => {
106
- expect(retriever.capabilities.supportsTemporalQuery).toBe(true);
107
- });
108
-
109
- test('returns the current version per temporal entity, ignoring flat records', async () => {
110
- expect(await retriever.retrieve({})).toSucceedAndSatisfy((records) => {
111
- expect(ids(records).sort()).toEqual(['fact-1-v2', 'fact-2-v3']);
112
- });
113
- });
114
-
115
- test('honors scope / kind pre-filter and limit', async () => {
116
- expect(await retriever.retrieve({ kind: factKind, limit: 1 })).toSucceedAndSatisfy((records) => {
117
- expect(records).toHaveLength(1);
118
- });
119
- });
120
- });
121
-
122
- describe('AsOfRetriever', () => {
123
- const retriever = AsOfRetriever.create(index).orThrow();
124
-
125
- test('empty when no asOf axis is supplied', async () => {
126
- expect(await retriever.retrieve({})).toSucceedWith([]);
127
- });
128
-
129
- test('returns the version valid at asOf per entity', async () => {
130
- expect(await retriever.retrieve({ asOf: 150 })).toSucceedAndSatisfy((records) => {
131
- // fact-1 v1 valid at 150; fact-2 v1 valid at 150.
132
- expect(ids(records).sort()).toEqual(['fact-1-v1', 'fact-2-v3']);
133
- });
134
- expect(await retriever.retrieve({ asOf: 250 })).toSucceedAndSatisfy((records) => {
135
- expect(ids(records).sort()).toEqual(['fact-1-v2', 'fact-2-v3']);
136
- });
137
- expect(await retriever.retrieve({ asOf: 50 })).toSucceedWith([]);
138
- });
139
- });
140
-
141
- describe('HistoryRetriever', () => {
142
- const retriever = HistoryRetriever.create(index).orThrow();
143
-
144
- test('returns all versions ascending by valid_at', async () => {
145
- expect(await retriever.retrieve({ kind: factKind })).toSucceedAndSatisfy((records) => {
146
- expect(ids(records)).toEqual(['fact-1-v1', 'fact-2-v3', 'fact-1-v2']);
147
- });
148
- });
149
-
150
- test('applies the limit after ordering', async () => {
151
- expect(await retriever.retrieve({ kind: factKind, limit: 2 })).toSucceedAndSatisfy((records) => {
152
- expect(ids(records)).toEqual(['fact-1-v1', 'fact-2-v3']);
153
- });
154
- });
155
-
156
- test('orders by created when a version has no valid_at', async () => {
157
- const idx = MemoryIndex.create().orThrow();
158
- const noValidAt: IIndexedMemoryRecord = {
159
- scope: 'facts/entities/nv' as MemoryScopeKey,
160
- record: {
161
- envelope: envelopeConverter
162
- .convert({
163
- id: 'nv-v1',
164
- entityId: 'nv',
165
- kind: 'fact',
166
- tags: [],
167
- links: [],
168
- created: 700,
169
- updated: 700,
170
- seq: 1,
171
- contentHash: 'h',
172
- provenance: { source: 'agent' },
173
- temporal: {}
174
- })
175
- .orThrow(),
176
- body: 'nv'
177
- }
178
- };
179
- idx.rebuild([noValidAt, versionEntry({ entityId: 'early', seq: 2, validAt: 100 })]).orThrow();
180
- const r = HistoryRetriever.create(idx).orThrow();
181
- // `nv` has no valid_at → its start defaults to created (700), after early (100).
182
- expect(await r.retrieve({})).toSucceedAndSatisfy((records) => {
183
- expect(ids(records)).toEqual(['early-v2', 'nv-v1']);
184
- });
185
- });
186
-
187
- test('breaks an equal-valid_at tie by ascending seq', async () => {
188
- // Two versions of one entity sharing a valid_at — the seq tiebreak orders them.
189
- const tieIndex = MemoryIndex.create().orThrow();
190
- tieIndex
191
- .rebuild([
192
- versionEntry({ entityId: 'tie', seq: 5, validAt: 500, invalidAt: 500 }),
193
- versionEntry({ entityId: 'tie', seq: 4, validAt: 500 })
194
- ])
195
- .orThrow();
196
- const tieRetriever = HistoryRetriever.create(tieIndex).orThrow();
197
- expect(await tieRetriever.retrieve({})).toSucceedAndSatisfy((records) => {
198
- expect(ids(records)).toEqual(['tie-v4', 'tie-v5']);
199
- });
200
- });
201
- });
202
-
203
- describe('loud-degrade + Hybrid composite', () => {
204
- test('a non-temporal retriever loud-degrades on an asOf query', async () => {
205
- const recency = RecencyRetriever.create(index).orThrow();
206
- expect(await recency.retrieve({ asOf: 150 })).toFailWith(/temporal query requires temporal index/i);
207
- });
208
-
209
- test('a Hybrid of [Recency, AsOf] lights up temporal recall via the temporal child', async () => {
210
- const recency = RecencyRetriever.create(index).orThrow();
211
- const asOf = AsOfRetriever.create(index).orThrow();
212
- const hybrid = HybridRetriever.create(
213
- [recency, asOf],
214
- ScoreUnionMergeStrategy.create().orThrow()
215
- ).orThrow();
216
- // The union supports temporal query, so the guard passes; Recency gets asOf
217
- // stripped (returns everything), AsOf returns the valid-at versions.
218
- expect(hybrid.capabilities.supportsTemporalQuery).toBe(true);
219
- expect(await hybrid.retrieve({ asOf: 250, kind: factKind })).toSucceedAndSatisfy((records) => {
220
- // fact-1-v2 is surfaced by BOTH (recency all + asOf), so it ranks first.
221
- expect(ids(records)[0]).toBe('fact-1-v2');
222
- expect(ids(records)).toContain('fact-2-v3');
223
- });
224
- });
225
- });
226
- });
@@ -1,158 +0,0 @@
1
- /*
2
- * Copyright (c) 2026 Erik Fortune
3
- * SPDX-License-Identifier: MIT
4
- */
5
-
6
- /**
7
- * Antagonist torture tests — bi-temporal / two-clock boundary math (target class
8
- * 2), complementing `temporalCodec.test.ts` (which already covers the
9
- * `invalid_at`-exclusive boundary and the future-dated-supersede no-gap case).
10
- * This file targets two remaining gaps: the `valid_at`-inclusive boundary, and
11
- * an out-of-order sequence of `valid_at` writes.
12
- */
13
-
14
- import '@fgv/ts-utils-jest';
15
- import { Converters } from '@fgv/ts-utils';
16
- import { FileTree } from '@fgv/ts-json-base';
17
- import {
18
- BodyConverterRegistry,
19
- EntityId,
20
- FileTreeMemoryStore,
21
- IBodyConverterRegistry,
22
- IIdentityCodec,
23
- IMemoryRecord,
24
- IWritePolicy,
25
- Kind,
26
- MemoryScopeKey,
27
- TemporalIdentityCodec,
28
- TemporalVersionedPolicy,
29
- envelopeConverter,
30
- isVersionValidAt
31
- } from '../../../index';
32
-
33
- const factKind: Kind = 'fact' as Kind;
34
- const factScope: MemoryScopeKey = 'facts/entities/fact-1' as MemoryScopeKey;
35
-
36
- function mutableRoot(): FileTree.IMutableFileTreeDirectoryItem {
37
- const tree = FileTree.inMemory([], { mutable: true }).orThrow();
38
- const root = tree.getDirectory('/').orThrow();
39
- if (!FileTree.isMutableDirectoryItem(root)) {
40
- throw new Error('expected a mutable root directory');
41
- }
42
- return root;
43
- }
44
-
45
- function registry(): IBodyConverterRegistry {
46
- const reg = BodyConverterRegistry.create().orThrow();
47
- reg.register(factKind, Converters.string);
48
- return reg;
49
- }
50
-
51
- const codecs: ReadonlyMap<Kind, IIdentityCodec> = new Map<Kind, IIdentityCodec>([
52
- [factKind, TemporalIdentityCodec.create('facts').orThrow()]
53
- ]);
54
- const policies: ReadonlyMap<Kind, IWritePolicy> = new Map<Kind, IWritePolicy>([
55
- [factKind, TemporalVersionedPolicy.create().orThrow()]
56
- ]);
57
-
58
- function factRecordAt(entityId: string, body: string, validAt?: number): IMemoryRecord<unknown> {
59
- return {
60
- envelope: {
61
- id: entityId as unknown as IMemoryRecord<unknown>['envelope']['id'],
62
- entityId: entityId as EntityId,
63
- kind: factKind,
64
- tags: [],
65
- links: [],
66
- created: 0,
67
- updated: 0,
68
- seq: 0,
69
- contentHash: '',
70
- provenance: { source: 'agent' },
71
- ...(validAt !== undefined ? { temporal: { valid_at: validAt } } : {})
72
- },
73
- body
74
- };
75
- }
76
-
77
- describe('antagonist — isVersionValidAt: valid_at is INCLUSIVE (start-boundary parity with the exclusive end)', () => {
78
- // Wrong impl this catches: a `>` (strict) comparison for the start boundary
79
- // instead of `<=`, which would incorrectly exclude the instant a version FIRST
80
- // became valid — an asymmetry with the already-tested exclusive end boundary.
81
- test('a version is valid AT its own valid_at instant, not just strictly after it', () => {
82
- const v1 = {
83
- envelope: envelopeConverter
84
- .convert({
85
- id: 'fact-1-v1',
86
- entityId: 'fact-1',
87
- kind: 'fact',
88
- tags: [],
89
- links: [],
90
- created: 100,
91
- updated: 100,
92
- seq: 1,
93
- contentHash: 'h1',
94
- provenance: { source: 'agent' },
95
- temporal: { valid_at: 100, invalid_at: 200 }
96
- })
97
- .orThrow(),
98
- body: 'v1'
99
- };
100
- expect(isVersionValidAt(v1, 99)).toBe(false); // strictly before
101
- expect(isVersionValidAt(v1, 100)).toBe(true); // AT valid_at — inclusive start
102
- expect(isVersionValidAt(v1, 199)).toBe(true); // just before invalid_at
103
- expect(isVersionValidAt(v1, 200)).toBe(false); // AT invalid_at — exclusive end
104
- });
105
- });
106
-
107
- describe('antagonist — out-of-order valid_at sequence (no gap/overlap regardless of write order)', () => {
108
- let clockValue: number;
109
- const clock = (): number => clockValue;
110
-
111
- function createStore(): FileTreeMemoryStore {
112
- return FileTreeMemoryStore.create({
113
- root: mutableRoot(),
114
- registry: registry(),
115
- codecs,
116
- writePolicies: policies,
117
- clock
118
- }).orThrow();
119
- }
120
-
121
- // Wrong impl this catches: an implementation that assumes valid_at is
122
- // monotonically increasing with seq (e.g. sorts by valid_at instead of seq for
123
- // "current" resolution), which breaks the moment a caller backdates a SECOND
124
- // time after an earlier future-dated write.
125
- test('two consecutive backdated writes still close each prior interval at the NEW valid_at, not now', async () => {
126
- const store = createStore();
127
- clockValue = 1000;
128
- // v1: valid_at defaults to transaction time (1000).
129
- expect(await store.put(factRecordAt('fact-1', 'blue'))).toSucceed();
130
-
131
- clockValue = 2000;
132
- // v2: backdated BEHIND v1's own valid_at (500 < 1000) — a correction asserting
133
- // "actually, this was already true starting at t=500".
134
- expect(await store.put(factRecordAt('fact-1', 'grey', 500))).toSucceedAndSatisfy((put) => {
135
- expect(put.envelope.temporal).toEqual({ valid_at: 500 });
136
- });
137
- // v1's interval must close at v2's valid_at (500), not the transaction time (2000).
138
- expect(await store.getById(factScope, 'fact-1-v1' as never)).toSucceedAndSatisfy((v1) => {
139
- expect(v1?.envelope.temporal).toEqual({ valid_at: 1000, invalid_at: 500 });
140
- });
141
-
142
- clockValue = 3000;
143
- // v3: backdated again, even further behind (100 < 500) — a SECOND correction.
144
- expect(await store.put(factRecordAt('fact-1', 'black', 100))).toSucceedAndSatisfy((put) => {
145
- expect(put.envelope.temporal).toEqual({ valid_at: 100 });
146
- });
147
- // v2's interval must close at v3's valid_at (100), not the transaction time (3000).
148
- expect(await store.getById(factScope, 'fact-1-v2' as never)).toSucceedAndSatisfy((v2) => {
149
- expect(v2?.envelope.temporal).toEqual({ valid_at: 500, invalid_at: 100 });
150
- });
151
- // `selectCurrentVersion` still resolves the newest write by `seq` (v3),
152
- // regardless of `valid_at` no longer being seq-monotonic.
153
- expect(await store.get(factKind, 'fact-1' as EntityId)).toSucceedAndSatisfy((cur) => {
154
- expect(cur?.envelope.id).toBe('fact-1-v3');
155
- expect(cur?.body).toBe('black');
156
- });
157
- });
158
- });