@psiclawops/hypermem 0.8.5 → 0.9.1

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 (933) hide show
  1. package/ARCHITECTURE.md +2 -2
  2. package/CHANGELOG.md +36 -1
  3. package/INSTALL.md +132 -9
  4. package/README.md +119 -272
  5. package/bench/README.md +42 -0
  6. package/bench/data-access-bench.mjs +380 -0
  7. package/bin/hypermem-bench.mjs +2 -0
  8. package/bin/hypermem-doctor.mjs +412 -0
  9. package/bin/hypermem-model-audit.mjs +339 -0
  10. package/bin/hypermem-status.mjs +491 -70
  11. package/docs/DIAGNOSTICS.md +205 -0
  12. package/docs/INTEGRATION_VALIDATION.md +186 -0
  13. package/docs/MIGRATION.md +9 -6
  14. package/docs/MIGRATION_GUIDE.md +125 -101
  15. package/docs/ROADMAP.md +247 -20
  16. package/docs/TUNING.md +19 -5
  17. package/install.sh +152 -401
  18. package/memory-plugin/LICENSE +190 -0
  19. package/memory-plugin/README.md +20 -0
  20. package/memory-plugin/package.json +3 -3
  21. package/package.json +19 -4
  22. package/plugin/LICENSE +190 -0
  23. package/plugin/README.md +20 -0
  24. package/plugin/package.json +4 -4
  25. package/scripts/install-runtime.mjs +12 -1
  26. package/dist/background-indexer.d.ts +0 -161
  27. package/dist/background-indexer.d.ts.map +0 -1
  28. package/dist/background-indexer.js +0 -1263
  29. package/dist/budget-policy.d.ts +0 -22
  30. package/dist/budget-policy.d.ts.map +0 -1
  31. package/dist/budget-policy.js +0 -27
  32. package/dist/cache.d.ts +0 -147
  33. package/dist/cache.d.ts.map +0 -1
  34. package/dist/cache.js +0 -569
  35. package/dist/compaction-fence.d.ts +0 -97
  36. package/dist/compaction-fence.d.ts.map +0 -1
  37. package/dist/compaction-fence.js +0 -174
  38. package/dist/compositor-utils.d.ts +0 -31
  39. package/dist/compositor-utils.d.ts.map +0 -1
  40. package/dist/compositor-utils.js +0 -47
  41. package/dist/compositor.d.ts +0 -394
  42. package/dist/compositor.d.ts.map +0 -1
  43. package/dist/compositor.js +0 -3632
  44. package/dist/content-hash.d.ts +0 -43
  45. package/dist/content-hash.d.ts.map +0 -1
  46. package/dist/content-hash.js +0 -75
  47. package/dist/content-type-classifier.d.ts +0 -41
  48. package/dist/content-type-classifier.d.ts.map +0 -1
  49. package/dist/content-type-classifier.js +0 -181
  50. package/dist/context-backfill.d.ts +0 -46
  51. package/dist/context-backfill.d.ts.map +0 -1
  52. package/dist/context-backfill.js +0 -113
  53. package/dist/context-store.d.ts +0 -131
  54. package/dist/context-store.d.ts.map +0 -1
  55. package/dist/context-store.js +0 -279
  56. package/dist/contradiction-audit-store.d.ts +0 -54
  57. package/dist/contradiction-audit-store.d.ts.map +0 -1
  58. package/dist/contradiction-audit-store.js +0 -88
  59. package/dist/contradiction-detector.d.ts +0 -78
  60. package/dist/contradiction-detector.d.ts.map +0 -1
  61. package/dist/contradiction-detector.js +0 -362
  62. package/dist/contradiction-resolution-policy.d.ts +0 -21
  63. package/dist/contradiction-resolution-policy.d.ts.map +0 -1
  64. package/dist/contradiction-resolution-policy.js +0 -17
  65. package/dist/cross-agent.d.ts +0 -74
  66. package/dist/cross-agent.d.ts.map +0 -1
  67. package/dist/cross-agent.js +0 -271
  68. package/dist/db.d.ts +0 -131
  69. package/dist/db.d.ts.map +0 -1
  70. package/dist/db.js +0 -410
  71. package/dist/degradation.d.ts +0 -102
  72. package/dist/degradation.d.ts.map +0 -1
  73. package/dist/degradation.js +0 -141
  74. package/dist/desired-state-store.d.ts +0 -100
  75. package/dist/desired-state-store.d.ts.map +0 -1
  76. package/dist/desired-state-store.js +0 -222
  77. package/dist/doc-chunk-store.d.ts +0 -140
  78. package/dist/doc-chunk-store.d.ts.map +0 -1
  79. package/dist/doc-chunk-store.js +0 -391
  80. package/dist/doc-chunker.d.ts +0 -99
  81. package/dist/doc-chunker.d.ts.map +0 -1
  82. package/dist/doc-chunker.js +0 -324
  83. package/dist/dreaming-promoter.d.ts +0 -124
  84. package/dist/dreaming-promoter.d.ts.map +0 -1
  85. package/dist/dreaming-promoter.js +0 -447
  86. package/dist/episode-store.d.ts +0 -49
  87. package/dist/episode-store.d.ts.map +0 -1
  88. package/dist/episode-store.js +0 -135
  89. package/dist/expertise-store.d.ts +0 -129
  90. package/dist/expertise-store.d.ts.map +0 -1
  91. package/dist/expertise-store.js +0 -342
  92. package/dist/fact-store.d.ts +0 -90
  93. package/dist/fact-store.d.ts.map +0 -1
  94. package/dist/fact-store.js +0 -283
  95. package/dist/fleet-store.d.ts +0 -144
  96. package/dist/fleet-store.d.ts.map +0 -1
  97. package/dist/fleet-store.js +0 -276
  98. package/dist/fos-mod.d.ts +0 -178
  99. package/dist/fos-mod.d.ts.map +0 -1
  100. package/dist/fos-mod.js +0 -416
  101. package/dist/hybrid-retrieval.d.ts +0 -64
  102. package/dist/hybrid-retrieval.d.ts.map +0 -1
  103. package/dist/hybrid-retrieval.js +0 -344
  104. package/dist/image-eviction.d.ts +0 -49
  105. package/dist/image-eviction.d.ts.map +0 -1
  106. package/dist/image-eviction.js +0 -251
  107. package/dist/index.d.ts +0 -718
  108. package/dist/index.d.ts.map +0 -1
  109. package/dist/index.js +0 -1469
  110. package/dist/keystone-scorer.d.ts +0 -51
  111. package/dist/keystone-scorer.d.ts.map +0 -1
  112. package/dist/keystone-scorer.js +0 -52
  113. package/dist/knowledge-graph.d.ts +0 -110
  114. package/dist/knowledge-graph.d.ts.map +0 -1
  115. package/dist/knowledge-graph.js +0 -305
  116. package/dist/knowledge-lint.d.ts +0 -31
  117. package/dist/knowledge-lint.d.ts.map +0 -1
  118. package/dist/knowledge-lint.js +0 -155
  119. package/dist/knowledge-store.d.ts +0 -72
  120. package/dist/knowledge-store.d.ts.map +0 -1
  121. package/dist/knowledge-store.js +0 -247
  122. package/dist/library-schema.d.ts +0 -27
  123. package/dist/library-schema.d.ts.map +0 -1
  124. package/dist/library-schema.js +0 -1343
  125. package/dist/message-store.d.ts +0 -181
  126. package/dist/message-store.d.ts.map +0 -1
  127. package/dist/message-store.js +0 -573
  128. package/dist/metrics-dashboard.d.ts +0 -114
  129. package/dist/metrics-dashboard.d.ts.map +0 -1
  130. package/dist/metrics-dashboard.js +0 -260
  131. package/dist/obsidian-exporter.d.ts +0 -57
  132. package/dist/obsidian-exporter.d.ts.map +0 -1
  133. package/dist/obsidian-exporter.js +0 -274
  134. package/dist/obsidian-watcher.d.ts +0 -147
  135. package/dist/obsidian-watcher.d.ts.map +0 -1
  136. package/dist/obsidian-watcher.js +0 -403
  137. package/dist/open-domain.d.ts +0 -46
  138. package/dist/open-domain.d.ts.map +0 -1
  139. package/dist/open-domain.js +0 -125
  140. package/dist/preference-store.d.ts +0 -54
  141. package/dist/preference-store.d.ts.map +0 -1
  142. package/dist/preference-store.js +0 -109
  143. package/dist/preservation-gate.d.ts +0 -82
  144. package/dist/preservation-gate.d.ts.map +0 -1
  145. package/dist/preservation-gate.js +0 -150
  146. package/dist/proactive-pass.d.ts +0 -63
  147. package/dist/proactive-pass.d.ts.map +0 -1
  148. package/dist/proactive-pass.js +0 -293
  149. package/dist/profiles.d.ts +0 -46
  150. package/dist/profiles.d.ts.map +0 -1
  151. package/dist/profiles.js +0 -262
  152. package/dist/provider-translator.d.ts +0 -50
  153. package/dist/provider-translator.d.ts.map +0 -1
  154. package/dist/provider-translator.js +0 -403
  155. package/dist/rate-limiter.d.ts +0 -76
  156. package/dist/rate-limiter.d.ts.map +0 -1
  157. package/dist/rate-limiter.js +0 -179
  158. package/dist/repair-tool-pairs.d.ts +0 -38
  159. package/dist/repair-tool-pairs.d.ts.map +0 -1
  160. package/dist/repair-tool-pairs.js +0 -209
  161. package/dist/replay-recovery.d.ts +0 -29
  162. package/dist/replay-recovery.d.ts.map +0 -1
  163. package/dist/replay-recovery.js +0 -82
  164. package/dist/reranker.d.ts +0 -95
  165. package/dist/reranker.d.ts.map +0 -1
  166. package/dist/reranker.js +0 -308
  167. package/dist/retrieval-policy.d.ts +0 -51
  168. package/dist/retrieval-policy.d.ts.map +0 -1
  169. package/dist/retrieval-policy.js +0 -77
  170. package/dist/schema.d.ts +0 -15
  171. package/dist/schema.d.ts.map +0 -1
  172. package/dist/schema.js +0 -300
  173. package/dist/secret-scanner.d.ts +0 -51
  174. package/dist/secret-scanner.d.ts.map +0 -1
  175. package/dist/secret-scanner.js +0 -248
  176. package/dist/seed.d.ts +0 -108
  177. package/dist/seed.d.ts.map +0 -1
  178. package/dist/seed.js +0 -177
  179. package/dist/session-flusher.d.ts +0 -53
  180. package/dist/session-flusher.d.ts.map +0 -1
  181. package/dist/session-flusher.js +0 -69
  182. package/dist/session-topic-map.d.ts +0 -41
  183. package/dist/session-topic-map.d.ts.map +0 -1
  184. package/dist/session-topic-map.js +0 -77
  185. package/dist/spawn-context.d.ts +0 -54
  186. package/dist/spawn-context.d.ts.map +0 -1
  187. package/dist/spawn-context.js +0 -159
  188. package/dist/system-store.d.ts +0 -73
  189. package/dist/system-store.d.ts.map +0 -1
  190. package/dist/system-store.js +0 -182
  191. package/dist/temporal-store.d.ts +0 -81
  192. package/dist/temporal-store.d.ts.map +0 -1
  193. package/dist/temporal-store.js +0 -149
  194. package/dist/tool-artifact-store.d.ts +0 -98
  195. package/dist/tool-artifact-store.d.ts.map +0 -1
  196. package/dist/tool-artifact-store.js +0 -244
  197. package/dist/topic-detector.d.ts +0 -35
  198. package/dist/topic-detector.d.ts.map +0 -1
  199. package/dist/topic-detector.js +0 -249
  200. package/dist/topic-store.d.ts +0 -51
  201. package/dist/topic-store.d.ts.map +0 -1
  202. package/dist/topic-store.js +0 -175
  203. package/dist/topic-synthesizer.d.ts +0 -51
  204. package/dist/topic-synthesizer.d.ts.map +0 -1
  205. package/dist/topic-synthesizer.js +0 -316
  206. package/dist/trigger-registry.d.ts +0 -63
  207. package/dist/trigger-registry.d.ts.map +0 -1
  208. package/dist/trigger-registry.js +0 -163
  209. package/dist/types.d.ts +0 -815
  210. package/dist/types.d.ts.map +0 -1
  211. package/dist/types.js +0 -9
  212. package/dist/vector-store.d.ts +0 -180
  213. package/dist/vector-store.d.ts.map +0 -1
  214. package/dist/vector-store.js +0 -1041
  215. package/dist/version.d.ts +0 -34
  216. package/dist/version.d.ts.map +0 -1
  217. package/dist/version.js +0 -34
  218. package/dist/wiki-page-emitter.d.ts +0 -65
  219. package/dist/wiki-page-emitter.d.ts.map +0 -1
  220. package/dist/wiki-page-emitter.js +0 -258
  221. package/dist/work-store.d.ts +0 -112
  222. package/dist/work-store.d.ts.map +0 -1
  223. package/dist/work-store.js +0 -273
  224. package/memory-plugin/dist/index.d.ts +0 -24
  225. package/memory-plugin/dist/index.d.ts.map +0 -1
  226. package/memory-plugin/dist/index.js +0 -300
  227. package/memory-plugin/dist/index.js.map +0 -1
  228. package/node_modules/sqlite-vec/README.md +0 -1
  229. package/node_modules/sqlite-vec/index.cjs +0 -46
  230. package/node_modules/sqlite-vec/index.d.ts +0 -17
  231. package/node_modules/sqlite-vec/index.mjs +0 -47
  232. package/node_modules/sqlite-vec/package.json +0 -1
  233. package/node_modules/sqlite-vec-linux-x64/README.md +0 -1
  234. package/node_modules/sqlite-vec-linux-x64/package.json +0 -1
  235. package/node_modules/sqlite-vec-linux-x64/vec0.so +0 -0
  236. package/node_modules/zod/LICENSE +0 -21
  237. package/node_modules/zod/README.md +0 -208
  238. package/node_modules/zod/index.cjs +0 -33
  239. package/node_modules/zod/index.d.cts +0 -4
  240. package/node_modules/zod/index.d.ts +0 -4
  241. package/node_modules/zod/index.js +0 -4
  242. package/node_modules/zod/locales/index.cjs +0 -17
  243. package/node_modules/zod/locales/index.d.cts +0 -1
  244. package/node_modules/zod/locales/index.d.ts +0 -1
  245. package/node_modules/zod/locales/index.js +0 -1
  246. package/node_modules/zod/locales/package.json +0 -6
  247. package/node_modules/zod/mini/index.cjs +0 -32
  248. package/node_modules/zod/mini/index.d.cts +0 -3
  249. package/node_modules/zod/mini/index.d.ts +0 -3
  250. package/node_modules/zod/mini/index.js +0 -3
  251. package/node_modules/zod/mini/package.json +0 -6
  252. package/node_modules/zod/package.json +0 -135
  253. package/node_modules/zod/src/index.ts +0 -4
  254. package/node_modules/zod/src/locales/index.ts +0 -1
  255. package/node_modules/zod/src/mini/index.ts +0 -3
  256. package/node_modules/zod/src/v3/ZodError.ts +0 -330
  257. package/node_modules/zod/src/v3/benchmarks/datetime.ts +0 -58
  258. package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +0 -80
  259. package/node_modules/zod/src/v3/benchmarks/index.ts +0 -59
  260. package/node_modules/zod/src/v3/benchmarks/ipv4.ts +0 -57
  261. package/node_modules/zod/src/v3/benchmarks/object.ts +0 -69
  262. package/node_modules/zod/src/v3/benchmarks/primitives.ts +0 -162
  263. package/node_modules/zod/src/v3/benchmarks/realworld.ts +0 -63
  264. package/node_modules/zod/src/v3/benchmarks/string.ts +0 -55
  265. package/node_modules/zod/src/v3/benchmarks/union.ts +0 -80
  266. package/node_modules/zod/src/v3/errors.ts +0 -13
  267. package/node_modules/zod/src/v3/external.ts +0 -6
  268. package/node_modules/zod/src/v3/helpers/enumUtil.ts +0 -17
  269. package/node_modules/zod/src/v3/helpers/errorUtil.ts +0 -8
  270. package/node_modules/zod/src/v3/helpers/parseUtil.ts +0 -176
  271. package/node_modules/zod/src/v3/helpers/partialUtil.ts +0 -34
  272. package/node_modules/zod/src/v3/helpers/typeAliases.ts +0 -2
  273. package/node_modules/zod/src/v3/helpers/util.ts +0 -224
  274. package/node_modules/zod/src/v3/index.ts +0 -4
  275. package/node_modules/zod/src/v3/locales/en.ts +0 -124
  276. package/node_modules/zod/src/v3/standard-schema.ts +0 -113
  277. package/node_modules/zod/src/v3/tests/Mocker.ts +0 -54
  278. package/node_modules/zod/src/v3/tests/all-errors.test.ts +0 -157
  279. package/node_modules/zod/src/v3/tests/anyunknown.test.ts +0 -28
  280. package/node_modules/zod/src/v3/tests/array.test.ts +0 -71
  281. package/node_modules/zod/src/v3/tests/async-parsing.test.ts +0 -388
  282. package/node_modules/zod/src/v3/tests/async-refinements.test.ts +0 -46
  283. package/node_modules/zod/src/v3/tests/base.test.ts +0 -29
  284. package/node_modules/zod/src/v3/tests/bigint.test.ts +0 -55
  285. package/node_modules/zod/src/v3/tests/branded.test.ts +0 -53
  286. package/node_modules/zod/src/v3/tests/catch.test.ts +0 -220
  287. package/node_modules/zod/src/v3/tests/coerce.test.ts +0 -133
  288. package/node_modules/zod/src/v3/tests/complex.test.ts +0 -70
  289. package/node_modules/zod/src/v3/tests/custom.test.ts +0 -31
  290. package/node_modules/zod/src/v3/tests/date.test.ts +0 -32
  291. package/node_modules/zod/src/v3/tests/deepmasking.test.ts +0 -186
  292. package/node_modules/zod/src/v3/tests/default.test.ts +0 -112
  293. package/node_modules/zod/src/v3/tests/description.test.ts +0 -33
  294. package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +0 -315
  295. package/node_modules/zod/src/v3/tests/enum.test.ts +0 -80
  296. package/node_modules/zod/src/v3/tests/error.test.ts +0 -551
  297. package/node_modules/zod/src/v3/tests/firstparty.test.ts +0 -87
  298. package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +0 -21
  299. package/node_modules/zod/src/v3/tests/function.test.ts +0 -261
  300. package/node_modules/zod/src/v3/tests/generics.test.ts +0 -48
  301. package/node_modules/zod/src/v3/tests/instanceof.test.ts +0 -37
  302. package/node_modules/zod/src/v3/tests/intersection.test.ts +0 -110
  303. package/node_modules/zod/src/v3/tests/language-server.source.ts +0 -76
  304. package/node_modules/zod/src/v3/tests/language-server.test.ts +0 -207
  305. package/node_modules/zod/src/v3/tests/literal.test.ts +0 -36
  306. package/node_modules/zod/src/v3/tests/map.test.ts +0 -110
  307. package/node_modules/zod/src/v3/tests/masking.test.ts +0 -4
  308. package/node_modules/zod/src/v3/tests/mocker.test.ts +0 -19
  309. package/node_modules/zod/src/v3/tests/nan.test.ts +0 -24
  310. package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +0 -87
  311. package/node_modules/zod/src/v3/tests/nullable.test.ts +0 -42
  312. package/node_modules/zod/src/v3/tests/number.test.ts +0 -176
  313. package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +0 -29
  314. package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +0 -29
  315. package/node_modules/zod/src/v3/tests/object.test.ts +0 -434
  316. package/node_modules/zod/src/v3/tests/optional.test.ts +0 -42
  317. package/node_modules/zod/src/v3/tests/parseUtil.test.ts +0 -23
  318. package/node_modules/zod/src/v3/tests/parser.test.ts +0 -41
  319. package/node_modules/zod/src/v3/tests/partials.test.ts +0 -243
  320. package/node_modules/zod/src/v3/tests/pickomit.test.ts +0 -111
  321. package/node_modules/zod/src/v3/tests/pipeline.test.ts +0 -29
  322. package/node_modules/zod/src/v3/tests/preprocess.test.ts +0 -186
  323. package/node_modules/zod/src/v3/tests/primitive.test.ts +0 -440
  324. package/node_modules/zod/src/v3/tests/promise.test.ts +0 -90
  325. package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -194
  326. package/node_modules/zod/src/v3/tests/record.test.ts +0 -171
  327. package/node_modules/zod/src/v3/tests/recursive.test.ts +0 -197
  328. package/node_modules/zod/src/v3/tests/refine.test.ts +0 -313
  329. package/node_modules/zod/src/v3/tests/safeparse.test.ts +0 -27
  330. package/node_modules/zod/src/v3/tests/set.test.ts +0 -142
  331. package/node_modules/zod/src/v3/tests/standard-schema.test.ts +0 -83
  332. package/node_modules/zod/src/v3/tests/string.test.ts +0 -916
  333. package/node_modules/zod/src/v3/tests/transformer.test.ts +0 -233
  334. package/node_modules/zod/src/v3/tests/tuple.test.ts +0 -90
  335. package/node_modules/zod/src/v3/tests/unions.test.ts +0 -57
  336. package/node_modules/zod/src/v3/tests/validations.test.ts +0 -133
  337. package/node_modules/zod/src/v3/tests/void.test.ts +0 -15
  338. package/node_modules/zod/src/v3/types.ts +0 -5138
  339. package/node_modules/zod/src/v4/classic/checks.ts +0 -32
  340. package/node_modules/zod/src/v4/classic/coerce.ts +0 -27
  341. package/node_modules/zod/src/v4/classic/compat.ts +0 -70
  342. package/node_modules/zod/src/v4/classic/errors.ts +0 -82
  343. package/node_modules/zod/src/v4/classic/external.ts +0 -51
  344. package/node_modules/zod/src/v4/classic/from-json-schema.ts +0 -643
  345. package/node_modules/zod/src/v4/classic/index.ts +0 -5
  346. package/node_modules/zod/src/v4/classic/iso.ts +0 -90
  347. package/node_modules/zod/src/v4/classic/parse.ts +0 -82
  348. package/node_modules/zod/src/v4/classic/schemas.ts +0 -2409
  349. package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +0 -26
  350. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +0 -59
  351. package/node_modules/zod/src/v4/classic/tests/array.test.ts +0 -264
  352. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +0 -210
  353. package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +0 -381
  354. package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +0 -68
  355. package/node_modules/zod/src/v4/classic/tests/base.test.ts +0 -7
  356. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +0 -54
  357. package/node_modules/zod/src/v4/classic/tests/brand.test.ts +0 -106
  358. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +0 -276
  359. package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +0 -20
  360. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +0 -573
  361. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +0 -562
  362. package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +0 -160
  363. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +0 -374
  364. package/node_modules/zod/src/v4/classic/tests/custom.test.ts +0 -40
  365. package/node_modules/zod/src/v4/classic/tests/date.test.ts +0 -62
  366. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +0 -302
  367. package/node_modules/zod/src/v4/classic/tests/default.test.ts +0 -365
  368. package/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +0 -27
  369. package/node_modules/zod/src/v4/classic/tests/description.test.ts +0 -32
  370. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +0 -661
  371. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +0 -285
  372. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +0 -595
  373. package/node_modules/zod/src/v4/classic/tests/error.test.ts +0 -711
  374. package/node_modules/zod/src/v4/classic/tests/file.test.ts +0 -96
  375. package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +0 -179
  376. package/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +0 -26
  377. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +0 -734
  378. package/node_modules/zod/src/v4/classic/tests/function.test.ts +0 -360
  379. package/node_modules/zod/src/v4/classic/tests/generics.test.ts +0 -72
  380. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +0 -68
  381. package/node_modules/zod/src/v4/classic/tests/index.test.ts +0 -939
  382. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +0 -60
  383. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +0 -198
  384. package/node_modules/zod/src/v4/classic/tests/json.test.ts +0 -109
  385. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +0 -227
  386. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +0 -117
  387. package/node_modules/zod/src/v4/classic/tests/map.test.ts +0 -330
  388. package/node_modules/zod/src/v4/classic/tests/nan.test.ts +0 -21
  389. package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +0 -168
  390. package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +0 -101
  391. package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +0 -22
  392. package/node_modules/zod/src/v4/classic/tests/number.test.ts +0 -270
  393. package/node_modules/zod/src/v4/classic/tests/object.test.ts +0 -640
  394. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +0 -223
  395. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +0 -427
  396. package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +0 -211
  397. package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +0 -101
  398. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +0 -74
  399. package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +0 -282
  400. package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +0 -175
  401. package/node_modules/zod/src/v4/classic/tests/promise.test.ts +0 -81
  402. package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +0 -23
  403. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -252
  404. package/node_modules/zod/src/v4/classic/tests/record.test.ts +0 -632
  405. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +0 -582
  406. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +0 -570
  407. package/node_modules/zod/src/v4/classic/tests/registries.test.ts +0 -243
  408. package/node_modules/zod/src/v4/classic/tests/set.test.ts +0 -181
  409. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +0 -134
  410. package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +0 -125
  411. package/node_modules/zod/src/v4/classic/tests/string.test.ts +0 -1175
  412. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +0 -106
  413. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +0 -771
  414. package/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +0 -438
  415. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +0 -2990
  416. package/node_modules/zod/src/v4/classic/tests/transform.test.ts +0 -361
  417. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +0 -183
  418. package/node_modules/zod/src/v4/classic/tests/union.test.ts +0 -219
  419. package/node_modules/zod/src/v4/classic/tests/url.test.ts +0 -13
  420. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +0 -283
  421. package/node_modules/zod/src/v4/classic/tests/void.test.ts +0 -12
  422. package/node_modules/zod/src/v4/core/api.ts +0 -1798
  423. package/node_modules/zod/src/v4/core/checks.ts +0 -1293
  424. package/node_modules/zod/src/v4/core/config.ts +0 -15
  425. package/node_modules/zod/src/v4/core/core.ts +0 -138
  426. package/node_modules/zod/src/v4/core/doc.ts +0 -44
  427. package/node_modules/zod/src/v4/core/errors.ts +0 -448
  428. package/node_modules/zod/src/v4/core/index.ts +0 -16
  429. package/node_modules/zod/src/v4/core/json-schema-generator.ts +0 -126
  430. package/node_modules/zod/src/v4/core/json-schema-processors.ts +0 -667
  431. package/node_modules/zod/src/v4/core/json-schema.ts +0 -147
  432. package/node_modules/zod/src/v4/core/parse.ts +0 -195
  433. package/node_modules/zod/src/v4/core/regexes.ts +0 -183
  434. package/node_modules/zod/src/v4/core/registries.ts +0 -105
  435. package/node_modules/zod/src/v4/core/schemas.ts +0 -4538
  436. package/node_modules/zod/src/v4/core/standard-schema.ts +0 -159
  437. package/node_modules/zod/src/v4/core/tests/extend.test.ts +0 -59
  438. package/node_modules/zod/src/v4/core/tests/index.test.ts +0 -46
  439. package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +0 -124
  440. package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +0 -22
  441. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +0 -181
  442. package/node_modules/zod/src/v4/core/tests/locales/he.test.ts +0 -379
  443. package/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +0 -46
  444. package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +0 -128
  445. package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +0 -69
  446. package/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +0 -83
  447. package/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +0 -67
  448. package/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +0 -45
  449. package/node_modules/zod/src/v4/core/to-json-schema.ts +0 -613
  450. package/node_modules/zod/src/v4/core/util.ts +0 -966
  451. package/node_modules/zod/src/v4/core/versions.ts +0 -5
  452. package/node_modules/zod/src/v4/core/zsf.ts +0 -323
  453. package/node_modules/zod/src/v4/index.ts +0 -4
  454. package/node_modules/zod/src/v4/locales/ar.ts +0 -115
  455. package/node_modules/zod/src/v4/locales/az.ts +0 -111
  456. package/node_modules/zod/src/v4/locales/be.ts +0 -176
  457. package/node_modules/zod/src/v4/locales/bg.ts +0 -128
  458. package/node_modules/zod/src/v4/locales/ca.ts +0 -116
  459. package/node_modules/zod/src/v4/locales/cs.ts +0 -118
  460. package/node_modules/zod/src/v4/locales/da.ts +0 -123
  461. package/node_modules/zod/src/v4/locales/de.ts +0 -116
  462. package/node_modules/zod/src/v4/locales/en.ts +0 -119
  463. package/node_modules/zod/src/v4/locales/eo.ts +0 -118
  464. package/node_modules/zod/src/v4/locales/es.ts +0 -141
  465. package/node_modules/zod/src/v4/locales/fa.ts +0 -126
  466. package/node_modules/zod/src/v4/locales/fi.ts +0 -121
  467. package/node_modules/zod/src/v4/locales/fr-CA.ts +0 -116
  468. package/node_modules/zod/src/v4/locales/fr.ts +0 -116
  469. package/node_modules/zod/src/v4/locales/he.ts +0 -246
  470. package/node_modules/zod/src/v4/locales/hu.ts +0 -117
  471. package/node_modules/zod/src/v4/locales/hy.ts +0 -164
  472. package/node_modules/zod/src/v4/locales/id.ts +0 -115
  473. package/node_modules/zod/src/v4/locales/index.ts +0 -49
  474. package/node_modules/zod/src/v4/locales/is.ts +0 -119
  475. package/node_modules/zod/src/v4/locales/it.ts +0 -116
  476. package/node_modules/zod/src/v4/locales/ja.ts +0 -114
  477. package/node_modules/zod/src/v4/locales/ka.ts +0 -123
  478. package/node_modules/zod/src/v4/locales/kh.ts +0 -7
  479. package/node_modules/zod/src/v4/locales/km.ts +0 -119
  480. package/node_modules/zod/src/v4/locales/ko.ts +0 -121
  481. package/node_modules/zod/src/v4/locales/lt.ts +0 -239
  482. package/node_modules/zod/src/v4/locales/mk.ts +0 -118
  483. package/node_modules/zod/src/v4/locales/ms.ts +0 -115
  484. package/node_modules/zod/src/v4/locales/nl.ts +0 -121
  485. package/node_modules/zod/src/v4/locales/no.ts +0 -116
  486. package/node_modules/zod/src/v4/locales/ota.ts +0 -117
  487. package/node_modules/zod/src/v4/locales/pl.ts +0 -118
  488. package/node_modules/zod/src/v4/locales/ps.ts +0 -126
  489. package/node_modules/zod/src/v4/locales/pt.ts +0 -116
  490. package/node_modules/zod/src/v4/locales/ru.ts +0 -176
  491. package/node_modules/zod/src/v4/locales/sl.ts +0 -118
  492. package/node_modules/zod/src/v4/locales/sv.ts +0 -119
  493. package/node_modules/zod/src/v4/locales/ta.ts +0 -118
  494. package/node_modules/zod/src/v4/locales/th.ts +0 -119
  495. package/node_modules/zod/src/v4/locales/tr.ts +0 -111
  496. package/node_modules/zod/src/v4/locales/ua.ts +0 -7
  497. package/node_modules/zod/src/v4/locales/uk.ts +0 -117
  498. package/node_modules/zod/src/v4/locales/ur.ts +0 -119
  499. package/node_modules/zod/src/v4/locales/uz.ts +0 -116
  500. package/node_modules/zod/src/v4/locales/vi.ts +0 -117
  501. package/node_modules/zod/src/v4/locales/yo.ts +0 -124
  502. package/node_modules/zod/src/v4/locales/zh-CN.ts +0 -116
  503. package/node_modules/zod/src/v4/locales/zh-TW.ts +0 -115
  504. package/node_modules/zod/src/v4/mini/checks.ts +0 -32
  505. package/node_modules/zod/src/v4/mini/coerce.ts +0 -27
  506. package/node_modules/zod/src/v4/mini/external.ts +0 -40
  507. package/node_modules/zod/src/v4/mini/index.ts +0 -3
  508. package/node_modules/zod/src/v4/mini/iso.ts +0 -66
  509. package/node_modules/zod/src/v4/mini/parse.ts +0 -14
  510. package/node_modules/zod/src/v4/mini/schemas.ts +0 -1916
  511. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +0 -24
  512. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +0 -129
  513. package/node_modules/zod/src/v4/mini/tests/brand.test.ts +0 -94
  514. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +0 -144
  515. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +0 -529
  516. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +0 -36
  517. package/node_modules/zod/src/v4/mini/tests/error.test.ts +0 -22
  518. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +0 -5
  519. package/node_modules/zod/src/v4/mini/tests/index.test.ts +0 -963
  520. package/node_modules/zod/src/v4/mini/tests/number.test.ts +0 -95
  521. package/node_modules/zod/src/v4/mini/tests/object.test.ts +0 -227
  522. package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +0 -43
  523. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +0 -275
  524. package/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +0 -50
  525. package/node_modules/zod/src/v4/mini/tests/string.test.ts +0 -347
  526. package/node_modules/zod/src/v4-mini/index.ts +0 -3
  527. package/node_modules/zod/v3/ZodError.cjs +0 -138
  528. package/node_modules/zod/v3/ZodError.d.cts +0 -164
  529. package/node_modules/zod/v3/ZodError.d.ts +0 -164
  530. package/node_modules/zod/v3/ZodError.js +0 -133
  531. package/node_modules/zod/v3/errors.cjs +0 -17
  532. package/node_modules/zod/v3/errors.d.cts +0 -5
  533. package/node_modules/zod/v3/errors.d.ts +0 -5
  534. package/node_modules/zod/v3/errors.js +0 -9
  535. package/node_modules/zod/v3/external.cjs +0 -22
  536. package/node_modules/zod/v3/external.d.cts +0 -6
  537. package/node_modules/zod/v3/external.d.ts +0 -6
  538. package/node_modules/zod/v3/external.js +0 -6
  539. package/node_modules/zod/v3/helpers/enumUtil.cjs +0 -2
  540. package/node_modules/zod/v3/helpers/enumUtil.d.cts +0 -8
  541. package/node_modules/zod/v3/helpers/enumUtil.d.ts +0 -8
  542. package/node_modules/zod/v3/helpers/enumUtil.js +0 -1
  543. package/node_modules/zod/v3/helpers/errorUtil.cjs +0 -9
  544. package/node_modules/zod/v3/helpers/errorUtil.d.cts +0 -9
  545. package/node_modules/zod/v3/helpers/errorUtil.d.ts +0 -9
  546. package/node_modules/zod/v3/helpers/errorUtil.js +0 -6
  547. package/node_modules/zod/v3/helpers/parseUtil.cjs +0 -124
  548. package/node_modules/zod/v3/helpers/parseUtil.d.cts +0 -78
  549. package/node_modules/zod/v3/helpers/parseUtil.d.ts +0 -78
  550. package/node_modules/zod/v3/helpers/parseUtil.js +0 -109
  551. package/node_modules/zod/v3/helpers/partialUtil.cjs +0 -2
  552. package/node_modules/zod/v3/helpers/partialUtil.d.cts +0 -8
  553. package/node_modules/zod/v3/helpers/partialUtil.d.ts +0 -8
  554. package/node_modules/zod/v3/helpers/partialUtil.js +0 -1
  555. package/node_modules/zod/v3/helpers/typeAliases.cjs +0 -2
  556. package/node_modules/zod/v3/helpers/typeAliases.d.cts +0 -2
  557. package/node_modules/zod/v3/helpers/typeAliases.d.ts +0 -2
  558. package/node_modules/zod/v3/helpers/typeAliases.js +0 -1
  559. package/node_modules/zod/v3/helpers/util.cjs +0 -137
  560. package/node_modules/zod/v3/helpers/util.d.cts +0 -85
  561. package/node_modules/zod/v3/helpers/util.d.ts +0 -85
  562. package/node_modules/zod/v3/helpers/util.js +0 -133
  563. package/node_modules/zod/v3/index.cjs +0 -33
  564. package/node_modules/zod/v3/index.d.cts +0 -4
  565. package/node_modules/zod/v3/index.d.ts +0 -4
  566. package/node_modules/zod/v3/index.js +0 -4
  567. package/node_modules/zod/v3/locales/en.cjs +0 -112
  568. package/node_modules/zod/v3/locales/en.d.cts +0 -3
  569. package/node_modules/zod/v3/locales/en.d.ts +0 -3
  570. package/node_modules/zod/v3/locales/en.js +0 -109
  571. package/node_modules/zod/v3/package.json +0 -6
  572. package/node_modules/zod/v3/standard-schema.cjs +0 -2
  573. package/node_modules/zod/v3/standard-schema.d.cts +0 -102
  574. package/node_modules/zod/v3/standard-schema.d.ts +0 -102
  575. package/node_modules/zod/v3/standard-schema.js +0 -1
  576. package/node_modules/zod/v3/types.cjs +0 -3777
  577. package/node_modules/zod/v3/types.d.cts +0 -1034
  578. package/node_modules/zod/v3/types.d.ts +0 -1034
  579. package/node_modules/zod/v3/types.js +0 -3695
  580. package/node_modules/zod/v4/classic/checks.cjs +0 -33
  581. package/node_modules/zod/v4/classic/checks.d.cts +0 -1
  582. package/node_modules/zod/v4/classic/checks.d.ts +0 -1
  583. package/node_modules/zod/v4/classic/checks.js +0 -1
  584. package/node_modules/zod/v4/classic/coerce.cjs +0 -47
  585. package/node_modules/zod/v4/classic/coerce.d.cts +0 -17
  586. package/node_modules/zod/v4/classic/coerce.d.ts +0 -17
  587. package/node_modules/zod/v4/classic/coerce.js +0 -17
  588. package/node_modules/zod/v4/classic/compat.cjs +0 -61
  589. package/node_modules/zod/v4/classic/compat.d.cts +0 -50
  590. package/node_modules/zod/v4/classic/compat.d.ts +0 -50
  591. package/node_modules/zod/v4/classic/compat.js +0 -31
  592. package/node_modules/zod/v4/classic/errors.cjs +0 -74
  593. package/node_modules/zod/v4/classic/errors.d.cts +0 -30
  594. package/node_modules/zod/v4/classic/errors.d.ts +0 -30
  595. package/node_modules/zod/v4/classic/errors.js +0 -48
  596. package/node_modules/zod/v4/classic/external.cjs +0 -73
  597. package/node_modules/zod/v4/classic/external.d.cts +0 -15
  598. package/node_modules/zod/v4/classic/external.d.ts +0 -15
  599. package/node_modules/zod/v4/classic/external.js +0 -20
  600. package/node_modules/zod/v4/classic/from-json-schema.cjs +0 -610
  601. package/node_modules/zod/v4/classic/from-json-schema.d.cts +0 -12
  602. package/node_modules/zod/v4/classic/from-json-schema.d.ts +0 -12
  603. package/node_modules/zod/v4/classic/from-json-schema.js +0 -584
  604. package/node_modules/zod/v4/classic/index.cjs +0 -33
  605. package/node_modules/zod/v4/classic/index.d.cts +0 -4
  606. package/node_modules/zod/v4/classic/index.d.ts +0 -4
  607. package/node_modules/zod/v4/classic/index.js +0 -4
  608. package/node_modules/zod/v4/classic/iso.cjs +0 -60
  609. package/node_modules/zod/v4/classic/iso.d.cts +0 -22
  610. package/node_modules/zod/v4/classic/iso.d.ts +0 -22
  611. package/node_modules/zod/v4/classic/iso.js +0 -30
  612. package/node_modules/zod/v4/classic/package.json +0 -6
  613. package/node_modules/zod/v4/classic/parse.cjs +0 -41
  614. package/node_modules/zod/v4/classic/parse.d.cts +0 -31
  615. package/node_modules/zod/v4/classic/parse.d.ts +0 -31
  616. package/node_modules/zod/v4/classic/parse.js +0 -15
  617. package/node_modules/zod/v4/classic/schemas.cjs +0 -1272
  618. package/node_modules/zod/v4/classic/schemas.d.cts +0 -739
  619. package/node_modules/zod/v4/classic/schemas.d.ts +0 -739
  620. package/node_modules/zod/v4/classic/schemas.js +0 -1157
  621. package/node_modules/zod/v4/core/api.cjs +0 -1222
  622. package/node_modules/zod/v4/core/api.d.cts +0 -304
  623. package/node_modules/zod/v4/core/api.d.ts +0 -304
  624. package/node_modules/zod/v4/core/api.js +0 -1082
  625. package/node_modules/zod/v4/core/checks.cjs +0 -601
  626. package/node_modules/zod/v4/core/checks.d.cts +0 -278
  627. package/node_modules/zod/v4/core/checks.d.ts +0 -278
  628. package/node_modules/zod/v4/core/checks.js +0 -575
  629. package/node_modules/zod/v4/core/core.cjs +0 -83
  630. package/node_modules/zod/v4/core/core.d.cts +0 -70
  631. package/node_modules/zod/v4/core/core.d.ts +0 -70
  632. package/node_modules/zod/v4/core/core.js +0 -76
  633. package/node_modules/zod/v4/core/doc.cjs +0 -39
  634. package/node_modules/zod/v4/core/doc.d.cts +0 -14
  635. package/node_modules/zod/v4/core/doc.d.ts +0 -14
  636. package/node_modules/zod/v4/core/doc.js +0 -35
  637. package/node_modules/zod/v4/core/errors.cjs +0 -213
  638. package/node_modules/zod/v4/core/errors.d.cts +0 -220
  639. package/node_modules/zod/v4/core/errors.d.ts +0 -220
  640. package/node_modules/zod/v4/core/errors.js +0 -182
  641. package/node_modules/zod/v4/core/index.cjs +0 -47
  642. package/node_modules/zod/v4/core/index.d.cts +0 -16
  643. package/node_modules/zod/v4/core/index.d.ts +0 -16
  644. package/node_modules/zod/v4/core/index.js +0 -16
  645. package/node_modules/zod/v4/core/json-schema-generator.cjs +0 -99
  646. package/node_modules/zod/v4/core/json-schema-generator.d.cts +0 -65
  647. package/node_modules/zod/v4/core/json-schema-generator.d.ts +0 -65
  648. package/node_modules/zod/v4/core/json-schema-generator.js +0 -95
  649. package/node_modules/zod/v4/core/json-schema-processors.cjs +0 -648
  650. package/node_modules/zod/v4/core/json-schema-processors.d.cts +0 -49
  651. package/node_modules/zod/v4/core/json-schema-processors.d.ts +0 -49
  652. package/node_modules/zod/v4/core/json-schema-processors.js +0 -605
  653. package/node_modules/zod/v4/core/json-schema.cjs +0 -2
  654. package/node_modules/zod/v4/core/json-schema.d.cts +0 -88
  655. package/node_modules/zod/v4/core/json-schema.d.ts +0 -88
  656. package/node_modules/zod/v4/core/json-schema.js +0 -1
  657. package/node_modules/zod/v4/core/package.json +0 -6
  658. package/node_modules/zod/v4/core/parse.cjs +0 -131
  659. package/node_modules/zod/v4/core/parse.d.cts +0 -49
  660. package/node_modules/zod/v4/core/parse.d.ts +0 -49
  661. package/node_modules/zod/v4/core/parse.js +0 -93
  662. package/node_modules/zod/v4/core/regexes.cjs +0 -166
  663. package/node_modules/zod/v4/core/regexes.d.cts +0 -79
  664. package/node_modules/zod/v4/core/regexes.d.ts +0 -79
  665. package/node_modules/zod/v4/core/regexes.js +0 -133
  666. package/node_modules/zod/v4/core/registries.cjs +0 -56
  667. package/node_modules/zod/v4/core/registries.d.cts +0 -35
  668. package/node_modules/zod/v4/core/registries.d.ts +0 -35
  669. package/node_modules/zod/v4/core/registries.js +0 -51
  670. package/node_modules/zod/v4/core/schemas.cjs +0 -2124
  671. package/node_modules/zod/v4/core/schemas.d.cts +0 -1146
  672. package/node_modules/zod/v4/core/schemas.d.ts +0 -1146
  673. package/node_modules/zod/v4/core/schemas.js +0 -2093
  674. package/node_modules/zod/v4/core/standard-schema.cjs +0 -2
  675. package/node_modules/zod/v4/core/standard-schema.d.cts +0 -126
  676. package/node_modules/zod/v4/core/standard-schema.d.ts +0 -126
  677. package/node_modules/zod/v4/core/standard-schema.js +0 -1
  678. package/node_modules/zod/v4/core/to-json-schema.cjs +0 -446
  679. package/node_modules/zod/v4/core/to-json-schema.d.cts +0 -114
  680. package/node_modules/zod/v4/core/to-json-schema.d.ts +0 -114
  681. package/node_modules/zod/v4/core/to-json-schema.js +0 -437
  682. package/node_modules/zod/v4/core/util.cjs +0 -710
  683. package/node_modules/zod/v4/core/util.d.cts +0 -199
  684. package/node_modules/zod/v4/core/util.d.ts +0 -199
  685. package/node_modules/zod/v4/core/util.js +0 -651
  686. package/node_modules/zod/v4/core/versions.cjs +0 -8
  687. package/node_modules/zod/v4/core/versions.d.cts +0 -5
  688. package/node_modules/zod/v4/core/versions.d.ts +0 -5
  689. package/node_modules/zod/v4/core/versions.js +0 -5
  690. package/node_modules/zod/v4/index.cjs +0 -22
  691. package/node_modules/zod/v4/index.d.cts +0 -3
  692. package/node_modules/zod/v4/index.d.ts +0 -3
  693. package/node_modules/zod/v4/index.js +0 -3
  694. package/node_modules/zod/v4/locales/ar.cjs +0 -133
  695. package/node_modules/zod/v4/locales/ar.d.cts +0 -5
  696. package/node_modules/zod/v4/locales/ar.d.ts +0 -4
  697. package/node_modules/zod/v4/locales/ar.js +0 -106
  698. package/node_modules/zod/v4/locales/az.cjs +0 -132
  699. package/node_modules/zod/v4/locales/az.d.cts +0 -5
  700. package/node_modules/zod/v4/locales/az.d.ts +0 -4
  701. package/node_modules/zod/v4/locales/az.js +0 -105
  702. package/node_modules/zod/v4/locales/be.cjs +0 -183
  703. package/node_modules/zod/v4/locales/be.d.cts +0 -5
  704. package/node_modules/zod/v4/locales/be.d.ts +0 -4
  705. package/node_modules/zod/v4/locales/be.js +0 -156
  706. package/node_modules/zod/v4/locales/bg.cjs +0 -147
  707. package/node_modules/zod/v4/locales/bg.d.cts +0 -5
  708. package/node_modules/zod/v4/locales/bg.d.ts +0 -4
  709. package/node_modules/zod/v4/locales/bg.js +0 -120
  710. package/node_modules/zod/v4/locales/ca.cjs +0 -134
  711. package/node_modules/zod/v4/locales/ca.d.cts +0 -5
  712. package/node_modules/zod/v4/locales/ca.d.ts +0 -4
  713. package/node_modules/zod/v4/locales/ca.js +0 -107
  714. package/node_modules/zod/v4/locales/cs.cjs +0 -138
  715. package/node_modules/zod/v4/locales/cs.d.cts +0 -5
  716. package/node_modules/zod/v4/locales/cs.d.ts +0 -4
  717. package/node_modules/zod/v4/locales/cs.js +0 -111
  718. package/node_modules/zod/v4/locales/da.cjs +0 -142
  719. package/node_modules/zod/v4/locales/da.d.cts +0 -5
  720. package/node_modules/zod/v4/locales/da.d.ts +0 -4
  721. package/node_modules/zod/v4/locales/da.js +0 -115
  722. package/node_modules/zod/v4/locales/de.cjs +0 -135
  723. package/node_modules/zod/v4/locales/de.d.cts +0 -5
  724. package/node_modules/zod/v4/locales/de.d.ts +0 -4
  725. package/node_modules/zod/v4/locales/de.js +0 -108
  726. package/node_modules/zod/v4/locales/en.cjs +0 -136
  727. package/node_modules/zod/v4/locales/en.d.cts +0 -5
  728. package/node_modules/zod/v4/locales/en.d.ts +0 -4
  729. package/node_modules/zod/v4/locales/en.js +0 -109
  730. package/node_modules/zod/v4/locales/eo.cjs +0 -136
  731. package/node_modules/zod/v4/locales/eo.d.cts +0 -5
  732. package/node_modules/zod/v4/locales/eo.d.ts +0 -4
  733. package/node_modules/zod/v4/locales/eo.js +0 -109
  734. package/node_modules/zod/v4/locales/es.cjs +0 -159
  735. package/node_modules/zod/v4/locales/es.d.cts +0 -5
  736. package/node_modules/zod/v4/locales/es.d.ts +0 -4
  737. package/node_modules/zod/v4/locales/es.js +0 -132
  738. package/node_modules/zod/v4/locales/fa.cjs +0 -141
  739. package/node_modules/zod/v4/locales/fa.d.cts +0 -5
  740. package/node_modules/zod/v4/locales/fa.d.ts +0 -4
  741. package/node_modules/zod/v4/locales/fa.js +0 -114
  742. package/node_modules/zod/v4/locales/fi.cjs +0 -139
  743. package/node_modules/zod/v4/locales/fi.d.cts +0 -5
  744. package/node_modules/zod/v4/locales/fi.d.ts +0 -4
  745. package/node_modules/zod/v4/locales/fi.js +0 -112
  746. package/node_modules/zod/v4/locales/fr-CA.cjs +0 -134
  747. package/node_modules/zod/v4/locales/fr-CA.d.cts +0 -5
  748. package/node_modules/zod/v4/locales/fr-CA.d.ts +0 -4
  749. package/node_modules/zod/v4/locales/fr-CA.js +0 -107
  750. package/node_modules/zod/v4/locales/fr.cjs +0 -135
  751. package/node_modules/zod/v4/locales/fr.d.cts +0 -5
  752. package/node_modules/zod/v4/locales/fr.d.ts +0 -4
  753. package/node_modules/zod/v4/locales/fr.js +0 -108
  754. package/node_modules/zod/v4/locales/he.cjs +0 -241
  755. package/node_modules/zod/v4/locales/he.d.cts +0 -5
  756. package/node_modules/zod/v4/locales/he.d.ts +0 -4
  757. package/node_modules/zod/v4/locales/he.js +0 -214
  758. package/node_modules/zod/v4/locales/hu.cjs +0 -135
  759. package/node_modules/zod/v4/locales/hu.d.cts +0 -5
  760. package/node_modules/zod/v4/locales/hu.d.ts +0 -4
  761. package/node_modules/zod/v4/locales/hu.js +0 -108
  762. package/node_modules/zod/v4/locales/hy.cjs +0 -174
  763. package/node_modules/zod/v4/locales/hy.d.cts +0 -5
  764. package/node_modules/zod/v4/locales/hy.d.ts +0 -4
  765. package/node_modules/zod/v4/locales/hy.js +0 -147
  766. package/node_modules/zod/v4/locales/id.cjs +0 -133
  767. package/node_modules/zod/v4/locales/id.d.cts +0 -5
  768. package/node_modules/zod/v4/locales/id.d.ts +0 -4
  769. package/node_modules/zod/v4/locales/id.js +0 -106
  770. package/node_modules/zod/v4/locales/index.cjs +0 -104
  771. package/node_modules/zod/v4/locales/index.d.cts +0 -49
  772. package/node_modules/zod/v4/locales/index.d.ts +0 -49
  773. package/node_modules/zod/v4/locales/index.js +0 -49
  774. package/node_modules/zod/v4/locales/is.cjs +0 -136
  775. package/node_modules/zod/v4/locales/is.d.cts +0 -5
  776. package/node_modules/zod/v4/locales/is.d.ts +0 -4
  777. package/node_modules/zod/v4/locales/is.js +0 -109
  778. package/node_modules/zod/v4/locales/it.cjs +0 -135
  779. package/node_modules/zod/v4/locales/it.d.cts +0 -5
  780. package/node_modules/zod/v4/locales/it.d.ts +0 -4
  781. package/node_modules/zod/v4/locales/it.js +0 -108
  782. package/node_modules/zod/v4/locales/ja.cjs +0 -134
  783. package/node_modules/zod/v4/locales/ja.d.cts +0 -5
  784. package/node_modules/zod/v4/locales/ja.d.ts +0 -4
  785. package/node_modules/zod/v4/locales/ja.js +0 -107
  786. package/node_modules/zod/v4/locales/ka.cjs +0 -139
  787. package/node_modules/zod/v4/locales/ka.d.cts +0 -5
  788. package/node_modules/zod/v4/locales/ka.d.ts +0 -4
  789. package/node_modules/zod/v4/locales/ka.js +0 -112
  790. package/node_modules/zod/v4/locales/kh.cjs +0 -12
  791. package/node_modules/zod/v4/locales/kh.d.cts +0 -5
  792. package/node_modules/zod/v4/locales/kh.d.ts +0 -5
  793. package/node_modules/zod/v4/locales/kh.js +0 -5
  794. package/node_modules/zod/v4/locales/km.cjs +0 -137
  795. package/node_modules/zod/v4/locales/km.d.cts +0 -5
  796. package/node_modules/zod/v4/locales/km.d.ts +0 -4
  797. package/node_modules/zod/v4/locales/km.js +0 -110
  798. package/node_modules/zod/v4/locales/ko.cjs +0 -138
  799. package/node_modules/zod/v4/locales/ko.d.cts +0 -5
  800. package/node_modules/zod/v4/locales/ko.d.ts +0 -4
  801. package/node_modules/zod/v4/locales/ko.js +0 -111
  802. package/node_modules/zod/v4/locales/lt.cjs +0 -230
  803. package/node_modules/zod/v4/locales/lt.d.cts +0 -5
  804. package/node_modules/zod/v4/locales/lt.d.ts +0 -4
  805. package/node_modules/zod/v4/locales/lt.js +0 -203
  806. package/node_modules/zod/v4/locales/mk.cjs +0 -136
  807. package/node_modules/zod/v4/locales/mk.d.cts +0 -5
  808. package/node_modules/zod/v4/locales/mk.d.ts +0 -4
  809. package/node_modules/zod/v4/locales/mk.js +0 -109
  810. package/node_modules/zod/v4/locales/ms.cjs +0 -134
  811. package/node_modules/zod/v4/locales/ms.d.cts +0 -5
  812. package/node_modules/zod/v4/locales/ms.d.ts +0 -4
  813. package/node_modules/zod/v4/locales/ms.js +0 -107
  814. package/node_modules/zod/v4/locales/nl.cjs +0 -137
  815. package/node_modules/zod/v4/locales/nl.d.cts +0 -5
  816. package/node_modules/zod/v4/locales/nl.d.ts +0 -4
  817. package/node_modules/zod/v4/locales/nl.js +0 -110
  818. package/node_modules/zod/v4/locales/no.cjs +0 -135
  819. package/node_modules/zod/v4/locales/no.d.cts +0 -5
  820. package/node_modules/zod/v4/locales/no.d.ts +0 -4
  821. package/node_modules/zod/v4/locales/no.js +0 -108
  822. package/node_modules/zod/v4/locales/ota.cjs +0 -136
  823. package/node_modules/zod/v4/locales/ota.d.cts +0 -5
  824. package/node_modules/zod/v4/locales/ota.d.ts +0 -4
  825. package/node_modules/zod/v4/locales/ota.js +0 -109
  826. package/node_modules/zod/v4/locales/package.json +0 -6
  827. package/node_modules/zod/v4/locales/pl.cjs +0 -136
  828. package/node_modules/zod/v4/locales/pl.d.cts +0 -5
  829. package/node_modules/zod/v4/locales/pl.d.ts +0 -4
  830. package/node_modules/zod/v4/locales/pl.js +0 -109
  831. package/node_modules/zod/v4/locales/ps.cjs +0 -141
  832. package/node_modules/zod/v4/locales/ps.d.cts +0 -5
  833. package/node_modules/zod/v4/locales/ps.d.ts +0 -4
  834. package/node_modules/zod/v4/locales/ps.js +0 -114
  835. package/node_modules/zod/v4/locales/pt.cjs +0 -135
  836. package/node_modules/zod/v4/locales/pt.d.cts +0 -5
  837. package/node_modules/zod/v4/locales/pt.d.ts +0 -4
  838. package/node_modules/zod/v4/locales/pt.js +0 -108
  839. package/node_modules/zod/v4/locales/ru.cjs +0 -183
  840. package/node_modules/zod/v4/locales/ru.d.cts +0 -5
  841. package/node_modules/zod/v4/locales/ru.d.ts +0 -4
  842. package/node_modules/zod/v4/locales/ru.js +0 -156
  843. package/node_modules/zod/v4/locales/sl.cjs +0 -136
  844. package/node_modules/zod/v4/locales/sl.d.cts +0 -5
  845. package/node_modules/zod/v4/locales/sl.d.ts +0 -4
  846. package/node_modules/zod/v4/locales/sl.js +0 -109
  847. package/node_modules/zod/v4/locales/sv.cjs +0 -137
  848. package/node_modules/zod/v4/locales/sv.d.cts +0 -5
  849. package/node_modules/zod/v4/locales/sv.d.ts +0 -4
  850. package/node_modules/zod/v4/locales/sv.js +0 -110
  851. package/node_modules/zod/v4/locales/ta.cjs +0 -137
  852. package/node_modules/zod/v4/locales/ta.d.cts +0 -5
  853. package/node_modules/zod/v4/locales/ta.d.ts +0 -4
  854. package/node_modules/zod/v4/locales/ta.js +0 -110
  855. package/node_modules/zod/v4/locales/th.cjs +0 -137
  856. package/node_modules/zod/v4/locales/th.d.cts +0 -5
  857. package/node_modules/zod/v4/locales/th.d.ts +0 -4
  858. package/node_modules/zod/v4/locales/th.js +0 -110
  859. package/node_modules/zod/v4/locales/tr.cjs +0 -132
  860. package/node_modules/zod/v4/locales/tr.d.cts +0 -5
  861. package/node_modules/zod/v4/locales/tr.d.ts +0 -4
  862. package/node_modules/zod/v4/locales/tr.js +0 -105
  863. package/node_modules/zod/v4/locales/ua.cjs +0 -12
  864. package/node_modules/zod/v4/locales/ua.d.cts +0 -5
  865. package/node_modules/zod/v4/locales/ua.d.ts +0 -5
  866. package/node_modules/zod/v4/locales/ua.js +0 -5
  867. package/node_modules/zod/v4/locales/uk.cjs +0 -135
  868. package/node_modules/zod/v4/locales/uk.d.cts +0 -5
  869. package/node_modules/zod/v4/locales/uk.d.ts +0 -4
  870. package/node_modules/zod/v4/locales/uk.js +0 -108
  871. package/node_modules/zod/v4/locales/ur.cjs +0 -137
  872. package/node_modules/zod/v4/locales/ur.d.cts +0 -5
  873. package/node_modules/zod/v4/locales/ur.d.ts +0 -4
  874. package/node_modules/zod/v4/locales/ur.js +0 -110
  875. package/node_modules/zod/v4/locales/uz.cjs +0 -136
  876. package/node_modules/zod/v4/locales/uz.d.cts +0 -5
  877. package/node_modules/zod/v4/locales/uz.d.ts +0 -4
  878. package/node_modules/zod/v4/locales/uz.js +0 -109
  879. package/node_modules/zod/v4/locales/vi.cjs +0 -135
  880. package/node_modules/zod/v4/locales/vi.d.cts +0 -5
  881. package/node_modules/zod/v4/locales/vi.d.ts +0 -4
  882. package/node_modules/zod/v4/locales/vi.js +0 -108
  883. package/node_modules/zod/v4/locales/yo.cjs +0 -134
  884. package/node_modules/zod/v4/locales/yo.d.cts +0 -5
  885. package/node_modules/zod/v4/locales/yo.d.ts +0 -4
  886. package/node_modules/zod/v4/locales/yo.js +0 -107
  887. package/node_modules/zod/v4/locales/zh-CN.cjs +0 -136
  888. package/node_modules/zod/v4/locales/zh-CN.d.cts +0 -5
  889. package/node_modules/zod/v4/locales/zh-CN.d.ts +0 -4
  890. package/node_modules/zod/v4/locales/zh-CN.js +0 -109
  891. package/node_modules/zod/v4/locales/zh-TW.cjs +0 -134
  892. package/node_modules/zod/v4/locales/zh-TW.d.cts +0 -5
  893. package/node_modules/zod/v4/locales/zh-TW.d.ts +0 -4
  894. package/node_modules/zod/v4/locales/zh-TW.js +0 -107
  895. package/node_modules/zod/v4/mini/checks.cjs +0 -34
  896. package/node_modules/zod/v4/mini/checks.d.cts +0 -1
  897. package/node_modules/zod/v4/mini/checks.d.ts +0 -1
  898. package/node_modules/zod/v4/mini/checks.js +0 -1
  899. package/node_modules/zod/v4/mini/coerce.cjs +0 -52
  900. package/node_modules/zod/v4/mini/coerce.d.cts +0 -7
  901. package/node_modules/zod/v4/mini/coerce.d.ts +0 -7
  902. package/node_modules/zod/v4/mini/coerce.js +0 -22
  903. package/node_modules/zod/v4/mini/external.cjs +0 -63
  904. package/node_modules/zod/v4/mini/external.d.cts +0 -12
  905. package/node_modules/zod/v4/mini/external.d.ts +0 -12
  906. package/node_modules/zod/v4/mini/external.js +0 -14
  907. package/node_modules/zod/v4/mini/index.cjs +0 -32
  908. package/node_modules/zod/v4/mini/index.d.cts +0 -3
  909. package/node_modules/zod/v4/mini/index.d.ts +0 -3
  910. package/node_modules/zod/v4/mini/index.js +0 -3
  911. package/node_modules/zod/v4/mini/iso.cjs +0 -64
  912. package/node_modules/zod/v4/mini/iso.d.cts +0 -22
  913. package/node_modules/zod/v4/mini/iso.d.ts +0 -22
  914. package/node_modules/zod/v4/mini/iso.js +0 -34
  915. package/node_modules/zod/v4/mini/package.json +0 -6
  916. package/node_modules/zod/v4/mini/parse.cjs +0 -16
  917. package/node_modules/zod/v4/mini/parse.d.cts +0 -1
  918. package/node_modules/zod/v4/mini/parse.d.ts +0 -1
  919. package/node_modules/zod/v4/mini/parse.js +0 -1
  920. package/node_modules/zod/v4/mini/schemas.cjs +0 -1046
  921. package/node_modules/zod/v4/mini/schemas.d.cts +0 -427
  922. package/node_modules/zod/v4/mini/schemas.d.ts +0 -427
  923. package/node_modules/zod/v4/mini/schemas.js +0 -925
  924. package/node_modules/zod/v4/package.json +0 -6
  925. package/node_modules/zod/v4-mini/index.cjs +0 -32
  926. package/node_modules/zod/v4-mini/index.d.cts +0 -3
  927. package/node_modules/zod/v4-mini/index.d.ts +0 -3
  928. package/node_modules/zod/v4-mini/index.js +0 -3
  929. package/node_modules/zod/v4-mini/package.json +0 -6
  930. package/plugin/dist/index.d.ts +0 -179
  931. package/plugin/dist/index.d.ts.map +0 -1
  932. package/plugin/dist/index.js +0 -3209
  933. package/plugin/dist/index.js.map +0 -1
