gemi 0.157.1 → 0.160.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/dist/ai/Agent.d.ts +231 -55
  2. package/dist/ai/Agent.d.ts.map +1 -1
  3. package/dist/ai/AgentController.d.ts +45 -11
  4. package/dist/ai/AgentController.d.ts.map +1 -1
  5. package/dist/ai/eval/Eval.d.ts +2 -11
  6. package/dist/ai/eval/Eval.d.ts.map +1 -1
  7. package/dist/ai/generate.d.ts +165 -7
  8. package/dist/ai/generate.d.ts.map +1 -1
  9. package/dist/ai/index.d.ts +5 -5
  10. package/dist/ai/index.d.ts.map +1 -1
  11. package/dist/ai/index.js +11 -11
  12. package/dist/ai/index.js.map +4 -4
  13. package/dist/ai/usageMeter.d.ts +149 -6
  14. package/dist/ai/usageMeter.d.ts.map +1 -1
  15. package/dist/app/index.js +1 -1
  16. package/dist/bin/gemi.js +178 -121
  17. package/dist/bin/gemi.js.map +5 -4
  18. package/dist/bun/plugin.js +1 -1
  19. package/dist/bun/preload.js +1 -1
  20. package/dist/{chunk-0v3bca8k.js → chunk-0b8m1f07.js} +3 -3
  21. package/dist/{chunk-0v3bca8k.js.map → chunk-0b8m1f07.js.map} +1 -1
  22. package/dist/{chunk-xff7tkde.js → chunk-0qernzn1.js} +2 -2
  23. package/dist/{chunk-xff7tkde.js.map → chunk-0qernzn1.js.map} +1 -1
  24. package/dist/chunk-0qrbspbe.js +5 -0
  25. package/dist/{chunk-6np1r9gk.js.map → chunk-0qrbspbe.js.map} +1 -1
  26. package/dist/{chunk-517fjfme.js → chunk-0vb4j7cx.js} +3 -3
  27. package/dist/{chunk-517fjfme.js.map → chunk-0vb4j7cx.js.map} +1 -1
  28. package/dist/{chunk-0yjm936b.js → chunk-191gkynh.js} +3 -3
  29. package/dist/{chunk-0yjm936b.js.map → chunk-191gkynh.js.map} +1 -1
  30. package/dist/chunk-1xxh48bd.js +4 -0
  31. package/dist/{chunk-cmt3jw6j.js.map → chunk-1xxh48bd.js.map} +2 -2
  32. package/dist/chunk-27habdva.js +4 -0
  33. package/dist/{chunk-3ndc8adc.js.map → chunk-27habdva.js.map} +2 -2
  34. package/dist/{chunk-qvngsa1c.js → chunk-2ednvght.js} +2 -2
  35. package/dist/{chunk-qvngsa1c.js.map → chunk-2ednvght.js.map} +1 -1
  36. package/dist/chunk-3cvza61a.js +4 -0
  37. package/dist/{chunk-pw5h5935.js.map → chunk-3cvza61a.js.map} +2 -2
  38. package/dist/{chunk-1de3awrh.js → chunk-3d8jxky6.js} +3 -3
  39. package/dist/{chunk-1de3awrh.js.map → chunk-3d8jxky6.js.map} +1 -1
  40. package/dist/chunk-3vmc6adw.js +4 -0
  41. package/dist/{chunk-z7224rhm.js.map → chunk-3vmc6adw.js.map} +2 -2
  42. package/dist/{chunk-7yww9aq7.js → chunk-4670xxae.js} +2 -2
  43. package/dist/{chunk-7yww9aq7.js.map → chunk-4670xxae.js.map} +1 -1
  44. package/dist/{chunk-xtqd9vpp.js → chunk-4vqnv41y.js} +2 -2
  45. package/dist/{chunk-xtqd9vpp.js.map → chunk-4vqnv41y.js.map} +1 -1
  46. package/dist/{chunk-exb35whf.js → chunk-4ye6p5yk.js} +2 -2
  47. package/dist/{chunk-exb35whf.js.map → chunk-4ye6p5yk.js.map} +1 -1
  48. package/dist/{chunk-9md6acv2.js → chunk-57qnqcrp.js} +1 -1
  49. package/dist/{chunk-zcg6m7gf.js → chunk-5c6dfy75.js} +2 -2
  50. package/dist/{chunk-zcg6m7gf.js.map → chunk-5c6dfy75.js.map} +1 -1
  51. package/dist/{chunk-t7yt8egz.js → chunk-5pc21syf.js} +3 -3
  52. package/dist/{chunk-t7yt8egz.js.map → chunk-5pc21syf.js.map} +1 -1
  53. package/dist/{chunk-5zxxd7qp.js → chunk-5qzxyj68.js} +1 -1
  54. package/dist/{chunk-pgdxqrjv.js → chunk-664ewdjv.js} +4 -4
  55. package/dist/{chunk-pgdxqrjv.js.map → chunk-664ewdjv.js.map} +2 -2
  56. package/dist/chunk-6d6p0q3p.js +5 -0
  57. package/dist/{chunk-7zy6nq9e.js.map → chunk-6d6p0q3p.js.map} +2 -2
  58. package/dist/{chunk-k1aw97dm.js → chunk-6ytezxzj.js} +2 -2
  59. package/dist/{chunk-78wht1ph.js.map → chunk-6ytezxzj.js.map} +1 -1
  60. package/dist/{chunk-00z7s34q.js → chunk-79nypedr.js} +2 -2
  61. package/dist/{chunk-00z7s34q.js.map → chunk-79nypedr.js.map} +1 -1
  62. package/dist/{chunk-4vnrnbn3.js → chunk-7bc9ypbk.js} +3 -3
  63. package/dist/{chunk-4vnrnbn3.js.map → chunk-7bc9ypbk.js.map} +1 -1
  64. package/dist/{chunk-wg0ttent.js → chunk-7rfw4h2x.js} +3 -3
  65. package/dist/{chunk-wg0ttent.js.map → chunk-7rfw4h2x.js.map} +1 -1
  66. package/dist/{chunk-rrz2ry81.js → chunk-8m3m5hcf.js} +2 -2
  67. package/dist/{chunk-rrz2ry81.js.map → chunk-8m3m5hcf.js.map} +1 -1
  68. package/dist/{chunk-aq5zx3vg.js → chunk-8tyw6faf.js} +2 -2
  69. package/dist/{chunk-aq5zx3vg.js.map → chunk-8tyw6faf.js.map} +1 -1
  70. package/dist/{chunk-p83cjehh.js → chunk-8z29qvvm.js} +3 -3
  71. package/dist/{chunk-p83cjehh.js.map → chunk-8z29qvvm.js.map} +1 -1
  72. package/dist/{chunk-dhq7zv0t.js → chunk-982x8jps.js} +2 -2
  73. package/dist/{chunk-dhq7zv0t.js.map → chunk-982x8jps.js.map} +1 -1
  74. package/dist/{chunk-38kjpa6q.js → chunk-98byy5m4.js} +1 -1
  75. package/dist/{chunk-986eh0n3.js → chunk-9983zmhx.js} +2 -2
  76. package/dist/{chunk-986eh0n3.js.map → chunk-9983zmhx.js.map} +1 -1
  77. package/dist/{chunk-r5y2khw4.js → chunk-9f2ps5v2.js} +2 -2
  78. package/dist/{chunk-r5y2khw4.js.map → chunk-9f2ps5v2.js.map} +1 -1
  79. package/dist/{chunk-q3e1bqrs.js → chunk-bfj2jafb.js} +3 -3
  80. package/dist/{chunk-q3e1bqrs.js.map → chunk-bfj2jafb.js.map} +1 -1
  81. package/dist/{chunk-0vc2akg0.js → chunk-bqxt1she.js} +1 -1
  82. package/dist/{chunk-159j20yr.js → chunk-bzcfw8qd.js} +2 -2
  83. package/dist/{chunk-159j20yr.js.map → chunk-bzcfw8qd.js.map} +1 -1
  84. package/dist/chunk-cn6dteec.js +6 -0
  85. package/dist/{chunk-vp6t1gmt.js.map → chunk-cn6dteec.js.map} +2 -2
  86. package/dist/{chunk-x82f3q6a.js → chunk-cq16azbw.js} +4 -4
  87. package/dist/{chunk-x82f3q6a.js.map → chunk-cq16azbw.js.map} +1 -1
  88. package/dist/{chunk-72f6pbap.js → chunk-csvffxjh.js} +2 -2
  89. package/dist/{chunk-72f6pbap.js.map → chunk-csvffxjh.js.map} +1 -1
  90. package/dist/chunk-ctrmztan.js +4 -0
  91. package/dist/{chunk-42646nt7.js.map → chunk-ctrmztan.js.map} +2 -2
  92. package/dist/chunk-cxz7wycm.js +10 -0
  93. package/dist/{chunk-set6qmjw.js.map → chunk-cxz7wycm.js.map} +3 -3
  94. package/dist/{chunk-4t2j3zcg.js → chunk-d249m2ct.js} +2 -2
  95. package/dist/{chunk-4t2j3zcg.js.map → chunk-d249m2ct.js.map} +2 -2
  96. package/dist/{chunk-p2c72zx3.js → chunk-d3195ypx.js} +2 -2
  97. package/dist/{chunk-p2c72zx3.js.map → chunk-d3195ypx.js.map} +1 -1
  98. package/dist/{chunk-h3gcxf2k.js → chunk-day21sfa.js} +3 -3
  99. package/dist/{chunk-h3gcxf2k.js.map → chunk-day21sfa.js.map} +1 -1
  100. package/dist/{chunk-78wht1ph.js → chunk-egwz89ze.js} +2 -2
  101. package/dist/{chunk-k1aw97dm.js.map → chunk-egwz89ze.js.map} +1 -1
  102. package/dist/chunk-fcjjd162.js +4 -0
  103. package/dist/{chunk-jrv31jp9.js.map → chunk-fcjjd162.js.map} +2 -2
  104. package/dist/{chunk-rtv4ax8z.js → chunk-g71ppv6x.js} +2 -2
  105. package/dist/{chunk-rtv4ax8z.js.map → chunk-g71ppv6x.js.map} +1 -1
  106. package/dist/{chunk-56a3vnrj.js → chunk-gmeeyg19.js} +3 -3
  107. package/dist/{chunk-56a3vnrj.js.map → chunk-gmeeyg19.js.map} +1 -1
  108. package/dist/chunk-htbvkr11.js +41 -0
  109. package/dist/chunk-htbvkr11.js.map +28 -0
  110. package/dist/{chunk-ctrae98c.js → chunk-hxe06cgw.js} +2 -2
  111. package/dist/{chunk-ctrae98c.js.map → chunk-hxe06cgw.js.map} +1 -1
  112. package/dist/{chunk-yzsyg1f7.js → chunk-j144nwvh.js} +3 -3
  113. package/dist/{chunk-yzsyg1f7.js.map → chunk-j144nwvh.js.map} +1 -1
  114. package/dist/{chunk-q7k2hc45.js → chunk-jarsydtr.js} +3 -3
  115. package/dist/{chunk-q7k2hc45.js.map → chunk-jarsydtr.js.map} +1 -1
  116. package/dist/chunk-jx1crzgg.js +117 -0
  117. package/dist/{chunk-t66ex43f.js.map → chunk-jx1crzgg.js.map} +10 -9
  118. package/dist/chunk-k43m5dvs.js +4 -0
  119. package/dist/{chunk-69c2s43a.js.map → chunk-k43m5dvs.js.map} +2 -2
  120. package/dist/chunk-kan3yz82.js +5 -0
  121. package/dist/{chunk-3t4nw1n2.js.map → chunk-kan3yz82.js.map} +2 -2
  122. package/dist/{chunk-ah2jy1vx.js → chunk-m4pkbndk.js} +2 -2
  123. package/dist/{chunk-ah2jy1vx.js.map → chunk-m4pkbndk.js.map} +1 -1
  124. package/dist/{chunk-fe12f946.js → chunk-m73mjzeh.js} +2 -2
  125. package/dist/{chunk-fe12f946.js.map → chunk-m73mjzeh.js.map} +1 -1
  126. package/dist/{chunk-9gt9qdge.js → chunk-m8a80sgn.js} +1 -1
  127. package/dist/{chunk-px3ctjxh.js → chunk-msxhf3m6.js} +2 -2
  128. package/dist/{chunk-px3ctjxh.js.map → chunk-msxhf3m6.js.map} +1 -1
  129. package/dist/chunk-p6nkfcn1.js +5 -0
  130. package/dist/{chunk-kwc68y45.js.map → chunk-p6nkfcn1.js.map} +2 -2
  131. package/dist/{chunk-ss3yn4g2.js → chunk-p9syxzxh.js} +3 -3
  132. package/dist/{chunk-ss3yn4g2.js.map → chunk-p9syxzxh.js.map} +1 -1
  133. package/dist/{chunk-yewj83ez.js → chunk-pyyhmeg1.js} +3 -3
  134. package/dist/{chunk-yewj83ez.js.map → chunk-pyyhmeg1.js.map} +1 -1
  135. package/dist/{chunk-nvhbkqmd.js → chunk-qbsk0jr8.js} +2 -2
  136. package/dist/{chunk-nvhbkqmd.js.map → chunk-qbsk0jr8.js.map} +1 -1
  137. package/dist/{chunk-g5d62d1n.js → chunk-qsbtqh47.js} +2 -2
  138. package/dist/{chunk-g5d62d1n.js.map → chunk-qsbtqh47.js.map} +1 -1
  139. package/dist/{chunk-wnjvfmqc.js → chunk-qz9n2e59.js} +3 -3
  140. package/dist/{chunk-wnjvfmqc.js.map → chunk-qz9n2e59.js.map} +1 -1
  141. package/dist/{chunk-qbvm5q1g.js → chunk-rq3wrwfa.js} +1 -1
  142. package/dist/{chunk-8eyxj78g.js → chunk-ryq2ezgt.js} +3 -3
  143. package/dist/{chunk-8eyxj78g.js.map → chunk-ryq2ezgt.js.map} +1 -1
  144. package/dist/{chunk-v10xzpqs.js → chunk-s0xwqcrf.js} +2 -2
  145. package/dist/{chunk-v10xzpqs.js.map → chunk-s0xwqcrf.js.map} +1 -1
  146. package/dist/{chunk-kbdt84xg.js → chunk-szdbsmq7.js} +2 -2
  147. package/dist/{chunk-kbdt84xg.js.map → chunk-szdbsmq7.js.map} +1 -1
  148. package/dist/{chunk-n95dppzm.js → chunk-tsbxdz4h.js} +2 -2
  149. package/dist/{chunk-n95dppzm.js.map → chunk-tsbxdz4h.js.map} +1 -1
  150. package/dist/chunk-v0gjdknx.js +4 -0
  151. package/dist/{chunk-7426gfgw.js.map → chunk-v0gjdknx.js.map} +2 -2
  152. package/dist/chunk-v8fx4vgq.js +4 -0
  153. package/dist/{chunk-zfbqgzwa.js.map → chunk-v8fx4vgq.js.map} +2 -2
  154. package/dist/{chunk-dce3w52r.js → chunk-vb73ddwz.js} +3 -3
  155. package/dist/{chunk-dce3w52r.js.map → chunk-vb73ddwz.js.map} +1 -1
  156. package/dist/{chunk-xyyq577r.js → chunk-w0rfypzx.js} +2 -2
  157. package/dist/{chunk-xyyq577r.js.map → chunk-w0rfypzx.js.map} +1 -1
  158. package/dist/{chunk-tr8se94g.js → chunk-weyv3zrt.js} +3 -3
  159. package/dist/{chunk-tr8se94g.js.map → chunk-weyv3zrt.js.map} +1 -1
  160. package/dist/{chunk-9kyfaeey.js → chunk-wtddr3vs.js} +2 -2
  161. package/dist/{chunk-9kyfaeey.js.map → chunk-wtddr3vs.js.map} +1 -1
  162. package/dist/{chunk-tzheb6ak.js → chunk-xp7x27n8.js} +3 -3
  163. package/dist/{chunk-tzheb6ak.js.map → chunk-xp7x27n8.js.map} +1 -1
  164. package/dist/{chunk-ycn7w2e9.js → chunk-yzw2tvqq.js} +2 -2
  165. package/dist/{chunk-ycn7w2e9.js.map → chunk-yzw2tvqq.js.map} +1 -1
  166. package/dist/{chunk-wbv6218d.js → chunk-zz2n9pa5.js} +3 -3
  167. package/dist/{chunk-wbv6218d.js.map → chunk-zz2n9pa5.js.map} +1 -1
  168. package/dist/client/index.js +1 -1
  169. package/dist/client/index.js.map +1 -1
  170. package/dist/config/index.js +1 -1
  171. package/dist/console/run.js +2 -2
  172. package/dist/console/run.js.map +1 -1
  173. package/dist/container/index.js +2 -2
  174. package/dist/container/index.js.map +1 -1
  175. package/dist/database/index.js +2 -2
  176. package/dist/database/index.js.map +1 -1
  177. package/dist/email/index.js +2 -2
  178. package/dist/email/index.js.map +1 -1
  179. package/dist/facades/index.js +2 -2
  180. package/dist/facades/index.js.map +1 -1
  181. package/dist/foundation/index.js +2 -2
  182. package/dist/foundation/index.js.map +1 -1
  183. package/dist/http/ApiRouter.d.ts.map +1 -1
  184. package/dist/http/McpRouter.d.ts +203 -6
  185. package/dist/http/McpRouter.d.ts.map +1 -1
  186. package/dist/http/index.d.ts +1 -1
  187. package/dist/http/index.d.ts.map +1 -1
  188. package/dist/http/index.js +2 -2
  189. package/dist/http/index.js.map +1 -1
  190. package/dist/i18n/dictionaryRuntime.js +2 -2
  191. package/dist/i18n/dictionaryRuntime.js.map +1 -1
  192. package/dist/i18n/index.js +2 -2
  193. package/dist/i18n/index.js.map +1 -1
  194. package/dist/kernel/index.js +2 -2
  195. package/dist/kernel/index.js.map +1 -1
  196. package/dist/orm/index.js +2 -2
  197. package/dist/orm/index.js.map +1 -1
  198. package/dist/probe/index.d.ts +79 -0
  199. package/dist/probe/index.d.ts.map +1 -0
  200. package/dist/probe/index.js +8 -0
  201. package/dist/probe/index.js.map +10 -0
  202. package/dist/server/index.js +2 -2
  203. package/dist/server/index.js.map +1 -1
  204. package/dist/services/image-optimization/ImageManager.d.ts +3 -0
  205. package/dist/services/image-optimization/ImageManager.d.ts.map +1 -1
  206. package/dist/services/image-optimization/config.d.ts +12 -0
  207. package/dist/services/image-optimization/config.d.ts.map +1 -1
  208. package/dist/services/image-optimization/fetchSourceImage.d.ts +37 -0
  209. package/dist/services/image-optimization/fetchSourceImage.d.ts.map +1 -0
  210. package/dist/services/index.d.ts +1 -1
  211. package/dist/services/index.d.ts.map +1 -1
  212. package/dist/services/index.js +9 -9
  213. package/dist/services/index.js.map +3 -3
  214. package/dist/services/mcp/McpRegistry.d.ts.map +1 -1
  215. package/dist/services/queue/work.js +2 -2
  216. package/dist/services/queue/work.js.map +1 -1
  217. package/dist/services/rate-limiter/drivers/RedisRateLimiterDriver.d.ts +95 -13
  218. package/dist/services/rate-limiter/drivers/RedisRateLimiterDriver.d.ts.map +1 -1
  219. package/dist/services/router/ApiRouteDispatcher.d.ts +12 -0
  220. package/dist/services/router/ApiRouteDispatcher.d.ts.map +1 -1
  221. package/dist/services/router/createFlatApiRoutes.d.ts +10 -0
  222. package/dist/services/router/createFlatApiRoutes.d.ts.map +1 -1
  223. package/dist/stats/route-table.js +1 -1
  224. package/dist/support/index.js +2 -2
  225. package/dist/support/index.js.map +1 -1
  226. package/dist/vitest/index.js +1 -1
  227. package/package.json +2 -1
  228. package/dist/chunk-3ndc8adc.js +0 -4
  229. package/dist/chunk-3t4nw1n2.js +0 -5
  230. package/dist/chunk-42646nt7.js +0 -4
  231. package/dist/chunk-69c2s43a.js +0 -4
  232. package/dist/chunk-6np1r9gk.js +0 -5
  233. package/dist/chunk-7426gfgw.js +0 -4
  234. package/dist/chunk-7zy6nq9e.js +0 -5
  235. package/dist/chunk-cmt3jw6j.js +0 -4
  236. package/dist/chunk-jrv31jp9.js +0 -4
  237. package/dist/chunk-kwc68y45.js +0 -5
  238. package/dist/chunk-pw5h5935.js +0 -4
  239. package/dist/chunk-set6qmjw.js +0 -10
  240. package/dist/chunk-t66ex43f.js +0 -117
  241. package/dist/chunk-vp6t1gmt.js +0 -6
  242. package/dist/chunk-xp5axyb5.js +0 -30
  243. package/dist/chunk-xp5axyb5.js.map +0 -28
  244. package/dist/chunk-z7224rhm.js +0 -4
  245. package/dist/chunk-zfbqgzwa.js +0 -4
  246. /package/dist/{chunk-9md6acv2.js.map → chunk-57qnqcrp.js.map} +0 -0
  247. /package/dist/{chunk-5zxxd7qp.js.map → chunk-5qzxyj68.js.map} +0 -0
  248. /package/dist/{chunk-38kjpa6q.js.map → chunk-98byy5m4.js.map} +0 -0
  249. /package/dist/{chunk-0vc2akg0.js.map → chunk-bqxt1she.js.map} +0 -0
  250. /package/dist/{chunk-9gt9qdge.js.map → chunk-m8a80sgn.js.map} +0 -0
  251. /package/dist/{chunk-qbvm5q1g.js.map → chunk-rq3wrwfa.js.map} +0 -0
