@selvajs/selva 4.20.0-beta.12 → 4.20.0-beta.13

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 (1305) hide show
  1. package/build/client/_app/immutable/chunks/0yLIQxuJ.js +1 -0
  2. package/build/client/_app/immutable/chunks/0yLIQxuJ.js.br +0 -0
  3. package/build/client/_app/immutable/chunks/0yLIQxuJ.js.gz +0 -0
  4. package/build/client/_app/immutable/chunks/3pCKCgm8.js +1 -0
  5. package/build/client/_app/immutable/chunks/3pCKCgm8.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/3pCKCgm8.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/B-RtlJay.js +1 -0
  8. package/build/client/_app/immutable/chunks/B-RtlJay.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/B-RtlJay.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/B-zMhBrs.js +1 -0
  11. package/build/client/_app/immutable/chunks/B-zMhBrs.js.br +2 -0
  12. package/build/client/_app/immutable/chunks/B-zMhBrs.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/B6izneYv.js +1 -0
  14. package/build/client/_app/immutable/chunks/B6izneYv.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/B6izneYv.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/B8NPZcOV.js +1 -0
  17. package/build/client/_app/immutable/chunks/B8NPZcOV.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/B8NPZcOV.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/B98gcq61.js +1 -0
  20. package/build/client/_app/immutable/chunks/B98gcq61.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/B98gcq61.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/BAm9lE3B.js +1 -0
  23. package/build/client/_app/immutable/chunks/BAm9lE3B.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/BAm9lE3B.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/BDGHeNOh.js +1 -0
  26. package/build/client/_app/immutable/chunks/BDGHeNOh.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/BDGHeNOh.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/BH-MK2Ou.js +5 -0
  29. package/build/client/_app/immutable/chunks/BH-MK2Ou.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/BH-MK2Ou.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/BH52uY8w.js +1 -0
  32. package/build/client/_app/immutable/chunks/BH52uY8w.js.br +2 -0
  33. package/build/client/_app/immutable/chunks/BH52uY8w.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/BIh3gKDB.js +1 -0
  35. package/build/client/_app/immutable/chunks/BIh3gKDB.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/BIh3gKDB.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/BMdgsGj0.js +1 -0
  38. package/build/client/_app/immutable/chunks/BMdgsGj0.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/BMdgsGj0.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/BRnmaQG6.js +1 -0
  41. package/build/client/_app/immutable/chunks/BRnmaQG6.js.br +0 -0
  42. package/build/client/_app/immutable/chunks/BRnmaQG6.js.gz +0 -0
  43. package/build/client/_app/immutable/chunks/B_-Zu3pc.js +1 -0
  44. package/build/client/_app/immutable/chunks/B_-Zu3pc.js.br +0 -0
  45. package/build/client/_app/immutable/chunks/B_-Zu3pc.js.gz +0 -0
  46. package/build/client/_app/immutable/chunks/BhUUgVFG.js +1 -0
  47. package/build/client/_app/immutable/chunks/BhUUgVFG.js.br +0 -0
  48. package/build/client/_app/immutable/chunks/BhUUgVFG.js.gz +0 -0
  49. package/build/client/_app/immutable/chunks/Bhu7kALM.js +1 -0
  50. package/build/client/_app/immutable/chunks/Bhu7kALM.js.br +0 -0
  51. package/build/client/_app/immutable/chunks/Bhu7kALM.js.gz +0 -0
  52. package/build/client/_app/immutable/chunks/BiccmSo2.js +1 -0
  53. package/build/client/_app/immutable/chunks/BiccmSo2.js.br +0 -0
  54. package/build/client/_app/immutable/chunks/BiccmSo2.js.gz +0 -0
  55. package/build/client/_app/immutable/chunks/BojC9-Rr.js +1 -0
  56. package/build/client/_app/immutable/chunks/BojC9-Rr.js.br +0 -0
  57. package/build/client/_app/immutable/chunks/BojC9-Rr.js.gz +0 -0
  58. package/build/client/_app/immutable/chunks/BqTulPn_.js +1 -0
  59. package/build/client/_app/immutable/chunks/BqTulPn_.js.br +0 -0
  60. package/build/client/_app/immutable/chunks/BqTulPn_.js.gz +0 -0
  61. package/build/client/_app/immutable/chunks/BtQ4fxq9.js +1 -0
  62. package/build/client/_app/immutable/chunks/BtQ4fxq9.js.br +0 -0
  63. package/build/client/_app/immutable/chunks/BtQ4fxq9.js.gz +0 -0
  64. package/build/client/_app/immutable/chunks/BwLnxyAF.js +1 -0
  65. package/build/client/_app/immutable/chunks/BwLnxyAF.js.br +1 -0
  66. package/build/client/_app/immutable/chunks/BwLnxyAF.js.gz +0 -0
  67. package/build/client/_app/immutable/chunks/BzktFuAI.js +1 -0
  68. package/build/client/_app/immutable/chunks/BzktFuAI.js.br +0 -0
  69. package/build/client/_app/immutable/chunks/BzktFuAI.js.gz +0 -0
  70. package/build/client/_app/immutable/chunks/C7xP1yCG.js +1 -0
  71. package/build/client/_app/immutable/chunks/C7xP1yCG.js.br +0 -0
  72. package/build/client/_app/immutable/chunks/C7xP1yCG.js.gz +0 -0
  73. package/build/client/_app/immutable/chunks/C9M82kL_.js +1 -0
  74. package/build/client/_app/immutable/chunks/C9M82kL_.js.br +0 -0
  75. package/build/client/_app/immutable/chunks/C9M82kL_.js.gz +0 -0
  76. package/build/client/_app/immutable/chunks/C9pocU9Y.js +1 -0
  77. package/build/client/_app/immutable/chunks/C9pocU9Y.js.br +0 -0
  78. package/build/client/_app/immutable/chunks/C9pocU9Y.js.gz +0 -0
  79. package/build/client/_app/immutable/chunks/CA8V-2sF.js +1 -0
  80. package/build/client/_app/immutable/chunks/CA8V-2sF.js.br +0 -0
  81. package/build/client/_app/immutable/chunks/CA8V-2sF.js.gz +0 -0
  82. package/build/client/_app/immutable/chunks/CLdYu2sL.js +1 -0
  83. package/build/client/_app/immutable/chunks/CLdYu2sL.js.br +0 -0
  84. package/build/client/_app/immutable/chunks/CLdYu2sL.js.gz +0 -0
  85. package/build/client/_app/immutable/chunks/CO1f5-MT.js +1 -0
  86. package/build/client/_app/immutable/chunks/CO1f5-MT.js.br +0 -0
  87. package/build/client/_app/immutable/chunks/CO1f5-MT.js.gz +0 -0
  88. package/build/client/_app/immutable/chunks/CPtlHOUn.js +1 -0
  89. package/build/client/_app/immutable/chunks/CPtlHOUn.js.br +0 -0
  90. package/build/client/_app/immutable/chunks/CPtlHOUn.js.gz +0 -0
  91. package/build/client/_app/immutable/chunks/CRdl-OFF.js +1 -0
  92. package/build/client/_app/immutable/chunks/CRdl-OFF.js.br +0 -0
  93. package/build/client/_app/immutable/chunks/CRdl-OFF.js.gz +0 -0
  94. package/build/client/_app/immutable/chunks/C_cLLOYP.js +1 -0
  95. package/build/client/_app/immutable/chunks/C_cLLOYP.js.br +0 -0
  96. package/build/client/_app/immutable/chunks/C_cLLOYP.js.gz +0 -0
  97. package/build/client/_app/immutable/chunks/CbiHa78k.js +1 -0
  98. package/build/client/_app/immutable/chunks/CbiHa78k.js.br +0 -0
  99. package/build/client/_app/immutable/chunks/CbiHa78k.js.gz +0 -0
  100. package/build/client/_app/immutable/chunks/Ccv_dRPL.js +1 -0
  101. package/build/client/_app/immutable/chunks/Ccv_dRPL.js.br +1 -0
  102. package/build/client/_app/immutable/chunks/Ccv_dRPL.js.gz +0 -0
  103. package/build/client/_app/immutable/chunks/Cf3H7Ol4.js +1 -0
  104. package/build/client/_app/immutable/chunks/Cf3H7Ol4.js.br +0 -0
  105. package/build/client/_app/immutable/chunks/Cf3H7Ol4.js.gz +0 -0
  106. package/build/client/_app/immutable/chunks/Cg37aZg9.js +1 -0
  107. package/build/client/_app/immutable/chunks/Cg37aZg9.js.br +0 -0
  108. package/build/client/_app/immutable/chunks/Cg37aZg9.js.gz +0 -0
  109. package/build/client/_app/immutable/chunks/Ch-jAkXJ.js +1 -0
  110. package/build/client/_app/immutable/chunks/Ch-jAkXJ.js.br +0 -0
  111. package/build/client/_app/immutable/chunks/Ch-jAkXJ.js.gz +0 -0
  112. package/build/client/_app/immutable/chunks/Cn6J0eL0.js +1 -0
  113. package/build/client/_app/immutable/chunks/Cn6J0eL0.js.br +0 -0
  114. package/build/client/_app/immutable/chunks/Cn6J0eL0.js.gz +0 -0
  115. package/build/client/_app/immutable/chunks/Cnm428SV.js +1 -0
  116. package/build/client/_app/immutable/chunks/Cnm428SV.js.br +0 -0
  117. package/build/client/_app/immutable/chunks/Cnm428SV.js.gz +0 -0
  118. package/build/client/_app/immutable/chunks/CsQb8xah.js +1 -0
  119. package/build/client/_app/immutable/chunks/CsQb8xah.js.br +0 -0
  120. package/build/client/_app/immutable/chunks/CsQb8xah.js.gz +0 -0
  121. package/build/client/_app/immutable/chunks/Ct3IhsHe.js +1 -0
  122. package/build/client/_app/immutable/chunks/Ct3IhsHe.js.br +0 -0
  123. package/build/client/_app/immutable/chunks/Ct3IhsHe.js.gz +0 -0
  124. package/build/client/_app/immutable/chunks/CzLb2Z1B.js +1 -0
  125. package/build/client/_app/immutable/chunks/CzLb2Z1B.js.br +0 -0
  126. package/build/client/_app/immutable/chunks/CzLb2Z1B.js.gz +0 -0
  127. package/build/client/_app/immutable/chunks/D00UfAfi.js +1 -0
  128. package/build/client/_app/immutable/chunks/D00UfAfi.js.br +0 -0
  129. package/build/client/_app/immutable/chunks/D00UfAfi.js.gz +0 -0
  130. package/build/client/_app/immutable/chunks/D05gBhs0.js +1 -0
  131. package/build/client/_app/immutable/chunks/D05gBhs0.js.br +0 -0
  132. package/build/client/_app/immutable/chunks/D05gBhs0.js.gz +0 -0
  133. package/build/client/_app/immutable/chunks/D0OrKiVz.js +1 -0
  134. package/build/client/_app/immutable/chunks/D0OrKiVz.js.br +0 -0
  135. package/build/client/_app/immutable/chunks/D0OrKiVz.js.gz +0 -0
  136. package/build/client/_app/immutable/chunks/D234SS9d.js +1 -0
  137. package/build/client/_app/immutable/chunks/D234SS9d.js.br +0 -0
  138. package/build/client/_app/immutable/chunks/D234SS9d.js.gz +0 -0
  139. package/build/client/_app/immutable/chunks/D6YScmDP.js +1 -0
  140. package/build/client/_app/immutable/chunks/D6YScmDP.js.br +0 -0
  141. package/build/client/_app/immutable/chunks/D6YScmDP.js.gz +0 -0
  142. package/build/client/_app/immutable/chunks/D88usZtk.js +1 -0
  143. package/build/client/_app/immutable/chunks/D88usZtk.js.br +0 -0
  144. package/build/client/_app/immutable/chunks/D88usZtk.js.gz +0 -0
  145. package/build/client/_app/immutable/chunks/D9S2c1kA.js +1 -0
  146. package/build/client/_app/immutable/chunks/D9S2c1kA.js.br +0 -0
  147. package/build/client/_app/immutable/chunks/D9S2c1kA.js.gz +0 -0
  148. package/build/client/_app/immutable/chunks/DAyx4QVS.js +1 -0
  149. package/build/client/_app/immutable/chunks/DAyx4QVS.js.br +0 -0
  150. package/build/client/_app/immutable/chunks/DAyx4QVS.js.gz +0 -0
  151. package/build/client/_app/immutable/chunks/DCpgfPum.js +1 -0
  152. package/build/client/_app/immutable/chunks/DCpgfPum.js.br +0 -0
  153. package/build/client/_app/immutable/chunks/DCpgfPum.js.gz +0 -0
  154. package/build/client/_app/immutable/chunks/DGKUrnpq.js +1 -0
  155. package/build/client/_app/immutable/chunks/DGKUrnpq.js.br +0 -0
  156. package/build/client/_app/immutable/chunks/DGKUrnpq.js.gz +0 -0
  157. package/build/client/_app/immutable/chunks/DJPHiuwU.js +1 -0
  158. package/build/client/_app/immutable/chunks/DJPHiuwU.js.br +0 -0
  159. package/build/client/_app/immutable/chunks/DJPHiuwU.js.gz +0 -0
  160. package/build/client/_app/immutable/chunks/DJxUtDnv.js +1 -0
  161. package/build/client/_app/immutable/chunks/DJxUtDnv.js.br +1 -0
  162. package/build/client/_app/immutable/chunks/DJxUtDnv.js.gz +0 -0
  163. package/build/client/_app/immutable/chunks/DKsOlvb8.js +1 -0
  164. package/build/client/_app/immutable/chunks/DKsOlvb8.js.br +11 -0
  165. package/build/client/_app/immutable/chunks/DKsOlvb8.js.gz +0 -0
  166. package/build/client/_app/immutable/chunks/DQMfihKE.js +1 -0
  167. package/build/client/_app/immutable/chunks/DQMfihKE.js.br +0 -0
  168. package/build/client/_app/immutable/chunks/DQMfihKE.js.gz +0 -0
  169. package/build/client/_app/immutable/chunks/DR4BDEHN.js +1 -0
  170. package/build/client/_app/immutable/chunks/DR4BDEHN.js.br +0 -0
  171. package/build/client/_app/immutable/chunks/DR4BDEHN.js.gz +0 -0
  172. package/build/client/_app/immutable/chunks/DXNhJzNO.js +1 -0
  173. package/build/client/_app/immutable/chunks/DXNhJzNO.js.br +0 -0
  174. package/build/client/_app/immutable/chunks/DXNhJzNO.js.gz +0 -0
  175. package/build/client/_app/immutable/chunks/DYUCKt27.js +1 -0
  176. package/build/client/_app/immutable/chunks/DYUCKt27.js.br +0 -0
  177. package/build/client/_app/immutable/chunks/DYUCKt27.js.gz +0 -0
  178. package/build/client/_app/immutable/chunks/DbUFOaTr.js +3 -0
  179. package/build/client/_app/immutable/chunks/DbUFOaTr.js.br +0 -0
  180. package/build/client/_app/immutable/chunks/DbUFOaTr.js.gz +0 -0
  181. package/build/client/_app/immutable/chunks/DbpvvJF4.js +2 -0
  182. package/build/client/_app/immutable/chunks/DbpvvJF4.js.br +0 -0
  183. package/build/client/_app/immutable/chunks/DbpvvJF4.js.gz +0 -0
  184. package/build/client/_app/immutable/chunks/DeSMCTrs.js +1 -0
  185. package/build/client/_app/immutable/chunks/DeSMCTrs.js.br +0 -0
  186. package/build/client/_app/immutable/chunks/DeSMCTrs.js.gz +0 -0
  187. package/build/client/_app/immutable/chunks/DfCCz9DH.js +1 -0
  188. package/build/client/_app/immutable/chunks/DfCCz9DH.js.br +0 -0
  189. package/build/client/_app/immutable/chunks/DfCCz9DH.js.gz +0 -0
  190. package/build/client/_app/immutable/chunks/Dhe9zxca.js +1 -0
  191. package/build/client/_app/immutable/chunks/Dhe9zxca.js.br +3 -0
  192. package/build/client/_app/immutable/chunks/Dhe9zxca.js.gz +0 -0
  193. package/build/client/_app/immutable/chunks/DqaJA8wW.js +1 -0
  194. package/build/client/_app/immutable/chunks/DqaJA8wW.js.br +0 -0
  195. package/build/client/_app/immutable/chunks/DqaJA8wW.js.gz +0 -0
  196. package/build/client/_app/immutable/chunks/Dr6Ivc7X.js +1 -0
  197. package/build/client/_app/immutable/chunks/Dr6Ivc7X.js.br +0 -0
  198. package/build/client/_app/immutable/chunks/Dr6Ivc7X.js.gz +0 -0
  199. package/build/client/_app/immutable/chunks/DvlwN-A1.js +2 -0
  200. package/build/client/_app/immutable/chunks/DvlwN-A1.js.br +0 -0
  201. package/build/client/_app/immutable/chunks/DvlwN-A1.js.gz +0 -0
  202. package/build/client/_app/immutable/chunks/Dw-8zz2F.js +1 -0
  203. package/build/client/_app/immutable/chunks/Dw-8zz2F.js.br +0 -0
  204. package/build/client/_app/immutable/chunks/Dw-8zz2F.js.gz +0 -0
  205. package/build/client/_app/immutable/chunks/DypqORwS.js +1 -0
  206. package/build/client/_app/immutable/chunks/DypqORwS.js.br +0 -0
  207. package/build/client/_app/immutable/chunks/DypqORwS.js.gz +0 -0
  208. package/build/client/_app/immutable/chunks/FJMmw1m0.js +1 -0
  209. package/build/client/_app/immutable/chunks/FJMmw1m0.js.br +0 -0
  210. package/build/client/_app/immutable/chunks/FJMmw1m0.js.gz +0 -0
  211. package/build/client/_app/immutable/chunks/S2BQ_FVC.js +1 -0
  212. package/build/client/_app/immutable/chunks/S2BQ_FVC.js.br +0 -0
  213. package/build/client/_app/immutable/chunks/S2BQ_FVC.js.gz +0 -0
  214. package/build/client/_app/immutable/chunks/TleDrEmn.js +9 -0
  215. package/build/client/_app/immutable/chunks/TleDrEmn.js.br +0 -0
  216. package/build/client/_app/immutable/chunks/TleDrEmn.js.gz +0 -0
  217. package/build/client/_app/immutable/chunks/W32V7cPM.js +1 -0
  218. package/build/client/_app/immutable/chunks/W32V7cPM.js.br +0 -0
  219. package/build/client/_app/immutable/chunks/W32V7cPM.js.gz +0 -0
  220. package/build/client/_app/immutable/chunks/WPnKa7rX.js +5668 -0
  221. package/build/client/_app/immutable/chunks/WPnKa7rX.js.br +0 -0
  222. package/build/client/_app/immutable/chunks/WPnKa7rX.js.gz +0 -0
  223. package/build/client/_app/immutable/chunks/av0Tz381.js +1 -0
  224. package/build/client/_app/immutable/chunks/av0Tz381.js.br +0 -0
  225. package/build/client/_app/immutable/chunks/av0Tz381.js.gz +0 -0
  226. package/build/client/_app/immutable/chunks/b8wBQNN8.js +1 -0
  227. package/build/client/_app/immutable/chunks/b8wBQNN8.js.br +0 -0
  228. package/build/client/_app/immutable/chunks/b8wBQNN8.js.gz +0 -0
  229. package/build/client/_app/immutable/chunks/bpGbYRN6.js +1 -0
  230. package/build/client/_app/immutable/chunks/bpGbYRN6.js.br +0 -0
  231. package/build/client/_app/immutable/chunks/bpGbYRN6.js.gz +0 -0
  232. package/build/client/_app/immutable/chunks/le2v71g6.js +1 -0
  233. package/build/client/_app/immutable/chunks/le2v71g6.js.br +0 -0
  234. package/build/client/_app/immutable/chunks/le2v71g6.js.gz +0 -0
  235. package/build/client/_app/immutable/chunks/t2AjkGt1.js +1 -0
  236. package/build/client/_app/immutable/chunks/t2AjkGt1.js.br +0 -0
  237. package/build/client/_app/immutable/chunks/t2AjkGt1.js.gz +0 -0
  238. package/build/client/_app/immutable/chunks/uRjngCPg.js +1 -0
  239. package/build/client/_app/immutable/chunks/uRjngCPg.js.br +0 -0
  240. package/build/client/_app/immutable/chunks/uRjngCPg.js.gz +0 -0
  241. package/build/client/_app/immutable/chunks/wSdv-3tr.js +1 -0
  242. package/build/client/_app/immutable/chunks/wSdv-3tr.js.br +0 -0
  243. package/build/client/_app/immutable/chunks/wSdv-3tr.js.gz +0 -0
  244. package/build/client/_app/immutable/chunks/xBhtxi_V.js +1 -0
  245. package/build/client/_app/immutable/chunks/xBhtxi_V.js.br +0 -0
  246. package/build/client/_app/immutable/chunks/xBhtxi_V.js.gz +0 -0
  247. package/build/client/_app/immutable/chunks/xxsRg4Oc.js +1 -0
  248. package/build/client/_app/immutable/chunks/xxsRg4Oc.js.br +0 -0
  249. package/build/client/_app/immutable/chunks/xxsRg4Oc.js.gz +0 -0
  250. package/build/client/_app/immutable/chunks/yANPhdIv.js +1 -0
  251. package/build/client/_app/immutable/chunks/yANPhdIv.js.br +0 -0
  252. package/build/client/_app/immutable/chunks/yANPhdIv.js.gz +0 -0
  253. package/build/client/_app/immutable/chunks/yMisfNBP.js +1 -0
  254. package/build/client/_app/immutable/chunks/yMisfNBP.js.br +0 -0
  255. package/build/client/_app/immutable/chunks/yMisfNBP.js.gz +0 -0
  256. package/build/client/_app/immutable/chunks/zqlf50oM.js +1 -0
  257. package/build/client/_app/immutable/chunks/zqlf50oM.js.br +0 -0
  258. package/build/client/_app/immutable/chunks/zqlf50oM.js.gz +0 -0
  259. package/build/client/_app/immutable/entry/app.CPDP9L-f.js +2 -0
  260. package/build/client/_app/immutable/entry/app.CPDP9L-f.js.br +0 -0
  261. package/build/client/_app/immutable/entry/app.CPDP9L-f.js.gz +0 -0
  262. package/build/client/_app/immutable/entry/start.DSTH0Fid.js +1 -0
  263. package/build/client/_app/immutable/entry/start.DSTH0Fid.js.br +1 -0
  264. package/build/client/_app/immutable/entry/start.DSTH0Fid.js.gz +0 -0
  265. package/build/client/_app/immutable/nodes/0.B7xg1wnA.js +1 -0
  266. package/build/client/_app/immutable/nodes/0.B7xg1wnA.js.br +0 -0
  267. package/build/client/_app/immutable/nodes/0.B7xg1wnA.js.gz +0 -0
  268. package/build/client/_app/immutable/nodes/1._UcMSb3F.js +1 -0
  269. package/build/client/_app/immutable/nodes/1._UcMSb3F.js.br +0 -0
  270. package/build/client/_app/immutable/nodes/1._UcMSb3F.js.gz +0 -0
  271. package/build/client/_app/immutable/nodes/10.CeHR6nyf.js +3 -0
  272. package/build/client/_app/immutable/nodes/10.CeHR6nyf.js.br +0 -0
  273. package/build/client/_app/immutable/nodes/10.CeHR6nyf.js.gz +0 -0
  274. package/build/client/_app/immutable/nodes/11.CijlvPMO.js +3 -0
  275. package/build/client/_app/immutable/nodes/11.CijlvPMO.js.br +0 -0
  276. package/build/client/_app/immutable/nodes/11.CijlvPMO.js.gz +0 -0
  277. package/build/client/_app/immutable/nodes/12.CkbgNZKQ.js +1 -0
  278. package/build/client/_app/immutable/nodes/12.CkbgNZKQ.js.br +0 -0
  279. package/build/client/_app/immutable/nodes/12.CkbgNZKQ.js.gz +0 -0
  280. package/build/client/_app/immutable/nodes/13.qmgDQRZV.js +2 -0
  281. package/build/client/_app/immutable/nodes/13.qmgDQRZV.js.br +0 -0
  282. package/build/client/_app/immutable/nodes/13.qmgDQRZV.js.gz +0 -0
  283. package/build/client/_app/immutable/nodes/14.ClNQFBf3.js +2 -0
  284. package/build/client/_app/immutable/nodes/14.ClNQFBf3.js.br +0 -0
  285. package/build/client/_app/immutable/nodes/14.ClNQFBf3.js.gz +0 -0
  286. package/build/client/_app/immutable/nodes/15.DnoOuPG8.js +28 -0
  287. package/build/client/_app/immutable/nodes/15.DnoOuPG8.js.br +0 -0
  288. package/build/client/_app/immutable/nodes/15.DnoOuPG8.js.gz +0 -0
  289. package/build/client/_app/immutable/nodes/16.BUl5Yql1.js +5 -0
  290. package/build/client/_app/immutable/nodes/16.BUl5Yql1.js.br +0 -0
  291. package/build/client/_app/immutable/nodes/16.BUl5Yql1.js.gz +0 -0
  292. package/build/client/_app/immutable/nodes/17.V5So7J6L.js +2 -0
  293. package/build/client/_app/immutable/nodes/17.V5So7J6L.js.br +0 -0
  294. package/build/client/_app/immutable/nodes/17.V5So7J6L.js.gz +0 -0
  295. package/build/client/_app/immutable/nodes/18.BEXlwi22.js +1 -0
  296. package/build/client/_app/immutable/nodes/18.BEXlwi22.js.br +0 -0
  297. package/build/client/_app/immutable/nodes/18.BEXlwi22.js.gz +0 -0
  298. package/build/client/_app/immutable/nodes/19.BDKcKkFj.js +7 -0
  299. package/build/client/_app/immutable/nodes/19.BDKcKkFj.js.br +0 -0
  300. package/build/client/_app/immutable/nodes/19.BDKcKkFj.js.gz +0 -0
  301. package/build/client/_app/immutable/nodes/2.2v3IHaFe.js +1 -0
  302. package/build/client/_app/immutable/nodes/2.2v3IHaFe.js.br +0 -0
  303. package/build/client/_app/immutable/nodes/2.2v3IHaFe.js.gz +0 -0
  304. package/build/client/_app/immutable/nodes/20.QEAoC9Wt.js +2 -0
  305. package/build/client/_app/immutable/nodes/20.QEAoC9Wt.js.br +0 -0
  306. package/build/client/_app/immutable/nodes/20.QEAoC9Wt.js.gz +0 -0
  307. package/build/client/_app/immutable/nodes/21.D36SNSeq.js +1 -0
  308. package/build/client/_app/immutable/nodes/21.D36SNSeq.js.br +1 -0
  309. package/build/client/_app/immutable/nodes/21.D36SNSeq.js.gz +0 -0
  310. package/build/client/_app/immutable/nodes/22.BXARockJ.js +6 -0
  311. package/build/client/_app/immutable/nodes/22.BXARockJ.js.br +0 -0
  312. package/build/client/_app/immutable/nodes/22.BXARockJ.js.gz +0 -0
  313. package/build/client/_app/immutable/nodes/24.C2YgY5Eu.js +3 -0
  314. package/build/client/_app/immutable/nodes/24.C2YgY5Eu.js.br +0 -0
  315. package/build/client/_app/immutable/nodes/24.C2YgY5Eu.js.gz +0 -0
  316. package/build/client/_app/immutable/nodes/25.BBG-xZ47.js +16 -0
  317. package/build/client/_app/immutable/nodes/25.BBG-xZ47.js.br +0 -0
  318. package/build/client/_app/immutable/nodes/25.BBG-xZ47.js.gz +0 -0
  319. package/build/client/_app/immutable/nodes/26.uqR9HLtD.js +6 -0
  320. package/build/client/_app/immutable/nodes/26.uqR9HLtD.js.br +0 -0
  321. package/build/client/_app/immutable/nodes/26.uqR9HLtD.js.gz +0 -0
  322. package/build/client/_app/immutable/nodes/27.kLUm7wKd.js +1 -0
  323. package/build/client/_app/immutable/nodes/27.kLUm7wKd.js.br +0 -0
  324. package/build/client/_app/immutable/nodes/27.kLUm7wKd.js.gz +0 -0
  325. package/build/client/_app/immutable/nodes/28.3yrHp_ob.js +3 -0
  326. package/build/client/_app/immutable/nodes/28.3yrHp_ob.js.br +0 -0
  327. package/build/client/_app/immutable/nodes/28.3yrHp_ob.js.gz +0 -0
  328. package/build/client/_app/immutable/nodes/29.8oSnkjkZ.js +4 -0
  329. package/build/client/_app/immutable/nodes/29.8oSnkjkZ.js.br +0 -0
  330. package/build/client/_app/immutable/nodes/29.8oSnkjkZ.js.gz +0 -0
  331. package/build/client/_app/immutable/nodes/3.Bod8L8YM.js +1 -0
  332. package/build/client/_app/immutable/nodes/3.Bod8L8YM.js.br +0 -0
  333. package/build/client/_app/immutable/nodes/3.Bod8L8YM.js.gz +0 -0
  334. package/build/client/_app/immutable/nodes/30.DQSv6U5-.js +6 -0
  335. package/build/client/_app/immutable/nodes/30.DQSv6U5-.js.br +0 -0
  336. package/build/client/_app/immutable/nodes/30.DQSv6U5-.js.gz +0 -0
  337. package/build/client/_app/immutable/nodes/31.P95mZH4t.js +2 -0
  338. package/build/client/_app/immutable/nodes/31.P95mZH4t.js.br +0 -0
  339. package/build/client/_app/immutable/nodes/31.P95mZH4t.js.gz +0 -0
  340. package/build/client/_app/immutable/nodes/32.DE7UTiKI.js +2 -0
  341. package/build/client/_app/immutable/nodes/32.DE7UTiKI.js.br +0 -0
  342. package/build/client/_app/immutable/nodes/32.DE7UTiKI.js.gz +0 -0
  343. package/build/client/_app/immutable/nodes/33.Da8gvn4S.js +2 -0
  344. package/build/client/_app/immutable/nodes/33.Da8gvn4S.js.br +0 -0
  345. package/build/client/_app/immutable/nodes/33.Da8gvn4S.js.gz +0 -0
  346. package/build/client/_app/immutable/nodes/34.BqEVkxy2.js +1 -0
  347. package/build/client/_app/immutable/nodes/34.BqEVkxy2.js.br +0 -0
  348. package/build/client/_app/immutable/nodes/34.BqEVkxy2.js.gz +0 -0
  349. package/build/client/_app/immutable/nodes/35.ff_N8TmL.js +2 -0
  350. package/build/client/_app/immutable/nodes/35.ff_N8TmL.js.br +0 -0
  351. package/build/client/_app/immutable/nodes/35.ff_N8TmL.js.gz +0 -0
  352. package/build/client/_app/immutable/nodes/4.BbQEFbiB.js +1 -0
  353. package/build/client/_app/immutable/nodes/4.BbQEFbiB.js.br +0 -0
  354. package/build/client/_app/immutable/nodes/4.BbQEFbiB.js.gz +0 -0
  355. package/build/client/_app/immutable/nodes/5.D4jyogT_.js +1 -0
  356. package/build/client/_app/immutable/nodes/5.D4jyogT_.js.br +1 -0
  357. package/build/client/_app/immutable/nodes/5.D4jyogT_.js.gz +0 -0
  358. package/build/client/_app/immutable/nodes/6.w9mUqeNu.js +1 -0
  359. package/build/client/_app/immutable/nodes/6.w9mUqeNu.js.br +0 -0
  360. package/build/client/_app/immutable/nodes/6.w9mUqeNu.js.gz +0 -0
  361. package/build/client/_app/immutable/nodes/7.Cbnz8kZa.js +1 -0
  362. package/build/client/_app/immutable/nodes/7.Cbnz8kZa.js.br +0 -0
  363. package/build/client/_app/immutable/nodes/7.Cbnz8kZa.js.gz +0 -0
  364. package/build/client/_app/immutable/nodes/8.Dp7LR1Rr.js +3 -0
  365. package/build/client/_app/immutable/nodes/8.Dp7LR1Rr.js.br +0 -0
  366. package/build/client/_app/immutable/nodes/8.Dp7LR1Rr.js.gz +0 -0
  367. package/build/client/_app/immutable/nodes/9.Dmd8VOLM.js +1 -0
  368. package/build/client/_app/immutable/nodes/9.Dmd8VOLM.js.br +0 -0
  369. package/build/client/_app/immutable/nodes/9.Dmd8VOLM.js.gz +0 -0
  370. package/build/client/_app/version.json +1 -1
  371. package/build/client/_app/version.json.br +0 -0
  372. package/build/client/_app/version.json.gz +0 -0
  373. package/build/handler.js +4 -4
  374. package/build/index.js +4 -4
  375. package/build/server/chunks/chunks/AppHeader.js-Abbseujn.js +315 -0
  376. package/build/server/chunks/chunks/AppHeader.js-Abbseujn.js.map +1 -0
  377. package/build/server/chunks/chunks/SettingsMenu.js-DWwdC5RG.js +2642 -0
  378. package/build/server/chunks/chunks/SettingsMenu.js-DWwdC5RG.js.map +1 -0
  379. package/build/server/chunks/chunks/SideNav.js-DZDQqLfS.js +194 -0
  380. package/build/server/chunks/chunks/SideNav.js-DZDQqLfS.js.map +1 -0
  381. package/build/server/chunks/chunks/admin-auth.server.js-CoIg7Zop.js +352 -0
  382. package/build/server/chunks/chunks/admin-auth.server.js-CoIg7Zop.js.map +1 -0
  383. package/build/server/chunks/chunks/client.js-C8E6Qrko.js +58 -0
  384. package/build/server/chunks/chunks/client.js-C8E6Qrko.js.map +1 -0
  385. package/build/server/chunks/chunks/forms.js-Dg5gzuB5.js +2 -0
  386. package/build/server/chunks/chunks/forms.js-Dg5gzuB5.js.map +1 -0
  387. package/build/server/chunks/chunks/handlers.js-BjiKmPjC.js +1590 -0
  388. package/build/server/chunks/chunks/handlers.js-BjiKmPjC.js.map +1 -0
  389. package/build/server/chunks/chunks/internal.js-BFfHHam5.js.map +1 -1
  390. package/build/server/chunks/chunks/internal2.js-DD9XVJa8.js +219 -0
  391. package/build/server/chunks/chunks/internal2.js-DD9XVJa8.js.map +1 -0
  392. package/build/server/chunks/chunks/navigation.js-Dg5gzuB5.js +2 -0
  393. package/build/server/chunks/chunks/navigation.js-Dg5gzuB5.js.map +1 -0
  394. package/build/server/chunks/chunks/oauth.js-BQQQPw3V.js +415 -0
  395. package/build/server/chunks/chunks/oauth.js-BQQQPw3V.js.map +1 -0
  396. package/build/server/chunks/chunks/package.js-dBjH1edM.js +85 -0
  397. package/build/server/chunks/chunks/package.js-dBjH1edM.js.map +1 -0
  398. package/build/server/chunks/chunks/paths.js-E7XOh9UY.js +19 -0
  399. package/build/server/chunks/chunks/paths.js-E7XOh9UY.js.map +1 -0
  400. package/build/server/chunks/chunks/presets.server.js-DCkR-h3r.js +21 -0
  401. package/build/server/chunks/chunks/presets.server.js-DCkR-h3r.js.map +1 -0
  402. package/build/server/chunks/chunks/server2.js-C2WwvMlU.js +98 -0
  403. package/build/server/chunks/chunks/server2.js-C2WwvMlU.js.map +1 -0
  404. package/build/server/chunks/chunks/server3.js-g63fGksF.js +20731 -0
  405. package/build/server/chunks/chunks/server3.js-g63fGksF.js.map +1 -0
  406. package/build/server/chunks/chunks/state.js-DUDWVFo9.js +74 -0
  407. package/build/server/chunks/chunks/state.js-DUDWVFo9.js.map +1 -0
  408. package/build/server/chunks/chunks/stores.js-MbQQwrsF.js +35 -0
  409. package/build/server/chunks/chunks/stores.js-MbQQwrsF.js.map +1 -0
  410. package/build/server/chunks/chunks/tokens.js-C1iFCpCz.js +25 -0
  411. package/build/server/chunks/chunks/tokens.js-C1iFCpCz.js.map +1 -0
  412. package/build/server/chunks/chunks/visibility.js-DHIz9MAP.js +198 -0
  413. package/build/server/chunks/chunks/visibility.js-DHIz9MAP.js.map +1 -0
  414. package/build/server/chunks/entries/endpoints/.well-known/oauth-authorization-server/_server.ts.js-BpMnVHeu.js +18 -0
  415. package/build/server/chunks/entries/endpoints/.well-known/oauth-authorization-server/_server.ts.js-BpMnVHeu.js.map +1 -0
  416. package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/_server.ts.js-BYo_zjAf.js +18 -0
  417. package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/_server.ts.js-BYo_zjAf.js.map +1 -0
  418. package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/mcp/_server.ts.js-e1JF6I9H.js +18 -0
  419. package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/mcp/_server.ts.js-e1JF6I9H.js.map +1 -0
  420. package/build/server/chunks/entries/endpoints/api/admin/users/_id_/disable/_server.ts.js-DorXcNXG.js +78 -0
  421. package/build/server/chunks/entries/endpoints/api/admin/users/_id_/disable/_server.ts.js-DorXcNXG.js.map +1 -0
  422. package/build/server/chunks/entries/endpoints/api/v1/compute/_server.ts.js-Bm5saFIn.js +94 -0
  423. package/build/server/chunks/entries/endpoints/api/v1/compute/_server.ts.js-Bm5saFIn.js.map +1 -0
  424. package/build/server/chunks/entries/endpoints/api/v1/compute/schema/_server.ts.js-C19wOytv.js +79 -0
  425. package/build/server/chunks/entries/endpoints/api/v1/compute/schema/_server.ts.js-C19wOytv.js.map +1 -0
  426. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/_server.ts.js-0SswZnIs.js +50 -0
  427. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/_server.ts.js-0SswZnIs.js.map +1 -0
  428. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/image/_server.ts.js-BVHHK9Rk.js +48 -0
  429. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/image/_server.ts.js-BVHHK9Rk.js.map +1 -0
  430. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/publish/_server.ts.js-laJ35u6I.js +51 -0
  431. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/publish/_server.ts.js-laJ35u6I.js.map +1 -0
  432. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/schema/_server.ts.js-C5vTK72Y.js +48 -0
  433. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/schema/_server.ts.js-C5vTK72Y.js.map +1 -0
  434. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_linkId_/_server.ts.js-CbyU4_zs.js +48 -0
  435. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_linkId_/_server.ts.js-CbyU4_zs.js.map +1 -0
  436. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_server.ts.js-DDVnrR0I.js +52 -0
  437. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_server.ts.js-DDVnrR0I.js.map +1 -0
  438. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/solve/_server.ts.js-uIfKZZ0c.js +99 -0
  439. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/solve/_server.ts.js-uIfKZZ0c.js.map +1 -0
  440. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_server.ts.js--r2g8CUk.js +53 -0
  441. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_server.ts.js--r2g8CUk.js.map +1 -0
  442. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/_server.ts.js-DkB8bmS-.js +49 -0
  443. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/_server.ts.js-DkB8bmS-.js.map +1 -0
  444. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/schema/_server.ts.js-7XGSthmn.js +48 -0
  445. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/schema/_server.ts.js-7XGSthmn.js.map +1 -0
  446. package/build/server/chunks/entries/endpoints/api/v1/definitions/_server.ts.js-CgAi2Eo0.js +51 -0
  447. package/build/server/chunks/entries/endpoints/api/v1/definitions/_server.ts.js-CgAi2Eo0.js.map +1 -0
  448. package/build/server/chunks/entries/endpoints/api/v1/me/_server.ts.js-iLUUcLrj.js +47 -0
  449. package/build/server/chunks/entries/endpoints/api/v1/me/_server.ts.js-iLUUcLrj.js.map +1 -0
  450. package/build/server/chunks/entries/endpoints/api/v1/me/starred/_guid_/_server.ts.js-DO0EJhA9.js +48 -0
  451. package/build/server/chunks/entries/endpoints/api/v1/me/starred/_guid_/_server.ts.js-DO0EJhA9.js.map +1 -0
  452. package/build/server/chunks/entries/endpoints/api/v1/me/token/_server.ts.js-BeD8wNVo.js +47 -0
  453. package/build/server/chunks/entries/endpoints/api/v1/me/token/_server.ts.js-BeD8wNVo.js.map +1 -0
  454. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/_server.ts.js-bm0jwTEb.js +47 -0
  455. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/_server.ts.js-bm0jwTEb.js.map +1 -0
  456. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/assets/_kind_/_server.ts.js-Bq2R9-Tl.js +48 -0
  457. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/assets/_kind_/_server.ts.js-Bq2R9-Tl.js.map +1 -0
  458. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/compute/_server.ts.js-DqVv4A9x.js +48 -0
  459. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/compute/_server.ts.js-DqVv4A9x.js.map +1 -0
  460. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/_server.ts.js-CXutuyKH.js +47 -0
  461. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/_server.ts.js-CXutuyKH.js.map +1 -0
  462. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/resend/_server.ts.js-Btg7fWF-.js +47 -0
  463. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/resend/_server.ts.js-Btg7fWF-.js.map +1 -0
  464. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_server.ts.js-CWhfKht8.js +48 -0
  465. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_server.ts.js-CWhfKht8.js.map +1 -0
  466. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_server.ts.js-CAlLOCgR.js +47 -0
  467. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_server.ts.js-CAlLOCgR.js.map +1 -0
  468. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_userId_/_server.ts.js-BQY59qkv.js +48 -0
  469. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_userId_/_server.ts.js-BQY59qkv.js.map +1 -0
  470. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_server.ts.js-BlfJzy1a.js +48 -0
  471. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_server.ts.js-BlfJzy1a.js.map +1 -0
  472. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_tokenId_/_server.ts.js-B9mG86SM.js +47 -0
  473. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_tokenId_/_server.ts.js-B9mG86SM.js.map +1 -0
  474. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/_server.ts.js-DWYa62QS.js +50 -0
  475. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/_server.ts.js-DWYa62QS.js.map +1 -0
  476. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_server.ts.js-Cg3gq2Hp.js +49 -0
  477. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_server.ts.js-Cg3gq2Hp.js.map +1 -0
  478. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_userId_/_server.ts.js-BPKhKgMw.js +49 -0
  479. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_userId_/_server.ts.js-BPKhKgMw.js.map +1 -0
  480. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/reclaim/_server.ts.js-CISk9Iw8.js +48 -0
  481. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/reclaim/_server.ts.js-CISk9Iw8.js.map +1 -0
  482. package/build/server/chunks/entries/endpoints/api/v1/projects/_server.ts.js-DG9WSmLg.js +48 -0
  483. package/build/server/chunks/entries/endpoints/api/v1/projects/_server.ts.js-DG9WSmLg.js.map +1 -0
  484. package/build/server/chunks/entries/endpoints/api/v1/solve-events/_solveId_/_server.ts.js-BK-lOawi.js +67 -0
  485. package/build/server/chunks/entries/endpoints/api/v1/solve-events/_solveId_/_server.ts.js-BK-lOawi.js.map +1 -0
  486. package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-BJ2wuISH.js +55 -0
  487. package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-BJ2wuISH.js.map +1 -0
  488. package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-JVuVmA3s.js +61 -0
  489. package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-JVuVmA3s.js.map +1 -0
  490. package/build/server/chunks/entries/endpoints/mcp/_server.ts.js-DpU05U9_.js +28 -0
  491. package/build/server/chunks/entries/endpoints/mcp/_server.ts.js-DpU05U9_.js.map +1 -0
  492. package/build/server/chunks/entries/endpoints/oauth/register/_server.ts.js-BeGiswan.js +29 -0
  493. package/build/server/chunks/entries/endpoints/oauth/register/_server.ts.js-BeGiswan.js.map +1 -0
  494. package/build/server/chunks/entries/endpoints/oauth/token/_server.ts.js-Cm5wZNFF.js +32 -0
  495. package/build/server/chunks/entries/endpoints/oauth/token/_server.ts.js-Cm5wZNFF.js.map +1 -0
  496. package/build/server/chunks/entries/hooks.server.js-BwL4kkZ5.js +376 -0
  497. package/build/server/chunks/entries/hooks.server.js-BwL4kkZ5.js.map +1 -0
  498. package/build/server/chunks/entries/pages/_error.svelte.js-DD1a9TnH.js +38 -0
  499. package/build/server/chunks/entries/pages/_error.svelte.js-DD1a9TnH.js.map +1 -0
  500. package/build/server/chunks/entries/pages/_layout.server.ts.js-CoiPlHif.js +37 -0
  501. package/build/server/chunks/entries/pages/_layout.server.ts.js-CoiPlHif.js.map +1 -0
  502. package/build/server/chunks/entries/pages/_page.server.ts.js-CibcYANz.js +56 -0
  503. package/build/server/chunks/entries/pages/_page.server.ts.js-CibcYANz.js.map +1 -0
  504. package/build/server/chunks/entries/pages/_page.svelte.js-CZ31-bPT.js +160 -0
  505. package/build/server/chunks/entries/pages/_page.svelte.js-CZ31-bPT.js.map +1 -0
  506. package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-CZKb5H0B.js +180 -0
  507. package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-CZKb5H0B.js.map +1 -0
  508. package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-BpTbHMgN.js +135 -0
  509. package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-BpTbHMgN.js.map +1 -0
  510. package/build/server/chunks/entries/pages/admin/_error.svelte.js-C3iyAX7W.js +40 -0
  511. package/build/server/chunks/entries/pages/admin/_error.svelte.js-C3iyAX7W.js.map +1 -0
  512. package/build/server/chunks/entries/pages/admin/_layout.svelte.js-DE9tE8od.js +123 -0
  513. package/build/server/chunks/entries/pages/admin/_layout.svelte.js-DE9tE8od.js.map +1 -0
  514. package/build/server/chunks/entries/pages/admin/_page.server.ts.js-BxsVAFMN.js +76 -0
  515. package/build/server/chunks/entries/pages/admin/_page.server.ts.js-BxsVAFMN.js.map +1 -0
  516. package/build/server/chunks/entries/pages/admin/_page.svelte.js-D4gWhpSj.js +396 -0
  517. package/build/server/chunks/entries/pages/admin/_page.svelte.js-D4gWhpSj.js.map +1 -0
  518. package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-DbuhgX6q.js +841 -0
  519. package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-DbuhgX6q.js.map +1 -0
  520. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-BsLAosAm.js +639 -0
  521. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-BsLAosAm.js.map +1 -0
  522. package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-DxxC3JfO.js +286 -0
  523. package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-DxxC3JfO.js.map +1 -0
  524. package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-Cy1gD5um.js +87 -0
  525. package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-Cy1gD5um.js.map +1 -0
  526. package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-DF3T-zLH.js +1389 -0
  527. package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-DF3T-zLH.js.map +1 -0
  528. package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-4rk-NaOA.js +636 -0
  529. package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-4rk-NaOA.js.map +1 -0
  530. package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-mWVtT6qk.js +46 -0
  531. package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-mWVtT6qk.js.map +1 -0
  532. package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-BCPs0IiQ.js +62 -0
  533. package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-BCPs0IiQ.js.map +1 -0
  534. package/build/server/chunks/entries/pages/docs/api/_page.svelte.js-BSjIf8IN.js +85 -0
  535. package/build/server/chunks/entries/pages/docs/api/_page.svelte.js-BSjIf8IN.js.map +1 -0
  536. package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-CBB75dBy.js +14439 -0
  537. package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-CBB75dBy.js.map +1 -0
  538. package/build/server/chunks/entries/pages/library/_page.server.ts.js-fGBhC-1m.js +51 -0
  539. package/build/server/chunks/entries/pages/library/_page.server.ts.js-fGBhC-1m.js.map +1 -0
  540. package/build/server/chunks/entries/pages/library/_page.svelte.js-CsxydsOA.js +301 -0
  541. package/build/server/chunks/entries/pages/library/_page.svelte.js-CsxydsOA.js.map +1 -0
  542. package/build/server/chunks/entries/pages/login/_page.server.ts.js-Bu3-iu45.js +101 -0
  543. package/build/server/chunks/entries/pages/login/_page.server.ts.js-Bu3-iu45.js.map +1 -0
  544. package/build/server/chunks/entries/pages/login/_page.svelte.js-DGzS34Cr.js +214 -0
  545. package/build/server/chunks/entries/pages/login/_page.svelte.js-DGzS34Cr.js.map +1 -0
  546. package/build/server/chunks/entries/pages/logout/_page.server.ts.js-BrkeB7N9.js +19 -0
  547. package/build/server/chunks/entries/pages/logout/_page.server.ts.js-BrkeB7N9.js.map +1 -0
  548. package/build/server/chunks/entries/pages/oauth/authorize/_page.server.ts.js-C0nU5I17.js +103 -0
  549. package/build/server/chunks/entries/pages/oauth/authorize/_page.server.ts.js-C0nU5I17.js.map +1 -0
  550. package/build/server/chunks/entries/pages/oauth/authorize/_page.svelte.js-imRYafwU.js +133 -0
  551. package/build/server/chunks/entries/pages/oauth/authorize/_page.svelte.js-imRYafwU.js.map +1 -0
  552. package/build/server/chunks/entries/pages/projects/_layout.svelte.js-Cn156ZVY.js +50 -0
  553. package/build/server/chunks/entries/pages/projects/_layout.svelte.js-Cn156ZVY.js.map +1 -0
  554. package/build/server/chunks/entries/pages/projects/_page.svelte.js-BgfctG6a.js +3635 -0
  555. package/build/server/chunks/entries/pages/projects/_page.svelte.js-BgfctG6a.js.map +1 -0
  556. package/build/server/chunks/entries/pages/setup/_page.server.ts.js-BDBnIot2.js +116 -0
  557. package/build/server/chunks/entries/pages/setup/_page.server.ts.js-BDBnIot2.js.map +1 -0
  558. package/build/server/chunks/entries/pages/setup/_page.svelte.js-xmjhZXLK.js +249 -0
  559. package/build/server/chunks/entries/pages/setup/_page.svelte.js-xmjhZXLK.js.map +1 -0
  560. package/build/server/chunks/entries/pages/team/_layout.svelte.js-CuQ6f6pa.js +176 -0
  561. package/build/server/chunks/entries/pages/team/_layout.svelte.js-CuQ6f6pa.js.map +1 -0
  562. package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-CJVkUtO_.js +616 -0
  563. package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-CJVkUtO_.js.map +1 -0
  564. package/build/server/chunks/entries/pages/team/members/_page.svelte.js-Lci10wUO.js +807 -0
  565. package/build/server/chunks/entries/pages/team/members/_page.svelte.js-Lci10wUO.js.map +1 -0
  566. package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-_8gisXVR.js +60 -0
  567. package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-_8gisXVR.js.map +1 -0
  568. package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-DAekHwEW.js +424 -0
  569. package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-DAekHwEW.js.map +1 -0
  570. package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-xnZvi193.js +266 -0
  571. package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-xnZvi193.js.map +1 -0
  572. package/build/server/chunks/entries/pages/team/shares/_page.svelte.js-CeUVZxE5.js +314 -0
  573. package/build/server/chunks/entries/pages/team/shares/_page.svelte.js-CeUVZxE5.js.map +1 -0
  574. package/build/server/chunks/entries/pages/team/tokens/_page.server.ts.js-Cwe94QQk.js +65 -0
  575. package/build/server/chunks/entries/pages/team/tokens/_page.server.ts.js-Cwe94QQk.js.map +1 -0
  576. package/build/server/chunks/entries/pages/team/tokens/_page.svelte.js-BCh4sPkA.js +736 -0
  577. package/build/server/chunks/entries/pages/team/tokens/_page.svelte.js-BCh4sPkA.js.map +1 -0
  578. package/build/server/chunks/handler-DPD6E0HW.js +1206 -0
  579. package/build/server/chunks/handler-DPD6E0HW.js.map +1 -0
  580. package/build/server/chunks/index.js-mP8egvH7.js +3743 -0
  581. package/build/server/chunks/index.js-mP8egvH7.js.map +1 -0
  582. package/build/server/chunks/manifest.js-F0BFjgKV.js +719 -0
  583. package/build/server/chunks/manifest.js-F0BFjgKV.js.map +1 -0
  584. package/build/server/chunks/nodes/0.js-hby1gvU7.js +55 -0
  585. package/build/server/chunks/nodes/0.js-hby1gvU7.js.map +1 -0
  586. package/build/server/chunks/nodes/1.js-CGxRC_dr.js +9 -0
  587. package/build/server/chunks/nodes/1.js-CGxRC_dr.js.map +1 -0
  588. package/build/server/chunks/nodes/10.js-CPdOlVdz.js +34 -0
  589. package/build/server/chunks/nodes/10.js-CPdOlVdz.js.map +1 -0
  590. package/build/server/chunks/nodes/11.js-CRbxXJIJ.js +38 -0
  591. package/build/server/chunks/nodes/11.js-CRbxXJIJ.js.map +1 -0
  592. package/build/server/chunks/nodes/12.js-BmANycAz.js +31 -0
  593. package/build/server/chunks/nodes/12.js-BmANycAz.js.map +1 -0
  594. package/build/server/chunks/nodes/13.js-DtgK-v-H.js +31 -0
  595. package/build/server/chunks/nodes/13.js-DtgK-v-H.js.map +1 -0
  596. package/build/server/chunks/nodes/14.js-BFSYq1ob.js +31 -0
  597. package/build/server/chunks/nodes/14.js-BFSYq1ob.js.map +1 -0
  598. package/build/server/chunks/nodes/15.js-DHEKbxro.js +39 -0
  599. package/build/server/chunks/nodes/15.js-DHEKbxro.js.map +1 -0
  600. package/build/server/chunks/nodes/16.js-Bo3bdPbV.js +34 -0
  601. package/build/server/chunks/nodes/16.js-Bo3bdPbV.js.map +1 -0
  602. package/build/server/chunks/nodes/17.js-CuNWIMY6.js +9 -0
  603. package/build/server/chunks/nodes/17.js-CuNWIMY6.js.map +1 -0
  604. package/build/server/chunks/nodes/18.js-BgsqMiC9.js +40 -0
  605. package/build/server/chunks/nodes/18.js-BgsqMiC9.js.map +1 -0
  606. package/build/server/chunks/nodes/19.js-D-I8yrwW.js +25 -0
  607. package/build/server/chunks/nodes/19.js-D-I8yrwW.js.map +1 -0
  608. package/build/server/chunks/nodes/2.js-BrPV65My.js +34 -0
  609. package/build/server/chunks/nodes/2.js-BrPV65My.js.map +1 -0
  610. package/build/server/chunks/nodes/20.js-CGP-M0l1.js +24 -0
  611. package/build/server/chunks/nodes/20.js-CGP-M0l1.js.map +1 -0
  612. package/build/server/chunks/nodes/21.js-CR3XXfQO.js +41 -0
  613. package/build/server/chunks/nodes/21.js-CR3XXfQO.js.map +1 -0
  614. package/build/server/chunks/nodes/22.js-BXUhm0Ez.js +40 -0
  615. package/build/server/chunks/nodes/22.js-BXUhm0Ez.js.map +1 -0
  616. package/build/server/chunks/nodes/23.js-BTyEcuLJ.js +37 -0
  617. package/build/server/chunks/nodes/23.js-BTyEcuLJ.js.map +1 -0
  618. package/build/server/chunks/nodes/24.js-BVMDFeLa.js +54 -0
  619. package/build/server/chunks/nodes/24.js-BVMDFeLa.js.map +1 -0
  620. package/build/server/chunks/nodes/25.js-BsGRBX4S.js +33 -0
  621. package/build/server/chunks/nodes/25.js-BsGRBX4S.js.map +1 -0
  622. package/build/server/chunks/nodes/26.js-x8tKzWDa.js +40 -0
  623. package/build/server/chunks/nodes/26.js-x8tKzWDa.js.map +1 -0
  624. package/build/server/chunks/nodes/27.js-DzrKJArj.js +31 -0
  625. package/build/server/chunks/nodes/27.js-DzrKJArj.js.map +1 -0
  626. package/build/server/chunks/nodes/28.js-D19p7Yo7.js +9 -0
  627. package/build/server/chunks/nodes/28.js-D19p7Yo7.js.map +1 -0
  628. package/build/server/chunks/nodes/29.js-By4tmIxY.js +31 -0
  629. package/build/server/chunks/nodes/29.js-By4tmIxY.js.map +1 -0
  630. package/build/server/chunks/nodes/3.js-Cb5zUXVI.js +9 -0
  631. package/build/server/chunks/nodes/3.js-Cb5zUXVI.js.map +1 -0
  632. package/build/server/chunks/nodes/30.js-CaM1emWs.js +31 -0
  633. package/build/server/chunks/nodes/30.js-CaM1emWs.js.map +1 -0
  634. package/build/server/chunks/nodes/31.js-BuZvh00X.js +34 -0
  635. package/build/server/chunks/nodes/31.js-BuZvh00X.js.map +1 -0
  636. package/build/server/chunks/nodes/32.js-fpi5ooiX.js +31 -0
  637. package/build/server/chunks/nodes/32.js-fpi5ooiX.js.map +1 -0
  638. package/build/server/chunks/nodes/33.js-BrmNq1Y7.js +31 -0
  639. package/build/server/chunks/nodes/33.js-BrmNq1Y7.js.map +1 -0
  640. package/build/server/chunks/nodes/34.js-Ch_DVPy_.js +31 -0
  641. package/build/server/chunks/nodes/34.js-Ch_DVPy_.js.map +1 -0
  642. package/build/server/chunks/nodes/35.js-L2knV6rn.js +55 -0
  643. package/build/server/chunks/nodes/35.js-L2knV6rn.js.map +1 -0
  644. package/build/server/chunks/nodes/4.js-C_mPNNfE.js +9 -0
  645. package/build/server/chunks/nodes/4.js-C_mPNNfE.js.map +1 -0
  646. package/build/server/chunks/nodes/5.js-BHrFEh9N.js +15 -0
  647. package/build/server/chunks/nodes/5.js-BHrFEh9N.js.map +1 -0
  648. package/build/server/chunks/nodes/6.js-C4nEfoTL.js +31 -0
  649. package/build/server/chunks/nodes/6.js-C4nEfoTL.js.map +1 -0
  650. package/build/server/chunks/nodes/7.js-BW_ESoVA.js +24 -0
  651. package/build/server/chunks/nodes/7.js-BW_ESoVA.js.map +1 -0
  652. package/build/server/chunks/nodes/8.js-CdYh19m9.js +41 -0
  653. package/build/server/chunks/nodes/8.js-CdYh19m9.js.map +1 -0
  654. package/build/server/chunks/nodes/9.js-ByOqICUl.js +31 -0
  655. package/build/server/chunks/nodes/9.js-ByOqICUl.js.map +1 -0
  656. package/package.json +6 -6
  657. package/build/client/_app/immutable/chunks/3fvdFq01.js +0 -1
  658. package/build/client/_app/immutable/chunks/3fvdFq01.js.br +0 -0
  659. package/build/client/_app/immutable/chunks/3fvdFq01.js.gz +0 -0
  660. package/build/client/_app/immutable/chunks/4Rn0Vd_m.js +0 -1
  661. package/build/client/_app/immutable/chunks/4Rn0Vd_m.js.br +0 -0
  662. package/build/client/_app/immutable/chunks/4Rn0Vd_m.js.gz +0 -0
  663. package/build/client/_app/immutable/chunks/4T8zNb4j.js +0 -1
  664. package/build/client/_app/immutable/chunks/4T8zNb4j.js.br +0 -0
  665. package/build/client/_app/immutable/chunks/4T8zNb4j.js.gz +0 -0
  666. package/build/client/_app/immutable/chunks/4tlRG80l.js +0 -1
  667. package/build/client/_app/immutable/chunks/4tlRG80l.js.br +0 -0
  668. package/build/client/_app/immutable/chunks/4tlRG80l.js.gz +0 -0
  669. package/build/client/_app/immutable/chunks/5X9KRGTe.js +0 -1
  670. package/build/client/_app/immutable/chunks/5X9KRGTe.js.br +0 -0
  671. package/build/client/_app/immutable/chunks/5X9KRGTe.js.gz +0 -0
  672. package/build/client/_app/immutable/chunks/875PMLD1.js +0 -1
  673. package/build/client/_app/immutable/chunks/875PMLD1.js.br +0 -0
  674. package/build/client/_app/immutable/chunks/875PMLD1.js.gz +0 -0
  675. package/build/client/_app/immutable/chunks/Ai8TpkRp.js +0 -1
  676. package/build/client/_app/immutable/chunks/Ai8TpkRp.js.br +0 -1
  677. package/build/client/_app/immutable/chunks/Ai8TpkRp.js.gz +0 -0
  678. package/build/client/_app/immutable/chunks/B8S1LFpi.js +0 -9
  679. package/build/client/_app/immutable/chunks/B8S1LFpi.js.br +0 -0
  680. package/build/client/_app/immutable/chunks/B8S1LFpi.js.gz +0 -0
  681. package/build/client/_app/immutable/chunks/BCh7Xzzr.js +0 -1
  682. package/build/client/_app/immutable/chunks/BCh7Xzzr.js.br +0 -0
  683. package/build/client/_app/immutable/chunks/BCh7Xzzr.js.gz +0 -0
  684. package/build/client/_app/immutable/chunks/BDoKnJna.js +0 -1
  685. package/build/client/_app/immutable/chunks/BDoKnJna.js.br +0 -0
  686. package/build/client/_app/immutable/chunks/BDoKnJna.js.gz +0 -0
  687. package/build/client/_app/immutable/chunks/BGJjjRKU.js +0 -1
  688. package/build/client/_app/immutable/chunks/BGJjjRKU.js.br +0 -0
  689. package/build/client/_app/immutable/chunks/BGJjjRKU.js.gz +0 -0
  690. package/build/client/_app/immutable/chunks/BJ5bo8me.js +0 -1
  691. package/build/client/_app/immutable/chunks/BJ5bo8me.js.br +0 -2
  692. package/build/client/_app/immutable/chunks/BJ5bo8me.js.gz +0 -0
  693. package/build/client/_app/immutable/chunks/BJrKvA9U.js +0 -1
  694. package/build/client/_app/immutable/chunks/BJrKvA9U.js.br +0 -0
  695. package/build/client/_app/immutable/chunks/BJrKvA9U.js.gz +0 -0
  696. package/build/client/_app/immutable/chunks/BQZ6kTcO.js +0 -1
  697. package/build/client/_app/immutable/chunks/BQZ6kTcO.js.br +0 -0
  698. package/build/client/_app/immutable/chunks/BQZ6kTcO.js.gz +0 -0
  699. package/build/client/_app/immutable/chunks/BSIw9zMS.js +0 -1
  700. package/build/client/_app/immutable/chunks/BSIw9zMS.js.br +0 -0
  701. package/build/client/_app/immutable/chunks/BSIw9zMS.js.gz +0 -0
  702. package/build/client/_app/immutable/chunks/BV9JuQzu.js +0 -1
  703. package/build/client/_app/immutable/chunks/BV9JuQzu.js.br +0 -0
  704. package/build/client/_app/immutable/chunks/BV9JuQzu.js.gz +0 -0
  705. package/build/client/_app/immutable/chunks/BXIZ5-1y.js +0 -1
  706. package/build/client/_app/immutable/chunks/BXIZ5-1y.js.br +0 -1
  707. package/build/client/_app/immutable/chunks/BXIZ5-1y.js.gz +0 -0
  708. package/build/client/_app/immutable/chunks/BZBtwMTi.js +0 -1
  709. package/build/client/_app/immutable/chunks/BZBtwMTi.js.br +0 -0
  710. package/build/client/_app/immutable/chunks/BZBtwMTi.js.gz +0 -0
  711. package/build/client/_app/immutable/chunks/Bgr835Pi.js +0 -1
  712. package/build/client/_app/immutable/chunks/Bgr835Pi.js.br +0 -0
  713. package/build/client/_app/immutable/chunks/Bgr835Pi.js.gz +0 -0
  714. package/build/client/_app/immutable/chunks/BjyVfYlZ.js +0 -1
  715. package/build/client/_app/immutable/chunks/BjyVfYlZ.js.br +0 -0
  716. package/build/client/_app/immutable/chunks/BjyVfYlZ.js.gz +0 -0
  717. package/build/client/_app/immutable/chunks/BmMewc6x.js +0 -1
  718. package/build/client/_app/immutable/chunks/BmMewc6x.js.br +0 -0
  719. package/build/client/_app/immutable/chunks/BmMewc6x.js.gz +0 -0
  720. package/build/client/_app/immutable/chunks/BnNwzYYL.js +0 -1
  721. package/build/client/_app/immutable/chunks/BnNwzYYL.js.br +0 -0
  722. package/build/client/_app/immutable/chunks/BnNwzYYL.js.gz +0 -0
  723. package/build/client/_app/immutable/chunks/BnYqgmHu.js +0 -1
  724. package/build/client/_app/immutable/chunks/BnYqgmHu.js.br +0 -0
  725. package/build/client/_app/immutable/chunks/BnYqgmHu.js.gz +0 -0
  726. package/build/client/_app/immutable/chunks/Bt4NxMDH.js +0 -1
  727. package/build/client/_app/immutable/chunks/Bt4NxMDH.js.br +0 -0
  728. package/build/client/_app/immutable/chunks/Bt4NxMDH.js.gz +0 -0
  729. package/build/client/_app/immutable/chunks/BtbpZs3b.js +0 -1
  730. package/build/client/_app/immutable/chunks/BtbpZs3b.js.br +0 -0
  731. package/build/client/_app/immutable/chunks/BtbpZs3b.js.gz +0 -0
  732. package/build/client/_app/immutable/chunks/BwrmCXAQ.js +0 -1
  733. package/build/client/_app/immutable/chunks/BwrmCXAQ.js.br +0 -0
  734. package/build/client/_app/immutable/chunks/BwrmCXAQ.js.gz +0 -0
  735. package/build/client/_app/immutable/chunks/Bxe4Ke0E.js +0 -1
  736. package/build/client/_app/immutable/chunks/Bxe4Ke0E.js.br +0 -0
  737. package/build/client/_app/immutable/chunks/Bxe4Ke0E.js.gz +0 -0
  738. package/build/client/_app/immutable/chunks/Bxzw0Tqc.js +0 -1
  739. package/build/client/_app/immutable/chunks/Bxzw0Tqc.js.br +0 -0
  740. package/build/client/_app/immutable/chunks/Bxzw0Tqc.js.gz +0 -0
  741. package/build/client/_app/immutable/chunks/C-78me63.js +0 -1
  742. package/build/client/_app/immutable/chunks/C-78me63.js.br +0 -0
  743. package/build/client/_app/immutable/chunks/C-78me63.js.gz +0 -0
  744. package/build/client/_app/immutable/chunks/C-XqSoT8.js +0 -1
  745. package/build/client/_app/immutable/chunks/C-XqSoT8.js.br +0 -0
  746. package/build/client/_app/immutable/chunks/C-XqSoT8.js.gz +0 -0
  747. package/build/client/_app/immutable/chunks/C1iIPWRF.js +0 -1
  748. package/build/client/_app/immutable/chunks/C1iIPWRF.js.br +0 -2
  749. package/build/client/_app/immutable/chunks/C1iIPWRF.js.gz +0 -0
  750. package/build/client/_app/immutable/chunks/C1mJOp4c.js +0 -1
  751. package/build/client/_app/immutable/chunks/C1mJOp4c.js.br +0 -2
  752. package/build/client/_app/immutable/chunks/C1mJOp4c.js.gz +0 -0
  753. package/build/client/_app/immutable/chunks/C4UKojFU.js +0 -5
  754. package/build/client/_app/immutable/chunks/C4UKojFU.js.br +0 -0
  755. package/build/client/_app/immutable/chunks/C4UKojFU.js.gz +0 -0
  756. package/build/client/_app/immutable/chunks/C6Fw5rKO.js +0 -1
  757. package/build/client/_app/immutable/chunks/C6Fw5rKO.js.br +0 -0
  758. package/build/client/_app/immutable/chunks/C6Fw5rKO.js.gz +0 -0
  759. package/build/client/_app/immutable/chunks/C7aKwH-Z.js +0 -1
  760. package/build/client/_app/immutable/chunks/C7aKwH-Z.js.br +0 -0
  761. package/build/client/_app/immutable/chunks/C7aKwH-Z.js.gz +0 -0
  762. package/build/client/_app/immutable/chunks/CGtlWLNx.js +0 -1
  763. package/build/client/_app/immutable/chunks/CGtlWLNx.js.br +0 -0
  764. package/build/client/_app/immutable/chunks/CGtlWLNx.js.gz +0 -0
  765. package/build/client/_app/immutable/chunks/CIGgnmEl.js +0 -1
  766. package/build/client/_app/immutable/chunks/CIGgnmEl.js.br +0 -0
  767. package/build/client/_app/immutable/chunks/CIGgnmEl.js.gz +0 -0
  768. package/build/client/_app/immutable/chunks/CIPwUaBC.js +0 -1
  769. package/build/client/_app/immutable/chunks/CIPwUaBC.js.br +0 -2
  770. package/build/client/_app/immutable/chunks/CIPwUaBC.js.gz +0 -0
  771. package/build/client/_app/immutable/chunks/CIu2eS_n.js +0 -1
  772. package/build/client/_app/immutable/chunks/CIu2eS_n.js.br +0 -0
  773. package/build/client/_app/immutable/chunks/CIu2eS_n.js.gz +0 -0
  774. package/build/client/_app/immutable/chunks/CRXHKEbp.js +0 -1
  775. package/build/client/_app/immutable/chunks/CRXHKEbp.js.br +0 -0
  776. package/build/client/_app/immutable/chunks/CRXHKEbp.js.gz +0 -0
  777. package/build/client/_app/immutable/chunks/CVMjleM1.js +0 -1
  778. package/build/client/_app/immutable/chunks/CVMjleM1.js.br +0 -0
  779. package/build/client/_app/immutable/chunks/CVMjleM1.js.gz +0 -0
  780. package/build/client/_app/immutable/chunks/CX-COuhv.js +0 -1
  781. package/build/client/_app/immutable/chunks/CX-COuhv.js.br +0 -0
  782. package/build/client/_app/immutable/chunks/CX-COuhv.js.gz +0 -0
  783. package/build/client/_app/immutable/chunks/CaK2Z2Ti.js +0 -5668
  784. package/build/client/_app/immutable/chunks/CaK2Z2Ti.js.br +0 -0
  785. package/build/client/_app/immutable/chunks/CaK2Z2Ti.js.gz +0 -0
  786. package/build/client/_app/immutable/chunks/Cd2yPAjZ.js +0 -1
  787. package/build/client/_app/immutable/chunks/Cd2yPAjZ.js.br +0 -0
  788. package/build/client/_app/immutable/chunks/Cd2yPAjZ.js.gz +0 -0
  789. package/build/client/_app/immutable/chunks/CdzffeZU.js +0 -1
  790. package/build/client/_app/immutable/chunks/CdzffeZU.js.br +0 -0
  791. package/build/client/_app/immutable/chunks/CdzffeZU.js.gz +0 -0
  792. package/build/client/_app/immutable/chunks/Cig9kq19.js +0 -1
  793. package/build/client/_app/immutable/chunks/Cig9kq19.js.br +0 -0
  794. package/build/client/_app/immutable/chunks/Cig9kq19.js.gz +0 -0
  795. package/build/client/_app/immutable/chunks/Cj7nkE2h.js +0 -1
  796. package/build/client/_app/immutable/chunks/Cj7nkE2h.js.br +0 -0
  797. package/build/client/_app/immutable/chunks/Cj7nkE2h.js.gz +0 -0
  798. package/build/client/_app/immutable/chunks/Coq3lgMD.js +0 -2
  799. package/build/client/_app/immutable/chunks/Coq3lgMD.js.br +0 -0
  800. package/build/client/_app/immutable/chunks/Coq3lgMD.js.gz +0 -0
  801. package/build/client/_app/immutable/chunks/Csw-Xm75.js +0 -1
  802. package/build/client/_app/immutable/chunks/Csw-Xm75.js.br +0 -0
  803. package/build/client/_app/immutable/chunks/Csw-Xm75.js.gz +0 -0
  804. package/build/client/_app/immutable/chunks/CveMouAA.js +0 -1
  805. package/build/client/_app/immutable/chunks/CveMouAA.js.br +0 -0
  806. package/build/client/_app/immutable/chunks/CveMouAA.js.gz +0 -0
  807. package/build/client/_app/immutable/chunks/DHE5c824.js +0 -1
  808. package/build/client/_app/immutable/chunks/DHE5c824.js.br +0 -5
  809. package/build/client/_app/immutable/chunks/DHE5c824.js.gz +0 -0
  810. package/build/client/_app/immutable/chunks/DKP8E04F.js +0 -1
  811. package/build/client/_app/immutable/chunks/DKP8E04F.js.br +0 -0
  812. package/build/client/_app/immutable/chunks/DKP8E04F.js.gz +0 -0
  813. package/build/client/_app/immutable/chunks/DKv1hY2T.js +0 -1
  814. package/build/client/_app/immutable/chunks/DKv1hY2T.js.br +0 -0
  815. package/build/client/_app/immutable/chunks/DKv1hY2T.js.gz +0 -0
  816. package/build/client/_app/immutable/chunks/DQXhYkCX.js +0 -1
  817. package/build/client/_app/immutable/chunks/DQXhYkCX.js.br +0 -0
  818. package/build/client/_app/immutable/chunks/DQXhYkCX.js.gz +0 -0
  819. package/build/client/_app/immutable/chunks/DSPTmHrx.js +0 -1
  820. package/build/client/_app/immutable/chunks/DSPTmHrx.js.br +0 -0
  821. package/build/client/_app/immutable/chunks/DSPTmHrx.js.gz +0 -0
  822. package/build/client/_app/immutable/chunks/DYtk7IHQ.js +0 -1
  823. package/build/client/_app/immutable/chunks/DYtk7IHQ.js.br +0 -0
  824. package/build/client/_app/immutable/chunks/DYtk7IHQ.js.gz +0 -0
  825. package/build/client/_app/immutable/chunks/DZ9SzbWJ.js +0 -1
  826. package/build/client/_app/immutable/chunks/DZ9SzbWJ.js.br +0 -0
  827. package/build/client/_app/immutable/chunks/DZ9SzbWJ.js.gz +0 -0
  828. package/build/client/_app/immutable/chunks/DZJp2sZf.js +0 -1
  829. package/build/client/_app/immutable/chunks/DZJp2sZf.js.br +0 -0
  830. package/build/client/_app/immutable/chunks/DZJp2sZf.js.gz +0 -0
  831. package/build/client/_app/immutable/chunks/Dant7fh7.js +0 -1
  832. package/build/client/_app/immutable/chunks/Dant7fh7.js.br +0 -1
  833. package/build/client/_app/immutable/chunks/Dant7fh7.js.gz +0 -0
  834. package/build/client/_app/immutable/chunks/Dcu8oyuy.js +0 -1
  835. package/build/client/_app/immutable/chunks/Dcu8oyuy.js.br +0 -0
  836. package/build/client/_app/immutable/chunks/Dcu8oyuy.js.gz +0 -0
  837. package/build/client/_app/immutable/chunks/DdXPBHQv.js +0 -1
  838. package/build/client/_app/immutable/chunks/DdXPBHQv.js.br +0 -0
  839. package/build/client/_app/immutable/chunks/DdXPBHQv.js.gz +0 -0
  840. package/build/client/_app/immutable/chunks/DkNYGsQB.js +0 -1
  841. package/build/client/_app/immutable/chunks/DkNYGsQB.js.br +0 -0
  842. package/build/client/_app/immutable/chunks/DkNYGsQB.js.gz +0 -0
  843. package/build/client/_app/immutable/chunks/DkqYjzNd.js +0 -1
  844. package/build/client/_app/immutable/chunks/DkqYjzNd.js.br +0 -0
  845. package/build/client/_app/immutable/chunks/DkqYjzNd.js.gz +0 -0
  846. package/build/client/_app/immutable/chunks/Dq8iY2sQ.js +0 -1
  847. package/build/client/_app/immutable/chunks/Dq8iY2sQ.js.br +0 -0
  848. package/build/client/_app/immutable/chunks/Dq8iY2sQ.js.gz +0 -0
  849. package/build/client/_app/immutable/chunks/DsEDHT19.js +0 -2
  850. package/build/client/_app/immutable/chunks/DsEDHT19.js.br +0 -0
  851. package/build/client/_app/immutable/chunks/DsEDHT19.js.gz +0 -0
  852. package/build/client/_app/immutable/chunks/DuhKreaj.js +0 -1
  853. package/build/client/_app/immutable/chunks/DuhKreaj.js.br +0 -0
  854. package/build/client/_app/immutable/chunks/DuhKreaj.js.gz +0 -0
  855. package/build/client/_app/immutable/chunks/Dw5JSqI5.js +0 -1
  856. package/build/client/_app/immutable/chunks/Dw5JSqI5.js.br +0 -0
  857. package/build/client/_app/immutable/chunks/Dw5JSqI5.js.gz +0 -0
  858. package/build/client/_app/immutable/chunks/GnhvQM9Y.js +0 -1
  859. package/build/client/_app/immutable/chunks/GnhvQM9Y.js.br +0 -0
  860. package/build/client/_app/immutable/chunks/GnhvQM9Y.js.gz +0 -0
  861. package/build/client/_app/immutable/chunks/PK2u21_Z.js +0 -1
  862. package/build/client/_app/immutable/chunks/PK2u21_Z.js.br +0 -0
  863. package/build/client/_app/immutable/chunks/PK2u21_Z.js.gz +0 -0
  864. package/build/client/_app/immutable/chunks/RvUJX5qg.js +0 -1
  865. package/build/client/_app/immutable/chunks/RvUJX5qg.js.br +0 -2
  866. package/build/client/_app/immutable/chunks/RvUJX5qg.js.gz +0 -0
  867. package/build/client/_app/immutable/chunks/S5rQgsAI.js +0 -1
  868. package/build/client/_app/immutable/chunks/S5rQgsAI.js.br +0 -0
  869. package/build/client/_app/immutable/chunks/S5rQgsAI.js.gz +0 -0
  870. package/build/client/_app/immutable/chunks/WA-hWjmr.js +0 -1
  871. package/build/client/_app/immutable/chunks/WA-hWjmr.js.br +0 -3
  872. package/build/client/_app/immutable/chunks/WA-hWjmr.js.gz +0 -0
  873. package/build/client/_app/immutable/chunks/XGPRtwJB.js +0 -1
  874. package/build/client/_app/immutable/chunks/XGPRtwJB.js.br +0 -0
  875. package/build/client/_app/immutable/chunks/XGPRtwJB.js.gz +0 -0
  876. package/build/client/_app/immutable/chunks/YX8wmykf.js +0 -1
  877. package/build/client/_app/immutable/chunks/YX8wmykf.js.br +0 -0
  878. package/build/client/_app/immutable/chunks/YX8wmykf.js.gz +0 -0
  879. package/build/client/_app/immutable/chunks/aRqdTN2F.js +0 -1
  880. package/build/client/_app/immutable/chunks/aRqdTN2F.js.br +0 -0
  881. package/build/client/_app/immutable/chunks/aRqdTN2F.js.gz +0 -0
  882. package/build/client/_app/immutable/chunks/bV62BwfQ.js +0 -3
  883. package/build/client/_app/immutable/chunks/bV62BwfQ.js.br +0 -0
  884. package/build/client/_app/immutable/chunks/bV62BwfQ.js.gz +0 -0
  885. package/build/client/_app/immutable/chunks/epnJ3lNj.js +0 -1
  886. package/build/client/_app/immutable/chunks/epnJ3lNj.js.br +0 -1
  887. package/build/client/_app/immutable/chunks/epnJ3lNj.js.gz +0 -0
  888. package/build/client/_app/immutable/chunks/fKRsXLvS.js +0 -1
  889. package/build/client/_app/immutable/chunks/fKRsXLvS.js.br +0 -0
  890. package/build/client/_app/immutable/chunks/fKRsXLvS.js.gz +0 -0
  891. package/build/client/_app/immutable/chunks/fsnOsLBo.js +0 -1
  892. package/build/client/_app/immutable/chunks/fsnOsLBo.js.br +0 -0
  893. package/build/client/_app/immutable/chunks/fsnOsLBo.js.gz +0 -0
  894. package/build/client/_app/immutable/chunks/ijzs6nNX.js +0 -1
  895. package/build/client/_app/immutable/chunks/ijzs6nNX.js.br +0 -0
  896. package/build/client/_app/immutable/chunks/ijzs6nNX.js.gz +0 -0
  897. package/build/client/_app/immutable/chunks/jDX2nlFd.js +0 -1
  898. package/build/client/_app/immutable/chunks/jDX2nlFd.js.br +0 -0
  899. package/build/client/_app/immutable/chunks/jDX2nlFd.js.gz +0 -0
  900. package/build/client/_app/immutable/chunks/kaMZphk6.js +0 -1
  901. package/build/client/_app/immutable/chunks/kaMZphk6.js.br +0 -0
  902. package/build/client/_app/immutable/chunks/kaMZphk6.js.gz +0 -0
  903. package/build/client/_app/immutable/chunks/ph7s5tIj.js +0 -1
  904. package/build/client/_app/immutable/chunks/ph7s5tIj.js.br +0 -0
  905. package/build/client/_app/immutable/chunks/ph7s5tIj.js.gz +0 -0
  906. package/build/client/_app/immutable/chunks/rPbLB6o9.js +0 -1
  907. package/build/client/_app/immutable/chunks/rPbLB6o9.js.br +0 -0
  908. package/build/client/_app/immutable/chunks/rPbLB6o9.js.gz +0 -0
  909. package/build/client/_app/immutable/chunks/w8GOraqi.js +0 -1
  910. package/build/client/_app/immutable/chunks/w8GOraqi.js.br +0 -1
  911. package/build/client/_app/immutable/chunks/w8GOraqi.js.gz +0 -0
  912. package/build/client/_app/immutable/chunks/y8MTydYo.js +0 -1
  913. package/build/client/_app/immutable/chunks/y8MTydYo.js.br +0 -0
  914. package/build/client/_app/immutable/chunks/y8MTydYo.js.gz +0 -0
  915. package/build/client/_app/immutable/entry/app.zgvf2V0e.js +0 -2
  916. package/build/client/_app/immutable/entry/app.zgvf2V0e.js.br +0 -0
  917. package/build/client/_app/immutable/entry/app.zgvf2V0e.js.gz +0 -0
  918. package/build/client/_app/immutable/entry/start.BlSEH1b-.js +0 -1
  919. package/build/client/_app/immutable/entry/start.BlSEH1b-.js.br +0 -1
  920. package/build/client/_app/immutable/entry/start.BlSEH1b-.js.gz +0 -0
  921. package/build/client/_app/immutable/nodes/0.DDlfwju1.js +0 -1
  922. package/build/client/_app/immutable/nodes/0.DDlfwju1.js.br +0 -0
  923. package/build/client/_app/immutable/nodes/0.DDlfwju1.js.gz +0 -0
  924. package/build/client/_app/immutable/nodes/1.CT-CS3Lf.js +0 -1
  925. package/build/client/_app/immutable/nodes/1.CT-CS3Lf.js.br +0 -0
  926. package/build/client/_app/immutable/nodes/1.CT-CS3Lf.js.gz +0 -0
  927. package/build/client/_app/immutable/nodes/10.GU7MKlea.js +0 -3
  928. package/build/client/_app/immutable/nodes/10.GU7MKlea.js.br +0 -0
  929. package/build/client/_app/immutable/nodes/10.GU7MKlea.js.gz +0 -0
  930. package/build/client/_app/immutable/nodes/11.BwHp9Ujl.js +0 -3
  931. package/build/client/_app/immutable/nodes/11.BwHp9Ujl.js.br +0 -0
  932. package/build/client/_app/immutable/nodes/11.BwHp9Ujl.js.gz +0 -0
  933. package/build/client/_app/immutable/nodes/12.CssKGTZC.js +0 -1
  934. package/build/client/_app/immutable/nodes/12.CssKGTZC.js.br +0 -0
  935. package/build/client/_app/immutable/nodes/12.CssKGTZC.js.gz +0 -0
  936. package/build/client/_app/immutable/nodes/13.BmnVKeBk.js +0 -2
  937. package/build/client/_app/immutable/nodes/13.BmnVKeBk.js.br +0 -0
  938. package/build/client/_app/immutable/nodes/13.BmnVKeBk.js.gz +0 -0
  939. package/build/client/_app/immutable/nodes/14.BPeOw1q9.js +0 -2
  940. package/build/client/_app/immutable/nodes/14.BPeOw1q9.js.br +0 -0
  941. package/build/client/_app/immutable/nodes/14.BPeOw1q9.js.gz +0 -0
  942. package/build/client/_app/immutable/nodes/15.pxktMg7F.js +0 -28
  943. package/build/client/_app/immutable/nodes/15.pxktMg7F.js.br +0 -0
  944. package/build/client/_app/immutable/nodes/15.pxktMg7F.js.gz +0 -0
  945. package/build/client/_app/immutable/nodes/16.DenpNJrL.js +0 -5
  946. package/build/client/_app/immutable/nodes/16.DenpNJrL.js.br +0 -0
  947. package/build/client/_app/immutable/nodes/16.DenpNJrL.js.gz +0 -0
  948. package/build/client/_app/immutable/nodes/17.D0gRQZvB.js +0 -2
  949. package/build/client/_app/immutable/nodes/17.D0gRQZvB.js.br +0 -0
  950. package/build/client/_app/immutable/nodes/17.D0gRQZvB.js.gz +0 -0
  951. package/build/client/_app/immutable/nodes/18.d7Mv67mg.js +0 -1
  952. package/build/client/_app/immutable/nodes/18.d7Mv67mg.js.br +0 -0
  953. package/build/client/_app/immutable/nodes/18.d7Mv67mg.js.gz +0 -0
  954. package/build/client/_app/immutable/nodes/19.TdbkvCr1.js +0 -7
  955. package/build/client/_app/immutable/nodes/19.TdbkvCr1.js.br +0 -0
  956. package/build/client/_app/immutable/nodes/19.TdbkvCr1.js.gz +0 -0
  957. package/build/client/_app/immutable/nodes/2.BjuwM9fT.js +0 -1
  958. package/build/client/_app/immutable/nodes/2.BjuwM9fT.js.br +0 -0
  959. package/build/client/_app/immutable/nodes/2.BjuwM9fT.js.gz +0 -0
  960. package/build/client/_app/immutable/nodes/20.CrIIYoui.js +0 -2
  961. package/build/client/_app/immutable/nodes/20.CrIIYoui.js.br +0 -0
  962. package/build/client/_app/immutable/nodes/20.CrIIYoui.js.gz +0 -0
  963. package/build/client/_app/immutable/nodes/21.DrMsjatP.js +0 -1
  964. package/build/client/_app/immutable/nodes/21.DrMsjatP.js.br +0 -1
  965. package/build/client/_app/immutable/nodes/21.DrMsjatP.js.gz +0 -0
  966. package/build/client/_app/immutable/nodes/22.IUl9kYqD.js +0 -6
  967. package/build/client/_app/immutable/nodes/22.IUl9kYqD.js.br +0 -0
  968. package/build/client/_app/immutable/nodes/22.IUl9kYqD.js.gz +0 -0
  969. package/build/client/_app/immutable/nodes/24.CkDT5nAr.js +0 -3
  970. package/build/client/_app/immutable/nodes/24.CkDT5nAr.js.br +0 -0
  971. package/build/client/_app/immutable/nodes/24.CkDT5nAr.js.gz +0 -0
  972. package/build/client/_app/immutable/nodes/25.DVLp6Mx-.js +0 -16
  973. package/build/client/_app/immutable/nodes/25.DVLp6Mx-.js.br +0 -0
  974. package/build/client/_app/immutable/nodes/25.DVLp6Mx-.js.gz +0 -0
  975. package/build/client/_app/immutable/nodes/26.T6gXfdc0.js +0 -6
  976. package/build/client/_app/immutable/nodes/26.T6gXfdc0.js.br +0 -0
  977. package/build/client/_app/immutable/nodes/26.T6gXfdc0.js.gz +0 -0
  978. package/build/client/_app/immutable/nodes/27.DlKZBzsS.js +0 -1
  979. package/build/client/_app/immutable/nodes/27.DlKZBzsS.js.br +0 -0
  980. package/build/client/_app/immutable/nodes/27.DlKZBzsS.js.gz +0 -0
  981. package/build/client/_app/immutable/nodes/28.CJEzjl5h.js +0 -3
  982. package/build/client/_app/immutable/nodes/28.CJEzjl5h.js.br +0 -0
  983. package/build/client/_app/immutable/nodes/28.CJEzjl5h.js.gz +0 -0
  984. package/build/client/_app/immutable/nodes/29.D2a6iA9N.js +0 -4
  985. package/build/client/_app/immutable/nodes/29.D2a6iA9N.js.br +0 -0
  986. package/build/client/_app/immutable/nodes/29.D2a6iA9N.js.gz +0 -0
  987. package/build/client/_app/immutable/nodes/3.B4L87xMC.js +0 -1
  988. package/build/client/_app/immutable/nodes/3.B4L87xMC.js.br +0 -0
  989. package/build/client/_app/immutable/nodes/3.B4L87xMC.js.gz +0 -0
  990. package/build/client/_app/immutable/nodes/30.DoC4yKwa.js +0 -6
  991. package/build/client/_app/immutable/nodes/30.DoC4yKwa.js.br +0 -0
  992. package/build/client/_app/immutable/nodes/30.DoC4yKwa.js.gz +0 -0
  993. package/build/client/_app/immutable/nodes/31.aBxQQ0cy.js +0 -2
  994. package/build/client/_app/immutable/nodes/31.aBxQQ0cy.js.br +0 -0
  995. package/build/client/_app/immutable/nodes/31.aBxQQ0cy.js.gz +0 -0
  996. package/build/client/_app/immutable/nodes/32.D9Wg1lIc.js +0 -2
  997. package/build/client/_app/immutable/nodes/32.D9Wg1lIc.js.br +0 -0
  998. package/build/client/_app/immutable/nodes/32.D9Wg1lIc.js.gz +0 -0
  999. package/build/client/_app/immutable/nodes/33.TorRFIPp.js +0 -2
  1000. package/build/client/_app/immutable/nodes/33.TorRFIPp.js.br +0 -0
  1001. package/build/client/_app/immutable/nodes/33.TorRFIPp.js.gz +0 -0
  1002. package/build/client/_app/immutable/nodes/34.BvhbW7DK.js +0 -1
  1003. package/build/client/_app/immutable/nodes/34.BvhbW7DK.js.br +0 -0
  1004. package/build/client/_app/immutable/nodes/34.BvhbW7DK.js.gz +0 -0
  1005. package/build/client/_app/immutable/nodes/35.se1o_pPA.js +0 -2
  1006. package/build/client/_app/immutable/nodes/35.se1o_pPA.js.br +0 -0
  1007. package/build/client/_app/immutable/nodes/35.se1o_pPA.js.gz +0 -0
  1008. package/build/client/_app/immutable/nodes/4.DxIEBMVB.js +0 -1
  1009. package/build/client/_app/immutable/nodes/4.DxIEBMVB.js.br +0 -0
  1010. package/build/client/_app/immutable/nodes/4.DxIEBMVB.js.gz +0 -0
  1011. package/build/client/_app/immutable/nodes/5.DwJ9ckor.js +0 -1
  1012. package/build/client/_app/immutable/nodes/5.DwJ9ckor.js.br +0 -0
  1013. package/build/client/_app/immutable/nodes/5.DwJ9ckor.js.gz +0 -0
  1014. package/build/client/_app/immutable/nodes/6.Cf3XQq6i.js +0 -1
  1015. package/build/client/_app/immutable/nodes/6.Cf3XQq6i.js.br +0 -0
  1016. package/build/client/_app/immutable/nodes/6.Cf3XQq6i.js.gz +0 -0
  1017. package/build/client/_app/immutable/nodes/7.a8ebhhdr.js +0 -1
  1018. package/build/client/_app/immutable/nodes/7.a8ebhhdr.js.br +0 -0
  1019. package/build/client/_app/immutable/nodes/7.a8ebhhdr.js.gz +0 -0
  1020. package/build/client/_app/immutable/nodes/8.DQlhLrhE.js +0 -3
  1021. package/build/client/_app/immutable/nodes/8.DQlhLrhE.js.br +0 -0
  1022. package/build/client/_app/immutable/nodes/8.DQlhLrhE.js.gz +0 -0
  1023. package/build/client/_app/immutable/nodes/9.i5uRm0ah.js +0 -1
  1024. package/build/client/_app/immutable/nodes/9.i5uRm0ah.js.br +0 -0
  1025. package/build/client/_app/immutable/nodes/9.i5uRm0ah.js.gz +0 -0
  1026. package/build/server/chunks/chunks/AppHeader.js-Dmg3muny.js +0 -315
  1027. package/build/server/chunks/chunks/AppHeader.js-Dmg3muny.js.map +0 -1
  1028. package/build/server/chunks/chunks/SettingsMenu.js-DbC1KIEF.js +0 -2642
  1029. package/build/server/chunks/chunks/SettingsMenu.js-DbC1KIEF.js.map +0 -1
  1030. package/build/server/chunks/chunks/SideNav.js-CIu2x_eb.js +0 -194
  1031. package/build/server/chunks/chunks/SideNav.js-CIu2x_eb.js.map +0 -1
  1032. package/build/server/chunks/chunks/admin-auth.server.js-CUudS1QN.js +0 -324
  1033. package/build/server/chunks/chunks/admin-auth.server.js-CUudS1QN.js.map +0 -1
  1034. package/build/server/chunks/chunks/client.js-DBFSwTR6.js +0 -58
  1035. package/build/server/chunks/chunks/client.js-DBFSwTR6.js.map +0 -1
  1036. package/build/server/chunks/chunks/forms.js-BN9JzQQw.js +0 -2
  1037. package/build/server/chunks/chunks/forms.js-BN9JzQQw.js.map +0 -1
  1038. package/build/server/chunks/chunks/handlers.js-BIQ7FHYG.js +0 -1581
  1039. package/build/server/chunks/chunks/handlers.js-BIQ7FHYG.js.map +0 -1
  1040. package/build/server/chunks/chunks/internal2.js-BU8iC-tE.js +0 -219
  1041. package/build/server/chunks/chunks/internal2.js-BU8iC-tE.js.map +0 -1
  1042. package/build/server/chunks/chunks/navigation.js-BN9JzQQw.js +0 -2
  1043. package/build/server/chunks/chunks/navigation.js-BN9JzQQw.js.map +0 -1
  1044. package/build/server/chunks/chunks/oauth.js-DE5uJZHo.js +0 -414
  1045. package/build/server/chunks/chunks/oauth.js-DE5uJZHo.js.map +0 -1
  1046. package/build/server/chunks/chunks/package.js-CE6vMq8c.js +0 -85
  1047. package/build/server/chunks/chunks/package.js-CE6vMq8c.js.map +0 -1
  1048. package/build/server/chunks/chunks/paths.js-arJy6n3P.js +0 -19
  1049. package/build/server/chunks/chunks/paths.js-arJy6n3P.js.map +0 -1
  1050. package/build/server/chunks/chunks/presets.server.js-DpRqy9Ot.js +0 -21
  1051. package/build/server/chunks/chunks/presets.server.js-DpRqy9Ot.js.map +0 -1
  1052. package/build/server/chunks/chunks/server2.js-DPKPqicH.js +0 -82
  1053. package/build/server/chunks/chunks/server2.js-DPKPqicH.js.map +0 -1
  1054. package/build/server/chunks/chunks/server3.js-dyrGSi_V.js +0 -20720
  1055. package/build/server/chunks/chunks/server3.js-dyrGSi_V.js.map +0 -1
  1056. package/build/server/chunks/chunks/state.js-BoE3eRiB.js +0 -74
  1057. package/build/server/chunks/chunks/state.js-BoE3eRiB.js.map +0 -1
  1058. package/build/server/chunks/chunks/stores.js-D5z4mI1h.js +0 -35
  1059. package/build/server/chunks/chunks/stores.js-D5z4mI1h.js.map +0 -1
  1060. package/build/server/chunks/chunks/tokens.js-Btk3HBnU.js +0 -25
  1061. package/build/server/chunks/chunks/tokens.js-Btk3HBnU.js.map +0 -1
  1062. package/build/server/chunks/chunks/visibility.js-DbJh2Uy-.js +0 -201
  1063. package/build/server/chunks/chunks/visibility.js-DbJh2Uy-.js.map +0 -1
  1064. package/build/server/chunks/entries/endpoints/.well-known/oauth-authorization-server/_server.ts.js-Cp047OBb.js +0 -18
  1065. package/build/server/chunks/entries/endpoints/.well-known/oauth-authorization-server/_server.ts.js-Cp047OBb.js.map +0 -1
  1066. package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/_server.ts.js-bPJD31Un.js +0 -18
  1067. package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/_server.ts.js-bPJD31Un.js.map +0 -1
  1068. package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/mcp/_server.ts.js--VPlq_l2.js +0 -18
  1069. package/build/server/chunks/entries/endpoints/.well-known/oauth-protected-resource/mcp/_server.ts.js--VPlq_l2.js.map +0 -1
  1070. package/build/server/chunks/entries/endpoints/api/admin/users/_id_/disable/_server.ts.js-NC5-C8di.js +0 -78
  1071. package/build/server/chunks/entries/endpoints/api/admin/users/_id_/disable/_server.ts.js-NC5-C8di.js.map +0 -1
  1072. package/build/server/chunks/entries/endpoints/api/v1/compute/_server.ts.js-BgIVMSJO.js +0 -94
  1073. package/build/server/chunks/entries/endpoints/api/v1/compute/_server.ts.js-BgIVMSJO.js.map +0 -1
  1074. package/build/server/chunks/entries/endpoints/api/v1/compute/schema/_server.ts.js-D7ncwcF3.js +0 -79
  1075. package/build/server/chunks/entries/endpoints/api/v1/compute/schema/_server.ts.js-D7ncwcF3.js.map +0 -1
  1076. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/_server.ts.js-CbDFvnqw.js +0 -50
  1077. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/_server.ts.js-CbDFvnqw.js.map +0 -1
  1078. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/image/_server.ts.js-Dt_cF2hC.js +0 -48
  1079. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/image/_server.ts.js-Dt_cF2hC.js.map +0 -1
  1080. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/publish/_server.ts.js-SCmtd1de.js +0 -51
  1081. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/publish/_server.ts.js-SCmtd1de.js.map +0 -1
  1082. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/schema/_server.ts.js-1z1sH92H.js +0 -48
  1083. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/schema/_server.ts.js-1z1sH92H.js.map +0 -1
  1084. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_linkId_/_server.ts.js-n7jnL0UG.js +0 -48
  1085. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_linkId_/_server.ts.js-n7jnL0UG.js.map +0 -1
  1086. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_server.ts.js-CdcQRF_Q.js +0 -52
  1087. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_server.ts.js-CdcQRF_Q.js.map +0 -1
  1088. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/solve/_server.ts.js-DRfyBQ6p.js +0 -99
  1089. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/solve/_server.ts.js-DRfyBQ6p.js.map +0 -1
  1090. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_server.ts.js-Bq6qKh34.js +0 -53
  1091. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_server.ts.js-Bq6qKh34.js.map +0 -1
  1092. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/_server.ts.js-Ckl1meMq.js +0 -49
  1093. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/_server.ts.js-Ckl1meMq.js.map +0 -1
  1094. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/schema/_server.ts.js-IJGU_qvT.js +0 -48
  1095. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/schema/_server.ts.js-IJGU_qvT.js.map +0 -1
  1096. package/build/server/chunks/entries/endpoints/api/v1/definitions/_server.ts.js-Bjus8ECY.js +0 -51
  1097. package/build/server/chunks/entries/endpoints/api/v1/definitions/_server.ts.js-Bjus8ECY.js.map +0 -1
  1098. package/build/server/chunks/entries/endpoints/api/v1/me/_server.ts.js-BUqQCUNR.js +0 -47
  1099. package/build/server/chunks/entries/endpoints/api/v1/me/_server.ts.js-BUqQCUNR.js.map +0 -1
  1100. package/build/server/chunks/entries/endpoints/api/v1/me/starred/_guid_/_server.ts.js-B0RXe4Gi.js +0 -48
  1101. package/build/server/chunks/entries/endpoints/api/v1/me/starred/_guid_/_server.ts.js-B0RXe4Gi.js.map +0 -1
  1102. package/build/server/chunks/entries/endpoints/api/v1/me/token/_server.ts.js-CZ_CSMEo.js +0 -47
  1103. package/build/server/chunks/entries/endpoints/api/v1/me/token/_server.ts.js-CZ_CSMEo.js.map +0 -1
  1104. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/_server.ts.js-DeU3zkJ_.js +0 -47
  1105. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/_server.ts.js-DeU3zkJ_.js.map +0 -1
  1106. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/assets/_kind_/_server.ts.js-DZbENMsh.js +0 -48
  1107. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/assets/_kind_/_server.ts.js-DZbENMsh.js.map +0 -1
  1108. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/compute/_server.ts.js-EFl_CQbx.js +0 -48
  1109. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/compute/_server.ts.js-EFl_CQbx.js.map +0 -1
  1110. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/_server.ts.js-BIgDolNy.js +0 -47
  1111. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/_server.ts.js-BIgDolNy.js.map +0 -1
  1112. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/resend/_server.ts.js-CHJFAGcB.js +0 -47
  1113. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/resend/_server.ts.js-CHJFAGcB.js.map +0 -1
  1114. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_server.ts.js-ZJXGGudC.js +0 -48
  1115. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_server.ts.js-ZJXGGudC.js.map +0 -1
  1116. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_server.ts.js-Bb1Vp6y9.js +0 -47
  1117. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_server.ts.js-Bb1Vp6y9.js.map +0 -1
  1118. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_userId_/_server.ts.js-DJBfCWL0.js +0 -48
  1119. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_userId_/_server.ts.js-DJBfCWL0.js.map +0 -1
  1120. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_server.ts.js-Bc21-12N.js +0 -48
  1121. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_server.ts.js-Bc21-12N.js.map +0 -1
  1122. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_tokenId_/_server.ts.js-B0_bDRlJ.js +0 -47
  1123. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/tokens/_tokenId_/_server.ts.js-B0_bDRlJ.js.map +0 -1
  1124. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/_server.ts.js-Dvkz0n_k.js +0 -50
  1125. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/_server.ts.js-Dvkz0n_k.js.map +0 -1
  1126. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_server.ts.js-Bz5MH6GU.js +0 -49
  1127. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_server.ts.js-Bz5MH6GU.js.map +0 -1
  1128. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_userId_/_server.ts.js-C5PPN-9Q.js +0 -49
  1129. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_userId_/_server.ts.js-C5PPN-9Q.js.map +0 -1
  1130. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/reclaim/_server.ts.js-DMdh0AIG.js +0 -48
  1131. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/reclaim/_server.ts.js-DMdh0AIG.js.map +0 -1
  1132. package/build/server/chunks/entries/endpoints/api/v1/projects/_server.ts.js-14TBNz6h.js +0 -48
  1133. package/build/server/chunks/entries/endpoints/api/v1/projects/_server.ts.js-14TBNz6h.js.map +0 -1
  1134. package/build/server/chunks/entries/endpoints/api/v1/solve-events/_solveId_/_server.ts.js-DHkEUeis.js +0 -67
  1135. package/build/server/chunks/entries/endpoints/api/v1/solve-events/_solveId_/_server.ts.js-DHkEUeis.js.map +0 -1
  1136. package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-CvO2uKlW.js +0 -55
  1137. package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-CvO2uKlW.js.map +0 -1
  1138. package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-B7GgpZxT.js +0 -61
  1139. package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-B7GgpZxT.js.map +0 -1
  1140. package/build/server/chunks/entries/endpoints/mcp/_server.ts.js-IVY8-s6C.js +0 -28
  1141. package/build/server/chunks/entries/endpoints/mcp/_server.ts.js-IVY8-s6C.js.map +0 -1
  1142. package/build/server/chunks/entries/endpoints/oauth/register/_server.ts.js-CIw9TdIP.js +0 -29
  1143. package/build/server/chunks/entries/endpoints/oauth/register/_server.ts.js-CIw9TdIP.js.map +0 -1
  1144. package/build/server/chunks/entries/endpoints/oauth/token/_server.ts.js-D18jHhpr.js +0 -32
  1145. package/build/server/chunks/entries/endpoints/oauth/token/_server.ts.js-D18jHhpr.js.map +0 -1
  1146. package/build/server/chunks/entries/hooks.server.js-BMJMibmA.js +0 -374
  1147. package/build/server/chunks/entries/hooks.server.js-BMJMibmA.js.map +0 -1
  1148. package/build/server/chunks/entries/pages/_error.svelte.js-Wes7GGn0.js +0 -38
  1149. package/build/server/chunks/entries/pages/_error.svelte.js-Wes7GGn0.js.map +0 -1
  1150. package/build/server/chunks/entries/pages/_layout.server.ts.js-D2b-mTKR.js +0 -37
  1151. package/build/server/chunks/entries/pages/_layout.server.ts.js-D2b-mTKR.js.map +0 -1
  1152. package/build/server/chunks/entries/pages/_page.server.ts.js-BNCpvhik.js +0 -56
  1153. package/build/server/chunks/entries/pages/_page.server.ts.js-BNCpvhik.js.map +0 -1
  1154. package/build/server/chunks/entries/pages/_page.svelte.js-CSMaq9gk.js +0 -160
  1155. package/build/server/chunks/entries/pages/_page.svelte.js-CSMaq9gk.js.map +0 -1
  1156. package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-F5AKZTPh.js +0 -180
  1157. package/build/server/chunks/entries/pages/accept-invite/_page.server.ts.js-F5AKZTPh.js.map +0 -1
  1158. package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-g9X0W9g5.js +0 -135
  1159. package/build/server/chunks/entries/pages/accept-invite/_page.svelte.js-g9X0W9g5.js.map +0 -1
  1160. package/build/server/chunks/entries/pages/admin/_error.svelte.js-Dy7B6u1p.js +0 -40
  1161. package/build/server/chunks/entries/pages/admin/_error.svelte.js-Dy7B6u1p.js.map +0 -1
  1162. package/build/server/chunks/entries/pages/admin/_layout.svelte.js-YM8x33nC.js +0 -123
  1163. package/build/server/chunks/entries/pages/admin/_layout.svelte.js-YM8x33nC.js.map +0 -1
  1164. package/build/server/chunks/entries/pages/admin/_page.server.ts.js-C-lJbWiu.js +0 -76
  1165. package/build/server/chunks/entries/pages/admin/_page.server.ts.js-C-lJbWiu.js.map +0 -1
  1166. package/build/server/chunks/entries/pages/admin/_page.svelte.js-Dd290jCB.js +0 -396
  1167. package/build/server/chunks/entries/pages/admin/_page.svelte.js-Dd290jCB.js.map +0 -1
  1168. package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-R_uIvznC.js +0 -841
  1169. package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-R_uIvznC.js.map +0 -1
  1170. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-DlIHoacY.js +0 -639
  1171. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.svelte.js-DlIHoacY.js.map +0 -1
  1172. package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-CqCONG2T.js +0 -286
  1173. package/build/server/chunks/entries/pages/admin/projects/_page.svelte.js-CqCONG2T.js.map +0 -1
  1174. package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-BzivWYdM.js +0 -87
  1175. package/build/server/chunks/entries/pages/admin/system/_page.server.ts.js-BzivWYdM.js.map +0 -1
  1176. package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-DlojXbRo.js +0 -1389
  1177. package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-DlojXbRo.js.map +0 -1
  1178. package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-CKrqGQhk.js +0 -636
  1179. package/build/server/chunks/entries/pages/admin/users/_page.svelte.js-CKrqGQhk.js.map +0 -1
  1180. package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-BFF03kzK.js +0 -46
  1181. package/build/server/chunks/entries/pages/auth/email/sent/_page.svelte.js-BFF03kzK.js.map +0 -1
  1182. package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-C9oxvtW2.js +0 -62
  1183. package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-C9oxvtW2.js.map +0 -1
  1184. package/build/server/chunks/entries/pages/docs/api/_page.svelte.js-CIW00UIy.js +0 -85
  1185. package/build/server/chunks/entries/pages/docs/api/_page.svelte.js-CIW00UIy.js.map +0 -1
  1186. package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-DQbPavD9.js +0 -14439
  1187. package/build/server/chunks/entries/pages/library/_guid_/_page.svelte.js-DQbPavD9.js.map +0 -1
  1188. package/build/server/chunks/entries/pages/library/_page.server.ts.js-5w66CzG-.js +0 -51
  1189. package/build/server/chunks/entries/pages/library/_page.server.ts.js-5w66CzG-.js.map +0 -1
  1190. package/build/server/chunks/entries/pages/library/_page.svelte.js-M1iB4y42.js +0 -301
  1191. package/build/server/chunks/entries/pages/library/_page.svelte.js-M1iB4y42.js.map +0 -1
  1192. package/build/server/chunks/entries/pages/login/_page.server.ts.js-DkMIgM8K.js +0 -101
  1193. package/build/server/chunks/entries/pages/login/_page.server.ts.js-DkMIgM8K.js.map +0 -1
  1194. package/build/server/chunks/entries/pages/login/_page.svelte.js-DAwQl75m.js +0 -214
  1195. package/build/server/chunks/entries/pages/login/_page.svelte.js-DAwQl75m.js.map +0 -1
  1196. package/build/server/chunks/entries/pages/logout/_page.server.ts.js-B_VpH_kD.js +0 -19
  1197. package/build/server/chunks/entries/pages/logout/_page.server.ts.js-B_VpH_kD.js.map +0 -1
  1198. package/build/server/chunks/entries/pages/oauth/authorize/_page.server.ts.js-DEhWK4zC.js +0 -100
  1199. package/build/server/chunks/entries/pages/oauth/authorize/_page.server.ts.js-DEhWK4zC.js.map +0 -1
  1200. package/build/server/chunks/entries/pages/oauth/authorize/_page.svelte.js-CXW5IjJT.js +0 -122
  1201. package/build/server/chunks/entries/pages/oauth/authorize/_page.svelte.js-CXW5IjJT.js.map +0 -1
  1202. package/build/server/chunks/entries/pages/projects/_layout.svelte.js-CnMd5cuW.js +0 -50
  1203. package/build/server/chunks/entries/pages/projects/_layout.svelte.js-CnMd5cuW.js.map +0 -1
  1204. package/build/server/chunks/entries/pages/projects/_page.svelte.js-CLjGhHx1.js +0 -3635
  1205. package/build/server/chunks/entries/pages/projects/_page.svelte.js-CLjGhHx1.js.map +0 -1
  1206. package/build/server/chunks/entries/pages/setup/_page.server.ts.js-Dyk_PCWn.js +0 -116
  1207. package/build/server/chunks/entries/pages/setup/_page.server.ts.js-Dyk_PCWn.js.map +0 -1
  1208. package/build/server/chunks/entries/pages/setup/_page.svelte.js-xI8lN_Ey.js +0 -249
  1209. package/build/server/chunks/entries/pages/setup/_page.svelte.js-xI8lN_Ey.js.map +0 -1
  1210. package/build/server/chunks/entries/pages/team/_layout.svelte.js-CQ0fA4HA.js +0 -176
  1211. package/build/server/chunks/entries/pages/team/_layout.svelte.js-CQ0fA4HA.js.map +0 -1
  1212. package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-UmzYk6sO.js +0 -616
  1213. package/build/server/chunks/entries/pages/team/compute/_page.svelte.js-UmzYk6sO.js.map +0 -1
  1214. package/build/server/chunks/entries/pages/team/members/_page.svelte.js-B8VJFFYi.js +0 -807
  1215. package/build/server/chunks/entries/pages/team/members/_page.svelte.js-B8VJFFYi.js.map +0 -1
  1216. package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-CEUspuMF.js +0 -60
  1217. package/build/server/chunks/entries/pages/team/projects/_page.server.ts.js-CEUspuMF.js.map +0 -1
  1218. package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-j6ItshE0.js +0 -424
  1219. package/build/server/chunks/entries/pages/team/projects/_page.svelte.js-j6ItshE0.js.map +0 -1
  1220. package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-B8yH3C_q.js +0 -266
  1221. package/build/server/chunks/entries/pages/team/reclaim/_page.svelte.js-B8yH3C_q.js.map +0 -1
  1222. package/build/server/chunks/entries/pages/team/shares/_page.svelte.js-CvDxUXP5.js +0 -314
  1223. package/build/server/chunks/entries/pages/team/shares/_page.svelte.js-CvDxUXP5.js.map +0 -1
  1224. package/build/server/chunks/entries/pages/team/tokens/_page.server.ts.js-uu7LRDyw.js +0 -65
  1225. package/build/server/chunks/entries/pages/team/tokens/_page.server.ts.js-uu7LRDyw.js.map +0 -1
  1226. package/build/server/chunks/entries/pages/team/tokens/_page.svelte.js-vwRs6ROb.js +0 -736
  1227. package/build/server/chunks/entries/pages/team/tokens/_page.svelte.js-vwRs6ROb.js.map +0 -1
  1228. package/build/server/chunks/handler-ULVEykx0.js +0 -1206
  1229. package/build/server/chunks/handler-ULVEykx0.js.map +0 -1
  1230. package/build/server/chunks/index.js-6glPmh6y.js +0 -3743
  1231. package/build/server/chunks/index.js-6glPmh6y.js.map +0 -1
  1232. package/build/server/chunks/manifest.js-CRUR2Uk1.js +0 -719
  1233. package/build/server/chunks/manifest.js-CRUR2Uk1.js.map +0 -1
  1234. package/build/server/chunks/nodes/0.js-DBVupYnX.js +0 -55
  1235. package/build/server/chunks/nodes/0.js-DBVupYnX.js.map +0 -1
  1236. package/build/server/chunks/nodes/1.js-d6kuZaa6.js +0 -9
  1237. package/build/server/chunks/nodes/1.js-d6kuZaa6.js.map +0 -1
  1238. package/build/server/chunks/nodes/10.js-CZu9fGfP.js +0 -34
  1239. package/build/server/chunks/nodes/10.js-CZu9fGfP.js.map +0 -1
  1240. package/build/server/chunks/nodes/11.js-BXe5Zx4X.js +0 -38
  1241. package/build/server/chunks/nodes/11.js-BXe5Zx4X.js.map +0 -1
  1242. package/build/server/chunks/nodes/12.js-DRzl-CDW.js +0 -31
  1243. package/build/server/chunks/nodes/12.js-DRzl-CDW.js.map +0 -1
  1244. package/build/server/chunks/nodes/13.js-DPWl_6qN.js +0 -31
  1245. package/build/server/chunks/nodes/13.js-DPWl_6qN.js.map +0 -1
  1246. package/build/server/chunks/nodes/14.js-BeEEdbMs.js +0 -31
  1247. package/build/server/chunks/nodes/14.js-BeEEdbMs.js.map +0 -1
  1248. package/build/server/chunks/nodes/15.js-CWaScYry.js +0 -39
  1249. package/build/server/chunks/nodes/15.js-CWaScYry.js.map +0 -1
  1250. package/build/server/chunks/nodes/16.js-Bx2_PWJ7.js +0 -34
  1251. package/build/server/chunks/nodes/16.js-Bx2_PWJ7.js.map +0 -1
  1252. package/build/server/chunks/nodes/17.js-CHZIbfMw.js +0 -9
  1253. package/build/server/chunks/nodes/17.js-CHZIbfMw.js.map +0 -1
  1254. package/build/server/chunks/nodes/18.js-Cy8kkNY8.js +0 -40
  1255. package/build/server/chunks/nodes/18.js-Cy8kkNY8.js.map +0 -1
  1256. package/build/server/chunks/nodes/19.js-BFyFztbo.js +0 -25
  1257. package/build/server/chunks/nodes/19.js-BFyFztbo.js.map +0 -1
  1258. package/build/server/chunks/nodes/2.js-Q9aO00_l.js +0 -34
  1259. package/build/server/chunks/nodes/2.js-Q9aO00_l.js.map +0 -1
  1260. package/build/server/chunks/nodes/20.js-32Jijs6P.js +0 -24
  1261. package/build/server/chunks/nodes/20.js-32Jijs6P.js.map +0 -1
  1262. package/build/server/chunks/nodes/21.js-BmLA1_UB.js +0 -41
  1263. package/build/server/chunks/nodes/21.js-BmLA1_UB.js.map +0 -1
  1264. package/build/server/chunks/nodes/22.js-C62_ORke.js +0 -40
  1265. package/build/server/chunks/nodes/22.js-C62_ORke.js.map +0 -1
  1266. package/build/server/chunks/nodes/23.js-Di_FAOPO.js +0 -37
  1267. package/build/server/chunks/nodes/23.js-Di_FAOPO.js.map +0 -1
  1268. package/build/server/chunks/nodes/24.js-By0qJMJN.js +0 -54
  1269. package/build/server/chunks/nodes/24.js-By0qJMJN.js.map +0 -1
  1270. package/build/server/chunks/nodes/25.js-D0RKHaMs.js +0 -33
  1271. package/build/server/chunks/nodes/25.js-D0RKHaMs.js.map +0 -1
  1272. package/build/server/chunks/nodes/26.js-td-R0TS3.js +0 -40
  1273. package/build/server/chunks/nodes/26.js-td-R0TS3.js.map +0 -1
  1274. package/build/server/chunks/nodes/27.js-DQUYszl5.js +0 -31
  1275. package/build/server/chunks/nodes/27.js-DQUYszl5.js.map +0 -1
  1276. package/build/server/chunks/nodes/28.js-DIaEKrKK.js +0 -9
  1277. package/build/server/chunks/nodes/28.js-DIaEKrKK.js.map +0 -1
  1278. package/build/server/chunks/nodes/29.js-Bvj-1Ku4.js +0 -31
  1279. package/build/server/chunks/nodes/29.js-Bvj-1Ku4.js.map +0 -1
  1280. package/build/server/chunks/nodes/3.js-Cql33kNh.js +0 -9
  1281. package/build/server/chunks/nodes/3.js-Cql33kNh.js.map +0 -1
  1282. package/build/server/chunks/nodes/30.js-Cyk18FvL.js +0 -31
  1283. package/build/server/chunks/nodes/30.js-Cyk18FvL.js.map +0 -1
  1284. package/build/server/chunks/nodes/31.js-BYdTOWX9.js +0 -34
  1285. package/build/server/chunks/nodes/31.js-BYdTOWX9.js.map +0 -1
  1286. package/build/server/chunks/nodes/32.js-CDxk9lZo.js +0 -31
  1287. package/build/server/chunks/nodes/32.js-CDxk9lZo.js.map +0 -1
  1288. package/build/server/chunks/nodes/33.js-Cy6q5nNk.js +0 -31
  1289. package/build/server/chunks/nodes/33.js-Cy6q5nNk.js.map +0 -1
  1290. package/build/server/chunks/nodes/34.js-CzT40wjI.js +0 -31
  1291. package/build/server/chunks/nodes/34.js-CzT40wjI.js.map +0 -1
  1292. package/build/server/chunks/nodes/35.js-BDfmT_gZ.js +0 -55
  1293. package/build/server/chunks/nodes/35.js-BDfmT_gZ.js.map +0 -1
  1294. package/build/server/chunks/nodes/4.js-BIgKONyx.js +0 -9
  1295. package/build/server/chunks/nodes/4.js-BIgKONyx.js.map +0 -1
  1296. package/build/server/chunks/nodes/5.js-BRiLQYtu.js +0 -15
  1297. package/build/server/chunks/nodes/5.js-BRiLQYtu.js.map +0 -1
  1298. package/build/server/chunks/nodes/6.js-BNdP39zk.js +0 -31
  1299. package/build/server/chunks/nodes/6.js-BNdP39zk.js.map +0 -1
  1300. package/build/server/chunks/nodes/7.js-BoUvthnh.js +0 -24
  1301. package/build/server/chunks/nodes/7.js-BoUvthnh.js.map +0 -1
  1302. package/build/server/chunks/nodes/8.js-Crd9hp3J.js +0 -41
  1303. package/build/server/chunks/nodes/8.js-Crd9hp3J.js.map +0 -1
  1304. package/build/server/chunks/nodes/9.js-CTUzxzgw.js +0 -31
  1305. package/build/server/chunks/nodes/9.js-CTUzxzgw.js.map +0 -1
