trellis 3.1.35 → 3.2.0

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 (422) hide show
  1. package/CHANGELOG.md +16 -5
  2. package/README.md +19 -2
  3. package/bin/trellis.mjs +2 -75
  4. package/dist/better-sqlite-backend-2P4F6AOJ.js +209 -0
  5. package/dist/{better-sqlite-backend-ahx5p0br.js → better-sqlite-backend-PII64VE6.js} +37 -25
  6. package/dist/better-sqlite-backend-VUBVQ7SN.js +209 -0
  7. package/dist/better-sqlite-backend-Y3AQN65E.js +159 -0
  8. package/dist/better-sqlite-backend-Y3M7DXOX.js +159 -0
  9. package/dist/boot-middleware-FJDGVUM4.js +9 -0
  10. package/dist/boot-middleware-MHLHFCUC.js +9 -0
  11. package/dist/boot-middleware-MLJUTLUM.js +9 -0
  12. package/dist/boot-middleware-ZZPDZNYR.js +9 -0
  13. package/dist/{index-wncptktd.js → chunk-276LKLZR.js} +126 -59
  14. package/dist/chunk-2BRTCEHB.js +143 -0
  15. package/dist/chunk-2CX5UCRV.js +111 -0
  16. package/dist/chunk-2ESYSVXG.js +48 -0
  17. package/dist/{index-yp88he8n.js → chunk-2I5JU73Y.js} +88 -64
  18. package/dist/{index-w5wccer3.js → chunk-2UNSRRNB.js} +10 -5
  19. package/dist/{index-4wxa8xz4.js → chunk-335UEHQR.js} +158 -22
  20. package/dist/chunk-36VSSTL7.js +357 -0
  21. package/dist/chunk-3ETIIPPB.js +1077 -0
  22. package/dist/chunk-3GDRZTAW.js +45 -0
  23. package/dist/chunk-44FFQKQX.js +142 -0
  24. package/dist/chunk-4CF2L46N.js +29 -0
  25. package/dist/chunk-4HYPLFJD.js +150 -0
  26. package/dist/chunk-4XIVMVHC.js +361 -0
  27. package/dist/chunk-5CINODKT.js +41 -0
  28. package/dist/chunk-5ESGWJ5L.js +45 -0
  29. package/dist/chunk-5FGLQGMF.js +1676 -0
  30. package/dist/chunk-5IQZFITY.js +357 -0
  31. package/dist/{index-wt8rz4gn.js → chunk-5JWFAQDW.js} +41 -23
  32. package/dist/{index-7pjz3tsy.js → chunk-62UHTVU3.js} +50 -16
  33. package/dist/{index-h32txmxe.js → chunk-66UJQT2I.js} +6 -13
  34. package/dist/chunk-6CTA6MCE.js +340 -0
  35. package/dist/{index-4cdr7x2x.js → chunk-6RNNVOAS.js} +178 -109
  36. package/dist/chunk-6X23PZ6H.js +969 -0
  37. package/dist/chunk-7C7LL6MB.js +315 -0
  38. package/dist/chunk-7F4HM3JG.js +394 -0
  39. package/dist/chunk-7KJ7T4D3.js +910 -0
  40. package/dist/chunk-7QQQNUB5.js +92 -0
  41. package/dist/{index-53f3b8p8.js → chunk-7QWJBS72.js} +210 -165
  42. package/dist/chunk-7R36OZK3.js +957 -0
  43. package/dist/chunk-7UPKCOHE.js +946 -0
  44. package/dist/chunk-7WQGTFVJ.js +7434 -0
  45. package/dist/chunk-A3BONW34.js +35 -0
  46. package/dist/chunk-AHMDVHBL.js +141 -0
  47. package/dist/chunk-AW6A4OZY.js +171 -0
  48. package/dist/chunk-B3ZIFA2O.js +2240 -0
  49. package/dist/chunk-BJ5EKCJ5.js +458 -0
  50. package/dist/chunk-BJ7EZ7FP.js +145 -0
  51. package/dist/chunk-BQBUVMRN.js +171 -0
  52. package/dist/chunk-BRGYDO7D.js +223 -0
  53. package/dist/chunk-BXSTJVE3.js +67 -0
  54. package/dist/chunk-C5KPSEDN.js +359 -0
  55. package/dist/chunk-CCTNYTUC.js +940 -0
  56. package/dist/chunk-CYQ2OVD2.js +35 -0
  57. package/dist/chunk-DDAK7YOE.js +299 -0
  58. package/dist/chunk-DRILKBY6.js +965 -0
  59. package/dist/chunk-DXE24HNN.js +45 -0
  60. package/dist/chunk-E7ICUNW7.js +945 -0
  61. package/dist/chunk-EAL2PUOE.js +10022 -0
  62. package/dist/chunk-ELT7MLZB.js +109 -0
  63. package/dist/chunk-EO3J7GRP.js +0 -0
  64. package/dist/chunk-EWEIRF6G.js +171 -0
  65. package/dist/chunk-F5VDGQJC.js +120 -0
  66. package/dist/chunk-FCPL3IEQ.js +98 -0
  67. package/dist/{index-nq520y6k.js → chunk-FDPKYSV7.js} +43 -31
  68. package/dist/chunk-FES3TC24.js +171 -0
  69. package/dist/chunk-FF36CQHZ.js +61 -0
  70. package/dist/chunk-FKQO5A3H.js +35 -0
  71. package/dist/chunk-FOWKR5TW.js +129 -0
  72. package/dist/chunk-FZVCXDYW.js +150 -0
  73. package/dist/chunk-G3XIHPSQ.js +361 -0
  74. package/dist/chunk-GD5QJXSS.js +98 -0
  75. package/dist/chunk-GFZCJ4EH.js +108 -0
  76. package/dist/chunk-GKJLYLVU.js +359 -0
  77. package/dist/chunk-GLM4HGN4.js +55 -0
  78. package/dist/chunk-GNXHXNVQ.js +113 -0
  79. package/dist/chunk-GSR6ILTM.js +277 -0
  80. package/dist/chunk-GWRIMRSX.js +45 -0
  81. package/dist/chunk-H72UW2HJ.js +45 -0
  82. package/dist/chunk-HGI74PXB.js +7417 -0
  83. package/dist/chunk-HGRA37LO.js +145 -0
  84. package/dist/chunk-HO4TURXW.js +1078 -0
  85. package/dist/chunk-HXSRQO3L.js +145 -0
  86. package/dist/chunk-IG2X2BVO.js +373 -0
  87. package/dist/chunk-IIJVDD54.js +373 -0
  88. package/dist/chunk-IUWVEEOX.js +145 -0
  89. package/dist/chunk-IX4BBOIT.js +394 -0
  90. package/dist/{index-yhwjgfvj.js → chunk-IXU4RMQM.js} +67 -60
  91. package/dist/chunk-J3WYZO3Q.js +211 -0
  92. package/dist/{index-vkpkfwhq.js → chunk-J6OUIION.js} +234 -194
  93. package/dist/{index-xzym9w0m.js → chunk-JA7AIHRK.js} +12 -7
  94. package/dist/chunk-JUEMDWLU.js +233 -0
  95. package/dist/chunk-K46RNFDE.js +171 -0
  96. package/dist/chunk-KAGU2XMY.js +359 -0
  97. package/dist/chunk-KCVYJNVX.js +394 -0
  98. package/dist/chunk-KFQGP6VL.js +33 -0
  99. package/dist/chunk-KKDRMIV6.js +419 -0
  100. package/dist/chunk-KQ4A2D2P.js +910 -0
  101. package/dist/chunk-KSU2GW22.js +958 -0
  102. package/dist/chunk-KYLIQ3YI.js +399 -0
  103. package/dist/chunk-KZYJJIRN.js +946 -0
  104. package/dist/chunk-LFOX744K.js +96 -0
  105. package/dist/{index-rv1p47gp.js → chunk-LHOVJEWR.js} +2756 -2307
  106. package/dist/{index-h9e2efx4.js → chunk-LNUIGRDZ.js} +71 -55
  107. package/dist/chunk-LOPXTPF3.js +120 -0
  108. package/dist/chunk-LZR3VIFU.js +907 -0
  109. package/dist/chunk-MBNBTJCR.js +394 -0
  110. package/dist/chunk-MCKGQKYU.js +15 -0
  111. package/dist/{index-skhn0agf.js → chunk-MLC5BUYO.js} +19 -20
  112. package/dist/chunk-MPXUVGT3.js +104 -0
  113. package/dist/chunk-MU6EOS6F.js +0 -0
  114. package/dist/chunk-MWRQ2TXT.js +357 -0
  115. package/dist/{index-nzb3am4f.js → chunk-NO73OK2I.js} +43 -21
  116. package/dist/chunk-NPE2YJHK.js +394 -0
  117. package/dist/{index-xhcp6xrn.js → chunk-NSDXU6QX.js} +654 -500
  118. package/dist/chunk-NXIRDSZ6.js +145 -0
  119. package/dist/chunk-NZWFNHCS.js +407 -0
  120. package/dist/chunk-O2AV5WMN.js +48 -0
  121. package/dist/{index-h7zxhhhh.js → chunk-OB4CMMX6.js} +46 -38
  122. package/dist/chunk-OBKU74FU.js +7411 -0
  123. package/dist/chunk-OQNDWRDE.js +145 -0
  124. package/dist/chunk-OVWAJMB6.js +394 -0
  125. package/dist/chunk-PDHLBTTD.js +45 -0
  126. package/dist/chunk-PEQNRKLG.js +210 -0
  127. package/dist/chunk-QERIS7QY.js +7403 -0
  128. package/dist/chunk-QHA2DM3C.js +373 -0
  129. package/dist/chunk-QLM4HSYC.js +45 -0
  130. package/dist/chunk-RSWUFTO2.js +857 -0
  131. package/dist/chunk-S2OT3TQJ.js +283 -0
  132. package/dist/chunk-S5PHSN5K.js +907 -0
  133. package/dist/chunk-SIAA4J6H.js +21 -0
  134. package/dist/chunk-SPSPV5BC.js +390 -0
  135. package/dist/chunk-SQBNLUIA.js +171 -0
  136. package/dist/chunk-STLN6A6B.js +355 -0
  137. package/dist/chunk-TCKXSOBP.js +123 -0
  138. package/dist/chunk-U7HV7GU2.js +17 -0
  139. package/dist/chunk-UBGUDMUV.js +59 -0
  140. package/dist/chunk-UGZHOGRA.js +39 -0
  141. package/dist/chunk-UICF66FS.js +359 -0
  142. package/dist/chunk-UK3EQREE.js +1078 -0
  143. package/dist/chunk-UPKPURVY.js +394 -0
  144. package/dist/chunk-URC74VCN.js +959 -0
  145. package/dist/chunk-USEINYUL.js +12 -0
  146. package/dist/{index-bmyt7k8n.js → chunk-UZRUP7QW.js} +12 -4
  147. package/dist/chunk-V3G7Q3QQ.js +102 -0
  148. package/dist/chunk-VDAKEOML.js +857 -0
  149. package/dist/chunk-VUJ6SA55.js +303 -0
  150. package/dist/chunk-VUJQLIML.js +141 -0
  151. package/dist/chunk-VWKLKLYB.js +267 -0
  152. package/dist/chunk-VYC3RZMK.js +277 -0
  153. package/dist/chunk-WMERMSWI.js +154 -0
  154. package/dist/chunk-WMR777PO.js +2213 -0
  155. package/dist/{index-n9f2qyh5.js → chunk-X46IECAC.js} +55 -33
  156. package/dist/chunk-X5FLTRUB.js +517 -0
  157. package/dist/chunk-X762XWVC.js +419 -0
  158. package/dist/chunk-XEN3OEYY.js +2234 -0
  159. package/dist/chunk-XMQ7G77X.js +260 -0
  160. package/dist/chunk-XZQ66K7A.js +124 -0
  161. package/dist/{index-w7ng765c.js → chunk-YCM7ZYEZ.js} +102 -49
  162. package/dist/chunk-YY3GF7DH.js +7411 -0
  163. package/dist/chunk-ZE5R3H4C.js +907 -0
  164. package/dist/chunk-ZHVI7BQN.js +1077 -0
  165. package/dist/chunk-ZMN5LUB7.js +7411 -0
  166. package/dist/chunk-ZUV4MD5U.js +94 -0
  167. package/dist/cli/errors.d.ts +6 -0
  168. package/dist/cli/errors.d.ts.map +1 -0
  169. package/dist/cli/examples.d.ts +23 -0
  170. package/dist/cli/examples.d.ts.map +1 -0
  171. package/dist/cli/index.d.ts.map +1 -1
  172. package/dist/cli/index.js +2338 -6190
  173. package/dist/client/index.d.ts +6 -1
  174. package/dist/client/index.d.ts.map +1 -1
  175. package/dist/client/index.js +41 -21
  176. package/dist/client/live.d.ts +67 -0
  177. package/dist/client/live.d.ts.map +1 -0
  178. package/dist/client/reactive.d.ts +31 -0
  179. package/dist/client/reactive.d.ts.map +1 -0
  180. package/dist/client/sdk.d.ts +26 -2
  181. package/dist/client/sdk.d.ts.map +1 -1
  182. package/dist/client/sdk.js +9 -0
  183. package/dist/client/vcs-client.d.ts +129 -0
  184. package/dist/client/vcs-client.d.ts.map +1 -0
  185. package/dist/cms/index.js +171 -163
  186. package/dist/{config-8hczw0rs.js → config-KMY6RRK3.js} +8 -9
  187. package/dist/config-PFTP67TR.js +19 -0
  188. package/dist/config-VDMK2DUJ.js +19 -0
  189. package/dist/core/computation/index.d.ts +5 -0
  190. package/dist/core/computation/index.d.ts.map +1 -0
  191. package/dist/core/computation/rollup.d.ts +18 -0
  192. package/dist/core/computation/rollup.d.ts.map +1 -0
  193. package/dist/core/index.d.ts +5 -0
  194. package/dist/core/index.d.ts.map +1 -1
  195. package/dist/core/index.js +168 -101
  196. package/dist/core/kernel/boot-middleware.d.ts +10 -0
  197. package/dist/core/kernel/boot-middleware.d.ts.map +1 -0
  198. package/dist/core/kernel/logic-middleware.d.ts +7 -1
  199. package/dist/core/kernel/logic-middleware.d.ts.map +1 -1
  200. package/dist/core/kernel/trellis-kernel.d.ts.map +1 -1
  201. package/dist/core/ontology/types.d.ts +5 -0
  202. package/dist/core/ontology/types.d.ts.map +1 -1
  203. package/dist/core/persist/better-sqlite-backend.d.ts +9 -2
  204. package/dist/core/persist/better-sqlite-backend.d.ts.map +1 -1
  205. package/dist/core/persist/factory.d.ts +6 -7
  206. package/dist/core/persist/factory.d.ts.map +1 -1
  207. package/dist/core/persist/factory.js +2 -3
  208. package/dist/core/persist/sqljs-backend.js +2 -3
  209. package/dist/db/index.d.ts +4 -1
  210. package/dist/db/index.d.ts.map +1 -1
  211. package/dist/db/index.js +69 -56
  212. package/dist/db/inspector.js +11 -19
  213. package/dist/decisions/index.js +9 -10
  214. package/dist/deploy-66EC752W.js +9 -0
  215. package/dist/deploy-SO7AFK6L.js +9 -0
  216. package/dist/embeddings/auto-embed.d.ts +2 -2
  217. package/dist/embeddings/auto-embed.d.ts.map +1 -1
  218. package/dist/embeddings/index.js +20 -22
  219. package/dist/embeddings/search.d.ts +2 -1
  220. package/dist/embeddings/search.d.ts.map +1 -1
  221. package/dist/embeddings/store.d.ts +25 -4
  222. package/dist/embeddings/store.d.ts.map +1 -1
  223. package/dist/engine-7GXBM4IT.js +7 -0
  224. package/dist/engine-NSR6BIF7.js +7 -0
  225. package/dist/engine.d.ts +32 -12
  226. package/dist/engine.d.ts.map +1 -1
  227. package/dist/factory-2P64OC7M.js +34 -0
  228. package/dist/factory-YP4ZZK5K.js +34 -0
  229. package/dist/import-AJLYHFIA.js +10 -0
  230. package/dist/import-UZEKXU3B.js +10 -0
  231. package/dist/index.js +102 -93
  232. package/dist/launch-explorer-AI6L2AWJ.js +91 -0
  233. package/dist/launch-explorer-HZ4ZJA4X.js +95 -0
  234. package/dist/links/index.js +24 -26
  235. package/dist/plugins/agent-memory/index.js +316 -0
  236. package/dist/plugins/idea-garden/index.js +165 -0
  237. package/dist/plugins/plan-approval/index.js +579 -0
  238. package/dist/plugins/proactive-watcher/index.js +194 -0
  239. package/dist/{index-2r4jxwnb.js → query-GJL3CVGN.js} +14 -15
  240. package/dist/query-MBJSK3EB.js +31 -0
  241. package/dist/query-TJHEVSKL.js +31 -0
  242. package/dist/query-WUIKOHPE.js +524 -0
  243. package/dist/query-XYLTJYSA.js +31 -0
  244. package/dist/react/index.js +39 -70
  245. package/dist/react/realtime.js +11 -0
  246. package/dist/react/schema-hooks.js +87 -0
  247. package/dist/realtime/broadcast-channel-transport.d.ts +43 -0
  248. package/dist/realtime/broadcast-channel-transport.d.ts.map +1 -0
  249. package/dist/realtime/durable-object-relay-transport.d.ts +96 -0
  250. package/dist/realtime/durable-object-relay-transport.d.ts.map +1 -0
  251. package/dist/realtime/index.d.ts +44 -0
  252. package/dist/realtime/index.d.ts.map +1 -0
  253. package/dist/realtime/index.js +40 -0
  254. package/dist/realtime/memory-hub.d.ts +32 -0
  255. package/dist/realtime/memory-hub.d.ts.map +1 -0
  256. package/dist/realtime/persistent-channel.d.ts +105 -0
  257. package/dist/realtime/persistent-channel.d.ts.map +1 -0
  258. package/dist/realtime/presence.d.ts +73 -0
  259. package/dist/realtime/presence.d.ts.map +1 -0
  260. package/dist/realtime/relay-persistence.d.ts +37 -0
  261. package/dist/realtime/relay-persistence.d.ts.map +1 -0
  262. package/dist/realtime/relay-persistence.js +107 -0
  263. package/dist/realtime/relay-server.d.ts +103 -0
  264. package/dist/realtime/relay-server.d.ts.map +1 -0
  265. package/dist/realtime/room.d.ts +98 -0
  266. package/dist/realtime/room.d.ts.map +1 -0
  267. package/dist/realtime/text.d.ts +73 -0
  268. package/dist/realtime/text.d.ts.map +1 -0
  269. package/dist/realtime/types.d.ts +89 -0
  270. package/dist/realtime/types.d.ts.map +1 -0
  271. package/dist/realtime/websocket-relay-transport.d.ts +28 -0
  272. package/dist/realtime/websocket-relay-transport.d.ts.map +1 -0
  273. package/dist/realtime.bundle.js +1100 -0
  274. package/dist/remote-manager-BLJZ6KF6.js +224 -0
  275. package/dist/{remote-manager-xvbg4230.js → remote-manager-BPYE46SI.js} +24 -15
  276. package/dist/remote-manager-FMESEAFA.js +224 -0
  277. package/dist/remote-manager-K2WZ5RHY.js +223 -0
  278. package/dist/remote-manager-SG545WNY.js +224 -0
  279. package/dist/remote-manager-SG5PQKCH.js +224 -0
  280. package/dist/remote-manager-WGP6MIQZ.js +224 -0
  281. package/dist/scaffold/write.d.ts.map +1 -1
  282. package/dist/schema/define.d.ts +137 -0
  283. package/dist/schema/define.d.ts.map +1 -0
  284. package/dist/schema/entity-projection.d.ts +34 -0
  285. package/dist/schema/entity-projection.d.ts.map +1 -0
  286. package/dist/schema/eql.d.ts +46 -0
  287. package/dist/schema/eql.d.ts.map +1 -0
  288. package/dist/schema/index.d.ts +21 -0
  289. package/dist/schema/index.d.ts.map +1 -0
  290. package/dist/schema/index.js +45 -0
  291. package/dist/schema/kernel-resolve.d.ts +21 -0
  292. package/dist/schema/kernel-resolve.d.ts.map +1 -0
  293. package/dist/schema/mutations.d.ts +20 -0
  294. package/dist/schema/mutations.d.ts.map +1 -0
  295. package/dist/schema/resolve.d.ts +21 -0
  296. package/dist/schema/resolve.d.ts.map +1 -0
  297. package/dist/sdk-3KBB3E6V.js +16 -0
  298. package/dist/sdk-4ZQO6UTU.js +16 -0
  299. package/dist/sdk-6JA6GV3G.js +16 -0
  300. package/dist/sdk-6VTP5UTZ.js +16 -0
  301. package/dist/sdk-7VS6TYCD.js +16 -0
  302. package/dist/sdk-HQ3FTLRT.js +16 -0
  303. package/dist/sdk-HZ7NU3XE.js +15 -0
  304. package/dist/sdk-KBQE2OXT.js +16 -0
  305. package/dist/sdk-LZ7W3EEY.js +9 -0
  306. package/dist/sdk-MSCDZ7JU.js +15 -0
  307. package/dist/sdk-WNZOGO3S.js +15 -0
  308. package/dist/sdk-YLV33ZCW.js +9 -0
  309. package/dist/sdk-ZSUD2LLJ.js +16 -0
  310. package/dist/server/index.d.ts +2 -0
  311. package/dist/server/index.d.ts.map +1 -1
  312. package/dist/server/index.js +69 -61
  313. package/dist/server/node-adapter.js +5 -104
  314. package/dist/server/realtime.d.ts +10 -2
  315. package/dist/server/realtime.d.ts.map +1 -1
  316. package/dist/server/server.d.ts +7 -16
  317. package/dist/server/server.d.ts.map +1 -1
  318. package/dist/server/sprites.d.ts.map +1 -1
  319. package/dist/server/tenancy.d.ts.map +1 -1
  320. package/dist/server-AFXFFBWA.js +11 -0
  321. package/dist/server-AGHC4VUL.js +11 -0
  322. package/dist/server-BOH7M4TT.js +13 -0
  323. package/dist/server-DBUY2KY5.js +11 -0
  324. package/dist/server-GWBQJPRG.js +11 -0
  325. package/dist/server-IGBIIJSF.js +13 -0
  326. package/dist/server-JZZFULVU.js +11 -0
  327. package/dist/server-L5XAF4M5.js +11 -0
  328. package/dist/server-NYFUHANA.js +12 -0
  329. package/dist/server-OABUB2LO.js +12 -0
  330. package/dist/server-P2CKZWWV.js +12 -0
  331. package/dist/{sprites-vc4qbrp1.js → sprites-RU3E4XQN.js} +6 -7
  332. package/dist/sprites-XVSMQLSI.js +15 -0
  333. package/dist/sql-wasm-FORCZFHZ.js +2148 -0
  334. package/dist/sql-wasm-JZH76RLO.js +2148 -0
  335. package/dist/sqljs-backend-CJQOIQYE.js +266 -0
  336. package/dist/sqljs-backend-KWXBUDUO.js +266 -0
  337. package/dist/state-demo.bundle.js +1033 -0
  338. package/dist/svelte/index.d.ts +17 -0
  339. package/dist/svelte/index.d.ts.map +1 -0
  340. package/dist/svelte/index.js +51 -0
  341. package/dist/svelte/schema-hooks.d.ts +45 -0
  342. package/dist/svelte/schema-hooks.d.ts.map +1 -0
  343. package/dist/svelte/schema-hooks.js +71 -0
  344. package/dist/svelte/stores.d.ts +78 -0
  345. package/dist/svelte/stores.d.ts.map +1 -0
  346. package/dist/sync/http-transport.d.ts +3 -3
  347. package/dist/sync/http-transport.d.ts.map +1 -1
  348. package/dist/sync/index.d.ts +15 -1
  349. package/dist/sync/index.d.ts.map +1 -1
  350. package/dist/sync/index.js +617 -0
  351. package/dist/sync/memory-room.d.ts +37 -0
  352. package/dist/sync/memory-room.d.ts.map +1 -0
  353. package/dist/sync/memory-transport.d.ts +3 -3
  354. package/dist/sync/memory-transport.d.ts.map +1 -1
  355. package/dist/sync/partykit-room.d.ts +40 -0
  356. package/dist/sync/partykit-room.d.ts.map +1 -0
  357. package/dist/sync/partykit-transport.d.ts +84 -0
  358. package/dist/sync/partykit-transport.d.ts.map +1 -0
  359. package/dist/sync/room-core.d.ts +53 -0
  360. package/dist/sync/room-core.d.ts.map +1 -0
  361. package/dist/sync/sync-engine.d.ts +40 -2
  362. package/dist/sync/sync-engine.d.ts.map +1 -1
  363. package/dist/sync/sync-room-server.d.ts +39 -0
  364. package/dist/sync/sync-room-server.d.ts.map +1 -0
  365. package/dist/sync/types.d.ts +70 -3
  366. package/dist/sync/types.d.ts.map +1 -1
  367. package/dist/sync/vcs-sync-peer.d.ts +63 -0
  368. package/dist/sync/vcs-sync-peer.d.ts.map +1 -0
  369. package/dist/sync/ws-transport.d.ts +2 -2
  370. package/dist/sync/ws-transport.d.ts.map +1 -1
  371. package/dist/tenancy-CBWYEVUB.js +11 -0
  372. package/dist/tenancy-FO6WVYFN.js +13 -0
  373. package/dist/tenancy-FWDBESMX.js +14 -0
  374. package/dist/tenancy-HGPIS5QA.js +13 -0
  375. package/dist/tenancy-HXFALA37.js +14 -0
  376. package/dist/tenancy-OP34NFFS.js +14 -0
  377. package/dist/tenancy-S676GLID.js +14 -0
  378. package/dist/tenancy-V7ARWNNV.js +14 -0
  379. package/dist/tenancy-ZDN4GXK5.js +13 -0
  380. package/dist/tenancy-ZT5VMY7B.js +14 -0
  381. package/dist/ui/client.html +355 -67
  382. package/dist/ui/launch-explorer.d.ts +22 -0
  383. package/dist/ui/launch-explorer.d.ts.map +1 -0
  384. package/dist/ui/server.d.ts +1 -1
  385. package/dist/ui/server.d.ts.map +1 -1
  386. package/dist/vcs/blob-store.d.ts.map +1 -1
  387. package/dist/vcs/idb-op-log.d.ts +67 -0
  388. package/dist/vcs/idb-op-log.d.ts.map +1 -0
  389. package/dist/vcs/index.d.ts +1 -0
  390. package/dist/vcs/index.d.ts.map +1 -1
  391. package/dist/vcs/index.js +81 -72
  392. package/dist/vcs/issue.d.ts +22 -5
  393. package/dist/vcs/issue.d.ts.map +1 -1
  394. package/dist/vcs/lane-materialize.d.ts +5 -0
  395. package/dist/vcs/lane-materialize.d.ts.map +1 -1
  396. package/dist/vcs/op-log.d.ts +28 -2
  397. package/dist/vcs/op-log.d.ts.map +1 -1
  398. package/dist/vcs/ops.d.ts +10 -0
  399. package/dist/vcs/ops.d.ts.map +1 -1
  400. package/dist/{vm-config-6xhsj6b3.js → vm-config-JI4OXKDQ.js} +9 -10
  401. package/dist/vm-config-YZRJ3KUB.js +21 -0
  402. package/dist/vue/hooks.d.ts +64 -0
  403. package/dist/vue/hooks.d.ts.map +1 -0
  404. package/dist/vue/index.d.ts +19 -0
  405. package/dist/vue/index.d.ts.map +1 -0
  406. package/dist/vue/index.js +59 -0
  407. package/dist/vue/schema-hooks.d.ts +41 -0
  408. package/dist/vue/schema-hooks.d.ts.map +1 -0
  409. package/dist/vue/schema-hooks.js +64 -0
  410. package/package.json +118 -16
  411. package/dist/deploy-999q207z.js +0 -10
  412. package/dist/engine-y0724kjq.js +0 -8
  413. package/dist/import-s2b8e0ft.js +0 -11
  414. package/dist/index-a76rekgs.js +0 -67
  415. package/dist/index-c9h37r6h.js +0 -1
  416. package/dist/index-hr9qvv77.js +0 -860
  417. package/dist/index-k5b0xskw.js +0 -1
  418. package/dist/index-y6a4kj0p.js +0 -43
  419. package/dist/sdk-bepky0xs.js +0 -16
  420. package/dist/server-szdjx0nt.js +0 -13
  421. package/dist/sqlite-backend-0vsmc6qj.js +0 -8
  422. package/dist/tenancy-pjm32b4v.js +0 -14