@@ -5,7 +5,7 @@
5
5
  "import type {\n DeleteFileParams,\n DeletePrefixOptions,\n FetchFileOptions,\n ListObjectsOptions,\n StoredObject,\n PutFileOptions,\n PutFileParams,\n ReadFileParams,\n ReadResult,\n} from \"./types\";\n\n// Type-only, so it erases. The SDK itself is loaded by `connect()` below, on\n// the first call that needs it.\nimport type { S3Client } from \"@aws-sdk/client-s3\";\n\nimport { Buffer } from \"node:buffer\";\nimport { FileStorageDriver, assertDeletablePrefix } from \"./FileStorageDriver\";\nimport { abortableBody } from \"./abortableBody\";\nimport { parseContentRange, toRangeHeaderValue } from \"../../../http/range\";\nimport {\n FileNotFoundError,\n RangeNotSatisfiableError,\n} from \"../../../http/errors\";\n\ntype S3Sdk = typeof import(\"@aws-sdk/client-s3\");\n\nexport class S3Driver extends FileStorageDriver {\n private client: S3Client | undefined;\n private config: ConstructorParameters<typeof S3Client>;\n\n constructor(...config: ConstructorParameters<typeof S3Client>) {\n super();\n this.config = config;\n }\n\n /**\n * The AWS SDK and this driver's client, both built on the first call that\n * needs them rather than at module load.\n *\n * `S3Driver` is re-exported from the `gemi/services` barrel, which is the\n * only door an application has to `CronJob`, `Job` or `Command` — a static\n * import here put `@aws-sdk/client-s3` in the module graph of every app and\n * every test that touches any of them (#403). The module registry caches the\n * import, and `??=` caches the client, so this costs one resolved promise per\n * call after the first. `??=` also leaves the client assignable, which is how\n * `S3Driver.test.ts` fakes one.\n *\n * One behaviour does move with it. The SDK validates almost nothing in its\n * constructor — `{}`, no arguments at all, an unset region, a bad endpoint and\n * empty credentials all construct happily and fail on the first request — but\n * a literal empty-string `region` throws `Region is missing` synchronously.\n * An app whose `app/config/filesystem.ts` builds an `S3Driver` at module scope\n * used to see that at boot and now sees it on the first upload. The error is\n * unchanged and still propagates; only its timing differs, and validating it\n * eagerly would mean importing the SDK eagerly, which is the whole point.\n */\n private async connect(): Promise<{ sdk: S3Sdk; client: S3Client }> {\n const sdk = await import(\"@aws-sdk/client-s3\");\n this.client ??= new sdk.S3Client(...this.config);\n return { sdk, client: this.client };\n }\n\n async put(params: PutFileParams | Blob, { signal }: PutFileOptions = {}) {\n signal?.throwIfAborted();\n\n let body: Blob | File | Buffer;\n let contentType: string | undefined;\n let name: string;\n let bucket = process.env.BUCKET_NAME;\n\n if (params instanceof Blob) {\n body = params;\n name = `${Bun.randomUUIDv7()}.${params.type.split(\"/\")[1].split(\";\")[0]}`;\n contentType = params.type;\n } else {\n body = params.body;\n name = params.name;\n bucket = params.bucket ?? bucket;\n // An explicitly passed contentType wins; otherwise fall back to the\n // blob's own type. A Buffer carries no type, so it has nothing to fall\n // back to and relies on the caller's value.\n contentType =\n params.contentType ||\n (body instanceof Blob || body instanceof File ? body.type : undefined);\n }\n\n // A typeless Blob reports \"\". Send nothing rather than an empty header, so\n // S3 applies its own default instead of storing a blank content type.\n contentType = contentType || undefined;\n\n const buffer =\n body instanceof Buffer\n ? body\n : body instanceof Blob || body instanceof File\n ? Buffer.from(await body.arrayBuffer())\n : \"\";\n\n const { sdk, client } = await this.connect();\n // Checked again here: reading the body and loading the SDK both await, and\n // the SDK only watches the signal once the request is under way.\n signal?.throwIfAborted();\n await client.send(\n new sdk.PutObjectCommand({\n Bucket: bucket,\n Key: name,\n Body: buffer,\n ContentType: contentType,\n }),\n { abortSignal: signal },\n );\n\n return name;\n }\n\n async delete(params: DeleteFileParams | string) {\n const name = typeof params === \"string\" ? params : params.name;\n const bucket =\n (typeof params === \"string\" ? undefined : params.bucket) ??\n process.env.BUCKET_NAME;\n\n if (!name) {\n throw new Error(\"Object name has to be specified\");\n }\n\n const { sdk, client } = await this.connect();\n try {\n await client.send(\n new sdk.DeleteObjectCommand({ Bucket: bucket, Key: name }),\n );\n } catch (err: any) {\n // S3 itself answers 204 for a missing key, but some S3-compatible\n // services answer 404. Either way the object is gone.\n if (err?.name === \"NoSuchKey\" || err?.$metadata?.httpStatusCode === 404) {\n return;\n }\n throw err;\n }\n }\n\n /**\n * One `ListObjectsV2` page at a time (up to 1000 keys each), following the\n * continuation token until S3 reports the listing complete.\n */\n private async *pages(\n prefix: string,\n { bucket, signal }: ListObjectsOptions,\n ): AsyncGenerator<StoredObject[]> {\n const { sdk, client } = await this.connect();\n let token: string | undefined;\n do {\n signal?.throwIfAborted();\n const result: any = await client.send(\n new sdk.ListObjectsV2Command({\n Bucket: bucket ?? process.env.BUCKET_NAME,\n Prefix: prefix,\n ContinuationToken: token,\n }),\n { abortSignal: signal },\n );\n yield (result.Contents ?? []).map((item: any) => ({\n name: item.Key,\n size: item.Size ?? 0,\n lastModified: item.LastModified ?? new Date(0),\n }));\n // Guard on the token too: an S3-compatible service that says \"truncated\"\n // without one would otherwise restart from the first page forever.\n token = result.IsTruncated ? result.NextContinuationToken : undefined;\n } while (token);\n }\n\n async *objects(\n prefix: string,\n options: ListObjectsOptions = {},\n ): AsyncIterable<StoredObject> {\n for await (const page of this.pages(prefix, options)) {\n yield* page;\n }\n }\n\n /**\n * `DeleteObjects` per listed page, so a purge costs two requests per 1000\n * objects. A key S3 reports as not deleted rejects the whole call; the\n * objects already removed stay removed, and running it again finishes the job.\n */\n async deletePrefix(\n prefix: string,\n options: DeletePrefixOptions = {},\n ): Promise<number> {\n assertDeletablePrefix(prefix);\n const bucket = options.bucket ?? process.env.BUCKET_NAME;\n const { sdk, client } = await this.connect();\n\n let deleted = 0;\n for await (const page of this.pages(prefix, { ...options, bucket })) {\n if (page.length === 0) continue;\n options.signal?.throwIfAborted();\n const result: any = await client.send(\n new sdk.DeleteObjectsCommand({\n Bucket: bucket,\n Delete: {\n Objects: page.map((object) => ({ Key: object.name })),\n Quiet: true,\n },\n }),\n { abortSignal: options.signal },\n );\n const errors: any[] = result?.Errors ?? [];\n if (errors.length > 0) {\n const first = errors[0];\n throw new Error(\n `S3 could not delete ${errors.length} object(s) under \"${prefix}\", e.g. \"${first.Key}\": ${first.Code ?? \"unknown\"} ${first.Message ?? \"\"}`.trim(),\n );\n }\n deleted += page.length;\n }\n return deleted;\n }\n\n /** @deprecated Returns the raw first `ListObjectsV2` page. Use `objects(prefix)`. */\n async list(folder: string) {\n const { sdk, client } = await this.connect();\n const result = await client.send(\n new sdk.ListObjectsV2Command({\n Bucket: process.env.BUCKET_NAME,\n Prefix: folder,\n }),\n );\n\n return result;\n }\n\n async fetch(\n params: ReadFileParams | string,\n { signal }: FetchFileOptions = {},\n ) {\n signal?.throwIfAborted();\n\n let bucket = process.env.BUCKET_NAME;\n let name: string | undefined;\n\n if (typeof params === \"string\") {\n name = params;\n } else {\n bucket = params.bucket ?? bucket;\n name = params.name;\n }\n\n if (!name) {\n throw new Error(\"Object name has to be specified\");\n }\n\n const { sdk, client } = await this.connect();\n // Checked again: loading the SDK awaits, and the SDK only watches the\n // signal once the request is under way.\n signal?.throwIfAborted();\n const result = await client.send(\n new sdk.GetObjectCommand({\n Bucket: bucket,\n Key: name,\n }),\n { abortSignal: signal },\n );\n\n // The SDK's signal covers the request; the wrapper covers a caller still\n // reading the body when the abort lands.\n const body = abortableBody(result.Body.transformToWebStream(), signal);\n // An abort during the request that the SDK let through: the wrapper has\n // already cancelled the body, so reject rather than hand back a dead one.\n signal?.throwIfAborted();\n\n return new Response(body, {\n headers: {\n \"Content-Type\": result.ContentType,\n \"Content-Length\": result.ContentLength.toString(),\n \"Cache-Control\": \"private, max-age=12000, must-revalidate\",\n \"Last-Modified\": result.LastModified?.toUTCString() || \"\",\n ETag: result.ETag || \"\",\n },\n });\n }\n\n async read(input: ReadFileParams | string): Promise<ReadResult> {\n const params = typeof input === \"string\" ? { name: input } : input;\n const bucket = params.bucket ?? process.env.BUCKET_NAME;\n const { name, range = null } = params;\n\n if (!name) {\n throw new Error(\"Object name has to be specified\");\n }\n\n const { sdk, client } = await this.connect();\n\n let result: Awaited<ReturnType<S3Client[\"send\"]>> & Record<string, any>;\n try {\n result = (await client.send(\n new sdk.GetObjectCommand({\n Bucket: bucket,\n Key: name,\n Range: range ? toRangeHeaderValue(range) : undefined,\n }),\n )) as any;\n } catch (err: any) {\n if (err?.name === \"InvalidRange\" || err?.$metadata?.httpStatusCode === 416) {\n throw new RangeNotSatisfiableError(await this.size({ name, bucket }));\n }\n if (err?.name === \"NoSuchKey\" || err?.$metadata?.httpStatusCode === 404) {\n throw new FileNotFoundError(name);\n }\n throw err;\n }\n\n // S3 reports the authoritative total in its own Content-Range on any\n // successful ranged GET. Reading it here is what keeps `bytes=S-E` and\n // `bytes=-N` down to a single round trip, with no HEAD for the size.\n const contentRange = parseContentRange(result.ContentRange);\n const partial =\n Boolean(contentRange) && result.$metadata?.httpStatusCode === 206;\n const total = contentRange?.total ?? result.ContentLength ?? 0;\n\n return {\n body: result.Body.transformToWebStream(),\n start: contentRange?.start ?? 0,\n end: contentRange?.end ?? total - 1,\n total,\n partial,\n type: result.ContentType ?? \"application/octet-stream\",\n etag: result.ETag || undefined,\n lastModified: result.LastModified,\n name,\n };\n }\n\n async size(params: ReadFileParams | string) {\n const name = typeof params === \"string\" ? params : params.name;\n const bucket =\n (typeof params === \"string\" ? undefined : params.bucket) ??\n process.env.BUCKET_NAME;\n\n const { sdk, client } = await this.connect();\n\n try {\n const result = await client.send(\n new sdk.HeadObjectCommand({ Bucket: bucket, Key: name }),\n );\n return result.ContentLength ?? 0;\n } catch (err: any) {\n if (err?.name === \"NotFound\" || err?.$metadata?.httpStatusCode === 404) {\n throw new FileNotFoundError(name);\n }\n throw err;\n }\n }\n}\n",