@@ -1,1581 +0,0 @@
1
- import { a as consentChoices, b as apiScopesFor } from './oauth.js-DE5uJZHo.js';
2
- import { h as hasPermission, p as parseApiScope, r as describeApiScope, t as toSourceDocumentId, u as toDefinitionListItem, C as CreateDefinitionInputSchema, G as GH_EXTENSIONS, U as UpdateMetadataInputSchema, v as GuidSchema, w as PublishVersionInputSchema, x as CreateShareLinkInputSchema, y as formatApiScope, z as OrgAssetKindSchema, M as MEMBER_ASSIGNABLE_PERMISSIONS, D as DEFAULT_ORG_PERMISSIONS, a as ALL_ORG_PERMISSIONS, s as scopeAllows, B as validateProjectFlags, S as SYSTEM_CONTEXT, o as outsideTokenOrg, l as slugify } from './src.js-BQFsdJf3.js';
3
- import { l as listUserMemberships } from './providers.server.js-DkEGnykl.js';
4
- import { d as apiError, A as ApiErrorCode, l as requireCanViewProject, g as isApiError, m as requireCanCreateDefinition, n as requireEditableDefinition, o as requireActingOrg, q as requireManageOrgMembers, s as requireManageOrgCompute, u as splitFlatPermissions, v as assertCanGrantPlatformPermissions, w as canActorChangeOrgRole, x as canChangeOrgRole, c as canCreateDefinition, p as projectAccessInputFromRowsWith, y as requireCanCreateProject, a as canView, z as canSolve, B as canEdit, D as requireCanEditProjectSettings, E as withAdminBypass, F as requireCanManage, G as requireTargetIsOrgMember, H as checkOwnerRemoval, I as requireCanReclaim, J as canChangeVisibilityToPublic } from './access.js-DbWaEG7Y.js';
5
- import { f as fetchSchemaFromCompute, a as actorOf } from './schema-extraction.js-BbRGn45E.js';
6
- import { l as listEditableDefinitionsByDocument, a as listVisibleDefinitions, r as resolveAccessibleProjects, b as loadVisibleDefinition, m as mayUploadToDefinition, g as getVisibleDefinition, d as loadVisibleVersion } from './visibility.js-DbJh2Uy-.js';
7
- import { randomUUID } from 'node:crypto';
8
- import { D as DEFAULT_SHARE_LINK_MAX_SOLVES } from './types.js-C7gj_Qvn.js';
9
- import { c as resolveServerForOrg, a as isOrgServer, i as isPlatformServer, v as validateIncomingServers, d as storedKeysById, e as resolveApiKey, f as serversVisibleTo } from './compute.js-srroNvr-.js';
10
- import { s as scopeRefusalsToday, p as parseDefinitionListOptions, f as assertScope, g as parseListOptions, h as ShareLinkResponseSchema, i as CreatedShareLinkResponseSchema, j as OrgComputeResponseSchema, O as OrgComputePatchBodySchema, I as InviteResponseSchema, c as CreateInviteBodySchema, k as CreatedInviteResponseSchema, b as UpdateOrgMemberBodySchema, l as ApiTokenResponseSchema, d as CreateApiTokenBodySchema, m as CreatedApiTokenResponseSchema, C as CreateProjectBodySchema, U as UpdateProjectBodySchema, A as AddProjectMemberBodySchema, a as UpdateProjectMemberBodySchema } from './api.js-BPQNKNcW.js';
11
- import { e as evictChangedServers } from './evict-changed-servers.js-Dw8HdMyj.js';
12
- import { c as canHoldApiTokens } from './tokens.js-Btk3HBnU.js';
13
- import { r as requireCaller, a as requireUpload, f as formText, t as throwZodError, p as parseParam, b as parseBody, c as requireParams } from './request.js-I-exgA0e.js';
14
- import { c as createProjectWithUniqueSlug } from './projects.js-D6fN9oey.js';
15
- import { b as buildRequestContext } from './request-context.js-BlxaBgml.js';
16
-
17
- // ../server/src/api/responses.ts
18
- /** A paginated collection. The one envelope every list endpoint returns. */
19
- function collection(page) {
20
- return { body: {
21
- items: page.items,
22
- nextCursor: page.nextCursor
23
- } };
24
- }
25
- /** A created resource. */
26
- function created(body) {
27
- return {
28
- status: 201,
29
- body
30
- };
31
- }
32
- /** A successful mutation with nothing to say. */
33
- function noContent() {
34
- return { status: 204 };
35
- }
36
- // ../server/src/api/shaped.ts
37
- /** Serialize a payload through an explicit response schema. */
38
- function shaped(schema, payload, status = 200) {
39
- return {
40
- status,
41
- body: schema.parse(payload)
42
- };
43
- }
44
- /** `shaped`, mapped over a page of records. */
45
- function shapedCollection(schema, page) {
46
- return { body: {
47
- items: page.items.map((item) => schema.parse(item)),
48
- nextCursor: page.nextCursor
49
- } };
50
- }
51
- // ../notifications/src/html.ts
52
- /**
53
- * Escape text for interpolation into an HTML attribute or text node.
54
- *
55
- * One copy on purpose: per-template copies are how one of them ends up missing
56
- * a case. Every value a template interpolates goes through this, including
57
- * URLs — an `acceptUrl` carries a token, and a token can contain characters
58
- * that would otherwise close the `href` early.
59
- */
60
- function escapeHtml(s) {
61
- return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
62
- }
63
- // ../notifications/src/layout.ts
64
- /**
65
- * The frame every Selva mail shares: card chrome, type stack, colours.
66
- * Templates supply a body; this supplies the look, so mail written by
67
- * different people at different times still reads as coming from one product.
68
- *
69
- * Deliberately plain — no images, no tracking pixel, no external stylesheet.
70
- * Inline styles with a table-free layout survive the common clients, and mail
71
- * clients that strip the styling still get readable, ordered content.
72
- */
73
- function renderLayout({ heading, body, footer }) {
74
- return `<!doctype html>
75
- <html>
76
- <body style="margin:0;padding:24px;background:#f6f7f9;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;color:#1a1a1a;">
77
- <div style="max-width:480px;margin:0 auto;background:#ffffff;border:1px solid #e4e6eb;border-radius:12px;padding:32px;">
78
- <h1 style="margin:0 0 16px;font-size:20px;font-weight:600;">${escapeHtml(heading)}</h1>
79
- ${body}${footer ? `
80
- <hr style="border:none;border-top:1px solid #e4e6eb;margin:24px 0;" />
81
- <p style="margin:0;font-size:12px;line-height:1.5;color:#8a8a8a;">
82
- ${footer}
83
- </p>` : ""}
84
- </div>
85
- </body>
86
- </html>`;
87
- }
88
- /** The primary action button. One definition so every mail's call to action matches. */
89
- function renderButton(href, label) {
90
- return `<a href="${escapeHtml(href)}" style="display:inline-block;padding:11px 20px;background:#1a1a1a;color:#ffffff;text-decoration:none;border-radius:8px;font-size:15px;font-weight:500;">${escapeHtml(label)}</a>`;
91
- }
92
- /**
93
- * Fallback for clients that do not make the button clickable. Every mail whose
94
- * point is a link needs this: a button that does not render leaves the reader
95
- * with no way to continue.
96
- */
97
- function renderUrlFallback(href) {
98
- return `<p style="margin:24px 0 0;font-size:13px;line-height:1.5;color:#6b6b6b;">
99
- Or paste this into your browser:<br />
100
- <span style="word-break:break-all;color:#4a4a4a;">${escapeHtml(href)}</span>
101
- </p>`;
102
- }
103
- // ../notifications/src/templates/invite.ts
104
- function formatExpiry(iso) {
105
- const d = new Date(iso);
106
- return Number.isNaN(d.getTime()) ? "soon" : d.toLocaleDateString("en-US", {
107
- year: "numeric",
108
- month: "long",
109
- day: "numeric"
110
- });
111
- }
112
- /**
113
- * "An admin invited you to an org" — the mail carrying an invite's accept link.
114
- *
115
- * The text part must always carry the URL: a mail that degrades to plain text
116
- * is still the only way the invitee can accept.
117
- */
118
- function renderInviteEmail(input) {
119
- const { to, acceptUrl, orgName, invitedBy } = input;
120
- const expiry = formatExpiry(input.expiresAt);
121
- const inviter = invitedBy ? `${invitedBy} invited you` : "You have been invited";
122
- return {
123
- kind: "org.invite",
124
- to,
125
- subject: `${inviter} to join ${orgName} on Selva`,
126
- text: [
127
- `${inviter} to join ${orgName} on Selva.`,
128
- "",
129
- "Open this link to accept and set up your account:",
130
- acceptUrl,
131
- "",
132
- `The link expires on ${expiry} and can only be used once.`,
133
- "",
134
- "If you weren't expecting this invitation, you can ignore this email."
135
- ].join("\n"),
136
- html: renderLayout({
137
- heading: `Join ${orgName} on Selva`,
138
- body: ` <p style="margin:0 0 24px;font-size:15px;line-height:1.5;color:#4a4a4a;">
139
- ${escapeHtml(inviter)} to join <strong>${escapeHtml(orgName)}</strong>. Open the link below to accept and set up your account.
140
- </p>
141
- ${renderButton(acceptUrl, "Accept invitation")}
142
- ${renderUrlFallback(acceptUrl)}`,
143
- footer: `This link expires on ${escapeHtml(expiry)} and can only be used once.
144
- If you weren't expecting this invitation, you can ignore this email.`
145
- })
146
- };
147
- }
148
- // ../notifications/src/templates/api-token.ts
149
- function formatDate(iso) {
150
- const d = new Date(iso);
151
- return Number.isNaN(d.getTime()) ? iso : d.toLocaleDateString("en-US", {
152
- year: "numeric",
153
- month: "long",
154
- day: "numeric"
155
- });
156
- }
157
- /**
158
- * "A new API token was created on your account". The point is the case where
159
- * the owner didn't create it, so the revoke link leads.
160
- */
161
- function renderApiTokenCreatedEmail(input) {
162
- const { to, tokenName, orgName, scopes, manageUrl } = input;
163
- const expiry = formatDate(input.expiresAt);
164
- return {
165
- kind: "api_token.created",
166
- to,
167
- subject: `New API token "${tokenName}" in ${orgName}`,
168
- text: [
169
- `A new API token named "${tokenName}" was created on your Selva account in ${orgName}.`,
170
- "",
171
- "It can:",
172
- ...scopes.map((s) => `- ${s}`),
173
- "",
174
- `It expires on ${expiry}.`,
175
- "",
176
- "If you didn't create it, revoke it now:",
177
- manageUrl
178
- ].join("\n"),
179
- html: renderLayout({
180
- heading: "New API token",
181
- body: ` <p style="margin:0 0 16px;font-size:15px;line-height:1.5;color:#4a4a4a;">
182
- A new API token named <strong>${escapeHtml(tokenName)}</strong> was created on your account in <strong>${escapeHtml(orgName)}</strong>. It can:
183
- </p>
184
- <ul style="margin:0 0 24px;padding-left:20px;font-size:15px;line-height:1.5;color:#4a4a4a;">
185
- ${scopes.map((s) => `<li>${escapeHtml(s)}</li>`).join("")}
186
- </ul>
187
- ${renderButton(manageUrl, "Review your tokens")}
188
- ${renderUrlFallback(manageUrl)}`,
189
- footer: `It expires on ${escapeHtml(expiry)}. If you didn't create it, revoke it from the page above.`
190
- })
191
- };
192
- }
193
- // ../server/src/notifications/deliver-invite.ts
194
- /**
195
- * Mail an invite's accept link, best-effort.
196
- *
197
- * Shared by the mint and resend routes so they cannot disagree about what the
198
- * invitee receives. Swallows every failure: the invite row is already
199
- * committed and the caller still holds `acceptUrl` to share by hand, so a dead
200
- * SMTP host must not report a valid invite as a failure.
201
- */
202
- async function deliverInvite(input) {
203
- const { ctx, log, invite, acceptUrl, actor, orgs, notifications, fallbackOrgName } = input;
204
- try {
205
- const org = await orgs.getOrg(ctx, invite.orgId);
206
- const { status } = await notifications.send(renderInviteEmail({
207
- to: invite.email,
208
- acceptUrl,
209
- orgName: org?.name ?? fallbackOrgName,
210
- invitedBy: actor.profile?.displayName || actor.user?.email,
211
- expiresAt: invite.expiresAt
212
- }), log);
213
- return status;
214
- } catch (err) {
215
- log.warn("Invite mail could not be prepared", {
216
- component: "Invites",
217
- inviteId: invite.id,
218
- reason: err instanceof Error ? err.message : String(err)
219
- });
220
- return "failed";
221
- }
222
- }
223
- // ../server/src/handlers/services.ts
224
- function definitionService(deps) {
225
- const service = deps.services.definitions;
226
- if (!service) throw new Error("SelvaDeps.services.definitions is not wired — mount requires it.");
227
- return service;
228
- }
229
- function orgAssetService(deps) {
230
- const service = deps.services.orgAssets;
231
- if (!service) throw new Error("SelvaDeps.services.orgAssets is not wired — mount requires it.");
232
- return service;
233
- }
234
- /**
235
- * A token codec, or a named failure.
236
- *
237
- * Minting through an absent codec is the one failure mode worth being loud
238
- * about: a handler that quietly skipped hashing would persist a row whose token
239
- * can never be verified, and nothing downstream would report it.
240
- */
241
- function tokenCodec(deps, family) {
242
- const codec = deps.tokens[family];
243
- if (!codec) throw new Error(`SelvaDeps.tokens.${family} is not wired — mount requires it.`);
244
- return codec;
245
- }
246
- // ../server/src/handlers/me.ts
247
- /**
248
- * Whoami. The first call a non-browser client makes, and the only way a token
249
- * holder can see which org their credential resolved into — `actingOrgId` is
250
- * derived per request from the caller's membership, not frozen at mint time.
251
- */
252
- var getMe = async (req) => {
253
- const { ctx, user } = requireCaller(req);
254
- return { body: {
255
- userId: user.id,
256
- email: user.email,
257
- displayName: req.profile?.displayName,
258
- actingOrgId: ctx.actingOrgId,
259
- platformPermissions: ctx.platformPermissions,
260
- orgPermissions: ctx.orgPermissions,
261
- starredDefinitions: req.profile?.starredDefinitions ?? [],
262
- ...ctx.apiScope && { apiToken: {
263
- id: ctx.apiScope.tokenId,
264
- scopes: ctx.apiScope.scopes.map(formatApiScope),
265
- expiresAt: ctx.apiScope.expiresAt
266
- } }
267
- } };
268
- };
269
- // ../server/src/handlers/me.starred.ts
270
- /**
271
- * Starring a definition for the calling user. Both directions are idempotent.
272
- *
273
- * No visibility check: a star is a row on the caller's own profile, keyed by
274
- * guid, and reveals nothing about whether that guid exists. The read paths that
275
- * expand stars into definitions filter by visibility there.
276
- */
277
- var starDefinition = async (req) => {
278
- const { ctx, user } = requireCaller(req);
279
- const { guid } = requireParams(req.params, "guid");
280
- await req.deps.userProfile.starDefinition(ctx, user.id, guid);
281
- return noContent();
282
- };
283
- var unstarDefinition = async (req) => {
284
- const { ctx, user } = requireCaller(req);
285
- const { guid } = requireParams(req.params, "guid");
286
- await req.deps.userProfile.unstarDefinition(ctx, user.id, guid);
287
- return noContent();
288
- };
289
- // ../server/src/handlers/orgs.ts
290
- /**
291
- * The acting org's record and roster.
292
- *
293
- * `requireActingOrg` is the tenancy gate on both: the URL `orgId` must equal
294
- * `ctx.actingOrgId`, so the URL alone never decides which tenant is read.
295
- */
296
- /** The acting org's record — name, slug, and branding asset URLs. */
297
- var getOrg = async (req) => {
298
- const { ctx, orgId } = requireActingOrg(req, req.params.orgId);
299
- const org = await req.deps.orgs.getOrg(ctx, orgId);
300
- if (!org) apiError(404, ApiErrorCode.NOT_FOUND, "Organization not found");
301
- return { body: org };
302
- };
303
- /**
304
- * List the org's members. Any member of the acting org may read this — the
305
- * roster is what the team page renders, and `requireActingOrg` already confines
306
- * the read to the caller's own tenant.
307
- */
308
- var listOrgMembers = async (req) => {
309
- const { ctx, orgId } = requireActingOrg(req, req.params.orgId);
310
- return collection(await req.deps.orgs.listOrgMembers(ctx, orgId, parseListOptions(req.url)));
311
- };
312
- // ../server/src/handlers/apiTokens.ts
313
- /**
314
- * API tokens: mint, list, revoke.
315
- *
316
- * **Session-only.** A key can't manage keys, so a leaked one can't mint more or
317
- * revoke the owner's others to cover its tracks. The one exception is a key
318
- * revoking itself, which only ever takes access away.
319
- *
320
- * **The raw key exists only in the mint response.** The store holds its HMAC,
321
- * and every response goes through a schema that has no `tokenHash`.
322
- */
323
- var DAY_MS = 864e5;
324
- function requireSessionInOrg(req) {
325
- if (req.ctx?.apiScope) apiError(403, ApiErrorCode.FORBIDDEN, "API tokens can’t manage API tokens. Sign in to the web app to do this.");
326
- return requireActingOrg(req, req.params.orgId);
327
- }
328
- /**
329
- * May `ctx` hold a key with `scopes`, by the host's policy or the default rule?
330
- * The one call every mint path makes, so a host's token page and its consent
331
- * screen can't disagree with the mint.
332
- */
333
- function mayHoldApiTokens(deps, ctx, scopes) {
334
- return canHoldApiTokens(ctx, scopes, {
335
- policy: deps.tokens.mayHoldApiTokens,
336
- deps
337
- });
338
- }
339
- function unavailable() {
340
- apiError(503, ApiErrorCode.API_TOKENS_UNAVAILABLE, "API tokens are not available on this server.");
341
- }
342
- function storeOf(req) {
343
- return req.deps.data.apiTokens ?? unavailable();
344
- }
345
- function codecOf(req) {
346
- return req.deps.tokens.apiTokens ?? unavailable();
347
- }
348
- function toResponse(token) {
349
- return {
350
- ...token,
351
- refusedToday: scopeRefusalsToday(token.id)
352
- };
353
- }
354
- /** Who sees every owner's keys in an org and may revoke any of them. */
355
- var canManageApiTokenRoster = (ctx) => hasPermission(ctx, "manage_org_members");
356
- /**
357
- * Keys in `orgId`, newest first, including revoked and expired ones: the
358
- * caller's own, or with `roster` everyone's. The list endpoint and a host's
359
- * token page both read through here, so they can't disagree on who sees what.
360
- */
361
- async function listOrgApiTokens(store, ctx, orgId, { roster = false, ...opts } = {}) {
362
- if (roster && !canManageApiTokenRoster(ctx)) apiError(403, ApiErrorCode.FORBIDDEN, "Only org admins can see everyone’s API tokens.");
363
- const page = await store.listByOrg(ctx, orgId, {
364
- ...opts,
365
- userId: roster ? void 0 : ctx.userId
366
- });
367
- return {
368
- ...page,
369
- items: page.items.map(toResponse)
370
- };
371
- }
372
- /**
373
- * Refuse scopes naming something outside this org or out of the creator's
374
- * sight. Not the security boundary: a key never exceeds its owner's live rights
375
- * anyway. This stops someone minting a key that can only ever be refused.
376
- */
377
- async function assertScopesReachable(req, orgId, scopes) {
378
- const refuse = (message) => apiError(400, ApiErrorCode.VALIDATION_FAILED, message, { scopes: message });
379
- for (const value of scopes) {
380
- const { resource } = parseApiScope(value) ?? refuse(`Unknown scope: ${value}`);
381
- if (resource.kind === "all") continue;
382
- if (resource.kind === "org") {
383
- if (resource.id !== orgId) refuse("An org scope must name this org.");
384
- continue;
385
- }
386
- let projectId = resource.id;
387
- if (resource.kind === "definition") projectId = (await req.deps.definitionMeta.get(req.ctx, resource.id) ?? refuse(`No definition ${resource.id}.`)).projectId;
388
- const project = await req.deps.projects.getProject(req.ctx, projectId);
389
- if (!project || project.orgId !== orgId) refuse(`No ${resource.kind} ${resource.id} in this org.`);
390
- try {
391
- await requireCanViewProject(req, projectId);
392
- } catch (err) {
393
- if (isApiError(err)) refuse(`You can’t access ${resource.kind} ${resource.id}.`);
394
- throw err;
395
- }
396
- }
397
- }
398
- /**
399
- * Tell the owner a key now exists on their account, best-effort. The case that
400
- * matters is the one where they didn't make it.
401
- */
402
- async function mailTokenCreated(req, token) {
403
- const notifications = req.deps.notifications;
404
- const to = req.user?.email;
405
- if (!notifications || !to) return;
406
- try {
407
- const org = await req.deps.orgs.getOrg(req.ctx, token.orgId);
408
- await notifications.send(renderApiTokenCreatedEmail({
409
- to,
410
- tokenName: token.name,
411
- orgName: org?.name ?? req.deps.instanceName,
412
- scopes: token.scopes.map(describeApiScope),
413
- expiresAt: token.expiresAt,
414
- manageUrl: `${req.url.origin}${req.deps.apiTokenSettingsPath}`
415
- }), req.log);
416
- } catch (err) {
417
- req.log.warn("API token mail could not be sent", {
418
- component: "ApiTokens",
419
- tokenId: token.id,
420
- reason: err instanceof Error ? err.message : String(err)
421
- });
422
- }
423
- }
424
- /** The caller's own keys in this org. `?all=true` returns everyone's and needs `manage_org_members`. */
425
- var listApiTokens = async (req) => {
426
- const { ctx, orgId } = requireSessionInOrg(req);
427
- const page = await listOrgApiTokens(storeOf(req), ctx, orgId, {
428
- ...parseListOptions(req.url),
429
- roster: req.url.searchParams.get("all") === "true"
430
- });
431
- return shapedCollection(ApiTokenResponseSchema, page);
432
- };
433
- /**
434
- * Mint a token acting as the caller, in the caller's acting org. Every mint
435
- * goes through here, the token endpoint and an OAuth consent alike, so the
436
- * holder rule, the scope checks, the audit event and the owner's email always
437
- * apply. A consent screen passes a `req` whose `ctx` acts in the org the user
438
- * picked.
439
- */
440
- async function mintApiToken(req, input) {
441
- const { ctx, user } = requireCaller(req);
442
- const orgId = ctx.actingOrgId;
443
- if (ctx.apiScope || !orgId) apiError(403, ApiErrorCode.FORBIDDEN, "API tokens can only be created from a signed-in session.");
444
- if (!await mayHoldApiTokens(req.deps, ctx, input.scopes)) apiError(403, ApiErrorCode.FORBIDDEN, "You can’t create API tokens with this access in this org.");
445
- const store = storeOf(req);
446
- const codec = codecOf(req);
447
- const delegated = req.deps.auth.delegatedSession;
448
- if (delegated && !(await delegated.status()).ok) unavailable();
449
- await assertScopesReachable(req, orgId, input.scopes);
450
- const raw = codec.mintRawToken();
451
- const now = /* @__PURE__ */ new Date();
452
- const token = {
453
- id: randomUUID(),
454
- userId: user.id,
455
- createdBy: user.id,
456
- orgId,
457
- name: input.name,
458
- tokenHash: codec.hashToken(raw),
459
- scopes: [...new Set(input.scopes)],
460
- createdAt: now.toISOString(),
461
- expiresAt: new Date(now.getTime() + input.expiresInDays * DAY_MS).toISOString(),
462
- lastUsedAt: null,
463
- revokedAt: null
464
- };
465
- await store.create(ctx, token);
466
- await mailTokenCreated(req, token);
467
- const { tokenHash: _hash, ...summary } = token;
468
- return {
469
- token: toResponse(summary),
470
- secret: raw
471
- };
472
- }
473
- /** Mint a token acting as the caller. The raw key is in this response and nowhere else. */
474
- var createApiToken = async (req) => {
475
- requireSessionInOrg(req);
476
- const input = await parseBody(req.request, CreateApiTokenBodySchema);
477
- return {
478
- status: 201,
479
- headers: { "Cache-Control": "no-store" },
480
- body: CreatedApiTokenResponseSchema.parse(await mintApiToken(req, input))
481
- };
482
- };
483
- /**
484
- * Revoke a token: the owner's own, or anyone's in the org for
485
- * `manage_org_members`. Someone else's token reads as missing, not forbidden.
486
- */
487
- var revokeApiToken = async (req) => {
488
- const { ctx, orgId } = requireSessionInOrg(req);
489
- const { tokenId } = requireParams(req.params, "tokenId");
490
- const store = storeOf(req);
491
- const token = await store.get(ctx, tokenId);
492
- const own = token?.userId === ctx.userId;
493
- if (!token || token.orgId !== orgId || !own && !canManageApiTokenRoster(ctx)) apiError(404, ApiErrorCode.NOT_FOUND, "API token not found");
494
- await store.revoke(ctx, tokenId, own ? "owner" : "admin");
495
- return noContent();
496
- };
497
- /**
498
- * Revoke the key that sent this request, and nothing else. Any key may call it,
499
- * whatever its scopes, so a client signing out never needs more than it has.
500
- * A browser session gets 400: it has no key to revoke.
501
- */
502
- var revokeOwnApiToken = async (req) => {
503
- const { ctx } = requireCaller(req);
504
- if (!ctx.apiScope) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Only an API token can revoke itself. Revoke tokens from the web app instead.");
505
- await storeOf(req).revoke(ctx, ctx.apiScope.tokenId, "owner");
506
- return noContent();
507
- };
508
- /**
509
- * Revoke every live key `userId` holds, in one org or (no `orgId`) all of
510
- * them. Call it when someone leaves an org or is disabled: the resolver already
511
- * refuses those keys, but without this they would work again the moment the
512
- * person is re-added or re-enabled.
513
- *
514
- * Best effort. The removal or disable has already committed, so a failure is
515
- * logged rather than thrown.
516
- */
517
- async function revokeUserApiTokens(store, ctx, userId, opts, log) {
518
- if (!store) return;
519
- try {
520
- await store.revokeAllForUser(ctx, userId, opts);
521
- } catch (err) {
522
- log.error("Failed to revoke API tokens", {
523
- component: "ApiTokens",
524
- userId,
525
- orgId: opts.orgId,
526
- reason: opts.reason,
527
- err: err instanceof Error ? err.message : String(err)
528
- });
529
- }
530
- }
531
- // ../server/src/handlers/orgMembers.ts
532
- /**
533
- * Org member role, permissions, and removal.
534
- *
535
- * Two gates run on every request: `requireManageOrgMembers` (owner+admin) and
536
- * `requireActingOrg` (the URL `orgId` must equal `ctx.actingOrgId`, so
537
- * cross-org member mutation is blocked even for an actor with permissions in
538
- * another org).
539
- *
540
- * The sole-owner invariant applies to demotion and removal alike — an org with
541
- * no owner is unadministrable, and removing an owner ends their role exactly as
542
- * demoting them does.
543
- */
544
- var ROSTER_PAGE_LIMIT = 200;
545
- var MAX_ROSTER_PAGES = 100;
546
- /**
547
- * Whether anyone other than `exceptUserId` still owns the org.
548
- *
549
- * Both branches below need this and both used to scan the roster themselves —
550
- * the sole-owner invariant is one rule, so it reads from one place.
551
- *
552
- * Pages rather than reading one 200-row window: a second owner sitting past the
553
- * first page read as "no other owner", so the invariant refused a demotion or
554
- * removal that was in fact safe. That failed closed, but it made the org
555
- * unadministrable exactly when it had grown enough to need administering.
556
- * Returns on the first owner found, so the common case is still one round-trip.
557
- */
558
- async function hasAnotherOwner(req, ctx, orgId, exceptUserId) {
559
- let cursor;
560
- for (let page = 0; page < MAX_ROSTER_PAGES; page++) {
561
- const result = await req.deps.orgs.listOrgMembers(ctx, orgId, {
562
- limit: ROSTER_PAGE_LIMIT,
563
- cursor
564
- });
565
- if (result.items.some((m) => m.role === "owner" && m.userId !== exceptUserId && !m.deletedAt)) return true;
566
- cursor = result.nextCursor;
567
- if (!cursor) return false;
568
- }
569
- req.log.warn("hasAnotherOwner hit the page cap — treating as sole owner", {
570
- orgId,
571
- pages: MAX_ROSTER_PAGES
572
- });
573
- return false;
574
- }
575
- /**
576
- * Projects in `orgId` where `userId` is the only live owner — the ones that
577
- * will have no owner once `removeOrgMember` cascades their membership rows.
578
- *
579
- * **Report, do not block.** Blocking puts an unbounded chore in front of
580
- * offboarding — the cost scales with how many projects the departing person
581
- * owned, which is backwards, because the most prolific people are the ones
582
- * whose departure most needs to be clean. An offboarding that fails halfway is
583
- * worse than an ownerless project: the person stays in the org while someone
584
- * works through the backlog. Reclaim already exists to adopt an ownerless
585
- * project, so the recovery path is built; what was missing was any signal that
586
- * recovery was needed. Hence the event.
587
- *
588
- * MUST be called before the removal — afterwards the rows it reads are gone.
589
- */
590
- async function findProjectsLosingSoleOwner(req, ctx, orgId, userId) {
591
- const projects = req.deps.projects;
592
- const orgProjects = await projects.listProjects(ctx, orgId, { limit: ROSTER_PAGE_LIMIT });
593
- return (await Promise.all(orgProjects.items.map(async (project) => {
594
- const owners = (await projects.listProjectMembers(ctx, project.id, { limit: ROSTER_PAGE_LIMIT })).items.filter((m) => m.role === "owner" && !m.deletedAt);
595
- return owners.length === 1 && owners[0].userId === userId ? project : null;
596
- }))).filter((p) => p !== null);
597
- }
598
- /**
599
- * Body accepts either or both:
600
- * - `{ role: OrgRole }` — change the member's role. Owner-only.
601
- * - `{ permissions: OrgPermission[] }` — replace the member's grantable
602
- * permissions. Owner/admin via `manage_org_members`. For `member`-role
603
- * targets, only `MEMBER_ASSIGNABLE_PERMISSIONS` are accepted; promoting a
604
- * member's permissions does NOT change their role.
605
- */
606
- var updateOrgMember = async (req) => {
607
- const { userId } = requireParams(req.params, "orgId", "userId");
608
- requireManageOrgMembers(req);
609
- const { ctx, orgId } = requireActingOrg(req, req.params.orgId);
610
- const patch = await parseBody(req.request, UpdateOrgMemberBodySchema);
611
- const orgs = req.deps.orgs;
612
- const [actorMember, target] = await Promise.all([orgs.getOrgMember(ctx, orgId, ctx.userId), orgs.getOrgMember(ctx, orgId, userId)]);
613
- if (!target) apiError(404, ApiErrorCode.NOT_FOUND, "Member not found in this organization.");
614
- if (!actorMember) apiError(403, ApiErrorCode.FORBIDDEN, "You are not a member of this organization.");
615
- if (patch.role !== void 0 && patch.role !== target.role) {
616
- if (!canChangeOrgRole({
617
- actorMember,
618
- role: patch.role
619
- }) || !canChangeOrgRole({
620
- actorMember,
621
- role: target.role
622
- })) apiError(403, ApiErrorCode.FORBIDDEN, "Only the org owner can change roles.");
623
- if (target.role === "owner" && patch.role !== "owner" && !await hasAnotherOwner(req, ctx, orgId, target.userId)) apiError(409, ApiErrorCode.CONFLICT, "Cannot demote the sole owner of this organization. Promote another member to owner first.");
624
- await orgs.updateOrgMemberRole(ctx, orgId, userId, patch.role);
625
- }
626
- if (patch.permissions !== void 0) {
627
- const effectiveRole = patch.role ?? target.role;
628
- const valid = effectiveRole === "member" ? new Set(MEMBER_ASSIGNABLE_PERMISSIONS) : new Set(ALL_ORG_PERMISSIONS);
629
- const invalid = patch.permissions.filter((p) => !valid.has(p));
630
- if (invalid.length > 0) apiError(400, ApiErrorCode.VALIDATION_FAILED, `Permissions [${invalid.join(", ")}] cannot be assigned to a ${effectiveRole}.`);
631
- await orgs.updateOrgMemberPermissions(ctx, orgId, userId, patch.permissions);
632
- }
633
- return noContent();
634
- };
635
- /**
636
- * Remove a member from the org. Owner/admin via `manage_org_members`, same
637
- * tenancy check as PATCH, and the same sole-owner invariant — removing the last
638
- * owner would leave the org unadministrable.
639
- */
640
- var removeOrgMember = async (req) => {
641
- const { userId } = requireParams(req.params, "orgId", "userId");
642
- requireManageOrgMembers(req);
643
- const { ctx, orgId } = requireActingOrg(req, req.params.orgId);
644
- const orgs = req.deps.orgs;
645
- const [actorMember, target] = await Promise.all([orgs.getOrgMember(ctx, orgId, ctx.userId), orgs.getOrgMember(ctx, orgId, userId)]);
646
- if (!target) apiError(404, ApiErrorCode.NOT_FOUND, "Member not found in this organization.");
647
- if (!canChangeOrgRole({
648
- actorMember,
649
- role: target.role
650
- })) apiError(403, ApiErrorCode.FORBIDDEN, "Only the org owner can remove another owner.");
651
- if (target.role === "owner" && !await hasAnotherOwner(req, ctx, orgId, target.userId)) apiError(409, ApiErrorCode.CONFLICT, "Cannot remove the sole owner of this organization. Promote another member to owner first.");
652
- const orphaned = await findProjectsLosingSoleOwner(req, ctx, orgId, userId);
653
- await orgs.removeOrgMember(ctx, orgId, userId);
654
- if (orphaned.length > 0) {
655
- await req.deps.events.emit({
656
- type: "org_member.removed_orphaning_projects",
657
- orgId,
658
- userId,
659
- projectIds: orphaned.map((p) => p.id),
660
- ...actorOf(ctx)
661
- });
662
- req.log.warn("Org member removal left projects without an owner", {
663
- orgId,
664
- userId,
665
- actorId: ctx.userId,
666
- projectCount: orphaned.length
667
- });
668
- }
669
- const email = (await req.deps.auth.getUser(userId))?.email;
670
- if (email) try {
671
- await req.deps.invites.revokePendingByEmail(ctx, orgId, email);
672
- } catch (err) {
673
- req.log.error("Removed org member but failed to revoke their pending invites", {
674
- orgId,
675
- userId,
676
- error: err instanceof Error ? err.message : String(err)
677
- });
678
- }
679
- await revokeUserApiTokens(req.deps.data.apiTokens, ctx, userId, {
680
- orgId,
681
- reason: "member_removed"
682
- }, req.log);
683
- return noContent();
684
- };
685
- // ../server/src/handlers/reclaim.ts
686
- /**
687
- * Org owner/admin escape hatch for a project they cannot otherwise reach.
688
- *
689
- * Adds the actor as a co-owner and does NOT demote the existing owner.
690
- * Idempotent: reclaiming twice is a no-op, because `addProjectMember`
691
- * reactivates a soft-deleted row in place.
692
- */
693
- var reclaimProject = async (req) => {
694
- const { id } = requireParams(req.params, "id");
695
- const { user, ctx, project } = await requireCanReclaim(req, id);
696
- const now = (/* @__PURE__ */ new Date()).toISOString();
697
- const member = {
698
- projectId: id,
699
- userId: user.id,
700
- role: "owner",
701
- joinedAt: now,
702
- updatedAt: now,
703
- updatedBy: ctx.userId || user.id,
704
- deletedAt: null
705
- };
706
- await req.deps.projects.addProjectMember(ctx, member);
707
- await req.deps.events.emit({
708
- type: "project.reclaimed",
709
- projectId: id,
710
- orgId: project.orgId,
711
- ...actorOf(ctx),
712
- priorVisibility: project.visibility
713
- });
714
- return created({ member });
715
- };
716
- // ../server/src/handlers/orgAssets.ts
717
- /**
718
- * Org branding assets, generic over kind (`logo`, `favicon`, …). Gated on
719
- * `manage_org_members` — org branding is an org-admin action.
720
- *
721
- * Raster images and SVG are both accepted. Every input is rasterized to WebP by
722
- * the shared transcoder inside the storage provider, so SVG carries no XSS
723
- * surface: no vector blob is ever stored or served. The allowlist below is the
724
- * HTTP gate; the rasterization is the security control.
725
- */
726
- var ALLOWED_CONTENT_TYPES = /* @__PURE__ */ new Set([
727
- "image/png",
728
- "image/jpeg",
729
- "image/webp",
730
- "image/gif",
731
- "image/svg+xml"
732
- ]);
733
- function parseKind(params) {
734
- const kind = OrgAssetKindSchema.safeParse(params.kind);
735
- if (!kind.success) apiError(404, ApiErrorCode.NOT_FOUND, `Unknown asset kind '${params.kind}'`);
736
- return kind.data;
737
- }
738
- var uploadOrgAsset = async (req) => {
739
- requireManageOrgMembers(req);
740
- const kind = parseKind(req.params);
741
- const { ctx, orgId } = requireActingOrg(req, req.params.orgId);
742
- if (!await req.deps.orgs.getOrg(ctx, orgId)) apiError(404, ApiErrorCode.NOT_FOUND, "Organization not found");
743
- const { file } = requireUpload(await req.request.formData(), "image", {
744
- maxBytes: req.deps.uploadLimits.maxImageFileSize,
745
- contentTypes: {
746
- allowed: ALLOWED_CONTENT_TYPES,
747
- message: "Unsupported image type. Allowed: PNG, JPG, WebP, GIF, SVG"
748
- },
749
- label: "Image"
750
- });
751
- const bytes = new Uint8Array(await file.arrayBuffer());
752
- return { body: {
753
- kind,
754
- url: await orgAssetService(req.deps).saveAsset(ctx, orgId, kind, bytes, file.type)
755
- } };
756
- };
757
- var removeOrgAsset = async (req) => {
758
- requireManageOrgMembers(req);
759
- const kind = parseKind(req.params);
760
- const { ctx, orgId } = requireActingOrg(req, req.params.orgId);
761
- await orgAssetService(req.deps).removeAsset(ctx, orgId, kind);
762
- return noContent();
763
- };
764
- // ../server/src/handlers/shareLinks.ts
765
- /**
766
- * Share-link administration.
767
- *
768
- * Minting, listing and revoking are gated by `canEditDefinition` — the same
769
- * authority that uploads versions and publishes. The raw token appears in the
770
- * POST response and nowhere else; everything afterwards sees `hasToken: true`.
771
- *
772
- * **Responses go through `shaped`/`shapedCollection`, never `{ body }`.** A
773
- * `ShareLink` carries `tokenHash`, and the response schema is what drops it —
774
- * returning the record directly would put a credential hash on the wire with
775
- * nothing failing at build time.
776
- */
777
- function assertSharingEnabled(req) {
778
- if (!req.deps.flag("ENABLE_SHARING")) apiError(404, ApiErrorCode.NOT_FOUND, "Share links are disabled on this instance (ENABLE_SHARING).");
779
- }
780
- /** `tokenHash` is dropped by the response schema, not by this function. */
781
- function forClient(link) {
782
- return {
783
- ...link,
784
- hasToken: true
785
- };
786
- }
787
- var listShareLinks = async (req) => {
788
- assertSharingEnabled(req);
789
- const guid = parseParam(req.params.guid, GuidSchema, "GUID");
790
- const { ctx } = await requireEditableDefinition(req, guid);
791
- const page = await req.deps.shareLinks.listByDefinition(ctx, guid, parseListOptions(req.url));
792
- return shapedCollection(ShareLinkResponseSchema, {
793
- items: page.items.map(forClient),
794
- nextCursor: page.nextCursor
795
- });
796
- };
797
- var createShareLink = async (req) => {
798
- assertSharingEnabled(req);
799
- const guid = parseParam(req.params.guid, GuidSchema, "GUID");
800
- const { user } = requireCaller(req);
801
- const { ctx } = await requireEditableDefinition(req, guid);
802
- const input = await parseBody(req.request, CreateShareLinkInputSchema, { missingAs: {} });
803
- const codec = tokenCodec(req.deps, "shareLinks");
804
- const raw = codec.mintRawToken();
805
- const link = {
806
- id: randomUUID(),
807
- definitionId: guid,
808
- channel: input.channel,
809
- tokenHash: codec.hashToken(raw),
810
- name: input.name,
811
- createdBy: user.id,
812
- createdAt: (/* @__PURE__ */ new Date()).toISOString(),
813
- expiresAt: input.expiresAt ?? null,
814
- revokedAt: null,
815
- allowSolve: input.allowSolve,
816
- maxSolves: input.maxSolves === void 0 ? DEFAULT_SHARE_LINK_MAX_SOLVES : input.maxSolves,
817
- solveCount: 0
818
- };
819
- await req.deps.shareLinks.create(ctx, link);
820
- return shaped(CreatedShareLinkResponseSchema, {
821
- link: forClient(link),
822
- token: raw
823
- }, 201);
824
- };
825
- /**
826
- * Revoke a share link (soft-delete). Idempotent, gated by `canEditDefinition`.
827
- *
828
- * The link must belong to this definition, so one definition's editor cannot
829
- * revoke another's link with a guessed or leaked linkId.
830
- */
831
- var revokeShareLink = async (req) => {
832
- assertSharingEnabled(req);
833
- const guid = parseParam(req.params.guid, GuidSchema, "GUID");
834
- const linkId = parseParam(req.params.linkId, GuidSchema, "link ID");
835
- const { ctx } = await requireEditableDefinition(req, guid);
836
- const existing = await req.deps.shareLinks.getById(ctx, linkId);
837
- if (!existing || existing.definitionId !== guid) apiError(404, ApiErrorCode.NOT_FOUND, "Share link not found.");
838
- await req.deps.shareLinks.revoke(ctx, linkId);
839
- return noContent();
840
- };
841
- // ../server/src/handlers/definitions.ts
842
- /**
843
- * Definition handlers: the collection, one definition's detail and metadata,
844
- * its live schema, cover image, and the publish channel.
845
- *
846
- * Solve and the two compute routes stay unwrapped deliberately — they stream
847
- * and mark their own metrics, which the `ApiResponse` envelope does not model.
848
- */
849
- var LISTABLE_STATUSES = [
850
- "draft",
851
- "published",
852
- "archived"
853
- ];
854
- /**
855
- * Definitions the caller can view. Visibility is resolved into the query via
856
- * `projectIds`, so `limit`/`nextCursor` describe the filtered set.
857
- *
858
- * `?documentId=<guid>` narrows to definitions uploaded from that Grasshopper
859
- * document which the caller can upload a new version of.
860
- */
861
- var listDefinitions = async (req) => {
862
- const { ctx } = requireCaller(req);
863
- const documentParam = req.url.searchParams.get("documentId");
864
- const documentId = documentParam === null ? null : toSourceDocumentId(documentParam);
865
- if (documentParam !== null && !documentId) apiError(400, ApiErrorCode.VALIDATION_FAILED, "documentId must be a GUID");
866
- const statusParam = req.url.searchParams.get("status");
867
- if (statusParam && !LISTABLE_STATUSES.includes(statusParam)) apiError(400, ApiErrorCode.VALIDATION_FAILED, `status must be one of: ${LISTABLE_STATUSES.join(", ")}`);
868
- const opts = {
869
- ...parseDefinitionListOptions(req.url),
870
- projectId: req.url.searchParams.get("projectId") ?? void 0,
871
- statuses: statusParam ? [statusParam] : void 0
872
- };
873
- const page = documentId ? await listEditableDefinitionsByDocument(ctx, documentId, opts, req.deps) : await listVisibleDefinitions(ctx, opts, req.deps);
874
- return collection({
875
- items: page.items.map(toDefinitionListItem),
876
- nextCursor: page.nextCursor
877
- });
878
- };
879
- function parseTags(raw) {
880
- if (!raw) return void 0;
881
- const tags = raw.split(",").map((t) => t.trim()).filter(Boolean);
882
- return tags.length ? tags : void 0;
883
- }
884
- /** Create a definition — metadata and the Grasshopper file in one request. */
885
- var createDefinition = async (req) => {
886
- const { ctx, user } = requireCaller(req);
887
- const form = await req.request.formData();
888
- const { file, extension } = requireUpload(form, "file", {
889
- maxBytes: req.deps.uploadLimits.maxDefinitionFileSize,
890
- extensions: GH_EXTENSIONS,
891
- label: "Grasshopper (.gh or .ghx) file"
892
- });
893
- const imageFile = form.get("image");
894
- const maxImageBytes = req.deps.uploadLimits.maxImageFileSize;
895
- if (imageFile instanceof File && imageFile.size > maxImageBytes) apiError(400, ApiErrorCode.VALIDATION_FAILED, `Image too large. Max size: ${maxImageBytes / 1048576} MB`);
896
- let projectId = formText(form, "projectId");
897
- if (!projectId) {
898
- if (!ctx.actingOrgId) apiError(400, ApiErrorCode.VALIDATION_FAILED, "No active organization");
899
- const { projects } = await resolveAccessibleProjects(ctx, req.deps);
900
- const fallback = projects.find((p) => p.orgId === ctx.actingOrgId);
901
- if (!fallback) apiError(400, ApiErrorCode.VALIDATION_FAILED, "No accessible project — pass projectId.");
902
- projectId = fallback.id;
903
- }
904
- const { project } = await requireCanCreateDefinition(req, projectId);
905
- const parsed = CreateDefinitionInputSchema.safeParse({
906
- displayName: formText(form, "displayName"),
907
- description: formText(form, "description"),
908
- category: formText(form, "category"),
909
- coverImage: formText(form, "coverImage"),
910
- tags: parseTags(formText(form, "tags")),
911
- projectId,
912
- computeServerId: formText(form, "computeServerId")
913
- });
914
- if (!parsed.success) throwZodError(parsed.error);
915
- const guid = randomUUID();
916
- const fileData = new Uint8Array(await file.arrayBuffer());
917
- const server = await resolveServerForOrg(ctx, project.orgId, req.deps.computeServer, { definitionPin: parsed.data.computeServerId ?? null });
918
- const schema = await fetchSchemaFromCompute(fileData, server);
919
- const service = definitionService(req.deps);
920
- const { record, version } = await service.create(ctx, {
921
- guid,
922
- projectId: parsed.data.projectId,
923
- ownerId: user.id,
924
- fileExt: extension.slice(1),
925
- originalFilename: file.name,
926
- computeServerId: parsed.data.computeServerId,
927
- displayName: parsed.data.displayName.trim(),
928
- description: parsed.data.description,
929
- category: parsed.data.category,
930
- tags: parsed.data.tags,
931
- coverImage: parsed.data.coverImage
932
- }, fileData, schema);
933
- let coverImage = record.coverImage;
934
- if (imageFile instanceof File && imageFile.size > 0) {
935
- const imageData = new Uint8Array(await imageFile.arrayBuffer());
936
- coverImage = await service.saveCoverImage(ctx, guid, imageData);
937
- }
938
- return created({
939
- guid,
940
- version,
941
- coverImage
942
- });
943
- };
944
- /** `schema` is a large blob, served on demand by `/versions/{versionId}/schema`. */
945
- function versionSummary(v) {
946
- return {
947
- id: v.id,
948
- versionNumber: v.versionNumber,
949
- uploadedAt: v.uploadedAt,
950
- uploadedBy: v.uploadedBy,
951
- changeNote: v.changeNote
952
- };
953
- }
954
- /**
955
- * The record plus its live and draft version summaries. `canEdit` says whether
956
- * the caller can upload a version and make one live, scope included for a key.
957
- */
958
- var getDefinition = async (req) => {
959
- const guid = parseParam(req.params.guid, GuidSchema, "GUID");
960
- const { ctx } = requireCaller(req);
961
- const visible = await loadVisibleDefinition(ctx, guid, req.deps);
962
- if (!visible) apiError(404, ApiErrorCode.NOT_FOUND, "Definition not found");
963
- const { record } = visible;
964
- const meta = req.deps.definitionMeta;
965
- const [liveVersion, draftVersion] = await Promise.all([record.liveVersionId ? meta.getVersion(ctx, record.liveVersionId) : null, record.draftVersionId ? meta.getVersion(ctx, record.draftVersionId) : null]);
966
- return { body: {
967
- ...record,
968
- sourceDocumentId: record.sourceDocumentId ?? null,
969
- canEdit: mayUploadToDefinition(ctx, visible, req.deps),
970
- liveVersion: liveVersion ? versionSummary(liveVersion) : null,
971
- draftVersion: draftVersion ? versionSummary(draftVersion) : null
972
- } };
973
- };
974
- /** Soft-delete the definition; versions and blobs are wiped with it. */
975
- var deleteDefinition = async (req) => {
976
- const guid = parseParam(req.params.guid, GuidSchema, "GUID");
977
- const { ctx } = await requireEditableDefinition(req, guid);
978
- await definitionService(req.deps).delete(ctx, guid);
979
- return noContent();
980
- };
981
- /** Metadata only. New versions POST to `/versions`. */
982
- var updateDefinition = async (req) => {
983
- const guid = parseParam(req.params.guid, GuidSchema, "GUID");
984
- const { ctx, record } = await requireEditableDefinition(req, guid);
985
- const patch = await parseBody(req.request, UpdateMetadataInputSchema);
986
- if (patch.projectId && patch.projectId !== record.projectId) {
987
- assertScope(ctx, "write", { projectId: patch.projectId });
988
- await requireCanCreateDefinition(req, patch.projectId);
989
- }
990
- await definitionService(req.deps).updateMeta(ctx, guid, patch);
991
- return noContent();
992
- };
993
- /**
994
- * Convenience alias for the live version's schema — the call a client makes
995
- * before solving. The canonical location is `/versions/{versionId}/schema`;
996
- * this resolves the `live` pointer for you.
997
- */
998
- var getDefinitionSchema = async (req) => {
999
- const guid = parseParam(req.params.guid, GuidSchema, "GUID");
1000
- const { ctx } = requireCaller(req);
1001
- const record = await getVisibleDefinition(ctx, guid, req.deps);
1002
- if (!record) apiError(404, ApiErrorCode.NOT_FOUND, "Definition not found");
1003
- if (!record.liveVersionId) apiError(404, ApiErrorCode.NOT_FOUND, "This definition has no published version");
1004
- const version = await loadVisibleVersion(ctx, guid, record.liveVersionId, req.deps);
1005
- if (!version?.schema) apiError(404, ApiErrorCode.NOT_FOUND, "No schema cached for the live version");
1006
- return { body: version.schema };
1007
- };
1008
- /**
1009
- * Advance the live channel. Body `{ versionId? }` targets a specific version
1010
- * (rollback or forward-roll); omit it to promote the current draft.
1011
- */
1012
- var publishDefinition = async (req) => {
1013
- const guid = parseParam(req.params.guid, GuidSchema, "GUID");
1014
- const { versionId } = await parseBody(req.request, PublishVersionInputSchema, { missingAs: {} });
1015
- const { ctx } = await requireEditableDefinition(req, guid);
1016
- return { body: { version: await definitionService(req.deps).publish(ctx, guid, versionId) } };
1017
- };
1018
- /** Upload a cover image. */
1019
- var uploadDefinitionImage = async (req) => {
1020
- const guid = parseParam(req.params.guid, GuidSchema, "GUID");
1021
- const { ctx } = await requireEditableDefinition(req, guid);
1022
- const { file } = requireUpload(await req.request.formData(), "image", {
1023
- maxBytes: req.deps.uploadLimits.maxImageFileSize,
1024
- label: "Image"
1025
- });
1026
- const data = new Uint8Array(await file.arrayBuffer());
1027
- return { body: { coverImage: await definitionService(req.deps).saveCoverImage(ctx, guid, data) } };
1028
- };
1029
- // ../server/src/handlers/definitionVersions.ts
1030
- /**
1031
- * Version handlers: list, upload, read, delete, and a version's cached schema.
1032
- *
1033
- * Reads resolve through `getVisibleDefinition` / `loadVisibleVersion`, which
1034
- * return `null` rather than throwing, so an invisible definition answers 404.
1035
- * A 403 anywhere here would confirm a guid exists across a tenant boundary.
1036
- */
1037
- var listVersions = async (req) => {
1038
- const guid = parseParam(req.params.guid, GuidSchema, "GUID");
1039
- const { ctx } = requireCaller(req);
1040
- if (!await getVisibleDefinition(ctx, guid, req.deps)) apiError(404, ApiErrorCode.NOT_FOUND, "Definition not found");
1041
- return collection(await req.deps.definitionMeta.listVersions(ctx, guid, parseListOptions(req.url)));
1042
- };
1043
- /** Upload a new version. Advances `draft`; `live` is unchanged until publish. */
1044
- var uploadVersion = async (req) => {
1045
- const guid = parseParam(req.params.guid, GuidSchema, "GUID");
1046
- const form = await req.request.formData();
1047
- const { file, extension } = requireUpload(form, "file", {
1048
- maxBytes: req.deps.uploadLimits.maxDefinitionFileSize,
1049
- extensions: GH_EXTENSIONS,
1050
- label: "Grasshopper (.gh or .ghx) file"
1051
- });
1052
- const changeNote = formText(form, "changeNote", { maxLength: 1e3 });
1053
- const { ctx, record, project } = await requireEditableDefinition(req, guid);
1054
- const data = new Uint8Array(await file.arrayBuffer());
1055
- const server = await resolveServerForOrg(ctx, project?.orgId ?? null, req.deps.computeServer, { definitionPin: record.computeServerId ?? null });
1056
- const schema = await fetchSchemaFromCompute(data, server);
1057
- return created({ version: await definitionService(req.deps).uploadVersion(ctx, guid, data, extension.slice(1), file.name, schema, changeNote) });
1058
- };
1059
- /**
1060
- * Version metadata. `schema` is excluded and served by the `/schema`
1061
- * sub-resource, so a version read never carries a several-hundred-KB blob.
1062
- */
1063
- var getVersion = async (req) => {
1064
- const guid = parseParam(req.params.guid, GuidSchema, "GUID");
1065
- const versionId = parseParam(req.params.versionId, GuidSchema, "version ID");
1066
- const { ctx } = requireCaller(req);
1067
- const version = await loadVisibleVersion(ctx, guid, versionId, req.deps);
1068
- if (!version) apiError(404, ApiErrorCode.NOT_FOUND, "Version not found");
1069
- const { schema: _schema, ...rest } = version;
1070
- return { body: rest };
1071
- };
1072
- /**
1073
- * Delete an old version. The store throws 409 if the version is currently
1074
- * referenced by `liveVersionId` or `draftVersionId` — repoint first.
1075
- */
1076
- var deleteVersion = async (req) => {
1077
- const guid = parseParam(req.params.guid, GuidSchema, "GUID");
1078
- const versionId = parseParam(req.params.versionId, GuidSchema, "version ID");
1079
- const { ctx } = await requireEditableDefinition(req, guid);
1080
- await definitionService(req.deps).deleteVersion(ctx, guid, versionId);
1081
- return noContent();
1082
- };
1083
- /**
1084
- * The UI schema cached on this version at upload. Reads what is stored — no
1085
- * Rhino.Compute round-trip, unlike the pre-upload `POST /api/v1/compute/schema`.
1086
- *
1087
- * Schemas belong to a version, so this is the canonical location;
1088
- * `/definitions/{guid}/schema` is an alias for the live one.
1089
- */
1090
- var getVersionSchema = async (req) => {
1091
- const guid = parseParam(req.params.guid, GuidSchema, "GUID");
1092
- const versionId = parseParam(req.params.versionId, GuidSchema, "version ID");
1093
- const { ctx } = requireCaller(req);
1094
- const version = await loadVisibleVersion(ctx, guid, versionId, req.deps);
1095
- if (!version) apiError(404, ApiErrorCode.NOT_FOUND, "Version not found");
1096
- if (!version.schema) apiError(404, ApiErrorCode.NOT_FOUND, "No schema cached for this version");
1097
- return { body: version.schema };
1098
- };
1099
- // ../server/src/handlers/projects.ts
1100
- /**
1101
- * Project handlers: the collection, and a single project's detail and settings.
1102
- *
1103
- * `listProjects` was authored against `resolveAccessibleProjects`, not lifted
1104
- * from the pre-v1 handler: that one listed every project in the acting org with
1105
- * no `canView` filter and had no UI caller, so it carried no evidence of being
1106
- * correct. The rest are lifted, logic intact, with reads moved onto `req.deps`.
1107
- */
1108
- /**
1109
- * Projects the caller can view. `canCreateDefinitions` says whether
1110
- * `POST /definitions` would take this project from this caller: the same rule
1111
- * as the route, and for an API token its `upload` scope there.
1112
- */
1113
- var listProjects = async (req) => {
1114
- const { ctx } = requireCaller(req);
1115
- const set = await resolveAccessibleProjects(ctx, req.deps);
1116
- const { projects } = set;
1117
- const { limit, cursor } = parseListOptions(req.url);
1118
- const start = cursor ? Number(cursor) : 0;
1119
- if (!Number.isInteger(start) || start < 0) apiError(400, ApiErrorCode.VALIDATION_FAILED, "Invalid cursor");
1120
- const items = projects.slice(start, start + (limit ?? projects.length));
1121
- const nextIndex = start + items.length;
1122
- const tokenMayUpload = scopeAllows(ctx, "upload");
1123
- return collection({
1124
- items: items.map((project) => ({
1125
- ...project,
1126
- canCreateDefinitions: tokenMayUpload && canCreateDefinition(projectAccessInputFromRowsWith(req, ctx, project, {
1127
- member: set.memberByProjectId.get(project.id) ?? null,
1128
- orgMember: set.orgMemberByOrgId.get(project.orgId) ?? null,
1129
- platformGrants: set.grantsByProjectId.get(project.id) ?? []
1130
- }))
1131
- })),
1132
- nextCursor: nextIndex < projects.length ? String(nextIndex) : void 0
1133
- });
1134
- };
1135
- var createProject = async (req) => {
1136
- const { ctx, user } = requireCaller(req);
1137
- if (!ctx.actingOrgId) apiError(400, ApiErrorCode.VALIDATION_FAILED, "No active organization");
1138
- await requireCanCreateProject(req, ctx.actingOrgId);
1139
- const input = await parseBody(req.request, CreateProjectBodySchema);
1140
- if (input.visibility === "platform" && !hasPermission(ctx, "instance_admin")) apiError(403, ApiErrorCode.FORBIDDEN, "Only a platform admin can create a project with platform visibility.");
1141
- const autoJoinOnUpload = input.autoJoinOnUpload ?? false;
1142
- const flagIssues = validateProjectFlags({
1143
- visibility: input.visibility,
1144
- autoJoinOnUpload
1145
- });
1146
- if (flagIssues.length > 0) apiError(400, ApiErrorCode.VALIDATION_FAILED, flagIssues.map((i) => `${i.path}: ${i.message}`).join("; "));
1147
- return created(await createProjectWithUniqueSlug(req.deps.projects, {
1148
- id: randomUUID(),
1149
- orgId: ctx.actingOrgId,
1150
- name: input.name,
1151
- description: input.description,
1152
- visibility: input.visibility,
1153
- ownerId: user.id,
1154
- createdBy: user.id,
1155
- updatedBy: user.id,
1156
- autoJoinOnUpload
1157
- }, {
1158
- writeCtx: ctx,
1159
- fallbackSlug: "project",
1160
- conflictScope: "this organization"
1161
- }));
1162
- };
1163
- /**
1164
- * Project detail plus the caller's effective capabilities on it.
1165
- *
1166
- * A project the caller cannot view returns 404, not 403 — `403` would confirm
1167
- * the id exists to anyone probing.
1168
- */
1169
- var getProject = async (req) => {
1170
- const { id } = requireParams(req.params, "id");
1171
- const { ctx } = requireCaller(req);
1172
- const project = await req.deps.projects.getProject(SYSTEM_CONTEXT, id);
1173
- if (!project || outsideTokenOrg(ctx, project.orgId)) apiError(404, ApiErrorCode.NOT_FOUND, "Project not found");
1174
- const [orgMembers, projectMembers, grants] = await Promise.all([
1175
- req.deps.orgs.getOrgMembersFor(SYSTEM_CONTEXT, [project.orgId], ctx.userId),
1176
- req.deps.projects.getProjectMembersFor(SYSTEM_CONTEXT, [project.id], ctx.userId),
1177
- project.visibility === "platform" ? req.deps.platformProjectGrants.listByProject(SYSTEM_CONTEXT, project.id) : Promise.resolve([])
1178
- ]);
1179
- const member = projectMembers.get(project.id) ?? null;
1180
- const input = projectAccessInputFromRowsWith(req, ctx, project, {
1181
- member,
1182
- orgMember: orgMembers.get(project.orgId) ?? null,
1183
- platformGrants: grants
1184
- });
1185
- if (!canView(input)) apiError(404, ApiErrorCode.NOT_FOUND, "Project not found");
1186
- return { body: {
1187
- ...project,
1188
- role: member?.role ?? null,
1189
- canEdit: canEdit(input),
1190
- canSolve: canSolve(input)
1191
- } };
1192
- };
1193
- var updateProject = async (req) => {
1194
- const { id } = requireParams(req.params, "id");
1195
- const { ctx, project: existing } = await requireCanEditProjectSettings(req, id);
1196
- const input = await parseBody(req.request, UpdateProjectBodySchema);
1197
- if (input.visibility === "platform" && existing.visibility !== "platform") {
1198
- if (!hasPermission(ctx, "instance_admin")) apiError(403, ApiErrorCode.FORBIDDEN, "Only a platform admin can give a project platform visibility.");
1199
- }
1200
- if (input.visibility === "public" && existing.visibility !== "public") {
1201
- const orgMember = await req.deps.orgs.getOrgMember(ctx, existing.orgId, ctx.userId);
1202
- if (!withAdminBypass(ctx.platformPermissions, () => canChangeVisibilityToPublic({ orgMember }))) apiError(403, ApiErrorCode.FORBIDDEN, "Only org owners or admins can make a project public.");
1203
- }
1204
- const flagIssues = validateProjectFlags({
1205
- visibility: input.visibility ?? existing.visibility,
1206
- autoJoinOnUpload: input.autoJoinOnUpload ?? existing.autoJoinOnUpload
1207
- });
1208
- if (flagIssues.length > 0) apiError(400, ApiErrorCode.VALIDATION_FAILED, flagIssues.map((i) => `${i.path}: ${i.message}`).join("; "));
1209
- const patch = {};
1210
- if (input.name !== void 0) {
1211
- patch.name = input.name;
1212
- patch.slug = slugify(input.name);
1213
- }
1214
- if (input.description !== void 0) patch.description = input.description ?? void 0;
1215
- if (input.visibility !== void 0) patch.visibility = input.visibility;
1216
- if (input.autoJoinOnUpload !== void 0) patch.autoJoinOnUpload = input.autoJoinOnUpload;
1217
- await req.deps.projects.updateProject(ctx, id, patch);
1218
- return noContent();
1219
- };
1220
- var deleteProject = async (req) => {
1221
- const { id } = requireParams(req.params, "id");
1222
- const { ctx } = requireCaller(req);
1223
- await requireCanManage(req, id);
1224
- await req.deps.projects.deleteProject(ctx, id);
1225
- return noContent();
1226
- };
1227
- // ../server/src/handlers/projectMembers.ts
1228
- /**
1229
- * Project membership: list, add, change role, remove.
1230
- *
1231
- * Every method here gates on `requireCanManage(req, id, 'members')`. The
1232
- * owner-count preconditions on PATCH and DELETE come from `checkOwnerRemoval`,
1233
- * a pure rules function, so demotion and removal cannot drift apart — a sole
1234
- * owner demoting themselves locks the project exactly as removing themselves
1235
- * would.
1236
- */
1237
- var listProjectMembers = async (req) => {
1238
- const { id } = requireParams(req.params, "id");
1239
- const { ctx } = requireCaller(req);
1240
- await requireCanManage(req, id, "members");
1241
- return collection(await req.deps.projects.listProjectMembers(ctx, id, parseListOptions(req.url)));
1242
- };
1243
- var addProjectMember = async (req) => {
1244
- const { id } = requireParams(req.params, "id");
1245
- const { ctx } = requireCaller(req);
1246
- await requireCanManage(req, id, "members");
1247
- const input = await parseBody(req.request, AddProjectMemberBodySchema);
1248
- const project = await req.deps.projects.getProject(ctx, id);
1249
- if (!project) apiError(404, ApiErrorCode.NOT_FOUND, "Project not found");
1250
- await requireTargetIsOrgMember(req, project.orgId, input.userId);
1251
- const now = (/* @__PURE__ */ new Date()).toISOString();
1252
- const member = {
1253
- projectId: id,
1254
- userId: input.userId,
1255
- role: input.role,
1256
- joinedAt: now,
1257
- updatedAt: now,
1258
- updatedBy: ctx.userId || input.userId,
1259
- deletedAt: null
1260
- };
1261
- await req.deps.projects.addProjectMember(ctx, member);
1262
- return created(member);
1263
- };
1264
- /**
1265
- * Guard the owner count before a demotion or removal goes through.
1266
- *
1267
- * `?confirm=true` is what distinguishes "I meant to do this" from a misclick;
1268
- * the sole-owner case has no confirmation, because there is no state the
1269
- * caller could confirm into that leaves the project manageable.
1270
- */
1271
- async function assertOwnerRemovable(req, projectId, target, action) {
1272
- const { ctx } = requireCaller(req);
1273
- const page = await req.deps.projects.listProjectMembers(ctx, projectId, { limit: 200 });
1274
- const decision = checkOwnerRemoval({
1275
- target: { role: target.role },
1276
- allMembers: page.items.map((m) => ({ role: m.role })),
1277
- confirmed: req.url.searchParams.get("confirm") === "true"
1278
- });
1279
- if (decision === "sole_owner") apiError(409, ApiErrorCode.CONFLICT, `Cannot ${action} the sole owner of a project. Assign another owner first, or use reclaim to add a co-owner.`);
1280
- if (decision === "needs_confirm") apiError(409, ApiErrorCode.CONFLICT, `${action === "demote" ? "Demoting" : "Removing"} another project owner requires explicit confirmation. Retry with ?confirm=true.`);
1281
- }
1282
- var updateProjectMemberRole = async (req) => {
1283
- const { id, userId } = requireParams(req.params, "id", "userId");
1284
- const { ctx } = requireCaller(req);
1285
- await requireCanManage(req, id, "members");
1286
- const { role } = await parseBody(req.request, UpdateProjectMemberBodySchema);
1287
- if (role !== "owner") {
1288
- const target = await req.deps.projects.getProjectMember(ctx, id, userId);
1289
- if (target?.role === "owner") await assertOwnerRemovable(req, id, target, "demote");
1290
- }
1291
- await req.deps.projects.updateProjectMemberRole(ctx, id, userId, role);
1292
- return noContent();
1293
- };
1294
- var removeProjectMember = async (req) => {
1295
- const { id, userId } = requireParams(req.params, "id", "userId");
1296
- const { ctx } = requireCaller(req);
1297
- await requireCanManage(req, id, "members");
1298
- const target = await req.deps.projects.getProjectMember(ctx, id, userId);
1299
- if (!target) return noContent();
1300
- if (target.role === "owner") await assertOwnerRemovable(req, id, target, "remove");
1301
- await req.deps.projects.removeProjectMember(ctx, id, userId);
1302
- return noContent();
1303
- };
1304
- // ../server/src/handlers/orgCompute.ts
1305
- /**
1306
- * Per-org compute config: this org's own servers (`scope: 'org'`) and its
1307
- * default selection (`orgDefaults[orgId]`). Platform servers and the global
1308
- * default are read-only here — `manage_compute` owns those via `/api/admin/compute`.
1309
- *
1310
- * Authorization: org `owner`/`admin` with `manage_org_compute`, plus the acting-org
1311
- * tenancy check. Gated by `ALLOW_ORG_COMPUTE_OVERRIDE`; when off, both methods 403.
1312
- *
1313
- * **`apiKey` merge semantics are the trap here.** Omitted preserves the stored
1314
- * key, `null` clears it, a string replaces it — and `/api/admin/compute` must
1315
- * agree, which is why the merge lives in `@selvajs/server/compute`, not inline.
1316
- */
1317
- function requireFlag(req) {
1318
- if (!req.deps.flag("ALLOW_ORG_COMPUTE_OVERRIDE")) apiError(403, ApiErrorCode.FORBIDDEN, "Per-org compute override is disabled on this instance (ALLOW_ORG_COMPUTE_OVERRIDE).");
1319
- }
1320
- var getOrgCompute = async (req) => {
1321
- requireFlag(req);
1322
- requireManageOrgCompute(req);
1323
- const { ctx, orgId } = requireActingOrg(req, req.params.orgId);
1324
- const config = await req.deps.computeServer.getConfig(ctx, { scopeToOrgId: orgId });
1325
- const owned = config.servers.filter((s) => isOrgServer(s) && s.ownerOrgId === orgId).map((s) => ({
1326
- ...s,
1327
- hasApiKey: !!s.hasApiKey
1328
- }));
1329
- const catalog = config.servers.map((s) => ({
1330
- id: s.id,
1331
- label: s.label,
1332
- serverUrl: s.serverUrl,
1333
- scope: s.scope,
1334
- source: isPlatformServer(s) ? "platform" : "org",
1335
- timeoutMs: s.timeoutMs,
1336
- retryCount: s.retryCount
1337
- }));
1338
- return shaped(OrgComputeResponseSchema, {
1339
- servers: owned,
1340
- defaultServerId: config.orgDefaults?.[orgId] ?? null,
1341
- globalDefaultServerId: config.defaultServerId ?? null,
1342
- catalog
1343
- });
1344
- };
1345
- var updateOrgCompute = async (req) => {
1346
- requireFlag(req);
1347
- requireManageOrgCompute(req);
1348
- const { ctx, orgId } = requireActingOrg(req, req.params.orgId);
1349
- const incoming = await parseBody(req.request, OrgComputePatchBodySchema);
1350
- validateIncomingServers(incoming.servers);
1351
- const provider = req.deps.computeServer;
1352
- const existing = await provider.getConfig(ctx, { includeApiKeys: true });
1353
- const storedKeys = storedKeysById(existing.servers.filter((s) => isOrgServer(s) && s.ownerOrgId === orgId));
1354
- const next = incoming.servers.map((s) => ({
1355
- id: s.id,
1356
- scope: "org",
1357
- ownerOrgId: orgId,
1358
- label: s.label,
1359
- serverUrl: s.serverUrl,
1360
- timeoutMs: s.timeoutMs,
1361
- retryCount: s.retryCount,
1362
- apiKey: resolveApiKey(s.apiKey, storedKeys.get(s.id))
1363
- }));
1364
- if (typeof incoming.defaultServerId === "string") {
1365
- const projected = {
1366
- servers: [...existing.servers.filter((s) => !(isOrgServer(s) && s.ownerOrgId === orgId)), ...next],
1367
- defaultServerId: existing.defaultServerId,
1368
- orgDefaults: existing.orgDefaults
1369
- };
1370
- if (!new Set(serversVisibleTo(projected, orgId).map((s) => s.id)).has(incoming.defaultServerId)) apiError(400, ApiErrorCode.VALIDATION_FAILED, "defaultServerId must reference a server visible to this organization");
1371
- }
1372
- await provider.saveOrgServers(ctx, orgId, next, incoming.defaultServerId);
1373
- evictChangedServers(existing.servers.filter((s) => isOrgServer(s) && s.ownerOrgId === orgId), next, req.deps.evictComputeClient);
1374
- return noContent();
1375
- };
1376
- // ../server/src/handlers/invite-lookup.ts
1377
- /**
1378
- * Find an invite by id, confirming it belongs to `orgId`.
1379
- *
1380
- * `manage_org_members` is org-scoped, so a permitted caller must not reach an
1381
- * invite in another org. Neither store scopes `revoke()` by acting org, so
1382
- * every route that mutates an invite by id has to establish ownership first —
1383
- * hence one shared paged scan rather than a copy per route.
1384
- */
1385
- async function findPendingInviteInOrg(ctx, orgId, id, store) {
1386
- let cursor;
1387
- do {
1388
- const page = await store.listByOrg(ctx, orgId, {
1389
- limit: 200,
1390
- cursor
1391
- });
1392
- const match = page.items.find((i) => i.id === id);
1393
- if (match) return match;
1394
- cursor = page.nextCursor ?? void 0;
1395
- } while (cursor);
1396
- return null;
1397
- }
1398
- // ../server/src/handlers/invites.ts
1399
- /**
1400
- * Org invites: list, mint, revoke, resend.
1401
- *
1402
- * **The raw token exists only in the response.** The store sees an HMAC digest,
1403
- * so a leak of the `invites` table cannot be replayed without the instance
1404
- * secret — and `tokenHash` is dropped by the response schema, which is why
1405
- * every response here goes through `shaped`/`shapedCollection` rather than
1406
- * `{ body }`.
1407
- */
1408
- var INVITE_TTL_MS = 6048e5;
1409
- /**
1410
- * Mail the accept link, or report why not.
1411
- *
1412
- * Mint and resend must send the identical message, so the deps threading lives
1413
- * here rather than at each call site. `not-configured` when the host wired no
1414
- * notification provider: the invite row is already committed and the caller
1415
- * still holds `acceptUrl`, so an instance without mail is a working instance,
1416
- * not a failed write.
1417
- */
1418
- async function mailInvite(req, invite, acceptUrl) {
1419
- const notifications = req.deps.notifications;
1420
- if (!notifications) return "not-configured";
1421
- return deliverInvite({
1422
- ctx: req.ctx,
1423
- log: req.log,
1424
- invite,
1425
- acceptUrl,
1426
- actor: {
1427
- profile: req.profile,
1428
- user: req.user
1429
- },
1430
- orgs: req.deps.orgs,
1431
- notifications,
1432
- fallbackOrgName: req.deps.instanceName
1433
- });
1434
- }
1435
- /** Pending and recently accepted invites for the acting org. */
1436
- var listInvites = async (req) => {
1437
- requireManageOrgMembers(req);
1438
- const { ctx, orgId } = requireActingOrg(req, req.params.orgId);
1439
- return shapedCollection(InviteResponseSchema, await req.deps.invites.listByOrg(ctx, orgId, parseListOptions(req.url)));
1440
- };
1441
- /** Create an invite and return the accept URL. */
1442
- var createInvite = async (req) => {
1443
- requireManageOrgMembers(req);
1444
- const { ctx, orgId } = requireActingOrg(req, req.params.orgId);
1445
- const { user } = requireCaller(req);
1446
- const input = await parseBody(req.request, CreateInviteBodySchema);
1447
- const { platform: submittedPlatformPerms, org: submittedOrgPerms } = splitFlatPermissions(input.permissions);
1448
- assertCanGrantPlatformPermissions(ctx, submittedPlatformPerms);
1449
- if (!await canActorChangeOrgRole(ctx, orgId, input.orgRole, req)) apiError(403, ApiErrorCode.FORBIDDEN, "Only the org owner can invite someone as owner or admin.");
1450
- const orgPermissions = input.orgRole === "member" ? submittedOrgPerms.filter((p) => MEMBER_ASSIGNABLE_PERMISSIONS.includes(p)) : [...DEFAULT_ORG_PERMISSIONS[input.orgRole]];
1451
- const codec = tokenCodec(req.deps, "invites");
1452
- const rawToken = codec.mintRawToken();
1453
- const now = /* @__PURE__ */ new Date();
1454
- const invite = {
1455
- id: randomUUID(),
1456
- tokenHash: codec.hashToken(rawToken),
1457
- email: input.email,
1458
- orgId,
1459
- orgRole: input.orgRole,
1460
- orgPermissions,
1461
- platformPermissions: submittedPlatformPerms,
1462
- invitedBy: user.id,
1463
- createdAt: now.toISOString(),
1464
- expiresAt: new Date(now.getTime() + INVITE_TTL_MS).toISOString()
1465
- };
1466
- await req.deps.invites.create(ctx, invite);
1467
- const acceptUrl = `${req.url.origin}/accept-invite?token=${rawToken}`;
1468
- const delivery = await mailInvite(req, invite, acceptUrl);
1469
- return shaped(CreatedInviteResponseSchema, {
1470
- ...invite,
1471
- acceptUrl,
1472
- delivery
1473
- }, 201);
1474
- };
1475
- /** Revoke a pending invite. Consumed invites are preserved for audit. */
1476
- var revokeInvite = async (req) => {
1477
- requireManageOrgMembers(req);
1478
- const { ctx, orgId } = requireActingOrg(req, req.params.orgId);
1479
- const { id } = requireParams(req.params, "id");
1480
- if (!await findPendingInviteInOrg(ctx, orgId, id, req.deps.invites)) apiError(404, ApiErrorCode.NOT_FOUND, "Invite not found");
1481
- await req.deps.invites.revoke(ctx, id);
1482
- return noContent();
1483
- };
1484
- /**
1485
- * Re-send an invite: mint a replacement and revoke the original.
1486
- *
1487
- * A resend cannot reuse the original link. The raw token is never stored — only
1488
- * its HMAC digest is — so there is nothing to re-read, and rather than weaken
1489
- * that, this issues a fresh token and revokes the row it replaces. The old link
1490
- * stops working the moment this returns, which is also what an admin wants
1491
- * after mailing an invite to the wrong address.
1492
- *
1493
- * Grants are copied verbatim from the original. The role and permission gates
1494
- * ran when it was minted; re-deriving them here would let a since-demoted admin
1495
- * silently change what the invite carries.
1496
- */
1497
- var resendInvite = async (req) => {
1498
- requireManageOrgMembers(req);
1499
- const { ctx, orgId } = requireActingOrg(req, req.params.orgId);
1500
- const { id } = requireParams(req.params, "id");
1501
- const existing = await findPendingInviteInOrg(ctx, orgId, id, req.deps.invites);
1502
- if (!existing) apiError(404, ApiErrorCode.NOT_FOUND, "Invite not found");
1503
- if (existing.acceptedAt) apiError(409, ApiErrorCode.CONFLICT, "This invite has already been accepted.");
1504
- const codec = tokenCodec(req.deps, "invites");
1505
- const rawToken = codec.mintRawToken();
1506
- const now = /* @__PURE__ */ new Date();
1507
- const replacement = {
1508
- ...existing,
1509
- id: randomUUID(),
1510
- tokenHash: codec.hashToken(rawToken),
1511
- createdAt: now.toISOString(),
1512
- expiresAt: new Date(now.getTime() + INVITE_TTL_MS).toISOString()
1513
- };
1514
- await req.deps.invites.create(ctx, replacement);
1515
- await req.deps.invites.revoke(ctx, existing.id);
1516
- const acceptUrl = `${req.url.origin}/accept-invite?token=${rawToken}`;
1517
- const delivery = await mailInvite(req, replacement, acceptUrl);
1518
- return shaped(CreatedInviteResponseSchema, {
1519
- ...replacement,
1520
- acceptUrl,
1521
- delivery
1522
- }, 201);
1523
- };
1524
- // ../server/src/handlers/oauthConsent.ts
1525
- async function contextIn(req, member) {
1526
- const { ctx, user } = requireCaller(req);
1527
- if (ctx.apiScope) apiError(403, ApiErrorCode.FORBIDDEN, "Sign in to the web app to connect an app.");
1528
- return {
1529
- ...await buildRequestContext({
1530
- user,
1531
- platformPermissions: ctx.platformPermissions,
1532
- membership: member,
1533
- pinOrg: true
1534
- }, { orgs: req.deps.orgs }),
1535
- adapterContext: ctx.adapterContext
1536
- };
1537
- }
1538
- /**
1539
- * The orgs the signed-in user may grant a key with `scopes` in: those they
1540
- * belong to and may hold such a key in.
1541
- */
1542
- async function consentOrgs(req, scopes) {
1543
- const { ctx } = requireCaller(req);
1544
- const memberships = await listUserMemberships(req.deps.orgs, ctx.userId);
1545
- const allowed = await Promise.all(memberships.map(async ({ member }) => mayHoldApiTokens(req.deps, await contextIn(req, member), scopes)));
1546
- return memberships.filter((_, i) => allowed[i]).map(({ org }) => ({
1547
- id: org.id,
1548
- name: org.name
1549
- }));
1550
- }
1551
- /**
1552
- * What a consent page offers for a request's scopes, and what its approval
1553
- * accepts. Null when the user may grant none of it anywhere.
1554
- */
1555
- async function consentOffer(req, scopes) {
1556
- const offered = (await Promise.all(consentChoices(scopes).map(async (choice) => ({
1557
- choice,
1558
- orgs: await consentOrgs(req, apiScopesFor(choice.scopes))
1559
- })))).filter((l) => l.orgs.length > 0);
1560
- if (!offered.length) return null;
1561
- return {
1562
- choices: offered.map((l) => l.choice),
1563
- orgs: offered[offered.length - 1].orgs
1564
- };
1565
- }
1566
- /**
1567
- * Mint the key a consent grants, acting in `orgId`. An org the user doesn't
1568
- * belong to is refused here, whatever the form said.
1569
- */
1570
- async function mintConsentToken(req, orgId, input) {
1571
- const { ctx } = requireCaller(req);
1572
- const picked = (await listUserMemberships(req.deps.orgs, ctx.userId)).find(({ org }) => org.id === orgId);
1573
- if (!picked) apiError(403, ApiErrorCode.FORBIDDEN, "You aren’t a member of that organization.");
1574
- return mintApiToken({
1575
- ...req,
1576
- ctx: await contextIn(req, picked.member)
1577
- }, input);
1578
- }
1579
-
1580
- export { getOrg as A, uploadOrgAsset as B, removeOrgAsset as C, getOrgCompute as D, updateOrgCompute as E, listInvites as F, createInvite as G, revokeInvite as H, resendInvite as I, listOrgMembers as J, updateOrgMember as K, removeOrgMember as L, listApiTokens as M, createApiToken as N, revokeApiToken as O, listProjects as P, createProject as Q, getProject as R, updateProject as S, deleteProject as T, listProjectMembers as U, addProjectMember as V, updateProjectMemberRole as W, removeProjectMember as X, reclaimProject as Y, mintConsentToken as a, canManageApiTokenRoster as b, consentOffer as c, listDefinitions as d, createDefinition as e, deleteDefinition as f, getDefinition as g, uploadDefinitionImage as h, getDefinitionSchema as i, listShareLinks as j, createShareLink as k, listOrgApiTokens as l, mayHoldApiTokens as m, revokeShareLink as n, listVersions as o, publishDefinition as p, uploadVersion as q, revokeUserApiTokens as r, getVersion as s, deleteVersion as t, updateDefinition as u, getVersionSchema as v, getMe as w, starDefinition as x, unstarDefinition as y, revokeOwnApiToken as z };
1581
- //# sourceMappingURL=handlers.js-BIQ7FHYG.js.map