@psiclawops/hypermem 0.8.2 → 0.8.4

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 (735) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/INSTALL.md +135 -42
  3. package/README.md +36 -6
  4. package/dist/compaction-fence.d.ts +9 -1
  5. package/dist/compaction-fence.d.ts.map +1 -1
  6. package/dist/compaction-fence.js +25 -4
  7. package/dist/compositor.js +1 -1
  8. package/docs/API_STABILITY.md +33 -0
  9. package/docs/KNOWN_LIMITATIONS.md +35 -0
  10. package/docs/MEMORY_MD_AUTHORING.md +243 -0
  11. package/docs/MIGRATION.md +56 -0
  12. package/docs/MIGRATION_GUIDE.md +1083 -0
  13. package/docs/PHASE1-VALIDATION.md +132 -0
  14. package/docs/RELEASE_0.8.0_VALIDATION.md +70 -0
  15. package/docs/RELEASE_PROCESS.md +10 -0
  16. package/docs/ROADMAP.md +39 -0
  17. package/docs/SLASH_COMMANDS.md +93 -0
  18. package/docs/TUNING.md +866 -0
  19. package/install.sh +516 -0
  20. package/memory-plugin/dist/index.d.ts +24 -0
  21. package/memory-plugin/dist/index.d.ts.map +1 -0
  22. package/memory-plugin/dist/index.js +300 -0
  23. package/memory-plugin/dist/index.js.map +1 -0
  24. package/memory-plugin/openclaw.plugin.json +13 -0
  25. package/memory-plugin/package.json +64 -0
  26. package/node_modules/sqlite-vec/README.md +1 -0
  27. package/node_modules/sqlite-vec/index.cjs +46 -0
  28. package/node_modules/sqlite-vec/index.d.ts +17 -0
  29. package/node_modules/sqlite-vec/index.mjs +47 -0
  30. package/node_modules/sqlite-vec/package.json +1 -0
  31. package/node_modules/sqlite-vec-linux-x64/README.md +1 -0
  32. package/node_modules/sqlite-vec-linux-x64/package.json +1 -0
  33. package/node_modules/sqlite-vec-linux-x64/vec0.so +0 -0
  34. package/node_modules/zod/LICENSE +21 -0
  35. package/node_modules/zod/README.md +208 -0
  36. package/node_modules/zod/index.cjs +33 -0
  37. package/node_modules/zod/index.d.cts +4 -0
  38. package/node_modules/zod/index.d.ts +4 -0
  39. package/node_modules/zod/index.js +4 -0
  40. package/node_modules/zod/locales/index.cjs +17 -0
  41. package/node_modules/zod/locales/index.d.cts +1 -0
  42. package/node_modules/zod/locales/index.d.ts +1 -0
  43. package/node_modules/zod/locales/index.js +1 -0
  44. package/node_modules/zod/locales/package.json +6 -0
  45. package/node_modules/zod/mini/index.cjs +32 -0
  46. package/node_modules/zod/mini/index.d.cts +3 -0
  47. package/node_modules/zod/mini/index.d.ts +3 -0
  48. package/node_modules/zod/mini/index.js +3 -0
  49. package/node_modules/zod/mini/package.json +6 -0
  50. package/node_modules/zod/package.json +135 -0
  51. package/node_modules/zod/src/index.ts +4 -0
  52. package/node_modules/zod/src/locales/index.ts +1 -0
  53. package/node_modules/zod/src/mini/index.ts +3 -0
  54. package/node_modules/zod/src/v3/ZodError.ts +330 -0
  55. package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
  56. package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  57. package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
  58. package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
  59. package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
  60. package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
  61. package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
  62. package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
  63. package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
  64. package/node_modules/zod/src/v3/errors.ts +13 -0
  65. package/node_modules/zod/src/v3/external.ts +6 -0
  66. package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
  67. package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
  68. package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
  69. package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
  70. package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
  71. package/node_modules/zod/src/v3/helpers/util.ts +224 -0
  72. package/node_modules/zod/src/v3/index.ts +4 -0
  73. package/node_modules/zod/src/v3/locales/en.ts +124 -0
  74. package/node_modules/zod/src/v3/standard-schema.ts +113 -0
  75. package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
  76. package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
  77. package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
  78. package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
  79. package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
  80. package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
  81. package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
  82. package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
  83. package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
  84. package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
  85. package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
  86. package/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
  87. package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
  88. package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
  89. package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
  90. package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
  91. package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
  92. package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
  93. package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
  94. package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
  95. package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
  96. package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  97. package/node_modules/zod/src/v3/tests/function.test.ts +261 -0
  98. package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
  99. package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
  100. package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
  101. package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
  102. package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
  103. package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
  104. package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
  105. package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
  106. package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
  107. package/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
  108. package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
  109. package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
  110. package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
  111. package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
  112. package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
  113. package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
  114. package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
  115. package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
  116. package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
  117. package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
  118. package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
  119. package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
  120. package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
  121. package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
  122. package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
  123. package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
  124. package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
  125. package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
  126. package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
  127. package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
  128. package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
  129. package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
  130. package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
  131. package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
  132. package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
  133. package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
  134. package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
  135. package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
  136. package/node_modules/zod/src/v3/types.ts +5138 -0
  137. package/node_modules/zod/src/v4/classic/checks.ts +32 -0
  138. package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
  139. package/node_modules/zod/src/v4/classic/compat.ts +70 -0
  140. package/node_modules/zod/src/v4/classic/errors.ts +82 -0
  141. package/node_modules/zod/src/v4/classic/external.ts +51 -0
  142. package/node_modules/zod/src/v4/classic/from-json-schema.ts +643 -0
  143. package/node_modules/zod/src/v4/classic/index.ts +5 -0
  144. package/node_modules/zod/src/v4/classic/iso.ts +90 -0
  145. package/node_modules/zod/src/v4/classic/parse.ts +82 -0
  146. package/node_modules/zod/src/v4/classic/schemas.ts +2409 -0
  147. package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
  148. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +59 -0
  149. package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
  150. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
  151. package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
  152. package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
  153. package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
  154. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
  155. package/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
  156. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +276 -0
  157. package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
  158. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
  159. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +562 -0
  160. package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
  161. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
  162. package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
  163. package/node_modules/zod/src/v4/classic/tests/date.test.ts +62 -0
  164. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +302 -0
  165. package/node_modules/zod/src/v4/classic/tests/default.test.ts +365 -0
  166. package/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
  167. package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
  168. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +661 -0
  169. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
  170. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +595 -0
  171. package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
  172. package/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
  173. package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
  174. package/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
  175. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +734 -0
  176. package/node_modules/zod/src/v4/classic/tests/function.test.ts +360 -0
  177. package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
  178. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
  179. package/node_modules/zod/src/v4/classic/tests/index.test.ts +939 -0
  180. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +60 -0
  181. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +198 -0
  182. package/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
  183. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
  184. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +117 -0
  185. package/node_modules/zod/src/v4/classic/tests/map.test.ts +330 -0
  186. package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
  187. package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
  188. package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
  189. package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
  190. package/node_modules/zod/src/v4/classic/tests/number.test.ts +270 -0
  191. package/node_modules/zod/src/v4/classic/tests/object.test.ts +640 -0
  192. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +223 -0
  193. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +427 -0
  194. package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
  195. package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
  196. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +74 -0
  197. package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +282 -0
  198. package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
  199. package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
  200. package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
  201. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
  202. package/node_modules/zod/src/v4/classic/tests/record.test.ts +632 -0
  203. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +582 -0
  204. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +570 -0
  205. package/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
  206. package/node_modules/zod/src/v4/classic/tests/set.test.ts +181 -0
  207. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +134 -0
  208. package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
  209. package/node_modules/zod/src/v4/classic/tests/string.test.ts +1175 -0
  210. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +106 -0
  211. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +771 -0
  212. package/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
  213. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2990 -0
  214. package/node_modules/zod/src/v4/classic/tests/transform.test.ts +361 -0
  215. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +183 -0
  216. package/node_modules/zod/src/v4/classic/tests/union.test.ts +219 -0
  217. package/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
  218. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
  219. package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
  220. package/node_modules/zod/src/v4/core/api.ts +1798 -0
  221. package/node_modules/zod/src/v4/core/checks.ts +1293 -0
  222. package/node_modules/zod/src/v4/core/config.ts +15 -0
  223. package/node_modules/zod/src/v4/core/core.ts +138 -0
  224. package/node_modules/zod/src/v4/core/doc.ts +44 -0
  225. package/node_modules/zod/src/v4/core/errors.ts +448 -0
  226. package/node_modules/zod/src/v4/core/index.ts +16 -0
  227. package/node_modules/zod/src/v4/core/json-schema-generator.ts +126 -0
  228. package/node_modules/zod/src/v4/core/json-schema-processors.ts +667 -0
  229. package/node_modules/zod/src/v4/core/json-schema.ts +147 -0
  230. package/node_modules/zod/src/v4/core/parse.ts +195 -0
  231. package/node_modules/zod/src/v4/core/regexes.ts +183 -0
  232. package/node_modules/zod/src/v4/core/registries.ts +105 -0
  233. package/node_modules/zod/src/v4/core/schemas.ts +4538 -0
  234. package/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
  235. package/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
  236. package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
  237. package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
  238. package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
  239. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
  240. package/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
  241. package/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
  242. package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
  243. package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
  244. package/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +83 -0
  245. package/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +67 -0
  246. package/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
  247. package/node_modules/zod/src/v4/core/to-json-schema.ts +613 -0
  248. package/node_modules/zod/src/v4/core/util.ts +966 -0
  249. package/node_modules/zod/src/v4/core/versions.ts +5 -0
  250. package/node_modules/zod/src/v4/core/zsf.ts +323 -0
  251. package/node_modules/zod/src/v4/index.ts +4 -0
  252. package/node_modules/zod/src/v4/locales/ar.ts +115 -0
  253. package/node_modules/zod/src/v4/locales/az.ts +111 -0
  254. package/node_modules/zod/src/v4/locales/be.ts +176 -0
  255. package/node_modules/zod/src/v4/locales/bg.ts +128 -0
  256. package/node_modules/zod/src/v4/locales/ca.ts +116 -0
  257. package/node_modules/zod/src/v4/locales/cs.ts +118 -0
  258. package/node_modules/zod/src/v4/locales/da.ts +123 -0
  259. package/node_modules/zod/src/v4/locales/de.ts +116 -0
  260. package/node_modules/zod/src/v4/locales/en.ts +119 -0
  261. package/node_modules/zod/src/v4/locales/eo.ts +118 -0
  262. package/node_modules/zod/src/v4/locales/es.ts +141 -0
  263. package/node_modules/zod/src/v4/locales/fa.ts +126 -0
  264. package/node_modules/zod/src/v4/locales/fi.ts +121 -0
  265. package/node_modules/zod/src/v4/locales/fr-CA.ts +116 -0
  266. package/node_modules/zod/src/v4/locales/fr.ts +116 -0
  267. package/node_modules/zod/src/v4/locales/he.ts +246 -0
  268. package/node_modules/zod/src/v4/locales/hu.ts +117 -0
  269. package/node_modules/zod/src/v4/locales/hy.ts +164 -0
  270. package/node_modules/zod/src/v4/locales/id.ts +115 -0
  271. package/node_modules/zod/src/v4/locales/index.ts +49 -0
  272. package/node_modules/zod/src/v4/locales/is.ts +119 -0
  273. package/node_modules/zod/src/v4/locales/it.ts +116 -0
  274. package/node_modules/zod/src/v4/locales/ja.ts +114 -0
  275. package/node_modules/zod/src/v4/locales/ka.ts +123 -0
  276. package/node_modules/zod/src/v4/locales/kh.ts +7 -0
  277. package/node_modules/zod/src/v4/locales/km.ts +119 -0
  278. package/node_modules/zod/src/v4/locales/ko.ts +121 -0
  279. package/node_modules/zod/src/v4/locales/lt.ts +239 -0
  280. package/node_modules/zod/src/v4/locales/mk.ts +118 -0
  281. package/node_modules/zod/src/v4/locales/ms.ts +115 -0
  282. package/node_modules/zod/src/v4/locales/nl.ts +121 -0
  283. package/node_modules/zod/src/v4/locales/no.ts +116 -0
  284. package/node_modules/zod/src/v4/locales/ota.ts +117 -0
  285. package/node_modules/zod/src/v4/locales/pl.ts +118 -0
  286. package/node_modules/zod/src/v4/locales/ps.ts +126 -0
  287. package/node_modules/zod/src/v4/locales/pt.ts +116 -0
  288. package/node_modules/zod/src/v4/locales/ru.ts +176 -0
  289. package/node_modules/zod/src/v4/locales/sl.ts +118 -0
  290. package/node_modules/zod/src/v4/locales/sv.ts +119 -0
  291. package/node_modules/zod/src/v4/locales/ta.ts +118 -0
  292. package/node_modules/zod/src/v4/locales/th.ts +119 -0
  293. package/node_modules/zod/src/v4/locales/tr.ts +111 -0
  294. package/node_modules/zod/src/v4/locales/ua.ts +7 -0
  295. package/node_modules/zod/src/v4/locales/uk.ts +117 -0
  296. package/node_modules/zod/src/v4/locales/ur.ts +119 -0
  297. package/node_modules/zod/src/v4/locales/uz.ts +116 -0
  298. package/node_modules/zod/src/v4/locales/vi.ts +117 -0
  299. package/node_modules/zod/src/v4/locales/yo.ts +124 -0
  300. package/node_modules/zod/src/v4/locales/zh-CN.ts +116 -0
  301. package/node_modules/zod/src/v4/locales/zh-TW.ts +115 -0
  302. package/node_modules/zod/src/v4/mini/checks.ts +32 -0
  303. package/node_modules/zod/src/v4/mini/coerce.ts +27 -0
  304. package/node_modules/zod/src/v4/mini/external.ts +40 -0
  305. package/node_modules/zod/src/v4/mini/index.ts +3 -0
  306. package/node_modules/zod/src/v4/mini/iso.ts +66 -0
  307. package/node_modules/zod/src/v4/mini/parse.ts +14 -0
  308. package/node_modules/zod/src/v4/mini/schemas.ts +1916 -0
  309. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +24 -0
  310. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
  311. package/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
  312. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
  313. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +529 -0
  314. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
  315. package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
  316. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +5 -0
  317. package/node_modules/zod/src/v4/mini/tests/index.test.ts +963 -0
  318. package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
  319. package/node_modules/zod/src/v4/mini/tests/object.test.ts +227 -0
  320. package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
  321. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
  322. package/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
  323. package/node_modules/zod/src/v4/mini/tests/string.test.ts +347 -0
  324. package/node_modules/zod/src/v4-mini/index.ts +3 -0
  325. package/node_modules/zod/v3/ZodError.cjs +138 -0
  326. package/node_modules/zod/v3/ZodError.d.cts +164 -0
  327. package/node_modules/zod/v3/ZodError.d.ts +164 -0
  328. package/node_modules/zod/v3/ZodError.js +133 -0
  329. package/node_modules/zod/v3/errors.cjs +17 -0
  330. package/node_modules/zod/v3/errors.d.cts +5 -0
  331. package/node_modules/zod/v3/errors.d.ts +5 -0
  332. package/node_modules/zod/v3/errors.js +9 -0
  333. package/node_modules/zod/v3/external.cjs +22 -0
  334. package/node_modules/zod/v3/external.d.cts +6 -0
  335. package/node_modules/zod/v3/external.d.ts +6 -0
  336. package/node_modules/zod/v3/external.js +6 -0
  337. package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
  338. package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
  339. package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
  340. package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
  341. package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
  342. package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
  343. package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
  344. package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  345. package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
  346. package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
  347. package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
  348. package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  349. package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
  350. package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
  351. package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
  352. package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
  353. package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
  354. package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
  355. package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
  356. package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  357. package/node_modules/zod/v3/helpers/util.cjs +137 -0
  358. package/node_modules/zod/v3/helpers/util.d.cts +85 -0
  359. package/node_modules/zod/v3/helpers/util.d.ts +85 -0
  360. package/node_modules/zod/v3/helpers/util.js +133 -0
  361. package/node_modules/zod/v3/index.cjs +33 -0
  362. package/node_modules/zod/v3/index.d.cts +4 -0
  363. package/node_modules/zod/v3/index.d.ts +4 -0
  364. package/node_modules/zod/v3/index.js +4 -0
  365. package/node_modules/zod/v3/locales/en.cjs +112 -0
  366. package/node_modules/zod/v3/locales/en.d.cts +3 -0
  367. package/node_modules/zod/v3/locales/en.d.ts +3 -0
  368. package/node_modules/zod/v3/locales/en.js +109 -0
  369. package/node_modules/zod/v3/package.json +6 -0
  370. package/node_modules/zod/v3/standard-schema.cjs +2 -0
  371. package/node_modules/zod/v3/standard-schema.d.cts +102 -0
  372. package/node_modules/zod/v3/standard-schema.d.ts +102 -0
  373. package/node_modules/zod/v3/standard-schema.js +1 -0
  374. package/node_modules/zod/v3/types.cjs +3777 -0
  375. package/node_modules/zod/v3/types.d.cts +1034 -0
  376. package/node_modules/zod/v3/types.d.ts +1034 -0
  377. package/node_modules/zod/v3/types.js +3695 -0
  378. package/node_modules/zod/v4/classic/checks.cjs +33 -0
  379. package/node_modules/zod/v4/classic/checks.d.cts +1 -0
  380. package/node_modules/zod/v4/classic/checks.d.ts +1 -0
  381. package/node_modules/zod/v4/classic/checks.js +1 -0
  382. package/node_modules/zod/v4/classic/coerce.cjs +47 -0
  383. package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
  384. package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
  385. package/node_modules/zod/v4/classic/coerce.js +17 -0
  386. package/node_modules/zod/v4/classic/compat.cjs +61 -0
  387. package/node_modules/zod/v4/classic/compat.d.cts +50 -0
  388. package/node_modules/zod/v4/classic/compat.d.ts +50 -0
  389. package/node_modules/zod/v4/classic/compat.js +31 -0
  390. package/node_modules/zod/v4/classic/errors.cjs +74 -0
  391. package/node_modules/zod/v4/classic/errors.d.cts +30 -0
  392. package/node_modules/zod/v4/classic/errors.d.ts +30 -0
  393. package/node_modules/zod/v4/classic/errors.js +48 -0
  394. package/node_modules/zod/v4/classic/external.cjs +73 -0
  395. package/node_modules/zod/v4/classic/external.d.cts +15 -0
  396. package/node_modules/zod/v4/classic/external.d.ts +15 -0
  397. package/node_modules/zod/v4/classic/external.js +20 -0
  398. package/node_modules/zod/v4/classic/from-json-schema.cjs +610 -0
  399. package/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
  400. package/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
  401. package/node_modules/zod/v4/classic/from-json-schema.js +584 -0
  402. package/node_modules/zod/v4/classic/index.cjs +33 -0
  403. package/node_modules/zod/v4/classic/index.d.cts +4 -0
  404. package/node_modules/zod/v4/classic/index.d.ts +4 -0
  405. package/node_modules/zod/v4/classic/index.js +4 -0
  406. package/node_modules/zod/v4/classic/iso.cjs +60 -0
  407. package/node_modules/zod/v4/classic/iso.d.cts +22 -0
  408. package/node_modules/zod/v4/classic/iso.d.ts +22 -0
  409. package/node_modules/zod/v4/classic/iso.js +30 -0
  410. package/node_modules/zod/v4/classic/package.json +6 -0
  411. package/node_modules/zod/v4/classic/parse.cjs +41 -0
  412. package/node_modules/zod/v4/classic/parse.d.cts +31 -0
  413. package/node_modules/zod/v4/classic/parse.d.ts +31 -0
  414. package/node_modules/zod/v4/classic/parse.js +15 -0
  415. package/node_modules/zod/v4/classic/schemas.cjs +1272 -0
  416. package/node_modules/zod/v4/classic/schemas.d.cts +739 -0
  417. package/node_modules/zod/v4/classic/schemas.d.ts +739 -0
  418. package/node_modules/zod/v4/classic/schemas.js +1157 -0
  419. package/node_modules/zod/v4/core/api.cjs +1222 -0
  420. package/node_modules/zod/v4/core/api.d.cts +304 -0
  421. package/node_modules/zod/v4/core/api.d.ts +304 -0
  422. package/node_modules/zod/v4/core/api.js +1082 -0
  423. package/node_modules/zod/v4/core/checks.cjs +601 -0
  424. package/node_modules/zod/v4/core/checks.d.cts +278 -0
  425. package/node_modules/zod/v4/core/checks.d.ts +278 -0
  426. package/node_modules/zod/v4/core/checks.js +575 -0
  427. package/node_modules/zod/v4/core/core.cjs +83 -0
  428. package/node_modules/zod/v4/core/core.d.cts +70 -0
  429. package/node_modules/zod/v4/core/core.d.ts +70 -0
  430. package/node_modules/zod/v4/core/core.js +76 -0
  431. package/node_modules/zod/v4/core/doc.cjs +39 -0
  432. package/node_modules/zod/v4/core/doc.d.cts +14 -0
  433. package/node_modules/zod/v4/core/doc.d.ts +14 -0
  434. package/node_modules/zod/v4/core/doc.js +35 -0
  435. package/node_modules/zod/v4/core/errors.cjs +213 -0
  436. package/node_modules/zod/v4/core/errors.d.cts +220 -0
  437. package/node_modules/zod/v4/core/errors.d.ts +220 -0
  438. package/node_modules/zod/v4/core/errors.js +182 -0
  439. package/node_modules/zod/v4/core/index.cjs +47 -0
  440. package/node_modules/zod/v4/core/index.d.cts +16 -0
  441. package/node_modules/zod/v4/core/index.d.ts +16 -0
  442. package/node_modules/zod/v4/core/index.js +16 -0
  443. package/node_modules/zod/v4/core/json-schema-generator.cjs +99 -0
  444. package/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
  445. package/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
  446. package/node_modules/zod/v4/core/json-schema-generator.js +95 -0
  447. package/node_modules/zod/v4/core/json-schema-processors.cjs +648 -0
  448. package/node_modules/zod/v4/core/json-schema-processors.d.cts +49 -0
  449. package/node_modules/zod/v4/core/json-schema-processors.d.ts +49 -0
  450. package/node_modules/zod/v4/core/json-schema-processors.js +605 -0
  451. package/node_modules/zod/v4/core/json-schema.cjs +2 -0
  452. package/node_modules/zod/v4/core/json-schema.d.cts +88 -0
  453. package/node_modules/zod/v4/core/json-schema.d.ts +88 -0
  454. package/node_modules/zod/v4/core/json-schema.js +1 -0
  455. package/node_modules/zod/v4/core/package.json +6 -0
  456. package/node_modules/zod/v4/core/parse.cjs +131 -0
  457. package/node_modules/zod/v4/core/parse.d.cts +49 -0
  458. package/node_modules/zod/v4/core/parse.d.ts +49 -0
  459. package/node_modules/zod/v4/core/parse.js +93 -0
  460. package/node_modules/zod/v4/core/regexes.cjs +166 -0
  461. package/node_modules/zod/v4/core/regexes.d.cts +79 -0
  462. package/node_modules/zod/v4/core/regexes.d.ts +79 -0
  463. package/node_modules/zod/v4/core/regexes.js +133 -0
  464. package/node_modules/zod/v4/core/registries.cjs +56 -0
  465. package/node_modules/zod/v4/core/registries.d.cts +35 -0
  466. package/node_modules/zod/v4/core/registries.d.ts +35 -0
  467. package/node_modules/zod/v4/core/registries.js +51 -0
  468. package/node_modules/zod/v4/core/schemas.cjs +2124 -0
  469. package/node_modules/zod/v4/core/schemas.d.cts +1146 -0
  470. package/node_modules/zod/v4/core/schemas.d.ts +1146 -0
  471. package/node_modules/zod/v4/core/schemas.js +2093 -0
  472. package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
  473. package/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
  474. package/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
  475. package/node_modules/zod/v4/core/standard-schema.js +1 -0
  476. package/node_modules/zod/v4/core/to-json-schema.cjs +446 -0
  477. package/node_modules/zod/v4/core/to-json-schema.d.cts +114 -0
  478. package/node_modules/zod/v4/core/to-json-schema.d.ts +114 -0
  479. package/node_modules/zod/v4/core/to-json-schema.js +437 -0
  480. package/node_modules/zod/v4/core/util.cjs +710 -0
  481. package/node_modules/zod/v4/core/util.d.cts +199 -0
  482. package/node_modules/zod/v4/core/util.d.ts +199 -0
  483. package/node_modules/zod/v4/core/util.js +651 -0
  484. package/node_modules/zod/v4/core/versions.cjs +8 -0
  485. package/node_modules/zod/v4/core/versions.d.cts +5 -0
  486. package/node_modules/zod/v4/core/versions.d.ts +5 -0
  487. package/node_modules/zod/v4/core/versions.js +5 -0
  488. package/node_modules/zod/v4/index.cjs +22 -0
  489. package/node_modules/zod/v4/index.d.cts +3 -0
  490. package/node_modules/zod/v4/index.d.ts +3 -0
  491. package/node_modules/zod/v4/index.js +3 -0
  492. package/node_modules/zod/v4/locales/ar.cjs +133 -0
  493. package/node_modules/zod/v4/locales/ar.d.cts +5 -0
  494. package/node_modules/zod/v4/locales/ar.d.ts +4 -0
  495. package/node_modules/zod/v4/locales/ar.js +106 -0
  496. package/node_modules/zod/v4/locales/az.cjs +132 -0
  497. package/node_modules/zod/v4/locales/az.d.cts +5 -0
  498. package/node_modules/zod/v4/locales/az.d.ts +4 -0
  499. package/node_modules/zod/v4/locales/az.js +105 -0
  500. package/node_modules/zod/v4/locales/be.cjs +183 -0
  501. package/node_modules/zod/v4/locales/be.d.cts +5 -0
  502. package/node_modules/zod/v4/locales/be.d.ts +4 -0
  503. package/node_modules/zod/v4/locales/be.js +156 -0
  504. package/node_modules/zod/v4/locales/bg.cjs +147 -0
  505. package/node_modules/zod/v4/locales/bg.d.cts +5 -0
  506. package/node_modules/zod/v4/locales/bg.d.ts +4 -0
  507. package/node_modules/zod/v4/locales/bg.js +120 -0
  508. package/node_modules/zod/v4/locales/ca.cjs +134 -0
  509. package/node_modules/zod/v4/locales/ca.d.cts +5 -0
  510. package/node_modules/zod/v4/locales/ca.d.ts +4 -0
  511. package/node_modules/zod/v4/locales/ca.js +107 -0
  512. package/node_modules/zod/v4/locales/cs.cjs +138 -0
  513. package/node_modules/zod/v4/locales/cs.d.cts +5 -0
  514. package/node_modules/zod/v4/locales/cs.d.ts +4 -0
  515. package/node_modules/zod/v4/locales/cs.js +111 -0
  516. package/node_modules/zod/v4/locales/da.cjs +142 -0
  517. package/node_modules/zod/v4/locales/da.d.cts +5 -0
  518. package/node_modules/zod/v4/locales/da.d.ts +4 -0
  519. package/node_modules/zod/v4/locales/da.js +115 -0
  520. package/node_modules/zod/v4/locales/de.cjs +135 -0
  521. package/node_modules/zod/v4/locales/de.d.cts +5 -0
  522. package/node_modules/zod/v4/locales/de.d.ts +4 -0
  523. package/node_modules/zod/v4/locales/de.js +108 -0
  524. package/node_modules/zod/v4/locales/en.cjs +136 -0
  525. package/node_modules/zod/v4/locales/en.d.cts +5 -0
  526. package/node_modules/zod/v4/locales/en.d.ts +4 -0
  527. package/node_modules/zod/v4/locales/en.js +109 -0
  528. package/node_modules/zod/v4/locales/eo.cjs +136 -0
  529. package/node_modules/zod/v4/locales/eo.d.cts +5 -0
  530. package/node_modules/zod/v4/locales/eo.d.ts +4 -0
  531. package/node_modules/zod/v4/locales/eo.js +109 -0
  532. package/node_modules/zod/v4/locales/es.cjs +159 -0
  533. package/node_modules/zod/v4/locales/es.d.cts +5 -0
  534. package/node_modules/zod/v4/locales/es.d.ts +4 -0
  535. package/node_modules/zod/v4/locales/es.js +132 -0
  536. package/node_modules/zod/v4/locales/fa.cjs +141 -0
  537. package/node_modules/zod/v4/locales/fa.d.cts +5 -0
  538. package/node_modules/zod/v4/locales/fa.d.ts +4 -0
  539. package/node_modules/zod/v4/locales/fa.js +114 -0
  540. package/node_modules/zod/v4/locales/fi.cjs +139 -0
  541. package/node_modules/zod/v4/locales/fi.d.cts +5 -0
  542. package/node_modules/zod/v4/locales/fi.d.ts +4 -0
  543. package/node_modules/zod/v4/locales/fi.js +112 -0
  544. package/node_modules/zod/v4/locales/fr-CA.cjs +134 -0
  545. package/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
  546. package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
  547. package/node_modules/zod/v4/locales/fr-CA.js +107 -0
  548. package/node_modules/zod/v4/locales/fr.cjs +135 -0
  549. package/node_modules/zod/v4/locales/fr.d.cts +5 -0
  550. package/node_modules/zod/v4/locales/fr.d.ts +4 -0
  551. package/node_modules/zod/v4/locales/fr.js +108 -0
  552. package/node_modules/zod/v4/locales/he.cjs +241 -0
  553. package/node_modules/zod/v4/locales/he.d.cts +5 -0
  554. package/node_modules/zod/v4/locales/he.d.ts +4 -0
  555. package/node_modules/zod/v4/locales/he.js +214 -0
  556. package/node_modules/zod/v4/locales/hu.cjs +135 -0
  557. package/node_modules/zod/v4/locales/hu.d.cts +5 -0
  558. package/node_modules/zod/v4/locales/hu.d.ts +4 -0
  559. package/node_modules/zod/v4/locales/hu.js +108 -0
  560. package/node_modules/zod/v4/locales/hy.cjs +174 -0
  561. package/node_modules/zod/v4/locales/hy.d.cts +5 -0
  562. package/node_modules/zod/v4/locales/hy.d.ts +4 -0
  563. package/node_modules/zod/v4/locales/hy.js +147 -0
  564. package/node_modules/zod/v4/locales/id.cjs +133 -0
  565. package/node_modules/zod/v4/locales/id.d.cts +5 -0
  566. package/node_modules/zod/v4/locales/id.d.ts +4 -0
  567. package/node_modules/zod/v4/locales/id.js +106 -0
  568. package/node_modules/zod/v4/locales/index.cjs +104 -0
  569. package/node_modules/zod/v4/locales/index.d.cts +49 -0
  570. package/node_modules/zod/v4/locales/index.d.ts +49 -0
  571. package/node_modules/zod/v4/locales/index.js +49 -0
  572. package/node_modules/zod/v4/locales/is.cjs +136 -0
  573. package/node_modules/zod/v4/locales/is.d.cts +5 -0
  574. package/node_modules/zod/v4/locales/is.d.ts +4 -0
  575. package/node_modules/zod/v4/locales/is.js +109 -0
  576. package/node_modules/zod/v4/locales/it.cjs +135 -0
  577. package/node_modules/zod/v4/locales/it.d.cts +5 -0
  578. package/node_modules/zod/v4/locales/it.d.ts +4 -0
  579. package/node_modules/zod/v4/locales/it.js +108 -0
  580. package/node_modules/zod/v4/locales/ja.cjs +134 -0
  581. package/node_modules/zod/v4/locales/ja.d.cts +5 -0
  582. package/node_modules/zod/v4/locales/ja.d.ts +4 -0
  583. package/node_modules/zod/v4/locales/ja.js +107 -0
  584. package/node_modules/zod/v4/locales/ka.cjs +139 -0
  585. package/node_modules/zod/v4/locales/ka.d.cts +5 -0
  586. package/node_modules/zod/v4/locales/ka.d.ts +4 -0
  587. package/node_modules/zod/v4/locales/ka.js +112 -0
  588. package/node_modules/zod/v4/locales/kh.cjs +12 -0
  589. package/node_modules/zod/v4/locales/kh.d.cts +5 -0
  590. package/node_modules/zod/v4/locales/kh.d.ts +5 -0
  591. package/node_modules/zod/v4/locales/kh.js +5 -0
  592. package/node_modules/zod/v4/locales/km.cjs +137 -0
  593. package/node_modules/zod/v4/locales/km.d.cts +5 -0
  594. package/node_modules/zod/v4/locales/km.d.ts +4 -0
  595. package/node_modules/zod/v4/locales/km.js +110 -0
  596. package/node_modules/zod/v4/locales/ko.cjs +138 -0
  597. package/node_modules/zod/v4/locales/ko.d.cts +5 -0
  598. package/node_modules/zod/v4/locales/ko.d.ts +4 -0
  599. package/node_modules/zod/v4/locales/ko.js +111 -0
  600. package/node_modules/zod/v4/locales/lt.cjs +230 -0
  601. package/node_modules/zod/v4/locales/lt.d.cts +5 -0
  602. package/node_modules/zod/v4/locales/lt.d.ts +4 -0
  603. package/node_modules/zod/v4/locales/lt.js +203 -0
  604. package/node_modules/zod/v4/locales/mk.cjs +136 -0
  605. package/node_modules/zod/v4/locales/mk.d.cts +5 -0
  606. package/node_modules/zod/v4/locales/mk.d.ts +4 -0
  607. package/node_modules/zod/v4/locales/mk.js +109 -0
  608. package/node_modules/zod/v4/locales/ms.cjs +134 -0
  609. package/node_modules/zod/v4/locales/ms.d.cts +5 -0
  610. package/node_modules/zod/v4/locales/ms.d.ts +4 -0
  611. package/node_modules/zod/v4/locales/ms.js +107 -0
  612. package/node_modules/zod/v4/locales/nl.cjs +137 -0
  613. package/node_modules/zod/v4/locales/nl.d.cts +5 -0
  614. package/node_modules/zod/v4/locales/nl.d.ts +4 -0
  615. package/node_modules/zod/v4/locales/nl.js +110 -0
  616. package/node_modules/zod/v4/locales/no.cjs +135 -0
  617. package/node_modules/zod/v4/locales/no.d.cts +5 -0
  618. package/node_modules/zod/v4/locales/no.d.ts +4 -0
  619. package/node_modules/zod/v4/locales/no.js +108 -0
  620. package/node_modules/zod/v4/locales/ota.cjs +136 -0
  621. package/node_modules/zod/v4/locales/ota.d.cts +5 -0
  622. package/node_modules/zod/v4/locales/ota.d.ts +4 -0
  623. package/node_modules/zod/v4/locales/ota.js +109 -0
  624. package/node_modules/zod/v4/locales/package.json +6 -0
  625. package/node_modules/zod/v4/locales/pl.cjs +136 -0
  626. package/node_modules/zod/v4/locales/pl.d.cts +5 -0
  627. package/node_modules/zod/v4/locales/pl.d.ts +4 -0
  628. package/node_modules/zod/v4/locales/pl.js +109 -0
  629. package/node_modules/zod/v4/locales/ps.cjs +141 -0
  630. package/node_modules/zod/v4/locales/ps.d.cts +5 -0
  631. package/node_modules/zod/v4/locales/ps.d.ts +4 -0
  632. package/node_modules/zod/v4/locales/ps.js +114 -0
  633. package/node_modules/zod/v4/locales/pt.cjs +135 -0
  634. package/node_modules/zod/v4/locales/pt.d.cts +5 -0
  635. package/node_modules/zod/v4/locales/pt.d.ts +4 -0
  636. package/node_modules/zod/v4/locales/pt.js +108 -0
  637. package/node_modules/zod/v4/locales/ru.cjs +183 -0
  638. package/node_modules/zod/v4/locales/ru.d.cts +5 -0
  639. package/node_modules/zod/v4/locales/ru.d.ts +4 -0
  640. package/node_modules/zod/v4/locales/ru.js +156 -0
  641. package/node_modules/zod/v4/locales/sl.cjs +136 -0
  642. package/node_modules/zod/v4/locales/sl.d.cts +5 -0
  643. package/node_modules/zod/v4/locales/sl.d.ts +4 -0
  644. package/node_modules/zod/v4/locales/sl.js +109 -0
  645. package/node_modules/zod/v4/locales/sv.cjs +137 -0
  646. package/node_modules/zod/v4/locales/sv.d.cts +5 -0
  647. package/node_modules/zod/v4/locales/sv.d.ts +4 -0
  648. package/node_modules/zod/v4/locales/sv.js +110 -0
  649. package/node_modules/zod/v4/locales/ta.cjs +137 -0
  650. package/node_modules/zod/v4/locales/ta.d.cts +5 -0
  651. package/node_modules/zod/v4/locales/ta.d.ts +4 -0
  652. package/node_modules/zod/v4/locales/ta.js +110 -0
  653. package/node_modules/zod/v4/locales/th.cjs +137 -0
  654. package/node_modules/zod/v4/locales/th.d.cts +5 -0
  655. package/node_modules/zod/v4/locales/th.d.ts +4 -0
  656. package/node_modules/zod/v4/locales/th.js +110 -0
  657. package/node_modules/zod/v4/locales/tr.cjs +132 -0
  658. package/node_modules/zod/v4/locales/tr.d.cts +5 -0
  659. package/node_modules/zod/v4/locales/tr.d.ts +4 -0
  660. package/node_modules/zod/v4/locales/tr.js +105 -0
  661. package/node_modules/zod/v4/locales/ua.cjs +12 -0
  662. package/node_modules/zod/v4/locales/ua.d.cts +5 -0
  663. package/node_modules/zod/v4/locales/ua.d.ts +5 -0
  664. package/node_modules/zod/v4/locales/ua.js +5 -0
  665. package/node_modules/zod/v4/locales/uk.cjs +135 -0
  666. package/node_modules/zod/v4/locales/uk.d.cts +5 -0
  667. package/node_modules/zod/v4/locales/uk.d.ts +4 -0
  668. package/node_modules/zod/v4/locales/uk.js +108 -0
  669. package/node_modules/zod/v4/locales/ur.cjs +137 -0
  670. package/node_modules/zod/v4/locales/ur.d.cts +5 -0
  671. package/node_modules/zod/v4/locales/ur.d.ts +4 -0
  672. package/node_modules/zod/v4/locales/ur.js +110 -0
  673. package/node_modules/zod/v4/locales/uz.cjs +136 -0
  674. package/node_modules/zod/v4/locales/uz.d.cts +5 -0
  675. package/node_modules/zod/v4/locales/uz.d.ts +4 -0
  676. package/node_modules/zod/v4/locales/uz.js +109 -0
  677. package/node_modules/zod/v4/locales/vi.cjs +135 -0
  678. package/node_modules/zod/v4/locales/vi.d.cts +5 -0
  679. package/node_modules/zod/v4/locales/vi.d.ts +4 -0
  680. package/node_modules/zod/v4/locales/vi.js +108 -0
  681. package/node_modules/zod/v4/locales/yo.cjs +134 -0
  682. package/node_modules/zod/v4/locales/yo.d.cts +5 -0
  683. package/node_modules/zod/v4/locales/yo.d.ts +4 -0
  684. package/node_modules/zod/v4/locales/yo.js +107 -0
  685. package/node_modules/zod/v4/locales/zh-CN.cjs +136 -0
  686. package/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
  687. package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
  688. package/node_modules/zod/v4/locales/zh-CN.js +109 -0
  689. package/node_modules/zod/v4/locales/zh-TW.cjs +134 -0
  690. package/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
  691. package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
  692. package/node_modules/zod/v4/locales/zh-TW.js +107 -0
  693. package/node_modules/zod/v4/mini/checks.cjs +34 -0
  694. package/node_modules/zod/v4/mini/checks.d.cts +1 -0
  695. package/node_modules/zod/v4/mini/checks.d.ts +1 -0
  696. package/node_modules/zod/v4/mini/checks.js +1 -0
  697. package/node_modules/zod/v4/mini/coerce.cjs +52 -0
  698. package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
  699. package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
  700. package/node_modules/zod/v4/mini/coerce.js +22 -0
  701. package/node_modules/zod/v4/mini/external.cjs +63 -0
  702. package/node_modules/zod/v4/mini/external.d.cts +12 -0
  703. package/node_modules/zod/v4/mini/external.d.ts +12 -0
  704. package/node_modules/zod/v4/mini/external.js +14 -0
  705. package/node_modules/zod/v4/mini/index.cjs +32 -0
  706. package/node_modules/zod/v4/mini/index.d.cts +3 -0
  707. package/node_modules/zod/v4/mini/index.d.ts +3 -0
  708. package/node_modules/zod/v4/mini/index.js +3 -0
  709. package/node_modules/zod/v4/mini/iso.cjs +64 -0
  710. package/node_modules/zod/v4/mini/iso.d.cts +22 -0
  711. package/node_modules/zod/v4/mini/iso.d.ts +22 -0
  712. package/node_modules/zod/v4/mini/iso.js +34 -0
  713. package/node_modules/zod/v4/mini/package.json +6 -0
  714. package/node_modules/zod/v4/mini/parse.cjs +16 -0
  715. package/node_modules/zod/v4/mini/parse.d.cts +1 -0
  716. package/node_modules/zod/v4/mini/parse.d.ts +1 -0
  717. package/node_modules/zod/v4/mini/parse.js +1 -0
  718. package/node_modules/zod/v4/mini/schemas.cjs +1046 -0
  719. package/node_modules/zod/v4/mini/schemas.d.cts +427 -0
  720. package/node_modules/zod/v4/mini/schemas.d.ts +427 -0
  721. package/node_modules/zod/v4/mini/schemas.js +925 -0
  722. package/node_modules/zod/v4/package.json +6 -0
  723. package/node_modules/zod/v4-mini/index.cjs +32 -0
  724. package/node_modules/zod/v4-mini/index.d.cts +3 -0
  725. package/node_modules/zod/v4-mini/index.d.ts +3 -0
  726. package/node_modules/zod/v4-mini/index.js +3 -0
  727. package/node_modules/zod/v4-mini/package.json +6 -0
  728. package/package.json +19 -3
  729. package/plugin/dist/index.d.ts +153 -0
  730. package/plugin/dist/index.d.ts.map +1 -0
  731. package/plugin/dist/index.js +3154 -0
  732. package/plugin/dist/index.js.map +1 -0
  733. package/plugin/openclaw.plugin.json +13 -0
  734. package/plugin/package.json +65 -0
  735. package/scripts/install-runtime.mjs +81 -0