6
6
  "import { Buffer } from \"node:buffer\";\nimport { Readable } from \"node:stream\";\n\nimport {\n FileNotFoundError,\n RangeNotSatisfiableError,\n} from \"../../../http/errors\";\nimport { parseContentRange, resolveRange } from \"../../../http/range\";\nimport { FileStorageDriver } from \"./FileStorageDriver\";\nimport { abortableBody } from \"./abortableBody\";\nimport type {\n DeleteFileParams,\n FetchFileOptions,\n PutFileOptions,\n PutFileParams,\n ReadFileParams,\n ReadResult,\n ListObjectsOptions,\n StoredObject,\n} from \"./types\";\n\n/**\n * The slice of `@azure/storage-blob` this driver uses. Declared structurally so\n * the package stays an optional peer dependency: nothing here imports its types.\n */\ninterface BlobClientLike {\n download(\n offset?: number,\n count?: number,\n options?: { abortSignal?: AbortSignal },\n ): Promise<{\n readableStreamBody?: NodeJS.ReadableStream;\n blobBody?: Promise<Blob>;\n contentLength?: number;\n contentType?: string;\n contentRange?: string;\n etag?: string;\n lastModified?: Date;\n }>;\n getProperties(): Promise<{\n contentLength?: number;\n contentType?: string;\n etag?: string;\n lastModified?: Date;\n }>;\n uploadData(\n data: Buffer | Blob,\n options?: {\n blobHTTPHeaders?: { blobContentType?: string };\n abortSignal?: AbortSignal;\n },\n ): Promise<unknown>;\n delete(): Promise<unknown>;\n}\n\ninterface ContainerClientLike {\n getBlockBlobClient(name: string): BlobClientLike;\n listBlobsFlat(options?: { prefix?: string }): AsyncIterable<{\n name: string;\n properties?: { contentLength?: number; lastModified?: Date };\n }>;\n}\n\ninterface BlobServiceClientLike {\n getContainerClient(name: string): ContainerClientLike;\n}\n\nexport interface AzureBlobDriverConfig {\n /** Defaults to `process.env.AZURE_STORAGE_CONNECTION_STRING`. */\n connectionString?: string;\n /** Account URL, e.g. `https://acct.blob.core.windows.net`, optionally carrying a SAS token. */\n url?: string;\n /** A `StorageSharedKeyCredential` or any `TokenCredential`, used with `url`. */\n credential?: unknown;\n /** Default container. Falls back to `process.env.BUCKET_NAME`. */\n container?: string;\n /**\n * A pre-built `BlobServiceClient`. Supply this to configure retries, proxies\n * or a custom credential chain yourself — the driver then never imports the\n * SDK.\n */\n serviceClient?: BlobServiceClientLike;\n}\n\nfunction isNotFound(err: any) {\n return (\n err?.statusCode === 404 ||\n err?.details?.errorCode === \"BlobNotFound\" ||\n err?.code === \"BlobNotFound\"\n );\n}\n\nfunction isInvalidRange(err: any) {\n return (\n err?.statusCode === 416 ||\n err?.details?.errorCode === \"InvalidRange\" ||\n err?.code === \"InvalidRange\"\n );\n}\n\n/**\n * Azure Blob Storage.\n *\n * `@azure/storage-blob` is an optional peer dependency, loaded on first use, so\n * apps that do not use Azure never install it.\n */\nexport class AzureBlobDriver extends FileStorageDriver {\n private serviceClientPromise: Promise<BlobServiceClientLike> | null = null;\n\n constructor(private config: AzureBlobDriverConfig = {}) {\n super();\n }\n\n private async serviceClient(): Promise<BlobServiceClientLike> {\n if (this.config.serviceClient) {\n return this.config.serviceClient;\n }\n\n // Memoized so concurrent requests share one client, and one import.\n this.serviceClientPromise ??= (async () => {\n let sdk: any;\n try {\n // @ts-ignore - optional peer dependency, absent unless the app installs it\n sdk = await import(\"@azure/storage-blob\");\n } catch {\n throw new Error(\n \"AzureBlobDriver requires the '@azure/storage-blob' package. Install it with `bun add @azure/storage-blob`, or pass a pre-built `serviceClient`.\",\n );\n }\n\n const connectionString =\n this.config.connectionString ??\n process.env.AZURE_STORAGE_CONNECTION_STRING;\n\n if (this.config.url) {\n return new sdk.BlobServiceClient(this.config.url, this.config.credential);\n }\n if (connectionString) {\n return sdk.BlobServiceClient.fromConnectionString(connectionString);\n }\n throw new Error(\n \"AzureBlobDriver needs a connection string (AZURE_STORAGE_CONNECTION_STRING), a `url`, or a `serviceClient`.\",\n );\n })();\n\n return this.serviceClientPromise;\n }\n\n private async blob(name: string, container?: string) {\n if (!name) {\n throw new Error(\"Object name has to be specified\");\n }\n const containerName =\n container ?? this.config.container ?? process.env.BUCKET_NAME;\n if (!containerName) {\n throw new Error(\n \"AzureBlobDriver needs a container name, from `bucket`, the `container` config, or BUCKET_NAME.\",\n );\n }\n const service = await this.serviceClient();\n return service.getContainerClient(containerName).getBlockBlobClient(name);\n }\n\n async put(params: PutFileParams | Blob, { signal }: PutFileOptions = {}) {\n signal?.throwIfAborted();\n\n let body: Blob | File | Buffer;\n let contentType: string | undefined;\n let name: string;\n let container: string | undefined;\n\n if (params instanceof Blob) {\n body = params;\n name = `${Bun.randomUUIDv7()}.${params.type.split(\"/\")[1].split(\";\")[0]}`;\n contentType = params.type;\n } else {\n body = params.body;\n name = params.name;\n container = params.bucket;\n // An explicit contentType wins; otherwise fall back to the blob's own.\n contentType =\n params.contentType ??\n (body instanceof Blob || body instanceof File ? body.type : undefined);\n }\n\n const data =\n body instanceof Buffer\n ? body\n : Buffer.from(await (body as Blob).arrayBuffer());\n\n const blob = await this.blob(name, container);\n // Checked again here: reading the body and loading the SDK both await.\n signal?.throwIfAborted();\n await blob.uploadData(data, {\n blobHTTPHeaders: contentType ? { blobContentType: contentType } : undefined,\n abortSignal: signal,\n });\n\n return name;\n }\n\n /**\n * `listBlobsFlat` pages under the hood (5000 blobs per request) and is\n * already recursive, so this only reshapes each blob. `deletePrefix()` uses\n * the base default: one `delete()` per blob.\n */\n async *objects(\n prefix: string,\n { bucket, signal }: ListObjectsOptions = {},\n ): AsyncIterable<StoredObject> {\n signal?.throwIfAborted();\n const containerName = bucket ?? this.config.container ?? process.env.BUCKET_NAME;\n if (!containerName) {\n throw new Error(\n \"AzureBlobDriver needs a container name, from `bucket`, the `container` config, or BUCKET_NAME.\",\n );\n }\n const service = await this.serviceClient();\n const container = service.getContainerClient(containerName);\n for await (const blob of container.listBlobsFlat({ prefix })) {\n signal?.throwIfAborted();\n yield {\n name: blob.name,\n size: blob.properties?.contentLength ?? 0,\n lastModified: blob.properties?.lastModified ?? new Date(0),\n };\n }\n }\n\n /** @deprecated Returns names only. Use `objects(prefix)`. */\n async list(folder: string) {\n const containerName = this.config.container ?? process.env.BUCKET_NAME;\n const service = await this.serviceClient();\n const container = service.getContainerClient(containerName!);\n\n const names: string[] = [];\n for await (const blob of container.listBlobsFlat({ prefix: folder })) {\n names.push(blob.name);\n }\n return names;\n }\n\n async fetch(\n params: ReadFileParams | string,\n { signal }: FetchFileOptions = {},\n ) {\n signal?.throwIfAborted();\n\n const result = await this.download(\n typeof params === \"string\"\n ? { name: params }\n : { name: params.name, bucket: params.bucket },\n signal,\n );\n\n return new Response(result.body as BodyInit, {\n headers: {\n \"Content-Type\": result.type,\n \"Content-Length\": String(result.total),\n \"Cache-Control\": \"private, max-age=12000, must-revalidate\",\n \"Last-Modified\": result.lastModified?.toUTCString() ?? \"\",\n ETag: result.etag ?? \"\",\n },\n });\n }\n\n async read(input: ReadFileParams | string): Promise<ReadResult> {\n return this.download(typeof input === \"string\" ? { name: input } : input);\n }\n\n /** `read()`, plus the signal that `fetch()` takes. */\n private async download(\n params: ReadFileParams,\n signal?: AbortSignal,\n ): Promise<ReadResult> {\n const { name, bucket, range = null } = params;\n\n const blob = await this.blob(name, bucket);\n // Checked again: resolving the client may have loaded the SDK.\n signal?.throwIfAborted();\n\n // Azure's `download()` takes an absolute offset rather than a Range header,\n // and only emits one when the offset is non-zero or a count is given. Two\n // shapes therefore have to be resolved against the size first, at the cost\n // of a second round trip:\n //\n // - `bytes=-N`, which Azure cannot express at all; and\n // - `bytes=0-`, because `download(0, undefined)` is byte-identical to an\n // unranged read, so Azure answers 200 with no Content-Range and the\n // result comes back non-partial. That is the *first* range a <video>\n // sends, so getting it wrong silently breaks seeking.\n //\n // `bytes=S-` and `bytes=S-E` go straight to the download and read the total\n // back off its Content-Range.\n let offset: number | undefined;\n let count: number | undefined;\n\n const needsResolvedLength =\n range?.kind === \"suffix\" ||\n (range?.kind === \"offset\" && range.end === null && range.start === 0);\n\n if (range && needsResolvedLength) {\n const total = await this.size({ name, bucket });\n const resolved = resolveRange(range, total);\n if (!resolved) {\n throw new RangeNotSatisfiableError(total);\n }\n offset = resolved.start;\n count = resolved.length;\n } else if (range?.kind === \"offset\") {\n offset = range.start;\n count = range.end === null ? undefined : range.end - range.start + 1;\n }\n\n let result: Awaited<ReturnType<BlobClientLike[\"download\"]>>;\n try {\n result = await blob.download(\n offset,\n count,\n signal ? { abortSignal: signal } : undefined,\n );\n } catch (err: any) {\n if (isInvalidRange(err)) {\n throw new RangeNotSatisfiableError(await this.size({ name, bucket }));\n }\n if (isNotFound(err)) {\n throw new FileNotFoundError(name);\n }\n throw err;\n }\n\n // Azure reports the authoritative total in Content-Range on a ranged read.\n const contentRange = parseContentRange(result.contentRange);\n const partial = Boolean(contentRange);\n const total = contentRange?.total ?? result.contentLength ?? 0;\n\n let body = await toBody(result);\n if (body instanceof ReadableStream) {\n body = abortableBody(body, signal);\n }\n // An abort the SDK let through, or one that landed while the browser\n // build buffered the blob: the wrapper has cancelled any stream already.\n signal?.throwIfAborted();\n\n return {\n body,\n start: contentRange?.start ?? 0,\n end: contentRange?.end ?? total - 1,\n total,\n partial,\n type: result.contentType ?? \"application/octet-stream\",\n etag: result.etag || undefined,\n lastModified: result.lastModified,\n name,\n };\n }\n\n async size(params: ReadFileParams | string) {\n const name = typeof params === \"string\" ? params : params.name;\n const bucket = typeof params === \"string\" ? undefined : params.bucket;\n\n const blob = await this.blob(name, bucket);\n try {\n const properties = await blob.getProperties();\n return properties.contentLength ?? 0;\n } catch (err: any) {\n if (isNotFound(err)) {\n throw new FileNotFoundError(name);\n }\n throw err;\n }\n }\n\n async delete(params: DeleteFileParams | string) {\n const name = typeof params === \"string\" ? params : params.name;\n const bucket = typeof params === \"string\" ? undefined : params.bucket;\n\n const blob = await this.blob(name, bucket);\n try {\n await blob.delete();\n } catch (err: any) {\n // Already gone is the outcome the caller asked for.\n if (isNotFound(err)) {\n return;\n }\n throw err;\n }\n }\n}\n\n/**\n * Azure hands back a Node stream under Bun and a `Blob` in the browser bundle.\n * A Blob is returned as-is rather than as a stream: Bun keeps an explicit\n * Content-Length for a sized body but falls back to chunked for a stream.\n */\nasync function toBody(result: {\n readableStreamBody?: NodeJS.ReadableStream;\n blobBody?: Promise<Blob>;\n}): Promise<ReadResult[\"body\"]> {\n if (result.blobBody) {\n return await result.blobBody;\n }\n if (result.readableStreamBody) {\n return Readable.toWeb(\n result.readableStreamBody as Readable,\n ) as unknown as ReadableStream<Uint8Array>;\n }\n return null;\n}\n",
7
7
  "// Config key: `encryption`. Read by `EncryptionServiceProvider`.\nexport interface EncryptionConfig {\n /**\n * Every key that may have encrypted a value, by id. A key is 32 random\n * bytes, base64 encoded (`openssl rand -base64 32`); a `base64:` prefix is\n * accepted and ignored.\n *\n * The id is written into every value encrypted with the key, so it is how a\n * value finds its key again after a rotation. Ids are short names you choose\n * (`k1`, `2026-10`), made of letters, digits, `_` and `-`. Never reuse an id\n * for a different key: values written under the old one would stop\n * decrypting.\n *\n * Keep an old key here until `gemi run encryption:rotate` has re-encrypted\n * everything it wrote. A key removed early makes those values unreadable.\n */\n keys?: Record<string, string | undefined>;\n\n /**\n * The id of the key new values are encrypted with. Must name an entry in\n * `keys`. May be omitted when there is exactly one key.\n */\n current?: string;\n}\n\n/**\n * Identity helper for `app/config/encryption.ts`:\n *\n * ```ts\n * import { defineEncryptionConfig } from \"gemi/services\";\n *\n * export default defineEncryptionConfig({\n * keys: { k1: process.env.APP_ENCRYPTION_KEY },\n * current: \"k1\",\n * });\n * ```\n */\nexport function defineEncryptionConfig(config: EncryptionConfig): EncryptionConfig {\n return config;\n}\n",
