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,260 @@
1
+ import {
2
+ __require
3
+ } from "./chunk-KFQGP6VL.js";
4
+
5
+ // src/core/persist/sqlite-backend.ts
6
+ var _DatabaseCtor = null;
7
+ function loadDatabaseCtor() {
8
+ if (_DatabaseCtor) return _DatabaseCtor;
9
+ try {
10
+ const { createRequire } = __require("module");
11
+ const requireCJS = createRequire(import.meta.url);
12
+ _DatabaseCtor = requireCJS("bun:sqlite").Database;
13
+ return _DatabaseCtor;
14
+ } catch {
15
+ throw new Error(
16
+ "SqliteKernelBackend requires the Bun runtime (built-in `bun:sqlite`). In Node / WebContainer use `createKernelBackend()` from `trellis/core` \u2014 it auto-selects better-sqlite3 or sql.js."
17
+ );
18
+ }
19
+ }
20
+ var SCHEMA_SQL = `
21
+ CREATE TABLE IF NOT EXISTS ops (
22
+ hash TEXT PRIMARY KEY,
23
+ kind TEXT NOT NULL,
24
+ timestamp TEXT NOT NULL,
25
+ agent_id TEXT NOT NULL,
26
+ previous_hash TEXT,
27
+ payload TEXT NOT NULL
28
+ );
29
+
30
+ CREATE TABLE IF NOT EXISTS snapshots (
31
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
32
+ last_op_hash TEXT NOT NULL,
33
+ data TEXT NOT NULL,
34
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
35
+ );
36
+
37
+ CREATE TABLE IF NOT EXISTS blobs (
38
+ hash TEXT PRIMARY KEY,
39
+ content BLOB NOT NULL
40
+ );
41
+
42
+ CREATE INDEX IF NOT EXISTS idx_ops_kind ON ops(kind);
43
+ CREATE INDEX IF NOT EXISTS idx_ops_timestamp ON ops(timestamp);
44
+ CREATE INDEX IF NOT EXISTS idx_ops_agent ON ops(agent_id);
45
+ CREATE INDEX IF NOT EXISTS idx_ops_previous ON ops(previous_hash);
46
+ CREATE INDEX IF NOT EXISTS idx_snapshots_op ON snapshots(last_op_hash);
47
+ `;
48
+ var SqliteKernelBackend = class {
49
+ constructor(dbPath) {
50
+ this.dbPath = dbPath;
51
+ const DatabaseCtor = loadDatabaseCtor();
52
+ this.db = new DatabaseCtor(dbPath);
53
+ }
54
+ db;
55
+ _stmts = null;
56
+ init() {
57
+ this.db.exec("PRAGMA journal_mode=WAL;");
58
+ this.db.exec("PRAGMA foreign_keys=ON;");
59
+ this.db.exec("PRAGMA synchronous=NORMAL;");
60
+ this.db.exec(SCHEMA_SQL);
61
+ this._prepareStatements();
62
+ }
63
+ _prepareStatements() {
64
+ this._stmts = {
65
+ insert: this.db.prepare(`
66
+ INSERT OR IGNORE INTO ops (hash, kind, timestamp, agent_id, previous_hash, payload)
67
+ VALUES ($hash, $kind, $timestamp, $agentId, $previousHash, $payload)
68
+ `),
69
+ readAll: this.db.prepare(`
70
+ SELECT hash, kind, timestamp, agent_id, previous_hash, payload
71
+ FROM ops ORDER BY rowid ASC
72
+ `),
73
+ readUntil: this.db.prepare(`
74
+ SELECT hash, kind, timestamp, agent_id, previous_hash, payload
75
+ FROM ops WHERE rowid <= (SELECT rowid FROM ops WHERE hash = $hash)
76
+ ORDER BY rowid ASC
77
+ `),
78
+ readAfter: this.db.prepare(`
79
+ SELECT hash, kind, timestamp, agent_id, previous_hash, payload
80
+ FROM ops WHERE rowid > (SELECT rowid FROM ops WHERE hash = $hash)
81
+ ORDER BY rowid ASC
82
+ `),
83
+ getByHash: this.db.prepare(`
84
+ SELECT hash, kind, timestamp, agent_id, previous_hash, payload
85
+ FROM ops WHERE hash = $hash
86
+ `),
87
+ getLast: this.db.prepare(`
88
+ SELECT hash, kind, timestamp, agent_id, previous_hash, payload
89
+ FROM ops ORDER BY rowid DESC LIMIT 1
90
+ `),
91
+ count: this.db.prepare("SELECT COUNT(*) as cnt FROM ops"),
92
+ saveSnapshot: this.db.prepare(`
93
+ INSERT INTO snapshots (last_op_hash, data)
94
+ VALUES ($lastOpHash, $data)
95
+ `),
96
+ loadSnapshot: this.db.prepare(`
97
+ SELECT last_op_hash, data FROM snapshots
98
+ ORDER BY id DESC LIMIT 1
99
+ `),
100
+ putBlob: this.db.prepare(`
101
+ INSERT OR IGNORE INTO blobs (hash, content) VALUES ($hash, $content)
102
+ `),
103
+ getBlob: this.db.prepare(`
104
+ SELECT content FROM blobs WHERE hash = $hash
105
+ `),
106
+ hasBlob: this.db.prepare(`
107
+ SELECT 1 FROM blobs WHERE hash = $hash
108
+ `)
109
+ };
110
+ }
111
+ // -------------------------------------------------------------------------
112
+ // Op operations
113
+ // -------------------------------------------------------------------------
114
+ append(op) {
115
+ const payload = JSON.stringify({
116
+ facts: op.facts,
117
+ links: op.links,
118
+ ...op.deleteFacts?.length ? { deleteFacts: op.deleteFacts } : {},
119
+ ...op.deleteLinks?.length ? { deleteLinks: op.deleteLinks } : {},
120
+ ...op.vcs ? { vcs: op.vcs } : {},
121
+ ...op.signature ? { signature: op.signature } : {}
122
+ });
123
+ this._stmts.insert.run({
124
+ $hash: op.hash,
125
+ $kind: op.kind,
126
+ $timestamp: op.timestamp,
127
+ $agentId: op.agentId,
128
+ $previousHash: op.previousHash ?? null,
129
+ $payload: payload
130
+ });
131
+ }
132
+ appendBatch(ops) {
133
+ if (ops.length === 0) return;
134
+ this.db.transaction(() => {
135
+ for (const op of ops) {
136
+ this.append(op);
137
+ }
138
+ })();
139
+ }
140
+ readAll() {
141
+ const rows = this._stmts.readAll.all();
142
+ return rows.map(rowToOp);
143
+ }
144
+ readUntil(hash) {
145
+ const rows = this._stmts.readUntil.all({ $hash: hash });
146
+ return rows.map(rowToOp);
147
+ }
148
+ readAfter(hash) {
149
+ const rows = this._stmts.readAfter.all({ $hash: hash });
150
+ return rows.map(rowToOp);
151
+ }
152
+ readUntilTimestamp(isoTimestamp) {
153
+ const rows = this.db.prepare(
154
+ `SELECT hash, kind, timestamp, agent_id, previous_hash, payload
155
+ FROM ops WHERE timestamp <= $ts ORDER BY rowid ASC`
156
+ ).all({ $ts: isoTimestamp });
157
+ return rows.map(rowToOp);
158
+ }
159
+ getLastOp() {
160
+ const row = this._stmts.getLast.get();
161
+ return row ? rowToOp(row) : void 0;
162
+ }
163
+ getByHash(hash) {
164
+ return this.getOpByHash(hash);
165
+ }
166
+ getOpCount() {
167
+ return this.count();
168
+ }
169
+ getOpByHash(hash) {
170
+ const row = this._stmts.getByHash.get({ $hash: hash });
171
+ return row ? rowToOp(row) : void 0;
172
+ }
173
+ count() {
174
+ const row = this._stmts.count.get();
175
+ return row?.cnt ?? 0;
176
+ }
177
+ /**
178
+ * Find the common ancestor op of two op hashes by walking
179
+ * previousHash chains until they converge.
180
+ */
181
+ findCommonAncestor(hashA, hashB) {
182
+ const ancestorsA = /* @__PURE__ */ new Set();
183
+ let cursor = hashA;
184
+ while (cursor) {
185
+ ancestorsA.add(cursor);
186
+ const op = this.getOpByHash(cursor);
187
+ cursor = op?.previousHash;
188
+ }
189
+ cursor = hashB;
190
+ while (cursor) {
191
+ if (ancestorsA.has(cursor)) {
192
+ return this.getOpByHash(cursor);
193
+ }
194
+ const op = this.getOpByHash(cursor);
195
+ cursor = op?.previousHash;
196
+ }
197
+ return void 0;
198
+ }
199
+ // -------------------------------------------------------------------------
200
+ // Snapshot operations
201
+ // -------------------------------------------------------------------------
202
+ saveSnapshot(lastOpHash, data) {
203
+ this._stmts.saveSnapshot.run({
204
+ $lastOpHash: lastOpHash,
205
+ $data: JSON.stringify(data)
206
+ });
207
+ }
208
+ loadLatestSnapshot() {
209
+ const row = this._stmts.loadSnapshot.get();
210
+ if (!row) return void 0;
211
+ return {
212
+ lastOpHash: row.last_op_hash,
213
+ data: JSON.parse(row.data)
214
+ };
215
+ }
216
+ // -------------------------------------------------------------------------
217
+ // Blob operations
218
+ // -------------------------------------------------------------------------
219
+ putBlob(hash, content) {
220
+ this._stmts.putBlob.run({
221
+ $hash: hash,
222
+ $content: Buffer.from(content)
223
+ });
224
+ }
225
+ getBlob(hash) {
226
+ const row = this._stmts.getBlob.get({ $hash: hash });
227
+ if (!row) return void 0;
228
+ return new Uint8Array(row.content);
229
+ }
230
+ hasBlob(hash) {
231
+ return !!this._stmts.hasBlob.get({ $hash: hash });
232
+ }
233
+ // -------------------------------------------------------------------------
234
+ // Lifecycle
235
+ // -------------------------------------------------------------------------
236
+ close() {
237
+ this.db.close();
238
+ }
239
+ };
240
+ function rowToOp(row) {
241
+ const payload = JSON.parse(row.payload);
242
+ const op = {
243
+ hash: row.hash,
244
+ kind: row.kind,
245
+ timestamp: row.timestamp,
246
+ agentId: row.agent_id
247
+ };
248
+ if (row.previous_hash) op.previousHash = row.previous_hash;
249
+ if (payload.facts) op.facts = payload.facts;
250
+ if (payload.links) op.links = payload.links;
251
+ if (payload.deleteFacts) op.deleteFacts = payload.deleteFacts;
252
+ if (payload.deleteLinks) op.deleteLinks = payload.deleteLinks;
253
+ if (payload.vcs) op.vcs = payload.vcs;
254
+ if (payload.signature) op.signature = payload.signature;
255
+ return op;
256
+ }
257
+
258
+ export {
259
+ SqliteKernelBackend
260
+ };
@@ -0,0 +1,124 @@
1
+ import {
2
+ entitiesQuery,
3
+ resolveRelations
4
+ } from "./chunk-FOWKR5TW.js";
5
+ import {
6
+ bindingEntityId,
7
+ bindingToEntity,
8
+ isSparseBinding
9
+ } from "./chunk-5CINODKT.js";
10
+ import {
11
+ Signal
12
+ } from "./chunk-UBGUDMUV.js";
13
+
14
+ // src/client/live.ts
15
+ function liveQuery(client, eql) {
16
+ const signal = new Signal({
17
+ data: [],
18
+ loading: true,
19
+ error: null
20
+ });
21
+ let sub = null;
22
+ return {
23
+ signal,
24
+ start() {
25
+ if (sub) return () => stop();
26
+ try {
27
+ sub = client.subscribe(eql, (rows) => {
28
+ signal.value = { data: rows, loading: false, error: null };
29
+ });
30
+ } catch (err) {
31
+ signal.value = {
32
+ data: [],
33
+ loading: false,
34
+ error: err instanceof Error ? err : new Error(String(err))
35
+ };
36
+ }
37
+ return () => stop();
38
+ }
39
+ };
40
+ function stop() {
41
+ sub?.unsubscribe();
42
+ sub = null;
43
+ }
44
+ }
45
+ function normalizeLiveEntitiesOpts(whereOrOpts) {
46
+ if (!whereOrOpts) return {};
47
+ if ("resolve" in whereOrOpts || "where" in whereOrOpts) {
48
+ return whereOrOpts;
49
+ }
50
+ return { where: whereOrOpts };
51
+ }
52
+ function liveEntities(client, typeOrSchema, whereOrOpts) {
53
+ const schema = typeof typeOrSchema === "string" ? void 0 : typeOrSchema;
54
+ const type = typeof typeOrSchema === "string" ? typeOrSchema : typeOrSchema.type;
55
+ const { where, resolve } = normalizeLiveEntitiesOpts(whereOrOpts);
56
+ const signal = new Signal({
57
+ data: [],
58
+ loading: true,
59
+ error: null
60
+ });
61
+ let sub = null;
62
+ let token = 0;
63
+ return {
64
+ signal,
65
+ start() {
66
+ if (sub) return () => stop();
67
+ try {
68
+ sub = client.subscribe(
69
+ entitiesQuery(type, where),
70
+ (rows) => {
71
+ const turn = ++token;
72
+ const hydrate = async () => {
73
+ if (rows.length === 0) return [];
74
+ if (rows.some((r) => isSparseBinding(r))) {
75
+ const ids = rows.map((r) => bindingEntityId(r)).filter((id) => Boolean(id));
76
+ const loaded = await Promise.all(ids.map((id) => client.read(id)));
77
+ return loaded.filter((e) => e != null);
78
+ }
79
+ return rows.map((r) => bindingToEntity(r));
80
+ };
81
+ hydrate().then(async (entities) => {
82
+ if (turn !== token) return;
83
+ let data = entities;
84
+ if (schema && resolve && Object.keys(resolve).length > 0) {
85
+ data = await resolveRelations(
86
+ client,
87
+ schema,
88
+ data,
89
+ resolve
90
+ );
91
+ }
92
+ if (turn !== token) return;
93
+ signal.value = { data, loading: false, error: null };
94
+ }).catch((err) => {
95
+ if (turn !== token) return;
96
+ signal.value = {
97
+ data: signal.peek().data,
98
+ loading: false,
99
+ error: err instanceof Error ? err : new Error(String(err))
100
+ };
101
+ });
102
+ }
103
+ );
104
+ } catch (err) {
105
+ signal.value = {
106
+ data: [],
107
+ loading: false,
108
+ error: err instanceof Error ? err : new Error(String(err))
109
+ };
110
+ }
111
+ return () => stop();
112
+ }
113
+ };
114
+ function stop() {
115
+ token++;
116
+ sub?.unsubscribe();
117
+ sub = null;
118
+ }
119
+ }
120
+
121
+ export {
122
+ liveQuery,
123
+ liveEntities
124
+ };
@@ -1,21 +1,30 @@
1
- // @bun
2
1
  // src/core/ontology/registry.ts
