gemi 0.165.0 → 0.166.1

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 (243) hide show
  1. package/dist/ai/Agent.d.ts +62 -1
  2. package/dist/ai/Agent.d.ts.map +1 -1
  3. package/dist/ai/AgentController.d.ts +18 -2
  4. package/dist/ai/AgentController.d.ts.map +1 -1
  5. package/dist/ai/client/index.d.ts +1 -1
  6. package/dist/ai/client/index.d.ts.map +1 -1
  7. package/dist/ai/index.d.ts +4 -2
  8. package/dist/ai/index.d.ts.map +1 -1
  9. package/dist/ai/index.js +151 -63
  10. package/dist/ai/index.js.map +7 -6
  11. package/dist/ai/jobs/overlay.d.ts +2 -0
  12. package/dist/ai/jobs/overlay.d.ts.map +1 -1
  13. package/dist/ai/providers/request.d.ts.map +1 -1
  14. package/dist/ai/store/DatabaseAgentStore.d.ts +124 -0
  15. package/dist/ai/store/DatabaseAgentStore.d.ts.map +1 -0
  16. package/dist/ai/toolModelOutput.d.ts +10 -0
  17. package/dist/ai/toolModelOutput.d.ts.map +1 -0
  18. package/dist/ai/types.d.ts +52 -0
  19. package/dist/ai/types.d.ts.map +1 -1
  20. package/dist/app/index.js +1 -1
  21. package/dist/bin/orm/emit.d.ts.map +1 -1
  22. package/dist/bin/orm-generator.js +7 -1
  23. package/dist/bin/orm-generator.js.map +4 -4
  24. package/dist/bun/plugin.js +1 -1
  25. package/dist/bun/preload.js +1 -1
  26. package/dist/{chunk-n6ywagxv.js → chunk-0gzqhjyg.js} +2 -2
  27. package/dist/{chunk-n6ywagxv.js.map → chunk-0gzqhjyg.js.map} +1 -1
  28. package/dist/{chunk-m683535s.js → chunk-0hfvwzd1.js} +2 -2
  29. package/dist/{chunk-m683535s.js.map → chunk-0hfvwzd1.js.map} +1 -1
  30. package/dist/{chunk-a5qn2sq8.js → chunk-0psf0chk.js} +2 -2
  31. package/dist/{chunk-a5qn2sq8.js.map → chunk-0psf0chk.js.map} +1 -1
  32. package/dist/{chunk-1btx3kkv.js → chunk-1ap3vcrr.js} +2 -2
  33. package/dist/{chunk-1btx3kkv.js.map → chunk-1ap3vcrr.js.map} +1 -1
  34. package/dist/{chunk-yvpgy1p1.js → chunk-1k4rvfza.js} +2 -2
  35. package/dist/{chunk-yvpgy1p1.js.map → chunk-1k4rvfza.js.map} +1 -1
  36. package/dist/{chunk-7effp39a.js → chunk-23670kw5.js} +2 -2
  37. package/dist/{chunk-7effp39a.js.map → chunk-23670kw5.js.map} +1 -1
  38. package/dist/{chunk-cd847h0t.js → chunk-2ewe42dq.js} +3 -3
  39. package/dist/{chunk-cd847h0t.js.map → chunk-2ewe42dq.js.map} +1 -1
  40. package/dist/{chunk-95gag2pg.js → chunk-2jk0f4sj.js} +2 -2
  41. package/dist/{chunk-95gag2pg.js.map → chunk-2jk0f4sj.js.map} +1 -1
  42. package/dist/{chunk-gn8ee1dp.js → chunk-36yp8364.js} +2 -2
  43. package/dist/{chunk-gn8ee1dp.js.map → chunk-36yp8364.js.map} +1 -1
  44. package/dist/{chunk-kt83h150.js → chunk-3xj1e3ns.js} +3 -3
  45. package/dist/{chunk-kt83h150.js.map → chunk-3xj1e3ns.js.map} +1 -1
  46. package/dist/{chunk-04ffq2ge.js → chunk-4587ab6m.js} +2 -2
  47. package/dist/{chunk-04ffq2ge.js.map → chunk-4587ab6m.js.map} +1 -1
  48. package/dist/{chunk-xzkr8yck.js → chunk-4fzevafk.js} +2 -2
  49. package/dist/{chunk-xzkr8yck.js.map → chunk-4fzevafk.js.map} +1 -1
  50. package/dist/{chunk-576g6eyk.js → chunk-4rnpvajg.js} +2 -2
  51. package/dist/{chunk-576g6eyk.js.map → chunk-4rnpvajg.js.map} +1 -1
  52. package/dist/{chunk-8x0q9h0j.js → chunk-4w9gbe11.js} +1 -1
  53. package/dist/{chunk-7ex7aczc.js → chunk-58k1zstz.js} +1 -1
  54. package/dist/{chunk-e9c02bq0.js → chunk-5x9b1ema.js} +2 -2
  55. package/dist/{chunk-e9c02bq0.js.map → chunk-5x9b1ema.js.map} +1 -1
  56. package/dist/{chunk-akgd3c0k.js → chunk-6cw6tn57.js} +2 -2
  57. package/dist/{chunk-akgd3c0k.js.map → chunk-6cw6tn57.js.map} +1 -1
  58. package/dist/{chunk-jry03jqj.js → chunk-6eb6jgdv.js} +4 -4
  59. package/dist/{chunk-jry03jqj.js.map → chunk-6eb6jgdv.js.map} +1 -1
  60. package/dist/{chunk-r94gpbjv.js → chunk-6q15sx3h.js} +3 -3
  61. package/dist/{chunk-r94gpbjv.js.map → chunk-6q15sx3h.js.map} +1 -1
  62. package/dist/{chunk-rh811v1f.js → chunk-6tbs7yc1.js} +2 -2
  63. package/dist/{chunk-rh811v1f.js.map → chunk-6tbs7yc1.js.map} +1 -1
  64. package/dist/{chunk-pfjky33c.js → chunk-71prz4rp.js} +2 -2
  65. package/dist/{chunk-pfjky33c.js.map → chunk-71prz4rp.js.map} +1 -1
  66. package/dist/{chunk-hkp00b9x.js → chunk-7yh908jj.js} +3 -3
  67. package/dist/{chunk-hkp00b9x.js.map → chunk-7yh908jj.js.map} +1 -1
  68. package/dist/{chunk-fyyf44aj.js → chunk-7ysw97gp.js} +2 -2
  69. package/dist/{chunk-fyyf44aj.js.map → chunk-7ysw97gp.js.map} +1 -1
  70. package/dist/{chunk-k5xxwr5h.js → chunk-80703vks.js} +2 -2
  71. package/dist/{chunk-k5xxwr5h.js.map → chunk-80703vks.js.map} +1 -1
  72. package/dist/{chunk-1cjr8hvc.js → chunk-82jhqxx7.js} +3 -3
  73. package/dist/{chunk-1cjr8hvc.js.map → chunk-82jhqxx7.js.map} +1 -1
  74. package/dist/{chunk-qttv23e7.js → chunk-873k84dt.js} +2 -2
  75. package/dist/{chunk-qttv23e7.js.map → chunk-873k84dt.js.map} +1 -1
  76. package/dist/{chunk-dwxgr189.js → chunk-8f4jkpv7.js} +1 -1
  77. package/dist/{chunk-bs0setym.js → chunk-8rnvw8xr.js} +2 -2
  78. package/dist/{chunk-bs0setym.js.map → chunk-8rnvw8xr.js.map} +1 -1
  79. package/dist/chunk-8v6y52et.js +5 -0
  80. package/dist/{chunk-hdr0m0md.js.map → chunk-8v6y52et.js.map} +1 -1
  81. package/dist/{chunk-7d0n00an.js → chunk-8yxjrjef.js} +2 -2
  82. package/dist/{chunk-7d0n00an.js.map → chunk-8yxjrjef.js.map} +1 -1
  83. package/dist/{chunk-70kpm72z.js → chunk-b8qfypzq.js} +3 -3
  84. package/dist/{chunk-70kpm72z.js.map → chunk-b8qfypzq.js.map} +1 -1
  85. package/dist/{chunk-hx8vkwsb.js → chunk-bym06a64.js} +2 -2
  86. package/dist/{chunk-hx8vkwsb.js.map → chunk-bym06a64.js.map} +1 -1
  87. package/dist/{chunk-fv1r0w0r.js → chunk-bzrhc7q3.js} +2 -2
  88. package/dist/{chunk-fv1r0w0r.js.map → chunk-bzrhc7q3.js.map} +1 -1
  89. package/dist/{chunk-wamxfhh6.js → chunk-c0dvdfm0.js} +2 -2
  90. package/dist/{chunk-wamxfhh6.js.map → chunk-c0dvdfm0.js.map} +1 -1
  91. package/dist/{chunk-q4q5mxte.js → chunk-c3cdj9y7.js} +2 -2
  92. package/dist/{chunk-q4q5mxte.js.map → chunk-c3cdj9y7.js.map} +1 -1
  93. package/dist/{chunk-n3pc62tc.js → chunk-d29dcs3e.js} +3 -3
  94. package/dist/{chunk-n3pc62tc.js.map → chunk-d29dcs3e.js.map} +1 -1
  95. package/dist/{chunk-kscwjycy.js → chunk-efjk5aq7.js} +2 -2
  96. package/dist/{chunk-kscwjycy.js.map → chunk-efjk5aq7.js.map} +1 -1
  97. package/dist/{chunk-mxhy19a9.js → chunk-eyv6hss6.js} +2 -2
  98. package/dist/{chunk-mxhy19a9.js.map → chunk-eyv6hss6.js.map} +1 -1
  99. package/dist/{chunk-z94ms1jv.js → chunk-f6mwnw81.js} +3 -3
  100. package/dist/{chunk-z94ms1jv.js.map → chunk-f6mwnw81.js.map} +1 -1
  101. package/dist/{chunk-sk22zf9e.js → chunk-f9nmn8x7.js} +4 -4
  102. package/dist/{chunk-sk22zf9e.js.map → chunk-f9nmn8x7.js.map} +3 -3
  103. package/dist/{chunk-w4227psm.js → chunk-fdfy25mv.js} +2 -2
  104. package/dist/{chunk-w4227psm.js.map → chunk-fdfy25mv.js.map} +1 -1
  105. package/dist/{chunk-g3vasg0d.js → chunk-fnj2hc5v.js} +1 -1
  106. package/dist/{chunk-2hhwsm69.js → chunk-fva651jp.js} +2 -2
  107. package/dist/{chunk-2hhwsm69.js.map → chunk-fva651jp.js.map} +1 -1
  108. package/dist/{chunk-22jm6sn1.js → chunk-fxd7pqk3.js} +2 -2
  109. package/dist/{chunk-22jm6sn1.js.map → chunk-fxd7pqk3.js.map} +1 -1
  110. package/dist/{chunk-3q6adj7c.js → chunk-h11r8h31.js} +20 -20
  111. package/dist/{chunk-3q6adj7c.js.map → chunk-h11r8h31.js.map} +3 -3
  112. package/dist/{chunk-s7w7pn80.js → chunk-h5whhrds.js} +2 -2
  113. package/dist/{chunk-s7w7pn80.js.map → chunk-h5whhrds.js.map} +1 -1
  114. package/dist/{chunk-10zbxbwk.js → chunk-hdt8cwsv.js} +2 -2
  115. package/dist/{chunk-10zbxbwk.js.map → chunk-hdt8cwsv.js.map} +1 -1
  116. package/dist/{chunk-zh0knwen.js → chunk-hgvt5084.js} +2 -2
  117. package/dist/{chunk-zh0knwen.js.map → chunk-hgvt5084.js.map} +1 -1
  118. package/dist/{chunk-a5htej1f.js → chunk-j1yhtwsk.js} +2 -2
  119. package/dist/{chunk-a5htej1f.js.map → chunk-j1yhtwsk.js.map} +1 -1
  120. package/dist/{chunk-egzfxdr1.js → chunk-j7k0nzqz.js} +2 -2
  121. package/dist/{chunk-egzfxdr1.js.map → chunk-j7k0nzqz.js.map} +1 -1
  122. package/dist/{chunk-vqar6ysw.js → chunk-kcgnjzqr.js} +3 -3
  123. package/dist/{chunk-vqar6ysw.js.map → chunk-kcgnjzqr.js.map} +1 -1
  124. package/dist/{chunk-89168m0z.js → chunk-kfdy4vv1.js} +2 -2
  125. package/dist/{chunk-89168m0z.js.map → chunk-kfdy4vv1.js.map} +1 -1
  126. package/dist/{chunk-wgre66wq.js → chunk-m5hd632w.js} +2 -2
  127. package/dist/{chunk-wgre66wq.js.map → chunk-m5hd632w.js.map} +1 -1
  128. package/dist/{chunk-6w2v33bd.js → chunk-mbkje42z.js} +2 -2
  129. package/dist/{chunk-6w2v33bd.js.map → chunk-mbkje42z.js.map} +1 -1
  130. package/dist/{chunk-mqbx7hc4.js → chunk-mj429x94.js} +2 -2
  131. package/dist/{chunk-mqbx7hc4.js.map → chunk-mj429x94.js.map} +1 -1
  132. package/dist/{chunk-asnk2jqn.js → chunk-ndyafsv6.js} +2 -2
  133. package/dist/{chunk-asnk2jqn.js.map → chunk-ndyafsv6.js.map} +1 -1
  134. package/dist/{chunk-e0w1mf72.js → chunk-p3qbym3v.js} +2 -2
  135. package/dist/{chunk-e0w1mf72.js.map → chunk-p3qbym3v.js.map} +1 -1
  136. package/dist/{chunk-g3sryyn4.js → chunk-p97w2388.js} +2 -2
  137. package/dist/{chunk-g3sryyn4.js.map → chunk-p97w2388.js.map} +1 -1
  138. package/dist/{chunk-04h49y2f.js → chunk-pd3qbf8r.js} +2 -2
  139. package/dist/{chunk-04h49y2f.js.map → chunk-pd3qbf8r.js.map} +1 -1
  140. package/dist/{chunk-gcxk8j84.js → chunk-pk4drzc9.js} +2 -2
  141. package/dist/{chunk-gcxk8j84.js.map → chunk-pk4drzc9.js.map} +1 -1
  142. package/dist/{chunk-kqbnsthz.js → chunk-pr2enaz5.js} +2 -2
  143. package/dist/{chunk-kqbnsthz.js.map → chunk-pr2enaz5.js.map} +1 -1
  144. package/dist/{chunk-h4h8m3yr.js → chunk-q4vtjdea.js} +3 -3
  145. package/dist/{chunk-h4h8m3yr.js.map → chunk-q4vtjdea.js.map} +1 -1
  146. package/dist/chunk-qeayzybn.js +41 -0
  147. package/dist/{chunk-pq86vmxv.js.map → chunk-qeayzybn.js.map} +6 -5
  148. package/dist/{chunk-s4nqy979.js → chunk-qec3g4w3.js} +2 -2
  149. package/dist/{chunk-s4nqy979.js.map → chunk-qec3g4w3.js.map} +1 -1
  150. package/dist/{chunk-dkmf4eg1.js → chunk-rzqxkm9r.js} +2 -2
  151. package/dist/{chunk-dkmf4eg1.js.map → chunk-rzqxkm9r.js.map} +1 -1
  152. package/dist/{chunk-99be7vbh.js → chunk-sca3tpce.js} +3 -3
  153. package/dist/{chunk-99be7vbh.js.map → chunk-sca3tpce.js.map} +1 -1
  154. package/dist/{chunk-mg5gq632.js → chunk-tms2g9at.js} +1 -1
  155. package/dist/{chunk-s7tn2t8x.js → chunk-ty9s0z7q.js} +3 -3
  156. package/dist/{chunk-s7tn2t8x.js.map → chunk-ty9s0z7q.js.map} +1 -1
  157. package/dist/{chunk-51fvpq55.js → chunk-vqf4s99d.js} +2 -2
  158. package/dist/{chunk-51fvpq55.js.map → chunk-vqf4s99d.js.map} +1 -1
  159. package/dist/{chunk-p4ka241x.js → chunk-w4at2d5d.js} +2 -2
  160. package/dist/{chunk-p4ka241x.js.map → chunk-w4at2d5d.js.map} +1 -1
  161. package/dist/{chunk-nc1gstvq.js → chunk-wjff0d08.js} +3 -3
  162. package/dist/{chunk-nc1gstvq.js.map → chunk-wjff0d08.js.map} +1 -1
  163. package/dist/{chunk-dj6bw2jm.js → chunk-wypncj52.js} +3 -3
  164. package/dist/{chunk-dj6bw2jm.js.map → chunk-wypncj52.js.map} +1 -1
  165. package/dist/{chunk-xzbhy9n5.js → chunk-xed7yf6h.js} +1 -1
  166. package/dist/{chunk-yc2pnb1w.js → chunk-xw5d66ec.js} +2 -2
  167. package/dist/{chunk-yc2pnb1w.js.map → chunk-xw5d66ec.js.map} +1 -1
  168. package/dist/{chunk-z2btwd27.js → chunk-xxbkp90v.js} +3 -3
  169. package/dist/{chunk-z2btwd27.js.map → chunk-xxbkp90v.js.map} +1 -1
  170. package/dist/{chunk-3tyqnh59.js → chunk-y1ks8ahw.js} +2 -2
  171. package/dist/{chunk-3tyqnh59.js.map → chunk-y1ks8ahw.js.map} +1 -1
  172. package/dist/{chunk-zzgzz4hb.js → chunk-y6x52vkb.js} +2 -2
  173. package/dist/{chunk-zzgzz4hb.js.map → chunk-y6x52vkb.js.map} +1 -1
  174. package/dist/chunks/{RealtimeClient-BX_HwEBK.js → RealtimeClient-DpAJYcF5.js} +2 -2
  175. package/dist/chunks/{RealtimeClient-BX_HwEBK.js.map → RealtimeClient-DpAJYcF5.js.map} +1 -1
  176. package/dist/chunks/{ThemeProvider-D4mhhONE.js → ThemeProvider-DAbL-cqC.js} +36 -8
  177. package/dist/chunks/{ThemeProvider-D4mhhONE.js.map → ThemeProvider-DAbL-cqC.js.map} +1 -1
  178. package/dist/chunks/{fetchFileRequest-C3wMigR3.js → fetchFileRequest-yAKa_pKx.js} +2 -2
  179. package/dist/chunks/{fetchFileRequest-C3wMigR3.js.map → fetchFileRequest-yAKa_pKx.js.map} +1 -1
  180. package/dist/chunks/{live-CJOuf1Gu.js → live-BvhWo-yY.js} +3 -3
  181. package/dist/chunks/{live-CJOuf1Gu.js.map → live-BvhWo-yY.js.map} +1 -1
  182. package/dist/chunks/{mutationExtras-DpB8MtNs.js → mutationExtras-_hbHxr6-.js} +2 -2
  183. package/dist/chunks/{mutationExtras-DpB8MtNs.js.map → mutationExtras-_hbHxr6-.js.map} +1 -1
  184. package/dist/client/ClientRouter.d.ts.map +1 -1
  185. package/dist/client/chunkLoadRecovery.d.ts +6 -0
  186. package/dist/client/chunkLoadRecovery.d.ts.map +1 -1
  187. package/dist/client/index.js +4 -3
  188. package/dist/client/index.js.map +1 -1
  189. package/dist/config/index.js +1 -1
  190. package/dist/console/run.js +2 -2
  191. package/dist/console/run.js.map +1 -1
  192. package/dist/container/index.js +2 -2
  193. package/dist/container/index.js.map +1 -1
  194. package/dist/database/index.js +2 -2
  195. package/dist/database/index.js.map +1 -1
  196. package/dist/email/index.js +2 -2
  197. package/dist/email/index.js.map +1 -1
  198. package/dist/facades/DB.d.ts +23 -0
  199. package/dist/facades/DB.d.ts.map +1 -1
  200. package/dist/facades/index.d.ts +1 -1
  201. package/dist/facades/index.d.ts.map +1 -1
  202. package/dist/facades/index.js +2 -2
  203. package/dist/facades/index.js.map +1 -1
  204. package/dist/foundation/index.js +2 -2
  205. package/dist/foundation/index.js.map +1 -1
  206. package/dist/http/index.js +2 -2
  207. package/dist/http/index.js.map +1 -1
  208. package/dist/i18n/dictionaryRuntime.js +2 -2
  209. package/dist/i18n/dictionaryRuntime.js.map +1 -1
  210. package/dist/i18n/index.js +2 -2
  211. package/dist/i18n/index.js.map +1 -1
  212. package/dist/kernel/index.js +2 -2
  213. package/dist/kernel/index.js.map +1 -1
  214. package/dist/orm/describeSchema.d.ts +82 -0
  215. package/dist/orm/describeSchema.d.ts.map +1 -0
  216. package/dist/orm/index.d.ts +1 -0
  217. package/dist/orm/index.d.ts.map +1 -1
  218. package/dist/orm/index.js +5 -3
  219. package/dist/orm/index.js.map +6 -5
  220. package/dist/orm/schema.d.ts +11 -0
  221. package/dist/orm/schema.d.ts.map +1 -1
  222. package/dist/probe/index.js +2 -2
  223. package/dist/probe/index.js.map +1 -1
  224. package/dist/server/index.js +2 -2
  225. package/dist/server/index.js.map +1 -1
  226. package/dist/services/index.js +2 -2
  227. package/dist/services/index.js.map +1 -1
  228. package/dist/services/queue/work.js +2 -2
  229. package/dist/services/queue/work.js.map +1 -1
  230. package/dist/stats/route-table.js +1 -1
  231. package/dist/support/index.js +2 -2
  232. package/dist/support/index.js.map +1 -1
  233. package/dist/testing/index.js +2 -2
  234. package/dist/vitest/index.js +1 -1
  235. package/package.json +1 -1
  236. package/dist/chunk-hdr0m0md.js +0 -5
  237. package/dist/chunk-pq86vmxv.js +0 -41
  238. /package/dist/{chunk-8x0q9h0j.js.map → chunk-4w9gbe11.js.map} +0 -0
  239. /package/dist/{chunk-7ex7aczc.js.map → chunk-58k1zstz.js.map} +0 -0
  240. /package/dist/{chunk-dwxgr189.js.map → chunk-8f4jkpv7.js.map} +0 -0
  241. /package/dist/{chunk-g3vasg0d.js.map → chunk-fnj2hc5v.js.map} +0 -0
  242. /package/dist/{chunk-mg5gq632.js.map → chunk-tms2g9at.js.map} +0 -0
  243. /package/dist/{chunk-xzbhy9n5.js.map → chunk-xed7yf6h.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Pi as N,Qi as _0,Ri as C0}from"./chunk-kscwjycy.js";import{Wi as x0,Zi as b}from"./chunk-p4ka241x.js";import{cl as BQ}from"./chunk-vqar6ysw.js";import{vl as Y0}from"./chunk-7effp39a.js";import{Dl as lZ}from"./chunk-wgre66wq.js";class o0{static kind="controller";constructor(){}}class bQ extends o0{}function N0(Q){let Z=new Map;if(!Q)return Z;for(let $ of Q.split(";")){let X=$.indexOf("=");if(X===-1)continue;let G=$.slice(0,X).trim();if(!G)continue;Z.set(G,$.slice(X+1).trim())}return Z}function W1(Q){return N0(Q.headers.get("cookie"))}function p(Q){if(!/^\d+$/.test(Q))return null;let Z=Number(Q);return Number.isSafeInteger(Z)?Z:null}function t0(Q){if(!Q)return null;let Z=Q.trim();if(!/^bytes=/i.test(Z))return null;let X=Z.slice(6).split(",").map((D)=>D.trim()).filter((D)=>D!=="");if(X.length!==1)return null;let G=X[0],H=G.indexOf("-");if(H===-1)return null;let Y=G.slice(0,H),M=G.slice(H+1);if(Y===""){let D=p(M);if(D===null)return null;return{kind:"suffix",suffixLength:D}}let K=p(Y);if(K===null)return null;if(M==="")return{kind:"offset",start:K,end:null};let J=p(M);if(J===null||J<K)return null;return{kind:"offset",start:K,end:J}}function s0(Q,Z){if(!Number.isFinite(Z)||Z<=0)return null;let $,X;if(Q.kind==="suffix"){if(Q.suffixLength<=0)return null;$=Math.max(0,Z-Q.suffixLength),X=Z-1}else{if(Q.start>=Z)return null;if($=Q.start,X=Q.end===null?Z-1:Math.min(Q.end,Z-1),X<$)return null}return{start:$,end:X,length:X-$+1}}function z1(Q){if(Q.kind==="suffix")return`bytes=-${Q.suffixLength}`;return Q.end===null?`bytes=${Q.start}-`:`bytes=${Q.start}-${Q.end}`}function U1(Q){if(!Q)return null;let Z=/^bytes\s+(\d+)-(\d+)\/(\d+)$/i.exec(Q.trim());if(!Z)return null;let $=p(Z[1]),X=p(Z[2]),G=p(Z[3]);if($===null||X===null||G===null||X<$)return null;return{start:$,end:X,total:G}}function V1(Q,Z,$){return`bytes ${Q}-${Z}/${$}`}function r0(Q){return`bytes */${Q}`}class s extends N{errors={};constructor(Q){super("Validation error");this.name="ValidationError",this.errors=Q,this.payload={api:{status:400,data:{error:{kind:"validation_error",messages:Q,status:400}},headers:{"Content-Type":"application/json"}},view:{status:400}}}}function fQ(Q){let[Z,$]=Q.match(/\d+|\D+/g)??[];if(!Z||!$)return 0;let X=Number.parseInt(Z);switch($){case"B":return X;case"KB":return X*1024;case"MB":return X*1024*1024;case"GB":return X*1024*1024*1024;case"TB":return X*1024*1024*1024*1024;default:return 0}}function vQ(Q){switch(Q){case"image":return"image";case"png":return"image/png";case"jpg":return"image/jpeg";case"jpeg":return"image/jpeg";case"ttf":return"font/ttf";case"excel":return"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";case"csv":return"text/csv";case"word":return"application/vnd.openxmlformats-officedocument.wordprocessingml.document";case"pdf":return"application/pdf";case"json":return"application/json";default:return Q}}function a0(Q){if(typeof Q==="string"||Array.isArray(Q))return Q.length;return}function q0(Q){return typeof Q==="number"&&!Number.isNaN(Q)}var hQ=["required","string","boolean","number","email","password","min","max","gte","lte","file","fileType","fileSize","array","object","in"];class k extends Error{name="InvalidValidationRuleError"}function z0(Q,Z){let $=Z===void 0||Z.trim()===""?Number.NaN:Number(Z);if(Number.isNaN($))throw new k(`Validation rule "${Q}:${Z??""}" needs a number, e.g. "${Q}:3"`);return $}function e0(Q){let Z=Q.indexOf(":"),$=Z===-1?Q:Q.slice(0,Z),X=Z===-1?void 0:Q.slice(Z+1);switch($){case"required":return(G)=>{if(G instanceof Blob)return G.size>0;if(G===null||G===void 0)return!1;if(typeof G==="string"||Array.isArray(G))return G.length>0;return!0};case"string":return(G)=>typeof G==="string";case"boolean":return(G)=>typeof G==="boolean";case"number":return(G)=>q0(G);case"password":return(G)=>{return typeof G==="string"&&/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,}$/.test(G)};case"min":{let G=z0($,X);return(H)=>{let Y=a0(H);return Y!==void 0&&Y>=G}}case"max":{let G=z0($,X);return(H)=>{let Y=a0(H);return Y!==void 0&&Y<=G}}case"gte":{let G=z0($,X);return(H)=>q0(H)&&H>=G}case"lte":{let G=z0($,X);return(H)=>q0(H)&&H<=G}case"email":return(G)=>{return typeof G==="string"&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(G)};case"file":return(G)=>{return G instanceof Blob};case"fileType":{if(!X)throw new k('Validation rule "fileType" needs a type, e.g. "fileType:png" or "fileType:image"');let G=vQ(X);return(H)=>H instanceof Blob&&H.type.startsWith(G)}case"fileSize":{let G=fQ(X??"");if(G===0&&!/^0+(B|KB|MB|GB|TB)$/.test(X??""))throw new k(`Validation rule "fileSize:${X??""}" needs a whole size in B, KB, MB, GB or TB, e.g. "fileSize:5MB"`);return(H)=>H instanceof Blob&&H.size<=G}case"array":return(G)=>Array.isArray(G);case"object":return(G)=>typeof G==="object"&&G!==null&&!Array.isArray(G)&&!(G instanceof Blob);case"in":{let G=(X??"").split(",").filter((H)=>H!=="");if(G.length===0)throw new k('Validation rule "in" needs a comma-separated list, e.g. "in:draft,published"');return(H)=>typeof H==="string"&&G.includes(H)}default:throw new k(`Unknown validation rule "${Q}". Known rules: ${hQ.join(", ")}`)}}function u(Q){if(!Q.definition)throw Error(`gemi/ai: the recursive schema "${Q.name}" was used before its definition returned; \`self\` can be nested into the schema, but not parsed or emitted inside the callback`);return Q.definition}var R0=new WeakMap;function $Q(Q){return typeof Q==="object"&&Q!==null&&R0.has(Q)}function V0(Q){let Z=R0.get(Q);if(!Z)throw Error("gemi/ai: expected a schema built with `s`, got a foreign object");return Z}function mQ(Q){let Z={defs:{},cells:new Map},$=Q;if(Q.node.kind==="ref"){let G=u(Q.node.cell);$={...G,...Q.description?{description:Q.description}:{},optional:Q.optional,nullable:Q.nullable||G.nullable}}let X=a($,Z);return Object.keys(Z.defs).length>0?{...X,$defs:Z.defs}:X}function a(Q,Z){let $=(Q.optional||Q.nullable)&&Q.node.kind!=="json",X=uQ(pQ(Q.node,Z),$),G=[Q.description,cQ(Q.node)].filter(Boolean).join(" ");if(G&&X.$ref!==void 0)X={anyOf:[X]};return G?{description:G,...X}:X}function cQ(Q){let Z=[];if(Q.kind==="string"||Q.kind==="enum"){let $=Q.checks;if($?.format)Z.push(`Format: ${$.format.name}.`);if($?.minLength!==void 0)Z.push(`At least ${$.minLength} characters.`);if($?.maxLength!==void 0)Z.push(`At most ${$.maxLength} characters.`)}else if(Q.kind==="number"){let $=Q.checks;if($?.minimum!==void 0)Z.push(`Minimum ${$.minimum}.`);if($?.exclusiveMinimum!==void 0)Z.push(`Greater than ${$.exclusiveMinimum}.`);if($?.maximum!==void 0)Z.push(`Maximum ${$.maximum}.`);if($?.exclusiveMaximum!==void 0)Z.push(`Less than ${$.exclusiveMaximum}.`)}else if(Q.kind==="array"){let $=Q.checks;if($?.minItems!==void 0)Z.push(`At least ${$.minItems} items.`);if($?.maxItems!==void 0)Z.push(`At most ${$.maxItems} items.`)}return Z.join(" ")}function pQ(Q,Z){switch(Q.kind){case"string":return{type:"string"};case"number":return{type:Q.checks?.integer?"integer":"number"};case"boolean":return{type:"boolean"};case"literal":return{type:typeof Q.value,const:Q.value};case"enum":return{type:"string",enum:Q.values};case"array":return{type:"array",items:a(Q.item,Z)};case"object":return{type:"object",properties:Object.fromEntries(Object.entries(Q.shape).map(([$,X])=>[$,a(X,Z)])),required:Object.keys(Q.shape),additionalProperties:!1};case"union":return{anyOf:Q.members.map(($)=>a($,Z))};case"json":return{};case"ref":{let{cell:$}=Q,X=Z.cells.get($.name);if(X&&X!==$)throw Error(`gemi/ai: two different recursive schemas are named "${$.name}" in one schema; give each s.recursive(...) its own name`);if(!X)Z.cells.set($.name,$),Z.defs[$.name]={},Z.defs[$.name]=a(u($),Z);return{$ref:`#/$defs/${$.name}`}}}}function uQ(Q,Z){if(!Z)return Q;if(Q.anyOf)return{...Q,anyOf:[...Q.anyOf,{type:"null"}]};if(Q.enum||Q.const!==void 0)return{anyOf:[Q,{type:"null"}]};if(typeof Q.type==="string")return{...Q,type:[Q.type,"null"]};return{anyOf:[Q,{type:"null"}]}}function dQ(Q){if(Q===null)return"null";if(Array.isArray(Q))return"array";return typeof Q}function lQ(Q,Z){if(typeof Z==="number"&&!Number.isFinite(Z))return String(Z);if(Q.kind==="literal"||Q.kind==="enum"){if(typeof Z==="string"||typeof Z==="number"||typeof Z==="boolean")return JSON.stringify(Z)}return dQ(Z)}function XQ(Q){let Z=Q.node,$=(()=>{switch(Z.kind){case"number":return Z.checks?.integer?"integer":"number";case"string":case"boolean":return Z.kind;case"literal":return JSON.stringify(Z.value);case"enum":return`one of ${Z.values.map((X)=>JSON.stringify(X)).join(" | ")}`;case"array":return"array";case"object":return"object";case"union":return"one of the variants";case"json":return"a JSON value";case"ref":return XQ({...u(Z.cell),optional:!1,nullable:!1})}})();return Q.optional||Q.nullable?`${$} or null`:$}function iQ(Q){let Z="";for(let $ of Q)Z+=typeof $==="number"?`[${$}]`:Z?`.${$}`:$;return Z}function nQ(Q){let Z=iQ(Q);return Z?`${Z}: `:""}function w0(Q){return`${nQ(Q.path)}${Q.message}`}function B0(Q,Z){if(Z===null||Z===void 0)return Q.optional||Q.nullable?1:0;let $=Q.node;switch($.kind){case"string":return typeof Z==="string"?1:0;case"number":return typeof Z==="number"?1:0;case"boolean":return typeof Z==="boolean"?1:0;case"literal":return Z===$.value?10:0;case"enum":return typeof Z==="string"&&$.values.includes(Z)?10:0;case"array":return Array.isArray(Z)?1:0;case"object":{if(typeof Z!=="object"||Array.isArray(Z))return 0;let X=Z,G=1;for(let[H,Y]of Object.entries($.shape))G+=B0(Y,X[H]);return G}case"union":return $.members.reduce((X,G)=>Math.max(X,B0(G,Z)),0);case"json":return 1;case"ref":return GQ($.cell,Z,()=>1,()=>B0(u($.cell),Z))}}function GQ(Q,Z,$,X){if(typeof Z!=="object"||Z===null)return X();if(Q.active.has(Z))return $();Q.active.add(Z);try{return X()}finally{Q.active.delete(Z)}}function v(Q,Z,$,X){if(Q.optional&&(Z===null||Z===void 0))return{drop:!0,value:void 0};if(Q.nullable&&Z===null)return{drop:!1,value:null};return{drop:!1,value:oQ(Q,Z,$,X)}}function oQ(Q,Z,$,X){let G=Q.node,H=()=>{let Y=Z===void 0?"required":G.kind==="literal"?"const":G.kind==="enum"&&typeof Z==="string"?"enum":"type",M=Y==="const"?{allowedValue:G.value}:Y==="enum"?{allowedValues:G.values}:{};X.push({path:$,code:Y,message:`expected ${XQ(Q)}, got ${lQ(G,Z)}`,params:M});return};switch(G.kind){case"string":if(typeof Z!=="string")return H();return QQ(G.checks,Z,$,X),Z;case"number":if(typeof Z!=="number"||!Number.isFinite(Z))return H();if(G.checks?.integer&&!Number.isInteger(Z))return H();return sQ(G.checks,Z,$,X),Z;case"boolean":return typeof Z==="boolean"?Z:H();case"literal":return Z===G.value?Z:H();case"enum":if(typeof Z!=="string"||!G.values.includes(Z))return H();return QQ(G.checks,Z,$,X),Z;case"array":{if(!Array.isArray(Z))return H();let Y=Z.map((J,D)=>{let z=v(G.item,J,[...$,D],X);return z.drop?void 0:z.value}),{minItems:M,maxItems:K}=G.checks??{};if(M!==void 0&&Z.length<M)X.push({path:$,code:"minItems",message:`expected at least ${M} items, got ${Z.length}`,params:{limit:M}});if(K!==void 0&&Z.length>K)X.push({path:$,code:"maxItems",message:`expected at most ${K} items, got ${Z.length}`,params:{limit:K}});return Y}case"object":{if(typeof Z!=="object"||Z===null||Array.isArray(Z))return H();let Y=Z,M={};for(let[K,J]of Object.entries(G.shape)){let D=v(J,Y[K],[...$,K],X);if(!D.drop)M[K]=D.value}if(G.unknownKeys)for(let K of Object.keys(Y)){if(Object.hasOwn(G.shape,K)||Y[K]===void 0)continue;if(G.unknownKeys==="error"){X.push({path:[...$,K],code:"additionalProperties",message:"unknown key",params:{additionalProperty:K}});continue}Z0(Y[K],[...$,K],X,new Set),Object.defineProperty(M,K,{value:Y[K],enumerable:!0,writable:!0,configurable:!0})}return M}case"union":{let Y;for(let M of G.members){let K=[],J=v(M,Z,$,K);if(K.length===0)return J.drop?void 0:J.value;let D=B0(M,Z);if(!Y||D>Y.score)Y={issues:K,score:D}}X.push({path:$,code:"anyOf",message:`no matching variant; closest: ${Y.issues.map(w0).join("; ")}`,params:{closest:Y.issues}});return}case"json":if(Z===void 0)return H();return Z0(Z,$,X,new Set),Z;case"ref":return GQ(G.cell,Z,()=>{X.push({path:$,code:"type",message:"expected a finite tree, got a circular reference",params:{}});return},()=>v(u(G.cell),Z,$,X).value)}}function tQ(Q){let Z=0;for(let $ of Q)Z++;return Z}function QQ(Q,Z,$,X){if(!Q)return;let{minLength:G,maxLength:H,format:Y}=Q;if(G!==void 0||H!==void 0){let M=tQ(Z);if(G!==void 0&&M<G)X.push({path:$,code:"minLength",message:`expected at least ${G} characters, got ${M}`,params:{limit:G}});if(H!==void 0&&M>H)X.push({path:$,code:"maxLength",message:`expected at most ${H} characters, got ${M}`,params:{limit:H}})}if(Y){let M=!1;try{M=Y.test(Z)===!0}catch{}if(!M)X.push({path:$,code:"format",message:`expected a string in format "${Y.name}"`,params:{format:Y.name}})}}function sQ(Q,Z,$,X){if(!Q)return;let G=(H,Y,M,K)=>{if(Y===void 0||M(Y))return;X.push({path:$,code:H,message:`expected ${K} ${Y}, got ${Z}`,params:{limit:Y}})};G("minimum",Q.minimum,(H)=>Z>=H,"at least"),G("exclusiveMinimum",Q.exclusiveMinimum,(H)=>Z>H,"more than"),G("maximum",Q.maximum,(H)=>Z<=H,"at most"),G("exclusiveMaximum",Q.exclusiveMaximum,(H)=>Z<H,"less than")}function Z0(Q,Z,$,X,G=!0){let H=(M)=>{$.push({path:Z,code:"type",message:`expected a JSON value, got ${M}`,params:{}})};switch(typeof Q){case"undefined":case"string":case"boolean":return;case"number":if(!Number.isFinite(Q))H(String(Q));return;case"bigint":return H("a bigint");case"function":return H("a function");case"symbol":return H("a symbol")}if(Q===null)return;let Y=Q;if(X.has(Y))return H("a circular reference");X.add(Y);try{let M=G?Y.toJSON:void 0;if(typeof M==="function"){let K;try{K=M.call(Y)}catch{return H("a toJSON that threw")}if(K===void 0)return H("a toJSON that returns undefined");return Z0(K,Z,$,X,!1)}if(Array.isArray(Q))Q.forEach((K,J)=>Z0(K,[...Z,J],$,X));else for(let[K,J]of Object.entries(Y))Z0(J,[...Z,K],$,X)}finally{X.delete(Y)}}function E(Q){return P0(Q)}function P0(Q){let Z={toJSONSchema:()=>mQ(Q),parse($){let X=[],G=v(Q,$,[],X);if(X.length>0)throw Error(X.map(w0).join("; "));return G.drop?void 0:G.value},safeParse($){let X=[],G=v(Q,$,[],X);if(X.length>0)return{ok:!1,errors:X.map(w0)};return{ok:!0,value:G.drop?void 0:G.value}},validate($){let X=[],G=v(Q,$,[],X);if(X.length>0)return{ok:!1,issues:X};return{ok:!0,value:G.drop?void 0:G.value}},describe:($)=>P0({...Q,description:$}),optional:()=>P0({...Q,optional:!0}),nullable:()=>P0({...Q,nullable:!0,optional:!1})};return R0.set(Z,Q),Z}function x(Q){return{node:Q,optional:!1,nullable:!1}}var ZQ=["strip","error","passthrough"];class HQ extends Error{problems;constructor(Q){super(`gemi/ai: s.fromJSONSchema cannot model this schema:
2
+ import{Qi as N,Ri as _0,Si as C0}from"./chunk-efjk5aq7.js";import{Xi as x0,_i as b}from"./chunk-w4at2d5d.js";import{dl as BQ}from"./chunk-kcgnjzqr.js";import{wl as Y0}from"./chunk-23670kw5.js";import{El as lZ}from"./chunk-m5hd632w.js";class o0{static kind="controller";constructor(){}}class bQ extends o0{}function N0(Q){let Z=new Map;if(!Q)return Z;for(let $ of Q.split(";")){let X=$.indexOf("=");if(X===-1)continue;let G=$.slice(0,X).trim();if(!G)continue;Z.set(G,$.slice(X+1).trim())}return Z}function W1(Q){return N0(Q.headers.get("cookie"))}function p(Q){if(!/^\d+$/.test(Q))return null;let Z=Number(Q);return Number.isSafeInteger(Z)?Z:null}function t0(Q){if(!Q)return null;let Z=Q.trim();if(!/^bytes=/i.test(Z))return null;let X=Z.slice(6).split(",").map((D)=>D.trim()).filter((D)=>D!=="");if(X.length!==1)return null;let G=X[0],H=G.indexOf("-");if(H===-1)return null;let Y=G.slice(0,H),M=G.slice(H+1);if(Y===""){let D=p(M);if(D===null)return null;return{kind:"suffix",suffixLength:D}}let K=p(Y);if(K===null)return null;if(M==="")return{kind:"offset",start:K,end:null};let J=p(M);if(J===null||J<K)return null;return{kind:"offset",start:K,end:J}}function s0(Q,Z){if(!Number.isFinite(Z)||Z<=0)return null;let $,X;if(Q.kind==="suffix"){if(Q.suffixLength<=0)return null;$=Math.max(0,Z-Q.suffixLength),X=Z-1}else{if(Q.start>=Z)return null;if($=Q.start,X=Q.end===null?Z-1:Math.min(Q.end,Z-1),X<$)return null}return{start:$,end:X,length:X-$+1}}function z1(Q){if(Q.kind==="suffix")return`bytes=-${Q.suffixLength}`;return Q.end===null?`bytes=${Q.start}-`:`bytes=${Q.start}-${Q.end}`}function U1(Q){if(!Q)return null;let Z=/^bytes\s+(\d+)-(\d+)\/(\d+)$/i.exec(Q.trim());if(!Z)return null;let $=p(Z[1]),X=p(Z[2]),G=p(Z[3]);if($===null||X===null||G===null||X<$)return null;return{start:$,end:X,total:G}}function V1(Q,Z,$){return`bytes ${Q}-${Z}/${$}`}function r0(Q){return`bytes */${Q}`}class s extends N{errors={};constructor(Q){super("Validation error");this.name="ValidationError",this.errors=Q,this.payload={api:{status:400,data:{error:{kind:"validation_error",messages:Q,status:400}},headers:{"Content-Type":"application/json"}},view:{status:400}}}}function fQ(Q){let[Z,$]=Q.match(/\d+|\D+/g)??[];if(!Z||!$)return 0;let X=Number.parseInt(Z);switch($){case"B":return X;case"KB":return X*1024;case"MB":return X*1024*1024;case"GB":return X*1024*1024*1024;case"TB":return X*1024*1024*1024*1024;default:return 0}}function vQ(Q){switch(Q){case"image":return"image";case"png":return"image/png";case"jpg":return"image/jpeg";case"jpeg":return"image/jpeg";case"ttf":return"font/ttf";case"excel":return"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";case"csv":return"text/csv";case"word":return"application/vnd.openxmlformats-officedocument.wordprocessingml.document";case"pdf":return"application/pdf";case"json":return"application/json";default:return Q}}function a0(Q){if(typeof Q==="string"||Array.isArray(Q))return Q.length;return}function q0(Q){return typeof Q==="number"&&!Number.isNaN(Q)}var hQ=["required","string","boolean","number","email","password","min","max","gte","lte","file","fileType","fileSize","array","object","in"];class k extends Error{name="InvalidValidationRuleError"}function z0(Q,Z){let $=Z===void 0||Z.trim()===""?Number.NaN:Number(Z);if(Number.isNaN($))throw new k(`Validation rule "${Q}:${Z??""}" needs a number, e.g. "${Q}:3"`);return $}function e0(Q){let Z=Q.indexOf(":"),$=Z===-1?Q:Q.slice(0,Z),X=Z===-1?void 0:Q.slice(Z+1);switch($){case"required":return(G)=>{if(G instanceof Blob)return G.size>0;if(G===null||G===void 0)return!1;if(typeof G==="string"||Array.isArray(G))return G.length>0;return!0};case"string":return(G)=>typeof G==="string";case"boolean":return(G)=>typeof G==="boolean";case"number":return(G)=>q0(G);case"password":return(G)=>{return typeof G==="string"&&/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,}$/.test(G)};case"min":{let G=z0($,X);return(H)=>{let Y=a0(H);return Y!==void 0&&Y>=G}}case"max":{let G=z0($,X);return(H)=>{let Y=a0(H);return Y!==void 0&&Y<=G}}case"gte":{let G=z0($,X);return(H)=>q0(H)&&H>=G}case"lte":{let G=z0($,X);return(H)=>q0(H)&&H<=G}case"email":return(G)=>{return typeof G==="string"&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(G)};case"file":return(G)=>{return G instanceof Blob};case"fileType":{if(!X)throw new k('Validation rule "fileType" needs a type, e.g. "fileType:png" or "fileType:image"');let G=vQ(X);return(H)=>H instanceof Blob&&H.type.startsWith(G)}case"fileSize":{let G=fQ(X??"");if(G===0&&!/^0+(B|KB|MB|GB|TB)$/.test(X??""))throw new k(`Validation rule "fileSize:${X??""}" needs a whole size in B, KB, MB, GB or TB, e.g. "fileSize:5MB"`);return(H)=>H instanceof Blob&&H.size<=G}case"array":return(G)=>Array.isArray(G);case"object":return(G)=>typeof G==="object"&&G!==null&&!Array.isArray(G)&&!(G instanceof Blob);case"in":{let G=(X??"").split(",").filter((H)=>H!=="");if(G.length===0)throw new k('Validation rule "in" needs a comma-separated list, e.g. "in:draft,published"');return(H)=>typeof H==="string"&&G.includes(H)}default:throw new k(`Unknown validation rule "${Q}". Known rules: ${hQ.join(", ")}`)}}function u(Q){if(!Q.definition)throw Error(`gemi/ai: the recursive schema "${Q.name}" was used before its definition returned; \`self\` can be nested into the schema, but not parsed or emitted inside the callback`);return Q.definition}var R0=new WeakMap;function $Q(Q){return typeof Q==="object"&&Q!==null&&R0.has(Q)}function V0(Q){let Z=R0.get(Q);if(!Z)throw Error("gemi/ai: expected a schema built with `s`, got a foreign object");return Z}function mQ(Q){let Z={defs:{},cells:new Map},$=Q;if(Q.node.kind==="ref"){let G=u(Q.node.cell);$={...G,...Q.description?{description:Q.description}:{},optional:Q.optional,nullable:Q.nullable||G.nullable}}let X=a($,Z);return Object.keys(Z.defs).length>0?{...X,$defs:Z.defs}:X}function a(Q,Z){let $=(Q.optional||Q.nullable)&&Q.node.kind!=="json",X=uQ(pQ(Q.node,Z),$),G=[Q.description,cQ(Q.node)].filter(Boolean).join(" ");if(G&&X.$ref!==void 0)X={anyOf:[X]};return G?{description:G,...X}:X}function cQ(Q){let Z=[];if(Q.kind==="string"||Q.kind==="enum"){let $=Q.checks;if($?.format)Z.push(`Format: ${$.format.name}.`);if($?.minLength!==void 0)Z.push(`At least ${$.minLength} characters.`);if($?.maxLength!==void 0)Z.push(`At most ${$.maxLength} characters.`)}else if(Q.kind==="number"){let $=Q.checks;if($?.minimum!==void 0)Z.push(`Minimum ${$.minimum}.`);if($?.exclusiveMinimum!==void 0)Z.push(`Greater than ${$.exclusiveMinimum}.`);if($?.maximum!==void 0)Z.push(`Maximum ${$.maximum}.`);if($?.exclusiveMaximum!==void 0)Z.push(`Less than ${$.exclusiveMaximum}.`)}else if(Q.kind==="array"){let $=Q.checks;if($?.minItems!==void 0)Z.push(`At least ${$.minItems} items.`);if($?.maxItems!==void 0)Z.push(`At most ${$.maxItems} items.`)}return Z.join(" ")}function pQ(Q,Z){switch(Q.kind){case"string":return{type:"string"};case"number":return{type:Q.checks?.integer?"integer":"number"};case"boolean":return{type:"boolean"};case"literal":return{type:typeof Q.value,const:Q.value};case"enum":return{type:"string",enum:Q.values};case"array":return{type:"array",items:a(Q.item,Z)};case"object":return{type:"object",properties:Object.fromEntries(Object.entries(Q.shape).map(([$,X])=>[$,a(X,Z)])),required:Object.keys(Q.shape),additionalProperties:!1};case"union":return{anyOf:Q.members.map(($)=>a($,Z))};case"json":return{};case"ref":{let{cell:$}=Q,X=Z.cells.get($.name);if(X&&X!==$)throw Error(`gemi/ai: two different recursive schemas are named "${$.name}" in one schema; give each s.recursive(...) its own name`);if(!X)Z.cells.set($.name,$),Z.defs[$.name]={},Z.defs[$.name]=a(u($),Z);return{$ref:`#/$defs/${$.name}`}}}}function uQ(Q,Z){if(!Z)return Q;if(Q.anyOf)return{...Q,anyOf:[...Q.anyOf,{type:"null"}]};if(Q.enum||Q.const!==void 0)return{anyOf:[Q,{type:"null"}]};if(typeof Q.type==="string")return{...Q,type:[Q.type,"null"]};return{anyOf:[Q,{type:"null"}]}}function dQ(Q){if(Q===null)return"null";if(Array.isArray(Q))return"array";return typeof Q}function lQ(Q,Z){if(typeof Z==="number"&&!Number.isFinite(Z))return String(Z);if(Q.kind==="literal"||Q.kind==="enum"){if(typeof Z==="string"||typeof Z==="number"||typeof Z==="boolean")return JSON.stringify(Z)}return dQ(Z)}function XQ(Q){let Z=Q.node,$=(()=>{switch(Z.kind){case"number":return Z.checks?.integer?"integer":"number";case"string":case"boolean":return Z.kind;case"literal":return JSON.stringify(Z.value);case"enum":return`one of ${Z.values.map((X)=>JSON.stringify(X)).join(" | ")}`;case"array":return"array";case"object":return"object";case"union":return"one of the variants";case"json":return"a JSON value";case"ref":return XQ({...u(Z.cell),optional:!1,nullable:!1})}})();return Q.optional||Q.nullable?`${$} or null`:$}function iQ(Q){let Z="";for(let $ of Q)Z+=typeof $==="number"?`[${$}]`:Z?`.${$}`:$;return Z}function nQ(Q){let Z=iQ(Q);return Z?`${Z}: `:""}function w0(Q){return`${nQ(Q.path)}${Q.message}`}function B0(Q,Z){if(Z===null||Z===void 0)return Q.optional||Q.nullable?1:0;let $=Q.node;switch($.kind){case"string":return typeof Z==="string"?1:0;case"number":return typeof Z==="number"?1:0;case"boolean":return typeof Z==="boolean"?1:0;case"literal":return Z===$.value?10:0;case"enum":return typeof Z==="string"&&$.values.includes(Z)?10:0;case"array":return Array.isArray(Z)?1:0;case"object":{if(typeof Z!=="object"||Array.isArray(Z))return 0;let X=Z,G=1;for(let[H,Y]of Object.entries($.shape))G+=B0(Y,X[H]);return G}case"union":return $.members.reduce((X,G)=>Math.max(X,B0(G,Z)),0);case"json":return 1;case"ref":return GQ($.cell,Z,()=>1,()=>B0(u($.cell),Z))}}function GQ(Q,Z,$,X){if(typeof Z!=="object"||Z===null)return X();if(Q.active.has(Z))return $();Q.active.add(Z);try{return X()}finally{Q.active.delete(Z)}}function v(Q,Z,$,X){if(Q.optional&&(Z===null||Z===void 0))return{drop:!0,value:void 0};if(Q.nullable&&Z===null)return{drop:!1,value:null};return{drop:!1,value:oQ(Q,Z,$,X)}}function oQ(Q,Z,$,X){let G=Q.node,H=()=>{let Y=Z===void 0?"required":G.kind==="literal"?"const":G.kind==="enum"&&typeof Z==="string"?"enum":"type",M=Y==="const"?{allowedValue:G.value}:Y==="enum"?{allowedValues:G.values}:{};X.push({path:$,code:Y,message:`expected ${XQ(Q)}, got ${lQ(G,Z)}`,params:M});return};switch(G.kind){case"string":if(typeof Z!=="string")return H();return QQ(G.checks,Z,$,X),Z;case"number":if(typeof Z!=="number"||!Number.isFinite(Z))return H();if(G.checks?.integer&&!Number.isInteger(Z))return H();return sQ(G.checks,Z,$,X),Z;case"boolean":return typeof Z==="boolean"?Z:H();case"literal":return Z===G.value?Z:H();case"enum":if(typeof Z!=="string"||!G.values.includes(Z))return H();return QQ(G.checks,Z,$,X),Z;case"array":{if(!Array.isArray(Z))return H();let Y=Z.map((J,D)=>{let z=v(G.item,J,[...$,D],X);return z.drop?void 0:z.value}),{minItems:M,maxItems:K}=G.checks??{};if(M!==void 0&&Z.length<M)X.push({path:$,code:"minItems",message:`expected at least ${M} items, got ${Z.length}`,params:{limit:M}});if(K!==void 0&&Z.length>K)X.push({path:$,code:"maxItems",message:`expected at most ${K} items, got ${Z.length}`,params:{limit:K}});return Y}case"object":{if(typeof Z!=="object"||Z===null||Array.isArray(Z))return H();let Y=Z,M={};for(let[K,J]of Object.entries(G.shape)){let D=v(J,Y[K],[...$,K],X);if(!D.drop)M[K]=D.value}if(G.unknownKeys)for(let K of Object.keys(Y)){if(Object.hasOwn(G.shape,K)||Y[K]===void 0)continue;if(G.unknownKeys==="error"){X.push({path:[...$,K],code:"additionalProperties",message:"unknown key",params:{additionalProperty:K}});continue}Z0(Y[K],[...$,K],X,new Set),Object.defineProperty(M,K,{value:Y[K],enumerable:!0,writable:!0,configurable:!0})}return M}case"union":{let Y;for(let M of G.members){let K=[],J=v(M,Z,$,K);if(K.length===0)return J.drop?void 0:J.value;let D=B0(M,Z);if(!Y||D>Y.score)Y={issues:K,score:D}}X.push({path:$,code:"anyOf",message:`no matching variant; closest: ${Y.issues.map(w0).join("; ")}`,params:{closest:Y.issues}});return}case"json":if(Z===void 0)return H();return Z0(Z,$,X,new Set),Z;case"ref":return GQ(G.cell,Z,()=>{X.push({path:$,code:"type",message:"expected a finite tree, got a circular reference",params:{}});return},()=>v(u(G.cell),Z,$,X).value)}}function tQ(Q){let Z=0;for(let $ of Q)Z++;return Z}function QQ(Q,Z,$,X){if(!Q)return;let{minLength:G,maxLength:H,format:Y}=Q;if(G!==void 0||H!==void 0){let M=tQ(Z);if(G!==void 0&&M<G)X.push({path:$,code:"minLength",message:`expected at least ${G} characters, got ${M}`,params:{limit:G}});if(H!==void 0&&M>H)X.push({path:$,code:"maxLength",message:`expected at most ${H} characters, got ${M}`,params:{limit:H}})}if(Y){let M=!1;try{M=Y.test(Z)===!0}catch{}if(!M)X.push({path:$,code:"format",message:`expected a string in format "${Y.name}"`,params:{format:Y.name}})}}function sQ(Q,Z,$,X){if(!Q)return;let G=(H,Y,M,K)=>{if(Y===void 0||M(Y))return;X.push({path:$,code:H,message:`expected ${K} ${Y}, got ${Z}`,params:{limit:Y}})};G("minimum",Q.minimum,(H)=>Z>=H,"at least"),G("exclusiveMinimum",Q.exclusiveMinimum,(H)=>Z>H,"more than"),G("maximum",Q.maximum,(H)=>Z<=H,"at most"),G("exclusiveMaximum",Q.exclusiveMaximum,(H)=>Z<H,"less than")}function Z0(Q,Z,$,X,G=!0){let H=(M)=>{$.push({path:Z,code:"type",message:`expected a JSON value, got ${M}`,params:{}})};switch(typeof Q){case"undefined":case"string":case"boolean":return;case"number":if(!Number.isFinite(Q))H(String(Q));return;case"bigint":return H("a bigint");case"function":return H("a function");case"symbol":return H("a symbol")}if(Q===null)return;let Y=Q;if(X.has(Y))return H("a circular reference");X.add(Y);try{let M=G?Y.toJSON:void 0;if(typeof M==="function"){let K;try{K=M.call(Y)}catch{return H("a toJSON that threw")}if(K===void 0)return H("a toJSON that returns undefined");return Z0(K,Z,$,X,!1)}if(Array.isArray(Q))Q.forEach((K,J)=>Z0(K,[...Z,J],$,X));else for(let[K,J]of Object.entries(Y))Z0(J,[...Z,K],$,X)}finally{X.delete(Y)}}function E(Q){return P0(Q)}function P0(Q){let Z={toJSONSchema:()=>mQ(Q),parse($){let X=[],G=v(Q,$,[],X);if(X.length>0)throw Error(X.map(w0).join("; "));return G.drop?void 0:G.value},safeParse($){let X=[],G=v(Q,$,[],X);if(X.length>0)return{ok:!1,errors:X.map(w0)};return{ok:!0,value:G.drop?void 0:G.value}},validate($){let X=[],G=v(Q,$,[],X);if(X.length>0)return{ok:!1,issues:X};return{ok:!0,value:G.drop?void 0:G.value}},describe:($)=>P0({...Q,description:$}),optional:()=>P0({...Q,optional:!0}),nullable:()=>P0({...Q,nullable:!0,optional:!1})};return R0.set(Z,Q),Z}function x(Q){return{node:Q,optional:!1,nullable:!1}}var ZQ=["strip","error","passthrough"];class HQ extends Error{problems;constructor(Q){super(`gemi/ai: s.fromJSONSchema cannot model this schema:
3
3
  ${Q.map((Z)=>`- ${Z}`).join(`
4
4
  `)}`);this.name="JSONSchemaError",this.problems=Q}}var rQ=new Set(["title","$schema","$id","$comment","examples","default","deprecated","readOnly","writeOnly"]),r={string:["minLength","maxLength","format"],number:["minimum","maximum","exclusiveMinimum","exclusiveMaximum"],integer:["minimum","maximum","exclusiveMinimum","exclusiveMaximum"],boolean:[],object:["properties","required","additionalProperties"],array:["items","minItems","maxItems"]};function U0(Q){return typeof Q==="object"&&Q!==null&&!Array.isArray(Q)}function j0(Q,Z,$,X){let G=(W,V=$)=>{X.push(V?`${V}: ${W}`:W);return},H=(W)=>$?`${$}.${W}`:W;if(!U0(Q))return G("expected a schema object");let Y=new Set(Z.ignoreKeywords??[]),M=(W)=>rQ.has(W)||W.startsWith("x-")||Y.has(W),K=!1,J=Q.type;if(Array.isArray(J)){let W=J.filter((V)=>V!=="null");if(W.length!==1)return G(`type ${JSON.stringify(J)} is not supported; only one type, optionally with "null". Use anyOf for alternatives`,H("type"));K=W.length<J.length,J=W[0]}if(J!==void 0&&(typeof J!=="string"||!(J in r)))return G(`type ${JSON.stringify(J)} is not supported; expected one of ${Object.keys(r).join(", ")}`,H("type"));let D=new Set(["type","description","enum","const","anyOf",...J?r[J]:[]]),z=!1;for(let W of Object.keys(Q)){if(D.has(W)||M(W))continue;z=!0;let V=Object.entries(r).find(([,U])=>U.includes(W));G(V&&V[0]!==J?`"${W}" applies to type ${V[0]}, and this schema is ${J?`type ${J}`:"untyped"}`:`"${W}" is not supported by s.fromJSONSchema`,H(W))}if(z)return;if(Q.description!==void 0&&typeof Q.description!=="string")return G("expected a string",H("description"));let O=Q.description,B=(W)=>({node:W,optional:!1,nullable:K,...O?{description:O}:{}});if(Q.anyOf!==void 0){if(J!==void 0||Q.enum!==void 0||Q.const!==void 0)return G("anyOf cannot be combined with type, enum or const here",H("anyOf"));if(!Array.isArray(Q.anyOf)||Q.anyOf.length===0)return G("expected a non-empty array",H("anyOf"));let W=[],V=!1;if(Q.anyOf.forEach((U,P)=>{if(U0(U)&&U.type==="null"&&Object.keys(U).length===1){K=!0;return}let F=j0(U,Z,H(`anyOf[${P}]`),X);if(F)W.push(F);else V=!0}),V)return;if(W.length===0)return G("anyOf has only null in it",H("anyOf"));if(W.length===1){let U=W[0];return{...U,nullable:U.nullable||K,...O?{description:O}:{}}}return B({kind:"union",members:W})}if(Q.const!==void 0){let W=Q.const;if(typeof W!=="string"&&typeof W!=="number"&&typeof W!=="boolean")return G("only a string, number or boolean const is supported",H("const"));if(J!==void 0&&typeof W!==(J==="integer"?"number":J))return G(`const ${JSON.stringify(W)} is not of type ${J}`,H("const"));return B({kind:"literal",value:W})}let _;if(J==="string"){if(_=aQ(Q,Z,H,X),_===null)return}if(Q.enum!==void 0){if(!Array.isArray(Q.enum)||Q.enum.length===0)return G("expected a non-empty array",H("enum"));let W=Q.enum.filter((P)=>P!==null);if(W.length<Q.enum.length)K=!0;let V=W.find((P)=>!(typeof P==="string"||typeof P==="number"||typeof P==="boolean")||J!==void 0&&typeof P!==(J==="integer"?"number":J));if(V!==void 0||W.length===0)return G(J?`every value must be of type ${J}${W.length===0?", and there must be one":`; ${JSON.stringify(V)} is not`}`:"only strings, numbers and booleans are supported",H("enum"));if(W.every((P)=>typeof P==="string"))return B({kind:"enum",values:[...new Set(W)],..._?{checks:_}:{}});let U=[...new Set(W)];if(U.length===1)return B({kind:"literal",value:U[0]});return B({kind:"union",members:U.map((P)=>x({kind:"literal",value:P}))})}switch(J){case void 0:return G("a schema needs a type, an enum, a const or an anyOf");case"string":return B({kind:"string",..._?{checks:_}:{}});case"number":case"integer":{let W=J==="integer"?{integer:!0}:{},V=!1;for(let U of r.number){let P=Q[U];if(P===void 0)continue;if(typeof P!=="number"||!Number.isFinite(P)){G("expected a number",H(U)),V=!0;continue}W[U]=P}if(V)return;return B({kind:"number",...Object.keys(W).length>0?{checks:W}:{}})}case"boolean":return B({kind:"boolean"});case"array":{if(!U0(Q.items))return G('an array needs "items" to be one schema (tuples are not supported)',H("items"));let W={},V=!1;for(let P of["minItems","maxItems"]){let F=Q[P];if(F===void 0)continue;if(typeof F!=="number"||!Number.isInteger(F)||F<0){G("expected a non-negative integer",H(P)),V=!0;continue}W[P]=F}let U=j0(Q.items,Z,H("items"),X);if(!U||V)return;return B({kind:"array",item:U,...Object.keys(W).length>0?{checks:W}:{}})}case"object":{let W=Q.properties??{};if(!U0(W))return G("expected an object",H("properties"));if(Q.additionalProperties!==void 0&&Q.additionalProperties!==!1)return G("only false is supported; a record with arbitrary keys has no strict-mode form (use s.json())",H("additionalProperties"));let V=Q.required??[];if(!Array.isArray(V)||!V.every((T)=>typeof T==="string"))return G("expected an array of property names",H("required"));let U=V.filter((T)=>!Object.hasOwn(W,T));if(U.length>0)return G(`lists properties the schema doesn't have: ${U.join(", ")}`,H("required"));let P={},F=!1;for(let[T,L]of Object.entries(W)){let R=j0(L,Z,H(`properties.${T}`),X);if(!R){F=!0;continue}P[T]=V.includes(T)?R:{...R,optional:!0}}if(F)return;let I=Z.unknownKeys;return B({kind:"object",shape:P,...I==="error"||I==="passthrough"?{unknownKeys:I}:{}})}}return}function aQ(Q,Z,$,X){let G={},H=!1;for(let Y of["minLength","maxLength"]){let M=Q[Y];if(M===void 0)continue;if(typeof M!=="number"||!Number.isInteger(M)||M<0){X.push(`${$(Y)}: expected a non-negative integer`),H=!0;continue}G[Y]=M}if(Q.format!==void 0){let Y=Q.format,M=typeof Y==="string"?Z.formats?.[Y]:void 0;if(typeof Y!=="string")X.push(`${$("format")}: expected a string`),H=!0;else if(!M||!Object.hasOwn(Z.formats,Y))X.push(`${$("format")}: unknown format ${JSON.stringify(Y)}; pass a check for it in the formats option`),H=!0;else G.format={name:Y,test:eQ(M)}}if(H)return null;return Object.keys(G).length>0?G:void 0}function eQ(Q){if(Q===!0)return()=>!0;if(Q instanceof RegExp)return(Z)=>{return Q.lastIndex=0,Q.test(Z)};return Q}var _1={string:()=>E(x({kind:"string"})),number:()=>E(x({kind:"number"})),boolean:()=>E(x({kind:"boolean"})),literal:(Q)=>E(x({kind:"literal",value:Q})),enum:(Q)=>E(x({kind:"enum",values:Q})),object:(Q)=>E(x({kind:"object",shape:Object.fromEntries(Object.entries(Q).map(([Z,$])=>[Z,V0($)]))})),array:(Q)=>E(x({kind:"array",item:V0(Q)})),union:(Q)=>E(x({kind:"union",members:Q.map(V0)})),json:()=>E(x({kind:"json"})),recursive:ZZ,fromJSONSchema:(Q,Z={})=>{let $=[];if(Z.unknownKeys!==void 0&&!ZQ.includes(Z.unknownKeys))throw Error(`gemi/ai: s.fromJSONSchema's unknownKeys option must be one of ${ZQ.map((G)=>JSON.stringify(G)).join(", ")}, got ${JSON.stringify(Z.unknownKeys)}`);let X=j0(Q,Z,"",$);if(!X||$.length>0)throw new HQ($.length>0?$:["unreadable schema"]);return E(X)}};function C1(Q){let Z=R0.get(Q);if(Z)return Q0(Z.node);return e(Q.toJSONSchema())}function e(Q){if(!(Q.$ref!==void 0||Q.type!==void 0||Q.enum!==void 0||Q.const!==void 0||Q.anyOf!==void 0||Q.properties!==void 0||Q.items!==void 0))return!1;for(let $ of Object.values(Q.properties??{}))if(!e($))return!1;if(Q.items&&!e(Q.items))return!1;for(let $ of Q.anyOf??[])if(!e($))return!1;for(let $ of Object.values(Q.$defs??{}))if(!e($))return!1;return!0}function Q0(Q,Z=new Set){switch(Q.kind){case"string":case"number":case"boolean":case"literal":case"enum":return!0;case"object":return Object.values(Q.shape).every(($)=>Q0($.node,Z));case"array":return Q0(Q.item.node,Z);case"union":return Q.members.every(($)=>Q0($.node,Z));case"json":return!1;case"ref":if(Z.has(Q.cell))return!0;return Z.add(Q.cell),Q0(u(Q.cell).node,Z)}}function E0(Q,Z,$=new Set){let X=Q.node;if(X.kind==="union")return X.members.some((G)=>E0(G,Z,$));if(X.kind!=="ref")return!1;if(X.cell===Z)return!0;if($.has(X.cell)||!X.cell.definition)return!1;return $.add(X.cell),E0(X.cell.definition,Z,$)}var QZ=/^[A-Za-z_][A-Za-z0-9_-]{0,63}$/;function ZZ(Q,Z){if(typeof Q!=="string"||!QZ.test(Q))throw Error(`gemi/ai: s.recursive needs a name of letters, digits, "_" and "-" (starting with a letter or "_", at most 64), got ${JSON.stringify(Q)}`);let $={name:Q,active:new Set},X=()=>x({kind:"ref",cell:$}),G=V0(Z(E(X())));if(G.optional)throw Error(`gemi/ai: the recursive schema "${Q}" is optional() as a whole; mark the places that use it optional instead`);if(E0(G,$))throw Error(`gemi/ai: the recursive schema "${Q}" refers to itself outside any object or array, so it describes no finite value; nest \`self\` in an s.object(...) field or an s.array(...)`);return $.definition=G,E(X())}function YQ(Q){if(typeof Q!=="string")return null;let[Z]=Q.split(";",1),$=Z.trim().toLowerCase();return $===""?null:$}function KQ(Q){if(Q===null)return!1;if(Q==="application/json")return!0;let Z=Q.indexOf("/");return Z>0&&Q.endsWith("+json")&&Q.length>Z+1+5}var $0=new WeakMap;function F1(Q,Z,$,X){$0.set(Q,{clientAddress:Z,...$?{grant:Object.freeze({...$,scopes:Object.freeze([...$.scopes])})}:{},...X?{progress:X}:{}})}function MQ(Q){return $0.get(Q)?.progress}function JQ(Q){return $0.get(Q)?.grant}function WQ(Q){return $0.has(Q)}function I1(Q){return $0.get(Q)?.clientAddress}var DQ=new WeakMap;function A1(Q,Z){DQ.set(Q,Z)}function zQ(Q){return DQ.get(Q)??null}var S0=new WeakMap;function N1(Q,Z){let $=S0.get(Q)??[];if(!$.includes(Z))S0.set(Q,[...$,Z])}function q1(Q){return S0.get(Q)??[]}class d{data;constructor(Q){this.data=Q}get(Q){return this.data[Q]}has(Q){return this.data[Q]!==void 0}toJSON(){return this.data}}function UQ(Q){return typeof Q==="object"&&Q!==null&&!(Q instanceof Blob)}function $Z(Q,Z){if(!Z.includes(".")||Object.hasOwn(Q,Z))return[{path:[Z],value:Q[Z]}];let $=[{path:[],value:Q}];for(let X of Z.split(".")){let G=[];for(let{path:H,value:Y}of $){if(X==="*"){if(Array.isArray(Y))Y.forEach((M,K)=>G.push({path:[...H,K],value:M}));else if(UQ(Y))for(let[M,K]of Object.entries(Y))G.push({path:[...H,M],value:K});continue}if(Array.isArray(Y)&&/^\d+$/.test(X)){G.push({path:[...H,Number(X)],value:Y[Number(X)]});continue}G.push({path:[...H,X],value:UQ(Y)&&Object.hasOwn(Y,X)?Y[X]:void 0})}$=G}return $}function VQ(Q){return Q.join(".")}class XZ{kind;rawRequest;headers;cookies;search;schema={};routePath;params;domain;state;constructor(Q,Z,$,X){if(!Q){let K=b.getStore().req;this.params=K.params,this.rawRequest=K.rawRequest,this.kind=K.kind,this.routePath=K.routePath,this.domain=K.domain??null,this.state=K.state??new x0}else this.params=Z,this.rawRequest=Q,this.routePath=X,this.kind=$??"api",this.domain=zQ(Q),this.state=new x0;this.headers=this.rawRequest.headers;let G=N0(this.rawRequest.headers.get("Cookie")),H=new URL(this.rawRequest.url),Y=new Map;for(let[K,J]of H.searchParams)if(Y.has(K)){let D=Y.get(K);if(Array.isArray(D))D.push(J),Y.set(K,D);else Y.set(K,[D,J])}else Y.set(K,J);let M=Object.fromEntries(Y.entries());this.search=new d(M),this.cookies=G}locale(){return b.getStore().locale}ctx(){return b.getStore()}isModelOriginated(){return WQ(this.rawRequest)}mcpGrant(){return JQ(this.rawRequest)??null}reportProgress(Q){let Z=MQ(this.rawRequest);if(!Z)return!1;return Z(Q),!0}get signal(){return this.rawRequest.signal}range(){return t0(this.rawRequest.headers.get("Range"))}refine(Q){return{}}async parseBody(){let Q=YQ(this.rawRequest.headers.get("Content-Type"));if(KQ(Q))return new d(await this.parseJsonBody());if(Q==="application/x-www-form-urlencoded"||Q==="multipart/form-data"){let Z;try{Z=await this.rawRequest.formData()}catch(X){if(X instanceof N)throw X;throw new N("The request body could not be read as a form.")}let $=new Map;for(let[X,G]of Z.entries())if($.has(X)){let H=$.get(X);if(Array.isArray(H))H.push(G);else $.set(X,[H,G])}else $.set(X,G);return new d(Object.fromEntries($.entries()))}return new d({})}async parseJsonBody(){if(!this.rawRequest.body)return{};let Q;try{Q=await this.rawRequest.text()}catch($){if($ instanceof N)throw $;throw new N("The request body could not be read.")}if(Q.trim()==="")return{};let Z;try{Z=JSON.parse(Q)}catch{throw new N("The request body is not valid JSON.")}if(Z===null||typeof Z!=="object")throw new N("The request body must be a JSON object.");return Z}validateInput(Q){if($Q(this.schema))return this.validateWithSchema(Q);let Z=Q.toJSON()??{},$={},X=Object.entries(this.schema).map(([G,H])=>({key:G,rules:Object.entries(H).map(([Y,M])=>({rule:Y,message:M,check:typeof M==="function"?null:this.ruleFor(G,Y)}))}));for(let{key:G,rules:H}of X)for(let{path:Y,value:M}of $Z(Z,G)){let K=this.checkField(M,H);if(K.length>0){let J=$[VQ(Y)]??=[];for(let D of K)if(!J.includes(D))J.push(D)}}if(this.addRefinements($,Z),Object.keys($).length>0)throw new s($);return Q}checkField(Q,Z){let $=Z.some(({rule:H})=>H==="required"),X=Q===void 0||Q===null||Q==="",G=[];for(let{rule:H,message:Y,check:M}of Z){let K=Y,J=!1;if(typeof Y==="function")K=Y(Q),J=typeof K>"u";else J=M(Q);if(J)continue;if(X&&!$)continue;if(H==="required")return[String(K)];if(!G.includes(String(K)))G.push(String(K))}return G}validateWithSchema(Q){let Z=this.schema.validate(Q.toJSON()),$={};if("issues"in Z)for(let G of Z.issues){let H=VQ(G.path),Y=$[H]??=[];if(!Y.includes(G.message))Y.push(G.message)}let X="value"in Z?new d(Z.value):Q;if(this.addRefinements($,X.toJSON()),Object.keys($).length>0)throw new s($);return X}addRefinements(Q,Z){for(let[$,X]of Object.entries(this.refine(Z)??{})){let G=Q[$]??[];Q[$]=G.includes(X)?G:[...G,X]}}ruleFor(Q,Z){try{return e0(Z)}catch($){if($ instanceof k)throw new k(`${this.constructor.name}.schema.${Q}: ${$.message}`);throw $}}async input(){return this.validateInput(await this.parseBody())}async safeInput(){let Q=await this.parseBody();try{return{isValid:!0,errors:{},input:this.validateInput(Q)}}catch(Z){if(!(Z instanceof s))throw Z;return{isValid:!1,errors:Z.errors,input:Q}}}}class GZ extends N{error;constructor(Q="Not authorized"){super(Q);this.name="AuthorizationError",this.error=Q,this.payload={api:{status:401,data:{error:C0("authorization",this.error,401)}},view:{}}}}class k0 extends N{static apiStatus=403;error;constructor(Q="Insufficient permissions"){super(Q);this.name="InsufficientPermissionsError",this.error=Q,this.payload={api:{status:k0.apiStatus,data:{error:C0("permission",this.error,k0.apiStatus)}},view:{status:403}}}}class g0 extends N{total;constructor(Q){super("Range not satisfiable");this.total=Q;this.name="RangeNotSatisfiableError",this.payload={api:{status:416,data:{error:_0("range_not_satisfiable","Range not satisfiable",416)},headers:{"Content-Range":r0(Q),"Accept-Ranges":"bytes","Cache-Control":"no-store"}},view:{}}}}class HZ extends N{constructor(Q="Not found"){super(Q);this.name="NotFoundError",this.payload={api:{status:404,data:{error:_0("not_found",Q,404)},headers:{"Cache-Control":"no-store"}},view:{status:404}}}}class h extends N{fileName;constructor(Q){super("File not found");this.fileName=Q;this.name="FileNotFoundError",this.payload={api:{status:404,data:{error:_0("not_found","Not found",404)},headers:{"Cache-Control":"no-store"}},view:{status:404}}}}class YZ extends N{constructor(Q={}){super("Authentication error");this.name="AuthenticationError";let Z=Q.redirectTo??"/auth/sign-in";this.payload={api:{status:401,data:{error:C0("authentication","Authentication error",401)}},viewData:{status:200,data:{},headers:{"Cache-Control":"private, no-cache, no-store, max-age=0, must-revalidate"},directive:{kind:"Redirect",path:Z}},view:{status:302,headers:{"Cache-Control":"private, no-cache, no-store, max-age=0, must-revalidate",Location:Z}}}}}class X0{static getFacadeAccessor(){throw Error(`Facade [${this.name}] does not implement getFacadeAccessor().`)}static getFacadeRoot(){return BQ(this.getFacadeAccessor())}}import{Buffer as KZ}from"buffer";function L0(Q){if(typeof Q!=="string"||/^[\s/.]*$/.test(Q))throw Error(`Refusing to delete by prefix ${JSON.stringify(Q)}: it would match the whole store`)}class G0{async putStream({body:Q,...Z},$={}){$.signal?.throwIfAborted();let X=[],G=Q.getReader();try{for(;;){$.signal?.throwIfAborted();let{done:H,value:Y}=await G.read();if(H)break;X.push(Y)}}catch(H){throw await G.cancel(H).catch(()=>{}),H}return this.put({...Z,body:KZ.concat(X)},$)}async*objects(Q,Z={}){throw Error(`${this.constructor.name} does not implement objects(). Override it to list objects in this backend.`)}async deletePrefix(Q,Z={}){L0(Q);let $=[];for await(let X of this.objects(Q,Z))$.push(X.name);for(let X of $)Z.signal?.throwIfAborted(),await this.delete({name:X,bucket:Z.bucket});return $.length}async delete(Q){throw Error(`${this.constructor.name} does not implement delete(). Override it to remove objects from this backend.`)}async read(Q){let Z=typeof Q==="string"?{name:Q}:Q,$=await this.fetch({name:Z.name,bucket:Z.bucket});if(!$.ok)throw new h(Z.name);let X=$.headers.get("Content-Type")??"application/octet-stream",G=$.headers.get("ETag")??void 0,H=$.headers.get("Last-Modified"),Y=H?new Date(H):void 0;if(Z.range){let J=await $.blob();return{body:J,start:0,end:J.size-1,total:J.size,partial:!1,type:X,etag:G,lastModified:Y,name:Z.name}}let M=Number($.headers.get("Content-Length")),K=Number.isFinite(M)?M:0;return{body:$.body,start:0,end:K-1,total:K,partial:!1,type:X,etag:G,lastModified:Y,name:Z.name}}async size(Q){let Z=typeof Q==="string"?Q:Q.name,$=typeof Q==="string"?void 0:Q.bucket,X=await this.fetch({name:Z,bucket:$});if(!X.ok)throw new h(Z);let G=Number(X.headers.get("Content-Length"));if(Number.isFinite(G))return await X.body?.cancel(),G;return(await X.blob()).size}}function PQ(Q,Z){if(!Z)return Q;let $=Q.getReader(),X=!1,G,H=()=>{if(X=!0,G)Z.removeEventListener("abort",G)};return new ReadableStream({start(Y){if(G=()=>{if(X)return;H(),Y.error(Z.reason),$.cancel(Z.reason).catch(()=>{})},Z.aborted)G();else Z.addEventListener("abort",G,{once:!0})},async pull(Y){let M;try{M=await $.read()}catch(K){if(X)return;H(),Y.error(K);return}if(X)return;if(M.done){H(),Y.close();return}Y.enqueue(M.value)},cancel(Y){return H(),$.cancel(Y)}},{highWaterMark:0})}import{mkdir as MZ,open as JZ,readdir as y0,rename as WZ,rmdir as DZ,stat as zZ,unlink as jQ}from"fs/promises";import{dirname as UZ,isAbsolute as b0,relative as H0,resolve as l,sep as f}from"path";class f0 extends G0{configured;constructor(Q){super();this.configured=Q}get folderPath(){return this.configured??`${Y0()}/storage`}async put(Q,{signal:Z}={}){Z?.throwIfAborted();let $,X;if(Q instanceof Blob)$=Q,X=`${Bun.randomUUIDv7()}.${Q.type.split("/")[1].split(";")[0]}`;else $=Q.body,X=Q.name;let G=$ instanceof Buffer?$:$ instanceof Blob||$ instanceof File?Buffer.from(await $.arrayBuffer()):"",H=`${this.folderPath}/${X}`;return Z?.throwIfAborted(),await Bun.write(H,G),X}async putStream({name:Q,body:Z},{signal:$}={}){let X=Z.getReader(),G=null;try{if($?.throwIfAborted(),!Q)throw Error("Object name has to be specified");let H=l(this.folderPath),Y=l(H,Q),M=H0(H,Y);if(!M||M===".."||M.startsWith(`..${f}`)||b0(M))throw Error(`Refusing to write "${Q}": it is outside the storage folder`);await MZ(UZ(Y),{recursive:!0}),G=`${Y}.${Bun.randomUUIDv7()}.partial`;let K=await JZ(G,"wx");try{for(;;){$?.throwIfAborted();let{done:J,value:D}=await X.read();if(J)break;for(let z=0;z<D.byteLength;){let{bytesWritten:O}=await K.write(D,z);z+=O}}}finally{await K.close()}return $?.throwIfAborted(),await WZ(G,Y),Q}catch(H){if(await X.cancel(H).catch(()=>{}),G)await jQ(G).catch(()=>{});throw H}}async fetch(Q,{signal:Z}={}){Z?.throwIfAborted();let $=process.env.BUCKET_NAME,X;if(typeof Q==="string")X=Q;else $=Q.bucket??$,X=Q.name;if(!X)throw Error("Object name has to be specified");let G=`${this.folderPath}/${X}`,H=Bun.file(G),Y=PQ(Bun.file(G).stream(),Z),M=new Date(H.lastModified).toUTCString();return new Response(Y,{headers:{"Content-Type":H.type,"Content-Length":String(H.size),"Cache-Control":"private, max-age=12000, must-revalidate","Last-Modified":M}})}async read(Q){let Z=typeof Q==="string"?{name:Q}:Q,{name:$,range:X=null}=Z;if(!$)throw Error("Object name has to be specified");let G=Bun.file(`${this.folderPath}/${$}`);if(!await G.exists())throw new h($);let H=G.size,Y=X?s0(X,H):null;if(X&&!Y)throw new g0(H);let M=Y?.start??0,K=Y?Y.end:H-1;return{body:Y?G.slice(M,K+1):G,start:M,end:K,total:H,partial:Boolean(Y),type:G.type||"application/octet-stream",lastModified:new Date(G.lastModified),name:$}}async size(Q){let Z=typeof Q==="string"?Q:Q.name,$=Bun.file(`${this.folderPath}/${Z}`);if(!await $.exists())throw new h(Z);return $.size}async delete(Q){let Z=typeof Q==="string"?Q:Q.name;if(!Z)throw Error("Object name has to be specified");let $=l(this.folderPath),X=l($,Z),G=H0($,X);if(!G||G===".."||G.startsWith(`..${f}`)||b0(G))throw Error(`Refusing to delete "${Z}": it is outside the storage folder`);try{await jQ(X)}catch(H){if(H?.code==="ENOENT")return;throw H}}resolvePrefix(Q){let Z=l(this.folderPath),$=Q.lastIndexOf("/"),X=$===-1?"":Q.slice(0,$),G=$===-1?Q:Q.slice($+1),H=l(Z,X),Y=H0(Z,H);if(Y===".."||Y.startsWith(`..${f}`)||b0(Y))throw Error(`Refusing to list "${Q}": it is outside the storage folder`);let M=Y.split(f).join("/");return{root:Z,dir:H,match:M?`${M}/${G}`:G}}async*objects(Q,{signal:Z}={}){Z?.throwIfAborted();let{root:$,dir:X,match:G}=this.resolvePrefix(Q),H=[],Y=async(M)=>{let K;try{K=await y0(M,{withFileTypes:!0})}catch(J){if(J?.code==="ENOENT"||J?.code==="ENOTDIR")return;throw J}for(let J of K){let D=`${M}${f}${J.name}`,z=H0($,D).split(f).join("/");if(J.isDirectory()){if(`${z}/`.startsWith(G)||G.startsWith(`${z}/`))await Y(D)}else if(J.isFile()&&z.startsWith(G))H.push(z)}};await Y(X),H.sort();for(let M of H){Z?.throwIfAborted();let K;try{K=await zZ(`${$}/${M}`)}catch(J){if(J?.code==="ENOENT")continue;throw J}yield{name:M,size:K.size,lastModified:K.mtime}}}async deletePrefix(Q,Z={}){L0(Q);let{root:$,match:X}=this.resolvePrefix(Q);L0(X);let G=await super.deletePrefix(Q,Z);if(G>0)await this.pruneEmptyDirs($,X);return G}async pruneEmptyDirs(Q,Z){let $=[],X=async(G)=>{let H;try{H=await y0(G,{withFileTypes:!0})}catch{return}for(let Y of H){if(!Y.isDirectory())continue;let M=`${G}${f}${Y.name}`,K=H0(Q,M).split(f).join("/");if(`${K}/`.startsWith(Z)||Z.startsWith(`${K}/`)){if(await X(M),`${K}/`.startsWith(Z))$.push(M)}}};await X(Q);for(let G of $)try{await DZ(G)}catch{}}async list(){return await y0(this.folderPath)}}function Y8(Q){return Q}function RQ(){return{driver:new f0}}class v0{static token="filesystem";driver;constructor(Q={}){this.driver=Q.driver??RQ().driver}}class q extends Error{code="safe-fetch";url;constructor(Q,Z,$){super(Q,$);this.name=new.target.name,this.url=Z}}class m extends q{reason;code="invalid-url";constructor(Q,Z,$){super($,Q);this.reason=Z}}class O0 extends q{host;reason;code="blocked-host";constructor(Q,Z,$){super($==="denied"?`Requests to ${Z} are not allowed.`:`${Z} is not on the list of hosts this request may reach.`,Q);this.host=Z;this.reason=$}}class i extends q{host;address;range;code="blocked-address";constructor(Q,Z,$,X){super(Z===$?`${$} is not a public address (${X}).`:`${Z} resolves to ${$}, which is not a public address (${X}).`,Q);this.host=Z;this.address=$;this.range=X}}class F0 extends q{host;code="dns";constructor(Q,Z,$){super(`Couldn't resolve ${Z}.`,Q,{cause:$});this.host=Z}}class I0 extends q{phase;ms;code="timeout";constructor(Q,Z,$){super(Z==="connect"?`Couldn't connect within ${$} ms.`:`The request didn't finish within ${$} ms.`,Q);this.phase=Z;this.ms=$}}class T0 extends q{limit;code="too-large";constructor(Q,Z){super(`The response is larger than ${Z} bytes.`,Q);this.limit=Z}}class K0 extends q{contentType;allowed;code="content-type";constructor(Q,Z,$){super(`The response is ${Z??"of no content type"}, not ${$.join(" or ")}.`,Q);this.contentType=Z;this.allowed=$}}class h0 extends q{limit;code="too-many-redirects";constructor(Q,Z){super(`More than ${Z} redirects.`,Q);this.limit=Z}}class n extends q{code="network";constructor(Q,Z){super(`The request failed: ${Z instanceof Error?Z.message:String(Z)}`,Q,{cause:Z})}}class m0 extends q{status;code="http-status";constructor(Q,Z){super(`The server answered ${Z}.`,Q);this.status=Z}}function VZ(Q){if(Q==="")return null;let Z=Q.split(".");if(Z.length>1&&Z[Z.length-1]==="")Z.pop();if(Z.length===0||Z.length>4)return null;let $=[];for(let H of Z){let Y=BZ(H);if(Y===null)return null;$.push(Y)}let X=$.pop();for(let H of $)if(H>255)return null;if(X>=256**(4-$.length))return null;let G=X;return $.forEach((H,Y)=>{G+=H*256**(3-Y)}),new Uint8Array([Math.floor(G/16777216)&255,Math.floor(G/65536)&255,Math.floor(G/256)&255,G&255])}function BZ(Q){if(Q==="")return null;let Z=Q,$=10;if(/^0x/i.test(Z)){if(Z=Z.slice(2),$=16,Z==="")return 0}else if(Z.length>1&&Z.startsWith("0"))Z=Z.slice(1),$=8;if(!($===16?/^[0-9a-f]+$/i:$===8?/^[0-7]+$/:/^[0-9]+$/).test(Z))return null;let G=parseInt(Z,$);return Number.isSafeInteger(G)?G:null}function _Q(Q){let Z=Q;if(Z.startsWith("[")&&Z.endsWith("]"))Z=Z.slice(1,-1);let $=Z.indexOf("%");if($!==-1)Z=Z.slice(0,$);if(!Z.includes(":"))return null;let X=Z.split("::");if(X.length>2)return null;let G=(J,D)=>{if(J==="")return[];let z=[],O=J.split(":");for(let B=0;B<O.length;B++){let _=O[B];if(D&&B===O.length-1&&_.includes(".")){if(!/^\d{1,3}(\.\d{1,3}){3}$/.test(_))return null;let W=_.split(".").map(Number);if(W.some((V)=>V>255))return null;z.push(W[0]<<8|W[1],W[2]<<8|W[3]);continue}if(!/^[0-9a-f]{1,4}$/i.test(_))return null;z.push(parseInt(_,16))}return z},H=G(X[0],X.length===1),Y=X.length===2?G(X[1],!0):[];if(!H||!Y)return null;let M;if(X.length===2){let J=8-H.length-Y.length;if(J<1)return null;M=[...H,...Array.from({length:J},()=>0),...Y]}else M=H;if(M.length!==8)return null;let K=new Uint8Array(16);return M.forEach((J,D)=>{K[D*2]=J>>8,K[D*2+1]=J&255}),K}function M0(Q){let Z=_Q(Q);if(Z)return{family:6,bytes:Z};let $=VZ(Q);if($)return{family:4,bytes:$};return null}function c(Q){if(Q.family===6&&PZ(Q.bytes))return{family:4,bytes:Q.bytes.slice(12)};return Q}function PZ(Q){for(let Z=0;Z<10;Z++)if(Q[Z]!==0)return!1;return Q[10]===255&&Q[11]===255}function J0(Q){if(Q.family===4)return Array.from(Q.bytes).join(".");let Z=[];for(let $=0;$<16;$+=2)Z.push((Q.bytes[$]<<8|Q.bytes[$+1]).toString(16));return Z.join(":")}function o(Q){let Z=Q.lastIndexOf("/"),$=Z===-1?Q:Q.slice(0,Z),X=/^[0-9.]+$/.test($)?jZ($):_Q($);if(!X)return null;let G=c(X.length===4?{family:4,bytes:X}:{family:6,bytes:X}),H=G.family===4?32:128,Y=H;if(Z!==-1){let M=Q.slice(Z+1);if(!/^\d{1,3}$/.test(M))return null;if(Y=Number(M),X.length===16&&G.family===4)Y-=96;if(Y<0||Y>H)return null}return{family:G.family,bytes:G.bytes,prefix:Y}}function jZ(Q){return/^\d{1,3}(\.\d{1,3}){3}$/.test(Q)&&Q.split(".").every((Z)=>Number(Z)<=255)?new Uint8Array(Q.split(".").map(Number)):null}function g(Q,Z){let $=c(Q);if($.family!==Z.family)return!1;let X=Z.prefix;for(let G=0;X>0;G++){let H=Math.min(8,X),Y=255<<8-H&255;if(($.bytes[G]&Y)!==(Z.bytes[G]&Y))return!1;X-=H}return!0}var C=(Q,Z)=>({cidr:o(Q),kind:Z,text:Q}),RZ=[C("0.0.0.0/8","unspecified"),C("10.0.0.0/8","private"),C("100.64.0.0/10","shared"),C("127.0.0.0/8","loopback"),C("169.254.169.254/32","metadata"),C("169.254.0.0/16","link-local"),C("168.63.129.16/32","metadata"),C("172.16.0.0/12","private"),C("192.0.0.0/24","reserved"),C("192.0.2.0/24","documentation"),C("192.88.99.0/24","reserved"),C("192.168.0.0/16","private"),C("198.18.0.0/15","benchmarking"),C("198.51.100.0/24","documentation"),C("203.0.113.0/24","documentation"),C("224.0.0.0/4","multicast"),C("255.255.255.255/32","broadcast"),C("240.0.0.0/4","reserved")],_Z=[C("::/128","unspecified"),C("::1/128","loopback"),C("64:ff9b:1::/48","private"),C("::/8","reserved"),C("100::/64","reserved"),C("2001:db8::/32","documentation"),C("2001::/23","reserved"),C("3fff::/20","documentation"),C("fd00:ec2::254/128","metadata"),C("fc00::/7","unique-local"),C("fe80::/10","link-local"),C("fec0::/10","private"),C("ff00::/8","multicast")],CZ=o("64:ff9b::/96"),LZ=o("2002::/16"),OZ=o("2000::/3");function A0(Q){let Z=typeof Q==="string"?M0(Q):Q;if(!Z)return{kind:"reserved",range:"not an IP address"};let $=c(Z);if($.family===4){let G=RZ.find((H)=>g($,H.cidr));return G?{kind:G.kind,range:G.text}:null}if(g($,CZ))return A0({family:4,bytes:$.bytes.slice(12)});if(g($,LZ))return A0({family:4,bytes:$.bytes.slice(2,6)});let X=_Z.find((G)=>g($,G.cidr));if(X)return{kind:X.kind,range:X.text};return g($,OZ)?null:{kind:"reserved",range:"outside 2000::/3"}}function CQ(Q,Z){let $=c(Q),X=c(Z);return $.family===X.family&&$.bytes.every((G,H)=>G===X.bytes[H])}import{lookup as FZ}from"dns/promises";import*as IZ from"http";import*as TZ from"https";import*as t from"zlib";class c0 extends Response{#Q;#Z;address;constructor(Q,Z,$){super(Q,Z);this.#Q=$.url,this.#Z=$.redirected,this.address=$.address}get url(){return this.#Q}get redirected(){return this.#Z}}var W0={timeout:30000,connectTimeout:1e4,maxSize:10485760,maxRedirects:5,ports:[80,443]},AZ=new Set([301,302,303,307,308]),NZ=new Set([101,103,204,205,304]),qZ=["host","connection","content-length","transfer-encoding","keep-alive","upgrade"],wZ=["authorization","cookie","proxy-authorization"];async function FQ(Q,Z={}){let $=EZ(Z),X=Z.signal;X?.throwIfAborted();let G=new AbortController,H=G.signal,Y=String(Q),M=(z)=>{if(!H.aborted)G.abort(z)},K=setTimeout(()=>M(new I0(Y,"total",$.timeout)),$.timeout),J=()=>M(X.reason);X?.addEventListener("abort",J,{once:!0});let D=()=>{clearTimeout(K),X?.removeEventListener("abort",J)};try{let z=OQ(Y,$),O=(Z.method??"GET").toUpperCase(),B=new Headers(Z.headers);for(let W of qZ)B.delete(W);if(!B.has("accept"))B.set("accept","*/*");if(!B.has("user-agent"))B.set("user-agent","gemi");if(!B.has("accept-encoding"))B.set("accept-encoding","gzip, deflate, br");let _=await gZ(O,Z.body,B);for(let W=0;;W++){Y=z.href;let{request:V,response:U,address:P}=await yZ(z,O,B,_,$,H),F=U.statusCode??0,I=U.headers.location;if(AZ.has(F)&&I&&Z.redirect!=="manual"){if(V.destroy(),W>=$.maxRedirects)throw new h0(z.href,$.maxRedirects);let T;try{T=new URL(I,z)}catch{throw new m(I,"malformed",`The redirect to "${I}" is not a URL.`)}if(F===303?O!=="HEAD":(F===301||F===302)&&O==="POST"){O="GET",_=null;let L=[];B.forEach((R,j)=>{if(j.startsWith("content-"))L.push(j)});for(let R of L)B.delete(R)}if(T.origin!==z.origin)for(let L of wZ)B.delete(L);z=OQ(T.href,$);continue}return bZ({url:z,hop:W,method:O,request:V,response:U,address:P,policy:$,signal:H,release:D})}}catch(z){throw D(),H.aborted?H.reason:z}}function EZ(Q){let Z=(X,G)=>{let H={hosts:[],ranges:[]};for(let Y of X){let M=Y.includes("/")||Y.includes(":")||/^[\d.]+$/.test(Y),K=M?o(Y):null;if(K)H.ranges.push(K);else if(!M&&/^(\*\.)?[a-z0-9-]+(\.[a-z0-9-]+)*\.?$/i.test(Y))H.hosts.push(IQ(Y));else throw TypeError(`safeFetch: "${Y}" in ${G} is not a host name or an IP range.`)}return H},$=Q.allowPrivate;return{timeout:Q.timeout??W0.timeout,connectTimeout:Q.connectTimeout??W0.connectTimeout,maxSize:Q.maxSize??W0.maxSize,maxRedirects:Q.maxRedirects??W0.maxRedirects,ports:Q.ports??W0.ports,allow:Q.allow&&Q.allow.length>0?Z(Q.allow,"allow"):null,deny:Z(Q.deny??[],"deny"),allowPrivate:$===!0?!0:Z($||[],"allowPrivate").ranges,contentTypes:Q.contentTypes?.length?Q.contentTypes:null,resolve:Q.resolve??SZ}}async function SZ(Q){return(await FZ(Q,{all:!0,verbatim:!0})).map(($)=>$.address)}function IQ(Q){return Q.toLowerCase().replace(/\.$/,"")}function LQ(Q,Z){return Z.some(($)=>$.startsWith("*.")?Q.endsWith($.slice(1)):Q===$)}function OQ(Q,Z){let $;try{$=new URL(Q)}catch{throw new m(Q,"malformed",`"${Q}" is not a URL.`)}if($.protocol!=="http:"&&$.protocol!=="https:")throw new m($.href,"scheme",`Only http and https URLs can be fetched, not ${$.protocol.slice(0,-1)}.`);if($.username||$.password)throw new m($.href,"credentials","The URL has a username or password in it.");let X=TQ($);if(Z.ports!=="any"&&!Z.ports.includes(X))throw new m($.href,"port",`Port ${X} is not allowed.`);return $}function TQ(Q){return Q.port?Number(Q.port):Q.protocol==="https:"?443:80}async function xZ(Q,Z,$){let X=IQ(Q.hostname.replace(/^\[(.*)\]$/,"$1")),G=M0(X),H=G!==null&&(X.includes(":")||/^\d+\.\d+\.\d+\.\d+$/.test(X));if(!H&&LQ(X,Z.deny.hosts))throw new O0(Q.href,X,"denied");let Y=!H&&Z.allow!==null&&LQ(X,Z.allow.hosts);if(Z.allow&&!Y&&Z.allow.ranges.length===0)throw new O0(Q.href,X,"not-allowed");let M;if(H)M=[G];else{let K;try{K=await kZ(Z.resolve(X),$)}catch(J){if($.aborted)throw $.reason;throw new F0(Q.href,X,J)}if(M=K.map((J)=>M0(J)).filter((J)=>J!==null),M.length===0)throw new F0(Q.href,X)}for(let K of M){let J=J0(K);if(Z.deny.ranges.some((z)=>g(K,z)))throw new i(Q.href,X,J,"denied");if(Z.allow&&!Y&&!Z.allow.ranges.some((z)=>g(K,z)))throw new i(Q.href,X,J,"not-allowed");let D=A0(K);if(D&&Z.allowPrivate!==!0&&!Z.allowPrivate.some((z)=>g(K,z)))throw new i(Q.href,X,J,D.kind)}return{host:X,addresses:M,isLiteral:H}}function kZ(Q,Z){if(Z.aborted)return Promise.reject(Z.reason);return new Promise(($,X)=>{let G=()=>X(Z.reason);Z.addEventListener("abort",G,{once:!0}),Q.then((H)=>{Z.removeEventListener("abort",G),$(H)},(H)=>{Z.removeEventListener("abort",G),X(H)})})}async function gZ(Q,Z,$){if(Z===void 0||Z===null)return null;if(Q==="GET"||Q==="HEAD")throw TypeError(`safeFetch: a ${Q} request can't have a body.`);let X=new Request("http://body.invalid/",{method:"POST",body:Z}),G=X.headers.get("content-type");if(G&&!$.has("content-type"))$.set("content-type",G);return new Uint8Array(await X.arrayBuffer())}async function yZ(Q,Z,$,X,G,H){let Y=new AbortController,M=setTimeout(()=>Y.abort(new I0(Q.href,"connect",G.connectTimeout)),G.connectTimeout),K=AbortSignal.any([H,Y.signal]);try{let{host:J,addresses:D,isLiteral:z}=await xZ(Q,G,K),O=Q.protocol==="https:",B={};if($.forEach((_,W)=>{B[W]=_}),X)B["content-length"]=String(X.byteLength);return await new Promise((_,W)=>{let V={method:Z,host:J,port:TQ(Q),path:`${Q.pathname}${Q.search}`,headers:B,agent:!1,lookup:(L,R,j)=>{let w=R?.family,A=D.filter((D0)=>!w||D0.family===w);if(A.length===0)j(Object.assign(Error(`No IPv${w} address for ${J}`),{code:"ENOTFOUND"}));else if(R?.all)j(null,A.map((D0)=>({address:J0(D0),family:D0.family})));else j(null,J0(A[0]),A[0].family)}};if(O&&!z)V.servername=J;let U=(O?TZ:IZ).request(V),P=null,F=(L)=>{K.removeEventListener("abort",I),U.destroy(),W(L)},I=()=>F(K.aborted?K.reason:H.reason);K.addEventListener("abort",I,{once:!0});let T=(L)=>{let R=L?.remoteAddress;if(!R||P!==null)return!0;let j=M0(R);if(!j||!D.some((w)=>CQ(w,j)))return F(new i(Q.href,J,R,"not-allowed")),!1;return P=J0(c(j)),!0};U.once("socket",(L)=>{let R=()=>{if(T(L)&&!O)clearTimeout(M)};if(L.connecting)L.once("connect",R);else R();if(O)L.once("secureConnect",()=>clearTimeout(M))}),U.once("response",(L)=>{if(clearTimeout(M),L.on("error",()=>{}),!T(L.socket))return;K.removeEventListener("abort",I),_({request:U,response:L,address:P})}),U.on("error",(L)=>{if(K.aborted)return F(K.reason);F(L instanceof q?L:new n(Q.href,L))}),U.end(X??void 0)})}finally{clearTimeout(M)}}function bZ({url:Q,hop:Z,method:$,request:X,response:G,address:H,policy:Y,signal:M,release:K}){let J=G.statusCode??0;if(J<200||J>599)throw X.destroy(),new n(Q.href,Error(`Unexpected status ${J}`));let D=new Headers,z=G.rawHeaders;for(let R=0;R<z.length;R+=2)D.append(z[R],z[R+1]);if(Y.contentTypes){let R=D.get("content-type")?.split(";")[0].trim().toLowerCase()??null;if(!R||!Y.contentTypes.some((j)=>fZ(R,j)))throw X.destroy(),new K0(Q.href,R,Y.contentTypes)}let O={url:Q.href,redirected:Z>0,address:H},B={status:J,statusText:G.statusMessage??"",headers:D};if($==="HEAD"||NZ.has(J))return X.destroy(),K(),new c0(null,B,O);let _=D.get("content-encoding")?.trim().toLowerCase(),W=_==="gzip"||_==="x-gzip"?t.createGunzip():_==="deflate"?t.createInflate():_==="br"?t.createBrotliDecompress():null,V=Number(D.get("content-length"));if(!W&&Number.isFinite(V)&&V>Y.maxSize)throw X.destroy(),new T0(Q.href,Y.maxSize);if(W)D.delete("content-encoding"),D.delete("content-length");let U=W?G.pipe(W):G,P=0,F=!1,I=()=>{},T=()=>{F=!0,M.removeEventListener("abort",I),K()},L=new ReadableStream({start(R){let j=(A)=>{if(F)return;if(T(),A===void 0)R.close();else X.destroy(),W?.destroy(),R.error(A)};if(I=()=>j(M.reason),M.addEventListener("abort",I,{once:!0}),M.aborted)return I();U.on("data",(A)=>{if(F)return;if(P+=A.byteLength,P>Y.maxSize)return j(new T0(Q.href,Y.maxSize));if(R.enqueue(new Uint8Array(A)),(R.desiredSize??1)<=0)U.pause()}),U.once("end",()=>j());let w=(A)=>j(A instanceof q?A:new n(Q.href,A));if(U.on("error",w),W)G.on("error",w);G.once("aborted",()=>j(new n(Q.href,Error("The response was cut off."))))},pull(){U.resume()},cancel(){if(F)return;T(),X.destroy(),W?.destroy()}});return new c0(L,B,O)}function fZ(Q,Z){let $=Z.toLowerCase();return $.endsWith("/*")?Q.startsWith($.slice(0,-1)):Q===$}function NQ(Q){return mZ(Q)??pZ(Q)??uZ(Q)}var p0=4096,vZ={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp","image/avif":"avif","image/heic":"heic","image/heif":"heif","image/bmp":"bmp","image/tiff":"tiff","image/x-icon":"ico","image/svg+xml":"svg","audio/mpeg":"mp3","audio/aac":"aac","audio/mp4":"m4a","audio/ogg":"ogg","audio/flac":"flac","audio/wav":"wav","video/mp4":"mp4","video/quicktime":"mov","video/webm":"webm","video/x-matroska":"mkv","video/x-msvideo":"avi","font/woff":"woff","font/woff2":"woff2","font/ttf":"ttf","font/otf":"otf","application/pdf":"pdf","application/zip":"zip","application/gzip":"gz","application/xml":"xml","text/html":"html","text/plain":"txt","application/octet-stream":"bin"};function qQ(Q){return vZ[Q]??"bin"}function S(Q,Z,$=0){if(Q.length<$+Z.length)return!1;return Z.every((X,G)=>Q[$+G]===X)}function y(Q,Z,$){return String.fromCharCode(...Q.subarray(Z,$))}var hZ={avif:"image/avif",avis:"image/avif",heic:"image/heic",heix:"image/heic",hevc:"image/heic",hevx:"image/heic",heim:"image/heic",heis:"image/heic",mif1:"image/heif",msf1:"image/heif","qt ":"video/quicktime","M4A ":"audio/mp4","M4B ":"audio/mp4"};function mZ(Q){if(S(Q,[137,80,78,71,13,10,26,10]))return"image/png";if(S(Q,[255,216,255]))return"image/jpeg";if(Q.length>=6&&(y(Q,0,6)==="GIF87a"||y(Q,0,6)==="GIF89a"))return"image/gif";if(Q.length>=12&&y(Q,0,4)==="RIFF"){let Z=y(Q,8,12);if(Z==="WEBP")return"image/webp";if(Z==="WAVE")return"audio/wav";if(Z==="AVI ")return"video/x-msvideo"}if(Q.length>=12&&y(Q,4,8)==="ftyp"){let Z=y(Q,8,12);return hZ[Z]??"video/mp4"}if(S(Q,[73,73,42,0])||S(Q,[77,77,0,42]))return"image/tiff";if(S(Q,[66,77])&&S(Q,[0,0,0,0],6))return"image/bmp";if(S(Q,[0,0,1,0])&&Q.length>=6&&Q[4]>0)return"image/x-icon";if(S(Q,[37,80,68,70,45]))return"application/pdf";if(S(Q,[80,75,3,4]))return"application/zip";if(S(Q,[31,139]))return"application/gzip";if(S(Q,[26,69,223,163]))return y(Q,0,Math.min(Q.length,64)).includes("webm")?"video/webm":"video/x-matroska";if(Q.length>=4){let Z=y(Q,0,4);if(Z==="OggS")return"audio/ogg";if(Z==="fLaC")return"audio/flac";if(Z==="wOFF")return"font/woff";if(Z==="wOF2")return"font/woff2";if(Z==="OTTO")return"font/otf"}if(S(Q,[0,1,0,0,0]))return"font/ttf";if(Q.length>=3&&y(Q,0,3)==="ID3")return"audio/mpeg";if(Q.length>=2&&Q[0]===255){if((Q[1]&246)===240)return"audio/aac";if((Q[1]&224)===224&&(Q[1]&6)!==0)return"audio/mpeg"}return null}var cZ=["!doctype html","html","head","script","iframe","h1","div","font","table","a","style","title","b","body","br","p","!--"];function pZ(Q){let Z=new TextDecoder("utf-8",{fatal:!1}).decode(Q);if(Z.charCodeAt(0)===65279)Z=Z.slice(1);if(Z=Z.trimStart(),!Z.startsWith("<"))return null;let $=Z.toLowerCase(),X=$;for(;;){X=X.trimStart();let G=/^(<\?[\s\S]*?\?>|<!--[\s\S]*?-->|<!doctype[^>]*>)/.exec(X);if(!G)break;X=X.slice(G[0].length)}if(/^<svg[\s>/]/.test(X))return"image/svg+xml";for(let G of cZ){if(!$.startsWith(`<${G}`))continue;if(/^[\s>]/.test($.charAt(G.length+1)))return"text/html"}if(/^<(html|head|body)[\s>]/.test(X))return"text/html";if($.startsWith("<?xml"))return"application/xml";return null}function uZ(Q){if(Q.length===0)return"application/octet-stream";for(let Z of Q)if(Z<32&&Z!==9&&Z!==10&&Z!==12&&Z!==13&&Z!==27)return"application/octet-stream";try{return new TextDecoder("utf-8",{fatal:!0}).decode(Q,{stream:!0}),"text/plain"}catch{return"application/octet-stream"}}var dZ=new Set(["text/html","application/xhtml+xml","image/svg+xml","text/xml","application/xml","text/xsl","application/xslt+xml"]);function AQ(Q){let Z=Q.split(";")[0].trim().toLowerCase();return dZ.has(Z)||Z.endsWith("+xml")}function wQ(Q,Z){let $=Q.split(";")[0].trim().toLowerCase();return Z.some((X)=>{let G=X.split(";")[0].trim().toLowerCase();if(G==="*/*"||G==="*")return!AQ($);if(G.endsWith("/*"))return $.startsWith(G.slice(0,-1))&&!AQ($);return $===G})}import{Buffer as nZ}from"buffer";async function EQ(Q){try{return(await import("sharp")).default}catch(Z){throw Error(`${Q} requires the 'sharp' package. Install it with \`bun add sharp\`.`,{cause:Z})}}async function SQ(Q,Z,$={}){let{name:X,directory:G,bucket:H,maxSize:Y,timeout:M,contentTypes:K,signal:J}=$;if(X!==void 0&&G!==void 0)throw TypeError("Storage.putFromUrl(): pass `name` or `directory`, not both.");if(X!==void 0&&!X)throw TypeError("Storage.putFromUrl(): `name` is empty.");let D=await FQ(Z,{...$.fetch,method:"GET",redirect:"follow",contentTypes:void 0,signal:J,timeout:M,maxSize:Y});if(!D.ok)throw await D.body?.cancel().catch(()=>{}),new m0(D.url,D.status);let z=(D.body??new Response(new Uint8Array).body).getReader(),O=async(j)=>{throw await z.cancel(j).catch(()=>{}),j},B=[],_=0,W=!1;while(_<p0){let{done:j,value:w}=await z.read();if(j){W=!0;break}B.push(w),_+=w.byteLength}let V=iZ(B,_),U=NQ(V.subarray(0,Math.min(_,p0))),P=K?.length?K:["*/*"];if(!wQ(U,P))await O(new K0(D.url,U,P));let F=X??[(G??"").replace(/\/+$/,""),`${Bun.randomUUIDv7()}.${qQ(U)}`].filter(Boolean).join("/"),I=_,T=new ReadableStream({start(j){if(_>0)j.enqueue(V);if(W)j.close()},async pull(j){let{done:w,value:A}=await z.read();if(w){j.close();return}I+=A.byteLength,j.enqueue(A)},cancel(j){return z.cancel(j)}}),L={name:F,bucket:H,body:T,contentType:U},R;try{R=Q.putStream?await Q.putStream(L,{signal:J}):await G0.prototype.putStream.call(Q,L,{signal:J})}catch(j){throw await O(j),j}return{name:R,contentType:U,size:I,url:D.url}}function iZ(Q,Z){if(Q.length===1)return Q[0];let $=new Uint8Array(Z),X=0;for(let G of Q)$.set(G,X),X+=G.byteLength;return $}class oZ extends X0{static getFacadeAccessor(){return v0}static async put(Q,Z={}){return this.getFacadeRoot().driver.put(Q,Z)}static async putFromUrl(Q,Z={}){return SQ(this.getFacadeRoot().driver,Q,Z)}static async metadata(Q){let Z=nZ.from(await Q.arrayBuffer()),$=await EQ("Storage.metadata()");try{return await $(Z).metadata()}catch{return{}}}static async fetch(Q,Z={}){return Z.signal?.throwIfAborted(),this.getFacadeRoot().driver.fetch(Q,Z)}static async read(Q,Z={}){let $=typeof Q==="string"?{name:Q}:{...Q},X="range"in Z?Z.range??null:$.range!==void 0?$.range:b.getStore()?.rangeRequest??null;return this.getFacadeRoot().driver.read({...$,range:X})}static list(Q){return this.getFacadeRoot().driver.list(Q)}static objects(Q,Z={}){return this.getFacadeRoot().driver.objects(Q,Z)}static async deletePrefix(Q,Z={}){return this.getFacadeRoot().driver.deletePrefix(Q,Z)}static async delete(Q){return this.getFacadeRoot().driver.delete(Q)}}import{mkdir as d0,readdir as aZ,access as eZ}from"fs/promises";var u0=["debug","info","notice","warning","error","critical","alert","emergency"],tZ=u0.indexOf("warning");function kQ(Q){if(!Q)return-1;if(Q===!0)return 0;let Z=u0.indexOf(Q);return Z===-1?0:Z}function sZ(){let Q=new WeakSet;return function(Z,$){if(typeof $==="bigint")return $.toString();if($ instanceof Error){let X={name:$.name,message:$.message,stack:$.stack};for(let G of Object.keys($))X[G]=$[G];if($.cause!==void 0)X.cause=$.cause;return X}if($!==null&&typeof $==="object"){if(Q.has($))return"[Circular]";Q.add($)}return $}}function xQ(Q){try{return JSON.stringify(Q,sZ())}catch{return'"[Unserializable]"'}}function rZ(Q,Z){if(Z==="json")return xQ({...Q.metadata,timestamp:Q.timestamp,level:Q.level,message:Q.message});let $=Object.keys(Q.metadata).length>0;return`${Q.timestamp} ${Q.level.toUpperCase()} ${Q.message}${$?` ${xQ(Q.metadata)}`:""}`}function gQ(Q,Z){let $=u0.indexOf(Q.level);if(Z.threshold===-1||$<Z.threshold)return;try{let X=rZ(Q,Z.format)+`
5
5
  `;if($>=tZ)process.stderr.write(X);else process.stdout.write(X)}catch{}}async function l0(Q){try{return await eZ(Q),!0}catch{return!1}}class i0{config;static token="log";writer;isReady=!1;flushTimeout;fileSize=0;writerSize=0;isCreatingFile=!1;bootPromise=null;currentLogFilePath;get logsDirPath(){return`${Y0()}/storage/logs`}consoleThreshold;constructor(Q){this.config=Q;this.consoleThreshold=kQ(Q.console)}boot(){if(!this.bootPromise)this.bootPromise=this.createStorage().catch((Q)=>{console.error("Log storage unavailable, file logging disabled",Q)}).then(()=>{this.isReady=!0});return this.bootPromise}async createStorage(){let Q=`${Y0()}/storage`;if(!await l0(Q))await d0(Q);if(!await l0(this.logsDirPath))await d0(this.logsDirPath);await this.newLogFile()}async newLogFile(){if(!await l0(this.logsDirPath))await d0(this.logsDirPath);if(this.isCreatingFile=!0,this.currentLogFilePath){this.writer.flush(),this.writer.end(),this.writer=null;let $=new File([await Bun.file(this.currentLogFilePath).arrayBuffer()],this.currentLogFilePath.split("/").pop(),{type:"text/plain"});this.config.onLogFileClosed($),this.fileSize=0,this.writerSize=0}let Z=(await aZ(this.logsDirPath)).sort().reverse()[0];if(Z){let $=Bun.file(`${this.logsDirPath}/${Z}`);if($.size<this.config.maxFileSize)this.currentLogFilePath=`${this.logsDirPath}/${Z}`,this.writer=$.writer(),this.writer.write(await $.text()),this.writer.write(`
@@ -10,6 +10,6 @@ data: ${JSON.stringify(Q.event)}
10
10
  `}var X1=5000,G1=`: keepalive
11
11
 
12
12
  `;function H1(Q,Z=X1){let $=null,X=!1,G=()=>{if(X)return;if($!==null)clearTimeout($);$=setTimeout(()=>{if($=null,X)return;try{Q.enqueue(n0.encode(G1))}catch{H();return}G()},Z)},H=()=>{if(X=!0,$!==null)clearTimeout($);$=null};return G(),{touch:G,stop:H}}function Y1(){return{"Content-Type":"text/event-stream","Cache-Control":"no-store, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no"}}function m8(Q,Z=200){let $=Q[Symbol.asyncIterator](),X=-1,G,H=new ReadableStream({start(Y){G=H1(Y)},async pull(Y){try{let M=await $.next();if(M.done){G.stop(),Y.close();return}X=M.value.seq,Y.enqueue(n0.encode(yQ(M.value))),G.touch()}catch(M){let K={type:"error",error:M1(M)};G.stop(),Y.enqueue(n0.encode(yQ({seq:X+1,event:K}))),Y.close()}},cancel(Y){G.stop(),$.return?.(Y)}});return new Response(H,{status:Z,headers:Y1()})}var K1=new Set(["frame_cursor_evicted","live_run_not_found"]);function M1(Q){let Z=Q&&typeof Q==="object"?Q.code:void 0;if(Q instanceof Error&&typeof Z==="string"&&K1.has(Z))return{code:"unknown",message:Q.message,retryable:!1};return console.error("[gemi/ai] agent stream failed",Q),{code:"unknown",message:"The run's stream failed.",retryable:!1}}
13
- export{o0 as Eh,bQ as Fh,W1 as Gh,YQ as Hh,F1 as Ih,JQ as Jh,I1 as Kh,t0 as Lh,s0 as Mh,z1 as Nh,U1 as Oh,V1 as Ph,r0 as Qh,A1 as Rh,zQ as Sh,N1 as Th,q1 as Uh,s as Vh,k as Wh,$Q as Xh,HQ as Yh,_1 as Zh,C1 as _h,XZ as $h,GZ as ai,k0 as bi,g0 as ci,HZ as di,h as ei,YZ as fi,X0 as gi,EQ as hi,L0 as ii,G0 as ji,PQ as ki,f0 as li,Y8 as mi,RQ as ni,v0 as oi,q as pi,m as qi,O0 as ri,i as si,F0 as ti,I0 as ui,T0 as vi,K0 as wi,h0 as xi,n as yi,m0 as zi,A0 as Ai,c0 as Bi,FQ as Ci,NQ as Di,AQ as Ei,oZ as Fi,i0 as Gi,Q1 as Hi,Z1 as Ii,G1 as Ji,H1 as Ki,Y1 as Li,m8 as Mi};
13
+ export{o0 as Fh,bQ as Gh,W1 as Hh,YQ as Ih,F1 as Jh,JQ as Kh,I1 as Lh,t0 as Mh,s0 as Nh,z1 as Oh,U1 as Ph,V1 as Qh,r0 as Rh,A1 as Sh,zQ as Th,N1 as Uh,q1 as Vh,s as Wh,k as Xh,$Q as Yh,HQ as Zh,_1 as _h,C1 as $h,XZ as ai,GZ as bi,k0 as ci,g0 as di,HZ as ei,h as fi,YZ as gi,X0 as hi,EQ as ii,L0 as ji,G0 as ki,PQ as li,f0 as mi,Y8 as ni,RQ as oi,v0 as pi,q as qi,m as ri,O0 as si,i as ti,F0 as ui,I0 as vi,T0 as wi,K0 as xi,h0 as yi,n as zi,m0 as Ai,A0 as Bi,c0 as Ci,FQ as Di,NQ as Ei,AQ as Fi,oZ as Gi,i0 as Hi,Q1 as Ii,Z1 as Ji,G1 as Ki,H1 as Li,Y1 as Mi,m8 as Ni};
14
14
 
15
- //# debugId=6848B441848464BD64756E2164756E21
15
+ //# debugId=46597C20CE18EC4964756E2164756E21
@@ -33,6 +33,6 @@
33
33
  "import type { AgentError, AgentStreamFrame } from \"../types\";\n\nconst encoder = new TextEncoder();\n\n/**\n * One frame, one SSE event.\n *\n * `id:` carries the frame's `seq`, which is what makes the browser's own\n * `Last-Event-ID` the right cursor on reconnect — the transport asks the\n * question the run already knows how to answer, and the client never has to\n * track a position of its own.\n */\nexport function encodeFrame(frame: AgentStreamFrame): string {\n return `id: ${frame.seq}\\ndata: ${JSON.stringify(frame.event)}\\n\\n`;\n}\n\n/**\n * How long a connection may sit idle before a comment line goes out.\n *\n * The nearest ceiling is not a proxy but our own server: Bun's `idleTimeout`\n * counts socket silence, a streaming body included, and gemi runs at its\n * 10-second default unless `SERVER_IDLE_TIMEOUT` says otherwise. A comment\n * line every 25 seconds was measured to lose the connection at 12; every 5\n * keeps it open, with room for a write that lands late. Azure App Service's\n * front end, at about 230 seconds, is the far ceiling, and 5 clears it by the\n * same margin. A thousand quiet streams cost two hundred thirteen-byte writes\n * a second, which is nothing. Both encoders read this one value, so the two\n * cannot drift apart.\n */\nexport const SSE_KEEPALIVE_INTERVAL_MS = 5_000;\n\n/**\n * The comment line itself. A line starting with `:` is a comment under the SSE\n * spec: every parser on our side skips it, and so does the browser's own\n * `EventSource`.\n */\nexport const SSE_KEEPALIVE = \": keepalive\\n\\n\";\n\n/**\n * Writes a keepalive whenever the stream has been silent for the interval.\n *\n * Armed on creation because the silence before the first frame is real\n * silence too — a model thinking is the common case. `touch()` after every\n * frame is what makes it measure silence rather than elapsed time; `stop()`\n * on close or cancel is what keeps a finished stream from holding a timer.\n *\n * The write is guarded because a cancel can land between the timer firing and\n * the enqueue, and a closed controller throws. There is nothing to do about\n * that except stop. `arm` checks `stopped` too, so a `touch()` that arrives\n * after `stop()` cannot hand a finished stream a timer for one more interval.\n */\nexport function sseKeepalive(\n controller: ReadableStreamDefaultController<Uint8Array>,\n intervalMs = SSE_KEEPALIVE_INTERVAL_MS,\n): { touch(): void; stop(): void } {\n let timer: ReturnType<typeof setTimeout> | null = null;\n let stopped = false;\n\n const arm = () => {\n if (stopped) return;\n if (timer !== null) clearTimeout(timer);\n timer = setTimeout(() => {\n timer = null;\n if (stopped) return;\n try {\n controller.enqueue(encoder.encode(SSE_KEEPALIVE));\n } catch {\n stop();\n return;\n }\n arm();\n }, intervalMs);\n };\n\n const stop = () => {\n stopped = true;\n if (timer !== null) clearTimeout(timer);\n timer = null;\n };\n\n arm();\n return { touch: arm, stop };\n}\n\nexport function sseHeaders(): Record<string, string> {\n return {\n \"Content-Type\": \"text/event-stream\",\n // `no-transform` as well as `no-store`: a proxy that gzips or rechunks the\n // body is a proxy that buffers it, and a buffered token stream arrives all\n // at once, which is the same as not streaming at all.\n \"Cache-Control\": \"no-store, no-transform\",\n Connection: \"keep-alive\",\n // nginx's own name for the same thing.\n \"X-Accel-Buffering\": \"no\",\n };\n}\n\n/**\n * Encodes an async iterable of frames as an SSE response.\n *\n * Pulls one frame per `pull` rather than looping inside `start`: a `start` that\n * awaits the whole run does not resolve until the run is over, and the stream\n * is not readable until it does — which would turn every streamed answer into a\n * single delivery at the end.\n */\nexport function sseResponse(frames: AsyncIterable<AgentStreamFrame>, status = 200): Response {\n const iterator = frames[Symbol.asyncIterator]();\n let lastSeq = -1;\n let keepalive!: ReturnType<typeof sseKeepalive>;\n\n const body = new ReadableStream<Uint8Array>({\n start(controller) {\n keepalive = sseKeepalive(controller);\n },\n async pull(controller) {\n try {\n const next = await iterator.next();\n if (next.done) {\n keepalive.stop();\n controller.close();\n return;\n }\n lastSeq = next.value.seq;\n controller.enqueue(encoder.encode(encodeFrame(next.value)));\n keepalive.touch();\n } catch (err) {\n // Past the headers there is no status left to fail with, so the reason\n // goes out as the last event. Closing silently would be\n // indistinguishable from a run that finished, which is the one thing a\n // reattaching client must not be told by mistake.\n const event = { type: \"error\", error: toAgentError(err) } as const;\n keepalive.stop();\n controller.enqueue(encoder.encode(encodeFrame({ seq: lastSeq + 1, event })));\n controller.close();\n }\n },\n cancel(reason) {\n // The client went away. Let the generator unwind so its `finally` runs\n // and it stops waiting on frames nobody will read.\n keepalive.stop();\n void iterator.return?.(reason);\n },\n });\n\n return new Response(body, { status, headers: sseHeaders() });\n}\n\n// `unknown` rather than a new code: `AgentErrorCode` is the wire contract and\n// belongs to the model's failures, not to the transport's.\n//\n// Only the two failures the live-run buffer raises keep their message: gemi\n// wrote them, and they name the cursor, which is what a client can act on.\n// Anything else is a store or a bug talking (a Redis error carries its host),\n// so the client gets a fixed sentence and the log gets the rest (#446).\nconst TRANSPORT_CODES = new Set([\"frame_cursor_evicted\", \"live_run_not_found\"]);\n\nfunction toAgentError(err: unknown): AgentError {\n const code = err && typeof err === \"object\" ? (err as { code?: unknown }).code : undefined;\n if (err instanceof Error && typeof code === \"string\" && TRANSPORT_CODES.has(code)) {\n return { code: \"unknown\", message: err.message, retryable: false };\n }\n console.error(\"[gemi/ai] agent stream failed\", err);\n return { code: \"unknown\", message: \"The run's stream failed.\", retryable: false };\n}\n"
34
34
  ],
35
35
  "mappings": "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",
36
- "debugId": "6848B441848464BD64756E2164756E21",
36
+ "debugId": "46597C20CE18EC4964756E2164756E21",
37
37
  "names": []
38
38
  }
@@ -1,5 +1,5 @@
1
1
  // @bun
2
2
  var z="/api";function v(j){return j==="/api"||j.startsWith("/api/")}function B(j){return v(j)?j.slice(4):j}
3
- export{z as wl,v as xl,B as yl};
3
+ export{z as xl,v as yl,B as zl};
4
4
 
5
- //# debugId=800311B970EF1C0164756E2164756E21
5
+ //# debugId=AF1926B77911F9A264756E2164756E21
@@ -5,6 +5,6 @@
5
5
  "/**\n * The prefix every api route is served under. The browser adds it when it\n * fetches (`/api${path}`) and the server strips it before matching, so an api\n * router's own paths never carry it.\n */\nexport const API_PREFIX = \"/api\";\n\n/**\n * Whether a request pathname is an api request: `/api` itself or anything\n * under `/api/`. A bare `startsWith(\"/api\")` also claims `/apidocs`,\n * `/api-keys` and `/apiary`, so a view route there would never render — the\n * api dispatcher would answer its 404 JSON instead.\n */\nexport function isApiPath(pathname: string): boolean {\n return pathname === API_PREFIX || pathname.startsWith(`${API_PREFIX}/`);\n}\n\n/**\n * The api router path a request pathname addresses: `/api/users/1` is\n * `/users/1`, `/api/` is `/` and `/api` is `\"\"`. Only the leading prefix is\n * stripped — `replace(\"/api\", \"\")` would also strip an `/api` inside the path\n * of a request that did not start with one (`/files/api` becoming `/files`).\n * A pathname outside `/api` comes back unchanged, so the dispatcher can still\n * be handed a request by its route path directly.\n */\nexport function apiPath(pathname: string): string {\n return isApiPath(pathname) ? pathname.slice(API_PREFIX.length) : pathname;\n}\n"
6
6
  ],
7
7
  "mappings": ";AAKO,IAAM,EAAa,OAQnB,SAAS,CAAS,CAAC,EAA2B,CACnD,OAAO,IATiB,QASU,EAAS,WAAW,OAAgB,EAWjE,SAAS,CAAO,CAAC,EAA0B,CAChD,OAAO,EAAU,CAAQ,EAAI,EAAS,MAAM,CAAiB,EAAI",
8
- "debugId": "800311B970EF1C0164756E2164756E21",
8
+ "debugId": "AF1926B77911F9A264756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,5 +1,5 @@
1
1
  // @bun
2
2
  function v(j){return Object.freeze({name:j})}class N extends Error{key;constructor(j){super(`Request state "${j.name}" is not set. Check that whatever sets it (a middleware, \`context()\`) ran for this request.`);this.key=j;this.name="MissingRequestStateError"}}class P{#j=new Map;get(j){return this.#j.get(j)}require(j){if(!this.#j.has(j))throw new N(j);return this.#j.get(j)}set(j,J){return this.#j.set(j,J),J}has(j){return this.#j.has(j)}delete(j){return this.#j.delete(j)}static carry(j,J){for(let[Q,V]of j.#j)if(!J.#j.has(Q))J.#j.set(Q,V)}}function G(){for(let j of["HOST_NAME","APP_URL"]){let J=process.env[j]?.trim().replace(/\/+$/,"");if(J)return J}return}function h(j){let J=G(),Q=J===void 0?"fallback":J===process.env.HOST_NAME?.trim().replace(/\/+$/,"")?"HOST_NAME":"APP_URL",V=J??j?.trim().replace(/\/+$/,"");if(!V)throw Error("The app's public origin is not configured: set HOST_NAME (or APP_URL), e.g. HOST_NAME=https://example.com.");let Z=URL.canParse(V)?new URL(V).protocol:null;if(Z!=="http:"&&Z!=="https:")throw Error(`The app's public origin from ${Q} (${JSON.stringify(V)}) is not an absolute http(s) URL, e.g. https://example.com.`);return V}import{AsyncLocalStorage as y}from"async_hooks";var O=new Set(["woff2","woff","truetype","opentype","collection","embedded-opentype","svg"]),S={woff2:"woff2",woff:"woff",ttf:"truetype",otf:"opentype",ttc:"collection",eot:"embedded-opentype",svg:"svg"};var I=new Set(["auto","block","swap","fallback","optional"]),R=/^[a-zA-Z0-9.%+\- ]+$/,q=/^[uU]\+[0-9a-fA-F?]{1,6}(-[0-9a-fA-F]{1,6})?(\s*,\s*[uU]\+[0-9a-fA-F?]{1,6}(-[0-9a-fA-F]{1,6})?)*$/;function X(j){throw TypeError(`Meta.fonts: ${j}`)}function w(j){let J=(j.split(/[?#]/)[0]??"").split("/").pop()??"",Q=J.lastIndexOf(".");return Q===-1?null:S[J.slice(Q+1).toLowerCase()]??null}function U(j,J){if(J===void 0||J===null)return null;let Q=String(J).trim();if(!Q||!R.test(Q))X(`${j} ${JSON.stringify(J)} is not a valid font-${j} value`);return Q}function T(j){if(!Array.isArray(j))X("expected an array of fonts");return j.map((J)=>{if(typeof J?.family!=="string"||!J.family.trim())X("every font needs a family");let Q=typeof J.src==="string"?[{url:J.src}]:J.src;if(!Array.isArray(Q)||Q.length===0)X(`font "${J.family}" needs a src`);let V=Q.map(($)=>{if(typeof $?.url!=="string"||!$.url.trim())X(`font "${J.family}" has a source without a url`);if($.format!==void 0&&!O.has($.format))X(`font "${J.family}" has an unknown format ${JSON.stringify($.format)}`);return{url:$.url.trim(),format:$.format??w($.url)}}),Z=J.display??"swap";if(!I.has(Z))X(`display ${JSON.stringify(Z)} is not a valid font-display value`);let z=J.unicodeRange?.trim()||null;if(z&&!q.test(z))X(`unicodeRange ${JSON.stringify(J.unicodeRange)} is not a valid unicode-range`);return{family:J.family.trim(),src:V,weight:U("weight",J.weight),style:U("style",J.style),stretch:U("stretch",J.stretch),display:Z,unicodeRange:z,preload:J.preload===!0}})}class Y{content={title:"Gemi App",description:null,openGraph:null,htmlAttributes:null,canonical:null,alternates:null,fonts:null,robots:null};touched=!1;setFields=new Set;render(){return{title:this.content.title,description:this.content.description,openGraph:this.content.openGraph,htmlAttributes:this.content.htmlAttributes,canonical:this.content.canonical,alternates:this.content.alternates,fonts:this.content.fonts,robots:this.content.robots}}htmlAttributes(j){this.touched=!0;let J=Object.fromEntries(Object.entries(j).filter(([,Q])=>Q!==void 0));this.content.htmlAttributes={...this.content.htmlAttributes,...J}}canonical(j){this.touched=!0,this.content.canonical=j}robots(j){this.touched=!0,this.content.robots=j}alternates(j){this.touched=!0,this.content.alternates=j}fonts(j){let J=T(j);this.touched=!0,this.content.fonts=[...this.content.fonts??[],...J]}title(j){this.touched=!0,this.setFields.add("title"),this.content.title=j}description(j){this.touched=!0,this.setFields.add("description"),this.content.description=j}get hasAllDefaultFields(){return this.setFields.size===3}applyDefaults(j){if(!this.setFields.has("title")&&j.title!==void 0)this.content.title=j.title;if(!this.setFields.has("description")&&j.description!==void 0)this.content.description=j.description;if(!this.setFields.has("openGraph")&&j.openGraph){let{title:J,description:Q,type:V,...Z}=j.openGraph;this.content.openGraph=this.normalizeOpenGraph({...Z,title:J??this.content.title,description:Q??this.content.description??void 0,type:V??"website"})}}openGraph(j){this.touched=!0,this.setFields.add("openGraph"),this.content.openGraph=this.normalizeOpenGraph(j)}normalizeOpenGraph({title:j,description:J,type:Q,url:V,image:Z,imageAlt:z,imageWidth:$,imageHeight:D,twitterImage:H=Z,twitterImageAlt:E=z,twitterImageWidth:b=$,twitterImageHeight:x=D,twitterCard:A=H?"summary_large_image":"summary"}){let W=(B)=>B&&!B.startsWith("http")?`${G()}${B}`:B;return Object.fromEntries(Object.entries({title:j,description:J,type:Q,url:V,image:W(Z),imageAlt:z,imageWidth:$,imageHeight:D,twitterImage:W(H),twitterImageAlt:E,twitterImageWidth:b,twitterImageHeight:x,twitterCard:A}).filter(([B,C])=>C!==void 0))}}function F(j,J,Q={}){return[`${j}=${J}`,Q.maxAge?`Max-Age=${Q.maxAge}`:"",Q.httpOnly?"HttpOnly":"",Q.secure?"Secure":"",Q.sameSite?`SameSite=${Q.sameSite}`:"SameSite=Strict",Q.path?`Path=${Q.path}`:"Path=/",Q.domain?`Domain=${Q.domain}`:"",Q.expires?`Expires=${Q.expires.toUTCString()}`:"",Q.partitioned?"Partitioned":""].filter((V)=>V!=="").join("; ")}var K=new y;class M{req;cookies=new Set;headers=new Headers;serverQueries=null;user=null;csrfHmac=null;locale=null;metadata=new Y;rangeRequest=null;sessionId=null;featureEvaluations=null;featureContext=null;featureBuckets=null;pendingWork=new Set;ended=!1;constructor(j){this.req=j}waitUntil(j){if(this.ended)return;let J=Promise.resolve(j).then(()=>{},()=>{});this.pendingWork.add(J),J.then(()=>this.pendingWork.delete(J))}hasPendingWork(){return this.pendingWork.size>0}async whenIdle(){while(this.pendingWork.size>0)await Promise.all(Array.from(this.pendingWork))}setLocale(j){this.locale=j}renderMeta(){return this.metadata.render()}setCSRFHmac(j){this.csrfHmac=j}setCookie(j,J,Q={}){this.cookies.add(F(j,J,Q))}deleteCookie(j,J={}){this.cookies.add(F(j,"",{...J,maxAge:-1}))}setHeaders(j,J){this.headers.set(j,J)}setUser(j){this.user=j}setRequest(j){this.req=j}destroy(){this.ended=!0,delete this.cookies,delete this.headers,this.serverQueries=null,this.sessionId=null,this.featureEvaluations=null,this.featureContext=null,this.featureBuckets=null,delete this.user}}var _="session_id";function k(){let j=L.getStore();if(!j)return null;if(j.sessionId)return j.sessionId;let J=j.req?.cookies?.get(_);if(J)j.sessionId=J;return j.sessionId}function i(){let j=L.getStore();if(!j)return null;let J=k();if(J)return J;let Q=Bun.randomUUIDv7();return j.sessionId=Q,j.setCookie(_,Q,{httpOnly:!0,secure:Bun.env.NODE_ENV==="production",sameSite:"Lax",expires:new Date(Date.now()+31536000000)}),Q}class L{static getStore(){return K.getStore()}static setRequest(j){K.getStore().req=j}static run(j,J,Q){let V=new M(j);if(Q){if(V.user=Q.user,Q.state&&j.state)P.carry(Q.state,j.state)}return K.run(V,J)}static runWith(j,J){return K.run(j,J)}static exit(j){return K.exit(j)}}
3
- export{G as Si,h as Ti,v as Ui,N as Vi,P as Wi,k as Xi,i as Yi,L as Zi};
3
+ export{G as Ti,h as Ui,v as Vi,N as Wi,P as Xi,k as Yi,i as Zi,L as _i};
4
4
 
5
- //# debugId=242056FA25789C4664756E2164756E21
5
+ //# debugId=2474BB663179A9EF64756E2164756E21
@@ -9,6 +9,6 @@
9
9
  "import { type MetaFont, type NormalizedFont, normalizeFonts } from \"../client/fonts\";\nimport { configuredAppOrigin } from \"../utils/appOrigin\";\n\nexport type { MetaFont };\n\nexport type OpenGraphParams = {\n title: string;\n description?: string;\n type: string;\n url: string;\n /** Rendered as `og:image` only when set. A path is prefixed with the app origin. */\n image?: string;\n imageAlt?: string;\n imageWidth?: number;\n imageHeight?: number;\n twitterImage?: string;\n twitterImageAlt?: string;\n twitterImageWidth?: number;\n twitterImageHeight?: number;\n /**\n * The `twitter:card` type. Defaults to `\"summary_large_image\"` when the page\n * has an image (`twitterImage ?? image`), `\"summary\"` otherwise.\n */\n twitterCard?: \"summary\" | \"summary_large_image\";\n};\n/**\n * The app-wide default title and metadata (`route.view.meta`, #1042): used for\n * each field that no handler (or `onNotFound`) set. See `ViewRouteConfig.meta`.\n */\nexport type DefaultViewMeta = {\n title?: string;\n description?: string;\n /**\n * Every field is optional: `title` and `description` default to the page's\n * own, `type` to `\"website\"`. `url` is left out of the page unless given.\n */\n openGraph?: Partial<OpenGraphParams>;\n};\n\n/**\n * Attributes for the document's `<html>` element, handed to the root (or a\n * static view's) layout as its `htmlAttributes` prop.\n */\nexport type HtmlAttributes = {\n /** The document's language, e.g. `\"tr\"`. Defaults to the request's locale. */\n lang?: string;\n /** Text direction. Defaults to the one `lang` is written in. */\n dir?: \"ltr\" | \"rtl\" | \"auto\";\n};\n\n/** One `<link rel=\"alternate\" hreflang>`: the same page in another language. */\nexport type AlternateLink = {\n /** A BCP 47 tag, or `\"x-default\"` for the page to use when none matches. */\n hrefLang: string;\n href: string;\n};\n\nexport class Metadata {\n content: any = {\n title: \"Gemi App\",\n description: null,\n openGraph: null,\n htmlAttributes: null,\n canonical: null,\n alternates: null,\n fonts: null,\n robots: null,\n };\n\n /**\n * Whether a handler set anything, as opposed to `content` still being the\n * defaults. A partially rendered response that touched no metadata sends\n * none, so the client keeps what the skipped segments put there.\n */\n touched = false;\n\n /** The fields a handler set, which the app's default (`route.view.meta`) leaves alone. */\n private setFields = new Set<keyof DefaultViewMeta>();\n\n render() {\n return {\n title: this.content.title,\n description: this.content.description,\n openGraph: this.content.openGraph,\n htmlAttributes: this.content.htmlAttributes,\n canonical: this.content.canonical,\n alternates: this.content.alternates,\n fonts: this.content.fonts,\n robots: this.content.robots,\n };\n }\n\n /** Merged into what earlier calls set; `undefined` leaves an attribute alone. */\n htmlAttributes(attributes: HtmlAttributes) {\n this.touched = true;\n const defined = Object.fromEntries(\n Object.entries(attributes).filter(([, value]) => value !== undefined),\n );\n this.content.htmlAttributes = { ...this.content.htmlAttributes, ...defined };\n }\n\n canonical(url: string) {\n this.touched = true;\n this.content.canonical = url;\n }\n\n /** `<meta name=\"robots\">`'s content, e.g. `\"noindex, nofollow\"`; the last call wins. */\n robots(content: string) {\n this.touched = true;\n this.content.robots = content;\n }\n\n alternates(links: AlternateLink[]) {\n this.touched = true;\n this.content.alternates = links;\n }\n\n /** Added to what earlier calls declared, so a layout and its page can both declare fonts. */\n fonts(fonts: MetaFont[]) {\n const normalized: NormalizedFont[] = normalizeFonts(fonts);\n this.touched = true;\n this.content.fonts = [...(this.content.fonts ?? []), ...normalized];\n }\n\n title(title: string) {\n this.touched = true;\n this.setFields.add(\"title\");\n this.content.title = title;\n }\n\n description(description: string) {\n this.touched = true;\n this.setFields.add(\"description\");\n this.content.description = description;\n }\n\n /** Whether every field the app's default could fill was set by a handler. */\n get hasAllDefaultFields() {\n return this.setFields.size === 3;\n }\n\n /**\n * Fills each of `title`, `description` and `openGraph` that no handler set\n * from the app's default (`route.view.meta`, #1042). Field by field: a\n * handler's `Meta.title` keeps its title and still gets the default\n * description. Not a handler call, so `touched` stays as it was.\n *\n * The default's Open Graph fields fall back to the page's title and\n * description and to `type: \"website\"`; `url` is only rendered when given.\n */\n applyDefaults(defaults: DefaultViewMeta) {\n if (!this.setFields.has(\"title\") && defaults.title !== undefined) {\n this.content.title = defaults.title;\n }\n if (!this.setFields.has(\"description\") && defaults.description !== undefined) {\n this.content.description = defaults.description;\n }\n if (!this.setFields.has(\"openGraph\") && defaults.openGraph) {\n const { title, description, type, ...rest } = defaults.openGraph;\n this.content.openGraph = this.normalizeOpenGraph({\n ...rest,\n title: title ?? this.content.title,\n description: description ?? this.content.description ?? undefined,\n type: type ?? \"website\",\n });\n }\n }\n\n openGraph(params: OpenGraphParams) {\n this.touched = true;\n this.setFields.add(\"openGraph\");\n this.content.openGraph = this.normalizeOpenGraph(params);\n }\n\n private normalizeOpenGraph({\n title,\n description,\n type,\n url,\n image,\n imageAlt,\n imageWidth,\n imageHeight,\n twitterImage = image,\n twitterImageAlt = imageAlt,\n twitterImageWidth = imageWidth,\n twitterImageHeight = imageHeight,\n twitterCard = twitterImage ? \"summary_large_image\" : \"summary\",\n }: Omit<OpenGraphParams, \"url\"> & { url?: string }) {\n const absolute = (src: string | undefined) =>\n src && !src.startsWith(\"http\") ? `${configuredAppOrigin()}${src}` : src;\n return Object.fromEntries(\n Object.entries({\n title,\n description,\n type,\n url,\n image: absolute(image),\n imageAlt,\n imageWidth,\n imageHeight,\n twitterImage: absolute(twitterImage),\n twitterImageAlt,\n twitterImageWidth,\n twitterImageHeight,\n twitterCard,\n }).filter(([_, value]) => value !== undefined),\n );\n }\n}\n"
10
10
  ],
11
11
  "mappings": "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",
12
- "debugId": "242056FA25789C4664756E2164756E21",
12
+ "debugId": "2474BB663179A9EF64756E2164756E21",
13
13
  "names": []
14
14
  }
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Wj as n,Xj as k,Zj as T0}from"./chunk-rh811v1f.js";import{_j as S0}from"./chunk-wamxfhh6.js";import{ak as N0,bk as R0,ck as Q0,ek as D,gk as q,pk as B0}from"./chunk-cd847h0t.js";import{Ek as X0}from"./chunk-zh0knwen.js";import{$k as W0,cl as m}from"./chunk-vqar6ysw.js";import{ll as M0}from"./chunk-yc2pnb1w.js";class y{table;sql;dialect;connection;busyTimeout;configured;constructor(z,V={}){let Y=V.table??"gemi_locks";if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y))throw Error(`The lock table name "${Y}" is not a plain identifier. Use letters, digits and underscores.`);this.table=Y,this.sql=z.sql,this.dialect=z.dialect,this.connection=z.name,this.busyTimeout=V.busyTimeout??1000}async createTable(){await this.configure();for(let z of v0(this.dialect,this.table))await this.sql.unsafe(z)}async acquire(z,V,Y){await this.configure();let Z=this.sql,$=this.now(Z);if(await this.seed(Z,z),this.mysql){let H=await Z`
2
+ import{Xj as n,Yj as k,_j as T0}from"./chunk-6tbs7yc1.js";import{$j as S0}from"./chunk-c0dvdfm0.js";import{bk as N0,ck as R0,dk as Q0,fk as D,hk as q,qk as B0}from"./chunk-2ewe42dq.js";import{Fk as X0}from"./chunk-hgvt5084.js";import{al as W0,dl as m}from"./chunk-kcgnjzqr.js";import{ml as M0}from"./chunk-xw5d66ec.js";class y{table;sql;dialect;connection;busyTimeout;configured;constructor(z,V={}){let Y=V.table??"gemi_locks";if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(Y))throw Error(`The lock table name "${Y}" is not a plain identifier. Use letters, digits and underscores.`);this.table=Y,this.sql=z.sql,this.dialect=z.dialect,this.connection=z.name,this.busyTimeout=V.busyTimeout??1000}async createTable(){await this.configure();for(let z of v0(this.dialect,this.table))await this.sql.unsafe(z)}async acquire(z,V,Y){await this.configure();let Z=this.sql,$=this.now(Z);if(await this.seed(Z,z),this.mysql){let H=await Z`
3
3
  UPDATE ${this.name(Z)}
4
4
  SET owner = ${V}, token = token + 1, expires_at = ${$} + ${this.ms(Z,Y)},
5
5
  updated_at = ${$}
@@ -411,6 +411,6 @@ ADD COLUMN IF NOT EXISTS "progress" ${Y}`,`CREATE INDEX IF NOT EXISTS "${V}_batc
411
411
  }
412
412
  };
