trellis 3.1.35 → 3.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/CHANGELOG.md +23 -5
  2. package/README.md +63 -156
  3. package/bin/trellis.mjs +2 -75
  4. package/dist/{better-sqlite-backend-ahx5p0br.js → better-sqlite-backend-2P4F6AOJ.js} +91 -29
  5. package/dist/boot-middleware-MHLHFCUC.js +9 -0
  6. package/dist/browser/index.d.ts +18 -0
  7. package/dist/browser/index.d.ts.map +1 -0
  8. package/dist/browser/index.js +95 -0
  9. package/dist/{index-53f3b8p8.js → chunk-2W3MHTMG.js} +552 -213
  10. package/dist/chunk-44FFQKQX.js +142 -0
  11. package/dist/chunk-4HYPLFJD.js +150 -0
  12. package/dist/chunk-4XIVMVHC.js +361 -0
  13. package/dist/{index-yp88he8n.js → chunk-6CTA6MCE.js} +88 -64
  14. package/dist/chunk-6GEZ6DN5.js +394 -0
  15. package/dist/chunk-7ZFRVCUE.js +211 -0
  16. package/dist/chunk-CAG4FULI.js +121 -0
  17. package/dist/chunk-FF36CQHZ.js +61 -0
  18. package/dist/{index-h32txmxe.js → chunk-FKQO5A3H.js} +6 -13
  19. package/dist/{index-nq520y6k.js → chunk-FWRS4CSC.js} +46 -32
  20. package/dist/chunk-GFZCJ4EH.js +108 -0
  21. package/dist/chunk-GLM4HGN4.js +55 -0
  22. package/dist/{index-4cdr7x2x.js → chunk-GU374KWZ.js} +182 -111
  23. package/dist/chunk-H6JB3PZ3.js +45 -0
  24. package/dist/chunk-IZX2PLIB.js +1240 -0
  25. package/dist/chunk-J2TXUFCZ.js +289 -0
  26. package/dist/chunk-J3WYZO3Q.js +211 -0
  27. package/dist/{index-xzym9w0m.js → chunk-JA7AIHRK.js} +12 -7
  28. package/dist/chunk-JHHEXEDM.js +162 -0
  29. package/dist/chunk-JUEMDWLU.js +233 -0
  30. package/dist/chunk-KFQGP6VL.js +33 -0
  31. package/dist/chunk-KIJITUZB.js +419 -0
  32. package/dist/{index-4wxa8xz4.js → chunk-KQ4A2D2P.js} +162 -23
  33. package/dist/chunk-KSU2GW22.js +958 -0
  34. package/dist/{index-rv1p47gp.js → chunk-L5N5PR2S.js} +3015 -2480
  35. package/dist/{index-h9e2efx4.js → chunk-LNUIGRDZ.js} +71 -55
  36. package/dist/{index-skhn0agf.js → chunk-MLC5BUYO.js} +19 -20
  37. package/dist/chunk-MPXUVGT3.js +104 -0
  38. package/dist/chunk-N6MYZT4O.js +68 -0
  39. package/dist/chunk-O2AV5WMN.js +48 -0
  40. package/dist/chunk-PZ4XYZ4J.js +143 -0
  41. package/dist/chunk-QB5ISE47.js +419 -0
  42. package/dist/chunk-RSWUFTO2.js +857 -0
  43. package/dist/chunk-S3XLFZ27.js +1095 -0
  44. package/dist/{index-w5wccer3.js → chunk-S6GBJ2ZB.js} +28 -12
  45. package/dist/{index-7pjz3tsy.js → chunk-SGMDTWJJ.js} +57 -15
  46. package/dist/chunk-SPSPV5BC.js +390 -0
  47. package/dist/chunk-TCKXSOBP.js +123 -0
  48. package/dist/chunk-UBGUDMUV.js +59 -0
  49. package/dist/{index-wt8rz4gn.js → chunk-UQISRW6T.js} +97 -26
  50. package/dist/chunk-USEINYUL.js +12 -0
  51. package/dist/{index-bmyt7k8n.js → chunk-UZRUP7QW.js} +12 -4
  52. package/dist/{index-xhcp6xrn.js → chunk-VBYUTRXX.js} +695 -514
  53. package/dist/{index-vkpkfwhq.js → chunk-VDAKEOML.js} +234 -194
  54. package/dist/chunk-WXSWA3MV.js +0 -0
  55. package/dist/{index-n9f2qyh5.js → chunk-X5FLTRUB.js} +55 -33
  56. package/dist/{index-h7zxhhhh.js → chunk-XMQ7G77X.js} +46 -38
  57. package/dist/{index-w7ng765c.js → chunk-YCM7ZYEZ.js} +102 -49
  58. package/dist/cli/deploy-cli.d.ts +18 -0
  59. package/dist/cli/deploy-cli.d.ts.map +1 -0
  60. package/dist/cli/errors.d.ts +6 -0
  61. package/dist/cli/errors.d.ts.map +1 -0
  62. package/dist/cli/examples.d.ts +23 -0
  63. package/dist/cli/examples.d.ts.map +1 -0
  64. package/dist/cli/index.d.ts +1 -1
  65. package/dist/cli/index.d.ts.map +1 -1
  66. package/dist/cli/index.js +2426 -6225
  67. package/dist/client/index.browser.d.ts +29 -0
  68. package/dist/client/index.browser.d.ts.map +1 -0
  69. package/dist/client/index.browser.js +64 -0
  70. package/dist/client/index.d.ts +6 -1
  71. package/dist/client/index.d.ts.map +1 -1
  72. package/dist/client/index.js +41 -21
  73. package/dist/client/live.d.ts +67 -0
  74. package/dist/client/live.d.ts.map +1 -0
  75. package/dist/client/reactive.d.ts +31 -0
  76. package/dist/client/reactive.d.ts.map +1 -0
  77. package/dist/client/sdk.browser.d.ts +104 -0
  78. package/dist/client/sdk.browser.d.ts.map +1 -0
  79. package/dist/client/sdk.browser.js +9 -0
  80. package/dist/client/sdk.d.ts +26 -2
  81. package/dist/client/sdk.d.ts.map +1 -1
  82. package/dist/client/sdk.js +9 -0
  83. package/dist/client/vcs-client.d.ts +129 -0
  84. package/dist/client/vcs-client.d.ts.map +1 -0
  85. package/dist/cms/index.js +171 -163
  86. package/dist/{config-8hczw0rs.js → config-PFTP67TR.js} +8 -9
  87. package/dist/core/computation/index.d.ts +5 -0
  88. package/dist/core/computation/index.d.ts.map +1 -0
  89. package/dist/core/computation/rollup.d.ts +18 -0
  90. package/dist/core/computation/rollup.d.ts.map +1 -0
  91. package/dist/core/index.d.ts +5 -0
  92. package/dist/core/index.d.ts.map +1 -1
  93. package/dist/core/index.js +171 -104
  94. package/dist/core/kernel/boot-middleware.d.ts +10 -0
  95. package/dist/core/kernel/boot-middleware.d.ts.map +1 -0
  96. package/dist/core/kernel/logic-middleware.d.ts +7 -1
  97. package/dist/core/kernel/logic-middleware.d.ts.map +1 -1
  98. package/dist/core/kernel/trellis-kernel.d.ts.map +1 -1
  99. package/dist/core/ontology/types.d.ts +5 -0
  100. package/dist/core/ontology/types.d.ts.map +1 -1
  101. package/dist/core/persist/better-sqlite-backend.d.ts +9 -2
  102. package/dist/core/persist/better-sqlite-backend.d.ts.map +1 -1
  103. package/dist/core/persist/factory.d.ts +6 -7
  104. package/dist/core/persist/factory.d.ts.map +1 -1
  105. package/dist/core/persist/factory.js +2 -3
  106. package/dist/core/persist/sqljs-backend.js +2 -3
  107. package/dist/db/index.d.ts +4 -1
  108. package/dist/db/index.d.ts.map +1 -1
  109. package/dist/db/index.js +67 -54
  110. package/dist/db/inspector.js +11 -19
  111. package/dist/db/trellis.css +1 -1
  112. package/dist/decisions/index.js +9 -10
  113. package/dist/deploy-LQ7GUGJ5.js +9 -0
  114. package/dist/deploy-YNVG5E4E.js +9 -0
  115. package/dist/deploy-cli-24BCHAXY.js +67 -0
  116. package/dist/deploy-cli-C35HTITO.js +67 -0
  117. package/dist/embeddings/auto-embed.d.ts +2 -2
  118. package/dist/embeddings/auto-embed.d.ts.map +1 -1
  119. package/dist/embeddings/index.js +20 -22
  120. package/dist/embeddings/search.d.ts +2 -1
  121. package/dist/embeddings/search.d.ts.map +1 -1
  122. package/dist/embeddings/store.d.ts +25 -4
  123. package/dist/embeddings/store.d.ts.map +1 -1
  124. package/dist/engine.d.ts +59 -19
  125. package/dist/engine.d.ts.map +1 -1
  126. package/dist/import-UZEKXU3B.js +10 -0
  127. package/dist/index.js +102 -93
  128. package/dist/launch-explorer-HZ4ZJA4X.js +95 -0
  129. package/dist/links/index.js +24 -26
  130. package/dist/mcp/server.d.ts.map +1 -1
  131. package/dist/plugins/agent-memory/index.js +316 -0
  132. package/dist/plugins/idea-garden/index.js +165 -0
  133. package/dist/plugins/plan-approval/index.js +579 -0
  134. package/dist/plugins/proactive-watcher/index.js +194 -0
  135. package/dist/{index-2r4jxwnb.js → query-XYLTJYSA.js} +14 -15
  136. package/dist/react/index.js +39 -70
  137. package/dist/react/realtime.js +11 -0
  138. package/dist/react/schema-hooks.js +87 -0
  139. package/dist/realtime/broadcast-channel-transport.d.ts +43 -0
  140. package/dist/realtime/broadcast-channel-transport.d.ts.map +1 -0
  141. package/dist/realtime/durable-object-relay-transport.d.ts +96 -0
  142. package/dist/realtime/durable-object-relay-transport.d.ts.map +1 -0
  143. package/dist/realtime/index.d.ts +44 -0
  144. package/dist/realtime/index.d.ts.map +1 -0
  145. package/dist/realtime/index.js +40 -0
  146. package/dist/realtime/memory-hub.d.ts +32 -0
  147. package/dist/realtime/memory-hub.d.ts.map +1 -0
  148. package/dist/realtime/persistent-channel.d.ts +105 -0
  149. package/dist/realtime/persistent-channel.d.ts.map +1 -0
  150. package/dist/realtime/presence.d.ts +73 -0
  151. package/dist/realtime/presence.d.ts.map +1 -0
  152. package/dist/realtime/relay-persistence.d.ts +37 -0
  153. package/dist/realtime/relay-persistence.d.ts.map +1 -0
  154. package/dist/realtime/relay-persistence.js +107 -0
  155. package/dist/realtime/relay-server.d.ts +103 -0
  156. package/dist/realtime/relay-server.d.ts.map +1 -0
  157. package/dist/realtime/room.d.ts +98 -0
  158. package/dist/realtime/room.d.ts.map +1 -0
  159. package/dist/realtime/text.d.ts +73 -0
  160. package/dist/realtime/text.d.ts.map +1 -0
  161. package/dist/realtime/types.d.ts +89 -0
  162. package/dist/realtime/types.d.ts.map +1 -0
  163. package/dist/realtime/websocket-relay-transport.d.ts +28 -0
  164. package/dist/realtime/websocket-relay-transport.d.ts.map +1 -0
  165. package/dist/realtime.bundle.js +1100 -0
  166. package/dist/{remote-manager-xvbg4230.js → remote-manager-ODE3T2KR.js} +25 -15
  167. package/dist/scaffold/seed.d.ts.map +1 -1
  168. package/dist/scaffold/write.d.ts +1 -1
  169. package/dist/scaffold/write.d.ts.map +1 -1
  170. package/dist/schema/define.d.ts +137 -0
  171. package/dist/schema/define.d.ts.map +1 -0
  172. package/dist/schema/entity-projection.d.ts +34 -0
  173. package/dist/schema/entity-projection.d.ts.map +1 -0
  174. package/dist/schema/eql.d.ts +46 -0
  175. package/dist/schema/eql.d.ts.map +1 -0
  176. package/dist/schema/index.d.ts +21 -0
  177. package/dist/schema/index.d.ts.map +1 -0
  178. package/dist/schema/index.js +46 -0
  179. package/dist/schema/kernel-resolve.d.ts +21 -0
  180. package/dist/schema/kernel-resolve.d.ts.map +1 -0
  181. package/dist/schema/mutations.d.ts +20 -0
  182. package/dist/schema/mutations.d.ts.map +1 -0
  183. package/dist/schema/resolve.d.ts +21 -0
  184. package/dist/schema/resolve.d.ts.map +1 -0
  185. package/dist/server/deploy-meta.d.ts +25 -0
  186. package/dist/server/deploy-meta.d.ts.map +1 -0
  187. package/dist/server/deploy.d.ts +7 -2
  188. package/dist/server/deploy.d.ts.map +1 -1
  189. package/dist/server/index.d.ts +7 -2
  190. package/dist/server/index.d.ts.map +1 -1
  191. package/dist/server/index.js +100 -58
  192. package/dist/server/node-adapter.js +5 -104
  193. package/dist/server/realtime.d.ts +14 -3
  194. package/dist/server/realtime.d.ts.map +1 -1
  195. package/dist/server/server.d.ts +8 -16
  196. package/dist/server/server.d.ts.map +1 -1
  197. package/dist/server/sprites.d.ts +18 -1
  198. package/dist/server/sprites.d.ts.map +1 -1
  199. package/dist/server/tenancy.d.ts +4 -0
  200. package/dist/server/tenancy.d.ts.map +1 -1
  201. package/dist/server/usage-meter.d.ts +53 -0
  202. package/dist/server/usage-meter.d.ts.map +1 -0
  203. package/dist/server-MB3OPSPI.js +18 -0
  204. package/dist/server-ZVWGLLRF.js +18 -0
  205. package/dist/sprites-KQGTGM6W.js +27 -0
  206. package/dist/{sprites-vc4qbrp1.js → sprites-RU3E4XQN.js} +6 -7
  207. package/dist/svelte/index.d.ts +17 -0
  208. package/dist/svelte/index.d.ts.map +1 -0
  209. package/dist/svelte/index.js +51 -0
  210. package/dist/svelte/schema-hooks.d.ts +45 -0
  211. package/dist/svelte/schema-hooks.d.ts.map +1 -0
  212. package/dist/svelte/schema-hooks.js +71 -0
  213. package/dist/svelte/stores.d.ts +78 -0
  214. package/dist/svelte/stores.d.ts.map +1 -0
  215. package/dist/sync/http-transport.d.ts +3 -3
  216. package/dist/sync/http-transport.d.ts.map +1 -1
  217. package/dist/sync/index.d.ts +15 -1
  218. package/dist/sync/index.d.ts.map +1 -1
  219. package/dist/sync/index.js +617 -0
  220. package/dist/sync/memory-room.d.ts +37 -0
  221. package/dist/sync/memory-room.d.ts.map +1 -0
  222. package/dist/sync/memory-transport.d.ts +3 -3
  223. package/dist/sync/memory-transport.d.ts.map +1 -1
  224. package/dist/sync/partykit-room.d.ts +40 -0
  225. package/dist/sync/partykit-room.d.ts.map +1 -0
  226. package/dist/sync/partykit-transport.d.ts +84 -0
  227. package/dist/sync/partykit-transport.d.ts.map +1 -0
  228. package/dist/sync/room-core.d.ts +53 -0
  229. package/dist/sync/room-core.d.ts.map +1 -0
  230. package/dist/sync/sync-engine.d.ts +40 -2
  231. package/dist/sync/sync-engine.d.ts.map +1 -1
  232. package/dist/sync/sync-room-server.d.ts +39 -0
  233. package/dist/sync/sync-room-server.d.ts.map +1 -0
  234. package/dist/sync/types.d.ts +70 -3
  235. package/dist/sync/types.d.ts.map +1 -1
  236. package/dist/sync/vcs-sync-peer.d.ts +63 -0
  237. package/dist/sync/vcs-sync-peer.d.ts.map +1 -0
  238. package/dist/sync/ws-transport.d.ts +2 -2
  239. package/dist/sync/ws-transport.d.ts.map +1 -1
  240. package/dist/tenancy-NBLLGCNJ.js +14 -0
  241. package/dist/tenancy-POMWQP6M.js +16 -0
  242. package/dist/ui/client.html +355 -67
  243. package/dist/ui/launch-explorer.d.ts +22 -0
  244. package/dist/ui/launch-explorer.d.ts.map +1 -0
  245. package/dist/ui/server.d.ts +1 -1
  246. package/dist/ui/server.d.ts.map +1 -1
  247. package/dist/vcs/blob-store.d.ts.map +1 -1
  248. package/dist/vcs/idb-op-log.d.ts +67 -0
  249. package/dist/vcs/idb-op-log.d.ts.map +1 -0
  250. package/dist/vcs/index.d.ts +1 -0
  251. package/dist/vcs/index.d.ts.map +1 -1
  252. package/dist/vcs/index.js +81 -72
  253. package/dist/vcs/issue.d.ts +22 -5
  254. package/dist/vcs/issue.d.ts.map +1 -1
  255. package/dist/vcs/lane-materialize.d.ts +5 -0
  256. package/dist/vcs/lane-materialize.d.ts.map +1 -1
  257. package/dist/vcs/op-log.d.ts +28 -2
  258. package/dist/vcs/op-log.d.ts.map +1 -1
  259. package/dist/vcs/ops.d.ts +10 -0
  260. package/dist/vcs/ops.d.ts.map +1 -1
  261. package/dist/vcs/types.d.ts +2 -0
  262. package/dist/vcs/types.d.ts.map +1 -1
  263. package/dist/{vm-config-6xhsj6b3.js → vm-config-JI4OXKDQ.js} +9 -10
  264. package/dist/vue/hooks.d.ts +64 -0
  265. package/dist/vue/hooks.d.ts.map +1 -0
  266. package/dist/vue/index.d.ts +19 -0
  267. package/dist/vue/index.d.ts.map +1 -0
  268. package/dist/vue/index.js +59 -0
  269. package/dist/vue/schema-hooks.d.ts +41 -0
  270. package/dist/vue/schema-hooks.d.ts.map +1 -0
  271. package/dist/vue/schema-hooks.js +64 -0
  272. package/package.json +130 -17
  273. package/dist/deploy-999q207z.js +0 -10
  274. package/dist/engine-y0724kjq.js +0 -8
  275. package/dist/import-s2b8e0ft.js +0 -11
  276. package/dist/index-a76rekgs.js +0 -67
  277. package/dist/index-c9h37r6h.js +0 -1
  278. package/dist/index-hr9qvv77.js +0 -860
  279. package/dist/index-k5b0xskw.js +0 -1
  280. package/dist/index-nzb3am4f.js +0 -80
  281. package/dist/index-wncptktd.js +0 -292
  282. package/dist/index-y6a4kj0p.js +0 -43
  283. package/dist/index-yhwjgfvj.js +0 -342
  284. package/dist/sdk-bepky0xs.js +0 -16
  285. package/dist/server-szdjx0nt.js +0 -13
  286. package/dist/sqlite-backend-0vsmc6qj.js +0 -8
  287. package/dist/tenancy-pjm32b4v.js +0 -14
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACnE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGnE,OAAO,EACL,WAAW,EACX,OAAO,EACP,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAGxE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,UAAU,EACV,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG/E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,YAAY,EACV,YAAY,IAAI,oBAAoB,EACpC,QAAQ,GACT,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG/D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG/D,OAAO,EACL,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,aAAa,GACd,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,WAAW,EACX,aAAa,EACb,eAAe,EACf,SAAS,EACT,QAAQ,GACT,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACnE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGnE,OAAO,EACL,WAAW,EACX,OAAO,EACP,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAGxE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,UAAU,EACV,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG/E,OAAO,EACL,UAAU,EACV,cAAc,EACd,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,YAAY,EACV,YAAY,IAAI,oBAAoB,EACpC,QAAQ,GACT,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,MAAM,GACP,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,SAAS,EACT,SAAS,EACT,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG/D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,YAAY,EACZ,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,WAAW,EACX,aAAa,EACb,eAAe,EACf,SAAS,EACT,QAAQ,GACT,MAAM,gBAAgB,CAAC"}
@@ -1,12 +1,7 @@
1
- // @bun
2
- import"../index-c9h37r6h.js";
3
1
  import {
4
- importFile,
5
- importRecords
6
- } from "../index-skhn0agf.js";
7
- import {
8
- deploy
9
- } from "../index-wt8rz4gn.js";
2
+ attachRealtimeRelay,
3
+ createRealtimeRelay
4
+ } from "../chunk-PZ4XYZ4J.js";
10
5
  import {
11
6
  getActiveSprite,
12
7
  getSprite,
@@ -16,14 +11,15 @@ import {
16
11
  setActiveSprite,
17
12
  trackSprite,
18
13
  untrackSprite
19
- } from "../index-bmyt7k8n.js";
14
+ } from "../chunk-UZRUP7QW.js";
20
15
  import {
21
- assertSpriteCli,
22
- resolveSprite,
23
- runSpriteCmd,
24
- runSpriteCopy,
25
- runSpriteInteractive
26
- } from "../index-y6a4kj0p.js";
16
+ DeployNameError,
17
+ SPRITE_PUBLIC_HTTP_PORT,
18
+ buildDeployUrl,
19
+ deploy,
20
+ normalizeDeployName,
21
+ validateDeployName
22
+ } from "../chunk-7ZFRVCUE.js";
27
23
  import {
28
24
  ADMIN_ONLY,
29
25
  ANONYMOUS,
@@ -35,59 +31,105 @@ import {
35
31
  PermissionError,
36
32
  PermissionRegistry,
37
33
  SubscriptionManager,
34
+ UsageMeter,
38
35
  buildOAuthUrl,
36
+ dayKey,
39
37
  exchangeOAuthCode,
40
38
  resolveAuth,
39
+ resolveUsageTenantId,
40
+ sampleTenantStorage,
41
41
  signJwt,
42
42
  startServer,
43
43
  startServerCrossRuntime,
44
+ verifyAdminKey,
44
45
  verifyJwt
45
- } from "../index-53f3b8p8.js";
46
- import"../index-n9f2qyh5.js";
47
- import"../index-xzym9w0m.js";
46
+ } from "../chunk-2W3MHTMG.js";
48
47
  import {
49
48
  DEFAULT_TENANT,
50
- TenantPool
51
- } from "../index-7pjz3tsy.js";
52
- import"../index-4wxa8xz4.js";
53
- import"../index-yp88he8n.js";
54
- import"../index-yhwjgfvj.js";
55
- import"../index-h7zxhhhh.js";
56
- import"../index-a76rekgs.js";
57
- export {
58
- verifyJwt,
59
- untrackSprite,
60
- trackSprite,
61
- startServerCrossRuntime,
62
- startServer,
63
- signJwt,
64
- setActiveSprite,
65
- saveVmConfig,
66
- runSpriteInteractive,
67
- runSpriteCopy,
68
- runSpriteCmd,
69
- resolveSprite,
70
- resolveAuth,
71
- loadVmConfig,
72
- isSpriteTracked,
73
- importRecords,
49
+ TenantPool,
50
+ resolvePoolBackendFromEnv
51
+ } from "../chunk-JHHEXEDM.js";
52
+ import {
74
53
  importFile,
75
- getSprite,
76
- getActiveSprite,
77
- exchangeOAuthCode,
78
- deploy,
79
- buildOAuthUrl,
54
+ importRecords
55
+ } from "../chunk-MLC5BUYO.js";
56
+ import {
57
+ SPRITE_ENSURE_BUN_SH,
80
58
  assertSpriteCli,
81
- TenantPool,
82
- SubscriptionManager,
83
- PermissionRegistry,
84
- PermissionError,
85
- PUBLIC_READ,
86
- OWNER_ONLY,
87
- GOOGLE_PROVIDER,
88
- GITHUB_PROVIDER,
89
- FULLY_PUBLIC,
90
- DEFAULT_TENANT,
59
+ ensureSprite,
60
+ ensureSpritePublicAccess,
61
+ parseSpriteUrlOutput,
62
+ resolveSprite,
63
+ resolveSpritePublicUrl,
64
+ runSpriteCmd,
65
+ runSpriteCopy,
66
+ runSpriteExec,
67
+ runSpriteInteractive
68
+ } from "../chunk-CAG4FULI.js";
69
+ import "../chunk-JA7AIHRK.js";
70
+ import "../chunk-44FFQKQX.js";
71
+ import "../chunk-JUEMDWLU.js";
72
+ import "../chunk-SPSPV5BC.js";
73
+ import "../chunk-X5FLTRUB.js";
74
+ import "../chunk-XMQ7G77X.js";
75
+ import "../chunk-KQ4A2D2P.js";
76
+ import "../chunk-6CTA6MCE.js";
77
+ import "../chunk-4XIVMVHC.js";
78
+ import "../chunk-GFZCJ4EH.js";
79
+ import "../chunk-KFQGP6VL.js";
80
+ export {
81
+ ADMIN_ONLY,
91
82
  ANONYMOUS,
92
- ADMIN_ONLY
83
+ DEFAULT_TENANT,
84
+ DeployNameError,
85
+ FULLY_PUBLIC,
86
+ GITHUB_PROVIDER,
87
+ GOOGLE_PROVIDER,
88
+ OWNER_ONLY,
89
+ PUBLIC_READ,
90
+ PermissionError,
91
+ PermissionRegistry,
92
+ SPRITE_ENSURE_BUN_SH,
93
+ SPRITE_PUBLIC_HTTP_PORT,
94
+ SubscriptionManager,
95
+ TenantPool,
96
+ UsageMeter,
97
+ assertSpriteCli,
98
+ attachRealtimeRelay,
99
+ buildDeployUrl,
100
+ buildOAuthUrl,
101
+ createRealtimeRelay,
102
+ dayKey,
103
+ deploy,
104
+ ensureSprite,
105
+ ensureSpritePublicAccess,
106
+ exchangeOAuthCode,
107
+ getActiveSprite,
108
+ getSprite,
109
+ importFile,
110
+ importRecords,
111
+ isSpriteTracked,
112
+ loadVmConfig,
113
+ normalizeDeployName,
114
+ parseSpriteUrlOutput,
115
+ resolveAuth,
116
+ resolvePoolBackendFromEnv,
117
+ resolveSprite,
118
+ resolveSpritePublicUrl,
119
+ resolveUsageTenantId,
120
+ runSpriteCmd,
121
+ runSpriteCopy,
122
+ runSpriteExec,
123
+ runSpriteInteractive,
124
+ sampleTenantStorage,
125
+ saveVmConfig,
126
+ setActiveSprite,
127
+ signJwt,
128
+ startServer,
129
+ startServerCrossRuntime,
130
+ trackSprite,
131
+ untrackSprite,
132
+ validateDeployName,
133
+ verifyAdminKey,
134
+ verifyJwt
93
135
  };
