@openpalm/ui 0.13.0-beta.2 → 0.13.0-beta.3

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 (343) hide show
  1. package/build/.openpalm-ui-version +1 -1
  2. package/build/client/_app/immutable/chunks/C3ad4Ajc.js +1 -0
  3. package/build/client/_app/immutable/chunks/C3ad4Ajc.js.br +2 -0
  4. package/build/client/_app/immutable/chunks/C3ad4Ajc.js.gz +0 -0
  5. package/build/client/_app/immutable/chunks/{Be7qat4r.js → CItB5oU8.js} +2 -2
  6. package/build/client/_app/immutable/chunks/CItB5oU8.js.br +0 -0
  7. package/build/client/_app/immutable/chunks/CItB5oU8.js.gz +0 -0
  8. package/build/client/_app/immutable/chunks/{9mRSvTWj.js → DuFsBiCS.js} +1 -1
  9. package/build/client/_app/immutable/chunks/DuFsBiCS.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/DuFsBiCS.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/{BoOBAdGl.js → Gis7OmMK.js} +1 -1
  12. package/build/client/_app/immutable/chunks/Gis7OmMK.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/Gis7OmMK.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/{DSs95sLz.js → S17SDfo_.js} +1 -1
  15. package/build/client/_app/immutable/chunks/S17SDfo_.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/S17SDfo_.js.gz +0 -0
  17. package/build/client/_app/immutable/entry/{app.DZwy1Y3W.js → app.C4X372ym.js} +2 -2
  18. package/build/client/_app/immutable/entry/app.C4X372ym.js.br +0 -0
  19. package/build/client/_app/immutable/entry/app.C4X372ym.js.gz +0 -0
  20. package/build/client/_app/immutable/entry/start.ggMsTuLf.js +1 -0
  21. package/build/client/_app/immutable/entry/start.ggMsTuLf.js.br +0 -0
  22. package/build/client/_app/immutable/entry/start.ggMsTuLf.js.gz +0 -0
  23. package/build/client/_app/immutable/nodes/{1.Bxihn5f1.js → 1.CAn1ptt2.js} +1 -1
  24. package/build/client/_app/immutable/nodes/1.CAn1ptt2.js.br +1 -0
  25. package/build/client/_app/immutable/nodes/1.CAn1ptt2.js.gz +0 -0
  26. package/build/client/_app/immutable/nodes/{10.BZ76_WLP.js → 10.3GZpnfRU.js} +1 -1
  27. package/build/client/_app/immutable/nodes/10.3GZpnfRU.js.br +0 -0
  28. package/build/client/_app/immutable/nodes/10.3GZpnfRU.js.gz +0 -0
  29. package/build/client/_app/immutable/nodes/{11.Bzf3G5G0.js → 11.D1-UoUiI.js} +1 -1
  30. package/build/client/_app/immutable/nodes/11.D1-UoUiI.js.br +0 -0
  31. package/build/client/_app/immutable/nodes/11.D1-UoUiI.js.gz +0 -0
  32. package/build/client/_app/immutable/nodes/{4.D-CwW2PH.js → 4.6EwsExLl.js} +1 -1
  33. package/build/client/_app/immutable/nodes/4.6EwsExLl.js.br +0 -0
  34. package/build/client/_app/immutable/nodes/4.6EwsExLl.js.gz +0 -0
  35. package/build/client/_app/immutable/nodes/{5.BbStivMI.js → 5.DLFettGd.js} +1 -1
  36. package/build/client/_app/immutable/nodes/5.DLFettGd.js.br +0 -0
  37. package/build/client/_app/immutable/nodes/5.DLFettGd.js.gz +0 -0
  38. package/build/client/_app/immutable/nodes/{6.BKVgKxKO.js → 6.inuW_1g7.js} +1 -1
  39. package/build/client/_app/immutable/nodes/6.inuW_1g7.js.br +0 -0
  40. package/build/client/_app/immutable/nodes/6.inuW_1g7.js.gz +0 -0
  41. package/build/client/_app/immutable/nodes/{7.DuXt155R.js → 7.Dc4BVu5u.js} +1 -1
  42. package/build/client/_app/immutable/nodes/7.Dc4BVu5u.js.br +0 -0
  43. package/build/client/_app/immutable/nodes/7.Dc4BVu5u.js.gz +0 -0
  44. package/build/client/_app/immutable/nodes/{9.BdeFVi2a.js → 9.CJ5rBqR8.js} +1 -1
  45. package/build/client/_app/immutable/nodes/9.CJ5rBqR8.js.br +0 -0
  46. package/build/client/_app/immutable/nodes/9.CJ5rBqR8.js.gz +0 -0
  47. package/build/client/_app/version.json +1 -1
  48. package/build/client/_app/version.json.br +1 -1
  49. package/build/client/_app/version.json.gz +0 -0
  50. package/build/server/chunks/{0-C7zzjezl.js → 0-C44Ua1bY.js} +3 -3
  51. package/build/server/chunks/{0-C7zzjezl.js.map → 0-C44Ua1bY.js.map} +1 -1
  52. package/build/server/chunks/1-DPdXHBBi.js +9 -0
  53. package/build/server/chunks/{1-Ceq9WsUZ.js.map → 1-DPdXHBBi.js.map} +1 -1
  54. package/build/server/chunks/{10-DbLLQ-Uy.js → 10-B6ZAGGzR.js} +3 -3
  55. package/build/server/chunks/{10-DbLLQ-Uy.js.map → 10-B6ZAGGzR.js.map} +1 -1
  56. package/build/server/chunks/{11-Dryt5Piv.js → 11-Bi4ih8mU.js} +3 -3
  57. package/build/server/chunks/{11-Dryt5Piv.js.map → 11-Bi4ih8mU.js.map} +1 -1
  58. package/build/server/chunks/{3-CAH3EmhU.js → 3-DqhvOSLm.js} +6 -6
  59. package/build/server/chunks/{3-CAH3EmhU.js.map → 3-DqhvOSLm.js.map} +1 -1
  60. package/build/server/chunks/{4-DxmFWVQJ.js → 4-bICPXf8d.js} +3 -3
  61. package/build/server/chunks/{4-DxmFWVQJ.js.map → 4-bICPXf8d.js.map} +1 -1
  62. package/build/server/chunks/{5-CQ9cELI7.js → 5-pYxB3IGQ.js} +3 -3
  63. package/build/server/chunks/{5-CQ9cELI7.js.map → 5-pYxB3IGQ.js.map} +1 -1
  64. package/build/server/chunks/{6-B-hnmc7F.js → 6-2tNBfccH.js} +3 -3
  65. package/build/server/chunks/{6-B-hnmc7F.js.map → 6-2tNBfccH.js.map} +1 -1
  66. package/build/server/chunks/{7-BE6BzHsh.js → 7-IbStFnJM.js} +3 -3
  67. package/build/server/chunks/{7-BE6BzHsh.js.map → 7-IbStFnJM.js.map} +1 -1
  68. package/build/server/chunks/{9-BWzd_hmh.js → 9-PfezrnbG.js} +4 -4
  69. package/build/server/chunks/{9-BWzd_hmh.js.map → 9-PfezrnbG.js.map} +1 -1
  70. package/build/server/chunks/{ChatNavbar-BonHVqfi.js → ChatNavbar-f5OrMEL5.js} +5 -5
  71. package/build/server/chunks/{ChatNavbar-BonHVqfi.js.map → ChatNavbar-f5OrMEL5.js.map} +1 -1
  72. package/build/server/chunks/{IconServer-fOHYHe-O.js → IconServer-C0heXLme.js} +2 -2
  73. package/build/server/chunks/{IconServer-fOHYHe-O.js.map → IconServer-C0heXLme.js.map} +1 -1
  74. package/build/server/chunks/{_page.svelte-BXeh8wzh.js → _page.svelte-BXLl2Q4a.js} +3 -3
  75. package/build/server/chunks/{_page.svelte-BXeh8wzh.js.map → _page.svelte-BXLl2Q4a.js.map} +1 -1
  76. package/build/server/chunks/{_page.svelte-Bovrn7AQ.js → _page.svelte-BgKDQB1v.js} +3 -3
  77. package/build/server/chunks/{_page.svelte-Bovrn7AQ.js.map → _page.svelte-BgKDQB1v.js.map} +1 -1
  78. package/build/server/chunks/{_page.svelte-BWNjxN63.js → _page.svelte-Cqsoa84V.js} +7 -7
  79. package/build/server/chunks/{_page.svelte-BWNjxN63.js.map → _page.svelte-Cqsoa84V.js.map} +1 -1
  80. package/build/server/chunks/{_page.svelte-DkZsmNYc.js → _page.svelte-DV50Zgo7.js} +3 -3
  81. package/build/server/chunks/{_page.svelte-DkZsmNYc.js.map → _page.svelte-DV50Zgo7.js.map} +1 -1
  82. package/build/server/chunks/{_page.svelte-LsoJ7E5M.js → _page.svelte-DpFvF_2S.js} +6 -6
  83. package/build/server/chunks/{_page.svelte-LsoJ7E5M.js.map → _page.svelte-DpFvF_2S.js.map} +1 -1
  84. package/build/server/chunks/{_page.svelte-0Rf024eH.js → _page.svelte-MAzX_A0b.js} +4 -4
  85. package/build/server/chunks/{_page.svelte-0Rf024eH.js.map → _page.svelte-MAzX_A0b.js.map} +1 -1
  86. package/build/server/chunks/{_page.svelte-COf36oAu.js → _page.svelte-fk6X6VPw.js} +7 -7
  87. package/build/server/chunks/{_page.svelte-COf36oAu.js.map → _page.svelte-fk6X6VPw.js.map} +1 -1
  88. package/build/server/chunks/{_server.ts-DE-c3Y5D.js → _server.ts-2o4Kzn8i.js} +7 -7
  89. package/build/server/chunks/{_server.ts-DE-c3Y5D.js.map → _server.ts-2o4Kzn8i.js.map} +1 -1
  90. package/build/server/chunks/{_server.ts-BKWx8K8U.js → _server.ts-6-piDAMf.js} +7 -7
  91. package/build/server/chunks/{_server.ts-BKWx8K8U.js.map → _server.ts-6-piDAMf.js.map} +1 -1
  92. package/build/server/chunks/{_server.ts-DQozxLn6.js → _server.ts-6BViNoJ6.js} +6 -6
  93. package/build/server/chunks/{_server.ts-DQozxLn6.js.map → _server.ts-6BViNoJ6.js.map} +1 -1
  94. package/build/server/chunks/{_server.ts-BUDMOZOz.js → _server.ts-B-6OFzv-.js} +6 -6
  95. package/build/server/chunks/{_server.ts-BUDMOZOz.js.map → _server.ts-B-6OFzv-.js.map} +1 -1
  96. package/build/server/chunks/{_server.ts-CG60Cdqf.js → _server.ts-B2iTN8SC.js} +8 -8
  97. package/build/server/chunks/{_server.ts-CG60Cdqf.js.map → _server.ts-B2iTN8SC.js.map} +1 -1
  98. package/build/server/chunks/{_server.ts-CMAepV0J.js → _server.ts-BB6y3ZlT.js} +6 -6
  99. package/build/server/chunks/{_server.ts-CMAepV0J.js.map → _server.ts-BB6y3ZlT.js.map} +1 -1
  100. package/build/server/chunks/{_server.ts-Dy65kWxL.js → _server.ts-BBxdJ3b2.js} +7 -7
  101. package/build/server/chunks/{_server.ts-Dy65kWxL.js.map → _server.ts-BBxdJ3b2.js.map} +1 -1
  102. package/build/server/chunks/{_server.ts-BhAp0vvt.js → _server.ts-BJ27moeF.js} +6 -6
  103. package/build/server/chunks/{_server.ts-BhAp0vvt.js.map → _server.ts-BJ27moeF.js.map} +1 -1
  104. package/build/server/chunks/{_server.ts-BjjicBDy.js → _server.ts-BM6hefLc.js} +6 -6
  105. package/build/server/chunks/{_server.ts-BjjicBDy.js.map → _server.ts-BM6hefLc.js.map} +1 -1
  106. package/build/server/chunks/{_server.ts-BTPbwN92.js → _server.ts-BNQHTPJK.js} +6 -6
  107. package/build/server/chunks/{_server.ts-BTPbwN92.js.map → _server.ts-BNQHTPJK.js.map} +1 -1
  108. package/build/server/chunks/{_server.ts-xPuEhFJO.js → _server.ts-BNnRODmS.js} +7 -7
  109. package/build/server/chunks/{_server.ts-xPuEhFJO.js.map → _server.ts-BNnRODmS.js.map} +1 -1
  110. package/build/server/chunks/{_server.ts-BLn_cTkK.js → _server.ts-BQyuBKbf.js} +6 -6
  111. package/build/server/chunks/{_server.ts-BLn_cTkK.js.map → _server.ts-BQyuBKbf.js.map} +1 -1
  112. package/build/server/chunks/{_server.ts-DJqSQny9.js → _server.ts-BQzhAVgc.js} +2 -2
  113. package/build/server/chunks/{_server.ts-DJqSQny9.js.map → _server.ts-BQzhAVgc.js.map} +1 -1
  114. package/build/server/chunks/{_server.ts-BjD0Uf0U.js → _server.ts-BTey3b5e.js} +6 -6
  115. package/build/server/chunks/{_server.ts-BjD0Uf0U.js.map → _server.ts-BTey3b5e.js.map} +1 -1
  116. package/build/server/chunks/{_server.ts-BWO1Eoro.js → _server.ts-BWeAmxEz.js} +6 -6
  117. package/build/server/chunks/{_server.ts-BWO1Eoro.js.map → _server.ts-BWeAmxEz.js.map} +1 -1
  118. package/build/server/chunks/{_server.ts-COcv1puW.js → _server.ts-BageNPqU.js} +7 -7
  119. package/build/server/chunks/{_server.ts-COcv1puW.js.map → _server.ts-BageNPqU.js.map} +1 -1
  120. package/build/server/chunks/{_server.ts-DHeSwA7p.js → _server.ts-BcsSKsVE.js} +6 -6
  121. package/build/server/chunks/{_server.ts-DHeSwA7p.js.map → _server.ts-BcsSKsVE.js.map} +1 -1
  122. package/build/server/chunks/{_server.ts-D-6mgHZB.js → _server.ts-Bd15KCCI.js} +6 -6
  123. package/build/server/chunks/{_server.ts-D-6mgHZB.js.map → _server.ts-Bd15KCCI.js.map} +1 -1
  124. package/build/server/chunks/{_server.ts-DdoJFQaX.js → _server.ts-BiGuckTs.js} +8 -8
  125. package/build/server/chunks/{_server.ts-DdoJFQaX.js.map → _server.ts-BiGuckTs.js.map} +1 -1
  126. package/build/server/chunks/{_server.ts-CcoaYeM8.js → _server.ts-BlCDDGQe.js} +6 -6
  127. package/build/server/chunks/{_server.ts-CcoaYeM8.js.map → _server.ts-BlCDDGQe.js.map} +1 -1
  128. package/build/server/chunks/{_server.ts-DTQe-U35.js → _server.ts-Bsxn3ZEt.js} +6 -6
  129. package/build/server/chunks/{_server.ts-DTQe-U35.js.map → _server.ts-Bsxn3ZEt.js.map} +1 -1
  130. package/build/server/chunks/{_server.ts-CX_CwTW0.js → _server.ts-BtlVh8sp.js} +3 -3
  131. package/build/server/chunks/{_server.ts-CX_CwTW0.js.map → _server.ts-BtlVh8sp.js.map} +1 -1
  132. package/build/server/chunks/{_server.ts-Ddqhnr_7.js → _server.ts-BunhH3W1.js} +6 -6
  133. package/build/server/chunks/{_server.ts-Ddqhnr_7.js.map → _server.ts-BunhH3W1.js.map} +1 -1
  134. package/build/server/chunks/{_server.ts-BR24J2uB.js → _server.ts-BwMkzx-i.js} +7 -7
  135. package/build/server/chunks/{_server.ts-BR24J2uB.js.map → _server.ts-BwMkzx-i.js.map} +1 -1
  136. package/build/server/chunks/{_server.ts-CnrWBkQ7.js → _server.ts-Bx0tx6Hd.js} +6 -6
  137. package/build/server/chunks/{_server.ts-CnrWBkQ7.js.map → _server.ts-Bx0tx6Hd.js.map} +1 -1
  138. package/build/server/chunks/{_server.ts-6EuPIrt7.js → _server.ts-ByVaX_Hp.js} +6 -6
  139. package/build/server/chunks/{_server.ts-6EuPIrt7.js.map → _server.ts-ByVaX_Hp.js.map} +1 -1
  140. package/build/server/chunks/{_server.ts-LokXM9hH.js → _server.ts-C-VVdGFH.js} +6 -6
  141. package/build/server/chunks/{_server.ts-LokXM9hH.js.map → _server.ts-C-VVdGFH.js.map} +1 -1
  142. package/build/server/chunks/{_server.ts-BARmSEZ2.js → _server.ts-C17zuPHB.js} +6 -6
  143. package/build/server/chunks/{_server.ts-BARmSEZ2.js.map → _server.ts-C17zuPHB.js.map} +1 -1
  144. package/build/server/chunks/{_server.ts-BVMpHE3G.js → _server.ts-C24KcaLY.js} +6 -6
  145. package/build/server/chunks/{_server.ts-BVMpHE3G.js.map → _server.ts-C24KcaLY.js.map} +1 -1
  146. package/build/server/chunks/{_server.ts-Bi0rRbcw.js → _server.ts-C8Tvzew7.js} +2 -2
  147. package/build/server/chunks/{_server.ts-Bi0rRbcw.js.map → _server.ts-C8Tvzew7.js.map} +1 -1
  148. package/build/server/chunks/{_server.ts-JO0zy17P.js → _server.ts-CA37rdjz.js} +6 -6
  149. package/build/server/chunks/{_server.ts-JO0zy17P.js.map → _server.ts-CA37rdjz.js.map} +1 -1
  150. package/build/server/chunks/{_server.ts-CS2LQKMb.js → _server.ts-CBv61dGN.js} +7 -7
  151. package/build/server/chunks/{_server.ts-CS2LQKMb.js.map → _server.ts-CBv61dGN.js.map} +1 -1
  152. package/build/server/chunks/{_server.ts-CjPhaG_g.js → _server.ts-CEgqNbg2.js} +7 -7
  153. package/build/server/chunks/{_server.ts-CjPhaG_g.js.map → _server.ts-CEgqNbg2.js.map} +1 -1
  154. package/build/server/chunks/{_server.ts-DrGzrygC.js → _server.ts-CF6j3bbg.js} +6 -6
  155. package/build/server/chunks/{_server.ts-DrGzrygC.js.map → _server.ts-CF6j3bbg.js.map} +1 -1
  156. package/build/server/chunks/{_server.ts-B28SfXaZ.js → _server.ts-CFlF9O0n.js} +6 -6
  157. package/build/server/chunks/{_server.ts-B28SfXaZ.js.map → _server.ts-CFlF9O0n.js.map} +1 -1
  158. package/build/server/chunks/{_server.ts-BA7wxHYg.js → _server.ts-CM8lR2Jk.js} +6 -6
  159. package/build/server/chunks/{_server.ts-BA7wxHYg.js.map → _server.ts-CM8lR2Jk.js.map} +1 -1
  160. package/build/server/chunks/{_server.ts-6muCM4Nz.js → _server.ts-CMi1odxU.js} +6 -6
  161. package/build/server/chunks/{_server.ts-6muCM4Nz.js.map → _server.ts-CMi1odxU.js.map} +1 -1
  162. package/build/server/chunks/{_server.ts-DdocuErM.js → _server.ts-CPolXmaB.js} +7 -7
  163. package/build/server/chunks/{_server.ts-DdocuErM.js.map → _server.ts-CPolXmaB.js.map} +1 -1
  164. package/build/server/chunks/{_server.ts-BEaiuN8Q.js → _server.ts-CZ-P41xW.js} +6 -6
  165. package/build/server/chunks/{_server.ts-BEaiuN8Q.js.map → _server.ts-CZ-P41xW.js.map} +1 -1
  166. package/build/server/chunks/{_server.ts-BJv74_DI.js → _server.ts-Cc6blM9a.js} +6 -6
  167. package/build/server/chunks/{_server.ts-BJv74_DI.js.map → _server.ts-Cc6blM9a.js.map} +1 -1
  168. package/build/server/chunks/{_server.ts-D6wuFDe4.js → _server.ts-CcFK2dxk.js} +6 -6
  169. package/build/server/chunks/{_server.ts-D6wuFDe4.js.map → _server.ts-CcFK2dxk.js.map} +1 -1
  170. package/build/server/chunks/{_server.ts-CnQ4hgIT.js → _server.ts-CfB1cDLU.js} +7 -7
  171. package/build/server/chunks/{_server.ts-CnQ4hgIT.js.map → _server.ts-CfB1cDLU.js.map} +1 -1
  172. package/build/server/chunks/{_server.ts-CGZizh2V.js → _server.ts-ChK8wuma.js} +6 -6
  173. package/build/server/chunks/{_server.ts-CGZizh2V.js.map → _server.ts-ChK8wuma.js.map} +1 -1
  174. package/build/server/chunks/{_server.ts-CJVwtNhA.js → _server.ts-ClJrWUgt.js} +2 -2
  175. package/build/server/chunks/{_server.ts-CJVwtNhA.js.map → _server.ts-ClJrWUgt.js.map} +1 -1
  176. package/build/server/chunks/{_server.ts-Ds62LEMU.js → _server.ts-CpMO1w5D.js} +8 -8
  177. package/build/server/chunks/{_server.ts-Ds62LEMU.js.map → _server.ts-CpMO1w5D.js.map} +1 -1
  178. package/build/server/chunks/{_server.ts-DH3Uc_0m.js → _server.ts-CpwGXL04.js} +6 -6
  179. package/build/server/chunks/{_server.ts-DH3Uc_0m.js.map → _server.ts-CpwGXL04.js.map} +1 -1
  180. package/build/server/chunks/{_server.ts-D9yQyMbZ.js → _server.ts-CrUHXfa7.js} +6 -6
  181. package/build/server/chunks/{_server.ts-D9yQyMbZ.js.map → _server.ts-CrUHXfa7.js.map} +1 -1
  182. package/build/server/chunks/{_server.ts-C83FzZfP.js → _server.ts-CtNaQ39q.js} +6 -6
  183. package/build/server/chunks/{_server.ts-C83FzZfP.js.map → _server.ts-CtNaQ39q.js.map} +1 -1
  184. package/build/server/chunks/{_server.ts-Dy9l5NMO.js → _server.ts-Cu39Y3ON.js} +6 -6
  185. package/build/server/chunks/{_server.ts-Dy9l5NMO.js.map → _server.ts-Cu39Y3ON.js.map} +1 -1
  186. package/build/server/chunks/{_server.ts-D7X0LmkL.js → _server.ts-CyHlj4Xc.js} +6 -6
  187. package/build/server/chunks/{_server.ts-D7X0LmkL.js.map → _server.ts-CyHlj4Xc.js.map} +1 -1
  188. package/build/server/chunks/{_server.ts-DJCIu42O.js → _server.ts-CyMs8VXZ.js} +4 -4
  189. package/build/server/chunks/{_server.ts-DJCIu42O.js.map → _server.ts-CyMs8VXZ.js.map} +1 -1
  190. package/build/server/chunks/{_server.ts-BA11l9Z1.js → _server.ts-CydVYzX1.js} +6 -6
  191. package/build/server/chunks/{_server.ts-BA11l9Z1.js.map → _server.ts-CydVYzX1.js.map} +1 -1
  192. package/build/server/chunks/{_server.ts-Dj6nwJgl.js → _server.ts-CyiErd_B.js} +9 -9
  193. package/build/server/chunks/{_server.ts-Dj6nwJgl.js.map → _server.ts-CyiErd_B.js.map} +1 -1
  194. package/build/server/chunks/{_server.ts-CspCDw2x.js → _server.ts-Czl57SUr.js} +6 -6
  195. package/build/server/chunks/{_server.ts-CspCDw2x.js.map → _server.ts-Czl57SUr.js.map} +1 -1
  196. package/build/server/chunks/{_server.ts-DM9EsKQc.js → _server.ts-D7I9KZ4H.js} +6 -6
  197. package/build/server/chunks/{_server.ts-DM9EsKQc.js.map → _server.ts-D7I9KZ4H.js.map} +1 -1
  198. package/build/server/chunks/{_server.ts-D5F-pzp2.js → _server.ts-DDweV2eg.js} +6 -6
  199. package/build/server/chunks/{_server.ts-D5F-pzp2.js.map → _server.ts-DDweV2eg.js.map} +1 -1
  200. package/build/server/chunks/{_server.ts-CmUo0zla.js → _server.ts-DFq2AVjG.js} +6 -6
  201. package/build/server/chunks/{_server.ts-CmUo0zla.js.map → _server.ts-DFq2AVjG.js.map} +1 -1
  202. package/build/server/chunks/{_server.ts-CQHkw9ni.js → _server.ts-DPJJQkZp.js} +6 -6
  203. package/build/server/chunks/{_server.ts-CQHkw9ni.js.map → _server.ts-DPJJQkZp.js.map} +1 -1
  204. package/build/server/chunks/{_server.ts-CCmsGl_u.js → _server.ts-DQFO2xa9.js} +6 -6
  205. package/build/server/chunks/{_server.ts-CCmsGl_u.js.map → _server.ts-DQFO2xa9.js.map} +1 -1
  206. package/build/server/chunks/{_server.ts-BRdjsMSd.js → _server.ts-DYS4PknE.js} +6 -6
  207. package/build/server/chunks/{_server.ts-BRdjsMSd.js.map → _server.ts-DYS4PknE.js.map} +1 -1
  208. package/build/server/chunks/{_server.ts-D-Rf8If2.js → _server.ts-DcBrsY-a.js} +8 -8
  209. package/build/server/chunks/{_server.ts-D-Rf8If2.js.map → _server.ts-DcBrsY-a.js.map} +1 -1
  210. package/build/server/chunks/{_server.ts-C-tvKaFE.js → _server.ts-DcZIXa7_.js} +6 -6
  211. package/build/server/chunks/{_server.ts-C-tvKaFE.js.map → _server.ts-DcZIXa7_.js.map} +1 -1
  212. package/build/server/chunks/{_server.ts-BeP_sHqj.js → _server.ts-DdWIcyaa.js} +2 -2
  213. package/build/server/chunks/{_server.ts-BeP_sHqj.js.map → _server.ts-DdWIcyaa.js.map} +1 -1
  214. package/build/server/chunks/{_server.ts-CIv0zM75.js → _server.ts-DhZ0i-VZ.js} +7 -7
  215. package/build/server/chunks/{_server.ts-CIv0zM75.js.map → _server.ts-DhZ0i-VZ.js.map} +1 -1
  216. package/build/server/chunks/{_server.ts-Dcf84tjG.js → _server.ts-DiY7qGzB.js} +2 -2
  217. package/build/server/chunks/{_server.ts-Dcf84tjG.js.map → _server.ts-DiY7qGzB.js.map} +1 -1
  218. package/build/server/chunks/{_server.ts-CfuLncMW.js → _server.ts-DkWPvbVT.js} +6 -6
  219. package/build/server/chunks/{_server.ts-CfuLncMW.js.map → _server.ts-DkWPvbVT.js.map} +1 -1
  220. package/build/server/chunks/{_server.ts-DnczK3Pw.js → _server.ts-DmuQV3XR.js} +4 -4
  221. package/build/server/chunks/{_server.ts-DnczK3Pw.js.map → _server.ts-DmuQV3XR.js.map} +1 -1
  222. package/build/server/chunks/{_server.ts-DKYXeaKr.js → _server.ts-DprY8V8n.js} +6 -6
  223. package/build/server/chunks/{_server.ts-DKYXeaKr.js.map → _server.ts-DprY8V8n.js.map} +1 -1
  224. package/build/server/chunks/{_server.ts-DsVbuYhj.js → _server.ts-Dr7DPWfx.js} +7 -7
  225. package/build/server/chunks/{_server.ts-DsVbuYhj.js.map → _server.ts-Dr7DPWfx.js.map} +1 -1
  226. package/build/server/chunks/{_server.ts-Dl-Rn5Ku.js → _server.ts-DsRKY-Kc.js} +6 -6
  227. package/build/server/chunks/{_server.ts-Dl-Rn5Ku.js.map → _server.ts-DsRKY-Kc.js.map} +1 -1
  228. package/build/server/chunks/{_server.ts-C8eCqXP6.js → _server.ts-DtY45qj6.js} +6 -6
  229. package/build/server/chunks/{_server.ts-C8eCqXP6.js.map → _server.ts-DtY45qj6.js.map} +1 -1
  230. package/build/server/chunks/{_server.ts-2Z0JYuCr.js → _server.ts-DxbCMYot.js} +6 -6
  231. package/build/server/chunks/{_server.ts-2Z0JYuCr.js.map → _server.ts-DxbCMYot.js.map} +1 -1
  232. package/build/server/chunks/{_server.ts-42ZGRWhn.js → _server.ts-DzO2o8u_.js} +6 -6
  233. package/build/server/chunks/{_server.ts-42ZGRWhn.js.map → _server.ts-DzO2o8u_.js.map} +1 -1
  234. package/build/server/chunks/{_server.ts-DdHx6Xig.js → _server.ts-G80g1-Vi.js} +6 -6
  235. package/build/server/chunks/{_server.ts-DdHx6Xig.js.map → _server.ts-G80g1-Vi.js.map} +1 -1
  236. package/build/server/chunks/{_server.ts-2-50j5S8.js → _server.ts-RjE7mkg4.js} +6 -6
  237. package/build/server/chunks/{_server.ts-2-50j5S8.js.map → _server.ts-RjE7mkg4.js.map} +1 -1
  238. package/build/server/chunks/{_server.ts-Ba8xSIQn.js → _server.ts-SqpxZ5hM.js} +6 -6
  239. package/build/server/chunks/{_server.ts-Ba8xSIQn.js.map → _server.ts-SqpxZ5hM.js.map} +1 -1
  240. package/build/server/chunks/{_server.ts-DH343hlx.js → _server.ts-TecIejZG.js} +7 -7
  241. package/build/server/chunks/{_server.ts-DH343hlx.js.map → _server.ts-TecIejZG.js.map} +1 -1
  242. package/build/server/chunks/{_server.ts-BBewn2kP.js → _server.ts-UMlNzGum.js} +6 -6
  243. package/build/server/chunks/{_server.ts-BBewn2kP.js.map → _server.ts-UMlNzGum.js.map} +1 -1
  244. package/build/server/chunks/{_server.ts-C9F005zM.js → _server.ts-WTL-RZDk.js} +6 -6
  245. package/build/server/chunks/{_server.ts-C9F005zM.js.map → _server.ts-WTL-RZDk.js.map} +1 -1
  246. package/build/server/chunks/{_server.ts-pRYFJihh.js → _server.ts-YQAFFkYo.js} +7 -7
  247. package/build/server/chunks/{_server.ts-pRYFJihh.js.map → _server.ts-YQAFFkYo.js.map} +1 -1
  248. package/build/server/chunks/{_server.ts-CncBUb14.js → _server.ts-ZkptKFXP.js} +6 -6
  249. package/build/server/chunks/{_server.ts-CncBUb14.js.map → _server.ts-ZkptKFXP.js.map} +1 -1
  250. package/build/server/chunks/{_server.ts-Dq4RvC5F.js → _server.ts-opJkoWRS.js} +6 -6
  251. package/build/server/chunks/{_server.ts-Dq4RvC5F.js.map → _server.ts-opJkoWRS.js.map} +1 -1
  252. package/build/server/chunks/{_server.ts-BJrYBXpY.js → _server.ts-s_DZwJLK.js} +6 -6
  253. package/build/server/chunks/{_server.ts-BJrYBXpY.js.map → _server.ts-s_DZwJLK.js.map} +1 -1
  254. package/build/server/chunks/{_server.ts-BsPu8Fny.js → _server.ts-ukIYk-_Z.js} +6 -6
  255. package/build/server/chunks/{_server.ts-BsPu8Fny.js.map → _server.ts-ukIYk-_Z.js.map} +1 -1
  256. package/build/server/chunks/{_server.ts-D7VWMcNm.js → _server.ts-vXf4p_i0.js} +7 -7
  257. package/build/server/chunks/{_server.ts-D7VWMcNm.js.map → _server.ts-vXf4p_i0.js.map} +1 -1
  258. package/build/server/chunks/{addon-helpers-Cgg8lPxe.js → addon-helpers-CEjIrSBN.js} +3 -3
  259. package/build/server/chunks/{addon-helpers-Cgg8lPxe.js.map → addon-helpers-CEjIrSBN.js.map} +1 -1
  260. package/build/server/chunks/{akm-5HN45xWY.js → akm-rRfSaKvH.js} +2 -2
  261. package/build/server/chunks/{akm-5HN45xWY.js.map → akm-rRfSaKvH.js.map} +1 -1
  262. package/build/server/chunks/{catalog-7z8dgrJF.js → catalog-DMG_Bwji.js} +5 -5
  263. package/build/server/chunks/{catalog-7z8dgrJF.js.map → catalog-DMG_Bwji.js.map} +1 -1
  264. package/build/server/chunks/{client-D2lMniPd.js → client-BvFq2PRx.js} +2 -2
  265. package/build/server/chunks/{client-D2lMniPd.js.map → client-BvFq2PRx.js.map} +1 -1
  266. package/build/server/chunks/{compose-args2-BFdWixAZ.js → compose-args2-C39WGM9r.js} +2 -2
  267. package/build/server/chunks/compose-args2-C39WGM9r.js.map +1 -0
  268. package/build/server/chunks/{config-I5hb-W80.js → config-BndRz7Yl.js} +2 -2
  269. package/build/server/chunks/{config-I5hb-W80.js.map → config-BndRz7Yl.js.map} +1 -1
  270. package/build/server/chunks/{connections-api-NkotVLIl.js → connections-api-BvJpsZBj.js} +2 -2
  271. package/build/server/chunks/{connections-api-NkotVLIl.js.map → connections-api-BvJpsZBj.js.map} +1 -1
  272. package/build/server/chunks/{docker2-HZnACjh6.js → docker2-Ba2Whd9Y.js} +2 -2
  273. package/build/server/chunks/docker2-Ba2Whd9Y.js.map +1 -0
  274. package/build/server/chunks/{docker3-Dj9Pc_Pt.js → docker3-DhaO_Pxj.js} +2 -2
  275. package/build/server/chunks/{docker3-Dj9Pc_Pt.js.map → docker3-DhaO_Pxj.js.map} +1 -1
  276. package/build/server/chunks/{endpoints-B9ePqrMw.js → endpoints-CuL8lAcu.js} +3 -3
  277. package/build/server/chunks/{endpoints-B9ePqrMw.js.map → endpoints-CuL8lAcu.js.map} +1 -1
  278. package/build/server/chunks/environment-BYp8JQYM.js.map +1 -1
  279. package/build/server/chunks/{error.svelte-DGngrZ2V.js → error.svelte-C8Qx6FF6.js} +4 -4
  280. package/build/server/chunks/{error.svelte-DGngrZ2V.js.map → error.svelte-C8Qx6FF6.js.map} +1 -1
  281. package/build/server/chunks/{features-0lgyQreD.js → features-WsEodW5F.js} +3 -3
  282. package/build/server/chunks/{features-0lgyQreD.js.map → features-WsEodW5F.js.map} +1 -1
  283. package/build/server/chunks/{helpers-q4Ng8QTq.js → helpers-XmKveZFr.js} +4 -4
  284. package/build/server/chunks/{helpers-q4Ng8QTq.js.map → helpers-XmKveZFr.js.map} +1 -1
  285. package/build/server/chunks/{hooks.server-BTXqUhpH.js → hooks.server-o4bkPFRD.js} +9 -9
  286. package/build/server/chunks/{hooks.server-BTXqUhpH.js.map → hooks.server-o4bkPFRD.js.map} +1 -1
  287. package/build/server/chunks/{http-jBNJXVHg.js → http-CL5QncYd.js} +2 -2
  288. package/build/server/chunks/{http-jBNJXVHg.js.map → http-CL5QncYd.js.map} +1 -1
  289. package/build/server/chunks/{internal-G-Uk-kCA.js → internal-D66tKQSe.js} +3 -3
  290. package/build/server/chunks/{internal-G-Uk-kCA.js.map → internal-D66tKQSe.js.map} +1 -1
  291. package/build/server/chunks/{landing-BR5KUuDz.js → landing-DvVXSE_x.js} +5 -5
  292. package/build/server/chunks/{landing-BR5KUuDz.js.map → landing-DvVXSE_x.js.map} +1 -1
  293. package/build/server/chunks/{paths-tzRSDsKc.js → paths-BpdOajoE.js} +2 -2
  294. package/build/server/chunks/{paths-tzRSDsKc.js.map → paths-BpdOajoE.js.map} +1 -1
  295. package/build/server/chunks/{session-cookie-qHDuQboc.js → session-cookie-B0Fc-L8S.js} +2 -2
  296. package/build/server/chunks/{session-cookie-qHDuQboc.js.map → session-cookie-B0Fc-L8S.js.map} +1 -1
  297. package/build/server/chunks/{setup-deploy-DleJTifu.js → setup-deploy-BjJIt1Gf.js} +2 -2
  298. package/build/server/chunks/{setup-deploy-DleJTifu.js.map → setup-deploy-BjJIt1Gf.js.map} +1 -1
  299. package/build/server/chunks/{src-BwQUi60U.js → src-i2v6xhSC.js} +4 -4
  300. package/build/server/chunks/{src-BwQUi60U.js.map → src-i2v6xhSC.js.map} +1 -1
  301. package/build/server/chunks/{state-Dm7U51xT.js → state-fVG29xFj.js} +2 -2
  302. package/build/server/chunks/{state-Dm7U51xT.js.map → state-fVG29xFj.js.map} +1 -1
  303. package/build/server/chunks/{state2-BhKHITEo.js → state2-Dl7-d1h_.js} +2 -2
  304. package/build/server/chunks/{state2-BhKHITEo.js.map → state2-Dl7-d1h_.js.map} +1 -1
  305. package/build/server/index.js +1 -1
  306. package/build/server/manifest.js +96 -96
  307. package/build/server/manifest.js.map +1 -1
  308. package/package.json +2 -2
  309. package/build/client/_app/immutable/chunks/9mRSvTWj.js.br +0 -0
  310. package/build/client/_app/immutable/chunks/9mRSvTWj.js.gz +0 -0
  311. package/build/client/_app/immutable/chunks/B_Sgy7qx.js +0 -1
  312. package/build/client/_app/immutable/chunks/B_Sgy7qx.js.br +0 -2
  313. package/build/client/_app/immutable/chunks/B_Sgy7qx.js.gz +0 -0
  314. package/build/client/_app/immutable/chunks/Be7qat4r.js.br +0 -0
  315. package/build/client/_app/immutable/chunks/Be7qat4r.js.gz +0 -0
  316. package/build/client/_app/immutable/chunks/BoOBAdGl.js.br +0 -0
  317. package/build/client/_app/immutable/chunks/BoOBAdGl.js.gz +0 -0
  318. package/build/client/_app/immutable/chunks/DSs95sLz.js.br +0 -0
  319. package/build/client/_app/immutable/chunks/DSs95sLz.js.gz +0 -0
  320. package/build/client/_app/immutable/entry/app.DZwy1Y3W.js.br +0 -0
  321. package/build/client/_app/immutable/entry/app.DZwy1Y3W.js.gz +0 -0
  322. package/build/client/_app/immutable/entry/start.C0ic7Ewp.js +0 -1
  323. package/build/client/_app/immutable/entry/start.C0ic7Ewp.js.br +0 -1
  324. package/build/client/_app/immutable/entry/start.C0ic7Ewp.js.gz +0 -0
  325. package/build/client/_app/immutable/nodes/1.Bxihn5f1.js.br +0 -0
  326. package/build/client/_app/immutable/nodes/1.Bxihn5f1.js.gz +0 -0
  327. package/build/client/_app/immutable/nodes/10.BZ76_WLP.js.br +0 -0
  328. package/build/client/_app/immutable/nodes/10.BZ76_WLP.js.gz +0 -0
  329. package/build/client/_app/immutable/nodes/11.Bzf3G5G0.js.br +0 -0
  330. package/build/client/_app/immutable/nodes/11.Bzf3G5G0.js.gz +0 -0
  331. package/build/client/_app/immutable/nodes/4.D-CwW2PH.js.br +0 -0
  332. package/build/client/_app/immutable/nodes/4.D-CwW2PH.js.gz +0 -0
  333. package/build/client/_app/immutable/nodes/5.BbStivMI.js.br +0 -0
  334. package/build/client/_app/immutable/nodes/5.BbStivMI.js.gz +0 -0
  335. package/build/client/_app/immutable/nodes/6.BKVgKxKO.js.br +0 -0
  336. package/build/client/_app/immutable/nodes/6.BKVgKxKO.js.gz +0 -0
  337. package/build/client/_app/immutable/nodes/7.DuXt155R.js.br +0 -0
  338. package/build/client/_app/immutable/nodes/7.DuXt155R.js.gz +0 -0
  339. package/build/client/_app/immutable/nodes/9.BdeFVi2a.js.br +0 -0
  340. package/build/client/_app/immutable/nodes/9.BdeFVi2a.js.gz +0 -0
  341. package/build/server/chunks/1-Ceq9WsUZ.js +0 -9
  342. package/build/server/chunks/compose-args2-BFdWixAZ.js.map +0 -1
  343. package/build/server/chunks/docker2-HZnACjh6.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { j as json } from './exports-CcmcYU0M.js';