3
- class OntologyRegistry {
4
- schemas = new Map;
5
- resolvedEntities = new Map;
6
- resolvedRelations = new Map;
2
+ var OntologyRegistry = class {
3
+ schemas = /* @__PURE__ */ new Map();
4
+ /** Resolved entity defs (with inherited attributes merged). */
5
+ resolvedEntities = /* @__PURE__ */ new Map();
6
+ /** Resolved relation defs. */
7
+ resolvedRelations = /* @__PURE__ */ new Map();
8
+ /**
9
+ * Register an ontology schema.
10
+ * Throws if an ontology with the same ID is already registered at the same version.
11
+ */
7
12
  register(schema) {
8
13
  const existing = this.schemas.get(schema.id);
9
14
  if (existing && existing.version === schema.version) {
10
- throw new Error(`Ontology "${schema.id}" v${schema.version} is already registered.`);
15
+ throw new Error(
16
+ `Ontology "${schema.id}" v${schema.version} is already registered.`
17
+ );
11
18
  }
12
19
  this.schemas.set(schema.id, schema);
13
20
  this._resolve(schema);
14
21
  }
22
+ /**
23
+ * Unregister an ontology by ID.
24
+ */
15
25
  unregister(id) {
16
26
  const schema = this.schemas.get(id);
17
- if (!schema)
18
- return;
27
+ if (!schema) return;
19
28
  for (const [name, entry] of this.resolvedEntities) {
20
29
  if (entry.ontologyId === id) {
21
30
  this.resolvedEntities.delete(name);
@@ -31,21 +40,41 @@ class OntologyRegistry {
31
40
  }
32
41
  this.schemas.delete(id);
33
42
  }
43
+ /**
44
+ * Get a registered ontology schema by ID.
45
+ */
34
46
  get(id) {
35
47
  return this.schemas.get(id);
36
48
  }
49
+ /**
50
+ * List all registered ontology schemas.
51
+ */
37
52
  list() {
38
53
  return [...this.schemas.values()];
39
54
  }
55
+ /**
56
+ * Get the resolved entity definition for an entity type name.
57
+ * Returns the entity def with inherited attributes merged in.
58
+ */
40
59
  getEntityDef(typeName) {
41
60
  return this.resolvedEntities.get(typeName)?.def;
42
61
  }
62
+ /**
63
+ * Get the ontology ID that defines a given entity type.
64
+ */
43
65
  getEntityOntology(typeName) {
44
66
  return this.resolvedEntities.get(typeName)?.ontologyId;
45
67
  }
68
+ /**
69
+ * List all known entity type names.
70
+ */
46
71
  listEntityTypes() {
47
72
  return [...this.resolvedEntities.keys()];
48
73
  }
74
+ /**
75
+ * Get all relation definitions involving a given entity type
76
+ * (either as source or target).
77
+ */
49
78
  getRelationsForType(typeName) {
50
79
  const results = [];
51
80
  for (const [, entries] of this.resolvedRelations) {
@@ -57,22 +86,36 @@ class OntologyRegistry {
57
86
  }
58
87
  return results;
59
88
  }
89
+ /**
90
+ * Get a specific relation definition by name.
91
+ */
60
92
  getRelationDef(name) {
61
93
  const entries = this.resolvedRelations.get(name);
62
94
  return entries?.[0]?.def;
63
95
  }
96
+ /**
97
+ * List all known relation names.
98
+ */
64
99
  listRelationNames() {
65
100
  return [...this.resolvedRelations.keys()];
66
101
  }
102
+ /**
103
+ * Check if an entity type is known to any registered ontology.
104
+ */
67
105
  hasEntityType(typeName) {
68
106
  return this.resolvedEntities.has(typeName);
69
107
  }
108
+ /**
109
+ * Get the required attributes for an entity type.
110
+ */
70
111
  getRequiredAttributes(typeName) {
71
112
  const def = this.getEntityDef(typeName);
72
- if (!def)
73
- return [];
113
+ if (!def) return [];
74
114
  return def.attributes.filter((a) => a.required);
75
115
  }
116
+ // -------------------------------------------------------------------------
117
+ // Resolution (inheritance)
118
+ // -------------------------------------------------------------------------
76
119
  _resolve(schema) {
77
120
  for (const entity of schema.entities) {
78
121
  const resolved = this._resolveEntity(entity, schema);
@@ -88,15 +131,16 @@ class OntologyRegistry {
88
131
  }
89
132
  }
90
133
  _resolveEntity(entity, schema) {
91
- if (!entity.extends)
92
- return entity;
134
+ if (!entity.extends) return entity;
93
135
  let parent = schema.entities.find((e) => e.name === entity.extends);
94
136
  if (!parent) {
95
137
  const resolved = this.resolvedEntities.get(entity.extends);
96
138
  parent = resolved?.def;
97
139
  }
98
140
  if (!parent) {
99
- throw new Error(`Entity "${entity.name}" extends "${entity.extends}" which is not defined.`);
141
+ throw new Error(
142
+ `Entity "${entity.name}" extends "${entity.extends}" which is not defined.`
143
+ );
100
144
  }
101
145
  const resolvedParent = this._resolveEntity(parent, schema);
102
146
  const childAttrNames = new Set(entity.attributes.map((a) => a.name));
@@ -109,7 +153,7 @@ class OntologyRegistry {
109
153
  attributes: mergedAttrs
110
154
  };
111
155
  }
112
- }
156
+ };
113
157
 
114
158
  // src/core/ontology/builtins.ts
115
159
  var projectOntology = {
@@ -386,8 +430,7 @@ function validateEntity(entityId, store, registry) {
386
430
  }
387
431
  }
388
432
  for (const fact of facts) {
389
- if (fact.a === "type" || fact.a === "createdAt" || fact.a === "updatedAt")
390
- continue;
433
+ if (fact.a === "type" || fact.a === "createdAt" || fact.a === "updatedAt") continue;
391
434
  const attrDef = def.attributes.find((a) => a.name === fact.a);
392
435
  if (!attrDef) {
393
436
  warnings.push({
@@ -429,7 +472,7 @@ function validateEntity(entityId, store, registry) {
429
472
  });
430
473
  }
431
474
  }
432
- if (attrDef.min !== undefined) {
475
+ if (attrDef.min !== void 0) {
433
476
  if (typeof fact.v === "number" && fact.v < attrDef.min) {
434
477
  errors.push({
435
478
  entityId,
@@ -449,7 +492,7 @@ function validateEntity(entityId, store, registry) {
449
492
  });
450
493
  }
451
494
  }
452
- if (attrDef.max !== undefined) {
495
+ if (attrDef.max !== void 0) {
453
496
  if (typeof fact.v === "number" && fact.v > attrDef.max) {
454
497
  errors.push({
455
498
  entityId,
@@ -472,11 +515,9 @@ function validateEntity(entityId, store, registry) {
472
515
  }
473
516
  const links = store.getLinksByEntity(entityId);
474
517
  for (const link of links) {
475
- if (link.e1 !== entityId)
476
- continue;
518
+ if (link.e1 !== entityId) continue;
477
519
  const relDef = registry.getRelationDef(link.a);
478
- if (!relDef)
479
- continue;
520
+ if (!relDef) continue;
480
521
  if (!relDef.sourceTypes.includes(entityType)) {
481
522
  errors.push({
482
523
  entityId,
@@ -521,32 +562,26 @@ function validateStore(store, registry) {
521
562
  };
522
563
  }
523
564
  function validateAttrType(value, def) {
524
- if (def.type === "any")
525
- return null;
565
+ if (def.type === "any") return null;
526
566
  switch (def.type) {
527
567
  case "string":
528
- if (typeof value !== "string")
529
- return `Expected string, got ${typeof value}.`;
568
+ if (typeof value !== "string") return `Expected string, got ${typeof value}.`;
530
569
  break;
531
570
  case "number":
532
- if (typeof value !== "number")
533
- return `Expected number, got ${typeof value}.`;
571
+ if (typeof value !== "number") return `Expected number, got ${typeof value}.`;
534
572
  break;
535
573
  case "boolean":
536
- if (typeof value !== "boolean")
537
- return `Expected boolean, got ${typeof value}.`;
574
+ if (typeof value !== "boolean") return `Expected boolean, got ${typeof value}.`;
538
575
  break;
539
576
  case "date":
540
577
  if (typeof value === "string") {
541
- if (isNaN(Date.parse(value)))
542
- return `Expected ISO date string, got "${value}".`;
578
+ if (isNaN(Date.parse(value))) return `Expected ISO date string, got "${value}".`;
543
579
  } else if (!(value instanceof Date)) {
544
580
  return `Expected date, got ${typeof value}.`;
545
581
  }
546
582
  break;
547
583
  case "ref":
548
- if (typeof value !== "string")
549
- return `Expected entity reference (string), got ${typeof value}.`;
584
+ if (typeof value !== "string") return `Expected entity reference (string), got ${typeof value}.`;
550
585
  break;
551
586
  }
552
587
  return null;
@@ -558,45 +593,53 @@ function createValidationMiddleware(registry, options) {
558
593
  handleOp: (op, ctx, next) => {
559
594
  if (op.facts && op.facts.length > 0) {
560
595
  for (const fact of op.facts) {
561
- if (fact.a === "type")
562
- continue;
563
- if (fact.a === "createdAt" || fact.a === "updatedAt")
564
- continue;
596
+ if (fact.a === "type") continue;
597
+ if (fact.a === "createdAt" || fact.a === "updatedAt") continue;
565
598
  const typeFact = op.facts.find((f) => f.e === fact.e && f.a === "type");
566
- if (!typeFact)
567
- continue;
599
+ if (!typeFact) continue;
568
600
  const entityType = String(typeFact.v);
569
601
  const def = registry.getEntityDef(entityType);
570
602
  if (!def) {
571
603
  if (strict) {
572
- throw new Error(`[ontology-validator] Unknown entity type "${entityType}" for entity "${fact.e}".`);
604
+ throw new Error(
605
+ `[ontology-validator] Unknown entity type "${entityType}" for entity "${fact.e}".`
606
+ );
573
607
  }
574
608
  continue;
575
609
  }
576
610
  const attrDef = def.attributes.find((a) => a.name === fact.a);
577
611
  if (!attrDef) {
578
612
  if (strict) {
579
- throw new Error(`[ontology-validator] Unknown attribute "${fact.a}" for type "${entityType}".`);
613
+ throw new Error(
614
+ `[ontology-validator] Unknown attribute "${fact.a}" for type "${entityType}".`
615
+ );
580
616
  }
581
617
  continue;
582
618
  }
583
619
  const typeErr = validateAttrType(fact.v, attrDef);
584
620
  if (typeErr) {
585
- throw new Error(`[ontology-validator] Entity "${fact.e}" attribute "${fact.a}": ${typeErr}`);
621
+ throw new Error(
622
+ `[ontology-validator] Entity "${fact.e}" attribute "${fact.a}": ${typeErr}`
623
+ );
586
624
  }
587
625
  if (attrDef.enum && !attrDef.enum.includes(fact.v)) {
588
- throw new Error(`[ontology-validator] Entity "${fact.e}" attribute "${fact.a}": value "${fact.v}" not in [${attrDef.enum.join(", ")}].`);
626
+ throw new Error(
627
+ `[ontology-validator] Entity "${fact.e}" attribute "${fact.a}": value "${fact.v}" not in [${attrDef.enum.join(", ")}].`
628
+ );
589
629
  }
590
630
  }
591
631
  }
592
632
  if (op.links && op.links.length > 0) {
593
633
  for (const link of op.links) {
594
634
  const relDef = registry.getRelationDef(link.a);
595
- if (!relDef)
596
- continue;
597
- const sourceTypeFact = op.facts?.find((f) => f.e === link.e1 && f.a === "type");
635
+ if (!relDef) continue;
636
+ const sourceTypeFact = op.facts?.find(
637
+ (f) => f.e === link.e1 && f.a === "type"
638
+ );
598
639
  if (sourceTypeFact && !relDef.sourceTypes.includes(String(sourceTypeFact.v))) {
599
- throw new Error(`[ontology-validator] Relation "${link.a}": source type "${sourceTypeFact.v}" not allowed (expected: ${relDef.sourceTypes.join(", ")}).`);
640
+ throw new Error(
641
+ `[ontology-validator] Relation "${link.a}": source type "${sourceTypeFact.v}" not allowed (expected: ${relDef.sourceTypes.join(", ")}).`
642
+ );
600
643
  }
601
644
  }
602
645
  }
@@ -604,4 +647,14 @@ function createValidationMiddleware(registry, options) {
604
647
  }
605
648
  };
606
649
  }
607
- export { OntologyRegistry, projectOntology, teamOntology, agentOntology, builtinOntologies, validateEntity, validateStore, createValidationMiddleware };
650
+
651
+ export {
652
+ OntologyRegistry,
653
+ projectOntology,
654
+ teamOntology,
655
+ agentOntology,
656
+ builtinOntologies,
657
+ validateEntity,
658
+ validateStore,
659
+ createValidationMiddleware
660
+ };