@@ -1,108 +1,9 @@
1
- // @bun
2
1
  import {
3
- __require
4
- } from "../index-a76rekgs.js";
5
-
6
- // src/server/node-adapter.ts
7
- async function startNodeServer(opts) {
8
- const http = await import("http");
9
- let WebSocketServer;
10
- try {
11
- ({ WebSocketServer } = await import("ws"));
12
- } catch {
13
- throw new Error('Running the Trellis server outside Bun requires the optional dependency "ws". Install it: npm install ws');
14
- }
15
- const httpServer = http.createServer(async (req, res) => {
16
- try {
17
- const fetchReq = await toFetchRequest(req);
18
- const fetchRes = await opts.fetch(fetchReq);
19
- await writeFetchResponse(res, fetchRes);
20
- } catch (err) {
21
- const msg = err instanceof Error ? err.message : String(err);
22
- res.statusCode = 500;
23
- res.setHeader("Content-Type", "application/json");
24
- res.end(JSON.stringify({ error: "Internal Server Error", message: msg }));
25
- }
26
- });
27
- const wss = new WebSocketServer({ noServer: true });
28
- httpServer.on("upgrade", (req, socket, head) => {
29
- wss.handleUpgrade(req, socket, head, (ws) => {
30
- wss.emit("connection", ws, req);
31
- });
32
- });
33
- wss.on("connection", (ws) => {
34
- Promise.resolve(opts.websocket.open(ws)).catch(() => {});
35
- ws.on("message", (raw) => {
36
- const data = Array.isArray(raw) ? Buffer.concat(raw).toString() : raw instanceof ArrayBuffer ? Buffer.from(raw).toString() : raw.toString();
37
- Promise.resolve(opts.websocket.message(ws, data)).catch(() => {});
38
- });
39
- ws.on("close", () => opts.websocket.close(ws));
40
- });
41
- await new Promise((resolve) => httpServer.listen(opts.port, opts.hostname, resolve));
42
- const addr = httpServer.address();
43
- const boundPort = typeof addr === "object" && addr ? addr.port : opts.port;
44
- const boundHost = typeof addr === "object" && addr ? addr.address : opts.hostname;
45
- return wrapNodeServer(httpServer, wss, boundPort, boundHost);
46
- }
47
- async function toFetchRequest(req) {
48
- const host = req.headers.host ?? "localhost";
49
- const protocol = req.socket?.encrypted ? "https" : "http";
50
- const url = `${protocol}://${host}${req.url ?? "/"}`;
51
- const method = req.method ?? "GET";
52
- const headers = new Headers;
53
- for (const [key, value] of Object.entries(req.headers)) {
54
- if (Array.isArray(value)) {
55
- for (const v of value)
56
- headers.append(key, v);
57
- } else if (value != null) {
58
- headers.set(key, value);
59
- }
60
- }
61
- const hasBody = method !== "GET" && method !== "HEAD";
62
- const body = hasBody ? new Uint8Array(await readBody(req)) : undefined;
63
- return new Request(url, { method, headers, body });
64
- }
65
- function readBody(req) {
66
- return new Promise((resolve, reject) => {
67
- const chunks = [];
68
- req.on("data", (c) => chunks.push(c));
69
- req.on("end", () => resolve(Buffer.concat(chunks)));
70
- req.on("error", reject);
71
- });
72
- }
73
- async function writeFetchResponse(res, fetchRes) {
74
- res.statusCode = fetchRes.status;
75
- fetchRes.headers.forEach((value, key) => res.setHeader(key, value));
76
- if (!fetchRes.body) {
77
- res.end();
78
- return;
79
- }
80
- const reader = fetchRes.body.getReader();
81
- while (true) {
82
- const { done, value } = await reader.read();
83
- if (done)
84
- break;
85
- res.write(value);
86
- }
87
- res.end();
88
- }
89
- function wrapNodeServer(httpServer, wss, port, hostname) {
90
- return {
91
- port,
92
- hostname: hostname ?? "localhost",
93
- stop(closeActiveConnections) {
94
- return new Promise((resolve, reject) => {
95
- if (closeActiveConnections) {
96
- for (const client of wss.clients)
97
- client.terminate();
98
- }
99
- wss.close(() => {
100
- httpServer.close((err) => err ? reject(err) : resolve());
101
- });
102
- });
103
- }
104
- };
105
- }
2
+ init_node_adapter,
3
+ startNodeServer
4
+ } from "../chunk-TCKXSOBP.js";
5
+ import "../chunk-KFQGP6VL.js";
6
+ init_node_adapter();
106
7
  export {
107
8
  startNodeServer
108
9
  };
