@selvajs/selva 4.16.3 → 4.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/build/client/_app/immutable/chunks/{D9mrwhjI.js → BU-V_Eiq.js} +1 -1
  2. package/build/client/_app/immutable/chunks/BU-V_Eiq.js.br +0 -0
  3. package/build/client/_app/immutable/chunks/BU-V_Eiq.js.gz +0 -0
  4. package/build/client/_app/immutable/chunks/{R7RfXtkr.js → BlQiAbNW.js} +1 -1
  5. package/build/client/_app/immutable/chunks/BlQiAbNW.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/BlQiAbNW.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{Ct0B1C-6.js → C0odTvPl.js} +1 -1
  8. package/build/client/_app/immutable/chunks/C0odTvPl.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/C0odTvPl.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/C6gAy11g.js +1 -0
  11. package/build/client/_app/immutable/chunks/C6gAy11g.js.br +2 -0
  12. package/build/client/_app/immutable/chunks/C6gAy11g.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{DDZHb50K.js → CIQYtnjl.js} +1 -1
  14. package/build/client/_app/immutable/chunks/CIQYtnjl.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/CIQYtnjl.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{CsdA-c5v.js → D1C2bDXQ.js} +2 -2
  17. package/build/client/_app/immutable/chunks/D1C2bDXQ.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/D1C2bDXQ.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/{3g59Qd6G.js → DweBY5gq.js} +1 -1
  20. package/build/client/_app/immutable/chunks/DweBY5gq.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/DweBY5gq.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/{DPMlkLnX.js → LCEeY5pO.js} +1 -1
  23. package/build/client/_app/immutable/chunks/LCEeY5pO.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/LCEeY5pO.js.gz +0 -0
  25. package/build/client/_app/immutable/entry/{app.BMcWaHUc.js → app.gbRlrYPj.js} +2 -2
  26. package/build/client/_app/immutable/entry/app.gbRlrYPj.js.br +0 -0
  27. package/build/client/_app/immutable/entry/app.gbRlrYPj.js.gz +0 -0
  28. package/build/client/_app/immutable/entry/start.MZeFqq0d.js +1 -0
  29. package/build/client/_app/immutable/entry/start.MZeFqq0d.js.br +1 -0
  30. package/build/client/_app/immutable/entry/start.MZeFqq0d.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/{1.BgrhD8yg.js → 1.Bg3SAaiR.js} +1 -1
  32. package/build/client/_app/immutable/nodes/1.Bg3SAaiR.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/1.Bg3SAaiR.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/11.DFY28UJL.js +3 -0
  35. package/build/client/_app/immutable/nodes/11.DFY28UJL.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/11.DFY28UJL.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/{13.B2k79eQZ.js → 13.Bo7QBphQ.js} +1 -1
  38. package/build/client/_app/immutable/nodes/13.Bo7QBphQ.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/13.Bo7QBphQ.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/{14.CfEpmHVX.js → 14.Dhg9S6ty.js} +1 -1
  41. package/build/client/_app/immutable/nodes/14.Dhg9S6ty.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/14.Dhg9S6ty.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{15.nl-fHTBN.js → 15.P81tZ1xb.js} +1 -1
  44. package/build/client/_app/immutable/nodes/15.P81tZ1xb.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/15.P81tZ1xb.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/{16.DVzCWrup.js → 16.mLkhQAgh.js} +1 -1
  47. package/build/client/_app/immutable/nodes/16.mLkhQAgh.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/16.mLkhQAgh.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/{17.Bf6Oda11.js → 17.C62-4V3U.js} +1 -1
  50. package/build/client/_app/immutable/nodes/17.C62-4V3U.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/17.C62-4V3U.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{19.CtApFLV7.js → 19.CLtct_Ys.js} +1 -1
  53. package/build/client/_app/immutable/nodes/19.CLtct_Ys.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/19.CLtct_Ys.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/{2.MSrEo_3A.js → 2.BGhOXg8i.js} +1 -1
  56. package/build/client/_app/immutable/nodes/2.BGhOXg8i.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/2.BGhOXg8i.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/{20.DBB_f9Te.js → 20.i1Sp3qRa.js} +1 -1
  59. package/build/client/_app/immutable/nodes/20.i1Sp3qRa.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/20.i1Sp3qRa.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/{21.Jgkp9z8Y.js → 21.D3Lp9AqE.js} +2 -2
  62. package/build/client/_app/immutable/nodes/21.D3Lp9AqE.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/21.D3Lp9AqE.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/{22.D42DZ008.js → 22.D5nqnzlG.js} +1 -1
  65. package/build/client/_app/immutable/nodes/22.D5nqnzlG.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/22.D5nqnzlG.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/{24.D8reOFlb.js → 24.oqBL5J12.js} +1 -1
  68. package/build/client/_app/immutable/nodes/24.oqBL5J12.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/24.oqBL5J12.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/{25.BOB3lBr0.js → 25.0IV8s2xX.js} +1 -1
  71. package/build/client/_app/immutable/nodes/25.0IV8s2xX.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/25.0IV8s2xX.js.gz +0 -0
  73. package/build/client/_app/immutable/nodes/{28.DbBbdy20.js → 28.uC1Xk6WJ.js} +1 -1
  74. package/build/client/_app/immutable/nodes/28.uC1Xk6WJ.js.br +0 -0
  75. package/build/client/_app/immutable/nodes/28.uC1Xk6WJ.js.gz +0 -0
  76. package/build/client/_app/immutable/nodes/{29.S258JhtV.js → 29.BGsApASb.js} +1 -1
  77. package/build/client/_app/immutable/nodes/29.BGsApASb.js.br +0 -0
  78. package/build/client/_app/immutable/nodes/29.BGsApASb.js.gz +0 -0
  79. package/build/client/_app/immutable/nodes/{3.RzJ0Db4k.js → 3.CBEmUkKu.js} +1 -1
  80. package/build/client/_app/immutable/nodes/3.CBEmUkKu.js.br +0 -0
  81. package/build/client/_app/immutable/nodes/3.CBEmUkKu.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/{30.B4QJcyTH.js → 30.CNdRLhFz.js} +1 -1
  83. package/build/client/_app/immutable/nodes/30.CNdRLhFz.js.br +0 -0
  84. package/build/client/_app/immutable/nodes/30.CNdRLhFz.js.gz +0 -0
  85. package/build/client/_app/immutable/nodes/{31.CFNhxIOf.js → 31.uAKGPy2Q.js} +1 -1
  86. package/build/client/_app/immutable/nodes/31.uAKGPy2Q.js.br +0 -0
  87. package/build/client/_app/immutable/nodes/31.uAKGPy2Q.js.gz +0 -0
  88. package/build/client/_app/immutable/nodes/{33.Bdn-BdjA.js → 33.DFTBdfag.js} +1 -1
  89. package/build/client/_app/immutable/nodes/33.DFTBdfag.js.br +0 -0
  90. package/build/client/_app/immutable/nodes/33.DFTBdfag.js.gz +0 -0
  91. package/build/client/_app/immutable/nodes/{5.CvvYT2I_.js → 5.C5IUZLSG.js} +1 -1
  92. package/build/client/_app/immutable/nodes/5.C5IUZLSG.js.br +3 -0
  93. package/build/client/_app/immutable/nodes/5.C5IUZLSG.js.gz +0 -0
  94. package/build/client/_app/immutable/nodes/{6.CuP3PuQf.js → 6.D6Lv824Z.js} +1 -1
  95. package/build/client/_app/immutable/nodes/6.D6Lv824Z.js.br +0 -0
  96. package/build/client/_app/immutable/nodes/6.D6Lv824Z.js.gz +0 -0
  97. package/build/client/_app/immutable/nodes/{7.DyEE14eN.js → 7.DNTCMZZo.js} +1 -1
  98. package/build/client/_app/immutable/nodes/7.DNTCMZZo.js.br +0 -0
  99. package/build/client/_app/immutable/nodes/7.DNTCMZZo.js.gz +0 -0
  100. package/build/client/_app/immutable/nodes/{8.CUjeSVKZ.js → 8.ZZfeAr6G.js} +1 -1
  101. package/build/client/_app/immutable/nodes/8.ZZfeAr6G.js.br +0 -0
  102. package/build/client/_app/immutable/nodes/8.ZZfeAr6G.js.gz +0 -0
  103. package/build/client/_app/immutable/nodes/{9.BYQI2zVi.js → 9.ep7NU1In.js} +1 -1
  104. package/build/client/_app/immutable/nodes/9.ep7NU1In.js.br +0 -0
  105. package/build/client/_app/immutable/nodes/9.ep7NU1In.js.gz +0 -0
  106. package/build/client/_app/version.json +1 -1
  107. package/build/client/_app/version.json.br +0 -0
  108. package/build/client/_app/version.json.gz +0 -0
  109. package/build/handler.js +4 -4
  110. package/build/index.js +4 -4
  111. package/build/server/chunks/chunks/{AppHeader.js-l5eU3Q7z.js → AppHeader.js-C7-0gWg-.js} +3 -3
  112. package/build/server/chunks/chunks/{AppHeader.js-l5eU3Q7z.js.map → AppHeader.js-C7-0gWg-.js.map} +1 -1
  113. package/build/server/chunks/chunks/{SettingsMenu.js-DoHDbdTn.js → SettingsMenu.js-BjLWMAXR.js} +3 -3
  114. package/build/server/chunks/chunks/{SettingsMenu.js-DoHDbdTn.js.map → SettingsMenu.js-BjLWMAXR.js.map} +1 -1
  115. package/build/server/chunks/chunks/{SideNav.js-C5UYU-Yc.js → SideNav.js-BViz-8Rq.js} +2 -2
  116. package/build/server/chunks/chunks/{SideNav.js-C5UYU-Yc.js.map → SideNav.js-BViz-8Rq.js.map} +1 -1
  117. package/build/server/chunks/chunks/{client.js-B6kyzbcb.js → client.js-DZ5yHZ_u.js} +2 -2
  118. package/build/server/chunks/chunks/{client.js-B6kyzbcb.js.map → client.js-DZ5yHZ_u.js.map} +1 -1
  119. package/build/server/chunks/chunks/{engine.server.js-BvIpzyKd.js → engine.server.js-qoHdc5Q0.js} +18 -3
  120. package/build/server/chunks/chunks/engine.server.js-qoHdc5Q0.js.map +1 -0
  121. package/build/server/chunks/chunks/forms.js-BxbgaPtt.js +2 -0
  122. package/build/server/chunks/chunks/forms.js-BxbgaPtt.js.map +1 -0
  123. package/build/server/chunks/chunks/{handlers.js-Bnwbo5I4.js → handlers.js-Be7MGVko.js} +2 -2
  124. package/build/server/chunks/chunks/{handlers.js-Bnwbo5I4.js.map → handlers.js-Be7MGVko.js.map} +1 -1
  125. package/build/server/chunks/chunks/internal.js-ClJtIfiy.js.map +1 -1
  126. package/build/server/chunks/chunks/{internal2.js-DjTYEpjQ.js → internal2.js-DPy3-ScF.js} +2 -2
  127. package/build/server/chunks/chunks/{internal2.js-DjTYEpjQ.js.map → internal2.js-DPy3-ScF.js.map} +1 -1
  128. package/build/server/chunks/chunks/navigation.js-BxbgaPtt.js +2 -0
  129. package/build/server/chunks/chunks/navigation.js-BxbgaPtt.js.map +1 -0
  130. package/build/server/chunks/chunks/{package.js-D9xXD1Q_.js → package.js-VIfF3HO1.js} +2 -2
  131. package/build/server/chunks/chunks/{package.js-D9xXD1Q_.js.map → package.js-VIfF3HO1.js.map} +1 -1
  132. package/build/server/chunks/chunks/{paths.js-CG3tmqeo.js → paths.js-BqwpMKlA.js} +2 -2
  133. package/build/server/chunks/chunks/{paths.js-CG3tmqeo.js.map → paths.js-BqwpMKlA.js.map} +1 -1
  134. package/build/server/chunks/chunks/{solve.server.js-CjvwX-MW.js → solve.server.js-C87D54Ty.js} +2 -2
  135. package/build/server/chunks/chunks/{solve.server.js-CjvwX-MW.js.map → solve.server.js-C87D54Ty.js.map} +1 -1
  136. package/build/server/chunks/chunks/{state.js-BUoQTTL0.js → state.js-DMk5dEia.js} +2 -2
  137. package/build/server/chunks/chunks/{state.js-BUoQTTL0.js.map → state.js-DMk5dEia.js.map} +1 -1
  138. package/build/server/chunks/chunks/{stores.js-DcddBAKK.js → stores.js-CmsZzrkh.js} +2 -2
  139. package/build/server/chunks/chunks/{stores.js-DcddBAKK.js.map → stores.js-CmsZzrkh.js.map} +1 -1
  140. package/build/server/chunks/entries/endpoints/api/admin/compute/{_server.ts.js-DeYdqczc.js → _server.ts.js-CwHiigk0.js} +2 -2
  141. package/build/server/chunks/entries/endpoints/api/admin/compute/{_server.ts.js-DeYdqczc.js.map → _server.ts.js-CwHiigk0.js.map} +1 -1
  142. package/build/server/chunks/entries/endpoints/api/admin/compute/actions/{_server.ts.js-By1_1Jg_.js → _server.ts.js-BHDoi_b2.js} +30 -2
  143. package/build/server/chunks/entries/endpoints/api/admin/compute/actions/_server.ts.js-BHDoi_b2.js.map +1 -0
  144. package/build/server/chunks/entries/endpoints/api/diag/throughput/{_server.ts.js-BrVkVqbR.js → _server.ts.js-D7T_hcUe.js} +2 -2
  145. package/build/server/chunks/entries/endpoints/api/diag/throughput/{_server.ts.js-BrVkVqbR.js.map → _server.ts.js-D7T_hcUe.js.map} +1 -1
  146. package/build/server/chunks/entries/endpoints/api/v1/compute/{_server.ts.js-DQt5tUgv.js → _server.ts.js-DkrgwE6P.js} +3 -3
  147. package/build/server/chunks/entries/endpoints/api/v1/compute/{_server.ts.js-DQt5tUgv.js.map → _server.ts.js-DkrgwE6P.js.map} +1 -1
  148. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/{_server.ts.js-B9c-u9bU.js → _server.ts.js-bXZaNmzV.js} +3 -3
  149. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/{_server.ts.js-B9c-u9bU.js.map → _server.ts.js-bXZaNmzV.js.map} +1 -1
  150. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/image/{_server.ts.js-XdrMQe-x.js → _server.ts.js-DGUNa-ev.js} +3 -3
  151. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/image/{_server.ts.js-XdrMQe-x.js.map → _server.ts.js-DGUNa-ev.js.map} +1 -1
  152. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/publish/{_server.ts.js-CgL9q1f_.js → _server.ts.js-gF3zvOmk.js} +3 -3
  153. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/publish/{_server.ts.js-CgL9q1f_.js.map → _server.ts.js-gF3zvOmk.js.map} +1 -1
  154. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/schema/{_server.ts.js-DRuiOEQN.js → _server.ts.js-BNuLLqCt.js} +3 -3
  155. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/schema/{_server.ts.js-DRuiOEQN.js.map → _server.ts.js-BNuLLqCt.js.map} +1 -1
  156. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_linkId_/{_server.ts.js-B-69nPNy.js → _server.ts.js-CTtzpVhd.js} +3 -3
  157. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/_linkId_/{_server.ts.js-B-69nPNy.js.map → _server.ts.js-CTtzpVhd.js.map} +1 -1
  158. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/{_server.ts.js-me0FjZ4h.js → _server.ts.js-BO7LPnX9.js} +3 -3
  159. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/share-links/{_server.ts.js-me0FjZ4h.js.map → _server.ts.js-BO7LPnX9.js.map} +1 -1
  160. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/solve/{_server.ts.js-BJWpoAJD.js → _server.ts.js-CbRSSYEa.js} +3 -3
  161. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/solve/{_server.ts.js-BJWpoAJD.js.map → _server.ts.js-CbRSSYEa.js.map} +1 -1
  162. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/{_server.ts.js-CLCrOpWF.js → _server.ts.js-rUAgK4dT.js} +3 -3
  163. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/{_server.ts.js-CLCrOpWF.js.map → _server.ts.js-rUAgK4dT.js.map} +1 -1
  164. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/{_server.ts.js-BqeVicYp.js → _server.ts.js-B1gJHRAe.js} +3 -3
  165. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/{_server.ts.js-BqeVicYp.js.map → _server.ts.js-B1gJHRAe.js.map} +1 -1
  166. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/schema/{_server.ts.js-Cy_4aFGX.js → _server.ts.js-Bi60Ayu3.js} +3 -3
  167. package/build/server/chunks/entries/endpoints/api/v1/definitions/_guid_/versions/_versionId_/schema/{_server.ts.js-Cy_4aFGX.js.map → _server.ts.js-Bi60Ayu3.js.map} +1 -1
  168. package/build/server/chunks/entries/endpoints/api/v1/definitions/{_server.ts.js-DIfn8h7e.js → _server.ts.js-8AcHVYvx.js} +3 -3
  169. package/build/server/chunks/entries/endpoints/api/v1/definitions/{_server.ts.js-DIfn8h7e.js.map → _server.ts.js-8AcHVYvx.js.map} +1 -1
  170. package/build/server/chunks/entries/endpoints/api/v1/me/{_server.ts.js-Y6XMk6UN.js → _server.ts.js-BSiBuFhF.js} +3 -3
  171. package/build/server/chunks/entries/endpoints/api/v1/me/{_server.ts.js-Y6XMk6UN.js.map → _server.ts.js-BSiBuFhF.js.map} +1 -1
  172. package/build/server/chunks/entries/endpoints/api/v1/me/starred/_guid_/{_server.ts.js-DSDHjvxc.js → _server.ts.js-zTVuI16z.js} +3 -3
  173. package/build/server/chunks/entries/endpoints/api/v1/me/starred/_guid_/{_server.ts.js-DSDHjvxc.js.map → _server.ts.js-zTVuI16z.js.map} +1 -1
  174. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/{_server.ts.js-BlULPmZr.js → _server.ts.js-CczJwF-j.js} +3 -3
  175. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/{_server.ts.js-BlULPmZr.js.map → _server.ts.js-CczJwF-j.js.map} +1 -1
  176. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/assets/_kind_/{_server.ts.js-UHOIMMkn.js → _server.ts.js-BNwE7hZQ.js} +3 -3
  177. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/assets/_kind_/{_server.ts.js-UHOIMMkn.js.map → _server.ts.js-BNwE7hZQ.js.map} +1 -1
  178. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/compute/{_server.ts.js-CvL-1aLh.js → _server.ts.js-D9pAIdef.js} +3 -3
  179. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/compute/{_server.ts.js-CvL-1aLh.js.map → _server.ts.js-D9pAIdef.js.map} +1 -1
  180. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/{_server.ts.js-Fau0TTm4.js → _server.ts.js-BGnkXGyr.js} +3 -3
  181. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/{_server.ts.js-Fau0TTm4.js.map → _server.ts.js-BGnkXGyr.js.map} +1 -1
  182. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/resend/{_server.ts.js-DFMYOPnz.js → _server.ts.js-FMeAfcsI.js} +3 -3
  183. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/_id_/resend/{_server.ts.js-DFMYOPnz.js.map → _server.ts.js-FMeAfcsI.js.map} +1 -1
  184. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/{_server.ts.js-CDSkHMs7.js → _server.ts.js-BrXHPEDL.js} +3 -3
  185. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/invites/{_server.ts.js-CDSkHMs7.js.map → _server.ts.js-BrXHPEDL.js.map} +1 -1
  186. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/{_server.ts.js-r7K8qlTp.js → _server.ts.js-BVoPWjDd.js} +3 -3
  187. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/{_server.ts.js-r7K8qlTp.js.map → _server.ts.js-BVoPWjDd.js.map} +1 -1
  188. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_userId_/{_server.ts.js-CTN0TawY.js → _server.ts.js-BBsqU3KI.js} +3 -3
  189. package/build/server/chunks/entries/endpoints/api/v1/orgs/_orgId_/members/_userId_/{_server.ts.js-CTN0TawY.js.map → _server.ts.js-BBsqU3KI.js.map} +1 -1
  190. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/{_server.ts.js-ZZfxa5d0.js → _server.ts.js-Kc1iq91R.js} +3 -3
  191. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/{_server.ts.js-ZZfxa5d0.js.map → _server.ts.js-Kc1iq91R.js.map} +1 -1
  192. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/{_server.ts.js-B6n2XnwS.js → _server.ts.js-DarqauaS.js} +3 -3
  193. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/{_server.ts.js-B6n2XnwS.js.map → _server.ts.js-DarqauaS.js.map} +1 -1
  194. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_userId_/{_server.ts.js-B-fo2qya.js → _server.ts.js-UfoBH4i2.js} +3 -3
  195. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/members/_userId_/{_server.ts.js-B-fo2qya.js.map → _server.ts.js-UfoBH4i2.js.map} +1 -1
  196. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/reclaim/{_server.ts.js-DvE1YEv2.js → _server.ts.js-D4Hr0Ahk.js} +3 -3
  197. package/build/server/chunks/entries/endpoints/api/v1/projects/_id_/reclaim/{_server.ts.js-DvE1YEv2.js.map → _server.ts.js-D4Hr0Ahk.js.map} +1 -1
  198. package/build/server/chunks/entries/endpoints/api/v1/projects/{_server.ts.js-Bu3TPOXO.js → _server.ts.js-C-WOjeB8.js} +3 -3
  199. package/build/server/chunks/entries/endpoints/api/v1/projects/{_server.ts.js-Bu3TPOXO.js.map → _server.ts.js-C-WOjeB8.js.map} +1 -1
  200. package/build/server/chunks/entries/pages/{_error.svelte.js-8wWjYBAE.js → _error.svelte.js-BM-nVZ0r.js} +4 -4
  201. package/build/server/chunks/entries/pages/{_error.svelte.js-8wWjYBAE.js.map → _error.svelte.js-BM-nVZ0r.js.map} +1 -1
  202. package/build/server/chunks/entries/pages/{_page.svelte.js-CcUvgO7S.js → _page.svelte.js-CZjvvlfK.js} +6 -6
  203. package/build/server/chunks/entries/pages/{_page.svelte.js-CcUvgO7S.js.map → _page.svelte.js-CZjvvlfK.js.map} +1 -1
  204. package/build/server/chunks/entries/pages/accept-invite/{_page.svelte.js-H_iu_r6v.js → _page.svelte.js-Bn8rAcFJ.js} +4 -4
  205. package/build/server/chunks/entries/pages/accept-invite/{_page.svelte.js-H_iu_r6v.js.map → _page.svelte.js-Bn8rAcFJ.js.map} +1 -1
  206. package/build/server/chunks/entries/pages/admin/{_error.svelte.js-A2PrM82d.js → _error.svelte.js-_pIY8GZt.js} +4 -4
  207. package/build/server/chunks/entries/pages/admin/{_error.svelte.js-A2PrM82d.js.map → _error.svelte.js-_pIY8GZt.js.map} +1 -1
  208. package/build/server/chunks/entries/pages/admin/{_layout.svelte.js-CEmX0ctx.js → _layout.svelte.js-kYHWUUUk.js} +7 -7
  209. package/build/server/chunks/entries/pages/admin/{_layout.svelte.js-CEmX0ctx.js.map → _layout.svelte.js-kYHWUUUk.js.map} +1 -1
  210. package/build/server/chunks/entries/pages/admin/{_page.server.ts.js-DQnbHD9m.js → _page.server.ts.js-BW7lmmAh.js} +2 -2
  211. package/build/server/chunks/entries/pages/admin/{_page.server.ts.js-DQnbHD9m.js.map → _page.server.ts.js-BW7lmmAh.js.map} +1 -1
  212. package/build/server/chunks/entries/pages/admin/{_page.svelte.js-DFeZdd87.js → _page.svelte.js-DU54dWBG.js} +4 -4
  213. package/build/server/chunks/entries/pages/admin/{_page.svelte.js-DFeZdd87.js.map → _page.svelte.js-DU54dWBG.js.map} +1 -1
  214. package/build/server/chunks/entries/pages/admin/compute/{_page.server.ts.js-D0kp6PWn.js → _page.server.ts.js-bJIqw7I0.js} +2 -2
  215. package/build/server/chunks/entries/pages/admin/compute/{_page.server.ts.js-D0kp6PWn.js.map → _page.server.ts.js-bJIqw7I0.js.map} +1 -1
  216. package/build/server/chunks/entries/pages/admin/compute/{_page.svelte.js-CYFLCvL-.js → _page.svelte.js-CVNUfm2w.js} +69 -8
  217. package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-CVNUfm2w.js.map +1 -0
  218. package/build/server/chunks/entries/pages/admin/projects/_id_/{_page.svelte.js-CCBbU7qv.js → _page.svelte.js-Cyjs-5ff.js} +3 -3
  219. package/build/server/chunks/entries/pages/admin/projects/_id_/{_page.svelte.js-CCBbU7qv.js.map → _page.svelte.js-Cyjs-5ff.js.map} +1 -1
  220. package/build/server/chunks/entries/pages/admin/projects/{_page.svelte.js-Bkkd8GD6.js → _page.svelte.js-Bx0EZ0TV.js} +3 -3
  221. package/build/server/chunks/entries/pages/admin/projects/{_page.svelte.js-Bkkd8GD6.js.map → _page.svelte.js-Bx0EZ0TV.js.map} +1 -1
  222. package/build/server/chunks/entries/pages/admin/system/{_page.server.ts.js-D6Fpu7na.js → _page.server.ts.js-Bvx1HC3R.js} +2 -2
  223. package/build/server/chunks/entries/pages/admin/system/{_page.server.ts.js-D6Fpu7na.js.map → _page.server.ts.js-Bvx1HC3R.js.map} +1 -1
  224. package/build/server/chunks/entries/pages/admin/system/{_page.svelte.js-AJ46M2ES.js → _page.svelte.js-Dhsls68T.js} +3 -3
  225. package/build/server/chunks/entries/pages/admin/system/{_page.svelte.js-AJ46M2ES.js.map → _page.svelte.js-Dhsls68T.js.map} +1 -1
  226. package/build/server/chunks/entries/pages/admin/users/{_page.svelte.js-DjCwPBJI.js → _page.svelte.js-DaABJIY5.js} +3 -3
  227. package/build/server/chunks/entries/pages/admin/users/{_page.svelte.js-DjCwPBJI.js.map → _page.svelte.js-DaABJIY5.js.map} +1 -1
  228. package/build/server/chunks/entries/pages/auth/email/sent/{_page.svelte.js-Rm7eqPCP.js → _page.svelte.js-BTuy0dz7.js} +4 -4
  229. package/build/server/chunks/entries/pages/auth/email/sent/{_page.svelte.js-Rm7eqPCP.js.map → _page.svelte.js-BTuy0dz7.js.map} +1 -1
  230. package/build/server/chunks/entries/pages/docs/api/{_page.svelte.js-BVQfZ0Dd.js → _page.svelte.js-BopOmuh2.js} +3 -3
  231. package/build/server/chunks/entries/pages/docs/api/{_page.svelte.js-BVQfZ0Dd.js.map → _page.svelte.js-BopOmuh2.js.map} +1 -1
  232. package/build/server/chunks/entries/pages/library/_guid_/{_page.server.ts.js-GBu_874l.js → _page.server.ts.js-CO1DH33y.js} +2 -2
  233. package/build/server/chunks/entries/pages/library/_guid_/{_page.server.ts.js-GBu_874l.js.map → _page.server.ts.js-CO1DH33y.js.map} +1 -1
  234. package/build/server/chunks/entries/pages/library/_guid_/{_page.svelte.js-BqY1bOco.js → _page.svelte.js-CnLgXqlI.js} +5 -5
  235. package/build/server/chunks/entries/pages/library/_guid_/{_page.svelte.js-BqY1bOco.js.map → _page.svelte.js-CnLgXqlI.js.map} +1 -1
  236. package/build/server/chunks/entries/pages/library/{_page.svelte.js-Bj39JQj_.js → _page.svelte.js-xH5ciilc.js} +6 -6
  237. package/build/server/chunks/entries/pages/library/{_page.svelte.js-Bj39JQj_.js.map → _page.svelte.js-xH5ciilc.js.map} +1 -1
  238. package/build/server/chunks/entries/pages/login/{_page.svelte.js-DZ4whkuu.js → _page.svelte.js-O4sI9d8p.js} +4 -4
  239. package/build/server/chunks/entries/pages/login/{_page.svelte.js-DZ4whkuu.js.map → _page.svelte.js-O4sI9d8p.js.map} +1 -1
  240. package/build/server/chunks/entries/pages/projects/{_layout.svelte.js-DjsEOFDp.js → _layout.svelte.js-DIH4NLjj.js} +6 -6
  241. package/build/server/chunks/entries/pages/projects/{_layout.svelte.js-DjsEOFDp.js.map → _layout.svelte.js-DIH4NLjj.js.map} +1 -1
  242. package/build/server/chunks/entries/pages/projects/{_page.svelte.js-DfHRFGKI.js → _page.svelte.js-BGp4u5AC.js} +4 -4
  243. package/build/server/chunks/entries/pages/projects/{_page.svelte.js-DfHRFGKI.js.map → _page.svelte.js-BGp4u5AC.js.map} +1 -1
  244. package/build/server/chunks/entries/pages/setup/{_page.svelte.js-Cj-FQK8p.js → _page.svelte.js-BrqGvYjU.js} +4 -4
  245. package/build/server/chunks/entries/pages/setup/{_page.svelte.js-Cj-FQK8p.js.map → _page.svelte.js-BrqGvYjU.js.map} +1 -1
  246. package/build/server/chunks/entries/pages/team/{_layout.svelte.js-k39exnUu.js → _layout.svelte.js-BPaXzMHU.js} +8 -8
  247. package/build/server/chunks/entries/pages/team/{_layout.svelte.js-k39exnUu.js.map → _layout.svelte.js-BPaXzMHU.js.map} +1 -1
  248. package/build/server/chunks/entries/pages/team/compute/{_page.svelte.js-DTW-JwVq.js → _page.svelte.js-ClAfhyVc.js} +4 -4
  249. package/build/server/chunks/entries/pages/team/compute/{_page.svelte.js-DTW-JwVq.js.map → _page.svelte.js-ClAfhyVc.js.map} +1 -1
  250. package/build/server/chunks/entries/pages/team/members/{_page.svelte.js-Bqfq7Ap6.js → _page.svelte.js-BVTKeE8v.js} +3 -3
  251. package/build/server/chunks/entries/pages/team/members/{_page.svelte.js-Bqfq7Ap6.js.map → _page.svelte.js-BVTKeE8v.js.map} +1 -1
  252. package/build/server/chunks/entries/pages/team/projects/{_page.svelte.js-CsndEZLl.js → _page.svelte.js-8C2RnMjF.js} +3 -3
  253. package/build/server/chunks/entries/pages/team/projects/{_page.svelte.js-CsndEZLl.js.map → _page.svelte.js-8C2RnMjF.js.map} +1 -1
  254. package/build/server/chunks/entries/pages/team/reclaim/{_page.svelte.js-DNyMMl_1.js → _page.svelte.js-CjQSU5-x.js} +3 -3
  255. package/build/server/chunks/entries/pages/team/reclaim/{_page.svelte.js-DNyMMl_1.js.map → _page.svelte.js-CjQSU5-x.js.map} +1 -1
  256. package/build/server/chunks/entries/pages/team/shares/{_page.svelte.js-ybQpjAxm.js → _page.svelte.js-DRjOR6nf.js} +3 -3
  257. package/build/server/chunks/entries/pages/team/shares/{_page.svelte.js-ybQpjAxm.js.map → _page.svelte.js-DRjOR6nf.js.map} +1 -1
  258. package/build/server/chunks/{handler-C0uHF5Uf.js → handler-DCYPzYCM.js} +3 -3
  259. package/build/server/chunks/{handler-C0uHF5Uf.js.map → handler-DCYPzYCM.js.map} +1 -1
  260. package/build/server/chunks/{index.js-zgWzXcN1.js → index.js-BlZI7QAl.js} +2 -2
  261. package/build/server/chunks/{index.js-zgWzXcN1.js.map → index.js-BlZI7QAl.js.map} +1 -1
  262. package/build/server/chunks/{manifest.js-CEn5_oKp.js → manifest.js-DfDUXZZb.js} +57 -57
  263. package/build/server/chunks/{manifest.js-CEn5_oKp.js.map → manifest.js-DfDUXZZb.js.map} +1 -1
  264. package/build/server/chunks/nodes/{1.js-DYMJQVXb.js → 1.js-0k4Q1CUa.js} +3 -3
  265. package/build/server/chunks/nodes/{1.js-DYMJQVXb.js.map → 1.js-0k4Q1CUa.js.map} +1 -1
  266. package/build/server/chunks/nodes/{11.js-fhegAQaC.js → 11.js-BVMePxTN.js} +5 -5
  267. package/build/server/chunks/nodes/{11.js-fhegAQaC.js.map → 11.js-BVMePxTN.js.map} +1 -1
  268. package/build/server/chunks/nodes/{13.js-CYeHXH62.js → 13.js-DT3ER-mA.js} +3 -3
  269. package/build/server/chunks/nodes/{13.js-CYeHXH62.js.map → 13.js-DT3ER-mA.js.map} +1 -1
  270. package/build/server/chunks/nodes/{14.js-dEul16UA.js → 14.js-C3mWRw82.js} +3 -3
  271. package/build/server/chunks/nodes/{14.js-dEul16UA.js.map → 14.js-C3mWRw82.js.map} +1 -1
  272. package/build/server/chunks/nodes/{15.js-CDXio7Y4.js → 15.js-ClHtLekr.js} +5 -5
  273. package/build/server/chunks/nodes/{15.js-CDXio7Y4.js.map → 15.js-ClHtLekr.js.map} +1 -1
  274. package/build/server/chunks/nodes/{16.js-vy559aHs.js → 16.js-CKmU3T7x.js} +3 -3
  275. package/build/server/chunks/nodes/{16.js-vy559aHs.js.map → 16.js-CKmU3T7x.js.map} +1 -1
  276. package/build/server/chunks/nodes/{17.js-CwUy643m.js → 17.js-DDXCK7zX.js} +3 -3
  277. package/build/server/chunks/nodes/{17.js-CwUy643m.js.map → 17.js-DDXCK7zX.js.map} +1 -1
  278. package/build/server/chunks/nodes/{19.js-Do7i5eaR.js → 19.js-B1CvDggk.js} +3 -3
  279. package/build/server/chunks/nodes/{19.js-Do7i5eaR.js.map → 19.js-B1CvDggk.js.map} +1 -1
  280. package/build/server/chunks/nodes/{2.js-BXu7y1Xy.js → 2.js-DPOaiQc8.js} +3 -3
  281. package/build/server/chunks/nodes/{2.js-BXu7y1Xy.js.map → 2.js-DPOaiQc8.js.map} +1 -1
  282. package/build/server/chunks/nodes/{20.js-Cp2seFGs.js → 20.js-CHfw5XxR.js} +3 -3
  283. package/build/server/chunks/nodes/{20.js-Cp2seFGs.js.map → 20.js-CHfw5XxR.js.map} +1 -1
  284. package/build/server/chunks/nodes/{21.js-DOp_6rrP.js → 21.js-CEhXbvED.js} +5 -5
  285. package/build/server/chunks/nodes/{21.js-DOp_6rrP.js.map → 21.js-CEhXbvED.js.map} +1 -1
  286. package/build/server/chunks/nodes/{22.js-KjU4sEZJ.js → 22.js-CKYcnK6_.js} +3 -3
  287. package/build/server/chunks/nodes/{22.js-KjU4sEZJ.js.map → 22.js-CKYcnK6_.js.map} +1 -1
  288. package/build/server/chunks/nodes/{24.js-AJ92ZB8v.js → 24.js-BuUXZPiJ.js} +3 -3
  289. package/build/server/chunks/nodes/{24.js-AJ92ZB8v.js.map → 24.js-BuUXZPiJ.js.map} +1 -1
  290. package/build/server/chunks/nodes/{25.js-xeByPyE3.js → 25.js-Cs3OrJTb.js} +3 -3
  291. package/build/server/chunks/nodes/{25.js-xeByPyE3.js.map → 25.js-Cs3OrJTb.js.map} +1 -1
  292. package/build/server/chunks/nodes/{28.js-BWi16-3i.js → 28.js-7JQUcwBF.js} +3 -3
  293. package/build/server/chunks/nodes/{28.js-BWi16-3i.js.map → 28.js-7JQUcwBF.js.map} +1 -1
  294. package/build/server/chunks/nodes/{29.js-XmmelJr_.js → 29.js-CX6C8odg.js} +3 -3
  295. package/build/server/chunks/nodes/{29.js-XmmelJr_.js.map → 29.js-CX6C8odg.js.map} +1 -1
  296. package/build/server/chunks/nodes/{3.js-shK76PEw.js → 3.js-D0qrG17_.js} +3 -3
  297. package/build/server/chunks/nodes/{3.js-shK76PEw.js.map → 3.js-D0qrG17_.js.map} +1 -1
  298. package/build/server/chunks/nodes/{30.js-C_K39wnr.js → 30.js-hXqeecIA.js} +3 -3
  299. package/build/server/chunks/nodes/{30.js-C_K39wnr.js.map → 30.js-hXqeecIA.js.map} +1 -1
  300. package/build/server/chunks/nodes/{31.js-TlgbkCWV.js → 31.js-fX9eHsYv.js} +3 -3
  301. package/build/server/chunks/nodes/{31.js-TlgbkCWV.js.map → 31.js-fX9eHsYv.js.map} +1 -1
  302. package/build/server/chunks/nodes/{33.js-CawPxL7z.js → 33.js-CjVohrVM.js} +3 -3
  303. package/build/server/chunks/nodes/{33.js-CawPxL7z.js.map → 33.js-CjVohrVM.js.map} +1 -1
  304. package/build/server/chunks/nodes/{5.js-aIl-zEEW.js → 5.js-vY20Hgh4.js} +3 -3
  305. package/build/server/chunks/nodes/{5.js-aIl-zEEW.js.map → 5.js-vY20Hgh4.js.map} +1 -1
  306. package/build/server/chunks/nodes/{6.js-jXDkV9p2.js → 6.js-BYm5Y6p2.js} +3 -3
  307. package/build/server/chunks/nodes/{6.js-jXDkV9p2.js.map → 6.js-BYm5Y6p2.js.map} +1 -1
  308. package/build/server/chunks/nodes/{7.js-CHYZ92Kz.js → 7.js-CcyUjOk-.js} +3 -3
  309. package/build/server/chunks/nodes/{7.js-CHYZ92Kz.js.map → 7.js-CcyUjOk-.js.map} +1 -1
  310. package/build/server/chunks/nodes/{8.js-DPcnPjHj.js → 8.js-CJUqis2e.js} +3 -3
  311. package/build/server/chunks/nodes/{8.js-DPcnPjHj.js.map → 8.js-CJUqis2e.js.map} +1 -1
  312. package/build/server/chunks/nodes/{9.js-Cbo2i-US.js → 9.js-C2M9uKjl.js} +5 -5
  313. package/build/server/chunks/nodes/{9.js-Cbo2i-US.js.map → 9.js-C2M9uKjl.js.map} +1 -1
  314. package/package.json +8 -8
  315. package/build/client/_app/immutable/chunks/3g59Qd6G.js.br +0 -0
  316. package/build/client/_app/immutable/chunks/3g59Qd6G.js.gz +0 -0
  317. package/build/client/_app/immutable/chunks/CsdA-c5v.js.br +0 -0
  318. package/build/client/_app/immutable/chunks/CsdA-c5v.js.gz +0 -0
  319. package/build/client/_app/immutable/chunks/Ct0B1C-6.js.br +0 -0
  320. package/build/client/_app/immutable/chunks/Ct0B1C-6.js.gz +0 -0
  321. package/build/client/_app/immutable/chunks/D9mrwhjI.js.br +0 -0
  322. package/build/client/_app/immutable/chunks/D9mrwhjI.js.gz +0 -0
  323. package/build/client/_app/immutable/chunks/DDZHb50K.js.br +0 -0
  324. package/build/client/_app/immutable/chunks/DDZHb50K.js.gz +0 -0
  325. package/build/client/_app/immutable/chunks/DPMlkLnX.js.br +0 -3
  326. package/build/client/_app/immutable/chunks/DPMlkLnX.js.gz +0 -0
  327. package/build/client/_app/immutable/chunks/R7RfXtkr.js.br +0 -0
  328. package/build/client/_app/immutable/chunks/R7RfXtkr.js.gz +0 -0
  329. package/build/client/_app/immutable/chunks/RlomQNCr.js +0 -1
  330. package/build/client/_app/immutable/chunks/RlomQNCr.js.br +0 -2
  331. package/build/client/_app/immutable/chunks/RlomQNCr.js.gz +0 -0
  332. package/build/client/_app/immutable/entry/app.BMcWaHUc.js.br +0 -0
  333. package/build/client/_app/immutable/entry/app.BMcWaHUc.js.gz +0 -0
  334. package/build/client/_app/immutable/entry/start.BR7ivuzq.js +0 -1
  335. package/build/client/_app/immutable/entry/start.BR7ivuzq.js.br +0 -1
  336. package/build/client/_app/immutable/entry/start.BR7ivuzq.js.gz +0 -0
  337. package/build/client/_app/immutable/nodes/1.BgrhD8yg.js.br +0 -0
  338. package/build/client/_app/immutable/nodes/1.BgrhD8yg.js.gz +0 -0
  339. package/build/client/_app/immutable/nodes/11.DSnz7OuY.js +0 -3
  340. package/build/client/_app/immutable/nodes/11.DSnz7OuY.js.br +0 -0
  341. package/build/client/_app/immutable/nodes/11.DSnz7OuY.js.gz +0 -0
  342. package/build/client/_app/immutable/nodes/13.B2k79eQZ.js.br +0 -0
  343. package/build/client/_app/immutable/nodes/13.B2k79eQZ.js.gz +0 -0
  344. package/build/client/_app/immutable/nodes/14.CfEpmHVX.js.br +0 -0
  345. package/build/client/_app/immutable/nodes/14.CfEpmHVX.js.gz +0 -0
  346. package/build/client/_app/immutable/nodes/15.nl-fHTBN.js.br +0 -0
  347. package/build/client/_app/immutable/nodes/15.nl-fHTBN.js.gz +0 -0
  348. package/build/client/_app/immutable/nodes/16.DVzCWrup.js.br +0 -0
  349. package/build/client/_app/immutable/nodes/16.DVzCWrup.js.gz +0 -0
  350. package/build/client/_app/immutable/nodes/17.Bf6Oda11.js.br +0 -0
  351. package/build/client/_app/immutable/nodes/17.Bf6Oda11.js.gz +0 -0
  352. package/build/client/_app/immutable/nodes/19.CtApFLV7.js.br +0 -0
  353. package/build/client/_app/immutable/nodes/19.CtApFLV7.js.gz +0 -0
  354. package/build/client/_app/immutable/nodes/2.MSrEo_3A.js.br +0 -0
  355. package/build/client/_app/immutable/nodes/2.MSrEo_3A.js.gz +0 -0
  356. package/build/client/_app/immutable/nodes/20.DBB_f9Te.js.br +0 -0
  357. package/build/client/_app/immutable/nodes/20.DBB_f9Te.js.gz +0 -0
  358. package/build/client/_app/immutable/nodes/21.Jgkp9z8Y.js.br +0 -0
  359. package/build/client/_app/immutable/nodes/21.Jgkp9z8Y.js.gz +0 -0
  360. package/build/client/_app/immutable/nodes/22.D42DZ008.js.br +0 -0
  361. package/build/client/_app/immutable/nodes/22.D42DZ008.js.gz +0 -0
  362. package/build/client/_app/immutable/nodes/24.D8reOFlb.js.br +0 -0
  363. package/build/client/_app/immutable/nodes/24.D8reOFlb.js.gz +0 -0
  364. package/build/client/_app/immutable/nodes/25.BOB3lBr0.js.br +0 -0
  365. package/build/client/_app/immutable/nodes/25.BOB3lBr0.js.gz +0 -0
  366. package/build/client/_app/immutable/nodes/28.DbBbdy20.js.br +0 -0
  367. package/build/client/_app/immutable/nodes/28.DbBbdy20.js.gz +0 -0
  368. package/build/client/_app/immutable/nodes/29.S258JhtV.js.br +0 -0
  369. package/build/client/_app/immutable/nodes/29.S258JhtV.js.gz +0 -0
  370. package/build/client/_app/immutable/nodes/3.RzJ0Db4k.js.br +0 -0
  371. package/build/client/_app/immutable/nodes/3.RzJ0Db4k.js.gz +0 -0
  372. package/build/client/_app/immutable/nodes/30.B4QJcyTH.js.br +0 -0
  373. package/build/client/_app/immutable/nodes/30.B4QJcyTH.js.gz +0 -0
  374. package/build/client/_app/immutable/nodes/31.CFNhxIOf.js.br +0 -0
  375. package/build/client/_app/immutable/nodes/31.CFNhxIOf.js.gz +0 -0
  376. package/build/client/_app/immutable/nodes/33.Bdn-BdjA.js.br +0 -0
  377. package/build/client/_app/immutable/nodes/33.Bdn-BdjA.js.gz +0 -0
  378. package/build/client/_app/immutable/nodes/5.CvvYT2I_.js.br +0 -1
  379. package/build/client/_app/immutable/nodes/5.CvvYT2I_.js.gz +0 -0
  380. package/build/client/_app/immutable/nodes/6.CuP3PuQf.js.br +0 -0
  381. package/build/client/_app/immutable/nodes/6.CuP3PuQf.js.gz +0 -0
  382. package/build/client/_app/immutable/nodes/7.DyEE14eN.js.br +0 -0
  383. package/build/client/_app/immutable/nodes/7.DyEE14eN.js.gz +0 -0
  384. package/build/client/_app/immutable/nodes/8.CUjeSVKZ.js.br +0 -0
  385. package/build/client/_app/immutable/nodes/8.CUjeSVKZ.js.gz +0 -0
  386. package/build/client/_app/immutable/nodes/9.BYQI2zVi.js.br +0 -0
  387. package/build/client/_app/immutable/nodes/9.BYQI2zVi.js.gz +0 -0
  388. package/build/server/chunks/chunks/engine.server.js-BvIpzyKd.js.map +0 -1
  389. package/build/server/chunks/chunks/forms.js-CD_2z_-J.js +0 -2
  390. package/build/server/chunks/chunks/forms.js-CD_2z_-J.js.map +0 -1
  391. package/build/server/chunks/chunks/navigation.js-CD_2z_-J.js +0 -2
  392. package/build/server/chunks/chunks/navigation.js-CD_2z_-J.js.map +0 -1
  393. package/build/server/chunks/entries/endpoints/api/admin/compute/actions/_server.ts.js-By1_1Jg_.js.map +0 -1
  394. package/build/server/chunks/entries/pages/admin/compute/_page.svelte.js-CYFLCvL-.js.map +0 -1
