@selvajs/selva 4.6.21-beta.0 → 4.7.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. package/build/client/_app/immutable/chunks/{BRbaYEL5.js → 9i3rf9gV.js} +1 -1
  2. package/build/client/_app/immutable/chunks/9i3rf9gV.js.br +0 -0
  3. package/build/client/_app/immutable/chunks/9i3rf9gV.js.gz +0 -0
  4. package/build/client/_app/immutable/chunks/{zOoVG74V.js → BUuRpU5m.js} +1 -1
  5. package/build/client/_app/immutable/chunks/BUuRpU5m.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/BUuRpU5m.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{COYKudi0.js → C1lje54W.js} +1 -1
  8. package/build/client/_app/immutable/chunks/C1lje54W.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/C1lje54W.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/{I2TM0do6.js → CNzANXEE.js} +1 -1
  11. package/build/client/_app/immutable/chunks/CNzANXEE.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/CNzANXEE.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{CYwmPsLn.js → CZrHjFO_.js} +1 -1
  14. package/build/client/_app/immutable/chunks/CZrHjFO_.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/CZrHjFO_.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{B2u4e1Y9.js → CtQi8B_W.js} +5 -5
  17. package/build/client/_app/immutable/chunks/CtQi8B_W.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/CtQi8B_W.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/D0ZkELYt.js +2 -0
  20. package/build/client/_app/immutable/chunks/D0ZkELYt.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/D0ZkELYt.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/DvWy04ZP.js +2 -0
  23. package/build/client/_app/immutable/chunks/DvWy04ZP.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/DvWy04ZP.js.gz +0 -0
  25. package/build/client/_app/immutable/entry/{app.CRaXT8K-.js → app.CHLvYXSV.js} +2 -2
  26. package/build/client/_app/immutable/entry/app.CHLvYXSV.js.br +0 -0
  27. package/build/client/_app/immutable/entry/app.CHLvYXSV.js.gz +0 -0
  28. package/build/client/_app/immutable/entry/start.x7J2Q5dO.js +1 -0
  29. package/build/client/_app/immutable/entry/start.x7J2Q5dO.js.br +2 -0
  30. package/build/client/_app/immutable/entry/start.x7J2Q5dO.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/{1.DPMP9Es7.js → 1.DHaPDVfK.js} +1 -1
  32. package/build/client/_app/immutable/nodes/1.DHaPDVfK.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/1.DHaPDVfK.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/10.O0oWpOpl.js +3 -0
  35. package/build/client/_app/immutable/nodes/10.O0oWpOpl.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/10.O0oWpOpl.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/{11.BxhrIetk.js → 11.DhYj36Fk.js} +1 -1
  38. package/build/client/_app/immutable/nodes/11.DhYj36Fk.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/11.DhYj36Fk.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/{13.bzJyaCKt.js → 13.CfJOch3J.js} +1 -1
  41. package/build/client/_app/immutable/nodes/13.CfJOch3J.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/13.CfJOch3J.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{14.XVGDZn7V.js → 14.DisTiyB2.js} +1 -1
  44. package/build/client/_app/immutable/nodes/14.DisTiyB2.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/14.DisTiyB2.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/{15.Ds7J6ry6.js → 15.A437nu0T.js} +1 -1
  47. package/build/client/_app/immutable/nodes/15.A437nu0T.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/15.A437nu0T.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/{16.C6HKDHv3.js → 16.B9S-bV_g.js} +1 -1
  50. package/build/client/_app/immutable/nodes/16.B9S-bV_g.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/16.B9S-bV_g.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{17.BxjH0QZF.js → 17.BRN_aGIk.js} +1 -1
  53. package/build/client/_app/immutable/nodes/17.BRN_aGIk.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/17.BRN_aGIk.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/{19.BU2Lw57i.js → 19.DwCFMX9M.js} +1 -1
  56. package/build/client/_app/immutable/nodes/19.DwCFMX9M.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/19.DwCFMX9M.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/{2.D9dN-poH.js → 2.DP5fYr4M.js} +1 -1
  59. package/build/client/_app/immutable/nodes/2.DP5fYr4M.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/2.DP5fYr4M.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/20.nfHXDL2z.js +5414 -0
  62. package/build/client/_app/immutable/nodes/20.nfHXDL2z.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/20.nfHXDL2z.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/{21.qpo7v5r_.js → 21.OD5sg0NU.js} +1 -1
  65. package/build/client/_app/immutable/nodes/21.OD5sg0NU.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/21.OD5sg0NU.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/23.CNjTTgpk.js +16 -0
  68. package/build/client/_app/immutable/nodes/23.CNjTTgpk.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/23.CNjTTgpk.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/{24.BSJH1lHT.js → 24.CEgabT6P.js} +1 -1
  71. package/build/client/_app/immutable/nodes/24.CEgabT6P.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/24.CEgabT6P.js.gz +0 -0
  73. package/build/client/_app/immutable/nodes/{27.BKQucFUA.js → 27.CRIaBHAx.js} +1 -1
  74. package/build/client/_app/immutable/nodes/27.CRIaBHAx.js.br +0 -0
  75. package/build/client/_app/immutable/nodes/27.CRIaBHAx.js.gz +0 -0
  76. package/build/client/_app/immutable/nodes/{28.BleEhT0J.js → 28.BC6m2tWk.js} +1 -1
  77. package/build/client/_app/immutable/nodes/28.BC6m2tWk.js.br +0 -0
  78. package/build/client/_app/immutable/nodes/28.BC6m2tWk.js.gz +0 -0
  79. package/build/client/_app/immutable/nodes/{29.fAbDo5Et.js → 29.BFYPdg-j.js} +1 -1
  80. package/build/client/_app/immutable/nodes/29.BFYPdg-j.js.br +0 -0
  81. package/build/client/_app/immutable/nodes/29.BFYPdg-j.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/{3.XubMG-dn.js → 3.J7HfMiHi.js} +1 -1
  83. package/build/client/_app/immutable/nodes/3.J7HfMiHi.js.br +0 -0
  84. package/build/client/_app/immutable/nodes/3.J7HfMiHi.js.gz +0 -0
  85. package/build/client/_app/immutable/nodes/{30.DRrc_hLr.js → 30.60AXFjfN.js} +1 -1
  86. package/build/client/_app/immutable/nodes/30.60AXFjfN.js.br +0 -0
  87. package/build/client/_app/immutable/nodes/30.60AXFjfN.js.gz +0 -0
  88. package/build/client/_app/immutable/nodes/{5.C77UuNpH.js → 5.CLnvzJQ1.js} +1 -1
  89. package/build/client/_app/immutable/nodes/5.CLnvzJQ1.js.br +1 -0
  90. package/build/client/_app/immutable/nodes/5.CLnvzJQ1.js.gz +0 -0
  91. package/build/client/_app/immutable/nodes/{6.B23L8hA_.js → 6.8mUhfqtj.js} +1 -1
  92. package/build/client/_app/immutable/nodes/6.8mUhfqtj.js.br +0 -0
  93. package/build/client/_app/immutable/nodes/6.8mUhfqtj.js.gz +0 -0
  94. package/build/client/_app/immutable/nodes/{7.BZj0oAjH.js → 7.Bu0PYCkD.js} +1 -1
  95. package/build/client/_app/immutable/nodes/7.Bu0PYCkD.js.br +0 -0
  96. package/build/client/_app/immutable/nodes/7.Bu0PYCkD.js.gz +0 -0
  97. package/build/client/_app/immutable/nodes/{8.CGy_fUC4.js → 8.CzmdM7pu.js} +1 -1
  98. package/build/client/_app/immutable/nodes/8.CzmdM7pu.js.br +0 -0
  99. package/build/client/_app/immutable/nodes/8.CzmdM7pu.js.gz +0 -0
  100. package/build/client/_app/immutable/nodes/{9.BpEiOuN0.js → 9.BogAwqgH.js} +1 -1
  101. package/build/client/_app/immutable/nodes/9.BogAwqgH.js.br +0 -0
  102. package/build/client/_app/immutable/nodes/9.BogAwqgH.js.gz +0 -0
  103. package/build/client/_app/version.json +1 -1
  104. package/build/client/_app/version.json.br +0 -0
  105. package/build/client/_app/version.json.gz +0 -0
  106. package/build/handler.js +4 -4
  107. package/build/index.js +4 -4
  108. package/build/server/chunks/chunks/{access.server.js-D99g5hZd.js → access.server.js-_nJWuQcN.js} +66 -51
  109. package/build/server/chunks/chunks/access.server.js-_nJWuQcN.js.map +1 -0
  110. package/build/server/chunks/chunks/{admin-auth.server.js-hCWF6Pqg.js → admin-auth.server.js-CitjWnKM.js} +53 -31
  111. package/build/server/chunks/chunks/admin-auth.server.js-CitjWnKM.js.map +1 -0
  112. package/build/server/chunks/chunks/{api-errors.js-yRMzxqNi.js → api-errors.js-DlfcfPJs.js} +4 -4
  113. package/build/server/chunks/chunks/{api-errors.js-yRMzxqNi.js.map → api-errors.js-DlfcfPJs.js.map} +1 -1
  114. package/build/server/chunks/chunks/{auth-bootstrap.server.js-BpQr_I_2.js → auth-bootstrap.server.js-S-F5QI4m.js} +3 -3
  115. package/build/server/chunks/chunks/{auth-bootstrap.server.js-BpQr_I_2.js.map → auth-bootstrap.server.js-S-F5QI4m.js.map} +1 -1
  116. package/build/server/chunks/chunks/{bootHealth.server.js-CxNJCaGf.js → bootHealth.server.js-CvLSuL2x.js} +27 -4
  117. package/build/server/chunks/chunks/bootHealth.server.js-CvLSuL2x.js.map +1 -0
  118. package/build/server/chunks/chunks/{clientCache.server.js-nl8vnalG.js → clientCache.server.js-BS8-NdiI.js} +21 -5
  119. package/build/server/chunks/chunks/clientCache.server.js-BS8-NdiI.js.map +1 -0
  120. package/build/server/chunks/chunks/computeLimits.js-CQh4jXlX.js +28 -0
  121. package/build/server/chunks/chunks/computeLimits.js-CQh4jXlX.js.map +1 -0
  122. package/build/server/chunks/chunks/{context.js-D8E0GFTw.js → context.js-DsQGiS2x.js} +4 -1
  123. package/build/server/chunks/chunks/context.js-DsQGiS2x.js.map +1 -0
  124. package/build/server/chunks/chunks/{evictChangedServers.js-AKiDolw-.js → evictChangedServers.js-R3UCE6wP.js} +2 -2
  125. package/build/server/chunks/chunks/{evictChangedServers.js-AKiDolw-.js.map → evictChangedServers.js-R3UCE6wP.js.map} +1 -1
  126. package/build/server/chunks/chunks/{internal2.js-CNimHS8p.js → internal2.js-BBcEKa-m.js} +3 -3
  127. package/build/server/chunks/chunks/{internal2.js-CNimHS8p.js.map → internal2.js-BBcEKa-m.js.map} +1 -1
  128. package/build/server/chunks/chunks/{org-members.server.js-HahiM88D.js → org-members.server.js-DskaqUJo.js} +2 -2
  129. package/build/server/chunks/chunks/{org-members.server.js-HahiM88D.js.map → org-members.server.js-DskaqUJo.js.map} +1 -1
  130. package/build/server/chunks/chunks/{package.js-CGjshiZJ.js → package.js-Cl0z1gce.js} +2 -2
  131. package/build/server/chunks/chunks/package.js-Cl0z1gce.js.map +1 -0
  132. package/build/server/chunks/chunks/{permissions-compat.server.js-BfoBZYSH.js → permissions-compat.server.js-DNsLyriU.js} +2 -2
  133. package/build/server/chunks/chunks/{permissions-compat.server.js-BfoBZYSH.js.map → permissions-compat.server.js-DNsLyriU.js.map} +1 -1
  134. package/build/server/chunks/chunks/{permissions.server.js-B9lpLFEj.js → permissions.server.js-C3_SFjUh.js} +2 -2
  135. package/build/server/chunks/chunks/{permissions.server.js-B9lpLFEj.js.map → permissions.server.js-C3_SFjUh.js.map} +1 -1
  136. package/build/server/chunks/chunks/{providers.server.js-D0hpk-aq.js → providers.server.js-CIHOepKv.js} +152 -34
  137. package/build/server/chunks/chunks/providers.server.js-CIHOepKv.js.map +1 -0
  138. package/build/server/chunks/chunks/redirect.js-1CZ30qn2.js +9 -0
  139. package/build/server/chunks/chunks/redirect.js-1CZ30qn2.js.map +1 -0
  140. package/build/server/chunks/chunks/{resolve.server.js-CtUK_9yC.js → resolve.server.js-Dg1o2vnd.js} +4 -4
  141. package/build/server/chunks/chunks/{resolve.server.js-CtUK_9yC.js.map → resolve.server.js-Dg1o2vnd.js.map} +1 -1
  142. package/build/server/chunks/chunks/selfUpdate.server.js-CXejyqIT.js +109 -0
  143. package/build/server/chunks/chunks/selfUpdate.server.js-CXejyqIT.js.map +1 -0
  144. package/build/server/chunks/chunks/solve-cache-key.js-BIwJfBG9.js +320 -0
  145. package/build/server/chunks/chunks/solve-cache-key.js-BIwJfBG9.js.map +1 -0
  146. package/build/server/chunks/chunks/token-codec.js-1RPNe2RW.js +32 -0
  147. package/build/server/chunks/chunks/token-codec.js-1RPNe2RW.js.map +1 -0
  148. package/build/server/chunks/chunks/{token.server.js-q3fv9Fqo.js → token.server.js-DbTfFk9r.js} +10 -6
  149. package/build/server/chunks/chunks/token.server.js-DbTfFk9r.js.map +1 -0
  150. package/build/server/chunks/chunks/{token2.server.js-Cqw1dJj-.js → token2.server.js-Cjb4XaWC.js} +10 -6
  151. package/build/server/chunks/chunks/token2.server.js-Cjb4XaWC.js.map +1 -0
  152. package/build/server/chunks/chunks/update-outcome.js-mUyfVCnt.js +99 -0
  153. package/build/server/chunks/chunks/update-outcome.js-mUyfVCnt.js.map +1 -0
  154. package/build/server/chunks/chunks/{utils4.js-BRotGwxx.js → utils4.js-8SHxuGTr.js} +2 -2
  155. package/build/server/chunks/chunks/{utils4.js-BRotGwxx.js.map → utils4.js-8SHxuGTr.js.map} +1 -1
  156. package/build/server/chunks/entries/endpoints/admin/api/compute/{_server.ts.js-9SFgd7Dh.js → _server.ts.js-CR_1eCgH.js} +12 -9
  157. package/build/server/chunks/entries/endpoints/admin/api/compute/{_server.ts.js-9SFgd7Dh.js.map → _server.ts.js-CR_1eCgH.js.map} +1 -1
  158. package/build/server/chunks/entries/endpoints/admin/api/compute/actions/{_server.ts.js-nqqXR4_e.js → _server.ts.js-D1UFM_o6.js} +6 -6
  159. package/build/server/chunks/entries/endpoints/admin/api/compute/actions/{_server.ts.js-nqqXR4_e.js.map → _server.ts.js-D1UFM_o6.js.map} +1 -1
  160. package/build/server/chunks/entries/endpoints/admin/api/compute/status/{_server.ts.js-a2K9SJfi.js → _server.ts.js-DdzXkztc.js} +6 -6
  161. package/build/server/chunks/entries/endpoints/admin/api/compute/status/{_server.ts.js-a2K9SJfi.js.map → _server.ts.js-DdzXkztc.js.map} +1 -1
  162. package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/{_server.ts.js-BAhINzFq.js → _server.ts.js-CqdBKOC6.js} +6 -6
  163. package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/{_server.ts.js-BAhINzFq.js.map → _server.ts.js-CqdBKOC6.js.map} +1 -1
  164. package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/assets/_kind_/{_server.ts.js-DYD3g-28.js → _server.ts.js-Bi3NbLd3.js} +11 -7
  165. package/build/server/chunks/entries/endpoints/admin/api/orgs/_id_/assets/_kind_/{_server.ts.js-DYD3g-28.js.map → _server.ts.js-Bi3NbLd3.js.map} +1 -1
  166. package/build/server/chunks/entries/endpoints/admin/api/orgs/{_server.ts.js-PhwONmey.js → _server.ts.js-C3ZwVpyg.js} +6 -6
  167. package/build/server/chunks/entries/endpoints/admin/api/orgs/{_server.ts.js-PhwONmey.js.map → _server.ts.js-C3ZwVpyg.js.map} +1 -1
  168. package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/{_server.ts.js-DVXfLqfN.js → _server.ts.js-CAe8T4G6.js} +6 -6
  169. package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/{_server.ts.js-DVXfLqfN.js.map → _server.ts.js-CAe8T4G6.js.map} +1 -1
  170. package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/_grantId_/{_server.ts.js-C3Gcr9vO.js → _server.ts.js-DHYHT1N8.js} +6 -6
  171. package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/_grantId_/{_server.ts.js-C3Gcr9vO.js.map → _server.ts.js-DHYHT1N8.js.map} +1 -1
  172. package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/{_server.ts.js-8rwkvJsL.js → _server.ts.js-Cgt7iGfE.js} +6 -6
  173. package/build/server/chunks/entries/endpoints/admin/api/projects/_id_/grants/{_server.ts.js-8rwkvJsL.js.map → _server.ts.js-Cgt7iGfE.js.map} +1 -1
  174. package/build/server/chunks/entries/endpoints/admin/api/projects/{_server.ts.js-BTgoWufU.js → _server.ts.js-BFi1Di59.js} +6 -6
  175. package/build/server/chunks/entries/endpoints/admin/api/projects/{_server.ts.js-BTgoWufU.js.map → _server.ts.js-BFi1Di59.js.map} +1 -1
  176. package/build/server/chunks/entries/endpoints/admin/api/system/health/{_server.ts.js-CQdxoaBS.js → _server.ts.js-Br7kd03s.js} +35 -6
  177. package/build/server/chunks/entries/endpoints/admin/api/system/health/_server.ts.js-Br7kd03s.js.map +1 -0
  178. package/build/server/chunks/entries/endpoints/admin/api/system/throughput/{_server.ts.js-DFacQgP7.js → _server.ts.js-ufKMuphM.js} +6 -6
  179. package/build/server/chunks/entries/endpoints/admin/api/system/throughput/{_server.ts.js-DFacQgP7.js.map → _server.ts.js-ufKMuphM.js.map} +1 -1
  180. package/build/server/chunks/entries/endpoints/admin/api/system/update/{_server.ts.js-y3dgQz-R.js → _server.ts.js-D-IGlEji.js} +43 -30
  181. package/build/server/chunks/entries/endpoints/admin/api/system/update/_server.ts.js-D-IGlEji.js.map +1 -0
  182. package/build/server/chunks/entries/endpoints/admin/api/users/_id_/{_server.ts.js-BEGaGEwg.js → _server.ts.js-7Efk1xkU.js} +8 -8
  183. package/build/server/chunks/entries/endpoints/admin/api/users/_id_/{_server.ts.js-BEGaGEwg.js.map → _server.ts.js-7Efk1xkU.js.map} +1 -1
  184. package/build/server/chunks/entries/endpoints/admin/api/users/_id_/disable/{_server.ts.js-CGwcR-7k.js → _server.ts.js-4UrDw7Q3.js} +6 -6
  185. package/build/server/chunks/entries/endpoints/admin/api/users/_id_/disable/{_server.ts.js-CGwcR-7k.js.map → _server.ts.js-4UrDw7Q3.js.map} +1 -1
  186. package/build/server/chunks/entries/endpoints/admin/api/users/{_server.ts.js-D-z-Kl_c.js → _server.ts.js-B9ZWJoST.js} +9 -9
  187. package/build/server/chunks/entries/endpoints/admin/api/users/{_server.ts.js-D-z-Kl_c.js.map → _server.ts.js-B9ZWJoST.js.map} +1 -1
  188. package/build/server/chunks/entries/endpoints/api/compute/{_server.ts.js-DkyT3FO6.js → _server.ts.js-D9qvgnX7.js} +287 -198
  189. package/build/server/chunks/entries/endpoints/api/compute/_server.ts.js-D9qvgnX7.js.map +1 -0
  190. package/build/server/chunks/entries/endpoints/api/compute/schema/{_server.ts.js-BmYC9zZb.js → _server.ts.js-CoS51dOD.js} +12 -8
  191. package/build/server/chunks/entries/endpoints/api/compute/schema/{_server.ts.js-BmYC9zZb.js.map → _server.ts.js-CoS51dOD.js.map} +1 -1
  192. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/{_server.ts.js--cRkjXHi.js → _server.ts.js-D7jS25IN.js} +11 -7
  193. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/{_server.ts.js--cRkjXHi.js.map → _server.ts.js-D7jS25IN.js.map} +1 -1
  194. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/_filename_/{_server.ts.js-Dz0exqZ1.js → _server.ts.js-5hlsFhI1.js} +11 -7
  195. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/_filename_/{_server.ts.js-Dz0exqZ1.js.map → _server.ts.js-5hlsFhI1.js.map} +1 -1
  196. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/{_server.ts.js-CgM8FSl0.js → _server.ts.js-CRMcPOgH.js} +11 -7
  197. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/image/{_server.ts.js-CgM8FSl0.js.map → _server.ts.js-CRMcPOgH.js.map} +1 -1
  198. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/publish/{_server.ts.js-BQX0WanC.js → _server.ts.js-C8-AAq8y.js} +6 -6
  199. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/publish/{_server.ts.js-BQX0WanC.js.map → _server.ts.js-C8-AAq8y.js.map} +1 -1
  200. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/_linkId_/{_server.ts.js-BsV3i0Cq.js → _server.ts.js-LV0ZGJh9.js} +6 -6
  201. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/_linkId_/{_server.ts.js-BsV3i0Cq.js.map → _server.ts.js-LV0ZGJh9.js.map} +1 -1
  202. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/{_server.ts.js-DWFprR5Z.js → _server.ts.js-OUvpfSN4.js} +8 -7
  203. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/share-links/{_server.ts.js-DWFprR5Z.js.map → _server.ts.js-OUvpfSN4.js.map} +1 -1
  204. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/{_server.ts.js-DA3K2FgH.js → _server.ts.js-BJxBKsrU.js} +6 -6
  205. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/{_server.ts.js-DA3K2FgH.js.map → _server.ts.js-BJxBKsrU.js.map} +1 -1
  206. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/_versionId_/{_server.ts.js-SHjs_zm9.js → _server.ts.js-BaHW7TEs.js} +6 -6
  207. package/build/server/chunks/entries/endpoints/api/definitions/_guid_/versions/_versionId_/{_server.ts.js-SHjs_zm9.js.map → _server.ts.js-BaHW7TEs.js.map} +1 -1
  208. package/build/server/chunks/entries/endpoints/api/definitions/{_server.ts.js-ycJ8puIN.js → _server.ts.js-CBMi-KUD.js} +11 -7
  209. package/build/server/chunks/entries/endpoints/api/definitions/{_server.ts.js-ycJ8puIN.js.map → _server.ts.js-CBMi-KUD.js.map} +1 -1
  210. package/build/server/chunks/entries/endpoints/api/diag/throughput/{_server.ts.js-BdF3kn__.js → _server.ts.js-C98KkHLg.js} +5 -5
  211. package/build/server/chunks/entries/endpoints/api/diag/throughput/{_server.ts.js-BdF3kn__.js.map → _server.ts.js-C98KkHLg.js.map} +1 -1
  212. package/build/server/chunks/entries/endpoints/api/files/_...path_/{_server.ts.js-C26jiO43.js → _server.ts.js-CeTV6qVK.js} +6 -6
  213. package/build/server/chunks/entries/endpoints/api/files/_...path_/{_server.ts.js-C26jiO43.js.map → _server.ts.js-CeTV6qVK.js.map} +1 -1
  214. package/build/server/chunks/entries/endpoints/api/health/{_server.ts.js-CoRl_nbA.js → _server.ts.js-7eclLbhJ.js} +4 -4
  215. package/build/server/chunks/entries/endpoints/api/health/{_server.ts.js-CoRl_nbA.js.map → _server.ts.js-7eclLbhJ.js.map} +1 -1
  216. package/build/server/chunks/entries/endpoints/api/invites/_id_/{_server.ts.js-CvAeI7gV.js → _server.ts.js-DNh5594J.js} +6 -6
  217. package/build/server/chunks/entries/endpoints/api/invites/_id_/{_server.ts.js-CvAeI7gV.js.map → _server.ts.js-DNh5594J.js.map} +1 -1
  218. package/build/server/chunks/entries/endpoints/api/invites/{_server.ts.js-Cd0V4sta.js → _server.ts.js-DGKHjtw8.js} +9 -8
  219. package/build/server/chunks/entries/endpoints/api/invites/{_server.ts.js-Cd0V4sta.js.map → _server.ts.js-DGKHjtw8.js.map} +1 -1
  220. package/build/server/chunks/entries/endpoints/api/me/starred/_guid_/{_server.ts.js-BThetmba.js → _server.ts.js-CZ50nT84.js} +5 -5
  221. package/build/server/chunks/entries/endpoints/api/me/starred/_guid_/{_server.ts.js-BThetmba.js.map → _server.ts.js-CZ50nT84.js.map} +1 -1
  222. package/build/server/chunks/entries/endpoints/api/org/compute/{_server.ts.js-B4lGohx2.js → _server.ts.js-Bf1qSz52.js} +12 -9
  223. package/build/server/chunks/entries/endpoints/api/org/compute/_server.ts.js-Bf1qSz52.js.map +1 -0
  224. package/build/server/chunks/entries/endpoints/api/orgs/_orgId_/members/_userId_/{_server.ts.js-BcW-ZH-q.js → _server.ts.js-8PZedKem.js} +6 -6
  225. package/build/server/chunks/entries/endpoints/api/orgs/_orgId_/members/_userId_/{_server.ts.js-BcW-ZH-q.js.map → _server.ts.js-8PZedKem.js.map} +1 -1
  226. package/build/server/chunks/entries/endpoints/api/projects/_id_/{_server.ts.js-bIB33ABF.js → _server.ts.js-C6v2wqYB.js} +6 -6
  227. package/build/server/chunks/entries/endpoints/api/projects/_id_/{_server.ts.js-bIB33ABF.js.map → _server.ts.js-C6v2wqYB.js.map} +1 -1
  228. package/build/server/chunks/entries/endpoints/api/projects/_id_/members/{_server.ts.js-B1AwpUGi.js → _server.ts.js-B3WPTw6C.js} +6 -6
  229. package/build/server/chunks/entries/endpoints/api/projects/_id_/members/{_server.ts.js-B1AwpUGi.js.map → _server.ts.js-B3WPTw6C.js.map} +1 -1
  230. package/build/server/chunks/entries/endpoints/api/projects/_id_/members/_userId_/{_server.ts.js-DMl495J4.js → _server.ts.js-CY3ngc5p.js} +6 -6
  231. package/build/server/chunks/entries/endpoints/api/projects/_id_/members/_userId_/{_server.ts.js-DMl495J4.js.map → _server.ts.js-CY3ngc5p.js.map} +1 -1
  232. package/build/server/chunks/entries/endpoints/api/projects/_id_/reclaim/{_server.ts.js-DFJbS6RF.js → _server.ts.js-DMAeVu3R.js} +6 -6
  233. package/build/server/chunks/entries/endpoints/api/projects/_id_/reclaim/{_server.ts.js-DFJbS6RF.js.map → _server.ts.js-DMAeVu3R.js.map} +1 -1
  234. package/build/server/chunks/entries/endpoints/api/projects/{_server.ts.js-Gcc5eHXJ.js → _server.ts.js-D32BzObk.js} +6 -6
  235. package/build/server/chunks/entries/endpoints/api/projects/{_server.ts.js-Gcc5eHXJ.js.map → _server.ts.js-D32BzObk.js.map} +1 -1
  236. package/build/server/chunks/entries/endpoints/auth/email/callback/{_server.ts.js-B7kvAKyV.js → _server.ts.js-DREl2Sbq.js} +12 -7
  237. package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-DREl2Sbq.js.map +1 -0
  238. package/build/server/chunks/entries/endpoints/auth/supabase/callback/{_server.ts.js-3yXXN2SO.js → _server.ts.js-CmIWOQ81.js} +12 -7
  239. package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-CmIWOQ81.js.map +1 -0
  240. package/build/server/chunks/entries/endpoints/auth/supabase/start/{_server.ts.js-1z1P1Ihi.js → _server.ts.js-D0O8rZwg.js} +5 -5
  241. package/build/server/chunks/entries/endpoints/auth/supabase/start/{_server.ts.js-1z1P1Ihi.js.map → _server.ts.js-D0O8rZwg.js.map} +1 -1
  242. package/build/server/chunks/entries/{hooks.server.js-OUXv4_qA.js → hooks.server.js-DSn6v_nP.js} +88 -40
  243. package/build/server/chunks/entries/hooks.server.js-DSn6v_nP.js.map +1 -0
  244. package/build/server/chunks/entries/pages/{_layout.server.ts.js-Cu7ejVMb.js → _layout.server.ts.js-Cts38lSM.js} +2 -2
  245. package/build/server/chunks/entries/pages/{_layout.server.ts.js-Cu7ejVMb.js.map → _layout.server.ts.js-Cts38lSM.js.map} +1 -1
  246. package/build/server/chunks/entries/pages/accept-invite/{_page.server.ts.js-koO2loGE.js → _page.server.ts.js-BIr1NoEK.js} +5 -5
  247. package/build/server/chunks/entries/pages/accept-invite/{_page.server.ts.js-koO2loGE.js.map → _page.server.ts.js-BIr1NoEK.js.map} +1 -1
  248. package/build/server/chunks/entries/pages/admin/{_layout.server.ts.js-BcS7EPWJ.js → _layout.server.ts.js-DjB5P2N0.js} +3 -3
  249. package/build/server/chunks/entries/pages/admin/{_layout.server.ts.js-BcS7EPWJ.js.map → _layout.server.ts.js-DjB5P2N0.js.map} +1 -1
  250. package/build/server/chunks/entries/pages/admin/{_page.server.ts.js-ColpdHsj.js → _page.server.ts.js-DMawiAOU.js} +4 -4
  251. package/build/server/chunks/entries/pages/admin/{_page.server.ts.js-ColpdHsj.js.map → _page.server.ts.js-DMawiAOU.js.map} +1 -1
  252. package/build/server/chunks/entries/pages/admin/audit/{_page.server.ts.js-pm9fJjcH.js → _page.server.ts.js-CJie_AQe.js} +14 -5
  253. package/build/server/chunks/entries/pages/admin/audit/_page.server.ts.js-CJie_AQe.js.map +1 -0
  254. package/build/server/chunks/entries/pages/admin/audit/{_page.svelte.js-smQE9KlB.js → _page.svelte.js-B3TE0-_a.js} +6 -2
  255. package/build/server/chunks/entries/pages/admin/audit/_page.svelte.js-B3TE0-_a.js.map +1 -0
  256. package/build/server/chunks/entries/pages/admin/compute/{_page.server.ts.js-btPxjqx4.js → _page.server.ts.js-DJI-BqLn.js} +5 -5
  257. package/build/server/chunks/entries/pages/admin/compute/{_page.server.ts.js-btPxjqx4.js.map → _page.server.ts.js-DJI-BqLn.js.map} +1 -1
  258. package/build/server/chunks/entries/pages/admin/organizations/{_page.server.ts.js-CQSWGW0Y.js → _page.server.ts.js-DRZlByRc.js} +3 -3
  259. package/build/server/chunks/entries/pages/admin/organizations/{_page.server.ts.js-CQSWGW0Y.js.map → _page.server.ts.js-DRZlByRc.js.map} +1 -1
  260. package/build/server/chunks/entries/pages/admin/projects/_id_/{_page.server.ts.js-DWObSxSO.js → _page.server.ts.js-cnc8alqe.js} +9 -7
  261. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-cnc8alqe.js.map +1 -0
  262. package/build/server/chunks/entries/pages/admin/projects/{_page.server.ts.js-BSYX7hSD.js → _page.server.ts.js-7suWtJxu.js} +3 -3
  263. package/build/server/chunks/entries/pages/admin/projects/{_page.server.ts.js-BSYX7hSD.js.map → _page.server.ts.js-7suWtJxu.js.map} +1 -1
  264. package/build/server/chunks/entries/pages/admin/system/{_page.server.ts.js-DFA57irm.js → _page.server.ts.js-C0ZdK8vU.js} +6 -6
  265. package/build/server/chunks/entries/pages/admin/system/{_page.server.ts.js-DFA57irm.js.map → _page.server.ts.js-C0ZdK8vU.js.map} +1 -1
  266. package/build/server/chunks/entries/pages/admin/system/{_page.svelte.js-D4Z-BGD2.js → _page.svelte.js-CqNLFuOZ.js} +2 -97
  267. package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-CqNLFuOZ.js.map +1 -0
  268. package/build/server/chunks/entries/pages/admin/users/{_page.server.ts.js-B0s6jSPs.js → _page.server.ts.js-C1LiUNB_.js} +5 -5
  269. package/build/server/chunks/entries/pages/admin/users/{_page.server.ts.js-B0s6jSPs.js.map → _page.server.ts.js-C1LiUNB_.js.map} +1 -1
  270. package/build/server/chunks/entries/pages/admin/users/{_page.svelte.js-CO0kHa1b.js → _page.svelte.js-C-jy08cJ.js} +2 -2
  271. package/build/server/chunks/entries/pages/admin/users/{_page.svelte.js-CO0kHa1b.js.map → _page.svelte.js-C-jy08cJ.js.map} +1 -1
  272. package/build/server/chunks/entries/pages/auth/email/start/{_page.server.ts.js-F8fXU2YV.js → _page.server.ts.js-Bf5aciLN.js} +4 -3
  273. package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-Bf5aciLN.js.map +1 -0
  274. package/build/server/chunks/entries/pages/library/_guid_/{_page.server.ts.js-BXXiZbrJ.js → _page.server.ts.js-Cd1cMb0M.js} +9 -9
  275. package/build/server/chunks/entries/pages/library/_guid_/{_page.server.ts.js-BXXiZbrJ.js.map → _page.server.ts.js-Cd1cMb0M.js.map} +1 -1
  276. package/build/server/chunks/entries/pages/library/_guid_/{_page.svelte.js-BpEnQ79H.js → _page.svelte.js-BHPELPpI.js} +53 -1
  277. package/build/server/chunks/entries/pages/library/_guid_/{_page.svelte.js-BpEnQ79H.js.map → _page.svelte.js-BHPELPpI.js.map} +1 -1
  278. package/build/server/chunks/entries/pages/library/{_page.server.ts.js-CNsQMZl_.js → _page.server.ts.js-CkNgTDfl.js} +4 -4
  279. package/build/server/chunks/entries/pages/library/{_page.server.ts.js-CNsQMZl_.js.map → _page.server.ts.js-CkNgTDfl.js.map} +1 -1
  280. package/build/server/chunks/entries/pages/login/{_page.server.ts.js-DLtWh9lt.js → _page.server.ts.js-BM0BZFoZ.js} +4 -3
  281. package/build/server/chunks/entries/pages/login/_page.server.ts.js-BM0BZFoZ.js.map +1 -0
  282. package/build/server/chunks/entries/pages/logout/{_page.server.ts.js-DbaORCjB.js → _page.server.ts.js-Cc1BjCbc.js} +2 -2
  283. package/build/server/chunks/entries/pages/logout/{_page.server.ts.js-DbaORCjB.js.map → _page.server.ts.js-Cc1BjCbc.js.map} +1 -1
  284. package/build/server/chunks/entries/pages/projects/{_layout.server.ts.js-CNMJpFAK.js → _layout.server.ts.js-DuJkKJcb.js} +2 -2
  285. package/build/server/chunks/entries/pages/projects/{_layout.server.ts.js-CNMJpFAK.js.map → _layout.server.ts.js-DuJkKJcb.js.map} +1 -1
  286. package/build/server/chunks/entries/pages/projects/{_page.server.ts.js-BPAfS2yX.js → _page.server.ts.js-6JTf7XX0.js} +5 -5
  287. package/build/server/chunks/entries/pages/projects/{_page.server.ts.js-BPAfS2yX.js.map → _page.server.ts.js-6JTf7XX0.js.map} +1 -1
  288. package/build/server/chunks/entries/pages/projects/{_page.svelte.js-nQ9Uj1kK.js → _page.svelte.js-DVU6xc3i.js} +30 -4
  289. package/build/server/chunks/entries/pages/projects/_page.svelte.js-DVU6xc3i.js.map +1 -0
  290. package/build/server/chunks/entries/pages/setup/{_page.server.ts.js-DmwzD-qo.js → _page.server.ts.js-CAIQvVcR.js} +5 -5
  291. package/build/server/chunks/entries/pages/setup/{_page.server.ts.js-DmwzD-qo.js.map → _page.server.ts.js-CAIQvVcR.js.map} +1 -1
  292. package/build/server/chunks/entries/pages/team/{_layout.server.ts.js-Bm1MwrYZ.js → _layout.server.ts.js-CBM_iY4T.js} +2 -2
  293. package/build/server/chunks/entries/pages/team/{_layout.server.ts.js-Bm1MwrYZ.js.map → _layout.server.ts.js-CBM_iY4T.js.map} +1 -1
  294. package/build/server/chunks/entries/pages/team/{_page.server.ts.js-DjFIDiK1.js → _page.server.ts.js-Pf-MSXv0.js} +2 -2
  295. package/build/server/chunks/entries/pages/team/{_page.server.ts.js-DjFIDiK1.js.map → _page.server.ts.js-Pf-MSXv0.js.map} +1 -1
  296. package/build/server/chunks/entries/pages/team/compute/{_page.server.ts.js-B331KcmA.js → _page.server.ts.js-CR-ddKJ4.js} +4 -4
  297. package/build/server/chunks/entries/pages/team/compute/{_page.server.ts.js-B331KcmA.js.map → _page.server.ts.js-CR-ddKJ4.js.map} +1 -1
  298. package/build/server/chunks/entries/pages/team/members/{_page.server.ts.js-lSFTK3rq.js → _page.server.ts.js-DCQ0yy-F.js} +3 -3
  299. package/build/server/chunks/entries/pages/team/members/{_page.server.ts.js-lSFTK3rq.js.map → _page.server.ts.js-DCQ0yy-F.js.map} +1 -1
  300. package/build/server/chunks/entries/pages/team/members/{_page.svelte.js-C70N76b0.js → _page.svelte.js-DVOfVzGn.js} +2 -2
  301. package/build/server/chunks/entries/pages/team/members/{_page.svelte.js-C70N76b0.js.map → _page.svelte.js-DVOfVzGn.js.map} +1 -1
  302. package/build/server/chunks/entries/pages/team/projects/{_page.server.ts.js-CFZGG_Ci.js → _page.server.ts.js-FUxzp5PC.js} +3 -3
  303. package/build/server/chunks/entries/pages/team/projects/{_page.server.ts.js-CFZGG_Ci.js.map → _page.server.ts.js-FUxzp5PC.js.map} +1 -1
  304. package/build/server/chunks/entries/pages/team/reclaim/{_page.server.ts.js-AFrlbBl8.js → _page.server.ts.js-Btcar0yP.js} +3 -3
  305. package/build/server/chunks/entries/pages/team/reclaim/{_page.server.ts.js-AFrlbBl8.js.map → _page.server.ts.js-Btcar0yP.js.map} +1 -1
  306. package/build/server/chunks/entries/pages/team/settings/{_page.server.ts.js-BbKtggo9.js → _page.server.ts.js-CS5FLYXE.js} +3 -3
  307. package/build/server/chunks/entries/pages/team/settings/{_page.server.ts.js-BbKtggo9.js.map → _page.server.ts.js-CS5FLYXE.js.map} +1 -1
  308. package/build/server/chunks/entries/pages/team/shares/{_page.server.ts.js-B0XsHyzb.js → _page.server.ts.js-B1QqNYRo.js} +2 -2
  309. package/build/server/chunks/entries/pages/team/shares/{_page.server.ts.js-B0XsHyzb.js.map → _page.server.ts.js-B1QqNYRo.js.map} +1 -1
  310. package/build/server/chunks/{handler-BVoIPaUa.js → handler-CiXlY3wu.js} +3 -3
  311. package/build/server/chunks/{handler-BVoIPaUa.js.map → handler-CiXlY3wu.js.map} +1 -1
  312. package/build/server/chunks/{index.js-hj4o2h8q.js → index.js-CfdDzNmO.js} +2 -2
  313. package/build/server/chunks/{index.js-hj4o2h8q.js.map → index.js-CfdDzNmO.js.map} +1 -1
  314. package/build/server/chunks/{manifest.js-BIVs9dfJ.js → manifest.js-DZ6WZ-WA.js} +76 -76
  315. package/build/server/chunks/{manifest.js-BIVs9dfJ.js.map → manifest.js-DZ6WZ-WA.js.map} +1 -1
  316. package/build/server/chunks/nodes/{0.js-OxxVvycM.js → 0.js-BMoQIPmA.js} +4 -4
  317. package/build/server/chunks/nodes/{0.js-OxxVvycM.js.map → 0.js-BMoQIPmA.js.map} +1 -1
  318. package/build/server/chunks/nodes/{1.js-Bs6uvYbc.js → 1.js-Cm5AdicB.js} +2 -2
  319. package/build/server/chunks/nodes/{1.js-Bs6uvYbc.js.map → 1.js-Cm5AdicB.js.map} +1 -1
  320. package/build/server/chunks/nodes/{10.js-CvIgMW7D.js → 10.js-BNCwQwZV.js} +9 -9
  321. package/build/server/chunks/nodes/{10.js-CvIgMW7D.js.map → 10.js-BNCwQwZV.js.map} +1 -1
  322. package/build/server/chunks/nodes/{11.js-CnBjS7-t.js → 11.js-DkWLgBVg.js} +8 -8
  323. package/build/server/chunks/nodes/{11.js-CnBjS7-t.js.map → 11.js-DkWLgBVg.js.map} +1 -1
  324. package/build/server/chunks/nodes/{12.js-Dq_XopIA.js → 12.js-kNjmUDDo.js} +4 -4
  325. package/build/server/chunks/nodes/{12.js-Dq_XopIA.js.map → 12.js-kNjmUDDo.js.map} +1 -1
  326. package/build/server/chunks/nodes/{13.js-CqZCtg80.js → 13.js-jNBOb5Ni.js} +5 -5
  327. package/build/server/chunks/nodes/{13.js-CqZCtg80.js.map → 13.js-jNBOb5Ni.js.map} +1 -1
  328. package/build/server/chunks/nodes/{14.js-OvULgcZx.js → 14.js-jkWhR5ra.js} +5 -5
  329. package/build/server/chunks/nodes/{14.js-OvULgcZx.js.map → 14.js-jkWhR5ra.js.map} +1 -1
  330. package/build/server/chunks/nodes/{15.js-3rOev7kG.js → 15.js-Bh0tBhZ6.js} +15 -11
  331. package/build/server/chunks/nodes/{15.js-3rOev7kG.js.map → 15.js-Bh0tBhZ6.js.map} +1 -1
  332. package/build/server/chunks/nodes/{16.js-DY4bmQK_.js → 16.js-BjSvS7x7.js} +11 -11
  333. package/build/server/chunks/nodes/{16.js-DY4bmQK_.js.map → 16.js-BjSvS7x7.js.map} +1 -1
  334. package/build/server/chunks/nodes/{17.js-DzcgsMqq.js → 17.js-CVAlNLd1.js} +2 -2
  335. package/build/server/chunks/nodes/{17.js-DzcgsMqq.js.map → 17.js-CVAlNLd1.js.map} +1 -1
  336. package/build/server/chunks/nodes/{18.js-C3GcE50R.js → 18.js-m1EmD7J9.js} +10 -5
  337. package/build/server/chunks/nodes/{18.js-C3GcE50R.js.map → 18.js-m1EmD7J9.js.map} +1 -1
  338. package/build/server/chunks/nodes/{19.js-4ei3NRJW.js → 19.js-Cvq4wk_v.js} +8 -8
  339. package/build/server/chunks/nodes/{19.js-4ei3NRJW.js.map → 19.js-Cvq4wk_v.js.map} +1 -1
  340. package/build/server/chunks/nodes/{2.js-BhhMlQQP.js → 2.js-_j2qbJf6.js} +8 -8
  341. package/build/server/chunks/nodes/{2.js-BhhMlQQP.js.map → 2.js-_j2qbJf6.js.map} +1 -1
  342. package/build/server/chunks/nodes/{20.js-BQZue73m.js → 20.js-BjgFHK82.js} +17 -13
  343. package/build/server/chunks/nodes/{20.js-BQZue73m.js.map → 20.js-BjgFHK82.js.map} +1 -1
  344. package/build/server/chunks/nodes/{21.js-BAkAIvfV.js → 21.js-C3u9VeIP.js} +12 -7
  345. package/build/server/chunks/nodes/{21.js-BAkAIvfV.js.map → 21.js-C3u9VeIP.js.map} +1 -1
  346. package/build/server/chunks/nodes/{22.js-d354Ho4z.js → 22.js-3vW3ZPjE.js} +8 -3
  347. package/build/server/chunks/nodes/{22.js-d354Ho4z.js.map → 22.js-3vW3ZPjE.js.map} +1 -1
  348. package/build/server/chunks/nodes/{23.js-BMNUZekw.js → 23.js-h3AKg2Bd.js} +9 -9
  349. package/build/server/chunks/nodes/{23.js-BMNUZekw.js.map → 23.js-h3AKg2Bd.js.map} +1 -1
  350. package/build/server/chunks/nodes/{24.js-BGD-JCcE.js → 24.js-DcfMC0S6.js} +11 -7
  351. package/build/server/chunks/nodes/{24.js-BGD-JCcE.js.map → 24.js-DcfMC0S6.js.map} +1 -1
  352. package/build/server/chunks/nodes/{25.js-BqxnZYdq.js → 25.js-B8F-WcNH.js} +4 -4
  353. package/build/server/chunks/nodes/{25.js-BqxnZYdq.js.map → 25.js-B8F-WcNH.js.map} +1 -1
  354. package/build/server/chunks/nodes/{27.js-Bpas2N07.js → 27.js-DmjAkuen.js} +6 -6
  355. package/build/server/chunks/nodes/{27.js-Bpas2N07.js.map → 27.js-DmjAkuen.js.map} +1 -1
  356. package/build/server/chunks/nodes/{28.js-CzzcTWyj.js → 28.js-B7Rf1M8l.js} +6 -6
  357. package/build/server/chunks/nodes/{28.js-CzzcTWyj.js.map → 28.js-B7Rf1M8l.js.map} +1 -1
  358. package/build/server/chunks/nodes/{29.js-D-yU37B7.js → 29.js-DFPsK4BF.js} +5 -5
  359. package/build/server/chunks/nodes/{29.js-D-yU37B7.js.map → 29.js-DFPsK4BF.js.map} +1 -1
  360. package/build/server/chunks/nodes/{3.js-Cz9pT7ce.js → 3.js-DEDKRIYO.js} +2 -2
  361. package/build/server/chunks/nodes/{3.js-Cz9pT7ce.js.map → 3.js-DEDKRIYO.js.map} +1 -1
  362. package/build/server/chunks/nodes/{30.js-CTnqbIs1.js → 30.js-B17mHAaN.js} +5 -5
  363. package/build/server/chunks/nodes/{30.js-CTnqbIs1.js.map → 30.js-B17mHAaN.js.map} +1 -1
  364. package/build/server/chunks/nodes/{31.js-BzVXDu0q.js → 31.js-g3F8A8P0.js} +4 -4
  365. package/build/server/chunks/nodes/{31.js-BzVXDu0q.js.map → 31.js-g3F8A8P0.js.map} +1 -1
  366. package/build/server/chunks/nodes/{32.js-D5n6ZsDK.js → 32.js-1VSkrG-2.js} +4 -4
  367. package/build/server/chunks/nodes/{32.js-D5n6ZsDK.js.map → 32.js-1VSkrG-2.js.map} +1 -1
  368. package/build/server/chunks/nodes/{5.js-BJ8b3aNu.js → 5.js-BvHhhp_p.js} +4 -4
  369. package/build/server/chunks/nodes/{5.js-BJ8b3aNu.js.map → 5.js-BvHhhp_p.js.map} +1 -1
  370. package/build/server/chunks/nodes/{6.js-BUe0tZCB.js → 6.js-BHejxveY.js} +5 -5
  371. package/build/server/chunks/nodes/{6.js-BUe0tZCB.js.map → 6.js-BHejxveY.js.map} +1 -1
  372. package/build/server/chunks/nodes/{7.js-Bo7bTIfx.js → 7.js-CV5qjTXV.js} +2 -2
  373. package/build/server/chunks/nodes/{7.js-Bo7bTIfx.js.map → 7.js-CV5qjTXV.js.map} +1 -1
  374. package/build/server/chunks/nodes/{8.js-C6iVKn1o.js → 8.js-jhS48nhZ.js} +12 -7
  375. package/build/server/chunks/nodes/{8.js-C6iVKn1o.js.map → 8.js-jhS48nhZ.js.map} +1 -1
  376. package/build/server/chunks/nodes/{9.js-DPMqw-Dj.js → 9.js-27g91Gox.js} +6 -6
  377. package/build/server/chunks/nodes/{9.js-DPMqw-Dj.js.map → 9.js-27g91Gox.js.map} +1 -1
  378. package/package.json +4 -4
  379. package/templates/.env.example +57 -0
  380. package/build/client/_app/immutable/chunks/B2u4e1Y9.js.br +0 -0
  381. package/build/client/_app/immutable/chunks/B2u4e1Y9.js.gz +0 -0
  382. package/build/client/_app/immutable/chunks/BRbaYEL5.js.br +0 -0
  383. package/build/client/_app/immutable/chunks/BRbaYEL5.js.gz +0 -0
  384. package/build/client/_app/immutable/chunks/COYKudi0.js.br +0 -0
  385. package/build/client/_app/immutable/chunks/COYKudi0.js.gz +0 -0
  386. package/build/client/_app/immutable/chunks/CYwmPsLn.js.br +0 -0
  387. package/build/client/_app/immutable/chunks/CYwmPsLn.js.gz +0 -0
  388. package/build/client/_app/immutable/chunks/CxPY7Obc.js +0 -2
  389. package/build/client/_app/immutable/chunks/CxPY7Obc.js.br +0 -0
  390. package/build/client/_app/immutable/chunks/CxPY7Obc.js.gz +0 -0
  391. package/build/client/_app/immutable/chunks/I2TM0do6.js.br +0 -0
  392. package/build/client/_app/immutable/chunks/I2TM0do6.js.gz +0 -0
  393. package/build/client/_app/immutable/chunks/IUqeb3TJ.js +0 -2
  394. package/build/client/_app/immutable/chunks/IUqeb3TJ.js.br +0 -0
  395. package/build/client/_app/immutable/chunks/IUqeb3TJ.js.gz +0 -0
  396. package/build/client/_app/immutable/chunks/zOoVG74V.js.br +0 -0
  397. package/build/client/_app/immutable/chunks/zOoVG74V.js.gz +0 -0
  398. package/build/client/_app/immutable/entry/app.CRaXT8K-.js.br +0 -0
  399. package/build/client/_app/immutable/entry/app.CRaXT8K-.js.gz +0 -0
  400. package/build/client/_app/immutable/entry/start.DuKqaS_0.js +0 -1
  401. package/build/client/_app/immutable/entry/start.DuKqaS_0.js.br +0 -0
  402. package/build/client/_app/immutable/entry/start.DuKqaS_0.js.gz +0 -0
  403. package/build/client/_app/immutable/nodes/1.DPMP9Es7.js.br +0 -0
  404. package/build/client/_app/immutable/nodes/1.DPMP9Es7.js.gz +0 -0
  405. package/build/client/_app/immutable/nodes/10.DMJdbPyC.js +0 -3
  406. package/build/client/_app/immutable/nodes/10.DMJdbPyC.js.br +0 -0
  407. package/build/client/_app/immutable/nodes/10.DMJdbPyC.js.gz +0 -0
  408. package/build/client/_app/immutable/nodes/11.BxhrIetk.js.br +0 -0
  409. package/build/client/_app/immutable/nodes/11.BxhrIetk.js.gz +0 -0
  410. package/build/client/_app/immutable/nodes/13.bzJyaCKt.js.br +0 -0
  411. package/build/client/_app/immutable/nodes/13.bzJyaCKt.js.gz +0 -0
  412. package/build/client/_app/immutable/nodes/14.XVGDZn7V.js.br +0 -0
  413. package/build/client/_app/immutable/nodes/14.XVGDZn7V.js.gz +0 -0
  414. package/build/client/_app/immutable/nodes/15.Ds7J6ry6.js.br +0 -0
  415. package/build/client/_app/immutable/nodes/15.Ds7J6ry6.js.gz +0 -0
  416. package/build/client/_app/immutable/nodes/16.C6HKDHv3.js.br +0 -0
  417. package/build/client/_app/immutable/nodes/16.C6HKDHv3.js.gz +0 -0
  418. package/build/client/_app/immutable/nodes/17.BxjH0QZF.js.br +0 -0
  419. package/build/client/_app/immutable/nodes/17.BxjH0QZF.js.gz +0 -0
  420. package/build/client/_app/immutable/nodes/19.BU2Lw57i.js.br +0 -0
  421. package/build/client/_app/immutable/nodes/19.BU2Lw57i.js.gz +0 -0
  422. package/build/client/_app/immutable/nodes/2.D9dN-poH.js.br +0 -0
  423. package/build/client/_app/immutable/nodes/2.D9dN-poH.js.gz +0 -0
  424. package/build/client/_app/immutable/nodes/20.BIo_tnO_.js +0 -5021
  425. package/build/client/_app/immutable/nodes/20.BIo_tnO_.js.br +0 -0
  426. package/build/client/_app/immutable/nodes/20.BIo_tnO_.js.gz +0 -0
  427. package/build/client/_app/immutable/nodes/21.qpo7v5r_.js.br +0 -0
  428. package/build/client/_app/immutable/nodes/21.qpo7v5r_.js.gz +0 -0
  429. package/build/client/_app/immutable/nodes/23.CdjZcdrJ.js +0 -16
  430. package/build/client/_app/immutable/nodes/23.CdjZcdrJ.js.br +0 -0
  431. package/build/client/_app/immutable/nodes/23.CdjZcdrJ.js.gz +0 -0
  432. package/build/client/_app/immutable/nodes/24.BSJH1lHT.js.br +0 -0
  433. package/build/client/_app/immutable/nodes/24.BSJH1lHT.js.gz +0 -0
  434. package/build/client/_app/immutable/nodes/27.BKQucFUA.js.br +0 -0
  435. package/build/client/_app/immutable/nodes/27.BKQucFUA.js.gz +0 -0
  436. package/build/client/_app/immutable/nodes/28.BleEhT0J.js.br +0 -0
  437. package/build/client/_app/immutable/nodes/28.BleEhT0J.js.gz +0 -0
  438. package/build/client/_app/immutable/nodes/29.fAbDo5Et.js.br +0 -0
  439. package/build/client/_app/immutable/nodes/29.fAbDo5Et.js.gz +0 -0
  440. package/build/client/_app/immutable/nodes/3.XubMG-dn.js.br +0 -0
  441. package/build/client/_app/immutable/nodes/3.XubMG-dn.js.gz +0 -0
  442. package/build/client/_app/immutable/nodes/30.DRrc_hLr.js.br +0 -0
  443. package/build/client/_app/immutable/nodes/30.DRrc_hLr.js.gz +0 -0
  444. package/build/client/_app/immutable/nodes/5.C77UuNpH.js.br +0 -1
  445. package/build/client/_app/immutable/nodes/5.C77UuNpH.js.gz +0 -0
  446. package/build/client/_app/immutable/nodes/6.B23L8hA_.js.br +0 -0
  447. package/build/client/_app/immutable/nodes/6.B23L8hA_.js.gz +0 -0
  448. package/build/client/_app/immutable/nodes/7.BZj0oAjH.js.br +0 -0
  449. package/build/client/_app/immutable/nodes/7.BZj0oAjH.js.gz +0 -0
  450. package/build/client/_app/immutable/nodes/8.CGy_fUC4.js.br +0 -0
  451. package/build/client/_app/immutable/nodes/8.CGy_fUC4.js.gz +0 -0
  452. package/build/client/_app/immutable/nodes/9.BpEiOuN0.js.br +0 -0
  453. package/build/client/_app/immutable/nodes/9.BpEiOuN0.js.gz +0 -0
  454. package/build/server/chunks/chunks/access.server.js-D99g5hZd.js.map +0 -1
  455. package/build/server/chunks/chunks/admin-auth.server.js-hCWF6Pqg.js.map +0 -1
  456. package/build/server/chunks/chunks/bootHealth.server.js-CxNJCaGf.js.map +0 -1
  457. package/build/server/chunks/chunks/clientCache.server.js-nl8vnalG.js.map +0 -1
  458. package/build/server/chunks/chunks/computeLimits.js-C5c7HPGJ.js +0 -20
  459. package/build/server/chunks/chunks/computeLimits.js-C5c7HPGJ.js.map +0 -1
  460. package/build/server/chunks/chunks/context.js-D8E0GFTw.js.map +0 -1
  461. package/build/server/chunks/chunks/package.js-CGjshiZJ.js.map +0 -1
  462. package/build/server/chunks/chunks/providers.server.js-D0hpk-aq.js.map +0 -1
  463. package/build/server/chunks/chunks/token.server.js-q3fv9Fqo.js.map +0 -1
  464. package/build/server/chunks/chunks/token2.server.js-Cqw1dJj-.js.map +0 -1
  465. package/build/server/chunks/entries/endpoints/admin/api/system/health/_server.ts.js-CQdxoaBS.js.map +0 -1
  466. package/build/server/chunks/entries/endpoints/admin/api/system/update/_server.ts.js-y3dgQz-R.js.map +0 -1
  467. package/build/server/chunks/entries/endpoints/api/compute/_server.ts.js-DkyT3FO6.js.map +0 -1
  468. package/build/server/chunks/entries/endpoints/api/org/compute/_server.ts.js-B4lGohx2.js.map +0 -1
  469. package/build/server/chunks/entries/endpoints/auth/email/callback/_server.ts.js-B7kvAKyV.js.map +0 -1
  470. package/build/server/chunks/entries/endpoints/auth/supabase/callback/_server.ts.js-3yXXN2SO.js.map +0 -1
  471. package/build/server/chunks/entries/hooks.server.js-OUXv4_qA.js.map +0 -1
  472. package/build/server/chunks/entries/pages/admin/audit/_page.server.ts.js-pm9fJjcH.js.map +0 -1
  473. package/build/server/chunks/entries/pages/admin/audit/_page.svelte.js-smQE9KlB.js.map +0 -1
  474. package/build/server/chunks/entries/pages/admin/projects/_id_/_page.server.ts.js-DWObSxSO.js.map +0 -1
  475. package/build/server/chunks/entries/pages/admin/system/_page.svelte.js-D4Z-BGD2.js.map +0 -1
  476. package/build/server/chunks/entries/pages/auth/email/start/_page.server.ts.js-F8fXU2YV.js.map +0 -1
  477. package/build/server/chunks/entries/pages/login/_page.server.ts.js-DLtWh9lt.js.map +0 -1
  478. package/build/server/chunks/entries/pages/projects/_page.svelte.js-nQ9Uj1kK.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.server.js-CIHOepKv.js","sources":["../../../../.svelte-kit/output/server/chunks/providers.server.js"],"sourcesContent":["import { b as private_env } from \"./shared-server.js\";\nimport { D as DEFAULT_ORG_PERMISSIONS, S as SYSTEM_CONTEXT, h as hasPermission, c as classifyAssetPath, A as ALL_PLATFORM_PERMISSIONS } from \"./context.js\";\nimport { pathToFileURL } from \"node:url\";\nimport * as path from \"node:path\";\nimport { resolve } from \"node:path\";\nimport { existsSync } from \"node:fs\";\nimport * as crypto from \"node:crypto\";\nimport { createHmac, timingSafeEqual, randomUUID, createDecipheriv, randomBytes, createCipheriv, createHash } from \"node:crypto\";\nimport * as fs from \"node:fs/promises\";\nimport { createClient } from \"@supabase/supabase-js\";\nfunction assertSafeKey$1(value, label) {\n if (!value || !/^[A-Za-z0-9._-]+$/.test(value) || value === \".\" || value === \"..\") {\n throw new Error(`Unsafe ${label}: ${JSON.stringify(value)}`);\n }\n}\nconst orgPaths = {\n asset: (id, kind) => {\n assertSafeKey$1(id, \"orgId\");\n assertSafeKey$1(kind, \"assetKind\");\n return `orgs/${id}/branding/${kind}.webp`;\n },\n /** Members-only blob under the org's private tier. `name` includes the extension. */\n privateAsset: (id, name) => {\n assertSafeKey$1(id, \"orgId\");\n assertSafeKey$1(name, \"assetName\");\n return `orgs/${id}/private/${name}`;\n },\n prefix: (id) => {\n assertSafeKey$1(id, \"orgId\");\n return `orgs/${id}/`;\n }\n};\nfunction assertSafeKey(value, label) {\n if (!value || !/^[A-Za-z0-9._-]+$/.test(value) || value === \".\" || value === \"..\") {\n throw new Error(`Unsafe ${label}: ${JSON.stringify(value)}`);\n }\n}\nconst definitionPaths = {\n version: (guid, versionNumber, ext) => {\n assertSafeKey(guid, \"guid\");\n if (!Number.isInteger(versionNumber) || versionNumber < 1) {\n throw new Error(`Unsafe versionNumber: ${versionNumber}`);\n }\n return `definitions/${guid}/versions/v${versionNumber}.${ext}`;\n },\n image: (guid) => {\n assertSafeKey(guid, \"guid\");\n return `definitions/${guid}/cover.webp`;\n },\n prefix: (guid) => {\n assertSafeKey(guid, \"guid\");\n return `definitions/${guid}/`;\n }\n};\nconst IMAGE_MAX_WIDTH = 1200;\nconst IMAGE_WEBP_QUALITY = 85;\nfunction isImageUpload(contentType, storagePath) {\n if (contentType?.startsWith(\"image/\")) return true;\n return /\\.(webp|png|jpe?g|gif|bmp|tif?f|svg)$/i.test(storagePath);\n}\nfunction toWebpPath(storagePath) {\n return storagePath.replace(/\\.(png|jpe?g|gif|bmp|tif?f|svg)$/i, \".webp\");\n}\nasync function transcodeImageIfNeeded(data, contentType, storagePath) {\n if (!isImageUpload(contentType, storagePath)) {\n return { data, contentType: contentType ?? \"application/octet-stream\", path: storagePath };\n }\n const sharp = await loadSharp();\n const compressed = await sharp(Buffer.from(data)).resize({ width: IMAGE_MAX_WIDTH, withoutEnlargement: true }).webp({ quality: IMAGE_WEBP_QUALITY }).toBuffer();\n return {\n data: new Uint8Array(compressed),\n contentType: \"image/webp\",\n path: toWebpPath(storagePath)\n };\n}\nlet cachedSharp = null;\nasync function loadSharp() {\n if (cachedSharp) return cachedSharp;\n try {\n const mod = await import(\"sharp\");\n cachedSharp = mod.default ?? mod;\n return cachedSharp;\n } catch (err) {\n throw new Error(\n \"Image transcoding requires `sharp` to be installed. Add it as a dependency in your provider package.\",\n { cause: err }\n );\n }\n}\nfunction withCacheBust(url, token) {\n if (token === void 0 || token === null) return url;\n const value = String(token).trim();\n if (value === \"\") return url;\n const sep = url.includes(\"?\") ? \"&\" : \"?\";\n return `${url}${sep}v=${encodeURIComponent(value)}`;\n}\nfunction isPlatformServer(s) {\n return s.scope === \"platform\";\n}\nfunction isOrgServer(s) {\n return s.scope === \"org\";\n}\nfunction actorFrom(ctx) {\n return ctx.userId || \"system\";\n}\nclass NoopEventSink {\n async emit(_event) {\n }\n}\nclass NoopSolveMetricSink {\n async record(_ctx, _metric) {\n }\n}\nclass NoopErrorReporter {\n capture(_error, _context) {\n }\n}\nconst nowIso = () => (/* @__PURE__ */ new Date()).toISOString();\nfunction auditUpdate(ctx, fallbackActor) {\n return {\n updatedAt: nowIso(),\n updatedBy: ctx.userId || fallbackActor || \"\"\n };\n}\nfunction auditSoftDelete(ctx, fallbackActor) {\n const now = nowIso();\n return {\n deletedAt: now,\n updatedAt: now,\n updatedBy: ctx.userId || fallbackActor || \"\"\n };\n}\nclass ProviderError extends Error {\n statusCode;\n constructor(message, statusCode = 400) {\n super(message);\n this.name = \"ProviderError\";\n this.statusCode = statusCode;\n }\n}\nconst DEFAULT_PAGE_LIMIT = 50;\nconst MAX_PAGE_LIMIT = 200;\nfunction isFlagEnabled(config, flag2) {\n return Boolean(config.flags?.[flag2]);\n}\nconst MB = 1024 * 1024;\nfunction readPositiveInt(env, name, fallback) {\n const raw = env[name];\n if (!raw) return fallback;\n const parsed = Number(raw);\n if (!Number.isFinite(parsed) || parsed <= 0) {\n console.warn(`[selva] Invalid ${name}=${raw}, falling back to ${fallback}`);\n return fallback;\n }\n return Math.floor(parsed);\n}\nfunction readNonNegativeInt(env, name, fallback) {\n const raw = env[name];\n if (!raw) return fallback;\n const parsed = Number(raw);\n if (!Number.isFinite(parsed) || parsed < 0) {\n console.warn(`[selva] Invalid ${name}=${raw}, falling back to ${fallback}`);\n return fallback;\n }\n return Math.floor(parsed);\n}\nfunction readBool(env, name, fallback) {\n const raw = env[name];\n if (raw == null || raw === \"\") return fallback;\n const v = raw.trim().toLowerCase();\n if (v === \"true\" || v === \"1\" || v === \"yes\" || v === \"on\") return true;\n if (v === \"false\" || v === \"0\" || v === \"no\" || v === \"off\") return false;\n console.warn(`[selva] Invalid ${name}=${raw}, falling back to ${fallback}`);\n return fallback;\n}\nfunction resolveComputeLimits(env) {\n const maxGhFileSize = readPositiveInt(env, \"MAX_GH_FILE_SIZE_BYTES\", 300 * MB);\n return {\n maxSolveDurationMs: readPositiveInt(env, \"MAX_SOLVE_DURATION_MS\", 1e5),\n rateLimitWindowMs: readPositiveInt(env, \"COMPUTE_RATE_LIMIT_WINDOW_MS\", 1e5),\n rateLimitMaxRequests: readPositiveInt(env, \"COMPUTE_RATE_LIMIT_MAX\", 120),\n maxGhFileSize,\n maxImageFileSize: readPositiveInt(env, \"MAX_IMAGE_FILE_SIZE_BYTES\", 10 * MB),\n computeRequestMaxBytes: readPositiveInt(env, \"COMPUTE_REQUEST_MAX_BYTES\", 300 * MB),\n computeResponseMaxBytes: readPositiveInt(env, \"COMPUTE_RESPONSE_MAX_BYTES\", 300 * MB),\n // Tracks the upload cap so a remote URL can't smuggle a larger file.\n remoteDefinitionMaxBytes: maxGhFileSize,\n remoteDefinitionFetchTimeoutMs: readPositiveInt(\n env,\n \"REMOTE_DEFINITION_FETCH_TIMEOUT_MS\",\n 3e4\n ),\n definitionCacheTtlMs: readPositiveInt(env, \"DEFINITION_CACHE_TTL_MS\", 5 * 60 * 1e3),\n computeReuseDefinitionCache: readBool(env, \"COMPUTE_REUSE_DEFINITION_CACHE\", true),\n computeServerCachesolve: readBool(env, \"COMPUTE_SERVER_CACHESOLVE\", true),\n computeCacheErroredSolves: readBool(env, \"COMPUTE_CACHE_ERRORED_SOLVES\", false),\n // 4 matches rhino.compute's default --childcount; tune to the actual VM.\n computeMaxConcurrentSolves: readPositiveInt(env, \"COMPUTE_MAX_CONCURRENT\", 4),\n // Both 0 (unbounded / no deadline) by default — nothing sheds until an\n // operator who's measured their pool opts in. readNonNegativeInt so `0` is a\n // valid \"disabled\" value, not treated as invalid.\n computeMaxQueueDepth: readNonNegativeInt(env, \"COMPUTE_MAX_QUEUE_DEPTH\", 0),\n computeQueueWaitMs: readNonNegativeInt(env, \"COMPUTE_QUEUE_WAIT_MS\", 0),\n // Env is MB; 0 disables. Default 256 MB holds a handful of typical\n // definitions warm without pinning gigabytes. readNonNegativeInt so `0`\n // (disable) is honored rather than treated as invalid.\n computeDefinitionByteCacheBytes: readNonNegativeInt(env, \"COMPUTE_DEFINITION_BYTE_CACHE_MB\", 256) * MB,\n // L2 durable solve cache (H1). Default per-definition quota 0 = inherit-to-off\n // until an operator opts in; the memory backend also only mounts under\n // SOLVE_CACHE_PROVIDER=memory, so nothing caches by accident. Byte backstop\n // 512 MB caps total heap use across all definitions (env is MB).\n solveCacheDefaultMaxEntries: readNonNegativeInt(env, \"SOLVE_CACHE_DEFAULT_MAX_ENTRIES\", 0),\n solveCacheMaxTotalBytes: readNonNegativeInt(env, \"SOLVE_CACHE_MAX_TOTAL_MB\", 512) * MB\n };\n}\nconst FLAG_KEYS = [\n \"ALLOW_CROSS_ORG_PUBLIC\",\n \"ALLOW_ORG_COMPUTE_OVERRIDE\",\n \"ALLOW_ORG_CREATION\",\n \"ENABLE_PLATFORM_PROJECTS\",\n \"ENABLE_SHARING\"\n];\nfunction pick(env, envVar, slot, fallback) {\n const choice = (env[envVar] ?? fallback).toLowerCase();\n const factory = slot[choice];\n if (!factory) {\n throw new Error(`Unknown ${envVar}=\"${choice}\". Expected: ${Object.keys(slot).join(\" | \")}.`);\n }\n return factory(env);\n}\nfunction pickTenancy(env) {\n const choice = (env.SELVA_TENANCY ?? \"single\").toLowerCase();\n if (choice !== \"single\" && choice !== \"multi\") {\n throw new Error(`Unknown SELVA_TENANCY=\"${choice}\". Expected: single | multi.`);\n }\n return choice;\n}\nfunction pickSolveMetrics(data) {\n const candidate = data.solveMetrics;\n if (candidate && typeof candidate.record === \"function\") {\n return candidate;\n }\n return void 0;\n}\nfunction buildDefaultFactory(options) {\n const { registry: registry2, defaults } = options;\n return (env) => {\n const data = pick(env, \"SELVA_DATA_PROVIDER\", registry2.data, defaults?.data ?? \"local\");\n return {\n tenancy: pickTenancy(env),\n flags: Object.fromEntries(\n FLAG_KEYS.map((key) => [key, readBool(env, `SELVA_FLAG_${key}`, false)])\n ),\n branding: {\n name: env.SELVA_BRAND_NAME,\n copyrightName: env.SELVA_BRAND_COPYRIGHT_NAME,\n tagline: env.SELVA_BRAND_TAGLINE,\n description: env.SELVA_BRAND_DESCRIPTION\n },\n auth: pick(env, \"SELVA_AUTH_PROVIDER\", registry2.auth, defaults?.auth ?? \"local\"),\n data,\n storage: pick(env, \"SELVA_STORAGE_PROVIDER\", registry2.storage, defaults?.storage ?? \"local\"),\n solveMetrics: pickSolveMetrics(data)\n };\n };\n}\nasync function loadConfigSource(options) {\n if (!options.configPath) {\n return buildDefaultFactory(options);\n }\n const abs = resolve(process.cwd(), options.configPath);\n if (!existsSync(abs)) {\n throw new Error(\n `Config override path ${options.configPath} resolved to ${abs} which does not exist.`\n );\n }\n const mod = await import(\n /* @vite-ignore */\n pathToFileURL(abs).href\n );\n return mod.default;\n}\nasync function createSelvaProviders(env, options) {\n const raw = await loadConfigSource(options);\n const onBoot = options.onBoot ?? console.info;\n let config;\n let solveMetricSink;\n function resolve2() {\n if (config) return config;\n config = typeof raw === \"function\" ? raw(env) : raw;\n onBoot(\n `[selva] providers wired: auth=${config.auth.name} data=${config.data.constructor.name} storage=${config.storage.constructor.name} tenancy=${config.tenancy ?? \"single\"}` + (options.configPath ? ` config=${options.configPath}` : \"\")\n );\n return config;\n }\n return {\n resolve: resolve2,\n tenancy: () => resolve2().tenancy ?? \"single\",\n branding: () => {\n const brand = resolve2().branding ?? {};\n const name = brand.name?.trim() || \"Selva\";\n return {\n name,\n copyrightName: brand.copyrightName?.trim() || name,\n tagline: brand.tagline?.trim() || \"Turn Grasshopper definitions into tools anyone can use.\",\n description: brand.description?.trim() || `Build and deploy interactive web applications powered by Grasshopper definitions with ${name}.`\n };\n },\n flag: (name) => isFlagEnabled(resolve2(), name),\n solveMetricSink: () => {\n if (!solveMetricSink) {\n solveMetricSink = resolve2().solveMetrics ?? new NoopSolveMetricSink();\n }\n return solveMetricSink;\n }\n };\n}\nconst DEFAULT_MAX_AGE_MS = 8 * 60 * 60 * 1e3;\nfunction signHmacToken(secret, userId, maxAgeMs = DEFAULT_MAX_AGE_MS) {\n const expiry = Date.now() + maxAgeMs;\n const payload = Buffer.from(`${userId}:${expiry}`).toString(\"base64url\");\n const sig = createHmac(\"sha256\", secret).update(payload).digest(\"base64url\");\n return `${payload}.${sig}`;\n}\nfunction verifyHmacToken(token, secret) {\n const dot = token.lastIndexOf(\".\");\n if (dot === -1) return { userId: \"\", valid: false };\n const payload = token.slice(0, dot);\n const sig = token.slice(dot + 1);\n const expectedSig = createHmac(\"sha256\", secret).update(payload).digest(\"base64url\");\n const a = Buffer.from(sig);\n const b = Buffer.from(expectedSig);\n if (a.length !== b.length || !timingSafeEqual(a, b)) return { userId: \"\", valid: false };\n const decoded = Buffer.from(payload, \"base64url\").toString();\n const colon = decoded.lastIndexOf(\":\");\n if (colon === -1) return { userId: \"\", valid: false };\n const userId = decoded.slice(0, colon);\n const expiry = parseInt(decoded.slice(colon + 1), 10);\n if (!Number.isFinite(expiry) || Date.now() >= expiry) return { userId: \"\", valid: false };\n return { userId, valid: true };\n}\nasync function readJsonFile(filePath, fallback) {\n try {\n const raw = await fs.readFile(filePath, \"utf-8\");\n return JSON.parse(raw);\n } catch (err) {\n if (err.code === \"ENOENT\") return fallback;\n throw err;\n }\n}\nasync function writeJsonFile(filePath, data) {\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n const tmp = `${filePath}.tmp`;\n await fs.writeFile(tmp, JSON.stringify(data, null, \"\t\"), \"utf-8\");\n await fs.rename(tmp, filePath);\n}\nconst LAST_LOGIN_DEBOUNCE_MS$1 = 6e4;\nconst PBKDF2_ITERATIONS = 1e5;\nconst PBKDF2_KEYLEN = 32;\nconst PBKDF2_DIGEST = \"sha256\";\nasync function hashPassword(password) {\n const salt = crypto.randomBytes(16).toString(\"base64url\");\n const hash = await new Promise(\n (resolve2, reject) => crypto.pbkdf2(\n password,\n salt,\n PBKDF2_ITERATIONS,\n PBKDF2_KEYLEN,\n PBKDF2_DIGEST,\n (err, key) => err ? reject(err) : resolve2(key)\n )\n );\n return `pbkdf2:${PBKDF2_DIGEST}:${PBKDF2_ITERATIONS}:${salt}:${hash.toString(\"base64url\")}`;\n}\nasync function verifyPasswordHash(password, storedHash) {\n const parts = storedHash.split(\":\");\n if (parts.length !== 5 || parts[0] !== \"pbkdf2\") return false;\n const [, digest, iterStr, salt, expectedHashB64] = parts;\n const iterations = parseInt(iterStr, 10);\n if (!Number.isFinite(iterations) || iterations <= 0) return false;\n const expected = Buffer.from(expectedHashB64, \"base64url\");\n const actual = await new Promise(\n (resolve2, reject) => crypto.pbkdf2(\n password,\n salt,\n iterations,\n PBKDF2_KEYLEN,\n digest,\n (err, key) => err ? reject(err) : resolve2(key)\n )\n );\n if (actual.length !== expected.length) return false;\n return crypto.timingSafeEqual(actual, expected);\n}\nconst empty$7 = () => ({ users: [] });\nfunction createLocalAuthUserStore(usersFilePath) {\n let cache = null;\n let loading = null;\n async function load() {\n if (cache) return cache;\n loading ??= readJsonFile(usersFilePath, empty$7()).then((data) => {\n cache = data;\n loading = null;\n return data;\n });\n return loading;\n }\n async function persist(file) {\n cache = file;\n await writeJsonFile(usersFilePath, file);\n }\n return {\n async findByEmail(email) {\n const { users } = await load();\n return users.find((u) => u.email.toLowerCase() === email.toLowerCase()) ?? null;\n },\n async findById(id) {\n const { users } = await load();\n return users.find((u) => u.id === id) ?? null;\n },\n async listUsers() {\n const { users } = await load();\n return users.map(({ passwordHash: _ph, ...rest }) => rest);\n },\n async createUser(email, password) {\n const file = await load();\n if (file.users.some((u) => u.email.toLowerCase() === email.toLowerCase())) {\n throw new ProviderError(`User with email \"${email}\" already exists`, 409);\n }\n const user = {\n id: randomUUID(),\n email,\n passwordHash: password !== null ? await hashPassword(password) : null,\n createdAt: (/* @__PURE__ */ new Date()).toISOString()\n };\n file.users.push(user);\n await persist(file);\n return user;\n },\n async setDisabled(id, disabled) {\n const file = await load();\n const user = file.users.find((u) => u.id === id);\n if (!user) throw new ProviderError(`User \"${id}\" not found`, 404);\n user.disabled = disabled;\n await persist(file);\n },\n async touchLastLogin(id) {\n const file = await load();\n const user = file.users.find((u) => u.id === id);\n if (!user) return;\n const now = Date.now();\n if (user.lastLoginAt) {\n const prev = Date.parse(user.lastLoginAt);\n if (Number.isFinite(prev) && now - prev < LAST_LOGIN_DEBOUNCE_MS$1) return;\n }\n user.lastLoginAt = new Date(now).toISOString();\n await persist(file);\n },\n async deleteUser(id) {\n const file = await load();\n const before = file.users.length;\n file.users = file.users.filter((u) => u.id !== id);\n if (file.users.length === before) throw new ProviderError(`User \"${id}\" not found`, 404);\n await persist(file);\n }\n };\n}\nfunction paginate(items, opts) {\n const limit = Math.min(Math.max(1, opts?.limit ?? DEFAULT_PAGE_LIMIT), MAX_PAGE_LIMIT);\n const offset = opts?.cursor ? parseInt(opts.cursor, 10) || 0 : 0;\n const slice = items.slice(offset, offset + limit);\n const nextOffset = offset + slice.length;\n return {\n items: slice,\n nextCursor: nextOffset < items.length ? String(nextOffset) : void 0\n };\n}\nfunction applyOrder(items, opts, keyFn = (item, field) => item[field]) {\n const field = opts?.orderBy ?? \"createdAt\";\n const dir = opts?.orderDir ?? \"desc\";\n const mul = dir === \"asc\" ? 1 : -1;\n items.sort((a, b) => {\n const av = keyFn(a, field) ?? \"\";\n const bv = keyFn(b, field) ?? \"\";\n if (av < bv) return -1 * mul;\n if (av > bv) return 1 * mul;\n return 0;\n });\n return items;\n}\nconst SESSION_MAX_AGE_MS = 8 * 60 * 60 * 1e3;\nconst MIN_HMAC_SECRET_LENGTH = 32;\nfunction toAuthUser$1(u) {\n return {\n id: u.id,\n email: u.email,\n createdAt: u.createdAt,\n lastLoginAt: u.lastLoginAt,\n disabled: u.disabled\n };\n}\nclass LocalPasswordAuth {\n constructor(users, mintToken) {\n this.users = users;\n this.mintToken = mintToken;\n }\n users;\n mintToken;\n async verifyLogin(email, password) {\n if (!this.users) return { kind: \"failed\", reason: \"invalid_credentials\" };\n const user = await this.users.findByEmail(email);\n if (!user) return { kind: \"failed\", reason: \"invalid_credentials\" };\n if (user.disabled) return { kind: \"failed\", reason: \"disabled\" };\n if (!user.passwordHash || !await verifyPasswordHash(password, user.passwordHash)) {\n return { kind: \"failed\", reason: \"invalid_credentials\" };\n }\n await this.users.touchLastLogin(user.id).catch(() => {\n });\n const auth = toAuthUser$1(user);\n return { kind: \"success\", user: auth, sessionToken: this.mintToken(auth) };\n }\n async createUserWithPassword(email, password) {\n if (!this.users) {\n throw new ProviderError(\n \"createUserWithPassword requires a users.json backend (DATA_PATH)\",\n 500\n );\n }\n return toAuthUser$1(await this.users.createUser(email, password));\n }\n async registerUser(email, password) {\n if (!this.users) return null;\n return toAuthUser$1(await this.users.createUser(email, password));\n }\n}\nclass LocalAuthProvider {\n hmacSecret;\n users;\n name = \"Local\";\n passwordAuth;\n constructor(config) {\n this.hmacSecret = config.hmacSecret;\n if (config.usersFilePath) {\n this.users = createLocalAuthUserStore(config.usersFilePath);\n }\n this.passwordAuth = new LocalPasswordAuth(\n this.users,\n (user) => signHmacToken(this.hmacSecret, user.id, SESSION_MAX_AGE_MS)\n );\n }\n /**\n * The underlying identity store, or undefined in stateless (no-DATA_PATH)\n * mode. Exposed so callers that need direct seed/read access (tests,\n * advanced wiring) share THIS provider's store — and thus its load-once\n * write-through cache — instead of constructing a second store on the same\n * file, which would run a divergent cache. §3a.\n */\n get userStore() {\n return this.users;\n }\n static fromEnv(env) {\n const hmacSecret = env.SELVA_HMAC_KEY;\n if (!hmacSecret) throw new Error(\"Missing required env var: SELVA_HMAC_KEY\");\n if (hmacSecret.length < MIN_HMAC_SECRET_LENGTH) {\n throw new Error(\n `SELVA_HMAC_KEY must be at least ${MIN_HMAC_SECRET_LENGTH} characters (got ${hmacSecret.length}). Generate one with: openssl rand -base64 32`\n );\n }\n return new LocalAuthProvider({\n hmacSecret,\n usersFilePath: env.DATA_PATH ? path.join(env.DATA_PATH, \"auth-users.json\") : void 0\n });\n }\n /**\n * Verify an HMAC session token and return the live user record.\n *\n * Runs on EVERY authenticated request, so it stays read-only: one\n * `findById` (a cached `auth-users.json` read), no writes. `lastLoginAt` is\n * stamped at actual login time in `verifyLogin` — it is a login concern, not\n * a per-request activity clock, and the only consumers use it as a\n * has-ever-signed-in flag (invited vs. active in the admin/team lists). The\n * previous per-request `touchLastLogin` here cost a second full file\n * read+parse just to decide (usually) not to write.\n */\n async verifyToken(token) {\n const { valid, userId } = verifyHmacToken(token, this.hmacSecret);\n if (!valid) return null;\n if (!this.users) return null;\n const u = await this.users.findById(userId);\n if (!u || u.disabled) return null;\n return toAuthUser$1(u);\n }\n async touchLastLogin(id) {\n if (!this.users) return;\n await this.users.touchLastLogin(id);\n }\n async getUser(id) {\n if (!this.users) return null;\n const u = await this.users.findById(id);\n return u ? toAuthUser$1(u) : null;\n }\n async listUsers(opts) {\n if (!this.users) return null;\n const users = await this.users.listUsers();\n return paginate(users.map(toAuthUser$1), opts);\n }\n async deleteUser(id) {\n if (!this.users) return \"not_supported\";\n const target = await this.users.findById(id);\n if (!target) return \"not_found\";\n try {\n await this.users.deleteUser(id);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404) return \"not_found\";\n throw err;\n }\n }\n async disableUser(id) {\n if (!this.users) return \"not_supported\";\n const target = await this.users.findById(id);\n if (!target) return \"not_found\";\n try {\n await this.users.setDisabled(id, true);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404) return \"not_found\";\n throw err;\n }\n }\n}\nconst empty$6 = () => ({ invites: [] });\nclass LocalInviteStore {\n constructor(dataPath, events = new NoopEventSink()) {\n this.events = events;\n this.filePath = path.join(dataPath, \"invites.json\");\n }\n events;\n filePath;\n static fromEnv(env, events = new NoopEventSink()) {\n if (!env.DATA_PATH) throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalInviteStore(env.DATA_PATH, events);\n }\n async load() {\n return readJsonFile(this.filePath, empty$6());\n }\n async save(file) {\n await writeJsonFile(this.filePath, file);\n }\n async create(ctx, invite) {\n const file = await this.load();\n file.invites.push(invite);\n await this.save(file);\n await this.events.emit({\n type: \"invite.created\",\n inviteId: invite.id,\n orgId: invite.orgId,\n email: invite.email,\n actorId: actorFrom(ctx)\n });\n }\n async getByTokenHash(_ctx, tokenHash) {\n const { invites } = await this.load();\n const invite = invites.find((i) => i.tokenHash === tokenHash);\n if (!invite) return null;\n if (invite.acceptedAt) return null;\n if (Date.parse(invite.expiresAt) <= Date.now()) return null;\n return invite;\n }\n async listByOrg(_ctx, orgId, opts) {\n const { invites } = await this.load();\n const filtered = invites.filter((i) => i.orgId === orgId);\n return paginate(applyOrder(filtered, opts), opts);\n }\n async markAccepted(ctx, id, userId) {\n const file = await this.load();\n const invite = file.invites.find((i) => i.id === id);\n if (!invite || invite.acceptedAt) return;\n invite.acceptedAt = (/* @__PURE__ */ new Date()).toISOString();\n invite.acceptedByUserId = userId;\n await this.save(file);\n await this.events.emit({\n type: \"invite.accepted\",\n inviteId: invite.id,\n orgId: invite.orgId,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n async revoke(ctx, id) {\n const file = await this.load();\n const target = file.invites.find((i) => i.id === id && !i.acceptedAt);\n if (!target) return;\n file.invites = file.invites.filter((i) => i.id !== id || i.acceptedAt);\n await this.save(file);\n await this.events.emit({\n type: \"invite.revoked\",\n inviteId: id,\n orgId: target.orgId,\n actorId: actorFrom(ctx)\n });\n }\n async deleteByOrg(_ctx, orgId) {\n const file = await this.load();\n const before = file.invites.length;\n file.invites = file.invites.filter((i) => i.orgId !== orgId);\n if (file.invites.length === before) return;\n await this.save(file);\n }\n}\nconst ALGO = \"aes-256-gcm\";\nconst IV_BYTES = 12;\nconst TAG_BYTES = 16;\nconst PREFIX = \"enc:v1:\";\nfunction isEncryptedSecret(value) {\n return value.startsWith(PREFIX);\n}\nfunction encryptSecret(plaintext, key) {\n if (key.length !== 32) {\n throw new Error(`Secret key must be 32 bytes; got ${key.length}`);\n }\n if (isEncryptedSecret(plaintext)) {\n throw new Error(\"Refusing to encrypt a value that is already encrypted\");\n }\n const iv = randomBytes(IV_BYTES);\n const cipher = createCipheriv(ALGO, key, iv);\n const ciphertext = Buffer.concat([cipher.update(plaintext, \"utf8\"), cipher.final()]);\n const tag = cipher.getAuthTag();\n return PREFIX + Buffer.concat([iv, tag, ciphertext]).toString(\"base64\");\n}\nfunction decryptSecret(envelope, key) {\n if (key.length !== 32) {\n throw new Error(`Secret key must be 32 bytes; got ${key.length}`);\n }\n if (!isEncryptedSecret(envelope)) {\n throw new Error(\"Value is not an encrypted secret envelope\");\n }\n const buf = Buffer.from(envelope.slice(PREFIX.length), \"base64\");\n const iv = buf.subarray(0, IV_BYTES);\n const tag = buf.subarray(IV_BYTES, IV_BYTES + TAG_BYTES);\n const ciphertext = buf.subarray(IV_BYTES + TAG_BYTES);\n const decipher = createDecipheriv(ALGO, key, iv);\n decipher.setAuthTag(tag);\n return Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString(\"utf8\");\n}\nfunction decodeSecretKey(raw) {\n if (/^[0-9a-fA-F]{64}$/.test(raw)) return Buffer.from(raw, \"hex\");\n const buf = Buffer.from(raw, \"base64\");\n if (buf.length === 32) return buf;\n throw new Error(\n `SELVA_AT_REST_KEY must be 32 bytes encoded as 64-char hex or base64. Generate one with: node -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\"`\n );\n}\nconst empty$5 = () => ({ servers: [], orgDefaults: {} });\nclass LocalComputeServerStore {\n constructor(configFilePath, secretKey) {\n this.configFilePath = configFilePath;\n this.secretKey = secretKey;\n }\n configFilePath;\n secretKey;\n static fromEnv(env) {\n if (!env.DATA_PATH) throw new Error(\"Missing required env var: DATA_PATH\");\n if (!env.SELVA_AT_REST_KEY) {\n throw new Error(\n `Missing required env var: SELVA_AT_REST_KEY (32-byte hex or base64). Generate one with: node -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\"`\n );\n }\n return new LocalComputeServerStore(\n path.join(env.DATA_PATH, \"compute.config.json\"),\n decodeSecretKey(env.SELVA_AT_REST_KEY)\n );\n }\n async readAll() {\n const raw = await readJsonFile(this.configFilePath, empty$5());\n return {\n servers: raw.servers ?? [],\n defaultServerId: raw.defaultServerId,\n orgDefaults: raw.orgDefaults ?? {}\n };\n }\n /**\n * Per-row tolerant decrypt. A row whose ciphertext can't be authenticated\n * under the current `SELVA_AT_REST_KEY` is returned with `apiKey: undefined`\n * and a warning logged once. The page that loaded the config keeps\n * rendering; solves against that server will fail later when Rhino.Compute\n * rejects the missing key.\n *\n * Boot-time `verifySecrets()` is the strict counterpart — call that from\n * the app entrypoint to refuse to start when this state is detected.\n *\n * Plaintext-on-disk is still hard-fail. That state is never produced by\n * the store itself (every write goes through `encryptApiKeys`), so seeing\n * it means someone hand-edited the file with a real secret in plaintext —\n * which is a security issue we should surface loudly, not paper over.\n */\n decryptApiKeys(servers) {\n return servers.map((s) => {\n if (!s.apiKey) return s;\n if (!isEncryptedSecret(s.apiKey)) {\n throw new Error(\n `compute.config.json contains an unencrypted apiKey for server \"${s.label}\" (${s.id}). Re-enter the key via /admin/compute so it is stored encrypted.`\n );\n }\n try {\n return { ...s, apiKey: decryptSecret(s.apiKey, this.secretKey) };\n } catch (cause) {\n console.warn(\n `[selva] Could not decrypt apiKey for compute server \"${s.label}\" (${s.id}). The stored ciphertext does not match the current SELVA_AT_REST_KEY. This server will be returned without an apiKey; solves against it will fail. Re-enter the key via /admin/compute, or restore the original SELVA_AT_REST_KEY. See docs/Troubleshooting.md.`,\n cause\n );\n return { ...s, apiKey: void 0 };\n }\n });\n }\n /**\n * Boot-time integrity check. Reads every server row and attempts to\n * decrypt each encrypted `apiKey`. Returns a structured report — does NOT\n * throw. The caller decides what to do (refuse boot, log + degrade, etc.).\n *\n * Use this from app startup (`hooks.server.ts`) so a key mismatch fails\n * loudly at deploy time instead of as a blank page when a user first hits\n * a route that loads compute config.\n */\n async verifySecrets() {\n const all = await this.readAll();\n const failures = [];\n let plaintextFound = false;\n for (const s of all.servers) {\n if (!s.apiKey) continue;\n if (!isEncryptedSecret(s.apiKey)) {\n plaintextFound = true;\n failures.push({\n serverId: s.id,\n serverLabel: s.label,\n reason: \"plaintext_on_disk\"\n });\n continue;\n }\n try {\n decryptSecret(s.apiKey, this.secretKey);\n } catch (cause) {\n failures.push({\n serverId: s.id,\n serverLabel: s.label,\n reason: \"key_mismatch\",\n cause: cause instanceof Error ? cause.message : String(cause)\n });\n }\n }\n return { ok: failures.length === 0, failures, plaintextFound };\n }\n encryptApiKeys(servers) {\n return servers.map((s) => {\n if (!s.apiKey) return s;\n if (isEncryptedSecret(s.apiKey)) return s;\n return { ...s, apiKey: encryptSecret(s.apiKey, this.secretKey) };\n });\n }\n async getConfig(_ctx) {\n const all = await this.readAll();\n return {\n servers: this.decryptApiKeys(all.servers),\n defaultServerId: all.defaultServerId,\n orgDefaults: all.orgDefaults\n };\n }\n async savePlatformServers(_ctx, servers, defaultServerId) {\n const all = await this.readAll();\n const orgRows = all.servers.filter(isOrgServer);\n const platformRows = this.encryptApiKeys(servers.filter(isPlatformServer));\n await writeJsonFile(this.configFilePath, {\n servers: [...platformRows, ...orgRows],\n defaultServerId,\n orgDefaults: all.orgDefaults\n });\n }\n async saveOrgServers(_ctx, orgId, servers, defaultServerId) {\n const all = await this.readAll();\n const platformRows = all.servers.filter(isPlatformServer);\n const otherOrgRows = all.servers.filter((s) => isOrgServer(s) && s.ownerOrgId !== orgId);\n const thisOrgRows = this.encryptApiKeys(\n servers.filter((_s) => true).map(\n (s) => isOrgServer(s) ? { ...s, ownerOrgId: orgId } : (\n // Coerce — caller passed something with the wrong/missing scope.\n { ...s, scope: \"org\", ownerOrgId: orgId }\n )\n )\n );\n const orgDefaults = { ...all.orgDefaults ?? {} };\n if (defaultServerId === null) {\n delete orgDefaults[orgId];\n } else if (typeof defaultServerId === \"string\") {\n orgDefaults[orgId] = defaultServerId;\n }\n await writeJsonFile(this.configFilePath, {\n servers: [...platformRows, ...otherOrgRows, ...thisOrgRows],\n defaultServerId: all.defaultServerId,\n orgDefaults\n });\n }\n async setOrgDefault(_ctx, orgId, serverId) {\n const all = await this.readAll();\n const orgDefaults = { ...all.orgDefaults ?? {} };\n if (serverId === null) {\n delete orgDefaults[orgId];\n } else {\n orgDefaults[orgId] = serverId;\n }\n await writeJsonFile(this.configFilePath, { ...all, orgDefaults });\n }\n async deleteByOrg(_ctx, orgId) {\n const all = await this.readAll();\n const remaining = all.servers.filter((s) => !(isOrgServer(s) && s.ownerOrgId === orgId));\n const cleaned = remaining.map((s) => {\n if (!isPlatformServer(s)) return s;\n if (s.sharedWith === \"all\") return s;\n if (!s.sharedWith.includes(orgId)) return s;\n const next = {\n ...s,\n sharedWith: s.sharedWith.filter((id) => id !== orgId)\n };\n return next;\n });\n const orgDefaults = { ...all.orgDefaults ?? {} };\n const hadDefault = orgId in orgDefaults;\n delete orgDefaults[orgId];\n const changed = cleaned.length !== all.servers.length || hadDefault || cleaned.some((c, i) => c !== all.servers[i]);\n if (!changed) return;\n await writeJsonFile(this.configFilePath, {\n servers: cleaned,\n defaultServerId: all.defaultServerId,\n orgDefaults\n });\n }\n}\nconst empty$4 = () => ({ grants: [] });\nclass LocalPlatformProjectGrantStore {\n filePath;\n static fromEnv(env) {\n if (!env.DATA_PATH) throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalPlatformProjectGrantStore(\n path.join(env.DATA_PATH, \"platform-project-grants.json\")\n );\n }\n constructor(filePath) {\n this.filePath = filePath;\n }\n async read() {\n return readJsonFile(this.filePath, empty$4());\n }\n async write(data) {\n await writeJsonFile(this.filePath, data);\n }\n async listByProject(_ctx, projectId) {\n const { grants } = await this.read();\n return grants.filter((g) => g.projectId === projectId);\n }\n async create(_ctx, grant) {\n const data = await this.read();\n if (data.grants.some((g) => g.id === grant.id)) {\n throw new ProviderError(`Grant '${grant.id}' already exists`, 409);\n }\n const duplicate = data.grants.find(\n (g) => g.projectId === grant.projectId && g.granteeType === grant.granteeType && g.granteeId === grant.granteeId\n );\n if (duplicate) {\n throw new ProviderError(\n `A grant for this ${grant.granteeType} already exists on this project`,\n 409\n );\n }\n data.grants.push(grant);\n await this.write(data);\n }\n async delete(_ctx, id) {\n const data = await this.read();\n const idx = data.grants.findIndex((g) => g.id === id);\n if (idx === -1) throw new ProviderError(`Grant '${id}' not found`, 404);\n data.grants.splice(idx, 1);\n await this.write(data);\n }\n async deleteByProject(_ctx, projectId) {\n const data = await this.read();\n const before = data.grants.length;\n data.grants = data.grants.filter((g) => g.projectId !== projectId);\n if (data.grants.length !== before) await this.write(data);\n }\n async deleteByGranteeOrg(_ctx, orgId) {\n const data = await this.read();\n const before = data.grants.length;\n data.grants = data.grants.filter((g) => !(g.granteeType === \"org\" && g.granteeId === orgId));\n if (data.grants.length !== before) await this.write(data);\n }\n}\nfunction isLive$1(row) {\n return row.deletedAt == null;\n}\nclass LocalOrgStoreLoader {\n storePath;\n store = null;\n loading = null;\n constructor(dataPath) {\n this.storePath = path.join(dataPath, \"local-org.json\");\n }\n async get() {\n if (this.store) return this.store;\n this.loading ??= readJsonFile(this.storePath, {\n orgs: [],\n projects: [],\n orgMembers: [],\n projectMembers: []\n }).then((data) => {\n this.store = data;\n this.loading = null;\n return data;\n });\n return this.loading;\n }\n async write(store) {\n this.store = store;\n await writeJsonFile(this.storePath, store);\n }\n}\nclass LocalOrgStore {\n loader;\n events;\n invites;\n computeServer;\n grants;\n static fromEnv(env) {\n if (!env.DATA_PATH) throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalOrgStore({\n loader: new LocalOrgStoreLoader(env.DATA_PATH),\n invites: LocalInviteStore.fromEnv(env),\n computeServer: LocalComputeServerStore.fromEnv(env),\n grants: LocalPlatformProjectGrantStore.fromEnv(env)\n });\n }\n constructor(opts) {\n this.loader = opts.loader;\n this.invites = opts.invites;\n this.computeServer = opts.computeServer;\n this.grants = opts.grants;\n this.events = opts.events ?? new NoopEventSink();\n }\n async listOrgs(_ctx, opts) {\n const { orgs } = await this.loader.get();\n return paginate(applyOrder(orgs.filter(isLive$1), opts), opts);\n }\n async getOrg(_ctx, id) {\n const { orgs } = await this.loader.get();\n const o = orgs.find((o2) => o2.id === id);\n return o && isLive$1(o) ? o : null;\n }\n async getOrgBySlug(_ctx, slug) {\n const { orgs } = await this.loader.get();\n const o = orgs.find((o2) => o2.slug === slug);\n return o && isLive$1(o) ? o : null;\n }\n async createOrg(ctx, org) {\n const store = await this.loader.get();\n if (store.orgs.some((o) => o.id === org.id && isLive$1(o))) {\n throw new ProviderError(`Org '${org.id}' already exists`, 409);\n }\n if (store.orgs.some((o) => o.slug === org.slug && isLive$1(o))) {\n throw new ProviderError(`Org slug '${org.slug}' already in use`, 409);\n }\n store.orgs.push({ ...org, deletedAt: null });\n const now = (/* @__PURE__ */ new Date()).toISOString();\n store.orgMembers.push({\n orgId: org.id,\n userId: org.ownerId,\n role: \"owner\",\n permissions: [...DEFAULT_ORG_PERMISSIONS.owner],\n joinedAt: now,\n ...auditUpdate(ctx, org.ownerId),\n deletedAt: null\n });\n await this.loader.write(store);\n await this.events.emit({ type: \"org.created\", orgId: org.id, actorId: actorFrom(ctx) });\n }\n async updateOrg(ctx, id, patch) {\n const store = await this.loader.get();\n const idx = store.orgs.findIndex((o) => o.id === id && isLive$1(o));\n if (idx === -1) throw new ProviderError(`Org '${id}' not found`, 404);\n if (patch.slug && patch.slug !== store.orgs[idx].slug) {\n if (store.orgs.some((o) => o.id !== id && o.slug === patch.slug && isLive$1(o))) {\n throw new ProviderError(`Org slug '${patch.slug}' already in use`, 409);\n }\n }\n store.orgs[idx] = {\n ...store.orgs[idx],\n ...patch,\n ...auditUpdate(ctx, store.orgs[idx].updatedBy ?? store.orgs[idx].ownerId)\n };\n await this.loader.write(store);\n }\n async deleteOrg(ctx, id) {\n const store = await this.loader.get();\n const idx = store.orgs.findIndex((o) => o.id === id && isLive$1(o));\n if (idx === -1) throw new ProviderError(`Org '${id}' not found`, 404);\n const stamp = auditSoftDelete(ctx, store.orgs[idx].updatedBy ?? store.orgs[idx].ownerId);\n store.orgs[idx] = { ...store.orgs[idx], ...stamp };\n store.orgMembers = store.orgMembers.map(\n (m) => m.orgId === id && isLive$1(m) ? { ...m, ...stamp } : m\n );\n const orgProjectIds = new Set(\n store.projects.filter((p) => p.orgId === id && isLive$1(p)).map((p) => p.id)\n );\n store.projects = store.projects.map(\n (p) => p.orgId === id && isLive$1(p) ? { ...p, ...stamp } : p\n );\n store.projectMembers = store.projectMembers.map(\n (m) => orgProjectIds.has(m.projectId) && isLive$1(m) ? { ...m, ...stamp } : m\n );\n await this.loader.write(store);\n await this.invites.deleteByOrg(ctx, id);\n await this.computeServer.deleteByOrg(ctx, id);\n for (const projectId of orgProjectIds) {\n await this.grants.deleteByProject(ctx, projectId);\n }\n await this.grants.deleteByGranteeOrg(ctx, id);\n await this.events.emit({ type: \"org.deleted\", orgId: id, actorId: actorFrom(ctx) });\n }\n async listOrgMembers(_ctx, orgId, opts) {\n const { orgMembers } = await this.loader.get();\n return paginate(\n orgMembers.filter((m) => m.orgId === orgId && isLive$1(m)),\n opts\n );\n }\n async getOrgMember(_ctx, orgId, userId) {\n const { orgMembers } = await this.loader.get();\n const m = orgMembers.find((m2) => m2.orgId === orgId && m2.userId === userId);\n return m && isLive$1(m) ? m : null;\n }\n async findUserMembership(_ctx, userId) {\n const store = await this.loader.get();\n const member = store.orgMembers.find((m) => m.userId === userId && isLive$1(m));\n if (!member) return null;\n const org = store.orgs.find((o) => o.id === member.orgId);\n if (!org || !isLive$1(org)) return null;\n return { org, member };\n }\n async addOrgMember(ctx, member) {\n const store = await this.loader.get();\n const existing = store.orgMembers.find(\n (m) => m.orgId === member.orgId && m.userId === member.userId\n );\n if (existing) {\n Object.assign(existing, member, {\n ...auditUpdate(ctx, member.userId),\n deletedAt: null\n });\n } else {\n store.orgMembers.push({ ...member, deletedAt: null });\n }\n await this.loader.write(store);\n await this.events.emit({\n type: \"org_member.added\",\n orgId: member.orgId,\n userId: member.userId,\n actorId: actorFrom(ctx)\n });\n }\n async updateOrgMemberRole(ctx, orgId, userId, role) {\n const store = await this.loader.get();\n const m = store.orgMembers.find((m2) => m2.orgId === orgId && m2.userId === userId && isLive$1(m2));\n if (!m) throw new ProviderError(`Org member '${userId}' not found`, 404);\n m.role = role;\n m.permissions = [...DEFAULT_ORG_PERMISSIONS[role]];\n Object.assign(m, auditUpdate(ctx, m.updatedBy));\n await this.loader.write(store);\n await this.events.emit({\n type: \"org_member.role_changed\",\n orgId,\n userId,\n role,\n actorId: actorFrom(ctx)\n });\n }\n async updateOrgMemberPermissions(ctx, orgId, userId, permissions) {\n const store = await this.loader.get();\n const m = store.orgMembers.find((m2) => m2.orgId === orgId && m2.userId === userId && isLive$1(m2));\n if (!m) throw new ProviderError(`Org member '${userId}' not found`, 404);\n m.permissions = [...permissions];\n Object.assign(m, auditUpdate(ctx, m.updatedBy));\n await this.loader.write(store);\n await this.events.emit({\n type: \"org_member.permissions_changed\",\n orgId,\n userId,\n permissions: [...permissions],\n actorId: actorFrom(ctx)\n });\n }\n async removeOrgMember(ctx, orgId, userId) {\n const store = await this.loader.get();\n const m = store.orgMembers.find((m2) => m2.orgId === orgId && m2.userId === userId && isLive$1(m2));\n if (!m) return;\n const stamp = auditSoftDelete(ctx, m.updatedBy);\n Object.assign(m, stamp);\n const projectIdsInOrg = new Set(\n store.projects.filter((p) => p.orgId === orgId).map((p) => p.id)\n );\n store.projectMembers = store.projectMembers.map(\n (pm) => pm.userId === userId && projectIdsInOrg.has(pm.projectId) && isLive$1(pm) ? { ...pm, ...stamp } : pm\n );\n await this.loader.write(store);\n await this.events.emit({\n type: \"org_member.removed\",\n orgId,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n}\nfunction isLive(row) {\n return row.deletedAt == null;\n}\nclass LocalProjectStore {\n loader;\n events;\n grants;\n definitions;\n constructor(opts) {\n this.loader = opts.loader;\n this.grants = opts.grants;\n this.events = opts.events ?? new NoopEventSink();\n }\n /**\n * Wire the definition store used by the `deleteProject` cascade. Injected\n * via a setter rather than the constructor because the composition root\n * builds the project store before the definition store (the definition\n * store's `setProjectProvider` already depends on this one). Unwired, the\n * cascade is skipped — an unwired project store leaks live definitions of a\n * deleted project into the library/public listings.\n */\n setDefinitionProvider(definitions) {\n this.definitions = definitions;\n }\n async listProjects(_ctx, orgId, opts) {\n const { projects } = await this.loader.get();\n return paginate(\n applyOrder(\n projects.filter((p) => p.orgId === orgId && isLive(p)),\n opts\n ),\n opts\n );\n }\n async getProject(_ctx, id) {\n const { projects } = await this.loader.get();\n const p = projects.find((p2) => p2.id === id);\n return p && isLive(p) ? p : null;\n }\n async getProjectBySlug(_ctx, orgId, slug) {\n const { projects } = await this.loader.get();\n const p = projects.find((p2) => p2.orgId === orgId && p2.slug === slug);\n return p && isLive(p) ? p : null;\n }\n async createProject(ctx, project) {\n const store = await this.loader.get();\n if (!store.orgs.some((o) => o.id === project.orgId && isLive(o))) {\n throw new ProviderError(`Org '${project.orgId}' not found`, 404);\n }\n if (store.projects.some((p) => p.id === project.id && isLive(p))) {\n throw new ProviderError(`Project '${project.id}' already exists`, 409);\n }\n const nameKey = project.name.toLowerCase();\n if (store.projects.some(\n (p) => p.orgId === project.orgId && isLive(p) && p.name.toLowerCase() === nameKey\n )) {\n throw new ProviderError(\"projects_org_name_unique: project name already in use\", 409);\n }\n if (store.projects.some((p) => p.orgId === project.orgId && isLive(p) && p.slug === project.slug)) {\n throw new ProviderError(\"projects_org_id_slug_key: project slug already in use\", 409);\n }\n store.projects.push({ ...project, deletedAt: null });\n store.projectMembers.push({\n projectId: project.id,\n userId: project.ownerId,\n role: \"owner\",\n joinedAt: project.createdAt,\n updatedAt: project.createdAt,\n updatedBy: project.ownerId,\n deletedAt: null\n });\n await this.loader.write(store);\n await this.events.emit({\n type: \"project.created\",\n projectId: project.id,\n orgId: project.orgId,\n actorId: actorFrom(ctx)\n });\n }\n async updateProject(ctx, id, patch) {\n const store = await this.loader.get();\n const idx = store.projects.findIndex((p) => p.id === id && isLive(p));\n if (idx === -1) throw new ProviderError(`Project '${id}' not found`, 404);\n const current = store.projects[idx];\n if (patch.name && patch.name.toLowerCase() !== current.name.toLowerCase()) {\n const nameKey = patch.name.toLowerCase();\n if (store.projects.some(\n (p) => p.orgId === current.orgId && p.id !== id && isLive(p) && p.name.toLowerCase() === nameKey\n )) {\n throw new ProviderError(\"projects_org_name_unique: project name already in use\", 409);\n }\n }\n if (patch.slug && patch.slug !== current.slug) {\n if (store.projects.some(\n (p) => p.orgId === current.orgId && p.slug === patch.slug && p.id !== id && isLive(p)\n )) {\n throw new ProviderError(\"projects_org_id_slug_key: project slug already in use\", 409);\n }\n }\n store.projects[idx] = {\n ...current,\n ...patch,\n ...auditUpdate(ctx, current.updatedBy ?? current.ownerId)\n };\n await this.loader.write(store);\n }\n async deleteProject(ctx, id) {\n const store = await this.loader.get();\n const idx = store.projects.findIndex((p) => p.id === id && isLive(p));\n if (idx === -1) throw new ProviderError(`Project '${id}' not found`, 404);\n const stamp = auditSoftDelete(\n ctx,\n store.projects[idx].updatedBy ?? store.projects[idx].ownerId\n );\n store.projects[idx] = { ...store.projects[idx], ...stamp };\n store.projectMembers = store.projectMembers.map(\n (m) => m.projectId === id && isLive(m) ? { ...m, ...stamp } : m\n );\n await this.loader.write(store);\n await this.definitions?.deleteByProject(ctx, id);\n await this.grants.deleteByProject(ctx, id);\n await this.events.emit({ type: \"project.deleted\", projectId: id, actorId: actorFrom(ctx) });\n }\n async reactivateProject(ctx, orgId, slug) {\n const store = await this.loader.get();\n const idx = store.projects.findIndex((p) => p.orgId === orgId && p.slug === slug && !isLive(p));\n if (idx === -1) return null;\n const now = (/* @__PURE__ */ new Date()).toISOString();\n store.projects[idx] = { ...store.projects[idx], deletedAt: null, updatedAt: now };\n const ownerId = store.projects[idx].ownerId;\n const pmIdx = store.projectMembers.findIndex(\n (m) => m.projectId === store.projects[idx].id && m.userId === ownerId && !isLive(m)\n );\n if (pmIdx !== -1) {\n store.projectMembers[pmIdx] = {\n ...store.projectMembers[pmIdx],\n deletedAt: null,\n updatedAt: now\n };\n }\n await this.loader.write(store);\n const project = { ...store.projects[idx] };\n await this.events.emit({\n type: \"project.created\",\n projectId: project.id,\n orgId: project.orgId,\n actorId: actorFrom(ctx)\n });\n return project;\n }\n async listProjectMembers(_ctx, projectId, opts) {\n const { projectMembers } = await this.loader.get();\n return paginate(\n projectMembers.filter((m) => m.projectId === projectId && isLive(m)),\n opts\n );\n }\n async getProjectMember(_ctx, projectId, userId) {\n const { projectMembers } = await this.loader.get();\n const m = projectMembers.find((m2) => m2.projectId === projectId && m2.userId === userId);\n return m && isLive(m) ? m : null;\n }\n async addProjectMember(ctx, member) {\n const store = await this.loader.get();\n const existing = store.projectMembers.find(\n (m) => m.projectId === member.projectId && m.userId === member.userId\n );\n if (existing) {\n Object.assign(existing, member, {\n ...auditUpdate(ctx, member.userId),\n deletedAt: null\n });\n } else {\n const stamp = auditUpdate(ctx, member.userId);\n store.projectMembers.push({\n ...member,\n updatedAt: member.updatedAt ?? stamp.updatedAt,\n updatedBy: member.updatedBy ?? stamp.updatedBy,\n deletedAt: null\n });\n }\n await this.loader.write(store);\n await this.events.emit({\n type: \"project_member.added\",\n projectId: member.projectId,\n userId: member.userId,\n actorId: actorFrom(ctx)\n });\n }\n async updateProjectMemberRole(ctx, projectId, userId, role) {\n const store = await this.loader.get();\n const m = store.projectMembers.find(\n (m2) => m2.projectId === projectId && m2.userId === userId && isLive(m2)\n );\n if (!m) throw new ProviderError(`Project member '${userId}' not found`, 404);\n m.role = role;\n Object.assign(m, auditUpdate(ctx, m.updatedBy));\n await this.loader.write(store);\n await this.events.emit({\n type: \"project_member.role_changed\",\n projectId,\n userId,\n role,\n actorId: actorFrom(ctx)\n });\n }\n async removeProjectMember(ctx, projectId, userId) {\n const store = await this.loader.get();\n const m = store.projectMembers.find(\n (m2) => m2.projectId === projectId && m2.userId === userId && isLive(m2)\n );\n if (!m) return;\n Object.assign(m, auditSoftDelete(ctx, m.updatedBy));\n await this.loader.write(store);\n await this.events.emit({\n type: \"project_member.removed\",\n projectId,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n}\nconst empty$3 = () => ({ definitions: {}, definitionVersions: {} });\nclass LocalDefinitionStore {\n configPath;\n events;\n projectProvider;\n // Load-once write-through cache — same idiom as `LocalOrgStoreLoader` and the\n // auth/user-data stores. `definitions-config.json` is the largest and\n // fastest-growing local doc, re-read on every get/list/getVersion/listVersions,\n // including the unauthenticated share-link solve path (via the injected\n // definition provider in `LocalShareLinkStore`). Sole-writer in single-process\n // local mode → the in-memory copy is authoritative; every mutation reads the\n // cached object, mutates it, and `writeConfig` persists via temp+rename. This\n // store is constructed once per provider (and the share-link store gets the\n // SAME instance injected), so there's exactly one cache over the file. §3b.\n cache = null;\n loading = null;\n static fromEnv(env) {\n if (!env.DATA_PATH) throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalDefinitionStore(env.DATA_PATH);\n }\n constructor(definitionsPath, projectProvider, events = new NoopEventSink()) {\n this.configPath = path.join(definitionsPath, \"definitions-config.json\");\n this.projectProvider = projectProvider;\n this.events = events;\n }\n setProjectProvider(projectProvider) {\n this.projectProvider = projectProvider;\n }\n async readConfig() {\n if (this.cache) return this.cache;\n this.loading ??= readJsonFile(this.configPath, empty$3()).then((data) => {\n this.cache = data;\n this.loading = null;\n return data;\n });\n return this.loading;\n }\n live(record) {\n return Boolean(record && record.deletedAt == null);\n }\n async writeConfig(config) {\n this.cache = config;\n await writeJsonFile(this.configPath, config);\n }\n sortedRecords(records, opts) {\n const defaulted = {\n ...opts,\n orderBy: opts?.orderBy ?? \"name\",\n orderDir: opts?.orderDir ?? \"asc\"\n };\n return applyOrder([...records], defaulted, (r, field) => {\n if (field === \"name\") return r.displayName.toLowerCase();\n if (field === \"solveCount\") return r.solveCount ?? 0;\n return r[field];\n });\n }\n visibleRecords(records, opts) {\n const filtered = records.filter((r) => r?.displayName && this.live(r));\n if (opts?.statuses?.length) {\n const allowed = new Set(opts.statuses);\n return filtered.filter((r) => allowed.has(r.status));\n }\n return filtered.filter((r) => {\n if (r.status === \"pending\" && !opts?.includePending) return false;\n if (r.status === \"archived\" && !opts?.includeArchived) return false;\n return true;\n });\n }\n async list(_ctx, opts) {\n const config = await this.readConfig();\n const records = this.visibleRecords(Object.values(config.definitions), opts);\n return paginate(this.sortedRecords(records, opts), opts);\n }\n async listByProject(_ctx, projectId, opts) {\n const config = await this.readConfig();\n const records = this.visibleRecords(\n Object.values(config.definitions).filter((r) => r?.projectId === projectId),\n opts\n );\n return paginate(this.sortedRecords(records, opts), opts);\n }\n async listPublic(ctx, opts) {\n if (!this.projectProvider) {\n return this.list(ctx, opts);\n }\n const config = await this.readConfig();\n const records = Object.values(config.definitions).filter(\n (r) => Boolean(r?.displayName && this.live(r))\n );\n const projectIds = Array.from(new Set(records.map((r) => r.projectId)));\n const projects = await Promise.all(\n projectIds.map((id) => this.projectProvider.getProject(ctx, id))\n );\n const publicProjectIds = new Set(\n projects.filter(\n (p) => p !== null && p.visibility === \"public\" && (!opts?.orgId || p.orgId === opts.orgId)\n ).map((p) => p.id)\n );\n const publicRecords = this.visibleRecords(\n records.filter((r) => publicProjectIds.has(r.projectId)),\n opts\n );\n return paginate(this.sortedRecords(publicRecords, opts), opts);\n }\n async get(_ctx, guid) {\n const config = await this.readConfig();\n const r = config.definitions[guid];\n return this.live(r) ? r : null;\n }\n async create(ctx, record) {\n const config = await this.readConfig();\n const actor = ctx.userId || record.ownerId;\n config.definitions[record.guid] = {\n ...record,\n createdBy: record.createdBy || actor,\n updatedBy: record.updatedBy || actor,\n liveVersionId: record.liveVersionId ?? null,\n draftVersionId: record.draftVersionId ?? null,\n deletedAt: null\n };\n await this.writeConfig(config);\n await this.events.emit({\n type: \"definition.created\",\n definitionId: record.guid,\n projectId: record.projectId,\n actorId: actorFrom(ctx)\n });\n }\n async update(ctx, guid, patch) {\n const config = await this.readConfig();\n const existing = config.definitions[guid];\n if (!this.live(existing)) throw new ProviderError(`Definition '${guid}' not found`, 404);\n const clearable = (v) => v === null ? void 0 : v;\n config.definitions[guid] = {\n ...existing,\n ...patch.displayName !== void 0 && { displayName: patch.displayName },\n ...patch.description !== void 0 && {\n description: clearable(patch.description)\n },\n ...patch.category !== void 0 && {\n category: clearable(patch.category)\n },\n ...patch.tags !== void 0 && { tags: clearable(patch.tags) },\n ...patch.coverImage !== void 0 && {\n coverImage: clearable(patch.coverImage)\n },\n ...patch.projectId !== void 0 && { projectId: patch.projectId },\n ...patch.computeServerId !== void 0 && {\n computeServerId: clearable(patch.computeServerId)\n },\n ...patch.solveCacheLimit !== void 0 && {\n solveCacheLimit: clearable(patch.solveCacheLimit)\n },\n ...patch.status !== void 0 && { status: patch.status },\n ...patch.ownerId !== void 0 && { ownerId: patch.ownerId },\n ...auditUpdate(ctx, existing.updatedBy ?? existing.ownerId)\n };\n await this.writeConfig(config);\n }\n async delete(ctx, guid) {\n const config = await this.readConfig();\n const existing = config.definitions[guid];\n if (!this.live(existing)) return;\n Object.assign(existing, auditSoftDelete(ctx, existing.updatedBy ?? existing.ownerId));\n await this.writeConfig(config);\n await this.events.emit({\n type: \"definition.deleted\",\n definitionId: guid,\n actorId: actorFrom(ctx)\n });\n }\n async deleteByProject(ctx, projectId) {\n const config = await this.readConfig();\n const affected = [];\n for (const record of Object.values(config.definitions)) {\n if (record.projectId === projectId && this.live(record)) {\n Object.assign(record, auditSoftDelete(ctx, record.updatedBy ?? record.ownerId));\n affected.push(record);\n }\n }\n if (affected.length === 0) return;\n await this.writeConfig(config);\n for (const record of affected) {\n await this.events.emit({\n type: \"definition.deleted\",\n definitionId: record.guid,\n actorId: actorFrom(ctx)\n });\n }\n }\n async incrementSolveCount(_ctx, guid) {\n const config = await this.readConfig();\n const existing = config.definitions[guid];\n if (!this.live(existing)) return;\n existing.solveCount = (existing.solveCount ?? 0) + 1;\n existing.updatedAt = (/* @__PURE__ */ new Date()).toISOString();\n await this.writeConfig(config);\n }\n async reserveNextVersionNumber(_ctx, guid) {\n const config = await this.readConfig();\n const existing = config.definitions[guid];\n if (!this.live(existing)) throw new ProviderError(`Definition '${guid}' not found`, 404);\n const current = existing.nextVersionNumber ?? this.highestVersionNumber(config, guid) + 1;\n existing.nextVersionNumber = current + 1;\n existing.updatedAt = (/* @__PURE__ */ new Date()).toISOString();\n await this.writeConfig(config);\n return current;\n }\n /**\n * Highest `versionNumber` currently on disk for a definition (0 if none). Only\n * used as the seed when a legacy record predates `nextVersionNumber`; new\n * records carry the counter and never take this path.\n */\n highestVersionNumber(config, definitionId) {\n let max = 0;\n for (const v of Object.values(config.definitionVersions)) {\n if (v.definitionId === definitionId && v.versionNumber > max) max = v.versionNumber;\n }\n return max;\n }\n // ============================================================================\n // Versions (spec §6)\n // ============================================================================\n async createVersion(ctx, version) {\n const config = await this.readConfig();\n const parent = config.definitions[version.definitionId];\n if (!this.live(parent)) {\n throw new ProviderError(`Definition '${version.definitionId}' not found`, 404);\n }\n if (config.definitionVersions[version.id]) {\n throw new ProviderError(`Version '${version.id}' already exists`, 409);\n }\n config.definitionVersions[version.id] = { ...version };\n await this.writeConfig(config);\n await this.events.emit({\n type: \"definition_version.created\",\n versionId: version.id,\n definitionId: version.definitionId,\n actorId: actorFrom(ctx)\n });\n }\n async listVersions(_ctx, definitionId, opts) {\n const config = await this.readConfig();\n const parent = config.definitions[definitionId];\n if (!this.live(parent)) return paginate([], opts);\n const rows = Object.values(config.definitionVersions).filter((v) => v.definitionId === definitionId).sort((a, b) => b.versionNumber - a.versionNumber);\n return paginate(rows, opts);\n }\n async getVersion(_ctx, versionId) {\n const config = await this.readConfig();\n return config.definitionVersions[versionId] ?? null;\n }\n async setVersionSchema(_ctx, versionId, schema) {\n const config = await this.readConfig();\n const version = config.definitionVersions[versionId];\n if (!version) return;\n version.schema = schema;\n version.schemaExtractedAt = (/* @__PURE__ */ new Date()).toISOString();\n await this.writeConfig(config);\n }\n async deleteVersion(ctx, versionId) {\n const config = await this.readConfig();\n const version = config.definitionVersions[versionId];\n if (!version) return;\n const parent = config.definitions[version.definitionId];\n if (parent && (parent.liveVersionId === versionId || parent.draftVersionId === versionId)) {\n throw new ProviderError(\n `Version '${versionId}' is referenced by liveVersionId or draftVersionId`,\n 409\n );\n }\n delete config.definitionVersions[versionId];\n await this.writeConfig(config);\n await this.events.emit({\n type: \"definition_version.deleted\",\n versionId,\n actorId: actorFrom(ctx)\n });\n }\n async setLiveVersion(ctx, definitionId, versionId) {\n await this.repoint(\"live\", ctx, definitionId, versionId);\n }\n async setDraftVersion(ctx, definitionId, versionId) {\n await this.repoint(\"draft\", ctx, definitionId, versionId);\n }\n async attachInitialVersion(ctx, definitionId, versionId) {\n const config = await this.readConfig();\n const record = config.definitions[definitionId];\n if (!this.live(record)) throw new ProviderError(`Definition '${definitionId}' not found`, 404);\n const version = config.definitionVersions[versionId];\n if (!version || version.definitionId !== definitionId) {\n throw new ProviderError(`Version '${versionId}' not found for this definition`, 404);\n }\n record.liveVersionId = versionId;\n record.draftVersionId = versionId;\n record.status = \"draft\";\n Object.assign(record, auditUpdate(ctx, record.updatedBy ?? record.ownerId));\n await this.writeConfig(config);\n }\n async repoint(channel, ctx, definitionId, versionId) {\n const config = await this.readConfig();\n const record = config.definitions[definitionId];\n if (!this.live(record)) throw new ProviderError(`Definition '${definitionId}' not found`, 404);\n const version = config.definitionVersions[versionId];\n if (!version || version.definitionId !== definitionId) {\n throw new ProviderError(`Version '${versionId}' not found for this definition`, 404);\n }\n if (channel === \"live\") record.liveVersionId = versionId;\n else record.draftVersionId = versionId;\n Object.assign(record, auditUpdate(ctx, record.updatedBy ?? record.ownerId));\n await this.writeConfig(config);\n if (channel === \"live\") {\n await this.events.emit({\n type: \"definition.published\",\n definitionId,\n versionId,\n actorId: actorFrom(ctx)\n });\n }\n }\n}\nconst empty$2 = () => ({ links: {} });\nclass LocalShareLinkStore {\n definitionProvider;\n events;\n configFilePath;\n static fromEnv(env) {\n if (!env.DATA_PATH) throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalShareLinkStore({\n filePath: path.join(env.DATA_PATH, \"share-links.json\")\n });\n }\n constructor(opts) {\n this.configFilePath = opts.filePath;\n this.events = opts.events ?? new NoopEventSink();\n }\n /**\n * Wire the definition store so token resolution can check the parent\n * definition's `deletedAt` (Permissions.md §7 cascade contract). Mirrors\n * Supabase, which performs the equivalent JOIN. Optional: when unset, the\n * store falls back to the local-only revoke check; the route layer in\n * the selva app does the parent lookup as a safety net either way.\n */\n setDefinitionProvider(definitions) {\n this.definitionProvider = definitions;\n }\n async readAll() {\n return readJsonFile(this.configFilePath, empty$2());\n }\n async writeAll(data) {\n await writeJsonFile(this.configFilePath, data);\n }\n isLive(l) {\n return Boolean(l && l.revokedAt == null);\n }\n async create(ctx, link) {\n const all = await this.readAll();\n if (all.links[link.id]) {\n throw new ProviderError(`Share link '${link.id}' already exists`, 409);\n }\n all.links[link.id] = { ...link, revokedAt: null };\n await this.writeAll(all);\n await this.events.emit({\n type: \"share_link.minted\",\n linkId: link.id,\n definitionId: link.definitionId,\n actorId: actorFrom(ctx)\n });\n }\n async listByDefinition(_ctx, definitionId, opts) {\n const all = await this.readAll();\n const rows = Object.values(all.links).filter((l) => l.definitionId === definitionId && this.isLive(l)).sort((a, b) => b.createdAt.localeCompare(a.createdAt));\n return paginate(rows, opts);\n }\n async getById(_ctx, id) {\n const all = await this.readAll();\n return all.links[id] ?? null;\n }\n async getByTokenHash(_ctx, tokenHash) {\n const all = await this.readAll();\n const found = Object.values(all.links).find((l) => l.tokenHash === tokenHash);\n if (!this.isLive(found)) return null;\n if (this.definitionProvider) {\n const parent = await this.definitionProvider.get(SYSTEM_CONTEXT, found.definitionId);\n if (!parent) return null;\n }\n return found;\n }\n async revoke(ctx, id) {\n const all = await this.readAll();\n const l = all.links[id];\n if (!l || !this.isLive(l)) return;\n l.revokedAt = (/* @__PURE__ */ new Date()).toISOString();\n await this.writeAll(all);\n await this.events.emit({ type: \"share_link.revoked\", linkId: id, actorId: actorFrom(ctx) });\n }\n async tryIncrementSolveCount(_ctx, id) {\n const all = await this.readAll();\n const l = all.links[id];\n if (!l || !this.isLive(l)) return null;\n if (l.maxSolves != null && l.solveCount >= l.maxSolves) return null;\n l.solveCount += 1;\n await this.writeAll(all);\n return l.solveCount;\n }\n}\nconst MAX_RECENT_RUNS$1 = 20;\nconst empty$1 = () => ({ users: [] });\nfunction emptyRow(userId) {\n return {\n userId,\n platformPermissions: [],\n starredDefinitions: [],\n recentRuns: []\n };\n}\nfunction createLocalUserDataStore(filePath) {\n let cache = null;\n let loading = null;\n async function load() {\n if (cache) return cache;\n loading ??= readJsonFile(filePath, empty$1()).then((data) => {\n cache = data;\n loading = null;\n return data;\n });\n return loading;\n }\n async function persist(file) {\n cache = file;\n await writeJsonFile(filePath, file);\n }\n async function findOrThrow(userId) {\n const file = await load();\n const row = file.users.find((u) => u.userId === userId);\n if (!row) throw new ProviderError(`User-data row \"${userId}\" not found`, 404);\n return { file, row };\n }\n return {\n async ensure(userId) {\n const file = await load();\n if (file.users.some((u) => u.userId === userId)) return;\n file.users.push(emptyRow(userId));\n await persist(file);\n },\n async findById(userId) {\n const { users } = await load();\n return users.find((u) => u.userId === userId) ?? null;\n },\n async listAll() {\n const { users } = await load();\n return users;\n },\n async updatePermissions(userId, permissions) {\n const { file, row } = await findOrThrow(userId);\n row.platformPermissions = permissions;\n await persist(file);\n },\n async updateDisplayName(userId, displayName) {\n const { file, row } = await findOrThrow(userId);\n if (displayName === void 0) {\n delete row.displayName;\n } else {\n row.displayName = displayName;\n }\n await persist(file);\n },\n async starDefinition(userId, definitionId) {\n const { file, row } = await findOrThrow(userId);\n if (!row.starredDefinitions.includes(definitionId)) {\n row.starredDefinitions.push(definitionId);\n await persist(file);\n }\n },\n async unstarDefinition(userId, definitionId) {\n const { file, row } = await findOrThrow(userId);\n row.starredDefinitions = row.starredDefinitions.filter((d) => d !== definitionId);\n await persist(file);\n },\n async recordRun(userId, run) {\n const { file, row } = await findOrThrow(userId);\n row.recentRuns = [\n run,\n ...row.recentRuns.filter((r) => r.definitionId !== run.definitionId)\n ].slice(0, MAX_RECENT_RUNS$1);\n await persist(file);\n },\n async deleteUser(userId) {\n const file = await load();\n const before = file.users.length;\n file.users = file.users.filter((u) => u.userId !== userId);\n if (file.users.length === before) {\n throw new ProviderError(`User-data row \"${userId}\" not found`, 404);\n }\n await persist(file);\n }\n };\n}\nfunction toProfile(u) {\n return {\n userId: u.userId,\n displayName: u.displayName,\n starredDefinitions: u.starredDefinitions ?? [],\n recentRuns: u.recentRuns ?? []\n };\n}\nclass LocalUserProfileProvider {\n data;\n /**\n * Accepts a file path (constructs its own store — for `fromEnv` and\n * standalone conformance tests) OR a shared `LocalUserDataStore`. In the\n * full provider, `LocalDataProvider` injects ONE store shared with the\n * permission store and the data provider, so all three see the same\n * load-once write-through cache over `user-data.json` (§3a). Constructing\n * separate stores on the same file would run divergent caches.\n */\n constructor(userData) {\n this.data = typeof userData === \"string\" ? createLocalUserDataStore(userData) : userData;\n }\n static fromEnv(env) {\n if (!env.DATA_PATH) throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalUserProfileProvider(path.join(env.DATA_PATH, \"user-data.json\"));\n }\n async getProfile(ctx, userId) {\n assertCanAccess$1(ctx, userId);\n const u = await this.data.findById(userId);\n return u ? toProfile(u) : null;\n }\n async getProfiles(_ctx, userIds) {\n const all = await this.data.listAll();\n const wanted = new Set(userIds);\n return all.filter((u) => wanted.has(u.userId)).map(toProfile);\n }\n async updateProfile(ctx, userId, patch) {\n assertCanAccess$1(ctx, userId);\n try {\n if (patch.displayName !== void 0) {\n await this.data.updateDisplayName(userId, patch.displayName);\n }\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404) return \"not_found\";\n throw err;\n }\n }\n async starDefinition(ctx, userId, definitionId) {\n assertCanAccess$1(ctx, userId);\n try {\n await this.data.starDefinition(userId, definitionId);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404) return \"not_found\";\n throw err;\n }\n }\n async unstarDefinition(ctx, userId, definitionId) {\n assertCanAccess$1(ctx, userId);\n try {\n await this.data.unstarDefinition(userId, definitionId);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404) return \"not_found\";\n throw err;\n }\n }\n async recordRun(ctx, userId, run) {\n assertCanAccess$1(ctx, userId);\n try {\n await this.data.recordRun(userId, run);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404) return \"not_found\";\n throw err;\n }\n }\n}\nfunction assertCanAccess$1(ctx, userId) {\n if (ctx.system) return;\n if (ctx.userId === userId) return;\n if (hasPermission(ctx, \"instance_admin\")) return;\n throw new ProviderError(\"Forbidden: cannot access another user’s profile\", 403);\n}\nclass LocalPlatformPermissionStore {\n data;\n static fromEnv(env) {\n if (!env.DATA_PATH) throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalPlatformPermissionStore(path.join(env.DATA_PATH, \"user-data.json\"));\n }\n /**\n * Accepts a file path (constructs its own store) OR a shared\n * `LocalUserDataStore`. `LocalDataProvider` injects one shared store so the\n * permission, profile, and data-provider views of `user-data.json` share a\n * single load-once write-through cache (§3a).\n */\n constructor(userData) {\n this.data = typeof userData === \"string\" ? createLocalUserDataStore(userData) : userData;\n }\n async getFor(ctx, userId) {\n assertCanRead$1(ctx, userId);\n const row = await this.data.findById(userId);\n return row?.platformPermissions ?? [];\n }\n async getForBatch(ctx, userIds) {\n assertCanReadBatch(ctx);\n const all = await this.data.listAll();\n const wanted = new Set(userIds);\n const out = /* @__PURE__ */ new Map();\n for (const u of all) {\n if (wanted.has(u.userId)) out.set(u.userId, u.platformPermissions ?? []);\n }\n return out;\n }\n async set(ctx, userId, permissions) {\n assertAdmin$1(ctx);\n const target = await this.data.findById(userId);\n if (!target) return \"not_found\";\n const wasAdmin = target.platformPermissions.includes(\"instance_admin\");\n const willBeAdmin = permissions.includes(\"instance_admin\");\n if (wasAdmin && !willBeAdmin) {\n const others = await this.countOtherAdmins(userId);\n if (others === 0) return \"last_admin\";\n }\n try {\n await this.data.updatePermissions(userId, [...permissions]);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404) return \"not_found\";\n throw err;\n }\n }\n async hasInstanceAdmin(_ctx) {\n const all = await this.data.listAll();\n return all.some((u) => u.platformPermissions.includes(\"instance_admin\"));\n }\n async countInstanceAdminsExcluding(_ctx, excludeUserId) {\n return this.countOtherAdmins(excludeUserId);\n }\n async countOtherAdmins(excludeUserId) {\n const all = await this.data.listAll();\n return all.filter(\n (u) => u.userId !== excludeUserId && u.platformPermissions.includes(\"instance_admin\")\n ).length;\n }\n}\nfunction assertCanRead$1(ctx, userId) {\n if (ctx.system) return;\n if (ctx.userId === userId) return;\n if (hasPermission(ctx, \"instance_admin\")) return;\n throw new ProviderError(\"Forbidden: cannot read another user’s permissions\", 403);\n}\nfunction assertAdmin$1(ctx) {\n if (ctx.system) return;\n if (hasPermission(ctx, \"instance_admin\")) return;\n throw new ProviderError(\"Forbidden: instance admin required\", 403);\n}\nfunction assertCanReadBatch(ctx) {\n if (ctx.system) return;\n if (hasPermission(ctx, \"instance_admin\")) return;\n if (hasPermission(ctx, \"manage_instance_users\")) return;\n throw new ProviderError(\"Forbidden: instance admin or manage_instance_users required\", 403);\n}\nclass LocalDataProvider {\n orgs;\n projects;\n definitions;\n computeServer;\n invites;\n shareLinks;\n userProfile;\n permissions;\n platformProjectGrants;\n /** The sink the stores emit into (Noop unless injected) — per `IDataProvider.events`. */\n events;\n userData;\n constructor(stores, userData) {\n this.events = stores.events;\n this.orgs = stores.orgs;\n this.projects = stores.projects;\n this.definitions = stores.definitions;\n this.computeServer = stores.computeServer;\n this.invites = stores.invites;\n this.shareLinks = stores.shareLinks;\n this.userProfile = stores.userProfile;\n this.permissions = stores.permissions;\n this.platformProjectGrants = stores.platformProjectGrants;\n this.userData = userData;\n }\n /**\n * Idempotently register a user in the data layer. Called from\n * `hooks.server.ts` on every authed request — the local equivalent of\n * Supabase's `handle_new_auth_user` trigger. After this completes the\n * user has an empty row in `user-data.json` that the permissions and\n * profile stores can read and update.\n *\n * `ctx` is unused — registration runs as a system operation regardless of\n * the calling user. Argument is kept for interface symmetry with adapters\n * that need it.\n */\n async ensureUser(_ctx, userId) {\n await this.userData.ensure(userId);\n }\n /**\n * Cascade hook called after the auth provider deletes a user. Removes the\n * matching `user-data.json` row and every live org membership so the data\n * layer doesn't accumulate orphans — a leftover membership renders as a\n * bare user ID in the team roster forever. (Supabase gets the membership\n * cascade from FK constraints; local must do it explicitly.) Tolerates\n * missing rows.\n */\n async onUserDeleted(ctx, userId) {\n try {\n await this.userData.deleteUser(userId);\n } catch {\n }\n for (let i = 0; i < 100; i++) {\n const membership = await this.orgs.findUserMembership(ctx, userId);\n if (!membership) break;\n await this.orgs.removeOrgMember(ctx, membership.org.id, userId);\n }\n }\n static fromEnv(env, events = new NoopEventSink()) {\n if (!env.DATA_PATH) throw new Error(\"Missing required env var: DATA_PATH\");\n const dataPath = env.DATA_PATH;\n const userDataFilePath = path.join(dataPath, \"user-data.json\");\n const loader = new LocalOrgStoreLoader(dataPath);\n const platformProjectGrants = LocalPlatformProjectGrantStore.fromEnv(env);\n const invites = LocalInviteStore.fromEnv(env, events);\n const computeServer = LocalComputeServerStore.fromEnv(env);\n const projects = new LocalProjectStore({ loader, grants: platformProjectGrants, events });\n const definitions = new LocalDefinitionStore(dataPath, void 0, events);\n const shareLinks = new LocalShareLinkStore({\n filePath: path.join(dataPath, \"share-links.json\"),\n events\n });\n const orgs = new LocalOrgStore({\n loader,\n invites,\n computeServer,\n grants: platformProjectGrants,\n events\n });\n definitions.setProjectProvider(projects);\n shareLinks.setDefinitionProvider(definitions);\n projects.setDefinitionProvider(definitions);\n const userData = createLocalUserDataStore(userDataFilePath);\n return new LocalDataProvider(\n {\n orgs,\n projects,\n definitions,\n computeServer,\n invites,\n shareLinks,\n userProfile: new LocalUserProfileProvider(userData),\n permissions: new LocalPlatformPermissionStore(userData),\n platformProjectGrants,\n events\n },\n userData\n );\n }\n}\nclass LocalStorageProvider {\n basePath;\n publicUrlBase;\n static fromEnv(env) {\n if (!env.DATA_PATH) throw new Error(\"Missing required env var: DATA_PATH\");\n return new LocalStorageProvider(env.DATA_PATH, \"/api/files\");\n }\n constructor(basePath, publicUrlBase = \"/api/files\") {\n this.basePath = basePath;\n this.publicUrlBase = publicUrlBase;\n }\n /**\n * Resolve a caller-provided path under basePath, rejecting anything that\n * would escape the root. Last line of defense against traversal — while\n * platform-side helpers (definitionPaths) also assert safe keys, this\n * adapter is reached by any IStorageProvider caller.\n */\n resolvePath(storagePath) {\n const base = path.resolve(this.basePath);\n const full = path.resolve(base, storagePath);\n if (full !== base && !full.startsWith(base + path.sep)) {\n throw new Error(`Path escapes base: ${storagePath}`);\n }\n return full;\n }\n async get(storagePath) {\n try {\n const buffer = await fs.readFile(this.resolvePath(storagePath));\n return new Uint8Array(buffer);\n } catch (err) {\n if (err.code === \"ENOENT\") return null;\n throw err;\n }\n }\n async put(storagePath, data, contentType) {\n const transcoded = await transcodeImageIfNeeded(data, contentType, storagePath);\n const fullPath = this.resolvePath(transcoded.path);\n await fs.mkdir(path.dirname(fullPath), { recursive: true });\n await fs.writeFile(fullPath, Buffer.from(transcoded.data));\n }\n async delete(storagePath) {\n try {\n await fs.unlink(this.resolvePath(storagePath));\n } catch (err) {\n if (err.code !== \"ENOENT\") throw err;\n }\n }\n async deletePrefix(prefix) {\n const fullPath = this.resolvePath(prefix);\n await fs.rm(fullPath, { recursive: true, force: true });\n }\n getPublicUrl(storagePath) {\n return `${this.publicUrlBase}/${storagePath}`;\n }\n}\nclass SupabaseStorageProvider {\n client;\n publicBucket;\n privateBucket;\n publicBaseUrl;\n privateUrlPrefix;\n static fromEnv(env) {\n const supabaseUrl = env.SUPABASE_URL;\n const serviceRoleKey = env.SUPABASE_SERVICE_ROLE_KEY;\n if (!supabaseUrl) throw new Error(\"Missing required env var: SUPABASE_URL\");\n if (!serviceRoleKey) throw new Error(\"Missing required env var: SUPABASE_SERVICE_ROLE_KEY\");\n return new SupabaseStorageProvider({\n supabaseUrl,\n serviceRoleKey,\n publicBucket: env.SUPABASE_PUBLIC_BUCKET,\n privateBucket: env.SUPABASE_PRIVATE_BUCKET,\n privateUrlPrefix: env.SUPABASE_PRIVATE_URL_PREFIX\n });\n }\n constructor(config) {\n this.client = createClient(config.supabaseUrl, config.serviceRoleKey, {\n auth: { persistSession: false, autoRefreshToken: false }\n });\n this.publicBucket = config.publicBucket ?? \"selva-public\";\n this.privateBucket = config.privateBucket ?? \"selva-private\";\n this.publicBaseUrl = `${config.supabaseUrl.replace(/\\/$/, \"\")}/storage/v1/object/public/${this.publicBucket}`;\n this.privateUrlPrefix = (config.privateUrlPrefix ?? \"/api/files\").replace(/\\/$/, \"\");\n }\n /**\n * Route a storage path to a bucket. A path is private when either:\n * - it's a `.gh`/`.ghx` source file — confidentiality by extension, so a\n * path-scheme rename can't silently move sources into the public bucket;\n * - it classifies as a non-`public` asset class (`classifyAssetPath`) —\n * e.g. `orgs/{id}/private/*` pricing sheets are members-only and must\n * never land in the CDN-readable bucket.\n * Everything else (branding, covers, archives, thumbnails) is public.\n */\n bucketFor(storagePath) {\n if (/\\.(gh|ghx)$/i.test(storagePath)) return this.privateBucket;\n const cls = classifyAssetPath(storagePath);\n if (cls && cls.class.visibility !== \"public\") return this.privateBucket;\n return this.publicBucket;\n }\n async get(storagePath) {\n const bucket = this.bucketFor(storagePath);\n const { data, error } = await this.client.storage.from(bucket).download(storagePath);\n if (error) {\n const msg = error.message ?? \"\";\n if (/not found/i.test(msg) || /no such key/i.test(msg)) return null;\n throw error;\n }\n const buffer = await data.arrayBuffer();\n return new Uint8Array(buffer);\n }\n async put(storagePath, data, contentType) {\n const transcoded = await transcodeImageIfNeeded(data, contentType, storagePath);\n const bucket = this.bucketFor(transcoded.path);\n const { error } = await this.client.storage.from(bucket).upload(transcoded.path, transcoded.data, {\n contentType: transcoded.contentType,\n // Objects are content-addressed (GUID/hash prefixes) and effectively\n // immutable, so let CDN/browser cache them for a year.\n cacheControl: \"31536000\",\n upsert: true\n });\n if (error) throw error;\n }\n async delete(storagePath) {\n const bucket = this.bucketFor(storagePath);\n const { error } = await this.client.storage.from(bucket).remove([storagePath]);\n if (error) throw error;\n }\n async deletePrefix(prefix) {\n await Promise.all([\n this.deletePrefixInBucket(this.publicBucket, prefix),\n this.deletePrefixInBucket(this.privateBucket, prefix)\n ]);\n }\n async deletePrefixInBucket(bucket, prefix) {\n const normalized = prefix.replace(/\\/+$/, \"\");\n const keys = await this.listAllKeys(bucket, normalized);\n if (keys.length === 0) return;\n for (let i = 0; i < keys.length; i += 1e3) {\n const slice = keys.slice(i, i + 1e3);\n const { error } = await this.client.storage.from(bucket).remove(slice);\n if (error) throw error;\n }\n }\n /**\n * Recursively list every key under a prefix. `storage-js`'s `list` API\n * only returns the immediate children of a \"folder\", so we DFS.\n */\n async listAllKeys(bucket, prefix) {\n const out = [];\n const stack = [prefix];\n while (stack.length > 0) {\n const dir = stack.pop();\n const { data, error } = await this.client.storage.from(bucket).list(dir, {\n limit: 1e3,\n sortBy: { column: \"name\", order: \"asc\" }\n });\n if (error) throw error;\n for (const entry of data ?? []) {\n const full = dir ? `${dir}/${entry.name}` : entry.name;\n if (entry.id === null) {\n stack.push(full);\n } else {\n out.push(full);\n }\n }\n }\n return out;\n }\n getPublicUrl(storagePath) {\n if (this.bucketFor(storagePath) === this.publicBucket) {\n return `${this.publicBaseUrl}/${storagePath}`;\n }\n return `${this.privateUrlPrefix}/${storagePath}`;\n }\n}\nfunction mapPostgrestError(e) {\n const pg = e;\n switch (pg?.code) {\n case \"PGRST116\":\n return new ProviderError(pg.message ?? \"Not found\", 404);\n case \"23505\":\n return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n case \"23503\":\n return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n }\n if (e instanceof Error) return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n const msg = obj.message ?? obj.details ?? obj.hint ?? \"Unknown Postgres error\";\n const err = new Error(obj.code ? `[${obj.code}] ${msg}` : msg);\n Object.assign(err, obj);\n return err;\n }\n return new Error(String(e));\n}\nfunction decodeCursor(cursor) {\n if (!cursor) return 0;\n const n = parseInt(cursor, 10);\n return Number.isFinite(n) && n >= 0 ? n : 0;\n}\nfunction encodeCursor(offset) {\n return String(offset);\n}\nfunction toRange(opts) {\n const limit = Math.min(Math.max(opts?.limit ?? DEFAULT_PAGE_LIMIT, 1), MAX_PAGE_LIMIT);\n const from = decodeCursor(opts?.cursor);\n return { from, to: from + limit - 1, limit };\n}\nfunction nextCursorFromRange(range, returnedCount, totalCount) {\n const consumed = range.from + returnedCount;\n if (totalCount != null) {\n return consumed < totalCount ? encodeCursor(consumed) : void 0;\n }\n return returnedCount >= range.limit ? encodeCursor(consumed) : void 0;\n}\nfunction orderColumn(orderBy) {\n switch (orderBy) {\n case \"name\":\n return \"name\";\n case \"updatedAt\":\n return \"updated_at\";\n case \"createdAt\":\n default:\n return \"created_at\";\n }\n}\nfunction stampUpdate(ctx) {\n return ctx.userId ? { updated_by: ctx.userId } : {};\n}\nfunction stampSoftDelete(ctx, fallbackActor = ctx.userId) {\n const stamp = auditSoftDelete(ctx, fallbackActor);\n const row = {\n deleted_at: stamp.deletedAt,\n updated_at: stamp.updatedAt\n };\n if (stamp.updatedBy) row.updated_by = stamp.updatedBy;\n return row;\n}\nconst ORG_COLUMNS = \"id, name, slug, owner_id, assets, created_by, updated_by, created_at, updated_at, deleted_at\";\nconst ORG_MEMBER_COLUMNS = \"org_id, user_id, role, permissions, joined_at, updated_at, updated_by, deleted_at\";\nclass SupabaseOrgStore {\n constructor(clients, events = new NoopEventSink()) {\n this.clients = clients;\n this.events = events;\n }\n clients;\n events;\n async listOrgs(ctx, opts) {\n const range = toRange(opts);\n const direction = opts?.orderDir ?? \"desc\";\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"orgs\").select(ORG_COLUMNS, { count: \"exact\" }).is(\"deleted_at\", null).order(orderColumn(opts?.orderBy), { ascending: direction === \"asc\" }).range(range.from, range.to);\n if (error) throw mapPostgrestError(error);\n const items = (data ?? []).map(rowToOrg);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getOrg(ctx, id) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"orgs\").select(ORG_COLUMNS).eq(\"id\", id).is(\"deleted_at\", null).maybeSingle();\n if (error) throw mapPostgrestError(error);\n return data ? rowToOrg(data) : null;\n }\n async getOrgBySlug(ctx, slug) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"orgs\").select(ORG_COLUMNS).eq(\"slug\", slug).is(\"deleted_at\", null).maybeSingle();\n if (error) throw mapPostgrestError(error);\n return data ? rowToOrg(data) : null;\n }\n async createOrg(ctx, org) {\n const client = this.clients.forRequest(ctx);\n const { error } = await client.from(\"orgs\").insert(orgToRow(org));\n if (error) throw mapPostgrestError(error);\n const { error: memberError } = await client.from(\"org_members\").upsert(\n {\n org_id: org.id,\n user_id: org.ownerId,\n role: \"owner\",\n permissions: [...DEFAULT_ORG_PERMISSIONS.owner],\n joined_at: (/* @__PURE__ */ new Date()).toISOString(),\n deleted_at: null\n },\n { onConflict: \"org_id,user_id\" }\n );\n if (memberError) throw mapPostgrestError(memberError);\n await this.events.emit({ type: \"org.created\", orgId: org.id, actorId: actorFrom(ctx) });\n }\n async updateOrg(ctx, id, patch) {\n const row = {};\n if (patch.name !== void 0) row.name = patch.name;\n if (patch.slug !== void 0) row.slug = patch.slug;\n if (patch.assets !== void 0) row.assets = patch.assets;\n if (Object.keys(row).length === 0) return;\n Object.assign(row, stampUpdate(ctx));\n const { error, data } = await this.clients.forRequest(ctx).from(\"orgs\").update(row).eq(\"id\", id).is(\"deleted_at\", null).select(\"id\");\n if (error) throw mapPostgrestError(error);\n if (!data || data.length === 0) throw new ProviderError(`Org '${id}' not found`, 404);\n }\n async deleteOrg(ctx, id) {\n const client = this.clients.forRequest(ctx);\n const stampRow = stampSoftDelete(ctx);\n const { error: orgErr, data: orgData } = await client.from(\"orgs\").update(stampRow).eq(\"id\", id).is(\"deleted_at\", null).select(\"id\");\n if (orgErr) throw mapPostgrestError(orgErr);\n if (!orgData || orgData.length === 0) throw new ProviderError(`Org '${id}' not found`, 404);\n const { error: omErr } = await client.from(\"org_members\").update(stampRow).eq(\"org_id\", id).is(\"deleted_at\", null);\n if (omErr) throw mapPostgrestError(omErr);\n const { data: orgProjects, error: projFetchErr } = await client.from(\"projects\").select(\"id\").eq(\"org_id\", id).is(\"deleted_at\", null);\n if (projFetchErr) throw mapPostgrestError(projFetchErr);\n const projectIds = (orgProjects ?? []).map((p) => p.id);\n const { error: projErr } = await client.from(\"projects\").update(stampRow).eq(\"org_id\", id).is(\"deleted_at\", null);\n if (projErr) throw mapPostgrestError(projErr);\n if (projectIds.length > 0) {\n const { error: pmErr } = await client.from(\"project_members\").update(stampRow).in(\"project_id\", projectIds).is(\"deleted_at\", null);\n if (pmErr) throw mapPostgrestError(pmErr);\n const { error: defErr } = await client.from(\"definitions\").update(stampRow).in(\"project_id\", projectIds).is(\"deleted_at\", null);\n if (defErr) throw mapPostgrestError(defErr);\n }\n const { error: invErr } = await client.from(\"invites\").delete().eq(\"org_id\", id);\n if (invErr) throw mapPostgrestError(invErr);\n const { error: cdErr } = await client.from(\"compute_server_org_defaults\").delete().eq(\"org_id\", id);\n if (cdErr) throw mapPostgrestError(cdErr);\n const { error: shErr } = await client.from(\"compute_server_shares\").delete().eq(\"org_id\", id);\n if (shErr) throw mapPostgrestError(shErr);\n const { error: csErr } = await client.from(\"compute_servers\").delete().eq(\"scope\", \"org\").eq(\"owner_org_id\", id);\n if (csErr) throw mapPostgrestError(csErr);\n await this.events.emit({ type: \"org.deleted\", orgId: id, actorId: actorFrom(ctx) });\n }\n // ============================================================================\n // Org members\n // ============================================================================\n async listOrgMembers(ctx, orgId, opts) {\n const range = toRange(opts);\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"org_members\").select(ORG_MEMBER_COLUMNS, { count: \"exact\" }).eq(\"org_id\", orgId).is(\"deleted_at\", null).order(\"joined_at\", { ascending: (opts?.orderDir ?? \"desc\") === \"asc\" }).range(range.from, range.to);\n if (error) throw mapPostgrestError(error);\n const items = (data ?? []).map(rowToOrgMember);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getOrgMember(ctx, orgId, userId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"org_members\").select(ORG_MEMBER_COLUMNS).eq(\"org_id\", orgId).eq(\"user_id\", userId).is(\"deleted_at\", null).maybeSingle();\n if (error) throw mapPostgrestError(error);\n return data ? rowToOrgMember(data) : null;\n }\n async findUserMembership(ctx, userId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"org_members\").select(`${ORG_MEMBER_COLUMNS}, org:orgs!inner(${ORG_COLUMNS})`).eq(\"user_id\", userId).is(\"deleted_at\", null).is(\"org.deleted_at\", null).order(\"joined_at\", { ascending: true }).limit(1).maybeSingle();\n if (error) throw mapPostgrestError(error);\n if (!data) return null;\n const row = data;\n const orgRow = Array.isArray(row.org) ? row.org[0] : row.org;\n if (!orgRow) return null;\n const { org: _omit, ...memberRow } = row;\n return {\n org: rowToOrg(orgRow),\n member: rowToOrgMember(memberRow)\n };\n }\n async addOrgMember(ctx, member) {\n const row = {\n ...memberToRow(member),\n deleted_at: null,\n ...stampUpdate(ctx)\n };\n const { error } = await this.clients.forRequest(ctx).from(\"org_members\").upsert(row, { onConflict: \"org_id,user_id\" });\n if (error) throw mapPostgrestError(error);\n await this.events.emit({\n type: \"org_member.added\",\n orgId: member.orgId,\n userId: member.userId,\n actorId: actorFrom(ctx)\n });\n }\n async updateOrgMemberRole(ctx, orgId, userId, role) {\n const row = {\n role,\n permissions: [...DEFAULT_ORG_PERMISSIONS[role]],\n ...stampUpdate(ctx)\n };\n const { data, error } = await this.clients.forRequest(ctx).from(\"org_members\").update(row).eq(\"org_id\", orgId).eq(\"user_id\", userId).is(\"deleted_at\", null).select(\"user_id\");\n if (error) throw mapPostgrestError(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Org member '${userId}' not found`, 404);\n await this.events.emit({\n type: \"org_member.role_changed\",\n orgId,\n userId,\n role,\n actorId: actorFrom(ctx)\n });\n }\n async updateOrgMemberPermissions(ctx, orgId, userId, permissions) {\n const row = { permissions: [...permissions], ...stampUpdate(ctx) };\n const { data, error } = await this.clients.forRequest(ctx).from(\"org_members\").update(row).eq(\"org_id\", orgId).eq(\"user_id\", userId).is(\"deleted_at\", null).select(\"user_id\");\n if (error) throw mapPostgrestError(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Org member '${userId}' not found`, 404);\n await this.events.emit({\n type: \"org_member.permissions_changed\",\n orgId,\n userId,\n permissions: [...permissions],\n actorId: actorFrom(ctx)\n });\n }\n async removeOrgMember(ctx, orgId, userId) {\n const client = this.clients.forRequest(ctx);\n const stampRow = stampSoftDelete(ctx);\n const { data: orgProjects, error: projError } = await client.from(\"projects\").select(\"id\").eq(\"org_id\", orgId).is(\"deleted_at\", null);\n if (projError) throw mapPostgrestError(projError);\n const projectIds = (orgProjects ?? []).map((p) => p.id);\n if (projectIds.length > 0) {\n const { error: pmError } = await client.from(\"project_members\").update(stampRow).in(\"project_id\", projectIds).eq(\"user_id\", userId).is(\"deleted_at\", null);\n if (pmError) throw mapPostgrestError(pmError);\n }\n const { error } = await client.from(\"org_members\").update(stampRow).eq(\"org_id\", orgId).eq(\"user_id\", userId).is(\"deleted_at\", null);\n if (error) throw mapPostgrestError(error);\n await this.events.emit({\n type: \"org_member.removed\",\n orgId,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n}\nfunction rowToOrg(row) {\n return {\n id: row.id,\n name: row.name,\n slug: row.slug,\n ownerId: row.owner_id,\n assets: row.assets ?? void 0,\n createdBy: row.created_by ?? row.owner_id,\n updatedBy: row.updated_by ?? row.owner_id,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n deletedAt: row.deleted_at ?? null\n };\n}\nfunction orgToRow(org) {\n return {\n id: org.id,\n name: org.name,\n slug: org.slug,\n owner_id: org.ownerId,\n assets: org.assets ?? null,\n created_by: org.createdBy,\n updated_by: org.updatedBy,\n created_at: org.createdAt,\n updated_at: org.updatedAt,\n deleted_at: org.deletedAt ?? null\n };\n}\nfunction rowToOrgMember(row) {\n return {\n orgId: row.org_id,\n userId: row.user_id,\n role: row.role,\n permissions: row.permissions ?? [],\n joinedAt: row.joined_at,\n updatedAt: row.updated_at ?? row.joined_at,\n updatedBy: row.updated_by ?? row.user_id,\n deletedAt: row.deleted_at ?? null\n };\n}\nfunction memberToRow(m) {\n return {\n org_id: m.orgId,\n user_id: m.userId,\n role: m.role,\n permissions: m.permissions ?? [],\n joined_at: m.joinedAt\n };\n}\nconst PROJECT_COLUMNS = \"id, org_id, name, slug, description, visibility, owner_id, created_by, updated_by, auto_join_on_upload, created_at, updated_at, deleted_at\";\nconst PROJECT_MEMBER_COLUMNS = \"project_id, user_id, role, joined_at, updated_at, updated_by, deleted_at\";\nclass SupabaseProjectStore {\n constructor(clients, events = new NoopEventSink()) {\n this.clients = clients;\n this.events = events;\n }\n clients;\n events;\n async listProjects(ctx, orgId, opts) {\n const range = toRange(opts);\n const direction = opts?.orderDir ?? \"desc\";\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"projects\").select(PROJECT_COLUMNS, { count: \"exact\" }).eq(\"org_id\", orgId).is(\"deleted_at\", null).order(orderColumn(opts?.orderBy), { ascending: direction === \"asc\" }).range(range.from, range.to);\n if (error) throw mapPostgrestError(error);\n const items = (data ?? []).map(rowToProject);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getProject(ctx, id) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"projects\").select(PROJECT_COLUMNS).eq(\"id\", id).is(\"deleted_at\", null).maybeSingle();\n if (error) throw mapPostgrestError(error);\n return data ? rowToProject(data) : null;\n }\n async getProjectBySlug(ctx, orgId, slug) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"projects\").select(PROJECT_COLUMNS).eq(\"org_id\", orgId).eq(\"slug\", slug).is(\"deleted_at\", null).maybeSingle();\n if (error) throw mapPostgrestError(error);\n return data ? rowToProject(data) : null;\n }\n async createProject(ctx, project) {\n const client = this.clients.forRequest(ctx);\n const { error } = await client.from(\"projects\").insert(projectToRow(project));\n if (error) throw mapPostgrestError(error);\n const { error: memberError } = await client.from(\"project_members\").upsert(\n {\n project_id: project.id,\n user_id: project.ownerId,\n role: \"owner\",\n joined_at: (/* @__PURE__ */ new Date()).toISOString(),\n deleted_at: null\n },\n { onConflict: \"project_id,user_id\" }\n );\n if (memberError) throw mapPostgrestError(memberError);\n await this.events.emit({\n type: \"project.created\",\n projectId: project.id,\n orgId: project.orgId,\n actorId: actorFrom(ctx)\n });\n }\n async updateProject(ctx, id, patch) {\n const row = {};\n if (patch.name !== void 0) row.name = patch.name;\n if (patch.slug !== void 0) row.slug = patch.slug;\n if (patch.description !== void 0) row.description = patch.description;\n if (patch.visibility !== void 0) row.visibility = patch.visibility;\n if (patch.autoJoinOnUpload !== void 0) row.auto_join_on_upload = patch.autoJoinOnUpload;\n if (Object.keys(row).length === 0) return;\n Object.assign(row, stampUpdate(ctx));\n const { data, error } = await this.clients.forRequest(ctx).from(\"projects\").update(row).eq(\"id\", id).is(\"deleted_at\", null).select(\"id\");\n if (error) throw mapPostgrestError(error);\n if (!data || data.length === 0) throw new ProviderError(`Project '${id}' not found`, 404);\n }\n async deleteProject(ctx, id) {\n const client = this.clients.forRequest(ctx);\n const stampRow = stampSoftDelete(ctx);\n const { data, error } = await client.from(\"projects\").update(stampRow).eq(\"id\", id).is(\"deleted_at\", null).select(\"id\");\n if (error) throw mapPostgrestError(error);\n if (!data || data.length === 0) throw new ProviderError(`Project '${id}' not found`, 404);\n const { error: pmErr } = await client.from(\"project_members\").update(stampRow).eq(\"project_id\", id).is(\"deleted_at\", null);\n if (pmErr) throw mapPostgrestError(pmErr);\n const { data: deletedDefs, error: defErr } = await client.from(\"definitions\").update(stampRow).eq(\"project_id\", id).is(\"deleted_at\", null).select(\"guid\");\n if (defErr) throw mapPostgrestError(defErr);\n for (const row of deletedDefs ?? []) {\n await this.events.emit({\n type: \"definition.deleted\",\n definitionId: row.guid,\n actorId: actorFrom(ctx)\n });\n }\n await this.events.emit({ type: \"project.deleted\", projectId: id, actorId: actorFrom(ctx) });\n }\n async reactivateProject(ctx, orgId, slug) {\n const client = this.clients.forRequest(ctx);\n const { data, error } = await client.from(\"projects\").update({ deleted_at: null }).eq(\"org_id\", orgId).eq(\"slug\", slug).not(\"deleted_at\", \"is\", null).select(PROJECT_COLUMNS).maybeSingle();\n if (error) throw mapPostgrestError(error);\n if (!data) return null;\n const { error: pmErr } = await client.from(\"project_members\").update({ deleted_at: null }).eq(\"project_id\", data.id).eq(\"user_id\", data.owner_id).not(\"deleted_at\", \"is\", null);\n if (pmErr) throw mapPostgrestError(pmErr);\n const project = rowToProject(data);\n await this.events.emit({\n type: \"project.created\",\n projectId: project.id,\n orgId: project.orgId,\n actorId: actorFrom(ctx)\n });\n return project;\n }\n // ============================================================================\n // Project members\n // ============================================================================\n async listProjectMembers(ctx, projectId, opts) {\n const range = toRange(opts);\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"project_members\").select(PROJECT_MEMBER_COLUMNS, { count: \"exact\" }).eq(\"project_id\", projectId).is(\"deleted_at\", null).order(\"joined_at\", { ascending: (opts?.orderDir ?? \"desc\") === \"asc\" }).range(range.from, range.to);\n if (error) throw mapPostgrestError(error);\n const items = (data ?? []).map(rowToProjectMember);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getProjectMember(ctx, projectId, userId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"project_members\").select(PROJECT_MEMBER_COLUMNS).eq(\"project_id\", projectId).eq(\"user_id\", userId).is(\"deleted_at\", null).maybeSingle();\n if (error) throw mapPostgrestError(error);\n return data ? rowToProjectMember(data) : null;\n }\n async addProjectMember(ctx, member) {\n const row = {\n ...projectMemberToRow(member),\n deleted_at: null,\n ...stampUpdate(ctx)\n };\n const { error } = await this.clients.forRequest(ctx).from(\"project_members\").upsert(row, { onConflict: \"project_id,user_id\" });\n if (error) throw mapPostgrestError(error);\n await this.events.emit({\n type: \"project_member.added\",\n projectId: member.projectId,\n userId: member.userId,\n actorId: actorFrom(ctx)\n });\n }\n async updateProjectMemberRole(ctx, projectId, userId, role) {\n const row = { role, ...stampUpdate(ctx) };\n const { data, error } = await this.clients.forRequest(ctx).from(\"project_members\").update(row).eq(\"project_id\", projectId).eq(\"user_id\", userId).is(\"deleted_at\", null).select(\"user_id\");\n if (error) throw mapPostgrestError(error);\n if (!data || data.length === 0)\n throw new ProviderError(`Project member '${userId}' not found`, 404);\n await this.events.emit({\n type: \"project_member.role_changed\",\n projectId,\n userId,\n role,\n actorId: actorFrom(ctx)\n });\n }\n async removeProjectMember(ctx, projectId, userId) {\n const { error } = await this.clients.forRequest(ctx).from(\"project_members\").update(stampSoftDelete(ctx)).eq(\"project_id\", projectId).eq(\"user_id\", userId).is(\"deleted_at\", null);\n if (error) throw mapPostgrestError(error);\n await this.events.emit({\n type: \"project_member.removed\",\n projectId,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n}\nfunction rowToProject(row) {\n return {\n id: row.id,\n orgId: row.org_id,\n name: row.name,\n slug: row.slug,\n description: row.description ?? void 0,\n visibility: row.visibility,\n ownerId: row.owner_id,\n createdBy: row.created_by ?? row.owner_id,\n updatedBy: row.updated_by ?? row.owner_id,\n autoJoinOnUpload: row.auto_join_on_upload ?? false,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n deletedAt: row.deleted_at ?? null\n };\n}\nfunction projectToRow(p) {\n return {\n id: p.id,\n org_id: p.orgId,\n name: p.name,\n slug: p.slug,\n description: p.description ?? null,\n visibility: p.visibility,\n owner_id: p.ownerId,\n created_by: p.createdBy,\n updated_by: p.updatedBy,\n auto_join_on_upload: p.autoJoinOnUpload,\n created_at: p.createdAt,\n updated_at: p.updatedAt,\n deleted_at: p.deletedAt ?? null\n };\n}\nfunction rowToProjectMember(row) {\n return {\n projectId: row.project_id,\n userId: row.user_id,\n role: row.role,\n joinedAt: row.joined_at,\n updatedAt: row.updated_at ?? row.joined_at,\n updatedBy: row.updated_by ?? row.user_id,\n deletedAt: row.deleted_at ?? null\n };\n}\nfunction projectMemberToRow(m) {\n return {\n project_id: m.projectId,\n user_id: m.userId,\n role: m.role,\n joined_at: m.joinedAt\n };\n}\nconst DEFINITION_COLUMNS = \"guid, project_id, owner_id, created_by, updated_by, compute_server_id, solve_cache_limit, display_name, description, category, tags, cover_image, status, run_count, next_version_number, live_version_id, draft_version_id, created_at, updated_at, deleted_at\";\nconst DEFINITION_VERSION_COLUMNS = \"id, definition_guid, version_number, file_ext, file_key, original_filename, uploaded_by, uploaded_at, change_note, schema, schema_extracted_at\";\nclass SupabaseDefinitionStore {\n constructor(clients, events = new NoopEventSink()) {\n this.clients = clients;\n this.events = events;\n }\n clients;\n events;\n // ============================================================================\n // Definitions\n // ============================================================================\n async list(ctx, opts) {\n return this.runList(ctx, void 0, opts);\n }\n async listByProject(ctx, projectId, opts) {\n return this.runList(ctx, { projectId }, opts);\n }\n async listPublic(ctx, opts) {\n return this.runList(ctx, { publicOnly: true, orgId: opts?.orgId }, opts);\n }\n async runList(ctx, filter, opts) {\n const range = toRange(opts);\n const direction = opts?.orderDir ?? \"desc\";\n const selectColumns = filter?.publicOnly ? `${DEFINITION_COLUMNS}, project:projects!inner(visibility, org_id)` : DEFINITION_COLUMNS;\n let query = this.clients.forRequest(ctx).from(\"definitions\").select(selectColumns, { count: \"exact\" }).is(\"deleted_at\", null);\n if (filter?.publicOnly) {\n query = query.eq(\"project.visibility\", \"public\");\n if (filter.orgId) query = query.eq(\"project.org_id\", filter.orgId);\n }\n if (filter?.projectId) query = query.eq(\"project_id\", filter.projectId);\n if (opts?.statuses?.length) {\n query = query.in(\"status\", opts.statuses);\n } else {\n const excluded = [];\n if (!opts?.includePending) excluded.push(\"pending\");\n if (!opts?.includeArchived) excluded.push(\"archived\");\n if (excluded.length) {\n query = query.not(\"status\", \"in\", `(${excluded.join(\",\")})`);\n }\n }\n query = query.order(definitionOrderColumn(opts?.orderBy), { ascending: direction === \"asc\" }).range(range.from, range.to);\n const { data, error, count } = await query;\n if (error) throw mapPostgrestError(error);\n const items = (data ?? []).map(rowToRecord);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async get(ctx, guid) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"definitions\").select(DEFINITION_COLUMNS).eq(\"guid\", guid).is(\"deleted_at\", null).maybeSingle();\n if (error) throw mapPostgrestError(error);\n return data ? rowToRecord(data) : null;\n }\n async create(ctx, record) {\n const { error } = await this.clients.forRequest(ctx).from(\"definitions\").insert(recordToRow(record));\n if (error) throw mapPostgrestError(error);\n await this.events.emit({\n type: \"definition.created\",\n definitionId: record.guid,\n projectId: record.projectId,\n actorId: actorFrom(ctx)\n });\n }\n async update(ctx, guid, patch) {\n const row = patchToRow(patch);\n if (Object.keys(row).length === 0) return;\n Object.assign(row, stampUpdate(ctx));\n const { data, error } = await this.clients.forRequest(ctx).from(\"definitions\").update(row).eq(\"guid\", guid).is(\"deleted_at\", null).select(\"guid\");\n if (error) throw mapPostgrestError(error);\n if (!data || data.length === 0) throw new ProviderError(`Definition '${guid}' not found`, 404);\n }\n async delete(ctx, guid) {\n const { error } = await this.clients.forRequest(ctx).from(\"definitions\").update(stampSoftDelete(ctx)).eq(\"guid\", guid).is(\"deleted_at\", null);\n if (error) throw mapPostgrestError(error);\n await this.events.emit({\n type: \"definition.deleted\",\n definitionId: guid,\n actorId: actorFrom(ctx)\n });\n }\n async deleteByProject(ctx, projectId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"definitions\").update(stampSoftDelete(ctx)).eq(\"project_id\", projectId).is(\"deleted_at\", null).select(\"guid\");\n if (error) throw mapPostgrestError(error);\n for (const row of data ?? []) {\n await this.events.emit({\n type: \"definition.deleted\",\n definitionId: row.guid,\n actorId: actorFrom(ctx)\n });\n }\n }\n async incrementSolveCount(ctx, guid) {\n const { error } = await this.clients.forRequest(ctx).rpc(\"increment_run_count\", { g: guid });\n if (error) throw mapPostgrestError(error);\n }\n async reserveNextVersionNumber(ctx, guid) {\n const { data, error } = await this.clients.forRequest(ctx).rpc(\"reserve_next_version_number\", { g: guid });\n if (error) throw mapPostgrestError(error);\n if (typeof data !== \"number\") {\n throw new ProviderError(`Definition '${guid}' not found`, 404);\n }\n return data;\n }\n // ============================================================================\n // Versions (spec §6)\n // ============================================================================\n async createVersion(ctx, version) {\n const { error } = await this.clients.forRequest(ctx).from(\"definition_versions\").insert(versionToRow(version));\n if (error) throw mapPostgrestError(error);\n await this.events.emit({\n type: \"definition_version.created\",\n versionId: version.id,\n definitionId: version.definitionId,\n actorId: actorFrom(ctx)\n });\n }\n async listVersions(ctx, definitionId, opts) {\n const range = toRange(opts);\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"definition_versions\").select(DEFINITION_VERSION_COLUMNS, { count: \"exact\" }).eq(\"definition_guid\", definitionId).order(\"version_number\", { ascending: false }).range(range.from, range.to);\n if (error) throw mapPostgrestError(error);\n const items = (data ?? []).map(rowToVersion);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getVersion(ctx, versionId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"definition_versions\").select(DEFINITION_VERSION_COLUMNS).eq(\"id\", versionId).maybeSingle();\n if (error) throw mapPostgrestError(error);\n return data ? rowToVersion(data) : null;\n }\n async setVersionSchema(ctx, versionId, schema) {\n const { error } = await this.clients.forRequest(ctx).from(\"definition_versions\").update({ schema, schema_extracted_at: (/* @__PURE__ */ new Date()).toISOString() }).eq(\"id\", versionId);\n if (error) throw mapPostgrestError(error);\n }\n async deleteVersion(ctx, versionId) {\n const { error } = await this.clients.forRequest(ctx).from(\"definition_versions\").delete().eq(\"id\", versionId);\n if (error) throw mapPostgrestError(error);\n await this.events.emit({\n type: \"definition_version.deleted\",\n versionId,\n actorId: actorFrom(ctx)\n });\n }\n async setLiveVersion(ctx, definitionId, versionId) {\n await this.repointChannel(ctx, definitionId, versionId, \"live_version_id\");\n await this.events.emit({\n type: \"definition.published\",\n definitionId,\n versionId,\n actorId: actorFrom(ctx)\n });\n }\n async setDraftVersion(ctx, definitionId, versionId) {\n await this.repointChannel(ctx, definitionId, versionId, \"draft_version_id\");\n }\n async attachInitialVersion(ctx, definitionId, versionId) {\n const client = this.clients.forRequest(ctx);\n const { data: version, error: vError } = await client.from(\"definition_versions\").select(\"id, definition_guid\").eq(\"id\", versionId).maybeSingle();\n if (vError) throw mapPostgrestError(vError);\n if (!version || version.definition_guid !== definitionId) {\n throw new ProviderError(`Version '${versionId}' not found for this definition`, 404);\n }\n const row = {\n live_version_id: versionId,\n draft_version_id: versionId,\n status: \"draft\",\n ...stampUpdate(ctx)\n };\n const { data, error } = await client.from(\"definitions\").update(row).eq(\"guid\", definitionId).is(\"deleted_at\", null).select(\"guid\");\n if (error) throw mapPostgrestError(error);\n if (!data || data.length === 0) {\n throw new ProviderError(`Definition '${definitionId}' not found`, 404);\n }\n }\n async repointChannel(ctx, definitionId, versionId, column) {\n const client = this.clients.forRequest(ctx);\n const { data: version, error: vError } = await client.from(\"definition_versions\").select(\"id, definition_guid\").eq(\"id\", versionId).maybeSingle();\n if (vError) throw mapPostgrestError(vError);\n if (!version || version.definition_guid !== definitionId) {\n throw new ProviderError(`Version '${versionId}' not found for this definition`, 404);\n }\n const row = { [column]: versionId, ...stampUpdate(ctx) };\n const { data, error } = await client.from(\"definitions\").update(row).eq(\"guid\", definitionId).is(\"deleted_at\", null).select(\"guid\");\n if (error) throw mapPostgrestError(error);\n if (!data || data.length === 0) {\n throw new ProviderError(`Definition '${definitionId}' not found`, 404);\n }\n }\n}\nfunction rowToRecord(row) {\n return {\n guid: row.guid,\n projectId: row.project_id,\n ownerId: row.owner_id,\n createdBy: row.created_by ?? row.owner_id,\n updatedBy: row.updated_by ?? row.owner_id,\n liveVersionId: row.live_version_id,\n draftVersionId: row.draft_version_id,\n computeServerId: row.compute_server_id ?? void 0,\n solveCacheLimit: row.solve_cache_limit == null ? void 0 : typeof row.solve_cache_limit === \"string\" ? Number(row.solve_cache_limit) : row.solve_cache_limit,\n displayName: row.display_name,\n description: row.description ?? void 0,\n category: row.category ?? void 0,\n tags: row.tags ?? void 0,\n coverImage: row.cover_image ?? void 0,\n status: row.status,\n solveCount: typeof row.run_count === \"string\" ? Number(row.run_count) : row.run_count,\n nextVersionNumber: typeof row.next_version_number === \"string\" ? Number(row.next_version_number) : row.next_version_number,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n deletedAt: row.deleted_at ?? null\n };\n}\nfunction recordToRow(r) {\n const row = {\n guid: r.guid,\n project_id: r.projectId,\n owner_id: r.ownerId,\n created_by: r.createdBy,\n updated_by: r.updatedBy,\n live_version_id: r.liveVersionId,\n draft_version_id: r.draftVersionId,\n compute_server_id: r.computeServerId ?? null,\n solve_cache_limit: r.solveCacheLimit ?? null,\n display_name: r.displayName,\n description: r.description ?? null,\n category: r.category ?? null,\n cover_image: r.coverImage ?? null,\n status: r.status,\n run_count: r.solveCount,\n next_version_number: r.nextVersionNumber,\n created_at: r.createdAt,\n updated_at: r.updatedAt,\n deleted_at: r.deletedAt ?? null\n };\n if (r.tags !== void 0) row.tags = r.tags;\n return row;\n}\nfunction patchToRow(patch) {\n const row = {};\n if (patch.displayName !== void 0) row.display_name = patch.displayName;\n if (patch.description !== void 0) row.description = patch.description;\n if (patch.category !== void 0) row.category = patch.category;\n if (patch.tags !== void 0) row.tags = patch.tags;\n if (patch.coverImage !== void 0) row.cover_image = patch.coverImage;\n if (patch.projectId !== void 0) row.project_id = patch.projectId;\n if (patch.computeServerId !== void 0) row.compute_server_id = patch.computeServerId;\n if (patch.solveCacheLimit !== void 0) row.solve_cache_limit = patch.solveCacheLimit;\n if (patch.status !== void 0) row.status = patch.status;\n if (patch.ownerId !== void 0) row.owner_id = patch.ownerId;\n return row;\n}\nfunction rowToVersion(row) {\n return {\n id: row.id,\n definitionId: row.definition_guid,\n versionNumber: row.version_number,\n fileExt: row.file_ext,\n fileKey: row.file_key,\n originalFilename: row.original_filename ?? void 0,\n uploadedBy: row.uploaded_by,\n uploadedAt: row.uploaded_at,\n changeNote: row.change_note ?? void 0,\n schema: row.schema ?? void 0,\n schemaExtractedAt: row.schema_extracted_at ?? void 0\n };\n}\nfunction versionToRow(v) {\n const row = {\n id: v.id,\n definition_guid: v.definitionId,\n version_number: v.versionNumber,\n file_ext: v.fileExt,\n file_key: v.fileKey,\n original_filename: v.originalFilename ?? null,\n uploaded_by: v.uploadedBy,\n uploaded_at: v.uploadedAt\n };\n if (v.changeNote !== void 0) row.change_note = v.changeNote;\n if (v.schema !== void 0) row.schema = v.schema;\n if (v.schemaExtractedAt !== void 0) row.schema_extracted_at = v.schemaExtractedAt;\n return row;\n}\nfunction definitionOrderColumn(orderBy) {\n switch (orderBy) {\n case \"name\":\n return \"display_name\";\n case \"solveCount\":\n return \"run_count\";\n case \"updatedAt\":\n return \"updated_at\";\n case \"createdAt\":\n default:\n return \"created_at\";\n }\n}\nconst INVITE_COLUMNS = \"id, token_hash, email, org_id, org_role, org_permissions, invited_by, created_at, expires_at, accepted_at, accepted_by_user_id\";\nclass SupabaseInviteStore {\n constructor(clients, events = new NoopEventSink()) {\n this.clients = clients;\n this.events = events;\n }\n clients;\n events;\n async create(ctx, invite) {\n const { error } = await this.clients.forRequest(ctx).from(\"invites\").insert(inviteToRow(invite));\n if (error) throw mapPostgrestError(error);\n await this.events.emit({\n type: \"invite.created\",\n inviteId: invite.id,\n orgId: invite.orgId,\n email: invite.email,\n actorId: actorFrom(ctx)\n });\n }\n async getByTokenHash(ctx, tokenHash) {\n const { data, error } = await this.clients.forRequest(ctx).rpc(\"get_invite_by_token_hash\", { h: tokenHash });\n if (error) throw mapPostgrestError(error);\n const row = Array.isArray(data) ? data[0] : data;\n return row ? rowToInvite(row) : null;\n }\n async listByOrg(ctx, orgId, opts) {\n const range = toRange(opts);\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"invites\").select(INVITE_COLUMNS, { count: \"exact\" }).eq(\"org_id\", orgId).order(\"created_at\", { ascending: (opts?.orderDir ?? \"desc\") === \"asc\" }).range(range.from, range.to);\n if (error) throw mapPostgrestError(error);\n const items = (data ?? []).map(rowToInvite);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async markAccepted(ctx, id, userId) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"invites\").update({ accepted_at: (/* @__PURE__ */ new Date()).toISOString(), accepted_by_user_id: userId }).eq(\"id\", id).is(\"accepted_at\", null).select(\"org_id\");\n if (error) throw mapPostgrestError(error);\n const row = data?.[0];\n if (!row) return;\n await this.events.emit({\n type: \"invite.accepted\",\n inviteId: id,\n orgId: row.org_id,\n userId,\n actorId: actorFrom(ctx)\n });\n }\n async revoke(ctx, id) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"invites\").delete().eq(\"id\", id).is(\"accepted_at\", null).select(\"org_id\");\n if (error) throw mapPostgrestError(error);\n const row = data?.[0];\n if (!row) return;\n await this.events.emit({\n type: \"invite.revoked\",\n inviteId: id,\n orgId: row.org_id,\n actorId: actorFrom(ctx)\n });\n }\n async deleteByOrg(ctx, orgId) {\n const { error } = await this.clients.forRequest(ctx).from(\"invites\").delete().eq(\"org_id\", orgId);\n if (error) throw mapPostgrestError(error);\n }\n}\nfunction rowToInvite(row) {\n return {\n id: row.id,\n tokenHash: row.token_hash,\n email: row.email,\n orgId: row.org_id,\n orgRole: row.org_role,\n orgPermissions: row.org_permissions,\n invitedBy: row.invited_by,\n createdAt: row.created_at,\n expiresAt: row.expires_at,\n acceptedAt: row.accepted_at ?? void 0,\n acceptedByUserId: row.accepted_by_user_id ?? void 0\n };\n}\nfunction inviteToRow(i) {\n return {\n id: i.id,\n token_hash: i.tokenHash,\n email: i.email,\n org_id: i.orgId,\n org_role: i.orgRole,\n org_permissions: i.orgPermissions,\n invited_by: i.invitedBy,\n created_at: i.createdAt,\n expires_at: i.expiresAt,\n accepted_at: i.acceptedAt ?? null,\n accepted_by_user_id: i.acceptedByUserId ?? null\n };\n}\nconst SERVER_COLUMNS = \"id, scope, owner_org_id, shared_with_all, label, server_url, api_key, timeout_ms, retry_count\";\nconst SHARE_COLUMNS = \"server_id, org_id\";\nconst ORG_DEFAULT_COLUMNS = \"org_id, default_server_id\";\nclass SupabaseComputeServerStore {\n /**\n * `secretKey` (from `SELVA_AT_REST_KEY`) encrypts `api_key` before it is\n * written to `compute_servers.api_key` and decrypts it on read, so the\n * Rhino.Compute credential never sits in the DB as plaintext — matching the\n * local provider's on-disk envelope. Optional only for legacy construction\n * paths (tests that never touch apiKeys); a store built without a key throws\n * if asked to write or read a secret. Wire it via `SupabaseDataProvider`.\n */\n constructor(clients, secretKey) {\n this.clients = clients;\n this.secretKey = secretKey;\n }\n clients;\n secretKey;\n async getConfig(ctx) {\n const client = this.clients.forRequest(ctx);\n const [serversRes, sharesRes, orgDefRes, platDefRes] = await Promise.all([\n client.from(\"compute_servers\").select(SERVER_COLUMNS),\n client.from(\"compute_server_shares\").select(SHARE_COLUMNS),\n client.from(\"compute_server_org_defaults\").select(ORG_DEFAULT_COLUMNS),\n client.from(\"compute_server_platform_default\").select(\"default_server_id\").eq(\"singleton\", true).maybeSingle()\n ]);\n if (serversRes.error) throw mapPostgrestError(serversRes.error);\n if (sharesRes.error) throw mapPostgrestError(sharesRes.error);\n if (orgDefRes.error) throw mapPostgrestError(orgDefRes.error);\n if (platDefRes.error) throw mapPostgrestError(platDefRes.error);\n const sharedByServer = /* @__PURE__ */ new Map();\n for (const row of sharesRes.data ?? []) {\n const list = sharedByServer.get(row.server_id) ?? [];\n list.push(row.org_id);\n sharedByServer.set(row.server_id, list);\n }\n const servers = (serversRes.data ?? []).map(\n (row) => rowToServer(this.decryptRowApiKey(row), sharedByServer)\n );\n const orgDefaults = {};\n for (const row of orgDefRes.data ?? []) {\n if (row.default_server_id) orgDefaults[row.org_id] = row.default_server_id;\n }\n return {\n servers,\n defaultServerId: platDefRes.data?.default_server_id ?? void 0,\n orgDefaults\n };\n }\n async savePlatformServers(ctx, servers, defaultServerId) {\n const client = this.clients.forRequest(ctx);\n const platformOnly = servers.filter(isPlatformServer);\n const { error: delErr } = await client.from(\"compute_servers\").delete().eq(\"scope\", \"platform\");\n if (delErr) throw mapPostgrestError(delErr);\n if (platformOnly.length > 0) {\n const { error: insErr } = await client.from(\"compute_servers\").insert(platformOnly.map((s) => serverToRow(this.encryptServerApiKey(s))));\n if (insErr) throw mapPostgrestError(insErr);\n const shareRows = platformOnly.flatMap(\n (s) => s.sharedWith === \"all\" ? [] : s.sharedWith.map((orgId) => ({ server_id: s.id, org_id: orgId }))\n );\n if (shareRows.length > 0) {\n const { error: shErr } = await client.from(\"compute_server_shares\").insert(shareRows);\n if (shErr) throw mapPostgrestError(shErr);\n }\n }\n const { error: defErr } = await client.from(\"compute_server_platform_default\").update({ default_server_id: defaultServerId ?? null }).eq(\"singleton\", true);\n if (defErr) throw mapPostgrestError(defErr);\n }\n async saveOrgServers(ctx, orgId, servers, defaultServerId) {\n const client = this.clients.forRequest(ctx);\n const orgOnly = servers.filter(isOrgServer).map((s) => ({ ...s, ownerOrgId: orgId }));\n const { error: delErr } = await client.from(\"compute_servers\").delete().eq(\"scope\", \"org\").eq(\"owner_org_id\", orgId);\n if (delErr) throw mapPostgrestError(delErr);\n if (orgOnly.length > 0) {\n const { error: insErr } = await client.from(\"compute_servers\").insert(orgOnly.map((s) => serverToRow(this.encryptServerApiKey(s))));\n if (insErr) throw mapPostgrestError(insErr);\n }\n if (defaultServerId === null) {\n const { error } = await client.from(\"compute_server_org_defaults\").delete().eq(\"org_id\", orgId);\n if (error) throw mapPostgrestError(error);\n } else if (typeof defaultServerId === \"string\") {\n const { error } = await client.from(\"compute_server_org_defaults\").upsert({ org_id: orgId, default_server_id: defaultServerId });\n if (error) throw mapPostgrestError(error);\n }\n }\n async setOrgDefault(ctx, orgId, serverId) {\n const client = this.clients.forRequest(ctx);\n if (serverId === null) {\n const { error: error2 } = await client.from(\"compute_server_org_defaults\").delete().eq(\"org_id\", orgId);\n if (error2) throw mapPostgrestError(error2);\n return;\n }\n const { error } = await client.from(\"compute_server_org_defaults\").upsert({ org_id: orgId, default_server_id: serverId });\n if (error) throw mapPostgrestError(error);\n }\n async deleteByOrg(ctx, orgId) {\n const client = this.clients.forRequest(ctx);\n const { error: defErr } = await client.from(\"compute_server_org_defaults\").delete().eq(\"org_id\", orgId);\n if (defErr) throw mapPostgrestError(defErr);\n const { error: srvErr } = await client.from(\"compute_servers\").delete().eq(\"scope\", \"org\").eq(\"owner_org_id\", orgId);\n if (srvErr) throw mapPostgrestError(srvErr);\n const { error: shErr } = await client.from(\"compute_server_shares\").delete().eq(\"org_id\", orgId);\n if (shErr) throw mapPostgrestError(shErr);\n }\n // ==========================================================================\n // At-rest secret handling\n // ==========================================================================\n /**\n * Encrypt a server's `apiKey` before it is written to the DB. Idempotent —\n * an already-enveloped value is passed through, so a round-trip (read →\n * save) never double-encrypts. Throws if the store was built without a key\n * but a real secret needs writing, so we never silently persist plaintext.\n */\n encryptServerApiKey(s) {\n if (!s.apiKey) return s;\n if (isEncryptedSecret(s.apiKey)) return s;\n if (!this.secretKey) {\n throw new Error(\n \"Cannot store a compute-server apiKey: SELVA_AT_REST_KEY is not configured. Set it so secrets are encrypted at rest.\"\n );\n }\n return { ...s, apiKey: encryptSecret(s.apiKey, this.secretKey) };\n }\n /**\n * Decrypt a row's `api_key` on read. Tolerant, mirroring the local provider:\n * a row whose ciphertext can't be authenticated under the current key is\n * returned with `api_key: null` and a warning logged, so the page keeps\n * rendering (solves against that server fail later at Rhino.Compute). A\n * plaintext value that predates encryption is passed through unchanged and\n * surfaced by `verifySecrets()` — never silently dropped.\n */\n decryptRowApiKey(row) {\n if (!row.api_key) return row;\n if (!isEncryptedSecret(row.api_key)) {\n console.warn(\n `[selva] compute_servers row \"${row.label}\" (${row.id}) has a plaintext api_key. Re-save it via /admin/compute so it is stored encrypted.`\n );\n return row;\n }\n if (!this.secretKey) {\n console.warn(\n `[selva] Cannot decrypt api_key for compute server \"${row.label}\" (${row.id}): SELVA_AT_REST_KEY is not configured. Returning without a key; solves will fail.`\n );\n return { ...row, api_key: null };\n }\n try {\n return { ...row, api_key: decryptSecret(row.api_key, this.secretKey) };\n } catch (cause) {\n console.warn(\n `[selva] Could not decrypt api_key for compute server \"${row.label}\" (${row.id}). The stored ciphertext does not match the current SELVA_AT_REST_KEY. This server will be returned without an apiKey; solves against it will fail. Re-enter the key via /admin/compute, or restore the original SELVA_AT_REST_KEY.`,\n cause\n );\n return { ...row, api_key: null };\n }\n }\n /**\n * Boot-time integrity check over every `compute_servers` row. Uses the\n * service client (no request context at boot) to read raw ciphertext, then\n * attempts to decrypt each `api_key`. Does NOT throw — returns a structured\n * report for boot health to drive `/api/health`.\n */\n async verifySecrets() {\n const { data, error } = await this.clients.serviceClient.from(\"compute_servers\").select(\"id, label, api_key\");\n if (error) throw mapPostgrestError(error);\n const failures = [];\n let plaintextFound = false;\n for (const row of data ?? []) {\n const apiKey = row.api_key;\n const id = row.id;\n const label = row.label;\n if (!apiKey) continue;\n if (!isEncryptedSecret(apiKey)) {\n plaintextFound = true;\n failures.push({ serverId: id, serverLabel: label, reason: \"plaintext_on_disk\" });\n continue;\n }\n if (!this.secretKey) {\n failures.push({\n serverId: id,\n serverLabel: label,\n reason: \"key_mismatch\",\n cause: \"SELVA_AT_REST_KEY is not configured\"\n });\n continue;\n }\n try {\n decryptSecret(apiKey, this.secretKey);\n } catch (cause) {\n failures.push({\n serverId: id,\n serverLabel: label,\n reason: \"key_mismatch\",\n cause: cause instanceof Error ? cause.message : String(cause)\n });\n }\n }\n return { ok: failures.length === 0, failures, plaintextFound };\n }\n}\nfunction rowToServer(row, sharedByServer) {\n const common = {\n id: row.id,\n label: row.label,\n serverUrl: row.server_url,\n apiKey: row.api_key ?? void 0,\n timeoutMs: row.timeout_ms ?? void 0,\n retryCount: row.retry_count ?? void 0\n };\n if (row.scope === \"platform\") {\n return {\n ...common,\n scope: \"platform\",\n sharedWith: row.shared_with_all ? \"all\" : sharedByServer.get(row.id) ?? []\n };\n }\n if (!row.owner_org_id) {\n throw new Error(`compute_servers row ${row.id} has scope='org' but null owner_org_id`);\n }\n return { ...common, scope: \"org\", ownerOrgId: row.owner_org_id };\n}\nfunction serverToRow(s) {\n const base = {\n id: s.id,\n label: s.label,\n server_url: s.serverUrl,\n api_key: s.apiKey ?? null,\n timeout_ms: s.timeoutMs ?? null,\n retry_count: s.retryCount ?? null\n };\n if (isPlatformServer(s)) {\n return {\n ...base,\n scope: \"platform\",\n owner_org_id: null,\n shared_with_all: s.sharedWith === \"all\"\n };\n }\n return {\n ...base,\n scope: \"org\",\n owner_org_id: s.ownerOrgId,\n shared_with_all: false\n };\n}\nconst SHARE_LINK_COLUMNS = \"id, definition_guid, channel, token_hash, name, created_by, created_at, expires_at, revoked_at, allow_solve, max_solves, solve_count\";\nclass SupabaseShareLinkStore {\n constructor(clients, events = new NoopEventSink()) {\n this.clients = clients;\n this.events = events;\n }\n clients;\n events;\n async create(ctx, link) {\n const { error } = await this.clients.forRequest(ctx).from(\"share_links\").insert(linkToRow(link));\n if (error) throw mapPostgrestError(error);\n await this.events.emit({\n type: \"share_link.minted\",\n linkId: link.id,\n definitionId: link.definitionId,\n actorId: actorFrom(ctx)\n });\n }\n async listByDefinition(ctx, definitionId, opts) {\n const range = toRange(opts);\n const { data, error, count } = await this.clients.forRequest(ctx).from(\"share_links\").select(SHARE_LINK_COLUMNS, { count: \"exact\" }).eq(\"definition_guid\", definitionId).is(\"revoked_at\", null).order(\"created_at\", { ascending: false }).range(range.from, range.to);\n if (error) throw mapPostgrestError(error);\n const items = (data ?? []).map(rowToLink);\n return { items, nextCursor: nextCursorFromRange(range, items.length, count) };\n }\n async getById(ctx, id) {\n const { data, error } = await this.clients.forRequest(ctx).from(\"share_links\").select(SHARE_LINK_COLUMNS).eq(\"id\", id).maybeSingle();\n if (error) throw mapPostgrestError(error);\n return data ? rowToLink(data) : null;\n }\n async getByTokenHash(_ctx, tokenHash) {\n const { data, error } = await this.clients.serviceClient.from(\"share_links\").select(`${SHARE_LINK_COLUMNS}, definitions!inner(deleted_at)`).eq(\"token_hash\", tokenHash).is(\"revoked_at\", null).is(\"definitions.deleted_at\", null).maybeSingle();\n if (error) throw mapPostgrestError(error);\n return data ? rowToLink(data) : null;\n }\n async revoke(ctx, id) {\n const { error } = await this.clients.forRequest(ctx).from(\"share_links\").update({ revoked_at: (/* @__PURE__ */ new Date()).toISOString() }).eq(\"id\", id).is(\"revoked_at\", null);\n if (error) throw mapPostgrestError(error);\n await this.events.emit({ type: \"share_link.revoked\", linkId: id, actorId: actorFrom(ctx) });\n }\n async tryIncrementSolveCount(_ctx, id) {\n const { data, error } = await this.clients.serviceClient.rpc(\n \"try_increment_share_link_solve_count\",\n { link_id: id }\n );\n if (error) throw mapPostgrestError(error);\n return typeof data === \"number\" ? data : null;\n }\n}\nfunction rowToLink(row) {\n return {\n id: row.id,\n definitionId: row.definition_guid,\n channel: row.channel,\n tokenHash: row.token_hash,\n name: row.name ?? void 0,\n createdBy: row.created_by,\n createdAt: row.created_at,\n expiresAt: row.expires_at,\n revokedAt: row.revoked_at,\n allowSolve: row.allow_solve,\n maxSolves: row.max_solves,\n solveCount: row.solve_count\n };\n}\nfunction linkToRow(l) {\n return {\n id: l.id,\n definition_guid: l.definitionId,\n channel: l.channel,\n token_hash: l.tokenHash,\n name: l.name ?? null,\n created_by: l.createdBy,\n created_at: l.createdAt,\n expires_at: l.expiresAt ?? null,\n revoked_at: l.revokedAt ?? null,\n allow_solve: l.allowSolve,\n max_solves: l.maxSolves ?? null,\n solve_count: l.solveCount\n };\n}\nconst EXPECTED_MIGRATION_HEAD = \"20260713140000\";\nconst DEFAULT_SCHEMA = \"selva\";\nfunction buildClientBundle(opts) {\n const serviceBySchema = /* @__PURE__ */ new Map();\n const anonBySchema = /* @__PURE__ */ new Map();\n function serviceFor(schema) {\n let client = serviceBySchema.get(schema);\n if (!client) {\n client = createClient(opts.supabaseUrl, opts.serviceRoleKey, {\n db: { schema },\n auth: { persistSession: false, autoRefreshToken: false }\n });\n serviceBySchema.set(schema, client);\n }\n return client;\n }\n function anonFor(schema) {\n let client = anonBySchema.get(schema);\n if (!client) {\n client = createClient(opts.supabaseUrl, opts.anonKey, {\n db: { schema },\n auth: { persistSession: false, autoRefreshToken: false }\n });\n anonBySchema.set(schema, client);\n }\n return client;\n }\n const serviceClient = serviceFor(DEFAULT_SCHEMA);\n const perRequestCache = /* @__PURE__ */ new WeakMap();\n return {\n serviceClient,\n forRequest(ctx, forOpts) {\n const schema = forOpts?.schema ?? DEFAULT_SCHEMA;\n if (ctx.system) return serviceFor(schema);\n const token = extractSessionToken(ctx.adapterContext);\n if (!token) return anonFor(schema);\n let bySchema = perRequestCache.get(ctx);\n if (!bySchema) {\n bySchema = /* @__PURE__ */ new Map();\n perRequestCache.set(ctx, bySchema);\n }\n const cached = bySchema.get(schema);\n if (cached) return cached;\n const client = createClient(opts.supabaseUrl, opts.anonKey, {\n db: { schema },\n auth: { persistSession: false, autoRefreshToken: false },\n global: {\n headers: { Authorization: `Bearer ${token}` }\n }\n });\n bySchema.set(schema, client);\n return client;\n }\n };\n}\nfunction clientBundleFromEnv(env) {\n const supabaseUrl = env.SUPABASE_URL;\n const anonKey = env.SUPABASE_ANON_KEY;\n const serviceRoleKey = env.SUPABASE_SERVICE_ROLE_KEY;\n if (!supabaseUrl) throw new Error(\"Missing required env var: SUPABASE_URL\");\n if (!anonKey) throw new Error(\"Missing required env var: SUPABASE_ANON_KEY\");\n if (!serviceRoleKey) throw new Error(\"Missing required env var: SUPABASE_SERVICE_ROLE_KEY\");\n return buildClientBundle({ supabaseUrl, anonKey, serviceRoleKey });\n}\nfunction extractSessionToken(adapterContext) {\n if (!adapterContext || typeof adapterContext !== \"object\") return void 0;\n const maybe = adapterContext.sessionToken;\n return typeof maybe === \"string\" && maybe.length > 0 ? maybe : void 0;\n}\nclass SupabaseEventSink {\n constructor(clients) {\n this.clients = clients;\n }\n clients;\n async emit(event) {\n try {\n const { error } = await this.clients.serviceClient.from(\"audit_events\").insert({\n type: event.type,\n actor_id: event.actorId,\n data: event\n });\n if (error) {\n console.error(\"[SupabaseEventSink] insert failed:\", error.message, { event });\n }\n } catch (err) {\n console.error(\"[SupabaseEventSink] unexpected error:\", err, { event });\n }\n }\n}\nclass SupabaseSolveMetricSink {\n constructor(clients) {\n this.clients = clients;\n }\n clients;\n async record(_ctx, metric) {\n try {\n const { error } = await this.clients.serviceClient.from(\"solve_metrics\").insert({\n actor_id: _ctx.userId || \"system\",\n definition_url: metric.definitionUrl,\n definition_id: metric.definitionId,\n version_id: metric.versionId,\n channel: metric.channel,\n org_id: metric.orgId,\n duration_ms: metric.durationMs,\n ok: metric.ok,\n failure_kind: metric.failureKind,\n error_count: metric.errorCount,\n warning_count: metric.warningCount\n });\n if (error) {\n console.error(\"[SupabaseSolveMetricSink] insert failed:\", error.message, { metric });\n }\n } catch (err) {\n console.error(\"[SupabaseSolveMetricSink] unexpected error:\", err, { metric });\n }\n }\n}\nconst MAX_LIMIT = 200;\nconst DEFAULT_LIMIT = 100;\nconst ISO_RE = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:?\\d{2})$/;\nconst UUID_RE = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\nclass SupabaseAuditQuery {\n constructor(clients) {\n this.clients = clients;\n }\n clients;\n async list(_ctx, filters) {\n const limit = clampLimit(filters.limit);\n let q = this.clients.serviceClient.from(\"audit_events\").select(\"id, type, actor_id, occurred_at, data\").order(\"occurred_at\", { ascending: false }).order(\"id\", { ascending: false }).limit(limit + 1);\n if (filters.types && filters.types.length > 0) {\n q = q.in(\"type\", [...filters.types]);\n }\n if (filters.actorId) {\n q = q.eq(\"actor_id\", filters.actorId);\n }\n if (filters.sinceIso) {\n q = q.gte(\"occurred_at\", filters.sinceIso);\n }\n if (filters.untilIso) {\n q = q.lte(\"occurred_at\", filters.untilIso);\n }\n if (filters.cursor) {\n const ts = filters.cursor.occurredAt;\n const id = filters.cursor.id;\n if (!ISO_RE.test(ts) || !UUID_RE.test(id)) {\n throw new Error(\"audit_events query: malformed cursor\");\n }\n q = q.or(`occurred_at.lt.${ts},and(occurred_at.eq.${ts},id.lt.${id})`);\n }\n const { data, error } = await q;\n if (error) {\n throw new Error(`audit_events query failed: ${error.message}`);\n }\n const fetched = data ?? [];\n const hasMore = fetched.length > limit;\n const page = hasMore ? fetched.slice(0, limit) : fetched;\n const last = page[page.length - 1];\n return {\n rows: page.map((r) => ({\n id: r.id,\n type: r.type,\n actorId: r.actor_id,\n occurredAt: r.occurred_at,\n data: r.data\n })),\n nextCursor: hasMore && last ? { occurredAt: last.occurred_at, id: last.id } : null\n };\n }\n}\nfunction clampLimit(requested) {\n if (!requested || requested <= 0) return DEFAULT_LIMIT;\n if (requested > MAX_LIMIT) return MAX_LIMIT;\n return Math.floor(requested);\n}\nconst MAX_RECENT_RUNS = 20;\nclass SupabaseUserProfileProvider {\n constructor(clients) {\n this.clients = clients;\n }\n clients;\n client() {\n return this.clients.serviceClient;\n }\n async getProfile(ctx, userId) {\n assertCanAccess(ctx, userId);\n const { data, error } = await this.client().from(\"user_profiles\").select(\"user_id, display_name, starred_definitions, recent_runs\").eq(\"user_id\", userId).maybeSingle();\n if (error) throw mapError$1(error);\n return data ? rowToProfile(data) : null;\n }\n async getProfiles(_ctx, userIds) {\n if (userIds.length === 0) return [];\n const { data, error } = await this.client().from(\"user_profiles\").select(\"user_id, display_name, starred_definitions, recent_runs\").in(\"user_id\", [...userIds]);\n if (error) throw mapError$1(error);\n return (data ?? []).map(rowToProfile);\n }\n async updateProfile(ctx, userId, patch) {\n assertCanAccess(ctx, userId);\n const row = {};\n if (patch.displayName !== void 0) row.display_name = patch.displayName;\n if (Object.keys(row).length === 0) return \"ok\";\n const { data, error } = await this.client().from(\"user_profiles\").update(row).eq(\"user_id\", userId).select(\"user_id\");\n if (error) throw mapError$1(error);\n return data && data.length > 0 ? \"ok\" : \"not_found\";\n }\n async starDefinition(ctx, userId, definitionId) {\n assertCanAccess(ctx, userId);\n const existing = await this.getProfile(ctx, userId);\n if (!existing) return \"not_found\";\n if (existing.starredDefinitions.includes(definitionId)) return \"ok\";\n const next = [...existing.starredDefinitions, definitionId];\n const { data, error } = await this.client().from(\"user_profiles\").update({ starred_definitions: next }).eq(\"user_id\", userId).select(\"user_id\");\n if (error) throw mapError$1(error);\n return data && data.length > 0 ? \"ok\" : \"not_found\";\n }\n async unstarDefinition(ctx, userId, definitionId) {\n assertCanAccess(ctx, userId);\n const existing = await this.getProfile(ctx, userId);\n if (!existing) return \"not_found\";\n if (!existing.starredDefinitions.includes(definitionId)) return \"ok\";\n const next = existing.starredDefinitions.filter((id) => id !== definitionId);\n const { data, error } = await this.client().from(\"user_profiles\").update({ starred_definitions: next }).eq(\"user_id\", userId).select(\"user_id\");\n if (error) throw mapError$1(error);\n return data && data.length > 0 ? \"ok\" : \"not_found\";\n }\n async recordRun(ctx, userId, run) {\n assertCanAccess(ctx, userId);\n const existing = await this.getProfile(ctx, userId);\n if (!existing) return \"not_found\";\n const filtered = existing.recentRuns.filter((r) => r.definitionId !== run.definitionId);\n const next = [run, ...filtered].slice(0, MAX_RECENT_RUNS);\n const { data, error } = await this.client().from(\"user_profiles\").update({ recent_runs: next }).eq(\"user_id\", userId).select(\"user_id\");\n if (error) throw mapError$1(error);\n return data && data.length > 0 ? \"ok\" : \"not_found\";\n }\n}\nfunction assertCanAccess(ctx, userId) {\n if (ctx.system) return;\n if (ctx.userId === userId) return;\n if (hasPermission(ctx, \"instance_admin\")) return;\n throw new ProviderError(\"Forbidden: cannot access another user’s profile\", 403);\n}\nfunction rowToProfile(row) {\n return {\n userId: row.user_id,\n displayName: row.display_name ?? void 0,\n starredDefinitions: row.starred_definitions ?? [],\n recentRuns: row.recent_runs ?? []\n };\n}\nfunction mapError$1(e) {\n const pg = e;\n if (pg?.code === \"23505\") return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\") return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error) return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n return new Error(obj.code ? `[${obj.code}] ${obj.message ?? \"\"}` : obj.message ?? String(e));\n }\n return new Error(String(e));\n}\nclass SupabasePlatformPermissionStore {\n constructor(clients) {\n this.clients = clients;\n }\n clients;\n client() {\n return this.clients.serviceClient;\n }\n async getFor(ctx, userId) {\n assertCanRead(ctx, userId);\n const { data, error } = await this.client().from(\"user_profiles\").select(\"platform_permissions\").eq(\"user_id\", userId).maybeSingle();\n if (error) throw mapError(error);\n return filterValid(data?.platform_permissions ?? []);\n }\n async getForBatch(ctx, userIds) {\n assertAdmin(ctx);\n const out = /* @__PURE__ */ new Map();\n if (userIds.length === 0) return out;\n const { data, error } = await this.client().from(\"user_profiles\").select(\"user_id, platform_permissions\").in(\"user_id\", [...userIds]);\n if (error) throw mapError(error);\n for (const row of data ?? []) {\n out.set(row.user_id, filterValid(row.platform_permissions ?? []));\n }\n return out;\n }\n async set(ctx, userId, permissions) {\n assertAdmin(ctx);\n const { data: existing, error: fetchError } = await this.client().from(\"user_profiles\").select(\"platform_permissions\").eq(\"user_id\", userId).maybeSingle();\n if (fetchError) throw mapError(fetchError);\n if (!existing) return \"not_found\";\n const wasAdmin = (existing.platform_permissions ?? []).includes(\"instance_admin\");\n const willBeAdmin = permissions.includes(\"instance_admin\");\n if (wasAdmin && !willBeAdmin) {\n const others = await this.countOtherEnabledAdmins(userId);\n if (others === 0) return \"last_admin\";\n }\n const { error } = await this.client().from(\"user_profiles\").update({ platform_permissions: [...permissions] }).eq(\"user_id\", userId);\n if (error) throw mapError(error);\n return \"ok\";\n }\n async hasInstanceAdmin(_ctx) {\n const { count, error } = await this.client().from(\"user_profiles\").select(\"user_id\", { count: \"exact\", head: true }).contains(\"platform_permissions\", [\"instance_admin\"]).eq(\"disabled\", false);\n if (error) throw mapError(error);\n return (count ?? 0) > 0;\n }\n async countInstanceAdminsExcluding(_ctx, excludeUserId) {\n return this.countOtherEnabledAdmins(excludeUserId);\n }\n async countOtherEnabledAdmins(excludeUserId) {\n const { count, error } = await this.client().from(\"user_profiles\").select(\"user_id\", { count: \"exact\", head: true }).contains(\"platform_permissions\", [\"instance_admin\"]).eq(\"disabled\", false).neq(\"user_id\", excludeUserId);\n if (error) throw mapError(error);\n return count ?? 0;\n }\n}\nconst VALID_PERMISSIONS = new Set(ALL_PLATFORM_PERMISSIONS);\nfunction filterValid(raw) {\n return raw.filter((p) => VALID_PERMISSIONS.has(p));\n}\nfunction assertCanRead(ctx, userId) {\n if (ctx.system) return;\n if (ctx.userId === userId) return;\n if (hasPermission(ctx, \"instance_admin\")) return;\n throw new ProviderError(\"Forbidden: cannot read another user’s permissions\", 403);\n}\nfunction assertAdmin(ctx) {\n if (ctx.system) return;\n if (hasPermission(ctx, \"instance_admin\")) return;\n throw new ProviderError(\"Forbidden: instance admin required\", 403);\n}\nfunction mapError(e) {\n const pg = e;\n if (pg?.code === \"23505\") return new ProviderError(pg.message ?? \"Duplicate record\", 409);\n if (pg?.code === \"23503\") return new ProviderError(pg.message ?? \"Foreign key violation\", 409);\n if (e instanceof Error) return e;\n if (e && typeof e === \"object\") {\n const obj = e;\n return new Error(obj.code ? `[${obj.code}] ${obj.message ?? \"\"}` : obj.message ?? String(e));\n }\n return new Error(String(e));\n}\nconst NOT_IMPLEMENTED_MSG = \"Platform projects are not supported on this deployment yet.\";\nconst notImplementedGrantStore = {\n listByProject: async () => {\n throw new ProviderError(NOT_IMPLEMENTED_MSG, 501);\n },\n create: async () => {\n throw new ProviderError(NOT_IMPLEMENTED_MSG, 501);\n },\n delete: async () => {\n throw new ProviderError(NOT_IMPLEMENTED_MSG, 501);\n },\n deleteByProject: async () => {\n },\n deleteByGranteeOrg: async () => {\n }\n};\nclass SupabaseDataProvider {\n constructor(clients, events, secretKey) {\n this.clients = clients;\n this.events = events;\n this.solveMetrics = new SupabaseSolveMetricSink(clients);\n this.orgs = new SupabaseOrgStore(clients, events);\n this.projects = new SupabaseProjectStore(clients, events);\n this.definitions = new SupabaseDefinitionStore(clients, events);\n this.invites = new SupabaseInviteStore(clients, events);\n this.computeServer = new SupabaseComputeServerStore(clients, secretKey);\n this.shareLinks = new SupabaseShareLinkStore(clients, events);\n this.userProfile = new SupabaseUserProfileProvider(clients);\n this.permissions = new SupabasePlatformPermissionStore(clients);\n this.platformProjectGrants = notImplementedGrantStore;\n this.auditQuery = new SupabaseAuditQuery(clients);\n }\n clients;\n orgs;\n projects;\n definitions;\n invites;\n computeServer;\n shareLinks;\n userProfile;\n permissions;\n platformProjectGrants;\n auditQuery;\n /** The sink every store emits into — exposed per `IDataProvider.events`. */\n events;\n /**\n * Per-solve timing sink, built from the same client bundle. Exposed so the\n * app's provider wiring can hand it to `SelvaConfig.solveMetrics` without\n * constructing a second Supabase client.\n */\n solveMetrics;\n static fromEnv(env, events) {\n const bundle = clientBundleFromEnv(env);\n if (!env.SELVA_AT_REST_KEY) {\n throw new Error(\n `Missing required env var: SELVA_AT_REST_KEY (32-byte hex or base64). Required to encrypt compute-server API keys at rest. Generate one with: node -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\"`\n );\n }\n const secretKey = decodeSecretKey(env.SELVA_AT_REST_KEY);\n return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle), secretKey);\n }\n static create(opts, events, secretKey) {\n const bundle = buildClientBundle(opts);\n return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle), secretKey);\n }\n /**\n * Build from a pre-existing `ClientBundle`. Useful for tests or advanced\n * cases that need to inject a custom event sink or share a bundle externally.\n * `secretKey` is optional here — omit it only when the caller never touches\n * compute-server apiKeys (writes without a key throw rather than persist\n * plaintext).\n */\n static fromBundle(bundle, events, secretKey) {\n return new SupabaseDataProvider(bundle, events ?? new SupabaseEventSink(bundle), secretKey);\n }\n /**\n * Expose the underlying bundle so other providers in the same package\n * (storage, user profile, auth) can share one set of clients per process.\n */\n getClientBundle() {\n return this.clients;\n }\n /**\n * App↔DB schema handshake (audit O3). Calls `selva.migration_head()` — a\n * SECURITY DEFINER function shipped in this package's migrations — and\n * compares it against the head this build expects. Three failure shapes:\n * the RPC itself is missing (database never applied the handshake\n * migration), the head is empty (no migrations pushed at all), or the head\n * is lexicographically behind (operator updated the app but forgot\n * `supabase db push`). Never throws; boot health consumes the report.\n */\n async verifySchemaVersion() {\n const expected = EXPECTED_MIGRATION_HEAD;\n const pushHint = \"Apply the pending Supabase migrations: sync them into your project (see @selvajs/supabase-provider sync-migrations) and run `npx supabase db push`.\";\n try {\n const { data, error } = await this.clients.serviceClient.rpc(\"migration_head\");\n if (error) {\n return {\n ok: false,\n expected,\n actual: null,\n message: `selva.migration_head() is not available (${error.message ?? error.code ?? \"unknown error\"}) — the database schema is behind this app version. ${pushHint}`\n };\n }\n const actual = typeof data === \"string\" ? data : \"\";\n if (!actual) {\n return {\n ok: false,\n expected,\n actual: \"\",\n message: `The database reports no applied migrations. ${pushHint}`\n };\n }\n const ok = actual >= expected;\n return {\n ok,\n expected,\n actual,\n message: ok ? void 0 : `Database migration head ${actual} is behind the app's expected ${expected}. ${pushHint}`\n };\n } catch (err) {\n return {\n ok: false,\n expected,\n actual: null,\n message: `Schema handshake failed: ${err instanceof Error ? err.message : String(err)}`\n };\n }\n }\n /**\n * No-op: `public.user_profiles` is auto-seeded by the `handle_new_auth_user`\n * trigger on every `auth.users` insert (see `0001_initial.sql`). The data\n * layer always has a row for any authenticated user without per-request work.\n */\n async ensureUser() {\n }\n /**\n * No-op: `public.user_profiles.user_id` references `auth.users(id)` with\n * `on delete cascade`. Deleting the auth user removes the profile row\n * automatically.\n */\n async onUserDeleted() {\n }\n}\nconst DEFAULT_REVALIDATE_MS = 6e4;\nfunction parsePositiveInt(raw) {\n if (!raw) return void 0;\n const n = Number.parseInt(raw, 10);\n return Number.isFinite(n) && n > 0 ? n : void 0;\n}\nclass SupabaseAuthProvider {\n name = \"Supabase Auth\";\n passwordAuth;\n oauth;\n emailLink;\n admin;\n anon;\n anonKey;\n supabaseUrl;\n tokenVerification;\n revalidateMs;\n /**\n * Last time a given session was re-validated against GoTrue (epoch ms),\n * keyed by the JWT `session_id`. Bounds the hybrid recheck to once per\n * `revalidateMs` per session. Swept lazily (see `verifyToken`) so a burst of\n * distinct sessions can't leak memory. Per-process; multi-instance drift is\n * harmless (each instance rechecks on its own schedule).\n */\n lastRevalidatedAt = /* @__PURE__ */ new Map();\n constructor(config) {\n this.supabaseUrl = config.supabaseUrl;\n this.anonKey = config.anonKey;\n this.tokenVerification = config.tokenVerification ?? \"hybrid\";\n this.revalidateMs = config.revalidateMs ?? DEFAULT_REVALIDATE_MS;\n this.admin = createClient(config.supabaseUrl, config.serviceRoleKey, {\n auth: { persistSession: false, autoRefreshToken: false }\n });\n this.anon = createClient(config.supabaseUrl, config.anonKey, {\n auth: { persistSession: false, autoRefreshToken: false }\n });\n this.passwordAuth = new SupabasePasswordAuth(\n this.admin,\n this.anon,\n (email, password) => this.signIn(email, password),\n config.enableSelfSignup ?? false,\n (user) => this.hydrate(user)\n );\n this.oauth = new SupabaseOAuthAuth(\n this.anon,\n (user) => this.hydrate(user),\n config.oauthProviders ?? []\n );\n this.emailLink = new SupabaseEmailLinkAuth(\n this.anon,\n (user) => this.hydrate(user),\n config.allowEmailLinkSignup ?? true\n );\n }\n static fromEnv(env) {\n const supabaseUrl = env.SUPABASE_URL;\n const anonKey = env.SUPABASE_ANON_KEY;\n const serviceRoleKey = env.SUPABASE_SERVICE_ROLE_KEY;\n if (!supabaseUrl) throw new Error(\"Missing required env var: SUPABASE_URL\");\n if (!anonKey) throw new Error(\"Missing required env var: SUPABASE_ANON_KEY\");\n if (!serviceRoleKey) throw new Error(\"Missing required env var: SUPABASE_SERVICE_ROLE_KEY\");\n const oauthProviders = (env.SUPABASE_OAUTH_PROVIDERS ?? \"\").split(\",\").map((p) => p.trim().toLowerCase()).filter((p) => p.length > 0);\n const tokenVerification = env.SUPABASE_TOKEN_VERIFICATION === \"strict\" ? \"strict\" : \"hybrid\";\n const revalidateMs = parsePositiveInt(env.SUPABASE_REVALIDATE_MS);\n return new SupabaseAuthProvider({\n supabaseUrl,\n anonKey,\n serviceRoleKey,\n enableSelfSignup: env.SUPABASE_ENABLE_SELF_SIGNUP === \"true\",\n oauthProviders,\n // Default true; set SUPABASE_ALLOW_EMAIL_LINK_SIGNUP=false to lock down\n // to invite-only and reject magic-link signups for new addresses.\n allowEmailLinkSignup: env.SUPABASE_ALLOW_EMAIL_LINK_SIGNUP !== \"false\",\n tokenVerification,\n ...revalidateMs !== void 0 ? { revalidateMs } : {}\n });\n }\n /**\n * Verify a session JWT and return the user, or null if invalid/disabled.\n * Runs on EVERY authenticated request, so the fast path avoids a network\n * round-trip.\n *\n * `'hybrid'` (default):\n * 1. `getClaims(token)` verifies the JWT. With asymmetric signing keys (the\n * modern Supabase default) this is LOCAL — the SDK verifies against the\n * cached JWKS via Web Crypto, no call to GoTrue. With a legacy symmetric\n * HS256 secret the SDK transparently falls back to a network verify, so\n * this is correct for both project types without us detecting the scheme\n * or hand-rolling JWKS handling (which the Supabase docs warn against —\n * it breaks under key rotation).\n * 2. Local verification can't see a server-side sign-out or a `disabled`\n * flip that happened AFTER the token was issued (the claims are a\n * snapshot). So we additionally re-check against GoTrue via `getUser`,\n * but at most once per `revalidateMs` per session — bounding revocation\n * latency to that window while eliminating ~all per-request network\n * calls under steady load.\n *\n * `'strict'`: `getUser` on every request — instant revocation, one round\n * trip per request. The pre-1b behavior, for operators who accept no lag.\n */\n async verifyToken(token) {\n if (!token) return null;\n if (this.tokenVerification === \"strict\") {\n return this.verifyViaGetUser(token);\n }\n const claims = await this.getClaimsOrNull(token);\n if (!claims) return null;\n if (claims.user_metadata?.disabled === true) {\n return null;\n }\n const sessionId = typeof claims.session_id === \"string\" ? claims.session_id : claims.sub;\n if (this.shouldRevalidate(sessionId)) {\n const fresh = await this.verifyViaGetUser(token);\n if (!fresh) {\n this.lastRevalidatedAt.delete(sessionId);\n return null;\n }\n this.markRevalidated(sessionId);\n return fresh;\n }\n return {\n id: claims.sub,\n email: typeof claims.email === \"string\" ? claims.email : void 0,\n disabled: false,\n metadata: claims.user_metadata\n };\n }\n /** Full network verify against GoTrue. Also the `'strict'`-mode path. */\n async verifyViaGetUser(token) {\n const { data, error } = await this.anon.auth.getUser(token);\n if (error || !data.user) return null;\n if (data.user.user_metadata?.disabled === true) return null;\n return this.hydrate(data.user);\n }\n /** Local JWT verification. Returns the claims, or null if invalid/expired. */\n async getClaimsOrNull(token) {\n try {\n const { data, error } = await this.anon.auth.getClaims(token);\n if (error || !data) return null;\n return data.claims;\n } catch {\n return null;\n }\n }\n shouldRevalidate(sessionId) {\n const last = this.lastRevalidatedAt.get(sessionId);\n return last === void 0 || Date.now() - last >= this.revalidateMs;\n }\n markRevalidated(sessionId) {\n const now = Date.now();\n this.lastRevalidatedAt.set(sessionId, now);\n if (this.lastRevalidatedAt.size > 1e4) {\n const cutoff = now - this.revalidateMs * 2;\n for (const [id, ts] of this.lastRevalidatedAt) {\n if (ts < cutoff) this.lastRevalidatedAt.delete(id);\n }\n }\n }\n async getUser(id) {\n const { data, error } = await this.admin.auth.admin.getUserById(id);\n if (error || !data.user) return null;\n return this.hydrate(data.user);\n }\n async listUsers(opts) {\n const perPage = opts?.limit ?? 50;\n const page = opts?.cursor ? parseInt(opts.cursor, 10) : 1;\n const { data, error } = await this.admin.auth.admin.listUsers({\n page: Number.isFinite(page) && page >= 1 ? page : 1,\n perPage\n });\n if (error) throw error;\n const users = data.users;\n const hydrated = users.map((u) => this.hydrate(u));\n const nextCursor = users.length >= perPage ? String(page + 1) : void 0;\n return { items: hydrated, nextCursor };\n }\n async createUser(email) {\n const { data, error } = await this.admin.auth.admin.createUser({\n email,\n email_confirm: true\n });\n if (error) throw error;\n if (!data.user) throw new Error(\"createUser returned no user\");\n return this.hydrate(data.user);\n }\n async deleteUser(id) {\n const { error } = await this.admin.auth.admin.deleteUser(id);\n if (error) {\n const e = error;\n if (e.status === 404 || /not.?found/i.test(e.message ?? \"\")) return \"not_found\";\n throw error;\n }\n return \"ok\";\n }\n async disableUser(id) {\n const { data: existing, error: fetchError } = await this.admin.auth.admin.getUserById(id);\n if (fetchError || !existing.user) return \"not_found\";\n const mergedMetadata = {\n ...existing.user.user_metadata ?? {},\n disabled: true\n };\n const { error } = await this.admin.auth.admin.updateUserById(id, {\n user_metadata: mergedMetadata\n });\n if (error) {\n const e = error;\n if (e.status === 404 || /not.?found/i.test(e.message ?? \"\")) return \"not_found\";\n throw error;\n }\n return \"ok\";\n }\n async touchLastLogin(id) {\n const cutoff = new Date(Date.now() - 6e4).toISOString();\n await this.admin.from(\"user_profiles\").update({ last_login_at: (/* @__PURE__ */ new Date()).toISOString() }).eq(\"user_id\", id).or(`last_login_at.is.null,last_login_at.lt.${cutoff}`);\n }\n // OAuth lives on `this.oauth` (typed `IOAuthAuth`); see `SupabaseOAuthAuth`\n // below. Mirrors the `passwordAuth` capability split.\n // ============================================================================\n // Internals\n // ============================================================================\n /**\n * Sign in via GoTrue. Returns the access token string and the hydrated\n * user. Called by `SupabasePasswordAuth.verifyLogin` — kept on the\n * provider class so it has access to the hydrate helper without plumbing.\n */\n async signIn(email, password) {\n const { data, error } = await this.anon.auth.signInWithPassword({ email, password });\n if (error || !data.user || !data.session) return null;\n if (data.user.user_metadata?.disabled === true) return null;\n return { user: this.hydrate(data.user), sessionToken: data.session.access_token };\n }\n /**\n * Map a GoTrue `User` to our identity-only `AuthUser`. Platform permissions\n * live on `IPlatformPermissionStore` and profile fields (displayName,\n * starred, recentRuns) on `IUserProfileStore` — neither is in AuthUser.\n */\n hydrate(user) {\n return {\n id: user.id,\n email: user.email ?? void 0,\n createdAt: user.created_at ?? void 0,\n lastLoginAt: user.last_sign_in_at ?? void 0,\n disabled: user.user_metadata?.disabled === true,\n metadata: user.user_metadata\n };\n }\n /**\n * Expose the anon URL + key so other code (e.g. the same process's\n * storage provider or per-request client factories) can build user-scoped\n * clients without requiring a second config read.\n */\n getAnonClientConfig() {\n return { supabaseUrl: this.supabaseUrl, anonKey: this.anonKey };\n }\n}\nclass SupabasePasswordAuth {\n constructor(admin, anon, signIn, enableSelfSignup, hydrate) {\n this.admin = admin;\n this.anon = anon;\n this.signIn = signIn;\n this.enableSelfSignup = enableSelfSignup;\n this.hydrate = hydrate;\n }\n admin;\n anon;\n signIn;\n enableSelfSignup;\n hydrate;\n async verifyLogin(email, password) {\n const result = await this.signIn(email, password);\n if (!result) return { kind: \"failed\", reason: \"invalid_credentials\" };\n return { kind: \"success\", user: result.user, sessionToken: result.sessionToken };\n }\n async createUserWithPassword(email, password) {\n const { data, error } = await this.admin.auth.admin.createUser({\n email,\n password,\n email_confirm: true\n });\n if (error) throw error;\n if (!data.user) throw new Error(\"createUserWithPassword returned no user\");\n return this.hydrate(data.user);\n }\n async registerUser(email, password) {\n if (!this.enableSelfSignup) return null;\n const { data, error } = await this.anon.auth.signUp({ email, password });\n if (error || !data.user) return null;\n return this.hydrate(data.user);\n }\n}\nclass SupabaseOAuthAuth {\n constructor(anon, hydrate, providers2) {\n this.anon = anon;\n this.hydrate = hydrate;\n this.providers = providers2;\n }\n anon;\n hydrate;\n providers;\n listProviders() {\n return this.providers;\n }\n async getOAuthAuthorizationUrl(provider, redirectTo) {\n const { data, error } = await this.anon.auth.signInWithOAuth({\n provider,\n options: { redirectTo, skipBrowserRedirect: true }\n });\n if (error || !data.url) throw error ?? new Error(\"signInWithOAuth returned no URL\");\n return data.url;\n }\n async exchangeOAuthCode(code) {\n const { data, error } = await this.anon.auth.exchangeCodeForSession(code);\n if (error || !data.user || !data.session) return null;\n if (data.user.user_metadata?.disabled === true) return null;\n return {\n user: this.hydrate(data.user),\n sessionToken: data.session.access_token,\n refreshToken: data.session.refresh_token\n };\n }\n async refreshSession(refreshToken) {\n const { data, error } = await this.anon.auth.refreshSession({ refresh_token: refreshToken });\n if (error || !data.session) return null;\n return {\n sessionToken: data.session.access_token,\n refreshToken: data.session.refresh_token\n };\n }\n}\nclass SupabaseEmailLinkAuth {\n constructor(anon, hydrate, allowSignup) {\n this.anon = anon;\n this.hydrate = hydrate;\n this.allowSignup = allowSignup;\n }\n anon;\n hydrate;\n allowSignup;\n async sendMagicLink(email, callbackUrl) {\n const { error } = await this.anon.auth.signInWithOtp({\n email,\n options: {\n emailRedirectTo: callbackUrl,\n shouldCreateUser: this.allowSignup\n }\n });\n if (!error) return { ok: true };\n const status = error.status;\n const code = error.code;\n const message = error.message ?? \"\";\n if (status === 429 || /rate.?limit/i.test(message))\n return { ok: false, reason: \"rate_limited\" };\n if (code === \"otp_disabled\" || code === \"signup_disabled\" || /signup.*disabled/i.test(message)) {\n return { ok: false, reason: \"signup_disabled\" };\n }\n if (code === \"validation_failed\" || /invalid.*email|email.*invalid/i.test(message)) {\n return { ok: false, reason: \"invalid_email\" };\n }\n throw error;\n }\n async verifyMagicLink(rawCallbackUrl) {\n const params = parseCallbackParams(rawCallbackUrl);\n if (!params) return null;\n const { tokenHash, type } = params;\n const { data, error } = await this.anon.auth.verifyOtp({\n token_hash: tokenHash,\n type\n });\n if (error || !data.user || !data.session) return null;\n if (data.user.user_metadata?.disabled === true) return null;\n return {\n user: this.hydrate(data.user),\n sessionToken: data.session.access_token,\n refreshToken: data.session.refresh_token\n };\n }\n}\nfunction parseCallbackParams(raw) {\n let search;\n try {\n search = new URL(raw).searchParams;\n } catch {\n search = new URLSearchParams(raw.startsWith(\"?\") ? raw.slice(1) : raw);\n }\n const tokenHash = search.get(\"token_hash\");\n const type = search.get(\"type\");\n if (!tokenHash) return null;\n const allowed = /* @__PURE__ */ new Set([\"magiclink\", \"email\", \"signup\", \"invite\", \"recovery\"]);\n if (!type || !allowed.has(type)) return null;\n return {\n tokenHash,\n type\n };\n}\nconst empty = () => ({ users: [] });\nconst LAST_LOGIN_DEBOUNCE_MS = 6e4;\nasync function readFile(filePath) {\n try {\n const raw = await fs.readFile(filePath, \"utf-8\");\n return JSON.parse(raw);\n } catch (err) {\n if (err.code === \"ENOENT\") return empty();\n throw err;\n }\n}\nasync function writeFile(filePath, data) {\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n const tmp = `${filePath}.tmp`;\n await fs.writeFile(tmp, JSON.stringify(data, null, \"\t\"), \"utf-8\");\n await fs.rename(tmp, filePath);\n}\nfunction createAllowlistStore(filePath) {\n const norm = (upn) => upn.trim().toLowerCase();\n return {\n async findByUpn(upn) {\n const { users } = await readFile(filePath);\n const key = norm(upn);\n return users.find((u) => u.upn === key) ?? null;\n },\n async findByEmail(email) {\n const { users } = await readFile(filePath);\n const key = norm(email);\n return users.find((u) => norm(u.email ?? \"\") === key || u.upn === key) ?? null;\n },\n async findById(id) {\n const { users } = await readFile(filePath);\n return users.find((u) => u.id === id) ?? null;\n },\n async listUsers() {\n const { users } = await readFile(filePath);\n return users;\n },\n async createUser(upn) {\n const file = await readFile(filePath);\n const key = norm(upn);\n if (file.users.some((u) => u.upn === key)) {\n throw new ProviderError(`User with UPN \"${upn}\" already exists`, 409);\n }\n const entry = {\n id: randomUUID(),\n upn: key,\n createdAt: (/* @__PURE__ */ new Date()).toISOString()\n };\n file.users.push(entry);\n await writeFile(filePath, file);\n return entry;\n },\n async syncFromHeaders(id, fields) {\n const file = await readFile(filePath);\n const user = file.users.find((u) => u.id === id);\n if (!user) return;\n let dirty = false;\n if (fields.email && user.email !== fields.email) {\n user.email = fields.email;\n dirty = true;\n }\n if (fields.displayName && user.displayName !== fields.displayName) {\n user.displayName = fields.displayName;\n dirty = true;\n }\n if (dirty) await writeFile(filePath, file);\n },\n async rebindUpn(id, upn) {\n const file = await readFile(filePath);\n const key = norm(upn);\n const user = file.users.find((u) => u.id === id);\n if (!user || user.upn === key) return;\n if (file.users.some((u) => u.id !== id && u.upn === key)) return;\n user.upn = key;\n await writeFile(filePath, file);\n },\n async setDisabled(id, disabled) {\n const file = await readFile(filePath);\n const user = file.users.find((u) => u.id === id);\n if (!user) throw new ProviderError(`User \"${id}\" not found`, 404);\n user.disabled = disabled;\n await writeFile(filePath, file);\n },\n async touchLastLogin(id) {\n const file = await readFile(filePath);\n const user = file.users.find((u) => u.id === id);\n if (!user) return;\n const now = Date.now();\n if (user.lastLoginAt) {\n const prev = Date.parse(user.lastLoginAt);\n if (Number.isFinite(prev) && now - prev < LAST_LOGIN_DEBOUNCE_MS) return;\n }\n user.lastLoginAt = new Date(now).toISOString();\n await writeFile(filePath, file);\n },\n async deleteUser(id) {\n const file = await readFile(filePath);\n const before = file.users.length;\n file.users = file.users.filter((u) => u.id !== id);\n if (file.users.length === before) throw new ProviderError(`User \"${id}\" not found`, 404);\n await writeFile(filePath, file);\n }\n };\n}\nconst DEFAULT_HEADERS = {\n upn: \"SELVA-UserPrincipalName\",\n email: \"SELVA-Email\",\n displayName: \"SELVA-DisplayName\"\n};\nfunction toAuthUser(u) {\n return {\n id: u.id,\n // Pre-first-login rows have no materialized email yet — the UPN is what\n // the admin typed when allowlisting (their email, for Entra/M365) and is\n // the only human-readable identifier available. Fall back so user lists\n // show an address instead of a bare UUID until the real email arrives\n // via header materialization.\n email: u.email ?? u.upn,\n metadata: { upn: u.upn, displayName: u.displayName },\n createdAt: u.createdAt,\n lastLoginAt: u.lastLoginAt,\n disabled: u.disabled\n };\n}\nclass HeaderProxyAuth {\n constructor(users, headers, bootstrapPolicy) {\n this.users = users;\n this.headers = headers;\n this.bootstrapPolicy = bootstrapPolicy;\n }\n users;\n headers;\n bootstrapPolicy;\n // One-shot diagnostic flag. Flipped the first time we see a request that\n // carries none of the configured SELVA-* headers, so deploys with a\n // misconfigured proxy get a single loud warning in the logs without\n // spamming on every anonymous request. Reset is intentional — the\n // process restarts and you see the warning again next deploy.\n missingHeadersWarned = false;\n setBootstrapPolicy(policy) {\n this.bootstrapPolicy = policy ?? void 0;\n }\n /**\n * Names of the configured identity headers, in priority order. Exposed so\n * the hook layer can emit per-page diagnostics (\"you hit /login without\n * these headers\") without having to know provider internals.\n */\n get configuredHeaderNames() {\n return [this.headers.upn, this.headers.email, this.headers.displayName];\n }\n /** True iff none of the configured identity headers are present. */\n hasNoIdentityHeaders(headers) {\n return !headers.get(this.headers.upn) && !headers.get(this.headers.email) && !headers.get(this.headers.displayName);\n }\n async identifyFromHeaders(headers) {\n const upn = headers.get(this.headers.upn);\n if (!upn || !upn.trim()) {\n if (!this.missingHeadersWarned && this.hasNoIdentityHeaders(headers)) {\n this.missingHeadersWarned = true;\n console.warn(\n `[HeaderAuth] No identity headers received on the first non-authed request. Expected one of: ${this.headers.upn}, ${this.headers.email}, ${this.headers.displayName}. If you reach the app through your forward-auth proxy, this means the proxy is not forwarding the configured headers — check your forward_auth / copy_headers config. If you're hitting the app directly (bypassing the proxy), bind the process to 127.0.0.1 and only reach it through the proxy. See @selvajs/header-auth-provider README.`\n );\n }\n return null;\n }\n const email = headers.get(this.headers.email)?.trim() || void 0;\n const displayName = headers.get(this.headers.displayName)?.trim() || void 0;\n let entry = await this.users.findByUpn(upn);\n if (!entry && email) {\n const byEmail = await this.users.findByEmail(email);\n if (byEmail) {\n entry = byEmail;\n if (byEmail.upn !== upn.trim().toLowerCase()) {\n await this.users.rebindUpn(byEmail.id, upn).catch(() => {\n });\n }\n }\n }\n if (!entry && this.bootstrapPolicy) {\n const allowed = await this.bootstrapPolicy({ upn, email });\n if (allowed) {\n try {\n entry = await this.users.createUser(upn);\n } catch {\n entry = await this.users.findByUpn(upn);\n }\n }\n }\n if (!entry || entry.disabled) {\n return null;\n }\n if (email && entry.email !== email || displayName && entry.displayName !== displayName) {\n await this.users.syncFromHeaders(entry.id, { email, displayName }).catch(() => {\n });\n if (email) entry.email = email;\n if (displayName) entry.displayName = displayName;\n }\n await this.users.touchLastLogin(entry.id).catch(() => {\n });\n return toAuthUser(entry);\n }\n}\nclass HeaderAuthProvider {\n users;\n headers;\n name = \"Header (Forward Auth)\";\n proxyAuth;\n constructor(config) {\n this.users = createAllowlistStore(config.allowlistFilePath);\n this.headers = { ...DEFAULT_HEADERS, ...config.headers };\n this.proxyAuth = new HeaderProxyAuth(this.users, this.headers, config.bootstrapAllowlistPolicy);\n }\n /**\n * Late-bind a bootstrap-allowlist policy. Useful when the policy needs\n * runtime state the platform layer owns (e.g. `hasInstanceAdmin`) and\n * therefore can't be wired up at provider construction time. Pass `null`\n * to clear.\n */\n setBootstrapAllowlistPolicy(policy) {\n this.proxyAuth.setBootstrapPolicy(policy);\n }\n static fromEnv(env) {\n const dir = env.HEADER_AUTH_DATA_DIR ?? env.DATA_PATH;\n if (!dir) {\n throw new Error(\n \"Missing required env var: HEADER_AUTH_DATA_DIR (or DATA_PATH as fallback). This directory holds header-allowlist.json — the pre-provisioned UPN list.\"\n );\n }\n return new HeaderAuthProvider({\n allowlistFilePath: path.join(dir, \"header-allowlist.json\"),\n headers: {\n upn: env.HEADER_AUTH_UPN_HEADER ?? DEFAULT_HEADERS.upn,\n email: env.HEADER_AUTH_EMAIL_HEADER ?? DEFAULT_HEADERS.email,\n displayName: env.HEADER_AUTH_DISPLAY_NAME_HEADER ?? DEFAULT_HEADERS.displayName\n }\n });\n }\n /**\n * No tokens are issued by this provider — identity rides on every request\n * via the trusted-proxy headers. Always returns null; the hook layer\n * falls through to `proxyAuth.identifyFromHeaders`.\n */\n async verifyToken(_token) {\n return null;\n }\n async getUser(id) {\n const u = await this.users.findById(id);\n return u ? toAuthUser(u) : null;\n }\n async listUsers(opts) {\n const all = await this.users.listUsers();\n const limit = Math.min(Math.max(1, opts?.limit ?? 25), 200);\n const offset = opts?.cursor ? parseInt(opts.cursor, 10) || 0 : 0;\n const slice = all.slice(offset, offset + limit).map(toAuthUser);\n const nextOffset = offset + slice.length;\n return {\n items: slice,\n nextCursor: nextOffset < all.length ? String(nextOffset) : void 0\n };\n }\n /**\n * Allowlist a UPN. Admin POST `/admin/api/users` with `{ email }`; the\n * email IS the UPN for M365 / Entra deployments where they match. For\n * other IdPs, document the UPN format in your README/onboarding.\n */\n async createUser(upn) {\n return toAuthUser(await this.users.createUser(upn));\n }\n async deleteUser(id) {\n const target = await this.users.findById(id);\n if (!target) return \"not_found\";\n try {\n await this.users.deleteUser(id);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404) return \"not_found\";\n throw err;\n }\n }\n async disableUser(id) {\n const target = await this.users.findById(id);\n if (!target) return \"not_found\";\n try {\n await this.users.setDisabled(id, true);\n return \"ok\";\n } catch (err) {\n if (err instanceof ProviderError && err.statusCode === 404) return \"not_found\";\n throw err;\n }\n }\n async touchLastLogin(id) {\n await this.users.touchLastLogin(id);\n }\n}\nclass DefinitionService {\n constructor(data, storage) {\n this.data = data;\n this.storage = storage;\n }\n data;\n storage;\n async create(ctx, input, file, schema) {\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const actor = ctx.userId || input.ownerId;\n const record = {\n guid: input.guid,\n projectId: input.projectId,\n ownerId: input.ownerId,\n createdBy: actor,\n updatedBy: actor,\n displayName: input.displayName,\n description: input.description,\n category: input.category,\n tags: input.tags,\n coverImage: input.coverImage,\n computeServerId: input.computeServerId,\n status: \"pending\",\n solveCount: 0,\n // v1 is created below with versionNumber 1, so the next upload reserves 2.\n nextVersionNumber: 2,\n liveVersionId: null,\n draftVersionId: null,\n createdAt: now,\n updatedAt: now,\n deletedAt: null\n };\n await this.data.definitions.create(ctx, record);\n const versionId = randomUUID();\n const fileKey = definitionPaths.version(input.guid, 1, input.fileExt);\n await this.storage.put(fileKey, file, \"application/octet-stream\");\n const version = {\n id: versionId,\n definitionId: input.guid,\n versionNumber: 1,\n fileExt: input.fileExt,\n fileKey,\n originalFilename: input.originalFilename,\n uploadedBy: actor,\n uploadedAt: now,\n schema,\n schemaExtractedAt: now\n };\n await this.data.definitions.createVersion(ctx, version);\n await this.data.definitions.attachInitialVersion(ctx, input.guid, versionId);\n return {\n record: { ...record, status: \"draft\", liveVersionId: versionId, draftVersionId: versionId },\n version\n };\n }\n /**\n * Upload a new version of an existing definition. Writes the blob, inserts\n * the version row, and advances the draft pointer. `live` is unchanged —\n * use `publish` to promote.\n */\n async uploadVersion(ctx, guid, file, ext, originalName, schema, changeNote) {\n const existing = await this.data.definitions.get(ctx, guid);\n if (!existing) throw new ProviderError(`Definition not found: ${guid}`, 404);\n const next = await this.data.definitions.reserveNextVersionNumber(ctx, guid);\n const versionId = randomUUID();\n const fileKey = definitionPaths.version(guid, next, ext);\n await this.storage.put(fileKey, file, \"application/octet-stream\");\n const now = (/* @__PURE__ */ new Date()).toISOString();\n const actor = ctx.userId || existing.ownerId;\n const version = {\n id: versionId,\n definitionId: guid,\n versionNumber: next,\n fileExt: ext,\n fileKey,\n originalFilename: originalName,\n uploadedBy: actor,\n uploadedAt: now,\n changeNote: changeNote?.trim() || void 0,\n schema,\n schemaExtractedAt: now\n };\n await this.data.definitions.createVersion(ctx, version);\n await this.data.definitions.setDraftVersion(ctx, guid, versionId);\n return version;\n }\n /**\n * Advance the live channel. If `versionId` is omitted, promotes the\n * current draft. Pass an arbitrary version id to roll forward/back —\n * spec §6 makes rollback a first-class operation.\n */\n async publish(ctx, guid, versionId) {\n const existing = await this.data.definitions.get(ctx, guid);\n if (!existing) throw new ProviderError(`Definition not found: ${guid}`, 404);\n const target = versionId ?? existing.draftVersionId;\n if (!target) throw new ProviderError(\"No version to publish\", 400);\n const version = await this.data.definitions.getVersion(ctx, target);\n if (!version || version.definitionId !== guid) {\n throw new ProviderError(`Version '${target}' not found for this definition`, 404);\n }\n await this.data.definitions.setLiveVersion(ctx, guid, target);\n if (existing.status === \"draft\" || existing.status === \"pending\") {\n await this.data.definitions.update(ctx, guid, { status: \"published\" });\n }\n return version;\n }\n async deleteVersion(ctx, guid, versionId) {\n const version = await this.data.definitions.getVersion(ctx, versionId);\n if (!version || version.definitionId !== guid) {\n throw new ProviderError(`Version '${versionId}' not found for this definition`, 404);\n }\n await this.data.definitions.deleteVersion(ctx, versionId);\n await this.storage.delete(version.fileKey);\n }\n async updateMeta(ctx, guid, patch) {\n await this.data.definitions.update(ctx, guid, patch);\n }\n async saveCoverImage(ctx, guid, imageData) {\n const path2 = definitionPaths.image(guid);\n await this.storage.put(path2, imageData, \"image/webp\");\n const url = this.storage.getPublicUrl(path2);\n await this.data.definitions.update(ctx, guid, { coverImage: url });\n return url;\n }\n async delete(ctx, guid) {\n await this.data.definitions.delete(ctx, guid);\n await this.storage.deletePrefix(definitionPaths.prefix(guid));\n }\n}\nclass OrgAssetService {\n constructor(orgs, storage) {\n this.orgs = orgs;\n this.storage = storage;\n }\n orgs;\n storage;\n /**\n * Store `kind`'s blob and point the org's `assets[kind]` at its public URL.\n * `contentType` must be the *original* upload type (e.g. `image/svg+xml`) so\n * the transcoder recognizes the bytes as an image. Returns the public URL.\n */\n async saveAsset(ctx, orgId, kind, data, contentType) {\n const path2 = orgPaths.asset(orgId, kind);\n await this.storage.put(path2, data, contentType);\n const token = createHash(\"sha256\").update(data).digest(\"hex\").slice(0, 8);\n const url = withCacheBust(this.storage.getPublicUrl(path2), token);\n await this.orgs.updateOrg(ctx, orgId, {\n assets: await this.mergedAssets(ctx, orgId, kind, url)\n });\n return url;\n }\n /** Remove `kind`'s blob and drop it from the org's `assets` map. No-op-safe. */\n async removeAsset(ctx, orgId, kind) {\n await this.storage.delete(orgPaths.asset(orgId, kind));\n await this.orgs.updateOrg(ctx, orgId, {\n assets: await this.mergedAssets(ctx, orgId, kind, void 0)\n });\n }\n /**\n * Read the org's current `assets` and return a copy with `kind` set to `url`\n * (or removed when `url` is undefined). Keeps the other kinds intact.\n */\n async mergedAssets(ctx, orgId, kind, url) {\n const org = await this.orgs.getOrg(ctx, orgId);\n if (!org) throw new ProviderError(`Org '${orgId}' not found`, 404);\n const next = { ...org.assets ?? {} };\n if (url === void 0) delete next[kind];\n else next[kind] = url;\n return next;\n }\n}\nclass SentryErrorReporter {\n constructor(sentry) {\n this.sentry = sentry;\n }\n sentry;\n /**\n * Initialize Sentry and return a reporter, or `null` if `@sentry/node` is\n * not installed (optional dependency absent). Never throws — a broken\n * error-tracker must not take down boot.\n */\n static async create(opts) {\n try {\n const sentry = await import(\n /* @vite-ignore */\n \"@sentry/node\"\n );\n sentry.init({\n dsn: opts.dsn,\n environment: opts.environment,\n release: opts.release,\n // Error tracking only — no performance tracing by default. Flip\n // this up later if you want transactions/spans.\n tracesSampleRate: 0\n });\n return new SentryErrorReporter(sentry);\n } catch (err) {\n console.error(\n \"[ErrorReporter] A Sentry DSN is set but @sentry/node could not be loaded. Install it (`pnpm add @sentry/node`) or unset the DSN. Falling back to no-op.\",\n err\n );\n return null;\n }\n }\n capture(error, context) {\n try {\n const tags = { ...context?.tags };\n if (context?.method) tags.method = context.method;\n if (context?.route) tags.route = context.route;\n if (context?.orgId) tags.orgId = context.orgId;\n this.sentry.captureException(error, {\n tags,\n user: context?.userId ? { id: context.userId } : void 0\n });\n } catch (err) {\n console.error(\"[ErrorReporter] Failed to capture error:\", err);\n }\n }\n}\nconst registry = {\n auth: {\n local: (e) => LocalAuthProvider.fromEnv(e),\n supabase: (e) => SupabaseAuthProvider.fromEnv(e),\n header: (e) => HeaderAuthProvider.fromEnv(e)\n },\n data: {\n local: (e) => LocalDataProvider.fromEnv(e),\n supabase: (e) => SupabaseDataProvider.fromEnv(e)\n },\n storage: {\n local: (e) => LocalStorageProvider.fromEnv(e),\n supabase: (e) => SupabaseStorageProvider.fromEnv(e)\n }\n};\nconst runtime = await createSelvaProviders(private_env, {\n registry,\n configPath: private_env.SELVA_CONFIG_PATH\n});\nfunction resolveProviders() {\n return runtime.resolve();\n}\nconst providers = new Proxy({}, {\n get(_t, prop) {\n return Reflect.get(resolveProviders(), prop);\n }\n});\nfunction getTenancy() {\n return runtime.tenancy();\n}\nfunction getBranding() {\n return runtime.branding();\n}\nfunction flag(name) {\n return runtime.flag(name);\n}\nlet _definitionService;\nfunction getDefinitionService() {\n if (!_definitionService) {\n const p = resolveProviders();\n _definitionService = new DefinitionService(p.data, p.storage);\n }\n return _definitionService;\n}\nlet _orgAssetService;\nfunction getOrgAssetService() {\n if (!_orgAssetService) {\n const p = resolveProviders();\n _orgAssetService = new OrgAssetService(p.data.orgs, p.storage);\n }\n return _orgAssetService;\n}\nfunction getAuthProvider() {\n return resolveProviders().auth;\n}\nfunction getStorageProvider() {\n return resolveProviders().storage;\n}\nfunction getDataProvider() {\n return resolveProviders().data;\n}\nfunction getOrganizationProvider() {\n return resolveProviders().data.orgs;\n}\nfunction getProjectProvider() {\n return resolveProviders().data.projects;\n}\nfunction getDefinitionMeta() {\n return resolveProviders().data.definitions;\n}\nfunction getComputeServerConfigStore() {\n return resolveProviders().data.computeServer;\n}\nfunction getUserProfileStore() {\n return resolveProviders().data.userProfile;\n}\nfunction getInviteStore() {\n return resolveProviders().data.invites;\n}\nfunction getPermissionStore() {\n return resolveProviders().data.permissions;\n}\nfunction getPlatformProjectGrantStore() {\n return resolveProviders().data.platformProjectGrants;\n}\nfunction getSolveMetricSink() {\n return runtime.solveMetricSink();\n}\nfunction getAuditQuery() {\n return providers.data.auditQuery ?? null;\n}\nconst noopEventSink = new NoopEventSink();\nfunction getEventSink() {\n const p = resolveProviders();\n return p.events ?? p.data.events ?? noopEventSink;\n}\nlet _errorReporter = new NoopErrorReporter();\nfunction getErrorReporter() {\n return _errorReporter;\n}\nif (private_env.SENTRY_DSN) {\n void SentryErrorReporter.create({\n dsn: private_env.SENTRY_DSN,\n environment: private_env.NODE_ENV,\n release: private_env.SELVA_RELEASE\n }).then((reporter) => {\n if (reporter) {\n _errorReporter = reporter;\n console.log(\"[ErrorReporter] Sentry error tracking enabled.\");\n }\n });\n}\nconst ERROR_HOOKS_FLAG = \"__selvaProcessErrorHooksRegistered\";\nif (!globalThis[ERROR_HOOKS_FLAG]) {\n globalThis[ERROR_HOOKS_FLAG] = true;\n process.on(\"unhandledRejection\", (reason) => {\n console.error(\"[unhandledRejection]\", reason);\n getErrorReporter().capture(reason, { tags: { origin: \"unhandledRejection\" } });\n });\n process.on(\"uncaughtException\", (error) => {\n console.error(\"[uncaughtException]\", error);\n getErrorReporter().capture(error, { tags: { origin: \"uncaughtException\" } });\n });\n}\nexport {\n LocalComputeServerStore as L,\n MAX_PAGE_LIMIT as M,\n ProviderError as P,\n getEventSink as a,\n getAuthProvider as b,\n getBranding as c,\n getInviteStore as d,\n getOrganizationProvider as e,\n flag as f,\n getErrorReporter as g,\n getUserProfileStore as h,\n getTenancy as i,\n getAuditQuery as j,\n getComputeServerConfigStore as k,\n getOrgAssetService as l,\n getProjectProvider as m,\n getPlatformProjectGrantStore as n,\n actorFrom as o,\n providers as p,\n getPermissionStore as q,\n getDataProvider as r,\n getDefinitionMeta as s,\n isPlatformServer as t,\n resolveComputeLimits as u,\n getStorageProvider as v,\n getSolveMetricSink as w,\n getDefinitionService as x,\n definitionPaths as y,\n isOrgServer as z\n};\n"],"names":[],"mappings":"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"}