8
- "import { app } from \"../../../foundation/app\";\nimport { buildResult, windowStartFor } from \"../slidingWindow\";\nimport type { ConsumeParams, RateLimitResult } from \"../types\";\nimport { RateLimiterDriver } from \"./RateLimiterDriver\";\nimport { RedisManager } from \"../../redis/RedisManager\";\n\n/**\n * The slice of Bun's `RedisClient` this driver needs. Narrow on purpose: any\n * client exposing `send(command, args)` works, which keeps the driver testable\n * without a live server.\n */\nexport interface RateLimiterRedisClient {\n send(command: string, args: string[]): Promise<any>;\n}\n\nexport interface RedisRateLimiterOptions {\n /**\n * Client to run against. Defaults to the app's shared client from\n * `RedisServiceProvider`, resolved lazily so constructing the driver never\n * requires a kernel or a connection.\n */\n client?: RateLimiterRedisClient;\n /** Key namespace. Defaults to `gemi:rl`. */\n prefix?: string;\n /**\n * What to do when Redis is unreachable. `true` (the default) admits the\n * request — a limiter outage should not take the site down with it. Set\n * `false` for endpoints where an unmetered request is worse than a rejected\n * one (payments, sign-up, anything that costs money per call).\n */\n failOpen?: boolean;\n /**\n * How long one `consume` may wait for Redis, in ms, before it gives up and\n * follows `failOpen`. Default `250`. Without it, a request waits as long as\n * the client does: up to the connect timeout and the reconnect loop (10 to\n * 30 s) while Redis is down, and with no limit when Redis stops answering on\n * an open connection. `0` turns it off.\n */\n timeout?: number;\n /** Called with every Redis failure. Defaults to `console.error`. */\n onError?: (error: unknown) => void;\n}\n\n/** What `onError` gets when a `consume` ran past `timeout`. */\nexport class RedisRateLimiterTimeoutError extends Error {\n readonly code = \"ERR_RATE_LIMITER_TIMEOUT\";\n\n constructor(timeout: number) {\n super(`RedisRateLimiter: Redis did not answer within ${timeout}ms.`);\n this.name = \"RedisRateLimiterTimeoutError\";\n }\n}\n\n/**\n * The counters and the decision have to move together — a GET, a check, then an\n * INCR from the app would let concurrent requests read the same count and all\n * conclude they fit. This script does the whole sliding-window step inside\n * Redis, which is single-threaded, so the read-decide-write is atomic.\n *\n * Only integers cross the boundary: Lua converts numbers to integers on the way\n * out, so the weighted (fractional) usage stays inside the script and the JS\n * side rebuilds the result from the raw counts.\n */\nconst CONSUME_SCRIPT = `\nlocal currentKey = KEYS[1]\nlocal previousKey = KEYS[2]\nlocal limit = tonumber(ARGV[1])\nlocal window = tonumber(ARGV[2])\nlocal elapsed = tonumber(ARGV[3])\nlocal cost = tonumber(ARGV[4])\n\nlocal current = tonumber(redis.call(\"GET\", currentKey)) or 0\nlocal previous = tonumber(redis.call(\"GET\", previousKey)) or 0\n\nlocal weight = (window - elapsed) / window\nif weight < 0 then weight = 0 end\nif weight > 1 then weight = 1 end\n\nlocal usage = previous * weight + current\n\nif usage + cost > limit then\n return {0, current, previous}\nend\n\ncurrent = redis.call(\"INCRBY\", currentKey, cost)\n-- Two windows of lifetime: the key still has to be readable as \"previous\"\n-- while the next window is running.\nredis.call(\"PEXPIRE\", currentKey, window * 2)\n\nreturn {1, current, previous}\n`;\n\n/**\n * Rate limiter backed by Redis, so every instance of the app counts against the\n * same budget. Use it as soon as you run more than one process.\n *\n * ```ts\n * // app/config/ratelimiter.ts\n * import { defineRateLimiterConfig, RedisRateLimiter } from \"gemi/services\";\n *\n * export default defineRateLimiterConfig({\n * driver: new RedisRateLimiter(),\n * });\n * ```\n *\n * Window boundaries come from the app server's clock, not Redis's, so keep\n * instances on NTP. A few seconds of skew only shifts where a window starts; it\n * cannot double a budget the way an unsynchronised fixed window would.\n */\nexport class RedisRateLimiter extends RateLimiterDriver {\n private injectedClient?: RateLimiterRedisClient;\n private prefix: string;\n private failOpen: boolean;\n private timeout: number;\n private onError: (error: unknown) => void;\n\n /** Cached `SCRIPT LOAD` result, so the script body is sent at most once. */\n private scriptSha: Promise<string> | null = null;\n\n constructor(options: RedisRateLimiterOptions = {}) {\n super();\n this.injectedClient = options.client;\n this.prefix = options.prefix ?? \"gemi:rl\";\n this.failOpen = options.failOpen ?? true;\n this.timeout = options.timeout ?? 250;\n this.onError = options.onError ?? ((error) => console.error(error));\n }\n\n async consume(params: ConsumeParams): Promise<RateLimitResult> {\n const { key, limit, window } = params;\n const cost = params.cost ?? 1;\n const now = Date.now();\n const windowStart = windowStartFor(now, window);\n const elapsed = now - windowStart;\n const bucket = windowStart / window;\n\n try {\n const reply = await this.withTimeout(\n this.run(\n [\n `${this.prefix}:${key}:${bucket}`,\n `${this.prefix}:${key}:${bucket - 1}`,\n ],\n [String(limit), String(window), String(elapsed), String(cost)],\n ),\n );\n\n const [allowed, current, previous] = (\n Array.isArray(reply) ? reply : []\n ).map(Number);\n\n return buildResult({\n allowed: allowed === 1,\n current: Number.isFinite(current) ? current : 0,\n previous: Number.isFinite(previous) ? previous : 0,\n now,\n elapsed,\n window,\n limit,\n cost,\n });\n } catch (error) {\n this.onError(error);\n\n if (!this.failOpen) {\n return {\n allowed: false,\n limit,\n remaining: 0,\n // Nothing was counted, so there is no decay to wait for — retrying is\n // worth it as soon as Redis is back.\n resetAt: now + window,\n retryAfter: window,\n };\n }\n\n return {\n allowed: true,\n limit,\n remaining: Math.max(0, Math.floor(limit - cost)),\n resetAt: windowStart + window,\n retryAfter: 0,\n };\n }\n }\n\n /**\n * Settles with `work`, or rejects with `RedisRateLimiterTimeoutError` once\n * `timeout` passes. The command itself is not cancelled (Redis may still run\n * the script, so a request that timed out can still be counted); its late\n * outcome is ignored.\n */\n private withTimeout<T>(work: Promise<T>): Promise<T> {\n if (!(this.timeout > 0) || !Number.isFinite(this.timeout)) return work;\n\n let timer: ReturnType<typeof setTimeout> | undefined;\n const timedOut = new Promise<never>((_, reject) => {\n timer = setTimeout(() => {\n // A `SCRIPT LOAD` stuck on a connection that stopped answering would\n // otherwise be awaited by every later call: drop it, the next call\n // loads again.\n this.scriptSha = null;\n reject(new RedisRateLimiterTimeoutError(this.timeout));\n }, this.timeout);\n });\n work.catch(() => {});\n\n return Promise.race([work, timedOut]).finally(() => clearTimeout(timer));\n }\n\n private get client(): RateLimiterRedisClient {\n if (this.injectedClient) return this.injectedClient;\n\n // `bound` first: an application can use this driver with an injected\n // client and never register `RedisServiceProvider`, and `make` on an\n // unbound token throws rather than returning undefined.\n //\n // This used to resolve through a hand-forged `{ token: \"redis\" }` cast to\n // avoid importing `RedisManager` at all, because that module imported Bun's\n // `RedisClient` as a *value* and would have made this driver unloadable off\n // Bun. #403 turned that into an `import type`, so the class can be named\n // here and the cast is gone with it.\n const container = app();\n const client = container.bound(RedisManager)\n ? container.make(RedisManager).client\n : undefined;\n\n if (!client) {\n throw new Error(\n \"RedisRateLimiter could not reach the Redis client. Register RedisServiceProvider on your application, or pass a client: new RedisRateLimiter({ client }).\",\n );\n }\n return client;\n }\n\n /** Runs the script by digest, loading it on first use and after a flush. */\n private async run(keys: string[], args: string[]): Promise<any> {\n const client = this.client;\n const argv = [String(keys.length), ...keys, ...args];\n\n try {\n return await client.send(\"EVALSHA\", [await this.load(client), ...argv]);\n } catch (error) {\n // The server restarted or someone ran SCRIPT FLUSH between our load and\n // this call. Re-load once and retry; a second failure is a real error.\n if (!isNoScriptError(error)) throw error;\n this.scriptSha = null;\n return await client.send(\"EVALSHA\", [await this.load(client), ...argv]);\n }\n }\n\n private load(client: RateLimiterRedisClient) {\n if (!this.scriptSha) {\n this.scriptSha = Promise.resolve(\n client.send(\"SCRIPT\", [\"LOAD\", CONSUME_SCRIPT]),\n )\n .then(String)\n .catch((error) => {\n // Never cache a rejection — the next request must be free to retry.\n this.scriptSha = null;\n throw error;\n });\n }\n return this.scriptSha;\n }\n}\n\nfunction isNoScriptError(error: unknown) {\n return String((error as Error)?.message ?? error).includes(\"NOSCRIPT\");\n}\n",
8
+ "import { app } from \"../../../foundation/app\";\nimport { buildResult, windowStartFor } from \"../slidingWindow\";\nimport type { ConsumeParams, RateLimitResult } from \"../types\";\nimport { InMemoryRateLimiter } from \"./InMemoryRateLimiterDriver\";\nimport { RateLimiterDriver } from \"./RateLimiterDriver\";\nimport { RedisManager } from \"../../redis/RedisManager\";\n\n/**\n * The slice of Bun's `RedisClient` this driver needs. Narrow on purpose: any\n * client exposing `send(command, args)` works, which keeps the driver testable\n * without a live server.\n */\nexport interface RateLimiterRedisClient {\n send(command: string, args: string[]): Promise<any>;\n /**\n * Bun's client says whether its connection is up. Optional: a client that\n * does not say is always sent to.\n */\n readonly connected?: boolean;\n}\n\n/**\n * How a call is answered when Redis cannot answer it:\n * - `\"memory\"`: counted by an in-process limiter (`fallback`), so each\n * instance enforces the limit on its own until Redis is back. The outage\n * costs precision (one budget per instance), never the limit.\n * - `\"open\"`: admitted, uncounted.\n * - `\"closed\"`: refused.\n */\nexport type RedisRateLimiterFailureMode = \"memory\" | \"open\" | \"closed\";\n\nexport interface RedisRateLimiterOptions {\n /**\n * Client to run against. Defaults to the app's shared client from\n * `RedisServiceProvider`, resolved lazily so constructing the driver never\n * requires a kernel or a connection.\n */\n client?: RateLimiterRedisClient;\n /** Key namespace. Defaults to `gemi:rl`. */\n prefix?: string;\n /**\n * What a call gets when Redis fails, times out or is known to be down.\n * Default `\"memory\"`: the call is counted by `fallback`, so a Redis outage\n * degrades every limit to a per-instance one instead of turning it off\n * (`\"open\"`) or locking everyone out (`\"closed\"`). See\n * {@link RedisRateLimiterFailureMode}.\n */\n onRedisError?: RedisRateLimiterFailureMode;\n /**\n * The limiter that counts while Redis is down, with `onRedisError:\n * \"memory\"`. Default: a new `InMemoryRateLimiter` for this driver.\n */\n fallback?: RateLimiterDriver;\n /**\n * @deprecated Use `onRedisError`. `true` is `\"open\"`, `false` is\n * `\"closed\"`. Ignored when `onRedisError` is set.\n */\n failOpen?: boolean;\n /**\n * How long one `consume` may wait for Redis, in ms, before it gives up and\n * is answered as `onRedisError` says. Default `250`. Without it, a request\n * waits as long as the client does: up to the connect timeout and the\n * reconnect loop (10 to 30 s) while Redis is down, and with no limit when\n * Redis stops answering on an open connection. `0` turns it off.\n */\n timeout?: number;\n /**\n * Called with every Redis failure: a command that failed or timed out, and\n * each failed check (at most one a second) of whether Redis is back. By\n * default a line goes to `console.error`, at most once a minute, saying how\n * many calls were answered without Redis since the last one.\n */\n onError?: (error: unknown) => void;\n}\n\n/** What `onError` gets when a `consume` ran past `timeout`. */\nexport class RedisRateLimiterTimeoutError extends Error {\n readonly code = \"ERR_RATE_LIMITER_TIMEOUT\";\n\n constructor(timeout: number) {\n super(`RedisRateLimiter: Redis did not answer within ${timeout}ms.`);\n this.name = \"RedisRateLimiterTimeoutError\";\n }\n}\n\n/**\n * What `onError` gets when the client says its connection is down, so the\n * call was answered without sending anything to Redis.\n */\nexport class RedisRateLimiterDisconnectedError extends Error {\n readonly code = \"ERR_RATE_LIMITER_DISCONNECTED\";\n\n constructor() {\n super(\"RedisRateLimiter: the Redis client is not connected.\");\n this.name = \"RedisRateLimiterDisconnectedError\";\n }\n}\n\n/** How often, at most, a down limiter checks whether Redis answers again. */\nconst PROBE_INTERVAL_MS = 1_000;\n/** How often, at most, the default `onError` writes a line. */\nconst LOG_INTERVAL_MS = 60_000;\n\n/**\n * The counters and the decision have to move together — a GET, a check, then an\n * INCR from the app would let concurrent requests read the same count and all\n * conclude they fit. This script does the whole sliding-window step inside\n * Redis, which is single-threaded, so the read-decide-write is atomic.\n *\n * Only integers cross the boundary: Lua converts numbers to integers on the way\n * out, so the weighted (fractional) usage stays inside the script and the JS\n * side rebuilds the result from the raw counts.\n */\nconst CONSUME_SCRIPT = `\nlocal currentKey = KEYS[1]\nlocal previousKey = KEYS[2]\nlocal limit = tonumber(ARGV[1])\nlocal window = tonumber(ARGV[2])\nlocal elapsed = tonumber(ARGV[3])\nlocal cost = tonumber(ARGV[4])\n\nlocal current = tonumber(redis.call(\"GET\", currentKey)) or 0\nlocal previous = tonumber(redis.call(\"GET\", previousKey)) or 0\n\nlocal weight = (window - elapsed) / window\nif weight < 0 then weight = 0 end\nif weight > 1 then weight = 1 end\n\nlocal usage = previous * weight + current\n\nif usage + cost > limit then\n return {0, current, previous}\nend\n\ncurrent = redis.call(\"INCRBY\", currentKey, cost)\n-- Two windows of lifetime: the key still has to be readable as \"previous\"\n-- while the next window is running.\nredis.call(\"PEXPIRE\", currentKey, window * 2)\n\nreturn {1, current, previous}\n`;\n\n/**\n * Rate limiter backed by Redis, so every instance of the app counts against the\n * same budget. Use it as soon as you run more than one process.\n *\n * ```ts\n * // app/config/ratelimiter.ts\n * import { defineRateLimiterConfig, RedisRateLimiter } from \"gemi/services\";\n *\n * export default defineRateLimiterConfig({\n * driver: new RedisRateLimiter(),\n * });\n * ```\n *\n * Window boundaries come from the app server's clock, not Redis's, so keep\n * instances on NTP. A few seconds of skew only shifts where a window starts; it\n * cannot double a budget the way an unsynchronised fixed window would.\n *\n * ## When Redis fails\n *\n * A call that fails or times out is answered as `onRedisError` says (by\n * default, counted in memory), and the limiter then stops sending its script\n * until Redis answers again. While it is down, each call is answered at once\n * without touching Redis, and at most once a second one of them sends a `PING`\n * in the background (none while the client says it is disconnected); the first `PING` that answers puts the limiter back on\n * Redis.\n *\n * Not sending is what keeps an outage from being counted twice. Bun's client\n * queues the commands it is given while disconnected and runs them once it\n * reconnects, and a connection that stopped answering (a paused or partitioned\n * Redis) delivers what was written to it once it answers again. Either way the\n * increments of calls that were already answered from memory would land in\n * Redis on recovery, and every caller of the outage would start the next\n * window over budget. A `PING` is harmless to run late. What can still land\n * late is the few calls sent before the first failure was seen: at most\n * `timeout` worth of traffic.\n */\nexport class RedisRateLimiter extends RateLimiterDriver {\n private injectedClient?: RateLimiterRedisClient;\n private prefix: string;\n private mode: RedisRateLimiterFailureMode;\n private fallback: RateLimiterDriver;\n private timeout: number;\n private onError?: (error: unknown) => void;\n\n /** Cached `SCRIPT LOAD` result, so the script body is sent at most once. */\n private scriptSha: Promise<string> | null = null;\n\n /** Set by a failure; cleared by the first `PING` that answers. */\n private down = false;\n private probing = false;\n private lastProbeAt = 0;\n /**\n * Clients seen connected. A client that says it is not connected is skipped\n * only once it has been seen connected: a new one is still making its first\n * connection, and its first commands wait for it (bounded by `timeout`).\n */\n private seenConnected = new WeakSet<object>();\n\n /** For the default `onError`: when it last wrote, and what it left out since. */\n private loggedAt = -Infinity;\n private failuresSinceLog = 0;\n private fallbacksSinceLog = 0;\n\n constructor(options: RedisRateLimiterOptions = {}) {\n super();\n this.injectedClient = options.client;\n this.prefix = options.prefix ?? \"gemi:rl\";\n this.mode =\n options.onRedisError ??\n (options.failOpen === undefined\n ? \"memory\"\n : options.failOpen\n ? \"open\"\n : \"closed\");\n this.fallback = options.fallback ?? new InMemoryRateLimiter();\n this.timeout = options.timeout ?? 250;\n this.onError = options.onError;\n }\n\n async consume(params: ConsumeParams): Promise<RateLimitResult> {\n const { key, limit, window } = params;\n const cost = params.cost ?? 1;\n const now = Date.now();\n const windowStart = windowStartFor(now, window);\n const elapsed = now - windowStart;\n const bucket = windowStart / window;\n\n if (this.down) {\n this.probe();\n return this.degrade(params, now);\n }\n\n try {\n const client = this.client;\n if (client.connected === false && this.seenConnected.has(client)) {\n throw new RedisRateLimiterDisconnectedError();\n }\n\n const reply = await this.withTimeout(\n this.run(\n client,\n [\n `${this.prefix}:${key}:${bucket}`,\n `${this.prefix}:${key}:${bucket - 1}`,\n ],\n [String(limit), String(window), String(elapsed), String(cost)],\n ),\n () => {\n // A `SCRIPT LOAD` stuck on a connection that stopped answering would\n // otherwise be awaited by every later call: drop it, the next call\n // loads again.\n this.scriptSha = null;\n },\n );\n if (client.connected === true) this.seenConnected.add(client);\n\n const [allowed, current, previous] = (\n Array.isArray(reply) ? reply : []\n ).map(Number);\n\n return buildResult({\n allowed: allowed === 1,\n current: Number.isFinite(current) ? current : 0,\n previous: Number.isFinite(previous) ? previous : 0,\n now,\n elapsed,\n window,\n limit,\n cost,\n });\n } catch (error) {\n if (!this.down) {\n this.down = true;\n this.lastProbeAt = Date.now();\n }\n this.report(error);\n return this.degrade(params, now);\n }\n }\n\n /** Answers a call Redis could not, as `onRedisError` says. */\n private async degrade(\n params: ConsumeParams,\n now: number,\n ): Promise<RateLimitResult> {\n const { limit, window } = params;\n const cost = params.cost ?? 1;\n this.fallbacksSinceLog += 1;\n\n if (this.mode === \"memory\") {\n return await this.fallback.consume(params);\n }\n\n if (this.mode === \"closed\") {\n return {\n allowed: false,\n limit,\n remaining: 0,\n // Nothing was counted, so there is no decay to wait for — retrying is\n // worth it as soon as Redis is back.\n resetAt: now + window,\n retryAfter: window,\n };\n }\n\n return {\n allowed: true,\n limit,\n remaining: Math.max(0, Math.floor(limit - cost)),\n resetAt: windowStartFor(now, window) + window,\n retryAfter: 0,\n };\n }\n\n /**\n * While down: sends a `PING`, at most one at a time and one a second, and\n * puts the limiter back on Redis once one answers. Never awaited by the call\n * that starts it, so that call is not slowed down.\n */\n private probe() {\n const now = Date.now();\n if (this.probing || now - this.lastProbeAt < PROBE_INTERVAL_MS) return;\n this.probing = true;\n this.lastProbeAt = now;\n\n const ping = async () => {\n const client = this.client;\n // Nothing to learn from a client that says it is down, and a command\n // queued on it is one more for Bun to deliver on reconnect: wait until\n // it says it is back. A client never seen connected is still sent to,\n // as the command is what makes a lazy client connect.\n if (client.connected === false && this.seenConnected.has(client)) {\n throw new RedisRateLimiterDisconnectedError();\n }\n await this.withTimeout(\n client.send(\"PING\", []),\n undefined,\n this.timeout > 0 ? this.timeout : PROBE_INTERVAL_MS,\n );\n if (client.connected === true) this.seenConnected.add(client);\n };\n\n ping().then(\n () => {\n this.probing = false;\n this.down = false;\n if (!this.onError) this.logRecovery();\n },\n (error) => {\n this.probing = false;\n try {\n this.report(error);\n } catch {\n // Nobody awaits the probe: an `onError` that throws has no caller to\n // reach, and must not become an unhandled rejection.\n }\n },\n );\n }\n\n private report(error: unknown) {\n if (this.onError) {\n this.onError(error);\n return;\n }\n\n this.failuresSinceLog += 1;\n const now = Date.now();\n if (now - this.loggedAt < LOG_INTERVAL_MS) return;\n\n const answered =\n this.mode === \"memory\"\n ? \"counting in memory\"\n : this.mode === \"open\"\n ? \"admitting every request\"\n : \"refusing every request\";\n const since =\n this.loggedAt === -Infinity\n ? \"\"\n : ` Since the last report: ${this.failuresSinceLog} failures, ${this.fallbacksSinceLog} calls answered without Redis.`;\n console.error(\n `[gemi] RedisRateLimiter: Redis failed, ${answered} until it answers again.${since}`,\n error,\n );\n this.loggedAt = now;\n this.failuresSinceLog = 0;\n this.fallbacksSinceLog = 0;\n }\n\n private logRecovery() {\n console.info(\n `[gemi] RedisRateLimiter: Redis answers again; counting in Redis (${this.fallbacksSinceLog} calls answered without it since the last report).`,\n );\n // The next outage is reported at once.\n this.loggedAt = -Infinity;\n this.failuresSinceLog = 0;\n this.fallbacksSinceLog = 0;\n }\n\n /**\n * Settles with `work`, or rejects with `RedisRateLimiterTimeoutError` once\n * `ms` passes. The command itself is not cancelled (Redis may still run the\n * script, so a request that timed out can still be counted); its late\n * outcome is ignored.\n */\n private withTimeout<T>(\n work: Promise<T>,\n onTimeout?: () => void,\n ms: number = this.timeout,\n ): Promise<T> {\n if (!(ms > 0) || !Number.isFinite(ms)) return work;\n\n let timer: ReturnType<typeof setTimeout> | undefined;\n const timedOut = new Promise<never>((_, reject) => {\n timer = setTimeout(() => {\n onTimeout?.();\n reject(new RedisRateLimiterTimeoutError(ms));\n }, ms);\n });\n work.catch(() => {});\n\n return Promise.race([work, timedOut]).finally(() => clearTimeout(timer));\n }\n\n private get client(): RateLimiterRedisClient {\n if (this.injectedClient) return this.injectedClient;\n\n // `bound` first: an application can use this driver with an injected\n // client and never register `RedisServiceProvider`, and `make` on an\n // unbound token throws rather than returning undefined.\n //\n // This used to resolve through a hand-forged `{ token: \"redis\" }` cast to\n // avoid importing `RedisManager` at all, because that module imported Bun's\n // `RedisClient` as a *value* and would have made this driver unloadable off\n // Bun. #403 turned that into an `import type`, so the class can be named\n // here and the cast is gone with it.\n const container = app();\n const client = container.bound(RedisManager)\n ? container.make(RedisManager).client\n : undefined;\n\n if (!client) {\n throw new Error(\n \"RedisRateLimiter could not reach the Redis client. Register RedisServiceProvider on your application, or pass a client: new RedisRateLimiter({ client }).\",\n );\n }\n return client;\n }\n\n /** Runs the script by digest, loading it on first use and after a flush. */\n private async run(\n client: RateLimiterRedisClient,\n keys: string[],\n args: string[],\n ): Promise<any> {\n const argv = [String(keys.length), ...keys, ...args];\n\n try {\n return await client.send(\"EVALSHA\", [await this.load(client), ...argv]);\n } catch (error) {\n // The server restarted or someone ran SCRIPT FLUSH between our load and\n // this call. Re-load once and retry; a second failure is a real error.\n if (!isNoScriptError(error)) throw error;\n this.scriptSha = null;\n return await client.send(\"EVALSHA\", [await this.load(client), ...argv]);\n }\n }\n\n private load(client: RateLimiterRedisClient) {\n if (!this.scriptSha) {\n this.scriptSha = Promise.resolve(\n client.send(\"SCRIPT\", [\"LOAD\", CONSUME_SCRIPT]),\n )\n .then(String)\n .catch((error) => {\n // Never cache a rejection — the next request must be free to retry.\n this.scriptSha = null;\n throw error;\n });\n }\n return this.scriptSha;\n }\n}\n\nfunction isNoScriptError(error: unknown) {\n return String((error as Error)?.message ?? error).includes(\"NOSCRIPT\");\n}\n",
9
9
  "import { createHash, randomBytes, timingSafeEqual } from \"node:crypto\";\n\nimport { AuthManager } from \"../../../../auth/AuthManager\";\nimport { sessionUser } from \"../../../../auth/accessToken\";\nimport type { User } from \"../../../../auth/types\";\nimport { app } from \"../../../../foundation/app\";\nimport { HttpRequest } from \"../../../../http/HttpRequest\";\nimport { clientIp } from \"../../../../http/RateLimitMiddleware\";\nimport { bearerToken, type McpCallerResolver, type McpResolution, type McpResolveContext } from \"../callers\";\nimport { overBudget, type Budget } from \"../limits\";\nimport { sign, verify } from \"../signedState\";\nimport { CONSENT_PAGE_HEADERS, consentPage, errorPage } from \"./consentPage\";\nimport type {\n McpOAuthClient,\n McpOAuthStore,\n McpOAuthToken,\n McpOAuthTokenEndpointAuthMethod,\n} from \"./store\";\n\nexport type McpOAuthServerOptions = {\n /** Where clients, codes and tokens are kept. `MemoryMcpOAuthStore` for one process; a database for more. */\n store: McpOAuthStore;\n /**\n * Loads the user a token was issued to, by the id it was issued under\n * (`String(user.id)`), on every request: a deleted user's tokens stop\n * working, and routes see the user as they are now. Answer the same shape a\n * signed-in request's `req.ctx().user` has.\n */\n findUser(id: string): Promise<User | null>;\n /**\n * The app's own consent page: a view (behind `auth`) that the browser is\n * sent to as `<consentPath>?request=…`. It calls `consent(request, user)`\n * and renders what that answers — the client, the scopes, and a form to\n * post. Without it gemi serves a plain page of its own.\n */\n consentPath?: string;\n /** Where a signed-out user is sent from gemi's own consent page. Default: `auth.signInPath`. */\n signInPath?: string;\n /** The app's name on gemi's own consent page. Default: the endpoint's host. */\n appName?: string;\n /** How the signed-in user is named on the consent page. Default: email, name, or id. */\n userLabel?(user: User): string;\n /** Access token lifetime, in seconds. Default one hour. */\n accessTokenTtl?: number;\n /** Refresh token lifetime, in seconds; each refresh rotates it. Default 30 days. */\n refreshTokenTtl?: number;\n /**\n * Dynamic client registration (RFC 7591), which is how MCP clients\n * (Claude, the Inspector) register themselves. On by default; `false`\n * turns the endpoint off, for an app that registers its clients itself.\n */\n registration?:\n | false\n | {\n /** Registrations per client address. Default 20 an hour. */\n rateLimit?: Budget;\n /**\n * Narrows which redirect URIs a client may register, beyond gemi's\n * own rule (https, or http on a loopback address). Answer `false` to\n * refuse one — to allow only the clients you know, say.\n */\n allowRedirectUri?(uri: URL): boolean;\n };\n};\n\n/** What the consent page shows and posts, from `McpOAuthServer.consent`. */\nexport type McpConsent = {\n client: {\n id: string;\n /** What the client calls itself. Unverified: show it as such. */\n name: string | null;\n /** The host the user will be sent to after deciding — the one fact about the client that is verified. */\n redirectHost: string;\n };\n scopes: { name: string; description: string }[];\n user: { id: string; label: string };\n /** The form to render: post `fields` and `decision=allow` or `decision=deny` to `action`. */\n form: { action: string; method: \"POST\"; fields: { request: string; csrf: string } };\n};\n\nconst ACCESS_PREFIX = \"gmcp_at_\";\nconst REFRESH_PREFIX = \"gmcp_rt_\";\nconst CODE_PREFIX = \"gmcp_ac_\";\nconst CLIENT_PREFIX = \"gmcp_c_\";\nconst SECRET_PREFIX = \"gmcp_cs_\";\n\nconst TICKET = \"gemi.mcp.oauth.ticket.v1\";\nconst CSRF = \"gemi.mcp.oauth.consent.v1\";\nconst TICKET_TTL = 10 * 60 * 1000;\nconst CODE_TTL = 2 * 60 * 1000;\nconst MAX_FORM_BYTES = 16 * 1024;\nconst DEFAULT_REGISTRATION_BUDGET: Budget = { limit: 20, window: 60 * 60 };\nconst TOKEN_BUDGET: Budget = { limit: 60, window: 60 };\nconst AUTH_METHODS: readonly McpOAuthTokenEndpointAuthMethod[] = [\"none\", \"client_secret_post\", \"client_secret_basic\"];\n\n/** An authorization request, signed and handed to the browser between `authorize` and the decision. */\ntype Ticket = {\n c: string;\n r: string;\n s: string[];\n cc: string;\n st: string | null;\n n: string;\n exp: number;\n};\n\ntype ConsentToken = { t: string; u: string; exp: number };\n\nclass OAuthError extends Error {\n constructor(\n readonly error: string,\n readonly description: string,\n readonly status = 400,\n readonly headers: Record<string, string> = {},\n ) {\n super(description);\n }\n}\n\n/**\n * An OAuth 2.1 authorization server for the MCP endpoint, and the resolver\n * for the tokens it issues: what lets a hosted MCP client (Claude.ai's\n * connectors) act for a user who signed in and agreed (#762).\n *\n * - Discovery: protected resource metadata (RFC 9728) and authorization\n * server metadata (RFC 8414). `WWW-Authenticate` on a 401 points at them.\n * - Dynamic client registration (RFC 7591).\n * - Authorization code with PKCE (S256 only), consent by the signed-in user\n * on a page that cannot be framed, with a CSRF token bound to the request\n * and the user, `iss` in the response (RFC 9207).\n * - Tokens are opaque, stored hashed, and bound to the endpoint as their\n * audience (RFC 8707). Refresh tokens rotate; a replayed one, like a\n * replayed code, revokes the whole grant. Revocation (RFC 7009).\n *\n * The endpoints live under the MCP endpoint's path (`/mcp/oauth/…`) and the\n * metadata at the origin's `/.well-known/…`, all on the configured host\n * only.\n */\nexport class McpOAuthServer implements McpCallerResolver {\n readonly name = \"oauth\";\n private context!: McpResolveContext;\n private issuer!: string;\n private base!: string;\n private readonly accessTtl: number;\n private readonly refreshTtl: number;\n\n constructor(private readonly options: McpOAuthServerOptions) {\n const store = options?.store;\n for (const method of [\"createClient\", \"findClient\", \"saveCode\", \"findCode\", \"saveToken\", \"findToken\", \"use\", \"revokeFamily\"] as const) {\n if (typeof store?.[method] !== \"function\") {\n throw new Error(`McpOAuthServer: store.${method} is missing. Use MemoryMcpOAuthStore, or implement McpOAuthStore.`);\n }\n }\n if (typeof options.findUser !== \"function\") {\n throw new Error(\"McpOAuthServer: findUser(id) is required: it loads the user a token was issued to.\");\n }\n if (options.consentPath !== undefined && !/^\\/[^/\\\\]/.test(options.consentPath)) {\n throw new Error('McpOAuthServer: consentPath must be a path on this app, like \"/oauth/consent\".');\n }\n this.accessTtl = seconds(\"accessTokenTtl\", options.accessTokenTtl, 60 * 60);\n this.refreshTtl = seconds(\"refreshTokenTtl\", options.refreshTokenTtl, 30 * 24 * 60 * 60);\n }\n\n get store(): McpOAuthStore {\n return this.options.store;\n }\n\n boot(context: McpResolveContext) {\n this.context = context;\n const url = new URL(context.resource);\n this.issuer = url.origin;\n this.base = `${url.pathname}/oauth`;\n }\n\n // --- the resource server ---------------------------------------------------\n\n async resolve(req: Request): Promise<McpResolution | null> {\n const token = bearerToken(req);\n if (!token?.startsWith(ACCESS_PREFIX)) return null;\n const record = await this.store.findToken(hash(token));\n const invalid = (description: string) => ({ ok: false as const, error: \"invalid_token\" as const, description });\n if (!record || record.kind !== \"access\") return invalid(\"The access token is not valid.\");\n if (record.expiresAt <= Date.now()) return invalid(\"The access token expired.\");\n // Audience: a token issued for another resource — another app's MCP\n // endpoint sharing this store, or a later URL — is not accepted here.\n if (record.resource !== this.context.resource) return invalid(\"The access token was not issued for this server.\");\n const user = await this.options.findUser(record.userId);\n if (!user) return invalid(\"The access token is not valid.\");\n return {\n ok: true,\n principal: {\n user,\n via: this.name,\n id: record.familyId,\n scopes: record.scopes,\n clientId: record.clientId,\n },\n };\n }\n\n challenge(): string {\n const scopes = this.scopeNames().join(\" \");\n return `Bearer resource_metadata=\"${this.resourceMetadataUrl()}\", scope=\"${scopes}\"`;\n }\n\n // --- the authorization server's endpoints ---------------------------------\n\n async handle(req: Request): Promise<Response | null> {\n const path = new URL(req.url).pathname;\n const endpoint = new URL(this.context.resource).pathname;\n const routes: Record<string, { methods: string[]; cors: boolean; run: () => Promise<Response> | Response }> = {\n [`/.well-known/oauth-protected-resource${endpoint}`]: { methods: [\"GET\"], cors: true, run: () => this.resourceMetadata() },\n [\"/.well-known/oauth-protected-resource\"]: { methods: [\"GET\"], cors: true, run: () => this.resourceMetadata() },\n [\"/.well-known/oauth-authorization-server\"]: { methods: [\"GET\"], cors: true, run: () => this.serverMetadata() },\n [`${this.base}/register`]: { methods: [\"POST\"], cors: true, run: () => this.register(req) },\n [`${this.base}/authorize`]: { methods: [\"GET\"], cors: false, run: () => this.authorize(req) },\n [`${this.base}/consent`]: {\n methods: [\"GET\", \"POST\"],\n cors: false,\n run: () => (req.method === \"POST\" ? this.decide(req) : this.consentScreen(req)),\n },\n [`${this.base}/token`]: { methods: [\"POST\"], cors: true, run: () => this.token(req) },\n [`${this.base}/revoke`]: { methods: [\"POST\"], cors: true, run: () => this.revoke(req) },\n };\n const route = routes[path];\n if (!route) return null;\n if (path === `${this.base}/register` && this.options.registration === false) return null;\n\n // Discovery, registration and the token endpoint are called by browser\n // clients (the Inspector) too. None of them reads a cookie, so any\n // origin may: what they answer depends only on what is sent.\n const cors = route.cors ? CORS_ANY : {};\n if (req.method === \"OPTIONS\" && route.cors) {\n return new Response(null, {\n status: 204,\n headers: {\n ...cors,\n \"Access-Control-Allow-Methods\": route.methods.join(\", \"),\n \"Access-Control-Allow-Headers\": \"Authorization, Content-Type, MCP-Protocol-Version\",\n \"Access-Control-Max-Age\": \"600\",\n },\n });\n }\n if (!route.methods.includes(req.method)) {\n return new Response(null, { status: 405, headers: { ...cors, Allow: route.methods.join(\", \") } });\n }\n let response: Response;\n try {\n response = await route.run();\n } catch (error) {\n if (!(error instanceof OAuthError)) throw error;\n response = json({ error: error.error, error_description: error.description }, error.status, error.headers);\n }\n for (const [name, value] of Object.entries(cors)) response.headers.set(name, value);\n return response;\n }\n\n /**\n * The consent request a consent page was sent with, for the signed-in\n * `user`: what to show, and the form to post. `null` when the request is\n * not one this server made, has expired, or names a client that is gone —\n * render an error and offer no form.\n *\n * ```ts\n * // a view behind `auth`, at consentPath\n * const consent = await mcpOAuth.consent(req.search.get(\"request\"), req.ctx().user);\n * ```\n */\n async consent(request: unknown, user: User | null | undefined): Promise<McpConsent | null> {\n if (!user) return null;\n const ticket = verify<Ticket>(TICKET, \"gat1\", request);\n if (!ticket) return null;\n const client = await this.store.findClient(ticket.c);\n if (!client || !client.redirectUris.some((uri) => redirectMatches(uri, ticket.r))) return null;\n const userId = String(user.id);\n const csrf = sign(CSRF, \"gcs1\", { t: digest(request as string), u: userId, exp: ticket.exp } satisfies ConsentToken);\n const described = new Map(this.context.registry.scopes().map((scope) => [scope.name, scope.description]));\n return {\n client: { id: client.clientId, name: client.clientName, redirectHost: new URL(ticket.r).host },\n scopes: ticket.s.map((name) => ({ name, description: described.get(name) ?? name })),\n user: { id: userId, label: this.userLabel(user) },\n form: {\n action: `${this.issuer}${this.base}/consent`,\n method: \"POST\",\n fields: { request: request as string, csrf },\n },\n };\n }\n\n private resourceMetadata(): Response {\n return json({\n resource: this.context.resource,\n authorization_servers: [this.issuer],\n scopes_supported: this.scopeNames(),\n bearer_methods_supported: [\"header\"],\n });\n }\n\n private serverMetadata(): Response {\n return json({\n issuer: this.issuer,\n authorization_endpoint: `${this.issuer}${this.base}/authorize`,\n token_endpoint: `${this.issuer}${this.base}/token`,\n ...(this.options.registration === false ? {} : { registration_endpoint: `${this.issuer}${this.base}/register` }),\n revocation_endpoint: `${this.issuer}${this.base}/revoke`,\n scopes_supported: this.scopeNames(),\n response_types_supported: [\"code\"],\n response_modes_supported: [\"query\"],\n grant_types_supported: [\"authorization_code\", \"refresh_token\"],\n token_endpoint_auth_methods_supported: AUTH_METHODS,\n revocation_endpoint_auth_methods_supported: AUTH_METHODS,\n code_challenge_methods_supported: [\"S256\"],\n authorization_response_iss_parameter_supported: true,\n client_id_metadata_document_supported: false,\n });\n }\n\n // --- registration (RFC 7591) ----------------------------------------------\n\n private async register(req: Request): Promise<Response> {\n const registration = this.options.registration || {};\n const retryAfter = await overBudget(\n `mcp-oauth-register:${clientIp(new HttpRequest(req, {}, \"api\", `${this.base}/register`))}`,\n registration.rateLimit ?? DEFAULT_REGISTRATION_BUDGET,\n );\n if (retryAfter !== null) {\n throw new OAuthError(\"slow_down\", \"Too many registrations from this address.\", 429, { \"Retry-After\": String(retryAfter) });\n }\n if (!/^application\\/json\\s*(;|$)/i.test(req.headers.get(\"content-type\") ?? \"\")) {\n throw new OAuthError(\"invalid_client_metadata\", \"Send the client metadata as application/json.\");\n }\n let metadata: Record<string, unknown>;\n try {\n metadata = JSON.parse(await readLimited(req, MAX_FORM_BYTES));\n } catch {\n throw new OAuthError(\"invalid_client_metadata\", \"The client metadata is not JSON, or is too large.\");\n }\n if (typeof metadata !== \"object\" || metadata === null || Array.isArray(metadata)) {\n throw new OAuthError(\"invalid_client_metadata\", \"The client metadata must be a JSON object.\");\n }\n\n const redirectUris = metadata.redirect_uris;\n if (!Array.isArray(redirectUris) || redirectUris.length === 0 || redirectUris.length > 10) {\n throw new OAuthError(\"invalid_redirect_uri\", \"redirect_uris must list one to ten URIs.\");\n }\n for (const uri of redirectUris) {\n const problem = redirectUriProblem(uri);\n if (problem) throw new OAuthError(\"invalid_redirect_uri\", `${String(uri).slice(0, 200)}: ${problem}`);\n if (registration.allowRedirectUri && registration.allowRedirectUri(new URL(uri as string)) !== true) {\n throw new OAuthError(\"invalid_redirect_uri\", `${uri}: this server does not accept it.`);\n }\n }\n const method = (metadata.token_endpoint_auth_method ?? \"client_secret_basic\") as McpOAuthTokenEndpointAuthMethod;\n if (!AUTH_METHODS.includes(method)) {\n throw new OAuthError(\"invalid_client_metadata\", `token_endpoint_auth_method must be one of ${AUTH_METHODS.join(\", \")}.`);\n }\n const grantTypes = metadata.grant_types ?? [\"authorization_code\"];\n if (!Array.isArray(grantTypes) || grantTypes.some((type) => type !== \"authorization_code\" && type !== \"refresh_token\")) {\n throw new OAuthError(\"invalid_client_metadata\", \"grant_types may only be authorization_code and refresh_token.\");\n }\n const responseTypes = metadata.response_types ?? [\"code\"];\n if (!Array.isArray(responseTypes) || responseTypes.some((type) => type !== \"code\")) {\n throw new OAuthError(\"invalid_client_metadata\", \"response_types may only be code.\");\n }\n const clientName = optionalText(metadata.client_name, 100, \"client_name\");\n const clientUri = optionalText(metadata.client_uri, 512, \"client_uri\");\n if (clientUri !== null && !isHttpsUrl(clientUri)) {\n throw new OAuthError(\"invalid_client_metadata\", \"client_uri must be an https URL.\");\n }\n\n const secret = method === \"none\" ? null : `${SECRET_PREFIX}${randomBytes(32).toString(\"base64url\")}`;\n const client: McpOAuthClient = {\n clientId: `${CLIENT_PREFIX}${randomBytes(16).toString(\"base64url\")}`,\n clientSecretHash: secret ? hash(secret) : null,\n tokenEndpointAuthMethod: method,\n redirectUris: [...(redirectUris as string[])],\n clientName,\n clientUri,\n createdAt: Date.now(),\n };\n await this.store.createClient(client);\n return json(\n {\n client_id: client.clientId,\n client_id_issued_at: Math.floor(client.createdAt / 1000),\n ...(secret ? { client_secret: secret, client_secret_expires_at: 0 } : {}),\n redirect_uris: client.redirectUris,\n token_endpoint_auth_method: method,\n grant_types: grantTypes,\n response_types: responseTypes,\n ...(clientName ? { client_name: clientName } : {}),\n ...(clientUri ? { client_uri: clientUri } : {}),\n },\n 201,\n );\n }\n\n // --- authorization ---------------------------------------------------------\n\n private async authorize(req: Request): Promise<Response> {\n const query = new URL(req.url).searchParams;\n for (const key of new Set(query.keys())) {\n if (query.getAll(key).length > 1) return htmlError(`The parameter ${key} was sent more than once.`);\n }\n // Until the client and its redirect URI check out, nothing is sent\n // anywhere: an error redirect to an unchecked URI is an open redirect.\n const clientId = query.get(\"client_id\");\n const client = clientId ? await this.store.findClient(clientId) : null;\n if (!client) return htmlError(\"The application is not registered with this server.\");\n const requested = query.get(\"redirect_uri\") ?? (client.redirectUris.length === 1 ? client.redirectUris[0] : null);\n if (!requested || !client.redirectUris.some((uri) => redirectMatches(uri, requested))) {\n return htmlError(\"The redirect URI is not one the application registered.\");\n }\n const state = query.get(\"state\");\n const fail = (error: string, description: string) => this.redirectBack(requested, state, { error, error_description: description });\n\n if (query.get(\"response_type\") !== \"code\") return fail(\"unsupported_response_type\", \"Only response_type=code is supported.\");\n const challenge = query.get(\"code_challenge\");\n if (query.get(\"code_challenge_method\") !== \"S256\" || !challenge || !/^[A-Za-z0-9_-]{43}$/.test(challenge)) {\n return fail(\"invalid_request\", \"PKCE is required: code_challenge with code_challenge_method=S256.\");\n }\n const resource = query.get(\"resource\");\n if (resource !== null && !sameResource(resource, this.context.resource)) {\n return fail(\"invalid_target\", \"The resource is not this server's.\");\n }\n if (state !== null && state.length > 2048) return fail(\"invalid_request\", \"state is too long.\");\n const known = this.scopeNames();\n const asked = query.get(\"scope\");\n let scopes = known;\n if (asked !== null && asked.trim() !== \"\") {\n // Scopes this server does not know (openid, profile…) are left out,\n // which narrows the grant; asking only for those is an error.\n scopes = [...new Set(asked.split(\" \").filter((scope) => known.includes(scope)))];\n if (scopes.length === 0) return fail(\"invalid_scope\", \"None of the requested scopes exist here.\");\n }\n\n const ticket = sign(TICKET, \"gat1\", {\n c: client.clientId,\n r: requested,\n s: scopes,\n cc: challenge,\n st: state,\n n: randomBytes(16).toString(\"base64url\"),\n exp: Date.now() + TICKET_TTL,\n } satisfies Ticket);\n const consent = this.options.consentPath ?? `${this.base}/consent`;\n return redirect(`${this.issuer}${consent}?request=${encodeURIComponent(ticket)}`, 302);\n }\n\n /** gemi's own consent page, for an app without a `consentPath`. */\n private async consentScreen(req: Request): Promise<Response> {\n const request = new URL(req.url).searchParams.get(\"request\");\n const user = await this.sessionUser(req);\n if (!user) {\n const back = `${this.base}/consent?request=${encodeURIComponent(request ?? \"\")}`;\n const signIn = this.options.signInPath ?? app(AuthManager).config.signInPath;\n return redirect(`${signIn}${signIn.includes(\"?\") ? \"&\" : \"?\"}redirect=${encodeURIComponent(back)}`, 302);\n }\n const consent = await this.consent(request, user);\n if (!consent) return htmlError(\"This authorization request has expired or is not valid. Start again from the application.\");\n return new Response(consentPage(consent, { name: this.options.appName ?? new URL(this.issuer).host }), {\n status: 200,\n headers: CONSENT_PAGE_HEADERS,\n });\n }\n\n /**\n * The user's decision, posted from a consent page. Only from this origin\n * (`Origin`, or `Sec-Fetch-Site` when a browser sends no `Origin`), only by\n * the user the page was rendered for (the CSRF token is bound to them and\n * to the request), and only once.\n */\n private async decide(req: Request): Promise<Response> {\n const origin = req.headers.get(\"origin\");\n const sameOrigin = origin !== null ? origin === this.issuer : req.headers.get(\"sec-fetch-site\") === \"same-origin\";\n if (!sameOrigin) return htmlError(\"This decision did not come from this site's consent page.\", 403);\n if (!/^application\\/x-www-form-urlencoded\\s*(;|$)/i.test(req.headers.get(\"content-type\") ?? \"\")) {\n return htmlError(\"The decision must be a form post.\");\n }\n let form: URLSearchParams;\n try {\n form = new URLSearchParams(await readLimited(req, MAX_FORM_BYTES));\n } catch {\n return htmlError(\"The decision is too large.\");\n }\n const request = form.get(\"request\");\n const ticket = verify<Ticket>(TICKET, \"gat1\", request);\n const csrf = verify<ConsentToken>(CSRF, \"gcs1\", form.get(\"csrf\"));\n const user = await this.sessionUser(req);\n if (!ticket || !csrf || !user || csrf.t !== digest(request!) || csrf.u !== String(user.id)) {\n return htmlError(\"This authorization request has expired or is not valid. Start again from the application.\", 403);\n }\n const client = await this.store.findClient(ticket.c);\n if (!client || !client.redirectUris.some((uri) => redirectMatches(uri, ticket.r))) {\n return htmlError(\"The application is not registered with this server.\");\n }\n if (!(await this.store.use(`ticket:${ticket.n}`, ticket.exp))) {\n return htmlError(\"This request was already answered. Start again from the application.\");\n }\n if (form.get(\"decision\") !== \"allow\") {\n return this.redirectBack(ticket.r, ticket.st, { error: \"access_denied\", error_description: \"The user denied the request.\" }, 303);\n }\n const code = `${CODE_PREFIX}${randomBytes(32).toString(\"base64url\")}`;\n await this.store.saveCode({\n hash: hash(code),\n clientId: client.clientId,\n userId: String(user.id),\n redirectUri: ticket.r,\n codeChallenge: ticket.cc,\n scopes: ticket.s,\n resource: this.context.resource,\n familyId: randomBytes(16).toString(\"base64url\"),\n expiresAt: Date.now() + CODE_TTL,\n });\n return this.redirectBack(ticket.r, ticket.st, { code }, 303);\n }\n\n // --- tokens ----------------------------------------------------------------\n\n private async token(req: Request): Promise<Response> {\n const form = await readForm(req);\n const client = await this.authenticateClient(req, form);\n const retryAfter = await overBudget(`mcp-oauth-token:${client.clientId}`, TOKEN_BUDGET);\n if (retryAfter !== null) {\n throw new OAuthError(\"slow_down\", \"Too many token requests.\", 429, { \"Retry-After\": String(retryAfter) });\n }\n const resource = form.get(\"resource\");\n if (resource !== null && !sameResource(resource, this.context.resource)) {\n throw new OAuthError(\"invalid_target\", \"The resource is not this server's.\");\n }\n\n switch (form.get(\"grant_type\")) {\n case \"authorization_code\": {\n const code = form.get(\"code\") ?? \"\";\n const record = code.startsWith(CODE_PREFIX) ? await this.store.findCode(hash(code)) : null;\n if (!record || record.clientId !== client.clientId) {\n throw new OAuthError(\"invalid_grant\", \"The authorization code is not valid.\");\n }\n if (!(await this.store.use(record.hash, record.expiresAt + CODE_TTL))) {\n // A code redeemed twice was intercepted, or is being replayed:\n // whatever the first redemption got is revoked with it.\n await this.store.revokeFamily(record.familyId);\n throw new OAuthError(\"invalid_grant\", \"The authorization code was already used.\");\n }\n if (record.expiresAt <= Date.now()) throw new OAuthError(\"invalid_grant\", \"The authorization code expired.\");\n if (form.get(\"redirect_uri\") !== null && form.get(\"redirect_uri\") !== record.redirectUri) {\n throw new OAuthError(\"invalid_grant\", \"redirect_uri is not the one the code was issued to.\");\n }\n const verifier = form.get(\"code_verifier\");\n if (!verifier || !/^[A-Za-z0-9._~-]{43,128}$/.test(verifier) || !equal(s256(verifier), record.codeChallenge)) {\n throw new OAuthError(\"invalid_grant\", \"The PKCE code_verifier does not match.\");\n }\n if (!(await this.options.findUser(record.userId))) {\n throw new OAuthError(\"invalid_grant\", \"The authorization code is not valid.\");\n }\n return await this.issue(record);\n }\n case \"refresh_token\": {\n const token = form.get(\"refresh_token\") ?? \"\";\n const record = token.startsWith(REFRESH_PREFIX) ? await this.store.findToken(hash(token)) : null;\n if (!record || record.kind !== \"refresh\" || record.clientId !== client.clientId) {\n throw new OAuthError(\"invalid_grant\", \"The refresh token is not valid.\");\n }\n if (record.expiresAt <= Date.now()) throw new OAuthError(\"invalid_grant\", \"The refresh token expired.\");\n if (!(await this.store.use(record.hash, record.expiresAt))) {\n // Rotation means a refresh token works once. A second use is a\n // stolen copy, or the thief's — either way the grant is done.\n await this.store.revokeFamily(record.familyId);\n throw new OAuthError(\"invalid_grant\", \"The refresh token was already used.\");\n }\n if (record.resource !== this.context.resource) {\n throw new OAuthError(\"invalid_grant\", \"The refresh token was not issued for this server.\");\n }\n let scopes = record.scopes;\n const asked = form.get(\"scope\");\n if (asked !== null && asked.trim() !== \"\") {\n const narrowed = [...new Set(asked.split(\" \").filter(Boolean))];\n if (narrowed.some((scope) => !record.scopes.includes(scope))) {\n throw new OAuthError(\"invalid_scope\", \"A refresh can only narrow the scopes that were granted.\");\n }\n scopes = narrowed;\n }\n if (!(await this.options.findUser(record.userId))) {\n throw new OAuthError(\"invalid_grant\", \"The refresh token is not valid.\");\n }\n return await this.issue({ ...record, scopes });\n }\n default:\n throw new OAuthError(\"unsupported_grant_type\", \"grant_type must be authorization_code or refresh_token.\");\n }\n }\n\n private async issue(grant: { clientId: string; userId: string; scopes: string[]; resource: string; familyId: string }) {\n const now = Date.now();\n // Scopes the router no longer has are dropped as the grant renews.\n const known = this.scopeNames();\n const scopes = grant.scopes.filter((scope) => known.includes(scope));\n const access = `${ACCESS_PREFIX}${randomBytes(32).toString(\"base64url\")}`;\n const refresh = `${REFRESH_PREFIX}${randomBytes(32).toString(\"base64url\")}`;\n const base = { clientId: grant.clientId, userId: grant.userId, scopes, resource: grant.resource, familyId: grant.familyId };\n await this.store.saveToken({ ...base, hash: hash(access), kind: \"access\", expiresAt: now + this.accessTtl * 1000 } satisfies McpOAuthToken);\n await this.store.saveToken({ ...base, hash: hash(refresh), kind: \"refresh\", expiresAt: now + this.refreshTtl * 1000 } satisfies McpOAuthToken);\n return json({\n access_token: access,\n token_type: \"Bearer\",\n expires_in: this.accessTtl,\n refresh_token: refresh,\n scope: scopes.join(\" \"),\n });\n }\n\n /** RFC 7009: revokes the grant the token belongs to. Answers 200 whatever the token was. */\n private async revoke(req: Request): Promise<Response> {\n const form = await readForm(req);\n const client = await this.authenticateClient(req, form);\n const token = form.get(\"token\") ?? \"\";\n if (token.startsWith(ACCESS_PREFIX) || token.startsWith(REFRESH_PREFIX)) {\n const record = await this.store.findToken(hash(token));\n if (record && record.clientId === client.clientId) await this.store.revokeFamily(record.familyId);\n }\n return new Response(null, { status: 200, headers: { \"Cache-Control\": \"no-store\" } });\n }\n\n /**\n * The client a token or revocation request is from. A public client names\n * itself; a confidential one proves it with its secret, in the body or in\n * Basic auth.\n */\n private async authenticateClient(req: Request, form: URLSearchParams): Promise<McpOAuthClient> {\n const basic = /^Basic\\s+([A-Za-z0-9+/=]+)$/i.exec(req.headers.get(\"authorization\") ?? \"\");\n let clientId = form.get(\"client_id\");\n let secret = form.get(\"client_secret\");\n if (basic) {\n const decoded = Buffer.from(basic[1], \"base64\").toString(\"utf8\");\n const colon = decoded.indexOf(\":\");\n if (colon < 0) throw invalidClient(true);\n const id = decodeComponent(decoded.slice(0, colon));\n if (id === null) throw invalidClient(true);\n if (clientId !== null && clientId !== id) throw invalidClient(true);\n clientId = id;\n secret = decodeComponent(decoded.slice(colon + 1));\n if (secret === null) throw invalidClient(true);\n }\n const client = clientId ? await this.store.findClient(clientId) : null;\n if (!client) throw invalidClient(Boolean(basic));\n if (client.tokenEndpointAuthMethod === \"none\") {\n if (secret) throw invalidClient(Boolean(basic));\n return client;\n }\n if (!secret || !client.clientSecretHash || !equal(hash(secret), client.clientSecretHash)) {\n throw invalidClient(Boolean(basic));\n }\n return client;\n }\n\n // --- helpers -------------------------------------------------------------\n\n private redirectBack(uri: string, state: string | null, params: Record<string, string>, status = 302): Response {\n const url = new URL(uri);\n for (const [key, value] of Object.entries(params)) url.searchParams.set(key, value);\n if (state !== null) url.searchParams.set(\"state\", state);\n url.searchParams.set(\"iss\", this.issuer);\n return redirect(url.href, status);\n }\n\n /** The user signed in to this app in the browser: the session cookie only. */\n private async sessionUser(req: Request): Promise<User | null> {\n const cookies = new HttpRequest(req, {}, \"api\", this.base).cookies;\n return await sessionUser(app(AuthManager), {\n cookies,\n headers: { get: (name: string) => (name.toLowerCase() === \"user-agent\" ? req.headers.get(\"user-agent\") : null) },\n });\n }\n\n private userLabel(user: User): string {\n if (this.options.userLabel) return this.options.userLabel(user);\n const record = user as unknown as Record<string, unknown>;\n return String(record.email ?? record.name ?? record.id);\n }\n\n private scopeNames(): string[] {\n return this.context.registry.scopes().map((scope) => scope.name);\n }\n\n private resourceMetadataUrl(): string {\n return `${this.issuer}/.well-known/oauth-protected-resource${new URL(this.context.resource).pathname}`;\n }\n}\n\nconst CORS_ANY: Record<string, string> = {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Expose-Headers\": \"WWW-Authenticate\",\n};\n\nfunction seconds(name: string, value: number | undefined, fallback: number): number {\n if (value === undefined) return fallback;\n if (!Number.isInteger(value) || value < 60) throw new Error(`McpOAuthServer: ${name} must be a whole number of seconds, at least 60.`);\n return value;\n}\n\nfunction hash(value: string): string {\n return createHash(\"sha256\").update(value).digest(\"hex\");\n}\n\nfunction digest(value: string): string {\n return createHash(\"sha256\").update(value).digest(\"base64url\");\n}\n\nfunction s256(verifier: string): string {\n return createHash(\"sha256\").update(verifier).digest(\"base64url\");\n}\n\nfunction equal(a: string, b: string): boolean {\n const left = Buffer.from(a);\n const right = Buffer.from(b);\n return left.length === right.length && timingSafeEqual(left, right);\n}\n\nfunction json(body: unknown, status = 200, headers: Record<string, string> = {}): Response {\n return new Response(JSON.stringify(body), {\n status,\n headers: { \"Content-Type\": \"application/json\", \"Cache-Control\": \"no-store\", Pragma: \"no-cache\", ...headers },\n });\n}\n\nfunction redirect(location: string, status: number): Response {\n return new Response(null, { status, headers: { Location: location, \"Cache-Control\": \"no-store\", \"Referrer-Policy\": \"no-referrer\" } });\n}\n\nfunction htmlError(message: string, status = 400): Response {\n return new Response(errorPage(message), { status, headers: CONSENT_PAGE_HEADERS });\n}\n\nfunction invalidClient(basic: boolean): OAuthError {\n return new OAuthError(\n \"invalid_client\",\n \"Client authentication failed.\",\n 401,\n basic ? { \"WWW-Authenticate\": 'Basic realm=\"mcp-oauth\"' } : {},\n );\n}\n\nasync function readLimited(req: Request, max: number): Promise<string> {\n const declared = Number(req.headers.get(\"content-length\"));\n if (Number.isFinite(declared) && declared > max) throw new Error(\"too large\");\n if (!req.body) return \"\";\n // Read as it arrives, and stop at the limit: these endpoints take requests\n // from anyone, and a chunked body declares no length.\n const reader = req.body.getReader();\n const chunks: Uint8Array[] = [];\n let size = 0;\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n size += value.byteLength;\n if (size > max) {\n await reader.cancel();\n throw new Error(\"too large\");\n }\n chunks.push(value);\n }\n return Buffer.concat(chunks).toString(\"utf8\");\n}\n\nasync function readForm(req: Request): Promise<URLSearchParams> {\n if (!/^application\\/x-www-form-urlencoded\\s*(;|$)/i.test(req.headers.get(\"content-type\") ?? \"\")) {\n throw new OAuthError(\"invalid_request\", \"Send the request as application/x-www-form-urlencoded.\");\n }\n let form: URLSearchParams;\n try {\n form = new URLSearchParams(await readLimited(req, MAX_FORM_BYTES));\n } catch {\n throw new OAuthError(\"invalid_request\", \"The request is too large.\");\n }\n for (const key of new Set(form.keys())) {\n if (form.getAll(key).length > 1) throw new OAuthError(\"invalid_request\", `${key} was sent more than once.`);\n }\n return form;\n}\n\nfunction optionalText(value: unknown, max: number, name: string): string | null {\n if (value === undefined || value === null || value === \"\") return null;\n if (typeof value !== \"string\" || value.length > max || hasControlCharacter(value)) {\n throw new OAuthError(\"invalid_client_metadata\", `${name} must be text of at most ${max} characters.`);\n }\n return value;\n}\n\nfunction isHttpsUrl(value: string): boolean {\n try {\n return new URL(value).protocol === \"https:\";\n } catch {\n return false;\n }\n}\n\nfunction isLoopback(url: URL): boolean {\n return url.hostname === \"localhost\" || url.hostname === \"127.0.0.1\" || url.hostname === \"[::1]\";\n}\n\n/** Why a redirect URI cannot be registered, or `null`. */\nfunction redirectUriProblem(value: unknown): string | null {\n if (typeof value !== \"string\" || value.length > 2048) return \"not a URI\";\n let url: URL;\n try {\n url = new URL(value);\n } catch {\n return \"not an absolute URI\";\n }\n if (url.hash || value.includes(\"#\")) return \"must not have a fragment\";\n if (url.username || url.password) return \"must not carry credentials\";\n if (url.protocol === \"https:\") return null;\n if (url.protocol === \"http:\" && isLoopback(url)) return null;\n return \"must be https, or http on a loopback address\";\n}\n\n/**\n * Exact match, as OAuth 2.1 requires — except the port of a loopback\n * redirect, which a native client picks when it runs (RFC 8252 §7.3).\n */\nfunction redirectMatches(registered: string, given: string): boolean {\n if (registered === given) return true;\n let a: URL;\n let b: URL;\n try {\n a = new URL(registered);\n b = new URL(given);\n } catch {\n return false;\n }\n return (\n a.protocol === \"http:\" &&\n b.protocol === \"http:\" &&\n isLoopback(a) &&\n a.hostname === b.hostname &&\n a.pathname === b.pathname &&\n a.search === b.search &&\n !b.hash &&\n !b.username &&\n !b.password\n );\n}\n\nfunction sameResource(given: string, resource: string): boolean {\n return given === resource || given === `${resource}/`;\n}\n\nfunction hasControlCharacter(value: string): boolean {\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n if (code < 0x20 || code === 0x7f) return true;\n }\n return false;\n}\n\n/** RFC 6749 §2.3.1 form-encodes Basic credentials; a malformed escape is a failed authentication, not a 500. */\nfunction decodeComponent(value: string): string | null {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return null;\n }\n}\n",