413
413
  `],"worker.ts"),$=URL.createObjectURL(Z);return new Worker($)}async function d0(z,V){let Y=w0();return Y.postMessage({jobName:z,args:V}),await new Promise((Z,$)=>{Y.onmessage=(X)=>{let H=X.data;if("error"in H)$(H.error);else Z(H.result)}})}var c0=new k0("gemi.queue"),l0=60000;class h{static token="queue";jobs={};config;driver;application;inFlight=new Map;state="idle";looping=!1;claiming;woken=!1;claimFailures=0;resume;unsubscribe;heartbeatTimer;releasedNames=new Set;lockManager;workflowRuntime;constructor(z={},V={}){if(this.config=S0(D0(),z),this.application=V.application,this.driver=r0(this.config.driver,this.application),this.useJobs(this.config.jobs),this.config.workflows.length>0)this.useWorkflows(this.config.workflows)}useJobs(z){this.config.jobs=z,this.jobs={};for(let V of z)this.claim(V);this.registerTickJob()}useWorkflows(z){this.config.workflows=z,this.workflows.use(z),this.registerTickJob()}get registeredWorkflows(){return[...this.config.workflows]}get workflows(){return this.workflowRuntime??=new H0(this),this.workflowRuntime}registerTickJob(){if(!this.workflowRuntime||Object.keys(this.workflowRuntime.workflows).length===0)return;let z=this.workflowRuntime.tickJob;if(this.jobs[z.name]&&this.jobs[z.name]!==z){console.error(`A queued job is named "${z.name}", which the workflow runtime uses. Workflows will not run until it is renamed.`);return}this.jobs[z.name]=z}registerJob(z){this.config.jobs=[...this.config.jobs,z],this.claim(z)}claim(z){if(this.jobs[z.name]){console.error(`Two queued jobs are named "${z.name}" \u2014 the first is registered `+"and this one is not, so dispatching either would have run one of them. A class name is the queue's key, so only one job can hold it. Rename one.");return}this.jobs[z.name]=z}get registeredJobs(){return[...this.config.jobs]}dispatchJob(z,V){if(this.jobs[z])return new this.jobs[z]().run(JSON.parse(V))}push(z,V,Y={}){let Z=this.uniqueKey(z,V);if(Z)return this.pushUnique(z,V,Z,Y);let $=this.driver.joinsTransaction?.()===!0;if(!$){let X=Bun.randomUUIDv7();if(D(()=>this.record(z,V,{id:X,reportFailure:!0,committed:!0}).then(()=>{},()=>{})))return Promise.resolve(X)}return this.record(z,V,{reportFailure:Y.reportFailure,joins:$})}pushBatch(z,V,Y={}){let Z=this.buildBatch(z,V,Y),$={id:Z.id,total:V.length},X=this.driver.joinsTransaction?.()===!0;if(!X){if(D(()=>this.recordBatch(Z,{committed:!0}).then(()=>{},()=>{})))return Promise.resolve($)}return this.recordBatch(Z,{joins:X}).then(()=>$)}buildBatch(z,V,Y={}){if(!this.driver.enqueueBatch)throw Error("This queue's driver does not support batches. The memory and database drivers do.");if(new z().worker)throw Error(`${z.name} is a worker job, and a worker job cannot be dispatched in a batch: its thread has no way to report progress or reach the batch.`);if(z.prototype.uniqueId!==S.prototype.uniqueId)throw Error(`${z.name} is unique (it defines uniqueId), and a unique job cannot be dispatched in a batch: a duplicate would resolve to a job outside the batch, and the batch would wait for it forever.`);let $={};for(let X of["then","catch","finally"]){let H=Y[X];if(H===void 0)continue;if(typeof H?.name!=="string"||!Array.isArray(H.args))throw Error(`The batch's ${X} callback is not a job call. Build it with SomeJob.with(...args).`);$[X]={name:H.name,args:H.args}}return{id:Bun.randomUUIDv7(),name:Y.name??null,job:z.name,args:V,allowFailures:Y.allowFailures===!0,callbacks:$}}recordBatch(z,V){let Y=this.driver.enqueueBatch(z);this.startIfIdle();let Z=()=>!this.driver.subscribe&&this.state==="running"&&this.wake(),$=V.joins===!0&&D(Z);return Y.then(()=>$||Z(),(X)=>{if(!V.committed)return;console.error(`[gemi] The queue driver could not record a batch of ${z.job}, which was held until its transaction committed. The transaction stays committed; the batch's jobs did not run and will not be retried.`,X)}),Y}async findBatch(z){if(!this.driver.findBatch)throw Error("This queue's driver does not support batches.");return this.driver.findBatch(z)}async cancelBatch(z){if(!this.driver.cancelBatch)throw Error("This queue's driver does not support batches.");let V=await this.driver.cancelBatch(z);if(V)this.claimSoon();return V}get locks(){return this.lockManager??=new T0(this.resolveLockStore()),this.lockManager}resolveLockStore(){let z=this.config.locks;if(z==="auto"){let V=this.driver.lockStore?.();if(V)return V;if(this.durable)console.warn('[gemi] The queue driver keeps no locks, so unique jobs, withoutOverlapping and onOneServer only hold within this process. Set the queue slice\'s `locks` to "database" or a LockStore.');return new p}if(z==="memory")return new p;if(z==="database"||typeof z==="function"){if(!this.application&&(z==="database"||z.length>0))throw Error("The queue's locks need the application they belong to, and this QueueManager was built without one. Pass { application }.");if(z==="database")return new y(this.application.make(X0));return z(this.application)}if(typeof z==="string")throw Error(`Unknown queue locks "${z}". The queue slice's locks is "auto", "memory", "database", a LockStore, or a function returning one.`);return z}uniqueKey(z,V){if(z.prototype.uniqueId===S.prototype.uniqueId)return;let Y=new z,Z=Y.uniqueId(...JSON.parse(V));if(Z===void 0||Z===null||Z==="")return;return{key:L0(z.name,Z),ttl:Math.max(1,Y.uniqueFor)}}pushUnique(z,V,Y,Z){let $=Bun.randomUUIDv7();if(D(()=>this.recordUnique(z,V,Y,$,{report:!0,committed:!0}).then(()=>{},()=>{})))return Promise.resolve($);return this.recordUnique(z,V,Y,$,{report:Z.reportFailure!==!1,committed:!1})}recordUnique(z,V,Y,Z,$){let X=this.locks.store,H=(async()=>{for(let G=0;G<5;G++){if(await X.acquire(Y.key,Z,Y.ttl)!==null)try{return await this.record(z,V,{id:Z,reportFailure:!1})}catch(B){throw await X.release(Y.key,Z).catch(()=>{}),B}let Q=await X.holder(Y.key);if(Q)return Q.owner}throw Error(`The unique key "${Y.key}" kept changing hands, so ${z.name} was not queued.`)})();return H.catch((G)=>{if(!$.report)return;console.error(`[gemi] The queue could not record the unique job ${z.name}`+($.committed?", which was held until its transaction committed. The transaction stays committed; the job did not run and will not be retried.":", so it did not run and will not be retried."),G)}),H}async releaseUnique(z,V,Y){if(z.uniqueId===S.prototype.uniqueId)return;try{let Z=z.uniqueId(...V);if(Z===void 0||Z===null||Z==="")return;await this.locks.store.release(L0(Y.name,Z),Y.id)}catch(Z){console.error(`[gemi] Could not free the unique key of ${Y.name} (${Y.id}); it frees itself after uniqueFor.`,Z)}}record(z,V,Y){let Z=this.driver.enqueue({name:z.name,args:V,...Y.id===void 0?{}:{id:Y.id}});this.startIfIdle();let $=()=>!this.driver.subscribe&&this.state==="running"&&this.wake(),X=Y.joins===!0&&D($);return Z.then(()=>X||$(),(H)=>{if(Y.reportFailure===!1)return;console.error(`[gemi] The queue driver could not record ${z.name}`+(Y.committed?", which was held until its transaction committed. The transaction stays committed; the job did not run and will not be retried.":", so it did not run and will not be retried."),H)}),Z}async retryDead(z){if(!this.driver.retryDead)throw Error("This queue's driver keeps nothing of a dead-lettered job, so there is nothing to retry. The database driver keeps them.");let V=await this.driver.retryDead(z);if(V)this.claimSoon();return V}startIfIdle(){if(this.state==="idle"&&(!this.durable||this.mayClaimHere()))this.start()}claimSoon(){if(this.startIfIdle(),!this.driver.subscribe&&this.state==="running")this.wake()}start(){if(this.state==="running")return;if(this.state="running",this.durable&&this.application&&this.mayClaimHere()&&!i0())globalThis.__gemiDevQueue=this;if(this.unsubscribe=this.driver.subscribe?.(()=>this.wake()),this.looping)return this.wake();c0.runInAsyncScope(()=>void this.loop())}async drain(z=1/0){if(this.state="stopped",globalThis.__gemiDevQueue===this)globalThis.__gemiDevQueue=void 0;this.unsubscribe?.(),this.unsubscribe=void 0,this.wake();let V,Y=new Promise(($)=>{if(z!==1/0)V=setTimeout($,z)}),Z=(async()=>{await this.claiming?.catch(()=>{}),await Promise.allSettled([...this.inFlight.values()].map(($)=>$.done))})();return await Promise.race([Z,Y]),clearTimeout(V),{unfinished:[...this.inFlight.values()].map(($)=>({...$.job}))}}stop(){return this.drain(0)}get running(){return this.inFlight.size}async loop(){this.looping=!0;try{await this.claimWhileRunning()}finally{this.looping=!1}}async claimWhileRunning(){while(this.state==="running"){let z=this.durable&&M0()?0:this.config.concurrency-this.inFlight.size;if(z>0){this.woken=!1;let V=this.driver.claim(z,{...this.lease(),registered:{names:Object.keys(this.jobs),graceMs:this.config.unknownJobGrace}});this.claiming=V;let Y=[];try{Y=await V,this.claimFailures=0}catch(Z){this.claimFailures++,console.error(`The queue could not claim jobs from its driver; it will try again in ${this.retryDelay()}ms.`,Z)}finally{this.claiming=void 0}for(let Z of Y)this.execute(Z);if(Y.length===z)continue;if(this.woken&&this.inFlight.size<this.config.concurrency)continue}await this.sleep()}}sleep(){return new Promise((z)=>{let V,Y=this.claimFailures>0?this.retryDelay():this.driver.subscribe?void 0:this.config.pollInterval;if(Y!==void 0)V=setTimeout(()=>this.wake(),Y),V.unref?.();this.resume=()=>{clearTimeout(V),z()}})}retryDelay(){let z=Math.min(Math.max(0,this.claimFailures-1),30);return Math.min(this.config.pollInterval*2**z,l0)}wake(){this.woken=!0;let z=this.resume;this.resume=void 0,z?.()}get durable(){return!(this.driver instanceof i)}mayClaimHere(){return!this.application||s0()}lease(){return{visibilityTimeoutMs:this.config.visibilityTimeout}}execute(z){let V=`${z.id}:${z.attempt}`,Y=()=>this.run(z),Z=(this.application?W0.run(this.application,Y):Y()).catch(($)=>{console.error(`The queue could not record the outcome of ${z.name}.`,$)}).finally(()=>{this.inFlight.delete(V),this.wake()});this.inFlight.set(V,{job:z,done:Z}),this.heartbeat()}heartbeat(){let z=this.driver;if(!z.heartbeat||this.heartbeatTimer)return;this.heartbeatTimer=setInterval(()=>{if(this.inFlight.size===0){clearInterval(this.heartbeatTimer),this.heartbeatTimer=void 0;return}let V=[...this.inFlight.values()].map((Y)=>Y.job);z.heartbeat(V,this.lease()).catch((Y)=>{console.error("The queue could not extend its job leases.",Y)})},Math.max(1,Math.floor(this.config.visibilityTimeout/3))),this.heartbeatTimer.unref?.()}async run(z){let V=this.jobs[z.name];if(!V){let B=Date.now()-z.createdAt;if(this.durable&&B<this.config.unknownJobGrace){if(!this.releasedNames.has(z.name))this.releasedNames.add(z.name),console.error(`Left a queued "${z.name}" for another replica: nothing is registered here under that name. It is dead-lettered if no replica has run it within unknownJobGrace (${this.config.unknownJobGrace}ms) of its dispatch.`);await this.driver.release(z,{retryInMs:Math.round(this.config.pollInterval*(1+Math.random()))});return}console.error(`Dropped a queued job: nothing is registered under the name "${z.name}". If the class exists, it was not `+"discovered \u2014 check that it is under the queue slice's jobsDir "+"(app/jobs by default), or list it in app/config/queue.ts."),await this.driver.fail(z,{error:`No job is registered under the name "${z.name}".`,retryInMs:null});return}let Y;try{Y=new V}catch(B){console.error(`Dropped a queued ${z.name}: it could not be constructed.`,B),await this.driver.fail(z,{error:`The job could not be constructed: ${String(B)}`,retryInMs:null});return}let Z;try{Z=JSON.parse(z.args)}catch(B){console.error(`Dropped a queued ${z.name}: its arguments are not JSON.`,B),await this.driver.fail(z,{error:`The arguments are not JSON: ${String(B)}`,retryInMs:null});return}if(z.attempt>Math.max(1,Y.maxAttempts)){let B=Error(`${z.name} was claimed for attempt ${z.attempt} of ${Y.maxAttempts}: an earlier attempt never finished, most likely because the process running it exited. Dead-lettered without running it again.`);$0(`${z.name}.onDeadletter`,()=>Y.onDeadletter(B,...Z)),await this.driver.fail(z,{error:B.message,retryInMs:null}),await this.releaseUnique(Y,Z,z);return}if(Y.$claimed={...z},z.batchId!==void 0){if((await this.driver.findBatch?.(z.batchId,{progress:!1}))?.cancelledAt!=null){await this.driver.fail(z,{error:"Its batch was cancelled before it ran.",retryInMs:null,cancelled:!0});return}let K=this.batchHandle(z);Y.batch=K.batch,Y.$progress=K.progress}let $=await this.admit(Y,Z,z);if(!$)return;let X,H;try{H=await(Y.worker?d0(z.name,z.args):Y.run(...Z))}catch(B){X=B}finally{await $.done()}let G=Y.$outcome;if(X===void 0&&G?.kind==="release"){await this.driver.release(z,{retryInMs:Math.max(0,G.delayMs)});return}if(X===void 0&&G?.kind==="fail")X=G.error;let Q=G?.kind==="fail"?G.retry:!0;if(X===void 0)try{Y.onSuccess(H,...Z)}catch(B){X=B}if(X!==void 0){let B=String(X?.stack??X);if($0(`${z.name}.onFail`,()=>Y.onFail(X,...Z)),!Q||z.attempt>=Y.maxAttempts)$0(`${z.name}.onDeadletter`,()=>Y.onDeadletter(X,...Z)),await this.driver.fail(z,{error:B,retryInMs:null}),await this.releaseUnique(Y,Z,z);else await this.driver.fail(z,{error:B,retryInMs:s(Y.backoff,z.attempt)});return}await this.driver.complete(z),await this.releaseUnique(Y,Z,z)}batchHandle(z){let V=z.batchId,Y=this.driver;return{batch:{id:V,cancelled:async()=>(await Y.findBatch?.(V,{progress:!1}))?.cancelledAt!=null},progress:(Z)=>Y.reportProgress?.(z,Z)??Promise.resolve()}}async admit(z,V,Y){let Z=z.concurrency(...V),$=[z.throttle(...V)??[]].flat();if(!Z&&$.length===0)return{done:async()=>{}};let X=this.locks,H;if(Z&&Z.limit>0){let Q=this.config.visibilityTimeout;for(let B=0;B<Z.limit&&!H;B++)H=await X.acquire(`gemi:concurrency:${Z.key}:${B}`,{ttl:Q,renew:!0})??void 0;if(!H){await this.driver.release(Y,{retryInMs:Math.round(this.config.pollInterval*(1+Math.random()))});return}}let G=[];for(let Q of $){let B=`gemi:throttle:${Q.key}`,K=await X.store.hit(B,Q.limit,Q.window);if(!K.allowed){await Promise.all(G.map((A)=>X.store.refund(A))),await H?.release(),await this.driver.release(Y,{retryInMs:Math.max(1,K.resetInMs)});return}G.push(B)}return{done:async()=>{await H?.release().catch((Q)=>{console.error(`[gemi] Could not free a concurrency slot of ${Y.name}.`,Q)})}}}}function L0(z,V){return`gemi:job:${z}:${String(V)}`}function $0(z,V){try{V()}catch(Y){console.error(`${z} threw; the job's claim was ended anyway.`,Y)}}function i0(){return Bun.env.NODE_ENV==="production"}function s0(){if(!p0)return!1;if(a0())return!0;return process.env.ROOT_DIR!==void 0&&!n0()}function n0(z=process.env){return(z.GEMI_QUEUE_CLAIM??"").trim().toLowerCase()==="off"}var x0=Symbol.for("gemi.queue.worker");function cz(z=!0){globalThis[x0]=z}function a0(){return globalThis[x0]===!0}function r0(z,V){if(z==="memory")return new i;if(z==="database"||typeof z==="function"){if(!V&&(z==="database"||z.length>0))throw Error("The queue driver needs the application it belongs to, and this QueueManager was built without one. Pass { application }.");if(z==="database")return new z0(V.make(X0));return z(V)}if(typeof z==="string")throw Error(`Unknown queue driver "${z}". The queue slice's driver is "memory", "database", a QueueDriver, or a function returning one.`);return z}class S{static name="unset";worker=!1;maxAttempts=3;backoff=0;uniqueId(...z){return}uniqueFor=3600000;throttle(...z){return}concurrency(...z){return}release(z=0){this.$outcome={kind:"release",delayMs:z}}fail(z,V={}){this.$outcome={kind:"fail",error:z instanceof Error?z:Error(String(z)),retry:V.retry??!0}}batch=void 0;async progress(z){let V=E(z);await this.$progress?.(V)}$progress;$claimed;$outcome;run(...z){}onFail(z,...V){}onSuccess(z,...V){}onDeadletter(z,...V){}static dispatch(...z){if(this.name==="unset")throw Error("Cannot dispatch a job with no name");return m(h).push(this,JSON.stringify(z))}static dispatchBatch(z,V={}){if(this.name==="unset")throw Error("Cannot dispatch a job with no name");return m(h).pushBatch(this,z.map((Y)=>JSON.stringify(Y)),V)}static with(...z){if(this.name==="unset")throw Error("Cannot use a job with no name as a callback");return JSON.stringify(z),{name:this.name,args:z}}static findBatch(z){return m(h).findBatch(z)}static cancelBatch(z){return m(h).cancelBatch(z)}}var r=["completed","failed","cancelled"],t0=1000;class H0{queue;registry={};storeInstance;tickClass;reportedNames=new Set;constructor(z){this.queue=z}get workflows(){return this.registry}use(z){this.registry={};for(let V of z){if(V.name==="unset"||!V.name){console.error("A workflow class has no `static name`, so it was not registered. Add one.");continue}if(this.registry[V.name]){console.error(`Two workflows are named "${V.name}" \u2014 the first is registered `+"and this one is not. A workflow's name is its key in storage. Rename one.");continue}this.registry[V.name]=V}}get tickJob(){return this.tickClass??=o0(this),this.tickClass}get store(){if(!this.storeInstance){let z=this.queue.driver.workflowStore?.();if(!z||!this.queue.driver.enqueueBatch)throw Error("This queue's driver does not support workflows. The memory and database drivers do.");this.storeInstance=z}return this.storeInstance}start(z,V){if(z.name==="unset"||!z.name)throw Error("Cannot start a workflow with no name");let Y=this.store,Z={id:Bun.randomUUIDv7(),name:z.name,args:u(V,`The arguments of ${z.name}`)??"[]"},$=()=>this.queue.claimSoon(),X=Y.joinsTransaction?.()===!0;if(!X){if(D(()=>Y.create(Z).then($,(B)=>{console.error(`[gemi] The queue could not record the workflow ${z.name}, which was held until its transaction committed. The transaction stays committed; the workflow did not start.`,B)})))return Promise.resolve(Z.id)}let H=Y.create(Z),G=X&&D($);return H.then(()=>{if(!G)$();return Z.id})}async signal(z,V,Y){if(typeof V!=="string"||V.length===0||V.length>191)throw TypeError("A signal key is a string of 1 to 191 characters.");let Z=u(Y,`The payload of signal "${V}"`),$=await this.store.update(z,{key:V},({workflow:X,step:H,now:G})=>{if(r.includes(X.status)||X.status==="cancelling")return{result:!1};if(!H)return{result:!0,step:{workflowId:z,key:V,status:"signalled",attempt:0,output:Z,error:null,batchId:null,wakeAt:null,startedAt:null,finishedAt:G,createdAt:G,updatedAt:G}};if(H.status!=="waiting")return{result:!1};return{result:!0,step:{...H,status:"signalled",output:Z,wakeAt:H.wakeAt,finishedAt:G},tick:{delayMs:0}}});if($)this.queue.claimSoon();return $===!0}async cancel(z){let V=await this.store.update(z,{allSteps:!0},({workflow:Y,steps:Z})=>{if(r.includes(Y.status)||Y.status==="cancelling")return{result:!1};return{result:!0,workflow:{status:"cancelling"},cancelBatches:Z.filter(($)=>$.status==="batching"&&$.batchId!==null).map(($)=>$.batchId),tick:{delayMs:0}}});if(V)this.queue.claimSoon();return V===!0}async find(z){let V=await this.store.find(z);if(!V)return null;let{workflow:Y,steps:Z}=V,$=[];try{$=JSON.parse(Y.args)}catch{}return{id:Y.id,name:Y.name,status:Y.status,args:$,currentStep:Y.currentStep,progress:Y.progress,result:e0(Y.result),error:Y.error,steps:await Promise.all(Z.map(async(X)=>{let H={key:X.key,status:X.status,attempt:X.attempt,error:X.error,batchId:X.batchId,wakeAt:X.wakeAt,startedAt:X.startedAt,finishedAt:X.finishedAt};if(X.batchId===null)return H;let G=await this.queue.driver.findBatch?.(X.batchId);return G?{...H,progress:G.progress}:H})),createdAt:Y.createdAt,updatedAt:Y.updatedAt}}async tick(z,V){let Y=this.store,Z=V.$claimed,$=Z?`${Z.id}:${Z.attempt}`:`${crypto.randomUUID()}:1`,X=Math.max(1,this.queue.config.visibilityTimeout),H=await Y.acquire(z,$,X);if(H.kind!=="acquired")return;let{workflow:G}=H,Q=(J={})=>Y.update(z,{owner:$},()=>({...J,result:void 0,unlock:!0})).then(()=>this.queue.claimSoon()).catch((P)=>{if(!(P instanceof R))throw P});if(r.includes(G.status))return Q();let B=this.registry[G.name];if(!B)return this.unknown(G,V,Q);let K;try{K=JSON.parse(G.args)}catch(J){return Q({workflow:{status:"failed",error:`The arguments are not JSON: ${a(J)}`}})}let A=setInterval(()=>{Y.renew(z,$,X).catch((J)=>{console.error(`[gemi] Could not extend the hold on workflow ${z}.`,J)})},Math.max(1,Math.floor(X/3)));A.unref?.();let U=G.status==="cancelling",F=new Z0({workflowId:z,owner:$,store:Y,steps:H.steps,cancelling:U,findBatch:(J)=>this.queue.driver.findBatch?.(J,{progress:!1})??Promise.resolve(null),buildBatch:(J,P,N)=>this.queue.buildBatch(J,P.map((C)=>JSON.stringify(C)),{name:N.name,allowFailures:N.allowFailures,finally:{name:I,args:[z]}}),scheduled:()=>this.queue.claimSoon(),cancelCheckMs:t0});try{let J;try{let P=new B,N=await(U?P.onCancel(F,...K):P.run(F,...K));J=F.suspension?{kind:"suspended"}:{kind:"completed",result:U?null:u(N,`The result of ${G.name}`)}}catch(P){if(J=F.suspension||P instanceof g?{kind:"suspended"}:{kind:"failed",error:a(P)},P instanceof R)F.lost=!0}if(await F.settled(),F.lost)return;if(J.kind==="completed"&&F.suspension)J={kind:"suspended"};await Y.update(z,{owner:$},({workflow:P,now:N})=>this.finish(P,J,F,U,N)),this.queue.claimSoon()}catch(J){if(J instanceof R)return;throw J}finally{clearInterval(A)}}finish(z,V,Y,Z,$){let X={result:void 0,unlock:!0};if(z.status==="cancelling"&&!Z)return{...X,tick:{delayMs:0}};if(V.kind==="completed")return{...X,workflow:Z?{status:"cancelled",currentStep:null,wakeAt:null}:{status:"completed",result:V.result,progress:1,currentStep:null,wakeAt:null,error:null}};if(V.kind==="failed")return{...X,workflow:{status:Z?"cancelled":"failed",error:V.error,wakeAt:null}};let H=Y.suspension??{status:"waiting",wakes:[]},G={...X,workflow:{status:Z?"cancelling":H.status,currentStep:Y.current??z.currentStep}};if(H.wakes.length>0){let Q=Math.min(...H.wakes);if(!(z.wakeAt!==null&&z.wakeAt>$&&z.wakeAt<=Q))G.tick={delayMs:Math.max(0,Q-$)},G.workflow.wakeAt=Q}return G}async unknown(z,V,Y){let Z=Date.now()-z.createdAt;if(this.queue.durable&&Z<this.queue.config.unknownJobGrace){if(!this.reportedNames.has(z.name))this.reportedNames.add(z.name),console.error(`Left workflow "${z.name}" for another replica: nothing is registered here under that name.`);await Y(),V.release(Math.round(this.queue.config.pollInterval*(1+Math.random())));return}console.error(`Failed workflow ${z.id}: nothing is registered under the name "${z.name}". If the class exists, it was not discovered: check that it is under the queue slice's workflowsDir (app/workflows by default), or list it in app/config/queue.ts.`),await Y({workflow:{status:"failed",error:`No workflow is registered under the name "${z.name}".`}})}tickDeadLettered(z,V){console.error(`[gemi] The tick of workflow ${z} was dead-lettered.`,V),this.store.update(z,{},({workflow:Y})=>r.includes(Y.status)?{result:void 0}:{result:void 0,workflow:{status:"failed",error:`Its tick job was dead-lettered: ${V.message}`},unlock:!0}).catch(()=>{})}}function o0(z){return class extends S{static name=I;maxAttempts=20;backoff=[1000,5000,15000,30000,60000];async run(Y){await z.tick(Y,this)}onDeadletter(Y,Z){z.tickDeadLettered(Z,Y)}}}function e0(z){try{return _(z)}catch{return z}}
414
- export{y as Kd,p as Ld,o as Md,U0 as Nd,z0 as Od,Az as Pd,D0 as Qd,V0 as Rd,i as Sd,I0 as Td,Y0 as Ud,E0 as Vd,O0 as Wd,Z0 as Xd,H0 as Yd,h as Zd,s0 as _d,n0 as $d,cz as ae,a0 as be,S as ce};
414
+ export{y as Ld,p as Md,o as Nd,U0 as Od,z0 as Pd,Az as Qd,D0 as Rd,V0 as Sd,i as Td,I0 as Ud,Y0 as Vd,E0 as Wd,O0 as Xd,Z0 as Yd,H0 as Zd,h as _d,s0 as $d,n0 as ae,cz as be,a0 as ce,S as de};
415
415
 
416
- //# debugId=431FD33988F3985C64756E2164756E21
416
+ //# debugId=900C450939FFD21E64756E2164756E21