@psiclawops/hypermem 0.9.1 → 0.9.2

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 (914) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/INSTALL.md +9 -0
  3. package/dist/adaptive-lifecycle.d.ts +81 -0
  4. package/dist/adaptive-lifecycle.d.ts.map +1 -0
  5. package/dist/adaptive-lifecycle.js +190 -0
  6. package/dist/background-indexer.d.ts +161 -0
  7. package/dist/background-indexer.d.ts.map +1 -0
  8. package/dist/background-indexer.js +1263 -0
  9. package/dist/budget-policy.d.ts +22 -0
  10. package/dist/budget-policy.d.ts.map +1 -0
  11. package/dist/budget-policy.js +32 -0
  12. package/dist/cache.d.ts +148 -0
  13. package/dist/cache.d.ts.map +1 -0
  14. package/dist/cache.js +571 -0
  15. package/dist/compaction-fence.d.ts +97 -0
  16. package/dist/compaction-fence.d.ts.map +1 -0
  17. package/dist/compaction-fence.js +174 -0
  18. package/dist/composition-snapshot-integrity.d.ts +36 -0
  19. package/dist/composition-snapshot-integrity.d.ts.map +1 -0
  20. package/dist/composition-snapshot-integrity.js +131 -0
  21. package/dist/composition-snapshot-runtime.d.ts +59 -0
  22. package/dist/composition-snapshot-runtime.d.ts.map +1 -0
  23. package/dist/composition-snapshot-runtime.js +250 -0
  24. package/dist/composition-snapshot-store.d.ts +44 -0
  25. package/dist/composition-snapshot-store.d.ts.map +1 -0
  26. package/dist/composition-snapshot-store.js +117 -0
  27. package/dist/compositor.d.ts +518 -0
  28. package/dist/compositor.d.ts.map +1 -0
  29. package/dist/compositor.js +4280 -0
  30. package/dist/content-type-classifier.d.ts +41 -0
  31. package/dist/content-type-classifier.d.ts.map +1 -0
  32. package/dist/content-type-classifier.js +181 -0
  33. package/dist/context-backfill.d.ts +46 -0
  34. package/dist/context-backfill.d.ts.map +1 -0
  35. package/dist/context-backfill.js +113 -0
  36. package/dist/context-store.d.ts +131 -0
  37. package/dist/context-store.d.ts.map +1 -0
  38. package/dist/context-store.js +279 -0
  39. package/dist/contradiction-audit-store.d.ts +54 -0
  40. package/dist/contradiction-audit-store.d.ts.map +1 -0
  41. package/dist/contradiction-audit-store.js +88 -0
  42. package/dist/contradiction-detector.d.ts +78 -0
  43. package/dist/contradiction-detector.d.ts.map +1 -0
  44. package/dist/contradiction-detector.js +362 -0
  45. package/dist/contradiction-resolution-policy.d.ts +21 -0
  46. package/dist/contradiction-resolution-policy.d.ts.map +1 -0
  47. package/dist/contradiction-resolution-policy.js +17 -0
  48. package/dist/cross-agent.d.ts +74 -0
  49. package/dist/cross-agent.d.ts.map +1 -0
  50. package/dist/cross-agent.js +271 -0
  51. package/dist/db.d.ts +131 -0
  52. package/dist/db.d.ts.map +1 -0
  53. package/dist/db.js +410 -0
  54. package/dist/degradation.d.ts +102 -0
  55. package/dist/degradation.d.ts.map +1 -0
  56. package/dist/degradation.js +141 -0
  57. package/dist/desired-state-store.d.ts +100 -0
  58. package/dist/desired-state-store.d.ts.map +1 -0
  59. package/dist/desired-state-store.js +222 -0
  60. package/dist/doc-chunk-store.d.ts +159 -0
  61. package/dist/doc-chunk-store.d.ts.map +1 -0
  62. package/dist/doc-chunk-store.js +441 -0
  63. package/dist/doc-chunker.d.ts +99 -0
  64. package/dist/doc-chunker.d.ts.map +1 -0
  65. package/dist/doc-chunker.js +324 -0
  66. package/dist/dreaming-promoter.d.ts +124 -0
  67. package/dist/dreaming-promoter.d.ts.map +1 -0
  68. package/dist/dreaming-promoter.js +447 -0
  69. package/dist/episode-store.d.ts +49 -0
  70. package/dist/episode-store.d.ts.map +1 -0
  71. package/dist/episode-store.js +135 -0
  72. package/dist/expertise-store.d.ts +129 -0
  73. package/dist/expertise-store.d.ts.map +1 -0
  74. package/dist/expertise-store.js +342 -0
  75. package/dist/fact-store.d.ts +90 -0
  76. package/dist/fact-store.d.ts.map +1 -0
  77. package/dist/fact-store.js +283 -0
  78. package/dist/fleet-store.d.ts +144 -0
  79. package/dist/fleet-store.d.ts.map +1 -0
  80. package/dist/fleet-store.js +276 -0
  81. package/dist/fos-mod.d.ts +178 -0
  82. package/dist/fos-mod.d.ts.map +1 -0
  83. package/dist/fos-mod.js +416 -0
  84. package/dist/hybrid-retrieval.d.ts +102 -0
  85. package/dist/hybrid-retrieval.d.ts.map +1 -0
  86. package/dist/hybrid-retrieval.js +429 -0
  87. package/dist/image-eviction.d.ts +49 -0
  88. package/dist/image-eviction.d.ts.map +1 -0
  89. package/dist/image-eviction.js +251 -0
  90. package/dist/index.d.ts +735 -0
  91. package/dist/index.d.ts.map +1 -0
  92. package/dist/index.js +1542 -0
  93. package/dist/keystone-scorer.d.ts +51 -0
  94. package/dist/keystone-scorer.d.ts.map +1 -0
  95. package/dist/keystone-scorer.js +52 -0
  96. package/dist/knowledge-graph.d.ts +110 -0
  97. package/dist/knowledge-graph.d.ts.map +1 -0
  98. package/dist/knowledge-graph.js +305 -0
  99. package/dist/knowledge-lint.d.ts +31 -0
  100. package/dist/knowledge-lint.d.ts.map +1 -0
  101. package/dist/knowledge-lint.js +155 -0
  102. package/dist/knowledge-store.d.ts +75 -0
  103. package/dist/knowledge-store.d.ts.map +1 -0
  104. package/dist/knowledge-store.js +270 -0
  105. package/dist/library-schema.d.ts +31 -0
  106. package/dist/library-schema.d.ts.map +1 -0
  107. package/dist/library-schema.js +1357 -0
  108. package/dist/message-store.d.ts +181 -0
  109. package/dist/message-store.d.ts.map +1 -0
  110. package/dist/message-store.js +577 -0
  111. package/dist/metrics-dashboard.d.ts +131 -0
  112. package/dist/metrics-dashboard.d.ts.map +1 -0
  113. package/dist/metrics-dashboard.js +298 -0
  114. package/dist/obsidian-exporter.d.ts +57 -0
  115. package/dist/obsidian-exporter.d.ts.map +1 -0
  116. package/dist/obsidian-exporter.js +274 -0
  117. package/dist/obsidian-watcher.d.ts +147 -0
  118. package/dist/obsidian-watcher.d.ts.map +1 -0
  119. package/dist/obsidian-watcher.js +403 -0
  120. package/dist/open-domain.d.ts +46 -0
  121. package/dist/open-domain.d.ts.map +1 -0
  122. package/dist/open-domain.js +125 -0
  123. package/dist/preference-store.d.ts +54 -0
  124. package/dist/preference-store.d.ts.map +1 -0
  125. package/dist/preference-store.js +109 -0
  126. package/dist/preservation-gate.d.ts +82 -0
  127. package/dist/preservation-gate.d.ts.map +1 -0
  128. package/dist/preservation-gate.js +150 -0
  129. package/dist/proactive-pass.d.ts +63 -0
  130. package/dist/proactive-pass.d.ts.map +1 -0
  131. package/dist/proactive-pass.js +293 -0
  132. package/dist/profiles.d.ts +46 -0
  133. package/dist/profiles.d.ts.map +1 -0
  134. package/dist/profiles.js +262 -0
  135. package/dist/provider-translator.d.ts +50 -0
  136. package/dist/provider-translator.d.ts.map +1 -0
  137. package/dist/provider-translator.js +403 -0
  138. package/dist/rate-limiter.d.ts +76 -0
  139. package/dist/rate-limiter.d.ts.map +1 -0
  140. package/dist/rate-limiter.js +179 -0
  141. package/dist/repair-tool-pairs.d.ts +38 -0
  142. package/dist/repair-tool-pairs.d.ts.map +1 -0
  143. package/dist/repair-tool-pairs.js +209 -0
  144. package/dist/replay-recovery.d.ts +29 -0
  145. package/dist/replay-recovery.d.ts.map +1 -0
  146. package/dist/replay-recovery.js +82 -0
  147. package/dist/reranker.d.ts +95 -0
  148. package/dist/reranker.d.ts.map +1 -0
  149. package/dist/reranker.js +308 -0
  150. package/dist/retrieval-policy.d.ts +51 -0
  151. package/dist/retrieval-policy.d.ts.map +1 -0
  152. package/dist/retrieval-policy.js +77 -0
  153. package/dist/schema.d.ts +15 -0
  154. package/dist/schema.d.ts.map +1 -0
  155. package/dist/schema.js +327 -0
  156. package/dist/secret-scanner.d.ts +51 -0
  157. package/dist/secret-scanner.d.ts.map +1 -0
  158. package/dist/secret-scanner.js +248 -0
  159. package/dist/seed.d.ts +108 -0
  160. package/dist/seed.d.ts.map +1 -0
  161. package/dist/seed.js +179 -0
  162. package/dist/session-flusher.d.ts +53 -0
  163. package/dist/session-flusher.d.ts.map +1 -0
  164. package/dist/session-flusher.js +69 -0
  165. package/dist/session-topic-map.d.ts +41 -0
  166. package/dist/session-topic-map.d.ts.map +1 -0
  167. package/dist/session-topic-map.js +77 -0
  168. package/dist/spawn-context.d.ts +54 -0
  169. package/dist/spawn-context.d.ts.map +1 -0
  170. package/dist/spawn-context.js +159 -0
  171. package/dist/system-store.d.ts +73 -0
  172. package/dist/system-store.d.ts.map +1 -0
  173. package/dist/system-store.js +182 -0
  174. package/dist/temporal-store.d.ts +81 -0
  175. package/dist/temporal-store.d.ts.map +1 -0
  176. package/dist/temporal-store.js +149 -0
  177. package/dist/tool-artifact-store.d.ts +98 -0
  178. package/dist/tool-artifact-store.d.ts.map +1 -0
  179. package/dist/tool-artifact-store.js +244 -0
  180. package/dist/topic-detector.d.ts +35 -0
  181. package/dist/topic-detector.d.ts.map +1 -0
  182. package/dist/topic-detector.js +249 -0
  183. package/dist/topic-store.d.ts +51 -0
  184. package/dist/topic-store.d.ts.map +1 -0
  185. package/dist/topic-store.js +175 -0
  186. package/dist/topic-synthesizer.d.ts +71 -0
  187. package/dist/topic-synthesizer.d.ts.map +1 -0
  188. package/dist/topic-synthesizer.js +426 -0
  189. package/dist/trigger-registry.d.ts +63 -0
  190. package/dist/trigger-registry.d.ts.map +1 -0
  191. package/dist/trigger-registry.js +171 -0
  192. package/dist/types.d.ts +1085 -0
  193. package/dist/types.d.ts.map +1 -0
  194. package/dist/types.js +9 -0
  195. package/dist/vector-store.d.ts +180 -0
  196. package/dist/vector-store.d.ts.map +1 -0
  197. package/dist/vector-store.js +1041 -0
  198. package/dist/version.d.ts +34 -0
  199. package/dist/version.d.ts.map +1 -0
  200. package/dist/version.js +44 -0
  201. package/dist/wiki-page-emitter.d.ts +65 -0
  202. package/dist/wiki-page-emitter.d.ts.map +1 -0
  203. package/dist/wiki-page-emitter.js +258 -0
  204. package/dist/work-store.d.ts +112 -0
  205. package/dist/work-store.d.ts.map +1 -0
  206. package/dist/work-store.js +273 -0
  207. package/docs/MEMORY_MD_AUTHORING.md +3 -3
  208. package/docs/ROADMAP.md +2 -2
  209. package/install.sh +34 -0
  210. package/memory-plugin/package.json +5 -3
  211. package/node_modules/sqlite-vec/README.md +1 -0
  212. package/node_modules/sqlite-vec/index.cjs +46 -0
  213. package/node_modules/sqlite-vec/index.d.ts +17 -0
  214. package/node_modules/sqlite-vec/index.mjs +47 -0
  215. package/node_modules/sqlite-vec/package.json +1 -0
  216. package/node_modules/sqlite-vec-linux-x64/README.md +1 -0
  217. package/node_modules/sqlite-vec-linux-x64/package.json +1 -0
  218. package/node_modules/sqlite-vec-linux-x64/vec0.so +0 -0
  219. package/node_modules/zod/LICENSE +21 -0
  220. package/node_modules/zod/README.md +208 -0
  221. package/node_modules/zod/index.cjs +33 -0
  222. package/node_modules/zod/index.d.cts +4 -0
  223. package/node_modules/zod/index.d.ts +4 -0
  224. package/node_modules/zod/index.js +4 -0
  225. package/node_modules/zod/locales/index.cjs +17 -0
  226. package/node_modules/zod/locales/index.d.cts +1 -0
  227. package/node_modules/zod/locales/index.d.ts +1 -0
  228. package/node_modules/zod/locales/index.js +1 -0
  229. package/node_modules/zod/locales/package.json +6 -0
  230. package/node_modules/zod/mini/index.cjs +32 -0
  231. package/node_modules/zod/mini/index.d.cts +3 -0
  232. package/node_modules/zod/mini/index.d.ts +3 -0
  233. package/node_modules/zod/mini/index.js +3 -0
  234. package/node_modules/zod/mini/package.json +6 -0
  235. package/node_modules/zod/package.json +135 -0
  236. package/node_modules/zod/src/index.ts +4 -0
  237. package/node_modules/zod/src/locales/index.ts +1 -0
  238. package/node_modules/zod/src/mini/index.ts +3 -0
  239. package/node_modules/zod/src/v3/ZodError.ts +330 -0
  240. package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
  241. package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  242. package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
  243. package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
  244. package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
  245. package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
  246. package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
  247. package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
  248. package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
  249. package/node_modules/zod/src/v3/errors.ts +13 -0
  250. package/node_modules/zod/src/v3/external.ts +6 -0
  251. package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
  252. package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
  253. package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
  254. package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
  255. package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
  256. package/node_modules/zod/src/v3/helpers/util.ts +224 -0
  257. package/node_modules/zod/src/v3/index.ts +4 -0
  258. package/node_modules/zod/src/v3/locales/en.ts +124 -0
  259. package/node_modules/zod/src/v3/standard-schema.ts +113 -0
  260. package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
  261. package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
  262. package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
  263. package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
  264. package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
  265. package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
  266. package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
  267. package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
  268. package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
  269. package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
  270. package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
  271. package/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
  272. package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
  273. package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
  274. package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
  275. package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
  276. package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
  277. package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
  278. package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
  279. package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
  280. package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
  281. package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  282. package/node_modules/zod/src/v3/tests/function.test.ts +261 -0
  283. package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
  284. package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
  285. package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
  286. package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
  287. package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
  288. package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
  289. package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
  290. package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
  291. package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
  292. package/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
  293. package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
  294. package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
  295. package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
  296. package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
  297. package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
  298. package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
  299. package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
  300. package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
  301. package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
  302. package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
  303. package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
  304. package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
  305. package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
  306. package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
  307. package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
  308. package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
  309. package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
  310. package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
  311. package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
  312. package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
  313. package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
  314. package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
  315. package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
  316. package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
  317. package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
  318. package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
  319. package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
  320. package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
  321. package/node_modules/zod/src/v3/types.ts +5138 -0
  322. package/node_modules/zod/src/v4/classic/checks.ts +32 -0
  323. package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
  324. package/node_modules/zod/src/v4/classic/compat.ts +70 -0
  325. package/node_modules/zod/src/v4/classic/errors.ts +82 -0
  326. package/node_modules/zod/src/v4/classic/external.ts +51 -0
  327. package/node_modules/zod/src/v4/classic/from-json-schema.ts +643 -0
  328. package/node_modules/zod/src/v4/classic/index.ts +5 -0
  329. package/node_modules/zod/src/v4/classic/iso.ts +90 -0
  330. package/node_modules/zod/src/v4/classic/parse.ts +82 -0
  331. package/node_modules/zod/src/v4/classic/schemas.ts +2409 -0
  332. package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
  333. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +59 -0
  334. package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
  335. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
  336. package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
  337. package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
  338. package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
  339. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
  340. package/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
  341. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +276 -0
  342. package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
  343. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
  344. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +562 -0
  345. package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
  346. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
  347. package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
  348. package/node_modules/zod/src/v4/classic/tests/date.test.ts +62 -0
  349. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +302 -0
  350. package/node_modules/zod/src/v4/classic/tests/default.test.ts +365 -0
  351. package/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
  352. package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
  353. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +661 -0
  354. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
  355. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +595 -0
  356. package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
  357. package/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
  358. package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
  359. package/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
  360. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +734 -0
  361. package/node_modules/zod/src/v4/classic/tests/function.test.ts +360 -0
  362. package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
  363. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
  364. package/node_modules/zod/src/v4/classic/tests/index.test.ts +939 -0
  365. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +60 -0
  366. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +198 -0
  367. package/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
  368. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
  369. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +117 -0
  370. package/node_modules/zod/src/v4/classic/tests/map.test.ts +330 -0
  371. package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
  372. package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
  373. package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
  374. package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
  375. package/node_modules/zod/src/v4/classic/tests/number.test.ts +270 -0
  376. package/node_modules/zod/src/v4/classic/tests/object.test.ts +640 -0
  377. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +223 -0
  378. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +427 -0
  379. package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
  380. package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
  381. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +74 -0
  382. package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +282 -0
  383. package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
  384. package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
  385. package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
  386. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
  387. package/node_modules/zod/src/v4/classic/tests/record.test.ts +632 -0
  388. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +582 -0
  389. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +570 -0
  390. package/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
  391. package/node_modules/zod/src/v4/classic/tests/set.test.ts +181 -0
  392. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +134 -0
  393. package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
  394. package/node_modules/zod/src/v4/classic/tests/string.test.ts +1175 -0
  395. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +106 -0
  396. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +771 -0
  397. package/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
  398. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2990 -0
  399. package/node_modules/zod/src/v4/classic/tests/transform.test.ts +361 -0
  400. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +183 -0
  401. package/node_modules/zod/src/v4/classic/tests/union.test.ts +219 -0
  402. package/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
  403. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
  404. package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
  405. package/node_modules/zod/src/v4/core/api.ts +1798 -0
  406. package/node_modules/zod/src/v4/core/checks.ts +1293 -0
  407. package/node_modules/zod/src/v4/core/config.ts +15 -0
  408. package/node_modules/zod/src/v4/core/core.ts +138 -0
  409. package/node_modules/zod/src/v4/core/doc.ts +44 -0
  410. package/node_modules/zod/src/v4/core/errors.ts +448 -0
  411. package/node_modules/zod/src/v4/core/index.ts +16 -0
  412. package/node_modules/zod/src/v4/core/json-schema-generator.ts +126 -0
  413. package/node_modules/zod/src/v4/core/json-schema-processors.ts +667 -0
  414. package/node_modules/zod/src/v4/core/json-schema.ts +147 -0
  415. package/node_modules/zod/src/v4/core/parse.ts +195 -0
  416. package/node_modules/zod/src/v4/core/regexes.ts +183 -0
  417. package/node_modules/zod/src/v4/core/registries.ts +105 -0
  418. package/node_modules/zod/src/v4/core/schemas.ts +4538 -0
  419. package/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
  420. package/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
  421. package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
  422. package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
  423. package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
  424. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
  425. package/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
  426. package/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
  427. package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
  428. package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
  429. package/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +83 -0
  430. package/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +67 -0
  431. package/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
  432. package/node_modules/zod/src/v4/core/to-json-schema.ts +613 -0
  433. package/node_modules/zod/src/v4/core/util.ts +966 -0
  434. package/node_modules/zod/src/v4/core/versions.ts +5 -0
  435. package/node_modules/zod/src/v4/core/zsf.ts +323 -0
  436. package/node_modules/zod/src/v4/index.ts +4 -0
  437. package/node_modules/zod/src/v4/locales/ar.ts +115 -0
  438. package/node_modules/zod/src/v4/locales/az.ts +111 -0
  439. package/node_modules/zod/src/v4/locales/be.ts +176 -0
  440. package/node_modules/zod/src/v4/locales/bg.ts +128 -0
  441. package/node_modules/zod/src/v4/locales/ca.ts +116 -0
  442. package/node_modules/zod/src/v4/locales/cs.ts +118 -0
  443. package/node_modules/zod/src/v4/locales/da.ts +123 -0
  444. package/node_modules/zod/src/v4/locales/de.ts +116 -0
  445. package/node_modules/zod/src/v4/locales/en.ts +119 -0
  446. package/node_modules/zod/src/v4/locales/eo.ts +118 -0
  447. package/node_modules/zod/src/v4/locales/es.ts +141 -0
  448. package/node_modules/zod/src/v4/locales/fa.ts +126 -0
  449. package/node_modules/zod/src/v4/locales/fi.ts +121 -0
  450. package/node_modules/zod/src/v4/locales/fr-CA.ts +116 -0
  451. package/node_modules/zod/src/v4/locales/fr.ts +116 -0
  452. package/node_modules/zod/src/v4/locales/he.ts +246 -0
  453. package/node_modules/zod/src/v4/locales/hu.ts +117 -0
  454. package/node_modules/zod/src/v4/locales/hy.ts +164 -0
  455. package/node_modules/zod/src/v4/locales/id.ts +115 -0
  456. package/node_modules/zod/src/v4/locales/index.ts +49 -0
  457. package/node_modules/zod/src/v4/locales/is.ts +119 -0
  458. package/node_modules/zod/src/v4/locales/it.ts +116 -0
  459. package/node_modules/zod/src/v4/locales/ja.ts +114 -0
  460. package/node_modules/zod/src/v4/locales/ka.ts +123 -0
  461. package/node_modules/zod/src/v4/locales/kh.ts +7 -0
  462. package/node_modules/zod/src/v4/locales/km.ts +119 -0
  463. package/node_modules/zod/src/v4/locales/ko.ts +121 -0
  464. package/node_modules/zod/src/v4/locales/lt.ts +239 -0
  465. package/node_modules/zod/src/v4/locales/mk.ts +118 -0
  466. package/node_modules/zod/src/v4/locales/ms.ts +115 -0
  467. package/node_modules/zod/src/v4/locales/nl.ts +121 -0
  468. package/node_modules/zod/src/v4/locales/no.ts +116 -0
  469. package/node_modules/zod/src/v4/locales/ota.ts +117 -0
  470. package/node_modules/zod/src/v4/locales/pl.ts +118 -0
  471. package/node_modules/zod/src/v4/locales/ps.ts +126 -0
  472. package/node_modules/zod/src/v4/locales/pt.ts +116 -0
  473. package/node_modules/zod/src/v4/locales/ru.ts +176 -0
  474. package/node_modules/zod/src/v4/locales/sl.ts +118 -0
  475. package/node_modules/zod/src/v4/locales/sv.ts +119 -0
  476. package/node_modules/zod/src/v4/locales/ta.ts +118 -0
  477. package/node_modules/zod/src/v4/locales/th.ts +119 -0
  478. package/node_modules/zod/src/v4/locales/tr.ts +111 -0
  479. package/node_modules/zod/src/v4/locales/ua.ts +7 -0
  480. package/node_modules/zod/src/v4/locales/uk.ts +117 -0
  481. package/node_modules/zod/src/v4/locales/ur.ts +119 -0
  482. package/node_modules/zod/src/v4/locales/uz.ts +116 -0
  483. package/node_modules/zod/src/v4/locales/vi.ts +117 -0
  484. package/node_modules/zod/src/v4/locales/yo.ts +124 -0
  485. package/node_modules/zod/src/v4/locales/zh-CN.ts +116 -0
  486. package/node_modules/zod/src/v4/locales/zh-TW.ts +115 -0
  487. package/node_modules/zod/src/v4/mini/checks.ts +32 -0
  488. package/node_modules/zod/src/v4/mini/coerce.ts +27 -0
  489. package/node_modules/zod/src/v4/mini/external.ts +40 -0
  490. package/node_modules/zod/src/v4/mini/index.ts +3 -0
  491. package/node_modules/zod/src/v4/mini/iso.ts +66 -0
  492. package/node_modules/zod/src/v4/mini/parse.ts +14 -0
  493. package/node_modules/zod/src/v4/mini/schemas.ts +1916 -0
  494. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +24 -0
  495. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
  496. package/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
  497. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
  498. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +529 -0
  499. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
  500. package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
  501. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +5 -0
  502. package/node_modules/zod/src/v4/mini/tests/index.test.ts +963 -0
  503. package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
  504. package/node_modules/zod/src/v4/mini/tests/object.test.ts +227 -0
  505. package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
  506. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
  507. package/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
  508. package/node_modules/zod/src/v4/mini/tests/string.test.ts +347 -0
  509. package/node_modules/zod/src/v4-mini/index.ts +3 -0
  510. package/node_modules/zod/v3/ZodError.cjs +138 -0
  511. package/node_modules/zod/v3/ZodError.d.cts +164 -0
  512. package/node_modules/zod/v3/ZodError.d.ts +164 -0
  513. package/node_modules/zod/v3/ZodError.js +133 -0
  514. package/node_modules/zod/v3/errors.cjs +17 -0
  515. package/node_modules/zod/v3/errors.d.cts +5 -0
  516. package/node_modules/zod/v3/errors.d.ts +5 -0
  517. package/node_modules/zod/v3/errors.js +9 -0
  518. package/node_modules/zod/v3/external.cjs +22 -0
  519. package/node_modules/zod/v3/external.d.cts +6 -0
  520. package/node_modules/zod/v3/external.d.ts +6 -0
  521. package/node_modules/zod/v3/external.js +6 -0
  522. package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
  523. package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
  524. package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
  525. package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
  526. package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
  527. package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
  528. package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
  529. package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  530. package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
  531. package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
  532. package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
  533. package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  534. package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
  535. package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
  536. package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
  537. package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
  538. package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
  539. package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
  540. package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
  541. package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  542. package/node_modules/zod/v3/helpers/util.cjs +137 -0
  543. package/node_modules/zod/v3/helpers/util.d.cts +85 -0
  544. package/node_modules/zod/v3/helpers/util.d.ts +85 -0
  545. package/node_modules/zod/v3/helpers/util.js +133 -0
  546. package/node_modules/zod/v3/index.cjs +33 -0
  547. package/node_modules/zod/v3/index.d.cts +4 -0
  548. package/node_modules/zod/v3/index.d.ts +4 -0
  549. package/node_modules/zod/v3/index.js +4 -0
  550. package/node_modules/zod/v3/locales/en.cjs +112 -0
  551. package/node_modules/zod/v3/locales/en.d.cts +3 -0
  552. package/node_modules/zod/v3/locales/en.d.ts +3 -0
  553. package/node_modules/zod/v3/locales/en.js +109 -0
  554. package/node_modules/zod/v3/package.json +6 -0
  555. package/node_modules/zod/v3/standard-schema.cjs +2 -0
  556. package/node_modules/zod/v3/standard-schema.d.cts +102 -0
  557. package/node_modules/zod/v3/standard-schema.d.ts +102 -0
  558. package/node_modules/zod/v3/standard-schema.js +1 -0
  559. package/node_modules/zod/v3/types.cjs +3777 -0
  560. package/node_modules/zod/v3/types.d.cts +1034 -0
  561. package/node_modules/zod/v3/types.d.ts +1034 -0
  562. package/node_modules/zod/v3/types.js +3695 -0
  563. package/node_modules/zod/v4/classic/checks.cjs +33 -0
  564. package/node_modules/zod/v4/classic/checks.d.cts +1 -0
  565. package/node_modules/zod/v4/classic/checks.d.ts +1 -0
  566. package/node_modules/zod/v4/classic/checks.js +1 -0
  567. package/node_modules/zod/v4/classic/coerce.cjs +47 -0
  568. package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
  569. package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
  570. package/node_modules/zod/v4/classic/coerce.js +17 -0
  571. package/node_modules/zod/v4/classic/compat.cjs +61 -0
  572. package/node_modules/zod/v4/classic/compat.d.cts +50 -0
  573. package/node_modules/zod/v4/classic/compat.d.ts +50 -0
  574. package/node_modules/zod/v4/classic/compat.js +31 -0
  575. package/node_modules/zod/v4/classic/errors.cjs +74 -0
  576. package/node_modules/zod/v4/classic/errors.d.cts +30 -0
  577. package/node_modules/zod/v4/classic/errors.d.ts +30 -0
  578. package/node_modules/zod/v4/classic/errors.js +48 -0
  579. package/node_modules/zod/v4/classic/external.cjs +73 -0
  580. package/node_modules/zod/v4/classic/external.d.cts +15 -0
  581. package/node_modules/zod/v4/classic/external.d.ts +15 -0
  582. package/node_modules/zod/v4/classic/external.js +20 -0
  583. package/node_modules/zod/v4/classic/from-json-schema.cjs +610 -0
  584. package/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
  585. package/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
  586. package/node_modules/zod/v4/classic/from-json-schema.js +584 -0
  587. package/node_modules/zod/v4/classic/index.cjs +33 -0
  588. package/node_modules/zod/v4/classic/index.d.cts +4 -0
  589. package/node_modules/zod/v4/classic/index.d.ts +4 -0
  590. package/node_modules/zod/v4/classic/index.js +4 -0
  591. package/node_modules/zod/v4/classic/iso.cjs +60 -0
  592. package/node_modules/zod/v4/classic/iso.d.cts +22 -0
  593. package/node_modules/zod/v4/classic/iso.d.ts +22 -0
  594. package/node_modules/zod/v4/classic/iso.js +30 -0
  595. package/node_modules/zod/v4/classic/package.json +6 -0
  596. package/node_modules/zod/v4/classic/parse.cjs +41 -0
  597. package/node_modules/zod/v4/classic/parse.d.cts +31 -0
  598. package/node_modules/zod/v4/classic/parse.d.ts +31 -0
  599. package/node_modules/zod/v4/classic/parse.js +15 -0
  600. package/node_modules/zod/v4/classic/schemas.cjs +1272 -0
  601. package/node_modules/zod/v4/classic/schemas.d.cts +739 -0
  602. package/node_modules/zod/v4/classic/schemas.d.ts +739 -0
  603. package/node_modules/zod/v4/classic/schemas.js +1157 -0
  604. package/node_modules/zod/v4/core/api.cjs +1222 -0
  605. package/node_modules/zod/v4/core/api.d.cts +304 -0
  606. package/node_modules/zod/v4/core/api.d.ts +304 -0
  607. package/node_modules/zod/v4/core/api.js +1082 -0
  608. package/node_modules/zod/v4/core/checks.cjs +601 -0
  609. package/node_modules/zod/v4/core/checks.d.cts +278 -0
  610. package/node_modules/zod/v4/core/checks.d.ts +278 -0
  611. package/node_modules/zod/v4/core/checks.js +575 -0
  612. package/node_modules/zod/v4/core/core.cjs +83 -0
  613. package/node_modules/zod/v4/core/core.d.cts +70 -0
  614. package/node_modules/zod/v4/core/core.d.ts +70 -0
  615. package/node_modules/zod/v4/core/core.js +76 -0
  616. package/node_modules/zod/v4/core/doc.cjs +39 -0
  617. package/node_modules/zod/v4/core/doc.d.cts +14 -0
  618. package/node_modules/zod/v4/core/doc.d.ts +14 -0
  619. package/node_modules/zod/v4/core/doc.js +35 -0
  620. package/node_modules/zod/v4/core/errors.cjs +213 -0
  621. package/node_modules/zod/v4/core/errors.d.cts +220 -0
  622. package/node_modules/zod/v4/core/errors.d.ts +220 -0
  623. package/node_modules/zod/v4/core/errors.js +182 -0
  624. package/node_modules/zod/v4/core/index.cjs +47 -0
  625. package/node_modules/zod/v4/core/index.d.cts +16 -0
  626. package/node_modules/zod/v4/core/index.d.ts +16 -0
  627. package/node_modules/zod/v4/core/index.js +16 -0
  628. package/node_modules/zod/v4/core/json-schema-generator.cjs +99 -0
  629. package/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
  630. package/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
  631. package/node_modules/zod/v4/core/json-schema-generator.js +95 -0
  632. package/node_modules/zod/v4/core/json-schema-processors.cjs +648 -0
  633. package/node_modules/zod/v4/core/json-schema-processors.d.cts +49 -0
  634. package/node_modules/zod/v4/core/json-schema-processors.d.ts +49 -0
  635. package/node_modules/zod/v4/core/json-schema-processors.js +605 -0
  636. package/node_modules/zod/v4/core/json-schema.cjs +2 -0
  637. package/node_modules/zod/v4/core/json-schema.d.cts +88 -0
  638. package/node_modules/zod/v4/core/json-schema.d.ts +88 -0
  639. package/node_modules/zod/v4/core/json-schema.js +1 -0
  640. package/node_modules/zod/v4/core/package.json +6 -0
  641. package/node_modules/zod/v4/core/parse.cjs +131 -0
  642. package/node_modules/zod/v4/core/parse.d.cts +49 -0
  643. package/node_modules/zod/v4/core/parse.d.ts +49 -0
  644. package/node_modules/zod/v4/core/parse.js +93 -0
  645. package/node_modules/zod/v4/core/regexes.cjs +166 -0
  646. package/node_modules/zod/v4/core/regexes.d.cts +79 -0
  647. package/node_modules/zod/v4/core/regexes.d.ts +79 -0
  648. package/node_modules/zod/v4/core/regexes.js +133 -0
  649. package/node_modules/zod/v4/core/registries.cjs +56 -0
  650. package/node_modules/zod/v4/core/registries.d.cts +35 -0
  651. package/node_modules/zod/v4/core/registries.d.ts +35 -0
  652. package/node_modules/zod/v4/core/registries.js +51 -0
  653. package/node_modules/zod/v4/core/schemas.cjs +2124 -0
  654. package/node_modules/zod/v4/core/schemas.d.cts +1146 -0
  655. package/node_modules/zod/v4/core/schemas.d.ts +1146 -0
  656. package/node_modules/zod/v4/core/schemas.js +2093 -0
  657. package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
  658. package/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
  659. package/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
  660. package/node_modules/zod/v4/core/standard-schema.js +1 -0
  661. package/node_modules/zod/v4/core/to-json-schema.cjs +446 -0
  662. package/node_modules/zod/v4/core/to-json-schema.d.cts +114 -0
  663. package/node_modules/zod/v4/core/to-json-schema.d.ts +114 -0
  664. package/node_modules/zod/v4/core/to-json-schema.js +437 -0
  665. package/node_modules/zod/v4/core/util.cjs +710 -0
  666. package/node_modules/zod/v4/core/util.d.cts +199 -0
  667. package/node_modules/zod/v4/core/util.d.ts +199 -0
  668. package/node_modules/zod/v4/core/util.js +651 -0
  669. package/node_modules/zod/v4/core/versions.cjs +8 -0
  670. package/node_modules/zod/v4/core/versions.d.cts +5 -0
  671. package/node_modules/zod/v4/core/versions.d.ts +5 -0
  672. package/node_modules/zod/v4/core/versions.js +5 -0
  673. package/node_modules/zod/v4/index.cjs +22 -0
  674. package/node_modules/zod/v4/index.d.cts +3 -0
  675. package/node_modules/zod/v4/index.d.ts +3 -0
  676. package/node_modules/zod/v4/index.js +3 -0
  677. package/node_modules/zod/v4/locales/ar.cjs +133 -0
  678. package/node_modules/zod/v4/locales/ar.d.cts +5 -0
  679. package/node_modules/zod/v4/locales/ar.d.ts +4 -0
  680. package/node_modules/zod/v4/locales/ar.js +106 -0
  681. package/node_modules/zod/v4/locales/az.cjs +132 -0
  682. package/node_modules/zod/v4/locales/az.d.cts +5 -0
  683. package/node_modules/zod/v4/locales/az.d.ts +4 -0
  684. package/node_modules/zod/v4/locales/az.js +105 -0
  685. package/node_modules/zod/v4/locales/be.cjs +183 -0
  686. package/node_modules/zod/v4/locales/be.d.cts +5 -0
  687. package/node_modules/zod/v4/locales/be.d.ts +4 -0
  688. package/node_modules/zod/v4/locales/be.js +156 -0
  689. package/node_modules/zod/v4/locales/bg.cjs +147 -0
  690. package/node_modules/zod/v4/locales/bg.d.cts +5 -0
  691. package/node_modules/zod/v4/locales/bg.d.ts +4 -0
  692. package/node_modules/zod/v4/locales/bg.js +120 -0
  693. package/node_modules/zod/v4/locales/ca.cjs +134 -0
  694. package/node_modules/zod/v4/locales/ca.d.cts +5 -0
  695. package/node_modules/zod/v4/locales/ca.d.ts +4 -0
  696. package/node_modules/zod/v4/locales/ca.js +107 -0
  697. package/node_modules/zod/v4/locales/cs.cjs +138 -0
  698. package/node_modules/zod/v4/locales/cs.d.cts +5 -0
  699. package/node_modules/zod/v4/locales/cs.d.ts +4 -0
  700. package/node_modules/zod/v4/locales/cs.js +111 -0
  701. package/node_modules/zod/v4/locales/da.cjs +142 -0
  702. package/node_modules/zod/v4/locales/da.d.cts +5 -0
  703. package/node_modules/zod/v4/locales/da.d.ts +4 -0
  704. package/node_modules/zod/v4/locales/da.js +115 -0
  705. package/node_modules/zod/v4/locales/de.cjs +135 -0
  706. package/node_modules/zod/v4/locales/de.d.cts +5 -0
  707. package/node_modules/zod/v4/locales/de.d.ts +4 -0
  708. package/node_modules/zod/v4/locales/de.js +108 -0
  709. package/node_modules/zod/v4/locales/en.cjs +136 -0
  710. package/node_modules/zod/v4/locales/en.d.cts +5 -0
  711. package/node_modules/zod/v4/locales/en.d.ts +4 -0
  712. package/node_modules/zod/v4/locales/en.js +109 -0
  713. package/node_modules/zod/v4/locales/eo.cjs +136 -0
  714. package/node_modules/zod/v4/locales/eo.d.cts +5 -0
  715. package/node_modules/zod/v4/locales/eo.d.ts +4 -0
  716. package/node_modules/zod/v4/locales/eo.js +109 -0
  717. package/node_modules/zod/v4/locales/es.cjs +159 -0
  718. package/node_modules/zod/v4/locales/es.d.cts +5 -0
  719. package/node_modules/zod/v4/locales/es.d.ts +4 -0
  720. package/node_modules/zod/v4/locales/es.js +132 -0
  721. package/node_modules/zod/v4/locales/fa.cjs +141 -0
  722. package/node_modules/zod/v4/locales/fa.d.cts +5 -0
  723. package/node_modules/zod/v4/locales/fa.d.ts +4 -0
  724. package/node_modules/zod/v4/locales/fa.js +114 -0
  725. package/node_modules/zod/v4/locales/fi.cjs +139 -0
  726. package/node_modules/zod/v4/locales/fi.d.cts +5 -0
  727. package/node_modules/zod/v4/locales/fi.d.ts +4 -0
  728. package/node_modules/zod/v4/locales/fi.js +112 -0
  729. package/node_modules/zod/v4/locales/fr-CA.cjs +134 -0
  730. package/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
  731. package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
  732. package/node_modules/zod/v4/locales/fr-CA.js +107 -0
  733. package/node_modules/zod/v4/locales/fr.cjs +135 -0
  734. package/node_modules/zod/v4/locales/fr.d.cts +5 -0
  735. package/node_modules/zod/v4/locales/fr.d.ts +4 -0
  736. package/node_modules/zod/v4/locales/fr.js +108 -0
  737. package/node_modules/zod/v4/locales/he.cjs +241 -0
  738. package/node_modules/zod/v4/locales/he.d.cts +5 -0
  739. package/node_modules/zod/v4/locales/he.d.ts +4 -0
  740. package/node_modules/zod/v4/locales/he.js +214 -0
  741. package/node_modules/zod/v4/locales/hu.cjs +135 -0
  742. package/node_modules/zod/v4/locales/hu.d.cts +5 -0
  743. package/node_modules/zod/v4/locales/hu.d.ts +4 -0
  744. package/node_modules/zod/v4/locales/hu.js +108 -0
  745. package/node_modules/zod/v4/locales/hy.cjs +174 -0
  746. package/node_modules/zod/v4/locales/hy.d.cts +5 -0
  747. package/node_modules/zod/v4/locales/hy.d.ts +4 -0
  748. package/node_modules/zod/v4/locales/hy.js +147 -0
  749. package/node_modules/zod/v4/locales/id.cjs +133 -0
  750. package/node_modules/zod/v4/locales/id.d.cts +5 -0
  751. package/node_modules/zod/v4/locales/id.d.ts +4 -0
  752. package/node_modules/zod/v4/locales/id.js +106 -0
  753. package/node_modules/zod/v4/locales/index.cjs +104 -0
  754. package/node_modules/zod/v4/locales/index.d.cts +49 -0
  755. package/node_modules/zod/v4/locales/index.d.ts +49 -0
  756. package/node_modules/zod/v4/locales/index.js +49 -0
  757. package/node_modules/zod/v4/locales/is.cjs +136 -0
  758. package/node_modules/zod/v4/locales/is.d.cts +5 -0
  759. package/node_modules/zod/v4/locales/is.d.ts +4 -0
  760. package/node_modules/zod/v4/locales/is.js +109 -0
  761. package/node_modules/zod/v4/locales/it.cjs +135 -0
  762. package/node_modules/zod/v4/locales/it.d.cts +5 -0
  763. package/node_modules/zod/v4/locales/it.d.ts +4 -0
  764. package/node_modules/zod/v4/locales/it.js +108 -0
  765. package/node_modules/zod/v4/locales/ja.cjs +134 -0
  766. package/node_modules/zod/v4/locales/ja.d.cts +5 -0
  767. package/node_modules/zod/v4/locales/ja.d.ts +4 -0
  768. package/node_modules/zod/v4/locales/ja.js +107 -0
  769. package/node_modules/zod/v4/locales/ka.cjs +139 -0
  770. package/node_modules/zod/v4/locales/ka.d.cts +5 -0
  771. package/node_modules/zod/v4/locales/ka.d.ts +4 -0
  772. package/node_modules/zod/v4/locales/ka.js +112 -0
  773. package/node_modules/zod/v4/locales/kh.cjs +12 -0
  774. package/node_modules/zod/v4/locales/kh.d.cts +5 -0
  775. package/node_modules/zod/v4/locales/kh.d.ts +5 -0
  776. package/node_modules/zod/v4/locales/kh.js +5 -0
  777. package/node_modules/zod/v4/locales/km.cjs +137 -0
  778. package/node_modules/zod/v4/locales/km.d.cts +5 -0
  779. package/node_modules/zod/v4/locales/km.d.ts +4 -0
  780. package/node_modules/zod/v4/locales/km.js +110 -0
  781. package/node_modules/zod/v4/locales/ko.cjs +138 -0
  782. package/node_modules/zod/v4/locales/ko.d.cts +5 -0
  783. package/node_modules/zod/v4/locales/ko.d.ts +4 -0
  784. package/node_modules/zod/v4/locales/ko.js +111 -0
  785. package/node_modules/zod/v4/locales/lt.cjs +230 -0
  786. package/node_modules/zod/v4/locales/lt.d.cts +5 -0
  787. package/node_modules/zod/v4/locales/lt.d.ts +4 -0
  788. package/node_modules/zod/v4/locales/lt.js +203 -0
  789. package/node_modules/zod/v4/locales/mk.cjs +136 -0
  790. package/node_modules/zod/v4/locales/mk.d.cts +5 -0
  791. package/node_modules/zod/v4/locales/mk.d.ts +4 -0
  792. package/node_modules/zod/v4/locales/mk.js +109 -0
  793. package/node_modules/zod/v4/locales/ms.cjs +134 -0
  794. package/node_modules/zod/v4/locales/ms.d.cts +5 -0
  795. package/node_modules/zod/v4/locales/ms.d.ts +4 -0
  796. package/node_modules/zod/v4/locales/ms.js +107 -0
  797. package/node_modules/zod/v4/locales/nl.cjs +137 -0
  798. package/node_modules/zod/v4/locales/nl.d.cts +5 -0
  799. package/node_modules/zod/v4/locales/nl.d.ts +4 -0
  800. package/node_modules/zod/v4/locales/nl.js +110 -0
  801. package/node_modules/zod/v4/locales/no.cjs +135 -0
  802. package/node_modules/zod/v4/locales/no.d.cts +5 -0
  803. package/node_modules/zod/v4/locales/no.d.ts +4 -0
  804. package/node_modules/zod/v4/locales/no.js +108 -0
  805. package/node_modules/zod/v4/locales/ota.cjs +136 -0
  806. package/node_modules/zod/v4/locales/ota.d.cts +5 -0
  807. package/node_modules/zod/v4/locales/ota.d.ts +4 -0
  808. package/node_modules/zod/v4/locales/ota.js +109 -0
  809. package/node_modules/zod/v4/locales/package.json +6 -0
  810. package/node_modules/zod/v4/locales/pl.cjs +136 -0
  811. package/node_modules/zod/v4/locales/pl.d.cts +5 -0
  812. package/node_modules/zod/v4/locales/pl.d.ts +4 -0
  813. package/node_modules/zod/v4/locales/pl.js +109 -0
  814. package/node_modules/zod/v4/locales/ps.cjs +141 -0
  815. package/node_modules/zod/v4/locales/ps.d.cts +5 -0
  816. package/node_modules/zod/v4/locales/ps.d.ts +4 -0
  817. package/node_modules/zod/v4/locales/ps.js +114 -0
  818. package/node_modules/zod/v4/locales/pt.cjs +135 -0
  819. package/node_modules/zod/v4/locales/pt.d.cts +5 -0
  820. package/node_modules/zod/v4/locales/pt.d.ts +4 -0
  821. package/node_modules/zod/v4/locales/pt.js +108 -0
  822. package/node_modules/zod/v4/locales/ru.cjs +183 -0
  823. package/node_modules/zod/v4/locales/ru.d.cts +5 -0
  824. package/node_modules/zod/v4/locales/ru.d.ts +4 -0
  825. package/node_modules/zod/v4/locales/ru.js +156 -0
  826. package/node_modules/zod/v4/locales/sl.cjs +136 -0
  827. package/node_modules/zod/v4/locales/sl.d.cts +5 -0
  828. package/node_modules/zod/v4/locales/sl.d.ts +4 -0
  829. package/node_modules/zod/v4/locales/sl.js +109 -0
  830. package/node_modules/zod/v4/locales/sv.cjs +137 -0
  831. package/node_modules/zod/v4/locales/sv.d.cts +5 -0
  832. package/node_modules/zod/v4/locales/sv.d.ts +4 -0
  833. package/node_modules/zod/v4/locales/sv.js +110 -0
  834. package/node_modules/zod/v4/locales/ta.cjs +137 -0
  835. package/node_modules/zod/v4/locales/ta.d.cts +5 -0
  836. package/node_modules/zod/v4/locales/ta.d.ts +4 -0
  837. package/node_modules/zod/v4/locales/ta.js +110 -0
  838. package/node_modules/zod/v4/locales/th.cjs +137 -0
  839. package/node_modules/zod/v4/locales/th.d.cts +5 -0
  840. package/node_modules/zod/v4/locales/th.d.ts +4 -0
  841. package/node_modules/zod/v4/locales/th.js +110 -0
  842. package/node_modules/zod/v4/locales/tr.cjs +132 -0
  843. package/node_modules/zod/v4/locales/tr.d.cts +5 -0
  844. package/node_modules/zod/v4/locales/tr.d.ts +4 -0
  845. package/node_modules/zod/v4/locales/tr.js +105 -0
  846. package/node_modules/zod/v4/locales/ua.cjs +12 -0
  847. package/node_modules/zod/v4/locales/ua.d.cts +5 -0
  848. package/node_modules/zod/v4/locales/ua.d.ts +5 -0
  849. package/node_modules/zod/v4/locales/ua.js +5 -0
  850. package/node_modules/zod/v4/locales/uk.cjs +135 -0
  851. package/node_modules/zod/v4/locales/uk.d.cts +5 -0
  852. package/node_modules/zod/v4/locales/uk.d.ts +4 -0
  853. package/node_modules/zod/v4/locales/uk.js +108 -0
  854. package/node_modules/zod/v4/locales/ur.cjs +137 -0
  855. package/node_modules/zod/v4/locales/ur.d.cts +5 -0
  856. package/node_modules/zod/v4/locales/ur.d.ts +4 -0
  857. package/node_modules/zod/v4/locales/ur.js +110 -0
  858. package/node_modules/zod/v4/locales/uz.cjs +136 -0
  859. package/node_modules/zod/v4/locales/uz.d.cts +5 -0
  860. package/node_modules/zod/v4/locales/uz.d.ts +4 -0
  861. package/node_modules/zod/v4/locales/uz.js +109 -0
  862. package/node_modules/zod/v4/locales/vi.cjs +135 -0
  863. package/node_modules/zod/v4/locales/vi.d.cts +5 -0
  864. package/node_modules/zod/v4/locales/vi.d.ts +4 -0
  865. package/node_modules/zod/v4/locales/vi.js +108 -0
  866. package/node_modules/zod/v4/locales/yo.cjs +134 -0
  867. package/node_modules/zod/v4/locales/yo.d.cts +5 -0
  868. package/node_modules/zod/v4/locales/yo.d.ts +4 -0
  869. package/node_modules/zod/v4/locales/yo.js +107 -0
  870. package/node_modules/zod/v4/locales/zh-CN.cjs +136 -0
  871. package/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
  872. package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
  873. package/node_modules/zod/v4/locales/zh-CN.js +109 -0
  874. package/node_modules/zod/v4/locales/zh-TW.cjs +134 -0
  875. package/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
  876. package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
  877. package/node_modules/zod/v4/locales/zh-TW.js +107 -0
  878. package/node_modules/zod/v4/mini/checks.cjs +34 -0
  879. package/node_modules/zod/v4/mini/checks.d.cts +1 -0
  880. package/node_modules/zod/v4/mini/checks.d.ts +1 -0
  881. package/node_modules/zod/v4/mini/checks.js +1 -0
  882. package/node_modules/zod/v4/mini/coerce.cjs +52 -0
  883. package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
  884. package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
  885. package/node_modules/zod/v4/mini/coerce.js +22 -0
  886. package/node_modules/zod/v4/mini/external.cjs +63 -0
  887. package/node_modules/zod/v4/mini/external.d.cts +12 -0
  888. package/node_modules/zod/v4/mini/external.d.ts +12 -0
  889. package/node_modules/zod/v4/mini/external.js +14 -0
  890. package/node_modules/zod/v4/mini/index.cjs +32 -0
  891. package/node_modules/zod/v4/mini/index.d.cts +3 -0
  892. package/node_modules/zod/v4/mini/index.d.ts +3 -0
  893. package/node_modules/zod/v4/mini/index.js +3 -0
  894. package/node_modules/zod/v4/mini/iso.cjs +64 -0
  895. package/node_modules/zod/v4/mini/iso.d.cts +22 -0
  896. package/node_modules/zod/v4/mini/iso.d.ts +22 -0
  897. package/node_modules/zod/v4/mini/iso.js +34 -0
  898. package/node_modules/zod/v4/mini/package.json +6 -0
  899. package/node_modules/zod/v4/mini/parse.cjs +16 -0
  900. package/node_modules/zod/v4/mini/parse.d.cts +1 -0
  901. package/node_modules/zod/v4/mini/parse.d.ts +1 -0
  902. package/node_modules/zod/v4/mini/parse.js +1 -0
  903. package/node_modules/zod/v4/mini/schemas.cjs +1046 -0
  904. package/node_modules/zod/v4/mini/schemas.d.cts +427 -0
  905. package/node_modules/zod/v4/mini/schemas.d.ts +427 -0
  906. package/node_modules/zod/v4/mini/schemas.js +925 -0
  907. package/node_modules/zod/v4/package.json +6 -0
  908. package/node_modules/zod/v4-mini/index.cjs +32 -0
  909. package/node_modules/zod/v4-mini/index.d.cts +3 -0
  910. package/node_modules/zod/v4-mini/index.d.ts +3 -0
  911. package/node_modules/zod/v4-mini/index.js +3 -0
  912. package/node_modules/zod/v4-mini/package.json +6 -0
  913. package/package.json +3 -1
  914. package/plugin/package.json +6 -4