10
10
  "import type { McpConsent } from \"./McpOAuthServer\";\n\n/**\n * Headers for any page that asks for consent: it must never be framed (a\n * framed \"Allow\" button can be clicked through an overlay), cached, or leak\n * its URL — which carries the request — in a `Referer`.\n */\nexport const CONSENT_PAGE_HEADERS: Readonly<Record<string, string>> = Object.freeze({\n \"Content-Type\": \"text/html; charset=utf-8\",\n \"Cache-Control\": \"no-store\",\n \"X-Frame-Options\": \"DENY\",\n // No `form-action`: browsers apply it to the redirect that follows the\n // decision, which goes to the client's own redirect URI.\n \"Content-Security-Policy\": \"default-src 'none'; style-src 'unsafe-inline'; frame-ancestors 'none'; base-uri 'none'\",\n \"Referrer-Policy\": \"no-referrer\",\n \"X-Content-Type-Options\": \"nosniff\",\n});\n\n/** The consent page gemi serves when the app has no `consentPath` of its own. */\nexport function consentPage(consent: McpConsent, app: { name: string }): string {\n const name = consent.client.name ? escape(consent.client.name) : \"An application\";\n const scopes = consent.scopes\n .map((scope) => `<li><strong>${escape(scope.name)}</strong><br><span>${escape(scope.description)}</span></li>`)\n .join(\"\");\n const hidden = Object.entries(consent.form.fields)\n .map(([field, value]) => `<input type=\"hidden\" name=\"${escape(field)}\" value=\"${escape(value)}\">`)\n .join(\"\");\n return `<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>Connect to ${escape(app.name)}</title>\n<style>\n :root { color-scheme: light dark; font-family: system-ui, sans-serif; }\n body { margin: 0; display: grid; place-items: center; min-height: 100vh; padding: 16px; box-sizing: border-box; }\n main { max-width: 440px; width: 100%; border: 1px solid #8884; border-radius: 12px; padding: 24px; }\n h1 { font-size: 1.2rem; margin: 0 0 12px; }\n p, li { line-height: 1.45; }\n .warn { font-size: .9rem; opacity: .8; }\n ul { padding-left: 20px; }\n li span { opacity: .8; }\n .actions { display: flex; gap: 12px; margin-top: 20px; }\n button { flex: 1; padding: 10px; border-radius: 8px; border: 1px solid #8886; font-size: 1rem; cursor: pointer; }\n button[value=allow] { background: #2563eb; color: #fff; border-color: #2563eb; }\n</style>\n</head>\n<body>\n<main>\n <h1>${name} wants to access your ${escape(app.name)} account</h1>\n <p class=\"warn\">Signed in as ${escape(consent.user.label)}. After you allow it, you will be sent to <strong>${escape(consent.client.redirectHost)}</strong>. The name above was given by the application and is not verified. Only continue if you started this connection yourself.</p>\n <p>It will be able to:</p>\n <ul>${scopes}</ul>\n <form method=\"post\" action=\"${escape(consent.form.action)}\">\n ${hidden}\n <div class=\"actions\">\n <button type=\"submit\" name=\"decision\" value=\"deny\">Deny</button>\n <button type=\"submit\" name=\"decision\" value=\"allow\">Allow</button>\n </div>\n </form>\n</main>\n</body>\n</html>`;\n}\n\n/** A plain page for an authorization request that cannot be sent back to the client. */\nexport function errorPage(message: string): string {\n return `<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><title>Authorization failed</title></head><body style=\"font-family: system-ui, sans-serif; padding: 24px\"><h1 style=\"font-size: 1.2rem\">This connection could not be authorized</h1><p>${escape(message)}</p></body></html>`;\n}\n\nfunction escape(value: string): string {\n return value.replace(/[&<>\"']/g, (char) => `&#${char.charCodeAt(0)};`);\n}\n",