@@ -0,0 +1,1083 @@
1
+ # hypermem Migration Guide
2
+
3
+ _One guide for all migration paths. Find your current system in the table below and jump to that section._
4
+
5
+ ---
6
+
7
+ ## Quick lookup
8
+
9
+ | Your current setup | Jump to |
10
+ |---|---|
11
+ | No memory system (starting fresh) | [Fresh install](#fresh-install) |
12
+ | OpenClaw built-in memory (`memory.db`) | [From OpenClaw memory.db](#from-openclaw-memorydb) |
13
+ | OpenClaw QMD backend | [From QMD](#from-qmd) |
14
+ | ClawText context engine | [From ClawText](#from-clawtext) |
15
+ | Cognee (ECL pipeline) | [From Cognee](#from-cognee) |
16
+ | Mem0 (cloud or OSS) | [From Mem0](#from-mem0) |
17
+ | Zep (cloud or self-hosted) | [From Zep](#from-zep) |
18
+ | Honcho OpenClaw plugin | [From Honcho](#from-honcho) |
19
+ | OpenClaw memory-lancedb plugin | [From memory-lancedb](#from-memory-lancedb) |
20
+ | Markdown MEMORY.md + daily files only | [From MEMORY.md files](#from-memorymd-files) |
21
+ | Something else / custom engine | [From a custom system](#from-a-custom-system) |
22
+
23
+ ---
24
+
25
+ ## What hypermem stores
26
+
27
+ Understanding the data model sets expectations for what migrates and what doesn't.
28
+
29
+ **Migrates cleanly from most systems:**
30
+ - Conversation history (messages, roles, timestamps)
31
+ - Facts and preferences extracted from past conversations
32
+ - Structured knowledge entries
33
+
34
+ **Does not migrate (by design):**
35
+ - The hot cache — ephemeral, SQLite-backed in current releases, and rebuilt automatically on first use
36
+ - Embeddings — hypermem regenerates these from imported text on the next indexer run
37
+ - Tool call payloads from sessions where only text content was stored (tool results preserved as prose where available)
38
+ - Graph structure from graph databases (edges, weights, triplets) — these are flattened to facts on import
39
+
40
+ After any migration, the background indexer picks up imported content and builds vector search, topic maps, and knowledge synthesis automatically. A gateway restart is sufficient to trigger it.
41
+
42
+ ---
43
+
44
+ ## Universal pre-flight checklist
45
+
46
+ Run this before any migration path.
47
+
48
+ **1. Confirm hypermem is installed and has initialized:**
49
+ ```bash
50
+ openclaw plugins list | grep hypermem
51
+ ls ~/.openclaw/hypermem/library.db # must exist — send one message first if not
52
+ ```
53
+
54
+ If `library.db` doesn't exist yet, start the gateway with hypermem enabled, send one message to any agent, then come back. See [INSTALL.md](../INSTALL.md) for the full installation steps (git clone, build, wire both plugins), then restart and continue.
55
+
56
+ **2. Back up your existing data:**
57
+ ```bash
58
+ # OpenClaw built-in memory
59
+ cp ~/.openclaw/memory.db ~/.openclaw/memory.db.pre-hypermem 2>/dev/null || true
60
+
61
+ # ClawText
62
+ cp ~/.openclaw/workspace/.clawtext/session-intelligence.db \
63
+ ~/.openclaw/workspace/.clawtext/session-intelligence.db.pre-hypermem 2>/dev/null || true
64
+
65
+ # Cognee
66
+ cp -r ~/.cognee ~/.cognee.pre-hypermem 2>/dev/null || true
67
+ ```
68
+
69
+ **3. Every migration script defaults to dry-run.** Nothing is written until you add `--apply`. Read dry-run output before proceeding.
70
+
71
+ **4. You do not need to stop the gateway** for import-only migrations. hypermem uses WAL mode — live sessions and imports coexist safely.
72
+
73
+ ---
74
+
75
+ ## Fresh install
76
+
77
+ Nothing to migrate. Follow the [INSTALL.md](../INSTALL.md) guide (clone, build, wire plugins, restart). hypermem begins building context from your first conversation. The background indexer starts automatically.
78
+
79
+ ---
80
+
81
+ ## From OpenClaw memory.db
82
+
83
+ OpenClaw's built-in memory system stores facts, preferences, and context entries in `~/.openclaw/memory.db`. This script imports those entries as facts into hypermem's knowledge store.
84
+
85
+ **What maps to what:**
86
+
87
+ | memory.db | hypermem |
88
+ |---|---|
89
+ | Facts | `facts` table in `library.db` |
90
+ | Preferences | `facts` table with `domain: preference` |
91
+ | Context entries | `facts` table with `domain: general` |
92
+
93
+ **Step 1: Dry run**
94
+ ```bash
95
+ node scripts/migrate-memory-db.mjs --agent main
96
+ ```
97
+
98
+ Review output — it will show fact counts by type.
99
+
100
+ **Step 2: Import**
101
+ ```bash
102
+ node scripts/migrate-memory-db.mjs --agent main --apply
103
+ ```
104
+
105
+ **Step 3: Restart**
106
+ ```bash
107
+ openclaw gateway restart
108
+ ```
109
+
110
+ **Options:**
111
+ ```
112
+ --agent <id> Agent to import facts for (default: main)
113
+ --memory-db <path> Path to memory.db (default: ~/.openclaw/memory.db)
114
+ --hypermem-dir <path> hypermem data directory (default: ~/.openclaw/hypermem)
115
+ --limit <n> Import only first N facts (useful for testing)
116
+ --apply Actually write data (default is dry-run)
117
+ ```
118
+
119
+ > **Note:** The built-in memory.db is not agent-scoped. All entries go to the agent you specify with `--agent`. If multiple agents share the same memory.db, run the script once per agent.
120
+
121
+ ---
122
+
123
+ ## From QMD
124
+
125
+ QMD is the OpenClaw local-first memory sidecar — it runs behind `plugins.slots.memory = "memory-core"` with `memory.backend = "qmd"`. hypermem replaces the entire context engine, so this is a slot change: from `slots.memory` (memory-core/QMD) to `slots.contextEngine` (hypermem).
126
+
127
+ **Key difference:** QMD is additive — it augments what the agent receives. hypermem is authoritative — it owns the entire context assembly pipeline. The scopes are different.
128
+
129
+ **What maps to what:**
130
+
131
+ | QMD | hypermem |
132
+ |---|---|
133
+ | Workspace memory files (`MEMORY.md`, `memory/*.md`) | Still used — hypermem reads these directly during bootstrap |
134
+ | Per-agent collections | Per-agent message stores + `library.db` facts |
135
+ | BM25 + vector hybrid search | FTS5 + nomic-embed-text hybrid search |
136
+ | Extra indexed paths (`memory.qmd.paths`) | Not yet supported — see capability gaps below |
137
+ | Session transcript indexing | Covered natively — all message history is indexed |
138
+ | Reranking (QMD cross-encoder) | Not implemented — hypermem uses MMR diversification |
139
+
140
+ **Pre-flight:**
141
+
142
+ Check what QMD has indexed, and note any extra paths:
143
+ ```bash
144
+ ls ~/.openclaw/agents/<agentId>/qmd/
145
+ ```
146
+
147
+ If you used `memory.qmd.paths` to index extra directories, those paths are not picked up automatically. Copy key content into `MEMORY.md` or daily files before switching, or use the manual import script below.
148
+
149
+ If you used QMD session indexing (`memory.qmd.sessions.enabled: true`), hypermem handles sessions natively going forward. Historical transcripts are not auto-imported — add summaries of important historical sessions to a daily memory file if needed.
150
+
151
+ **Switch:**
152
+ ```bash
153
+ # Disable memory-core + QMD, replace with hypermem memory plugin
154
+ openclaw config set plugins.slots.memory hypermem
155
+
156
+ # Enable hypercompositor as the context engine
157
+ openclaw config set plugins.slots.contextEngine hypercompositor
158
+
159
+ # Remove QMD backend config if set
160
+ openclaw config unset agents.defaults.memory
161
+
162
+ openclaw gateway restart
163
+ ```
164
+
165
+ QMD collections at `~/.openclaw/agents/<agentId>/qmd/` are untouched. Delete them manually when satisfied the migration is complete.
166
+
167
+ **After restart:** hypermem bootstraps on first use and reads your workspace memory files. The background indexer builds facts and embeddings from `MEMORY.md` and daily files — no separate import step for file-based memory.
168
+
169
+ **If you had content in extra QMD paths**, import it manually:
170
+ ```js
171
+ // import-qmd-extras.mjs
172
+ import { HyperMem } from '@psiclawops/hypermem';
173
+ import { readFileSync } from 'node:fs';
174
+ import { join } from 'node:path';
175
+ import { homedir } from 'node:os';
176
+ import { glob } from 'node:fs/promises';
177
+
178
+ const agentId = process.argv[2] ?? 'main';
179
+ const extraDir = process.argv[3];
180
+ const dryRun = !process.argv.includes('--apply');
181
+
182
+ if (!extraDir) {
183
+ console.error('Usage: node import-qmd-extras.mjs <agentId> <directory> [--apply]');
184
+ process.exit(1);
185
+ }
186
+
187
+ const hm = await HyperMem.create({ dir: join(homedir(), '.openclaw/hypermem') });
188
+ let imported = 0;
189
+ const files = [];
190
+ for await (const f of glob('**/*.md', { cwd: extraDir })) files.push(f);
191
+
192
+ for (const file of files) {
193
+ const content = readFileSync(join(extraDir, file), 'utf-8');
194
+ const chunks = content.split(/\n{2,}/).filter(c => c.trim().length > 60);
195
+ for (const chunk of chunks) {
196
+ if (dryRun) {
197
+ console.log(`[dry-run] ${file}: ${chunk.slice(0, 80).trim()}...`);
198
+ } else {
199
+ await hm.addFact(agentId, chunk.trim(), {
200
+ domain: 'general',
201
+ source: `qmd-extra-migration:${file}`,
202
+ confidence: 0.8,
203
+ });
204
+ }
205
+ imported++;
206
+ }
207
+ }
208
+
209
+ console.log(`\n${dryRun ? '[dry-run] ' : ''}${imported} chunks from ${files.length} files`);
210
+ if (dryRun) console.log('Run with --apply to write data.');
211
+ ```
212
+
213
+ **Capability gaps vs QMD:**
214
+
215
+ | QMD feature | Status in hypermem |
216
+ |---|---|
217
+ | Reranking (cross-encoder) | Not implemented. Tracked for future release. |
218
+ | Extra path indexing | Not implemented. Use manual fact import as workaround. |
219
+ | Session transcript search | Covered natively. |
220
+ | BM25 hybrid search | Covered — FTS5 + vector hybrid with configurable weights. |
221
+ | Automatic fallback to builtin | Not applicable — hypermem does not fall back. |
222
+
223
+ ---
224
+
225
+ ## From ClawText
226
+
227
+ ClawText stores full conversation history in `session-intelligence.db`. This script imports all conversations with automatic agent identification from identity anchors.
228
+
229
+ **What maps to what:**
230
+
231
+ | ClawText | hypermem |
232
+ |---|---|
233
+ | Conversation history | Per-agent `messages.db` |
234
+ | Identity anchors | Used to route messages to correct agent DB |
235
+ | Optimization `.jsonl` logs | Not imported (operational data, not conversation history) |
236
+
237
+ **Step 1: Dry run**
238
+ ```bash
239
+ node scripts/migrate-clawtext.mjs
240
+ ```
241
+
242
+ **Step 2: Import**
243
+ ```bash
244
+ node scripts/migrate-clawtext.mjs --apply
245
+ ```
246
+
247
+ **Step 3: Restart**
248
+ ```bash
249
+ openclaw gateway restart
250
+ ```
251
+
252
+ **Options:**
253
+ ```
254
+ --apply Actually write data (default is dry-run)
255
+ --limit <n> Import only first N conversations
256
+ --clawtext-db <path> Path to session-intelligence.db
257
+ (default: ~/.openclaw/workspace/.clawtext/session-intelligence.db)
258
+ --hypermem-dir <path> hypermem data directory (default: ~/.openclaw/hypermem)
259
+ ```
260
+
261
+ Conversations without a detectable agent identity are routed to `main`.
262
+
263
+ ---
264
+
265
+ ## From Cognee
266
+
267
+ Cognee is a Python-based ECL (Extract, Cognify, Load) memory engine that stores knowledge in a graph database + vector store. hypermem is a Node.js context engine native to OpenClaw. This is a data migration, not a drop-in swap — the architectures are parallel approaches to the same problem.
268
+
269
+ **What maps to what:**
270
+
271
+ | Cognee | hypermem |
272
+ |---|---|
273
+ | Knowledge graph nodes (entities) | Facts (`facts` table in `library.db`) |
274
+ | Graph relationships / triplets | Knowledge entries (`knowledge` table) |
275
+ | Vector embeddings | Regenerated automatically by the hypermem indexer |
276
+ | Session memory | Per-agent message history (`messages.db` per agent) |
277
+ | Permanent memory | Facts + knowledge in `library.db` |
278
+ | User/tenant scoping | Agent scoping (`agent_id` on all records) |
279
+
280
+ **What does not migrate:** raw graph structure (edges, weights), Cognee's memify feedback loop state, embeddings (regenerated automatically after import).
281
+
282
+ **Step 1: Export your Cognee data**
283
+
284
+ Cognee stores data in whichever backend you configured. Export to a flat JSON file.
285
+
286
+ _Default SQLite backend:_
287
+ ```python
288
+ # export_cognee.py
289
+ import asyncio
290
+ import cognee
291
+ import json
292
+
293
+ async def main():
294
+ results = await cognee.search("*", query_type="CHUNKS")
295
+ with open("cognee_export.json", "w") as f:
296
+ json.dump(
297
+ [r.__dict__ if hasattr(r, '__dict__') else str(r) for r in results],
298
+ f, indent=2, default=str
299
+ )
300
+ print(f"Exported {len(results)} entries")
301
+
302
+ asyncio.run(main())
303
+ ```
304
+
305
+ For graph backends (Neo4j, Memgraph), export via their native query interfaces and produce a flat JSON list of `{ text, source, type }` objects.
306
+
307
+ **Step 2: Dry run**
308
+
309
+ Save this as `import-from-cognee.mjs` in the hypermem repo root:
310
+
311
+ ```js
312
+ // import-from-cognee.mjs
313
+ import { HyperMem } from '@psiclawops/hypermem';
314
+ import { readFileSync } from 'node:fs';
315
+ import { homedir } from 'node:os';
316
+ import { join } from 'node:path';
317
+
318
+ const agentId = process.argv[2] ?? 'main';
319
+ const exportPath = process.argv[3] ?? 'cognee_export.json';
320
+ const dryRun = !process.argv.includes('--apply');
321
+
322
+ const entries = JSON.parse(readFileSync(exportPath, 'utf-8'));
323
+ const hm = await HyperMem.create({ dir: join(homedir(), '.openclaw/hypermem') });
324
+
325
+ let imported = 0;
326
+ let skipped = 0;
327
+
328
+ for (const entry of entries) {
329
+ // Adapt this to match your export format
330
+ const text = entry.text ?? entry.content ?? entry.payload ?? JSON.stringify(entry);
331
+ if (!text || text.length < 40) { skipped++; continue; }
332
+
333
+ if (dryRun) {
334
+ console.log(`[dry-run] would import: ${text.slice(0, 80)}...`);
335
+ imported++;
336
+ continue;
337
+ }
338
+
339
+ await hm.addFact(agentId, text, {
340
+ domain: entry.type ?? 'general',
341
+ source: 'cognee-migration',
342
+ confidence: 0.85,
343
+ });
344
+ imported++;
345
+ }
346
+
347
+ console.log(`\n${dryRun ? '[dry-run] ' : ''}Imported: ${imported}, Skipped: ${skipped}`);
348
+ if (dryRun) console.log('Run with --apply to write data.');
349
+ ```
350
+
351
+ ```bash
352
+ node import-from-cognee.mjs main cognee_export.json
353
+ ```
354
+
355
+ **Step 3: Import**
356
+ ```bash
357
+ node import-from-cognee.mjs main cognee_export.json --apply
358
+ ```
359
+
360
+ **Step 4: Disable Cognee and switch to hypermem**
361
+
362
+ Stop the Cognee process / MCP server if running, then:
363
+ ```bash
364
+ openclaw config set plugins.slots.contextEngine hypercompositor
365
+ openclaw config set plugins.slots.memory hypermem
366
+ openclaw gateway restart
367
+ ```
368
+
369
+ Cognee and hypermem do not conflict at runtime (Cognee is a separate process), but there is no reason to run both.
370
+
371
+ **Verify imported facts:**
372
+ ```bash
373
+ node -e "
374
+ const { DatabaseSync } = require('node:sqlite');
375
+ const os = require('node:os'), path = require('node:path');
376
+ const db = new DatabaseSync(path.join(os.homedir(), '.openclaw/hypermem/library.db'), { readOnly: true });
377
+ const r = db.prepare(\"SELECT agent_id, COUNT(*) as cnt FROM facts WHERE source='cognee-migration' GROUP BY agent_id\").all();
378
+ r.forEach(x => console.log(x.agent_id + ': ' + x.cnt + ' imported facts'));
379
+ db.close();
380
+ "
381
+ ```
382
+
383
+ ---
384
+
385
+ ## From Mem0
386
+
387
+ Mem0 is a managed memory service (with an OSS self-hosted variant) that stores distilled facts per user or agent. It has a clean export API — this is one of the easier migrations.
388
+
389
+ **What maps to what:**
390
+
391
+ | Mem0 | hypermem |
392
+ |---|---|
393
+ | Memory entries (`memory` field) | Facts in `library.db` |
394
+ | `user_id` scoping | `agent_id` scoping |
395
+ | `agent_id` / `app_id` filters | `agent_id` in hypermem |
396
+ | `metadata` | Stored as fact metadata / domain |
397
+ | `created_at` | Preserved as fact timestamp |
398
+
399
+ **What does not migrate:** Mem0's internal vector embeddings (regenerated automatically), category labels beyond what fits in hypermem's domain field.
400
+
401
+ **Step 1: Export from Mem0**
402
+
403
+ _Cloud (managed API):_
404
+ ```python
405
+ # export_mem0.py
406
+ from mem0 import MemoryClient
407
+ import json, time
408
+
409
+ client = MemoryClient(api_key="your_mem0_api_key")
410
+
411
+ # Option A: export job (structured)
412
+ schema = {
413
+ "type": "object",
414
+ "properties": {
415
+ "memories": {
416
+ "type": "array",
417
+ "items": {
418
+ "type": "object",
419
+ "properties": {
420
+ "id": {"type": "string"},
421
+ "content": {"type": "string"},
422
+ "metadata": {"type": "object"},
423
+ "created_at": {"type": "string"}
424
+ }
425
+ }
426
+ }
427
+ }
428
+ }
429
+ response = client.create_memory_export(schema=schema, filters={})
430
+ export_id = response["id"]
431
+ time.sleep(5) # wait for job
432
+ export_data = client.get_memory_export(memory_export_id=export_id)
433
+ with open("mem0_export.json", "w") as f:
434
+ json.dump(export_data, f, indent=2)
435
+ print(f"Exported {len(export_data['memories'])} memories")
436
+ ```
437
+
438
+ _Or use `get_all()` for a raw list (OSS or cloud):_
439
+ ```python
440
+ from mem0 import MemoryClient
441
+ import json
442
+
443
+ client = MemoryClient(api_key="your_mem0_api_key")
444
+ result = client.get_all(filters={"user_id": "your_user_id"}, page_size=500)
445
+ with open("mem0_export.json", "w") as f:
446
+ # get_all returns {count, results: [{memory, id, metadata, ...}]}
447
+ json.dump(result, f, indent=2)
448
+ print(f"Exported {result['count']} memories")
449
+ ```
450
+
451
+ **Step 2: Dry run**
452
+ ```bash
453
+ node scripts/migrate-mem0.mjs --agent main mem0_export.json
454
+ ```
455
+
456
+ Save this as `scripts/migrate-mem0.mjs`:
457
+ ```js
458
+ // scripts/migrate-mem0.mjs
459
+ import { HyperMem } from '@psiclawops/hypermem';
460
+ import { readFileSync } from 'node:fs';
461
+ import { homedir } from 'node:os';
462
+ import { join } from 'node:path';
463
+
464
+ const agentId = process.argv[2] ?? 'main';
465
+ const exportPath = process.argv[3] ?? 'mem0_export.json';
466
+ const dryRun = !process.argv.includes('--apply');
467
+
468
+ const raw = JSON.parse(readFileSync(exportPath, 'utf-8'));
469
+ // handle both export job format {memories: [...]} and get_all format {results: [...]}
470
+ const entries = raw.memories ?? raw.results ?? raw;
471
+
472
+ const hm = await HyperMem.create({ dir: join(homedir(), '.openclaw/hypermem') });
473
+ let imported = 0, skipped = 0;
474
+
475
+ for (const entry of entries) {
476
+ // export job uses 'content', get_all uses 'memory'
477
+ const text = entry.content ?? entry.memory ?? '';
478
+ if (!text || text.length < 20) { skipped++; continue; }
479
+
480
+ const domain = entry.metadata?.category ?? entry.metadata?.type ?? 'general';
481
+
482
+ if (dryRun) {
483
+ console.log(`[dry-run] ${domain}: ${text.slice(0, 80)}`);
484
+ imported++;
485
+ continue;
486
+ }
487
+
488
+ await hm.addFact(agentId, text, {
489
+ domain,
490
+ source: 'mem0-migration',
491
+ confidence: 0.9,
492
+ createdAt: entry.created_at,
493
+ });
494
+ imported++;
495
+ }
496
+
497
+ console.log(`\n${dryRun ? '[dry-run] ' : ''}Imported: ${imported}, Skipped: ${skipped}`);
498
+ if (dryRun) console.log('Run with --apply to write data.');
499
+ ```
500
+
501
+ **Step 3: Import**
502
+ ```bash
503
+ node scripts/migrate-mem0.mjs --agent main mem0_export.json --apply
504
+ ```
505
+
506
+ **Step 4: Restart**
507
+ ```bash
508
+ openclaw gateway restart
509
+ ```
510
+
511
+ **Verify:**
512
+ ```bash
513
+ node -e "
514
+ const { DatabaseSync } = require('node:sqlite');
515
+ const os = require('node:os'), path = require('node:path');
516
+ const db = new DatabaseSync(path.join(os.homedir(), '.openclaw/hypermem/library.db'), { readOnly: true });
517
+ const r = db.prepare(\"SELECT COUNT(*) as cnt FROM facts WHERE source='mem0-migration'\").get();
518
+ console.log('Imported from Mem0:', r.cnt, 'facts');
519
+ db.close();
520
+ "
521
+ ```
522
+
523
+ ---
524
+
525
+ ## From Zep
526
+
527
+ Zep stores conversation history per session and builds a per-user knowledge graph on top. It runs either self-hosted or as a managed cloud service. The migration extracts session messages and any queryable facts.
528
+
529
+ **What maps to what:**
530
+
531
+ | Zep | hypermem |
532
+ |---|---|
533
+ | Session messages (`role`, `role_type`, `content`) | Per-agent `messages.db` |
534
+ | User-level knowledge graph facts | Facts in `library.db` |
535
+ | Group data (shared org context) | Facts in `library.db` with `domain: group` |
536
+ | `session_id` | hypermem session key |
537
+ | `user_id` | `agent_id` |
538
+
539
+ **What does not migrate:** Zep's internal graph edges/weights, fact ratings, ingestion-derived entity relationships (flattened to text facts on import).
540
+
541
+ **Step 1: Export from Zep**
542
+
543
+ ```python
544
+ # export_zep.py
545
+ from zep_cloud.client import Zep
546
+ import json
547
+
548
+ client = Zep(api_key="your_zep_api_key")
549
+ # For self-hosted: client = Zep(api_key="unused", base_url="http://localhost:8000")
550
+ # Note: api_key is required by the Pydantic validator even for self-hosted; any non-empty string works.
551
+
552
+ export = {"sessions": [], "facts": []}
553
+
554
+ # Export all users and their sessions
555
+ users = client.user.list() # paginate if needed
556
+ for user in users:
557
+ sessions = client.user.get_sessions(user.user_id)
558
+ for session in sessions:
559
+ messages = client.memory.get_session_messages(session.session_id)
560
+ export["sessions"].append({
561
+ "session_id": session.session_id,
562
+ "user_id": user.user_id,
563
+ "messages": [
564
+ {"role": m.role_type, "content": m.content, "created_at": str(m.created_at)}
565
+ for m in (messages.messages or [])
566
+ ]
567
+ })
568
+
569
+ # Export graph facts for this user
570
+ try:
571
+ graph_results = client.graph.search(query="", user_id=user.user_id, limit=500)
572
+ for edge in (graph_results.edges or []):
573
+ export["facts"].append({
574
+ "user_id": user.user_id,
575
+ "text": edge.fact,
576
+ "created_at": str(edge.created_at) if hasattr(edge, 'created_at') else None
577
+ })
578
+ except Exception:
579
+ pass # graph search requires at least one prior message
580
+
581
+ with open("zep_export.json", "w") as f:
582
+ json.dump(export, f, indent=2)
583
+ print(f"Exported {len(export['sessions'])} sessions, {len(export['facts'])} facts")
584
+ ```
585
+
586
+ **Step 2: Import**
587
+
588
+ Save as `scripts/migrate-zep.mjs`:
589
+ ```js
590
+ // scripts/migrate-zep.mjs
591
+ import { HyperMem } from '@psiclawops/hypermem';
592
+ import { readFileSync } from 'node:fs';
593
+ import { homedir } from 'node:os';
594
+ import { join } from 'node:path';
595
+
596
+ const agentId = process.argv[2] ?? 'main';
597
+ const exportPath = process.argv[3] ?? 'zep_export.json';
598
+ const dryRun = !process.argv.includes('--apply');
599
+
600
+ const { sessions = [], facts = [] } = JSON.parse(readFileSync(exportPath, 'utf-8'));
601
+ const hm = await HyperMem.create({ dir: join(homedir(), '.openclaw/hypermem') });
602
+
603
+ let msgCount = 0, factCount = 0;
604
+
605
+ // Import session messages
606
+ for (const session of sessions) {
607
+ const sessionKey = `zep-migration:${session.session_id}`;
608
+ for (const msg of session.messages ?? []) {
609
+ if (!msg.content) continue;
610
+ if (dryRun) { console.log(`[dry-run] msg [${msg.role}]: ${msg.content.slice(0, 60)}`); msgCount++; continue; }
611
+ if (msg.role === 'user' || msg.role === 'human') {
612
+ await hm.recordUserMessage(agentId, sessionKey, msg.content);
613
+ } else {
614
+ await hm.recordAssistantMessage(agentId, sessionKey, {
615
+ role: 'assistant', textContent: msg.content, toolCalls: [],
616
+ createdAt: msg.created_at ?? new Date().toISOString(),
617
+ });
618
+ }
619
+ msgCount++;
620
+ }
621
+ }
622
+
623
+ // Import knowledge graph facts
624
+ for (const fact of facts) {
625
+ if (!fact.text || fact.text.length < 20) continue;
626
+ if (dryRun) { console.log(`[dry-run] fact: ${fact.text.slice(0, 80)}`); factCount++; continue; }
627
+ await hm.addFact(agentId, fact.text, {
628
+ domain: 'general',
629
+ source: 'zep-migration',
630
+ confidence: 0.85,
631
+ createdAt: fact.created_at,
632
+ });
633
+ factCount++;
634
+ }
635
+
636
+ console.log(`\n${dryRun ? '[dry-run] ' : ''}Messages: ${msgCount}, Facts: ${factCount}`);
637
+ if (dryRun) console.log('Run with --apply to write data.');
638
+ ```
639
+
640
+ ```bash
641
+ # Dry run
642
+ node scripts/migrate-zep.mjs main zep_export.json
643
+
644
+ # Apply
645
+ node scripts/migrate-zep.mjs main zep_export.json --apply
646
+
647
+ openclaw gateway restart
648
+ ```
649
+
650
+ > **Self-hosted Zep:** if you are running the open-source Zep server, you can also export directly from the underlying Postgres database. The `zep.messages` table has `session_id`, `role`, `content`, `created_at` — the import script above accepts the same JSON shape either way.
651
+
652
+ ---
653
+
654
+ ## From Honcho
655
+
656
+ Honcho is an OpenClaw plugin (`@honcho-ai/openclaw-honcho`) that persists conversations to the Honcho service (hosted or self-hosted) and builds user/agent models over time. Because it is a plugin that runs alongside OpenClaw, migration to hypermem is mostly a slot swap — the data that matters is already in your workspace files, and Honcho's conversation history lives in the Honcho service.
657
+
658
+ **What maps to what:**
659
+
660
+ | Honcho | hypermem |
661
+ |---|---|
662
+ | Workspace memory files (migrated on setup) | Still used — hypermem reads these directly |
663
+ | Honcho session messages | Per-agent `messages.db` (going forward) |
664
+ | Honcho user model / conclusions | Facts in `library.db` |
665
+ | `honcho_context` / `honcho_ask` tools | `memory_search` + hypermem context assembly |
666
+
667
+ **What does not migrate automatically:** Honcho's cross-session conclusions and user model from the Honcho service — these require an API export step below.
668
+
669
+ **Step 1: Export conclusions from Honcho**
670
+
671
+ ```python
672
+ # export_honcho.py
673
+ import requests, json, os
674
+
675
+ BASE_URL = os.getenv("HONCHO_BASE_URL", "https://api.honcho.dev")
676
+ API_KEY = os.getenv("HONCHO_API_KEY", "")
677
+ WORKSPACE = os.getenv("HONCHO_WORKSPACE", "openclaw")
678
+
679
+ headers = {"Authorization": f"Bearer {API_KEY}"} if API_KEY else {}
680
+
681
+ export = {"conclusions": [], "sessions": []}
682
+
683
+ # List apps (workspaces) and users
684
+ apps = requests.get(f"{BASE_URL}/v1/apps", headers=headers).json()
685
+ for app in apps.get("items", []):
686
+ app_id = app["id"]
687
+ users = requests.get(f"{BASE_URL}/v1/apps/{app_id}/users", headers=headers).json()
688
+ for user in users.get("items", []):
689
+ user_id = user["id"]
690
+ # Get conclusions (derived memory)
691
+ conclusions = requests.get(
692
+ f"{BASE_URL}/v1/apps/{app_id}/users/{user_id}/conclusions",
693
+ headers=headers
694
+ ).json()
695
+ for c in conclusions.get("items", []):
696
+ export["conclusions"].append({"user_id": user_id, "text": c.get("content", ""), "created_at": c.get("created_at")})
697
+
698
+ with open("honcho_export.json", "w") as f:
699
+ json.dump(export, f, indent=2)
700
+ print(f"Exported {len(export['conclusions'])} conclusions")
701
+ ```
702
+
703
+ **Step 2: Import conclusions as facts**
704
+
705
+ Save as `scripts/migrate-honcho.mjs`:
706
+ ```js
707
+ // scripts/migrate-honcho.mjs
708
+ import { HyperMem } from '@psiclawops/hypermem';
709
+ import { readFileSync } from 'node:fs';
710
+ import { homedir } from 'node:os';
711
+ import { join } from 'node:path';
712
+
713
+ const agentId = process.argv[2] ?? 'main';
714
+ const exportPath = process.argv[3] ?? 'honcho_export.json';
715
+ const dryRun = !process.argv.includes('--apply');
716
+
717
+ const { conclusions = [] } = JSON.parse(readFileSync(exportPath, 'utf-8'));
718
+ const hm = await HyperMem.create({ dir: join(homedir(), '.openclaw/hypermem') });
719
+ let imported = 0, skipped = 0;
720
+
721
+ for (const c of conclusions) {
722
+ const text = c.text ?? '';
723
+ if (!text || text.length < 20) { skipped++; continue; }
724
+ if (dryRun) { console.log(`[dry-run] conclusion: ${text.slice(0, 80)}`); imported++; continue; }
725
+ await hm.addFact(agentId, text, {
726
+ domain: 'general',
727
+ source: 'honcho-migration',
728
+ confidence: 0.9,
729
+ createdAt: c.created_at,
730
+ });
731
+ imported++;
732
+ }
733
+
734
+ console.log(`\n${dryRun ? '[dry-run] ' : ''}Imported: ${imported}, Skipped: ${skipped}`);
735
+ if (dryRun) console.log('Run with --apply to write data.');
736
+ ```
737
+
738
+ ```bash
739
+ # Dry run
740
+ node scripts/migrate-honcho.mjs main honcho_export.json
741
+
742
+ # Apply
743
+ node scripts/migrate-honcho.mjs main honcho_export.json --apply
744
+ ```
745
+
746
+ **Step 3: Uninstall Honcho plugin and enable hypermem**
747
+
748
+ ```bash
749
+ openclaw plugins uninstall @honcho-ai/openclaw-honcho
750
+ openclaw config set plugins.slots.contextEngine hypercompositor
751
+ openclaw config set plugins.slots.memory hypermem
752
+ openclaw gateway restart
753
+ ```
754
+
755
+ > **Note:** Your workspace memory files (`MEMORY.md`, `memory/*.md`) that Honcho migrated on setup are still in place and will be picked up by hypermem automatically — no re-import needed for those.
756
+
757
+ ---
758
+
759
+ ## From memory-lancedb
760
+
761
+ `memory-lancedb` is an OpenClaw install-on-demand plugin (`plugins.slots.memory = "memory-lancedb"`) that provides long-term memory with auto-recall and capture using LanceDB as the backing store. Like memory-core, it occupies the `slots.memory` slot — separate from the context engine slot that hypermem owns.
762
+
763
+ **What maps to what:**
764
+
765
+ | memory-lancedb | hypermem |
766
+ |---|---|
767
+ | LanceDB memory vectors | Facts in `library.db` (re-embedded automatically) |
768
+ | Captured memory entries | Facts with domain inferred from content |
769
+ | Auto-recall injection | hypermem context assembly (built-in) |
770
+ | Per-agent tables | Per-agent `library.db` facts |
771
+
772
+ **What does not migrate:** LanceDB vector embeddings (regenerated automatically), auto-capture triggers (hypermem handles recall natively).
773
+
774
+ **Step 1: Locate the LanceDB data directory**
775
+
776
+ ```bash
777
+ # Default location — check your config if you changed it
778
+ ls ~/.openclaw/memory-lancedb/
779
+ # or
780
+ openclaw config get plugins.entries.memory-lancedb.config
781
+ ```
782
+
783
+ **Step 2: Export entries from LanceDB**
784
+
785
+ ```python
786
+ # export_lancedb.py
787
+ import lancedb, json, os
788
+
789
+ db_path = os.path.expanduser("~/.openclaw/memory-lancedb")
790
+ db = lancedb.connect(db_path)
791
+
792
+ export = []
793
+ for table_name in db.table_names():
794
+ table = db.open_table(table_name)
795
+ rows = table.to_pandas()
796
+ for _, row in rows.iterrows():
797
+ text = row.get("text") or row.get("content") or row.get("memory") or ""
798
+ if text and len(str(text)) > 20:
799
+ export.append({
800
+ "agent_id": table_name, # table name is typically the agent id
801
+ "text": str(text),
802
+ "metadata": {k: str(v) for k, v in row.items() if k not in ("text", "content", "memory", "vector")}
803
+ })
804
+
805
+ with open("lancedb_export.json", "w") as f:
806
+ json.dump(export, f, indent=2)
807
+ print(f"Exported {len(export)} entries from {len(db.table_names())} tables")
808
+ ```
809
+
810
+ Install lancedb if needed: `pip install lancedb`
811
+
812
+ **Step 3: Import**
813
+
814
+ Save as `scripts/migrate-lancedb.mjs`:
815
+ ```js
816
+ // scripts/migrate-lancedb.mjs
817
+ import { HyperMem } from '@psiclawops/hypermem';
818
+ import { readFileSync } from 'node:fs';
819
+ import { homedir } from 'node:os';
820
+ import { join } from 'node:path';
821
+
822
+ // agent override — if set, all entries go to this agent regardless of export agent_id
823
+ const agentOverride = process.argv[2] !== '--apply' && !process.argv[2]?.startsWith('--') ? process.argv[2] : null;
824
+ const exportPath = process.argv.find(a => a.endsWith('.json')) ?? 'lancedb_export.json';
825
+ const dryRun = !process.argv.includes('--apply');
826
+
827
+ const entries = JSON.parse(readFileSync(exportPath, 'utf-8'));
828
+ const hm = await HyperMem.create({ dir: join(homedir(), '.openclaw/hypermem') });
829
+ let imported = 0, skipped = 0;
830
+
831
+ for (const entry of entries) {
832
+ const text = entry.text ?? '';
833
+ if (!text || text.length < 20) { skipped++; continue; }
834
+ const agentId = agentOverride ?? entry.agent_id ?? 'main';
835
+ if (dryRun) { console.log(`[dry-run] [${agentId}] ${text.slice(0, 80)}`); imported++; continue; }
836
+ await hm.addFact(agentId, text, {
837
+ domain: 'general',
838
+ source: 'lancedb-migration',
839
+ confidence: 0.85,
840
+ });
841
+ imported++;
842
+ }
843
+
844
+ console.log(`\n${dryRun ? '[dry-run] ' : ''}Imported: ${imported}, Skipped: ${skipped}`);
845
+ if (dryRun) console.log('Run with --apply to write data.');
846
+ ```
847
+
848
+ ```bash
849
+ # Dry run (all agents from export)
850
+ node scripts/migrate-lancedb.mjs lancedb_export.json
851
+
852
+ # Or target a specific agent
853
+ node scripts/migrate-lancedb.mjs main lancedb_export.json
854
+
855
+ # Apply
856
+ node scripts/migrate-lancedb.mjs lancedb_export.json --apply
857
+ ```
858
+
859
+ **Step 4: Disable memory-lancedb and enable hypermem**
860
+
861
+ ```bash
862
+ # Replace memory-lancedb with hypermem memory plugin
863
+ openclaw config set plugins.slots.memory hypermem
864
+ openclaw config set plugins.slots.contextEngine hypercompositor
865
+ openclaw gateway restart
866
+ ```
867
+
868
+ LanceDB files at `~/.openclaw/memory-lancedb/` are untouched. Delete when satisfied.
869
+
870
+ ---
871
+
872
+ ## From MEMORY.md files
873
+
874
+ If your agents use the standard OpenClaw MEMORY.md + daily checkpoint pattern (`memory/YYYY-MM-DD.md`) without any other memory backend, this script scans workspace directories and imports substantive entries as facts.
875
+
876
+ > **If you are coming from QMD**, use the [QMD path](#from-qmd) instead — it covers MEMORY.md files and handles the slot change correctly.
877
+
878
+ **Step 1: Dry run (all agents)**
879
+ ```bash
880
+ node scripts/migrate-memory-md.mjs
881
+ ```
882
+
883
+ Review output — shows workspaces found, fact counts per agent, and a sample of what would be imported.
884
+
885
+ **Step 2: Import**
886
+ ```bash
887
+ node scripts/migrate-memory-md.mjs --apply
888
+ ```
889
+
890
+ Or for a single agent:
891
+ ```bash
892
+ node scripts/migrate-memory-md.mjs --agent my-agent --apply
893
+ ```
894
+
895
+ **Step 3: Restart**
896
+ ```bash
897
+ openclaw gateway restart
898
+ ```
899
+
900
+ **Options:**
901
+ ```
902
+ --agent <id> Only import for this agent (default: all detected)
903
+ --workspace-root <path> Scan workspace directories under this path
904
+ (default: ~/.openclaw)
905
+ --hypermem-dir <path> hypermem data directory (default: ~/.openclaw/hypermem)
906
+ --limit <n> Import only first N facts
907
+ --apply Actually write data (default is dry-run)
908
+ ```
909
+
910
+ **Parsing rules:** Imports bullet list items from daily files (`memory/YYYY-MM-DD.md`) only. `MEMORY.md` index files are intentionally skipped — they're pointers, not content. Lines under 40 characters, `→ memory_search(...)` pointers, and code-like lines are also skipped.
911
+
912
+ ---
913
+
914
+ ## From a custom system
915
+
916
+ Use hypermem's programmatic API to import directly.
917
+
918
+ **Import facts:**
919
+ ```js
920
+ import { HyperMem } from '@psiclawops/hypermem';
921
+
922
+ const hm = await HyperMem.create({ dir: '~/.openclaw/hypermem' });
923
+
924
+ await hm.addFact('your-agent-id', 'User prefers dark mode in all UIs', {
925
+ domain: 'preference',
926
+ source: 'migration',
927
+ confidence: 0.9,
928
+ });
929
+ ```
930
+
931
+ **Import conversation history:**
932
+ ```js
933
+ await hm.recordUserMessage('your-agent-id', 'session-key:your-session', 'Hello, how are you?');
934
+
935
+ await hm.recordAssistantMessage('your-agent-id', 'session-key:your-session', {
936
+ role: 'assistant',
937
+ textContent: 'I am doing well, thank you.',
938
+ toolCalls: [],
939
+ createdAt: new Date().toISOString(),
940
+ });
941
+ ```
942
+
943
+ For bulk imports, write a script modeled on `scripts/migrate-clawtext.mjs` — direct SQLite writes are faster than the API for large datasets.
944
+
945
+ After import:
946
+ ```bash
947
+ openclaw gateway restart
948
+ ```
949
+
950
+ ---
951
+
952
+ ## Enabling hypermem
953
+
954
+ Once your data is imported, enable both plugins:
955
+
956
+ ```bash
957
+ openclaw config set plugins.slots.contextEngine hypercompositor
958
+ openclaw config set plugins.slots.memory hypermem
959
+ openclaw gateway restart
960
+ ```
961
+
962
+ If you were on memory-core or QMD, the `slots.memory hypermem` line above already replaces the old memory provider. No separate disable step needed.
963
+
964
+ ---
965
+
966
+ ## Verifying the migration
967
+
968
+ **Check fact counts by agent:**
969
+ ```bash
970
+ node -e "
971
+ const { DatabaseSync } = require('node:sqlite');
972
+ const os = require('node:os'), path = require('node:path');
973
+ const db = new DatabaseSync(path.join(os.homedir(), '.openclaw/hypermem/library.db'), { readOnly: true });
974
+ const rows = db.prepare('SELECT agent_id, COUNT(*) as cnt FROM facts GROUP BY agent_id ORDER BY cnt DESC').all();
975
+ rows.forEach(r => console.log(r.agent_id + ': ' + r.cnt + ' facts'));
976
+ db.close();
977
+ "
978
+ ```
979
+
980
+ **Check message history by agent:**
981
+ ```bash
982
+ node -e "
983
+ const { DatabaseSync } = require('node:sqlite');
984
+ const os = require('node:os'), path = require('node:path'), fs = require('node:fs');
985
+ const agentsDir = path.join(os.homedir(), '.openclaw/hypermem/agents');
986
+ for (const agent of fs.readdirSync(agentsDir)) {
987
+ const dbPath = path.join(agentsDir, agent, 'messages.db');
988
+ if (!fs.existsSync(dbPath)) continue;
989
+ const db = new DatabaseSync(dbPath, { readOnly: true });
990
+ const r = db.prepare('SELECT COUNT(*) as cnt FROM messages').get();
991
+ console.log(agent + ': ' + r.cnt + ' messages');
992
+ db.close();
993
+ }
994
+ "
995
+ ```
996
+
997
+ **Ask your agent to recall something** from the imported history. If recall seems patchy in the first session, the background indexer is still building embeddings — send one message and wait one turn. It runs automatically after ingest.
998
+
999
+ ---
1000
+
1001
+ ## Rollback
1002
+
1003
+ hypermem does not modify or delete any source data. To roll back from any path:
1004
+
1005
+ ```bash
1006
+ # Remove hypercompositor context engine
1007
+ openclaw config unset plugins.slots.contextEngine
1008
+
1009
+ # Restore the memory slot to your previous provider
1010
+ openclaw config set plugins.slots.memory memory-core
1011
+
1012
+ # Restore QMD backend if that's where you came from
1013
+ # openclaw config set agents.defaults.memory.backend qmd
1014
+
1015
+ # Re-enable your previous context engine if you had one
1016
+ openclaw gateway restart
1017
+ ```
1018
+
1019
+ Original data (memory.db, ClawText database, QMD collections, Cognee data directory, MEMORY.md files) is untouched throughout.
1020
+
1021
+ ---
1022
+
1023
+ ## Troubleshooting
1024
+
1025
+ **"library.db not found" during migration**
1026
+
1027
+ hypermem hasn't initialized yet. Start the gateway with the plugin enabled, send one message, then re-run:
1028
+ ```bash
1029
+ openclaw gateway restart
1030
+ # wait a few seconds, send one message
1031
+ node scripts/migrate-memory-db.mjs --agent main
1032
+ ```
1033
+
1034
+ **Facts imported but agent doesn't recall them**
1035
+
1036
+ The background indexer builds embeddings on a schedule. Force a rebuild:
1037
+ ```bash
1038
+ openclaw gateway restart
1039
+ ```
1040
+ Send one message and wait one turn — the indexer runs after the first ingest.
1041
+
1042
+ **Duplicate facts after re-running a script**
1043
+
1044
+ All scripts check for duplicates before inserting. Re-running is safe. If you see unexpected duplicates, check whether the same data exists under a different `original_id` in the migration metadata — this can happen if source IDs changed between runs.
1045
+
1046
+ **Agent routed to wrong database**
1047
+
1048
+ ClawText and MEMORY.md scripts infer agent identity from workspace paths and content. If an agent was misidentified, re-run with `--agent <correct-id>` — the idempotency check skips already-imported entries.
1049
+
1050
+ **Cognee export is empty or has unexpected format**
1051
+
1052
+ Cognee's search API behavior varies by backend and version. Try querying with a specific term instead of `"*"`, or export directly from the underlying database (SQLite at `~/.cognee/` by default). Adapt the `text` field extraction in the import script to match your export structure.
1053
+
1054
+ **Mem0 export job returns incomplete data**
1055
+
1056
+ The export job is async. If `get_memory_export()` returns partial results, the job wasn't finished. Add a poll loop:
1057
+ ```python
1058
+ import time
1059
+ while True:
1060
+ data = client.get_memory_export(memory_export_id=export_id)
1061
+ if data.get('status') == 'completed': break
1062
+ time.sleep(3)
1063
+ ```
1064
+ Alternatively use `get_all()` which is synchronous.
1065
+
1066
+ **Zep self-hosted: graph search returns 404**
1067
+
1068
+ Graph search requires the Zep server to have processed at least one session. If the graph hasn't been built yet, skip the graph export step — session messages are the higher-value data anyway.
1069
+
1070
+ **Honcho conclusions endpoint returns 404**
1071
+
1072
+ The conclusions API path varies by Honcho version. Check `GET /v1/apps/{app_id}/users/{user_id}/metamessages` as an alternative — Honcho's user model is sometimes stored there. If neither works, export directly from the Honcho Postgres database (`honcho.metamessages` table).
1073
+
1074
+ **memory-lancedb export: `lancedb` not installed**
1075
+
1076
+ ```bash
1077
+ pip install lancedb
1078
+ ```
1079
+ If you don't have Python, the LanceDB files are Arrow IPC format — readable with any Arrow-compatible tool. The table names map directly to agent IDs.
1080
+
1081
+ **QMD extra paths not appearing after migration**
1082
+
1083
+ hypermem does not pick up `memory.qmd.paths` automatically. Use the `import-qmd-extras.mjs` script from the [QMD section](#from-qmd) to import those directories manually.