gemi 0.105.0 → 0.107.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/dist/ai/Agent.d.ts +88 -10
  2. package/dist/ai/Agent.d.ts.map +1 -1
  3. package/dist/ai/AgentController.d.ts +29 -1
  4. package/dist/ai/AgentController.d.ts.map +1 -1
  5. package/dist/ai/AgentProvider.d.ts +6 -0
  6. package/dist/ai/AgentProvider.d.ts.map +1 -1
  7. package/dist/ai/Schema.d.ts +26 -3
  8. package/dist/ai/Schema.d.ts.map +1 -1
  9. package/dist/ai/client/index.js +86 -25
  10. package/dist/ai/client/index.js.map +1 -1
  11. package/dist/ai/client/reducer.d.ts.map +1 -1
  12. package/dist/ai/contextWindow.d.ts +122 -0
  13. package/dist/ai/contextWindow.d.ts.map +1 -0
  14. package/dist/ai/index.d.ts +4 -2
  15. package/dist/ai/index.d.ts.map +1 -1
  16. package/dist/ai/index.js +14 -14
  17. package/dist/ai/index.js.map +10 -9
  18. package/dist/ai/providers/request.d.ts +1 -1
  19. package/dist/ai/providers/request.d.ts.map +1 -1
  20. package/dist/ai/providers/stream.d.ts.map +1 -1
  21. package/dist/ai/types.d.ts +50 -0
  22. package/dist/ai/types.d.ts.map +1 -1
  23. package/dist/ai/useChat.d.ts +47 -1
  24. package/dist/ai/useChat.d.ts.map +1 -1
  25. package/dist/app/index.js +2 -2
  26. package/dist/app/index.js.map +1 -1
  27. package/dist/bin/gemi.js +2 -2
  28. package/dist/bin/gemi.js.map +4 -4
  29. package/dist/bun/customRequestParser.d.ts +9 -0
  30. package/dist/bun/customRequestParser.d.ts.map +1 -0
  31. package/dist/bun/plugin.js +2 -2
  32. package/dist/bun/plugin.js.map +1 -1
  33. package/dist/bun/preload.js +2 -2
  34. package/dist/bun/preload.js.map +2 -2
  35. package/dist/{chunk-rjcmbwcc.js → chunk-00y49jcf.js} +2 -2
  36. package/dist/{chunk-rjcmbwcc.js.map → chunk-00y49jcf.js.map} +1 -1
  37. package/dist/{chunk-22k4b395.js → chunk-1npdp1w2.js} +2 -2
  38. package/dist/{chunk-22k4b395.js.map → chunk-1npdp1w2.js.map} +1 -1
  39. package/dist/{chunk-j6e99sra.js → chunk-1rs13253.js} +75 -75
  40. package/dist/{chunk-j6e99sra.js.map → chunk-1rs13253.js.map} +4 -5
  41. package/dist/{chunk-0fney17e.js → chunk-2gmgd05c.js} +2 -2
  42. package/dist/{chunk-0fney17e.js.map → chunk-2gmgd05c.js.map} +1 -1
  43. package/dist/{chunk-4f7n1r02.js → chunk-2q7m8a16.js} +2 -2
  44. package/dist/{chunk-4f7n1r02.js.map → chunk-2q7m8a16.js.map} +1 -1
  45. package/dist/{chunk-cbywzv21.js → chunk-2xqrh6d0.js} +1 -1
  46. package/dist/{chunk-gyareq03.js → chunk-331s9wqr.js} +3 -3
  47. package/dist/{chunk-gyareq03.js.map → chunk-331s9wqr.js.map} +1 -1
  48. package/dist/{chunk-1xzdexbq.js → chunk-3s3awh38.js} +2 -2
  49. package/dist/{chunk-1xzdexbq.js.map → chunk-3s3awh38.js.map} +1 -1
  50. package/dist/{chunk-v4exgqbp.js → chunk-47rgq59q.js} +2 -2
  51. package/dist/{chunk-v4exgqbp.js.map → chunk-47rgq59q.js.map} +1 -1
  52. package/dist/{chunk-fcsq613t.js → chunk-4rr9wmh8.js} +2 -2
  53. package/dist/{chunk-fcsq613t.js.map → chunk-4rr9wmh8.js.map} +1 -1
  54. package/dist/{chunk-9a8qz3s7.js → chunk-564zfdd1.js} +2 -2
  55. package/dist/{chunk-9a8qz3s7.js.map → chunk-564zfdd1.js.map} +1 -1
  56. package/dist/chunk-5mj7a141.js +17 -0
  57. package/dist/{chunk-48wh5mbp.js.map → chunk-5mj7a141.js.map} +12 -7
  58. package/dist/{chunk-st0d3ndv.js → chunk-5wt25tyd.js} +2 -2
  59. package/dist/{chunk-st0d3ndv.js.map → chunk-5wt25tyd.js.map} +1 -1
  60. package/dist/{chunk-gy6d6jeg.js → chunk-661wezaf.js} +2 -2
  61. package/dist/{chunk-gy6d6jeg.js.map → chunk-661wezaf.js.map} +1 -1
  62. package/dist/{chunk-yxh4xs3k.js → chunk-6rz8kyqb.js} +2 -2
  63. package/dist/{chunk-yxh4xs3k.js.map → chunk-6rz8kyqb.js.map} +1 -1
  64. package/dist/{chunk-y926fhhz.js → chunk-6tyf0h6k.js} +2 -2
  65. package/dist/{chunk-y926fhhz.js.map → chunk-6tyf0h6k.js.map} +1 -1
  66. package/dist/{chunk-18aqqrev.js → chunk-6wrhc9bq.js} +3 -3
  67. package/dist/{chunk-18aqqrev.js.map → chunk-6wrhc9bq.js.map} +1 -1
  68. package/dist/{chunk-w8mm0z6r.js → chunk-6zqqec7r.js} +2 -2
  69. package/dist/{chunk-w8mm0z6r.js.map → chunk-6zqqec7r.js.map} +1 -1
  70. package/dist/{chunk-3m93v7bt.js → chunk-82hpq0bq.js} +2 -2
  71. package/dist/{chunk-3m93v7bt.js.map → chunk-82hpq0bq.js.map} +1 -1
  72. package/dist/{chunk-ee92kx8s.js → chunk-8pynv9rw.js} +2 -2
  73. package/dist/{chunk-ee92kx8s.js.map → chunk-8pynv9rw.js.map} +1 -1
  74. package/dist/{chunk-7kedxtbp.js → chunk-9hbwvcxn.js} +2 -2
  75. package/dist/{chunk-7kedxtbp.js.map → chunk-9hbwvcxn.js.map} +1 -1
  76. package/dist/{chunk-47dqttnk.js → chunk-9jz4rggd.js} +2 -2
  77. package/dist/{chunk-47dqttnk.js.map → chunk-9jz4rggd.js.map} +1 -1
  78. package/dist/{chunk-xnggfm0s.js → chunk-9mqqr05d.js} +3 -3
  79. package/dist/{chunk-xnggfm0s.js.map → chunk-9mqqr05d.js.map} +1 -1
  80. package/dist/{chunk-gvkydx8r.js → chunk-9r3znmqq.js} +2 -2
  81. package/dist/{chunk-gvkydx8r.js.map → chunk-9r3znmqq.js.map} +1 -1
  82. package/dist/{chunk-zq5m4scz.js → chunk-a1g0bahx.js} +2 -2
  83. package/dist/{chunk-zq5m4scz.js.map → chunk-a1g0bahx.js.map} +1 -1
  84. package/dist/{chunk-5ngv175h.js → chunk-anp4kv3w.js} +1 -1
  85. package/dist/{chunk-214av8am.js → chunk-cfsscms3.js} +4 -4
  86. package/dist/{chunk-214av8am.js.map → chunk-cfsscms3.js.map} +1 -1
  87. package/dist/{chunk-q8r9mvzx.js → chunk-eytdyahy.js} +2 -2
  88. package/dist/{chunk-q8r9mvzx.js.map → chunk-eytdyahy.js.map} +1 -1
  89. package/dist/{chunk-j041a7ej.js → chunk-ffagkj3x.js} +2 -2
  90. package/dist/{chunk-j041a7ej.js.map → chunk-ffagkj3x.js.map} +1 -1
  91. package/dist/{chunk-gvv2trvz.js → chunk-fq3sb3xt.js} +3 -3
  92. package/dist/{chunk-gvv2trvz.js.map → chunk-fq3sb3xt.js.map} +1 -1
  93. package/dist/{chunk-b1dqx3b9.js → chunk-ftgd68se.js} +3 -3
  94. package/dist/{chunk-b1dqx3b9.js.map → chunk-ftgd68se.js.map} +1 -1
  95. package/dist/{chunk-j9deswmn.js → chunk-fwympxqk.js} +2 -2
  96. package/dist/{chunk-j9deswmn.js.map → chunk-fwympxqk.js.map} +1 -1
  97. package/dist/{chunk-5dwtmkk8.js → chunk-gqpge54c.js} +2 -2
  98. package/dist/{chunk-5dwtmkk8.js.map → chunk-gqpge54c.js.map} +1 -1
  99. package/dist/{chunk-r5pnz4nn.js → chunk-h3t4n0bn.js} +2 -2
  100. package/dist/{chunk-r5pnz4nn.js.map → chunk-h3t4n0bn.js.map} +1 -1
  101. package/dist/{chunk-zm00crsx.js → chunk-h4x7cba0.js} +3 -3
  102. package/dist/{chunk-zm00crsx.js.map → chunk-h4x7cba0.js.map} +1 -1
  103. package/dist/{chunk-b0jpvp5t.js → chunk-h7pafjej.js} +3 -3
  104. package/dist/{chunk-b0jpvp5t.js.map → chunk-h7pafjej.js.map} +1 -1
  105. package/dist/{chunk-63hvh35x.js → chunk-hdhahvd4.js} +2 -2
  106. package/dist/{chunk-63hvh35x.js.map → chunk-hdhahvd4.js.map} +1 -1
  107. package/dist/{chunk-zytmxty5.js → chunk-hyfzw1fk.js} +2 -2
  108. package/dist/{chunk-zytmxty5.js.map → chunk-hyfzw1fk.js.map} +1 -1
  109. package/dist/{chunk-zmag8k0z.js → chunk-jnw73s8c.js} +2 -2
  110. package/dist/{chunk-zmag8k0z.js.map → chunk-jnw73s8c.js.map} +1 -1
  111. package/dist/{chunk-bsq80942.js → chunk-k17prwhx.js} +3 -3
  112. package/dist/{chunk-bsq80942.js.map → chunk-k17prwhx.js.map} +1 -1
  113. package/dist/{chunk-xxkk60aw.js → chunk-k9qmr2wa.js} +3 -3
  114. package/dist/{chunk-xxkk60aw.js.map → chunk-k9qmr2wa.js.map} +1 -1
  115. package/dist/chunk-kda25fn4.js +5 -0
  116. package/dist/chunk-kda25fn4.js.map +10 -0
  117. package/dist/{chunk-cw7qfcvt.js → chunk-kh273hj0.js} +2 -2
  118. package/dist/{chunk-cw7qfcvt.js.map → chunk-kh273hj0.js.map} +1 -1
  119. package/dist/{chunk-kwkbzswm.js → chunk-kqff894s.js} +2 -2
  120. package/dist/{chunk-kwkbzswm.js.map → chunk-kqff894s.js.map} +1 -1
  121. package/dist/{chunk-ma5rmcbe.js → chunk-kqz8jp6v.js} +2 -2
  122. package/dist/{chunk-ma5rmcbe.js.map → chunk-kqz8jp6v.js.map} +1 -1
  123. package/dist/{chunk-dtybftkq.js → chunk-kstvyvr0.js} +2 -2
  124. package/dist/{chunk-dtybftkq.js.map → chunk-kstvyvr0.js.map} +1 -1
  125. package/dist/{chunk-h945tg0r.js → chunk-m31pfz1s.js} +2 -2
  126. package/dist/{chunk-h945tg0r.js.map → chunk-m31pfz1s.js.map} +1 -1
  127. package/dist/{chunk-4p752vk2.js → chunk-mhq2bd9c.js} +3 -3
  128. package/dist/{chunk-4p752vk2.js.map → chunk-mhq2bd9c.js.map} +1 -1
  129. package/dist/chunk-mrvcaakf.js +5 -0
  130. package/dist/{chunk-f2n21fef.js.map → chunk-mrvcaakf.js.map} +1 -1
  131. package/dist/{chunk-ayss2f8c.js → chunk-njkk498k.js} +2 -2
  132. package/dist/{chunk-ayss2f8c.js.map → chunk-njkk498k.js.map} +1 -1
  133. package/dist/{chunk-hwc8gt4n.js → chunk-pj2e1p07.js} +2 -2
  134. package/dist/{chunk-hwc8gt4n.js.map → chunk-pj2e1p07.js.map} +1 -1
  135. package/dist/{chunk-5k3rm4b6.js → chunk-q2fyp44f.js} +2 -2
  136. package/dist/{chunk-5k3rm4b6.js.map → chunk-q2fyp44f.js.map} +1 -1
  137. package/dist/{chunk-53we503k.js → chunk-q7y9v2v5.js} +3 -3
  138. package/dist/{chunk-53we503k.js.map → chunk-q7y9v2v5.js.map} +1 -1
  139. package/dist/chunk-rh9j8cwv.js +9 -0
  140. package/dist/chunk-rh9j8cwv.js.map +31 -0
  141. package/dist/{chunk-sedwjgvf.js → chunk-rjernda5.js} +2 -2
  142. package/dist/{chunk-sedwjgvf.js.map → chunk-rjernda5.js.map} +1 -1
  143. package/dist/{chunk-2baxmae9.js → chunk-rn2kgbg4.js} +2 -2
  144. package/dist/{chunk-2baxmae9.js.map → chunk-rn2kgbg4.js.map} +1 -1
  145. package/dist/{chunk-8nkdvgd9.js → chunk-sbyqs03h.js} +2 -2
  146. package/dist/{chunk-8nkdvgd9.js.map → chunk-sbyqs03h.js.map} +1 -1
  147. package/dist/{chunk-wc46df4w.js → chunk-t26n9vzw.js} +2 -2
  148. package/dist/{chunk-wc46df4w.js.map → chunk-t26n9vzw.js.map} +1 -1
  149. package/dist/{chunk-8z37k28d.js → chunk-tvy2fqza.js} +2 -2
  150. package/dist/{chunk-8z37k28d.js.map → chunk-tvy2fqza.js.map} +1 -1
  151. package/dist/{chunk-zhk3z9zk.js → chunk-tyhrrnp5.js} +3 -3
  152. package/dist/{chunk-zhk3z9zk.js.map → chunk-tyhrrnp5.js.map} +1 -1
  153. package/dist/{chunk-vh1hxm9y.js → chunk-v52dyw0q.js} +3 -3
  154. package/dist/{chunk-vh1hxm9y.js.map → chunk-v52dyw0q.js.map} +1 -1
  155. package/dist/{chunk-k6rd1nd4.js → chunk-vbm1ng3f.js} +3 -3
  156. package/dist/{chunk-k6rd1nd4.js.map → chunk-vbm1ng3f.js.map} +1 -1
  157. package/dist/{chunk-p2jn4bnx.js → chunk-vj2t77x1.js} +2 -2
  158. package/dist/{chunk-p2jn4bnx.js.map → chunk-vj2t77x1.js.map} +1 -1
  159. package/dist/{chunk-mnctdd8r.js → chunk-we2sj339.js} +2 -2
  160. package/dist/{chunk-mnctdd8r.js.map → chunk-we2sj339.js.map} +1 -1
  161. package/dist/{chunk-szrgwggb.js → chunk-wedwkqe7.js} +3 -3
  162. package/dist/{chunk-szrgwggb.js.map → chunk-wedwkqe7.js.map} +1 -1
  163. package/dist/{chunk-pfjr510h.js → chunk-wsftnxzs.js} +2 -2
  164. package/dist/{chunk-pfjr510h.js.map → chunk-wsftnxzs.js.map} +1 -1
  165. package/dist/{chunk-62cv9vjt.js → chunk-wzqkdmjd.js} +2 -2
  166. package/dist/{chunk-62cv9vjt.js.map → chunk-wzqkdmjd.js.map} +1 -1
  167. package/dist/{chunk-rkre6bqc.js → chunk-xg9vye7c.js} +1 -1
  168. package/dist/{chunk-vqvdptx4.js → chunk-xpyhmg45.js} +2 -2
  169. package/dist/{chunk-vqvdptx4.js.map → chunk-xpyhmg45.js.map} +1 -1
  170. package/dist/{chunk-hzmnqe4x.js → chunk-ydkjf626.js} +2 -2
  171. package/dist/{chunk-hzmnqe4x.js.map → chunk-ydkjf626.js.map} +1 -1
  172. package/dist/{chunk-jfnhzza6.js → chunk-yebaheh7.js} +3 -3
  173. package/dist/{chunk-jfnhzza6.js.map → chunk-yebaheh7.js.map} +1 -1
  174. package/dist/chunk-z38355mx.js +6 -0
  175. package/dist/{chunk-dtcy3110.js.map → chunk-z38355mx.js.map} +2 -2
  176. package/dist/{chunk-dyew1yf7.js → chunk-zrdbytx4.js} +2 -2
  177. package/dist/{chunk-dyew1yf7.js.map → chunk-zrdbytx4.js.map} +1 -1
  178. package/dist/config/index.js +1 -1
  179. package/dist/console/run.js +2 -2
  180. package/dist/console/run.js.map +1 -1
  181. package/dist/container/index.js +2 -2
  182. package/dist/container/index.js.map +1 -1
  183. package/dist/database/index.js +2 -2
  184. package/dist/database/index.js.map +1 -1
  185. package/dist/email/index.js +2 -2
  186. package/dist/email/index.js.map +1 -1
  187. package/dist/facades/index.js +2 -2
  188. package/dist/facades/index.js.map +1 -1
  189. package/dist/foundation/index.js +2 -2
  190. package/dist/foundation/index.js.map +1 -1
  191. package/dist/http/ApiRouter.d.ts.map +1 -1
  192. package/dist/http/BodyLimitMiddleware.d.ts +27 -0
  193. package/dist/http/BodyLimitMiddleware.d.ts.map +1 -0
  194. package/dist/http/HttpRequest.d.ts.map +1 -1
  195. package/dist/http/bodyLimit.d.ts +45 -0
  196. package/dist/http/bodyLimit.d.ts.map +1 -0
  197. package/dist/http/index.d.ts +3 -0
  198. package/dist/http/index.d.ts.map +1 -1
  199. package/dist/http/index.js +2 -2
  200. package/dist/http/index.js.map +1 -1
  201. package/dist/http/middleware-config.d.ts +8 -0
  202. package/dist/http/middleware-config.d.ts.map +1 -1
  203. package/dist/http/safeFetch/addresses.d.ts +60 -0
  204. package/dist/http/safeFetch/addresses.d.ts.map +1 -0
  205. package/dist/http/safeFetch/errors.d.ts +78 -0
  206. package/dist/http/safeFetch/errors.d.ts.map +1 -0
  207. package/dist/http/safeFetch/index.d.ts +4 -0
  208. package/dist/http/safeFetch/index.d.ts.map +1 -0
  209. package/dist/http/safeFetch/safeFetch.d.ts +82 -0
  210. package/dist/http/safeFetch/safeFetch.d.ts.map +1 -0
  211. package/dist/i18n/dictionaryRuntime.js +2 -2
  212. package/dist/i18n/dictionaryRuntime.js.map +1 -1
  213. package/dist/i18n/index.js +2 -2
  214. package/dist/i18n/index.js.map +1 -1
  215. package/dist/kernel/index.js +2 -2
  216. package/dist/kernel/index.js.map +1 -1
  217. package/dist/orm/index.js +2 -2
  218. package/dist/orm/index.js.map +1 -1
  219. package/dist/server/index.js +2 -2
  220. package/dist/server/index.js.map +1 -1
  221. package/dist/services/index.js +2 -2
  222. package/dist/services/index.js.map +1 -1
  223. package/dist/services/middleware/MiddlewareRegistry.d.ts +8 -0
  224. package/dist/services/middleware/MiddlewareRegistry.d.ts.map +1 -1
  225. package/dist/services/queue/work.js +2 -2
  226. package/dist/services/queue/work.js.map +1 -1
  227. package/dist/services/router/ApiRouteDispatcher.d.ts.map +1 -1
  228. package/dist/support/index.js +2 -2
  229. package/dist/support/index.js.map +1 -1
  230. package/dist/vitest/index.d.ts +27 -0
  231. package/dist/vitest/index.d.ts.map +1 -0
  232. package/dist/vitest/index.js +4 -0
  233. package/dist/vitest/index.js.map +10 -0
  234. package/package.json +3 -2
  235. package/dist/chunk-3cxbvrts.js +0 -9
  236. package/dist/chunk-3cxbvrts.js.map +0 -31
  237. package/dist/chunk-48wh5mbp.js +0 -17
  238. package/dist/chunk-dtcy3110.js +0 -6
  239. package/dist/chunk-f2n21fef.js +0 -5
  240. /package/dist/{chunk-cbywzv21.js.map → chunk-2xqrh6d0.js.map} +0 -0
  241. /package/dist/{chunk-5ngv175h.js.map → chunk-anp4kv3w.js.map} +0 -0
  242. /package/dist/{chunk-rkre6bqc.js.map → chunk-xg9vye7c.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Ng as B}from"./chunk-0fney17e.js";function $(z){return z.split(".")}class Y{static token="config";items;constructor(z={}){this.items=z}has(z){let F=this.items;for(let E of $(z)){if(F===null||typeof F!=="object"||!(E in F))return!1;F=F[E]}return!0}get(z,F){let E=this.items;for(let G of $(z)){if(E===null||typeof E!=="object"||!(G in E))return F;E=E[G]}return E===void 0?F:E}getMany(z){let F=Array.isArray(z)?z.map((G)=>[G,void 0]):Object.entries(z),E={};for(let[G,H]of F)E[G]=this.get(G,H);return E}set(z,F){let E=typeof z==="string"?[[z,F]]:Object.entries(z);for(let[G,H]of E){let U=$(G),Z=U.pop(),J=this.items;for(let Q of U){let W=J[Q];if(W===null||typeof W!=="object")J[Q]={};J=J[Q]}J[Z]=H}}prepend(z,F){let E=this.get(z,[]);E.unshift(F),this.set(z,E)}push(z,F){let E=this.get(z,[]);E.push(F),this.set(z,E)}merge(z){for(let[F,E]of Object.entries(z)){let G=this.items[F];if(G!==null&&typeof G==="object"&&!Array.isArray(G)&&E!==null&&typeof E==="object"&&!Array.isArray(E))this.items[F]={...G,...E};else this.items[F]=E}}all(){return this.items}}var j=Symbol.for("gemi.foundation.Application");class X extends B{[j]=!0;static isApplication(z){return typeof z==="object"&&z!==null&&j in z}config;providers=[];booted=!1;constructor(z=new Y){super();this.config=z,this.instance(Y,z)}static currentInstance;static getInstance(){return X.currentInstance}static setInstance(z){return X.currentInstance=z,z}register(z){let F=this.providers.find((G)=>G instanceof z);if(F)return F;let E=new z(this);return E.register(),this.providers.push(E),E}registerMany(z){for(let F of z)this.register(F)}getProviders(){return[...this.providers]}isBooted(){return this.booted}async boot(){if(this.booted)return;for(let z of this.providers)await z.boot();this.booted=!0}shutdown(z={}){return this.shutdownPromise??=this.shutdownProviders(z.timeoutMs??5000),this.shutdownPromise}shutdownPromise;async shutdownProviders(z){let F={failed:[],timedOut:[]};if(z<=0){if(this.providers.length>0)console.log(`[gemi] Skipping ${this.providers.length} provider shutdown hook(s): no time is budgeted for them.`);return F}let E=Date.now()+z;for(let G of[...this.providers].reverse()){let H=G.constructor.name,U=E-Date.now();if(U<=0){console.error(`[gemi] ${H}.shutdown() skipped: the provider shutdown deadline had passed.`),F.timedOut.push(H);continue}let Z,J=await Promise.race([Promise.resolve().then(()=>G.shutdown({timeoutMs:U})).then((Q)=>Q?.abandoned?"abandoned":"done",(Q)=>{return console.error(`[gemi] ${H}.shutdown() failed:`,Q),"failed"}),new Promise((Q)=>{Z=setTimeout(()=>Q("timeout"),U)})]);if(clearTimeout(Z),J==="failed")F.failed.push(H);if(J==="abandoned")F.timedOut.push(H);if(J==="timeout")console.error(`[gemi] ${H}.shutdown() did not finish within the provider shutdown deadline; moving on.`),F.timedOut.push(H)}return F}flush(){super.flush(),this.instance(Y,this.config),this.providers=[],this.booted=!1,this.shutdownPromise=void 0}}import{AsyncLocalStorage as K}from"async_hooks";var D=new K;function I(z){let F=D.getStore(),E=X.isApplication(F)?F:X.getInstance();if(!E)throw Error("No Application instance is available. Boot a Kernel before resolving services.");return z?E.make(z):E}