2
- import { E as ELECTRON_ASSET_PATTERN } from './src-BwQUi60U.js';
3
- import { d as getRequestId, l as requireCapability, r as requireAdmin } from './helpers-q4Ng8QTq.js';
2
+ import { E as ELECTRON_ASSET_PATTERN } from './src-i2v6xhSC.js';
3
+ import { d as getRequestId, l as requireCapability, r as requireAdmin } from './helpers-XmKveZFr.js';
4
4
  import './utils-OXHIhUb5.js';
5
5
  import './provider-constants-1s1k8kbj.js';
6
6
  import './chunk-CLZ62Ad-.js';
@@ -22,9 +22,9 @@ import 'assert';
22
22
  import 'zlib';
23
23
  import 'node:assert';
24
24
  import 'node:fs/promises';
25
- import './endpoints-B9ePqrMw.js';
26
- import './state-Dm7U51xT.js';
27
- import './features-0lgyQreD.js';
25
+ import './endpoints-CuL8lAcu.js';
26
+ import './state-fVG29xFj.js';
27
+ import './features-WsEodW5F.js';
28
28
 
29
29
  //#region src/lib/server/release-units.ts
30
30
  /**
@@ -131,4 +131,4 @@ var GET = async (event) => {
131
131
  };
132
132
 
133
133
  export { GET };
134
- //# sourceMappingURL=_server.ts-CfuLncMW.js.map
134
+ //# sourceMappingURL=_server.ts-DkWPvbVT.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-CfuLncMW.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/versions/releases/_server.ts.js"],"sourcesContent":["import { r as json } from \"../../../../../../chunks/exports.js\";\nimport { mt as ELECTRON_ASSET_PATTERN } from \"../../../../../../chunks/compose-args.js\";\nimport \"../../../../../../chunks/src.js\";\nimport { a as getRequestId, d as requireCapability, u as requireAdmin } from \"../../../../../../chunks/helpers.js\";\n//#region src/lib/server/release-units.ts\n/**\n* Parse GitHub release tags into platform + per-unit release lists.\n*\n* With independently versioned units, git tags are unit-prefixed\n* (platform-X.Y.Z, assistant-X.Y.Z, guardian-X.Y.Z, portals-X.Y.Z). Docker\n* images always use the v-prefixed form, so the prefix is stripped here and the\n* UI re-adds the `v` only when talking to Docker. Legacy `vX.Y.Z` tags are kept\n* under the platform list for backward compat with pre-unit releases.\n*\n* Pure + side-effect free so it can be unit-tested without mocking the GitHub\n* API. The `/api/host/versions/releases` route calls {@link groupReleasesByUnit}\n* after fetching the raw release list.\n*/\nvar PLATFORM_TAG_PATTERN = /^platform-(\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]*)?)$/;\nvar LEGACY_V_TAG_PATTERN = /^v(\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]*)?)$/;\n/**\n* Select only platform releases that carry installable app assets (Electron\n* installer or skeleton/deploy bundle), skipping per-unit container-image\n* releases.\n*\n* Per-unit version pickers now read from Docker Hub tags (not GitHub releases),\n* so the releases endpoint only needs app-level releases — the ones with\n* downloadable installer/bundle assets. This dramatically reduces the data the\n* UI holds and keeps the GitHub API call to its existing single request (the\n* filtering is client-side of the fetch, not a second fetch).\n*\n* Deduplicates by semver so `{#each r.tag}` keys stay unique when a platform\n* release created both a `platform-X.Y.Z` and a legacy `vX.Y.Z` tag. Preserves\n* GitHub's `created_at` desc ordering.\n*/\nfunction selectInstallableReleases(raw) {\n\tconst seen = /* @__PURE__ */ new Set();\n\tconst releases = [];\n\tfor (const r of raw) {\n\t\tconst hasElectronBuild = r.assets.some((a) => ELECTRON_ASSET_PATTERN.test(a.name));\n\t\tif (!hasElectronBuild) continue;\n\t\tconst platformMatch = r.tag_name.match(PLATFORM_TAG_PATTERN);\n\t\tif (platformMatch) {\n\t\t\tconst tag = platformMatch[1];\n\t\t\tif (!seen.has(tag)) {\n\t\t\t\tseen.add(tag);\n\t\t\t\treleases.push({\n\t\t\t\t\ttag,\n\t\t\t\t\tprerelease: r.prerelease,\n\t\t\t\t\tpublishedAt: r.published_at,\n\t\t\t\t\thasElectronBuild\n\t\t\t\t});\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst legacyMatch = r.tag_name.match(LEGACY_V_TAG_PATTERN);\n\t\tif (legacyMatch) {\n\t\t\tconst tag = legacyMatch[1];\n\t\t\tif (!seen.has(tag)) {\n\t\t\t\tseen.add(tag);\n\t\t\t\treleases.push({\n\t\t\t\t\ttag,\n\t\t\t\t\tprerelease: r.prerelease,\n\t\t\t\t\tpublishedAt: r.published_at,\n\t\t\t\t\thasElectronBuild\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn releases;\n}\n//#endregion\n//#region src/routes/api/host/versions/releases/+server.ts\n/**\n* GET /api/host/versions/releases — list installable platform releases from GitHub.\n*\n* Powers the desktop App-update badge: only platform releases that carry an\n* Electron installer asset. Best-effort — a GitHub outage yields an empty list\n* with an error signal rather than failing the page. (No server-side cache: the\n* admin UI no longer polls this, so a direct fetch per visit is fine.)\n*/\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:updates\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\ttry {\n\t\tconst res = await fetch(\"https://api.github.com/repos/itlackey/openpalm/releases?per_page=20\", {\n\t\t\theaders: {\n\t\t\t\t\"User-Agent\": \"openpalm-admin/1.0\",\n\t\t\t\tAccept: \"application/vnd.github+json\"\n\t\t\t},\n\t\t\tsignal: AbortSignal.timeout(8e3)\n\t\t});\n\t\tif (!res.ok) return json({\n\t\t\treleases: [],\n\t\t\terror: \"GitHub releases unavailable\"\n\t\t});\n\t\treturn json({ releases: selectInstallableReleases(await res.json()) });\n\t} catch {\n\t\treturn json({\n\t\t\treleases: [],\n\t\t\terror: \"GitHub releases unavailable\"\n\t\t});\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_server.ts-DkWPvbVT.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/versions/releases/_server.ts.js"],"sourcesContent":["import { r as json } from \"../../../../../../chunks/exports.js\";\nimport { mt as ELECTRON_ASSET_PATTERN } from \"../../../../../../chunks/compose-args.js\";\nimport \"../../../../../../chunks/src.js\";\nimport { a as getRequestId, d as requireCapability, u as requireAdmin } from \"../../../../../../chunks/helpers.js\";\n//#region src/lib/server/release-units.ts\n/**\n* Parse GitHub release tags into platform + per-unit release lists.\n*\n* With independently versioned units, git tags are unit-prefixed\n* (platform-X.Y.Z, assistant-X.Y.Z, guardian-X.Y.Z, portals-X.Y.Z). Docker\n* images always use the v-prefixed form, so the prefix is stripped here and the\n* UI re-adds the `v` only when talking to Docker. Legacy `vX.Y.Z` tags are kept\n* under the platform list for backward compat with pre-unit releases.\n*\n* Pure + side-effect free so it can be unit-tested without mocking the GitHub\n* API. The `/api/host/versions/releases` route calls {@link groupReleasesByUnit}\n* after fetching the raw release list.\n*/\nvar PLATFORM_TAG_PATTERN = /^platform-(\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]*)?)$/;\nvar LEGACY_V_TAG_PATTERN = /^v(\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]*)?)$/;\n/**\n* Select only platform releases that carry installable app assets (Electron\n* installer or skeleton/deploy bundle), skipping per-unit container-image\n* releases.\n*\n* Per-unit version pickers now read from Docker Hub tags (not GitHub releases),\n* so the releases endpoint only needs app-level releases — the ones with\n* downloadable installer/bundle assets. This dramatically reduces the data the\n* UI holds and keeps the GitHub API call to its existing single request (the\n* filtering is client-side of the fetch, not a second fetch).\n*\n* Deduplicates by semver so `{#each r.tag}` keys stay unique when a platform\n* release created both a `platform-X.Y.Z` and a legacy `vX.Y.Z` tag. Preserves\n* GitHub's `created_at` desc ordering.\n*/\nfunction selectInstallableReleases(raw) {\n\tconst seen = /* @__PURE__ */ new Set();\n\tconst releases = [];\n\tfor (const r of raw) {\n\t\tconst hasElectronBuild = r.assets.some((a) => ELECTRON_ASSET_PATTERN.test(a.name));\n\t\tif (!hasElectronBuild) continue;\n\t\tconst platformMatch = r.tag_name.match(PLATFORM_TAG_PATTERN);\n\t\tif (platformMatch) {\n\t\t\tconst tag = platformMatch[1];\n\t\t\tif (!seen.has(tag)) {\n\t\t\t\tseen.add(tag);\n\t\t\t\treleases.push({\n\t\t\t\t\ttag,\n\t\t\t\t\tprerelease: r.prerelease,\n\t\t\t\t\tpublishedAt: r.published_at,\n\t\t\t\t\thasElectronBuild\n\t\t\t\t});\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst legacyMatch = r.tag_name.match(LEGACY_V_TAG_PATTERN);\n\t\tif (legacyMatch) {\n\t\t\tconst tag = legacyMatch[1];\n\t\t\tif (!seen.has(tag)) {\n\t\t\t\tseen.add(tag);\n\t\t\t\treleases.push({\n\t\t\t\t\ttag,\n\t\t\t\t\tprerelease: r.prerelease,\n\t\t\t\t\tpublishedAt: r.published_at,\n\t\t\t\t\thasElectronBuild\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn releases;\n}\n//#endregion\n//#region src/routes/api/host/versions/releases/+server.ts\n/**\n* GET /api/host/versions/releases — list installable platform releases from GitHub.\n*\n* Powers the desktop App-update badge: only platform releases that carry an\n* Electron installer asset. Best-effort — a GitHub outage yields an empty list\n* with an error signal rather than failing the page. (No server-side cache: the\n* admin UI no longer polls this, so a direct fetch per visit is fine.)\n*/\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:updates\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\ttry {\n\t\tconst res = await fetch(\"https://api.github.com/repos/itlackey/openpalm/releases?per_page=20\", {\n\t\t\theaders: {\n\t\t\t\t\"User-Agent\": \"openpalm-admin/1.0\",\n\t\t\t\tAccept: \"application/vnd.github+json\"\n\t\t\t},\n\t\t\tsignal: AbortSignal.timeout(8e3)\n\t\t});\n\t\tif (!res.ok) return json({\n\t\t\treleases: [],\n\t\t\terror: \"GitHub releases unavailable\"\n\t\t});\n\t\treturn json({ releases: selectInstallableReleases(await res.json()) });\n\t} catch {\n\t\treturn json({\n\t\t\treleases: [],\n\t\t\terror: \"GitHub releases unavailable\"\n\t\t});\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,oBAAoB,GAAG,mDAAmD;AAC9E,IAAI,oBAAoB,GAAG,2CAA2C;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,yBAAyB,CAAC,GAAG,EAAE;AACxC,CAAC,MAAM,IAAI,mBAAmB,IAAI,GAAG,EAAE;AACvC,CAAC,MAAM,QAAQ,GAAG,EAAE;AACpB,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;AACtB,EAAE,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACpF,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzB,EAAE,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC;AAC9D,EAAE,IAAI,aAAa,EAAE;AACrB,GAAG,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC;AAC/B,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACvB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACjB,IAAI,QAAQ,CAAC,IAAI,CAAC;AAClB,KAAK,GAAG;AACR,KAAK,UAAU,EAAE,CAAC,CAAC,UAAU;AAC7B,KAAK,WAAW,EAAE,CAAC,CAAC,YAAY;AAChC,KAAK;AACL,KAAK,CAAC;AACN,GAAG;AACH,GAAG;AACH,EAAE;AACF,EAAE,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC;AAC5D,EAAE,IAAI,WAAW,EAAE;AACnB,GAAG,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC;AAC7B,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACvB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACjB,IAAI,QAAQ,CAAC,IAAI,CAAC;AAClB,KAAK,GAAG;AACR,KAAK,UAAU,EAAE,CAAC,CAAC,UAAU;AAC7B,KAAK,WAAW,EAAE,CAAC,CAAC,YAAY;AAChC,KAAK;AACL,KAAK,CAAC;AACN,GAAG;AACH,EAAE;AACF,CAAC;AACD,CAAC,OAAO,QAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,GAAG,GAAG,OAAO,KAAK,KAAK;AAC3B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC;AAC5E,CAAC,IAAI,eAAe,EAAE,OAAO,eAAe;AAC5C,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,IAAI;AACL,EAAE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,qEAAqE,EAAE;AACjG,GAAG,OAAO,EAAE;AACZ,IAAI,YAAY,EAAE,oBAAoB;AACtC,IAAI,MAAM,EAAE;AACZ,IAAI;AACJ,GAAG,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG;AAClC,GAAG,CAAC;AACJ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC;AAC3B,GAAG,QAAQ,EAAE,EAAE;AACf,GAAG,KAAK,EAAE;AACV,GAAG,CAAC;AACJ,EAAE,OAAO,IAAI,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;AACxE,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI,CAAC;AACd,GAAG,QAAQ,EAAE,EAAE;AACf,GAAG,KAAK,EAAE;AACV,GAAG,CAAC;AACJ,CAAC;AACD;;;;"}
@@ -1,8 +1,8 @@
1
1
  import { j as json } from './exports-CcmcYU0M.js';
2
- import { g as getState } from './state-Dm7U51xT.js';
3
- import { g as getDeployState } from './setup-deploy-DleJTifu.js';
2
+ import { g as getState } from './state-fVG29xFj.js';
3
+ import { g as getDeployState } from './setup-deploy-BjJIt1Gf.js';
4
4
  import './utils-OXHIhUb5.js';
5
- import './src-BwQUi60U.js';
5
+ import './src-i2v6xhSC.js';
6
6
  import './provider-constants-1s1k8kbj.js';
7
7
  import './chunk-CLZ62Ad-.js';
8
8
  import 'node:module';
@@ -46,4 +46,4 @@ var GET = () => {
46
46
  };
47
47
 
48
48
  export { GET };
49
- //# sourceMappingURL=_server.ts-DnczK3Pw.js.map
49
+ //# sourceMappingURL=_server.ts-DmuQV3XR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-DnczK3Pw.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/setup/deploy-status/_server.ts.js"],"sourcesContent":["import { r as json } from \"../../../../../chunks/exports.js\";\nimport { t as getState } from \"../../../../../chunks/state.js\";\nimport { t as getDeployState } from \"../../../../../chunks/setup-deploy.js\";\n//#region src/routes/api/setup/deploy-status/+server.ts\nfunction resolvePorts() {\n\treturn {\n\t\tadmin: Number(process.env.OP_HOST_UI_PORT) || 3880,\n\t\tassistant: Number(process.env.OP_HOST_ASSISTANT_PORT) || 3800\n\t};\n}\nvar GET = () => {\n\tconst state = getDeployState(getState());\n\treturn json({\n\t\tok: true,\n\t\tsetupComplete: state.setupComplete,\n\t\tdeploying: state.deploying,\n\t\tdeployStatus: state.deployStatus,\n\t\tdeployError: state.deployError,\n\t\timageWarning: state.imageWarning,\n\t\tphase: state.phase,\n\t\tports: resolvePorts()\n\t});\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA,SAAS,YAAY,GAAG;AACxB,CAAC,OAAO;AACR,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI;AACpD,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI;AAC3D,EAAE;AACF;AACG,IAAC,GAAG,GAAG,MAAM;AAChB,CAAC,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;AACzC,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,EAAE,EAAE,IAAI;AACV,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa;AACpC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS;AAC5B,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY;AAClC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW;AAChC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY;AAClC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;AACpB,EAAE,KAAK,EAAE,YAAY;AACrB,EAAE,CAAC;AACH;;;;"}
1
+ {"version":3,"file":"_server.ts-DmuQV3XR.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/setup/deploy-status/_server.ts.js"],"sourcesContent":["import { r as json } from \"../../../../../chunks/exports.js\";\nimport { t as getState } from \"../../../../../chunks/state.js\";\nimport { t as getDeployState } from \"../../../../../chunks/setup-deploy.js\";\n//#region src/routes/api/setup/deploy-status/+server.ts\nfunction resolvePorts() {\n\treturn {\n\t\tadmin: Number(process.env.OP_HOST_UI_PORT) || 3880,\n\t\tassistant: Number(process.env.OP_HOST_ASSISTANT_PORT) || 3800\n\t};\n}\nvar GET = () => {\n\tconst state = getDeployState(getState());\n\treturn json({\n\t\tok: true,\n\t\tsetupComplete: state.setupComplete,\n\t\tdeploying: state.deploying,\n\t\tdeployStatus: state.deployStatus,\n\t\tdeployError: state.deployError,\n\t\timageWarning: state.imageWarning,\n\t\tphase: state.phase,\n\t\tports: resolvePorts()\n\t});\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA,SAAS,YAAY,GAAG;AACxB,CAAC,OAAO;AACR,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI;AACpD,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI;AAC3D,EAAE;AACF;AACG,IAAC,GAAG,GAAG,MAAM;AAChB,CAAC,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;AACzC,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,EAAE,EAAE,IAAI;AACV,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa;AACpC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS;AAC5B,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY;AAClC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW;AAChC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY;AAClC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;AACpB,EAAE,KAAK,EAAE,YAAY;AACrB,EAAE,CAAC;AACH;;;;"}
@@ -1,6 +1,6 @@
1
- import { aP as removeTaskFile, aH as readTaskFile, b9 as writeTaskFile, i as assertSafeTaskFilename } from './src-BwQUi60U.js';
2
- import { g as getState } from './state-Dm7U51xT.js';
3
- import { d as getRequestId, l as requireCapability, r as requireAdmin, k as jsonResponse, e as errorResponse, p as parseJsonBody, j as jsonBodyError } from './helpers-q4Ng8QTq.js';
1
+ import { aP as removeTaskFile, aH as readTaskFile, b9 as writeTaskFile, i as assertSafeTaskFilename } from './src-i2v6xhSC.js';
2
+ import { g as getState } from './state-fVG29xFj.js';
3
+ import { d as getRequestId, l as requireCapability, r as requireAdmin, k as jsonResponse, e as errorResponse, p as parseJsonBody, j as jsonBodyError } from './helpers-XmKveZFr.js';
4
4
  import './provider-constants-1s1k8kbj.js';
5
5
  import './chunk-CLZ62Ad-.js';
6
6
  import 'node:module';
@@ -21,8 +21,8 @@ import 'assert';
21
21
  import 'zlib';
22
22
  import 'node:assert';
23
23
  import 'node:fs/promises';
24
- import './endpoints-B9ePqrMw.js';
25
- import './features-0lgyQreD.js';
24
+ import './endpoints-CuL8lAcu.js';
25
+ import './features-WsEodW5F.js';
26
26
 
27
27
  //#region src/routes/api/host/automations/[name]/file/+server.ts
28
28
  function guard(name, requestId) {
@@ -85,4 +85,4 @@ var DELETE = async (event) => {
85
85
  };
86
86
 
87
87
  export { DELETE, GET, PUT };
88
- //# sourceMappingURL=_server.ts-DKYXeaKr.js.map
88
+ //# sourceMappingURL=_server.ts-DprY8V8n.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-DKYXeaKr.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/automations/_name_/file/_server.ts.js"],"sourcesContent":["import { B as assertSafeTaskFilename, H as removeTaskFile, U as writeTaskFile, V as readTaskFile } from \"../../../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../../../chunks/state.js\";\nimport { a as getRequestId, c as jsonResponse, d as requireCapability, l as parseJsonBody, r as errorResponse, s as jsonBodyError, u as requireAdmin } from \"../../../../../../../chunks/helpers.js\";\n//#region src/routes/api/host/automations/[name]/file/+server.ts\nfunction guard(name, requestId) {\n\ttry {\n\t\tassertSafeTaskFilename(name);\n\t\treturn null;\n\t} catch (err) {\n\t\treturn errorResponse(400, \"bad_request\", err.message, {}, requestId);\n\t}\n}\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:stack:read\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst name = event.params.name;\n\tconst bad = guard(name, requestId);\n\tif (bad) return bad;\n\tconst content = readTaskFile(getState().stashDir, name);\n\tif (content === null) return errorResponse(404, \"not_found\", `Task file not found: ${name}`, {}, requestId);\n\treturn jsonResponse(200, {\n\t\tname,\n\t\tcontent\n\t}, requestId);\n};\nvar PUT = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:stack:write\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst name = event.params.name;\n\tconst bad = guard(name, requestId);\n\tif (bad) return bad;\n\tconst result = await parseJsonBody(event.request);\n\tif (\"error\" in result) return jsonBodyError(result, requestId);\n\tconst content = result.data.content;\n\tif (typeof content !== \"string\") return errorResponse(400, \"bad_request\", \"content must be a string\", {}, requestId);\n\twriteTaskFile(getState().stashDir, name, content);\n\treturn jsonResponse(200, {\n\t\tok: true,\n\t\tname\n\t}, requestId);\n};\nvar DELETE = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:stack:write\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst name = event.params.name;\n\tconst bad = guard(name, requestId);\n\tif (bad) return bad;\n\tremoveTaskFile(getState().stashDir, name);\n\treturn jsonResponse(200, {\n\t\tok: true,\n\t\tname\n\t}, requestId);\n};\n//#endregion\nexport { DELETE, GET, PUT };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_server.ts-DprY8V8n.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/automations/_name_/file/_server.ts.js"],"sourcesContent":["import { B as assertSafeTaskFilename, H as removeTaskFile, U as writeTaskFile, V as readTaskFile } from \"../../../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../../../chunks/state.js\";\nimport { a as getRequestId, c as jsonResponse, d as requireCapability, l as parseJsonBody, r as errorResponse, s as jsonBodyError, u as requireAdmin } from \"../../../../../../../chunks/helpers.js\";\n//#region src/routes/api/host/automations/[name]/file/+server.ts\nfunction guard(name, requestId) {\n\ttry {\n\t\tassertSafeTaskFilename(name);\n\t\treturn null;\n\t} catch (err) {\n\t\treturn errorResponse(400, \"bad_request\", err.message, {}, requestId);\n\t}\n}\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:stack:read\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst name = event.params.name;\n\tconst bad = guard(name, requestId);\n\tif (bad) return bad;\n\tconst content = readTaskFile(getState().stashDir, name);\n\tif (content === null) return errorResponse(404, \"not_found\", `Task file not found: ${name}`, {}, requestId);\n\treturn jsonResponse(200, {\n\t\tname,\n\t\tcontent\n\t}, requestId);\n};\nvar PUT = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:stack:write\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst name = event.params.name;\n\tconst bad = guard(name, requestId);\n\tif (bad) return bad;\n\tconst result = await parseJsonBody(event.request);\n\tif (\"error\" in result) return jsonBodyError(result, requestId);\n\tconst content = result.data.content;\n\tif (typeof content !== \"string\") return errorResponse(400, \"bad_request\", \"content must be a string\", {}, requestId);\n\twriteTaskFile(getState().stashDir, name, content);\n\treturn jsonResponse(200, {\n\t\tok: true,\n\t\tname\n\t}, requestId);\n};\nvar DELETE = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:stack:write\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst name = event.params.name;\n\tconst bad = guard(name, requestId);\n\tif (bad) return bad;\n\tremoveTaskFile(getState().stashDir, name);\n\treturn jsonResponse(200, {\n\t\tok: true,\n\t\tname\n\t}, requestId);\n};\n//#endregion\nexport { DELETE, GET, PUT };\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { d as getRequestId, e as errorResponse, f as getUiLoginPassword, s as safeTokenCompare, b as createSession } from './helpers-q4Ng8QTq.js';
2
- import { s as sessionCookieHeader } from './session-cookie-qHDuQboc.js';
3
- import './src-BwQUi60U.js';
1
+ import { d as getRequestId, e as errorResponse, f as getUiLoginPassword, s as safeTokenCompare, b as createSession } from './helpers-XmKveZFr.js';
2
+ import { s as sessionCookieHeader } from './session-cookie-B0Fc-L8S.js';
3
+ import './src-i2v6xhSC.js';
4
4
  import './provider-constants-1s1k8kbj.js';
5
5
  import './chunk-CLZ62Ad-.js';
6
6
  import 'node:module';
@@ -21,9 +21,9 @@ import 'assert';
21
21
  import 'zlib';
22
22
  import 'node:assert';
23
23
  import 'node:fs/promises';
24
- import './endpoints-B9ePqrMw.js';
25
- import './state-Dm7U51xT.js';
26
- import './features-0lgyQreD.js';
24
+ import './endpoints-CuL8lAcu.js';
25
+ import './state-fVG29xFj.js';
26
+ import './features-WsEodW5F.js';
27
27
 
28
28
  //#region src/routes/api/auth/session/+server.ts
29
29
  /**
@@ -61,4 +61,4 @@ var POST = async (event) => {
61
61
  };
62
62
 
63
63
  export { POST };
64
- //# sourceMappingURL=_server.ts-DsVbuYhj.js.map
64
+ //# sourceMappingURL=_server.ts-Dr7DPWfx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-DsVbuYhj.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/auth/session/_server.ts.js"],"sourcesContent":["import { a as getRequestId, f as safeTokenCompare, g as getUiLoginPassword, h as createSession, r as errorResponse } from \"../../../../../chunks/helpers.js\";\nimport { r as sessionCookieHeader } from \"../../../../../chunks/session-cookie.js\";\n//#region src/routes/api/auth/session/+server.ts\n/**\n* POST /api/auth/session\n*\n* Issues an `op_session` cookie after verifying the operator-supplied password\n* against `process.env.OP_UI_LOGIN_PASSWORD`.\n*\n* The cookie value is a random UUID session token — NOT the plaintext password.\n* Kept alongside `/api/auth/login` as an alias; both verify the same\n* `password` body field and issue the `op_session` cookie.\n*/\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tlet body;\n\ttry {\n\t\tbody = await event.request.json();\n\t} catch {\n\t\treturn errorResponse(400, \"bad_request\", \"Invalid JSON body\", {}, requestId);\n\t}\n\tconst password = typeof body.password === \"string\" ? body.password : \"\";\n\tif (!password) return errorResponse(400, \"bad_request\", \"password is required\", {}, requestId);\n\tconst configured = getUiLoginPassword();\n\tif (!configured) return errorResponse(503, \"admin_not_configured\", \"OP_UI_LOGIN_PASSWORD has not been set. Complete setup first.\", {}, requestId);\n\tif (!safeTokenCompare(password, configured)) return errorResponse(401, \"unauthorized\", \"Invalid password\", {}, requestId);\n\tconst sessionToken = createSession();\n\treturn new Response(JSON.stringify({ ok: true }), {\n\t\tstatus: 200,\n\t\theaders: {\n\t\t\t\"content-type\": \"application/json\",\n\t\t\t\"set-cookie\": sessionCookieHeader(sessionToken, event.request),\n\t\t\t\"x-request-id\": requestId\n\t\t}\n\t});\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,IAAI,GAAG,OAAO,KAAK,KAAK;AAC5B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,IAAI,IAAI;AACT,CAAC,IAAI;AACL,EAAE,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;AACnC,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAE,EAAE,SAAS,CAAC;AAC9E,CAAC;AACD,CAAC,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE;AACxE,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,sBAAsB,EAAE,EAAE,EAAE,SAAS,CAAC;AAC/F,CAAC,MAAM,UAAU,GAAG,kBAAkB,EAAE;AACxC,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,sBAAsB,EAAE,8DAA8D,EAAE,EAAE,EAAE,SAAS,CAAC;AAClJ,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,EAAE,SAAS,CAAC;AAC1H,CAAC,MAAM,YAAY,GAAG,aAAa,EAAE;AACrC,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AACnD,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,OAAO,EAAE;AACX,GAAG,cAAc,EAAE,kBAAkB;AACrC,GAAG,YAAY,EAAE,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;AACjE,GAAG,cAAc,EAAE;AACnB;AACA,EAAE,CAAC;AACH;;;;"}
1
+ {"version":3,"file":"_server.ts-Dr7DPWfx.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/auth/session/_server.ts.js"],"sourcesContent":["import { a as getRequestId, f as safeTokenCompare, g as getUiLoginPassword, h as createSession, r as errorResponse } from \"../../../../../chunks/helpers.js\";\nimport { r as sessionCookieHeader } from \"../../../../../chunks/session-cookie.js\";\n//#region src/routes/api/auth/session/+server.ts\n/**\n* POST /api/auth/session\n*\n* Issues an `op_session` cookie after verifying the operator-supplied password\n* against `process.env.OP_UI_LOGIN_PASSWORD`.\n*\n* The cookie value is a random UUID session token — NOT the plaintext password.\n* Kept alongside `/api/auth/login` as an alias; both verify the same\n* `password` body field and issue the `op_session` cookie.\n*/\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tlet body;\n\ttry {\n\t\tbody = await event.request.json();\n\t} catch {\n\t\treturn errorResponse(400, \"bad_request\", \"Invalid JSON body\", {}, requestId);\n\t}\n\tconst password = typeof body.password === \"string\" ? body.password : \"\";\n\tif (!password) return errorResponse(400, \"bad_request\", \"password is required\", {}, requestId);\n\tconst configured = getUiLoginPassword();\n\tif (!configured) return errorResponse(503, \"admin_not_configured\", \"OP_UI_LOGIN_PASSWORD has not been set. Complete setup first.\", {}, requestId);\n\tif (!safeTokenCompare(password, configured)) return errorResponse(401, \"unauthorized\", \"Invalid password\", {}, requestId);\n\tconst sessionToken = createSession();\n\treturn new Response(JSON.stringify({ ok: true }), {\n\t\tstatus: 200,\n\t\theaders: {\n\t\t\t\"content-type\": \"application/json\",\n\t\t\t\"set-cookie\": sessionCookieHeader(sessionToken, event.request),\n\t\t\t\"x-request-id\": requestId\n\t\t}\n\t});\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,IAAI,GAAG,OAAO,KAAK,KAAK;AAC5B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,IAAI,IAAI;AACT,CAAC,IAAI;AACL,EAAE,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;AACnC,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAE,EAAE,SAAS,CAAC;AAC9E,CAAC;AACD,CAAC,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE;AACxE,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,sBAAsB,EAAE,EAAE,EAAE,SAAS,CAAC;AAC/F,CAAC,MAAM,UAAU,GAAG,kBAAkB,EAAE;AACxC,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,sBAAsB,EAAE,8DAA8D,EAAE,EAAE,EAAE,SAAS,CAAC;AAClJ,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,EAAE,SAAS,CAAC;AAC1H,CAAC,MAAM,YAAY,GAAG,aAAa,EAAE;AACrC,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AACnD,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,OAAO,EAAE;AACX,GAAG,cAAc,EAAE,kBAAkB;AACrC,GAAG,YAAY,EAAE,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;AACjE,GAAG,cAAc,EAAE;AACnB;AACA,EAAE,CAAC;AACH;;;;"}
@@ -1,6 +1,6 @@
1
- import { X as dismissSecretStripNotice, aD as readSecretStripNotice, G as createLogger } from './src-BwQUi60U.js';
2
- import { g as getState } from './state-Dm7U51xT.js';
3
- import { d as getRequestId, l as requireCapability, r as requireAdmin, k as jsonResponse, e as errorResponse } from './helpers-q4Ng8QTq.js';
1
+ import { X as dismissSecretStripNotice, aD as readSecretStripNotice, G as createLogger } from './src-i2v6xhSC.js';
2
+ import { g as getState } from './state-fVG29xFj.js';
3
+ import { d as getRequestId, l as requireCapability, r as requireAdmin, k as jsonResponse, e as errorResponse } from './helpers-XmKveZFr.js';
4
4
  import './provider-constants-1s1k8kbj.js';
5
5
  import './chunk-CLZ62Ad-.js';
6
6
  import 'node:module';
@@ -21,8 +21,8 @@ import 'assert';
21
21
  import 'zlib';
22
22
  import 'node:assert';
23
23
  import 'node:fs/promises';
24
- import './endpoints-B9ePqrMw.js';
25
- import './features-0lgyQreD.js';
24
+ import './endpoints-CuL8lAcu.js';
25
+ import './features-WsEodW5F.js';
26
26
 
27
27
  //#region src/routes/api/host/secret-notice/+server.ts
28
28
  var logger = createLogger("secret-notice");
@@ -65,4 +65,4 @@ var DELETE = async (event) => {
65
65
  };
66
66
 
67
67
  export { DELETE, GET };
68
- //# sourceMappingURL=_server.ts-Dl-Rn5Ku.js.map
68
+ //# sourceMappingURL=_server.ts-DsRKY-Kc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-Dl-Rn5Ku.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/secret-notice/_server.ts.js"],"sourcesContent":["import { N as dismissSecretStripNotice, Nt as createLogger, P as readSecretStripNotice } from \"../../../../../chunks/compose-args.js\";\nimport \"../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../chunks/state.js\";\nimport { a as getRequestId, c as jsonResponse, d as requireCapability, r as errorResponse, u as requireAdmin } from \"../../../../../chunks/helpers.js\";\n//#region src/routes/api/host/secret-notice/+server.ts\nvar logger = createLogger(\"secret-notice\");\n/**\n* #502 — one-time notice that secret-looking keys were removed from stack.env.\n* The strip itself is correct per the secret-boundary contract; this surfaces\n* it so the user knows where their value went and how to re-add it.\n*/\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:secrets\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst state = getState();\n\ttry {\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\tnotice: readSecretStripNotice(state)\n\t\t}, requestId);\n\t} catch (e) {\n\t\treturn errorResponse(500, \"secret_notice_failed\", e instanceof Error ? e.message : String(e), {}, requestId);\n\t}\n};\n/** Dismiss the one-time notice. */\nvar DELETE = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:secrets\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst state = getState();\n\ttry {\n\t\tdismissSecretStripNotice(state);\n\t\tlogger.info(\"secret-strip notice dismissed\", { requestId });\n\t\treturn jsonResponse(200, { ok: true }, requestId);\n\t} catch (e) {\n\t\treturn errorResponse(500, \"secret_notice_dismiss_failed\", e instanceof Error ? e.message : String(e), {}, requestId);\n\t}\n};\n//#endregion\nexport { DELETE, GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;AACA,IAAI,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACG,IAAC,GAAG,GAAG,OAAO,KAAK,KAAK;AAC3B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC;AAC5E,CAAC,IAAI,eAAe,EAAE,OAAO,eAAe;AAC5C,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,MAAM,KAAK,GAAG,QAAQ,EAAE;AACzB,CAAC,IAAI;AACL,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE;AAC3B,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,MAAM,EAAE,qBAAqB,CAAC,KAAK;AACtC,GAAG,EAAE,SAAS,CAAC;AACf,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,sBAAsB,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC;AAC9G,CAAC;AACD;AACA;AACG,IAAC,MAAM,GAAG,OAAO,KAAK,KAAK;AAC9B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC;AAC5E,CAAC,IAAI,eAAe,EAAE,OAAO,eAAe;AAC5C,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,MAAM,KAAK,GAAG,QAAQ,EAAE;AACzB,CAAC,IAAI;AACL,EAAE,wBAAwB,CAAC,KAAK,CAAC;AACjC,EAAE,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,SAAS,EAAE,CAAC;AAC7D,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC;AACnD,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,8BAA8B,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC;AACtH,CAAC;AACD;;;;"}
1
+ {"version":3,"file":"_server.ts-DsRKY-Kc.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/secret-notice/_server.ts.js"],"sourcesContent":["import { N as dismissSecretStripNotice, Nt as createLogger, P as readSecretStripNotice } from \"../../../../../chunks/compose-args.js\";\nimport \"../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../chunks/state.js\";\nimport { a as getRequestId, c as jsonResponse, d as requireCapability, r as errorResponse, u as requireAdmin } from \"../../../../../chunks/helpers.js\";\n//#region src/routes/api/host/secret-notice/+server.ts\nvar logger = createLogger(\"secret-notice\");\n/**\n* #502 — one-time notice that secret-looking keys were removed from stack.env.\n* The strip itself is correct per the secret-boundary contract; this surfaces\n* it so the user knows where their value went and how to re-add it.\n*/\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:secrets\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst state = getState();\n\ttry {\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\tnotice: readSecretStripNotice(state)\n\t\t}, requestId);\n\t} catch (e) {\n\t\treturn errorResponse(500, \"secret_notice_failed\", e instanceof Error ? e.message : String(e), {}, requestId);\n\t}\n};\n/** Dismiss the one-time notice. */\nvar DELETE = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:secrets\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst state = getState();\n\ttry {\n\t\tdismissSecretStripNotice(state);\n\t\tlogger.info(\"secret-strip notice dismissed\", { requestId });\n\t\treturn jsonResponse(200, { ok: true }, requestId);\n\t} catch (e) {\n\t\treturn errorResponse(500, \"secret_notice_dismiss_failed\", e instanceof Error ? e.message : String(e), {}, requestId);\n\t}\n};\n//#endregion\nexport { DELETE, GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;AACA,IAAI,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACG,IAAC,GAAG,GAAG,OAAO,KAAK,KAAK;AAC3B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC;AAC5E,CAAC,IAAI,eAAe,EAAE,OAAO,eAAe;AAC5C,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,MAAM,KAAK,GAAG,QAAQ,EAAE;AACzB,CAAC,IAAI;AACL,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE;AAC3B,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,MAAM,EAAE,qBAAqB,CAAC,KAAK;AACtC,GAAG,EAAE,SAAS,CAAC;AACf,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,sBAAsB,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC;AAC9G,CAAC;AACD;AACA;AACG,IAAC,MAAM,GAAG,OAAO,KAAK,KAAK;AAC9B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC;AAC5E,CAAC,IAAI,eAAe,EAAE,OAAO,eAAe;AAC5C,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,MAAM,KAAK,GAAG,QAAQ,EAAE;AACzB,CAAC,IAAI;AACL,EAAE,wBAAwB,CAAC,KAAK,CAAC;AACjC,EAAE,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,SAAS,EAAE,CAAC;AAC7D,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC;AACnD,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,8BAA8B,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC;AACtH,CAAC;AACD;;;;"}
@@ -1,6 +1,6 @@
1
- import { aE as readStackEnv } from './src-BwQUi60U.js';
2
- import { g as getState } from './state-Dm7U51xT.js';
3
- import { d as getRequestId, r as requireAdmin, e as errorResponse } from './helpers-q4Ng8QTq.js';
1
+ import { aE as readStackEnv } from './src-i2v6xhSC.js';
2
+ import { g as getState } from './state-fVG29xFj.js';
3
+ import { d as getRequestId, r as requireAdmin, e as errorResponse } from './helpers-XmKveZFr.js';
4
4
  import { t as toSpeakableText } from './speakable-text-BflxDDdY.js';
5
5
  import './provider-constants-1s1k8kbj.js';
6
6
  import './chunk-CLZ62Ad-.js';
@@ -22,8 +22,8 @@ import 'assert';
22
22
  import 'zlib';
23
23
  import 'node:assert';
24
24
  import 'node:fs/promises';
25
- import './endpoints-B9ePqrMw.js';
26
- import './features-0lgyQreD.js';
25
+ import './endpoints-CuL8lAcu.js';
26
+ import './features-WsEodW5F.js';
27
27
 
28
28
  //#region src/routes/api/speak/+server.ts
29
29
  var DEFAULT_MODEL = "kokoro";
@@ -93,4 +93,4 @@ var POST = async (event) => {
93
93
  };
94
94
 
95
95
  export { POST };
96
- //# sourceMappingURL=_server.ts-C8eCqXP6.js.map
96
+ //# sourceMappingURL=_server.ts-DtY45qj6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-C8eCqXP6.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/speak/_server.ts.js"],"sourcesContent":["import { X as readStackEnv } from \"../../../../chunks/compose-args.js\";\nimport \"../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../chunks/state.js\";\nimport { a as getRequestId, r as errorResponse, u as requireAdmin } from \"../../../../chunks/helpers.js\";\nimport { t as toSpeakableText } from \"../../../../chunks/speakable-text.js\";\n//#region src/routes/api/speak/+server.ts\nvar DEFAULT_MODEL = \"kokoro\";\nvar DEFAULT_VOICE = \"bf_isabella\";\nvar DEFAULT_FORMAT = \"wav\";\nvar UPSTREAM_TIMEOUT_MS = 6e4;\nfunction redactKey(s) {\n\treturn s.replace(/(sk-[A-Za-z0-9_-]{4,})/g, \"sk-***\").replace(/(Bearer\\s+)[A-Za-z0-9._-]+/gi, \"$1***\");\n}\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst stackEnv = readStackEnv(getState().homeDir);\n\tconst ttsBaseURL = (stackEnv.OP_TTS_BASE_URL || process.env.OP_TTS_BASE_URL || \"\").trim();\n\tconst ttsModel = (stackEnv.OP_TTS_MODEL || process.env.OP_TTS_MODEL || \"\").trim() || DEFAULT_MODEL;\n\tconst ttsVoice = (stackEnv.OP_TTS_VOICE || process.env.OP_TTS_VOICE || \"\").trim() || DEFAULT_VOICE;\n\tconst ttsApiKey = (process.env.OP_TTS_API_KEY ?? \"\").trim();\n\tif (!ttsBaseURL) return errorResponse(503, \"tts_not_configured\", \"Configure a TTS engine in Admin → Voice settings.\", {}, requestId);\n\tlet body;\n\ttry {\n\t\tbody = await event.request.json();\n\t} catch {\n\t\treturn errorResponse(400, \"bad_request\", \"Invalid JSON body\", {}, requestId);\n\t}\n\tconst b = body ?? {};\n\tconst text = typeof b.text === \"string\" ? b.text.trim() : \"\";\n\tif (!text) return errorResponse(400, \"bad_request\", \"\\\"text\\\" is required\", {}, requestId);\n\tconst voice = typeof b.voice === \"string\" && b.voice.trim() ? b.voice.trim() : ttsVoice;\n\tconst format = typeof b.format === \"string\" && b.format.trim() ? b.format.trim() : DEFAULT_FORMAT;\n\tconst speechText = toSpeakableText(text);\n\tconst upstreamUrl = `${ttsBaseURL.replace(/\\/+$/, \"\")}/v1/audio/speech`;\n\tconst headers = { \"content-type\": \"application/json\" };\n\tif (ttsApiKey) headers.authorization = `Bearer ${ttsApiKey}`;\n\tlet upstream;\n\ttry {\n\t\tupstream = await fetch(upstreamUrl, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tbody: JSON.stringify({\n\t\t\t\tmodel: ttsModel,\n\t\t\t\tvoice,\n\t\t\t\tinput: speechText,\n\t\t\t\tresponse_format: format\n\t\t\t}),\n\t\t\tsignal: AbortSignal.timeout(UPSTREAM_TIMEOUT_MS)\n\t\t});\n\t} catch (err) {\n\t\treturn errorResponse(502, \"upstream_error\", `Could not reach TTS endpoint: ${redactKey(err instanceof Error ? err.message : String(err))}`, { upstream: upstreamUrl }, requestId);\n\t}\n\tif (!upstream.ok) {\n\t\tconst body = await upstream.text().catch(() => \"\");\n\t\treturn errorResponse(502, \"upstream_error\", `TTS endpoint returned ${upstream.status}`, {\n\t\t\tupstreamStatus: upstream.status,\n\t\t\tbody: redactKey(body).slice(0, 500)\n\t\t}, requestId);\n\t}\n\tconst responseHeaders = new Headers();\n\tresponseHeaders.set(\"content-type\", upstream.headers.get(\"content-type\") ?? \"audio/wav\");\n\tconst contentLength = upstream.headers.get(\"content-length\");\n\tif (contentLength) responseHeaders.set(\"content-length\", contentLength);\n\tresponseHeaders.set(\"x-request-id\", requestId);\n\treturn new Response(upstream.body, {\n\t\tstatus: 200,\n\t\theaders: responseHeaders\n\t});\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_server.ts-DtY45qj6.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/speak/_server.ts.js"],"sourcesContent":["import { X as readStackEnv } from \"../../../../chunks/compose-args.js\";\nimport \"../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../chunks/state.js\";\nimport { a as getRequestId, r as errorResponse, u as requireAdmin } from \"../../../../chunks/helpers.js\";\nimport { t as toSpeakableText } from \"../../../../chunks/speakable-text.js\";\n//#region src/routes/api/speak/+server.ts\nvar DEFAULT_MODEL = \"kokoro\";\nvar DEFAULT_VOICE = \"bf_isabella\";\nvar DEFAULT_FORMAT = \"wav\";\nvar UPSTREAM_TIMEOUT_MS = 6e4;\nfunction redactKey(s) {\n\treturn s.replace(/(sk-[A-Za-z0-9_-]{4,})/g, \"sk-***\").replace(/(Bearer\\s+)[A-Za-z0-9._-]+/gi, \"$1***\");\n}\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst stackEnv = readStackEnv(getState().homeDir);\n\tconst ttsBaseURL = (stackEnv.OP_TTS_BASE_URL || process.env.OP_TTS_BASE_URL || \"\").trim();\n\tconst ttsModel = (stackEnv.OP_TTS_MODEL || process.env.OP_TTS_MODEL || \"\").trim() || DEFAULT_MODEL;\n\tconst ttsVoice = (stackEnv.OP_TTS_VOICE || process.env.OP_TTS_VOICE || \"\").trim() || DEFAULT_VOICE;\n\tconst ttsApiKey = (process.env.OP_TTS_API_KEY ?? \"\").trim();\n\tif (!ttsBaseURL) return errorResponse(503, \"tts_not_configured\", \"Configure a TTS engine in Admin → Voice settings.\", {}, requestId);\n\tlet body;\n\ttry {\n\t\tbody = await event.request.json();\n\t} catch {\n\t\treturn errorResponse(400, \"bad_request\", \"Invalid JSON body\", {}, requestId);\n\t}\n\tconst b = body ?? {};\n\tconst text = typeof b.text === \"string\" ? b.text.trim() : \"\";\n\tif (!text) return errorResponse(400, \"bad_request\", \"\\\"text\\\" is required\", {}, requestId);\n\tconst voice = typeof b.voice === \"string\" && b.voice.trim() ? b.voice.trim() : ttsVoice;\n\tconst format = typeof b.format === \"string\" && b.format.trim() ? b.format.trim() : DEFAULT_FORMAT;\n\tconst speechText = toSpeakableText(text);\n\tconst upstreamUrl = `${ttsBaseURL.replace(/\\/+$/, \"\")}/v1/audio/speech`;\n\tconst headers = { \"content-type\": \"application/json\" };\n\tif (ttsApiKey) headers.authorization = `Bearer ${ttsApiKey}`;\n\tlet upstream;\n\ttry {\n\t\tupstream = await fetch(upstreamUrl, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tbody: JSON.stringify({\n\t\t\t\tmodel: ttsModel,\n\t\t\t\tvoice,\n\t\t\t\tinput: speechText,\n\t\t\t\tresponse_format: format\n\t\t\t}),\n\t\t\tsignal: AbortSignal.timeout(UPSTREAM_TIMEOUT_MS)\n\t\t});\n\t} catch (err) {\n\t\treturn errorResponse(502, \"upstream_error\", `Could not reach TTS endpoint: ${redactKey(err instanceof Error ? err.message : String(err))}`, { upstream: upstreamUrl }, requestId);\n\t}\n\tif (!upstream.ok) {\n\t\tconst body = await upstream.text().catch(() => \"\");\n\t\treturn errorResponse(502, \"upstream_error\", `TTS endpoint returned ${upstream.status}`, {\n\t\t\tupstreamStatus: upstream.status,\n\t\t\tbody: redactKey(body).slice(0, 500)\n\t\t}, requestId);\n\t}\n\tconst responseHeaders = new Headers();\n\tresponseHeaders.set(\"content-type\", upstream.headers.get(\"content-type\") ?? \"audio/wav\");\n\tconst contentLength = upstream.headers.get(\"content-length\");\n\tif (contentLength) responseHeaders.set(\"content-length\", contentLength);\n\tresponseHeaders.set(\"x-request-id\", requestId);\n\treturn new Response(upstream.body, {\n\t\tstatus: 200,\n\t\theaders: responseHeaders\n\t});\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { W as disableHostAkmSharing, a9 as getHostAkmSharingStatus, Z as enableHostAkmSharing } from './src-BwQUi60U.js';
2
- import { g as getState } from './state-Dm7U51xT.js';
3
- import { d as getRequestId, l as requireCapability, r as requireAdmin, k as jsonResponse } from './helpers-q4Ng8QTq.js';
1
+ import { W as disableHostAkmSharing, a9 as getHostAkmSharingStatus, Z as enableHostAkmSharing } from './src-i2v6xhSC.js';
2
+ import { g as getState } from './state-fVG29xFj.js';
3
+ import { d as getRequestId, l as requireCapability, r as requireAdmin, k as jsonResponse } from './helpers-XmKveZFr.js';
4
4
  import './provider-constants-1s1k8kbj.js';
5
5
  import './chunk-CLZ62Ad-.js';
6
6
  import 'node:module';
@@ -21,8 +21,8 @@ import 'assert';
21
21
  import 'zlib';
22
22
  import 'node:assert';
23
23
  import 'node:fs/promises';
24
- import './endpoints-B9ePqrMw.js';
25
- import './features-0lgyQreD.js';
24
+ import './endpoints-CuL8lAcu.js';
25
+ import './features-WsEodW5F.js';
26
26
 
27
27
  //#region src/routes/api/host/akm/host-sharing/+server.ts
28
28
  var GET = async (event) => {
@@ -58,4 +58,4 @@ var DELETE = async (event) => {
58
58
  };
59
59
 
60
60
  export { DELETE, GET, PUT };
61
- //# sourceMappingURL=_server.ts-2Z0JYuCr.js.map
61
+ //# sourceMappingURL=_server.ts-DxbCMYot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-2Z0JYuCr.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/akm/host-sharing/_server.ts.js"],"sourcesContent":["import { C as enableHostAkmSharing, S as disableHostAkmSharing, w as getHostAkmSharingStatus } from \"../../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../../chunks/state.js\";\nimport { a as getRequestId, c as jsonResponse, d as requireCapability, u as requireAdmin } from \"../../../../../../chunks/helpers.js\";\n//#region src/routes/api/host/akm/host-sharing/+server.ts\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:akm-sharing\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\treturn jsonResponse(200, getHostAkmSharingStatus(getState()), requestId);\n};\nvar PUT = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:akm-sharing\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst state = getState();\n\tconst { profilesImported } = enableHostAkmSharing(state);\n\treturn jsonResponse(200, {\n\t\t...getHostAkmSharingStatus(state),\n\t\tprofilesImported\n\t}, requestId);\n};\nvar DELETE = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:akm-sharing\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst state = getState();\n\tdisableHostAkmSharing(state);\n\treturn jsonResponse(200, getHostAkmSharingStatus(state), requestId);\n};\n//#endregion\nexport { DELETE, GET, PUT };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACG,IAAC,GAAG,GAAG,OAAO,KAAK,KAAK;AAC3B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAChF,CAAC,IAAI,eAAe,EAAE,OAAO,eAAe;AAC5C,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,OAAO,YAAY,CAAC,GAAG,EAAE,uBAAuB,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC;AACzE;AACG,IAAC,GAAG,GAAG,OAAO,KAAK,KAAK;AAC3B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAChF,CAAC,IAAI,eAAe,EAAE,OAAO,eAAe;AAC5C,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,MAAM,KAAK,GAAG,QAAQ,EAAE;AACzB,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,oBAAoB,CAAC,KAAK,CAAC;AACzD,CAAC,OAAO,YAAY,CAAC,GAAG,EAAE;AAC1B,EAAE,GAAG,uBAAuB,CAAC,KAAK,CAAC;AACnC,EAAE;AACF,EAAE,EAAE,SAAS,CAAC;AACd;AACG,IAAC,MAAM,GAAG,OAAO,KAAK,KAAK;AAC9B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAChF,CAAC,IAAI,eAAe,EAAE,OAAO,eAAe;AAC5C,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,MAAM,KAAK,GAAG,QAAQ,EAAE;AACzB,CAAC,qBAAqB,CAAC,KAAK,CAAC;AAC7B,CAAC,OAAO,YAAY,CAAC,GAAG,EAAE,uBAAuB,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;AACpE;;;;"}
1
+ {"version":3,"file":"_server.ts-DxbCMYot.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/akm/host-sharing/_server.ts.js"],"sourcesContent":["import { C as enableHostAkmSharing, S as disableHostAkmSharing, w as getHostAkmSharingStatus } from \"../../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../../chunks/state.js\";\nimport { a as getRequestId, c as jsonResponse, d as requireCapability, u as requireAdmin } from \"../../../../../../chunks/helpers.js\";\n//#region src/routes/api/host/akm/host-sharing/+server.ts\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:akm-sharing\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\treturn jsonResponse(200, getHostAkmSharingStatus(getState()), requestId);\n};\nvar PUT = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:akm-sharing\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst state = getState();\n\tconst { profilesImported } = enableHostAkmSharing(state);\n\treturn jsonResponse(200, {\n\t\t...getHostAkmSharingStatus(state),\n\t\tprofilesImported\n\t}, requestId);\n};\nvar DELETE = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:akm-sharing\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst state = getState();\n\tdisableHostAkmSharing(state);\n\treturn jsonResponse(200, getHostAkmSharingStatus(state), requestId);\n};\n//#endregion\nexport { DELETE, GET, PUT };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACG,IAAC,GAAG,GAAG,OAAO,KAAK,KAAK;AAC3B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAChF,CAAC,IAAI,eAAe,EAAE,OAAO,eAAe;AAC5C,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,OAAO,YAAY,CAAC,GAAG,EAAE,uBAAuB,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC;AACzE;AACG,IAAC,GAAG,GAAG,OAAO,KAAK,KAAK;AAC3B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAChF,CAAC,IAAI,eAAe,EAAE,OAAO,eAAe;AAC5C,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,MAAM,KAAK,GAAG,QAAQ,EAAE;AACzB,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,oBAAoB,CAAC,KAAK,CAAC;AACzD,CAAC,OAAO,YAAY,CAAC,GAAG,EAAE;AAC1B,EAAE,GAAG,uBAAuB,CAAC,KAAK,CAAC;AACnC,EAAE;AACF,EAAE,EAAE,SAAS,CAAC;AACd;AACG,IAAC,MAAM,GAAG,OAAO,KAAK,KAAK;AAC9B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAChF,CAAC,IAAI,eAAe,EAAE,OAAO,eAAe;AAC5C,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,MAAM,KAAK,GAAG,QAAQ,EAAE;AACzB,CAAC,qBAAqB,CAAC,KAAK,CAAC;AAC7B,CAAC,OAAO,YAAY,CAAC,GAAG,EAAE,uBAAuB,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;AACpE;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { j as json } from './exports-CcmcYU0M.js';
2
- import { g as getOpenCodeClient } from './helpers-q4Ng8QTq.js';
2
+ import { g as getOpenCodeClient } from './helpers-XmKveZFr.js';
3
3
  import './utils-OXHIhUb5.js';
4
- import './src-BwQUi60U.js';
4
+ import './src-i2v6xhSC.js';
5
5
  import './provider-constants-1s1k8kbj.js';
6
6
  import './chunk-CLZ62Ad-.js';
7
7
  import 'node:module';
@@ -22,9 +22,9 @@ import 'assert';
22
22
  import 'zlib';
23
23
  import 'node:assert';
24
24
  import 'node:fs/promises';
25
- import './endpoints-B9ePqrMw.js';
26
- import './state-Dm7U51xT.js';
27
- import './features-0lgyQreD.js';
25
+ import './endpoints-CuL8lAcu.js';
26
+ import './state-fVG29xFj.js';
27
+ import './features-WsEodW5F.js';
28
28
 
29
29
  //#region src/routes/api/setup/opencode/provider/[provider]/oauth/callback/+server.ts
30
30
  var PROVIDER_ID_RE = /^[a-zA-Z0-9_-]{1,64}$/;
@@ -55,4 +55,4 @@ var POST = async ({ params, request }) => {
55
55
  };
56
56
 
57
57
  export { POST };
58
- //# sourceMappingURL=_server.ts-42ZGRWhn.js.map
58
+ //# sourceMappingURL=_server.ts-DzO2o8u_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-42ZGRWhn.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/setup/opencode/provider/_provider_/oauth/callback/_server.ts.js"],"sourcesContent":["import { r as json } from \"../../../../../../../../../chunks/exports.js\";\nimport { i as getOpenCodeClient } from \"../../../../../../../../../chunks/helpers.js\";\n//#region src/routes/api/setup/opencode/provider/[provider]/oauth/callback/+server.ts\nvar PROVIDER_ID_RE = /^[a-zA-Z0-9_-]{1,64}$/;\nvar POST = async ({ params, request }) => {\n\tif (!PROVIDER_ID_RE.test(params.provider)) return json({\n\t\tok: false,\n\t\tmessage: \"Invalid provider\"\n\t}, { status: 400 });\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst method = Number.isInteger(body.method) ? body.method : 0;\n\t\tconst code = typeof body.code === \"string\" ? body.code.slice(0, 1024) : void 0;\n\t\tconst result = await getOpenCodeClient().completeProviderOAuth(params.provider, method, code);\n\t\tif (!result.ok) return json({\n\t\t\tok: false,\n\t\t\tmessage: \"OAuth callback failed\"\n\t\t}, { status: 400 });\n\t\treturn json({\n\t\t\tok: true,\n\t\t\tcomplete: result.data\n\t\t});\n\t} catch {\n\t\treturn json({\n\t\t\tok: false,\n\t\t\tmessage: \"OAuth callback failed\"\n\t\t}, { status: 500 });\n\t}\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA,IAAI,cAAc,GAAG,uBAAuB;AACzC,IAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AAC1C,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI,CAAC;AACxD,EAAE,EAAE,EAAE,KAAK;AACX,EAAE,OAAO,EAAE;AACX,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACpB,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACnC,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;AAChE,EAAE,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;AAChF,EAAE,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;AAC/F,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC;AAC9B,GAAG,EAAE,EAAE,KAAK;AACZ,GAAG,OAAO,EAAE;AACZ,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACrB,EAAE,OAAO,IAAI,CAAC;AACd,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,QAAQ,EAAE,MAAM,CAAC;AACpB,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI,CAAC;AACd,GAAG,EAAE,EAAE,KAAK;AACZ,GAAG,OAAO,EAAE;AACZ,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACrB,CAAC;AACD;;;;"}
1
+ {"version":3,"file":"_server.ts-DzO2o8u_.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/setup/opencode/provider/_provider_/oauth/callback/_server.ts.js"],"sourcesContent":["import { r as json } from \"../../../../../../../../../chunks/exports.js\";\nimport { i as getOpenCodeClient } from \"../../../../../../../../../chunks/helpers.js\";\n//#region src/routes/api/setup/opencode/provider/[provider]/oauth/callback/+server.ts\nvar PROVIDER_ID_RE = /^[a-zA-Z0-9_-]{1,64}$/;\nvar POST = async ({ params, request }) => {\n\tif (!PROVIDER_ID_RE.test(params.provider)) return json({\n\t\tok: false,\n\t\tmessage: \"Invalid provider\"\n\t}, { status: 400 });\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst method = Number.isInteger(body.method) ? body.method : 0;\n\t\tconst code = typeof body.code === \"string\" ? body.code.slice(0, 1024) : void 0;\n\t\tconst result = await getOpenCodeClient().completeProviderOAuth(params.provider, method, code);\n\t\tif (!result.ok) return json({\n\t\t\tok: false,\n\t\t\tmessage: \"OAuth callback failed\"\n\t\t}, { status: 400 });\n\t\treturn json({\n\t\t\tok: true,\n\t\t\tcomplete: result.data\n\t\t});\n\t} catch {\n\t\treturn json({\n\t\t\tok: false,\n\t\t\tmessage: \"OAuth callback failed\"\n\t\t}, { status: 500 });\n\t}\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA,IAAI,cAAc,GAAG,uBAAuB;AACzC,IAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AAC1C,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI,CAAC;AACxD,EAAE,EAAE,EAAE,KAAK;AACX,EAAE,OAAO,EAAE;AACX,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACpB,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACnC,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;AAChE,EAAE,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;AAChF,EAAE,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;AAC/F,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC;AAC9B,GAAG,EAAE,EAAE,KAAK;AACZ,GAAG,OAAO,EAAE;AACZ,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACrB,EAAE,OAAO,IAAI,CAAC;AACd,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,QAAQ,EAAE,MAAM,CAAC;AACpB,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI,CAAC;AACd,GAAG,EAAE,EAAE,KAAK;AACZ,GAAG,OAAO,EAAE;AACZ,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACrB,CAAC;AACD;;;;"}
@@ -1,6 +1,6 @@
1
- import { aO as removeSecretFile, aC as readSecretFile, b7 as writeSecretFile, h as assertSafeSecretFilename } from './src-BwQUi60U.js';
2
- import { g as getState } from './state-Dm7U51xT.js';
3
- import { d as getRequestId, l as requireCapability, r as requireAdmin, k as jsonResponse, e as errorResponse, p as parseJsonBody, j as jsonBodyError } from './helpers-q4Ng8QTq.js';
1
+ import { aO as removeSecretFile, aC as readSecretFile, b7 as writeSecretFile, h as assertSafeSecretFilename } from './src-i2v6xhSC.js';
2
+ import { g as getState } from './state-fVG29xFj.js';
3
+ import { d as getRequestId, l as requireCapability, r as requireAdmin, k as jsonResponse, e as errorResponse, p as parseJsonBody, j as jsonBodyError } from './helpers-XmKveZFr.js';
4
4
  import './provider-constants-1s1k8kbj.js';
5
5
  import './chunk-CLZ62Ad-.js';
6
6
  import 'node:module';
@@ -21,8 +21,8 @@ import 'assert';
21
21
  import 'zlib';
22
22
  import 'node:assert';
23
23
  import 'node:fs/promises';
24
- import './endpoints-B9ePqrMw.js';
25
- import './features-0lgyQreD.js';
24
+ import './endpoints-CuL8lAcu.js';
25
+ import './features-WsEodW5F.js';
26
26
 
27
27
  //#region src/routes/api/host/secrets/[name]/+server.ts
28
28
  function guardName(name, requestId) {
@@ -85,4 +85,4 @@ var DELETE = async (event) => {
85
85
  };
86
86
 
87
87
  export { DELETE, GET, PUT };
88
- //# sourceMappingURL=_server.ts-DdHx6Xig.js.map
88
+ //# sourceMappingURL=_server.ts-G80g1-Vi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-DdHx6Xig.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/secrets/_name_/_server.ts.js"],"sourcesContent":["import { ct as writeSecretFile, ot as readSecretFile, rt as assertSafeSecretFilename, st as removeSecretFile } from \"../../../../../../chunks/compose-args.js\";\nimport \"../../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../../chunks/state.js\";\nimport { a as getRequestId, c as jsonResponse, d as requireCapability, l as parseJsonBody, r as errorResponse, s as jsonBodyError, u as requireAdmin } from \"../../../../../../chunks/helpers.js\";\n//#region src/routes/api/host/secrets/[name]/+server.ts\nfunction guardName(name, requestId) {\n\ttry {\n\t\tassertSafeSecretFilename(name);\n\t\treturn null;\n\t} catch (err) {\n\t\treturn errorResponse(400, \"bad_request\", err.message, {}, requestId);\n\t}\n}\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:secrets\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst name = event.params.name;\n\tconst bad = guardName(name, requestId);\n\tif (bad) return bad;\n\tconst value = readSecretFile(getState().homeDir, name);\n\tif (value === null) return errorResponse(404, \"not_found\", `Secret file not found: ${name}`, {}, requestId);\n\treturn jsonResponse(200, {\n\t\tname,\n\t\tvalue\n\t}, requestId);\n};\nvar PUT = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:secrets\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst name = event.params.name;\n\tconst bad = guardName(name, requestId);\n\tif (bad) return bad;\n\tconst result = await parseJsonBody(event.request);\n\tif (\"error\" in result) return jsonBodyError(result, requestId);\n\tconst value = result.data.value;\n\tif (typeof value !== \"string\") return errorResponse(400, \"bad_request\", \"value must be a string\", {}, requestId);\n\twriteSecretFile(getState().homeDir, name, value);\n\treturn jsonResponse(200, {\n\t\tok: true,\n\t\tname\n\t}, requestId);\n};\nvar DELETE = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:secrets\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst name = event.params.name;\n\tconst bad = guardName(name, requestId);\n\tif (bad) return bad;\n\tremoveSecretFile(getState().homeDir, name);\n\treturn jsonResponse(200, {\n\t\tok: true,\n\t\tname\n\t}, requestId);\n};\n//#endregion\nexport { DELETE, GET, PUT };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_server.ts-G80g1-Vi.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/secrets/_name_/_server.ts.js"],"sourcesContent":["import { ct as writeSecretFile, ot as readSecretFile, rt as assertSafeSecretFilename, st as removeSecretFile } from \"../../../../../../chunks/compose-args.js\";\nimport \"../../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../../chunks/state.js\";\nimport { a as getRequestId, c as jsonResponse, d as requireCapability, l as parseJsonBody, r as errorResponse, s as jsonBodyError, u as requireAdmin } from \"../../../../../../chunks/helpers.js\";\n//#region src/routes/api/host/secrets/[name]/+server.ts\nfunction guardName(name, requestId) {\n\ttry {\n\t\tassertSafeSecretFilename(name);\n\t\treturn null;\n\t} catch (err) {\n\t\treturn errorResponse(400, \"bad_request\", err.message, {}, requestId);\n\t}\n}\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:secrets\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst name = event.params.name;\n\tconst bad = guardName(name, requestId);\n\tif (bad) return bad;\n\tconst value = readSecretFile(getState().homeDir, name);\n\tif (value === null) return errorResponse(404, \"not_found\", `Secret file not found: ${name}`, {}, requestId);\n\treturn jsonResponse(200, {\n\t\tname,\n\t\tvalue\n\t}, requestId);\n};\nvar PUT = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:secrets\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst name = event.params.name;\n\tconst bad = guardName(name, requestId);\n\tif (bad) return bad;\n\tconst result = await parseJsonBody(event.request);\n\tif (\"error\" in result) return jsonBodyError(result, requestId);\n\tconst value = result.data.value;\n\tif (typeof value !== \"string\") return errorResponse(400, \"bad_request\", \"value must be a string\", {}, requestId);\n\twriteSecretFile(getState().homeDir, name, value);\n\treturn jsonResponse(200, {\n\t\tok: true,\n\t\tname\n\t}, requestId);\n};\nvar DELETE = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:secrets\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst name = event.params.name;\n\tconst bad = guardName(name, requestId);\n\tif (bad) return bad;\n\tremoveSecretFile(getState().homeDir, name);\n\treturn jsonResponse(200, {\n\t\tok: true,\n\t\tname\n\t}, requestId);\n};\n//#endregion\nexport { DELETE, GET, PUT };\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { b1 as summarizeBackups, al as listBackupDirs, aw as pruneBackupDirs, G as createLogger } from './src-BwQUi60U.js';
2
- import { g as getState } from './state-Dm7U51xT.js';
3
- import { d as getRequestId, l as requireCapability, r as requireAdmin, k as jsonResponse, e as errorResponse } from './helpers-q4Ng8QTq.js';
1
+ import { b1 as summarizeBackups, al as listBackupDirs, aw as pruneBackupDirs, G as createLogger } from './src-i2v6xhSC.js';
2
+ import { g as getState } from './state-fVG29xFj.js';
3
+ import { d as getRequestId, l as requireCapability, r as requireAdmin, k as jsonResponse, e as errorResponse } from './helpers-XmKveZFr.js';
4
4
  import './provider-constants-1s1k8kbj.js';
5
5
  import './chunk-CLZ62Ad-.js';
6
6
  import 'node:module';
@@ -21,8 +21,8 @@ import 'assert';
21
21
  import 'zlib';
22
22
  import 'node:assert';
23
23
  import 'node:fs/promises';
24
- import './endpoints-B9ePqrMw.js';
25
- import './features-0lgyQreD.js';
24
+ import './endpoints-CuL8lAcu.js';
25
+ import './features-WsEodW5F.js';
26
26
 
27
27
  //#region src/routes/api/host/backups/+server.ts
28
28
  var logger = createLogger("backups-admin");
@@ -90,4 +90,4 @@ var POST = async (event) => {
90
90
  };
91
91
 
92
92
  export { GET, POST };
93
- //# sourceMappingURL=_server.ts-2-50j5S8.js.map
93
+ //# sourceMappingURL=_server.ts-RjE7mkg4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-2-50j5S8.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/backups/_server.ts.js"],"sourcesContent":["import { At as pruneBackupDirs, Nt as createLogger, jt as summarizeBackups, kt as listBackupDirs } from \"../../../../../chunks/compose-args.js\";\nimport \"../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../chunks/state.js\";\nimport { a as getRequestId, c as jsonResponse, d as requireCapability, r as errorResponse, u as requireAdmin } from \"../../../../../chunks/helpers.js\";\n//#region src/routes/api/host/backups/+server.ts\nvar logger = createLogger(\"backups-admin\");\n/**\n* #499 — backup visibility. Returns count, total size, last-backup time and a\n* per-backup list (newest first) so the UI can surface the recovery net.\n* Read-only.\n*/\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:recovery\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst state = getState();\n\ttry {\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\t...summarizeBackups(state.homeDir)\n\t\t}, requestId);\n\t} catch (e) {\n\t\treturn errorResponse(500, \"backups_list_failed\", e instanceof Error ? e.message : String(e), {}, requestId);\n\t}\n};\n/**\n* #499 — drives the EXISTING confirm-gated prune. The UI must pass an explicit\n* `keep` count (the confirmation is the UI's modal); this NEVER auto-prunes and\n* keeps the newest `keep` snapshots, deleting only the older ones.\n*/\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:recovery\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tlet body;\n\ttry {\n\t\tbody = await event.request.json();\n\t} catch {\n\t\tbody = {};\n\t}\n\tconst keep = Number(body.keep);\n\tif (!Number.isInteger(keep) || keep < 0) return errorResponse(400, \"invalid_keep\", \"`keep` must be a non-negative integer\", {}, requestId);\n\tconst state = getState();\n\ttry {\n\t\tif (listBackupDirs(state.homeDir).slice(keep).length === 0) return jsonResponse(200, {\n\t\t\tok: true,\n\t\t\tdeleted: [],\n\t\t\tkept: keep\n\t\t}, requestId);\n\t\tconst deleted = pruneBackupDirs(state.homeDir, keep);\n\t\tlogger.info(\"pruned backups via admin\", {\n\t\t\trequestId,\n\t\t\tdeleted: deleted.length,\n\t\t\tkept: keep\n\t\t});\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\tdeleted,\n\t\t\tkept: keep\n\t\t}, requestId);\n\t} catch (e) {\n\t\treturn errorResponse(500, \"backups_prune_failed\", e instanceof Error ? e.message : String(e), {}, requestId);\n\t}\n};\n//#endregion\nexport { GET, POST };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_server.ts-RjE7mkg4.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/backups/_server.ts.js"],"sourcesContent":["import { At as pruneBackupDirs, Nt as createLogger, jt as summarizeBackups, kt as listBackupDirs } from \"../../../../../chunks/compose-args.js\";\nimport \"../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../chunks/state.js\";\nimport { a as getRequestId, c as jsonResponse, d as requireCapability, r as errorResponse, u as requireAdmin } from \"../../../../../chunks/helpers.js\";\n//#region src/routes/api/host/backups/+server.ts\nvar logger = createLogger(\"backups-admin\");\n/**\n* #499 — backup visibility. Returns count, total size, last-backup time and a\n* per-backup list (newest first) so the UI can surface the recovery net.\n* Read-only.\n*/\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:recovery\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst state = getState();\n\ttry {\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\t...summarizeBackups(state.homeDir)\n\t\t}, requestId);\n\t} catch (e) {\n\t\treturn errorResponse(500, \"backups_list_failed\", e instanceof Error ? e.message : String(e), {}, requestId);\n\t}\n};\n/**\n* #499 — drives the EXISTING confirm-gated prune. The UI must pass an explicit\n* `keep` count (the confirmation is the UI's modal); this NEVER auto-prunes and\n* keeps the newest `keep` snapshots, deleting only the older ones.\n*/\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:recovery\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tlet body;\n\ttry {\n\t\tbody = await event.request.json();\n\t} catch {\n\t\tbody = {};\n\t}\n\tconst keep = Number(body.keep);\n\tif (!Number.isInteger(keep) || keep < 0) return errorResponse(400, \"invalid_keep\", \"`keep` must be a non-negative integer\", {}, requestId);\n\tconst state = getState();\n\ttry {\n\t\tif (listBackupDirs(state.homeDir).slice(keep).length === 0) return jsonResponse(200, {\n\t\t\tok: true,\n\t\t\tdeleted: [],\n\t\t\tkept: keep\n\t\t}, requestId);\n\t\tconst deleted = pruneBackupDirs(state.homeDir, keep);\n\t\tlogger.info(\"pruned backups via admin\", {\n\t\t\trequestId,\n\t\t\tdeleted: deleted.length,\n\t\t\tkept: keep\n\t\t});\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\tdeleted,\n\t\t\tkept: keep\n\t\t}, requestId);\n\t} catch (e) {\n\t\treturn errorResponse(500, \"backups_prune_failed\", e instanceof Error ? e.message : String(e), {}, requestId);\n\t}\n};\n//#endregion\nexport { GET, POST };\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { aW as runAssistantAkmCommand } from './src-BwQUi60U.js';
2
- import { g as getState } from './state-Dm7U51xT.js';
3
- import { d as getRequestId, l as requireCapability, r as requireAdmin } from './helpers-q4Ng8QTq.js';
1
+ import { aW as runAssistantAkmCommand } from './src-i2v6xhSC.js';
2
+ import { g as getState } from './state-fVG29xFj.js';
3
+ import { d as getRequestId, l as requireCapability, r as requireAdmin } from './helpers-XmKveZFr.js';
4
4
  import './provider-constants-1s1k8kbj.js';
5
5
  import './chunk-CLZ62Ad-.js';
6
6
  import 'node:module';
@@ -21,8 +21,8 @@ import 'assert';
21
21
  import 'zlib';
22
22
  import 'node:assert';
23
23
  import 'node:fs/promises';
24
- import './endpoints-B9ePqrMw.js';
25
- import './features-0lgyQreD.js';
24
+ import './endpoints-CuL8lAcu.js';
25
+ import './features-WsEodW5F.js';
26
26
 
27
27
  //#region src/lib/server/akm-health-report.ts
28
28
  var AKM_HEALTH_REPORT_WINDOWS = [
@@ -104,4 +104,4 @@ var GET = async (event) => {
104
104
  };
105
105
 
106
106
  export { GET };
107
- //# sourceMappingURL=_server.ts-Ba8xSIQn.js.map
107
+ //# sourceMappingURL=_server.ts-SqpxZ5hM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-Ba8xSIQn.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/akm/health-report/_server.ts.js"],"sourcesContent":["import { a as runAssistantAkmCommand } from \"../../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../../chunks/state.js\";\nimport { a as getRequestId, d as requireCapability, u as requireAdmin } from \"../../../../../../chunks/helpers.js\";\n//#region src/lib/server/akm-health-report.ts\nvar AKM_HEALTH_REPORT_WINDOWS = [\n\t\"24h\",\n\t\"72h\",\n\t\"7d\",\n\t\"14d\",\n\t\"30d\"\n];\nfunction clampWindow(value) {\n\treturn AKM_HEALTH_REPORT_WINDOWS.includes(value ?? \"\") ? value : \"72h\";\n}\nfunction errorHtml(window, missing, detail) {\n\treturn `<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><title>AKM Health Report</title><style>body{margin:0;font-family:Inter,system-ui,sans-serif;background:#07111f;color:#e5eefc;padding:24px}main{max-width:860px;margin:0 auto;background:#101b2d;border:1px solid rgba(148,163,184,.18);border-radius:18px;padding:24px}pre{white-space:pre-wrap;background:#15233a;padding:16px;border-radius:12px;overflow:auto}code{font-family:ui-monospace,SFMono-Regular,monospace}</style></head><body><main><h1>${missing ? \"AKM is not available\" : \"AKM health report unavailable\"}</h1><p>${missing ? \"The <code>akm</code> CLI was not found in the running assistant container.\" : `The admin UI could not build the report from <code>akm health</code> for window <code>${window}</code>.`}</p>${detail ? `<pre>${detail.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\")}</pre>` : \"\"}</main></body></html>`;\n}\nasync function buildAkmHealthReport(state, requestedWindow) {\n\tconst window = clampWindow(requestedWindow);\n\tconst result = await runAssistantAkmCommand(state, [\n\t\t\"health\",\n\t\t`--since=${window}`,\n\t\t\"--format\",\n\t\t\"html\"\n\t], 3e4);\n\tif (result.missing) return {\n\t\twindow,\n\t\thtml: errorHtml(window, true, \"\")\n\t};\n\tif (!result.ok || !result.stdout.trim()) return {\n\t\twindow,\n\t\thtml: errorHtml(window, false, [result.stderr.trim(), result.stdout.trim()].filter(Boolean).join(\"\\n\\n\"))\n\t};\n\treturn {\n\t\thtml: result.stdout,\n\t\twindow\n\t};\n}\n//#endregion\n//#region src/routes/api/host/akm/health-report/+server.ts\nvar REPORT_CSP = [\n\t\"default-src 'none'\",\n\t\"script-src 'self' 'unsafe-inline'\",\n\t\"style-src 'unsafe-inline'\",\n\t\"img-src 'self' data:\",\n\t\"font-src 'self' data:\",\n\t\"connect-src 'none'\",\n\t\"object-src 'none'\",\n\t\"base-uri 'none'\",\n\t\"form-action 'none'\",\n\t\"frame-ancestors 'self'\"\n].join(\"; \");\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:containers\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst denied = requireAdmin(event, requestId);\n\tif (denied) return denied;\n\ttry {\n\t\tconst { html } = await buildAkmHealthReport(getState(), event.url.searchParams.get(\"since\"));\n\t\treturn new Response(html, {\n\t\t\tstatus: 200,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"text/html; charset=utf-8\",\n\t\t\t\t\"cache-control\": \"no-store\",\n\t\t\t\t\"content-security-policy\": REPORT_CSP,\n\t\t\t\t\"x-request-id\": requestId\n\t\t\t}\n\t\t});\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : \"Failed to build AKM health report.\";\n\t\treturn new Response(message, {\n\t\t\tstatus: 500,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"text/plain; charset=utf-8\",\n\t\t\t\t\"cache-control\": \"no-store\",\n\t\t\t\t\"x-request-id\": requestId\n\t\t\t}\n\t\t});\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_server.ts-SqpxZ5hM.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/akm/health-report/_server.ts.js"],"sourcesContent":["import { a as runAssistantAkmCommand } from \"../../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../../chunks/state.js\";\nimport { a as getRequestId, d as requireCapability, u as requireAdmin } from \"../../../../../../chunks/helpers.js\";\n//#region src/lib/server/akm-health-report.ts\nvar AKM_HEALTH_REPORT_WINDOWS = [\n\t\"24h\",\n\t\"72h\",\n\t\"7d\",\n\t\"14d\",\n\t\"30d\"\n];\nfunction clampWindow(value) {\n\treturn AKM_HEALTH_REPORT_WINDOWS.includes(value ?? \"\") ? value : \"72h\";\n}\nfunction errorHtml(window, missing, detail) {\n\treturn `<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><title>AKM Health Report</title><style>body{margin:0;font-family:Inter,system-ui,sans-serif;background:#07111f;color:#e5eefc;padding:24px}main{max-width:860px;margin:0 auto;background:#101b2d;border:1px solid rgba(148,163,184,.18);border-radius:18px;padding:24px}pre{white-space:pre-wrap;background:#15233a;padding:16px;border-radius:12px;overflow:auto}code{font-family:ui-monospace,SFMono-Regular,monospace}</style></head><body><main><h1>${missing ? \"AKM is not available\" : \"AKM health report unavailable\"}</h1><p>${missing ? \"The <code>akm</code> CLI was not found in the running assistant container.\" : `The admin UI could not build the report from <code>akm health</code> for window <code>${window}</code>.`}</p>${detail ? `<pre>${detail.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\")}</pre>` : \"\"}</main></body></html>`;\n}\nasync function buildAkmHealthReport(state, requestedWindow) {\n\tconst window = clampWindow(requestedWindow);\n\tconst result = await runAssistantAkmCommand(state, [\n\t\t\"health\",\n\t\t`--since=${window}`,\n\t\t\"--format\",\n\t\t\"html\"\n\t], 3e4);\n\tif (result.missing) return {\n\t\twindow,\n\t\thtml: errorHtml(window, true, \"\")\n\t};\n\tif (!result.ok || !result.stdout.trim()) return {\n\t\twindow,\n\t\thtml: errorHtml(window, false, [result.stderr.trim(), result.stdout.trim()].filter(Boolean).join(\"\\n\\n\"))\n\t};\n\treturn {\n\t\thtml: result.stdout,\n\t\twindow\n\t};\n}\n//#endregion\n//#region src/routes/api/host/akm/health-report/+server.ts\nvar REPORT_CSP = [\n\t\"default-src 'none'\",\n\t\"script-src 'self' 'unsafe-inline'\",\n\t\"style-src 'unsafe-inline'\",\n\t\"img-src 'self' data:\",\n\t\"font-src 'self' data:\",\n\t\"connect-src 'none'\",\n\t\"object-src 'none'\",\n\t\"base-uri 'none'\",\n\t\"form-action 'none'\",\n\t\"frame-ancestors 'self'\"\n].join(\"; \");\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:containers\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst denied = requireAdmin(event, requestId);\n\tif (denied) return denied;\n\ttry {\n\t\tconst { html } = await buildAkmHealthReport(getState(), event.url.searchParams.get(\"since\"));\n\t\treturn new Response(html, {\n\t\t\tstatus: 200,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"text/html; charset=utf-8\",\n\t\t\t\t\"cache-control\": \"no-store\",\n\t\t\t\t\"content-security-policy\": REPORT_CSP,\n\t\t\t\t\"x-request-id\": requestId\n\t\t\t}\n\t\t});\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : \"Failed to build AKM health report.\";\n\t\treturn new Response(message, {\n\t\t\tstatus: 500,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"text/plain; charset=utf-8\",\n\t\t\t\t\"cache-control\": \"no-store\",\n\t\t\t\t\"x-request-id\": requestId\n\t\t\t}\n\t\t});\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}