gemi 0.106.0 → 0.108.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 (246) 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/Schema.d.ts +26 -3
  6. package/dist/ai/Schema.d.ts.map +1 -1
  7. package/dist/ai/client/index.js +86 -25
  8. package/dist/ai/client/index.js.map +1 -1
  9. package/dist/ai/client/reducer.d.ts.map +1 -1
  10. package/dist/ai/contextWindow.d.ts +122 -0
  11. package/dist/ai/contextWindow.d.ts.map +1 -0
  12. package/dist/ai/index.d.ts +3 -1
  13. package/dist/ai/index.d.ts.map +1 -1
  14. package/dist/ai/index.js +14 -14
  15. package/dist/ai/index.js.map +7 -6
  16. package/dist/ai/types.d.ts +9 -0
  17. package/dist/ai/types.d.ts.map +1 -1
  18. package/dist/ai/useChat.d.ts +47 -1
  19. package/dist/ai/useChat.d.ts.map +1 -1
  20. package/dist/app/index.js +2 -2
  21. package/dist/app/index.js.map +1 -1
  22. package/dist/bin/gemi.js +171 -20
  23. package/dist/bin/gemi.js.map +8 -7
  24. package/dist/bun/customRequestParser.d.ts +9 -0
  25. package/dist/bun/customRequestParser.d.ts.map +1 -0
  26. package/dist/bun/plugin.js +2 -2
  27. package/dist/bun/plugin.js.map +1 -1
  28. package/dist/bun/preload.js +2 -2
  29. package/dist/bun/preload.js.map +2 -2
  30. package/dist/{chunk-rjcmbwcc.js → chunk-00y49jcf.js} +2 -2
  31. package/dist/{chunk-rjcmbwcc.js.map → chunk-00y49jcf.js.map} +1 -1
  32. package/dist/{chunk-22k4b395.js → chunk-1npdp1w2.js} +2 -2
  33. package/dist/{chunk-22k4b395.js.map → chunk-1npdp1w2.js.map} +1 -1
  34. package/dist/{chunk-j6e99sra.js → chunk-1rs13253.js} +75 -75
  35. package/dist/{chunk-j6e99sra.js.map → chunk-1rs13253.js.map} +4 -5
  36. package/dist/{chunk-0fney17e.js → chunk-2gmgd05c.js} +2 -2
  37. package/dist/{chunk-0fney17e.js.map → chunk-2gmgd05c.js.map} +1 -1
  38. package/dist/{chunk-k6rd1nd4.js → chunk-2mhx4e4g.js} +3 -3
  39. package/dist/{chunk-k6rd1nd4.js.map → chunk-2mhx4e4g.js.map} +1 -1
  40. package/dist/{chunk-4f7n1r02.js → chunk-2q7m8a16.js} +2 -2
  41. package/dist/{chunk-4f7n1r02.js.map → chunk-2q7m8a16.js.map} +1 -1
  42. package/dist/{chunk-cbywzv21.js → chunk-2xqrh6d0.js} +1 -1
  43. package/dist/{chunk-gyareq03.js → chunk-331s9wqr.js} +3 -3
  44. package/dist/{chunk-gyareq03.js.map → chunk-331s9wqr.js.map} +1 -1
  45. package/dist/{chunk-1xzdexbq.js → chunk-3s3awh38.js} +2 -2
  46. package/dist/{chunk-1xzdexbq.js.map → chunk-3s3awh38.js.map} +1 -1
  47. package/dist/{chunk-v4exgqbp.js → chunk-47rgq59q.js} +2 -2
  48. package/dist/{chunk-v4exgqbp.js.map → chunk-47rgq59q.js.map} +1 -1
  49. package/dist/{chunk-fcsq613t.js → chunk-4rr9wmh8.js} +2 -2
  50. package/dist/{chunk-fcsq613t.js.map → chunk-4rr9wmh8.js.map} +1 -1
  51. package/dist/{chunk-9a8qz3s7.js → chunk-564zfdd1.js} +2 -2
  52. package/dist/{chunk-9a8qz3s7.js.map → chunk-564zfdd1.js.map} +1 -1
  53. package/dist/{chunk-st0d3ndv.js → chunk-5wt25tyd.js} +2 -2
  54. package/dist/{chunk-st0d3ndv.js.map → chunk-5wt25tyd.js.map} +1 -1
  55. package/dist/{chunk-gy6d6jeg.js → chunk-661wezaf.js} +2 -2
  56. package/dist/{chunk-gy6d6jeg.js.map → chunk-661wezaf.js.map} +1 -1
  57. package/dist/{chunk-yxh4xs3k.js → chunk-6rz8kyqb.js} +2 -2
  58. package/dist/{chunk-yxh4xs3k.js.map → chunk-6rz8kyqb.js.map} +1 -1
  59. package/dist/{chunk-18aqqrev.js → chunk-6wrhc9bq.js} +3 -3
  60. package/dist/{chunk-18aqqrev.js.map → chunk-6wrhc9bq.js.map} +1 -1
  61. package/dist/{chunk-3m93v7bt.js → chunk-82hpq0bq.js} +2 -2
  62. package/dist/{chunk-3m93v7bt.js.map → chunk-82hpq0bq.js.map} +1 -1
  63. package/dist/{chunk-ee92kx8s.js → chunk-8pynv9rw.js} +2 -2
  64. package/dist/{chunk-ee92kx8s.js.map → chunk-8pynv9rw.js.map} +1 -1
  65. package/dist/{chunk-7kedxtbp.js → chunk-9hbwvcxn.js} +2 -2
  66. package/dist/{chunk-7kedxtbp.js.map → chunk-9hbwvcxn.js.map} +1 -1
  67. package/dist/{chunk-47dqttnk.js → chunk-9jz4rggd.js} +2 -2
  68. package/dist/{chunk-47dqttnk.js.map → chunk-9jz4rggd.js.map} +1 -1
  69. package/dist/{chunk-xnggfm0s.js → chunk-9mqqr05d.js} +3 -3
  70. package/dist/{chunk-xnggfm0s.js.map → chunk-9mqqr05d.js.map} +1 -1
  71. package/dist/{chunk-gvkydx8r.js → chunk-9r3znmqq.js} +2 -2
  72. package/dist/{chunk-gvkydx8r.js.map → chunk-9r3znmqq.js.map} +1 -1
  73. package/dist/{chunk-zq5m4scz.js → chunk-a1g0bahx.js} +2 -2
  74. package/dist/{chunk-zq5m4scz.js.map → chunk-a1g0bahx.js.map} +1 -1
  75. package/dist/{chunk-5ngv175h.js → chunk-anp4kv3w.js} +1 -1
  76. package/dist/{chunk-tnp1sc4j.js → chunk-b9av1sgb.js} +2 -2
  77. package/dist/{chunk-tnp1sc4j.js.map → chunk-b9av1sgb.js.map} +1 -1
  78. package/dist/chunk-cewyag0d.js +6 -0
  79. package/dist/{chunk-qxg2dnnr.js.map → chunk-cewyag0d.js.map} +2 -2
  80. package/dist/{chunk-214av8am.js → chunk-cfsscms3.js} +4 -4
  81. package/dist/{chunk-214av8am.js.map → chunk-cfsscms3.js.map} +1 -1
  82. package/dist/{chunk-q8r9mvzx.js → chunk-eytdyahy.js} +2 -2
  83. package/dist/{chunk-q8r9mvzx.js.map → chunk-eytdyahy.js.map} +1 -1
  84. package/dist/{chunk-j041a7ej.js → chunk-ffagkj3x.js} +2 -2
  85. package/dist/{chunk-j041a7ej.js.map → chunk-ffagkj3x.js.map} +1 -1
  86. package/dist/{chunk-gvv2trvz.js → chunk-fq3sb3xt.js} +3 -3
  87. package/dist/{chunk-gvv2trvz.js.map → chunk-fq3sb3xt.js.map} +1 -1
  88. package/dist/{chunk-b1dqx3b9.js → chunk-ftgd68se.js} +3 -3
  89. package/dist/{chunk-b1dqx3b9.js.map → chunk-ftgd68se.js.map} +1 -1
  90. package/dist/{chunk-j9deswmn.js → chunk-fwympxqk.js} +2 -2
  91. package/dist/{chunk-j9deswmn.js.map → chunk-fwympxqk.js.map} +1 -1
  92. package/dist/{chunk-5dwtmkk8.js → chunk-gqpge54c.js} +2 -2
  93. package/dist/{chunk-5dwtmkk8.js.map → chunk-gqpge54c.js.map} +1 -1
  94. package/dist/chunk-h2hdpm70.js +24 -0
  95. package/dist/{chunk-70e5fypb.js.map → chunk-h2hdpm70.js.map} +6 -5
  96. package/dist/{chunk-r5pnz4nn.js → chunk-h3t4n0bn.js} +2 -2
  97. package/dist/{chunk-r5pnz4nn.js.map → chunk-h3t4n0bn.js.map} +1 -1
  98. package/dist/{chunk-zm00crsx.js → chunk-h4x7cba0.js} +3 -3
  99. package/dist/{chunk-zm00crsx.js.map → chunk-h4x7cba0.js.map} +1 -1
  100. package/dist/{chunk-b0jpvp5t.js → chunk-h7pafjej.js} +3 -3
  101. package/dist/{chunk-b0jpvp5t.js.map → chunk-h7pafjej.js.map} +1 -1
  102. package/dist/{chunk-63hvh35x.js → chunk-hdhahvd4.js} +2 -2
  103. package/dist/{chunk-63hvh35x.js.map → chunk-hdhahvd4.js.map} +1 -1
  104. package/dist/{chunk-zytmxty5.js → chunk-hyfzw1fk.js} +2 -2
  105. package/dist/{chunk-zytmxty5.js.map → chunk-hyfzw1fk.js.map} +1 -1
  106. package/dist/{chunk-zmag8k0z.js → chunk-jnw73s8c.js} +2 -2
  107. package/dist/{chunk-zmag8k0z.js.map → chunk-jnw73s8c.js.map} +1 -1
  108. package/dist/{chunk-bsq80942.js → chunk-k17prwhx.js} +3 -3
  109. package/dist/{chunk-bsq80942.js.map → chunk-k17prwhx.js.map} +1 -1
  110. package/dist/{chunk-xxkk60aw.js → chunk-k9qmr2wa.js} +3 -3
  111. package/dist/{chunk-xxkk60aw.js.map → chunk-k9qmr2wa.js.map} +1 -1
  112. package/dist/chunk-kda25fn4.js +5 -0
  113. package/dist/chunk-kda25fn4.js.map +10 -0
  114. package/dist/{chunk-cw7qfcvt.js → chunk-kh273hj0.js} +2 -2
  115. package/dist/{chunk-cw7qfcvt.js.map → chunk-kh273hj0.js.map} +1 -1
  116. package/dist/{chunk-kwkbzswm.js → chunk-kqff894s.js} +2 -2
  117. package/dist/{chunk-kwkbzswm.js.map → chunk-kqff894s.js.map} +1 -1
  118. package/dist/{chunk-ma5rmcbe.js → chunk-kqz8jp6v.js} +2 -2
  119. package/dist/{chunk-ma5rmcbe.js.map → chunk-kqz8jp6v.js.map} +1 -1
  120. package/dist/{chunk-dtybftkq.js → chunk-kstvyvr0.js} +2 -2
  121. package/dist/{chunk-dtybftkq.js.map → chunk-kstvyvr0.js.map} +1 -1
  122. package/dist/{chunk-h945tg0r.js → chunk-m31pfz1s.js} +2 -2
  123. package/dist/{chunk-h945tg0r.js.map → chunk-m31pfz1s.js.map} +1 -1
  124. package/dist/{chunk-4p752vk2.js → chunk-mhq2bd9c.js} +3 -3
  125. package/dist/{chunk-4p752vk2.js.map → chunk-mhq2bd9c.js.map} +1 -1
  126. package/dist/chunk-mrvcaakf.js +5 -0
  127. package/dist/{chunk-f2n21fef.js.map → chunk-mrvcaakf.js.map} +1 -1
  128. package/dist/chunk-ncfxmtd5.js +17 -0
  129. package/dist/{chunk-48wh5mbp.js.map → chunk-ncfxmtd5.js.map} +13 -8
  130. package/dist/{chunk-ayss2f8c.js → chunk-njkk498k.js} +2 -2
  131. package/dist/{chunk-ayss2f8c.js.map → chunk-njkk498k.js.map} +1 -1
  132. package/dist/{chunk-hwc8gt4n.js → chunk-pj2e1p07.js} +2 -2
  133. package/dist/{chunk-hwc8gt4n.js.map → chunk-pj2e1p07.js.map} +1 -1
  134. package/dist/{chunk-5k3rm4b6.js → chunk-q2fyp44f.js} +2 -2
  135. package/dist/{chunk-5k3rm4b6.js.map → chunk-q2fyp44f.js.map} +1 -1
  136. package/dist/{chunk-53we503k.js → chunk-q7y9v2v5.js} +3 -3
  137. package/dist/{chunk-53we503k.js.map → chunk-q7y9v2v5.js.map} +1 -1
  138. package/dist/chunk-rh9j8cwv.js +9 -0
  139. package/dist/chunk-rh9j8cwv.js.map +31 -0
  140. package/dist/{chunk-sedwjgvf.js → chunk-rjernda5.js} +2 -2
  141. package/dist/{chunk-sedwjgvf.js.map → chunk-rjernda5.js.map} +1 -1
  142. package/dist/{chunk-2baxmae9.js → chunk-rn2kgbg4.js} +2 -2
  143. package/dist/{chunk-2baxmae9.js.map → chunk-rn2kgbg4.js.map} +1 -1
  144. package/dist/{chunk-8nkdvgd9.js → chunk-sbyqs03h.js} +2 -2
  145. package/dist/{chunk-8nkdvgd9.js.map → chunk-sbyqs03h.js.map} +1 -1
  146. package/dist/{chunk-wc46df4w.js → chunk-t26n9vzw.js} +2 -2
  147. package/dist/{chunk-wc46df4w.js.map → chunk-t26n9vzw.js.map} +1 -1
  148. package/dist/{chunk-8z37k28d.js → chunk-tvy2fqza.js} +2 -2
  149. package/dist/{chunk-8z37k28d.js.map → chunk-tvy2fqza.js.map} +1 -1
  150. package/dist/{chunk-zhk3z9zk.js → chunk-tyhrrnp5.js} +3 -3
  151. package/dist/{chunk-zhk3z9zk.js.map → chunk-tyhrrnp5.js.map} +1 -1
  152. package/dist/{chunk-vh1hxm9y.js → chunk-v52dyw0q.js} +3 -3
  153. package/dist/{chunk-vh1hxm9y.js.map → chunk-v52dyw0q.js.map} +1 -1
  154. package/dist/{chunk-p2jn4bnx.js → chunk-vj2t77x1.js} +2 -2
  155. package/dist/{chunk-p2jn4bnx.js.map → chunk-vj2t77x1.js.map} +1 -1
  156. package/dist/{chunk-mnctdd8r.js → chunk-we2sj339.js} +2 -2
  157. package/dist/{chunk-mnctdd8r.js.map → chunk-we2sj339.js.map} +1 -1
  158. package/dist/{chunk-szrgwggb.js → chunk-wedwkqe7.js} +3 -3
  159. package/dist/{chunk-szrgwggb.js.map → chunk-wedwkqe7.js.map} +1 -1
  160. package/dist/{chunk-pfjr510h.js → chunk-wsftnxzs.js} +2 -2
  161. package/dist/{chunk-pfjr510h.js.map → chunk-wsftnxzs.js.map} +1 -1
  162. package/dist/{chunk-62cv9vjt.js → chunk-wzqkdmjd.js} +2 -2
  163. package/dist/{chunk-62cv9vjt.js.map → chunk-wzqkdmjd.js.map} +1 -1
  164. package/dist/{chunk-rkre6bqc.js → chunk-xg9vye7c.js} +1 -1
  165. package/dist/{chunk-vqvdptx4.js → chunk-xpyhmg45.js} +2 -2
  166. package/dist/{chunk-vqvdptx4.js.map → chunk-xpyhmg45.js.map} +1 -1
  167. package/dist/{chunk-hzmnqe4x.js → chunk-ydkjf626.js} +2 -2
  168. package/dist/{chunk-hzmnqe4x.js.map → chunk-ydkjf626.js.map} +1 -1
  169. package/dist/{chunk-jfnhzza6.js → chunk-yebaheh7.js} +3 -3
  170. package/dist/{chunk-jfnhzza6.js.map → chunk-yebaheh7.js.map} +1 -1
  171. package/dist/{chunk-dyew1yf7.js → chunk-zrdbytx4.js} +2 -2
  172. package/dist/{chunk-dyew1yf7.js.map → chunk-zrdbytx4.js.map} +1 -1
  173. package/dist/client/ClientRouter.d.ts +2 -0
  174. package/dist/client/ClientRouter.d.ts.map +1 -1
  175. package/dist/client/index.js +4 -3
  176. package/dist/client/index.js.map +1 -1
  177. package/dist/config/index.js +1 -1
  178. package/dist/console/run.js +2 -2
  179. package/dist/console/run.js.map +1 -1
  180. package/dist/container/index.js +2 -2
  181. package/dist/container/index.js.map +1 -1
  182. package/dist/database/index.js +2 -2
  183. package/dist/database/index.js.map +1 -1
  184. package/dist/email/index.js +2 -2
  185. package/dist/email/index.js.map +1 -1
  186. package/dist/facades/index.js +2 -2
  187. package/dist/facades/index.js.map +1 -1
  188. package/dist/foundation/index.js +2 -2
  189. package/dist/foundation/index.js.map +1 -1
  190. package/dist/http/ApiRouter.d.ts.map +1 -1
  191. package/dist/http/BodyLimitMiddleware.d.ts +27 -0
  192. package/dist/http/BodyLimitMiddleware.d.ts.map +1 -0
  193. package/dist/http/HttpRequest.d.ts.map +1 -1
  194. package/dist/http/bodyLimit.d.ts +45 -0
  195. package/dist/http/bodyLimit.d.ts.map +1 -0
  196. package/dist/http/index.d.ts +3 -0
  197. package/dist/http/index.d.ts.map +1 -1
  198. package/dist/http/index.js +2 -2
  199. package/dist/http/index.js.map +1 -1
  200. package/dist/http/middleware-config.d.ts +8 -0
  201. package/dist/http/middleware-config.d.ts.map +1 -1
  202. package/dist/http/safeFetch/addresses.d.ts +60 -0
  203. package/dist/http/safeFetch/addresses.d.ts.map +1 -0
  204. package/dist/http/safeFetch/errors.d.ts +78 -0
  205. package/dist/http/safeFetch/errors.d.ts.map +1 -0
  206. package/dist/http/safeFetch/index.d.ts +4 -0
  207. package/dist/http/safeFetch/index.d.ts.map +1 -0
  208. package/dist/http/safeFetch/safeFetch.d.ts +82 -0
  209. package/dist/http/safeFetch/safeFetch.d.ts.map +1 -0
  210. package/dist/i18n/dictionaryRuntime.js +2 -2
  211. package/dist/i18n/dictionaryRuntime.js.map +1 -1
  212. package/dist/i18n/index.js +2 -2
  213. package/dist/i18n/index.js.map +1 -1
  214. package/dist/kernel/index.js +2 -2
  215. package/dist/kernel/index.js.map +1 -1
  216. package/dist/orm/index.js +2 -2
  217. package/dist/orm/index.js.map +1 -1
  218. package/dist/server/httpProd.d.ts.map +1 -1
  219. package/dist/server/index.js +2 -2
  220. package/dist/server/index.js.map +1 -1
  221. package/dist/server/staticFile.d.ts +20 -1
  222. package/dist/server/staticFile.d.ts.map +1 -1
  223. package/dist/services/index.js +2 -2
  224. package/dist/services/index.js.map +1 -1
  225. package/dist/services/middleware/MiddlewareRegistry.d.ts +8 -0
  226. package/dist/services/middleware/MiddlewareRegistry.d.ts.map +1 -1
  227. package/dist/services/queue/work.js +2 -2
  228. package/dist/services/queue/work.js.map +1 -1
  229. package/dist/services/router/ApiRouteDispatcher.d.ts.map +1 -1
  230. package/dist/services/router/createComponentTree.d.ts.map +1 -1
  231. package/dist/support/index.js +2 -2
  232. package/dist/support/index.js.map +1 -1
  233. package/dist/vitest/index.d.ts +27 -0
  234. package/dist/vitest/index.d.ts.map +1 -0
  235. package/dist/vitest/index.js +4 -0
  236. package/dist/vitest/index.js.map +10 -0
  237. package/package.json +3 -2
  238. package/dist/chunk-3cxbvrts.js +0 -9
  239. package/dist/chunk-3cxbvrts.js.map +0 -31
  240. package/dist/chunk-48wh5mbp.js +0 -17
  241. package/dist/chunk-70e5fypb.js +0 -24
  242. package/dist/chunk-f2n21fef.js +0 -5
  243. package/dist/chunk-qxg2dnnr.js +0 -6
  244. /package/dist/{chunk-cbywzv21.js.map → chunk-2xqrh6d0.js.map} +0 -0
  245. /package/dist/{chunk-5ngv175h.js.map → chunk-anp4kv3w.js.map} +0 -0
  246. /package/dist/{chunk-rkre6bqc.js.map → chunk-xg9vye7c.js.map} +0 -0