3
- export{D as Ig,Y as Jg,X as Kg,I as Lg};
2
+ import{dh as B}from"./chunk-2gmgd05c.js";function $(z){return z.split(".")}class Y{static token="config";items;constructor(z={}){this.items=z}has(z){let F=this.items;for(let E of $(z)){if(F===null||typeof F!=="object"||!(E in F))return!1;F=F[E]}return!0}get(z,F){let E=this.items;for(let G of $(z)){if(E===null||typeof E!=="object"||!(G in E))return F;E=E[G]}return E===void 0?F:E}getMany(z){let F=Array.isArray(z)?z.map((G)=>[G,void 0]):Object.entries(z),E={};for(let[G,H]of F)E[G]=this.get(G,H);return E}set(z,F){let E=typeof z==="string"?[[z,F]]:Object.entries(z);for(let[G,H]of E){let U=$(G),Z=U.pop(),J=this.items;for(let Q of U){let W=J[Q];if(W===null||typeof W!=="object")J[Q]={};J=J[Q]}J[Z]=H}}prepend(z,F){let E=this.get(z,[]);E.unshift(F),this.set(z,E)}push(z,F){let E=this.get(z,[]);E.push(F),this.set(z,E)}merge(z){for(let[F,E]of Object.entries(z)){let G=this.items[F];if(G!==null&&typeof G==="object"&&!Array.isArray(G)&&E!==null&&typeof E==="object"&&!Array.isArray(E))this.items[F]={...G,...E};else this.items[F]=E}}all(){return this.items}}var j=Symbol.for("gemi.foundation.Application");class X extends B{[j]=!0;static isApplication(z){return typeof z==="object"&&z!==null&&j in z}config;providers=[];booted=!1;constructor(z=new Y){super();this.config=z,this.instance(Y,z)}static currentInstance;static getInstance(){return X.currentInstance}static setInstance(z){return X.currentInstance=z,z}register(z){let F=this.providers.find((G)=>G instanceof z);if(F)return F;let E=new z(this);return E.register(),this.providers.push(E),E}registerMany(z){for(let F of z)this.register(F)}getProviders(){return[...this.providers]}isBooted(){return this.booted}async boot(){if(this.booted)return;for(let z of this.providers)await z.boot();this.booted=!0}shutdown(z={}){return this.shutdownPromise??=this.shutdownProviders(z.timeoutMs??5000),this.shutdownPromise}shutdownPromise;async shutdownProviders(z){let F={failed:[],timedOut:[]};if(z<=0){if(this.providers.length>0)console.log(`[gemi] Skipping ${this.providers.length} provider shutdown hook(s): no time is budgeted for them.`);return F}let E=Date.now()+z;for(let G of[...this.providers].reverse()){let H=G.constructor.name,U=E-Date.now();if(U<=0){console.error(`[gemi] ${H}.shutdown() skipped: the provider shutdown deadline had passed.`),F.timedOut.push(H);continue}let Z,J=await Promise.race([Promise.resolve().then(()=>G.shutdown({timeoutMs:U})).then((Q)=>Q?.abandoned?"abandoned":"done",(Q)=>{return console.error(`[gemi] ${H}.shutdown() failed:`,Q),"failed"}),new Promise((Q)=>{Z=setTimeout(()=>Q("timeout"),U)})]);if(clearTimeout(Z),J==="failed")F.failed.push(H);if(J==="abandoned")F.timedOut.push(H);if(J==="timeout")console.error(`[gemi] ${H}.shutdown() did not finish within the provider shutdown deadline; moving on.`),F.timedOut.push(H)}return F}flush(){super.flush(),this.instance(Y,this.config),this.providers=[],this.booted=!1,this.shutdownPromise=void 0}}import{AsyncLocalStorage as K}from"async_hooks";var D=new K;function I(z){let F=D.getStore(),E=X.isApplication(F)?F:X.getInstance();if(!E)throw Error("No Application instance is available. Boot a Kernel before resolving services.");return z?E.make(z):E}
3
+ export{D as _g,Y as $g,X as ah,I as bh};
4
4
 