@@ -0,0 +1,3 @@
1
+ import{Bt as e,H as t,J as n,K as r,L as i,Lt as a,Mt as o,O as s,P as c,Q as l,Rt as u,U as d,V as f,Vt as p,_ as m,dt as h,ft as g,g as _,gt as v,it as y,j as b,jt as x,lt as S,mt as C,n as w,o as T,ot as E,pt as D,q as O,s as k,st as A,tt as j,v as ee,vt as M,w as N,xt as P,z as F}from"../chunks/BJr3_fzd.js";import{i as te}from"../chunks/D1C2bDXQ.js";import"../chunks/xihTtKlq.js";import{i as I}from"../chunks/DlZ96M8I.js";import{n as L}from"../chunks/uEs1TBqf.js";import{t as R}from"../chunks/CxPNWG5P.js";import{t as ne}from"../chunks/CH79OQfl.js";import{t as z}from"../chunks/Kt9NbiMl.js";import{t as re}from"../chunks/GnghUMa9.js";import{t as B}from"../chunks/BqEuA-Z7.js";import{t as ie}from"../chunks/BwN3gAty.js";import{t as V}from"../chunks/ZT_LEMHt.js";import{t as ae}from"../chunks/DHwu2YYq.js";import{t as oe}from"../chunks/Kh4cWZvP.js";import{t as H}from"../chunks/Eg7QSmtp.js";import{t as se}from"../chunks/DwMfv5aD.js";import{t as ce}from"../chunks/xldpSbJ4.js";import{n as le,t as ue}from"../chunks/CU86KVhA.js";import{n as U}from"../chunks/DhuzqlSG.js";import{t as de}from"../chunks/DBYj-4Ic.js";import{t as fe}from"../chunks/DqR8kuM6.js";import"../chunks/C6gAy11g.js";var W=new Set([`$$slots`,`$$events`,`$$legacy`]);function pe(e,t){let n=T(t,W),r=[[`path`,{d:`M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21`}],[`path`,{d:`m5.082 11.09 8.828 8.828`}]];L(e,k({name:`eraser`},()=>n,{get iconNode(){return r}}))}var G=new Set([`$$slots`,`$$events`,`$$legacy`]);function me(e,t){let n=T(t,G),r=[[`path`,{d:`M12 2v10`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`}]];L(e,k({name:`power`},()=>n,{get iconNode(){return r}}))}var he=6e4,ge=5e3;function _e(e){let t=M(C({state:`idle`,reachable:!1,ready:!1,rhinoVersion:null,computeVersion:null,selvaInstalled:!1,selvaVersion:null,plugins:{},activeChildren:null,idleSpanSeconds:null,failureSummary:null})),n=null,r=0,i=!1,a=!1;async function o(){if(i)return!1;try{let n=await fetch(`/api/admin/compute/status?serverId=${e()}`);if(i)return!1;if(!n.ok)return v(t,{...l(t),reachable:!1,ready:!1},!0),!1;let r=await n.json(),o=r.reachable,s=r.ready??o;return a=!o&&r.retryable===!1,v(t,{reachable:o,ready:s,failureSummary:r.failureSummary??null,rhinoVersion:r.rhinoVersion,computeVersion:r.computeVersion,selvaInstalled:r.selvaInstalled,selvaVersion:r.selvaVersion,plugins:r.plugins??{},activeChildren:r.activeChildren??null,idleSpanSeconds:r.idleSpanSeconds??null,state:o?s?r.selvaInstalled?`ok`:`warning`:`loading`:`error`},!0),s}catch{return a=!1,i||v(t,{...l(t),reachable:!1,ready:!1},!0),!1}}async function s(){let e=await o();if(!(i||e)){if(a){v(t,{...l(t),state:`error`,reachable:!1,ready:!1},!0);return}Date.now()<r?(l(t).state!==`loading`&&v(t,{...l(t),state:`checking`},!0),n=setTimeout(s,ge)):l(t).reachable?v(t,{...l(t),state:`warning`},!0):v(t,{...l(t),state:`error`,reachable:!1,ready:!1},!0)}}function c(){i||(n!==null&&(clearTimeout(n),n=null),r=Date.now()+he,a=!1,v(t,{...l(t),state:`checking`,failureSummary:null},!0),s())}function u(){i=!0,n!==null&&(clearTimeout(n),n=null)}return{get state(){return l(t)},check:c,stop:u}}var ve=d(`<p class="text-muted-foreground text-xs"> </p>`),ye=d(`<!> `,1),be=d(`<div class="space-y-2 rounded-lg border p-4"><div class="flex items-baseline justify-between gap-3"><div><p class="text-sm font-medium"> </p> <p class="text-muted-foreground text-xs"> </p></div> <div class="text-right"><p class="text-2xl font-semibold tabular-nums"> </p> <p class="text-muted-foreground text-xs">hit rate</p></div></div> <dl class="text-muted-foreground grid grid-cols-3 gap-2 text-xs"><div><dt>Hits</dt> <dd class="text-foreground font-mono tabular-nums"> </dd></div> <div><dt>Misses</dt> <dd class="text-foreground font-mono tabular-nums"> </dd></div> <div><dt>Evictions</dt> <dd class="text-foreground font-mono tabular-nums"> </dd></div></dl> <div class="text-muted-foreground flex items-center justify-between gap-3 border-t pt-2 text-xs"><span> </span> <code class="font-mono text-[10px]"> </code></div> <!> <div class="flex justify-end"><!></div></div>`),xe=d(`<button class="text-muted-foreground hover:text-foreground ml-auto flex items-center gap-1 text-xs"> <!></button>`),Se=d(`<p class="text-muted-foreground text-xs">No organizations exist yet.</p>`),Ce=d(`<label class="hover:bg-muted/40 flex items-center gap-2 rounded px-2 py-1 text-xs"><input type="checkbox" class="h-3.5 w-3.5"/> <span class="truncate"> </span> <span class="text-muted-foreground ml-auto font-mono text-[10px]"> </span></label>`),we=d(`<div class="grid gap-1 sm:grid-cols-2"></div>`),Te=d(`<p class="text-muted-foreground text-xs">This server is the global default — it stays visible to every org regardless of the
2
+ allowlist.</p>`),Ee=d(`<p class="text-muted-foreground text-xs">No orgs selected — this server is dormant (admin-only).</p>`),De=d(`<div class="space-y-2"><div class="flex items-center gap-3"><p class="text-muted-foreground text-xs">Available to</p> <div class="bg-muted inline-flex rounded-md p-0.5"><button>All orgs</button> <button>Specific orgs</button></div> <!></div> <!> <!></div>`),Oe=d(`<div class="flex items-center justify-between gap-3"><p class="text-destructive text-xs font-medium"><span class="line-through"> </span> will be removed when you save</p> <!></div>`),ke=d(`<span class="flex items-center gap-1 rounded-full bg-green-100 px-2 py-0.5 text-xs font-medium text-green-800 dark:bg-green-900/30 dark:text-green-400"><!> default</span>`),Ae=d(`<button class="text-muted-foreground hover:text-foreground text-xs underline-offset-2 hover:underline">set as default</button>`),je=d(`<!> <!>`,1),Me=d(`<span class="text-muted-foreground">Loading…</span>`),Ne=d(`<span class="text-red-600 dark:text-red-400">Not installed</span>`),Pe=d(`<div class="grid grid-cols-3 gap-2"><div class="bg-muted/40 rounded-md px-3 py-2"><p class="text-muted-foreground text-xs">Rhino</p> <p class="mt-0.5 text-xs font-medium"> </p></div> <div class="bg-muted/40 rounded-md px-3 py-2"><p class="text-muted-foreground text-xs">Compute</p> <p class="mt-0.5 text-xs font-medium"> </p></div> <div class="bg-muted/40 rounded-md px-3 py-2"><p class="text-muted-foreground text-xs">Selva Plugin</p> <p class="mt-0.5 text-xs font-medium"><!></p></div></div> <div class="grid grid-cols-2 gap-2"><div class="bg-muted/40 rounded-md px-3 py-2"><p class="text-muted-foreground text-xs">Active children</p> <p class="mt-0.5 text-xs font-medium"> </p></div> <div class="bg-muted/40 rounded-md px-3 py-2"><p class="text-muted-foreground text-xs">Idle for</p> <p class="mt-0.5 text-xs font-medium"> </p></div></div>`,1),Fe=d(`<button class="text-muted-foreground hover:text-destructive shrink-0 text-xs underline-offset-2 hover:underline">Clear</button>`),Ie=d(`<button class="text-muted-foreground hover:text-foreground shrink-0 text-xs underline-offset-2 hover:underline">Undo</button>`),Le=d(`<div class="bg-muted/40 flex items-center justify-between rounded-md px-3 py-1.5"><span class="text-xs font-medium"> </span> <span class="text-muted-foreground text-xs"> </span></div>`),Re=d(`<div class="mt-2 grid gap-1.5 sm:grid-cols-2 lg:grid-cols-3"></div>`),ze=d(`<div><button class="text-muted-foreground hover:text-foreground flex items-center gap-1 text-xs"><!> </button> <!></div>`),Be=d(`<div><!> <div><div class="flex items-center gap-2"><!> <!></div> <div class="flex items-center gap-3"><div class="flex items-center gap-1.5"><!> <span> </span></div> <!> <!> <!> <!></div></div> <!> <!> <div><div class="space-y-1"><p class="text-muted-foreground text-xs">Server URL</p> <!></div> <div class="space-y-1"><p class="text-muted-foreground text-xs">API Key (optional)</p> <div class="flex gap-1.5"><!> <!></div></div> <div class="space-y-1"><p class="text-muted-foreground text-xs">Timeout (ms)</p> <!></div> <div class="space-y-1"><p class="text-muted-foreground text-xs">Retries</p> <!></div></div> <!> <!></div>`),Ve=d(`<!> Add server`,1),He=d(`<!> <button type="button" class="border-muted-foreground/30 text-muted-foreground hover:border-foreground/50 hover:text-foreground hover:bg-muted/30 flex w-full items-center justify-center gap-2 rounded-lg border border-dashed py-4 text-sm font-medium transition-colors"><!> Add another server</button>`,1),Ue=d(`<span class="text-muted-foreground font-normal"> </span>`),We=d(`<div class="bg-background/95 sticky bottom-4 z-10 flex items-center justify-between gap-4 rounded-lg border border-amber-400/60 p-3 shadow-lg backdrop-blur dark:border-amber-500/40"><p class="text-sm font-medium"> <!></p> <div class="flex items-center gap-2"><!> <!></div></div>`),Ge=d(`<div class="space-y-6"><!> <!> <!> <!> <!></div> <!> <!> <!> <!>`,1);function Ke(d,T){o(T,!0);let O=(t,n=e,r=e,o=e,s=e,c=e,d=e)=>{let p=P(()=>he(s()));var m=be(),_=h(m),y=h(_),b=h(y),x=h(b,!0);u(b);var S=D(b,2),C=h(S,!0);u(S),u(y);var w=D(y,2),T=h(w),O=h(T,!0);u(T),a(2),u(w),u(_);var k=D(_,2),A=h(k),j=D(h(A),2),ee=h(j,!0);u(j),u(A);var M=D(A,2),N=D(h(M),2),te=h(N,!0);u(N),u(M);var I=D(M,2),L=D(h(I),2),ne=h(L,!0);u(L),u(I),u(k);var z=D(k,2),re=h(z),B=h(re);u(re);var ie=D(re,2),V=h(ie,!0);u(ie),u(z);var ae=D(z,2),oe=e=>{var t=ve(),n=h(t,!0);u(t),E(()=>F(n,c())),f(e,t)};i(ae,e=>{c()&&e(oe)});var H=D(ae,2),se=h(H);{let e=P(()=>l(gt)!==null||s().entries===0);R(se,{variant:`outline`,size:`sm`,get disabled(){return l(e)},onclick:()=>{v(_t,{action:d(),label:n().toLowerCase()},!0),v(vt,!0)},children:(e,t)=>{var n=ye(),r=g(n);pe(r,{class:`mr-1 h-3.5 w-3.5`});var i=D(r);E(()=>F(i,` ${l(gt)===d()?`Clearing…`:`Clear`}`)),f(e,n)},$$slots:{default:!0}})}u(H),u(m),E((e,t,i,a,c,u)=>{F(x,n()),F(C,r()),F(O,l(p)===null?`—`:`${l(p)}%`),F(ee,e),F(te,t),F(ne,i),F(B,`${a??``}
3
+ ${s().entries===1?`entry`:`entries`} · ${c??``} of ${u??``}`),F(V,o())},[()=>s().hits.toLocaleString(),()=>s().misses.toLocaleString(),()=>s().evictions.toLocaleString(),()=>s().entries.toLocaleString(),()=>G(s().bytes),()=>G(s().budgetBytes)]),f(t,m)},k=(r,a=e)=>{let o=P(()=>a().sharedWith===`all`),s=P(()=>l(o)?new Set:new Set(a().sharedWith)),d=P(()=>a().id===l(q));var p=De(),m=h(p),v=D(h(m),2),y=h(v),b=D(y,2);u(v);var x=D(v,2),S=e=>{var t=xe(),r=h(t),o=D(r),c=e=>{z(e,{class:`h-3 w-3`})},d=e=>{ne(e,{class:`h-3 w-3`})};i(o,e=>{Z[a().id]?e(c):e(d,-1)}),u(t),E(()=>F(r,`${l(s).size??``}/${T.data.orgs.length??``} selected `)),n(`click`,t,()=>Z[a().id]=!Z[a().id]),f(e,t)};i(x,e=>{!l(o)&&T.data.orgs.length>0&&e(S)}),u(m);var C=D(m,2),w=e=>{var r=t(),o=g(r),d=e=>{var t=Se();f(e,t)},p=e=>{var t=we();c(t,21,()=>T.data.orgs,e=>e.id,(e,t)=>{var r=Ce(),i=h(r);_(i);var o=D(i,2),c=h(o,!0);u(o);var d=D(o,2),p=h(d,!0);u(d),u(r),E(e=>{ee(i,e),F(c,l(t).name),F(p,l(t).slug)},[()=>l(s).has(l(t).id)]),n(`change`,i,()=>ot(a(),l(t).id)),f(e,r)}),u(t),f(e,t)};i(o,e=>{T.data.orgs.length===0?e(d):e(p,-1)}),f(e,r)};i(C,e=>{!l(o)&&Z[a().id]&&e(w)});var O=D(C,2),k=e=>{var t=Te();f(e,t)},A=e=>{var t=Ee();f(e,t)};i(O,e=>{!l(o)&&l(d)?e(k):!l(o)&&l(s).size===0&&e(A,1)}),u(p),E(()=>{N(y,1,`rounded px-2 py-0.5 text-xs ${l(o)?`bg-background shadow-sm`:`text-muted-foreground hover:text-foreground`}`),N(b,1,`rounded px-2 py-0.5 text-xs ${l(o)?`text-muted-foreground hover:text-foreground`:`bg-background shadow-sm`}`)}),n(`click`,y,()=>at(a(),!0)),n(`click`,b,()=>at(a(),!1)),f(r,p)},L=(t,o=e)=>{let s=P(()=>l($)[o().id]?.state),d=P(()=>Ke[l(s)?.state??`idle`]),_=P(()=>l(s)?.state===`checking`||l(s)?.state===`loading`),y=P(()=>Object.entries(l(s)?.plugins??{})),b=P(()=>X.has(o().id)),x=P(()=>Y.has(o().id)&&!l(b));var S=Be(),C=h(S),w=e=>{var t=Oe(),n=h(t),i=h(n),s=h(i,!0);u(i),a(),u(n);var c=D(n,2);R(c,{variant:`ghost`,size:`sm`,onclick:()=>it(o().id),get disabled(){return l(J)},class:`h-7`,children:(e,t)=>{a();var n=r(`Undo`);f(e,n)},$$slots:{default:!0}}),u(t),E(()=>F(s,o().label)),f(e,t)};i(C,e=>{l(b)&&e(w)});var O=D(C,2),A=h(O),j=h(A);ce(j,{placeholder:`label`,get value(){return o().label},oninput:e=>{let t=e.target;o().label=t.value.toLowerCase().replace(/[^a-z0-9_-]/g,``),t.value=o().label,Q(o().id)},class:`h-7 w-32 font-mono text-xs`});var ee=D(j,2),M=e=>{var t=ke(),n=h(t);ae(n,{class:`h-3 w-3`}),a(),u(t),f(e,t)},te=e=>{var t=Ae();n(`click`,t,()=>{v(q,o().id,!0),Q(o().id)}),f(e,t)};i(ee,e=>{o().id===l(q)?e(M):e(te,-1)}),u(A);var I=D(A,2),L=h(I),B=h(L);re(B,{get class(){return`h-2.5 w-2.5 shrink-0 fill-current ${l(d).color??``}`}});var V=D(B,2),H=h(V,!0);u(V),u(L);var se=D(L,2);R(se,{variant:`outline`,size:`sm`,onclick:()=>l($)[o().id]?.check(),get disabled(){return l(_)},class:`h-7`,title:`Probe this server's availability (retries for up to 1 min)`,children:(e,t)=>{var n=ye(),r=g(n);{let e=P(()=>l(_)?`animate-spin`:``);ie(r,{get class(){return`mr-1.5 h-3.5 w-3.5 ${l(e)??``}`}})}var i=D(r);E(()=>F(i,` ${l(_)?`Checking…`:`Check`}`)),f(e,n)},$$slots:{default:!0}});var le=D(se,2),ue=e=>{let t=P(()=>ct[o().id]);var n=je(),r=g(n);{let e=P(()=>l(t)!==null&&l(t)!==void 0);R(r,{variant:`outline`,size:`sm`,onclick:()=>{v(ut,o(),!0),v(ft,!0)},get disabled(){return l(e)},class:`h-7`,title:`Clear cached solve results across this server's children (best-effort fleet-wide)`,children:(e,n)=>{var r=ye(),i=g(r);pe(i,{class:`mr-1.5 h-3.5 w-3.5`});var a=D(i);E(()=>F(a,` ${l(t)===`purge`?`Purging…`:`Purge cache`}`)),f(e,r)},$$slots:{default:!0}})}var i=D(r,2);{let e=P(()=>l(t)!==null&&l(t)!==void 0);R(i,{variant:`outline`,size:`sm`,onclick:()=>{v(lt,o(),!0),v(dt,!0)},get disabled(){return l(e)},class:`text-destructive hover:text-destructive h-7`,title:`Gracefully shut down all child processes (they auto-respawn on the next request)`,children:(e,n)=>{var r=ye(),i=g(r);me(i,{class:`mr-1.5 h-3.5 w-3.5`});var a=D(i);E(()=>F(a,` ${l(t)===`shutdown`?`Shutting down…`:`Shutdown children`}`)),f(e,r)},$$slots:{default:!0}})}f(e,n)};i(le,e=>{l(s)?.reachable&&e(ue)});var U=D(le,2),de=e=>{R(e,{variant:`ghost`,size:`sm`,onclick:()=>$e(o().id),get disabled(){return l(J)},class:`text-muted-foreground hover:text-foreground h-7`,title:`Revert this server to its saved values`,children:(e,t)=>{a();var n=r(`Discard`);f(e,n)},$$slots:{default:!0}})};i(U,e=>{l(x)&&e(de)});var fe=D(U,2);{let e=P(()=>o().id===l(q)),t=P(()=>o().id===l(q)?`Set another server as default before deleting`:void 0);R(fe,{variant:`ghost`,size:`sm`,onclick:()=>{v(pt,o(),!0),v(mt,!0)},get disabled(){return l(e)},get title(){return l(t)},class:`text-destructive hover:text-destructive h-7 w-7 p-0`,children:(e,t)=>{oe(e,{class:`h-3.5 w-3.5`})},$$slots:{default:!0}})}u(I),u(O);var G=D(O,2),he=e=>{var t=ve(),n=h(t,!0);u(t),E(()=>F(n,l(s).failureSummary)),f(e,t)};i(G,e=>{l(s)?.failureSummary&&!l(s).reachable&&!l(b)&&e(he)});var _e=D(G,2),be=e=>{var t=Pe(),n=g(t),a=h(n),o=D(h(a),2),c=h(o,!0);u(o),u(a);var d=D(a,2),p=D(h(d),2),m=h(p,!0);u(p),u(d);var _=D(d,2),v=D(h(_),2),y=h(v),b=e=>{var t=r();E(()=>F(t,l(s).selvaVersion)),f(e,t)},x=e=>{var t=Me();f(e,t)},S=e=>{var t=Ne();f(e,t)};i(y,e=>{l(s).selvaInstalled?e(b):l(s).ready?e(S,-1):e(x,1)}),u(v),u(_),u(n);var C=D(n,2),w=h(C),T=D(h(w),2),O=h(T,!0);u(T),u(w);var k=D(w,2),A=D(h(k),2),j=h(A,!0);u(A),u(k),u(C),E(e=>{F(c,l(s).rhinoVersion??`-`),F(m,l(s).computeVersion??`-`),F(O,l(s).activeChildren??`-`),F(j,e)},[()=>ge(l(s).idleSpanSeconds)]),f(e,t)};i(_e,e=>{l(s)?.reachable&&!l(b)&&e(be)});var xe=D(_e,2),Se=h(xe),Ce=D(h(Se),2);ce(Ce,{placeholder:`http://localhost:5000`,oninput:()=>Q(o().id),class:`font-mono text-xs`,get value(){return o().serverUrl},set value(e){o().serverUrl=e}}),u(Se);var we=D(Se,2),Te=D(h(we),2),Ee=h(Te);{let e=P(()=>o().hasApiKey&&o().apiKey!==W&&!o().apiKey?`Key set - enter new value to replace`:o().apiKey===W?`Key will be cleared on save`:``),t=P(()=>o().apiKey===W?``:o().apiKey),n=P(()=>o().apiKey===W);ce(Ee,{type:`password`,get placeholder(){return l(e)},get value(){return l(t)},get disabled(){return l(n)},oninput:e=>{o().apiKey=e.target.value,Q(o().id)},class:`font-mono text-xs`})}var De=D(Ee,2),Ve=e=>{var t=Fe();n(`click`,t,()=>{o().apiKey=W,Q(o().id)}),f(e,t)},He=e=>{var t=Ie();n(`click`,t,()=>o().apiKey=``),f(e,t)};i(De,e=>{o().hasApiKey&&o().apiKey!==W&&!o().apiKey?e(Ve):o().apiKey===W&&e(He,1)}),u(Te),u(we);var Ue=D(we,2),We=D(h(Ue),2);ce(We,{type:`number`,placeholder:`30000`,oninput:()=>Q(o().id),onblur:()=>{o().timeoutMs=Math.min(3e5,Math.max(1e3,Number(o().timeoutMs)||3e4))},class:`text-xs`,get value(){return o().timeoutMs},set value(e){o().timeoutMs=e}}),u(Ue);var Ge=D(Ue,2),K=D(h(Ge),2);ce(K,{type:`number`,placeholder:`0`,oninput:()=>Q(o().id),onblur:()=>{o().retryCount=Math.min(5,Math.max(0,Number(o().retryCount)||0))},class:`text-xs`,get value(){return o().retryCount},set value(e){o().retryCount=e}}),u(Ge),u(xe);var Z=D(xe,2),Je=e=>{k(e,o)};i(Z,e=>{T.data.tenancy!==`single`&&!l(b)&&e(Je)});var Ye=D(Z,2),Xe=e=>{var t=ze(),r=h(t),a=h(r),s=e=>{z(e,{class:`h-3 w-3`})},d=e=>{ne(e,{class:`h-3 w-3`})};i(a,e=>{qe[o().id]?e(s):e(d,-1)});var m=D(a);u(r);var g=D(r,2),_=e=>{var t=Re();c(t,21,()=>l(y),([e,t])=>e,(e,t)=>{var n=P(()=>p(l(t),2));let r=()=>l(n)[0],i=()=>l(n)[1];var a=Le(),o=h(a),s=h(o,!0);u(o);var c=D(o,2),d=h(c,!0);u(c),u(a),E(()=>{F(s,r()),F(d,i())}),f(e,a)}),u(t),f(e,t)};i(g,e=>{qe[o().id]&&e(_)}),u(t),E(()=>F(m,` ${l(y).length??``} Grasshopper plugin${l(y).length===1?``:`s`}`)),n(`click`,r,()=>qe[o().id]=!qe[o().id]),f(e,t)};i(Ye,e=>{l(s)?.reachable&&l(y).length>0&&!l(b)&&e(Xe)}),u(S),E(()=>{N(S,1,`space-y-3 rounded-lg border p-4 transition-colors ${l(b)?`border-destructive/40 bg-destructive/5`:l(x)?`border-amber-400/60 bg-amber-50/30 dark:border-amber-500/40 dark:bg-amber-950/10`:`bg-muted/30`}`),N(O,1,`flex items-center justify-between ${l(b)?`pointer-events-none opacity-50`:``}`),m(L,`title`,l(s)?.failureSummary??void 0),N(V,1,`text-xs font-medium ${l(d).color??``}`),F(H,l(d).label),N(xe,1,`grid gap-2 sm:grid-cols-2 ${l(b)?`pointer-events-none opacity-50`:``}`)}),f(t,S)},W=`__clear__`;function G(e){return e>=1073741824?`${(e/1073741824).toFixed(1)} GB`:e>=1048576?`${Math.round(e/1048576)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function he(e){let t=e.hits+e.misses;return t===0?null:Math.round(e.hits/t*100)}function ge(e){if(e===null)return`-`;if(e<5)return`just now`;if(e<60)return`${Math.round(e)}s`;let t=Math.floor(e/60);return t<60?`${t}m`:`${Math.floor(t/60)}h ${t%60}m`}let Ke={idle:{label:`Not checked`,color:`text-muted-foreground`},ok:{label:`Online`,color:`text-green-600 dark:text-green-400`},warning:{label:`Warning`,color:`text-yellow-600 dark:text-yellow-400`},error:{label:`Offline`,color:`text-red-600 dark:text-red-400`},checking:{label:`Checking…`,color:`text-blue-600 dark:text-blue-400`},loading:{label:`Loading plugins…`,color:`text-blue-600 dark:text-blue-400`}},K=M(C([])),q=M(``),J=M(!1),Y=new I,X=new I,qe=C({}),Z=C({});function Je(e){return{id:e.id,label:e.label,serverUrl:e.serverUrl,sharedWith:e.sharedWith===`all`?`all`:[...e.sharedWith],timeoutMs:e.timeoutMs??3e4,retryCount:e.retryCount??0,apiKey:``,hasApiKey:e.hasApiKey}}function Q(e){Y.add(e)}let Ye=P(()=>Y.size+X.size),Xe=P(()=>l(q)!==T.data.defaultServerId&&l(K).some(e=>!X.has(e.id))),Ze=P(()=>l(Ye)>0||l(Xe));function Qe(e){l($)[e]?.stop();let{[e]:t,...n}=l($);v($,n,!0)}function $e(e){Y.delete(e),X.delete(e);let t=T.data.servers.find(t=>t.id===e);if(!t){Qe(e),v(K,l(K).filter(t=>t.id!==e),!0);return}let n=l(K).findIndex(t=>t.id===e);n>=0&&(l(K)[n]=Je(t))}function et(){for(let e of[...Y,...X])T.data.servers.some(t=>t.id===e)||Qe(e);Y.clear(),X.clear(),v(K,T.data.servers.map(Je),!0),v(q,T.data.defaultServerId,!0)}let $=M(C({}));function tt(e){return l($)[e]||(l($)[e]=_e(()=>e)),l($)[e]}A(()=>{Y.size===0&&X.size===0&&(v(K,T.data.servers.map(Je),!0),v(q,T.data.defaultServerId,!0))}),A(()=>{let e=T.data.servers.map(e=>e.id);j(()=>{for(let t of e)tt(t)})}),w(()=>{for(let e of Object.values(l($)))e.stop()});function nt(){let e=fe();l(K).length===0&&v(q,e,!0),v(K,[...l(K),{id:e,label:`new-server`,serverUrl:`http://localhost:5000`,sharedWith:`all`,apiKey:``,hasApiKey:!1,timeoutMs:3e4,retryCount:0}],!0),tt(e),Q(e)}function rt(e){T.data.servers.some(t=>t.id===e.id)?(X.add(e.id),Y.delete(e.id)):(Y.delete(e.id),Qe(e.id),v(K,l(K).filter(t=>t.id!==e.id),!0)),v(mt,!1)}function it(e){X.delete(e)}function at(e,t){e.sharedWith=t?`all`:[],Q(e.id)}function ot(e,t){e.sharedWith!==`all`&&(e.sharedWith=e.sharedWith.includes(t)?e.sharedWith.filter(e=>e!==t):[...e.sharedWith,t],Q(e.id))}async function st(){v(J,!0);try{let e=l(K).filter(e=>!X.has(e.id)),t={defaultServerId:e.some(e=>e.id===l(q))?l(q):e[0]?.id??``,servers:e.map(({apiKey:e,hasApiKey:t,retryCount:n,timeoutMs:r,...i})=>({...i,timeoutMs:Math.min(3e5,Math.max(1e3,Number(r)||3e4)),...e===W?{apiKey:null}:e?{apiKey:e}:{},...Number(n)?{retryCount:Math.min(5,Math.max(0,Number(n)))}:{}}))},n=await fetch(`/api/admin/compute`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(n.ok){U.success(X.size>0?`Saved — ${X.size} server${X.size===1?``:`s`} removed`:`Compute config saved`);for(let e of X)Qe(e);await te(),Y.clear(),X.clear();for(let e of Object.values(l($)))e.stop();v($,{},!0);for(let e of l(K))tt(e.id)}else{let e=await n.json().catch(()=>({error:`Unknown error`}));U.error(e.message||e.error||`Failed to save (${n.status})`)}}catch{U.error(`Failed to save compute config`)}finally{v(J,!1)}}let ct=C({}),lt=M(null),ut=M(null),dt=M(!1),ft=M(!1),pt=M(null),mt=M(!1);async function ht(e,t){ct[e.id]=t;try{let n=await fetch(`/api/admin/compute/actions`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({serverId:e.id,action:t})}),r=await n.json().catch(()=>({}));if(!n.ok){U.error(r.message||r.error||`Action failed (${n.status})`);return}if(t===`purge`){let{totalPurged:e=0,children:t=0,confident:n}=r;U.success(n?`Purged ${e} cached solve${e===1?``:`s`}`:`Purged ~${e} across ${t} children (best-effort)`),v(ft,!1)}else{let{shutdown:t=0,active:n=0}=r;U.success(`Shut down ${t} child${t===1?``:`ren`} (${n} still active)`),v(dt,!1),l($)[e.id]?.check()}}catch{U.error(`Failed to ${t} server`)}finally{ct[e.id]=null}}let gt=M(null),_t=M(null),vt=M(!1);async function yt(e,t){v(gt,e,!0);try{let n=await fetch(`/api/admin/compute/actions`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:e})}),r=await n.json().catch(()=>({}));if(!n.ok){U.error(r.message||r.error||`Clear failed (${n.status})`);return}let{entries:i=0,bytes:a=0}=r;U.success(`Cleared ${t} — ${i.toLocaleString()} ${i===1?`entry`:`entries`}, ${G(a)}`),v(vt,!1),await te()}catch{U.error(`Failed to clear ${t}`)}finally{v(gt,null)}}var bt=Ge();s(`1h8e46q`,e=>{y(()=>{S.title=`Admin · Compute`})});var xt=g(bt),St=h(xt);H(St,{eyebrow:`Admin`,title:`Compute`,description:`Manage compute servers. Share servers with specific orgs to expose them in pickers. When ALLOW_ORG_COMPUTE_OVERRIDE is on, org owners can configure their own servers.`});var Ct=D(St,2);b(Ct,()=>le,(e,r)=>{r(e,{children:(e,r)=>{var o=t(),s=g(o);b(s,()=>ue,(e,r)=>{r(e,{class:`space-y-3 pt-6`,children:(e,r)=>{var o=t(),s=g(o),d=e=>{se(e,{get icon(){return V},title:`No servers configured`,actions:e=>{R(e,{variant:`outline`,size:`sm`,onclick:nt,children:(e,t)=>{var n=Ve(),r=g(n);B(r,{class:`mr-1.5 h-3.5 w-3.5`}),a(),f(e,n)},$$slots:{default:!0}})},$$slots:{actions:!0}})},p=e=>{var t=He(),r=g(t);c(r,17,()=>l(K),e=>e.id,(e,t)=>{L(e,()=>l(t))});var i=D(r,2),o=h(i);B(o,{class:`h-4 w-4`}),a(),u(i),n(`click`,i,nt),f(e,t)};i(s,e=>{l(K).length===0?e(d):e(p,-1)}),f(e,o)},$$slots:{default:!0}})}),f(e,o)},$$slots:{default:!0}})});var wt=D(Ct,2),Tt=e=>{var t=We(),n=h(t),o=h(n),s=D(o),c=e=>{var t=Ue(),n=h(t);u(t),E(()=>F(n,`· ${X.size??``} pending removal`)),f(e,t)};i(s,e=>{X.size>0&&e(c)}),u(n);var d=D(n,2),p=h(d);R(p,{variant:`ghost`,size:`sm`,onclick:et,get disabled(){return l(J)},children:(e,t)=>{a();var n=r(`Discard all`);f(e,n)},$$slots:{default:!0}});var m=D(p,2);R(m,{size:`sm`,onclick:st,get disabled(){return l(J)},children:(e,t)=>{a();var n=r();E(()=>F(n,l(J)?`Saving…`:`Save changes`)),f(e,n)},$$slots:{default:!0}}),u(d),u(t),E(()=>F(o,`${l(Ye)===0?`Default server changed`:`${l(Ye)} unsaved change${l(Ye)===1?``:`s`}`} `)),f(e,t)};i(wt,e=>{l(Ze)&&e(Tt)});var Et=D(wt,2);H(Et,{title:`Caching`,description:`Whether solves are actually being served from memory. Counters are for this Selva instance and reset when it restarts; behind a load balancer each instance keeps its own, so Clear empties only this one.`});var Dt=D(Et,2);b(Dt,()=>le,(e,n)=>{n(e,{children:(e,n)=>{var r=t(),i=g(r);b(i,()=>ue,(e,t)=>{t(e,{class:`grid gap-3 pt-6 sm:grid-cols-2`,children:(e,t)=>{var n=je(),r=g(n);{let e=P(()=>`Budget is per compute server — ${T.data.caches.solve.warmClients} warm, so up to ${G(T.data.caches.solve.budgetTotalBytes)} total right now.`);O(r,()=>`Solve cache`,()=>`Results, so identical inputs skip Rhino entirely`,()=>`COMPUTE_SOLVE_CACHE_MB`,()=>T.data.caches.solve,()=>l(e),()=>`clear-solve-cache`)}var i=D(r,2);O(i,()=>`Definition cache`,()=>`.gh bytes, so a solve skips the storage read`,()=>`COMPUTE_DEFINITION_CACHE_MB`,()=>T.data.caches.definition,()=>null,()=>`clear-definition-cache`),f(e,n)},$$slots:{default:!0}})}),f(e,r)},$$slots:{default:!0}})}),u(xt);var Ot=D(xt,2);{let e=P(()=>l(lt)?`Shut down ALL child processes on "${l(lt).label}"? In-flight solves on those children will be interrupted. The pool auto-respawns on the next request.`:void 0);de(Ot,{title:`Shutdown children?`,get description(){return l(e)},confirmLabel:`Shutdown`,pendingLabel:`Shutting down…`,variant:`destructive`,onConfirm:async()=>{l(lt)&&await ht(l(lt),`shutdown`)},get open(){return l(dt)},set open(e){v(dt,e,!0)}})}var kt=D(Ot,2);{let e=P(()=>l(ut)?`Clear cached solve results across "${l(ut).label}"'s children? This is best-effort across the pool.`:void 0);de(kt,{title:`Purge cache?`,get description(){return l(e)},confirmLabel:`Purge`,pendingLabel:`Purging…`,onConfirm:async()=>{l(ut)&&await ht(l(ut),`purge`)},get open(){return l(ft)},set open(e){v(ft,e,!0)}})}var At=D(kt,2);{let e=P(()=>l(_t)?.action===`clear-solve-cache`?`Drop every cached solve result held by this Selva instance. The next solve of each definition runs on Rhino.Compute again. Other instances behind a load balancer keep theirs.`:`Drop the .gh bytes this Selva instance is holding. Costs a storage re-read on the next solve, nothing more.`);de(At,{title:`Clear this cache?`,get description(){return l(e)},confirmLabel:`Clear`,pendingLabel:`Clearing…`,onConfirm:async()=>{l(_t)&&await yt(l(_t).action,l(_t).label)},get open(){return l(vt)},set open(e){v(vt,e,!0)}})}var jt=D(At,2);{let e=P(()=>l(pt)?`Remove "${l(pt).label}" from the compute config? It stays listed, struck through, until you save.`:void 0);de(jt,{title:`Remove this server?`,get description(){return l(e)},confirmLabel:`Remove`,variant:`destructive`,onConfirm:()=>{l(pt)&&rt(l(pt))},get open(){return l(mt)},set open(e){v(mt,e,!0)}})}f(d,bt),x()}O([`click`,`change`]);export{Ke as component};
@@ -1,2 +1,2 @@
1
- import{Bt as e,H as t,K as n,L as r,Lt as i,Mt as a,O as o,P as s,Q as c,Rt as l,U as u,V as d,_ as f,b as p,dt as m,ft as h,gt as g,it as _,j as v,jt as y,lt as b,ot as x,pt as S,st as C,vt as w,z as T}from"../chunks/BJr3_fzd.js";import{i as E,r as D}from"../chunks/CsdA-c5v.js";import"../chunks/xihTtKlq.js";import{t as O}from"../chunks/CxPNWG5P.js";import{t as k}from"../chunks/BSKvdAY9.js";import{t as A}from"../chunks/BqEuA-Z7.js";import{t as j}from"../chunks/CoKRAUpO.js";import{t as M}from"../chunks/Eg7QSmtp.js";import{t as N}from"../chunks/DwMfv5aD.js";import{t as P}from"../chunks/xldpSbJ4.js";import{n as F,t as I}from"../chunks/CU86KVhA.js";import{n as L}from"../chunks/DhuzqlSG.js";import{t as R}from"../chunks/CcVUaDbT.js";import"../chunks/RlomQNCr.js";var z=u(`<!> New project`,1),B=u(`<option> </option>`),V=u(`<div class="space-y-1.5"><!> <!></div> <div class="space-y-1.5"><!> <!></div> <div class="space-y-1.5"><!> <select id="new-org" class="border-input bg-background h-10 w-full rounded-md border px-3 text-sm"></select> <p class="text-muted-foreground text-xs">Storage and compute use this org. Membership in this org does NOT grant access —
1
+ import{Bt as e,H as t,K as n,L as r,Lt as i,Mt as a,O as o,P as s,Q as c,Rt as l,U as u,V as d,_ as f,b as p,dt as m,ft as h,gt as g,it as _,j as v,jt as y,lt as b,ot as x,pt as S,st as C,vt as w,z as T}from"../chunks/BJr3_fzd.js";import{i as E,r as D}from"../chunks/D1C2bDXQ.js";import"../chunks/xihTtKlq.js";import{t as O}from"../chunks/CxPNWG5P.js";import{t as k}from"../chunks/BSKvdAY9.js";import{t as A}from"../chunks/BqEuA-Z7.js";import{t as j}from"../chunks/CoKRAUpO.js";import{t as M}from"../chunks/Eg7QSmtp.js";import{t as N}from"../chunks/DwMfv5aD.js";import{t as P}from"../chunks/xldpSbJ4.js";import{n as F,t as I}from"../chunks/CU86KVhA.js";import{n as L}from"../chunks/DhuzqlSG.js";import{t as R}from"../chunks/CcVUaDbT.js";import"../chunks/C6gAy11g.js";var z=u(`<!> New project`,1),B=u(`<option> </option>`),V=u(`<div class="space-y-1.5"><!> <!></div> <div class="space-y-1.5"><!> <!></div> <div class="space-y-1.5"><!> <select id="new-org" class="border-input bg-background h-10 w-full rounded-md border px-3 text-sm"></select> <p class="text-muted-foreground text-xs">Storage and compute use this org. Membership in this org does NOT grant access —
2
2
  visibility = platform overrides.</p></div> <div class="flex justify-end gap-2 pt-2"><!> <!></div>`,1),H=u(`<a class="min-w-0 hover:underline"><p class="truncate text-sm font-medium"> </p> <p class="text-muted-foreground truncate font-mono text-xs"> </p></a> <span class="truncate text-sm"> </span> <span class="text-muted-foreground text-right text-xs"> </span>`,1),U=u(`<div class="space-y-6"><!> <!> <!></div>`);function W(u,W){a(W,!0);let G=w(!1),K=w(!1),q=w(``),J=w(``),Y=w(``);C(()=>{c(G)&&!c(Y)&&W.data.orgOptions.length>0&&g(Y,W.data.orgOptions[0].id,!0)});async function X(){if(!c(q).trim()){L.error(`Name is required`);return}g(K,!0);try{let e=await fetch(`/api/admin/projects`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:c(q).trim(),description:c(J).trim()||void 0,orgId:c(Y)||void 0})});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.message??`HTTP ${e.status}`)}let t=await e.json();L.success(`Created “${t.name}”`),g(G,!1),g(q,``),g(J,``),await E(),D(`/admin/projects/${t.id}`)}catch(e){L.error(e.message)}finally{g(K,!1)}}var Z=U();o(`1bzxaev`,e=>{_(()=>{b.title=`Admin · Platform projects`})});var Q=m(Z);M(Q,{eyebrow:`Admin`,title:`Platform projects`,description:`Projects owned by platform admins. Grant orgs or individual users view/solve access without project membership.`,actions:e=>{O(e,{size:`sm`,onclick:()=>g(G,!0),class:`gap-1.5`,children:(e,t)=>{var n=z(),r=h(n);A(r,{class:`h-3.5 w-3.5`}),i(),d(e,n)},$$slots:{default:!0}})},$$slots:{actions:!0}});var $=S(Q,2),ee=e=>{var r=t(),a=h(r);v(a,()=>F,(e,r)=>{r(e,{children:(e,r)=>{var a=t(),o=h(a);v(o,()=>I,(e,t)=>{t(e,{class:`space-y-4 pt-6`,children:(e,t)=>{var r=V(),a=h(r),o=m(a);j(o,{for:`new-name`,children:(e,t)=>{i();var r=n(`Name`);d(e,r)},$$slots:{default:!0}});var u=S(o,2);P(u,{id:`new-name`,placeholder:`Shared templates`,get value(){return c(q)},set value(e){g(q,e,!0)}}),l(a);var f=S(a,2),_=m(f);j(_,{for:`new-desc`,children:(e,t)=>{i();var r=n(`Description (optional)`);d(e,r)},$$slots:{default:!0}});var v=S(_,2);P(v,{id:`new-desc`,get value(){return c(J)},set value(e){g(J,e,!0)}}),l(f);var y=S(f,2),b=m(y);j(b,{for:`new-org`,children:(e,t)=>{i();var r=n(`Host organization`);d(e,r)},$$slots:{default:!0}});var C=S(b,2);s(C,21,()=>W.data.orgOptions,e=>e.id,(e,t)=>{var n=B(),r=m(n);l(n);var i={};x(()=>{T(r,`${c(t).name??``} (${c(t).slug??``})`),i!==(i=c(t).id)&&(n.value=(n.__value=c(t).id)??``)}),d(e,n)}),l(C),i(2),l(y);var w=S(y,2),E=m(w);O(E,{variant:`outline`,size:`sm`,onclick:()=>g(G,!1),children:(e,t)=>{i();var r=n(`Cancel`);d(e,r)},$$slots:{default:!0}});var D=S(E,2);O(D,{size:`sm`,get disabled(){return c(K)},onclick:X,children:(e,t)=>{i();var r=n();x(()=>T(r,c(K)?`Creating…`:`Create`)),d(e,r)},$$slots:{default:!0}}),l(w),p(C,()=>c(Y),e=>g(Y,e)),d(e,r)},$$slots:{default:!0}})}),d(e,a)},$$slots:{default:!0}})}),d(e,r)};r($,e=>{c(G)&&e(ee)});var te=S($,2);v(te,()=>F,(n,i)=>{i(n,{children:(n,i)=>{var a=t(),o=h(a);v(o,()=>I,(n,i)=>{i(n,{class:`pt-6`,children:(n,i)=>{var a=t(),o=h(a),s=e=>{N(e,{get icon(){return k},title:`No platform projects`,description:`Click “New project” to create one. Platform projects are managed by instance admins and granted to orgs or individual users.`})},c=t=>{R(t,{get rows(){return W.data.projects},getKey:e=>e.id,columns:[{label:`Project`},{label:`Host org`,width:`200px`},{label:`Created`,width:`140px`,align:`right`}],row:(t,n=e)=>{var r=H(),i=h(r),a=m(i),o=m(a,!0);l(a);var s=S(a,2),c=m(s,!0);l(s),l(i);var u=S(i,2),p=m(u,!0);l(u);var g=S(u,2),_=m(g,!0);l(g),x(e=>{f(i,`href`,`/admin/projects/${n().id}`),T(o,n().name),T(c,n().slug),T(p,n().hostOrgName),T(_,e)},[()=>new Date(n().createdAt).toLocaleDateString()]),d(t,r)},$$slots:{row:!0}})};r(o,e=>{W.data.projects.length===0?e(s):e(c,-1)}),d(n,a)},$$slots:{default:!0}})}),d(n,a)},$$slots:{default:!0}})}),l(Z),d(u,Z),y()}export{W as component};
@@ -1,2 +1,2 @@
1
- import{Bt as e,H as t,K as n,L as r,Lt as i,Mt as a,O as o,P as s,Q as c,Rt as l,U as u,V as d,_ as f,b as p,dt as m,ft as h,g,gt as _,j as v,jt as y,lt as b,mt as x,o as S,ot as C,pt as w,rt as T,s as E,st as ee,u as te,vt as D,xt as O,z as k}from"../chunks/BJr3_fzd.js";import{i as A,r as ne}from"../chunks/CsdA-c5v.js";import"../chunks/xihTtKlq.js";import{n as j}from"../chunks/uEs1TBqf.js";import{t as M}from"../chunks/CxPNWG5P.js";import{t as re}from"../chunks/Cb3BsjuK.js";import{t as ie}from"../chunks/BqEuA-Z7.js";import{t as ae}from"../chunks/DhQevarr.js";import{t as oe}from"../chunks/BHVhsh_Z.js";import{t as se}from"../chunks/Kh4cWZvP.js";import{t as ce}from"../chunks/xXc7YQM2.js";import{t as N}from"../chunks/CoKRAUpO.js";import{a as le,i as ue,n as de,r as P,t as F}from"../chunks/CeSr2XqR.js";import{t as fe}from"../chunks/Eg7QSmtp.js";import{t as I}from"../chunks/DwMfv5aD.js";import{t as pe}from"../chunks/xldpSbJ4.js";import{n as L,t as R}from"../chunks/CU86KVhA.js";import{n as z}from"../chunks/DhuzqlSG.js";import{t as me}from"../chunks/CcVUaDbT.js";import{t as he}from"../chunks/DBYj-4Ic.js";import"../chunks/RlomQNCr.js";import{n as ge,t as _e}from"../chunks/ByF1UaRp.js";var B=new Set([`$$slots`,`$$events`,`$$legacy`]);function ve(e,t){let n=S(t,B),r=[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`}],[`path`,{d:`M10 9H8`}],[`path`,{d:`M16 13H8`}],[`path`,{d:`M16 17H8`}]];j(e,E({name:`file-text`},()=>n,{get iconNode(){return r}}))}var ye=u(`<!> Grants <span class="text-muted-foreground ml-1 font-mono text-[11px]"> </span>`,1),be=u(`<!> Definitions <span class="text-muted-foreground ml-1 font-mono text-[11px]"> </span>`,1),xe=u(`<!> Settings`,1),Se=u(`<!> <!> <!>`,1),Ce=u(`<!> Add grant`,1),we=u(`<option> </option>`),Te=u(`<div class="bg-muted/30 space-y-3 rounded-lg border p-4"><div class="space-y-1.5"><!> <div class="flex gap-2"><!> <!></div></div> <div class="space-y-1.5"><!> <select id="grantee-id" class="border-input bg-background h-10 w-full rounded-md border px-3 text-sm"></select></div> <label class="flex items-center gap-2 text-sm"><input type="checkbox"/> Allow solving (uncheck for view-only)</label> <div class="flex justify-end gap-2"><!> <!></div></div>`),Ee=u(`<p class="text-muted-foreground truncate text-xs"> </p>`),De=u(`<div class="min-w-0"><p class="truncate text-sm font-medium"> </p> <!></div> <span class="text-xs capitalize"> </span> <span class="text-xs"> </span> <div class="text-right"><!></div>`,1),Oe=u(`<div class="flex items-center justify-between"><div><p class="text-sm font-medium">Access grants</p> <p class="text-muted-foreground text-xs">Orgs or users you've granted view/solve access. Instance admins always have full
1
+ import{Bt as e,H as t,K as n,L as r,Lt as i,Mt as a,O as o,P as s,Q as c,Rt as l,U as u,V as d,_ as f,b as p,dt as m,ft as h,g,gt as _,j as v,jt as y,lt as b,mt as x,o as S,ot as C,pt as w,rt as T,s as E,st as ee,u as te,vt as D,xt as O,z as k}from"../chunks/BJr3_fzd.js";import{i as A,r as ne}from"../chunks/D1C2bDXQ.js";import"../chunks/xihTtKlq.js";import{n as j}from"../chunks/uEs1TBqf.js";import{t as M}from"../chunks/CxPNWG5P.js";import{t as re}from"../chunks/Cb3BsjuK.js";import{t as ie}from"../chunks/BqEuA-Z7.js";import{t as ae}from"../chunks/DhQevarr.js";import{t as oe}from"../chunks/BHVhsh_Z.js";import{t as se}from"../chunks/Kh4cWZvP.js";import{t as ce}from"../chunks/xXc7YQM2.js";import{t as N}from"../chunks/CoKRAUpO.js";import{a as le,i as ue,n as de,r as P,t as F}from"../chunks/CeSr2XqR.js";import{t as fe}from"../chunks/Eg7QSmtp.js";import{t as I}from"../chunks/DwMfv5aD.js";import{t as pe}from"../chunks/xldpSbJ4.js";import{n as L,t as R}from"../chunks/CU86KVhA.js";import{n as z}from"../chunks/DhuzqlSG.js";import{t as me}from"../chunks/CcVUaDbT.js";import{t as he}from"../chunks/DBYj-4Ic.js";import"../chunks/C6gAy11g.js";import{n as ge,t as _e}from"../chunks/ByF1UaRp.js";var B=new Set([`$$slots`,`$$events`,`$$legacy`]);function ve(e,t){let n=S(t,B),r=[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`}],[`path`,{d:`M10 9H8`}],[`path`,{d:`M16 13H8`}],[`path`,{d:`M16 17H8`}]];j(e,E({name:`file-text`},()=>n,{get iconNode(){return r}}))}var ye=u(`<!> Grants <span class="text-muted-foreground ml-1 font-mono text-[11px]"> </span>`,1),be=u(`<!> Definitions <span class="text-muted-foreground ml-1 font-mono text-[11px]"> </span>`,1),xe=u(`<!> Settings`,1),Se=u(`<!> <!> <!>`,1),Ce=u(`<!> Add grant`,1),we=u(`<option> </option>`),Te=u(`<div class="bg-muted/30 space-y-3 rounded-lg border p-4"><div class="space-y-1.5"><!> <div class="flex gap-2"><!> <!></div></div> <div class="space-y-1.5"><!> <select id="grantee-id" class="border-input bg-background h-10 w-full rounded-md border px-3 text-sm"></select></div> <label class="flex items-center gap-2 text-sm"><input type="checkbox"/> Allow solving (uncheck for view-only)</label> <div class="flex justify-end gap-2"><!> <!></div></div>`),Ee=u(`<p class="text-muted-foreground truncate text-xs"> </p>`),De=u(`<div class="min-w-0"><p class="truncate text-sm font-medium"> </p> <!></div> <span class="text-xs capitalize"> </span> <span class="text-xs"> </span> <div class="text-right"><!></div>`,1),Oe=u(`<div class="flex items-center justify-between"><div><p class="text-sm font-medium">Access grants</p> <p class="text-muted-foreground text-xs">Orgs or users you've granted view/solve access. Instance admins always have full
2
2
  access.</p></div> <!></div> <!> <!>`,1),ke=u(`<a class="min-w-0 hover:underline"><p class="truncate text-sm font-medium"> </p> <p class="text-muted-foreground truncate font-mono text-xs"> </p></a> <span class="text-xs capitalize"> </span> <span class="text-muted-foreground text-right text-xs"> </span>`,1),Ae=u(`<div class="flex items-center justify-between"><div><p class="text-sm font-medium">Definitions</p> <p class="text-muted-foreground text-xs">Upload and edit definitions through the standard project view.</p></div> <!></div> <!>`,1),je=u(`<!> `,1),Me=u(`<div class="space-y-1.5"><!> <!></div> <div class="space-y-1.5"><!> <!></div> <div class="flex items-center justify-between pt-2"><!> <!></div>`,1),Ne=u(`<!> <!> <!> <!>`,1),Pe=u(`<div class="space-y-6"><div><a href="/admin/projects" class="text-muted-foreground hover:text-foreground inline-flex items-center gap-1 text-xs"><!> Platform projects</a></div> <!> <!></div> <!>`,1);function V(u,S){a(S,!0);let E=D(x(S.data.project.name)),j=D(x(S.data.project.description??``)),B=D(!1),V=D(!1),H=D(!1);ee(()=>{_(E,S.data.project.name,!0),_(j,S.data.project.description??``,!0)});async function Fe(){if(!c(E).trim()){z.error(`Name is required`);return}_(B,!0);try{let e=await fetch(`/api/admin/projects/${S.data.project.id}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:c(E).trim(),description:c(j).trim()||null})});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.message??`HTTP ${e.status}`)}z.success(`Saved`),await A()}catch(e){z.error(e.message)}finally{_(B,!1)}}async function Ie(){_(V,!0);try{let e=await fetch(`/api/admin/projects/${S.data.project.id}`,{method:`DELETE`});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.message??`HTTP ${e.status}`)}z.success(`Project deleted`),_(H,!1),ne(`/admin/projects`)}catch(e){z.error(e.message),_(V,!1)}}let U=D(!1),W=D(`org`),G=D(``),K=D(!0),q=D(!1),J=D(null),Y=O(()=>c(W)===`org`?S.data.orgOptions.map(e=>({id:e.id,label:e.name,sub:e.slug})):S.data.userOptions.map(e=>({id:e.id,label:ge(e,e.id),sub:_e(e)}))),X=O(()=>new Set(S.data.grants.filter(e=>e.granteeType===c(W)).map(e=>e.granteeId)));ee(()=>{c(Y).find(e=>e.id===c(G))||_(G,c(Y).find(e=>!c(X).has(e.id))?.id??``,!0)});async function Le(){if(!c(G)){z.error(`Pick a grantee`);return}_(q,!0);try{let e=await fetch(`/api/admin/projects/${S.data.project.id}/grants`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({granteeType:c(W),granteeId:c(G),canSolve:c(K)})});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.message??`HTTP ${e.status}`)}z.success(`Grant added`),_(U,!1),_(G,``),_(K,!0),await A()}catch(e){z.error(e.message)}finally{_(q,!1)}}async function Re(e){_(J,e,!0);try{let t=await fetch(`/api/admin/projects/${S.data.project.id}/grants/${e}`,{method:`DELETE`});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.message??`HTTP ${t.status}`)}z.success(`Grant revoked`),await A()}catch(e){z.error(e.message)}finally{_(J,null)}}var ze=Pe();o(`t02vfz`,e=>{T(()=>{b.title=`Admin · ${S.data.project.name??``}`})});var Z=h(ze),Q=m(Z),Be=m(Q),Ve=m(Be);re(Ve,{class:`h-3 w-3`}),i(),l(Be),l(Q);var $=w(Q,2);{let e=O(()=>S.data.project.description??void 0);fe($,{eyebrow:`Platform project`,get title(){return S.data.project.name},get description(){return c(e)}})}var He=w($,2);v(He,()=>ue,(a,o)=>{o(a,{value:`grants`,children:(a,o)=>{var u=Ne(),y=h(u);v(y,()=>de,(e,t)=>{t(e,{children:(e,t)=>{var n=Se(),r=h(n);v(r,()=>F,(e,t)=>{t(e,{value:`grants`,class:`gap-1.5`,children:(e,t)=>{var n=ye(),r=h(n);oe(r,{class:`h-3.5 w-3.5`});var i=w(r,2),a=m(i,!0);l(i),C(()=>k(a,S.data.grants.length)),d(e,n)},$$slots:{default:!0}})});var a=w(r,2);v(a,()=>F,(e,t)=>{t(e,{value:`definitions`,class:`gap-1.5`,children:(e,t)=>{var n=be(),r=h(n);ve(r,{class:`h-3.5 w-3.5`});var i=w(r,2),a=m(i,!0);l(i),C(()=>k(a,S.data.definitions.length)),d(e,n)},$$slots:{default:!0}})});var o=w(a,2);v(o,()=>F,(e,t)=>{t(e,{value:`settings`,class:`gap-1.5`,children:(e,t)=>{var n=xe(),r=h(n);ae(r,{class:`h-3.5 w-3.5`}),i(),d(e,n)},$$slots:{default:!0}})}),d(e,n)},$$slots:{default:!0}})});var b=w(y,2);v(b,()=>P,(a,o)=>{o(a,{value:`grants`,class:`mt-4 space-y-4`,children:(a,o)=>{var u=t(),f=h(u);v(f,()=>L,(a,o)=>{o(a,{children:(a,o)=>{var u=t(),f=h(u);v(f,()=>R,(t,a)=>{a(t,{class:`space-y-4 pt-6`,children:(t,a)=>{var o=Oe(),u=h(o),f=w(m(u),2);M(f,{size:`sm`,onclick:()=>_(U,!c(U)),class:`gap-1.5`,children:(e,t)=>{var n=Ce(),r=h(n);ie(r,{class:`h-3.5 w-3.5`}),i(),d(e,n)},$$slots:{default:!0}}),l(u);var v=w(u,2),y=e=>{var t=Te(),r=m(t),a=m(r);N(a,{children:(e,t)=>{i();var r=n(`Grantee type`);d(e,r)},$$slots:{default:!0}});var o=w(a,2),u=m(o);{let e=O(()=>c(W)===`org`?`default`:`outline`);M(u,{get variant(){return c(e)},size:`sm`,onclick:()=>_(W,`org`),children:(e,t)=>{i();var r=n(`Organization`);d(e,r)},$$slots:{default:!0}})}var f=w(u,2);{let e=O(()=>c(W)===`user`?`default`:`outline`);M(f,{get variant(){return c(e)},size:`sm`,onclick:()=>_(W,`user`),children:(e,t)=>{i();var r=n(`Individual user`);d(e,r)},$$slots:{default:!0}})}l(o),l(r);var h=w(r,2),v=m(h);N(v,{for:`grantee-id`,children:(e,t)=>{i();var r=n();C(()=>k(r,c(W)===`org`?`Organization`:`User`)),d(e,r)},$$slots:{default:!0}});var y=w(v,2);s(y,21,()=>c(Y),e=>e.id,(e,t)=>{var n=we(),r=m(n);l(n);var i={};C((e,a)=>{n.disabled=e,k(r,`${c(t).label??``}${c(t).sub?` — ${c(t).sub}`:``}${a??``}`),i!==(i=c(t).id)&&(n.value=(n.__value=c(t).id)??``)},[()=>c(X).has(c(t).id),()=>c(X).has(c(t).id)?` (already granted)`:``]),d(e,n)}),l(y),l(h);var b=w(h,2),x=m(b);g(x),i(),l(b);var S=w(b,2),T=m(S);M(T,{variant:`outline`,size:`sm`,onclick:()=>_(U,!1),children:(e,t)=>{i();var r=n(`Cancel`);d(e,r)},$$slots:{default:!0}});var E=w(T,2);{let e=O(()=>c(q)||!c(G));M(E,{size:`sm`,get disabled(){return c(e)},onclick:Le,children:(e,t)=>{i();var r=n();C(()=>k(r,c(q)?`Adding…`:`Add grant`)),d(e,r)},$$slots:{default:!0}})}l(S),l(t),p(y,()=>c(G),e=>_(G,e)),te(x,()=>c(K),e=>_(K,e)),d(e,t)};r(v,e=>{c(U)&&e(y)});var b=w(v,2),x=e=>{I(e,{size:`sm`,get icon(){return oe},title:`No grants yet`,description:`Add a grant to share this project with an org or specific user.`})},T=t=>{me(t,{get rows(){return S.data.grants},getKey:e=>e.id,columns:[{label:`Grantee`},{label:`Type`,width:`120px`},{label:`Access`,width:`120px`},{label:``,width:`40px`,align:`right`}],row:(t,n=e)=>{var i=De(),a=h(i),o=m(a),s=m(o,!0);l(o);var u=w(o,2),f=e=>{var t=Ee(),r=m(t,!0);l(t),C(()=>k(r,n().granteeSubtitle)),d(e,t)};r(u,e=>{n().granteeSubtitle&&e(f)}),l(a);var p=w(a,2),g=m(p,!0);l(p);var _=w(p,2),v=m(_,!0);l(_);var y=w(_,2),b=m(y);{let e=O(()=>c(J)===n().id);M(b,{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive h-7 w-7 p-0`,get disabled(){return c(e)},onclick:()=>Re(n().id),children:(e,t)=>{ce(e,{class:`h-3.5 w-3.5`})},$$slots:{default:!0}})}l(y),C(()=>{k(s,n().granteeName),k(g,n().granteeType),k(v,n().canSolve?`View + solve`:`View only`)}),d(t,i)},$$slots:{row:!0}})};r(b,e=>{S.data.grants.length===0?e(x):e(T,-1)}),d(t,o)},$$slots:{default:!0}})}),d(a,u)},$$slots:{default:!0}})}),d(a,u)},$$slots:{default:!0}})});var x=w(b,2);v(x,()=>P,(a,o)=>{o(a,{value:`definitions`,class:`mt-4 space-y-4`,children:(a,o)=>{var s=t(),c=h(s);v(c,()=>L,(a,o)=>{o(a,{children:(a,o)=>{var s=t(),c=h(s);v(c,()=>R,(t,a)=>{a(t,{class:`space-y-4 pt-6`,children:(t,a)=>{var o=Ae(),s=h(o),c=w(m(s),2);M(c,{size:`sm`,variant:`outline`,onclick:()=>ne(`/projects?project=${S.data.project.slug}`),children:(e,t)=>{i();var r=n(`Open in projects`);d(e,r)},$$slots:{default:!0}}),l(s);var u=w(s,2),p=e=>{I(e,{size:`sm`,get icon(){return ve},title:`No definitions yet`,description:`Open this project in the projects view to upload .gh files.`})},g=t=>{me(t,{get rows(){return S.data.definitions},getKey:e=>e.guid,columns:[{label:`Definition`},{label:`Status`,width:`120px`},{label:`Updated`,width:`140px`,align:`right`}],row:(t,n=e)=>{var r=ke(),i=h(r),a=m(i),o=m(a,!0);l(a);var s=w(a,2),c=m(s,!0);l(s),l(i);var u=w(i,2),p=m(u,!0);l(u);var g=w(u,2),_=m(g,!0);l(g),C(e=>{f(i,`href`,`/library/${n().guid}`),k(o,n().displayName),k(c,n().guid),k(p,n().status),k(_,e)},[()=>new Date(n().updatedAt).toLocaleDateString()]),d(t,r)},$$slots:{row:!0}})};r(u,e=>{S.data.definitions.length===0?e(p):e(g,-1)}),d(t,o)},$$slots:{default:!0}})}),d(a,s)},$$slots:{default:!0}})}),d(a,s)},$$slots:{default:!0}})});var T=w(x,2);v(T,()=>P,(e,r)=>{r(e,{value:`settings`,class:`mt-4 space-y-4`,children:(e,r)=>{var a=t(),o=h(a);v(o,()=>L,(e,r)=>{r(e,{children:(e,r)=>{var a=t(),o=h(a);v(o,()=>R,(e,t)=>{t(e,{class:`space-y-4 pt-6`,children:(e,t)=>{var r=Me(),a=h(r),o=m(a);N(o,{for:`proj-name`,children:(e,t)=>{i();var r=n(`Name`);d(e,r)},$$slots:{default:!0}});var s=w(o,2);pe(s,{id:`proj-name`,get value(){return c(E)},set value(e){_(E,e,!0)}}),l(a);var u=w(a,2),f=m(u);N(f,{for:`proj-desc`,children:(e,t)=>{i();var r=n(`Description`);d(e,r)},$$slots:{default:!0}});var p=w(f,2);le(p,{id:`proj-desc`,rows:3,get value(){return c(j)},set value(e){_(j,e,!0)}}),l(u);var g=w(u,2),v=m(g);M(v,{onclick:()=>_(H,!0),variant:`ghost`,size:`sm`,get disabled(){return c(V)},class:`text-destructive hover:text-destructive gap-1.5 px-2`,children:(e,t)=>{var n=je(),r=h(n);se(r,{class:`h-3.5 w-3.5`});var i=w(r);C(()=>k(i,` ${c(V)?`Deleting…`:`Delete project`}`)),d(e,n)},$$slots:{default:!0}});var y=w(v,2);M(y,{size:`sm`,get disabled(){return c(B)},onclick:Fe,children:(e,t)=>{i();var r=n();C(()=>k(r,c(B)?`Saving…`:`Save`)),d(e,r)},$$slots:{default:!0}}),l(g),d(e,r)},$$slots:{default:!0}})}),d(e,a)},$$slots:{default:!0}})}),d(e,a)},$$slots:{default:!0}})}),d(a,u)},$$slots:{default:!0}})}),l(Z);var Ue=w(Z,2);{let e=O(()=>`Delete "${S.data.project.name}"? This cannot be undone.`);he(Ue,{title:`Delete project?`,get description(){return c(e)},confirmLabel:`Delete`,pendingLabel:`Deleting…`,variant:`destructive`,onConfirm:Ie,get open(){return c(H)},set open(e){_(H,e,!0)}})}d(u,ze),y()}export{V as component};