11
11
  "/**\n * What `McpOAuthServer` keeps: the clients that registered, the authorization\n * codes it handed out, and the tokens it issued.\n *\n * No secret is stored. A client secret, a code and a token are kept as their\n * SHA-256 (`hash`), and looked up by it, so a read of the store is not a list\n * of working credentials.\n *\n * Every code and token belongs to a *family*: one user's consent to one client.\n * The family is what a refresh rotates within, what a replayed code or refresh\n * token revokes, and what an app's \"connected apps\" screen lists and revokes.\n */\nexport interface McpOAuthStore {\n createClient(client: McpOAuthClient): Promise<void>;\n findClient(clientId: string): Promise<McpOAuthClient | null>;\n\n saveCode(code: McpOAuthCode): Promise<void>;\n findCode(hash: string): Promise<McpOAuthCode | null>;\n\n saveToken(token: McpOAuthToken): Promise<void>;\n /** The token with this hash, or `null` when there is none or its family was revoked. */\n findToken(hash: string): Promise<McpOAuthToken | null>;\n\n /**\n * Spends a single-use credential (a code, a refresh token): `true` when this\n * call is the one that spent it, `false` when it was already spent. Must be\n * atomic across every process sharing the store — two exchanges of one code\n * racing must not both win. Kept until `expiresAt` (epoch ms).\n */\n use(hash: string, expiresAt: number): Promise<boolean>;\n\n /** Revokes every code and token of a family. Idempotent. */\n revokeFamily(familyId: string): Promise<void>;\n}\n\nexport type McpOAuthTokenEndpointAuthMethod = \"none\" | \"client_secret_post\" | \"client_secret_basic\";\n\nexport type McpOAuthClient = {\n clientId: string;\n /** SHA-256 hex of the secret, for a confidential client; `null` for a public one. */\n clientSecretHash: string | null;\n tokenEndpointAuthMethod: McpOAuthTokenEndpointAuthMethod;\n redirectUris: string[];\n /** What the client calls itself: unverified, shown on the consent screen as such. */\n clientName: string | null;\n clientUri: string | null;\n /** Epoch ms. */\n createdAt: number;\n};\n\nexport type McpOAuthCode = {\n hash: string;\n clientId: string;\n userId: string;\n redirectUri: string;\n /** The S256 PKCE challenge the code is redeemed against. */\n codeChallenge: string;\n scopes: string[];\n /** The resource (audience) the tokens will be for. */\n resource: string;\n familyId: string;\n /** Epoch ms. */\n expiresAt: number;\n};\n\nexport type McpOAuthToken = {\n hash: string;\n kind: \"access\" | \"refresh\";\n clientId: string;\n userId: string;\n scopes: string[];\n /** The audience: the MCP endpoint's URL. A token is accepted nowhere else. */\n resource: string;\n familyId: string;\n /** Epoch ms. */\n expiresAt: number;\n};\n\n/**\n * `McpOAuthStore` in this process's memory: for development, tests, and an\n * app with one instance that accepts every connection being lost on a\n * restart. With more than one instance use a shared store (a database), or a\n * token issued by one instance is unknown to the next.\n */\nexport class MemoryMcpOAuthStore implements McpOAuthStore {\n private readonly clients = new Map<string, McpOAuthClient>();\n private readonly codes = new Map<string, McpOAuthCode>();\n private readonly tokens = new Map<string, McpOAuthToken>();\n private readonly used = new Map<string, number>();\n private readonly revoked = new Set<string>();\n\n async createClient(client: McpOAuthClient) {\n this.clients.set(client.clientId, structuredClone(client));\n }\n\n async findClient(clientId: string) {\n const client = this.clients.get(clientId);\n return client ? structuredClone(client) : null;\n }\n\n async saveCode(code: McpOAuthCode) {\n this.sweep();\n this.codes.set(code.hash, structuredClone(code));\n }\n\n async findCode(hash: string) {\n const code = this.codes.get(hash);\n return code && !this.revoked.has(code.familyId) ? structuredClone(code) : null;\n }\n\n async saveToken(token: McpOAuthToken) {\n this.sweep();\n this.tokens.set(token.hash, structuredClone(token));\n }\n\n async findToken(hash: string) {\n const token = this.tokens.get(hash);\n return token && !this.revoked.has(token.familyId) ? structuredClone(token) : null;\n }\n\n async use(hash: string, expiresAt: number) {\n if (this.used.has(hash)) return false;\n this.used.set(hash, expiresAt);\n return true;\n }\n\n async revokeFamily(familyId: string) {\n this.revoked.add(familyId);\n for (const [hash, token] of this.tokens) if (token.familyId === familyId) this.tokens.delete(hash);\n for (const [hash, code] of this.codes) if (code.familyId === familyId) this.codes.delete(hash);\n }\n\n /** Every family a user has, for a \"connected apps\" screen. */\n async families(userId: string): Promise<{ familyId: string; clientId: string; scopes: string[] }[]> {\n const seen = new Map<string, { familyId: string; clientId: string; scopes: string[] }>();\n for (const token of this.tokens.values()) {\n if (token.userId === userId && !this.revoked.has(token.familyId) && token.expiresAt > Date.now()) {\n seen.set(token.familyId, { familyId: token.familyId, clientId: token.clientId, scopes: [...token.scopes] });\n }\n }\n return [...seen.values()];\n }\n\n private sweep(now = Date.now()) {\n for (const [hash, code] of this.codes) if (code.expiresAt <= now) this.codes.delete(hash);\n for (const [hash, token] of this.tokens) if (token.expiresAt <= now) this.tokens.delete(hash);\n for (const [hash, expiresAt] of this.used) if (expiresAt <= now) this.used.delete(hash);\n }\n}\n",