5
- //# debugId=860F489D5F1E3DEF64756E2164756E21
5
+ //# debugId=22D3BC8C9DE9FA8164756E2164756E21
@@ -8,6 +8,6 @@
8
8
  "import type { ServiceToken } from \"../container/Container\";\nimport { kernelContext } from \"../kernel/context\";\nimport { Application } from \"./Application\";\n\n/**\n * Resolves the Application for the current async context. Reads the kernel\n * AsyncLocalStorage — there is exactly one ALS in the framework, and\n * `Kernel.run()` stores the Application in it, so this is the primary path for\n * anything running inside a request or a cron tick.\n *\n * The static instance (Laravel's `Container::setInstance`, set by\n * `Kernel.boot()`) is the fallback for code that runs outside any `run()`\n * scope — build-time tooling, module top level, a stray `setTimeout`.\n */\nexport function app(): Application;\nexport function app<T>(token: ServiceToken<T>): T;\nexport function app<T>(token?: ServiceToken<T>): Application | T {\n const store = kernelContext.getStore();\n const instance = Application.isApplication(store)\n ? store\n : Application.getInstance();\n\n if (!instance) {\n throw new Error(\n \"No Application instance is available. Boot a Kernel before resolving services.\",\n );\n }\n\n return token ? instance.make(token) : instance;\n}\n"