@@ -1,4 +1,4 @@
1
- import{D as e,H as t,I as n,J as r,K as i,L as a,Lt as o,Mt as s,O as c,P as l,Q as u,Rt as d,U as f,V as p,Vt as m,_ as h,a as g,b as _,c as v,dt as y,f as b,ft as x,g as S,gt as C,it as w,j as T,jt as E,lt as D,mt as O,o as k,ot as A,p as j,pt as M,q as N,s as P,st as F,tt as ee,vt as I,w as L,xt as R,z}from"../chunks/BJr3_fzd.js";import"../chunks/xihTtKlq.js";import{n as B}from"../chunks/uEs1TBqf.js";import{t as V}from"../chunks/CxPNWG5P.js";import{t as H}from"../chunks/Df7oZAPr.js";import{n as U,t as te}from"../chunks/DWIijWWu.js";import{n as W,t as G}from"../chunks/BItYwz1k.js";import{t as K}from"../chunks/TcKk9RHF.js";import{t as ne}from"../chunks/C6zFw7m2.js";import{t as re}from"../chunks/BwN3gAty.js";import{t as ie}from"../chunks/BfIcbyti.js";import{t as ae}from"../chunks/D6ylQtAZ.js";import{a as oe,c as se,i as ce,n as le,o as ue,r as de,s as fe,t as pe}from"../chunks/DIc0lukW.js";import{t as me}from"../chunks/Eg7QSmtp.js";import{n as q,t as J}from"../chunks/CU86KVhA.js";import{t as Y}from"../chunks/CLLMfACf.js";import{n as X,t as Z}from"../chunks/DGZ1b7eN.js";import{t as he}from"../chunks/R7RfXtkr.js";var ge=new Set([`$$slots`,`$$events`,`$$legacy`]);function _e(e,t){let n=k(t,ge),r=[[`path`,{d:`M12 5v14`}],[`path`,{d:`m19 12-7 7-7-7`}]];B(e,P({name:`arrow-down`},()=>n,{get iconNode(){return r}}))}var ve=new Set([`$$slots`,`$$events`,`$$legacy`]);function ye(e,t){let n=k(t,ve),r=[[`path`,{d:`m5 12 7-7 7 7`}],[`path`,{d:`M12 19V5`}]];B(e,P({name:`arrow-up`},()=>n,{get iconNode(){return r}}))}var be=new Set([`$$slots`,`$$events`,`$$legacy`]);function xe(e,t){let n=k(t,be),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`m16 12-4-4-4 4`}],[`path`,{d:`M12 16V8`}]];B(e,P({name:`circle-arrow-up`},()=>n,{get iconNode(){return r}}))}var Se=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ce(e,t){let n=k(t,Se),r=[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`}],[`path`,{d:`M6.453 15h11.094`}],[`path`,{d:`M8.5 2h7`}]];B(e,P({name:`flask-conical`},()=>n,{get iconNode(){return r}}))}var we=new Set([`$$slots`,`$$events`,`$$legacy`]);function Te(e,t){let n=k(t,we),r=[[`path`,{d:`M11 2v2`}],[`path`,{d:`M5 2v2`}],[`path`,{d:`M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1`}],[`path`,{d:`M8 15a6 6 0 0 0 12 0v-3`}],[`circle`,{cx:`20`,cy:`10`,r:`2`}]];B(e,P({name:`stethoscope`},()=>n,{get iconNode(){return r}}))}function Q(e,t){let n=t.exec(e);return n?n[1]:void 0}function Ee(e){let t=String.raw`\d+\.\d+\.\d+[^\s]*`,n=new RegExp(String.raw`(?:Target \([^)]*\)|Available):\s*(${t})\s*(?:→|->)\s*(${t})`).exec(e);return{from:Q(e,/Current @selvajs\/selva:\s*v?(\d+\.\d+\.\d+[^\s]*)/)??n?.[1],to:Q(e,/New @selvajs\/selva:\s*v?(\d+\.\d+\.\d+[^\s]*)/)??n?.[2]}}function $(e,t){return e.includes(t)}function De(e,t){let{from:n,to:r}=Ee(t);if(e===null)return{severity:`pending`,title:`Update in progress…`};if(e===6||$(t,`Manual recovery required`)||$(t,`manual intervention required`))return{severity:`critical`,title:`Update failed AND rollback failed — the app may be OFFLINE`,detail:"Both the new version and the rollback failed their health check. SSH into the server and run: `pm2 logs selva-compute`, then `pm2 start ecosystem.config.cjs` from the deployment directory.",from:n,to:r};if(e===-2)return{severity:`critical`,title:`App did not come back online within 15 minutes`,detail:"The update may still be finishing in the background, or the new process is crash-looping. Check `pm2 logs selva-compute`. Do not re-run the update until you have confirmed the current state.",from:n,to:r};if(e===4)return{severity:`critical`,title:`Update failed and the rollback could not reinstall — the app may be OFFLINE`,detail:"The previous version could not be restored from npm. SSH into the server and run `pm2 logs selva-compute`; if the app is down, reinstall explicitly with `npm install --prefer-online @selvajs/cli@<version> @selvajs/selva@<version>` from the deployment directory.",from:n,to:r};if(e===3)return{severity:`critical`,title:`Update failed its health check and could not be rolled back automatically`,detail:"No prior version was recorded, so the previous build could not be restored. Check `pm2 logs selva-compute` to confirm whether the app came back online.",from:n,to:r};if(e===143||e===130||e===129||$(t,`KILLED`))return{severity:`critical`,title:`Update was killed before it finished — nothing was installed`,detail:"The runner was terminated mid-update, most often by a systemd-supervised PM2 restarting its whole control group. The version on disk is unchanged. Check `pm2 logs selva-compute` and confirm the app is online before retrying; if a global pm2 owns the daemon, reconcile that first.",from:n,to:r};if(e===9||$(t,`SYSTEMD_PM2`))return{severity:`warning`,title:`Update cancelled — PM2 needs a resync that only a shell can do safely. The app is untouched.`,detail:"This deployment's PM2 runs under systemd, where `pm2 update` restarts the unit and kills the update mid-run. Nothing was installed and the app is still serving. SSH in and run `./node_modules/.bin/pm2 update` from the deployment directory, then retry the update here.",from:n,to:r};if(e===8||$(t,`PM2_SKEW`)){let e=Q(t,/daemon \(v(\d+\.\d+\.\d+)\)/),i=Q(t,/deployment's pm2 \(v(\d+\.\d+\.\d+)\)/);return{severity:`warning`,title:e&&i?`Update cancelled — a global PM2 (v${e}) owns the daemon, not this deployment's (v${i}). The app is untouched.`:`Update cancelled — a conflicting global PM2 owns the daemon. The app is untouched.`,detail:"Resyncing would have downgraded the daemon and dropped its process table, so the update stopped before taking the app down. On the server: `which -a pm2`, `pm2 -v`, `pm2 ping` — remove or align the global pm2, then retry.",from:n,to:r}}if($(t,`SCHEMA_SKEW`)){let e=Q(t,/expects database migration head (\S+?),/),i=Q(t,/this database is at (\S+?)\./),a=e&&i?` The database is at ${i}; ${r??`it`} needs ${e}.`:``;return{severity:`warning`,title:`Update rolled back — the database migrations for ${r??`the new version`} have not been applied.${a} The app is online${n?` on ${n}`:``}.`,detail:'Nothing is wrong with the new version. Selva does not apply migrations during an update, because they cannot be rolled back — auto-migrating and then rolling the code back would leave the app and database on different heads. Apply them on the server, then re-run this update: `npm install --prefer-online @selvajs/supabase-provider@latest`, then `npx selva-supabase`, then `npx supabase db push`. The provider install is not optional — the migration SQL ships inside that package, and the rollback pinned it back to the old version, so a sync without it copies nothing and the push reports "up to date" having done nothing. Retrying without this will fail in exactly the same way.',from:n,to:r}}if($(t,`AT_REST_SECRETS`))return{severity:`warning`,title:`Update rolled back — stored compute server keys do not decrypt under this host's SELVA_AT_REST_KEY. The app is online${n?` on ${n}`:``}.`,detail:`This is a configuration problem on the server, not a fault in the new version, so retrying alone will fail identically. Re-enter the affected keys at /admin/compute, or restore the SELVA_AT_REST_KEY the values were encrypted with, then re-run the update.`,from:n,to:r};if(e===5||$(t,`Rolled back`))return{severity:`warning`,title:`Update failed — safely rolled back${n?` to ${n}`:``}. The app is online.`,detail:`The new version failed its health check, so the previous version was restored and is serving normally. Review the log below for why the new version failed before retrying.`,from:n,to:r};if($(t,`ENGINE_MISMATCH`)||$(t,`EBADENGINE`)){let e=Q(t,/requires Node ([^\s]+(?:\s*[<>=]+\s*[\d.]+)*)/),i=Q(t,/this host runs v?(\d+\.\d+\.\d+)/);return{severity:`warning`,title:i?`Updated${r?` to ${r}`:``}, but this release needs Node ${e??`(newer)`} — the host runs v${i}. Expect runtime failures.`:`Updated${r?` to ${r}`:``}, but this release requires a newer Node than the host provides. Expect runtime failures.`,detail:`npm installed it anyway (engine-strict is off) and the health check passed, but it does not exercise the newer APIs — routes that do will throw at request time. Upgrade Node on the server, then re-run the update.`,from:n,to:r}}return $(t,`npm cache may be stale`)||$(t,`No version change`)?{severity:`warning`,title:`No version change — npm installed the same version.`,detail:"Your npm cache may be stale. On the server: `npm cache clean --force`, remove node_modules + package-lock.json, then `npm install --prefer-online`.",from:n,to:r}:e===0?$(t,`Already on the`)||$(t,`Nothing to do`)?{severity:`info`,title:`Already up to date${n?` (${n})`:``} — nothing to install.`,detail:`No changes were made and the app was not restarted.`,from:n,to:r}:n&&r&&n!==r?{severity:`success`,title:`Updated ${n} → ${r}. The app is back online.`,from:n,to:r}:r?{severity:`success`,title:`Update complete — now on ${r}. The app is back online.`,from:n,to:r}:{severity:`success`,title:`Update completed and the app is back online.`,from:n,to:r}:{severity:`critical`,title:`Update failed (exit code ${e}).`,detail:"The update did not complete cleanly. Review the log below, and check `pm2 logs selva-compute` to confirm whether the app is currently online.",from:n,to:r}}var Oe=f(`<span title="Currently installed @selvajs/selva version"> </span>`),ke=f(`Update @selvajs/* to the latest <span class="font-medium"> </span> release and restart`,1),Ae=f(`<div class="flex items-start justify-between gap-3"><!> <!></div> <!>`,1),je=f(`<div class="border-warning/40 bg-warning/10 text-warning flex items-center gap-2 rounded-md border px-3 py-2 text-sm" role="status"><!> <span> <span class="font-mono"> </span> → <span class="font-mono"> </span></span></div>`),Me=f(`<p class="text-muted-foreground text-sm"> <span class="font-mono"> </span>).</p>`),Ne=f(`<button type="button" class="text-muted-foreground hover:text-foreground text-xs underline underline-offset-2">Override anyway (advanced)</button>`),Pe=f(`<div class="space-y-2"><label class="text-muted-foreground block text-xs" for="node-override">Type <span class="text-foreground font-mono"> </span> to confirm you accept
1
+ import{D as e,H as t,I as n,J as r,K as i,L as a,Lt as o,Mt as s,O as c,P as l,Q as u,Rt as d,U as f,V as p,Vt as m,_ as h,a as g,b as _,c as v,dt as y,f as b,ft as x,g as S,gt as C,it as w,j as T,jt as E,lt as D,mt as O,o as k,ot as A,p as j,pt as M,q as N,s as P,st as F,tt as ee,vt as I,w as L,xt as R,z}from"../chunks/BJr3_fzd.js";import"../chunks/xihTtKlq.js";import{n as B}from"../chunks/uEs1TBqf.js";import{t as V}from"../chunks/CxPNWG5P.js";import{t as H}from"../chunks/Df7oZAPr.js";import{n as U,t as te}from"../chunks/DWIijWWu.js";import{n as W,t as G}from"../chunks/BItYwz1k.js";import{t as K}from"../chunks/TcKk9RHF.js";import{t as ne}from"../chunks/C6zFw7m2.js";import{t as re}from"../chunks/BwN3gAty.js";import{t as ie}from"../chunks/BfIcbyti.js";import{t as ae}from"../chunks/D6ylQtAZ.js";import{a as oe,c as se,i as ce,n as le,o as ue,r as de,s as fe,t as pe}from"../chunks/DIc0lukW.js";import{t as me}from"../chunks/Eg7QSmtp.js";import{n as q,t as J}from"../chunks/CU86KVhA.js";import{t as Y}from"../chunks/CLLMfACf.js";import{n as X,t as Z}from"../chunks/DGZ1b7eN.js";import{t as he}from"../chunks/BlQiAbNW.js";var ge=new Set([`$$slots`,`$$events`,`$$legacy`]);function _e(e,t){let n=k(t,ge),r=[[`path`,{d:`M12 5v14`}],[`path`,{d:`m19 12-7 7-7-7`}]];B(e,P({name:`arrow-down`},()=>n,{get iconNode(){return r}}))}var ve=new Set([`$$slots`,`$$events`,`$$legacy`]);function ye(e,t){let n=k(t,ve),r=[[`path`,{d:`m5 12 7-7 7 7`}],[`path`,{d:`M12 19V5`}]];B(e,P({name:`arrow-up`},()=>n,{get iconNode(){return r}}))}var be=new Set([`$$slots`,`$$events`,`$$legacy`]);function xe(e,t){let n=k(t,be),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`m16 12-4-4-4 4`}],[`path`,{d:`M12 16V8`}]];B(e,P({name:`circle-arrow-up`},()=>n,{get iconNode(){return r}}))}var Se=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ce(e,t){let n=k(t,Se),r=[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`}],[`path`,{d:`M6.453 15h11.094`}],[`path`,{d:`M8.5 2h7`}]];B(e,P({name:`flask-conical`},()=>n,{get iconNode(){return r}}))}var we=new Set([`$$slots`,`$$events`,`$$legacy`]);function Te(e,t){let n=k(t,we),r=[[`path`,{d:`M11 2v2`}],[`path`,{d:`M5 2v2`}],[`path`,{d:`M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1`}],[`path`,{d:`M8 15a6 6 0 0 0 12 0v-3`}],[`circle`,{cx:`20`,cy:`10`,r:`2`}]];B(e,P({name:`stethoscope`},()=>n,{get iconNode(){return r}}))}function Q(e,t){let n=t.exec(e);return n?n[1]:void 0}function Ee(e){let t=String.raw`\d+\.\d+\.\d+[^\s]*`,n=new RegExp(String.raw`(?:Target \([^)]*\)|Available):\s*(${t})\s*(?:→|->)\s*(${t})`).exec(e);return{from:Q(e,/Current @selvajs\/selva:\s*v?(\d+\.\d+\.\d+[^\s]*)/)??n?.[1],to:Q(e,/New @selvajs\/selva:\s*v?(\d+\.\d+\.\d+[^\s]*)/)??n?.[2]}}function $(e,t){return e.includes(t)}function De(e,t){let{from:n,to:r}=Ee(t);if(e===null)return{severity:`pending`,title:`Update in progress…`};if(e===6||$(t,`Manual recovery required`)||$(t,`manual intervention required`))return{severity:`critical`,title:`Update failed AND rollback failed — the app may be OFFLINE`,detail:"Both the new version and the rollback failed their health check. SSH into the server and run: `pm2 logs selva-compute`, then `pm2 start ecosystem.config.cjs` from the deployment directory.",from:n,to:r};if(e===-2)return{severity:`critical`,title:`App did not come back online within 15 minutes`,detail:"The update may still be finishing in the background, or the new process is crash-looping. Check `pm2 logs selva-compute`. Do not re-run the update until you have confirmed the current state.",from:n,to:r};if(e===4)return{severity:`critical`,title:`Update failed and the rollback could not reinstall — the app may be OFFLINE`,detail:"The previous version could not be restored from npm. SSH into the server and run `pm2 logs selva-compute`; if the app is down, reinstall explicitly with `npm install --prefer-online @selvajs/cli@<version> @selvajs/selva@<version>` from the deployment directory.",from:n,to:r};if(e===3)return{severity:`critical`,title:`Update failed its health check and could not be rolled back automatically`,detail:"No prior version was recorded, so the previous build could not be restored. Check `pm2 logs selva-compute` to confirm whether the app came back online.",from:n,to:r};if(e===143||e===130||e===129||$(t,`KILLED`))return{severity:`critical`,title:`Update was killed before it finished — nothing was installed`,detail:"The runner was terminated mid-update, most often by a systemd-supervised PM2 restarting its whole control group. The version on disk is unchanged. Check `pm2 logs selva-compute` and confirm the app is online before retrying; if a global pm2 owns the daemon, reconcile that first.",from:n,to:r};if(e===9||$(t,`SYSTEMD_PM2`))return{severity:`warning`,title:`Update cancelled — PM2 needs a resync that only a shell can do safely. The app is untouched.`,detail:"This deployment's PM2 runs under systemd, where `pm2 update` restarts the unit and kills the update mid-run. Nothing was installed and the app is still serving. SSH in and run `./node_modules/.bin/pm2 update` from the deployment directory, then retry the update here.",from:n,to:r};if(e===8||$(t,`PM2_SKEW`)){let e=Q(t,/daemon \(v(\d+\.\d+\.\d+)\)/),i=Q(t,/deployment's pm2 \(v(\d+\.\d+\.\d+)\)/);return{severity:`warning`,title:e&&i?`Update cancelled — a global PM2 (v${e}) owns the daemon, not this deployment's (v${i}). The app is untouched.`:`Update cancelled — a conflicting global PM2 owns the daemon. The app is untouched.`,detail:"Resyncing would have downgraded the daemon and dropped its process table, so the update stopped before taking the app down. On the server: `which -a pm2`, `pm2 -v`, `pm2 ping` — remove or align the global pm2, then retry.",from:n,to:r}}if($(t,`SCHEMA_SKEW`)){let e=Q(t,/expects database migration head (\S+?),/),i=Q(t,/this database is at (\S+?)\./),a=e&&i?` The database is at ${i}; ${r??`it`} needs ${e}.`:``;return{severity:`warning`,title:`Update rolled back — the database migrations for ${r??`the new version`} have not been applied.${a} The app is online${n?` on ${n}`:``}.`,detail:'Nothing is wrong with the new version. Selva does not apply migrations during an update, because they cannot be rolled back — auto-migrating and then rolling the code back would leave the app and database on different heads. Apply them on the server, then re-run this update: `npm install --prefer-online @selvajs/supabase-provider@latest`, then `npx selva-supabase`, then `npx supabase db push`. The provider install is not optional — the migration SQL ships inside that package, and the rollback pinned it back to the old version, so a sync without it copies nothing and the push reports "up to date" having done nothing. Retrying without this will fail in exactly the same way.',from:n,to:r}}if($(t,`AT_REST_SECRETS`))return{severity:`warning`,title:`Update rolled back — stored compute server keys do not decrypt under this host's SELVA_AT_REST_KEY. The app is online${n?` on ${n}`:``}.`,detail:`This is a configuration problem on the server, not a fault in the new version, so retrying alone will fail identically. Re-enter the affected keys at /admin/compute, or restore the SELVA_AT_REST_KEY the values were encrypted with, then re-run the update.`,from:n,to:r};if(e===5||$(t,`Rolled back`))return{severity:`warning`,title:`Update failed — safely rolled back${n?` to ${n}`:``}. The app is online.`,detail:`The new version failed its health check, so the previous version was restored and is serving normally. Review the log below for why the new version failed before retrying.`,from:n,to:r};if($(t,`ENGINE_MISMATCH`)||$(t,`EBADENGINE`)){let e=Q(t,/requires Node ([^\s]+(?:\s*[<>=]+\s*[\d.]+)*)/),i=Q(t,/this host runs v?(\d+\.\d+\.\d+)/);return{severity:`warning`,title:i?`Updated${r?` to ${r}`:``}, but this release needs Node ${e??`(newer)`} — the host runs v${i}. Expect runtime failures.`:`Updated${r?` to ${r}`:``}, but this release requires a newer Node than the host provides. Expect runtime failures.`,detail:`npm installed it anyway (engine-strict is off) and the health check passed, but it does not exercise the newer APIs — routes that do will throw at request time. Upgrade Node on the server, then re-run the update.`,from:n,to:r}}return $(t,`npm cache may be stale`)||$(t,`No version change`)?{severity:`warning`,title:`No version change — npm installed the same version.`,detail:"Your npm cache may be stale. On the server: `npm cache clean --force`, remove node_modules + package-lock.json, then `npm install --prefer-online`.",from:n,to:r}:e===0?$(t,`Already on the`)||$(t,`Nothing to do`)?{severity:`info`,title:`Already up to date${n?` (${n})`:``} — nothing to install.`,detail:`No changes were made and the app was not restarted.`,from:n,to:r}:n&&r&&n!==r?{severity:`success`,title:`Updated ${n} → ${r}. The app is back online.`,from:n,to:r}:r?{severity:`success`,title:`Update complete — now on ${r}. The app is back online.`,from:n,to:r}:{severity:`success`,title:`Update completed and the app is back online.`,from:n,to:r}:{severity:`critical`,title:`Update failed (exit code ${e}).`,detail:"The update did not complete cleanly. Review the log below, and check `pm2 logs selva-compute` to confirm whether the app is currently online.",from:n,to:r}}var Oe=f(`<span title="Currently installed @selvajs/selva version"> </span>`),ke=f(`Update @selvajs/* to the latest <span class="font-medium"> </span> release and restart`,1),Ae=f(`<div class="flex items-start justify-between gap-3"><!> <!></div> <!>`,1),je=f(`<div class="border-warning/40 bg-warning/10 text-warning flex items-center gap-2 rounded-md border px-3 py-2 text-sm" role="status"><!> <span> <span class="font-mono"> </span> → <span class="font-mono"> </span></span></div>`),Me=f(`<p class="text-muted-foreground text-sm"> <span class="font-mono"> </span>).</p>`),Ne=f(`<button type="button" class="text-muted-foreground hover:text-foreground text-xs underline underline-offset-2">Override anyway (advanced)</button>`),Pe=f(`<div class="space-y-2"><label class="text-muted-foreground block text-xs" for="node-override">Type <span class="text-foreground font-mono"> </span> to confirm you accept
2
2
  a deployment that may fail under real traffic:</label> <input id="node-override" class="border-input bg-background w-full rounded-md border px-2 py-1 font-mono text-xs" autocomplete="off" spellcheck="false"/></div>`),Fe=f(`<div class="border-destructive/40 bg-destructive/10 space-y-3 rounded-md border px-3 py-3 text-sm" role="alert"><div class="text-destructive flex items-start gap-2"><!> <div class="space-y-1"><p class="font-medium">Update blocked — this release needs a newer Node</p> <p class="text-muted-foreground text-xs"><span class="font-mono"> </span> requires Node <span class="font-mono"> </span>, but this host runs <span class="font-mono"> </span>. npm installs it anyway
3
3
  and the health check still passes, so a failed update would <span class="font-medium">not</span> roll back automatically. Upgrade Node on the server
4
4
  first.</p></div></div> <!></div>`),Ie=f(`<div class="border-border bg-muted/50 text-muted-foreground flex items-center gap-2 rounded-md border px-3 py-2 text-sm"><!> <span>PM2 is restarting the app — waiting for the new process to come online…</span></div>`),Le=f(`<p class="text-muted-foreground font-mono text-xs"> </p>`),Re=f(`<p class="text-muted-foreground text-xs whitespace-pre-line"> </p>`),ze=f(`<div><!> <div class="min-w-0 space-y-1"><p> </p> <!> <!></div></div>`),Be=f(`<div class="space-y-2"><h4 class="text-sm font-medium">Update Logs</h4> <pre class="bg-muted text-foreground max-h-96 overflow-auto rounded-md p-4 font-mono text-xs"> </pre></div>`),Ve=f(`<!> <!> <!> <!> <!> <!>`,1),He=f(`<!> <!>`,1),Ue=f(`<!> <!> <!>`,1);function We(e,n){s(n,!0);let c=g(n,`latestVersion`,3,null),l=g(n,`updateAvailable`,3,!1),f=g(n,`channel`,3,`stable`),m=g(n,`isRunning`,3,!1),_=g(n,`isRestarting`,3,!1),b=g(n,`logs`,3,``),w=g(n,`exitCode`,3,null),D=g(n,`nodeCompatibility`,19,()=>({compatible:null,required:null,running:``})),O=R(()=>D().compatible===!1),k=I(``),N=I(!1),P=R(()=>u(N)&&!!c()&&u(k).trim()===c()),ee=R(()=>m()||u(O)&&!u(P)),B=R(()=>f()===`beta`?`beta`:`stable`),H=I(void 0),G=I(!1),K=R(()=>w()===null?null:De(w(),b())),ne={success:{text:`text-success`,border:`border-success/40`,bg:`bg-success/10`,icon:U},info:{text:`text-foreground`,border:`border-border`,bg:`bg-muted/50`,icon:te},warning:{text:`text-warning`,border:`border-warning/40`,bg:`bg-warning/10`,icon:ae},critical:{text:`text-destructive`,border:`border-destructive/40`,bg:`bg-destructive/10`,icon:W},pending:{text:`text-muted-foreground`,border:`border-border`,bg:`bg-muted/50`,icon:re}};F(()=>{b()&&u(H)&&(u(H).scrollTop=u(H).scrollHeight)});function ie(){return _()?`Restarting & verifying…`:m()?`Running…`:`Run Update`}function me(){C(G,!0)}function he(){C(G,!1),n.onRun?.()}var ge=He(),_e=x(ge);T(_e,()=>q,(e,t)=>{t(e,{children:(e,t)=>{var s=He(),f=x(s);T(f,()=>X,(e,t)=>{t(e,{children:(e,t)=>{var r=Ae(),s=x(r),c=y(s);T(c,()=>Z,(e,t)=>{t(e,{children:(e,t)=>{o();var n=i(`Application Update`);p(e,n)},$$slots:{default:!0}})});var f=M(c,2),m=e=>{var t=Oe(),r=y(t);d(t),A(()=>{L(t,1,`rounded-full border px-2 py-0.5 font-mono text-xs ${l()?`border-warning/40 bg-warning/10 text-warning`:`border-border bg-muted text-muted-foreground`}`),z(r,`v${n.currentVersion??``}`)}),p(e,t)};a(f,e=>{n.currentVersion&&e(m)}),d(s);var h=M(s,2);T(h,()=>Y,(e,t)=>{t(e,{children:(e,t)=>{o();var n=ke(),r=M(x(n)),i=y(r,!0);d(r),o(),A(()=>z(i,u(B))),p(e,n)},$$slots:{default:!0}})}),p(e,r)},$$slots:{default:!0}})});var m=M(f,2);T(m,()=>J,(e,t)=>{t(e,{class:`space-y-4`,children:(e,t)=>{var s=Ve(),f=x(s),m=e=>{var t=je(),r=y(t);xe(r,{class:`h-4 w-4 shrink-0`});var i=M(r,2),a=y(i),o=M(a),s=y(o);d(o);var l=M(o,2),f=y(l);d(l),d(i),d(t),A(()=>{z(a,`${u(B)??``} release available — `),z(s,`v${n.currentVersion??``}`),z(f,`v${c()??``}`)}),p(e,t)},g=e=>{var t=Me(),r=y(t),i=M(r),a=y(i);d(i),o(),d(t),A(()=>{z(r,`You're on the latest ${u(B)??``} release (`),z(a,`v${n.currentVersion??``}`)}),p(e,t)};a(f,e=>{l()&&c()?e(m):n.currentVersion&&c()&&e(g,1)});var E=M(f,2),P=e=>{var t=Fe(),n=y(t),i=y(n);ae(i,{class:`mt-0.5 h-4 w-4 shrink-0`});var s=M(i,2),l=M(y(s),2),f=y(l),m=y(f);d(f);var g=M(f,2),_=y(g,!0);d(g);var v=M(g,2),b=y(v);d(v),o(3),d(l),d(s),d(n);var x=M(n,2),w=e=>{var t=Ne();r(`click`,t,()=>C(N,!0)),p(e,t)},T=e=>{var t=Pe(),n=y(t),r=M(y(n)),i=y(r,!0);d(r),o(),d(n);var a=M(n,2);S(a),d(t),A(()=>{z(i,c()),h(a,`placeholder`,c()??``)}),j(a,()=>u(k),e=>C(k,e)),p(e,t)};a(x,e=>{u(N)?e(T,-1):e(w)}),d(t),A(()=>{z(m,`v${c()??``}`),z(_,D().required),z(b,`v${D().running??``}`)}),p(e,t)};a(E,e=>{u(O)&&e(P)});var F=M(E,2);V(F,{onclick:me,get disabled(){return u(ee)},variant:`destructive`,children:(e,t)=>{o();var n=i();A(e=>z(n,e),[()=>ie()]),p(e,n)},$$slots:{default:!0}});var I=M(F,2),U=e=>{var t=Ie(),n=y(t);re(n,{class:`h-4 w-4 animate-spin`}),o(2),d(t),p(e,t)};a(I,e=>{_()&&w()===null&&e(U)});var te=M(I,2),W=e=>{let t=R(()=>ne[u(K).severity]),n=R(()=>u(t).icon);var r=ze(),i=y(r);T(i,()=>u(n),(e,n)=>{n(e,{get class(){return`mt-0.5 h-5 w-5 shrink-0 ${u(t).text??``}`}})});var o=M(i,2),s=y(o),c=y(s,!0);d(s);var l=M(s,2),f=e=>{var t=Le(),n=y(t);d(t),A(()=>z(n,`${u(K).from??``} → ${u(K).to??``}`)),p(e,t)};a(l,e=>{u(K).from&&u(K).to&&u(K).from!==u(K).to&&e(f)});var m=M(l,2),g=e=>{var t=Re(),n=y(t,!0);d(t),A(()=>z(n,u(K).detail)),p(e,t)};a(m,e=>{u(K).detail&&e(g)}),d(o),d(r),A(()=>{L(r,1,`flex items-start gap-3 rounded-md border px-3 py-3 ${u(t).border??``} ${u(t).bg??``}`),h(r,`role`,u(K).severity===`critical`?`alert`:`status`),h(r,`aria-live`,u(K).severity===`critical`?`assertive`:`polite`),L(s,1,`text-sm font-medium ${u(t).text??``}`),z(c,u(K).title)}),p(e,r)};a(te,e=>{u(K)&&e(W)});var G=M(te,2),oe=e=>{var t=Be(),n=M(y(t),2),r=y(n,!0);d(n),v(n,e=>C(H,e),()=>u(H)),d(t),A(()=>z(r,b())),p(e,t)};a(G,e=>{b()&&e(oe)}),p(e,s)},$$slots:{default:!0}})}),p(e,s)},$$slots:{default:!0}})});var ve=M(_e,2);T(ve,()=>pe,(e,n)=>{n(e,{get open(){return u(G)},onOpenChange:e=>C(G,e,!0),children:(e,n)=>{var r=t(),s=x(r);T(s,()=>de,(e,n)=>{n(e,{children:(e,n)=>{var r=He(),s=x(r);T(s,()=>ce,(e,n)=>{n(e,{children:(e,n)=>{var r=Ue(),s=x(r);T(s,()=>se,(e,t)=>{t(e,{children:(e,t)=>{o();var n=i();A(()=>z(n,u(O)?`Run Update despite the Node mismatch?`:`Run Update?`)),p(e,n)},$$slots:{default:!0}})});var c=M(s,2),l=e=>{var n=t(),r=x(n);T(r,()=>le,(e,t)=>{t(e,{class:`text-destructive`,children:(e,t)=>{o();var n=i();A(()=>z(n,`This release requires Node ${D().required??``} and the host runs v${D().running??``}.
@@ -1,4 +1,4 @@
1
- import{H as e,J as t,K as n,L as r,Lt as i,Mt as a,O as o,P as s,Q as c,Rt as l,U as u,V as d,_ as f,b as p,dt as m,ft as h,g,gt as _,it as v,j as y,jt as b,lt as x,mt as S,o as C,ot as w,pt as T,q as E,s as D,st as O,v as k,vt as A,w as j,xt as M,z as N}from"../chunks/BJr3_fzd.js";import{i as P}from"../chunks/CsdA-c5v.js";import"../chunks/xihTtKlq.js";import{n as F}from"../chunks/uEs1TBqf.js";import{t as I}from"../chunks/CxPNWG5P.js";import{t as L}from"../chunks/CH79OQfl.js";import{i as R,n as ee,o as te,r as z,t as B}from"../chunks/CoyUb8nL.js";import{t as V}from"../chunks/Df7oZAPr.js";import{t as ne}from"../chunks/BItYwz1k.js";import{t as re}from"../chunks/BqEuA-Z7.js";import{t as ie}from"../chunks/DxUIq8AJ.js";import{t as ae}from"../chunks/BfIcbyti.js";import{t as H}from"../chunks/Kh4cWZvP.js";import{t as oe}from"../chunks/kyKuDUwH.js";import{t as se}from"../chunks/xXc7YQM2.js";import{t as ce}from"../chunks/Eg7QSmtp.js";import{t as U}from"../chunks/DwMfv5aD.js";import{t as le}from"../chunks/xldpSbJ4.js";import{n as ue,t as de}from"../chunks/CU86KVhA.js";import{n as W}from"../chunks/DhuzqlSG.js";import{t as fe}from"../chunks/DBYj-4Ic.js";import"../chunks/RlomQNCr.js";import{i as pe}from"../chunks/BTJ8jaRT.js";var G=new Set([`$$slots`,`$$events`,`$$legacy`]);function K(e,t){let n=C(t,G),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M4.929 4.929 19.07 19.071`}]];F(e,D({name:`ban`},()=>n,{get iconNode(){return r}}))}var q=u(`<span class="rounded-full bg-amber-500/10 px-2 py-0.5 font-mono text-[10px] text-amber-700 dark:text-amber-400"> </span>`),me=u(`<span class="bg-muted text-muted-foreground rounded-full px-2 py-0.5 font-mono text-[10px]"> </span>`),he=u(`<div class="mt-1.5 flex flex-wrap gap-1"><!> <!></div>`),ge=u(`<label><input type="checkbox" class="mt-0.5 shrink-0"/> <div class="min-w-0"><p class="text-sm leading-tight font-medium"> </p> <p class="text-muted-foreground mt-0.5 text-xs"> </p></div></label>`),J=u(`<p class="text-muted-foreground text-sm">Not a member of the active organization.</p>`),Y=u(`<p class="text-muted-foreground text-sm"><strong class="text-foreground capitalize"> </strong> <!></p>`),_e=u(`<div class="mt-4 ml-10 space-y-4"><section><h4 class="text-muted-foreground mb-2 text-xs font-medium tracking-wider uppercase">Platform</h4> <div class="grid gap-2 sm:grid-cols-2"></div></section> <section><h4 class="text-muted-foreground mb-2 text-xs font-medium tracking-wider uppercase">Organization</h4> <!></section></div>`),ve=u(`<div><div class="flex items-center gap-3"><button type="button" class="text-muted-foreground hover:text-foreground shrink-0 rounded-sm p-0.5"><!></button> <!> <!> <!></div> <!></div>`);function ye(i,o){a(o,!0);let u=M(()=>o.user.orgRole===`owner`||o.user.orgRole===`admin`),p=M(()=>c(u)?[]:o.user.orgPermissions),_=M(()=>o.user.platformPermissions.includes(`instance_admin`)),v=M(()=>c(_)&&!o.isPlatformAdmin),y=M(()=>c(v)?`Only a platform admin can remove another platform admin.`:o.soleInstanceAdmin?`Cannot remove the only instance admin. Promote another user first.`:null);function x(e){let t=o.user.platformPermissions.includes(e),n=!o.isPlatformAdmin,r=e===`instance_admin`&&o.soleInstanceAdmin;return{checked:t,locked:n||r,soleAdminLock:r,platformLocked:n}}var S=ve(),C=m(S),E=m(C),D=m(E),O=e=>{L(e,{class:`h-4 w-4`})},A=e=>{V(e,{class:`h-4 w-4`})};r(D,e=>{o.expanded?e(O):e(A,-1)}),l(E);var P=T(E,2);B(P,{get user(){return o.user},get id(){return o.user.id},get role(){return o.user.orgRole},get disabled(){return o.user.disabled},get lastLoginAt(){return o.user.lastLoginAt},children:(t,n)=>{var i=e(),a=h(i),u=e=>{var t=he(),n=m(t);s(n,16,()=>o.user.platformPermissions,e=>e,(e,t)=>{var n=q(),r=m(n,!0);l(n),w(()=>N(r,R[t])),d(e,n)});var r=T(n,2);s(r,16,()=>c(p),e=>e,(e,t)=>{var n=me(),r=m(n,!0);l(n),w(()=>N(r,R[t])),d(e,n)}),l(t),d(e,t)};r(a,e=>{!o.expanded&&(o.user.platformPermissions.length>0||c(p).length>0)&&e(u)}),d(t,i)},$$slots:{default:!0}});var F=T(P,2),ee=e=>{{let t=M(()=>o.disabling||!!c(y)),n=M(()=>c(y)??`Disable user — they keep their history but cannot sign in`);I(e,{size:`sm`,variant:`ghost`,get disabled(){return c(t)},get onclick(){return o.onDisable},get title(){return c(n)},class:`text-muted-foreground hover:text-foreground h-8 w-8 shrink-0 p-0`,children:(e,t)=>{K(e,{class:`h-4 w-4`})},$$slots:{default:!0}})}};r(F,e=>{o.user.disabled||e(ee)});var te=T(F,2);{let e=M(()=>o.deleting||!!c(y)),t=M(()=>c(y)??`Delete user`);I(te,{size:`sm`,variant:`ghost`,get disabled(){return c(e)},get onclick(){return o.onDelete},get title(){return c(t)},class:`text-destructive hover:text-destructive h-8 w-8 shrink-0 p-0`,children:(e,t)=>{H(e,{class:`h-4 w-4`})},$$slots:{default:!0}})}l(C);var ne=T(C,2),re=e=>{var i=_e(),a=m(i),p=T(m(a),2);s(p,20,()=>pe,e=>e,(e,n)=>{let r=M(()=>x(n));var i=ge(),a=m(i);g(a);var s=T(a,2),u=m(s),p=m(u,!0);l(u);var h=T(u,2),_=m(h,!0);l(h),l(s),l(i),w(()=>{j(i,1,`flex items-start gap-2 rounded-md border p-2.5 ${c(r).locked?`border-border cursor-not-allowed opacity-60`:`border-border hover:bg-accent/40 cursor-pointer`}`),f(i,`title`,c(r).soleAdminLock?`Cannot remove the only instance admin.`:void 0),k(a,c(r).checked),a.disabled=o.updating||c(r).locked,N(p,R[n]),N(_,z[n])}),t(`change`,a,e=>o.onTogglePermission(n,e.target.checked)),d(e,i)}),l(p),l(a);var h=T(a,2),_=T(m(h),2),v=e=>{var t=J();d(e,t)},y=e=>{var t=Y(),i=m(t),a=m(i,!0);l(i);var s=T(i,2),f=e=>{var t=n(`— every organization permission.`);d(e,t)},p=e=>{var t=n();w(e=>N(t,`— ${e??``}.`),[()=>o.user.orgPermissions.map(e=>R[e]).join(`, `)]),d(e,t)},h=e=>{var t=n(`— no organization permissions granted.`);d(e,t)};r(s,e=>{c(u)?e(f):o.user.orgPermissions.length>0?e(p,1):e(h,-1)}),l(t),w(()=>N(a,o.user.orgRole)),d(e,t)};r(_,e=>{o.user.orgRole?e(y,-1):e(v)}),l(h),l(i),d(e,i)};r(ne,e=>{o.expanded&&e(re)}),l(S),w(()=>{j(S,1,`px-4 py-3 ${o.expanded?`bg-accent/20`:``}`),f(E,`aria-label`,o.expanded?`Collapse permissions`:`Expand permissions`)}),t(`click`,E,function(...e){o.onToggleExpand?.apply(this,e)}),d(i,S),b()}E([`click`,`change`]);var be=u(`<!> Allowlist user`,1),xe=u(`<!> Members &amp; roles`,1),Se=u(`<p><strong>Instance permissions</strong> (the badges below) apply to the whole server and are what
1
+ import{H as e,J as t,K as n,L as r,Lt as i,Mt as a,O as o,P as s,Q as c,Rt as l,U as u,V as d,_ as f,b as p,dt as m,ft as h,g,gt as _,it as v,j as y,jt as b,lt as x,mt as S,o as C,ot as w,pt as T,q as E,s as D,st as O,v as k,vt as A,w as j,xt as M,z as N}from"../chunks/BJr3_fzd.js";import{i as P}from"../chunks/D1C2bDXQ.js";import"../chunks/xihTtKlq.js";import{n as F}from"../chunks/uEs1TBqf.js";import{t as I}from"../chunks/CxPNWG5P.js";import{t as L}from"../chunks/CH79OQfl.js";import{i as R,n as ee,o as te,r as z,t as B}from"../chunks/CoyUb8nL.js";import{t as V}from"../chunks/Df7oZAPr.js";import{t as ne}from"../chunks/BItYwz1k.js";import{t as re}from"../chunks/BqEuA-Z7.js";import{t as ie}from"../chunks/DxUIq8AJ.js";import{t as ae}from"../chunks/BfIcbyti.js";import{t as H}from"../chunks/Kh4cWZvP.js";import{t as oe}from"../chunks/kyKuDUwH.js";import{t as se}from"../chunks/xXc7YQM2.js";import{t as ce}from"../chunks/Eg7QSmtp.js";import{t as U}from"../chunks/DwMfv5aD.js";import{t as le}from"../chunks/xldpSbJ4.js";import{n as ue,t as de}from"../chunks/CU86KVhA.js";import{n as W}from"../chunks/DhuzqlSG.js";import{t as fe}from"../chunks/DBYj-4Ic.js";import"../chunks/C6gAy11g.js";import{i as pe}from"../chunks/BTJ8jaRT.js";var G=new Set([`$$slots`,`$$events`,`$$legacy`]);function K(e,t){let n=C(t,G),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M4.929 4.929 19.07 19.071`}]];F(e,D({name:`ban`},()=>n,{get iconNode(){return r}}))}var q=u(`<span class="rounded-full bg-amber-500/10 px-2 py-0.5 font-mono text-[10px] text-amber-700 dark:text-amber-400"> </span>`),me=u(`<span class="bg-muted text-muted-foreground rounded-full px-2 py-0.5 font-mono text-[10px]"> </span>`),he=u(`<div class="mt-1.5 flex flex-wrap gap-1"><!> <!></div>`),ge=u(`<label><input type="checkbox" class="mt-0.5 shrink-0"/> <div class="min-w-0"><p class="text-sm leading-tight font-medium"> </p> <p class="text-muted-foreground mt-0.5 text-xs"> </p></div></label>`),J=u(`<p class="text-muted-foreground text-sm">Not a member of the active organization.</p>`),Y=u(`<p class="text-muted-foreground text-sm"><strong class="text-foreground capitalize"> </strong> <!></p>`),_e=u(`<div class="mt-4 ml-10 space-y-4"><section><h4 class="text-muted-foreground mb-2 text-xs font-medium tracking-wider uppercase">Platform</h4> <div class="grid gap-2 sm:grid-cols-2"></div></section> <section><h4 class="text-muted-foreground mb-2 text-xs font-medium tracking-wider uppercase">Organization</h4> <!></section></div>`),ve=u(`<div><div class="flex items-center gap-3"><button type="button" class="text-muted-foreground hover:text-foreground shrink-0 rounded-sm p-0.5"><!></button> <!> <!> <!></div> <!></div>`);function ye(i,o){a(o,!0);let u=M(()=>o.user.orgRole===`owner`||o.user.orgRole===`admin`),p=M(()=>c(u)?[]:o.user.orgPermissions),_=M(()=>o.user.platformPermissions.includes(`instance_admin`)),v=M(()=>c(_)&&!o.isPlatformAdmin),y=M(()=>c(v)?`Only a platform admin can remove another platform admin.`:o.soleInstanceAdmin?`Cannot remove the only instance admin. Promote another user first.`:null);function x(e){let t=o.user.platformPermissions.includes(e),n=!o.isPlatformAdmin,r=e===`instance_admin`&&o.soleInstanceAdmin;return{checked:t,locked:n||r,soleAdminLock:r,platformLocked:n}}var S=ve(),C=m(S),E=m(C),D=m(E),O=e=>{L(e,{class:`h-4 w-4`})},A=e=>{V(e,{class:`h-4 w-4`})};r(D,e=>{o.expanded?e(O):e(A,-1)}),l(E);var P=T(E,2);B(P,{get user(){return o.user},get id(){return o.user.id},get role(){return o.user.orgRole},get disabled(){return o.user.disabled},get lastLoginAt(){return o.user.lastLoginAt},children:(t,n)=>{var i=e(),a=h(i),u=e=>{var t=he(),n=m(t);s(n,16,()=>o.user.platformPermissions,e=>e,(e,t)=>{var n=q(),r=m(n,!0);l(n),w(()=>N(r,R[t])),d(e,n)});var r=T(n,2);s(r,16,()=>c(p),e=>e,(e,t)=>{var n=me(),r=m(n,!0);l(n),w(()=>N(r,R[t])),d(e,n)}),l(t),d(e,t)};r(a,e=>{!o.expanded&&(o.user.platformPermissions.length>0||c(p).length>0)&&e(u)}),d(t,i)},$$slots:{default:!0}});var F=T(P,2),ee=e=>{{let t=M(()=>o.disabling||!!c(y)),n=M(()=>c(y)??`Disable user — they keep their history but cannot sign in`);I(e,{size:`sm`,variant:`ghost`,get disabled(){return c(t)},get onclick(){return o.onDisable},get title(){return c(n)},class:`text-muted-foreground hover:text-foreground h-8 w-8 shrink-0 p-0`,children:(e,t)=>{K(e,{class:`h-4 w-4`})},$$slots:{default:!0}})}};r(F,e=>{o.user.disabled||e(ee)});var te=T(F,2);{let e=M(()=>o.deleting||!!c(y)),t=M(()=>c(y)??`Delete user`);I(te,{size:`sm`,variant:`ghost`,get disabled(){return c(e)},get onclick(){return o.onDelete},get title(){return c(t)},class:`text-destructive hover:text-destructive h-8 w-8 shrink-0 p-0`,children:(e,t)=>{H(e,{class:`h-4 w-4`})},$$slots:{default:!0}})}l(C);var ne=T(C,2),re=e=>{var i=_e(),a=m(i),p=T(m(a),2);s(p,20,()=>pe,e=>e,(e,n)=>{let r=M(()=>x(n));var i=ge(),a=m(i);g(a);var s=T(a,2),u=m(s),p=m(u,!0);l(u);var h=T(u,2),_=m(h,!0);l(h),l(s),l(i),w(()=>{j(i,1,`flex items-start gap-2 rounded-md border p-2.5 ${c(r).locked?`border-border cursor-not-allowed opacity-60`:`border-border hover:bg-accent/40 cursor-pointer`}`),f(i,`title`,c(r).soleAdminLock?`Cannot remove the only instance admin.`:void 0),k(a,c(r).checked),a.disabled=o.updating||c(r).locked,N(p,R[n]),N(_,z[n])}),t(`change`,a,e=>o.onTogglePermission(n,e.target.checked)),d(e,i)}),l(p),l(a);var h=T(a,2),_=T(m(h),2),v=e=>{var t=J();d(e,t)},y=e=>{var t=Y(),i=m(t),a=m(i,!0);l(i);var s=T(i,2),f=e=>{var t=n(`— every organization permission.`);d(e,t)},p=e=>{var t=n();w(e=>N(t,`— ${e??``}.`),[()=>o.user.orgPermissions.map(e=>R[e]).join(`, `)]),d(e,t)},h=e=>{var t=n(`— no organization permissions granted.`);d(e,t)};r(s,e=>{c(u)?e(f):o.user.orgPermissions.length>0?e(p,1):e(h,-1)}),l(t),w(()=>N(a,o.user.orgRole)),d(e,t)};r(_,e=>{o.user.orgRole?e(y,-1):e(v)}),l(h),l(i),d(e,i)};r(ne,e=>{o.expanded&&e(re)}),l(S),w(()=>{j(S,1,`px-4 py-3 ${o.expanded?`bg-accent/20`:``}`),f(E,`aria-label`,o.expanded?`Collapse permissions`:`Expand permissions`)}),t(`click`,E,function(...e){o.onToggleExpand?.apply(this,e)}),d(i,S),b()}E([`click`,`change`]);var be=u(`<!> Allowlist user`,1),xe=u(`<!> Members &amp; roles`,1),Se=u(`<p><strong>Instance permissions</strong> (the badges below) apply to the whole server and are what
2
2
  gets you into this admin area. Edit them here.</p> <p class="mt-1.5"><strong>Org roles</strong> apply inside one organization: owners and admins can do
3
3
  everything in theirs, members can do nothing until you grant them a permission. Edit them at <a href="/team/members">Members &amp; roles</a>.</p>`,1),Ce=u(`<label class="flex cursor-pointer items-center gap-1.5 text-xs"><input type="checkbox"/> </label>`),we=u(`<div><p class="mb-2 text-xs font-medium">Instance permissions</p> <p class="text-muted-foreground mb-2 text-xs">Apply across the whole instance. The user joins the active organization as a <span class="font-mono">member</span>; grant them access there from <a href="/team/members" class="underline">Members &amp; roles</a>.</p> <div class="flex flex-wrap gap-3"></div></div>`),Te=u(`<p class="text-muted-foreground text-xs">The user joins the active organization as a <span class="font-mono">member</span>.
4
4
  Grant them access from <a href="/team/members" class="underline">Members &amp; roles</a>.</p>`),Ee=u(`<div class="bg-muted/40 space-y-3 rounded-lg border p-4"><p class="text-sm font-medium">New User</p> <!> <p class="text-muted-foreground text-xs"> </p> <!> <div class="flex gap-2"><!> <!></div></div>`),De=u(`Set <code class="text-xs">DATA_PATH</code> (local provider) or check your provider
@@ -1,2 +1,2 @@
1
- import{H as e,K as t,Lt as n,Mt as r,O as i,Rt as a,U as o,V as s,dt as c,ft as l,j as u,jt as d,lt as f,pt as p,rt as m}from"../chunks/BJr3_fzd.js";import"../chunks/xihTtKlq.js";import{t as h}from"../chunks/iLiBnFky.js";import{t as g}from"../chunks/DPMlkLnX.js";import{n as _,t as v}from"../chunks/Cp6loGqI.js";var y=o(`<div class="bg-background flex min-h-screen items-center justify-center px-4 py-12 sm:px-6 lg:px-8"><div class="w-full max-w-sm space-y-6 text-center"><div class="flex justify-center"><div class="bg-muted rounded-full p-4"><!></div></div> <div class="space-y-2"><h2 class="text-foreground text-2xl font-bold tracking-tight">Check your email</h2> <p class="text-muted-foreground text-sm">We sent you a sign-in link. Click the link in the email to continue.</p></div> <!> <a class="text-muted-foreground hover:text-foreground text-sm underline" href="/login">Back to sign in</a></div></div>`);function b(o,b){r(b,!0);var x=y();i(`l70sov`,e=>{m(()=>{f.title=`Check your email - ${g.data.branding.name??``}`})});var S=c(x),C=c(S),w=c(C),T=c(w);h(T,{class:`text-foreground size-8`}),a(w),a(C);var E=p(C,4);u(E,()=>_,(r,i)=>{i(r,{children:(r,i)=>{var a=e(),o=l(a);u(o,()=>v,(e,r)=>{r(e,{children:(e,r)=>{n();var i=t(`The link expires in a few minutes. If it doesn't arrive, check your spam folder or request a
1
+ import{H as e,K as t,Lt as n,Mt as r,O as i,Rt as a,U as o,V as s,dt as c,ft as l,j as u,jt as d,lt as f,pt as p,rt as m}from"../chunks/BJr3_fzd.js";import"../chunks/xihTtKlq.js";import{t as h}from"../chunks/iLiBnFky.js";import{t as g}from"../chunks/LCEeY5pO.js";import{n as _,t as v}from"../chunks/Cp6loGqI.js";var y=o(`<div class="bg-background flex min-h-screen items-center justify-center px-4 py-12 sm:px-6 lg:px-8"><div class="w-full max-w-sm space-y-6 text-center"><div class="flex justify-center"><div class="bg-muted rounded-full p-4"><!></div></div> <div class="space-y-2"><h2 class="text-foreground text-2xl font-bold tracking-tight">Check your email</h2> <p class="text-muted-foreground text-sm">We sent you a sign-in link. Click the link in the email to continue.</p></div> <!> <a class="text-muted-foreground hover:text-foreground text-sm underline" href="/login">Back to sign in</a></div></div>`);function b(o,b){r(b,!0);var x=y();i(`l70sov`,e=>{m(()=>{f.title=`Check your email - ${g.data.branding.name??``}`})});var S=c(x),C=c(S),w=c(C),T=c(w);h(T,{class:`text-foreground size-8`}),a(w),a(C);var E=p(C,4);u(E,()=>_,(r,i)=>{i(r,{children:(r,i)=>{var a=e(),o=l(a);u(o,()=>v,(e,r)=>{r(e,{children:(e,r)=>{n();var i=t(`The link expires in a few minutes. If it doesn't arrive, check your spam folder or request a
2
2
  new one from the sign-in page.`);s(e,i)},$$slots:{default:!0}})}),s(r,a)},$$slots:{default:!0}})}),n(2),a(S),a(x),s(o,x),d()}export{b as component};
@@ -1,4 +1,4 @@
1
- import{L as e,Lt as t,Mt as n,O as r,P as i,Q as a,Rt as o,U as s,V as c,_ as l,dt as u,ft as d,it as f,jt as p,lt as m,ot as h,pt as g,w as _,z as v}from"../chunks/BJr3_fzd.js";import{d as y}from"../chunks/CsdA-c5v.js";import"../chunks/xihTtKlq.js";import{t as b}from"../chunks/BlQxs_Ya.js";var x=s(`<meta name="description" content="The Selva HTTP API — endpoints, pagination, and errors."/>`),S=s(`<code class="bg-background rounded border px-1.5 py-0.5 text-xs"> </code>`),C=s(`<span>Paginated</span>`),w=s(`<span>JSON body</span>`),T=s(`<code> </code> `,1),E=s(`<span>multipart/form-data: <!></span>`),D=s(`<span><code> </code> </span>`),O=s(`<li class="rounded-lg border p-4"><div class="flex flex-wrap items-baseline gap-x-3 gap-y-1"><span> </span> <code class="text-sm font-medium break-all"> </code></div> <p class="text-muted-foreground mt-2 text-sm leading-relaxed"> </p> <div class="text-muted-foreground mt-3 flex flex-wrap gap-x-4 gap-y-1 text-xs"><!> <!> <!> <!> <span> </span></div></li>`),k=s(`<section class="mb-10"><h2 class="mb-4 border-b pb-2 text-xl font-semibold tracking-tight"> </h2> <ul class="space-y-3"></ul></section>`),A=s(`<header class="mb-10"><h1 class="text-3xl font-semibold tracking-tight">API reference</h1> <p class="text-muted-foreground mt-3 leading-relaxed">Every endpoint below acts as the calling identity and is confined to that identity's
1
+ import{L as e,Lt as t,Mt as n,O as r,P as i,Q as a,Rt as o,U as s,V as c,_ as l,dt as u,ft as d,it as f,jt as p,lt as m,ot as h,pt as g,w as _,z as v}from"../chunks/BJr3_fzd.js";import{d as y}from"../chunks/D1C2bDXQ.js";import"../chunks/xihTtKlq.js";import{t as b}from"../chunks/BlQxs_Ya.js";var x=s(`<meta name="description" content="The Selva HTTP API — endpoints, pagination, and errors."/>`),S=s(`<code class="bg-background rounded border px-1.5 py-0.5 text-xs"> </code>`),C=s(`<span>Paginated</span>`),w=s(`<span>JSON body</span>`),T=s(`<code> </code> `,1),E=s(`<span>multipart/form-data: <!></span>`),D=s(`<span><code> </code> </span>`),O=s(`<li class="rounded-lg border p-4"><div class="flex flex-wrap items-baseline gap-x-3 gap-y-1"><span> </span> <code class="text-sm font-medium break-all"> </code></div> <p class="text-muted-foreground mt-2 text-sm leading-relaxed"> </p> <div class="text-muted-foreground mt-3 flex flex-wrap gap-x-4 gap-y-1 text-xs"><!> <!> <!> <!> <span> </span></div></li>`),k=s(`<section class="mb-10"><h2 class="mb-4 border-b pb-2 text-xl font-semibold tracking-tight"> </h2> <ul class="space-y-3"></ul></section>`),A=s(`<header class="mb-10"><h1 class="text-3xl font-semibold tracking-tight">API reference</h1> <p class="text-muted-foreground mt-3 leading-relaxed">Every endpoint below acts as the calling identity and is confined to that identity's
2
2
  organization. Authenticate with a browser session cookie or a bearer token; the full
3
3
  machine-readable description is at <a class="underline underline-offset-4" data-sveltekit-reload="">/docs/api/openapi.yaml</a>.</p></header> <section class="mb-10 grid gap-4 sm:grid-cols-2"><div class="bg-muted/40 rounded-lg border p-4"><h2 class="font-medium">Pagination</h2> <p class="text-muted-foreground mt-2 text-sm leading-relaxed">Lists take <code>limit</code> and <code>cursor</code> and return <code></code>. <code>nextCursor</code> </p></div> <div class="bg-muted/40 rounded-lg border p-4"><h2 class="font-medium">Errors</h2> <p class="text-muted-foreground mt-2 text-sm leading-relaxed">Failures return <code></code>. Branch on <code>code</code>, never on
4
4
  the human-readable message. A resource you cannot see returns <code>404</code>, not <code>403</code>.</p> <div class="mt-3 flex flex-wrap gap-1.5"></div></div></section> <!>`,1);function j(s,j){n(j,!0);let M={GET:`bg-sky-100 text-sky-800 dark:bg-sky-950 dark:text-sky-300`,POST:`bg-emerald-100 text-emerald-800 dark:bg-emerald-950 dark:text-emerald-300`,PUT:`bg-amber-100 text-amber-800 dark:bg-amber-950 dark:text-amber-300`,PATCH:`bg-amber-100 text-amber-800 dark:bg-amber-950 dark:text-amber-300`,DELETE:`bg-rose-100 text-rose-800 dark:bg-rose-950 dark:text-rose-300`};r(`1c8t0id`,e=>{var t=x();f(()=>{m.title=`API reference`}),c(e,t)}),b(s,{class:`mx-auto max-w-4xl`,children:(n,r)=>{var s=A(),f=d(s),p=g(u(f),2),m=g(u(p));t(),o(p),o(f);var b=g(f,2),x=u(b),N=g(u(x),2),P=g(u(N),5);P.textContent=`{ items, nextCursor? }`;var F=g(P,3);o(N),o(x);var I=g(x,2),L=g(u(I),2),R=g(u(L));R.textContent=`{ message, code }`,t(7),o(L);var z=g(L,2);i(z,20,()=>j.data.errorCodes,e=>e,(e,t)=>{var n=S(),r=u(n,!0);o(n),h(()=>v(r,t)),c(e,n)}),o(z),o(I),o(b);var B=g(b,2);i(B,17,()=>j.data.groups,e=>e.tag,(t,n)=>{var r=k(),s=u(r),l=u(s,!0);o(s);var f=g(s,2);i(f,21,()=>a(n).endpoints,e=>e.method+e.path,(t,n)=>{var r=O(),s=u(r),l=u(s),f=u(l,!0);o(l);var p=g(l,2),m=u(p,!0);o(p),o(s);var y=g(s,2),b=u(y,!0);o(y);var x=g(y,2),S=u(x),k=e=>{var t=C();c(e,t)};e(S,e=>{a(n).paginated&&e(k)});var A=g(S,2),j=e=>{var t=w();c(e,t)};e(A,e=>{a(n).hasBody&&e(j)});var N=g(A,2),P=e=>{var t=E(),r=g(u(t));i(r,19,()=>a(n).multipart,e=>e.field,(e,t,r)=>{var i=T(),s=d(i),l=u(s);o(s);var f=g(s,1,!0);h(()=>{v(l,`${a(t).field??``}${a(t).required?``:`?`}`),v(f,a(r)<a(n).multipart.length-1?`, `:``)}),c(e,i)}),o(t),c(e,t)};e(N,e=>{a(n).multipart&&e(P)});var F=g(N,2);i(F,17,()=>a(n).query,e=>e.name,(e,t)=>{var n=D(),r=u(n),i=u(r);o(r);var s=g(r);o(n),h(()=>{v(i,`?${a(t).name??``}`),v(s,` — ${a(t).description??``}`)}),c(e,n)});var I=g(F,2),L=u(I);o(I),o(x),o(r),h(e=>{_(l,1,`rounded px-2 py-0.5 font-mono text-xs font-semibold ${M[a(n).method]??``}`),v(f,a(n).method),v(m,a(n).path),v(b,a(n).summary),v(L,`Errors: ${e??``}`)},[()=>a(n).errors.join(`, `)]),c(t,r)}),o(f),o(r),h(()=>v(l,a(n).tag)),c(t,r)}),h(e=>{l(m,`href`,e),v(F,` is absent on the last page.
@@ -1 +1 @@
1
- import{Bt as e,M as t,Mt as n,Q as r,Rt as i,U as a,V as o,dt as s,jt as c,xt as l}from"../chunks/BJr3_fzd.js";import"../chunks/xihTtKlq.js";import{t as u}from"../chunks/CG9N_u6J.js";import{t as d}from"../chunks/BSKvdAY9.js";import{t as f}from"../chunks/TcKk9RHF.js";import{t as p}from"../chunks/CWaVisbr.js";import{t as m}from"../chunks/ZT_LEMHt.js";import{t as h}from"../chunks/DhQevarr.js";import{t as g}from"../chunks/kyKuDUwH.js";import{t as _}from"../chunks/Ct0B1C-6.js";import{t as v}from"../chunks/DDZHb50K.js";var y=a(`<div class="px-(--page-px) py-(--page-py)"><!></div>`);function b(a,b){n(b,!0);let x=e=>b.data.platformPermissions.includes(`instance_admin`)||b.data.platformPermissions.includes(e)?!0:b.data.orgPermissions.includes(e),S=l(()=>[{href:`/admin`,label:`General`,icon:f,show:!0},{href:`/admin/organizations`,label:`Organizations`,icon:u,match:`prefix`,show:x(`instance_admin`)&&b.data.tenancy!==`single`},{href:`/admin/projects`,label:`Projects`,icon:d,match:`prefix`,show:x(`instance_admin`)&&b.data.platformProjectsEnabled},{href:`/admin/users`,label:`Users`,icon:g,match:`prefix`,show:x(`manage_instance_users`)},{href:`/admin/compute`,label:`Compute`,icon:m,match:`prefix`,show:x(`manage_compute`)},{href:`/admin/system`,label:`System`,icon:h,match:`prefix`,show:x(`manage_updates`)},{href:`/admin/audit`,label:`Audit log`,icon:p,match:`prefix`,show:x(`instance_admin`)&&b.data.auditAvailable}].filter(e=>e.show));v(a,{sidenav:e=>{_(e,{get items(){return r(S)},eyebrow:`Platform`,border:!1})},children:(n,r)=>{var a=y(),c=s(a);t(c,()=>b.children??e),i(a),o(n,a)},$$slots:{sidenav:!0,default:!0}}),c()}export{b as component};
1
+ import{Bt as e,M as t,Mt as n,Q as r,Rt as i,U as a,V as o,dt as s,jt as c,xt as l}from"../chunks/BJr3_fzd.js";import"../chunks/xihTtKlq.js";import{t as u}from"../chunks/CG9N_u6J.js";import{t as d}from"../chunks/BSKvdAY9.js";import{t as f}from"../chunks/TcKk9RHF.js";import{t as p}from"../chunks/CWaVisbr.js";import{t as m}from"../chunks/ZT_LEMHt.js";import{t as h}from"../chunks/DhQevarr.js";import{t as g}from"../chunks/kyKuDUwH.js";import{t as _}from"../chunks/C0odTvPl.js";import{t as v}from"../chunks/CIQYtnjl.js";var y=a(`<div class="px-(--page-px) py-(--page-py)"><!></div>`);function b(a,b){n(b,!0);let x=e=>b.data.platformPermissions.includes(`instance_admin`)||b.data.platformPermissions.includes(e)?!0:b.data.orgPermissions.includes(e),S=l(()=>[{href:`/admin`,label:`General`,icon:f,show:!0},{href:`/admin/organizations`,label:`Organizations`,icon:u,match:`prefix`,show:x(`instance_admin`)&&b.data.tenancy!==`single`},{href:`/admin/projects`,label:`Projects`,icon:d,match:`prefix`,show:x(`instance_admin`)&&b.data.platformProjectsEnabled},{href:`/admin/users`,label:`Users`,icon:g,match:`prefix`,show:x(`manage_instance_users`)},{href:`/admin/compute`,label:`Compute`,icon:m,match:`prefix`,show:x(`manage_compute`)},{href:`/admin/system`,label:`System`,icon:h,match:`prefix`,show:x(`manage_updates`)},{href:`/admin/audit`,label:`Audit log`,icon:p,match:`prefix`,show:x(`instance_admin`)&&b.data.auditAvailable}].filter(e=>e.show));v(a,{sidenav:e=>{_(e,{get items(){return r(S)},eyebrow:`Platform`,border:!1})},children:(n,r)=>{var a=y(),c=s(a);t(c,()=>b.children??e),i(a),o(n,a)},$$slots:{sidenav:!0,default:!0}}),c()}export{b as component};
@@ -1,2 +1,2 @@
1
- import{C as e,H as t,J as n,L as r,Lt as i,Mt as a,P as o,Q as s,Rt as c,T as l,U as u,V as d,_ as f,a as p,b as m,dt as h,ft as g,gt as _,jt as v,o as y,ot as b,pt as x,q as S,s as C,vt as w,w as T,xt as E,z as D}from"../chunks/BJr3_fzd.js";import{i as O,r as k}from"../chunks/CsdA-c5v.js";import"../chunks/xihTtKlq.js";import{n as A}from"../chunks/uEs1TBqf.js";import{t as ee}from"../chunks/DXnurquh.js";import{n as j,t as M}from"../chunks/Dzrd8U21.js";import{t as N}from"../chunks/DHwu2YYq.js";import{t as P}from"../chunks/xXc7YQM2.js";import{t as F}from"../chunks/BlQxs_Ya.js";import{t as I}from"../chunks/Eg7QSmtp.js";import{t as L}from"../chunks/DwMfv5aD.js";import{n as R}from"../chunks/DhuzqlSG.js";import"../chunks/RlomQNCr.js";import{t as te}from"../chunks/DDZHb50K.js";import{a as z,o as B,t as ne}from"../chunks/DmhR0313.js";import{t as re}from"../chunks/BCidrmpi.js";var V=new Set([`$$slots`,`$$events`,`$$legacy`]);function ie(e,t){let n=y(t,V),r=[[`path`,{d:`M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z`}]];A(e,C({name:`funnel`},()=>n,{get iconNode(){return r}}))}var H=u(`<button type="button"><!></button>`);function U(e,t){a(t,!0);let r=p(t,`busy`,3,!1),i=p(t,`variant`,3,`overlay`);var o=H(),u=h(o);{let e=E(()=>t.starred?`fill-current`:``);N(u,{get class(){return`h-3.5 w-3.5 ${s(e)??``}`}})}c(o),b(()=>{f(o,`title`,t.starred?`Unstar`:`Star`),f(o,`aria-label`,t.starred?`Unstar definition`:`Star definition`),f(o,`aria-pressed`,t.starred),o.disabled=r(),T(o,1,l(i()===`overlay`?`absolute top-2 right-2 flex h-7 w-7 items-center justify-center rounded-full backdrop-blur-sm transition-all disabled:opacity-60 ${t.starred?`bg-amber-400/90 text-white`:`bg-black/40 text-white opacity-0 group-hover:opacity-100 hover:bg-black/55`}`:`flex h-7 w-7 items-center justify-center rounded-full transition-colors disabled:opacity-60 ${t.starred?`text-amber-500 hover:bg-amber-50`:`text-muted-foreground hover:text-foreground hover:bg-muted`}`))}),n(`click`,o,e=>{e.stopPropagation(),e.preventDefault(),t.onToggle()}),d(e,o),v()}S([`click`]);var W=u(`<div class="flex h-10 w-10 shrink-0 items-center justify-center overflow-hidden rounded-md"><img alt="" class="h-full w-full object-cover"/></div>`),G=u(`<div class="tool-cover-fallback flex h-10 w-10 shrink-0 items-center justify-center overflow-hidden rounded-md"><span class="text-foreground/40 text-base font-semibold"> </span></div>`),K=u(`<p class="text-muted-foreground truncate text-[12px]"> </p>`),q=u(`<span class="bg-muted text-muted-foreground rounded px-1.5 py-px font-mono text-[10.5px]"> </span>`),J=u(`<button type="button"><!> <div class="min-w-0"><p class="truncate text-[13.5px] font-semibold"> </p> <!></div> <div class="flex flex-wrap items-center gap-1"><!></div> <span class="text-muted-foreground font-mono text-[12px]"> </span> <div class="flex items-center justify-end gap-1"><!> <!></div></button>`),Y=u(`<div class="border-border bg-card overflow-hidden rounded-xl border"></div>`);function ae(i,l){a(l,!0);var u=Y();o(u,23,()=>l.records,e=>e.guid,(i,a,u)=>{var p=J();e(p,`grid-template-columns: 40px minmax(0, 1.7fr) minmax(0, 1fr) 90px 36px`);var m=h(p),_=e=>{var t=W(),n=h(t);c(t),b(()=>f(n,`src`,s(a).coverImage)),d(e,t)},v=t=>{let n=E(()=>z(s(a).guid));var r=G();let i;var o=h(r),l=h(o,!0);c(o),c(r),b(t=>{i=e(r,``,i,{"--tool-h1":s(n).h1,"--tool-h2":s(n).h2}),D(l,t)},[()=>B(s(a).displayName)]),d(t,r)};r(m,e=>{s(a).coverImage?e(_):e(v,-1)});var y=x(m,2),S=h(y),C=h(S,!0);c(S);var w=x(S,2),O=e=>{var t=K(),n=h(t,!0);c(t),b(()=>D(n,s(a).description)),d(e,t)};r(w,e=>{s(a).description&&e(O)}),c(y);var k=x(y,2),A=h(k),j=e=>{var n=t(),r=g(n);o(r,16,()=>s(a).tags.slice(0,3),e=>e,(e,t)=>{var n=q(),r=h(n);c(n),b(()=>D(r,`#${t??``}`)),d(e,n)}),d(e,n)};r(A,e=>{s(a).tags?.length&&e(j)}),c(k);var M=x(k,2),N=h(M,!0);c(M);var P=x(M,2),F=h(P);{let e=E(()=>l.starredIds.has(s(a).guid)),t=E(()=>l.starBusyGuid===s(a).guid);U(F,{get starred(){return s(e)},get busy(){return s(t)},variant:`chip`,onToggle:()=>l.onToggleStar(s(a).guid)})}var I=x(F,2);ee(I,{class:`text-muted-foreground h-3.5 w-3.5 opacity-0 transition-opacity group-hover:opacity-100`}),c(P),c(p),b(e=>{p.disabled=l.loadingGuid===s(a).guid,T(p,1,`hover:bg-muted/40 group grid w-full items-center gap-4 px-4 py-3 text-left transition-colors disabled:cursor-not-allowed disabled:opacity-60
1
+ import{C as e,H as t,J as n,L as r,Lt as i,Mt as a,P as o,Q as s,Rt as c,T as l,U as u,V as d,_ as f,a as p,b as m,dt as h,ft as g,gt as _,jt as v,o as y,ot as b,pt as x,q as S,s as C,vt as w,w as T,xt as E,z as D}from"../chunks/BJr3_fzd.js";import{i as O,r as k}from"../chunks/D1C2bDXQ.js";import"../chunks/xihTtKlq.js";import{n as A}from"../chunks/uEs1TBqf.js";import{t as ee}from"../chunks/DXnurquh.js";import{n as j,t as M}from"../chunks/Dzrd8U21.js";import{t as N}from"../chunks/DHwu2YYq.js";import{t as P}from"../chunks/xXc7YQM2.js";import{t as F}from"../chunks/BlQxs_Ya.js";import{t as I}from"../chunks/Eg7QSmtp.js";import{t as L}from"../chunks/DwMfv5aD.js";import{n as R}from"../chunks/DhuzqlSG.js";import"../chunks/C6gAy11g.js";import{t as te}from"../chunks/CIQYtnjl.js";import{a as z,o as B,t as ne}from"../chunks/DmhR0313.js";import{t as re}from"../chunks/BCidrmpi.js";var V=new Set([`$$slots`,`$$events`,`$$legacy`]);function ie(e,t){let n=y(t,V),r=[[`path`,{d:`M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z`}]];A(e,C({name:`funnel`},()=>n,{get iconNode(){return r}}))}var H=u(`<button type="button"><!></button>`);function U(e,t){a(t,!0);let r=p(t,`busy`,3,!1),i=p(t,`variant`,3,`overlay`);var o=H(),u=h(o);{let e=E(()=>t.starred?`fill-current`:``);N(u,{get class(){return`h-3.5 w-3.5 ${s(e)??``}`}})}c(o),b(()=>{f(o,`title`,t.starred?`Unstar`:`Star`),f(o,`aria-label`,t.starred?`Unstar definition`:`Star definition`),f(o,`aria-pressed`,t.starred),o.disabled=r(),T(o,1,l(i()===`overlay`?`absolute top-2 right-2 flex h-7 w-7 items-center justify-center rounded-full backdrop-blur-sm transition-all disabled:opacity-60 ${t.starred?`bg-amber-400/90 text-white`:`bg-black/40 text-white opacity-0 group-hover:opacity-100 hover:bg-black/55`}`:`flex h-7 w-7 items-center justify-center rounded-full transition-colors disabled:opacity-60 ${t.starred?`text-amber-500 hover:bg-amber-50`:`text-muted-foreground hover:text-foreground hover:bg-muted`}`))}),n(`click`,o,e=>{e.stopPropagation(),e.preventDefault(),t.onToggle()}),d(e,o),v()}S([`click`]);var W=u(`<div class="flex h-10 w-10 shrink-0 items-center justify-center overflow-hidden rounded-md"><img alt="" class="h-full w-full object-cover"/></div>`),G=u(`<div class="tool-cover-fallback flex h-10 w-10 shrink-0 items-center justify-center overflow-hidden rounded-md"><span class="text-foreground/40 text-base font-semibold"> </span></div>`),K=u(`<p class="text-muted-foreground truncate text-[12px]"> </p>`),q=u(`<span class="bg-muted text-muted-foreground rounded px-1.5 py-px font-mono text-[10.5px]"> </span>`),J=u(`<button type="button"><!> <div class="min-w-0"><p class="truncate text-[13.5px] font-semibold"> </p> <!></div> <div class="flex flex-wrap items-center gap-1"><!></div> <span class="text-muted-foreground font-mono text-[12px]"> </span> <div class="flex items-center justify-end gap-1"><!> <!></div></button>`),Y=u(`<div class="border-border bg-card overflow-hidden rounded-xl border"></div>`);function ae(i,l){a(l,!0);var u=Y();o(u,23,()=>l.records,e=>e.guid,(i,a,u)=>{var p=J();e(p,`grid-template-columns: 40px minmax(0, 1.7fr) minmax(0, 1fr) 90px 36px`);var m=h(p),_=e=>{var t=W(),n=h(t);c(t),b(()=>f(n,`src`,s(a).coverImage)),d(e,t)},v=t=>{let n=E(()=>z(s(a).guid));var r=G();let i;var o=h(r),l=h(o,!0);c(o),c(r),b(t=>{i=e(r,``,i,{"--tool-h1":s(n).h1,"--tool-h2":s(n).h2}),D(l,t)},[()=>B(s(a).displayName)]),d(t,r)};r(m,e=>{s(a).coverImage?e(_):e(v,-1)});var y=x(m,2),S=h(y),C=h(S,!0);c(S);var w=x(S,2),O=e=>{var t=K(),n=h(t,!0);c(t),b(()=>D(n,s(a).description)),d(e,t)};r(w,e=>{s(a).description&&e(O)}),c(y);var k=x(y,2),A=h(k),j=e=>{var n=t(),r=g(n);o(r,16,()=>s(a).tags.slice(0,3),e=>e,(e,t)=>{var n=q(),r=h(n);c(n),b(()=>D(r,`#${t??``}`)),d(e,n)}),d(e,n)};r(A,e=>{s(a).tags?.length&&e(j)}),c(k);var M=x(k,2),N=h(M,!0);c(M);var P=x(M,2),F=h(P);{let e=E(()=>l.starredIds.has(s(a).guid)),t=E(()=>l.starBusyGuid===s(a).guid);U(F,{get starred(){return s(e)},get busy(){return s(t)},variant:`chip`,onToggle:()=>l.onToggleStar(s(a).guid)})}var I=x(F,2);ee(I,{class:`text-muted-foreground h-3.5 w-3.5 opacity-0 transition-opacity group-hover:opacity-100`}),c(P),c(p),b(e=>{p.disabled=l.loadingGuid===s(a).guid,T(p,1,`hover:bg-muted/40 group grid w-full items-center gap-4 px-4 py-3 text-left transition-colors disabled:cursor-not-allowed disabled:opacity-60
2
2
  ${s(u)<l.records.length-1?`border-border border-b`:``}`),D(C,s(a).displayName),D(N,e)},[()=>s(a).solveCount>0?`${s(a).solveCount.toLocaleString()} runs`:`—`]),n(`click`,p,()=>l.onOpen(s(a).guid)),d(i,p)}),c(u),d(i,u),v()}S([`click`]);var oe=u(`<span class="bg-primary text-primary-foreground rounded-full px-1.5 py-px font-mono text-[10px]"> </span>`),se=u(`<button type="button"><!> Filters <!></button>`),ce=u(`<button type="button" class="text-muted-foreground hover:text-foreground inline-flex h-9 items-center gap-1 rounded-md px-2 text-xs transition-colors"><!> Clear</button>`),X=u(`<option> </option>`),le=u(`<div class="space-y-1.5"><label class="text-muted-foreground text-xs font-medium" for="filter-project">Project</label> <select id="filter-project" class="border-input bg-background h-9 w-full rounded-md border px-3 text-sm"><option>All projects</option><!></select></div>`),ue=u(`<div class="space-y-1.5"><label class="text-muted-foreground text-xs font-medium" for="filter-category">Category</label> <select id="filter-category" class="border-input bg-background h-9 w-full rounded-md border px-3 text-sm"><option>All categories</option><!></select></div>`),de=u(`<div class="space-y-1.5"><label class="text-muted-foreground text-xs font-medium" for="filter-tag">Tag</label> <select id="filter-tag" class="border-input bg-background h-9 w-full rounded-md border px-3 text-sm"><option>All tags</option><!></select></div>`),fe=u(`<div class="border-border bg-card rounded-md border p-4"><div class="grid gap-4 sm:grid-cols-3"><!> <!> <!></div></div>`),pe=u(`<button style="grid-template-columns: 1fr 120px auto"><span class="truncate font-medium"> </span> <span class="text-muted-foreground font-mono text-xs"> </span> <span class="flex items-center gap-1 text-xs font-medium opacity-0 transition-opacity group-hover:opacity-100">Resume <!></span></button>`),me=u(`<section><div class="mb-3 flex items-baseline justify-between"><span class="text-muted-foreground text-xs font-medium tracking-wider uppercase">Recent runs</span> <span class="text-muted-foreground text-xs">Resume where you left off</span></div> <div class="border-border bg-card overflow-hidden rounded-md border"></div></section>`),he=u(`<div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4"></div>`),ge=u(`<button class="text-muted-foreground hover:text-foreground text-xs underline underline-offset-2">Clear all filters</button>`),_e=u(`<div class="space-y-6"><!> <div class="flex flex-wrap items-center gap-2"><div class="min-w-60 flex-1"><!></div> <!> <!></div> <!> <!> <!></div>`);function Z(e,l){a(l,!0);let u=w(``),f=w(null),p=w(null),y=w(null),S=w(`grid`),C=w(null),A=w(null),N=w(!1),z=E(()=>new Set(l.data.starredRecords.map(e=>e.guid))),B=E(()=>[...l.data.starredRecords,...l.data.records]),V=E(()=>new Set(s(B).map(e=>e.projectId))),H=E(()=>Object.values(l.data.projects).filter(e=>s(V).has(e.id))),U=E(()=>Array.from(new Set(s(B).map(e=>e.category).filter(e=>!!e))).sort()),W=E(()=>Array.from(new Set(s(B).flatMap(e=>e.tags??[]))).sort());function G(e){return l.data.projects[e]?.name??``}function K(e){return l.data.projectMap[e]?.visibility}function q(e){if(s(f)&&e.projectId!==s(f)||s(p)&&e.category!==s(p)||s(y)&&!(e.tags??[]).includes(s(y)))return!1;if(s(u).trim()){let t=s(u).toLowerCase();if(![e.displayName,e.description,e.category,...e.tags??[]].filter(Boolean).join(` `).toLowerCase().includes(t))return!1}return!0}let J=E(()=>s(B).filter(q)),Y=E(()=>[s(f),s(p),s(y)].filter(e=>e!==null).length),Z=E(()=>s(u).trim()!==``||s(Y)>0);function Q(e){_(C,e,!0),k(`/library/${e}`).catch(()=>{_(C,null)})}async function ve(e){_(A,e,!0);let t=s(z).has(e);try{let n=await fetch(`/api/v1/me/starred/${e}`,{method:t?`DELETE`:`PUT`});if(!n.ok)throw Error(`${n.status}`);await O()}catch{R.error(t?`Failed to unstar`:`Failed to star`)}finally{_(A,null)}}function ye(){_(u,``),_(f,null),_(p,null),_(y,null),_(N,!1)}te(e,{children:(e,a)=>{F(e,{children:(e,a)=>{var v=_e(),w=h(v);{let e=e=>{M(e,{get mode(){return s(S)},onChange:e=>_(S,e,!0)})},t=E(()=>`${s(J).length} tool${s(J).length===1?``:`s`}${s(H).length>0?` across ${s(H).length} project${s(H).length===1?``:`s`}`:``}.`);I(w,{eyebrow:`Workspace`,title:`Library`,get description(){return s(t)},actions:e,$$slots:{actions:!0}})}var O=x(w,2),k=h(O),F=h(k);j(F,{placeholder:`Search tools, descriptions, tags…`,clearable:!0,class:`h-9 rounded-md text-sm`,get value(){return s(u)},set value(e){_(u,e,!0)}}),c(k);var R=x(k,2),te=e=>{var t=se(),i=h(t);ie(i,{class:`h-3.5 w-3.5`});var a=x(i,2),o=e=>{var t=oe(),n=h(t,!0);c(t),b(()=>D(n,s(Y))),d(e,t)};r(a,e=>{s(Y)>0&&e(o)}),c(t),b(()=>T(t,1,`relative inline-flex h-9 items-center gap-1.5 rounded-md border px-3 text-sm transition-colors ${s(N)||s(Y)>0?`border-border bg-accent text-accent-foreground`:`border-input bg-background text-foreground hover:bg-muted/40`}`)),n(`click`,t,()=>_(N,!s(N))),d(e,t)};r(R,e=>{(s(U).length>0||s(W).length>0||s(H).length>1)&&e(te)});var B=x(R,2),V=e=>{var t=ce(),r=h(t);P(r,{class:`h-3 w-3`}),i(),c(t),n(`click`,t,ye),d(e,t)};r(B,e=>{s(Z)&&e(V)}),c(O);var q=x(O,2),be=e=>{var t=fe(),n=h(t),i=h(n),a=e=>{var t=le(),n=x(h(t),2),r=h(n);r.value=(r.__value=null,``);var i=x(r);o(i,17,()=>s(H),e=>e.id,(e,t)=>{var n=X(),r=h(n,!0);c(n);var i={};b(()=>{D(r,s(t).name),i!==(i=s(t).id)&&(n.value=(n.__value=s(t).id)??``)}),d(e,n)}),c(n),c(t),m(n,()=>s(f),e=>_(f,e)),d(e,t)};r(i,e=>{s(H).length>1&&e(a)});var l=x(i,2),u=e=>{var t=ue(),n=x(h(t),2),r=h(n);r.value=(r.__value=null,``);var i=x(r);o(i,16,()=>s(U),e=>e,(e,t)=>{var n=X(),r=h(n,!0);c(n);var i={};b(()=>{D(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),d(e,n)}),c(n),c(t),m(n,()=>s(p),e=>_(p,e)),d(e,t)};r(l,e=>{s(U).length>0&&e(u)});var g=x(l,2),v=e=>{var t=de(),n=x(h(t),2),r=h(n);r.value=(r.__value=null,``);var i=x(r);o(i,16,()=>s(W),e=>e,(e,t)=>{var n=X(),r=h(n);c(n);var i={};b(()=>{D(r,`#${t??``}`),i!==(i=t)&&(n.value=(n.__value=t)??``)}),d(e,n)}),c(n),c(t),m(n,()=>s(y),e=>_(y,e)),d(e,t)};r(g,e=>{s(W).length>0&&e(v)}),c(n),c(t),d(e,t)};r(q,e=>{s(N)&&e(be)});var $=x(q,2),xe=e=>{var t=me(),r=x(h(t),2);o(r,23,()=>l.data.recentRuns.slice(0,5),e=>e.runId,(e,t,r)=>{var i=pe(),a=h(i),o=h(a,!0);c(a);var u=x(a,2),f=h(u,!0);c(u);var p=x(u,2),m=x(h(p));ee(m,{class:`h-3 w-3`}),c(p),c(i),b((e,n)=>{i.disabled=s(C)===s(t).definitionId,T(i,1,e),D(o,s(t).definitionName),D(f,n)},[()=>`group hover:bg-muted/40 grid w-full items-center gap-4 px-4 py-3 text-left text-sm transition-colors disabled:cursor-not-allowed disabled:opacity-60 ${s(r)<Math.min(l.data.recentRuns.length,5)-1?`border-border border-b`:``}`,()=>re(s(t).timestamp)]),n(`click`,i,()=>Q(s(t).definitionId)),d(e,i)}),c(r),c(t),d(e,t)};r($,e=>{l.data.recentRuns.length>0&&!s(Z)&&e(xe)});var Se=x($,2),Ce=e=>{var n=t(),i=g(n),a=e=>{var t=he();o(t,21,()=>s(J),e=>e.guid,(e,t)=>{{let n=E(()=>s(z).has(s(t).guid)),r=E(()=>s(C)===s(t).guid),i=E(()=>s(A)===s(t).guid),a=E(()=>s(H).length>1?G(s(t).projectId):void 0),o=E(()=>s(H).length>1?K(s(t).projectId):void 0);ne(e,{get record(){return s(t)},get starred(){return s(n)},get loading(){return s(r)},get starBusy(){return s(i)},get projectName(){return s(a)},get projectVisibility(){return s(o)},onOpen:e=>Q(e.guid),onToggleStar:ve})}}),c(t),d(e,t)},l=e=>{ae(e,{get records(){return s(J)},get starredIds(){return s(z)},get loadingGuid(){return s(C)},get starBusyGuid(){return s(A)},onOpen:Q,onToggleStar:ve})};r(i,e=>{s(S)===`grid`?e(a):e(l,-1)}),d(e,n)},we=e=>{L(e,{size:`lg`,title:`No tools match your filters`,actions:e=>{var t=ge();n(`click`,t,ye),d(e,t)},$$slots:{actions:!0}})},Te=e=>{L(e,{size:`lg`,title:`No tools available yet`,description:`Ask an admin to publish a Grasshopper definition.`})};r(Se,e=>{s(J).length>0?e(Ce):s(Z)?e(we,1):e(Te,-1)}),c(v),d(e,v)},$$slots:{default:!0}})},$$slots:{default:!0}}),v()}S([`click`]);export{Z as component};