@@ -0,0 +1,426 @@
1
+ /**
2
+ * Topic Synthesizer
3
+ *
4
+ * Synthesizes compiled knowledge pages (wiki-style) from stale topics.
5
+ * Heuristic-only: no LLM calls. Uses content-type classifier + keystone scoring.
6
+ *
7
+ * Architecture: Karpathy LLM Wiki Pattern adapted for hypermem.
8
+ * Raw sources (messages.db) → Wiki (knowledge table) → Compositor (compose-time)
9
+ */
10
+ import { classifyContentType } from './content-type-classifier.js';
11
+ import { KnowledgeStore } from './knowledge-store.js';
12
+ // ─── Configuration ──────────────────────────────────────────────
13
+ const SYNTHESIS_STALE_MINUTES = 30;
14
+ const SYNTHESIS_MIN_MESSAGES = 5;
15
+ const SYNTHESIS_REGROWTH_THRESHOLD = 5;
16
+ const SYNTHESIS_MAX_SUMMARY_CHARS = 800;
17
+ const SYNTHESIS_MAX_DECISIONS = 10;
18
+ const SYNTHESIS_MAX_QUESTIONS = 5;
19
+ const LINT_FREQUENCY = 10;
20
+ const LINT_STALE_DAYS = 7;
21
+ // Export so tests can reference them
22
+ export { SYNTHESIS_STALE_MINUTES, SYNTHESIS_MIN_MESSAGES, SYNTHESIS_REGROWTH_THRESHOLD, SYNTHESIS_MAX_SUMMARY_CHARS, SYNTHESIS_MAX_DECISIONS, SYNTHESIS_MAX_QUESTIONS, LINT_FREQUENCY, LINT_STALE_DAYS, };
23
+ // ─── Helpers ────────────────────────────────────────────────────
24
+ /**
25
+ * Score a message for keystone quality.
26
+ * Heuristic: count references (file paths, agent mentions, quoted content, backticks).
27
+ */
28
+ function keystoneScore(msg) {
29
+ const text = msg.text_content || '';
30
+ let score = 0;
31
+ // File path references
32
+ const pathMatches = text.match(/\/[\w./\-]+/g) || [];
33
+ score += pathMatches.length * 0.3;
34
+ // Backtick code references (inline or block)
35
+ const backtickMatches = text.match(/`[^`]+`/g) || [];
36
+ score += backtickMatches.length * 0.2;
37
+ // Agent mentions (known patterns)
38
+ const agentMentions = text.match(/\b(agent1|agent2|agent4|agent3|agent5|agent6|director1|director2|director7|specialist2|specialist1)\b/gi) || [];
39
+ score += agentMentions.length * 0.25;
40
+ // Quoted content
41
+ const quotedMatches = text.match(/"[^"]{10,}"/g) || [];
42
+ score += quotedMatches.length * 0.15;
43
+ // Decision/spec content type boosts score
44
+ const classification = classifyContentType(text);
45
+ if (classification.type === 'decision')
46
+ score += 1.0;
47
+ else if (classification.type === 'spec')
48
+ score += 0.5;
49
+ else if (classification.type === 'preference')
50
+ score += 0.3;
51
+ // Length bonus (up to 0.5 for ~500 chars)
52
+ score += Math.min(text.length / 1000, 0.5);
53
+ return score;
54
+ }
55
+ /**
56
+ * Extract file artifact paths from a message's tool_calls JSON.
57
+ */
58
+ function extractArtifacts(msg) {
59
+ if (!msg.tool_calls)
60
+ return [];
61
+ const artifacts = [];
62
+ try {
63
+ const calls = JSON.parse(msg.tool_calls);
64
+ if (!Array.isArray(calls))
65
+ return [];
66
+ for (const call of calls) {
67
+ const args = call.input || call.function?.arguments || call.arguments || {};
68
+ let parsed = args;
69
+ if (typeof parsed === 'string') {
70
+ try {
71
+ parsed = JSON.parse(parsed);
72
+ }
73
+ catch {
74
+ continue;
75
+ }
76
+ }
77
+ if (typeof parsed !== 'object' || !parsed)
78
+ continue;
79
+ for (const key of ['path', 'file', 'filePath', 'file_path']) {
80
+ const val = parsed[key];
81
+ if (typeof val === 'string' && val.startsWith('/')) {
82
+ artifacts.push(val);
83
+ }
84
+ }
85
+ }
86
+ }
87
+ catch {
88
+ // Malformed JSON — skip
89
+ }
90
+ return artifacts;
91
+ }
92
+ /**
93
+ * Truncate text to maxChars with head+tail preservation.
94
+ * head = 60% of budget, tail = 40%.
95
+ */
96
+ function truncateHeadTail(text, maxChars) {
97
+ if (text.length <= maxChars)
98
+ return text;
99
+ const headLen = Math.floor(maxChars * 0.6);
100
+ const tailLen = maxChars - headLen - 5; // 5 for " ... "
101
+ return text.slice(0, headLen) + ' ... ' + text.slice(text.length - tailLen);
102
+ }
103
+ /**
104
+ * Parse the message_count stored in a knowledge source_ref or metadata.
105
+ * source_ref format: "topic:<id>" — but we need to find message_count
106
+ * from when the synthesis was stored. We store it in the content itself
107
+ * as a comment, or we can read from the knowledge row's source_ref.
108
+ *
109
+ * Strategy: embed last message count in sourceRef as "topic:<id>:mc:<count>"
110
+ */
111
+ function parseStoredMessageCount(sourceRef) {
112
+ if (!sourceRef)
113
+ return 0;
114
+ const match = sourceRef.match(/:mc:(\d+)$/);
115
+ return match ? parseInt(match[1], 10) : 0;
116
+ }
117
+ function escapeLike(value) {
118
+ return value.replace(/[\\%_]/g, match => `\\${match}`);
119
+ }
120
+ // ─── TopicSynthesizer ───────────────────────────────────────────
121
+ export class TopicSynthesizer {
122
+ libraryDb;
123
+ getMessageDb;
124
+ config;
125
+ effectiveConfig;
126
+ constructor(libraryDb, getMessageDb, config) {
127
+ this.libraryDb = libraryDb;
128
+ this.getMessageDb = getMessageDb;
129
+ this.config = config;
130
+ this.effectiveConfig = {
131
+ SYNTHESIS_STALE_MINUTES: config?.SYNTHESIS_STALE_MINUTES ?? SYNTHESIS_STALE_MINUTES,
132
+ SYNTHESIS_MIN_MESSAGES: config?.SYNTHESIS_MIN_MESSAGES ?? SYNTHESIS_MIN_MESSAGES,
133
+ SYNTHESIS_REGROWTH_THRESHOLD: config?.SYNTHESIS_REGROWTH_THRESHOLD ?? SYNTHESIS_REGROWTH_THRESHOLD,
134
+ SYNTHESIS_MAX_SUMMARY_CHARS: config?.SYNTHESIS_MAX_SUMMARY_CHARS ?? SYNTHESIS_MAX_SUMMARY_CHARS,
135
+ SYNTHESIS_MAX_DECISIONS: config?.SYNTHESIS_MAX_DECISIONS ?? SYNTHESIS_MAX_DECISIONS,
136
+ SYNTHESIS_MAX_QUESTIONS: config?.SYNTHESIS_MAX_QUESTIONS ?? SYNTHESIS_MAX_QUESTIONS,
137
+ LINT_FREQUENCY: config?.LINT_FREQUENCY ?? LINT_FREQUENCY,
138
+ LINT_STALE_DAYS: config?.LINT_STALE_DAYS ?? LINT_STALE_DAYS,
139
+ };
140
+ }
141
+ /**
142
+ * Run one synthesis pass for an agent.
143
+ * Finds stale topics, synthesizes wiki pages, writes to knowledge table.
144
+ */
145
+ tick(agentId) {
146
+ const result = {
147
+ topicsSynthesized: 0,
148
+ topicsSkipped: 0,
149
+ knowledgeEntriesWritten: 0,
150
+ topicIdsResolved: 0,
151
+ topicsWithoutResolvedIds: 0,
152
+ topicsWithoutMessages: 0,
153
+ };
154
+ const cfg = this.effectiveConfig;
155
+ const staleThresholdMinutes = cfg.SYNTHESIS_STALE_MINUTES;
156
+ // Query stale topics for this agent
157
+ // "Stale" = updated_at older than SYNTHESIS_STALE_MINUTES ago
158
+ let staleTopics;
159
+ try {
160
+ staleTopics = this.libraryDb.prepare(`
161
+ SELECT * FROM topics
162
+ WHERE agent_id = ?
163
+ AND message_count >= ?
164
+ AND updated_at < datetime('now', '-' || ? || ' minutes')
165
+ -- safe: staleThresholdMinutes is a validated integer
166
+ ORDER BY updated_at ASC
167
+ `).all(agentId, cfg.SYNTHESIS_MIN_MESSAGES, Math.floor(staleThresholdMinutes));
168
+ }
169
+ catch {
170
+ return result;
171
+ }
172
+ if (staleTopics.length === 0)
173
+ return result;
174
+ const knowledgeStore = new KnowledgeStore(this.libraryDb);
175
+ for (const topic of staleTopics) {
176
+ // Check if existing synthesis exists
177
+ const existing = knowledgeStore.get(agentId, 'topic-synthesis', topic.name);
178
+ if (existing) {
179
+ // Only re-synthesize if message_count has grown by >= threshold
180
+ const storedMc = parseStoredMessageCount(existing.sourceRef);
181
+ const growth = topic.message_count - storedMc;
182
+ if (growth < cfg.SYNTHESIS_REGROWTH_THRESHOLD) {
183
+ result.topicsSkipped++;
184
+ continue;
185
+ }
186
+ }
187
+ // Get messages for this topic from per-agent messages.db
188
+ const messageDb = this.getMessageDb(agentId);
189
+ if (!messageDb) {
190
+ result.topicsSkipped++;
191
+ continue;
192
+ }
193
+ const resolvedTopicIds = this.resolveMessageTopicIds(messageDb, topic);
194
+ result.topicIdsResolved += resolvedTopicIds.length;
195
+ if (resolvedTopicIds.length === 0) {
196
+ result.topicsWithoutResolvedIds++;
197
+ result.topicsSkipped++;
198
+ continue;
199
+ }
200
+ let messages;
201
+ try {
202
+ messages = this.loadTopicMessages(messageDb, topic, resolvedTopicIds);
203
+ }
204
+ catch {
205
+ result.topicsSkipped++;
206
+ continue;
207
+ }
208
+ if (messages.length === 0) {
209
+ result.topicsWithoutMessages++;
210
+ result.topicsSkipped++;
211
+ continue;
212
+ }
213
+ // Build synthesis
214
+ const content = this.synthesizeTopic(topic, messages, cfg);
215
+ // Upsert into knowledge table
216
+ const sourceRef = `topic:${topic.id}:mc:${topic.message_count}`;
217
+ knowledgeStore.upsert(agentId, 'topic-synthesis', topic.name, content, {
218
+ sourceType: 'synthesizer',
219
+ sourceRef,
220
+ });
221
+ result.topicsSynthesized++;
222
+ result.knowledgeEntriesWritten++;
223
+ }
224
+ return result;
225
+ }
226
+ /**
227
+ * Resolve a library topic to message-db topic ids.
228
+ *
229
+ * Library topics use integer ids and aggregate per agent/name. Message DBs
230
+ * use UUID topic ids scoped to sessions. Preserve the legacy direct-id path
231
+ * for older data, then bridge current data by case-insensitive topic name.
232
+ */
233
+ resolveMessageTopicIds(messageDb, topic) {
234
+ const ids = new Set([String(topic.id)]);
235
+ try {
236
+ const rows = messageDb.prepare(`
237
+ SELECT id FROM topics WHERE lower(name) = lower(?) ORDER BY last_active_at ASC
238
+ `).all(topic.name);
239
+ for (const row of rows) {
240
+ if (row.id)
241
+ ids.add(String(row.id));
242
+ }
243
+ }
244
+ catch {
245
+ // Older message DBs may not have the per-session topics table. In that
246
+ // case the legacy direct-id fallback above is the only valid resolver.
247
+ }
248
+ return [...ids];
249
+ }
250
+ /**
251
+ * Load source messages for a library topic.
252
+ *
253
+ * Primary path uses session topic ids. Fallback path mirrors the background
254
+ * indexer's topic detector because library topics are created from message
255
+ * content, not from SessionTopicMap UUID names.
256
+ */
257
+ loadTopicMessages(messageDb, topic, resolvedTopicIds) {
258
+ const byId = (() => {
259
+ try {
260
+ const placeholders = resolvedTopicIds.map(() => '?').join(', ');
261
+ return messageDb.prepare(`
262
+ SELECT * FROM messages WHERE topic_id IN (${placeholders}) ORDER BY created_at ASC
263
+ `).all(...resolvedTopicIds);
264
+ }
265
+ catch {
266
+ return [];
267
+ }
268
+ })();
269
+ const byContent = this.loadMessagesByDetectedTopic(messageDb, topic);
270
+ const seen = new Set();
271
+ const merged = [];
272
+ for (const msg of [...byId, ...byContent]) {
273
+ if (seen.has(msg.id))
274
+ continue;
275
+ seen.add(msg.id);
276
+ merged.push(msg);
277
+ }
278
+ return merged.sort((a, b) => String(a.created_at).localeCompare(String(b.created_at)));
279
+ }
280
+ loadMessagesByDetectedTopic(messageDb, topic) {
281
+ const topicName = topic.name.toLowerCase();
282
+ const limit = Math.max(topic.message_count * 3, topic.message_count, this.effectiveConfig.SYNTHESIS_MIN_MESSAGES);
283
+ if (topicName === 'infrastructure') {
284
+ return messageDb.prepare(`
285
+ SELECT * FROM messages
286
+ WHERE text_content IS NOT NULL
287
+ AND (
288
+ lower(text_content) LIKE '%redis%'
289
+ OR lower(text_content) LIKE '%sqlite%'
290
+ OR lower(text_content) LIKE '%database%'
291
+ OR lower(text_content) LIKE '%migration%'
292
+ OR lower(text_content) LIKE '%deployment%'
293
+ OR lower(text_content) LIKE '%docker%'
294
+ OR lower(text_content) LIKE '%nginx%'
295
+ )
296
+ ORDER BY created_at ASC
297
+ LIMIT ?
298
+ `).all(limit);
299
+ }
300
+ if (topicName === 'security') {
301
+ return messageDb.prepare(`
302
+ SELECT * FROM messages
303
+ WHERE text_content IS NOT NULL
304
+ AND (
305
+ lower(text_content) LIKE '%security%'
306
+ OR lower(text_content) LIKE '%auth%'
307
+ OR lower(text_content) LIKE '%permission%'
308
+ OR lower(text_content) LIKE '%access%'
309
+ OR lower(text_content) LIKE '%token%'
310
+ OR lower(text_content) LIKE '%credential%'
311
+ )
312
+ ORDER BY created_at ASC
313
+ LIMIT ?
314
+ `).all(limit);
315
+ }
316
+ return messageDb.prepare(`
317
+ SELECT * FROM messages
318
+ WHERE text_content IS NOT NULL
319
+ AND lower(text_content) LIKE ? ESCAPE '\\'
320
+ ORDER BY created_at ASC
321
+ LIMIT ?
322
+ `).all(`%${escapeLike(topicName)}%`, limit);
323
+ }
324
+ /**
325
+ * Synthesize a wiki page for a topic from its messages.
326
+ */
327
+ synthesizeTopic(topic, messages, cfg) {
328
+ // Classify + score all messages
329
+ const scored = messages.map(msg => ({
330
+ msg,
331
+ classification: classifyContentType(msg.text_content || ''),
332
+ score: keystoneScore(msg),
333
+ }));
334
+ // Extract decisions: classified as decision with confidence >= 0.7, top N
335
+ const decisions = scored
336
+ .filter(m => m.classification.type === 'decision' && m.classification.confidence >= 0.7)
337
+ .sort((a, b) => b.score - a.score)
338
+ .slice(0, cfg.SYNTHESIS_MAX_DECISIONS);
339
+ // Extract open questions: classified as discussion + ends with ?, no decision follow-up within 5 msgs
340
+ const openQuestions = [];
341
+ for (let i = 0; i < scored.length; i++) {
342
+ const item = scored[i];
343
+ const text = item.msg.text_content || '';
344
+ // Question detection: ends with ? OR is a discussion-type with question keywords
345
+ const isQuestion = /\?\s*$/.test(text.trim()) ||
346
+ (item.classification.type === 'discussion' && /\b(why|how|what|when|where|should|could|would|can|is there)\b/i.test(text));
347
+ if (!isQuestion)
348
+ continue;
349
+ // Check if there's a decision-type response within next 5 messages
350
+ const followup = scored.slice(i + 1, i + 6);
351
+ const hasDecisionFollowup = followup.some(f => f.classification.type === 'decision');
352
+ if (!hasDecisionFollowup) {
353
+ openQuestions.push(item);
354
+ if (openQuestions.length >= cfg.SYNTHESIS_MAX_QUESTIONS)
355
+ break;
356
+ }
357
+ }
358
+ // Extract artifacts from tool_calls
359
+ const allArtifacts = new Set();
360
+ for (const { msg } of scored) {
361
+ for (const artifact of extractArtifacts(msg)) {
362
+ allArtifacts.add(artifact);
363
+ }
364
+ }
365
+ // Extract participants: unique agent_ids
366
+ const participants = [...new Set(messages.map(m => m.agent_id).filter(Boolean))];
367
+ // Build summary: top-3 scored messages, concatenated and truncated
368
+ const top3 = [...scored]
369
+ .sort((a, b) => b.score - a.score)
370
+ .slice(0, 3)
371
+ .map(m => (m.msg.text_content || '').trim())
372
+ .filter(t => t.length > 0)
373
+ .join(' ');
374
+ const summary = truncateHeadTail(top3, cfg.SYNTHESIS_MAX_SUMMARY_CHARS);
375
+ // Build the wiki page markdown
376
+ const lines = [];
377
+ lines.push(`# ${topic.name}`);
378
+ lines.push('');
379
+ lines.push(`**Status:** ${topic.status}`);
380
+ lines.push(`**Last activity:** ${topic.updated_at}`);
381
+ lines.push(`**Messages:** ${topic.message_count}`);
382
+ lines.push(`**Participants:** ${participants.join(', ') || 'unknown'}`);
383
+ lines.push('');
384
+ lines.push('## Summary');
385
+ lines.push(summary || '_No summary available_');
386
+ lines.push('');
387
+ lines.push('## Key Decisions');
388
+ if (decisions.length > 0) {
389
+ for (const { msg } of decisions) {
390
+ const text = (msg.text_content || '').trim();
391
+ const first = text.split('\n')[0].slice(0, 200);
392
+ lines.push(`- ${first}`);
393
+ }
394
+ }
395
+ else {
396
+ lines.push('_No key decisions recorded_');
397
+ }
398
+ lines.push('');
399
+ lines.push('## Open Questions');
400
+ if (openQuestions.length > 0) {
401
+ for (const { msg } of openQuestions) {
402
+ const text = (msg.text_content || '').trim();
403
+ const first = text.split('\n')[0].slice(0, 200);
404
+ lines.push(`- ${first}`);
405
+ }
406
+ }
407
+ else {
408
+ lines.push('_No open questions_');
409
+ }
410
+ lines.push('');
411
+ lines.push('## Artifacts');
412
+ if (allArtifacts.size > 0) {
413
+ for (const artifact of allArtifacts) {
414
+ lines.push(`- ${artifact}`);
415
+ }
416
+ }
417
+ else {
418
+ lines.push('_No artifacts recorded_');
419
+ }
420
+ lines.push('');
421
+ lines.push('## Cross-References');
422
+ lines.push('_Auto-generated — see knowledge graph for links_');
423
+ return lines.join('\n');
424
+ }
425
+ }
426
+ //# sourceMappingURL=topic-synthesizer.js.map
@@ -0,0 +1,63 @@
1
+ /**
2
+ * hypermem Trigger Registry (W5)
3
+ *
4
+ * Centralizes ACA collection trigger definitions with owner/category metadata.
5
+ * Extracted from compositor.ts for independent testability and auditability.
6
+ *
7
+ * - TRIGGER_REGISTRY_VERSION: semver string for the registry schema
8
+ * - TRIGGER_REGISTRY_HASH: 12-char SHA-256 of (collection, keywords) per entry
9
+ * - logRegistryStartup(): emits version + hash on first Compositor boot
10
+ */
11
+ /**
12
+ * A trigger definition maps a collection to the conversation signals that
13
+ * indicate it should be queried. When any keyword matches the user's latest
14
+ * message, the compositor fetches relevant chunks from that collection.
15
+ *
16
+ * Centralizing trigger logic here (not in workspace stubs) means:
17
+ * - One update propagates to all agents
18
+ * - Stubs become documentation, not code
19
+ * - Trigger logic can be tested independently
20
+ *
21
+ * W5 additions: owner, category, description (all optional — backward compat).
22
+ */
23
+ export interface CollectionTrigger {
24
+ /** Collection path: governance/policy, identity/job, etc. */
25
+ collection: string;
26
+ /** Keywords that trigger this collection (case-insensitive) */
27
+ keywords: string[];
28
+ /** Max tokens to inject from this collection */
29
+ maxTokens?: number;
30
+ /** Max chunks to retrieve */
31
+ maxChunks?: number;
32
+ /** Which agent/team owns this trigger set */
33
+ owner?: string;
34
+ /** Logical grouping: 'governance' | 'identity' | 'memory' | 'operations' */
35
+ category?: string;
36
+ /** Human-readable purpose */
37
+ description?: string;
38
+ }
39
+ export declare const TRIGGER_REGISTRY_VERSION = "1.0.0";
40
+ /**
41
+ * Default trigger registry for standard ACA collections.
42
+ * Covers the core ACA offload use case from agent6's spec.
43
+ */
44
+ export declare const TRIGGER_REGISTRY: CollectionTrigger[];
45
+ /** Backward-compat alias — same reference as TRIGGER_REGISTRY */
46
+ export declare const DEFAULT_TRIGGERS: CollectionTrigger[];
47
+ /**
48
+ * 12-char SHA-256 of the registry's (collection, keywords) pairs.
49
+ * Changes when trigger definitions change; stable across metadata-only edits.
50
+ * Computed once at module load.
51
+ */
52
+ export declare const TRIGGER_REGISTRY_HASH: string;
53
+ /**
54
+ * Match a user message against the trigger registry.
55
+ * Returns triggered collections (deduplicated, ordered by trigger specificity).
56
+ */
57
+ export declare function matchTriggers(userMessage: string, triggers: CollectionTrigger[]): CollectionTrigger[];
58
+ /**
59
+ * Emit a one-line startup log with registry version, hash, and entry count.
60
+ * Call once per process via the Compositor constructor guard.
61
+ */
62
+ export declare function logRegistryStartup(): void;
63
+ //# sourceMappingURL=trigger-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-registry.d.ts","sourceRoot":"","sources":["../src/trigger-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,iBAAiB;IAChC,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,EAyH/C,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,gBAAgB,qBAAmB,CAAC;AAIjD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAGrB,CAAC;AAIhB;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAAE,GAC5B,iBAAiB,EAAE,CAMrB;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * hypermem Trigger Registry (W5)
3
+ *
4
+ * Centralizes ACA collection trigger definitions with owner/category metadata.
5
+ * Extracted from compositor.ts for independent testability and auditability.
6
+ *
7
+ * - TRIGGER_REGISTRY_VERSION: semver string for the registry schema
8
+ * - TRIGGER_REGISTRY_HASH: 12-char SHA-256 of (collection, keywords) per entry
9
+ * - logRegistryStartup(): emits version + hash on first Compositor boot
10
+ */
11
+ import { createHash } from 'node:crypto';
12
+ // ─── Registry ─────────────────────────────────────────────────
13
+ export const TRIGGER_REGISTRY_VERSION = '1.0.0';
14
+ /**
15
+ * Default trigger registry for standard ACA collections.
16
+ * Covers the core ACA offload use case from agent6's spec.
17
+ */
18
+ export const TRIGGER_REGISTRY = [
19
+ {
20
+ collection: 'governance/policy',
21
+ keywords: [
22
+ 'escalat', 'policy', 'decision state', 'green', 'yellow', 'red',
23
+ 'council procedure', 'naming', 'mandate', 'compliance', 'governance',
24
+ 'override', 'human review', 'irreversible', 'turn protocol',
25
+ 'response contract', 'red lines', 'external action', 'public action',
26
+ 'approval', 'authorization', 'single-name', 'single name',
27
+ 'config change', 'infra change', 'backup', 'rollback', 'credential',
28
+ ],
29
+ maxTokens: 1500,
30
+ maxChunks: 3,
31
+ owner: 'council',
32
+ category: 'governance',
33
+ description: 'Governance policy: escalation triggers, decision states, naming rules, compliance mandates',
34
+ },
35
+ {
36
+ collection: 'governance/charter',
37
+ keywords: [
38
+ 'charter', 'mission', 'director', 'org', 'reporting', 'boundary',
39
+ 'delegation', 'authority', 'jurisdiction', 'authority ceiling',
40
+ 'scope ceiling', 'cross-charter', 'scaffolding', 'new agent',
41
+ 'new role', 'operator authority',
42
+ ],
43
+ maxTokens: 1000,
44
+ maxChunks: 2,
45
+ owner: 'council',
46
+ category: 'governance',
47
+ description: 'Organizational charter: mission, director roles, authority boundaries, delegation scope',
48
+ },
49
+ {
50
+ collection: 'governance/comms',
51
+ keywords: [
52
+ 'message', 'send', 'tier 1', 'tier 2', 'tier 3', 'async', 'dispatch',
53
+ 'sessions_send', 'inter-agent', 'protocol', 'comms', 'ping', 'notify',
54
+ 'communication tiers', 'reply_to', 'steer', 'broadcast', 'no reply needed',
55
+ ],
56
+ maxTokens: 800,
57
+ maxChunks: 2,
58
+ owner: 'council',
59
+ category: 'governance',
60
+ description: 'Inter-agent communication protocols: message tiers, dispatch rules, session messaging',
61
+ },
62
+ {
63
+ collection: 'operations/agents',
64
+ keywords: [
65
+ 'boot', 'startup', 'bootstrap', 'heartbeat', 'workqueue', 'checkpoint',
66
+ 'session start', 'roll call', 'memory recall', 'dispatch inbox',
67
+ 'static context', 'dynamic context', 'prompt file', 'context split',
68
+ 'hypermem context',
69
+ ],
70
+ maxTokens: 800,
71
+ maxChunks: 2,
72
+ owner: 'agent1',
73
+ category: 'operations',
74
+ description: 'Agent operational procedures: boot sequence, heartbeat, work queue, session startup',
75
+ },
76
+ {
77
+ collection: 'identity/job',
78
+ keywords: [
79
+ 'deliberat', 'council round', 'vote', 'response contract', 'rating',
80
+ 'first response', 'second response', 'handoff', 'floor open',
81
+ 'performance', 'output discipline', 'assessment',
82
+ ],
83
+ maxTokens: 1200,
84
+ maxChunks: 3,
85
+ owner: 'council',
86
+ category: 'identity',
87
+ description: 'Agent job definitions: council deliberation roles, response contracts, performance standards',
88
+ },
89
+ {
90
+ collection: 'identity/motivations',
91
+ keywords: [
92
+ 'motivation', 'fear', 'tension', 'why do you', 'how do you feel',
93
+ 'drives', 'values',
94
+ ],
95
+ maxTokens: 600,
96
+ maxChunks: 1,
97
+ owner: 'council',
98
+ category: 'identity',
99
+ description: 'Agent motivations and values: intrinsic drivers, tensions, emotional context',
100
+ },
101
+ {
102
+ collection: 'memory/decisions',
103
+ keywords: [
104
+ 'remember', 'decision', 'we decided', 'previously', 'last time',
105
+ 'history', 'past', 'earlier', 'recall', 'context',
106
+ ],
107
+ maxTokens: 1500,
108
+ maxChunks: 4,
109
+ owner: 'agent1',
110
+ category: 'memory',
111
+ description: 'Decision history: past choices, previously agreed approaches, recalled context',
112
+ },
113
+ {
114
+ collection: 'identity/soul',
115
+ keywords: [
116
+ 'who are you', 'your role', 'your purpose', 'your domain', 'your job',
117
+ 'identity', 'soul', 'persona', 'what do you do', 'how do you work',
118
+ 'your principles', 'your values', 'your seat',
119
+ ],
120
+ maxTokens: 1200,
121
+ maxChunks: 2,
122
+ owner: 'council',
123
+ category: 'identity',
124
+ description: 'Agent soul and persona: role definition, domain ownership, core principles',
125
+ },
126
+ {
127
+ collection: 'operations/tools',
128
+ keywords: [
129
+ 'tool', 'config', 'command', 'cli', 'path', 'deploy', 'restart',
130
+ 'openclaw', 'session_status', 'model', 'plugin', 'workspace path',
131
+ 'how to', 'where is', 'which command', 'quick ref',
132
+ ],
133
+ maxTokens: 1200,
134
+ maxChunks: 3,
135
+ owner: 'agent1',
136
+ category: 'operations',
137
+ description: 'Agent tooling reference: CLI commands, config paths, deployment procedures, quick reference',
138
+ },
139
+ ];
140
+ /** Backward-compat alias — same reference as TRIGGER_REGISTRY */
141
+ export const DEFAULT_TRIGGERS = TRIGGER_REGISTRY;
142
+ // ─── Registry Hash ────────────────────────────────────────────
143
+ /**
144
+ * 12-char SHA-256 of the registry's (collection, keywords) pairs.
145
+ * Changes when trigger definitions change; stable across metadata-only edits.
146
+ * Computed once at module load.
147
+ */
148
+ export const TRIGGER_REGISTRY_HASH = createHash('sha256')
149
+ .update(JSON.stringify(TRIGGER_REGISTRY.map(t => ({ collection: t.collection, keywords: t.keywords }))))
150
+ .digest('hex')
151
+ .slice(0, 12);
152
+ // ─── matchTriggers ────────────────────────────────────────────
153
+ /**
154
+ * Match a user message against the trigger registry.
155
+ * Returns triggered collections (deduplicated, ordered by trigger specificity).
156
+ */
157
+ export function matchTriggers(userMessage, triggers) {
158
+ if (!userMessage)
159
+ return [];
160
+ const lower = userMessage.toLowerCase();
161
+ return triggers.filter(t => t.keywords.some(kw => lower.includes(kw.toLowerCase())));
162
+ }
163
+ // ─── Startup Log ──────────────────────────────────────────────
164
+ /**
165
+ * Emit a one-line startup log with registry version, hash, and entry count.
166
+ * Call once per process via the Compositor constructor guard.
167
+ */
168
+ export function logRegistryStartup() {
169
+ console.log(`[hypermem:triggers] version=${TRIGGER_REGISTRY_VERSION} hash=${TRIGGER_REGISTRY_HASH} entries=${TRIGGER_REGISTRY.length}`);
170
+ }
171
+ //# sourceMappingURL=trigger-registry.js.map