@@ -10,19 +10,23 @@
10
10
  * Protocol (JSON over WebSocket):
11
11
  *
12
12
  * Client → Server:
13
- * { type: "subscribe", id: "sub_1", query: "find Post where ...", tenantId?: "t1" }
13
+ * { type: "subscribe", id: "sub_1", query: "find Post where ...",
14
+ * entityType?: "Post", resolve?: { author: true }, tenantId?: "t1" }
14
15
  * { type: "unsubscribe", id: "sub_1" }
15
16
  * { type: "ping" }
16
17
  *
17
18
  * Server → Client:
18
19
  * { type: "subscribed", id: "sub_1" }
19
- * { type: "data", id: "sub_1", result: [...], diff: { added, updated, removed } }
20
+ * { type: "data", id: "sub_1", result: [...], diff: { added, updated, removed },
21
+ * resolved?: true }
20
22
  * { type: "error", id: "sub_1", message: "..." }
21
23
  * { type: "pong" }
22
24
  *
23
25
  * @module trellis/server
24
26
  */
27
+ import type { ResolveSpec } from '../schema/resolve.js';
25
28
  import type { TenantPool } from './tenancy.js';
29
+ import type { UsageMeter } from './usage-meter.js';
26
30
  import type { AuthContext } from './auth.js';