@@ -76,7 +76,7 @@
76
76
  "import type { FeatureContext } from \"./types\";\n\n/**\n * Decides a feature for one context, ahead of the percentage rollout.\n *\n * Return `true` or `false` to answer outright. Return nothing — `undefined` —\n * to abstain, which falls through to `rollout`. The three-way return is what\n * lets one function express \"always on for staff, always off for free plans,\n * everybody else takes their chances\" without a second mechanism.\n *\n * Synchronous on purpose. This runs once per feature per request inside the\n * render path, and an `async` signature is an invitation to put a query there —\n * at which point every page load pays for every declared feature. Anything it\n * needs should already be on the context: `user` is the resolved session user,\n * and `attributes` is whatever `app/config/features.ts` puts there.\n */\nexport type FeatureAttribution = (ctx: FeatureContext) => boolean | undefined | void;\n\nexport interface FeatureOptions {\n /** Free text for humans — an admin list, a CLI, a code reader. */\n describe?: string;\n\n /**\n * Percentage of subjects the feature is on for, `0`–`100`.\n *\n * Applied only when `when` abstains. Omitting it means \"everyone\", which is\n * the common case: most features are shipped dark and then turned on for all\n * traffic at once.\n *\n * The assignment is a pure function of the subject, so it is stable without\n * being stored anywhere, and raising the number only ever adds subjects. See\n * `bucket.ts`.\n */\n rollout?: number;\n\n /** Targeting, evaluated before `rollout`. */\n when?: FeatureAttribution;\n\n /**\n * Keeps the feature out of the SSR payload while still evaluating it on the\n * server.\n *\n * Feature *keys* are public: every client-visible key is embedded in the HTML\n * of every page, so a key named after an unannounced product announces it.\n * This is the answer whenever the existence of the feature is the secret.\n */\n serverOnly?: boolean;\n\n /**\n * Overrides the bucketing salt, which is the feature's own key by default.\n *\n * Two reasons to set it. Changing it deliberately re-randomises who is in the\n * rollout — the way to start a second experiment on the same surface without\n * reusing the first one's cohort. And sharing it between two features holds\n * their populations together, so a rollout split across a client and a server\n * feature lands on the same subjects.\n */\n salt?: string;\n}\n\n/**\n * One declared feature.\n *\n * The declaration owns the key, the targeting and the rollout. The database owns\n * one thing only — whether the feature is switched on at all — which is what\n * makes shipping a feature a deploy and turning it on an `UPDATE`.\n */\nexport class Feature<ServerOnly extends boolean = boolean> {\n readonly describe?: string;\n readonly rollout?: number;\n readonly when?: FeatureAttribution;\n /**\n * Carried in the type as well as the value, so `CreateFeatures` can tell a\n * server-only declaration from a client-visible one and `useFeature` can\n * reject the keys that never reach the browser.\n */\n readonly serverOnly: ServerOnly;\n readonly salt?: string;\n\n constructor(options: FeatureOptions = {}) {\n // Thrown rather than clamped or warned. This is application source, read at\n // boot, and a nonsense rollout is a typo somebody can fix in the same minute\n // they see the stack trace. Database rows get the opposite treatment for the\n // opposite reason — nobody is standing next to those when they are wrong.\n if (options.rollout !== undefined) {\n const { rollout } = options;\n if (!Number.isFinite(rollout) || rollout < 0 || rollout > 100) {\n throw new Error(\n `A feature's \\`rollout\\` must be a number between 0 and 100, received ${String(rollout)}.`,\n );\n }\n }\n\n this.describe = options.describe;\n this.rollout = options.rollout;\n this.when = options.when;\n this.serverOnly = (options.serverOnly ?? false) as ServerOnly;\n this.salt = options.salt;\n }\n}\n\n/**\n * Declares a feature.\n *\n * ```ts\n * // app/features/index.ts\n * import { defineFeature } from \"gemi/services\";\n *\n * export default {\n * // On for everyone, once switched on in the database.\n * \"new-nav\": defineFeature(),\n *\n * // A deterministic 20% of subjects.\n * \"new-checkout\": defineFeature({\n * describe: \"Rebuilt checkout flow\",\n * rollout: 20,\n * }),\n *\n * // Targeting lives next to the declaration.\n * \"pricing-redesign\": defineFeature({\n * rollout: 50,\n * when: (ctx) => {\n * if (ctx.user?.email.endsWith(\"@acme.com\")) return true;\n * if (ctx.user?.plan === \"free\") return false;\n * // abstain -> fall through to `rollout`\n * },\n * }),\n * };\n * ```\n *\n * The default export of `app/features/index.ts` is a plain object, and its keys\n * are the feature keys — no nesting, no prefix joining. That is deliberate: the\n * key you look up is the key that appears literally in the source, so answering\n * \"is this feature still referenced?\" — the one chore every feature eventually\n * needs — stays a grep.\n */\nexport function defineFeature(options: FeatureOptions & { serverOnly: true }): Feature<true>;\nexport function defineFeature(options?: FeatureOptions): Feature<false>;\nexport function defineFeature(options: FeatureOptions = {}): Feature<boolean> {\n return new Feature(options);\n}\n\n/** The shape of `app/features/index.ts`'s default export. */\nexport type FeatureRegistry = Record<string, Feature>;\n\n/**\n * What a `serverOnly: true` feature occupies in `Features`.\n *\n * Deliberately not `boolean`. The key still has to be a `keyof Features` — the\n * `Features` facade evaluates it server-side, which is the entire point of the\n * option — but `useFeature` must reject it, because `forClient()` omits those\n * keys from the payload and a client read would be `false` forever with no\n * indication why. Being a distinct type is what lets `ClientFeatureKey` filter\n * the one set out of the other without a second augmentation in `gemi.d.ts`.\n */\nexport interface ServerOnlyFeature {\n readonly __gemiServerOnly: true;\n}\n\n/**\n * The map a registry describes, consumed through module augmentation so\n * `useFeature` and the `Features` facade are typed against the application's own\n * keys:\n *\n * ```ts\n * declare module \"gemi/client\" {\n * export interface Features extends CreateFeatures<typeof AppFeatures> {}\n * }\n * ```\n *\n * Key extraction and nothing else — no tree to walk — except for the one bit\n * that has to survive: whether the feature reaches the browser at all.\n */\nexport type CreateFeatures<T extends FeatureRegistry> = {\n [K in keyof T]: T[K] extends Feature<true> ? ServerOnlyFeature : boolean;\n};\n",