@@ -0,0 +1,394 @@
1
+ import {
2
+ TrellisVcsEngine,
3
+ init_engine
4
+ } from "./chunk-OBKU74FU.js";
5
+ import {
6
+ IdbOpLog
7
+ } from "./chunk-MPXUVGT3.js";
8
+ import {
9
+ JsonOpLog,
10
+ init_op_log
11
+ } from "./chunk-XEN3OEYY.js";
12
+ import {
13
+ PartyKitRoomTransport,
14
+ TrellisVcsSyncPeer
15
+ } from "./chunk-RSWUFTO2.js";
16
+ import {
17
+ Signal
18
+ } from "./chunk-UBGUDMUV.js";
19
+
20
+ // src/client/vcs-client.ts
21
+ init_engine();
22
+ init_op_log();
23
+ var DEFAULT_SYNC_STATUS = {
24
+ connected: false,
25
+ pending: 0,
26
+ synced: false,
27
+ lastSyncAt: null,
28
+ lastError: null
29
+ };
30
+ var MemoryOpLog = class {
31
+ ops = [];
32
+ hashes = /* @__PURE__ */ new Set();
33
+ load() {
34
+ }
35
+ append(op) {
36
+ if (this.hashes.has(op.hash)) return;
37
+ this.ops.push(op);
38
+ this.hashes.add(op.hash);
39
+ }
40
+ readAll() {
41
+ return [...this.ops];
42
+ }
43
+ getLastOp() {
44
+ return this.ops[this.ops.length - 1];
45
+ }
46
+ count() {
47
+ return this.ops.length;
48
+ }
49
+ };
50
+ var TrellisClient = class _TrellisClient {
51
+ _engine;
52
+ _syncPeer;
53
+ _peerId = "";
54
+ _opLog;
55
+ _roomId = "room";
56
+ _pushDebounceMs = 200;
57
+ _snapshotMaxOps = 500;
58
+ _pushTimer;
59
+ _closed = false;
60
+ /** Raw causal log. Updated on every local or remote op. */
61
+ _ops = new Signal([]);
62
+ /** Sync connection state. */
63
+ _syncStatus = new Signal({ ...DEFAULT_SYNC_STATUS });
64
+ _opHandlers = [];
65
+ _topicSubs = /* @__PURE__ */ new Map();
66
+ constructor() {
67
+ }
68
+ /** Factory — opens the repo, loads ops, and optionally connects to sync. */
69
+ static async open(opts) {
70
+ const client = new _TrellisClient();
71
+ client._peerId = opts.agentId ?? `client:${crypto.randomUUID()}`;
72
+ client._opLog = client._createOpLog(opts);
73
+ if ("load" in client._opLog && typeof client._opLog.load === "function") {
74
+ const maybePromise = client._opLog.load();
75
+ if (maybePromise instanceof Promise) await maybePromise;
76
+ }
77
+ client._engine = new TrellisVcsEngine({
78
+ rootPath: opts.repo,
79
+ agentId: client._peerId,
80
+ opLog: client._opLog
81
+ });
82
+ client._engine.open();
83
+ client._refreshState();
84
+ if (opts.sync) {
85
+ client._roomId = opts.sync.roomId ?? "room";
86
+ client._pushDebounceMs = opts.sync.pushDebounceMs ?? 200;
87
+ client._snapshotMaxOps = opts.sync.snapshotMaxOps ?? 500;
88
+ const transport = client._createTransport(opts.sync, client);
89
+ client._syncPeer = new TrellisVcsSyncPeer({
90
+ peerId: client._peerId,
91
+ engine: client._engine,
92
+ transport,
93
+ onIntegrate: () => {
94
+ client._refreshState();
95
+ client._setSyncStatus({ synced: true, lastError: null });
96
+ }
97
+ });
98
+ if (opts.sync.connectOnOpen !== false) {
99
+ try {
100
+ await client._connectAndCatchUp();
101
+ } catch {
102
+ }
103
+ }
104
+ }
105
+ return client;
106
+ }
107
+ // -------------------------------------------------------------------------
108
+ // Public API
109
+ // -------------------------------------------------------------------------
110
+ /** Subscribe to reactive topics. Callback receives current value immediately. */
111
+ subscribe(topic, callback) {
112
+ if (!this._topicSubs.has(topic)) {
113
+ this._topicSubs.set(topic, /* @__PURE__ */ new Set());
114
+ }
115
+ const subs = this._topicSubs.get(topic);
116
+ subs.add(callback);
117
+ const current = this._getTopicValue(topic);
118
+ if (current !== void 0) {
119
+ try {
120
+ callback(current);
121
+ } catch {
122
+ }
123
+ }
124
+ return () => {
125
+ subs.delete(callback);
126
+ };
127
+ }
128
+ /** Listen for raw op events (local or remote). */
129
+ on(event, handler) {
130
+ this._opHandlers.push(handler);
131
+ return () => {
132
+ const idx = this._opHandlers.indexOf(handler);
133
+ if (idx >= 0) this._opHandlers.splice(idx, 1);
134
+ };
135
+ }
136
+ /** Create an issue and emit reactive updates. */
137
+ async createIssue(title, opts) {
138
+ const createOpts = { ...opts };
139
+ if (opts?.lane) {
140
+ createOpts.laneId = opts.lane;
141
+ }
142
+ const op = await this._engine.createIssue(title, createOpts);
143
+ this._refreshState();
144
+ this._schedulePush();
145
+ return op;
146
+ }
147
+ /** Force a push/pull sync with the room. */
148
+ async sync() {
149
+ if (!this._syncPeer) {
150
+ throw new Error(
151
+ "No sync configured. Pass sync.url to TrellisClient.open() to enable multiplayer sync."
152
+ );
153
+ }
154
+ await this._connectAndCatchUp();
155
+ }
156
+ /** Close (complete) an issue. */
157
+ async closeIssue(id, opts) {
158
+ const result = await this._engine.closeIssue(id, opts);
159
+ if (result.op) {
160
+ this._refreshState();
161
+ this._schedulePush();
162
+ }
163
+ return result.op ?? null;
164
+ }
165
+ /** Reopen a closed issue. */
166
+ async reopenIssue(id) {
167
+ const op = await this._engine.reopenIssue(id);
168
+ this._refreshState();
169
+ this._schedulePush();
170
+ return op;
171
+ }
172
+ /** Read current ops without subscribing. */
173
+ getOps() {
174
+ return this._engine.getOps();
175
+ }
176
+ /** Read current issues without subscribing. */
177
+ listIssues() {
178
+ return this._engine.listIssues();
179
+ }
180
+ /** Clean up resources. */
181
+ close() {
182
+ if (this._closed) return;
183
+ this._closed = true;
184
+ if (this._pushTimer !== void 0) {
185
+ clearTimeout(this._pushTimer);
186
+ this._pushTimer = void 0;
187
+ }
188
+ this._syncPeer?.close();
189
+ if ("close" in this._opLog && typeof this._opLog.close === "function") {
190
+ void this._opLog.close();
191
+ }
192
+ this._engine.stop();
193
+ this._setSyncStatus({ connected: false });
194
+ }
195
+ // -------------------------------------------------------------------------
196
+ // Reactive accessors (for framework adapters)
197
+ // -------------------------------------------------------------------------
198
+ /** Signal exposing the full causal op log. */
199
+ get opsSignal() {
200
+ return this._ops;
201
+ }
202
+ /** Signal exposing sync connection status. */
203
+ get syncStatusSignal() {
204
+ return this._syncStatus;
205
+ }
206
+ /** Underlying VCS engine (for advanced sync wiring and queries). */
207
+ get engine() {
208
+ return this._engine;
209
+ }
210
+ // -------------------------------------------------------------------------
211
+ // Private
212
+ // -------------------------------------------------------------------------
213
+ _createTransport(sync, client) {
214
+ if (sync.transport) return sync.transport;
215
+ if (!sync.url) {
216
+ throw new Error(
217
+ "sync.transport or sync.url is required when sync is configured."
218
+ );
219
+ }
220
+ return new PartyKitRoomTransport({
221
+ peerId: this._peerId,
222
+ roomUrl: sync.url,
223
+ auth: sync.auth,
224
+ roomId: sync.roomId,
225
+ reconnect: sync.reconnect !== false,
226
+ onReconnect: () => client._onTransportReconnect(),
227
+ onDisconnect: () => client._setSyncStatus({ connected: false })
228
+ });
229
+ }
230
+ _createOpLog(opts) {
231
+ switch (opts.persist) {
232
+ case "indexeddb":
233
+ return new IdbOpLog({ dbName: opts.repo });
234
+ case "memory":
235
+ return new MemoryOpLog();
236
+ case "opfs":
237
+ throw new Error(
238
+ 'OPFS persistence not yet implemented. Use "indexeddb" or "memory".'
239
+ );
240
+ default:
241
+ if (typeof globalThis !== "undefined" && "indexedDB" in globalThis) {
242
+ return new IdbOpLog({ dbName: opts.repo });
243
+ }
244
+ return new JsonOpLog(`${opts.repo}/.trellis/ops.json`);
245
+ }
246
+ }
247
+ async _connectTransport() {
248
+ const transport = this._syncPeer?.getTransport();
249
+ if (transport && "connect" in transport && typeof transport.connect === "function") {
250
+ await transport.connect();
251
+ this._setSyncStatus({ connected: true, lastError: null });
252
+ } else if (transport) {
253
+ this._setSyncStatus({ connected: true, lastError: null });
254
+ }
255
+ }
256
+ async _connectAndCatchUp() {
257
+ if (!this._syncPeer) return;
258
+ this._setSyncStatus({
259
+ pending: this._syncStatus.value.pending + 1,
260
+ synced: false
261
+ });
262
+ try {
263
+ await this._connectTransport();
264
+ await this._requestSnapshot();
265
+ const result = await this._syncPeer.syncWith(this._roomId);
266
+ this._setSyncStatus({
267
+ connected: true,
268
+ synced: result.rejected === 0,
269
+ lastSyncAt: (/* @__PURE__ */ new Date()).toISOString(),
270
+ lastError: result.rejected > 0 ? `${result.rejected} op(s) rejected during sync` : null
271
+ });
272
+ } catch (err) {
273
+ const message = err instanceof Error ? err.message : String(err);
274
+ this._setSyncStatus({
275
+ connected: false,
276
+ synced: false,
277
+ lastError: message
278
+ });
279
+ throw err;
280
+ } finally {
281
+ this._setSyncStatus({
282
+ pending: Math.max(0, this._syncStatus.value.pending - 1)
283
+ });
284
+ }
285
+ }
286
+ async _onTransportReconnect() {
287
+ if (this._closed || !this._syncPeer) return;
288
+ try {
289
+ await this._connectAndCatchUp();
290
+ } catch {
291
+ }
292
+ }
293
+ async _requestSnapshot() {
294
+ if (!this._syncPeer || this._snapshotMaxOps <= 0) return;
295
+ await this._syncPeer.requestSnapshot(this._roomId, this._snapshotMaxOps);
296
+ await new Promise((resolve) => {
297
+ queueMicrotask(() => resolve());
298
+ });
299
+ }
300
+ _schedulePush() {
301
+ if (!this._syncPeer || this._pushDebounceMs <= 0 || this._closed) return;
302
+ if (this._pushTimer !== void 0) {
303
+ clearTimeout(this._pushTimer);
304
+ }
305
+ this._pushTimer = setTimeout(() => {
306
+ this._pushTimer = void 0;
307
+ void this._pushToRoom();
308
+ }, this._pushDebounceMs);
309
+ }
310
+ async _pushToRoom() {
311
+ if (!this._syncPeer || this._closed) return;
312
+ this._setSyncStatus({
313
+ pending: this._syncStatus.value.pending + 1,
314
+ synced: false
315
+ });
316
+ try {
317
+ await this._connectTransport();
318
+ const result = await this._syncPeer.pushTo(this._roomId);
319
+ this._setSyncStatus({
320
+ connected: true,
321
+ synced: result.remoteRejected.length === 0,
322
+ lastSyncAt: (/* @__PURE__ */ new Date()).toISOString(),
323
+ lastError: result.remoteRejected.length > 0 ? `${result.remoteRejected.length} op(s) rejected by room` : null
324
+ });
325
+ } catch (err) {
326
+ const message = err instanceof Error ? err.message : String(err);
327
+ this._setSyncStatus({
328
+ connected: false,
329
+ synced: false,
330
+ lastError: message
331
+ });
332
+ } finally {
333
+ this._setSyncStatus({
334
+ pending: Math.max(0, this._syncStatus.value.pending - 1)
335
+ });
336
+ }
337
+ }
338
+ _refreshState() {
339
+ const ops = this._engine.getOps();
340
+ const previousHashes = new Set(this._ops.value.map((o) => o.hash));
341
+ this._ops.value = ops;
342
+ for (const op of ops) {
343
+ if (!previousHashes.has(op.hash)) {
344
+ this._emitOp(op);
345
+ }
346
+ }
347
+ this._broadcastTopic("ops", ops);
348
+ this._broadcastTopic("issues", this._engine.listIssues());
349
+ this._broadcastTopic("milestones", this._engine.listMilestones());
350
+ this._broadcastTopic("branches", this._engine.listBranches());
351
+ }
352
+ _emitOp(op) {
353
+ for (const h of this._opHandlers) {
354
+ try {
355
+ h(op);
356
+ } catch {
357
+ }
358
+ }
359
+ }
360
+ _broadcastTopic(topic, data) {
361
+ const subs = this._topicSubs.get(topic);
362
+ if (!subs) return;
363
+ for (const fn of subs) {
364
+ try {
365
+ fn(data);
366
+ } catch {
367
+ }
368
+ }
369
+ }
370
+ _getTopicValue(topic) {
371
+ switch (topic) {
372
+ case "ops":
373
+ return this._ops.value;
374
+ case "syncStatus":
375
+ return this._syncStatus.value;
376
+ case "issues":
377
+ return this._engine.listIssues();
378
+ case "milestones":
379
+ return this._engine.listMilestones();
380
+ case "branches":
381
+ return this._engine.listBranches();
382
+ default:
383
+ return void 0;
384
+ }
385
+ }
386
+ _setSyncStatus(partial) {
387
+ this._syncStatus.value = { ...this._syncStatus.value, ...partial };
388
+ this._broadcastTopic("syncStatus", this._syncStatus.value);
389
+ }
390
+ };
391
+
392
+ export {
393
+ TrellisClient
394
+ };
@@ -1,8 +1,3 @@
1
- // @bun
2
- import {
3
- __esm
4
- } from "./index-a76rekgs.js";
5
-
6
1
  // src/core/store/eav-store.ts