27
31
  import type { PermissionRegistry } from './permissions.js';
28
32
  export interface Subscription {
@@ -31,6 +35,9 @@ export interface Subscription {
31
35
  tenantId: string | null;
32
36
  auth: AuthContext;
33
37
  lastResult: Record<string, unknown>[];
38
+ /** Entity type name — enables server-side `resolve` expansion. */
39
+ entityType?: string;
40
+ resolve?: ResolveSpec;
34
41
  }
35
42
  export interface WsClient {
36
43
  id: string;
@@ -47,6 +54,8 @@ export type RealtimeMessage = {
47
54
  id: string;
48
55
  query: string;
49
56
  tenantId?: string;
57
+ entityType?: string;
58
+ resolve?: ResolveSpec;
50
59
  } | {
51
60
  type: 'unsubscribe';
52
61
  id: string;
@@ -61,7 +70,8 @@ export declare class SubscriptionManager {
61
70
  private clients;
62
71
  private pool;
63
72
  private permissions;
64
- constructor(pool: TenantPool, permissions?: PermissionRegistry | null);
73
+ private meter;
74
+ constructor(pool: TenantPool, permissions?: PermissionRegistry | null, meter?: UsageMeter | null);
65
75
  addClient(clientId: string, ws: WsClient['ws'], auth: AuthContext, tenantId: string | null): void;
66
76
  removeClient(clientId: string): void;
67
77
  handleMessage(clientId: string, raw: string): Promise<void>;
@@ -73,6 +83,7 @@ export declare class SubscriptionManager {
73
83
  get clientCount(): number;
74
84
  private _handleSubscribe;
75
85
  private _pushUpdate;
86
+ private _recordGraphIo;
76
87
  private _send;
77
88
  }
78
89
  //# sourceMappingURL=realtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/server/realtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAM3D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE;QAAE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAMrB;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,WAAW,CAA4B;gBAEnC,IAAI,EAAE,UAAU,EAAE,WAAW,GAAE,kBAAkB,GAAG,IAAW;IAS3E,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAClB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,IAAI;IAUP,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ9B,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCjE;;;OAGG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBpD,IAAI,WAAW,IAAI,MAAM,CAExB;YAMa,gBAAgB;YAqDhB,WAAW;IAsBzB,OAAO,CAAC,KAAK;CAOd"}
1
+ {"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/server/realtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAM3D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACtC,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE;QAAE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,GACD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAMrB;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,KAAK,CAAoB;gBAG/B,IAAI,EAAE,UAAU,EAChB,WAAW,GAAE,kBAAkB,GAAG,IAAW,EAC7C,KAAK,GAAE,UAAU,GAAG,IAAW;IAWjC,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAClB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,IAAI;IAUP,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ9B,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCjE;;;OAGG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBpD,IAAI,WAAW,IAAI,MAAM,CAExB;YAMa,gBAAgB;YAqEhB,WAAW;IA2CzB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,KAAK;CAYd"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Trellis Server — HTTP + WebSocket Server
3
3
  *
4
- * Bun-native server (no Express) exposing REST + realtime endpoints.
4
+ * Node-compatible server (no Express) exposing REST + realtime endpoints.
5
5
  *
6
6
  * REST:
7
7
  * POST /entities Create entity
@@ -13,6 +13,7 @@
13
13
  * POST /upload File upload → blob hash
14
14
  * GET /files/:hash Download blob
15
15
  * GET /health Health check
16
+ * GET /admin/usage?tenant=<id> Day-bucket usage (TURTLEDB_ADMIN_KEY)
16
17
  *
17
18
  * Auth:
18
19
  * POST /auth/login Email+password → JWT
@@ -38,23 +39,14 @@ export interface ServerConfig {
38
39
  oauthProviders?: Record<string, import('./auth.js').OAuthProvider>;
39
40
  }
40
41
  /**
41
- * Start the Trellis DB HTTP + WebSocket server under Bun.
42
+ * Start the Trellis DB HTTP + WebSocket server.
42
43
  *
43
- * For runtime-portable code that may also run under Node or WebContainer,
44
- * use `startServerCrossRuntime` instead — it dispatches to either Bun.serve
45
- * or a Node http+ws adapter based on the host runtime.
44
+ * Uses Node's `node:http` + the `ws` library. Works in Node and WebContainer.
46
45
  */
47
- export declare function startServer(opts: ServerConfig): ReturnType<typeof Bun.serve>;
46
+ export declare function startServer(opts: ServerConfig): Promise<TrellisHttpServer>;
48
47
  /**
49
- * Runtime-dispatched server boot. Use this when your code might run outside
50
- * Bun (Node, WebContainer, browser).
51
- *
52
- * - Under Bun, this calls `Bun.serve` and returns the Bun server wrapped
53
- * in a `TrellisHttpServer` interface.
54
- * - Under Node, uses `node:http` + the `ws` library (optional dependency).
55
- *
56
- * Returns a `Promise<TrellisHttpServer>` — the minimal cross-runtime surface
57
- * with `.port` / `.stop()`.
48
+ * Alias for `startServer` kept for API compatibility with callers that
49
+ * previously used the cross-runtime dispatch path.
58
50
  */
59
- export declare function startServerCrossRuntime(opts: ServerConfig): Promise<TrellisHttpServer>;
51
+ export declare const startServerCrossRuntime: typeof startServer;
60
52
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAWH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAU/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAM5D,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,WAAW,EAAE,aAAa,CAAC,CAAC;CACpE;AAMD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAE5E;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,iBAAiB,CAAC,CAU5B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAcH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAU/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAQ3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAM5D,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,WAAW,EAAE,aAAa,CAAC,CAAC;CACpE;AAMD;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,iBAAiB,CAAC,CAE5B;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,oBAAc,CAAC"}
@@ -8,9 +8,26 @@
8
8
  */
9
9
  export declare function runSpriteCmd(args: string[]): Promise<string>;
10
10
  /**
11
- * Copy a file to/from a sprite using sprite cp.
11
+ * Run a remote shell command on a sprite (`bash -c`).
12
+ * Wraps commands so flags like `mkdir -p` are not parsed as sprite CLI flags.
13
+ */
14
+ export declare function runSpriteExec(spriteName: string, shellCommand: string, extraArgs?: string[]): Promise<string>;
15
+ /**
16
+ * Upload a local file to a sprite via `exec --file` (Sprites CLI has no `cp` subcommand).
12
17
  */
13
18
  export declare function runSpriteCopy(localPath: string, spriteName: string, remotePath: string): Promise<void>;
19
+ /** Remote shell snippet: install Bun if missing and print resolved binary path. */
20
+ export declare const SPRITE_ENSURE_BUN_SH: string;
21
+ /** Parse `sprite url` stdout → `https://…` (no trailing slash). */
22
+ export declare function parseSpriteUrlOutput(stdout: string): string;
23
+ /** Resolve the sprite's assigned public HTTPS URL (`sprite url -s <name>`). */
24
+ export declare function resolveSpritePublicUrl(spriteName: string): Promise<string>;
25
+ /** Make the sprite URL reachable without org auth (TurtleDB API uses its own key). */
26
+ export declare function ensureSpritePublicAccess(spriteName: string): Promise<void>;
27
+ /**
28
+ * Create a sprite if it does not already exist.
29
+ */
30
+ export declare function ensureSprite(spriteName: string): Promise<void>;
14
31
  /**
15
32
  * Run a sprite command with inherited stdio (for interactive commands).
16
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sprites.d.ts","sourceRoot":"","sources":["../../src/server/sprites.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAYlE;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxE;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAMrD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAS3D"}
1
+ {"version":3,"file":"sprites.d.ts","sourceRoot":"","sources":["../../src/server/sprites.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CASlE;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,QAQzB,CAAC;AAET,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAM3D;AAED,+EAA+E;AAC/E,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhF;AAED,sFAAsF;AACtF,wBAAsB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQhF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAUxE;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAMrD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAS3D"}
@@ -11,6 +11,8 @@
11
11
  import { TrellisKernel } from '../core/kernel/trellis-kernel.js';
12
12
  import type { CreateKernelBackendOptions } from '../core/persist/factory.js';
13
13
  export declare const DEFAULT_TENANT = "default";
14
+ /** `TRELLIS_BACKEND=sqljs|better-sqlite` for `trellis db serve` and custom hosts. */
15
+ export declare function resolvePoolBackendFromEnv(): CreateKernelBackendOptions | undefined;
14
16
  /**
15
17
  * A pool of `TrellisKernel` instances keyed by tenant ID.
16
18
  *
@@ -67,6 +69,8 @@ export declare class TenantPool {
67
69
  * Close all kernels and clear the pool.
68
70
  */
69
71
  closeAll(): void;
72
+ /** Absolute path to the tenant data directory. */
73
+ dataPath(): string;
70
74
  /**
71
75
  * Return the SQLite file path for a given tenant.
72
76
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tenancy.d.ts","sourceRoot":"","sources":["../../src/server/tenancy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAM7E,eAAO,MAAM,cAAc,YAAY,CAAC;AAOxC;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,0BAA0B,CAAC;CACtC;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAyC;IACrD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAyC;gBAG1D,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAM,GAAG,iBAAgC;IAiB1D;;;;;;;OAOG;IACH,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa;IAQ5C;;;;;;;OAOG;IACG,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;IAS/D;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ7B;;OAEG;IACH,QAAQ,IAAI,IAAI;IAOhB;;OAEG;IACH,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAY5C,OAAO,CAAC,iBAAiB;YAMX,kBAAkB;IAShC,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;CASpB"}
1
+ {"version":3,"file":"tenancy.d.ts","sourceRoot":"","sources":["../../src/server/tenancy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAIjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAM7E,eAAO,MAAM,cAAc,YAAY,CAAC;AAGxC,qFAAqF;AACrF,wBAAgB,yBAAyB,IACrC,0BAA0B,GAC1B,SAAS,CAKZ;AAMD;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,0BAA0B,CAAC;CACtC;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAyC;IACrD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAyC;gBAG1D,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAM,GAAG,iBAAgC;IAiB1D;;;;;;;OAOG;IACH,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa;IAiB5C;;;;;;;OAOG;IACG,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;IAS/D;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ7B;;OAEG;IACH,QAAQ,IAAI,IAAI;IAOhB,kDAAkD;IAClD,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAY5C,OAAO,CAAC,iBAAiB;YAMX,kBAAkB;IAShC,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;CASpB"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * TurtleDB Cloud — in-process usage counters (C1 stub).
3
+ *
4
+ * Per-tenant day buckets for graph I/O, storage, and egress.
5
+ * Report-only — broker pull / Stripe wiring is C1.1.
6
+ *
7
+ * @module trellis/server
8
+ */
9
+ import type { TenantPool } from './tenancy.js';
10
+ export type MeterName = 'graph_io' | 'storage_bytes' | 'egress_bytes';
11
+ export interface DayBucket {
12
+ graph_io: number;
13
+ storage_bytes: number;
14
+ egress_bytes: number;
15
+ }
16
+ export interface TenantUsageSnapshot {
17
+ tenantId: string;
18
+ day: string;
19
+ meters: DayBucket;
20
+ /** ISO timestamp of last storage sample for this day. */
21
+ storageSampledAt?: string;
22
+ }
23
+ export interface UsageMeterOptions {
24
+ now?: () => Date;
25
+ }
26
+ export declare function resolveUsageTenantId(tenantId?: string | null): string;
27
+ export declare function dayKey(date: Date): string;
28
+ /**
29
+ * Sample on-disk storage for a tenant: SQLite file + optional `blobs/` dir.
30
+ */
31
+ export declare function sampleTenantStorage(pool: TenantPool, tenantId?: string | null): number;
32
+ /**
33
+ * Verify admin usage requests via `TURTLEDB_ADMIN_KEY`.
34
+ * Accepts `Authorization: Bearer <key>` or `X-Turtledb-Admin-Key`.
35
+ */
36
+ export declare function verifyAdminKey(req: Request): boolean;
37
+ export declare class UsageMeter {
38
+ private buckets;
39
+ private storageSampledAt;
40
+ private now;
41
+ constructor(opts?: UsageMeterOptions);
42
+ recordGraphIo(tenantId: string, count?: number): void;
43
+ recordEgress(tenantId: string, bytes: number): void;
44
+ /** Set storage gauge for the current day (from sampler, not incremental). */
45
+ recordStorage(tenantId: string, bytes: number): void;
46
+ sampleStorage(pool: TenantPool, tenantId?: string | null): number;
47
+ getUsage(tenantId: string, day?: string): TenantUsageSnapshot;
48
+ /** All day keys recorded for a tenant (sorted ascending). */
49
+ listDays(tenantId: string): string[];
50
+ private _today;
51
+ private _bucket;
52
+ }
53
+ //# sourceMappingURL=usage-meter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-meter.d.ts","sourceRoot":"","sources":["../../src/server/usage-meter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAO/C,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,eAAe,GAAG,cAAc,CAAC;AAEtE,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,CAAC;IAClB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAYD,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAErE;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEzC;AAYD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,MAAM,CAWR;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAUpD;AAMD,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,GAAG,CAAa;gBAEZ,IAAI,GAAE,iBAAsB;IAIxC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,IAAI;IAMhD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMnD,6EAA6E;IAC7E,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMpD,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAOjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,mBAAmB;IAc7D,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAMpC,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,OAAO;CAYhB"}
@@ -0,0 +1,18 @@
1
+ import {
2
+ startServer,
3
+ startServerCrossRuntime
4
+ } from "./chunk-IZX2PLIB.js";
5
+ import "./chunk-SGMDTWJJ.js";
6
+ import "./chunk-44FFQKQX.js";
7
+ import "./chunk-JUEMDWLU.js";
8
+ import "./chunk-SPSPV5BC.js";
9
+ import "./chunk-X5FLTRUB.js";
10
+ import "./chunk-XMQ7G77X.js";
11
+ import "./chunk-KQ4A2D2P.js";
12
+ import "./chunk-6CTA6MCE.js";
13
+ import "./chunk-4XIVMVHC.js";
14
+ import "./chunk-KFQGP6VL.js";
15
+ export {
16
+ startServer,
17
+ startServerCrossRuntime
18
+ };
@@ -0,0 +1,18 @@
1
+ import {
2
+ startServer,
3
+ startServerCrossRuntime
4
+ } from "./chunk-2W3MHTMG.js";
5
+ import "./chunk-JHHEXEDM.js";
6
+ import "./chunk-44FFQKQX.js";
7
+ import "./chunk-JUEMDWLU.js";
8
+ import "./chunk-SPSPV5BC.js";
9
+ import "./chunk-X5FLTRUB.js";
10
+ import "./chunk-XMQ7G77X.js";
11
+ import "./chunk-KQ4A2D2P.js";
12
+ import "./chunk-6CTA6MCE.js";
13
+ import "./chunk-4XIVMVHC.js";
14
+ import "./chunk-KFQGP6VL.js";
15
+ export {
16
+ startServer,
17
+ startServerCrossRuntime
18
+ };
@@ -0,0 +1,27 @@
1
+ import {
2
+ SPRITE_ENSURE_BUN_SH,
3
+ assertSpriteCli,
4
+ ensureSprite,
5
+ ensureSpritePublicAccess,
6
+ parseSpriteUrlOutput,
7
+ resolveSprite,
8
+ resolveSpritePublicUrl,
9
+ runSpriteCmd,
10
+ runSpriteCopy,
11
+ runSpriteExec,
12
+ runSpriteInteractive
13
+ } from "./chunk-CAG4FULI.js";
14
+ import "./chunk-KFQGP6VL.js";
15
+ export {
16
+ SPRITE_ENSURE_BUN_SH,
17
+ assertSpriteCli,
18
+ ensureSprite,
19
+ ensureSpritePublicAccess,
20
+ parseSpriteUrlOutput,
21
+ resolveSprite,
22
+ resolveSpritePublicUrl,
23
+ runSpriteCmd,
24
+ runSpriteCopy,
25
+ runSpriteExec,
26
+ runSpriteInteractive
27
+ };
@@ -1,16 +1,15 @@
1
- // @bun
2
1
  import {
3
2
  assertSpriteCli,
4
3
  resolveSprite,
5
4
  runSpriteCmd,
6
5
  runSpriteCopy,
7
6
  runSpriteInteractive
8
- } from "./index-y6a4kj0p.js";
9
- import"./index-a76rekgs.js";
7
+ } from "./chunk-FF36CQHZ.js";
8
+ import "./chunk-KFQGP6VL.js";
10
9
  export {
11
- runSpriteInteractive,
12
- runSpriteCopy,
13
- runSpriteCmd,
10
+ assertSpriteCli,
14
11
  resolveSprite,
15
- assertSpriteCli
12
+ runSpriteCmd,
13
+ runSpriteCopy,
14
+ runSpriteInteractive
16
15
  };