9
9
  ],
10
10
  "mappings": "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",
11
- "debugId": "860F489D5F1E3DEF64756E2164756E21",
11
+ "debugId": "22D3BC8C9DE9FA8164756E2164756E21",
12
12
  "names": []
13
13
  }
@@ -1,5 +1,5 @@
1
1
  // @bun
2
2
  import{existsSync as v}from"fs";import{join as z}from"path";var A=["gemi.config.ts","gemi.config.js","gemi.config.mjs"];async function J(q=process.cwd()){for(let u of A){let b=z(q,u);if(v(b)){let k=await import(b);return k.default??k}}return{}}
3
- export{J as ua};
3
+ export{J as wa};
4
4
 
5
- //# debugId=80D4ACCA7739E9FD64756E2164756E21
5
+ //# debugId=AD4FF7DA9CC29A3664756E2164756E21
@@ -5,6 +5,6 @@
5
5
  "import { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { GemiConfig } from \"./index\";\n\nconst CONFIG_FILES = [\"gemi.config.ts\", \"gemi.config.js\", \"gemi.config.mjs\"];\n\n// Load the app's `gemi.config.*` from `rootDir`. Runs under Bun in every\n// context that needs it — the CLI, the `--preload` runtime, and the gemi Vite\n// plugin (the build runs Vite via `bun --bun`, dev via `bun --hot`) — so a\n// TypeScript config imports directly with no extra transpilation step. Returns\n// an empty config when no file is present, so config is entirely optional.\nexport async function loadGemiConfig(\n rootDir: string = process.cwd(),\n): Promise<GemiConfig> {\n for (const name of CONFIG_FILES) {\n const path = join(rootDir, name);\n if (existsSync(path)) {\n const mod = await import(path);\n return (mod.default ?? mod) as GemiConfig;\n }\n }\n return {};\n}\n"