77
77
  "import {\n FeatureFlagSource,\n type FeatureWriteMeta,\n type FeatureWriteResult,\n} from \"./FeatureFlagSource\";\n\n/**\n * Switches from a plain object instead of a database.\n *\n * This is how a test turns a feature on:\n *\n * ```ts\n * defineFeaturesConfig({\n * source: new StaticFeatureFlagSource({ \"new-checkout\": true }),\n * })\n * ```\n *\n * Deliberately **not** a stub that returns canned answers: these rows go through\n * the same store and the same evaluator the database source feeds. A test that\n * pins `\"new-checkout\": true` therefore still exercises the feature's own `when`\n * and `rollout`, which is the part worth testing — pinning the final answer\n * would assert about a code path production never runs.\n *\n * Writable, in memory, so `Features.set()` works against it in a test exactly\n * as it does against the table — including the actor, which it always records.\n * The object passed in is copied, never mutated.\n */\nexport class StaticFeatureFlagSource extends FeatureFlagSource {\n private readonly rows = new Map<string, Record<string, unknown>>();\n\n constructor(active: Record<string, boolean> = {}) {\n super();\n for (const [key, value] of Object.entries(active)) {\n this.rows.set(key, { key, active: value });\n }\n }\n\n async load(): Promise<Record<string, unknown>[]> {\n return [...this.rows.values()].map((row) => ({ ...row }));\n }\n\n async write(key: string, active: boolean, meta: FeatureWriteMeta): Promise<FeatureWriteResult> {\n this.rows.set(key, { key, active, updatedBy: meta.actor, updatedAt: new Date() });\n return { actorRecorded: true };\n }\n}\n"
78
78
  ],
79
- "mappings": "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",
80
- "debugId": "51E701A54C2A6FE364756E2164756E21",
79
+ "mappings": "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",
80
+ "debugId": "933D7C3EA9464B3B64756E2164756E21",
81
81
  "names": []
82
82
  }