@@ -673,11 +673,20 @@ export type AgentStreamEvent<T extends ToolShapes = ToolShapes, O = unknown> = {
673
673
  * its `localId` message to `messageId`, and a client that never sent a
674
674
  * `localId` gets nothing. A sub-run's user turn is not the client's and comes
675
675
  * whole, as `message`.
676
+ *
677
+ * `message` is the stored turn itself (#778), for every OTHER client watching
678
+ * the run: a second tab on the same thread that attached with `reattach()`
679
+ * never held the `localId` copy, and without it would show the answer under
680
+ * no question. The reducer appends it only when nothing is under `localId` and
681
+ * nothing is under `messageId` yet, so the client that sent the turn renames
682
+ * its copy exactly as before and never shows it twice. Optional, because a
683
+ * server older than #778 does not send it.
676
684
  */
677
685
  | {
678
686
  type: "message-id";
679
687
  localId: string;
680
688
  messageId: string;
689
+ message?: AgentMessage<T, O>;
681
690
  }
682
691
  /**
683
692
  * Terminal for this stream: the run is finished, not parked. Everything
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../ai/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../ai/types.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAChF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEnD,MAAM,MAAM,KAAK,GAAG;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,QAAQ;AACV;6EAC6E;GAC3E,WAAW;AACb;iEACiE;GAC/D,gBAAgB,GAChB,SAAS,GACT,OAAO;AACT;;;;;;;GAOG;GACD,aAAa,CAAC;AAElB,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,cAAc,GACd,yBAAyB,GACzB,kBAAkB,GAClB,YAAY,GACZ,oBAAoB;AACtB;;6EAE6E;GAC3E,gBAAgB;AAClB;sCACsC;GACpC,qBAAqB;AACvB;;0DAE0D;GACxD,kBAAkB;AACpB;;iDAEiD;GAC/C,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAIF,MAAM,MAAM,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9E;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,IAAI,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI;KAC3D,CAAC,IAAI,MAAM,CAAC,GAAG;QACd,IAAI,EAAE,WAAW,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,CAAC,CAAC;QACR,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACrB,4DAA4D;QAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB;;;;;;;;WAQG;QACH,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B;;;;;;;;;WASG;QACH,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;QACrB;;;;;;;;;;;;;;;;;WAiBG;QACH,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;QACrC;;;;;;;;;;WAUG;QACH,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB;;;;;;;;;;;WAWG;QACH,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;KACnC;CACF,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI;KAC3D,CAAC,IAAI,MAAM,CAAC,GAAG;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,CAAC,CAAC;QACR,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;KACxB;CACF,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI;KAC7D,CAAC,IAAI,MAAM,CAAC,GAAG;QACd,IAAI,EAAE,aAAa,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,CAAC,CAAC;KACT,GAAG,CACA;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;KAAE,GACxC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE;IACxC;;;;;;;;;;;;;;OAcG;OACD;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CACtF;CACF,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX,mEAAmE;AACnE,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,IAAI;IACpC,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,CAAC,CAAC;IACT,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,CAAC,GAAG,OAAO,IACvE,QAAQ,GACR,aAAa,GACb,QAAQ,GACR,YAAY,CAAC,CAAC,CAAC,GACf,cAAc,CAAC,CAAC,CAAC,GACjB,UAAU,CAAC,CAAC,CAAC,CAAC;AAElB,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,CAAC,GAAG,OAAO,IAAI;IACzE;2CACuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,IAAI,CAAC;IACvB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI;KAC9D,CAAC,IAAI,MAAM,CAAC,GAAG;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,CAAC,CAAC;QACR,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;QACzC;;;;;;;;;;WAUG;QACH,SAAS,EAAE,MAAM,CAAC;QAClB;;;;;;;;;;;;;;WAcG;QACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB;CACF,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,gBAAgB,GACxB;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AACH;qDACqD;GACnD;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvF,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAClC,CAAC;AAIF;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,CAAC,GAAG,OAAO,IACvE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAC1D;;;;;;;;;;GAUG;GACD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE;AAC5E;;gCAEgC;GAC9B;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAAE,GAChF;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACtB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC;CACf;AACH;2EAC2E;GACzE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE;AAC3C,wDAAwD;GACtD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE;AAC9D;;;;;;;;;;;;;;;GAeG;GACD;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,gBAAgB,CAAC;CACzB,GACD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;CAAE;AACrE;;;;;;;;;;;;;;;;;;;GAmBG;GACD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CAAE;AAClD;;;;;;;;;;;;;;;;;;;;;;GAsBG;GACD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CAAE;AAC1F;;;;GAIG;GACD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAA;CAAE;AAC1E;;;;;;;;;;GAUG;GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,CAAC,EAAE,IAAI,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AACH;;;;GAIG;GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE;AACjC;;;;;;;;;;;;;;GAcG;GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/D,GACD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAE,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,CAAC,GAAG,OAAO,IAAI;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/B,CAAC"}
@@ -77,6 +77,19 @@ export interface UseChatParams<P extends keyof AgentRoutes> {
77
77
  * `runId` of its own. Defaults to true.
78
78
  */
79
79
  attach?: boolean;
80
+ /**
81
+ * Ask again, the same way, each time the page comes back into view: the tab
82
+ * is shown again (`visibilitychange`) or the window regains focus (#778).
83
+ *
84
+ * For a thread more than one client posts on, two tabs or two devices.
85
+ * `attach` only asks on mount, so a chat that was already open misses a run
86
+ * another client starts later; this picks it up when the user looks. One
87
+ * small request per return to the page, never while this chat is already
88
+ * sending or streaming, and nothing at all while the page stays in view.
89
+ * An app with a change feed of its own does better calling `reattach()`
90
+ * from it. Defaults to false; needs a thread, like `attach`.
91
+ */
92
+ reattachOnFocus?: boolean;
80
93
  /**
81
94
  * Merged into the request body, and read back on the server in
82
95
  * `instructions(req, { body })` and on every tool's `ctx.body`. `uploadFile`
@@ -149,7 +162,8 @@ export interface UseChatParams<P extends keyof AgentRoutes> {
149
162
  onError?: (error: AgentError) => void;
150
163
  onAwaitingInput?: (pending: PendingToolCall<ToolsOf<P>>[]) => void;
151
164
  /**
152
- * The mount probe found no run to attach to.
165
+ * The mount probe found no run to attach to. So did a `reattachOnFocus`
166
+ * probe; an explicit `reattach()` answers `false` instead.
153
167
  *
154
168
  * On one server this means what it says, and there is nothing to do. On more
155
169
  * than one it is ambiguous in a way neither end can resolve: a run lives in
@@ -222,12 +236,44 @@ export interface UseChatResult<P extends keyof AgentRoutes> {
222
236
  /**
223
237
  * Explicit cancel — a closed tab no longer stops a run, so this is what does.
224
238
  *
239
+ * On a thread it stops the thread's run even when this chat did not start it
240
+ * and is not streaming it: idle, it asks the route to stop whatever is
241
+ * running on `threadId` (#778). That is a run another tab started, which
242
+ * this one shows as busy from a re-read thread. Without a thread and with
243
+ * nothing in flight there is nothing to name, and nothing is sent.
244
+ *
225
245
  * The UI stops immediately; the server call is what actually ends the
226
246
  * generation and any tool mid-flight. `messages` keeps the interrupted turn
227
247
  * with everything it had produced, marked `aborted`, so the transcript shows
228
248
  * where it was cut rather than losing text the user already read.
229
249
  */
230
250
  stop(): Promise<void>;
251
+ /**
252
+ * Ask the thread now whether a run is going, and if one is, stream it into
253
+ * this chat (#778).
254
+ *
255
+ * The probe the mount does (`attach`), on demand. For a thread more than one
256
+ * client posts on: a chat that is already open learns nothing of a run
257
+ * another tab or device starts on it later, and this is how it picks that
258
+ * run up. Once attached it is this chat's run in every way that shows:
259
+ * `status` is `streaming`, `onToolResult`, `onToolProgress` and `onFinish`
260
+ * fire for what is new here, and `stop()` stops it.
261
+ *
262
+ * Resolves `true` once an attached run's stream has ended, and `false` at
263
+ * once when there was nothing to attach to: no thread yet, this chat already
264
+ * sending or streaming, or no run going on the thread in this process (the
265
+ * same ambiguity `onAttachMiss` describes, which this does not fire, since
266
+ * the caller has the answer). Cheap when there is nothing: one small request
267
+ * and no change to `status`.
268
+ *
269
+ * Call it from whatever tells the app the thread changed (a change feed, a
270
+ * push, a "someone is typing" signal), or set `reattachOnFocus` to have the
271
+ * hook ask whenever the page comes back into view. The question the run
272
+ * answers comes with it, so the chat does not need to re-read the thread
273
+ * first; if it does re-read (and `setMessages` what it read), a run caught
274
+ * halfway is rebuilt from its first frame rather than appended to.
275
+ */
276
+ reattach(): Promise<boolean>;
231
277
  /**
232
278
  * Drops the last assistant turn and re-runs from the user turn before it.
233
279
  * On a thread the server replaces its stored answer too (`regenerate: true`
@@ -1 +1 @@
1
- {"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../ai/useChat.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../ai/useChat.tsx"],"names":[],"mappings":"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"}
package/dist/app/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{xa as a}from"../chunk-pfjr510h.js";import"../chunk-3m93v7bt.js";import"../chunk-1xzdexbq.js";export{a as App};
2
+ import{za as a}from"../chunk-wsftnxzs.js";import"../chunk-82hpq0bq.js";import"../chunk-3s3awh38.js";export{a as App};
3
3
 
4
- //# debugId=1DF7F2A4406AF3BE64756E2164756E21
4
+ //# debugId=EB7487A2EF3436A164756E2164756E21
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "1DF7F2A4406AF3BE64756E2164756E21",
7
+ "debugId": "EB7487A2EF3436A164756E2164756E21",
8
8
  "names": []
9
9
  }
package/dist/bin/gemi.js CHANGED
@@ -36002,10 +36002,10 @@ function extractAgent(ts, reference, { cwd = process.cwd(), name } = {}) {
36002
36002
  ].join(`
36003
36003
  `);
36004
36004
  const host = ts.createCompilerHost(options);
36005
- const { getSourceFile, fileExists, readFile: readFile2 } = host;
36005
+ const { getSourceFile, fileExists, readFile: readFile3 } = host;
36006
36006
  host.getSourceFile = (fileName, languageVersion, ...rest) => fileName === probe ? ts.createSourceFile(fileName, source, languageVersion) : getSourceFile.call(host, fileName, languageVersion, ...rest);
36007
36007
  host.fileExists = (fileName) => fileName === probe || fileExists.call(host, fileName);
36008
- host.readFile = (fileName) => fileName === probe ? source : readFile2.call(host, fileName);
36008
+ host.readFile = (fileName) => fileName === probe ? source : readFile3.call(host, fileName);
36009
36009
  const second = ts.createProgram({ rootNames: [file, probe], options, host, oldProgram: first });
36010
36010
  const probeFile = second.getSourceFile(probe);
36011
36011
  const alias = (aliasName) => {
@@ -38424,6 +38424,7 @@ Search the tree for \`TODO(gemi-migrate)\` to find everything that needs a decis
38424
38424
  // bun/customRequestParser.ts
38425
38425
  var import_recast = __toESM(require_main2(), 1);
38426
38426
  var import_ast_types = __toESM(require_main3(), 1);
38427
+ var CUSTOM_REQUEST_FILTER = /[\\/]http[\\/](controllers|routes)[\\/].+\.tsx?$/;
38427
38428
  async function customRequestParser(original) {
38428
38429
  const promotedToValue = new Set;
38429
38430
  function isExportedControllerClassDeclaration(body) {
@@ -38552,7 +38553,6 @@ async function customRequestParser(original) {
38552
38553
  }
38553
38554
 
38554
38555
  // bun/plugin.ts
38555
- var CUSTOM_REQUEST_FILTER = /[\\/]http[\\/](controllers|routes)[\\/].+\.tsx?$/;
38556
38556
  function gemiPlugin() {
38557
38557
  return {
38558
38558
  name: "gemi-custom-request",
@@ -40174,7 +40174,9 @@ async function stagePreviousAssets(options, stagingDir, now = new Date) {
40174
40174
  }
40175
40175
  const carried = await readRecord(from);
40176
40176
  const carriedFiles = new Set(carried.flatMap((release) => release.files));
40177
- const own = (await listFiles(from, ASSETS_DIR)).filter((file) => isCarriable(file) && !carriedFiles.has(file));
40177
+ const listed = await listFiles(from, ASSETS_DIR);
40178
+ const listedSet = new Set(listed);
40179
+ const own = listed.filter((file) => isCarriable(file) && !carriedFiles.has(file) && !isSiblingIn(file, listedSet));
40178
40180
  const releases = [
40179
40181
  { retiredAt: now.toISOString(), files: own },
40180
40182
  ...carried.filter((release) => now.getTime() - Date.parse(release.retiredAt) < options.maxAgeMs)
@@ -40190,6 +40192,7 @@ async function stagePreviousAssets(options, stagingDir, now = new Date) {
40190
40192
  const target = join4(stagingDir, file);
40191
40193
  await mkdir2(dirname2(target), { recursive: true });
40192
40194
  await copyFile(source, target);
40195
+ await copySiblings(source, target);
40193
40196
  files.push(file);
40194
40197
  }
40195
40198
  if (files.length > 0) {
@@ -40200,6 +40203,7 @@ async function stagePreviousAssets(options, stagingDir, now = new Date) {
40200
40203
  }
40201
40204
  async function restorePreviousAssets(stagingDir, clientDir, releases) {
40202
40205
  const record = [];
40206
+ const paths = [];
40203
40207
  let count = 0;
40204
40208
  for (const release of releases) {
40205
40209
  const files = [];
@@ -40210,7 +40214,9 @@ async function restorePreviousAssets(stagingDir, clientDir, releases) {
40210
40214
  }
40211
40215
  await mkdir2(dirname2(target), { recursive: true });
40212
40216
  await copyFile(join4(stagingDir, file), target);
40217
+ await copySiblings(join4(stagingDir, file), target);
40213
40218
  files.push(file);
40219
+ paths.push(file);
40214
40220
  }
40215
40221
  if (files.length > 0) {
40216
40222
  record.push({ retiredAt: release.retiredAt, files });
@@ -40221,7 +40227,19 @@ async function restorePreviousAssets(stagingDir, clientDir, releases) {
40221
40227
  await mkdir2(dirname2(recordPath), { recursive: true });
40222
40228
  await writeFile2(recordPath, `${JSON.stringify({ releases: record }, null, 2)}
40223
40229
  `);
40224
- return { files: count, releases: record.length };
40230
+ return { files: count, releases: record.length, paths };
40231
+ }
40232
+ var SIBLING_SUFFIXES = [".br", ".gz"];
40233
+ function isSiblingIn(file, files) {
40234
+ const suffix = SIBLING_SUFFIXES.find((ext) => file.endsWith(ext));
40235
+ return suffix !== undefined && files.has(file.slice(0, -suffix.length));
40236
+ }
40237
+ async function copySiblings(source, target) {
40238
+ for (const ext of SIBLING_SUFFIXES) {
40239
+ if (await isFile(source + ext)) {
40240
+ await copyFile(source + ext, target + ext);
40241
+ }
40242
+ }
40225
40243
  }
40226
40244
  async function readRecord(clientDir) {
40227
40245
  let raw;
@@ -40282,6 +40300,115 @@ async function exists(path3) {
40282
40300
  }
40283
40301
  }
40284
40302
 
40303
+ // vite/precompressAssets.ts
40304
+ import { mkdir as mkdir3, readFile as readFile2, stat as stat2, writeFile as writeFile3 } from "fs/promises";
40305
+ import { availableParallelism } from "os";
40306
+ import { dirname as dirname3, join as join5 } from "path";
40307
+ import { promisify } from "util";
40308
+ import { brotliCompress, constants, gzip } from "zlib";
40309
+ var STATIC_ASSETS_RECORD = ".vite/static-assets.json";
40310
+ var PRECOMPRESS_MIN_BYTES = 1024;
40311
+ var COMPRESSIBLE = /\.(?:m?js|cjs|css|svg|json|webmanifest|wasm|txt|xml|ttf|otf|eot)$/i;
40312
+ var TEXT = /\.(?:m?js|cjs|css|svg|json|webmanifest|txt|xml)$/i;
40313
+ var FONT = /\.(?:ttf|otf|eot)$/i;
40314
+ var SIBLING_EXTENSION = {
40315
+ br: ".br",
40316
+ gzip: ".gz"
40317
+ };
40318
+ var ENCODINGS = ["br", "gzip"];
40319
+ var brotli = promisify(brotliCompress);
40320
+ var gzipAsync = promisify(gzip);
40321
+ function isPrecompressible(file) {
40322
+ return COMPRESSIBLE.test(file);
40323
+ }
40324
+ async function encode2(encoding, file, input) {
40325
+ if (encoding === "gzip") {
40326
+ return gzipAsync(input, { level: 9 });
40327
+ }
40328
+ return brotli(input, {
40329
+ params: {
40330
+ [constants.BROTLI_PARAM_QUALITY]: constants.BROTLI_MAX_QUALITY,
40331
+ [constants.BROTLI_PARAM_MODE]: TEXT.test(file) ? constants.BROTLI_MODE_TEXT : FONT.test(file) ? constants.BROTLI_MODE_FONT : constants.BROTLI_MODE_GENERIC,
40332
+ [constants.BROTLI_PARAM_SIZE_HINT]: input.length
40333
+ }
40334
+ });
40335
+ }
40336
+ async function fileSize(path3) {
40337
+ try {
40338
+ const info = await stat2(path3);
40339
+ return info.isFile() ? info.size : null;
40340
+ } catch {
40341
+ return null;
40342
+ }
40343
+ }
40344
+ async function precompressAssets(clientDir, files, options = {}) {
40345
+ const minBytes = options.minBytes ?? PRECOMPRESS_MIN_BYTES;
40346
+ const record = { files: {} };
40347
+ const stats = {
40348
+ files: 0,
40349
+ identityBytes: 0,
40350
+ brBytes: 0,
40351
+ gzipBytes: 0
40352
+ };
40353
+ const queue = [...new Set(files)];
40354
+ for (const file of queue) {
40355
+ record.files[file] = [];
40356
+ }
40357
+ async function work(file) {
40358
+ if (!isPrecompressible(file)) {
40359
+ return;
40360
+ }
40361
+ const path3 = join5(clientDir, file);
40362
+ const size = await fileSize(path3);
40363
+ if (size === null || size < minBytes) {
40364
+ return;
40365
+ }
40366
+ let input = null;
40367
+ const available = [];
40368
+ const sizes = {};
40369
+ for (const encoding of ENCODINGS) {
40370
+ const siblingPath = path3 + SIBLING_EXTENSION[encoding];
40371
+ const existing = options.reuseExisting ? await fileSize(siblingPath) : null;
40372
+ if (existing !== null) {
40373
+ if (existing < size) {
40374
+ available.push(encoding);
40375
+ sizes[encoding] = existing;
40376
+ }
40377
+ continue;
40378
+ }
40379
+ input ??= await readFile2(path3);
40380
+ const output = await encode2(encoding, file, input);
40381
+ if (output.length < size) {
40382
+ await writeFile3(siblingPath, output);
40383
+ available.push(encoding);
40384
+ sizes[encoding] = output.length;
40385
+ }
40386
+ }
40387
+ record.files[file] = available;
40388
+ if (available.length > 0) {
40389
+ stats.files += 1;
40390
+ stats.identityBytes += size;
40391
+ stats.brBytes += sizes.br ?? size;
40392
+ stats.gzipBytes += sizes.gzip ?? size;
40393
+ }
40394
+ }
40395
+ const concurrency = Math.max(1, options.concurrency ?? Math.min(8, availableParallelism()));
40396
+ let next = 0;
40397
+ await Promise.all(Array.from({ length: Math.min(concurrency, queue.length) }, async () => {
40398
+ while (next < queue.length) {
40399
+ await work(queue[next++]);
40400
+ }
40401
+ }));
40402
+ return { record, stats };
40403
+ }
40404
+ async function writeStaticAssetsRecord(clientDir, record) {
40405
+ const path3 = join5(clientDir, STATIC_ASSETS_RECORD);
40406
+ await mkdir3(dirname3(path3), { recursive: true });
40407
+ const files = Object.fromEntries(Object.entries(record.files).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0));
40408
+ await writeFile3(path3, `${JSON.stringify({ files }, null, 2)}
40409
+ `);
40410
+ }
40411
+
40285
40412
  // ../../node_modules/.bun/commander@12.1.0/node_modules/commander/esm.mjs
40286
40413
  var import__ = __toESM(require_commander(), 1);
40287
40414
  var {
@@ -40304,7 +40431,7 @@ import { relative as relative3, resolve as resolve2 } from "path";
40304
40431
 
40305
40432
  // support/discover.ts
40306
40433
  import { existsSync as existsSync3, readdirSync as readdirSync2 } from "fs";
40307
- import { join as join5, relative as relative2 } from "path";
40434
+ import { join as join6, relative as relative2 } from "path";
40308
40435
  function sourceFiles(dir, ignore = []) {
40309
40436
  const out = [];
40310
40437
  const ignored = (path3) => {
@@ -40313,13 +40440,13 @@ function sourceFiles(dir, ignore = []) {
40313
40440
  };
40314
40441
  const walk3 = (current) => {
40315
40442
  for (const entry of readdirSync2(current, { withFileTypes: true }).sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0)) {
40316
- const path3 = join5(current, entry.name);
40443
+ const path3 = join6(current, entry.name);
40317
40444
  if (ignored(path3))
40318
40445
  continue;
40319
40446
  if (entry.isDirectory()) {
40320
40447
  if (entry.name.startsWith(".") || entry.name === "node_modules")
40321
40448
  continue;
40322
- if (existsSync3(join5(path3, "package.json")))
40449
+ if (existsSync3(join6(path3, "package.json")))
40323
40450
  continue;
40324
40451
  walk3(path3);
40325
40452
  continue;
@@ -40515,7 +40642,7 @@ function indent(message) {
40515
40642
 
40516
40643
  // bin/ide/generateApiManifest.ts
40517
40644
  var import_recast2 = __toESM(require_main2(), 1);
40518
- import { join as join6 } from "path";
40645
+ import { join as join7 } from "path";
40519
40646
  import { existsSync as existsSync4 } from "fs";
40520
40647
 
40521
40648
  // utils/toCamelCase.ts
@@ -40567,7 +40694,7 @@ class ApiManifestGenerator {
40567
40694
  rootRouterBody;
40568
40695
  routerBodyCache = new Map;
40569
40696
  controllerCache = new Map;
40570
- manifestCacheDir = join6(ROOT, ".gemi/cache/api-routes-manifest");
40697
+ manifestCacheDir = join7(ROOT, ".gemi/cache/api-routes-manifest");
40571
40698
  async writeManifest(cacheFilePath) {
40572
40699
  const manifest = {};
40573
40700
  for (const [routeName, method] of this.routes.entries()) {
@@ -40599,7 +40726,7 @@ class ApiManifestGenerator {
40599
40726
  if (path4.startsWith("@/app")) {
40600
40727
  return path4.replace("@", "") + ".ts";
40601
40728
  }
40602
- return join6(parentPath, path4) + ".ts";
40729
+ return join7(parentPath, path4) + ".ts";
40603
40730
  }
40604
40731
  isFileShouldBeParsed(path4) {
40605
40732
  return path4.includes("app/http/router") || path4.includes("app/http/controllers");
@@ -40647,7 +40774,7 @@ class ApiManifestGenerator {
40647
40774
  if (normalizedPath.startsWith("/app/http/controllers")) {
40648
40775
  for (const specifier of node.specifiers) {
40649
40776
  const name = specifier.type === "ImportDefaultSpecifier" ? specifier.local.name : specifier.imported.name;
40650
- await this.parseControllerFile(await this.parseFile(join6(ROOT, normalizedPath)), name, normalizedPath);
40777
+ await this.parseControllerFile(await this.parseFile(join7(ROOT, normalizedPath)), name, normalizedPath);
40651
40778
  }
40652
40779
  }
40653
40780
  if (normalizedPath.startsWith("/app/http/routes")) {
@@ -40751,7 +40878,7 @@ class ApiManifestGenerator {
40751
40878
  }
40752
40879
  async parse(cacheFilePath, filePath, isRoot = true, name = "") {
40753
40880
  console.log({ ROOT, filePath });
40754
- const file = await this.parseFile(join6(ROOT, filePath));
40881
+ const file = await this.parseFile(join7(ROOT, filePath));
40755
40882
  for (const body of file.program.body) {
40756
40883
  if (!this.isNodeShouldBeParsed(body))
40757
40884
  continue;
@@ -40787,7 +40914,7 @@ class ApiManifestGenerator {
40787
40914
  }
40788
40915
  async run(filePath) {
40789
40916
  const cacheId = generateGitDiffId();
40790
- const cacheFilePath = join6(this.manifestCacheDir, `${cacheId}.json`);
40917
+ const cacheFilePath = join7(this.manifestCacheDir, `${cacheId}.json`);
40791
40918
  if (existsSync4(cacheFilePath)) {
40792
40919
  console.log(await Bun.file(cacheFilePath).text());
40793
40920
  } else {
@@ -41266,7 +41393,7 @@ gemi is now ${resolved}.`);
41266
41393
  }
41267
41394
 
41268
41395
  // bin/forwardSignals.ts
41269
- import { constants } from "os";
41396
+ import { constants as constants2 } from "os";
41270
41397
  var FORWARDED = ["SIGTERM", "SIGINT"];
41271
41398
  async function spawnForwardingSignals(options) {
41272
41399
  const proc = Bun.spawn({
@@ -41296,7 +41423,7 @@ async function spawnForwardingSignals(options) {
41296
41423
  function exitCodeOf(proc) {
41297
41424
  if (proc.exitCode !== null)
41298
41425
  return proc.exitCode;
41299
- const signal = proc.signalCode && constants.signals[proc.signalCode];
41426
+ const signal = proc.signalCode && constants2.signals[proc.signalCode];
41300
41427
  return signal ? 128 + signal : 1;
41301
41428
  }
41302
41429
 
@@ -41343,23 +41470,47 @@ program.command("build").action(async () => {
41343
41470
  process.env.GEMI_INPUT = JSON.stringify(input);
41344
41471
  const previousAssets = resolvePreviousAssets(config.previousAssets, rootDir);
41345
41472
  const stagingDir = previousAssets ? await mkdtemp(path9.join(tmpdir(), "gemi-previous-assets-")) : undefined;
41473
+ const clientDir = path9.join(rootDir, "dist", "client");
41474
+ const emitted = [];
41475
+ let carriedPaths = [];
41346
41476
  try {
41347
41477
  const retained = previousAssets && stagingDir ? await stagePreviousAssets(previousAssets, stagingDir) : [];
41348
41478
  console.log("Building client...");
41349
41479
  await build({
41350
41480
  configFile: false,
41351
- plugins: [vite_default()],
41481
+ plugins: [
41482
+ vite_default(),
41483
+ {
41484
+ name: "gemi:emitted-assets",
41485
+ apply: "build",
41486
+ writeBundle(_options, bundle) {
41487
+ for (const file of Object.keys(bundle)) {
41488
+ if (file.startsWith("assets/"))
41489
+ emitted.push(file);
41490
+ }
41491
+ }
41492
+ }
41493
+ ],
41352
41494
  build: { outDir: "dist/client" }
41353
41495
  });
41354
41496
  if (stagingDir) {
41355
- const carried = await restorePreviousAssets(stagingDir, path9.join(rootDir, "dist", "client"), retained);
41356
- console.log(`Kept ${carried.files} asset file(s) from ${carried.releases} earlier release(s).`);
41497
+ const carried2 = await restorePreviousAssets(stagingDir, clientDir, retained);
41498
+ carriedPaths = carried2.paths;
41499
+ console.log(`Kept ${carried2.files} asset file(s) from ${carried2.releases} earlier release(s).`);
41357
41500
  }
41358
41501
  } finally {
41359
41502
  if (stagingDir) {
41360
41503
  await rm(stagingDir, { recursive: true, force: true });
41361
41504
  }
41362
41505
  }
41506
+ const startedAt = performance.now();
41507
+ const fresh = await precompressAssets(clientDir, emitted);
41508
+ const carried = await precompressAssets(clientDir, carriedPaths, { reuseExisting: true });
41509
+ await writeStaticAssetsRecord(clientDir, {
41510
+ files: { ...carried.record.files, ...fresh.record.files }
41511
+ });
41512
+ const kb = (bytes) => `${(bytes / 1024).toFixed(1)} kB`;
41513
+ console.log(`Precompressed ${fresh.stats.files} asset(s): ${kb(fresh.stats.identityBytes)} \u2192 ` + `${kb(fresh.stats.brBytes)} br / ${kb(fresh.stats.gzipBytes)} gzip ` + `(${Math.round(performance.now() - startedAt)} ms).`);
41363
41514
  console.log("Building server...");
41364
41515
  await build({
41365
41516
  configFile: false,
@@ -41515,5 +41666,5 @@ program.command("app:route-manifest").action(async () => {
41515
41666
  });
41516
41667
  program.parse();
41517
41668
 
41518
- //# debugId=5AAC40F8231D70BD64756E2164756E21
41669
+ //# debugId=45F966AEDDDBFC5864756E2164756E21
41519
41670
  //# sourceMappingURL=gemi.js.map