6
6
  ],
7
7
  "mappings": ";AAAA,qBAAS,WACT,eAAS,aAGT,IAAM,EAAe,CAAC,iBAAkB,iBAAkB,iBAAiB,EAO3E,eAAsB,CAAc,CAClC,EAAkB,QAAQ,IAAI,EACT,CACrB,QAAW,KAAQ,EAAc,CAC/B,IAAM,EAAO,EAAK,EAAS,CAAI,EAC/B,GAAI,EAAW,CAAI,EAAG,CACpB,IAAM,EAAM,MAAa,UACzB,OAAQ,EAAI,SAAW,GAG3B,MAAO,CAAC",
8
- "debugId": "80D4ACCA7739E9FD64756E2164756E21",
8
+ "debugId": "AD4FF7DA9CC29A3664756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,5 +1,5 @@
1
1
  // @bun
2
2
  import{readFile as P}from"fs/promises";import{join as Q}from"path";var K="/",W=".vite/gemi.json";function N(H){let q=H?.trim()??"";if(q==="")return K;if(!q.startsWith("/")&&!/^[a-z][a-z\d+.-]*:\/\//i.test(q))throw Error(`Asset base ${JSON.stringify(H)} is neither an absolute URL nor a path starting with "/". The server-rendered document links the build's chunks by this prefix, and a relative one would resolve against each page's URL instead of the build's.`);return q.endsWith("/")?q:`${q}/`}function Z(H,q=process.env.GEMI_ASSET_BASE){let J=q?.trim()?q:H;return J?.trim()?N(J):void 0}function $(H,q=K){return`${q}${H}`}async function x(H){let q;try{q=await P(Q(H,W),"utf8")}catch(J){if(J?.code==="ENOENT")return K;throw J}return N(JSON.parse(q).assetBase)}
3
- export{K as ka,W as la,N as ma,Z as na,$ as oa,x as pa};
3
+ export{K as ma,W as na,N as oa,Z as pa,$ as qa,x as ra};
4
4
 
5
- //# debugId=B949055A3A424C9B64756E2164756E21
5
+ //# debugId=E450B93BA958ADF364756E2164756E21
@@ -5,6 +5,6 @@
5
5
  "import { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\n/**\n * Where the browser fetches the client build from — the prefix every URL gemi\n * builds out of a Vite manifest entry starts with. `/` unless the app sets one,\n * which is the root-relative `/assets/...` every gemi app has always served.\n */\nexport const DEFAULT_ASSET_BASE = \"/\";\n\n/**\n * The file the client build records its base in, relative to `dist/client`.\n * Next to Vite's own `manifest.json`, and like it outside anything the static\n * handler serves.\n */\nexport const ASSET_BASE_RECORD = \".vite/gemi.json\";\n\n/**\n * The base as a URL prefix: trimmed, `/` when empty, and always ending in `/`\n * so `${base}${file}` never needs to know which way round the caller wrote it.\n *\n * Only an absolute URL (`https://cdn.example.com/r42/`) or an absolute path\n * (`/static/`) is accepted. Vite also takes a relative base (`./`, `\"\"`), which\n * resolves each chunk against the module that imports it — but the document\n * has no importing module: a relative `<link rel=\"modulepreload\">` in the SSR\n * head resolves against the page's own URL, so `/users/7` would ask for\n * `/users/assets/...`. Refused here rather than served broken.\n */\nexport function normalizeAssetBase(value: string | undefined): string {\n const base = value?.trim() ?? \"\";\n if (base === \"\") {\n return DEFAULT_ASSET_BASE;\n }\n if (!base.startsWith(\"/\") && !/^[a-z][a-z\\d+.-]*:\\/\\//i.test(base)) {\n throw new Error(\n `Asset base ${JSON.stringify(value)} is neither an absolute URL nor a path starting with \"/\". ` +\n `The server-rendered document links the build's chunks by this prefix, and a relative one would ` +\n `resolve against each page's URL instead of the build's.`,\n );\n }\n return base.endsWith(\"/\") ? base : `${base}/`;\n}\n\n/**\n * The asset base the build should use, from `GEMI_ASSET_BASE` or the\n * `assetBase` field of `gemi.config.ts`, in that order. `undefined` when\n * neither is set, which leaves Vite's own default in place.\n *\n * The variable wins because the thing it usually carries — a release id in the\n * path — is known to the CI job running the build, not to a file checked in\n * beside the code.\n */\nexport function resolveAssetBase(\n configured: string | undefined,\n env: string | undefined = process.env.GEMI_ASSET_BASE,\n): string | undefined {\n const value = env?.trim() ? env : configured;\n return value?.trim() ? normalizeAssetBase(value) : undefined;\n}\n\n/** A manifest entry's `file` (`assets/client-abc.js`) as a URL under `base`. */\nexport function assetUrl(file: string, base: string = DEFAULT_ASSET_BASE): string {\n return `${base}${file}`;\n}\n\n/**\n * The base the client build in `clientDir` was built with, as the build\n * recorded it.\n *\n * Read from the build output rather than from `GEMI_ASSET_BASE` at boot: the\n * base is baked into the bundle — Vite writes it into every preload helper and\n * CSS `url()` — so the only value the document can safely use is the one the\n * bundle already has. An environment read here could differ from the build's\n * (a variable set on the CI job and not on the container is the ordinary case),\n * and the document would then link chunks the bundle does not import.\n *\n * `/` when there is no record, which is a build from before the record existed\n * and therefore one built without a base.\n */\nexport async function readBuiltAssetBase(clientDir: string): Promise<string> {\n let raw: string;\n try {\n raw = await readFile(join(clientDir, ASSET_BASE_RECORD), \"utf8\");\n } catch (error) {\n if ((error as NodeJS.ErrnoException)?.code === \"ENOENT\") {\n return DEFAULT_ASSET_BASE;\n }\n throw error;\n }\n return normalizeAssetBase(JSON.parse(raw).assetBase);\n}\n"
6
6
  ],
7
7
  "mappings": ";AAAA,mBAAS,oBACT,eAAS,aAOF,IAAM,EAAqB,IAOrB,EAAoB,kBAa1B,SAAS,CAAkB,CAAC,EAAmC,CACpE,IAAM,EAAO,GAAO,KAAK,GAAK,GAC9B,GAAI,IAAS,GACX,OAAO,EAET,GAAI,CAAC,EAAK,WAAW,GAAG,GAAK,CAAC,0BAA0B,KAAK,CAAI,EAC/D,MAAU,MACR,cAAc,KAAK,UAAU,CAAK,mNAGpC,EAEF,OAAO,EAAK,SAAS,GAAG,EAAI,EAAO,GAAG,KAYjC,SAAS,CAAgB,CAC9B,EACA,EAA0B,QAAQ,IAAI,gBAClB,CACpB,IAAM,EAAQ,GAAK,KAAK,EAAI,EAAM,EAClC,OAAO,GAAO,KAAK,EAAI,EAAmB,CAAK,EAAI,OAI9C,SAAS,CAAQ,CAAC,EAAc,EAAe,EAA4B,CAChF,MAAO,GAAG,IAAO,IAiBnB,eAAsB,CAAkB,CAAC,EAAoC,CAC3E,IAAI,EACJ,GAAI,CACF,EAAM,MAAM,EAAS,EAAK,EAAW,CAAiB,EAAG,MAAM,EAC/D,MAAO,EAAO,CACd,GAAK,GAAiC,OAAS,SAC7C,OAAO,EAET,MAAM,EAER,OAAO,EAAmB,KAAK,MAAM,CAAG,EAAE,SAAS",
8
- "debugId": "B949055A3A424C9B64756E2164756E21",
8
+ "debugId": "E450B93BA958ADF364756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{a,b,c,d,e,f,g}from"./chunk-p2jn4bnx.js";import"./chunk-hwc8gt4n.js";import"./chunk-ee92kx8s.js";import"./chunk-1xzdexbq.js";export{g as fromEnv,c as ENV_SESSION,b as ENV_SECRET,a as ENV_KEY,d as ENV_EXPIRATION,e as ENV_CREDENTIAL_SCOPE,f as ENV_ACCOUNT_ID};
2
+ import{a,b,c,d,e,f,g}from"./chunk-vj2t77x1.js";import"./chunk-pj2e1p07.js";import"./chunk-8pynv9rw.js";import"./chunk-3s3awh38.js";export{g as fromEnv,c as ENV_SESSION,b as ENV_SECRET,a as ENV_KEY,d as ENV_EXPIRATION,e as ENV_CREDENTIAL_SCOPE,f as ENV_ACCOUNT_ID};
3
3
 
4
4
  //# debugId=30E142423ED216F064756E2164756E21