package/dist/index.js DELETED
@@ -1,1469 +0,0 @@
1
- /**
2
- * hypermem — Agent-Centric Memory & Context Composition Engine
3
- *
4
- * @module @psiclawops/hypermem
5
- *
6
- * Architecture:
7
- * L1: CacheLayer — SQLite `:memory:` hot session working memory
8
- * L2: messages.db — per-agent conversation log (rotatable)
9
- * L3: vectors.db — per-agent semantic search index (reconstructable)
10
- * L4: library.db — fleet-wide structured knowledge (crown jewel)
11
- */
12
- export { ENGINE_VERSION, MIN_NODE_VERSION, MIN_REDIS_VERSION, SQLITE_VEC_VERSION, MAIN_SCHEMA_VERSION, LIBRARY_SCHEMA_VERSION_EXPORT, HYPERMEM_COMPAT_VERSION, SCHEMA_COMPAT } from './version.js';
13
- export { DatabaseManager } from './db.js';
14
- export { MessageStore } from './message-store.js';
15
- export { ToolArtifactStore } from './tool-artifact-store.js';
16
- export { FactStore } from './fact-store.js';
17
- export { KnowledgeStore } from './knowledge-store.js';
18
- export { TopicStore } from './topic-store.js';
19
- export { EpisodeStore } from './episode-store.js';
20
- export { PreferenceStore } from './preference-store.js';
21
- export { FleetStore } from './fleet-store.js';
22
- export { SystemStore } from './system-store.js';
23
- export { WorkStore } from './work-store.js';
24
- export { ensureContextSchema, getActiveContext, getOrCreateActiveContext, updateContextHead, archiveContext, rotateSessionContext, getContextById, getArchivedContexts, getArchivedContext, getContextLineage, getForkChildren } from './context-store.js';
25
- export { DesiredStateStore } from './desired-state-store.js';
26
- export { ExpertiseStore } from './expertise-store.js';
27
- export { evictStaleContent, DEFAULT_EVICTION_CONFIG } from './image-eviction.js';
28
- export { KnowledgeGraph } from './knowledge-graph.js';
29
- export { RateLimiter, createRateLimitedEmbedder } from './rate-limiter.js';
30
- export { CacheLayer } from './cache.js';
31
- export { TRIM_SOFT_TARGET, TRIM_GROWTH_THRESHOLD, TRIM_HEADROOM_FRACTION, TRIM_BUDGET_POLICY, resolveTrimBudgets, } from './budget-policy.js';
32
- // ── Phase C0.2: Canonical degradation contracts ───────────────────────────────
33
- export {
34
- // Reason enum + all values
35
- DEGRADATION_REASONS, DEGRADATION_LIMITS, isDegradationReason, isReplayState,
36
- // Tool-chain stub
37
- formatToolChainStub, parseToolChainStub, isToolChainStub,
38
- // Artifact reference
39
- formatArtifactRef, parseArtifactRef, isArtifactRef,
40
- // Replay marker
41
- formatReplayMarker, parseReplayMarker, isReplayMarker,
42
- // Generic detector
43
- isDegradedContent, } from './degradation.js';
44
- export { REPLAY_RECOVERY_POLICY, decideReplayRecovery, isColdRedisReplay, isReplayRecovered, } from './replay-recovery.js';
45
- export { Compositor, applyToolGradientToWindow, canPersistReshapedHistory, OPENCLAW_BOOTSTRAP_FILES, resolveToolChainEjections } from './compositor.js';
46
- export { TRIGGER_REGISTRY, TRIGGER_REGISTRY_VERSION, TRIGGER_REGISTRY_HASH, DEFAULT_TRIGGERS, matchTriggers, } from './trigger-registry.js';
47
- export { ensureCompactionFenceSchema, updateCompactionFence, getCompactionFence, getCompactionEligibility, getCompactableMessages, } from './compaction-fence.js';
48
- export { verifyPreservation, verifyPreservationFromVectors, } from './preservation-gate.js';
49
- export { toProviderFormat, fromProviderFormat, userMessageToNeutral, toolResultsToNeutral, normalizeToolCallId, generateToolCallId, detectProvider, repairToolCallPairs, } from './provider-translator.js';
50
- export { migrate, SCHEMA_VERSION } from './schema.js';
51
- export { migrateLibrary, LIBRARY_SCHEMA_VERSION } from './library-schema.js';
52
- export { VectorStore, generateEmbeddings } from './vector-store.js';
53
- export { hybridSearch, buildFtsQuery } from './hybrid-retrieval.js';
54
- export { ContradictionDetector } from './contradiction-detector.js';
55
- export { DocChunkStore } from './doc-chunk-store.js';
56
- export { WorkspaceSeeder, seedWorkspace } from './seed.js';
57
- export { chunkMarkdown, chunkFile, inferCollection, hashContent, ACA_COLLECTIONS } from './doc-chunker.js';
58
- export { crossAgentQuery, canAccess, visibilityFilter, defaultOrgRegistry, buildOrgRegistryFromDb, loadOrgRegistryFromDb, } from './cross-agent.js';
59
- export { BackgroundIndexer, createIndexer } from './background-indexer.js';
60
- export { runDreamingPromoter, runDreamingPassForFleet, resolveAgentWorkspacePath, DEFAULT_DREAMER_CONFIG, } from './dreaming-promoter.js';
61
- export { TopicSynthesizer } from './topic-synthesizer.js';
62
- export { WikiPageEmitter } from './wiki-page-emitter.js';
63
- export { lintKnowledge } from './knowledge-lint.js';
64
- export { buildSpawnContext } from './spawn-context.js';
65
- export { runNoiseSweep, runToolDecay } from './proactive-pass.js';
66
- export { classifyContentType, signalWeight, isSignalBearing, SIGNAL_WEIGHT } from './content-type-classifier.js';
67
- export { detectTopicShift, stripMessageMetadata } from './topic-detector.js';
68
- export { SessionTopicMap } from './session-topic-map.js';
69
- export { getActiveFOS, matchMOD, renderFOS, renderMOD, recordOutputMetrics, } from './fos-mod.js';
70
- import { DatabaseManager } from './db.js';
71
- import { MessageStore } from './message-store.js';
72
- import { FactStore } from './fact-store.js';
73
- import { KnowledgeStore } from './knowledge-store.js';
74
- import { TopicStore } from './topic-store.js';
75
- import { EpisodeStore } from './episode-store.js';
76
- import { PreferenceStore } from './preference-store.js';
77
- import { FleetStore } from './fleet-store.js';
78
- import { SystemStore } from './system-store.js';
79
- import { WorkStore } from './work-store.js';
80
- import { KnowledgeGraph } from './knowledge-graph.js';
81
- import { DesiredStateStore } from './desired-state-store.js';
82
- import { CacheLayer } from './cache.js';
83
- import { Compositor } from './compositor.js';
84
- import { getArchivedContexts } from './context-store.js';
85
- import { VectorStore } from './vector-store.js';
86
- import { userMessageToNeutral, fromProviderFormat } from './provider-translator.js';
87
- import { stripMessageMetadata } from './topic-detector.js';
88
- import { DocChunkStore } from './doc-chunk-store.js';
89
- import { WorkspaceSeeder } from './seed.js';
90
- import { crossAgentQuery, buildOrgRegistryFromDb } from './cross-agent.js';
91
- import fs from 'node:fs';
92
- import path from 'node:path';
93
- import os from 'node:os';
94
- const DEFAULT_CONFIG = {
95
- enabled: true,
96
- dataDir: path.join(process.env.HOME || os.homedir(), '.openclaw', 'hypermem'),
97
- cache: {
98
- keyPrefix: 'hm:',
99
- sessionTTL: 14400, // 4 hours — system/identity/meta slots
100
- historyTTL: 604800, // 7 days — extended for canvas display
101
- },
102
- compositor: {
103
- // TUNE-010 (2026-04-02): Raised from 65000 → 90000.
104
- // TUNE-008 dropped to 65k as a tool-loop overflow band-aid. The real fix
105
- // (tool-loop pass-through guard in assemble()) means tool turns don't
106
- // re-run composition, so 90k is safe — leaves ~30k headroom for in-flight
107
- // tool results on a 120k window. Budget is better spent on context quality.
108
- defaultTokenBudget: 90000,
109
- maxHistoryMessages: 1000,
110
- maxFacts: 28,
111
- maxCrossSessionContext: 6000,
112
- maxRecentToolPairs: 3,
113
- maxProseToolPairs: 10,
114
- warmHistoryBudgetFraction: 0.4,
115
- },
116
- indexer: {
117
- enabled: true,
118
- factExtractionMode: 'tiered',
119
- topicDormantAfter: '24h',
120
- topicClosedAfter: '7d',
121
- factDecayRate: 0.01,
122
- episodeSignificanceThreshold: 0.5,
123
- periodicInterval: 300000,
124
- batchSize: 128,
125
- maxMessagesPerTick: 500,
126
- },
127
- embedding: {
128
- provider: 'ollama',
129
- ollamaUrl: 'http://localhost:11434',
130
- model: 'nomic-embed-text',
131
- dimensions: 768,
132
- timeout: 10000,
133
- batchSize: 32,
134
- },
135
- };
136
- function escapeRegExp(value) {
137
- return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
138
- }
139
- function normalizeAgentId(value) {
140
- return value
141
- .trim()
142
- .toLowerCase()
143
- .replace(/[^a-z0-9]+/g, '-')
144
- .replace(/^-+|-+$/g, '');
145
- }
146
- function parseIdentityField(markdown, label) {
147
- const pattern = new RegExp(`^\\s*-\\s+\\*\\*${escapeRegExp(label)}:\\*\\*\\s*(.+?)\\s*$`, 'mi');
148
- const match = markdown.match(pattern);
149
- return match?.[1]?.trim() || null;
150
- }
151
- function parseSoulName(markdown) {
152
- const anchor = markdown.match(/You are \*\*([^*]+)\*\*/);
153
- if (anchor?.[1])
154
- return anchor[1].trim();
155
- const heading = markdown.match(/^#\s+SOUL\.md\s+[—-]\s+([^,\n]+)/m);
156
- return heading?.[1]?.trim() || null;
157
- }
158
- function parseSoulRole(markdown) {
159
- const anchor = markdown.match(/You are \*\*[^*]+\*\*\s+[—-]\s+([^\.\n]+)/);
160
- return anchor?.[1]?.trim() || null;
161
- }
162
- function inferTierFromRole(role) {
163
- const lower = (role || '').toLowerCase();
164
- if (!lower)
165
- return 'unknown';
166
- if (lower.includes('council') || lower.includes(' seat'))
167
- return 'council';
168
- if (lower.includes('director'))
169
- return 'director';
170
- if (lower.includes('specialist') || lower.includes('aide-de-camp'))
171
- return 'specialist';
172
- return 'unknown';
173
- }
174
- function parseReportTargets(raw) {
175
- if (!raw)
176
- return [];
177
- const stripped = raw.replace(/\([^)]*\)/g, ' ');
178
- const parts = stripped
179
- .split(/\s*(?:\+|,|\/|&|\band\b)\s*/i)
180
- .map(part => normalizeAgentId(part))
181
- .filter(Boolean);
182
- return [...new Set(parts)];
183
- }
184
- function mergeStartupCandidate(target, partial) {
185
- const existing = target.get(partial.agentId);
186
- if (!existing) {
187
- target.set(partial.agentId, {
188
- agentId: partial.agentId,
189
- displayName: partial.displayName || partial.agentId,
190
- tier: partial.tier || 'unknown',
191
- orgId: partial.orgId ?? null,
192
- reportsTo: partial.reportsTo ?? null,
193
- reportTargets: partial.reportTargets ? [...partial.reportTargets] : [],
194
- metadata: partial.metadata ?? null,
195
- });
196
- return;
197
- }
198
- if (partial.displayName && existing.displayName === existing.agentId) {
199
- existing.displayName = partial.displayName;
200
- }
201
- if (partial.tier && existing.tier === 'unknown') {
202
- existing.tier = partial.tier;
203
- }
204
- if (partial.orgId && !existing.orgId) {
205
- existing.orgId = partial.orgId;
206
- }
207
- if (partial.reportsTo && !existing.reportsTo) {
208
- existing.reportsTo = partial.reportsTo;
209
- }
210
- if (partial.reportTargets?.length) {
211
- existing.reportTargets = [...new Set([...existing.reportTargets, ...partial.reportTargets])];
212
- }
213
- if (partial.metadata) {
214
- existing.metadata = { ...(existing.metadata ?? {}), ...partial.metadata };
215
- }
216
- }
217
- function discoverStartupFleetCandidates(dbManager, opts = {}) {
218
- const homeDir = process.env.HOME || os.homedir();
219
- const workspaceRoots = opts.workspaceRoots ?? [
220
- path.join(homeDir, '.openclaw', 'workspace'),
221
- path.join(homeDir, '.openclaw', 'workspace'),
222
- ];
223
- const candidates = new Map();
224
- for (const root of workspaceRoots) {
225
- if (!fs.existsSync(root))
226
- continue;
227
- let entries = [];
228
- try {
229
- entries = fs.readdirSync(root, { withFileTypes: true });
230
- }
231
- catch {
232
- continue;
233
- }
234
- for (const entry of entries) {
235
- if (!entry.isDirectory())
236
- continue;
237
- const workspacePath = path.join(root, entry.name);
238
- const identityPath = path.join(workspacePath, 'IDENTITY.md');
239
- const soulPath = path.join(workspacePath, 'SOUL.md');
240
- if (!fs.existsSync(identityPath) && !fs.existsSync(soulPath))
241
- continue;
242
- let identityText = '';
243
- let soulText = '';
244
- try {
245
- if (fs.existsSync(identityPath))
246
- identityText = fs.readFileSync(identityPath, 'utf8');
247
- }
248
- catch { }
249
- try {
250
- if (fs.existsSync(soulPath))
251
- soulText = fs.readFileSync(soulPath, 'utf8');
252
- }
253
- catch { }
254
- const displayName = parseIdentityField(identityText, 'Name') ||
255
- parseSoulName(soulText) ||
256
- entry.name;
257
- const role = parseIdentityField(identityText, 'Role') ||
258
- parseSoulRole(soulText) ||
259
- null;
260
- const reportTargets = parseReportTargets(parseIdentityField(identityText, 'Reports to'));
261
- const agentId = normalizeAgentId(entry.name || displayName);
262
- if (!agentId)
263
- continue;
264
- mergeStartupCandidate(candidates, {
265
- agentId,
266
- displayName,
267
- tier: inferTierFromRole(role),
268
- reportTargets,
269
- metadata: {
270
- startupSeed: {
271
- source: 'workspace-identity',
272
- workspacePath,
273
- reportsToRaw: reportTargets,
274
- },
275
- },
276
- });
277
- }
278
- }
279
- if (opts.includeMessageDbAgents !== false) {
280
- for (const agentId of dbManager.listAgents()) {
281
- mergeStartupCandidate(candidates, {
282
- agentId,
283
- displayName: agentId,
284
- tier: 'unknown',
285
- metadata: {
286
- startupSeed: {
287
- source: 'message-db',
288
- },
289
- },
290
- });
291
- }
292
- }
293
- const resolved = [...candidates.values()];
294
- const knownIds = new Set(resolved.map(candidate => candidate.agentId));
295
- const councilIds = new Set(resolved
296
- .filter(candidate => candidate.tier === 'council')
297
- .map(candidate => candidate.agentId));
298
- for (const candidate of resolved) {
299
- const preferredLead = candidate.reportTargets.find(target => councilIds.has(target)) ||
300
- candidate.reportTargets.find(target => knownIds.has(target)) ||
301
- null;
302
- if (candidate.tier === 'council' && !candidate.orgId) {
303
- candidate.orgId = `${candidate.agentId}-org`;
304
- }
305
- if (candidate.tier === 'director' && preferredLead) {
306
- candidate.reportsTo = preferredLead;
307
- if (!candidate.orgId) {
308
- candidate.orgId = `${preferredLead}-org`;
309
- }
310
- }
311
- if (!candidate.reportsTo && preferredLead && candidate.tier !== 'director') {
312
- candidate.reportsTo = preferredLead;
313
- }
314
- // Null out reportsTo if it points outside the known fleet (e.g. a human operator ID)
315
- if (candidate.reportsTo && !knownIds.has(candidate.reportsTo)) {
316
- candidate.reportsTo = null;
317
- }
318
- candidate.metadata = {
319
- ...(candidate.metadata ?? {}),
320
- startupSeed: {
321
- ...(candidate.metadata ?? {}).startupSeed,
322
- derivedOrgId: candidate.orgId,
323
- derivedReportsTo: candidate.reportsTo,
324
- },
325
- };
326
- }
327
- return resolved.sort((a, b) => a.agentId.localeCompare(b.agentId));
328
- }
329
- /**
330
- * hypermem — the main API facade.
331
- *
332
- * Usage:
333
- * const hm = await hypermem.create({ dataDir: '~/.openclaw/hypermem' });
334
- * await hm.record('alice', 'agent:alice:webchat:main', userMsg);
335
- * const result = await hm.compose({ agentId: 'alice', sessionKey: '...', ... });
336
- */
337
- export class HyperMem {
338
- dbManager;
339
- cache;
340
- compositor;
341
- config;
342
- constructor(config) {
343
- this.config = config;
344
- this.dbManager = new DatabaseManager({ dataDir: config.dataDir });
345
- this.cache = new CacheLayer(config.cache);
346
- this.compositor = new Compositor({
347
- cache: this.cache,
348
- vectorStore: null, // Set after create() when vector DB is available
349
- libraryDb: null, // Set after create() when library DB is available
350
- }, config.compositor);
351
- }
352
- /**
353
- * Get the active vector store, if initialized.
354
- * Used by the plugin to wire embeddings into the background indexer.
355
- */
356
- getVectorStore() {
357
- return this.compositor.vectorStore;
358
- }
359
- /**
360
- * Create and initialize a hypermem instance.
361
- */
362
- static async create(config) {
363
- const merged = {
364
- ...DEFAULT_CONFIG,
365
- ...config,
366
- cache: { ...DEFAULT_CONFIG.cache, ...config?.cache },
367
- compositor: { ...DEFAULT_CONFIG.compositor, ...config?.compositor },
368
- indexer: { ...DEFAULT_CONFIG.indexer, ...config?.indexer },
369
- embedding: {
370
- ...DEFAULT_CONFIG.embedding,
371
- ...config?.embedding,
372
- },
373
- };
374
- const hm = new HyperMem(merged);
375
- const cacheOk = await hm.cache.connect();
376
- if (cacheOk) {
377
- console.log('[hypermem] Cache connected');
378
- }
379
- else {
380
- console.warn('[hypermem] Cache unavailable — running in SQLite-only mode');
381
- }
382
- // ── Vector store init ─────────────────────────────────────
383
- // Attempt to wire up sqlite-vec + nomic-embed-text for semantic recall.
384
- // Non-fatal: if sqlite-vec isn't available or Ollama is down,
385
- // hybridSearch() continues in FTS5-only mode.
386
- // The vector store is shared (not per-agent) — facts/episodes from all agents
387
- // are indexed together, keyed by (source_table, source_id).
388
- if (merged.embedding.provider === 'none') {
389
- console.log('[hypermem] Embedding provider: none — semantic search disabled, using FTS5 fallback');
390
- }
391
- else {
392
- try {
393
- const vectorDb = hm.dbManager.getSharedVectorDb();
394
- if (vectorDb) {
395
- const vs = new VectorStore(vectorDb, merged.embedding, hm.dbManager.getLibraryDb());
396
- vs.ensureTables();
397
- hm.compositor.setVectorStore(vs);
398
- const embeddingDesc = merged.embedding.provider === 'openai'
399
- ? `${merged.embedding.openaiBaseUrl?.includes('openrouter') ? 'openrouter' : 'openai'}/${merged.embedding.model ?? 'text-embedding-3-small'}`
400
- : `ollama/${merged.embedding.model ?? 'nomic-embed-text'}`;
401
- console.log(`[hypermem] Vector store initialized (sqlite-vec + ${embeddingDesc})`);
402
- }
403
- else {
404
- console.warn('[hypermem] sqlite-vec unavailable — semantic recall in FTS5-only mode');
405
- }
406
- }
407
- catch (err) {
408
- console.warn('[hypermem] Vector store init failed (non-fatal):', err.message);
409
- }
410
- }
411
- const autoStartupFleetSeeding = merged.startupFleetSeeding !== false &&
412
- !path.resolve(merged.dataDir).startsWith(path.resolve(os.tmpdir()) + path.sep);
413
- if (autoStartupFleetSeeding) {
414
- try {
415
- const startupSeed = await hm.seedFleetAgentsOnStartup();
416
- if (startupSeed.discovered > 0) {
417
- console.log(`[hypermem] Startup fleet seed: ${startupSeed.inserted} inserted, ` +
418
- `${startupSeed.updated} updated, ${startupSeed.skipped} unchanged, ` +
419
- `${startupSeed.orgsCreated} orgs, ${startupSeed.hydratedAgents} cached`);
420
- }
421
- }
422
- catch (err) {
423
- console.warn('[hypermem] Startup fleet seed failed (non-fatal):', err.message);
424
- }
425
- }
426
- return hm;
427
- }
428
- // ─── Core API (L2: Message DB) ──────────────────────────────
429
- /**
430
- * Record a user message.
431
- */
432
- async recordUserMessage(agentId, sessionKey, content, opts) {
433
- const db = this.dbManager.getMessageDb(agentId);
434
- this.dbManager.ensureAgent(agentId);
435
- const store = new MessageStore(db);
436
- const conversation = store.getOrCreateConversation(agentId, sessionKey, {
437
- channelType: opts?.channelType,
438
- channelId: opts?.channelId,
439
- provider: opts?.provider,
440
- model: opts?.model,
441
- });
442
- let contextId;
443
- try {
444
- const { getOrCreateActiveContext } = await import('./context-store.js');
445
- const ctx = getOrCreateActiveContext(db, agentId, sessionKey, conversation.id);
446
- contextId = ctx.id;
447
- }
448
- catch (_) { /* context wiring is best-effort in Phase 1 */ }
449
- const neutral = userMessageToNeutral(stripMessageMetadata(content));
450
- const stored = store.recordMessage(conversation.id, agentId, neutral, {
451
- tokenCount: opts?.tokenCount,
452
- isHeartbeat: opts?.isHeartbeat,
453
- contextId,
454
- });
455
- await this.cache.pushHistory(agentId, sessionKey, [stored], this.config.compositor.maxHistoryMessages);
456
- await this.cache.touchSession(agentId, sessionKey);
457
- return stored;
458
- }
459
- /**
460
- * Record an assistant response.
461
- */
462
- async recordAssistantMessage(agentId, sessionKey, message, opts) {
463
- const db = this.dbManager.getMessageDb(agentId);
464
- const store = new MessageStore(db);
465
- const conversation = store.getConversation(sessionKey);
466
- if (!conversation) {
467
- throw new Error(`No conversation found for session ${sessionKey}`);
468
- }
469
- let contextId;
470
- try {
471
- const { getOrCreateActiveContext } = await import('./context-store.js');
472
- const ctx = getOrCreateActiveContext(db, agentId, sessionKey, conversation.id);
473
- contextId = ctx.id;
474
- }
475
- catch (_) { /* context wiring is best-effort in Phase 1 */ }
476
- const stored = store.recordMessage(conversation.id, agentId, message, {
477
- tokenCount: opts?.tokenCount,
478
- contextId,
479
- });
480
- await this.cache.pushHistory(agentId, sessionKey, [stored], this.config.compositor.maxHistoryMessages);
481
- await this.cache.touchSession(agentId, sessionKey);
482
- return stored;
483
- }
484
- /**
485
- * Record a raw provider response, converting to neutral format.
486
- */
487
- async recordProviderResponse(agentId, sessionKey, response, provider, opts) {
488
- const neutral = fromProviderFormat(response, provider);
489
- return this.recordAssistantMessage(agentId, sessionKey, neutral, opts);
490
- }
491
- /**
492
- * Compose context for an LLM call.
493
- */
494
- async compose(request) {
495
- const db = this.dbManager.getMessageDb(request.agentId);
496
- const libraryDb = this.dbManager.getLibraryDb();
497
- return this.compositor.compose(request, db, libraryDb);
498
- }
499
- // ─── Tool Artifacts (L2: per-agent, schema v9) ───────────────────
500
- /**
501
- * Persist a full tool result payload and return the durable record.
502
- * Used by the plugin wave-guard to capture payloads before stubbing the
503
- * transcript. Dedupes by content hash within the (agentId, sessionKey)
504
- * scope — identical payloads bump ref_count on the existing row.
505
- */
506
- async recordToolArtifact(agentId, sessionKey, input) {
507
- const db = this.dbManager.getMessageDb(agentId);
508
- this.dbManager.ensureAgent(agentId);
509
- const { ToolArtifactStore } = await import('./tool-artifact-store.js');
510
- const store = new ToolArtifactStore(db);
511
- return store.put({ ...input, agentId, sessionKey });
512
- }
513
- /** Fetch a tool artifact by id. Returns null if unknown. */
514
- async getToolArtifact(agentId, artifactId) {
515
- const db = this.dbManager.getMessageDb(agentId);
516
- const { ToolArtifactStore } = await import('./tool-artifact-store.js');
517
- const store = new ToolArtifactStore(db);
518
- const record = store.get(artifactId);
519
- if (record)
520
- store.touch(artifactId);
521
- return record;
522
- }
523
- /** List tool artifacts for a specific turn. */
524
- async listToolArtifactsByTurn(agentId, sessionKey, turnId) {
525
- const db = this.dbManager.getMessageDb(agentId);
526
- const { ToolArtifactStore } = await import('./tool-artifact-store.js');
527
- const store = new ToolArtifactStore(db);
528
- return store.listByTurn(sessionKey, turnId);
529
- }
530
- // ─── Archived Mining (L2: Messages) ─────────────────────────
531
- /**
532
- * List archived or forked contexts for an agent.
533
- *
534
- * operator-safe enumeration path. This is the approved archived-context
535
- * listing surface. Active composition remains separate.
536
- */
537
- listArchivedContexts(agentId, opts) {
538
- const db = this.dbManager.getMessageDb(agentId);
539
- return getArchivedContexts(db, agentId, opts);
540
- }
541
- /**
542
- * Mine a single archived or forked context through the archived-mining
543
- * surface. This does not widen active composition.
544
- */
545
- mineArchivedContext(agentId, query) {
546
- const db = this.dbManager.getMessageDb(agentId);
547
- const store = new MessageStore(db);
548
- return store.mineArchivedContext(query);
549
- }
550
- /**
551
- * Mine multiple archived or forked contexts through the capped archived-
552
- * mining surface. This does not expose raw DAG helpers and does not widen
553
- * active composition.
554
- */
555
- mineArchivedContexts(agentId, contextIds, opts) {
556
- const db = this.dbManager.getMessageDb(agentId);
557
- const store = new MessageStore(db);
558
- return store.mineArchivedContexts(contextIds, opts);
559
- }
560
- /**
561
- * Warm a session from SQLite into Redis.
562
- */
563
- async warm(agentId, sessionKey, opts) {
564
- const db = this.dbManager.getMessageDb(agentId);
565
- const libraryDb = this.dbManager.getLibraryDb();
566
- await this.compositor.warmSession(agentId, sessionKey, db, { ...opts, libraryDb });
567
- }
568
- /**
569
- * Recompute the Redis hot history view from SQLite and re-apply tool gradient.
570
- */
571
- async refreshRedisGradient(agentId, sessionKey, tokenBudget, historyDepth) {
572
- const db = this.dbManager.getMessageDb(agentId);
573
- await this.compositor.refreshRedisGradient(agentId, sessionKey, db, tokenBudget, historyDepth);
574
- }
575
- /**
576
- * Full-text search across all messages for an agent.
577
- */
578
- search(agentId, query, limit = 20) {
579
- const db = this.dbManager.getMessageDb(agentId);
580
- const store = new MessageStore(db);
581
- return store.searchMessages(agentId, query, limit);
582
- }
583
- /**
584
- * Get or create a conversation.
585
- */
586
- getOrCreateConversation(agentId, sessionKey, opts) {
587
- const db = this.dbManager.getMessageDb(agentId);
588
- this.dbManager.ensureAgent(agentId);
589
- const store = new MessageStore(db);
590
- return store.getOrCreateConversation(agentId, sessionKey, opts);
591
- }
592
- /**
593
- * List all agents with databases.
594
- */
595
- listAgents() {
596
- return this.dbManager.listAgents();
597
- }
598
- // ─── Facts (L4: Library) ────────────────────────────────────
599
- /**
600
- * Add a fact.
601
- */
602
- addFact(agentId, content, opts) {
603
- const db = this.dbManager.getLibraryDb();
604
- const store = new FactStore(db);
605
- return store.addFact(agentId, content, opts);
606
- }
607
- /**
608
- * Get active facts for an agent.
609
- */
610
- getActiveFacts(agentId, opts) {
611
- const db = this.dbManager.getLibraryDb();
612
- const store = new FactStore(db);
613
- return store.getActiveFacts(agentId, opts);
614
- }
615
- // ─── Knowledge (L4: Library) ────────────────────────────────
616
- /**
617
- * Add/update knowledge.
618
- */
619
- upsertKnowledge(agentId, domain, key, content, opts) {
620
- const db = this.dbManager.getLibraryDb();
621
- const store = new KnowledgeStore(db);
622
- return store.upsert(agentId, domain, key, content, opts);
623
- }
624
- /**
625
- * Get active knowledge, optionally filtered by domain.
626
- */
627
- getKnowledge(agentId, opts) {
628
- const db = this.dbManager.getLibraryDb();
629
- const store = new KnowledgeStore(db);
630
- return store.getActive(agentId, opts);
631
- }
632
- // ─── Topics (L4: Library) ───────────────────────────────────
633
- /**
634
- * Create a topic.
635
- */
636
- createTopic(agentId, name, description) {
637
- const db = this.dbManager.getLibraryDb();
638
- const store = new TopicStore(db);
639
- return store.create(agentId, name, description);
640
- }
641
- /**
642
- * Get active topics.
643
- */
644
- getActiveTopics(agentId, limit = 20) {
645
- const db = this.dbManager.getLibraryDb();
646
- const store = new TopicStore(db);
647
- return store.getActive(agentId, limit);
648
- }
649
- // ─── Episodes (L4: Library) ─────────────────────────────────
650
- /**
651
- * Record an episode.
652
- */
653
- recordEpisode(agentId, eventType, summary, opts) {
654
- const db = this.dbManager.getLibraryDb();
655
- const store = new EpisodeStore(db);
656
- return store.record(agentId, eventType, summary, opts);
657
- }
658
- /**
659
- * Get recent episodes.
660
- */
661
- getRecentEpisodes(agentId, opts) {
662
- const db = this.dbManager.getLibraryDb();
663
- const store = new EpisodeStore(db);
664
- return store.getRecent(agentId, opts);
665
- }
666
- // ─── Preferences (L4: Library) ──────────────────────────────
667
- /**
668
- * Set a preference.
669
- */
670
- setPreference(subject, key, value, opts) {
671
- const db = this.dbManager.getLibraryDb();
672
- const store = new PreferenceStore(db);
673
- return store.set(subject, key, value, opts);
674
- }
675
- /**
676
- * Get a preference.
677
- */
678
- getPreference(subject, key, domain) {
679
- const db = this.dbManager.getLibraryDb();
680
- const store = new PreferenceStore(db);
681
- return store.get(subject, key, domain);
682
- }
683
- /**
684
- * Get all preferences for a subject.
685
- */
686
- getPreferences(subject, domain) {
687
- const db = this.dbManager.getLibraryDb();
688
- const store = new PreferenceStore(db);
689
- return store.getForSubject(subject, domain);
690
- }
691
- // ─── Fleet Registry (L4: Library) ───────────────────────────
692
- /**
693
- * Register or update a fleet agent. Invalidates cache.
694
- */
695
- upsertFleetAgent(id, data) {
696
- const db = this.dbManager.getLibraryDb();
697
- const store = new FleetStore(db);
698
- const result = store.upsertAgent(id, data);
699
- // Invalidate cache — fire and forget
700
- this.cache.invalidateFleetAgent(id).catch(() => { });
701
- return result;
702
- }
703
- /**
704
- * Get a fleet agent. Cache-aside: check Redis first, fall back to SQLite.
705
- */
706
- async getFleetAgentCached(id) {
707
- // Try cache first
708
- const cached = await this.cache.getCachedFleetAgent(id);
709
- if (cached)
710
- return cached;
711
- // Fall back to SQLite
712
- const agent = this.getFleetAgent(id);
713
- if (agent) {
714
- // Warm cache — fire and forget
715
- this.cache.cacheFleetAgent(id, agent).catch(() => { });
716
- }
717
- return agent;
718
- }
719
- /**
720
- * Get a fleet agent (synchronous, SQLite only).
721
- */
722
- getFleetAgent(id) {
723
- const db = this.dbManager.getLibraryDb();
724
- const store = new FleetStore(db);
725
- return store.getAgent(id);
726
- }
727
- /**
728
- * List fleet agents.
729
- */
730
- listFleetAgents(opts) {
731
- const db = this.dbManager.getLibraryDb();
732
- const store = new FleetStore(db);
733
- return store.listAgents(opts);
734
- }
735
- /**
736
- * Register or update a fleet org.
737
- */
738
- upsertFleetOrg(id, data) {
739
- const db = this.dbManager.getLibraryDb();
740
- const store = new FleetStore(db);
741
- return store.upsertOrg(id, data);
742
- }
743
- /**
744
- * List fleet orgs.
745
- */
746
- listFleetOrgs() {
747
- const db = this.dbManager.getLibraryDb();
748
- const store = new FleetStore(db);
749
- return store.listOrgs();
750
- }
751
- // ─── Agent Capabilities (L4: Library) ────────────────────────
752
- /**
753
- * Register or update a capability for an agent.
754
- */
755
- upsertCapability(agentId, cap) {
756
- const db = this.dbManager.getLibraryDb();
757
- const store = new FleetStore(db);
758
- return store.upsertCapability(agentId, cap);
759
- }
760
- /**
761
- * Bulk-sync capabilities of a given type for an agent.
762
- * Marks capabilities not in the list as 'removed'.
763
- */
764
- syncCapabilities(agentId, capType, caps) {
765
- const db = this.dbManager.getLibraryDb();
766
- const store = new FleetStore(db);
767
- store.syncCapabilities(agentId, capType, caps);
768
- }
769
- /**
770
- * Get capabilities for an agent, optionally filtered by type.
771
- */
772
- getAgentCapabilities(agentId, capType) {
773
- const db = this.dbManager.getLibraryDb();
774
- const store = new FleetStore(db);
775
- return store.getAgentCapabilities(agentId, capType);
776
- }
777
- /**
778
- * Find agents that have a specific capability.
779
- */
780
- findAgentsByCapability(capType, name) {
781
- const db = this.dbManager.getLibraryDb();
782
- const store = new FleetStore(db);
783
- return store.findByCapability(capType, name);
784
- }
785
- // ─── System Registry (L4: Library) ──────────────────────────
786
- /**
787
- * Set a system state value.
788
- */
789
- setSystemState(category, key, value, opts) {
790
- const db = this.dbManager.getLibraryDb();
791
- const store = new SystemStore(db);
792
- return store.set(category, key, value, opts);
793
- }
794
- /**
795
- * Get a system state value.
796
- */
797
- getSystemState(category, key) {
798
- const db = this.dbManager.getLibraryDb();
799
- const store = new SystemStore(db);
800
- return store.get(category, key);
801
- }
802
- /**
803
- * Get all state in a category.
804
- */
805
- getSystemCategory(category) {
806
- const db = this.dbManager.getLibraryDb();
807
- const store = new SystemStore(db);
808
- return store.getCategory(category);
809
- }
810
- // ─── Work Items (L4: Library) ───────────────────────────────
811
- /**
812
- * Create a work item.
813
- */
814
- createWorkItem(data) {
815
- const db = this.dbManager.getLibraryDb();
816
- const store = new WorkStore(db);
817
- return store.create(data);
818
- }
819
- /**
820
- * Update work item status.
821
- */
822
- updateWorkStatus(id, status, agentId, comment) {
823
- const db = this.dbManager.getLibraryDb();
824
- const store = new WorkStore(db);
825
- return store.updateStatus(id, status, agentId, comment);
826
- }
827
- /**
828
- * Get active work for an agent.
829
- */
830
- getAgentWork(agentId, status) {
831
- const db = this.dbManager.getLibraryDb();
832
- const store = new WorkStore(db);
833
- return store.getAgentWork(agentId, status);
834
- }
835
- /**
836
- * Get the fleet kanban board.
837
- */
838
- getFleetKanban(opts) {
839
- const db = this.dbManager.getLibraryDb();
840
- const store = new WorkStore(db);
841
- return store.getKanban(opts);
842
- }
843
- /**
844
- * Get work item stats.
845
- */
846
- getWorkStats(opts) {
847
- const db = this.dbManager.getLibraryDb();
848
- const store = new WorkStore(db);
849
- return store.getStats(opts);
850
- }
851
- /**
852
- * Get blocked work items.
853
- */
854
- getBlockedWork() {
855
- const db = this.dbManager.getLibraryDb();
856
- const store = new WorkStore(db);
857
- return store.getBlocked();
858
- }
859
- // ─── Agent Desired State (L4: Library) ──────────────────────
860
- /**
861
- * Set desired configuration for an agent.
862
- */
863
- setDesiredState(agentId, configKey, desiredValue, opts) {
864
- const db = this.dbManager.getLibraryDb();
865
- const store = new DesiredStateStore(db);
866
- const result = store.setDesired(agentId, configKey, desiredValue, opts);
867
- // Invalidate cache — desired state change affects fleet view
868
- this.cache.invalidateFleetAgent(agentId).catch(() => { });
869
- return result;
870
- }
871
- /**
872
- * Report actual runtime value for drift detection. Invalidates cache.
873
- */
874
- reportActualState(agentId, configKey, actualValue) {
875
- const db = this.dbManager.getLibraryDb();
876
- const store = new DesiredStateStore(db);
877
- const result = store.reportActual(agentId, configKey, actualValue);
878
- this.cache.invalidateFleetAgent(agentId).catch(() => { });
879
- return result;
880
- }
881
- /**
882
- * Bulk report actual state (e.g., on session startup / heartbeat). Invalidates cache.
883
- */
884
- reportActualStateBulk(agentId, actuals) {
885
- const db = this.dbManager.getLibraryDb();
886
- const store = new DesiredStateStore(db);
887
- const result = store.reportActualBulk(agentId, actuals);
888
- this.cache.invalidateFleetAgent(agentId).catch(() => { });
889
- return result;
890
- }
891
- /**
892
- * Get all desired state for an agent.
893
- */
894
- getDesiredState(agentId) {
895
- const db = this.dbManager.getLibraryDb();
896
- const store = new DesiredStateStore(db);
897
- return store.getAgentState(agentId);
898
- }
899
- /**
900
- * Get desired state as a flat config map.
901
- */
902
- getDesiredConfig(agentId) {
903
- const db = this.dbManager.getLibraryDb();
904
- const store = new DesiredStateStore(db);
905
- return store.getAgentConfig(agentId);
906
- }
907
- /**
908
- * Get all drifted entries across the fleet.
909
- */
910
- getDriftedState() {
911
- const db = this.dbManager.getLibraryDb();
912
- const store = new DesiredStateStore(db);
913
- return store.getDrifted();
914
- }
915
- /**
916
- * Get fleet-wide view of a specific config key.
917
- */
918
- getFleetConfigKey(configKey) {
919
- const db = this.dbManager.getLibraryDb();
920
- const store = new DesiredStateStore(db);
921
- return store.getFleetConfig(configKey);
922
- }
923
- /**
924
- * Get config change history.
925
- */
926
- getConfigHistory(agentId, configKey, limit) {
927
- const db = this.dbManager.getLibraryDb();
928
- const store = new DesiredStateStore(db);
929
- return store.getHistory(agentId, configKey, limit);
930
- }
931
- /**
932
- * Get fleet drift summary.
933
- */
934
- getDriftSummary() {
935
- const db = this.dbManager.getLibraryDb();
936
- const store = new DesiredStateStore(db);
937
- return store.getDriftSummary();
938
- }
939
- // ─── Knowledge Graph (L4: Library) ──────────────────────────
940
- /**
941
- * Add a directed link between two entities.
942
- */
943
- addKnowledgeLink(fromType, fromId, toType, toId, linkType) {
944
- const db = this.dbManager.getLibraryDb();
945
- const graph = new KnowledgeGraph(db);
946
- return graph.addLink(fromType, fromId, toType, toId, linkType);
947
- }
948
- /**
949
- * Remove a specific link.
950
- */
951
- removeKnowledgeLink(fromType, fromId, toType, toId, linkType) {
952
- const db = this.dbManager.getLibraryDb();
953
- const graph = new KnowledgeGraph(db);
954
- return graph.removeLink(fromType, fromId, toType, toId, linkType);
955
- }
956
- /**
957
- * Get all links for an entity (both directions).
958
- */
959
- getEntityLinks(type, id) {
960
- const db = this.dbManager.getLibraryDb();
961
- const graph = new KnowledgeGraph(db);
962
- return graph.getLinks(type, id);
963
- }
964
- /**
965
- * Traverse the knowledge graph from a starting entity.
966
- * BFS with bounded depth and result count.
967
- */
968
- traverseGraph(startType, startId, opts) {
969
- const db = this.dbManager.getLibraryDb();
970
- const graph = new KnowledgeGraph(db);
971
- return graph.traverse(startType, startId, opts);
972
- }
973
- /**
974
- * Find the shortest path between two entities.
975
- */
976
- findGraphPath(fromType, fromId, toType, toId, maxDepth) {
977
- const db = this.dbManager.getLibraryDb();
978
- const graph = new KnowledgeGraph(db);
979
- return graph.findPath(fromType, fromId, toType, toId, maxDepth);
980
- }
981
- /**
982
- * Get the most connected entities.
983
- */
984
- getMostConnectedEntities(opts) {
985
- const db = this.dbManager.getLibraryDb();
986
- const graph = new KnowledgeGraph(db);
987
- return graph.getMostConnected(opts);
988
- }
989
- /**
990
- * Get knowledge graph statistics.
991
- */
992
- getGraphStats() {
993
- const db = this.dbManager.getLibraryDb();
994
- const graph = new KnowledgeGraph(db);
995
- return {
996
- totalLinks: graph.getTotalLinks(),
997
- byType: graph.getLinkStats(),
998
- };
999
- }
1000
- // ─── Vector / Semantic Search (L3: Vectors DB) ──────────────
1001
- /**
1002
- * Semantic search across an agent's indexed memory.
1003
- */
1004
- async semanticSearch(agentId, query, opts) {
1005
- const db = this.dbManager.getVectorDb(agentId);
1006
- if (!db) {
1007
- console.warn('[hypermem] Semantic search unavailable — sqlite-vec not loaded');
1008
- return [];
1009
- }
1010
- const libraryDb = this.dbManager.getLibraryDb();
1011
- const vs = new VectorStore(db, this.config.embedding, libraryDb);
1012
- return vs.search(query, opts);
1013
- }
1014
- /**
1015
- * Index all un-indexed content for an agent.
1016
- */
1017
- async indexAgent(agentId) {
1018
- const db = this.dbManager.getVectorDb(agentId);
1019
- if (!db)
1020
- return { indexed: 0, skipped: 0, tombstoned: 0 };
1021
- const libraryDb = this.dbManager.getLibraryDb();
1022
- const vs = new VectorStore(db, this.config.embedding, libraryDb);
1023
- vs.ensureTables();
1024
- const result = await vs.indexAll(agentId);
1025
- // Tombstone superseded facts/knowledge so they don't surface in recall
1026
- const tombstoned = vs.tombstoneSuperseded();
1027
- return { ...result, tombstoned };
1028
- }
1029
- /**
1030
- * Get vector index statistics.
1031
- */
1032
- getVectorStats(agentId) {
1033
- const db = this.dbManager.getVectorDb(agentId);
1034
- if (!db)
1035
- return null;
1036
- const libraryDb = this.dbManager.getLibraryDb();
1037
- const vs = new VectorStore(db, this.config.embedding, libraryDb);
1038
- return vs.getStats();
1039
- }
1040
- /**
1041
- * Prune orphaned vector entries.
1042
- */
1043
- pruneVectorOrphans(agentId) {
1044
- const db = this.dbManager.getVectorDb(agentId);
1045
- if (!db)
1046
- return 0;
1047
- const libraryDb = this.dbManager.getLibraryDb();
1048
- const vs = new VectorStore(db, this.config.embedding, libraryDb);
1049
- return vs.pruneOrphans();
1050
- }
1051
- // ─── Session Cursor (dual-read: Redis → SQLite fallback) ──────
1052
- /**
1053
- * Get the session cursor for an agent+session.
1054
- * Reads from Redis first; falls back to SQLite if Redis returns null
1055
- * (e.g. after eviction or restart). This is the P1.3 durability guarantee.
1056
- */
1057
- async getSessionCursor(agentId, sessionKey) {
1058
- // Try Redis first (hot path)
1059
- const redisCursor = await this.cache.getCursor(agentId, sessionKey);
1060
- if (redisCursor)
1061
- return redisCursor;
1062
- // Fallback to SQLite
1063
- const db = this.dbManager.getMessageDb(agentId);
1064
- if (!db)
1065
- return null;
1066
- const row = db.prepare(`
1067
- SELECT cursor_last_sent_id, cursor_last_sent_index, cursor_last_sent_at,
1068
- cursor_window_size, cursor_token_count
1069
- FROM conversations
1070
- WHERE session_key = ? AND cursor_last_sent_id IS NOT NULL
1071
- `).get(sessionKey);
1072
- if (!row || row.cursor_last_sent_id == null)
1073
- return null;
1074
- const cursor = {
1075
- lastSentId: row.cursor_last_sent_id,
1076
- lastSentIndex: row.cursor_last_sent_index,
1077
- lastSentAt: row.cursor_last_sent_at,
1078
- windowSize: row.cursor_window_size,
1079
- tokenCount: row.cursor_token_count,
1080
- };
1081
- // Re-warm Redis so subsequent reads are fast
1082
- try {
1083
- await this.cache.setCursor(agentId, sessionKey, cursor);
1084
- }
1085
- catch {
1086
- // Best-effort re-warm
1087
- }
1088
- return cursor;
1089
- }
1090
- // ─── Message Rotation (L2: Messages) ────────────────────────
1091
- /**
1092
- * Get the size of an agent's active messages.db in bytes.
1093
- */
1094
- getMessageDbSize(agentId) {
1095
- return this.dbManager.getMessageDbSize(agentId);
1096
- }
1097
- /**
1098
- * Check if an agent's message database needs rotation.
1099
- */
1100
- shouldRotate(agentId, opts) {
1101
- return this.dbManager.shouldRotate(agentId, opts);
1102
- }
1103
- /**
1104
- * Rotate an agent's message database.
1105
- * Returns the path to the rotated file, or null if no active DB exists.
1106
- */
1107
- rotateMessageDb(agentId) {
1108
- return this.dbManager.rotateMessageDb(agentId);
1109
- }
1110
- /**
1111
- * List rotated message DB files for an agent.
1112
- */
1113
- listRotatedDbs(agentId) {
1114
- return this.dbManager.listRotatedDbs(agentId);
1115
- }
1116
- /**
1117
- * Check and auto-rotate all agents' message databases.
1118
- * Call on heartbeat/startup.
1119
- * Returns agents that were rotated.
1120
- */
1121
- autoRotate(opts) {
1122
- const agents = this.dbManager.listAgents();
1123
- const rotated = [];
1124
- for (const agentId of agents) {
1125
- const check = this.shouldRotate(agentId, opts);
1126
- if (check) {
1127
- const rotatedPath = this.rotateMessageDb(agentId);
1128
- if (rotatedPath) {
1129
- rotated.push({
1130
- agentId,
1131
- reason: `${check.reason}: ${check.current} > ${check.threshold}`,
1132
- rotatedTo: rotatedPath,
1133
- });
1134
- }
1135
- }
1136
- }
1137
- return rotated;
1138
- }
1139
- // ─── Session Registry (L4: Library) ─────────────────────────
1140
- /**
1141
- * Register a session start.
1142
- */
1143
- registerSession(sessionKey, agentId, opts) {
1144
- const db = this.dbManager.getLibraryDb();
1145
- const now = new Date().toISOString();
1146
- const existing = db
1147
- .prepare('SELECT id FROM session_registry WHERE id = ?')
1148
- .get(sessionKey);
1149
- if (existing) {
1150
- db.prepare('UPDATE session_registry SET status = ?, started_at = ? WHERE id = ?')
1151
- .run('active', now, sessionKey);
1152
- }
1153
- else {
1154
- db.prepare(`INSERT INTO session_registry (id, agent_id, channel, channel_type, started_at, status)
1155
- VALUES (?, ?, ?, ?, ?, 'active')`).run(sessionKey, agentId, opts?.channel || null, opts?.channelType || null, now);
1156
- }
1157
- db.prepare('INSERT INTO session_events (session_id, event_type, timestamp, payload) VALUES (?, ?, ?, ?)').run(sessionKey, 'start', now, JSON.stringify({ channel: opts?.channel, channelType: opts?.channelType }));
1158
- }
1159
- /**
1160
- * Record a session event.
1161
- */
1162
- recordSessionEvent(sessionKey, eventType, payload) {
1163
- const db = this.dbManager.getLibraryDb();
1164
- db.prepare('INSERT INTO session_events (session_id, event_type, timestamp, payload) VALUES (?, ?, ?, ?)').run(sessionKey, eventType, new Date().toISOString(), payload ? JSON.stringify(payload) : null);
1165
- if (eventType === 'decision') {
1166
- db.prepare('UPDATE session_registry SET decisions_made = decisions_made + 1 WHERE id = ?').run(sessionKey);
1167
- }
1168
- else if (eventType === 'fact_extracted') {
1169
- db.prepare('UPDATE session_registry SET facts_extracted = facts_extracted + 1 WHERE id = ?').run(sessionKey);
1170
- }
1171
- }
1172
- /**
1173
- * Close a session.
1174
- */
1175
- closeSession(sessionKey, summary) {
1176
- const db = this.dbManager.getLibraryDb();
1177
- const now = new Date().toISOString();
1178
- db.prepare('UPDATE session_registry SET status = ?, ended_at = ?, summary = ? WHERE id = ?').run('completed', now, summary || null, sessionKey);
1179
- db.prepare('INSERT INTO session_events (session_id, event_type, timestamp) VALUES (?, ?, ?)').run(sessionKey, 'completion', now);
1180
- }
1181
- /**
1182
- * Query sessions.
1183
- */
1184
- querySessions(opts) {
1185
- const db = this.dbManager.getLibraryDb();
1186
- const conditions = [];
1187
- const params = [];
1188
- if (opts?.agentId) {
1189
- conditions.push('agent_id = ?');
1190
- params.push(opts.agentId);
1191
- }
1192
- if (opts?.status) {
1193
- conditions.push('status = ?');
1194
- params.push(opts.status);
1195
- }
1196
- if (opts?.since) {
1197
- conditions.push('started_at >= ?');
1198
- params.push(opts.since);
1199
- }
1200
- const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
1201
- return db
1202
- .prepare(`SELECT * FROM session_registry ${where} ORDER BY started_at DESC LIMIT ?`)
1203
- .all(...params, opts?.limit || 50);
1204
- }
1205
- /**
1206
- * Get session events.
1207
- */
1208
- getSessionEvents(sessionKey, limit = 50) {
1209
- const db = this.dbManager.getLibraryDb();
1210
- return db
1211
- .prepare('SELECT * FROM session_events WHERE session_id = ? ORDER BY timestamp DESC LIMIT ?')
1212
- .all(sessionKey, limit);
1213
- }
1214
- // ─── Cross-Agent Queries ─────────────────────────────────────
1215
- /**
1216
- * Query another agent's memory with visibility-scoped access.
1217
- */
1218
- queryAgent(requesterId, targetAgentId, opts, registry) {
1219
- return crossAgentQuery(this.dbManager, {
1220
- requesterId,
1221
- targetAgentId,
1222
- memoryType: opts?.memoryType || 'facts',
1223
- domain: opts?.domain,
1224
- limit: opts?.limit,
1225
- }, registry || buildOrgRegistryFromDb(this.dbManager.getLibraryDb()));
1226
- }
1227
- /**
1228
- * Query fleet-wide visible memory.
1229
- */
1230
- queryFleet(requesterId, opts, registry) {
1231
- const reg = registry || buildOrgRegistryFromDb(this.dbManager.getLibraryDb());
1232
- const results = [];
1233
- // Query all agents from the fleet registry
1234
- const libraryDb = this.dbManager.getLibraryDb();
1235
- const agents = libraryDb
1236
- .prepare("SELECT id FROM fleet_agents WHERE status = 'active'")
1237
- .all();
1238
- for (const agent of agents) {
1239
- if (agent.id === requesterId)
1240
- continue;
1241
- try {
1242
- const agentResults = this.queryAgent(requesterId, agent.id, opts, reg);
1243
- results.push(...agentResults);
1244
- }
1245
- catch {
1246
- // Skip agents we can't query (not in registry)
1247
- }
1248
- }
1249
- return results;
1250
- }
1251
- // ─── Document Chunks (L4: Library) ──────────────────────────
1252
- /**
1253
- * Index chunks from a parsed set of DocChunk objects.
1254
- * Atomic: replaces all chunks for the source in one transaction.
1255
- */
1256
- indexDocChunks(chunks) {
1257
- const db = this.dbManager.getLibraryDb();
1258
- const store = new DocChunkStore(db);
1259
- return store.indexChunks(chunks);
1260
- }
1261
- /**
1262
- * Query doc chunks by collection with optional keyword/scope/agent filters.
1263
- */
1264
- queryDocChunks(query) {
1265
- const db = this.dbManager.getLibraryDb();
1266
- const store = new DocChunkStore(db);
1267
- return store.queryChunks(query);
1268
- }
1269
- /**
1270
- * Seed all ACA files from a workspace directory into the doc chunk index.
1271
- * Idempotent: skips files whose source hash hasn't changed.
1272
- * Force re-index with opts.force = true.
1273
- */
1274
- async seedWorkspace(workspaceDir, opts = {}) {
1275
- const db = this.dbManager.getLibraryDb();
1276
- const seeder = new WorkspaceSeeder(db);
1277
- return seeder.seedWorkspace(workspaceDir, opts);
1278
- }
1279
- /**
1280
- * Seed a single file into the doc chunk index.
1281
- */
1282
- seedFile(filePath, collection, opts = {}) {
1283
- const db = this.dbManager.getLibraryDb();
1284
- const seeder = new WorkspaceSeeder(db);
1285
- return seeder.seedFile(filePath, collection, opts);
1286
- }
1287
- /**
1288
- * Get stats about the current doc chunk index.
1289
- */
1290
- getDocIndexStats() {
1291
- const db = this.dbManager.getLibraryDb();
1292
- const store = new DocChunkStore(db);
1293
- return store.getStats();
1294
- }
1295
- /**
1296
- * List indexed sources (what files have been seeded and their hashes).
1297
- */
1298
- listDocSources(opts) {
1299
- const db = this.dbManager.getLibraryDb();
1300
- const store = new DocChunkStore(db);
1301
- return store.listSources(opts);
1302
- }
1303
- // ─── Fleet Startup Seeding + Cache Hydration ────────────────
1304
- /**
1305
- * Seed fleet agents from known workspace identity files and existing
1306
- * message-db agent directories, then optionally hydrate the Redis fleet cache.
1307
- *
1308
- * The sweep is idempotent: existing rows are only updated when startup-discovered
1309
- * values differ, so repeated boots do not duplicate or churn fleet rows.
1310
- */
1311
- async seedFleetAgentsOnStartup(opts = {}) {
1312
- const db = this.dbManager.getLibraryDb();
1313
- const store = new FleetStore(db);
1314
- const discovered = discoverStartupFleetCandidates(this.dbManager, opts);
1315
- let inserted = 0;
1316
- let updated = 0;
1317
- let skipped = 0;
1318
- let orgsCreated = 0;
1319
- for (const candidate of discovered) {
1320
- const existing = store.getAgent(candidate.agentId);
1321
- const mergedMetadata = {
1322
- ...(existing?.metadata ?? {}),
1323
- ...(candidate.metadata ?? {}),
1324
- };
1325
- if (!existing) {
1326
- store.upsertAgent(candidate.agentId, {
1327
- displayName: candidate.displayName,
1328
- tier: candidate.tier,
1329
- orgId: candidate.orgId ?? undefined,
1330
- reportsTo: candidate.reportsTo ?? undefined,
1331
- status: 'active',
1332
- metadata: Object.keys(mergedMetadata).length > 0 ? mergedMetadata : undefined,
1333
- });
1334
- inserted++;
1335
- continue;
1336
- }
1337
- const patch = {};
1338
- if (candidate.displayName && candidate.displayName !== existing.displayName) {
1339
- patch.displayName = candidate.displayName;
1340
- }
1341
- if (candidate.tier && candidate.tier !== 'unknown' && candidate.tier !== existing.tier) {
1342
- patch.tier = candidate.tier;
1343
- }
1344
- if (candidate.orgId && candidate.orgId !== existing.orgId) {
1345
- patch.orgId = candidate.orgId;
1346
- }
1347
- if (candidate.reportsTo && candidate.reportsTo !== existing.reportsTo) {
1348
- patch.reportsTo = candidate.reportsTo;
1349
- }
1350
- if (JSON.stringify(mergedMetadata) !== JSON.stringify(existing.metadata ?? {})) {
1351
- patch.metadata = mergedMetadata;
1352
- }
1353
- if (Object.keys(patch).length === 0) {
1354
- skipped++;
1355
- continue;
1356
- }
1357
- store.upsertAgent(candidate.agentId, patch);
1358
- updated++;
1359
- }
1360
- for (const candidate of discovered) {
1361
- if (!candidate.orgId)
1362
- continue;
1363
- if (store.getOrg(candidate.orgId))
1364
- continue;
1365
- if (candidate.tier !== 'council')
1366
- continue;
1367
- store.upsertOrg(candidate.orgId, {
1368
- name: `${candidate.displayName} Org`,
1369
- leadAgentId: candidate.agentId,
1370
- });
1371
- orgsCreated++;
1372
- }
1373
- let hydratedAgents = 0;
1374
- let hydratedSummary = false;
1375
- if (opts.hydrateCache !== false) {
1376
- const hydrated = await this.hydrateFleetCache();
1377
- hydratedAgents = hydrated.agents;
1378
- hydratedSummary = hydrated.summary;
1379
- }
1380
- return {
1381
- discovered: discovered.length,
1382
- inserted,
1383
- updated,
1384
- skipped,
1385
- orgsCreated,
1386
- hydratedAgents,
1387
- hydratedSummary,
1388
- };
1389
- }
1390
- /**
1391
- * Hydrate the Redis fleet cache from library.db.
1392
- * Call on gateway startup to warm the cache for dashboard queries.
1393
- *
1394
- * Populates:
1395
- * - Per-agent profiles (fleet registry + capabilities + desired state)
1396
- * - Fleet summary (counts, drift status)
1397
- */
1398
- async hydrateFleetCache() {
1399
- if (!this.cache.isConnected)
1400
- return { agents: 0, summary: false };
1401
- const db = this.dbManager.getLibraryDb();
1402
- const fleetStore = new FleetStore(db);
1403
- const desiredStore = new DesiredStateStore(db);
1404
- const agents = fleetStore.listAgents();
1405
- let hydrated = 0;
1406
- for (const agent of agents) {
1407
- try {
1408
- // Build a composite profile for each agent
1409
- const capabilities = fleetStore.getAgentCapabilities(agent.id);
1410
- const desiredState = desiredStore.getAgentState(agent.id);
1411
- const desiredConfig = desiredStore.getAgentConfig(agent.id);
1412
- const composite = {
1413
- ...agent,
1414
- capabilities: capabilities.map(c => ({ capType: c.capType, name: c.name, version: c.version })),
1415
- desiredState: desiredState.map(d => ({
1416
- configKey: d.configKey,
1417
- desiredValue: d.desiredValue,
1418
- actualValue: d.actualValue,
1419
- driftStatus: d.driftStatus,
1420
- })),
1421
- desiredConfig,
1422
- };
1423
- await this.cache.cacheFleetAgent(agent.id, composite);
1424
- hydrated++;
1425
- }
1426
- catch (err) {
1427
- const message = err instanceof Error ? err.message : String(err);
1428
- console.warn(`[hypermem] Failed to cache agent ${agent.id}: ${message}`);
1429
- }
1430
- }
1431
- // Cache fleet summary
1432
- try {
1433
- const driftSummary = desiredStore.getDriftSummary();
1434
- const summary = {
1435
- totalAgents: agents.length,
1436
- activeAgents: agents.filter(a => a.status === 'active').length,
1437
- tiers: {
1438
- council: agents.filter(a => a.tier === 'council').length,
1439
- director: agents.filter(a => a.tier === 'director').length,
1440
- specialist: agents.filter(a => a.tier === 'specialist').length,
1441
- },
1442
- drift: driftSummary,
1443
- hydratedAt: new Date().toISOString(),
1444
- };
1445
- await this.cache.cacheFleetSummary(summary);
1446
- }
1447
- catch {
1448
- return { agents: hydrated, summary: false };
1449
- }
1450
- return { agents: hydrated, summary: true };
1451
- }
1452
- // ─── Lifecycle ───────────────────────────────────────────────
1453
- /**
1454
- * Clean shutdown.
1455
- */
1456
- async close() {
1457
- await this.cache.disconnect();
1458
- this.dbManager.close();
1459
- }
1460
- }
1461
- export default HyperMem;
1462
- export { SessionFlusher, flushSession } from './session-flusher.js';
1463
- export { importVault, watchVault, parseObsidianNote, parseFrontmatter, extractWikilinks, extractTags, cleanObsidianMarkdown } from './obsidian-watcher.js';
1464
- export { exportToVault } from './obsidian-exporter.js';
1465
- export { collectMetrics, formatMetricsSummary } from './metrics-dashboard.js';
1466
- export { getProfile, mergeProfile, PROFILES, lightProfile, standardProfile, fullProfile, extendedProfile, minimalProfile, richProfile } from './profiles.js';
1467
- export { renderStarterFOS, resolveOutputTier } from './fos-mod.js';
1468
- export { repairToolPairs } from './repair-tool-pairs.js';
1469
- //# sourceMappingURL=index.js.map