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,359 @@
1
+ import {
2
+ TenantPool
3
+ } from "./chunk-VUJQLIML.js";
4
+ import {
5
+ readConfig
6
+ } from "./chunk-JA7AIHRK.js";
7
+
8
+ // src/client/sdk.ts
9
+ function isRemote(opts) {
10
+ return "url" in opts;
11
+ }
12
+ var TrellisDb = class _TrellisDb {
13
+ opts;
14
+ _pool = null;
15
+ _ws = null;
16
+ _subCallbacks = /* @__PURE__ */ new Map();
17
+ constructor(opts) {
18
+ this.opts = opts;
19
+ }
20
+ /**
21
+ * Create a TrellisDb instance from `.trellis-db.json` in the given directory.
22
+ */
23
+ static fromConfig(dir = ".") {
24
+ const config = readConfig(dir);
25
+ if (!config)
26
+ throw new Error(
27
+ "No .trellis-db.json found. Run `trellis db init` first."
28
+ );
29
+ if (config.mode === "remote" && config.url) {
30
+ return new _TrellisDb({ url: config.url, apiKey: config.apiKey });
31
+ }
32
+ if (config.dbPath) {
33
+ return new _TrellisDb({ path: config.dbPath });
34
+ }
35
+ throw new Error("Invalid .trellis-db.json: missing url or dbPath.");
36
+ }
37
+ // -------------------------------------------------------------------------
38
+ // CRUD
39
+ // -------------------------------------------------------------------------
40
+ /**
41
+ * Create a new entity.
42
+ * Returns the generated entity ID.
43
+ */
44
+ async create(type, attributes = {}, links) {
45
+ if (isRemote(this.opts)) {
46
+ const res = await this._fetch("POST", "/entities", {
47
+ type,
48
+ attributes,
49
+ links
50
+ });
51
+ return res.id;
52
+ }
53
+ const pool = this._getPool();
54
+ const tenantId = this.opts.tenantId ?? null;
55
+ const kernel = pool.get(tenantId);
56
+ const entityId = `${type.toLowerCase()}:${crypto.randomUUID()}`;
57
+ await kernel.createEntity(entityId, type, attributes, links);
58
+ return entityId;
59
+ }
60
+ /**
61
+ * Read an entity by ID.
62
+ * Returns null if not found.
63
+ */
64
+ async read(id) {
65
+ if (isRemote(this.opts)) {
66
+ try {
67
+ return await this._fetch(
68
+ "GET",
69
+ `/entities/${encodeURIComponent(id)}`
70
+ );
71
+ } catch (err) {
72
+ if (err?.status === 404) return null;
73
+ throw err;
74
+ }
75
+ }
76
+ const pool = this._getPool();
77
+ const tenantId = this.opts.tenantId ?? null;
78
+ const kernel = pool.get(tenantId);
79
+ const entity = kernel.getEntity(id);
80
+ if (!entity) return null;
81
+ return entityToPlain(entity);
82
+ }
83
+ /**
84
+ * Update an entity's attributes (partial update).
85
+ */
86
+ async update(id, attributes) {
87
+ if (isRemote(this.opts)) {
88
+ await this._fetch(
89
+ "PUT",
90
+ `/entities/${encodeURIComponent(id)}`,
91
+ attributes
92
+ );
93
+ return;
94
+ }
95
+ const pool = this._getPool();
96
+ const tenantId = this.opts.tenantId ?? null;
97
+ const kernel = pool.get(tenantId);
98
+ await kernel.updateEntity(id, attributes);
99
+ }
100
+ /**
101
+ * Delete an entity by ID.
102
+ */
103
+ async delete(id) {
104
+ if (isRemote(this.opts)) {
105
+ await this._fetch("DELETE", `/entities/${encodeURIComponent(id)}`);
106
+ return;
107
+ }
108
+ const pool = this._getPool();
109
+ const tenantId = this.opts.tenantId ?? null;
110
+ const kernel = pool.get(tenantId);
111
+ await kernel.deleteEntity(id);
112
+ }
113
+ /**
114
+ * List entities of a given type.
115
+ */
116
+ async list(type, opts = {}) {
117
+ if (isRemote(this.opts)) {
118
+ const params = new URLSearchParams();
119
+ if (type) params.set("type", type);
120
+ if (opts.limit) params.set("limit", String(opts.limit));
121
+ if (opts.offset) params.set("offset", String(opts.offset));
122
+ const qs = params.toString() ? `?${params}` : "";
123
+ return await this._fetch("GET", `/entities${qs}`);
124
+ }
125
+ const pool = this._getPool();
126
+ const tenantId = this.opts.tenantId ?? null;
127
+ const kernel = pool.get(tenantId);
128
+ const entities = kernel.listEntities(type, opts.filters);
129
+ const limit = opts.limit ?? 100;
130
+ const offset = opts.offset ?? 0;
131
+ const page = entities.slice(offset, offset + limit);
132
+ return {
133
+ data: page.map(entityToPlain),
134
+ total: entities.length,
135
+ limit,
136
+ offset
137
+ };
138
+ }
139
+ // -------------------------------------------------------------------------
140
+ // Query
141
+ // -------------------------------------------------------------------------
142
+ /**
143
+ * Run an EQL-S query string.
144
+ */
145
+ async query(eql) {
146
+ if (isRemote(this.opts)) {
147
+ return await this._fetch("POST", "/query", {
148
+ query: eql
149
+ });
150
+ }
151
+ const { parseSimple } = await import("./query-TJHEVSKL.js");
152
+ const { QueryEngine } = await import("./engine-NSR6BIF7.js");
153
+ const pool = this._getPool();
154
+ const tenantId = this.opts.tenantId ?? null;
155
+ const kernel = pool.get(tenantId);
156
+ const parsed = parseSimple(eql);
157
+ const engine = new QueryEngine(kernel.getStore());
158
+ return engine.execute(parsed);
159
+ }
160
+ // -------------------------------------------------------------------------
161
+ // File upload
162
+ // -------------------------------------------------------------------------
163
+ /**
164
+ * Upload a file to the blob store.
165
+ * Returns a content-addressed hash.
166
+ */
167
+ async upload(data, contentType = "application/octet-stream") {
168
+ const raw = data instanceof ArrayBuffer ? new Uint8Array(data) : data;
169
+ const cleanBuf = raw.buffer.slice(
170
+ raw.byteOffset,
171
+ raw.byteOffset + raw.byteLength
172
+ );
173
+ const buffer = new Uint8Array(cleanBuf);
174
+ if (isRemote(this.opts)) {
175
+ const res = await fetch(`${this.opts.url}/upload`, {
176
+ method: "POST",
177
+ headers: {
178
+ "Content-Type": contentType,
179
+ ...this.opts.apiKey ? { Authorization: `Bearer ${this.opts.apiKey}` } : {}
180
+ },
181
+ body: cleanBuf
182
+ });
183
+ if (!res.ok) throw new FetchError(res.status, await res.text());
184
+ return await res.json();
185
+ }
186
+ const hashBuf = await crypto.subtle.digest("SHA-256", buffer);
187
+ const hash = `blob:${Array.from(new Uint8Array(hashBuf)).map((b) => b.toString(16).padStart(2, "0")).join("")}`;
188
+ const pool = this._getPool();
189
+ const tenantId = this.opts.tenantId ?? null;
190
+ const kernel = pool.get(tenantId);
191
+ const backend = kernel.getBackend();
192
+ if (!backend.hasBlob(hash)) backend.putBlob(hash, buffer);
193
+ return { hash, size: buffer.length, contentType };
194
+ }
195
+ /**
196
+ * Download a file by its blob hash.
197
+ */
198
+ async getFile(hash) {
199
+ if (isRemote(this.opts)) {
200
+ const res = await fetch(
201
+ `${this.opts.url}/files/${encodeURIComponent(hash)}`,
202
+ {
203
+ headers: this.opts.apiKey ? { Authorization: `Bearer ${this.opts.apiKey}` } : {}
204
+ }
205
+ );
206
+ if (res.status === 404) return null;
207
+ if (!res.ok) throw new FetchError(res.status, await res.text());
208
+ return new Uint8Array(await res.arrayBuffer());
209
+ }
210
+ const pool = this._getPool();
211
+ const tenantId = this.opts.tenantId ?? null;
212
+ const kernel = pool.get(tenantId);
213
+ const backend = kernel.getBackend();
214
+ return backend.getBlob(hash) ?? null;
215
+ }
216
+ // -------------------------------------------------------------------------
217
+ // Auth helpers
218
+ // -------------------------------------------------------------------------
219
+ async register(email, password, name) {
220
+ if (!isRemote(this.opts))
221
+ throw new Error("register() requires remote mode");
222
+ return await this._fetch("POST", "/auth/register", {
223
+ email,
224
+ password,
225
+ name
226
+ });
227
+ }
228
+ async login(email, password) {
229
+ if (!isRemote(this.opts)) throw new Error("login() requires remote mode");
230
+ return await this._fetch("POST", "/auth/login", {
231
+ email,
232
+ password
233
+ });
234
+ }
235
+ /**
236
+ * Set the active API key / JWT token for subsequent requests.
237
+ */
238
+ setToken(token) {
239
+ if (!isRemote(this.opts)) return;
240
+ this.opts.apiKey = token;
241
+ }
242
+ // -------------------------------------------------------------------------
243
+ // Realtime
244
+ // -------------------------------------------------------------------------
245
+ /**
246
+ * Subscribe to a live EQL-S query.
247
+ * Callback is fired immediately with the initial result, then on every update.
248
+ *
249
+ * Requires remote mode (WebSocket to server).
250
+ */
251
+ subscribe(eql, callback) {
252
+ if (!isRemote(this.opts)) {
253
+ throw new Error(
254
+ "subscribe() requires remote mode (connect to a running server)"
255
+ );
256
+ }
257
+ const subId = `sub_${crypto.randomUUID()}`;
258
+ this._subCallbacks.set(subId, callback);
259
+ this._ensureWs().then((ws) => {
260
+ ws.send(JSON.stringify({ type: "subscribe", id: subId, query: eql }));
261
+ });
262
+ return {
263
+ unsubscribe: () => {
264
+ this._subCallbacks.delete(subId);
265
+ this._ws?.send(JSON.stringify({ type: "unsubscribe", id: subId }));
266
+ }
267
+ };
268
+ }
269
+ /**
270
+ * Close the WebSocket connection.
271
+ */
272
+ disconnect() {
273
+ this._ws?.close();
274
+ this._ws = null;
275
+ }
276
+ /**
277
+ * Close local kernel pool connections.
278
+ */
279
+ close() {
280
+ this._pool?.closeAll();
281
+ this._pool = null;
282
+ this.disconnect();
283
+ }
284
+ // -------------------------------------------------------------------------
285
+ // Private
286
+ // -------------------------------------------------------------------------
287
+ _getPool() {
288
+ if (!this._pool) {
289
+ const path = this.opts.path;
290
+ this._pool = new TenantPool(path);
291
+ }
292
+ return this._pool;
293
+ }
294
+ async _fetch(method, path, body) {
295
+ const opts = this.opts;
296
+ const url = `${opts.url}${path}`;
297
+ const res = await fetch(url, {
298
+ method,
299
+ headers: {
300
+ "Content-Type": "application/json",
301
+ ...opts.apiKey ? { Authorization: `Bearer ${opts.apiKey}` } : {}
302
+ },
303
+ body: body !== void 0 ? JSON.stringify(body) : void 0
304
+ });
305
+ const data = await res.json();
306
+ if (!res.ok)
307
+ throw new FetchError(
308
+ res.status,
309
+ data?.message ?? res.statusText,
310
+ data
311
+ );
312
+ return data;
313
+ }
314
+ async _ensureWs() {
315
+ if (this._ws && this._ws.readyState === WebSocket.OPEN) return this._ws;
316
+ const opts = this.opts;
317
+ const wsUrl = opts.url.replace(/^https?/, opts.url.startsWith("https") ? "wss" : "ws") + "/realtime";
318
+ return new Promise((resolve, reject) => {
319
+ const ws = new WebSocket(wsUrl);
320
+ ws.onopen = () => {
321
+ this._ws = ws;
322
+ resolve(ws);
323
+ };
324
+ ws.onerror = (e) => reject(e);
325
+ ws.onmessage = (e) => {
326
+ try {
327
+ const msg = JSON.parse(e.data);
328
+ if (msg.type === "data" && this._subCallbacks.has(msg.id)) {
329
+ this._subCallbacks.get(msg.id)(msg.result, msg.diff);
330
+ }
331
+ } catch {
332
+ }
333
+ };
334
+ ws.onclose = () => {
335
+ this._ws = null;
336
+ };
337
+ });
338
+ }
339
+ };
340
+ function entityToPlain(entity) {
341
+ const obj = { id: entity.id, type: entity.type };
342
+ for (const f of entity.facts) {
343
+ if (f.a !== "type") obj[f.a] = f.v;
344
+ }
345
+ return obj;
346
+ }
347
+ var FetchError = class extends Error {
348
+ constructor(status, message, body) {
349
+ super(`HTTP ${status}: ${message}`);
350
+ this.status = status;
351
+ this.body = body;
352
+ this.name = "FetchError";
353
+ }
354
+ };
355
+
356
+ export {
357
+ TrellisDb,
358
+ FetchError
359
+ };
@@ -0,0 +1,55 @@
1
+ import {
2
+ __esm
3
+ } from "./chunk-KFQGP6VL.js";
4
+
5
+ // src/vcs/ops.ts
6
+ async function hashVcsOp(op) {
7
+ const content = JSON.stringify({
8
+ kind: op.kind,
9
+ timestamp: op.timestamp,
10
+ agentId: op.agentId,
11
+ previousHash: op.previousHash,
12
+ vcs: op.vcs
13
+ });
14
+ const msgUint8 = new TextEncoder().encode(content);
15
+ const hashBuffer = await crypto.subtle.digest("SHA-256", msgUint8);
16
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
17
+ const hashHex = hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
18
+ return `trellis:op:${hashHex}`;
19
+ }
20
+ async function verifyVcsOpHash(op) {
21
+ return op.hash === await hashVcsOp(op);
22
+ }
23
+ async function createVcsOp(kind, params) {
24
+ const opBase = {
25
+ kind,
26
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
27
+ agentId: params.agentId,
28
+ previousHash: params.previousHash,
29
+ vcs: params.vcs
30
+ };
31
+ return {
32
+ ...opBase,
33
+ hash: await hashVcsOp(opBase)
34
+ };
35
+ }
36
+ function isVcsOp(op) {
37
+ return op.vcs !== void 0 || typeof op.kind === "string" && op.kind.startsWith("vcs:");
38
+ }
39
+ function isVcsOpKind(kind) {
40
+ return kind.startsWith("vcs:");
41
+ }
42
+ var init_ops = __esm({
43
+ "src/vcs/ops.ts"() {
44
+ "use strict";
45
+ }
46
+ });
47
+
48
+ export {
49
+ hashVcsOp,
50
+ verifyVcsOpHash,
51
+ createVcsOp,
52
+ isVcsOp,
53
+ isVcsOpKind,
54
+ init_ops
55
+ };
@@ -0,0 +1,113 @@
1
+ import {
2
+ entitiesQuery,
3
+ resolveRelations
4
+ } from "./chunk-7QQQNUB5.js";
5
+ import {
6
+ Signal
7
+ } from "./chunk-UBGUDMUV.js";
8
+
9
+ // src/client/live.ts
10
+ function liveQuery(client, eql) {
11
+ const signal = new Signal({
12
+ data: [],
13
+ loading: true,
14
+ error: null
15
+ });
16
+ let sub = null;
17
+ return {
18
+ signal,
19
+ start() {
20
+ if (sub) return () => stop();
21
+ try {
22
+ sub = client.subscribe(eql, (rows) => {
23
+ signal.value = { data: rows, loading: false, error: null };
24
+ });
25
+ } catch (err) {
26
+ signal.value = {
27
+ data: [],
28
+ loading: false,
29
+ error: err instanceof Error ? err : new Error(String(err))
30
+ };
31
+ }
32
+ return () => stop();
33
+ }
34
+ };
35
+ function stop() {
36
+ sub?.unsubscribe();
37
+ sub = null;
38
+ }
39
+ }
40
+ function normalizeLiveEntitiesOpts(whereOrOpts) {
41
+ if (!whereOrOpts) return {};
42
+ if ("resolve" in whereOrOpts || "where" in whereOrOpts) {
43
+ return whereOrOpts;
44
+ }
45
+ return { where: whereOrOpts };
46
+ }
47
+ function liveEntities(client, typeOrSchema, whereOrOpts) {
48
+ const schema = typeof typeOrSchema === "string" ? void 0 : typeOrSchema;
49
+ const type = typeof typeOrSchema === "string" ? typeOrSchema : typeOrSchema.type;
50
+ const { where, resolve } = normalizeLiveEntitiesOpts(whereOrOpts);
51
+ const signal = new Signal({
52
+ data: [],
53
+ loading: true,
54
+ error: null
55
+ });
56
+ let sub = null;
57
+ let token = 0;
58
+ return {
59
+ signal,
60
+ start() {
61
+ if (sub) return () => stop();
62
+ try {
63
+ sub = client.subscribe(
64
+ entitiesQuery(type, where),
65
+ (rows) => {
66
+ const turn = ++token;
67
+ const ids = rows.map((r) => r.e).filter(Boolean);
68
+ Promise.all(ids.map((id) => client.read(id))).then(async (entities) => {
69
+ if (turn !== token) return;
70
+ let data = entities.filter(
71
+ (e) => e != null
72
+ );
73
+ if (schema && resolve && Object.keys(resolve).length > 0) {
74
+ data = await resolveRelations(
75
+ client,
76
+ schema,
77
+ data,
78
+ resolve
79
+ );
80
+ }
81
+ if (turn !== token) return;
82
+ signal.value = { data, loading: false, error: null };
83
+ }).catch((err) => {
84
+ if (turn !== token) return;
85
+ signal.value = {
86
+ data: signal.peek().data,
87
+ loading: false,
88
+ error: err instanceof Error ? err : new Error(String(err))
89
+ };
90
+ });
91
+ }
92
+ );
93
+ } catch (err) {
94
+ signal.value = {
95
+ data: [],
96
+ loading: false,
97
+ error: err instanceof Error ? err : new Error(String(err))
98
+ };
99
+ }
100
+ return () => stop();
101
+ }
102
+ };
103
+ function stop() {
104
+ token++;
105
+ sub?.unsubscribe();
106
+ sub = null;
107
+ }
108
+ }
109
+
110
+ export {
111
+ liveQuery,
112
+ liveEntities
113
+ };