7
2
  function* flatten(obj, base = "") {
8
3
  if (Array.isArray(obj)) {
@@ -20,32 +15,38 @@ function* flatten(obj, base = "") {
20
15
  function jsonEntityFacts(entityId, root, type) {
21
16
  const facts = [{ e: entityId, a: "type", v: type }];
22
17
  for (const [a, v] of flatten(root)) {
23
- if (v === undefined || v === null)
24
- continue;
18
+ if (v === void 0 || v === null) continue;
25
19
  if (Array.isArray(v)) {
26
20
  for (const el of v) {
27
21
  facts.push({ e: entityId, a, v: el });
28
22
  }
29
- } else if (typeof v === "object") {} else {
23
+ } else if (typeof v === "object") {
24
+ } else {
30
25
  facts.push({ e: entityId, a, v });
31
26
  }
32
27
  }
33
28
  return facts;
34
29
  }
35
-
36
- class EAVStore {
30
+ var EAVStore = class {
37
31
  facts = [];
38
32
  links = [];
39
- catalog = new Map;
40
- eavIndex = new Map;
41
- aevIndex = new Map;
42
- aveIndex = new Map;
43
- linkIndex = new Map;
44
- linkReverseIndex = new Map;
45
- linkAttrIndex = new Map;
46
- distinct = new Map;
33
+ catalog = /* @__PURE__ */ new Map();
34
+ // Indexes for fast lookups
35
+ eavIndex = /* @__PURE__ */ new Map();
36
+ aevIndex = /* @__PURE__ */ new Map();
37
+ aveIndex = /* @__PURE__ */ new Map();
38
+ // Link indexes for graph queries
39
+ linkIndex = /* @__PURE__ */ new Map();
40
+ // e1 -> a -> e2s
41
+ linkReverseIndex = /* @__PURE__ */ new Map();
42
+ // e2 -> a -> e1s
43
+ linkAttrIndex = /* @__PURE__ */ new Map();
44
+ // a -> [(e1, e2)]
45
+ // Distinct value tracking
46
+ distinct = /* @__PURE__ */ new Map();
47
+ // attr -> set of valueKey
47
48
  addFacts(facts) {
48
- for (let i = 0;i < facts.length; i++) {
49
+ for (let i = 0; i < facts.length; i++) {
49
50
  const fact = facts[i];
50
51
  if (fact) {
51
52
  if (this.hasFact(fact.e, fact.a, fact.v)) {
@@ -57,11 +58,13 @@ class EAVStore {
57
58
  }
58
59
  }
59
60
  }
61
+ /**
62
+ * Check if a fact already exists in the store.
63
+ */
60
64
  hasFact(entity, attribute, value) {
61
65
  const valueKey = this.valueKey(value);
62
66
  const indices = this.aveIndex.get(attribute)?.get(valueKey);
63
- if (!indices)
64
- return false;
67
+ if (!indices) return false;
65
68
  for (const idx of indices) {
66
69
  const fact = this.facts[idx];
67
70
  if (fact && fact.e === entity && fact.a === attribute) {
@@ -80,8 +83,7 @@ class EAVStore {
80
83
  for (const fact of factsToDelete) {
81
84
  const valueKey = this.valueKey(fact.v);
82
85
  const indices = this.aveIndex.get(fact.a)?.get(valueKey);
83
- if (!indices)
84
- continue;
86
+ if (!indices) continue;
85
87
  let foundIdx = -1;
86
88
  for (const idx of indices) {
87
89
  const storedFact = this.facts[idx];
@@ -91,19 +93,22 @@ class EAVStore {
91
93
  }
92
94
  }
93
95
  if (foundIdx !== -1) {
94
- this.facts[foundIdx] = undefined;
96
+ this.facts[foundIdx] = void 0;
95
97
  this.eavIndex.get(fact.e)?.get(fact.a)?.delete(foundIdx);
96
98
  this.aevIndex.get(fact.a)?.get(fact.e)?.delete(foundIdx);
97
99
  this.aveIndex.get(fact.a)?.get(valueKey)?.delete(foundIdx);
98
100
  const entry = this.catalog.get(fact.a);
99
- if (entry) {}
101
+ if (entry) {
102
+ }
100
103
  }
101
104
  }
102
105
  }
103
106
  deleteLinks(linksToDelete) {
104
107
  for (const link of linksToDelete) {
105
108
  const initialLen = this.links.length;
106
- this.links = this.links.filter((l) => !(l.e1 === link.e1 && l.a === link.a && l.e2 === link.e2));
109
+ this.links = this.links.filter(
110
+ (l) => !(l.e1 === link.e1 && l.a === link.a && l.e2 === link.e2)
111
+ );
107
112
  if (this.links.length < initialLen) {
108
113
  this.linkIndex.get(link.e1)?.get(link.a)?.delete(link.e2);
109
114
  this.linkReverseIndex.get(link.e2)?.get(link.a)?.delete(link.e1);
@@ -121,53 +126,52 @@ class EAVStore {
121
126
  }
122
127
  updateIndexes(fact, index) {
123
128
  if (!this.eavIndex.has(fact.e)) {
124
- this.eavIndex.set(fact.e, new Map);
129
+ this.eavIndex.set(fact.e, /* @__PURE__ */ new Map());
125
130
  }
126
131
  if (!this.eavIndex.get(fact.e).has(fact.a)) {
127
- this.eavIndex.get(fact.e).set(fact.a, new Set);
132
+ this.eavIndex.get(fact.e).set(fact.a, /* @__PURE__ */ new Set());
128
133
  }
129
134
  this.eavIndex.get(fact.e).get(fact.a).add(index);
130
135
  if (!this.aevIndex.has(fact.a)) {
131
- this.aevIndex.set(fact.a, new Map);
136
+ this.aevIndex.set(fact.a, /* @__PURE__ */ new Map());
132
137
  }
133
138
  if (!this.aevIndex.get(fact.a).has(fact.e)) {
134
- this.aevIndex.get(fact.a).set(fact.e, new Set);
139
+ this.aevIndex.get(fact.a).set(fact.e, /* @__PURE__ */ new Set());
135
140
  }
136
141
  this.aevIndex.get(fact.a).get(fact.e).add(index);
137
142
  if (!this.aveIndex.has(fact.a)) {
138
- this.aveIndex.set(fact.a, new Map);
143
+ this.aveIndex.set(fact.a, /* @__PURE__ */ new Map());
139
144
  }
140
145
  const valueKey = this.valueKey(fact.v);
141
146
  if (!this.aveIndex.get(fact.a).has(valueKey)) {
142
- this.aveIndex.get(fact.a).set(valueKey, new Set);
147
+ this.aveIndex.get(fact.a).set(valueKey, /* @__PURE__ */ new Set());
143
148
  }
144
149
  this.aveIndex.get(fact.a).get(valueKey).add(index);
145
150
  }
146
151
  updateLinkIndexes(link) {
147
152
  if (!this.linkIndex.has(link.e1)) {
148
- this.linkIndex.set(link.e1, new Map);
153
+ this.linkIndex.set(link.e1, /* @__PURE__ */ new Map());
149
154
  }
150
155
  const e1Attrs = this.linkIndex.get(link.e1);
151
156
  if (!e1Attrs.has(link.a)) {
152
- e1Attrs.set(link.a, new Set);
157
+ e1Attrs.set(link.a, /* @__PURE__ */ new Set());
153
158
  }
154
159
  e1Attrs.get(link.a).add(link.e2);
155
160
  if (!this.linkReverseIndex.has(link.e2)) {
156
- this.linkReverseIndex.set(link.e2, new Map);
161
+ this.linkReverseIndex.set(link.e2, /* @__PURE__ */ new Map());
157
162
  }
158
163
  const e2Attrs = this.linkReverseIndex.get(link.e2);
159
164
  if (!e2Attrs.has(link.a)) {
160
- e2Attrs.set(link.a, new Set);
165
+ e2Attrs.set(link.a, /* @__PURE__ */ new Set());
161
166
  }
162
167
  e2Attrs.get(link.a).add(link.e1);
163
168
  if (!this.linkAttrIndex.has(link.a)) {
164
- this.linkAttrIndex.set(link.a, new Set);
169
+ this.linkAttrIndex.set(link.a, /* @__PURE__ */ new Set());
165
170
  }
166
171
  this.linkAttrIndex.get(link.a).add([link.e1, link.e2]);
167
172
  }
168
173
  valueKey(v) {
169
- if (v instanceof Date)
170
- return `date:${v.toISOString()}`;
174
+ if (v instanceof Date) return `date:${v.toISOString()}`;
171
175
  return `${typeof v}:${v}`;
172
176
  }
173
177
  updateCatalog(fact) {
@@ -187,7 +191,7 @@ class EAVStore {
187
191
  entry.cardinality = "many";
188
192
  }
189
193
  const k = this.valueKey(fact.v);
190
- const s = this.distinct.get(fact.a) || (this.distinct.set(fact.a, new Set), this.distinct.get(fact.a));
194
+ const s = this.distinct.get(fact.a) || (this.distinct.set(fact.a, /* @__PURE__ */ new Set()), this.distinct.get(fact.a));
191
195
  s.add(k);
192
196
  entry.distinctCount = s.size;
193
197
  if (entry.examples.length < 5 && !entry.examples.includes(fact.v)) {
@@ -200,20 +204,16 @@ class EAVStore {
200
204
  this.catalog.set(fact.a, entry);
201
205
  }
202
206
  inferType(v) {
203
- if (typeof v === "string")
204
- return "string";
205
- if (typeof v === "number")
206
- return "number";
207
- if (typeof v === "boolean")
208
- return "boolean";
209
- if (v instanceof Date)
210
- return "date";
207
+ if (typeof v === "string") return "string";
208
+ if (typeof v === "number") return "number";
209
+ if (typeof v === "boolean") return "boolean";
210
+ if (v instanceof Date) return "date";
211
211
  return "mixed";
212
212
  }
213
+ // Query methods
213
214
  getFactsByEntity(entity) {
214
215
  const indices = this.eavIndex.get(entity);
215
- if (!indices)
216
- return [];
216
+ if (!indices) return [];
217
217
  const result = [];
218
218
  for (const attrIndices of indices.values()) {
219
219
  for (const idx of attrIndices) {
@@ -227,8 +227,7 @@ class EAVStore {
227
227
  }
228
228
  getFactsByAttribute(attribute) {
229
229
  const indices = this.aevIndex.get(attribute);
230
- if (!indices)
231
- return [];
230
+ if (!indices) return [];
232
231
  const result = [];
233
232
  for (const entityIndices of indices.values()) {
234
233
  for (const idx of entityIndices) {
@@ -242,9 +241,8 @@ class EAVStore {
242
241
  }
243
242
  getFactsByValue(attribute, value) {
244
243
  const indices = this.aveIndex.get(attribute)?.get(this.valueKey(value));
245
- if (!indices)
246
- return [];
247
- return Array.from(indices).map((idx) => this.facts[idx]).filter((fact) => fact !== undefined);
244
+ if (!indices) return [];
245
+ return Array.from(indices).map((idx) => this.facts[idx]).filter((fact) => fact !== void 0);
248
246
  }
249
247
  getCatalog() {
250
248
  return Array.from(this.catalog.values());
@@ -252,8 +250,9 @@ class EAVStore {
252
250
  getCatalogEntry(attribute) {
253
251
  return this.catalog.get(attribute);
254
252
  }
253
+ // Statistics
255
254
  getAllFacts() {
256
- return this.facts.filter((f) => f !== undefined);
255
+ return this.facts.filter((f) => f !== void 0);
257
256
  }
258
257
  getAllLinks() {
259
258
  return [...this.links];
@@ -310,13 +309,19 @@ class EAVStore {
310
309
  catalogEntries: this.catalog.size
311
310
  };
312
311
  }
312
+ /**
313
+ * Creates a serializable snapshot of the current store state.
314
+ */
313
315
  snapshot() {
314
316
  return {
315
- facts: this.facts.filter((f) => f !== undefined),
317
+ facts: this.facts.filter((f) => f !== void 0),
316
318
  links: [...this.links],
317
319
  catalog: this.getCatalog()
318
320
  };
319
321
  }
322
+ /**
323
+ * Restores the store state from a snapshot and rebuilds all indexes.
324
+ */
320
325
  restore(snapshot) {
321
326
  this.facts = [];
322
327
  this.links = [];
@@ -336,7 +341,9 @@ class EAVStore {
336
341
  }
337
342
  }
338
343
  }
339
- }
340
- var init_eav_store = () => {};
344
+ };
341
345
 
342
- export { flatten, jsonEntityFacts, EAVStore, init_eav_store };
346
+ export {
347
+ jsonEntityFacts,
348
+ EAVStore
349
+ };