@openpalm/ui 0.12.28 → 0.12.29

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 (338) hide show
  1. package/build/.openpalm-ui-version +1 -1
  2. package/build/client/_app/immutable/assets/{4.B7FLcEdq.css → 4.CK_TyfDW.css} +1 -1
  3. package/build/client/_app/immutable/assets/4.CK_TyfDW.css.br +0 -0
  4. package/build/client/_app/immutable/assets/4.CK_TyfDW.css.gz +0 -0
  5. package/build/client/_app/immutable/chunks/{BwNZmVmU.js → DGeeBgNm.js} +2 -2
  6. package/build/client/_app/immutable/chunks/DGeeBgNm.js.br +0 -0
  7. package/build/client/_app/immutable/chunks/DGeeBgNm.js.gz +0 -0
  8. package/build/client/_app/immutable/chunks/{Dq1oAZ8H.js → DPG3tbtl.js} +1 -1
  9. package/build/client/_app/immutable/chunks/DPG3tbtl.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/DPG3tbtl.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/{DS6z9A2Z.js → DdDv4oSx.js} +1 -1
  12. package/build/client/_app/immutable/chunks/DdDv4oSx.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/DdDv4oSx.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/{CP8qSuuN.js → De6rb_7u.js} +1 -1
  15. package/build/client/_app/immutable/chunks/De6rb_7u.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/De6rb_7u.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/{DBfNs7Gy.js → Dx8DFbGm.js} +1 -1
  18. package/build/client/_app/immutable/chunks/Dx8DFbGm.js.br +0 -0
  19. package/build/client/_app/immutable/chunks/Dx8DFbGm.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/I5Apl_kz.js +1 -0
  21. package/build/client/_app/immutable/chunks/I5Apl_kz.js.br +2 -0
  22. package/build/client/_app/immutable/chunks/I5Apl_kz.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/P_sesESA.js +1 -0
  24. package/build/client/_app/immutable/chunks/P_sesESA.js.br +0 -0
  25. package/build/client/_app/immutable/chunks/P_sesESA.js.gz +0 -0
  26. package/build/client/_app/immutable/entry/{app.S6A9wW-K.js → app.MtbkrIJO.js} +2 -2
  27. package/build/client/_app/immutable/entry/app.MtbkrIJO.js.br +0 -0
  28. package/build/client/_app/immutable/entry/app.MtbkrIJO.js.gz +0 -0
  29. package/build/client/_app/immutable/entry/start.DiLFzGrm.js +1 -0
  30. package/build/client/_app/immutable/entry/start.DiLFzGrm.js.br +0 -0
  31. package/build/client/_app/immutable/entry/start.DiLFzGrm.js.gz +0 -0
  32. package/build/client/_app/immutable/nodes/{0.DMbZYw6u.js → 0.OXqWL9wr.js} +1 -1
  33. package/build/client/_app/immutable/nodes/0.OXqWL9wr.js.br +0 -0
  34. package/build/client/_app/immutable/nodes/0.OXqWL9wr.js.gz +0 -0
  35. package/build/client/_app/immutable/nodes/{1.Cjobp8r-.js → 1.D6SWRmXM.js} +1 -1
  36. package/build/client/_app/immutable/nodes/{1.Cjobp8r-.js.br → 1.D6SWRmXM.js.br} +2 -1
  37. package/build/client/_app/immutable/nodes/1.D6SWRmXM.js.gz +0 -0
  38. package/build/client/_app/immutable/nodes/{4.kJoslktN.js → 4.DVUdjAgS.js} +6 -7
  39. package/build/client/_app/immutable/nodes/4.DVUdjAgS.js.br +0 -0
  40. package/build/client/_app/immutable/nodes/4.DVUdjAgS.js.gz +0 -0
  41. package/build/client/_app/immutable/nodes/{5.Ct5FyLbf.js → 5.CPIyVAVv.js} +1 -1
  42. package/build/client/_app/immutable/nodes/5.CPIyVAVv.js.br +0 -0
  43. package/build/client/_app/immutable/nodes/5.CPIyVAVv.js.gz +0 -0
  44. package/build/client/_app/immutable/nodes/{6.zWbgiRDs.js → 6.DgVxu9xp.js} +1 -1
  45. package/build/client/_app/immutable/nodes/6.DgVxu9xp.js.br +0 -0
  46. package/build/client/_app/immutable/nodes/6.DgVxu9xp.js.gz +0 -0
  47. package/build/client/_app/immutable/nodes/{7.x2u9P5pr.js → 7.BFu6XKLS.js} +1 -1
  48. package/build/client/_app/immutable/nodes/7.BFu6XKLS.js.br +0 -0
  49. package/build/client/_app/immutable/nodes/7.BFu6XKLS.js.gz +0 -0
  50. package/build/client/_app/immutable/nodes/{8.gw59ZpXB.js → 8.o7VSan68.js} +1 -1
  51. package/build/client/_app/immutable/nodes/8.o7VSan68.js.br +0 -0
  52. package/build/client/_app/immutable/nodes/8.o7VSan68.js.gz +0 -0
  53. package/build/client/_app/version.json +1 -1
  54. package/build/client/_app/version.json.br +1 -1
  55. package/build/client/_app/version.json.gz +0 -0
  56. package/build/server/chunks/{0-5S3uaxID.js → 0-DvksyLHu.js} +2 -2
  57. package/build/server/chunks/{0-5S3uaxID.js.map → 0-DvksyLHu.js.map} +1 -1
  58. package/build/server/chunks/1-BgE5qXhN.js +9 -0
  59. package/build/server/chunks/{1-7507bJa6.js.map → 1-BgE5qXhN.js.map} +1 -1
  60. package/build/server/chunks/{10-DRTBQR8A.js → 10-C78SU1XI.js} +5 -5
  61. package/build/server/chunks/{10-DRTBQR8A.js.map → 10-C78SU1XI.js.map} +1 -1
  62. package/build/server/chunks/4-DDgZiXUR.js +9 -0
  63. package/build/server/chunks/{4-CL_7gqoe.js.map → 4-DDgZiXUR.js.map} +1 -1
  64. package/build/server/chunks/{5-DiwxFgan.js → 5-Bk-QkQBb.js} +3 -3
  65. package/build/server/chunks/{5-DiwxFgan.js.map → 5-Bk-QkQBb.js.map} +1 -1
  66. package/build/server/chunks/6-CwS6eBMw.js +9 -0
  67. package/build/server/chunks/{6-ZEX7r8JB.js.map → 6-CwS6eBMw.js.map} +1 -1
  68. package/build/server/chunks/{7-clTpA_fQ.js → 7-yCpCVuxY.js} +3 -3
  69. package/build/server/chunks/{7-clTpA_fQ.js.map → 7-yCpCVuxY.js.map} +1 -1
  70. package/build/server/chunks/{8-CSvIWui7.js → 8-CSODVXgQ.js} +3 -3
  71. package/build/server/chunks/{8-CSvIWui7.js.map → 8-CSODVXgQ.js.map} +1 -1
  72. package/build/server/chunks/{Navbar-BwjmLChT.js → Navbar-BTzlsF7F.js} +3 -3
  73. package/build/server/chunks/{Navbar-BwjmLChT.js.map → Navbar-BTzlsF7F.js.map} +1 -1
  74. package/build/server/chunks/{_page.svelte-CkbaStTA.js → _page.svelte-BuqfCcvC.js} +3 -3
  75. package/build/server/chunks/{_page.svelte-CkbaStTA.js.map → _page.svelte-BuqfCcvC.js.map} +1 -1
  76. package/build/server/chunks/{_page.svelte-pbNlPLp1.js → _page.svelte-CFaTPcFl.js} +5 -5
  77. package/build/server/chunks/{_page.svelte-pbNlPLp1.js.map → _page.svelte-CFaTPcFl.js.map} +1 -1
  78. package/build/server/chunks/{_page.svelte-n0azMPVZ.js → _page.svelte-CTykGBON.js} +5 -5
  79. package/build/server/chunks/{_page.svelte-n0azMPVZ.js.map → _page.svelte-CTykGBON.js.map} +1 -1
  80. package/build/server/chunks/{_page.svelte-CPpRR5DY.js → _page.svelte-Cq9q5GUD.js} +3 -3
  81. package/build/server/chunks/{_page.svelte-CPpRR5DY.js.map → _page.svelte-Cq9q5GUD.js.map} +1 -1
  82. package/build/server/chunks/{_page.svelte-BbRX2hNU.js → _page.svelte-RHv0Nvtx.js} +5 -5
  83. package/build/server/chunks/{_page.svelte-BbRX2hNU.js.map → _page.svelte-RHv0Nvtx.js.map} +1 -1
  84. package/build/server/chunks/{_server.ts-Bd3egj0O.js → _server.ts-3ccX7dQ7.js} +7 -7
  85. package/build/server/chunks/{_server.ts-Bd3egj0O.js.map → _server.ts-3ccX7dQ7.js.map} +1 -1
  86. package/build/server/chunks/{_server.ts-BJ7CGTPk.js → _server.ts-6DklUex-.js} +6 -6
  87. package/build/server/chunks/{_server.ts-BJ7CGTPk.js.map → _server.ts-6DklUex-.js.map} +1 -1
  88. package/build/server/chunks/{_server.ts-C5eyOgcf.js → _server.ts-739BRBdS.js} +6 -6
  89. package/build/server/chunks/{_server.ts-C5eyOgcf.js.map → _server.ts-739BRBdS.js.map} +1 -1
  90. package/build/server/chunks/{_server.ts-DxA49_Ff.js → _server.ts-8T-GmTDG.js} +5 -5
  91. package/build/server/chunks/{_server.ts-DxA49_Ff.js.map → _server.ts-8T-GmTDG.js.map} +1 -1
  92. package/build/server/chunks/{_server.ts-wM3VHr1T.js → _server.ts-9_0hsMNv.js} +5 -5
  93. package/build/server/chunks/{_server.ts-wM3VHr1T.js.map → _server.ts-9_0hsMNv.js.map} +1 -1
  94. package/build/server/chunks/{_server.ts-s_8Em7sh.js → _server.ts-B2C3dGJW.js} +2 -2
  95. package/build/server/chunks/{_server.ts-s_8Em7sh.js.map → _server.ts-B2C3dGJW.js.map} +1 -1
  96. package/build/server/chunks/{_server.ts-mm8-Domh.js → _server.ts-B7Vxp_s5.js} +6 -6
  97. package/build/server/chunks/{_server.ts-mm8-Domh.js.map → _server.ts-B7Vxp_s5.js.map} +1 -1
  98. package/build/server/chunks/{_server.ts-BWpv8Em8.js → _server.ts-BA1JrWlK.js} +5 -5
  99. package/build/server/chunks/{_server.ts-BWpv8Em8.js.map → _server.ts-BA1JrWlK.js.map} +1 -1
  100. package/build/server/chunks/{_server.ts-C0WrNqIr.js → _server.ts-BBEzIZRp.js} +5 -5
  101. package/build/server/chunks/{_server.ts-C0WrNqIr.js.map → _server.ts-BBEzIZRp.js.map} +1 -1
  102. package/build/server/chunks/{_server.ts-CIhMPE8d.js → _server.ts-BFqnTHfd.js} +2 -2
  103. package/build/server/chunks/{_server.ts-CIhMPE8d.js.map → _server.ts-BFqnTHfd.js.map} +1 -1
  104. package/build/server/chunks/{_server.ts-drF_5o3n.js → _server.ts-BKu6h4mP.js} +5 -5
  105. package/build/server/chunks/{_server.ts-drF_5o3n.js.map → _server.ts-BKu6h4mP.js.map} +1 -1
  106. package/build/server/chunks/{_server.ts-C-DnuNGv.js → _server.ts-BM37aBEx.js} +5 -5
  107. package/build/server/chunks/{_server.ts-C-DnuNGv.js.map → _server.ts-BM37aBEx.js.map} +1 -1
  108. package/build/server/chunks/{_server.ts-3-YybANN.js → _server.ts-BMEGQCRd.js} +12 -24
  109. package/build/server/chunks/_server.ts-BMEGQCRd.js.map +1 -0
  110. package/build/server/chunks/{_server.ts-Cw19e37F.js → _server.ts-BMjiGFL5.js} +5 -5
  111. package/build/server/chunks/{_server.ts-Cw19e37F.js.map → _server.ts-BMjiGFL5.js.map} +1 -1
  112. package/build/server/chunks/{_server.ts-BO7DRlgO.js → _server.ts-BQZQRg-E.js} +5 -5
  113. package/build/server/chunks/{_server.ts-BO7DRlgO.js.map → _server.ts-BQZQRg-E.js.map} +1 -1
  114. package/build/server/chunks/{_server.ts-CamCBMtH.js → _server.ts-BSGYUEHD.js} +5 -5
  115. package/build/server/chunks/{_server.ts-CamCBMtH.js.map → _server.ts-BSGYUEHD.js.map} +1 -1
  116. package/build/server/chunks/{_server.ts-CMkwNhDl.js → _server.ts-BWfLOSUa.js} +5 -5
  117. package/build/server/chunks/{_server.ts-CMkwNhDl.js.map → _server.ts-BWfLOSUa.js.map} +1 -1
  118. package/build/server/chunks/{_server.ts-D6ruuXqR.js → _server.ts-Bb4seFDL.js} +5 -5
  119. package/build/server/chunks/{_server.ts-D6ruuXqR.js.map → _server.ts-Bb4seFDL.js.map} +1 -1
  120. package/build/server/chunks/{_server.ts-CSZm6b1s.js → _server.ts-BcfPZYYD.js} +7 -7
  121. package/build/server/chunks/{_server.ts-CSZm6b1s.js.map → _server.ts-BcfPZYYD.js.map} +1 -1
  122. package/build/server/chunks/{_server.ts-CTGprNfK.js → _server.ts-BeKRc4D8.js} +6 -6
  123. package/build/server/chunks/{_server.ts-CTGprNfK.js.map → _server.ts-BeKRc4D8.js.map} +1 -1
  124. package/build/server/chunks/{_server.ts-Bn5TWd33.js → _server.ts-BejA4R4V.js} +5 -5
  125. package/build/server/chunks/{_server.ts-Bn5TWd33.js.map → _server.ts-BejA4R4V.js.map} +1 -1
  126. package/build/server/chunks/{_server.ts-BQ5Ld5nj.js → _server.ts-Bf6yXT-J.js} +5 -5
  127. package/build/server/chunks/{_server.ts-BQ5Ld5nj.js.map → _server.ts-Bf6yXT-J.js.map} +1 -1
  128. package/build/server/chunks/{_server.ts-Dr-kzAme.js → _server.ts-Bi2DbQMs.js} +5 -5
  129. package/build/server/chunks/{_server.ts-Dr-kzAme.js.map → _server.ts-Bi2DbQMs.js.map} +1 -1
  130. package/build/server/chunks/{_server.ts-Bo-_pQan.js → _server.ts-Bl7YTrpO.js} +14 -9
  131. package/build/server/chunks/_server.ts-Bl7YTrpO.js.map +1 -0
  132. package/build/server/chunks/{_server.ts-CX6onqDO.js → _server.ts-Bqqax0Xv.js} +5 -5
  133. package/build/server/chunks/{_server.ts-CX6onqDO.js.map → _server.ts-Bqqax0Xv.js.map} +1 -1
  134. package/build/server/chunks/{_server.ts-Cg9S2fez.js → _server.ts-BrqnYji6.js} +5 -5
  135. package/build/server/chunks/{_server.ts-Cg9S2fez.js.map → _server.ts-BrqnYji6.js.map} +1 -1
  136. package/build/server/chunks/{_server.ts-DKOOZRkS.js → _server.ts-BtN4WK57.js} +5 -5
  137. package/build/server/chunks/{_server.ts-DKOOZRkS.js.map → _server.ts-BtN4WK57.js.map} +1 -1
  138. package/build/server/chunks/{_server.ts-SteNZC4A.js → _server.ts-Bv0WYTxJ.js} +5 -5
  139. package/build/server/chunks/{_server.ts-SteNZC4A.js.map → _server.ts-Bv0WYTxJ.js.map} +1 -1
  140. package/build/server/chunks/{_server.ts-Dqobz5u4.js → _server.ts-BwfAB8Ui.js} +5 -5
  141. package/build/server/chunks/{_server.ts-Dqobz5u4.js.map → _server.ts-BwfAB8Ui.js.map} +1 -1
  142. package/build/server/chunks/{_server.ts-frgoARnH.js → _server.ts-BxXA8Duj.js} +5 -5
  143. package/build/server/chunks/{_server.ts-frgoARnH.js.map → _server.ts-BxXA8Duj.js.map} +1 -1
  144. package/build/server/chunks/{_server.ts-L5TinIXj.js → _server.ts-BzRWiJZH.js} +5 -5
  145. package/build/server/chunks/{_server.ts-L5TinIXj.js.map → _server.ts-BzRWiJZH.js.map} +1 -1
  146. package/build/server/chunks/{_server.ts-4Y3pXUCQ.js → _server.ts-C2-0vvRv.js} +7 -7
  147. package/build/server/chunks/{_server.ts-4Y3pXUCQ.js.map → _server.ts-C2-0vvRv.js.map} +1 -1
  148. package/build/server/chunks/{_server.ts-DK1F--9I.js → _server.ts-C208nmt-.js} +5 -5
  149. package/build/server/chunks/{_server.ts-DK1F--9I.js.map → _server.ts-C208nmt-.js.map} +1 -1
  150. package/build/server/chunks/{_server.ts-4paa7krX.js → _server.ts-C4j8yABP.js} +5 -5
  151. package/build/server/chunks/{_server.ts-4paa7krX.js.map → _server.ts-C4j8yABP.js.map} +1 -1
  152. package/build/server/chunks/{_server.ts-C1Hbt6bI.js → _server.ts-C4ophUvf.js} +5 -5
  153. package/build/server/chunks/{_server.ts-C1Hbt6bI.js.map → _server.ts-C4ophUvf.js.map} +1 -1
  154. package/build/server/chunks/{_server.ts-BfMdyNxy.js → _server.ts-C5fM8Fha.js} +5 -5
  155. package/build/server/chunks/{_server.ts-BfMdyNxy.js.map → _server.ts-C5fM8Fha.js.map} +1 -1
  156. package/build/server/chunks/{_server.ts-ItE-dGnU.js → _server.ts-CEsSgWA9.js} +5 -5
  157. package/build/server/chunks/{_server.ts-ItE-dGnU.js.map → _server.ts-CEsSgWA9.js.map} +1 -1
  158. package/build/server/chunks/{_server.ts-O7ah5vx6.js → _server.ts-CHnmf97m.js} +5 -5
  159. package/build/server/chunks/{_server.ts-O7ah5vx6.js.map → _server.ts-CHnmf97m.js.map} +1 -1
  160. package/build/server/chunks/{_server.ts-N5NV72Hf.js → _server.ts-COo59G2y.js} +2 -2
  161. package/build/server/chunks/{_server.ts-N5NV72Hf.js.map → _server.ts-COo59G2y.js.map} +1 -1
  162. package/build/server/chunks/{_server.ts-pNpcKQuZ.js → _server.ts-CXE-jBst.js} +4 -4
  163. package/build/server/chunks/{_server.ts-pNpcKQuZ.js.map → _server.ts-CXE-jBst.js.map} +1 -1
  164. package/build/server/chunks/{_server.ts-x5irgpAt.js → _server.ts-Cad8UEnA.js} +6 -6
  165. package/build/server/chunks/{_server.ts-x5irgpAt.js.map → _server.ts-Cad8UEnA.js.map} +1 -1
  166. package/build/server/chunks/{_server.ts-D0x6UF-T.js → _server.ts-Cagvmdh3.js} +5 -5
  167. package/build/server/chunks/{_server.ts-D0x6UF-T.js.map → _server.ts-Cagvmdh3.js.map} +1 -1
  168. package/build/server/chunks/{_server.ts-BxCMi5Oj.js → _server.ts-CcnMlpqU.js} +5 -5
  169. package/build/server/chunks/{_server.ts-BxCMi5Oj.js.map → _server.ts-CcnMlpqU.js.map} +1 -1
  170. package/build/server/chunks/{_server.ts-DXxG4mKE.js → _server.ts-Cd8EYwIO.js} +5 -5
  171. package/build/server/chunks/{_server.ts-DXxG4mKE.js.map → _server.ts-Cd8EYwIO.js.map} +1 -1
  172. package/build/server/chunks/{_server.ts-C0jLdfpS.js → _server.ts-CvUA4HWG.js} +7 -7
  173. package/build/server/chunks/{_server.ts-C0jLdfpS.js.map → _server.ts-CvUA4HWG.js.map} +1 -1
  174. package/build/server/chunks/{_server.ts-Clo6a462.js → _server.ts-CzOK9Rmf.js} +5 -5
  175. package/build/server/chunks/{_server.ts-Clo6a462.js.map → _server.ts-CzOK9Rmf.js.map} +1 -1
  176. package/build/server/chunks/{_server.ts-uvTfo6l3.js → _server.ts-D-4zV8bf.js} +6 -6
  177. package/build/server/chunks/{_server.ts-uvTfo6l3.js.map → _server.ts-D-4zV8bf.js.map} +1 -1
  178. package/build/server/chunks/{_server.ts-OvbELaYs.js → _server.ts-D48wD4l8.js} +8 -8
  179. package/build/server/chunks/{_server.ts-OvbELaYs.js.map → _server.ts-D48wD4l8.js.map} +1 -1
  180. package/build/server/chunks/{_server.ts-CNJwzYTK.js → _server.ts-D5PO24Af.js} +5 -5
  181. package/build/server/chunks/{_server.ts-CNJwzYTK.js.map → _server.ts-D5PO24Af.js.map} +1 -1
  182. package/build/server/chunks/{_server.ts-CreehM0I.js → _server.ts-D8fyFgVS.js} +5 -5
  183. package/build/server/chunks/{_server.ts-CreehM0I.js.map → _server.ts-D8fyFgVS.js.map} +1 -1
  184. package/build/server/chunks/{_server.ts-duvHUtii.js → _server.ts-D9fd27jD.js} +5 -5
  185. package/build/server/chunks/{_server.ts-duvHUtii.js.map → _server.ts-D9fd27jD.js.map} +1 -1
  186. package/build/server/chunks/{_server.ts-BBLlrgcK.js → _server.ts-DARnn7Ls.js} +6 -6
  187. package/build/server/chunks/{_server.ts-BBLlrgcK.js.map → _server.ts-DARnn7Ls.js.map} +1 -1
  188. package/build/server/chunks/{_server.ts-D65qUnTo.js → _server.ts-DCTzUVHG.js} +5 -5
  189. package/build/server/chunks/{_server.ts-D65qUnTo.js.map → _server.ts-DCTzUVHG.js.map} +1 -1
  190. package/build/server/chunks/{_server.ts-5uCT3ldj.js → _server.ts-DF5ALn9Q.js} +5 -5
  191. package/build/server/chunks/{_server.ts-5uCT3ldj.js.map → _server.ts-DF5ALn9Q.js.map} +1 -1
  192. package/build/server/chunks/{_server.ts-BRi-qb_g.js → _server.ts-DK5jp52Q.js} +6 -6
  193. package/build/server/chunks/{_server.ts-BRi-qb_g.js.map → _server.ts-DK5jp52Q.js.map} +1 -1
  194. package/build/server/chunks/{_server.ts-CRxSjRmH.js → _server.ts-DLIp66Y8.js} +5 -5
  195. package/build/server/chunks/{_server.ts-CRxSjRmH.js.map → _server.ts-DLIp66Y8.js.map} +1 -1
  196. package/build/server/chunks/{_server.ts-Kz2VUup0.js → _server.ts-DMB8S8aB.js} +5 -5
  197. package/build/server/chunks/{_server.ts-Kz2VUup0.js.map → _server.ts-DMB8S8aB.js.map} +1 -1
  198. package/build/server/chunks/{_server.ts-C0rGMciP.js → _server.ts-DOEhvg0b.js} +5 -5
  199. package/build/server/chunks/{_server.ts-C0rGMciP.js.map → _server.ts-DOEhvg0b.js.map} +1 -1
  200. package/build/server/chunks/{_server.ts-hzksO4eC.js → _server.ts-DPcHPzsT.js} +5 -5
  201. package/build/server/chunks/{_server.ts-hzksO4eC.js.map → _server.ts-DPcHPzsT.js.map} +1 -1
  202. package/build/server/chunks/{_server.ts-wg5Z6HOs.js → _server.ts-DRr1lJ-8.js} +5 -5
  203. package/build/server/chunks/{_server.ts-wg5Z6HOs.js.map → _server.ts-DRr1lJ-8.js.map} +1 -1
  204. package/build/server/chunks/{_server.ts-GQVBG5Jb.js → _server.ts-DSrgYf1E.js} +5 -5
  205. package/build/server/chunks/{_server.ts-GQVBG5Jb.js.map → _server.ts-DSrgYf1E.js.map} +1 -1
  206. package/build/server/chunks/{_server.ts-Db8rsVlU.js → _server.ts-DZ8PegS_.js} +4 -4
  207. package/build/server/chunks/{_server.ts-Db8rsVlU.js.map → _server.ts-DZ8PegS_.js.map} +1 -1
  208. package/build/server/chunks/{_server.ts-Cg04QGjP.js → _server.ts-DbxeZUni.js} +5 -5
  209. package/build/server/chunks/{_server.ts-Cg04QGjP.js.map → _server.ts-DbxeZUni.js.map} +1 -1
  210. package/build/server/chunks/{_server.ts-CZiU9u-p.js → _server.ts-DcRpsHGO.js} +5 -5
  211. package/build/server/chunks/{_server.ts-CZiU9u-p.js.map → _server.ts-DcRpsHGO.js.map} +1 -1
  212. package/build/server/chunks/{_server.ts-BjuUsJn2.js → _server.ts-DdDg8y0P.js} +6 -6
  213. package/build/server/chunks/{_server.ts-BjuUsJn2.js.map → _server.ts-DdDg8y0P.js.map} +1 -1
  214. package/build/server/chunks/{_server.ts-DCET42Fp.js → _server.ts-DfxpAWa5.js} +5 -5
  215. package/build/server/chunks/{_server.ts-DCET42Fp.js.map → _server.ts-DfxpAWa5.js.map} +1 -1
  216. package/build/server/chunks/{_server.ts-sSk0IBLI.js → _server.ts-DgjkA9ir.js} +6 -6
  217. package/build/server/chunks/{_server.ts-sSk0IBLI.js.map → _server.ts-DgjkA9ir.js.map} +1 -1
  218. package/build/server/chunks/{_server.ts-D2AtDPpw.js → _server.ts-Dgt0rRrW.js} +5 -5
  219. package/build/server/chunks/{_server.ts-D2AtDPpw.js.map → _server.ts-Dgt0rRrW.js.map} +1 -1
  220. package/build/server/chunks/{_server.ts-KQyLNXyK.js → _server.ts-DjAH8f4E.js} +5 -5
  221. package/build/server/chunks/{_server.ts-KQyLNXyK.js.map → _server.ts-DjAH8f4E.js.map} +1 -1
  222. package/build/server/chunks/{_server.ts-CDuzkv4Q.js → _server.ts-DmpsbmaF.js} +2 -2
  223. package/build/server/chunks/{_server.ts-CDuzkv4Q.js.map → _server.ts-DmpsbmaF.js.map} +1 -1
  224. package/build/server/chunks/{_server.ts-Co5JKmfW.js → _server.ts-DmwfJZec.js} +5 -5
  225. package/build/server/chunks/{_server.ts-Co5JKmfW.js.map → _server.ts-DmwfJZec.js.map} +1 -1
  226. package/build/server/chunks/{_server.ts-CyAPOdLF.js → _server.ts-Dn3DHX75.js} +7 -15
  227. package/build/server/chunks/_server.ts-Dn3DHX75.js.map +1 -0
  228. package/build/server/chunks/{_server.ts-DrcDPBMF.js → _server.ts-DtX276Y1.js} +5 -5
  229. package/build/server/chunks/{_server.ts-DrcDPBMF.js.map → _server.ts-DtX276Y1.js.map} +1 -1
  230. package/build/server/chunks/{_server.ts-hMEG74d4.js → _server.ts-DvvIHi1E.js} +6 -6
  231. package/build/server/chunks/{_server.ts-hMEG74d4.js.map → _server.ts-DvvIHi1E.js.map} +1 -1
  232. package/build/server/chunks/{_server.ts-ClGL59Hx.js → _server.ts-Ft8V0nTN.js} +5 -5
  233. package/build/server/chunks/{_server.ts-ClGL59Hx.js.map → _server.ts-Ft8V0nTN.js.map} +1 -1
  234. package/build/server/chunks/{_server.ts-yLSNRQYS.js → _server.ts-JPtSYVzi.js} +5 -5
  235. package/build/server/chunks/{_server.ts-yLSNRQYS.js.map → _server.ts-JPtSYVzi.js.map} +1 -1
  236. package/build/server/chunks/{_server.ts-UHdPmfe5.js → _server.ts-MYzCe9nw.js} +5 -5
  237. package/build/server/chunks/{_server.ts-UHdPmfe5.js.map → _server.ts-MYzCe9nw.js.map} +1 -1
  238. package/build/server/chunks/{_server.ts-D3Yac_nt.js → _server.ts-SaQi12tU.js} +5 -5
  239. package/build/server/chunks/{_server.ts-D3Yac_nt.js.map → _server.ts-SaQi12tU.js.map} +1 -1
  240. package/build/server/chunks/{_server.ts-DREbeP0L.js → _server.ts-USp3SIz0.js} +6 -6
  241. package/build/server/chunks/{_server.ts-DREbeP0L.js.map → _server.ts-USp3SIz0.js.map} +1 -1
  242. package/build/server/chunks/{_server.ts-C82Piu-b.js → _server.ts-Y99Eznto.js} +5 -5
  243. package/build/server/chunks/{_server.ts-C82Piu-b.js.map → _server.ts-Y99Eznto.js.map} +1 -1
  244. package/build/server/chunks/{_server.ts-urkeKYZq.js → _server.ts-esYLDVdp.js} +6 -6
  245. package/build/server/chunks/{_server.ts-urkeKYZq.js.map → _server.ts-esYLDVdp.js.map} +1 -1
  246. package/build/server/chunks/{_server.ts-C3Nz0Fq6.js → _server.ts-fn3V-WEe.js} +7 -7
  247. package/build/server/chunks/{_server.ts-C3Nz0Fq6.js.map → _server.ts-fn3V-WEe.js.map} +1 -1
  248. package/build/server/chunks/{_server.ts-CyPc2ma7.js → _server.ts-gnGJeyEH.js} +5 -5
  249. package/build/server/chunks/{_server.ts-CyPc2ma7.js.map → _server.ts-gnGJeyEH.js.map} +1 -1
  250. package/build/server/chunks/{_server.ts-BjTG3MpF.js → _server.ts-hQDEfZgi.js} +5 -5
  251. package/build/server/chunks/{_server.ts-BjTG3MpF.js.map → _server.ts-hQDEfZgi.js.map} +1 -1
  252. package/build/server/chunks/{_server.ts-BDUyJV1x.js → _server.ts-iRx0ggl-.js} +7 -7
  253. package/build/server/chunks/{_server.ts-BDUyJV1x.js.map → _server.ts-iRx0ggl-.js.map} +1 -1
  254. package/build/server/chunks/{addon-helpers-7mlx24fe.js → addon-helpers-BBwn2fQj.js} +3 -3
  255. package/build/server/chunks/{addon-helpers-7mlx24fe.js.map → addon-helpers-BBwn2fQj.js.map} +1 -1
  256. package/build/server/chunks/{akm-CrfUw4yy.js → akm-DA0swpCx.js} +2 -2
  257. package/build/server/chunks/{akm-CrfUw4yy.js.map → akm-DA0swpCx.js.map} +1 -1
  258. package/build/server/chunks/{catalog-BwFee_sD.js → catalog-B5hf-r9d.js} +5 -5
  259. package/build/server/chunks/{catalog-BwFee_sD.js.map → catalog-B5hf-r9d.js.map} +1 -1
  260. package/build/server/chunks/{client-XpaVgXGM.js → client-Dr9sabvL.js} +2 -2
  261. package/build/server/chunks/{client-XpaVgXGM.js.map → client-Dr9sabvL.js.map} +1 -1
  262. package/build/server/chunks/{config-Y_CPcMBz.js → config-Dg8s-GBp.js} +2 -2
  263. package/build/server/chunks/{config-Y_CPcMBz.js.map → config-Dg8s-GBp.js.map} +1 -1
  264. package/build/server/chunks/{docker-DxR2QaSq.js → docker-BV_WjQVm.js} +2 -2
  265. package/build/server/chunks/docker-BV_WjQVm.js.map +1 -0
  266. package/build/server/chunks/{endpoints-C0-bmtqX.js → endpoints-B0HpCyu9.js} +2 -2
  267. package/build/server/chunks/{endpoints-C0-bmtqX.js.map → endpoints-B0HpCyu9.js.map} +1 -1
  268. package/build/server/chunks/{error.svelte-DfjJziio.js → error.svelte-lIxibdQw.js} +4 -4
  269. package/build/server/chunks/{error.svelte-DfjJziio.js.map → error.svelte-lIxibdQw.js.map} +1 -1
  270. package/build/server/chunks/{helpers-DInkNOLc.js → helpers-lN3LfgGZ.js} +3 -3
  271. package/build/server/chunks/{helpers-DInkNOLc.js.map → helpers-lN3LfgGZ.js.map} +1 -1
  272. package/build/server/chunks/{hooks.server-Rxu6hprY.js → hooks.server-CrbPlmUt.js} +7 -7
  273. package/build/server/chunks/{hooks.server-Rxu6hprY.js.map → hooks.server-CrbPlmUt.js.map} +1 -1
  274. package/build/server/chunks/{http-BBekmS7G.js → http-DNiSf83i.js} +2 -2
  275. package/build/server/chunks/{http-BBekmS7G.js.map → http-DNiSf83i.js.map} +1 -1
  276. package/build/server/chunks/{internal-ZDW7OGM2.js → internal-B3VFdSig.js} +3 -3
  277. package/build/server/chunks/{internal-ZDW7OGM2.js.map → internal-B3VFdSig.js.map} +1 -1
  278. package/build/server/chunks/{migration-status-DYOJd2zJ.js → migration-status-aihEu_x-.js} +2 -2
  279. package/build/server/chunks/{migration-status-DYOJd2zJ.js.map → migration-status-aihEu_x-.js.map} +1 -1
  280. package/build/server/chunks/{session-cookie-Fk3z6zXU.js → session-cookie-DV5DWVt0.js} +2 -2
  281. package/build/server/chunks/{session-cookie-Fk3z6zXU.js.map → session-cookie-DV5DWVt0.js.map} +1 -1
  282. package/build/server/chunks/{setup-deploy-DiujTjmt.js → setup-deploy-C0W4vmZJ.js} +2 -2
  283. package/build/server/chunks/{setup-deploy-DiujTjmt.js.map → setup-deploy-C0W4vmZJ.js.map} +1 -1
  284. package/build/server/chunks/{src-CUQ7IJUr.js → src-hQPwcA3W.js} +88 -172
  285. package/build/server/chunks/src-hQPwcA3W.js.map +1 -0
  286. package/build/server/chunks/{state-ClUH4b0u.js → state-Dr2De3dg.js} +2 -2
  287. package/build/server/chunks/{state-ClUH4b0u.js.map → state-Dr2De3dg.js.map} +1 -1
  288. package/build/server/chunks/{state2-4pMdWNab.js → state2-DG-5Hjbd.js} +2 -2
  289. package/build/server/chunks/{state2-4pMdWNab.js.map → state2-DG-5Hjbd.js.map} +1 -1
  290. package/build/server/index.js +1 -1
  291. package/build/server/index.js.map +1 -1
  292. package/build/server/manifest.js +94 -94
  293. package/build/server/manifest.js.map +1 -1
  294. package/package.json +2 -2
  295. package/build/client/_app/immutable/assets/4.B7FLcEdq.css.br +0 -0
  296. package/build/client/_app/immutable/assets/4.B7FLcEdq.css.gz +0 -0
  297. package/build/client/_app/immutable/chunks/BJ9MroEG.js +0 -1
  298. package/build/client/_app/immutable/chunks/BJ9MroEG.js.br +0 -2
  299. package/build/client/_app/immutable/chunks/BJ9MroEG.js.gz +0 -0
  300. package/build/client/_app/immutable/chunks/BwNZmVmU.js.br +0 -0
  301. package/build/client/_app/immutable/chunks/BwNZmVmU.js.gz +0 -0
  302. package/build/client/_app/immutable/chunks/CP8qSuuN.js.br +0 -0
  303. package/build/client/_app/immutable/chunks/CP8qSuuN.js.gz +0 -0
  304. package/build/client/_app/immutable/chunks/DBfNs7Gy.js.br +0 -0
  305. package/build/client/_app/immutable/chunks/DBfNs7Gy.js.gz +0 -0
  306. package/build/client/_app/immutable/chunks/DS6z9A2Z.js.br +0 -0
  307. package/build/client/_app/immutable/chunks/DS6z9A2Z.js.gz +0 -0
  308. package/build/client/_app/immutable/chunks/Dq1oAZ8H.js.br +0 -0
  309. package/build/client/_app/immutable/chunks/Dq1oAZ8H.js.gz +0 -0
  310. package/build/client/_app/immutable/chunks/Dw0lB87T.js +0 -1
  311. package/build/client/_app/immutable/chunks/Dw0lB87T.js.br +0 -0
  312. package/build/client/_app/immutable/chunks/Dw0lB87T.js.gz +0 -0
  313. package/build/client/_app/immutable/entry/app.S6A9wW-K.js.br +0 -0
  314. package/build/client/_app/immutable/entry/app.S6A9wW-K.js.gz +0 -0
  315. package/build/client/_app/immutable/entry/start.C02CKl67.js +0 -1
  316. package/build/client/_app/immutable/entry/start.C02CKl67.js.br +0 -0
  317. package/build/client/_app/immutable/entry/start.C02CKl67.js.gz +0 -0
  318. package/build/client/_app/immutable/nodes/0.DMbZYw6u.js.br +0 -0
  319. package/build/client/_app/immutable/nodes/0.DMbZYw6u.js.gz +0 -0
  320. package/build/client/_app/immutable/nodes/1.Cjobp8r-.js.gz +0 -0
  321. package/build/client/_app/immutable/nodes/4.kJoslktN.js.br +0 -0
  322. package/build/client/_app/immutable/nodes/4.kJoslktN.js.gz +0 -0
  323. package/build/client/_app/immutable/nodes/5.Ct5FyLbf.js.br +0 -0
  324. package/build/client/_app/immutable/nodes/5.Ct5FyLbf.js.gz +0 -0
  325. package/build/client/_app/immutable/nodes/6.zWbgiRDs.js.br +0 -0
  326. package/build/client/_app/immutable/nodes/6.zWbgiRDs.js.gz +0 -0
  327. package/build/client/_app/immutable/nodes/7.x2u9P5pr.js.br +0 -0
  328. package/build/client/_app/immutable/nodes/7.x2u9P5pr.js.gz +0 -0
  329. package/build/client/_app/immutable/nodes/8.gw59ZpXB.js.br +0 -0
  330. package/build/client/_app/immutable/nodes/8.gw59ZpXB.js.gz +0 -0
  331. package/build/server/chunks/1-7507bJa6.js +0 -9
  332. package/build/server/chunks/4-CL_7gqoe.js +0 -9
  333. package/build/server/chunks/6-ZEX7r8JB.js +0 -9
  334. package/build/server/chunks/_server.ts-3-YybANN.js.map +0 -1
  335. package/build/server/chunks/_server.ts-Bo-_pQan.js.map +0 -1
  336. package/build/server/chunks/_server.ts-CyAPOdLF.js.map +0 -1
  337. package/build/server/chunks/docker-DxR2QaSq.js.map +0 -1
  338. package/build/server/chunks/src-CUQ7IJUr.js.map +0 -1
@@ -1,8 +1,8 @@
1
- import{B as e,D as t,E as n,F as r,G as i,H as a,I as o,L as s,M as c,N as l,O as u,P as d,R as f,S as p,U as m,V as h,W as g,X as _,Z as v,_ as y,_t as b,at as x,b as S,bt as C,ct as w,d as T,et as E,f as D,g as O,h as k,i as A,it as j,j as M,l as N,m as P,mt as F,nt as I,o as L,ot as R,p as z,pt as B,r as V,rt as H,st as U,tt as ee,u as te,ut as W,v as G,vt as K,y as ne,z as q}from"../chunks/BQ6MdAtF.js";import{n as J}from"../chunks/BwNZmVmU.js";import"../chunks/xihTtKlq.js";import{$ as Y,A as re,B as ie,C as X,D as Z,E as ae,F as oe,G as se,H as ce,J as le,K as ue,L as de,M as fe,N as pe,O as me,P as he,Q as ge,R as _e,S as ve,T as ye,U as be,V as xe,W as Se,X as Ce,Y as we,a as Te,at as Ee,b as De,ct as Oe,d as Q,et as ke,f as Ae,h as je,ht as Me,it as Ne,j as Pe,k as Fe,lt as Ie,m as Le,mt as Re,o as ze,ot as Be,p as Ve,q as He,st as Ue,u as We,ut as Ge,w as Ke,x as qe,y as Je,z as Ye}from"../chunks/Dw0lB87T.js";import{t as Xe}from"../chunks/B10O6g_0.js";import"../chunks/BJ9MroEG.js";import{C as Ze,E as Qe,S as $e,b as et,c as tt,s as nt,v as rt,w as it,x as at,y as ot}from"../chunks/DS6z9A2Z.js";import{n as st,t as ct}from"../chunks/DBfNs7Gy.js";import{t as lt}from"../chunks/BsiwHUbJ.js";import{t as $}from"../chunks/CURJqfmc.js";import{t as ut}from"../chunks/B0jlMHE2.js";import{a as dt,i as ft,n as pt,r as mt,t as ht}from"../chunks/Dq1oAZ8H.js";import{n as gt,t as _t}from"../chunks/DQJTN2sQ.js";import{t as vt}from"../chunks/BzR7f3_y.js";var yt=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><rect fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" x="4" y="4" width="7" height="7" rx="1.4"></rect><rect fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" x="13" y="4" width="7" height="7" rx="1.4"></rect><rect fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" x="4" y="13" width="7" height="7" rx="1.4"></rect><rect fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" x="13" y="13" width="7" height="7" rx="1.4"></rect></svg>`);function bt(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=yt();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var xt=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M6 4.5h10.5a1.8 1.8 0 0 1 1.8 1.8v13.2H7.5a1.5 1.5 0 0 1-1.5-1.5z"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M6 17.5h12.3"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M9.5 8.5h6"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M9.5 12h4"></path></svg>`);function St(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=xt();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Ct=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M12 7.5a5.5 5.5 0 0 0-9.5 0v10.5a5.5 5.5 0 0 1 9.5 0"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M12 7.5a5.5 5.5 0 0 1 9.5 0v10.5a5.5 5.5 0 0 0-9.5 0"></path></svg>`);function wt(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=Ct();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Tt=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><rect fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" x="3" y="9" width="7" height="6" rx="1.5"></rect><rect fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" x="14" y="9" width="7" height="6" rx="1.5"></rect><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M10 12h4"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M12 10l2 2-2 2"></path></svg>`);function Et(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=Tt();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Dt=q(`<svg aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12h4l2-5 4 10 2-5h6"></path></svg>`);function Ot(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=Dt();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var kt=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M12 5L3 9.5l9 4.5 9-4.5z"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M3 14.5l9 4.5 9-4.5"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M3 18.5l9 4.5 9-4.5"></path></svg>`);function At(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=kt();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var jt=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><circle fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" cx="12" cy="12" r="8.5"></circle><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M13.5 6.5l-4.5 6h4.5l-4.5 7"></path></svg>`);function Mt(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=jt();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Nt=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M6.5 18.5a4.5 4.5 0 0 1 .5-9H8a6 6 0 0 1 11.5 2.5 3.5 3.5 0 0 1-.5 6.5"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M12 11v7"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M9.5 15.5l2.5 2.5 2.5-2.5"></path></svg>`);function Pt(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=Nt();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Ft=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M4 11L12 4l8 7"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M6 10v9.5h12V10"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M10 19.5v-5.5h4v5.5"></path></svg>`);function It(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=Ft();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Lt=f(`<button role="tab"> </button>`),Rt=f(`<button role="tab"><!> </button>`),zt=f(`<div class="subtab-row svelte-7673iv"><div class="tabs svelte-7673iv" role="tablist"></div></div>`),Bt=f(`<nav class="nav-shell svelte-7673iv" aria-label="Admin sections"><div class="section-strip svelte-7673iv" role="tablist" aria-label="Sections"></div> <!></nav>`);function Vt(e,n){F(n,!0);let s=[{id:`health`,label:`Health`,tabs:[{id:`overview`,label:`Overview`,icon:bt},{id:`activity`,label:`Activity`,icon:Ot},{id:`containers`,label:`Systems`,icon:lt},{id:`logs`,label:`Journal`,icon:St},{id:`updates`,label:`Check-up`,icon:Pt},{id:`recovery`,label:`Recovery`,icon:It}]},{id:`mind`,label:`Mind`,tabs:[{id:`connections`,label:`AI Providers`,icon:dt}]},{id:`voice`,label:`Voice`,tabs:[{id:`voice`,label:`Voice`,icon:ut}]},{id:`routines`,label:`Routines`,tabs:[{id:`automations`,label:`Automations`,icon:Mt}]},{id:`capabilities`,label:`Capabilities`,tabs:[{id:`addons`,label:`Add-ons`,icon:At}]},{id:`knowledge`,label:`Knowledge`,tabs:[{id:`akm`,label:`Memory`,icon:wt},{id:`assistant`,label:`Assistant`,icon:gt},{id:`secrets`,label:`Secrets`,icon:vt},{id:`host-sharing`,label:`Sharing`,icon:Et}]}],c=W(()=>s.find(e=>e.tabs.some(e=>e.id===n.active))??s[0]);function l(e){if(e.key!==`ArrowLeft`&&e.key!==`ArrowRight`)return;e.preventDefault();let t=e.currentTarget,n=Array.from(t.parentElement?.querySelectorAll(`[role="tab"]`)??[]),r=n.indexOf(t);r!==-1&&n[e.key===`ArrowRight`?(r+1)%n.length:(r-1+n.length)%n.length]?.focus()}function u(e){if(e.key!==`ArrowLeft`&&e.key!==`ArrowRight`)return;e.preventDefault();let t=e.currentTarget,n=Array.from(t.parentElement?.querySelectorAll(`[role="tab"]`)??[]),r=n.indexOf(t);r!==-1&&n[e.key===`ArrowRight`?(r+1)%n.length:(r-1+n.length)%n.length]?.focus()}function f(e){n.onSelect(e.tabs[0].id)}var m=Bt(),h=H(m);M(h,21,()=>s,e=>e.id,(e,t)=>{var n=Lt();let s;var u=H(n,!0);K(n),v(()=>{s=p(n,1,`section-tab svelte-7673iv`,null,s,{"section-tab-active":i(c).id===i(t).id}),k(n,`aria-selected`,i(c).id===i(t).id),r(u,i(t).label)}),a(`click`,n,()=>f(i(t))),a(`keydown`,n,l),o(e,n)}),K(h);var g=x(h,2),_=e=>{var s=zt(),l=H(s);M(l,21,()=>i(c).tabs,e=>e.id,(e,s)=>{var c=Rt();let l;var d=H(c);t(d,()=>i(s).icon,(e,t)=>{t(e,{size:13})});var f=x(d);K(c),v(()=>{l=p(c,1,`tab svelte-7673iv`,null,l,{"tab-active":n.active===i(s).id}),k(c,`aria-selected`,n.active===i(s).id),r(f,` ${i(s).label??``}`)}),a(`click`,c,()=>n.onSelect(i(s).id)),a(`keydown`,c,u),o(e,c)}),K(l),K(s),v(()=>k(l,`aria-label`,`${i(c).label??``} tabs`)),o(e,s)};d(g,e=>{i(c).tabs.length>1&&e(_)}),K(m),o(e,m),B()}h([`click`,`keydown`]);var Ht=f(`<button class="btn btn-secondary">View containers</button>`),Ut=f(`<section role="status" aria-live="polite"><span class="hero-icon svelte-10n23hu" aria-hidden="true"><!></span> <div class="hero-text svelte-10n23hu"><h2 class="hero-title svelte-10n23hu"> </h2> <p class="hero-detail svelte-10n23hu"> </p></div> <div class="hero-actions svelte-10n23hu"><button class="btn btn-secondary"> </button> <!> <button class="btn btn-secondary"> </button></div></section>`);function Wt(e,t){F(t,!0);var n=Ut(),i=H(n),s=H(i),c=e=>{_t(e,{size:22})},l=e=>{ft(e,{size:22})},u=e=>{Xe(e,{size:22})};d(s,e=>{t.status===`warning`?e(c):t.status===`ok`?e(l,1):e(u,-1)}),K(i);var f=x(i,2),m=H(f),h=H(m,!0);K(m);var g=x(m,2),_=H(g,!0);K(g),K(f);var y=x(f,2),b=H(y),S=H(b,!0);K(b);var C=x(b,2),w=e=>{var n=Ht();a(`click`,n,()=>t.onNavigate(`containers`)),o(e,n)};d(C,e=>{t.status===`warning`&&e(w)});var T=x(C,2),E=H(T,!0);K(T),K(y),K(n),v(()=>{p(n,1,`hero hero--${t.status??``}`,`svelte-10n23hu`),r(h,t.title),r(_,t.detail),b.disabled=t.healthLoading,r(S,t.healthLoading?`Checking…`:`Re-check`),T.disabled=t.anyDangerousLoading||!t.tokenStored,r(E,t.applyLoading?`Applying…`:`Apply config & restart`)}),a(`click`,b,function(...e){t.onCheckHealth?.apply(this,e)}),a(`click`,T,function(...e){t.onApplyChanges?.apply(this,e)}),o(e,n),B()}h([`click`]);var Gt=f(`<section><div class="output-header svelte-10sij3c"><h3 class="svelte-10sij3c">Operation output</h3> <button class="btn-ghost" aria-label="Dismiss"><!></button></div> <pre class="output-code svelte-10sij3c"> </pre></section>`);function Kt(e,t){var n=s(),i=j(n),c=e=>{var n=Gt(),i=H(n),s=x(H(i),2);nt(H(s),{size:14}),K(s),K(i);var c=x(i,2),l=H(c,!0);K(c),K(n),v(()=>{p(n,1,`output-section output-section--${t.operationResultType??``}`,`svelte-10sij3c`),r(l,t.operationResult)}),a(`click`,s,function(...e){t.onDismissResult?.apply(this,e)}),o(e,n)};d(i,e=>{t.operationResult&&e(c)}),o(e,n)}h([`click`]);var qt=f(`<span class="tile-metric tile-metric--icon svelte-19hpfg" aria-hidden="true"><!></span>`),Jt=f(`<span class="tile-metric-sub svelte-19hpfg"> </span>`),Yt=f(` <!>`,1),Xt=f(`<span><!></span>`),Zt=f(`<span> </span>`),Qt=f(`<button class="tile svelte-19hpfg"><!> <span class="tile-label svelte-19hpfg"> </span> <!></button>`);function $t(t,n){let i=L(n,`value`,3,null),s=L(n,`sub`,3,null),c=L(n,`loaded`,3,!0);var l=Qt(),f=H(l),m=e=>{var t=qt();u(H(t),()=>n.icon),K(t),o(e,t)},h=t=>{var a=Xt();let l;var u=H(a),f=e=>{var t=Yt(),n=j(t,!0),a=x(n),c=e=>{var t=Jt(),n=H(t,!0);K(t),v(()=>r(n,s())),o(e,t)};d(a,e=>{s()&&e(c)}),v(()=>r(n,i())),o(e,t)},m=t=>{o(t,e(`—`))};d(u,e=>{c()?e(f):e(m,-1)}),K(a),v(()=>l=p(a,1,`tile-metric svelte-19hpfg`,null,l,{"tile-metric--ok":n.status===`ok`,"tile-metric--warn":n.status===`warn`})),o(t,a)};d(f,e=>{n.icon?e(m):e(h,-1)});var g=x(f,2),_=H(g,!0);K(g);var y=x(g,2),b=e=>{var t=Zt();let i;var a=H(t,!0);K(t),v(()=>{i=p(t,1,`s-tile-badge svelte-19hpfg`,null,i,{"s-tile-badge--ok":n.status===`ok`,"s-tile-badge--warn":n.status===`warn`}),r(a,n.badge)}),o(e,t)};d(y,e=>{n.badge&&e(b)}),K(l),v(()=>r(_,n.label)),a(`click`,l,function(...e){n.onClick?.apply(this,e)}),o(t,l)}h([`click`]);var en=f(`<div class="akm-metric svelte-dcgqe1"><span class="akm-num svelte-dcgqe1"> </span> <span class="akm-cap svelte-dcgqe1">Task failure rate</span></div>`),tn=f(`<div class="akm-metrics svelte-dcgqe1"><div class="akm-metric svelte-dcgqe1"><span class="akm-num svelte-dcgqe1"> </span> <span class="akm-cap svelte-dcgqe1">Indexed assets</span></div> <div class="akm-metric svelte-dcgqe1"><span class="akm-num svelte-dcgqe1"> <span class="akm-num-sub svelte-dcgqe1"> </span></span> <span class="akm-cap svelte-dcgqe1">Health checks passing</span></div> <div class="akm-metric svelte-dcgqe1"><span class="akm-num svelte-dcgqe1"> </span> <span class="akm-cap svelte-dcgqe1">Semantic search</span></div> <!></div>`),nn=f(`<p class="akm-unavailable svelte-dcgqe1">Metrics unavailable — the akm CLI isn't reachable from the admin host.</p>`),rn=f(`<button class="akm-card svelte-dcgqe1" aria-label="AKM health — open Knowledge settings"><div class="akm-head svelte-dcgqe1"><span class="akm-title svelte-dcgqe1">AKM runtime health</span> <span> </span></div> <!></button>`);function an(e,t){F(t,!0);var n=rn(),i=H(n),s=x(H(i),2),c=H(s,!0);K(s),K(i);var l=x(i,2),u=e=>{var n=tn(),i=H(n),a=H(i),s=H(a,!0);K(a),b(2),K(i);var c=x(i,2),l=H(c),u=H(l,!0),f=x(u),p=H(f);K(f),K(l),b(2),K(c);var m=x(c,2),h=H(m),g=H(h,!0);K(h),b(2),K(m);var _=x(m,2),y=e=>{var n=en(),i=H(n),a=H(i);K(i),b(2),K(n),v(e=>r(a,`${e??``}%`),[()=>Math.round(t.akm.metrics.taskFailRate*100)]),o(e,n)};d(_,e=>{t.akm.metrics&&typeof t.akm.metrics.taskFailRate==`number`&&e(y)}),K(n),v(e=>{r(s,e),r(u,t.akm.checks.pass),r(p,`/${t.checkTotal??``}`),r(g,t.akm.index?.hasEmbeddings?`On`:`Off`)},[()=>t.akm.index?.entryCount?.toLocaleString()??`—`]),o(e,n)},f=e=>{o(e,nn())};d(l,e=>{t.akm&&t.akm.available?e(u):e(f,-1)}),K(n),v(()=>{p(s,1,`badge ${t.badge.cls??``}`,`svelte-dcgqe1`),r(c,t.badge.label)}),a(`click`,n,()=>t.onNavigate(`akm`)),o(e,n),B()}h([`click`]);var on=f(`<div class="shortcut-grid svelte-8y2vdf"><button class="shortcut svelte-8y2vdf"><span class="shortcut-name svelte-8y2vdf">AI Providers</span> <span class="shortcut-desc svelte-8y2vdf">Models &amp; provider credentials</span></button> <button class="shortcut svelte-8y2vdf"><span class="shortcut-name svelte-8y2vdf">Knowledge</span> <span class="shortcut-desc svelte-8y2vdf">Assistant memory &amp; behavior</span></button> <button class="shortcut svelte-8y2vdf"><span class="shortcut-name svelte-8y2vdf">Voice</span> <span class="shortcut-desc svelte-8y2vdf">Speech-to-text &amp; text-to-speech</span></button> <button class="shortcut svelte-8y2vdf"><span class="shortcut-name svelte-8y2vdf">Portals &amp; add-ons</span> <span class="shortcut-desc svelte-8y2vdf">Discord, Slack, API &amp; more</span></button> <button class="shortcut svelte-8y2vdf"><span class="shortcut-name svelte-8y2vdf">Secrets</span> <span class="shortcut-desc svelte-8y2vdf">Stack &amp; portal credentials</span></button> <a class="shortcut svelte-8y2vdf" href="/setup?rerun=1"><span class="shortcut-name svelte-8y2vdf">Re-run setup</span> <span class="shortcut-desc svelte-8y2vdf">Walk through the setup wizard again</span></a></div>`);function sn(e,t){F(t,!0);var n=on(),r=H(n),i=x(r,2),s=x(i,2),c=x(s,2),l=x(c,2);b(2),K(n),a(`click`,r,()=>t.onNavigate(`connections`)),a(`click`,i,()=>t.onNavigate(`akm`)),a(`click`,s,()=>t.onNavigate(`voice`)),a(`click`,c,()=>t.onNavigate(`addons`)),a(`click`,l,()=>t.onNavigate(`secrets`)),o(e,n),B()}h([`click`]);var cn=f(`<!> <!> <div class="tile-grid svelte-xz862u"><!> <!> <!></div> <h3 class="section-heading svelte-xz862u">Knowledge base (AKM)</h3> <!> <h3 class="section-heading svelte-xz862u">Configure</h3> <!>`,1);function ln(e,t){F(t,!0);let n=w(null);A(()=>{tt.load(),Fe().then(e=>{U(n,e,!0)}).catch(()=>{U(n,{available:!1},!0)})});let r=W(()=>{if(!i(n)||!i(n).available)return{label:`Unavailable`,cls:`badge-neutral`};let e=i(n).status;return e!==`ok`&&e!==`warn`&&e!==`fail`&&(e=i(n).checks.fail>0?`fail`:i(n).checks.warn>0?`warn`:`ok`),e===`ok`?{label:`Healthy`,cls:`badge-success`}:e===`warn`?{label:`Warnings`,cls:`badge-warning`}:{label:`Issues`,cls:`badge-danger`}}),a=W(()=>i(n)&&i(n).available?i(n).checks.pass+i(n).checks.warn+i(n).checks.fail:0);W(()=>t.automationsData?.automations.length??0),W(()=>t.automationsData?.automations.filter(e=>e.enabled).length??0);let s=W(()=>t.managedServices.length>0?t.managedServices:[...t.mergedServices.keys()]),c=W(()=>{if(i(s).length===0)return null;let e=i(s).filter(e=>t.mergedServices.get(e)===`running`).length;return{total:i(s).length,running:e}}),l=W(()=>i(s).filter(e=>t.mergedServices.get(e)!==`running`)),u=W(()=>{if(!i(c))return{status:`unknown`,title:`Checking services…`,detail:`Fetching the latest status from Docker.`};if(i(c).running===i(c).total&&i(c).total>0)return{status:`ok`,title:`All systems operational`,detail:`${i(c).total} of ${i(c).total} services are running normally.`};let e=i(c).total-i(c).running,t=i(l).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(`, `);return{status:`warning`,title:`${e} of ${i(c).total} services not running`,detail:t?`Not running: ${t}.`:`One or more services need attention.`}});var d=cn(),f=j(d);Wt(f,{get status(){return i(u).status},get title(){return i(u).title},get detail(){return i(u).detail},get healthLoading(){return t.healthLoading},get applyLoading(){return t.applyLoading},get anyDangerousLoading(){return t.anyDangerousLoading},get tokenStored(){return t.tokenStored},get onCheckHealth(){return t.onCheckHealth},get onApplyChanges(){return t.onApplyChanges},get onNavigate(){return t.onNavigate}});var p=x(f,2);Kt(p,{get operationResult(){return t.operationResult},get operationResultType(){return t.operationResultType},get onDismissResult(){return t.onDismissResult}});var m=x(p,2),h=H(m);{let e=W(()=>i(c)?.running),n=W(()=>i(c)?`/${i(c).total}`:null),r=W(()=>!!i(c)),a=W(()=>i(c)?.running===i(c)?.total?`ok`:`warn`),o=W(()=>i(c)?.running===i(c)?.total?`operational`:`${(i(c)?.total??0)-(i(c)?.running??0)} down`);$t(h,{label:`Services running`,onClick:()=>t.onNavigate(`containers`),get value(){return i(e)},get sub(){return i(n)},get loaded(){return i(r)},get status(){return i(a)},get badge(){return i(o)}})}var g=x(h,2);$t(g,{label:`View logs`,onClick:()=>t.onNavigate(`logs`),icon:e=>{mt(e,{size:22})},$$slots:{icon:!0}}),$t(x(g,2),{label:`Check for updates`,onClick:()=>t.onNavigate(`updates`),icon:e=>{Pt(e,{size:22})},$$slots:{icon:!0}}),K(m);var _=x(m,4);an(_,{get akm(){return i(n)},get badge(){return i(r)},get checkTotal(){return i(a)},get onNavigate(){return t.onNavigate}}),sn(x(_,4),{get onNavigate(){return t.onNavigate}}),o(e,d),B()}var un=f(`<p class="status-live svelte-7mkeya" role="status" aria-live="polite" aria-atomic="true"> </p>`),dn=f(`<p class="result-message result-error svelte-7mkeya" role="alert"> </p>`),fn=f(`<p class="loading-line svelte-7mkeya"><!> Loading versions…</p>`),pn=f(`<!> Checking…`,1),mn=f(`<p class="result-message result-error svelte-7mkeya" role="alert"> </p>`),hn=f(`<div class="auto-action-row svelte-7mkeya"><button class="btn btn-primary"><!></button> <!></div>`),gn=f(`<p class="registry-warning svelte-7mkeya"> </p>`),_n=f(`<div role="status"></div>`),vn=f(`<span class="val-unavailable svelte-7mkeya">unavailable</span>`),yn=f(`<code> </code>`),bn=f(`<span class="badge badge-warn svelte-7mkeya">?</span>`),xn=f(`<span class="badge badge-update svelte-7mkeya">update</span>`),Sn=f(`<span class="badge badge-ok svelte-7mkeya">current</span>`),Cn=f(`<tr><td class="col-component svelte-7mkeya"> </td><td class="col-current svelte-7mkeya"><code class="svelte-7mkeya"> </code></td><td class="col-latest svelte-7mkeya"><!></td><td class="col-status svelte-7mkeya"><!></td></tr>`),wn=f(`<!> Applying…`,1),Tn=f(`<button class="btn btn-primary"><!></button> <p class="apply-hint svelte-7mkeya">Saves the versions shown above, then recreates the stack (~1 min offline). Your data is kept.</p>`,1),En=f(`<p class="up-to-date svelte-7mkeya">Everything is up to date.</p>`),Dn=f(`<div class="latest-results svelte-7mkeya"><!> <table class="version-table svelte-7mkeya" aria-label="Version comparison"><thead><tr><th scope="col" class="col-component svelte-7mkeya">Component</th><th scope="col" class="col-current svelte-7mkeya">Current</th><th scope="col" class="col-latest svelte-7mkeya">Latest</th><th scope="col" class="col-status svelte-7mkeya">Status</th></tr></thead><tbody></tbody></table> <div class="auto-action-row svelte-7mkeya"><!> <button class="btn btn-ghost recheck-btn svelte-7mkeya"> </button></div></div>`),On=f(`<section class="auto-section svelte-7mkeya" aria-labelledby="auto-mode-desc"><p id="auto-mode-desc" class="auto-description svelte-7mkeya">Check Docker Hub and npm for the latest stable release of each image and
1
+ import{B as e,D as t,E as n,F as r,G as i,H as a,I as o,L as s,M as c,N as l,O as u,P as d,R as f,S as p,U as m,V as h,W as g,X as _,Z as v,_ as y,_t as b,at as x,b as S,bt as C,ct as w,d as T,et as E,f as D,g as O,h as k,i as A,it as j,j as M,l as N,m as P,mt as F,nt as I,o as L,ot as R,p as z,pt as B,r as V,rt as H,st as U,tt as ee,u as te,ut as W,v as G,vt as K,y as ne,z as q}from"../chunks/BQ6MdAtF.js";import{n as J}from"../chunks/DGeeBgNm.js";import"../chunks/xihTtKlq.js";import{$ as Y,A as re,B as ie,C as X,D as Z,E as ae,F as oe,G as se,H as ce,J as le,K as ue,L as de,M as fe,N as pe,O as me,P as he,Q as ge,R as _e,S as ve,T as ye,U as be,V as xe,W as Se,X as Ce,Y as we,a as Te,at as Ee,b as De,ct as Oe,d as Q,et as ke,f as Ae,h as je,ht as Me,it as Ne,j as Pe,k as Fe,lt as Ie,m as Le,mt as Re,o as ze,ot as Be,p as Ve,q as He,st as Ue,u as We,ut as Ge,w as Ke,x as qe,y as Je,z as Ye}from"../chunks/P_sesESA.js";import{t as Xe}from"../chunks/B10O6g_0.js";import"../chunks/I5Apl_kz.js";import{C as Ze,E as Qe,S as $e,b as et,c as tt,s as nt,v as rt,w as it,x as at,y as ot}from"../chunks/DdDv4oSx.js";import{n as st,t as ct}from"../chunks/Dx8DFbGm.js";import{t as lt}from"../chunks/BsiwHUbJ.js";import{t as $}from"../chunks/CURJqfmc.js";import{t as ut}from"../chunks/B0jlMHE2.js";import{a as dt,i as ft,n as pt,r as mt,t as ht}from"../chunks/DPG3tbtl.js";import{n as gt,t as _t}from"../chunks/DQJTN2sQ.js";import{t as vt}from"../chunks/BzR7f3_y.js";var yt=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><rect fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" x="4" y="4" width="7" height="7" rx="1.4"></rect><rect fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" x="13" y="4" width="7" height="7" rx="1.4"></rect><rect fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" x="4" y="13" width="7" height="7" rx="1.4"></rect><rect fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" x="13" y="13" width="7" height="7" rx="1.4"></rect></svg>`);function bt(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=yt();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var xt=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M6 4.5h10.5a1.8 1.8 0 0 1 1.8 1.8v13.2H7.5a1.5 1.5 0 0 1-1.5-1.5z"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M6 17.5h12.3"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M9.5 8.5h6"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M9.5 12h4"></path></svg>`);function St(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=xt();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Ct=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M12 7.5a5.5 5.5 0 0 0-9.5 0v10.5a5.5 5.5 0 0 1 9.5 0"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M12 7.5a5.5 5.5 0 0 1 9.5 0v10.5a5.5 5.5 0 0 0-9.5 0"></path></svg>`);function wt(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=Ct();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Tt=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><rect fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" x="3" y="9" width="7" height="6" rx="1.5"></rect><rect fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" x="14" y="9" width="7" height="6" rx="1.5"></rect><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M10 12h4"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M12 10l2 2-2 2"></path></svg>`);function Et(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=Tt();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Dt=q(`<svg aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12h4l2-5 4 10 2-5h6"></path></svg>`);function Ot(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=Dt();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var kt=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M12 5L3 9.5l9 4.5 9-4.5z"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M3 14.5l9 4.5 9-4.5"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M3 18.5l9 4.5 9-4.5"></path></svg>`);function At(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=kt();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var jt=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><circle fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" cx="12" cy="12" r="8.5"></circle><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M13.5 6.5l-4.5 6h4.5l-4.5 7"></path></svg>`);function Mt(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=jt();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Nt=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M6.5 18.5a4.5 4.5 0 0 1 .5-9H8a6 6 0 0 1 11.5 2.5 3.5 3.5 0 0 1-.5 6.5"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M12 11v7"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M9.5 15.5l2.5 2.5 2.5-2.5"></path></svg>`);function Pt(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=Nt();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Ft=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M4 11L12 4l8 7"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M6 10v9.5h12V10"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M10 19.5v-5.5h4v5.5"></path></svg>`);function It(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=Ft();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Lt=f(`<button role="tab"> </button>`),Rt=f(`<button role="tab"><!> </button>`),zt=f(`<div class="subtab-row svelte-7673iv"><div class="tabs svelte-7673iv" role="tablist"></div></div>`),Bt=f(`<nav class="nav-shell svelte-7673iv" aria-label="Admin sections"><div class="section-strip svelte-7673iv" role="tablist" aria-label="Sections"></div> <!></nav>`);function Vt(e,n){F(n,!0);let s=[{id:`health`,label:`Health`,tabs:[{id:`overview`,label:`Overview`,icon:bt},{id:`activity`,label:`Activity`,icon:Ot},{id:`containers`,label:`Systems`,icon:lt},{id:`logs`,label:`Journal`,icon:St},{id:`updates`,label:`Check-up`,icon:Pt},{id:`recovery`,label:`Recovery`,icon:It}]},{id:`mind`,label:`Mind`,tabs:[{id:`connections`,label:`AI Providers`,icon:dt}]},{id:`voice`,label:`Voice`,tabs:[{id:`voice`,label:`Voice`,icon:ut}]},{id:`routines`,label:`Routines`,tabs:[{id:`automations`,label:`Automations`,icon:Mt}]},{id:`capabilities`,label:`Capabilities`,tabs:[{id:`addons`,label:`Add-ons`,icon:At}]},{id:`knowledge`,label:`Knowledge`,tabs:[{id:`akm`,label:`Memory`,icon:wt},{id:`assistant`,label:`Assistant`,icon:gt},{id:`secrets`,label:`Secrets`,icon:vt},{id:`host-sharing`,label:`Sharing`,icon:Et}]}],c=W(()=>s.find(e=>e.tabs.some(e=>e.id===n.active))??s[0]);function l(e){if(e.key!==`ArrowLeft`&&e.key!==`ArrowRight`)return;e.preventDefault();let t=e.currentTarget,n=Array.from(t.parentElement?.querySelectorAll(`[role="tab"]`)??[]),r=n.indexOf(t);r!==-1&&n[e.key===`ArrowRight`?(r+1)%n.length:(r-1+n.length)%n.length]?.focus()}function u(e){if(e.key!==`ArrowLeft`&&e.key!==`ArrowRight`)return;e.preventDefault();let t=e.currentTarget,n=Array.from(t.parentElement?.querySelectorAll(`[role="tab"]`)??[]),r=n.indexOf(t);r!==-1&&n[e.key===`ArrowRight`?(r+1)%n.length:(r-1+n.length)%n.length]?.focus()}function f(e){n.onSelect(e.tabs[0].id)}var m=Bt(),h=H(m);M(h,21,()=>s,e=>e.id,(e,t)=>{var n=Lt();let s;var u=H(n,!0);K(n),v(()=>{s=p(n,1,`section-tab svelte-7673iv`,null,s,{"section-tab-active":i(c).id===i(t).id}),k(n,`aria-selected`,i(c).id===i(t).id),r(u,i(t).label)}),a(`click`,n,()=>f(i(t))),a(`keydown`,n,l),o(e,n)}),K(h);var g=x(h,2),_=e=>{var s=zt(),l=H(s);M(l,21,()=>i(c).tabs,e=>e.id,(e,s)=>{var c=Rt();let l;var d=H(c);t(d,()=>i(s).icon,(e,t)=>{t(e,{size:13})});var f=x(d);K(c),v(()=>{l=p(c,1,`tab svelte-7673iv`,null,l,{"tab-active":n.active===i(s).id}),k(c,`aria-selected`,n.active===i(s).id),r(f,` ${i(s).label??``}`)}),a(`click`,c,()=>n.onSelect(i(s).id)),a(`keydown`,c,u),o(e,c)}),K(l),K(s),v(()=>k(l,`aria-label`,`${i(c).label??``} tabs`)),o(e,s)};d(g,e=>{i(c).tabs.length>1&&e(_)}),K(m),o(e,m),B()}h([`click`,`keydown`]);var Ht=f(`<button class="btn btn-secondary">View containers</button>`),Ut=f(`<section role="status" aria-live="polite"><span class="hero-icon svelte-10n23hu" aria-hidden="true"><!></span> <div class="hero-text svelte-10n23hu"><h2 class="hero-title svelte-10n23hu"> </h2> <p class="hero-detail svelte-10n23hu"> </p></div> <div class="hero-actions svelte-10n23hu"><button class="btn btn-secondary"> </button> <!> <button class="btn btn-secondary"> </button></div></section>`);function Wt(e,t){F(t,!0);var n=Ut(),i=H(n),s=H(i),c=e=>{_t(e,{size:22})},l=e=>{ft(e,{size:22})},u=e=>{Xe(e,{size:22})};d(s,e=>{t.status===`warning`?e(c):t.status===`ok`?e(l,1):e(u,-1)}),K(i);var f=x(i,2),m=H(f),h=H(m,!0);K(m);var g=x(m,2),_=H(g,!0);K(g),K(f);var y=x(f,2),b=H(y),S=H(b,!0);K(b);var C=x(b,2),w=e=>{var n=Ht();a(`click`,n,()=>t.onNavigate(`containers`)),o(e,n)};d(C,e=>{t.status===`warning`&&e(w)});var T=x(C,2),E=H(T,!0);K(T),K(y),K(n),v(()=>{p(n,1,`hero hero--${t.status??``}`,`svelte-10n23hu`),r(h,t.title),r(_,t.detail),b.disabled=t.healthLoading,r(S,t.healthLoading?`Checking…`:`Re-check`),T.disabled=t.anyDangerousLoading||!t.tokenStored,r(E,t.applyLoading?`Applying…`:`Apply config & restart`)}),a(`click`,b,function(...e){t.onCheckHealth?.apply(this,e)}),a(`click`,T,function(...e){t.onApplyChanges?.apply(this,e)}),o(e,n),B()}h([`click`]);var Gt=f(`<section><div class="output-header svelte-10sij3c"><h3 class="svelte-10sij3c">Operation output</h3> <button class="btn-ghost" aria-label="Dismiss"><!></button></div> <pre class="output-code svelte-10sij3c"> </pre></section>`);function Kt(e,t){var n=s(),i=j(n),c=e=>{var n=Gt(),i=H(n),s=x(H(i),2);nt(H(s),{size:14}),K(s),K(i);var c=x(i,2),l=H(c,!0);K(c),K(n),v(()=>{p(n,1,`output-section output-section--${t.operationResultType??``}`,`svelte-10sij3c`),r(l,t.operationResult)}),a(`click`,s,function(...e){t.onDismissResult?.apply(this,e)}),o(e,n)};d(i,e=>{t.operationResult&&e(c)}),o(e,n)}h([`click`]);var qt=f(`<span class="tile-metric tile-metric--icon svelte-19hpfg" aria-hidden="true"><!></span>`),Jt=f(`<span class="tile-metric-sub svelte-19hpfg"> </span>`),Yt=f(` <!>`,1),Xt=f(`<span><!></span>`),Zt=f(`<span> </span>`),Qt=f(`<button class="tile svelte-19hpfg"><!> <span class="tile-label svelte-19hpfg"> </span> <!></button>`);function $t(t,n){let i=L(n,`value`,3,null),s=L(n,`sub`,3,null),c=L(n,`loaded`,3,!0);var l=Qt(),f=H(l),m=e=>{var t=qt();u(H(t),()=>n.icon),K(t),o(e,t)},h=t=>{var a=Xt();let l;var u=H(a),f=e=>{var t=Yt(),n=j(t,!0),a=x(n),c=e=>{var t=Jt(),n=H(t,!0);K(t),v(()=>r(n,s())),o(e,t)};d(a,e=>{s()&&e(c)}),v(()=>r(n,i())),o(e,t)},m=t=>{o(t,e(`—`))};d(u,e=>{c()?e(f):e(m,-1)}),K(a),v(()=>l=p(a,1,`tile-metric svelte-19hpfg`,null,l,{"tile-metric--ok":n.status===`ok`,"tile-metric--warn":n.status===`warn`})),o(t,a)};d(f,e=>{n.icon?e(m):e(h,-1)});var g=x(f,2),_=H(g,!0);K(g);var y=x(g,2),b=e=>{var t=Zt();let i;var a=H(t,!0);K(t),v(()=>{i=p(t,1,`s-tile-badge svelte-19hpfg`,null,i,{"s-tile-badge--ok":n.status===`ok`,"s-tile-badge--warn":n.status===`warn`}),r(a,n.badge)}),o(e,t)};d(y,e=>{n.badge&&e(b)}),K(l),v(()=>r(_,n.label)),a(`click`,l,function(...e){n.onClick?.apply(this,e)}),o(t,l)}h([`click`]);var en=f(`<div class="akm-metric svelte-dcgqe1"><span class="akm-num svelte-dcgqe1"> </span> <span class="akm-cap svelte-dcgqe1">Task failure rate</span></div>`),tn=f(`<div class="akm-metrics svelte-dcgqe1"><div class="akm-metric svelte-dcgqe1"><span class="akm-num svelte-dcgqe1"> </span> <span class="akm-cap svelte-dcgqe1">Indexed assets</span></div> <div class="akm-metric svelte-dcgqe1"><span class="akm-num svelte-dcgqe1"> <span class="akm-num-sub svelte-dcgqe1"> </span></span> <span class="akm-cap svelte-dcgqe1">Health checks passing</span></div> <div class="akm-metric svelte-dcgqe1"><span class="akm-num svelte-dcgqe1"> </span> <span class="akm-cap svelte-dcgqe1">Semantic search</span></div> <!></div>`),nn=f(`<p class="akm-unavailable svelte-dcgqe1">Metrics unavailable — the akm CLI isn't reachable from the admin host.</p>`),rn=f(`<button class="akm-card svelte-dcgqe1" aria-label="AKM health — open Knowledge settings"><div class="akm-head svelte-dcgqe1"><span class="akm-title svelte-dcgqe1">AKM runtime health</span> <span> </span></div> <!></button>`);function an(e,t){F(t,!0);var n=rn(),i=H(n),s=x(H(i),2),c=H(s,!0);K(s),K(i);var l=x(i,2),u=e=>{var n=tn(),i=H(n),a=H(i),s=H(a,!0);K(a),b(2),K(i);var c=x(i,2),l=H(c),u=H(l,!0),f=x(u),p=H(f);K(f),K(l),b(2),K(c);var m=x(c,2),h=H(m),g=H(h,!0);K(h),b(2),K(m);var _=x(m,2),y=e=>{var n=en(),i=H(n),a=H(i);K(i),b(2),K(n),v(e=>r(a,`${e??``}%`),[()=>Math.round(t.akm.metrics.taskFailRate*100)]),o(e,n)};d(_,e=>{t.akm.metrics&&typeof t.akm.metrics.taskFailRate==`number`&&e(y)}),K(n),v(e=>{r(s,e),r(u,t.akm.checks.pass),r(p,`/${t.checkTotal??``}`),r(g,t.akm.index?.hasEmbeddings?`On`:`Off`)},[()=>t.akm.index?.entryCount?.toLocaleString()??`—`]),o(e,n)},f=e=>{o(e,nn())};d(l,e=>{t.akm&&t.akm.available?e(u):e(f,-1)}),K(n),v(()=>{p(s,1,`badge ${t.badge.cls??``}`,`svelte-dcgqe1`),r(c,t.badge.label)}),a(`click`,n,()=>t.onNavigate(`akm`)),o(e,n),B()}h([`click`]);var on=f(`<div class="shortcut-grid svelte-8y2vdf"><button class="shortcut svelte-8y2vdf"><span class="shortcut-name svelte-8y2vdf">AI Providers</span> <span class="shortcut-desc svelte-8y2vdf">Models &amp; provider credentials</span></button> <button class="shortcut svelte-8y2vdf"><span class="shortcut-name svelte-8y2vdf">Knowledge</span> <span class="shortcut-desc svelte-8y2vdf">Assistant memory &amp; behavior</span></button> <button class="shortcut svelte-8y2vdf"><span class="shortcut-name svelte-8y2vdf">Voice</span> <span class="shortcut-desc svelte-8y2vdf">Speech-to-text &amp; text-to-speech</span></button> <button class="shortcut svelte-8y2vdf"><span class="shortcut-name svelte-8y2vdf">Portals &amp; add-ons</span> <span class="shortcut-desc svelte-8y2vdf">Discord, Slack, API &amp; more</span></button> <button class="shortcut svelte-8y2vdf"><span class="shortcut-name svelte-8y2vdf">Secrets</span> <span class="shortcut-desc svelte-8y2vdf">Stack &amp; portal credentials</span></button> <a class="shortcut svelte-8y2vdf" href="/setup?rerun=1"><span class="shortcut-name svelte-8y2vdf">Re-run setup</span> <span class="shortcut-desc svelte-8y2vdf">Walk through the setup wizard again</span></a></div>`);function sn(e,t){F(t,!0);var n=on(),r=H(n),i=x(r,2),s=x(i,2),c=x(s,2),l=x(c,2);b(2),K(n),a(`click`,r,()=>t.onNavigate(`connections`)),a(`click`,i,()=>t.onNavigate(`akm`)),a(`click`,s,()=>t.onNavigate(`voice`)),a(`click`,c,()=>t.onNavigate(`addons`)),a(`click`,l,()=>t.onNavigate(`secrets`)),o(e,n),B()}h([`click`]);var cn=f(`<!> <!> <div class="tile-grid svelte-xz862u"><!> <!> <!></div> <h3 class="section-heading svelte-xz862u">Knowledge base (AKM)</h3> <!> <h3 class="section-heading svelte-xz862u">Configure</h3> <!>`,1);function ln(e,t){F(t,!0);let n=w(null);A(()=>{tt.load(),Fe().then(e=>{U(n,e,!0)}).catch(()=>{U(n,{available:!1},!0)})});let r=W(()=>{if(!i(n)||!i(n).available)return{label:`Unavailable`,cls:`badge-neutral`};let e=i(n).status;return e!==`ok`&&e!==`warn`&&e!==`fail`&&(e=i(n).checks.fail>0?`fail`:i(n).checks.warn>0?`warn`:`ok`),e===`ok`?{label:`Healthy`,cls:`badge-success`}:e===`warn`?{label:`Warnings`,cls:`badge-warning`}:{label:`Issues`,cls:`badge-danger`}}),a=W(()=>i(n)&&i(n).available?i(n).checks.pass+i(n).checks.warn+i(n).checks.fail:0);W(()=>t.automationsData?.automations.length??0),W(()=>t.automationsData?.automations.filter(e=>e.enabled).length??0);let s=W(()=>t.managedServices.length>0?t.managedServices:[...t.mergedServices.keys()]),c=W(()=>{if(i(s).length===0)return null;let e=i(s).filter(e=>t.mergedServices.get(e)===`running`).length;return{total:i(s).length,running:e}}),l=W(()=>i(s).filter(e=>t.mergedServices.get(e)!==`running`)),u=W(()=>{if(!i(c))return{status:`unknown`,title:`Checking services…`,detail:`Fetching the latest status from Docker.`};if(i(c).running===i(c).total&&i(c).total>0)return{status:`ok`,title:`All systems operational`,detail:`${i(c).total} of ${i(c).total} services are running normally.`};let e=i(c).total-i(c).running,t=i(l).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(`, `);return{status:`warning`,title:`${e} of ${i(c).total} services not running`,detail:t?`Not running: ${t}.`:`One or more services need attention.`}});var d=cn(),f=j(d);Wt(f,{get status(){return i(u).status},get title(){return i(u).title},get detail(){return i(u).detail},get healthLoading(){return t.healthLoading},get applyLoading(){return t.applyLoading},get anyDangerousLoading(){return t.anyDangerousLoading},get tokenStored(){return t.tokenStored},get onCheckHealth(){return t.onCheckHealth},get onApplyChanges(){return t.onApplyChanges},get onNavigate(){return t.onNavigate}});var p=x(f,2);Kt(p,{get operationResult(){return t.operationResult},get operationResultType(){return t.operationResultType},get onDismissResult(){return t.onDismissResult}});var m=x(p,2),h=H(m);{let e=W(()=>i(c)?.running),n=W(()=>i(c)?`/${i(c).total}`:null),r=W(()=>!!i(c)),a=W(()=>i(c)?.running===i(c)?.total?`ok`:`warn`),o=W(()=>i(c)?.running===i(c)?.total?`operational`:`${(i(c)?.total??0)-(i(c)?.running??0)} down`);$t(h,{label:`Services running`,onClick:()=>t.onNavigate(`containers`),get value(){return i(e)},get sub(){return i(n)},get loaded(){return i(r)},get status(){return i(a)},get badge(){return i(o)}})}var g=x(h,2);$t(g,{label:`View logs`,onClick:()=>t.onNavigate(`logs`),icon:e=>{mt(e,{size:22})},$$slots:{icon:!0}}),$t(x(g,2),{label:`Check for updates`,onClick:()=>t.onNavigate(`updates`),icon:e=>{Pt(e,{size:22})},$$slots:{icon:!0}}),K(m);var _=x(m,4);an(_,{get akm(){return i(n)},get badge(){return i(r)},get checkTotal(){return i(a)},get onNavigate(){return t.onNavigate}}),sn(x(_,4),{get onNavigate(){return t.onNavigate}}),o(e,d),B()}var un=f(`<p class="status-live svelte-7mkeya" role="status" aria-live="polite" aria-atomic="true"> </p>`),dn=f(`<p class="result-message result-error svelte-7mkeya" role="alert"> </p>`),fn=f(`<p class="loading-line svelte-7mkeya"><!> Loading versions…</p>`),pn=f(`<!> Checking…`,1),mn=f(`<p class="result-message result-error svelte-7mkeya" role="alert"> </p>`),hn=f(`<div class="auto-action-row svelte-7mkeya"><button class="btn btn-primary"><!></button> <!></div>`),gn=f(`<p class="registry-warning svelte-7mkeya"> </p>`),_n=f(`<div role="status"></div>`),vn=f(`<span class="val-unavailable svelte-7mkeya">unavailable</span>`),yn=f(`<code> </code>`),bn=f(`<span class="badge badge-warn svelte-7mkeya">?</span>`),xn=f(`<span class="badge badge-update svelte-7mkeya">update</span>`),Sn=f(`<span class="badge badge-ok svelte-7mkeya">current</span>`),Cn=f(`<tr><td class="col-component svelte-7mkeya"> </td><td class="col-current svelte-7mkeya"><code class="svelte-7mkeya"> </code></td><td class="col-latest svelte-7mkeya"><!></td><td class="col-status svelte-7mkeya"><!></td></tr>`),wn=f(`<!> Applying…`,1),Tn=f(`<button class="btn btn-primary"><!></button> <p class="apply-hint svelte-7mkeya">Saves the versions shown above, then recreates the stack (~1 min offline). Your data is kept.</p>`,1),En=f(`<p class="up-to-date svelte-7mkeya">Everything is up to date.</p>`),Dn=f(`<div class="latest-results svelte-7mkeya"><!> <table class="version-table svelte-7mkeya" aria-label="Version comparison"><thead><tr><th scope="col" class="col-component svelte-7mkeya">Component</th><th scope="col" class="col-current svelte-7mkeya">Current</th><th scope="col" class="col-latest svelte-7mkeya">Latest</th><th scope="col" class="col-status svelte-7mkeya">Status</th></tr></thead><tbody></tbody></table> <div class="auto-action-row svelte-7mkeya"><!> <button class="btn btn-ghost recheck-btn svelte-7mkeya"> </button></div></div>`),On=f(`<section class="auto-section svelte-7mkeya" aria-labelledby="auto-mode-desc"><p id="auto-mode-desc" class="auto-description svelte-7mkeya">Check Docker Hub and npm for the latest stable release of each image and
2
2
  package, then apply them all in one step. npm packages are pinned to their
3
3
  exact latest version. The stack will restart (~1 min offline) and your data
4
4
  is kept.</p> <!></section>`),kn=f(`<div class="version-field svelte-7mkeya"><label class="version-label svelte-7mkeya"> </label> <input class="version-input svelte-7mkeya" type="text" autocomplete="off" spellcheck="false"/> <p class="version-hint svelte-7mkeya"> </p></div>`),An=f(`<div class="version-field svelte-7mkeya"><label class="version-label svelte-7mkeya"> </label> <input class="version-input svelte-7mkeya" type="text" autocomplete="off" spellcheck="false"/> <p class="version-hint svelte-7mkeya"> </p></div>`),jn=f(`<!> Applying…`,1),Mn=f(`<section class="version-group svelte-7mkeya" aria-labelledby="version-images-title"><h3 id="version-images-title" class="version-group-title svelte-7mkeya">Container images</h3> <p class="version-group-subtitle svelte-7mkeya">Each image rides its own tag. Use an exact tag, <code>latest</code>, or <code>next</code> — not a semver range.</p> <!></section> <section class="version-group svelte-7mkeya" aria-labelledby="version-npm-title"><h3 id="version-npm-title" class="version-group-title svelte-7mkeya">npm packages</h3> <p class="version-group-subtitle svelte-7mkeya">Installed at container boot. Semver ranges are allowed (npm resolves them).</p> <!></section> <div class="apply-row svelte-7mkeya"><button class="btn btn-primary svelte-7mkeya"><!></button> <p class="apply-hint svelte-7mkeya">Saves the changed versions, then recreates the stack so the new images and packages take
5
- effect (~1 min offline). Your data is kept.</p></div>`,1),Nn=f(`<p role="status"> </p>`),Pn=f(`<label class="desktop-toggle svelte-7mkeya"><input type="checkbox"/> <span>Notify when the assistant replies or errors while the app is in the background.</span></label> <label class="desktop-toggle desktop-toggle--nested svelte-7mkeya"><input type="checkbox"/> <span>Include reply preview in the notification body.</span></label> <p class="version-hint svelte-7mkeya">Reply previews stay off by default because desktop notifications can persist outside the app.</p>`,1),Fn=f(`<label class="desktop-toggle svelte-7mkeya"><input type="checkbox" disabled=""/> <span>Notify when the assistant replies or errors while the app is in the background.</span></label> <label class="desktop-toggle desktop-toggle--nested svelte-7mkeya"><input type="checkbox" disabled=""/> <span>Include reply preview in the notification body.</span></label> <p class="version-hint svelte-7mkeya">Desktop notifications are available in the OpenPalm desktop app.</p>`,1),In=f(`<section class="desktop-settings svelte-7mkeya" aria-labelledby="desktop-settings-title"><h3 id="desktop-settings-title" class="desktop-settings-title svelte-7mkeya">Desktop settings</h3> <div class="desktop-setting-row svelte-7mkeya"><div class="version-label svelte-7mkeya">Launch on login</div> <label class="desktop-toggle svelte-7mkeya"><input type="checkbox"/> <span>Start OpenPalm automatically when you sign in on this device.</span></label> <p class="version-hint svelte-7mkeya"><!></p></div> <div class="desktop-setting-row svelte-7mkeya"><div class="version-label svelte-7mkeya">Desktop notifications</div> <!></div></section>`),Ln=f(`<div class="panel" role="tabpanel"><div class="panel-header svelte-7mkeya"><div><h2>Versions</h2> <p class="panel-subtitle">Keep your stack current or pin specific versions.</p> <p class="control-plane-line svelte-7mkeya">Control plane: <strong class="svelte-7mkeya"> </strong></p></div> <div class="mode-toggle svelte-7mkeya" role="group" aria-label="Update mode"><button>Automatic</button> <button>Manual</button></div></div> <!> <div class="panel-body"><!> <!> <!> <!></div></div>`);function Rn(t,n){F(n,!0);let s=[{key:`OP_ASSISTANT_VERSION`,label:`Assistant`,hint:`Docker image tag — exact tag, "latest", or "next".`},{key:`OP_GUARDIAN_VERSION`,label:`Guardian`,hint:`Docker image tag — exact tag, "latest", or "next".`},{key:`OP_PORTAL_VERSION`,label:`Portal (Discord/Slack/API)`,hint:`Docker image tag — exact tag, "latest", or "next".`},{key:`OP_VOICE_VERSION`,label:`Voice`,hint:`Docker image tag — exact tag, "latest", or "next".`}],c=[{key:`OP_GUARDIAN_NPM_VERSION`,label:`Guardian package`,hint:`Empty = use the version baked into the guardian image.`},{key:`OP_TOOL_OPENCODE_VERSION`,label:`OpenCode`,hint:`npm semver range, e.g. ^1.17.0.`},{key:`OP_TOOL_AKM_VERSION`,label:`AKM CLI`,hint:`npm semver range, e.g. ^0.8.14.`},{key:`OP_TOOL_CLAUDE_CODE_VERSION`,label:`Claude Code`,hint:`npm semver range, e.g. ^1.5.0.`},{key:`OP_TOOL_CODEX_VERSION`,label:`Codex`,hint:`npm semver range, e.g. ^0.1.0.`},{key:`OP_UI_VERSION`,label:`Admin UI`,hint:`Takes effect after the UI restarts — automatic in the desktop app.`}],l=[...s,...c],u=w(`auto`),f=w(``),m=w(R({})),h=w(R({})),g=w(!0),_=w(``),S=w(R({})),C=w(R([])),T=w(``),E=w(!1),D=w(``),N=w(!1),I=w(``),L=w(!1),z=W(()=>Object.keys(i(h)).filter(e=>(i(h)[e]??``)!==(i(m)[e]??``))),V=W(()=>i(z).length>0),ee=W(()=>l.map(e=>e.key).filter(e=>{let t=i(S)[e];return t!=null&&t!==(i(m)[e]??``)})),te=W(()=>i(T)!==``),G=W(()=>i(ee).length>0),ne=w(!1),q=w(!1),J=w(!1),Y=w(!1),re=w(!1),X=w(!1);A(()=>{U(ne,window.openpalm!==void 0),U(q,rt(),!0),U(J,ot(),!0),Z(),ae()});async function Z(){U(g,!0),U(_,``);try{let e=await ue();U(f,e.platformVersion,!0),U(m,{...e.versions,OP_UI_VERSION:e.platformVersion},!0),U(h,{...e.versions,OP_UI_VERSION:e.platformVersion},!0),U(u,e.autoUpdate?`auto`:`manual`,!0)}catch(e){U(_,`Failed to load versions: ${e.message??e}`)}U(g,!1)}async function ae(){let e=await window.openpalm?.launchOnLoginStatus?.();e&&(U(Y,e.supported,!0),U(re,e.enabled,!0))}function oe(e){U(u,e,!0),Ce({OP_AUTO_UPDATE:e===`auto`?`true`:`false`}).catch(()=>{})}async function se(){if(!i(E)){U(E,!0),U(D,``),U(C,[],!0);try{let e=await ie();U(S,e.versions,!0),U(T,e.fetchedAt,!0),e.errors.length>0&&U(C,e.errors,!0)}catch(e){U(D,`Check failed: ${e.message??e}`)}U(E,!1)}}async function ce(){if(!(i(N)||!i(G))){U(N,!0),U(I,``),U(L,!1);try{let e={},t;for(let n of i(ee)){let r=i(S)[n];r!=null&&(n===`OP_UI_VERSION`?t=r:e[n]=r)}let n=``;if(t&&(n=await fe(t)),Object.keys(e).length>0){await Ce(e);let t=await Ae();if(!t.overallSuccess){U(L,!0),t.failed.length>0?U(I,`Saved, but applying failed: ${t.failed.map(e=>`${e.service}: ${e.reason}`).join(`; `)}`):t.dockerAvailable?U(I,`Apply failed: ${t.error??`unknown error`}`):U(I,`Versions saved, but Docker is unavailable — services were not restarted.`),U(N,!1);return}}let r=await ue();U(m,{...r.versions,OP_UI_VERSION:r.platformVersion},!0),U(h,{...r.versions,OP_UI_VERSION:r.platformVersion},!0),U(S,{},!0),U(T,``),U(L,!1),U(I,n||`Updated to latest.`,!0)}catch(e){let t=e;U(L,!0),U(I,`Failed to update: ${t.message??e}`)}U(N,!1)}}function le(e,t){i(h)[e]=t}async function de(){if(!(i(N)||!i(V))){U(N,!0),U(I,``),U(L,!1);try{let e={},t;for(let n of i(z))n===`OP_UI_VERSION`?t=i(h)[n]:e[n]=i(h)[n]??``;let n=``;if(t&&(n=await fe(t)),Object.keys(e).length>0&&await Ce(e),U(m,{...i(h)},!0),Object.keys(e).length>0){let e=await Ae();e.overallSuccess?(U(L,!1),U(I,e.restarted.length>0?`Versions applied. Restarted: ${e.restarted.join(`, `)}.`:`Versions applied.`,!0)):e.failed.length>0?(U(L,!0),U(I,`Saved, but applying failed: ${e.failed.map(e=>`${e.service}: ${e.reason}`).join(`; `)}`)):e.dockerAvailable?(U(L,!0),U(I,`Apply failed: ${e.error??`unknown error`}`)):(U(L,!0),U(I,`Versions saved, but Docker is unavailable — services were not restarted.`))}else n?(U(L,!1),U(I,n,!0)):(U(L,!1),U(I,`Versions applied.`))}catch(e){let t=e;U(L,!0),U(I,`Failed to apply versions: ${t.message??e}`)}U(N,!1)}}async function fe(e){let t=await Ke(e);return t.pendingRestart?await window.openpalm?.restartUiServer?.()?`UI updated to ${e} — restarting…`:`UI ${e} downloaded. Reload the page to apply it.`:t.restarting?(setTimeout(()=>location.reload(),4e3),`UI updated to ${e} — reloading in a moment…`):`UI ${e} downloaded. Restart the admin UI to apply it.`}async function pe(e){let t=e.currentTarget.checked;if(!window.openpalm?.setLaunchOnLogin){U(re,!1);return}U(X,!0);try{let e=await window.openpalm.setLaunchOnLogin(t);U(Y,e.supported,!0),U(re,e.enabled,!0)}finally{U(X,!1)}}let me=W(()=>i(N)?`Applying versions and restarting services…`:i(g)?`Loading versions…`:i(E)?`Checking for latest versions…`:``);var he=Ln(),ge=H(he),_e=H(ge),ve=x(H(_e),4),ye=x(H(ve)),be=H(ye,!0);K(ye),K(ve),K(_e);var xe=x(_e,2),Se=H(xe);let we;var Te=x(Se,2);let Ee;K(xe),K(ge);var De=x(ge,2),Oe=e=>{var t=un(),n=H(t,!0);K(t),v(()=>r(n,i(me))),o(e,t)};d(De,e=>{i(me)&&e(Oe)});var Q=x(De,2),ke=H(Q),je=e=>{var t=dn(),n=H(t,!0);K(t),v(()=>r(n,i(_))),o(e,t)};d(ke,e=>{i(_)&&e(je)});var Me=x(ke,2),Ne=e=>{var t=fn();$(H(t),{}),b(),K(t),o(e,t)},Pe=t=>{var n=On(),s=x(H(n),2),c=t=>{var n=hn(),s=H(n),c=H(s),l=e=>{var t=pn();$(j(t),{}),b(),o(e,t)},u=t=>{o(t,e(`Check for updates`))};d(c,e=>{i(E)?e(l):e(u,-1)}),K(s);var f=x(s,2),p=e=>{var t=mn(),n=H(t,!0);K(t),v(()=>r(n,i(D))),o(e,t)};d(f,e=>{i(D)&&e(p)}),K(n),v(()=>{s.disabled=i(E),k(s,`aria-busy`,i(E))}),a(`click`,s,se),o(t,n)},u=t=>{var n=Dn(),s=H(n),c=e=>{var t=_n();M(t,20,()=>i(C),e=>e,(e,t)=>{var n=gn(),i=H(n);K(n),v(()=>r(i,`⚠ ${t??``}`)),o(e,n)}),K(t),o(e,t)};d(s,e=>{i(C).length>0&&e(c)});var u=x(s,2),f=x(H(u));M(f,21,()=>l,e=>e.key,(e,t)=>{let n=W(()=>i(m)[i(t).key]??``),a=W(()=>i(S)[i(t).key]),s=W(()=>i(a)!==null&&i(a)!==void 0&&i(a)!==i(n)),c=W(()=>i(a)===null||i(a)===void 0);var l=Cn();let u;var f=H(l),h=H(f,!0);K(f);var g=x(f),_=H(g),y=H(_,!0);K(_),K(g);var b=x(g),C=H(b),w=e=>{o(e,vn())},T=e=>{var t=yn();let n;var c=H(t,!0);K(t),v(()=>{n=p(t,1,`svelte-7mkeya`,null,n,{"val-new":i(s)}),r(c,i(a))}),o(e,t)};d(C,e=>{i(c)?e(w):e(T,-1)}),K(b);var E=x(b),D=H(E),O=e=>{o(e,bn())},k=e=>{o(e,xn())},A=e=>{o(e,Sn())};d(D,e=>{i(c)?e(O):i(s)?e(k,1):e(A,-1)}),K(E),K(l),v(()=>{u=p(l,1,`svelte-7mkeya`,null,u,{"row-changed":i(s)}),r(h,i(t).label),r(y,i(n)||`—`)}),o(e,l)}),K(f),K(u);var h=x(u,2),g=H(h),_=t=>{var n=Tn(),s=j(n),c=H(s),l=e=>{var t=wn();$(j(t),{}),b(),o(e,t)},u=t=>{var n=e();v(()=>r(n,`Update ${i(ee).length??``} component${i(ee).length===1?``:`s`}`)),o(t,n)};d(c,e=>{i(N)?e(l):e(u,-1)}),K(s),b(2),v(()=>{s.disabled=i(N),k(s,`aria-busy`,i(N))}),a(`click`,s,ce),o(t,n)},y=e=>{o(e,En())};d(g,e=>{i(G)?e(_):e(y,-1)});var w=x(g,2),T=H(w,!0);K(w),K(h),K(n),v(()=>{w.disabled=i(E)||i(N),k(w,`aria-busy`,i(E)),r(T,i(E)?`Checking…`:`Re-check`)}),a(`click`,w,se),o(t,n)};d(s,e=>{i(te)?e(u,-1):e(c)}),K(n),o(t,n)},Fe=t=>{var n=Mn(),l=j(n);M(x(H(l),4),17,()=>s,e=>e.key,(e,t)=>{var n=kn(),s=H(n),c=H(s,!0);K(s);var l=x(s,2);P(l);var u=x(l,2),d=H(u,!0);K(u),K(n),v(()=>{k(s,`for`,`version-${i(t).key??``}`),r(c,i(t).label),k(l,`id`,`version-${i(t).key??``}`),y(l,i(h)[i(t).key]??``),l.disabled=i(N),r(d,i(t).hint)}),a(`input`,l,e=>le(i(t).key,e.currentTarget.value)),o(e,n)}),K(l);var u=x(l,2);M(x(H(u),4),17,()=>c,e=>e.key,(e,t)=>{var n=An(),s=H(n),c=H(s,!0);K(s);var l=x(s,2);P(l);var u=x(l,2),d=H(u,!0);K(u),K(n),v(()=>{k(s,`for`,`version-${i(t).key??``}`),r(c,i(t).label),k(l,`id`,`version-${i(t).key??``}`),y(l,i(h)[i(t).key]??``),l.disabled=i(N),r(d,i(t).hint)}),a(`input`,l,e=>le(i(t).key,e.currentTarget.value)),o(e,n)}),K(u);var f=x(u,2),p=H(f),m=H(p),g=e=>{var t=jn();$(j(t),{}),b(),o(e,t)},_=t=>{o(t,e(`Apply`))};d(m,e=>{i(N)?e(g):e(_,-1)}),K(p),b(2),K(f),v(()=>{p.disabled=i(N)||!i(V),k(p,`aria-busy`,i(N))}),a(`click`,p,de),o(t,n)};d(Me,e=>{i(g)?e(Ne):i(u)===`auto`?e(Pe,1):e(Fe,-1)});var Ie=x(Me,2),Le=e=>{var t=Nn();let n;var a=H(t,!0);K(t),v(()=>{n=p(t,1,`result-message svelte-7mkeya`,null,n,{"result-success":!i(L),"result-error":i(L)}),r(a,i(I))}),o(e,t)};d(Ie,e=>{i(I)&&e(Le)});var Re=x(Ie,2),ze=t=>{var n=In(),r=x(H(n),2),s=x(H(r),2),c=H(s);P(c),b(2),K(s);var l=x(s,2),u=H(l),f=t=>{o(t,e(`Uses the native desktop login-item integration for this platform.`))},p=t=>{o(t,e(`Not wired on this platform yet. The current desktop build only exposes this safely on macOS and Windows.`))};d(u,e=>{i(Y)?e(f):e(p,-1)}),K(l),K(r);var m=x(r,2),h=x(H(m),2),g=e=>{var t=Pn(),n=j(t),r=H(n);P(r),b(2),K(n);var s=x(n,2),c=H(s);P(c),b(2),K(s),b(2),v(()=>{O(r,i(q)),O(c,i(J)),c.disabled=!i(q)}),a(`change`,r,e=>{U(q,e.currentTarget.checked,!0),et(i(q)),i(q)||(U(J,!1),at(!1))}),a(`change`,c,e=>{U(J,e.currentTarget.checked,!0),at(i(J))}),o(e,t)},_=e=>{var t=Fn();b(4),o(e,t)};d(h,e=>{i(ne)&&typeof window.openpalm?.notify==`function`?e(g):e(_,-1)}),K(m),K(n),v(()=>{O(c,i(re)),c.disabled=!i(Y)||i(X)}),a(`change`,c,pe),o(t,n)};d(Re,e=>{i(ne)&&e(ze)}),K(Q),K(he),v(()=>{r(be,i(f)||`—`),we=p(Se,1,`mode-btn svelte-7mkeya`,null,we,{"mode-btn--active":i(u)===`auto`}),k(Se,`aria-pressed`,i(u)===`auto`),Ee=p(Te,1,`mode-btn svelte-7mkeya`,null,Ee,{"mode-btn--active":i(u)===`manual`}),k(Te,`aria-pressed`,i(u)===`manual`)}),a(`click`,Se,()=>oe(`auto`)),a(`click`,Te,()=>oe(`manual`)),o(t,he),B()}h([`click`,`input`,`change`]);var zn=f(`<div class="secret-notice svelte-54nov7" role="status"><div class="secret-notice-text svelte-54nov7"><p class="secret-notice-title svelte-54nov7">Secret-looking values were removed from stack.env</p> <p class="svelte-54nov7"> <strong>Connections</strong> tab (or as a secret) so your provider keeps working.</p></div> <button class="btn btn-sm btn-secondary">Dismiss</button></div>`),Bn=f(`<p class="stuck-notice-error svelte-54nov7" role="alert"> </p>`),Vn=f(`<!> Clearing…`,1),Hn=f(`<div class="stuck-notice svelte-54nov7" role="status"><div class="stuck-notice-text svelte-54nov7"><p class="stuck-notice-title svelte-54nov7">An operation seems stuck</p> <p class="svelte-54nov7">A previous install or update didn't finish cleanly and left a lock behind. It would
5
+ effect (~1 min offline). Your data is kept.</p></div>`,1),Nn=f(`<p role="status"> </p>`),Pn=f(`<label class="desktop-toggle svelte-7mkeya"><input type="checkbox"/> <span>Notify when the assistant replies or errors while the app is in the background.</span></label> <label class="desktop-toggle desktop-toggle--nested svelte-7mkeya"><input type="checkbox"/> <span>Include reply preview in the notification body.</span></label> <p class="version-hint svelte-7mkeya">Reply previews stay off by default because desktop notifications can persist outside the app.</p>`,1),Fn=f(`<label class="desktop-toggle svelte-7mkeya"><input type="checkbox" disabled=""/> <span>Notify when the assistant replies or errors while the app is in the background.</span></label> <label class="desktop-toggle desktop-toggle--nested svelte-7mkeya"><input type="checkbox" disabled=""/> <span>Include reply preview in the notification body.</span></label> <p class="version-hint svelte-7mkeya">Desktop notifications are available in the OpenPalm desktop app.</p>`,1),In=f(`<section class="desktop-settings svelte-7mkeya" aria-labelledby="desktop-settings-title"><h3 id="desktop-settings-title" class="desktop-settings-title svelte-7mkeya">Desktop settings</h3> <div class="desktop-setting-row svelte-7mkeya"><div class="version-label svelte-7mkeya">Launch on login</div> <label class="desktop-toggle svelte-7mkeya"><input type="checkbox"/> <span>Start OpenPalm automatically when you sign in on this device.</span></label> <p class="version-hint svelte-7mkeya"><!></p></div> <div class="desktop-setting-row svelte-7mkeya"><div class="version-label svelte-7mkeya">Desktop notifications</div> <!></div></section>`),Ln=f(`<div class="panel" role="tabpanel"><div class="panel-header svelte-7mkeya"><div><h2>Versions</h2> <p class="panel-subtitle">Keep your stack current or pin specific versions.</p> <p class="control-plane-line svelte-7mkeya">Control plane: <strong class="svelte-7mkeya"> </strong></p></div> <div class="mode-toggle svelte-7mkeya" role="group" aria-label="Update mode"><button>Automatic</button> <button>Manual</button></div></div> <!> <div class="panel-body"><!> <!> <!> <!></div></div>`);function Rn(t,n){F(n,!0);let s=[{key:`OP_ASSISTANT_VERSION`,label:`Assistant`,hint:`Docker image tag — exact tag, "latest", or "next".`},{key:`OP_GUARDIAN_VERSION`,label:`Guardian`,hint:`Docker image tag — exact tag, "latest", or "next".`},{key:`OP_PORTAL_VERSION`,label:`Portal (Discord/Slack/API)`,hint:`Docker image tag — exact tag, "latest", or "next".`},{key:`OP_VOICE_VERSION`,label:`Voice`,hint:`Docker image tag — exact tag, "latest", or "next".`}],c=[{key:`OP_GUARDIAN_NPM_VERSION`,label:`Guardian package`,hint:`Empty = use the version baked into the guardian image.`},{key:`OP_TOOL_OPENCODE_VERSION`,label:`OpenCode`,hint:`npm semver range, e.g. ^1.17.0.`},{key:`OP_TOOL_AKM_VERSION`,label:`AKM CLI`,hint:`npm semver range, e.g. ^0.8.14.`},{key:`OP_TOOL_CLAUDE_CODE_VERSION`,label:`Claude Code`,hint:`npm semver range, e.g. ^1.5.0.`},{key:`OP_TOOL_CODEX_VERSION`,label:`Codex`,hint:`npm semver range, e.g. ^0.1.0.`},{key:`OP_UI_VERSION`,label:`Admin UI`,hint:`Takes effect after the UI restarts — automatic in the desktop app.`}],l=[...s,...c],u=w(`auto`),f=w(``),m=w(R({})),h=w(R({})),g=w(!0),_=w(``),S=w(R({})),C=w(R([])),T=w(``),E=w(!1),D=w(``),N=w(!1),I=w(``),L=w(!1),z=W(()=>Object.keys(i(h)).filter(e=>(i(h)[e]??``)!==(i(m)[e]??``))),V=W(()=>i(z).length>0),ee=W(()=>l.map(e=>e.key).filter(e=>{let t=i(S)[e];return t!=null&&t!==(i(m)[e]??``)})),te=W(()=>i(T)!==``),G=W(()=>i(ee).length>0),ne=w(!1),q=w(!1),J=w(!1),Y=w(!1),re=w(!1),X=w(!1);A(()=>{U(ne,window.openpalm!==void 0),U(q,rt(),!0),U(J,ot(),!0),Z(),ae()});async function Z(){U(g,!0),U(_,``);try{let e=await ue();U(f,e.platformVersion,!0),U(m,{...e.versions,OP_UI_VERSION:e.platformVersion},!0),U(h,{...e.versions,OP_UI_VERSION:e.platformVersion},!0),U(u,e.autoUpdate?`auto`:`manual`,!0)}catch(e){U(_,`Failed to load versions: ${e.message??e}`)}U(g,!1)}async function ae(){let e=await window.openpalm?.launchOnLoginStatus?.();e&&(U(Y,e.supported,!0),U(re,e.enabled,!0))}function oe(e){U(u,e,!0),Ce({OP_AUTO_UPDATE:e===`auto`?`true`:`false`}).catch(()=>{})}async function se(){if(!i(E)){U(E,!0),U(D,``),U(C,[],!0);try{let e=await ie();U(S,e.versions,!0),U(T,e.fetchedAt,!0),e.errors.length>0&&U(C,e.errors,!0)}catch(e){U(D,`Check failed: ${e.message??e}`)}U(E,!1)}}async function ce(){if(!(i(N)||!i(G))){U(N,!0),U(I,``),U(L,!1);try{let e={},t;for(let n of i(ee)){let r=i(S)[n];r!=null&&(n===`OP_UI_VERSION`?t=r:e[n]=r)}let n=``;if(t&&(n=await fe(t)),Object.keys(e).length>0){await Ce(e);let t=await Ae();if(!t.overallSuccess){U(L,!0),t.failed.length>0?U(I,`Saved, but applying failed: ${t.failed.map(e=>`${e.service}: ${e.reason}`).join(`; `)}`):t.dockerAvailable?U(I,`Apply failed: ${t.error??`unknown error`}`):U(I,`Versions saved, but Docker is unavailable — services were not restarted.`),U(N,!1);return}if(t.pullWarning){U(L,!1),U(I,`Restarted, but images may not have updated: ${t.pullWarning}`),U(N,!1);let e=await ue();U(m,{...e.versions,OP_UI_VERSION:e.platformVersion},!0),U(h,{...e.versions,OP_UI_VERSION:e.platformVersion},!0);return}}let r=await ue();U(m,{...r.versions,OP_UI_VERSION:r.platformVersion},!0),U(h,{...r.versions,OP_UI_VERSION:r.platformVersion},!0),U(S,{},!0),U(T,``),U(L,!1),U(I,n||`Updated to latest.`,!0)}catch(e){let t=e;U(L,!0),U(I,`Failed to update: ${t.message??e}`)}U(N,!1)}}function le(e,t){i(h)[e]=t}async function de(){if(!(i(N)||!i(V))){U(N,!0),U(I,``),U(L,!1);try{let e={},t;for(let n of i(z))n===`OP_UI_VERSION`?t=i(h)[n]:e[n]=i(h)[n]??``;let n=``;if(t&&(n=await fe(t)),Object.keys(e).length>0&&await Ce(e),U(m,{...i(h)},!0),Object.keys(e).length>0){let e=await Ae();e.overallSuccess?(U(L,!1),e.pullWarning?U(I,`Restarted, but images may not have updated: ${e.pullWarning}`):U(I,e.restarted.length>0?`Versions applied. Restarted: ${e.restarted.join(`, `)}.`:`Versions applied.`,!0)):e.failed.length>0?(U(L,!0),U(I,`Saved, but applying failed: ${e.failed.map(e=>`${e.service}: ${e.reason}`).join(`; `)}`)):e.dockerAvailable?(U(L,!0),U(I,`Apply failed: ${e.error??`unknown error`}`)):(U(L,!0),U(I,`Versions saved, but Docker is unavailable — services were not restarted.`))}else n?(U(L,!1),U(I,n,!0)):(U(L,!1),U(I,`Versions applied.`))}catch(e){let t=e;U(L,!0),U(I,`Failed to apply versions: ${t.message??e}`)}U(N,!1)}}async function fe(e){let t=await Ke(e);return t.pendingRestart?await window.openpalm?.restartUiServer?.()?`UI updated to ${e} — restarting…`:`UI ${e} downloaded. Reload the page to apply it.`:t.restarting?(setTimeout(()=>location.reload(),4e3),`UI updated to ${e} — reloading in a moment…`):`UI ${e} downloaded. Restart the admin UI to apply it.`}async function pe(e){let t=e.currentTarget.checked;if(!window.openpalm?.setLaunchOnLogin){U(re,!1);return}U(X,!0);try{let e=await window.openpalm.setLaunchOnLogin(t);U(Y,e.supported,!0),U(re,e.enabled,!0)}finally{U(X,!1)}}let me=W(()=>i(N)?`Applying versions and restarting services…`:i(g)?`Loading versions…`:i(E)?`Checking for latest versions…`:``);var he=Ln(),ge=H(he),_e=H(ge),ve=x(H(_e),4),ye=x(H(ve)),be=H(ye,!0);K(ye),K(ve),K(_e);var xe=x(_e,2),Se=H(xe);let we;var Te=x(Se,2);let Ee;K(xe),K(ge);var De=x(ge,2),Oe=e=>{var t=un(),n=H(t,!0);K(t),v(()=>r(n,i(me))),o(e,t)};d(De,e=>{i(me)&&e(Oe)});var Q=x(De,2),ke=H(Q),je=e=>{var t=dn(),n=H(t,!0);K(t),v(()=>r(n,i(_))),o(e,t)};d(ke,e=>{i(_)&&e(je)});var Me=x(ke,2),Ne=e=>{var t=fn();$(H(t),{}),b(),K(t),o(e,t)},Pe=t=>{var n=On(),s=x(H(n),2),c=t=>{var n=hn(),s=H(n),c=H(s),l=e=>{var t=pn();$(j(t),{}),b(),o(e,t)},u=t=>{o(t,e(`Check for updates`))};d(c,e=>{i(E)?e(l):e(u,-1)}),K(s);var f=x(s,2),p=e=>{var t=mn(),n=H(t,!0);K(t),v(()=>r(n,i(D))),o(e,t)};d(f,e=>{i(D)&&e(p)}),K(n),v(()=>{s.disabled=i(E),k(s,`aria-busy`,i(E))}),a(`click`,s,se),o(t,n)},u=t=>{var n=Dn(),s=H(n),c=e=>{var t=_n();M(t,20,()=>i(C),e=>e,(e,t)=>{var n=gn(),i=H(n);K(n),v(()=>r(i,`⚠ ${t??``}`)),o(e,n)}),K(t),o(e,t)};d(s,e=>{i(C).length>0&&e(c)});var u=x(s,2),f=x(H(u));M(f,21,()=>l,e=>e.key,(e,t)=>{let n=W(()=>i(m)[i(t).key]??``),a=W(()=>i(S)[i(t).key]),s=W(()=>i(a)!==null&&i(a)!==void 0&&i(a)!==i(n)),c=W(()=>i(a)===null||i(a)===void 0);var l=Cn();let u;var f=H(l),h=H(f,!0);K(f);var g=x(f),_=H(g),y=H(_,!0);K(_),K(g);var b=x(g),C=H(b),w=e=>{o(e,vn())},T=e=>{var t=yn();let n;var c=H(t,!0);K(t),v(()=>{n=p(t,1,`svelte-7mkeya`,null,n,{"val-new":i(s)}),r(c,i(a))}),o(e,t)};d(C,e=>{i(c)?e(w):e(T,-1)}),K(b);var E=x(b),D=H(E),O=e=>{o(e,bn())},k=e=>{o(e,xn())},A=e=>{o(e,Sn())};d(D,e=>{i(c)?e(O):i(s)?e(k,1):e(A,-1)}),K(E),K(l),v(()=>{u=p(l,1,`svelte-7mkeya`,null,u,{"row-changed":i(s)}),r(h,i(t).label),r(y,i(n)||`—`)}),o(e,l)}),K(f),K(u);var h=x(u,2),g=H(h),_=t=>{var n=Tn(),s=j(n),c=H(s),l=e=>{var t=wn();$(j(t),{}),b(),o(e,t)},u=t=>{var n=e();v(()=>r(n,`Update ${i(ee).length??``} component${i(ee).length===1?``:`s`}`)),o(t,n)};d(c,e=>{i(N)?e(l):e(u,-1)}),K(s),b(2),v(()=>{s.disabled=i(N),k(s,`aria-busy`,i(N))}),a(`click`,s,ce),o(t,n)},y=e=>{o(e,En())};d(g,e=>{i(G)?e(_):e(y,-1)});var w=x(g,2),T=H(w,!0);K(w),K(h),K(n),v(()=>{w.disabled=i(E)||i(N),k(w,`aria-busy`,i(E)),r(T,i(E)?`Checking…`:`Re-check`)}),a(`click`,w,se),o(t,n)};d(s,e=>{i(te)?e(u,-1):e(c)}),K(n),o(t,n)},Fe=t=>{var n=Mn(),l=j(n);M(x(H(l),4),17,()=>s,e=>e.key,(e,t)=>{var n=kn(),s=H(n),c=H(s,!0);K(s);var l=x(s,2);P(l);var u=x(l,2),d=H(u,!0);K(u),K(n),v(()=>{k(s,`for`,`version-${i(t).key??``}`),r(c,i(t).label),k(l,`id`,`version-${i(t).key??``}`),y(l,i(h)[i(t).key]??``),l.disabled=i(N),r(d,i(t).hint)}),a(`input`,l,e=>le(i(t).key,e.currentTarget.value)),o(e,n)}),K(l);var u=x(l,2);M(x(H(u),4),17,()=>c,e=>e.key,(e,t)=>{var n=An(),s=H(n),c=H(s,!0);K(s);var l=x(s,2);P(l);var u=x(l,2),d=H(u,!0);K(u),K(n),v(()=>{k(s,`for`,`version-${i(t).key??``}`),r(c,i(t).label),k(l,`id`,`version-${i(t).key??``}`),y(l,i(h)[i(t).key]??``),l.disabled=i(N),r(d,i(t).hint)}),a(`input`,l,e=>le(i(t).key,e.currentTarget.value)),o(e,n)}),K(u);var f=x(u,2),p=H(f),m=H(p),g=e=>{var t=jn();$(j(t),{}),b(),o(e,t)},_=t=>{o(t,e(`Apply`))};d(m,e=>{i(N)?e(g):e(_,-1)}),K(p),b(2),K(f),v(()=>{p.disabled=i(N)||!i(V),k(p,`aria-busy`,i(N))}),a(`click`,p,de),o(t,n)};d(Me,e=>{i(g)?e(Ne):i(u)===`auto`?e(Pe,1):e(Fe,-1)});var Ie=x(Me,2),Le=e=>{var t=Nn();let n;var a=H(t,!0);K(t),v(()=>{n=p(t,1,`result-message svelte-7mkeya`,null,n,{"result-success":!i(L),"result-error":i(L)}),r(a,i(I))}),o(e,t)};d(Ie,e=>{i(I)&&e(Le)});var Re=x(Ie,2),ze=t=>{var n=In(),r=x(H(n),2),s=x(H(r),2),c=H(s);P(c),b(2),K(s);var l=x(s,2),u=H(l),f=t=>{o(t,e(`Uses the native desktop login-item integration for this platform.`))},p=t=>{o(t,e(`Not wired on this platform yet. The current desktop build only exposes this safely on macOS and Windows.`))};d(u,e=>{i(Y)?e(f):e(p,-1)}),K(l),K(r);var m=x(r,2),h=x(H(m),2),g=e=>{var t=Pn(),n=j(t),r=H(n);P(r),b(2),K(n);var s=x(n,2),c=H(s);P(c),b(2),K(s),b(2),v(()=>{O(r,i(q)),O(c,i(J)),c.disabled=!i(q)}),a(`change`,r,e=>{U(q,e.currentTarget.checked,!0),et(i(q)),i(q)||(U(J,!1),at(!1))}),a(`change`,c,e=>{U(J,e.currentTarget.checked,!0),at(i(J))}),o(e,t)},_=e=>{var t=Fn();b(4),o(e,t)};d(h,e=>{i(ne)&&typeof window.openpalm?.notify==`function`?e(g):e(_,-1)}),K(m),K(n),v(()=>{O(c,i(re)),c.disabled=!i(Y)||i(X)}),a(`change`,c,pe),o(t,n)};d(Re,e=>{i(ne)&&e(ze)}),K(Q),K(he),v(()=>{r(be,i(f)||`—`),we=p(Se,1,`mode-btn svelte-7mkeya`,null,we,{"mode-btn--active":i(u)===`auto`}),k(Se,`aria-pressed`,i(u)===`auto`),Ee=p(Te,1,`mode-btn svelte-7mkeya`,null,Ee,{"mode-btn--active":i(u)===`manual`}),k(Te,`aria-pressed`,i(u)===`manual`)}),a(`click`,Se,()=>oe(`auto`)),a(`click`,Te,()=>oe(`manual`)),o(t,he),B()}h([`click`,`input`,`change`]);var zn=f(`<div class="secret-notice svelte-54nov7" role="status"><div class="secret-notice-text svelte-54nov7"><p class="secret-notice-title svelte-54nov7">Secret-looking values were removed from stack.env</p> <p class="svelte-54nov7"> <strong>Connections</strong> tab (or as a secret) so your provider keeps working.</p></div> <button class="btn btn-sm btn-secondary">Dismiss</button></div>`),Bn=f(`<p class="stuck-notice-error svelte-54nov7" role="alert"> </p>`),Vn=f(`<!> Clearing…`,1),Hn=f(`<div class="stuck-notice svelte-54nov7" role="status"><div class="stuck-notice-text svelte-54nov7"><p class="stuck-notice-title svelte-54nov7">An operation seems stuck</p> <p class="svelte-54nov7">A previous install or update didn't finish cleanly and left a lock behind. It would
6
6
  clear itself automatically after 30 minutes — or you can clear it now to run another
7
7
  update. Nothing else is changed.</p> <!></div> <button class="btn btn-sm btn-primary"><!></button></div>`),Un=f(`<div class="stuck-notice stuck-notice-ok svelte-54nov7" role="status"><div class="stuck-notice-text svelte-54nov7"><p class="stuck-notice-title svelte-54nov7">Cleared</p> <p class="svelte-54nov7">The stuck operation was cleared. You can run an update again.</p></div></div>`),Wn=f(`<p class="backups-summary svelte-54nov7"> </p>`),Gn=f(`<button class="btn btn-sm btn-secondary">Prune…</button>`),Kn=f(`<p class="backups-empty svelte-54nov7"><!> Loading backups…</p>`),qn=f(`<p class="backups-error svelte-54nov7" role="alert"> </p>`),Jn=f(`<p class="backups-empty svelte-54nov7">No backups yet — one is created the first time you update.</p>`),Yn=f(`<tr class="svelte-54nov7"><td class="backups-cell-name svelte-54nov7"> </td><td class="backups-cell-meta svelte-54nov7"> </td><td class="backups-cell-meta svelte-54nov7"> </td><td class="backups-cell-restore svelte-54nov7"><span class="backups-restore-note svelte-54nov7" title="Run: openpalm rollback"><code>openpalm rollback</code></span></td></tr>`),Xn=f(`<table class="backups-table svelte-54nov7"><thead><tr><th class="svelte-54nov7">Name</th><th class="svelte-54nov7">Created</th><th class="svelte-54nov7">Size</th><th class="svelte-54nov7">Restore</th></tr></thead><tbody></tbody></table>`),Zn=f(`<!> Deleting…`,1),Qn=f(`<div class="prune-prompt svelte-54nov7" role="alertdialog" aria-label="Confirm prune backups"><p class="prune-prompt-title svelte-54nov7">Delete older backups?</p> <p class="svelte-54nov7">Keep the newest <input class="prune-keep-input svelte-54nov7" type="number" min="0" aria-label="Number of newest backups to keep"/> and permanently delete the rest. This cannot be undone.</p> <div class="prune-actions svelte-54nov7"><button class="btn btn-sm btn-danger"><!></button> <button class="btn btn-sm btn-secondary">Cancel</button></div></div>`),$n=f(`<div class="panel" role="tabpanel"><div class="panel-header"><div><h2>Recovery</h2> <p class="panel-subtitle">Backups · recovery · migration</p></div></div> <div class="panel-body"><!> <!> <section class="backups-section svelte-54nov7" aria-labelledby="backups-title"><div class="backups-header svelte-54nov7"><div><h3 id="backups-title" class="backups-title svelte-54nov7">Backups</h3> <!></div> <!></div> <p class="backups-desc svelte-54nov7">Each update copies your settings here first. To restore, run <code>openpalm rollback</code> for the last update, or point OpenPalm at a snapshot directory manually.
8
8
  Nothing is ever deleted automatically.</p> <!> <!></section></div></div>`);function er(t,n){F(n,!0);let s=w(null),c=w(!1),l=w(``),u=w(null),f=w(!1),p=w(null),m=w(null),h=w(!1),g=w(``),_=w(!1);A(()=>{C(),T(),y()});async function y(){try{U(m,await Ye(),!0)}catch{U(m,null)}}async function S(){U(h,!0),U(g,``);try{U(_,(await Le()).removed,!0),await y()}catch(e){U(g,e instanceof Error?e.message:String(e),!0),await y()}finally{U(h,!1)}}async function C(){U(c,!0),U(l,``);try{U(s,await he(),!0)}catch(e){U(l,e instanceof Error?e.message:String(e),!0)}finally{U(c,!1)}}async function T(){try{U(p,(await be()).notice,!0)}catch{U(p,null)}}async function E(){U(p,null);try{await X()}catch{}}function D(){U(u,i(s)&&i(s).count>1?i(s).count-1:0,!0)}function O(){U(u,null)}async function N(){if(i(u)!==null){U(f,!0);try{await ge(i(u)),U(u,null),await C()}catch(e){U(l,e instanceof Error?e.message:String(e),!0)}finally{U(f,!1)}}}function I(e){if(!Number.isFinite(e))return`—`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;return`${n.toFixed(n>=10||r===0?0:1)} ${t[r]}`}function L(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?`—`:t.toLocaleString()}var R=$n(),V=x(H(R),2),ee=H(V),te=e=>{var t=zn(),n=H(t),s=x(H(n),2),c=H(s);b(2),K(s),K(n);var l=x(n,2);K(t),v(e=>r(c,`${e??``} ${i(p).keys.length===1?`was`:`were`} removed
@@ -121,8 +121,7 @@ $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,`$1$2`).replace(/\
121
121
  activate them in the running assistant. Existing OP_HOME credentials are
122
122
  preserved on conflict.</p> <!>`,1);function Kl(e,t){F(t,!0);let n=w(!1),c=w(null),l=w(null);async function u(){U(n,!0),U(c,null);try{let e=await fetch(`/admin/providers/import-host`,{method:`POST`,headers:Ve()}),t=await e.json();if(!e.ok){U(c,t.message??`Import failed (${e.status})`,!0);return}U(l,t,!0)}catch(e){U(c,e instanceof Error?e.message:`Import failed.`,!0)}finally{U(n,!1)}}st(e,{open:!0,title:`Import from host OpenCode`,onClose:()=>i(l)?t.onimported?.():t.oncancel?.(),footer:e=>{var r=s(),c=j(r),f=e=>{var n=Il();a(`click`,n,function(...e){t.onimported?.apply(this,e)}),o(e,n)},p=e=>{var t=Ll(),r=H(t),s=e=>{$(e,{})};d(r,e=>{i(n)&&e(s)}),b(),K(t),v(()=>t.disabled=i(n)),a(`click`,t,()=>void u()),o(e,t)};d(c,e=>{i(l)?e(f):e(p,-1)}),o(e,r)},children:(e,n)=>{var a=s(),u=j(a),f=e=>{var t=Vl(),n=x(j(t),2),a=H(n),s=x(H(a)),c=H(s,!0);K(s),K(a);var u=x(a,2),f=x(H(u)),p=H(f,!0);K(f),K(u);var m=x(u,2),h=e=>{var t=Rl(),n=x(H(t)),a=H(n,!0);K(n),K(t),v(()=>r(a,i(l).livePushed)),o(e,t)};d(m,e=>{i(l).livePushed!==void 0&&e(h)});var g=x(m,2),_=e=>{var t=zl(),n=x(H(t)),a=H(n,!0);K(n),K(t),v(e=>r(a,e),[()=>i(l).conflicts.join(`, `)]),o(e,t)};d(g,e=>{i(l).conflicts.length>0&&e(_)});var y=x(g,2),b=e=>{var t=Bl(),n=H(t),a=H(n);K(n),K(t),v(e=>r(a,`Live update failed for: ${e??``}.
123
123
  These will activate on next OpenCode restart.`),[()=>i(l).livePushFailed.join(`, `)]),o(e,t)};d(y,e=>{i(l).livePushFailed&&i(l).livePushFailed.length>0&&e(b)}),K(n),v(()=>{r(c,i(l).imported.providers),r(p,i(l).imported.credentials)}),o(e,t)},p=e=>{var n=Gl(),a=x(j(n),2),s=H(a),l=e=>{var n=Hl(),i=H(n),a=H(i,!0);K(i);var s=x(i,2),c=H(s);K(s),K(n),v(()=>{r(a,t.configPath),r(c,`(${t.providerCount??``} provider${t.providerCount===1?``:`s`})`)}),o(e,n)};d(s,e=>{t.configPath&&e(l)});var u=x(s,2),f=e=>{var n=Ul(),i=H(n),a=H(i,!0);K(i);var s=x(i,2),c=H(s);K(s),K(n),v(()=>{r(a,t.authPath),r(c,`(${t.credentialCount??``} credential${t.credentialCount===1?``:`s`})`)}),o(e,n)};d(u,e=>{t.authPath&&e(f)}),K(a);var p=x(a,4),m=e=>{var t=Wl(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(c))),o(e,t)};d(p,e=>{i(c)&&e(m)}),o(e,n)};d(u,e=>{i(l)?e(f):e(p,-1)}),o(e,a)},$$slots:{footer:!0,default:!0}}),B()}h([`click`]);var ql=f(`<div class="feedback feedback--error inline svelte-19zt4ct"><span> </span> <button class="btn-dismiss" type="button" aria-label="Dismiss">×</button></div>`),Jl=f(`<button type="button"> </button>`),Yl=f(`<p>The assistant (OpenCode server) is not reachable. Start the assistant container and refresh.</p>`),Xl=f(`<div class="loading-state"><!> <span>Loading providers…</span></div>`),Zl=f(`<p>No providers connected yet.</p> <p class="empty-hint svelte-19zt4ct">Click <strong>Add provider</strong> above to sign in to one.</p>`,1),Ql=f(`<option> </option>`),$l=f(`<optgroup></optgroup>`),eu=f(`<option> </option>`),tu=f(`<optgroup></optgroup>`),nu=f(`<p class="model-error svelte-19zt4ct"> </p>`),ru=f(`<div class="provider-row svelte-19zt4ct"><div class="provider-id svelte-19zt4ct"><div class="svelte-19zt4ct"><span class="provider-name svelte-19zt4ct"> </span> <span class="provider-desc svelte-19zt4ct"> </span></div></div> <button class="btn btn-outline btn-sm"><!> Disconnect</button></div>`),iu=f(`<div class="model-defaults svelte-19zt4ct"><div class="model-field svelte-19zt4ct"><label class="form-label" for="default-model">Default model</label> <select id="default-model" class="form-input"><option>— OpenCode default —</option><!></select></div> <div class="model-field svelte-19zt4ct"><label class="form-label" for="small-model">Small model</label> <select id="small-model" class="form-input"><option>— OpenCode default —</option><!></select></div> <!></div> <div class="providers-container svelte-19zt4ct"></div>`,1),au=f(`<div class="loading-state cli-loading-state svelte-19zt4ct"><!> <span>Loading assistant CLI status…</span></div>`),ou=f(`<code class="svelte-19zt4ct"> </code>`),su=f(`<button type="button" class="btn btn-secondary btn-sm"> </button>`),cu=f(`<p class="assistant-cli-copy svelte-19zt4ct">Use an existing OpenCode provider key to seed this CLI's local credential file.</p> <div class="assistant-cli-actions svelte-19zt4ct"></div>`,1),lu=f(`<p class="assistant-cli-copy assistant-cli-copy-muted svelte-19zt4ct">No direct OpenCode-provider file mapping is available for this tool yet.</p>`),uu=f(`<div class="assistant-cli-panel svelte-19zt4ct"><div class="assistant-cli-header svelte-19zt4ct"><div><h3 class="svelte-19zt4ct"> </h3> <p class="svelte-19zt4ct"> </p></div> <span> </span></div> <div class="assistant-cli-paths svelte-19zt4ct"></div> <!></div>`),du=f(`<div class="panel" role="tabpanel"><div class="panel-header"><div><h2>Connections</h2> <p class="panel-subtitle">AI providers · model defaults</p></div> <div class="panel-header-actions"><button type="button" class="btn btn-secondary btn-sm">Import from host</button> <button type="button" class="btn btn-primary btn-sm">Add provider</button> <button class="btn btn-secondary btn-sm"><!> Refresh</button></div></div> <!> <div class="panel-body panel-body--flush"><div class="connections-subtabs svelte-19zt4ct"><button type="button">OpenCode</button> <!></div> <!></div></div> <!> <!> <!> <!>`,1);function fu(e,t){F(t,!0);let n=w(R({available:!1,providers:[],defaultModels:{},allowlistActive:!1,providerCountLabel:``,stats:{total:0,connected:0,configured:0,disabled:0}})),c=w(!0),l=w(null),u=w(`opencode`),f=w(R([])),m=w(!0),h=w(null);async function g(){U(c,!0);try{let e=await fetch(`/admin/providers`,{headers:Ve()});e.ok&&(U(n,await e.json(),!0),U(C,i(n).currentModel??``,!0),U(T,i(n).currentSmallModel??``,!0))}catch{}finally{U(c,!1)}}A(()=>{g()});async function _(){U(m,!0);try{let e=await fetch(`/admin/providers/assistant-clis`,{headers:Ve()});e.ok&&U(f,(await e.json()).tools??[],!0)}catch{U(f,[],!0)}finally{U(m,!1)}}let y=W(()=>i(n).providers.filter(e=>e.connected)),S=W(()=>i(n).providers.filter(e=>!e.connected)),C=w(``),T=w(``),E=w(null);async function D(e,t){U(E,null);try{let n=await fetch(`/admin/opencode/model`,{method:`POST`,headers:{...Ve(),"content-type":`application/json`},body:JSON.stringify({[e]:t||null})});n.ok||U(E,(await n.json().catch(()=>({}))).message??`Save failed (${n.status})`,!0)}catch(e){U(E,e instanceof Error?e.message:`Request failed.`,!0)}}let O=w(!1),N=w(null),P=w(!1),I=w(null),L={env:`env`,api:`api key`,oauth:`oauth`,config:`config`,custom:`custom`};function z(e){return e.credentialType?L[e.credentialType]:``}function V(e){U(O,!1),U(N,e,!0)}function ee(){U(O,!1),U(P,!0)}function te(){U(N,null),U(P,!1),g(),_()}async function ne(e){if(confirm(`Disconnect ${e.name}? Stored credentials will be removed.`)){U(I,e.id,!0),U(l,null);try{let t=await fetch(`/admin/opencode/providers/${encodeURIComponent(e.id)}/auth`,{method:`DELETE`,headers:Ve()});t.ok?(g(),_()):U(l,(await t.json().catch(()=>({}))).message??`Disconnect failed (${t.status})`,!0)}catch(e){U(l,e instanceof Error?e.message:`Request failed.`,!0)}finally{U(I,null)}}}let q=w(null),J=w(!1);async function Y(){try{let e=await fetch(`/admin/providers/host-status`,{headers:Ve()});e.ok&&U(q,await e.json(),!0)}catch{}}A(()=>{Y()}),A(()=>{_()});function re(){U(J,!1),g(),Y(),_()}let ie=[{id:`codex`,label:`Codex`},{id:`claude`,label:`Claude Code`},{id:`copilot`,label:`Copilot`},{id:`pi`,label:`Pi`}],X=W(()=>i(f).find(e=>e.id===i(u)));async function Z(e,t){if(!i(h)){U(h,`${e}:${t}`),U(l,null);try{let n=await fetch(`/admin/providers/assistant-clis/${encodeURIComponent(e)}/use-provider`,{method:`POST`,headers:{...Ve(),"content-type":`application/json`},body:JSON.stringify({providerId:t})});n.ok?await _():U(l,(await n.json().catch(()=>({}))).message??`Write failed (${n.status})`,!0)}catch(e){U(l,e instanceof Error?e.message:`Request failed.`,!0)}finally{U(h,null)}}}var ae=du(),oe=j(ae),se=H(oe),ce=x(H(se),2),le=H(ce),ue=x(le,2),de=x(ue,2),fe=H(de),pe=e=>{$(e,{})};d(fe,e=>{i(c)&&e(pe)}),b(),K(de),K(ce),K(se);var me=x(se,2),he=e=>{var t=ql(),n=H(t),s=H(n,!0);K(n);var c=x(n,2);K(t),v(()=>r(s,i(l))),a(`click`,c,()=>U(l,null)),o(e,t)};d(me,e=>{i(l)&&e(he)});var ge=x(me,2),_e=H(ge),ve=H(_e);let ye;M(x(ve,2),17,()=>ie,e=>e.id,(e,t)=>{var n=Jl();let s;var c=H(n,!0);K(n),v(()=>{s=p(n,1,`svelte-19zt4ct`,null,s,{active:i(u)===i(t).id}),r(c,i(t).label)}),a(`click`,n,()=>{U(u,i(t).id,!0)}),o(e,n)}),K(_e);var be=x(_e,2),xe=e=>{var t=s(),l=j(t),u=e=>{nr(e,{icon:e=>{lt(e,{size:40})},children:(e,t)=>{o(e,Yl())},$$slots:{icon:!0,default:!0}})},f=e=>{var t=Xl();$(H(t),{}),b(2),K(t),o(e,t)},p=e=>{nr(e,{icon:e=>{vt(e,{size:40})},children:(e,t)=>{var n=Zl();b(2),o(e,n)},$$slots:{icon:!0,default:!0}})},m=e=>{var t=iu(),n=j(t),c=H(n),l=x(H(c),2),u=H(l);u.value=u.__value=``,M(x(u),17,()=>i(y),e=>e.id,(e,t)=>{var n=s(),a=j(n),c=e=>{var n=$l();M(n,21,()=>i(t).models,e=>e.id,(e,n)=>{var a=Ql(),s=H(a,!0);K(a);var c={};v(()=>{r(s,i(n).name||i(n).id),c!==(c=`${i(t).id??``}/${i(n).id??``}`)&&(a.value=a.__value=`${i(t).id??``}/${i(n).id??``}`)}),o(e,a)}),K(n),v(()=>k(n,`label`,i(t).name)),o(e,n)};d(a,e=>{i(t).models.length>0&&e(c)}),o(e,n)}),K(l),K(c);var f=x(c,2),p=x(H(f),2),m=H(p);m.value=m.__value=``,M(x(m),17,()=>i(y),e=>e.id,(e,t)=>{var n=s(),a=j(n),c=e=>{var n=tu();M(n,21,()=>i(t).models,e=>e.id,(e,n)=>{var a=eu(),s=H(a,!0);K(a);var c={};v(()=>{r(s,i(n).name||i(n).id),c!==(c=`${i(t).id??``}/${i(n).id??``}`)&&(a.value=a.__value=`${i(t).id??``}/${i(n).id??``}`)}),o(e,a)}),K(n),v(()=>k(n,`label`,i(t).name)),o(e,n)};d(a,e=>{i(t).models.length>0&&e(c)}),o(e,n)}),K(p),K(f);var h=x(f,2),g=e=>{var t=nu(),n=H(t,!0);K(t),v(()=>r(n,i(E))),o(e,t)};d(h,e=>{i(E)&&e(g)}),K(n);var _=x(n,2);M(_,21,()=>i(y),e=>e.id,(e,t)=>{var n=ru(),s=H(n),c=H(s),l=H(c),u=H(l,!0);K(l);var f=x(l,2),p=H(f,!0);K(f),K(c),K(s);var m=x(s,2),h=H(m),g=e=>{$(e,{})};d(h,e=>{i(I)===i(t).id&&e(g)}),b(),K(m),K(n),v(e=>{r(u,i(t).name),r(p,e),m.disabled=i(I)===i(t).id},[()=>z(i(t))]),a(`click`,m,()=>void ne(i(t))),o(e,n)}),K(_),a(`change`,l,e=>void D(`model`,e.currentTarget.value)),G(l,()=>i(C),e=>U(C,e)),a(`change`,p,e=>void D(`small_model`,e.currentTarget.value)),G(p,()=>i(T),e=>U(T,e)),o(e,t)};d(l,e=>{!i(n).available&&!i(c)?e(u):i(c)&&i(n).providers.length===0?e(f,1):i(y).length===0?e(p,2):e(m,-1)}),o(e,t)},Se=e=>{var t=au();$(H(t),{}),b(2),K(t),o(e,t)},Ce=e=>{var t=uu(),n=H(t),s=H(n),c=H(s),l=H(c,!0);K(c);var u=x(c,2),f=H(u,!0);K(u),K(s);var m=x(s,2);let g;var _=H(m,!0);K(m),K(n);var y=x(n,2);M(y,20,()=>i(X).configPaths,e=>e,(e,t)=>{var n=ou(),i=H(n,!0);K(n),v(()=>r(i,t)),o(e,n)}),K(y);var b=x(y,2),S=e=>{var t=cu(),n=x(j(t),2);M(n,21,()=>i(X).availableProviderMappings,e=>e.providerId,(e,t)=>{var n=su(),s=H(n,!0);K(n),v(()=>{n.disabled=i(h)!==null,r(s,i(h)===`${i(X).id}:${i(t).providerId}`?`Writing…`:`Use existing ${i(t).label}`)}),a(`click`,n,()=>void Z(i(X).id,i(t).providerId)),o(e,n)}),K(n),o(e,t)},C=e=>{o(e,lu())};d(b,e=>{i(X).availableProviderMappings.length>0?e(S):e(C,-1)}),K(t),v(()=>{r(l,i(X).name),r(f,i(X).configured?`Detected existing config under the assistant home bind mount.`:`No config file detected under the assistant home bind mount yet.`),g=p(m,1,`assistant-cli-status svelte-19zt4ct`,null,g,{configured:i(X).configured}),r(_,i(X).configured?`Configured`:`Not configured`)}),o(e,t)};d(be,e=>{i(u)===`opencode`?e(xe):i(m)?e(Se,1):i(X)&&e(Ce,2)}),K(ge),K(oe);var we=x(oe,2),Te=e=>{ul(e,{get providers(){return i(S)},onselect:V,oncustom:ee,onclose:()=>{U(O,!1)}})};d(we,e=>{i(O)&&e(Te)});var Ee=x(we,2),De=e=>{Ol(e,{get provider(){return i(N)},onaction:te,onclose:()=>{U(N,null)}})};d(Ee,e=>{i(N)&&e(De)});var Oe=x(Ee,2),Q=e=>{Fl(e,{onaction:te,onclose:()=>{U(P,!1)}})};d(Oe,e=>{i(P)&&e(Q)});var ke=x(Oe,2),Ae=e=>{Kl(e,{get providerCount(){return i(q).providerCount},get credentialCount(){return i(q).credentialCount},get configPath(){return i(q).configPath},get authPath(){return i(q).authPath},onimported:re,oncancel:()=>{U(J,!1)}})};d(ke,e=>{i(J)&&i(q)&&e(Ae)}),v(()=>{le.disabled=!i(q)?.detected,k(le,`title`,i(q)?.detected?`Import ${i(q).providerCount} providers from host OpenCode`:`No host OpenCode installation detected`),de.disabled=i(c)||i(m),ye=p(ve,1,`svelte-19zt4ct`,null,ye,{active:i(u)===`opencode`})}),a(`click`,le,()=>{U(J,!0)}),a(`click`,ue,()=>{U(O,!0)}),a(`click`,de,()=>{g(),_()}),a(`click`,ve,()=>{U(u,`opencode`)}),o(e,ae),B()}h([`click`,`change`]);var pu=f(`<button class="btn btn-secondary btn-sm"> </button> <button class="btn btn-secondary btn-sm"><!> Refresh</button>`,1),mu=f(`<option> </option>`),hu=f(`<div class="control-group svelte-coqj2u"><label for="log-service" class="control-label svelte-coqj2u">Service</label> <select id="log-service" class="control-input svelte-coqj2u"><option>All services</option><!></select></div>`),gu=f(`<option>No routines yet</option>`),_u=f(`<option> </option>`),vu=f(`<div class="control-group svelte-coqj2u"><label for="log-automation" class="control-label svelte-coqj2u">Routine</label> <select id="log-automation" class="control-input svelte-coqj2u"><!></select></div>`),yu=f(`<div class="control-group control-group--toggle svelte-coqj2u"><label class="toggle-label svelte-coqj2u"><input type="checkbox"/> <span>Auto-scroll</span></label></div>`),bu=f(`<div class="error-banner svelte-coqj2u"><span> </span></div>`),xu=f(`<pre class="log-output svelte-coqj2u"> </pre>`),Su=q(`<svg aria-hidden="true" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line></svg>`),Cu=f(`<p>No log output — the container may not be running or has no recent output.</p>`),wu=f(`<p>No routine output yet.</p>`),Tu=f(`<p>Select a service and click "Load service logs" to view container output.</p>`),Eu=f(`<p>Select a routine and click "Load routine log" to view its latest output.</p>`),Du=f(`<div class="controls svelte-coqj2u"><div class="control-group control-group--source svelte-coqj2u"><span class="control-label svelte-coqj2u">Source</span> <div class="source-switch svelte-coqj2u" role="tablist" aria-label="Journal source"><button type="button" role="tab">Service logs</button> <button type="button" role="tab">Routine logs</button></div></div> <!> <div class="control-group svelte-coqj2u"><label for="log-tail" class="control-label svelte-coqj2u">Recent lines</label> <select id="log-tail" class="control-input svelte-coqj2u"><option>50</option><option>100</option><option>250</option><option>500</option><option>1000</option></select></div> <!> <button class="btn btn-primary btn-sm"><!> </button></div> <div class="panel-body panel-body--flush"><!> <!></div>`,1);function Ou(e,t){F(t,!0);let n=w(``),l=w(!1),u=w(!1),f=w(``),m=w(`services`),h=w(``),g=w(``),_=w(100),y=w(!0),S=w(!1),C=w(void 0);async function E(){U(u,!0),U(f,``);try{if(i(m)===`services`){let e=await Se({service:i(h)||void 0,tail:i(_)});e.ok?(U(n,e.logs,!0),U(l,!0),i(y)&&i(C)&&requestAnimationFrame(()=>{i(C)&&(i(C).scrollTop=i(C).scrollHeight)})):U(f,e.error??`Failed to fetch logs.`,!0)}else{if(!i(g)&&t.automations.length>0&&U(g,t.automations[0]??``,!0),!i(g)){U(n,``),U(l,!0);return}U(n,(await fe(i(g),i(_))).lines.join(`
124
- `),!0),U(l,!0)}}catch(e){U(f,e instanceof Error?e.message:`Failed to fetch logs.`,!0)}finally{U(u,!1)}}async function D(){i(n)&&(await navigator.clipboard.writeText(i(n)),U(S,!0),setTimeout(()=>{U(S,!1)},2e3))}A(()=>{t.tokenStored&&E()});function O(e){U(m,e,!0),U(f,``),U(n,``),U(l,!1),e===`routines`&&!i(g)&&U(g,t.automations[0]??``,!0),E()}Mr(e,{title:`Journal`,role:`tabpanel`,actions:e=>{var s=pu(),c=j(s),l=H(c,!0);K(c);var f=x(c,2),p=H(f),m=e=>{$(e,{})};d(p,e=>{i(u)&&e(m)}),b(),K(f),v(()=>{c.disabled=!i(n),r(l,i(S)?`Copied!`:`Copy`),f.disabled=i(u)||!t.tokenStored}),a(`click`,c,()=>void D()),a(`click`,f,()=>void E()),o(e,s)},children:(e,S)=>{var w=Du(),D=j(w),A=H(D),N=x(H(A),2),F=H(N);let I;var L=x(F,2);let R;K(N),K(A);var z=x(A,2),B=e=>{var n=hu(),s=x(H(n),2),l=H(s);l.value=l.__value=``,M(x(l),17,()=>t.services,c,(e,t)=>{var n=mu(),a=H(n,!0);K(n);var s={};v(()=>{r(a,i(t)),s!==(s=i(t))&&(n.value=(n.__value=i(t))??``)}),o(e,n)}),K(s),K(n),a(`change`,s,()=>void E()),G(s,()=>i(h),e=>U(h,e)),o(e,n)},V=e=>{var n=vu(),l=x(H(n),2),u=H(l),f=e=>{var t=gu();t.value=t.__value=``,o(e,t)},p=e=>{var n=s();M(j(n),17,()=>t.automations,c,(e,t)=>{var n=_u(),a=H(n,!0);K(n);var s={};v(()=>{r(a,i(t)),s!==(s=i(t))&&(n.value=(n.__value=i(t))??``)}),o(e,n)}),o(e,n)};d(u,e=>{t.automations.length===0?e(f):e(p,-1)}),K(l),K(n),a(`change`,l,()=>void E()),G(l,()=>i(g),e=>U(g,e)),o(e,n)};d(z,e=>{i(m)===`services`?e(B):e(V,-1)});var ee=x(z,2),W=x(H(ee),2),ne=H(W);ne.value=ne.__value=50;var q=x(ne);q.value=q.__value=100;var J=x(q);J.value=J.__value=250;var Y=x(J);Y.value=Y.__value=500;var re=x(Y);re.value=re.__value=1e3,K(W),K(ee);var ie=x(ee,2),X=e=>{var t=yu(),n=H(t),r=H(n);P(r),b(2),K(n),K(t),T(r,()=>i(y),e=>U(y,e)),o(e,t)};d(ie,e=>{i(m)===`services`&&e(X)});var Z=x(ie,2),ae=H(Z),oe=e=>{$(e,{})};d(ae,e=>{i(u)&&e(oe)});var se=x(ae);K(Z),K(D);var ce=x(D,2),le=H(ce),ue=e=>{var t=bu(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(f))),o(e,t)};d(le,e=>{i(f)&&e(ue)});var de=x(le,2),fe=e=>{var t=xu(),a=H(t,!0);K(t),te(t,e=>U(C,e),()=>i(C)),v(()=>r(a,i(n))),o(e,t)},pe=e=>{nr(e,{icon:e=>{o(e,Su())},children:(e,t)=>{var n=s(),r=j(n),a=e=>{var t=s(),n=j(t),r=e=>{o(e,Cu())},a=e=>{o(e,wu())};d(n,e=>{i(m)===`services`?e(r):e(a,-1)}),o(e,t)},c=e=>{var t=s(),n=j(t),r=e=>{o(e,Tu())},a=e=>{o(e,Eu())};d(n,e=>{i(m)===`services`?e(r):e(a,-1)}),o(e,t)};d(r,e=>{i(l)?e(a):e(c,-1)}),o(e,n)},$$slots:{icon:!0,default:!0}})};d(de,e=>{i(n)?e(fe):i(u)||e(pe,1)}),K(ce),v(()=>{I=p(F,1,`source-pill svelte-coqj2u`,null,I,{"source-pill--active":i(m)===`services`}),k(F,`aria-selected`,i(m)===`services`),R=p(L,1,`source-pill svelte-coqj2u`,null,R,{"source-pill--active":i(m)===`routines`}),k(L,`aria-selected`,i(m)===`routines`),Z.disabled=i(u)||!t.tokenStored,r(se,` ${i(m)===`services`?`Load service logs`:`Load routine log`}`)}),a(`click`,F,()=>O(`services`)),a(`click`,L,()=>O(`routines`)),a(`change`,W,()=>void E()),G(W,()=>i(_),e=>U(_,e)),a(`click`,Z,()=>void E()),o(e,w)},$$slots:{actions:!0,default:!0}}),B()}h([`click`,`change`]);var ku=f(`<div class="error-banner svelte-epscb2"><span> </span></div>`),Au=f(`<p class="empty-note svelte-epscb2">No secret files found.</p>`),ju=f(`<div><button class="secret-name svelte-epscb2"><span class="mono svelte-epscb2"> </span> <span class="secret-size svelte-epscb2"> </span></button> <button class="btn btn-ghost btn-sm">✕</button></div>`),Mu=f(`<div class="editor-head svelte-epscb2"><span class="mono svelte-epscb2"> </span> <label class="reveal-toggle svelte-epscb2"><input type="checkbox" class="svelte-epscb2"/> Reveal</label></div> <textarea spellcheck="false" rows="16"></textarea> <div class="editor-actions svelte-epscb2"><button class="btn btn-secondary btn-sm">Close</button> <button class="btn btn-primary btn-sm"><!> Save</button></div>`,1),Nu=f(`<div class="editor-empty svelte-epscb2"><!> <p class="svelte-epscb2">Select a file to view or edit its contents.</p> <button class="btn btn-secondary btn-sm">New secret</button></div>`),Pu=f(`<div class="panel" role="tabpanel"><div class="panel-header"><div><h2>Secrets</h2> <p class="panel-subtitle">Encrypted key files under knowledge/secrets/</p></div> <div class="panel-header-actions"><button class="btn btn-secondary btn-sm"><!> Refresh</button></div></div> <!> <div class="secrets-layout svelte-epscb2"><div class="secrets-list svelte-epscb2"><!> <!> <div class="new-secret svelte-epscb2"><label class="new-secret-label svelte-epscb2" for="new-secret-name">New secret file</label> <div class="new-secret-row svelte-epscb2"><input id="new-secret-name" class="control-input" type="text" spellcheck="false" placeholder="new-file-name"/> <button class="btn btn-secondary btn-sm">Add</button></div></div></div> <div class="secrets-editor svelte-epscb2"><!></div></div></div>`);function Fu(e,t){F(t,!0);let n=w(!1),s=w(!1),c=w(``),l=w(R([])),u=w(null),f=w(``),m=w(!1),h=w(``),g=w(void 0);function _(e){return e<1024?`${e} B`:`${(e/1024).toFixed(1)} KB`}async function y(){U(n,!0),U(c,``);try{U(l,(await ce()).files,!0)}catch(e){U(c,e instanceof Error?e.message:`Failed to list secret files.`,!0)}finally{U(n,!1)}}async function S(e){if(!i(s)){U(s,!0),U(c,``);try{let t=await xe(e);U(u,t.name,!0),U(f,t.value,!0),U(m,!1)}catch(e){Q.push(`error`,e instanceof Error?e.message:`Failed to read file.`)}finally{U(s,!1)}}}function C(){U(u,null),U(f,``),U(m,!1)}async function E(){if(!(!i(u)||i(s))){U(s,!0);try{await Oe(i(u),i(f)),Q.push(`success`,`Saved ${i(u)}.`),await y()}catch(e){Q.push(`error`,e instanceof Error?e.message:`Failed to save file.`)}finally{U(s,!1)}}}async function D(e){if(!i(s)&&confirm(`Delete secret file "${e}"? This cannot be undone.`)){U(s,!0);try{await Je(e),Q.push(`success`,`Deleted ${e}.`),i(u)===e&&C(),await y()}catch(e){Q.push(`error`,e instanceof Error?e.message:`Failed to delete file.`)}finally{U(s,!1)}}}async function O(){let e=i(h).trim();if(!(!e||i(s))){U(s,!0);try{await Oe(e,``),Q.push(`success`,`Created ${e}.`),U(h,``),await y(),await S(e)}catch(e){Q.push(`error`,e instanceof Error?e.message:`Failed to create file.`)}finally{U(s,!1)}}}A(()=>{t.tokenStored&&y()});var N=Pu(),I=H(N),L=x(H(I),2),V=H(L),W=H(V),G=e=>{$(e,{})};d(W,e=>{i(n)&&e(G)}),b(),K(V),K(L),K(I);var ne=x(I,2),q=e=>{var t=ku(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(c))),o(e,t)};d(ne,e=>{i(c)&&e(q)});var J=x(ne,2),Y=H(J),re=H(Y),ie=e=>{o(e,Au())};d(re,e=>{i(l).length===0&&!i(n)&&e(ie)});var X=x(re,2);M(X,17,()=>i(l),e=>e.name,(e,t)=>{var n=ju(),c=H(n),l=H(c),d=H(l,!0);K(l);var f=x(l,2),m=H(f,!0);K(f),K(c);var h=x(c,2);K(n),v(e=>{p(n,1,`secret-row ${i(u)===i(t).name?`active`:``}`,`svelte-epscb2`),c.disabled=i(s),k(c,`aria-label`,`Edit ${i(t).name??``}`),r(d,i(t).name),r(m,e),h.disabled=i(s),k(h,`aria-label`,`Delete ${i(t).name??``}`)},[()=>_(i(t).size)]),a(`click`,c,()=>void S(i(t).name)),a(`click`,h,()=>void D(i(t).name)),o(e,n)});var Z=x(X,2),ae=x(H(Z),2),oe=H(ae);P(oe),te(oe,e=>U(g,e),()=>i(g));var se=x(oe,2);K(ae),K(Z),K(Y);var le=x(Y,2),ue=H(le),de=e=>{var t=Mu(),n=j(t),c=H(n),l=H(c,!0);K(c);var h=x(c,2),g=H(h);P(g),b(),K(h),K(n);var _=x(n,2);ee(_);var y=x(_,2),S=H(y),w=x(S,2),D=H(w),O=e=>{$(e,{})};d(D,e=>{i(s)&&e(O)}),b(),K(w),K(y),v(()=>{r(l,i(u)),p(_,1,`control-input editor-area ${i(m)?``:`masked`}`,`svelte-epscb2`),_.disabled=i(s),S.disabled=i(s),w.disabled=i(s)}),T(g,()=>i(m),e=>U(m,e)),z(_,()=>i(f),e=>U(f,e)),a(`click`,S,C),a(`click`,w,()=>void E()),o(e,t)},fe=e=>{var t=Nu(),n=H(t);vt(n,{size:24});var r=x(n,4);K(t),a(`click`,r,()=>i(g)?.focus()),o(e,t)};d(ue,e=>{i(u)?e(de):e(fe,-1)}),K(le),K(J),K(N),v(e=>{V.disabled=i(n)||i(s)||!t.tokenStored,oe.disabled=i(s),se.disabled=e},[()=>i(s)||!i(h).trim()]),a(`click`,V,()=>void y()),z(oe,()=>i(h),e=>U(h,e)),a(`click`,se,()=>void O()),o(e,N),B()}h([`click`]);var Iu=f(`<span class="unsaved-hint svelte-obkjlq" aria-live="polite">Unsaved changes</span>`),Lu=f(`<div class="error-banner svelte-obkjlq"><span> </span></div>`),Ru=f(`<div class="panel" role="tabpanel"><div class="panel-header"><div><h2>Assistant</h2> <p class="panel-subtitle">Persona · stack config</p></div> <div class="panel-header-actions"><button class="btn btn-secondary btn-sm"><!> Refresh</button> <!> <button class="btn btn-primary btn-sm"><!> Save</button></div></div> <!> <div class="settings-grid svelte-obkjlq"><section class="settings-card svelte-obkjlq"><h3 class="svelte-obkjlq">Compose Project Name</h3> <p class="section-note svelte-obkjlq">This writes <code>OP_PROJECT_NAME</code> in <code> </code>. If unset, OpenPalm defaults to <code>openpalm</code>.</p> <label class="field svelte-obkjlq" for="project-name"><span>Project name</span> <input id="project-name" class="control-input mono svelte-obkjlq" type="text" spellcheck="false" placeholder="openpalm"/></label> <p class="field-hint svelte-obkjlq">Lowercase letters, numbers, dashes, and underscores only. This affects Docker Compose naming and collision detection.</p></section> <section class="settings-card svelte-obkjlq"><h3 class="svelte-obkjlq">LAN Exposure</h3> <p class="section-note svelte-obkjlq">This writes <code>OP_ASSISTANT_BIND_ADDRESS</code> in <code> </code>.</p> <label class="field-inline svelte-obkjlq" for="assistant-lan-exposure"><input id="assistant-lan-exposure" type="checkbox" class="svelte-obkjlq"/> <span>Expose the assistant OpenCode server on the host LAN</span></label> <p class="field-hint svelte-obkjlq">Off keeps the host bind on <code>127.0.0.1</code>. On switches it to <code>0.0.0.0</code> so other devices on your LAN can reach the host port.</p></section> <section class="settings-card svelte-obkjlq"><h3 class="svelte-obkjlq">Persona</h3> <p class="section-note svelte-obkjlq">Edit the assistant persona markdown mounted into the assistant OpenCode instance.</p> <div class="path-chip svelte-obkjlq"> </div> <textarea class="control-input persona-editor mono svelte-obkjlq" rows="20" spellcheck="false"></textarea></section></div></div>`);function zu(e,t){F(t,!0);let n=w(!1),s=w(!1),c=w(``),l=w(`openpalm`),u=w(!1),f=w(`config/assistant/persona.md`),p=w(`knowledge/env/stack.env`),m=w(``),h=w(``);async function g(){U(n,!0),U(c,``);try{let e=await Pe();U(l,e.projectName,!0),U(u,e.lanExposureEnabled,!0),U(f,e.personaPath,!0),U(p,e.stackEnvPath,!0),U(m,e.personaContent,!0),U(h,e.personaContent,!0)}catch(e){U(c,e instanceof Error?e.message:`Failed to load assistant settings.`,!0)}finally{U(n,!1)}}async function _(){U(s,!0),U(c,``);try{let e=await Ue({projectName:i(l),lanExposureEnabled:i(u),personaContent:i(m)});U(l,e.projectName,!0),U(u,e.lanExposureEnabled,!0),U(m,e.personaContent,!0),U(h,e.personaContent,!0),Q.push(`success`,`Assistant settings saved. Restart the assistant container to apply them.`)}catch(e){let t=e instanceof Error?e.message:`Failed to save assistant settings.`;U(c,t,!0),Q.push(`error`,t)}finally{U(s,!1)}}let y=W(()=>i(m)!==i(h));A(()=>{t.tokenStored&&g()});var S=Ru(),C=H(S),E=x(H(C),2),D=H(E),O=H(D),k=e=>{$(e,{})};d(O,e=>{i(n)&&e(k)}),b(),K(D);var j=x(D,2),M=e=>{o(e,Iu())};d(j,e=>{i(y)&&e(M)});var N=x(j,2),I=H(N),L=e=>{$(e,{})};d(I,e=>{i(s)&&e(L)}),b(),K(N),K(E),K(C);var R=x(C,2),V=e=>{var t=Lu(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(c))),o(e,t)};d(R,e=>{i(c)&&e(V)});var te=x(R,2),G=H(te),ne=x(H(G),2),q=x(H(ne),3),J=H(q,!0);K(q),b(3),K(ne);var Y=x(ne,2),re=x(H(Y),2);P(re),K(Y),b(2),K(G);var ie=x(G,2),X=x(H(ie),2),Z=x(H(X),3),ae=H(Z,!0);K(Z),b(),K(X);var oe=x(X,2),se=H(oe);P(se),b(2),K(oe),b(2),K(ie);var ce=x(ie,2),le=x(H(ce),4),ue=H(le,!0);K(le);var de=x(le,2);ee(de),K(ce),K(te),K(S),v(()=>{D.disabled=i(n)||i(s)||!t.tokenStored,N.disabled=i(n)||i(s)||!t.tokenStored||!i(y),r(J,i(p)),re.disabled=i(n)||i(s),r(ae,i(p)),se.disabled=i(n)||i(s),r(ue,i(f)),de.disabled=i(n)||i(s)}),a(`click`,D,()=>void g()),a(`click`,N,()=>void _()),z(re,()=>i(l),e=>U(l,e)),T(se,()=>i(u),e=>U(u,e)),z(de,()=>i(m),e=>U(m,e)),o(e,S),B()}h([`click`]);var Bu=f(`<div class="error-banner svelte-z6w8je"><span> </span></div>`),Vu=f(`<div class="error-banner svelte-z6w8je"><span> </span></div>`),Hu=f(`<div class="empty-card svelte-z6w8je">Nothing urgent has happened yet.</div>`),Uu=f(`<button class="attention-session mono svelte-z6w8je" type="button"> </button>`),Wu=f(`<article><div class="attention-top svelte-z6w8je"><strong class="svelte-z6w8je"> </strong> <span class="svelte-z6w8je"> </span></div> <p class="svelte-z6w8je"> </p> <!></article>`),Gu=f(`<div class="empty-card svelte-z6w8je">Waiting for OpenCode events...</div>`),Ku=f(`<p class="svelte-z6w8je"> </p>`),qu=f(`<button class="attention-session mono svelte-z6w8je" type="button"> </button>`),Ju=f(`<article class="feed-row svelte-z6w8je"><div class="feed-top svelte-z6w8je"><span class="feed-type mono svelte-z6w8je"> </span> <span class="svelte-z6w8je"> </span></div> <strong class="svelte-z6w8je"> </strong> <!> <!></article>`),Yu=f(`<div class="empty-card svelte-z6w8je">No sessions found on the active assistant endpoint.</div>`),Xu=f(`<button><div><div class="session-title svelte-z6w8je"> </div> <div class="session-meta svelte-z6w8je"> </div></div> <div class="session-stats svelte-z6w8je"><strong> </strong> <span class="session-id mono svelte-z6w8je"> </span></div></button>`),Zu=f(`<tr class="svelte-z6w8je"><td colspan="2" class="empty-cell svelte-z6w8je">No events observed yet.</td></tr>`),Qu=f(`<tr class="svelte-z6w8je"><td class="mono svelte-z6w8je"> </td><td class="svelte-z6w8je"> </td></tr>`),$u=f(`<div class="empty-card svelte-z6w8je">No session activity captured yet.</div>`),ed=f(`<div class="hot-session-row svelte-z6w8je"><div><div class="session-title svelte-z6w8je"> </div> <div class="session-meta mono svelte-z6w8je"> </div></div> <strong> </strong></div>`),td=f(`<span class="svelte-z6w8je"> </span>`),nd=f(`<div class="empty-card svelte-z6w8je">No chat or tool activity available for this session yet.</div>`),rd=f(`<div class="selected-meta svelte-z6w8je"><div class="svelte-z6w8je"><span class="svelte-z6w8je">Created</span><strong class="svelte-z6w8je"> </strong></div> <div class="svelte-z6w8je"><span class="svelte-z6w8je">Updated</span><strong class="svelte-z6w8je"> </strong></div> <div class="svelte-z6w8je"><span class="svelte-z6w8je">Session ID</span><strong class="mono svelte-z6w8je"> </strong></div> <div class="svelte-z6w8je"><span class="svelte-z6w8je">Events seen</span><strong class="svelte-z6w8je"> </strong></div></div> <div class="message-panel-head svelte-z6w8je"><span>Recent activity</span> <button class="btn btn-ghost btn-sm"><!> Refresh</button></div> <!> <div class="selected-message-list svelte-z6w8je"></div>`,1),id=f(`<div class="empty-card svelte-z6w8je">Select a session to inspect its recent chat and tool activity.</div>`),ad=f(`<div class="panel" role="tabpanel"><div class="panel-header"><div><h2>Activity</h2> <p class="panel-subtitle">Operator telemetry · live</p></div> <div class="panel-header-actions"><button class="btn btn-secondary btn-sm"><!> Refresh</button></div></div> <!> <!> <div class="endpoint-banner svelte-z6w8je"><div><div class="endpoint-label svelte-z6w8je">Endpoint</div> <div class="endpoint-value svelte-z6w8je"> </div> <div class="endpoint-url mono svelte-z6w8je"> </div></div> <div> </div></div> <div class="summary-grid svelte-z6w8je"><div class="summary-card svelte-z6w8je"><span class="summary-label svelte-z6w8je">Events / minute</span> <strong class="summary-value svelte-z6w8je"> </strong> <small class="svelte-z6w8je"> </small></div> <div class="summary-card svelte-z6w8je"><span class="summary-label svelte-z6w8je">Sessions</span> <strong class="summary-value svelte-z6w8je"> </strong> <small class="svelte-z6w8je"> </small></div> <div class="summary-card summary-card--warning svelte-z6w8je"><span class="summary-label svelte-z6w8je">Waiting on people</span> <strong class="summary-value svelte-z6w8je"> </strong> <small class="svelte-z6w8je">Permissions and answers that block the assistant.</small></div> <div><span class="summary-label svelte-z6w8je">Last event</span> <strong class="summary-value summary-value--small svelte-z6w8je"> </strong> <small class="svelte-z6w8je"> </small></div> <div class="summary-card svelte-z6w8je"><span class="summary-label svelte-z6w8je">Observed types</span> <strong class="summary-value svelte-z6w8je"> </strong> <small class="svelte-z6w8je"> </small></div> <div><span class="summary-label svelte-z6w8je">Failures seen</span> <strong class="summary-value svelte-z6w8je"> </strong> <small class="svelte-z6w8je"> </small></div></div> <div class="activity-layout svelte-z6w8je"><section class="card-section svelte-z6w8je"><div class="card-head svelte-z6w8je"><h3 class="svelte-z6w8je">Needs attention</h3> <span class="svelte-z6w8je"> </span></div> <div class="attention-list svelte-z6w8je"><!> <!></div> <div class="subsection-head svelte-z6w8je"><h4 class="svelte-z6w8je">Live event feed</h4> <span class="svelte-z6w8je"> </span></div> <div class="feed-list svelte-z6w8je"><!> <!></div></section> <section class="card-section svelte-z6w8je"><div class="card-head svelte-z6w8je"><h3 class="svelte-z6w8je">Recent sessions</h3> <span class="svelte-z6w8je"> </span></div> <div class="session-list svelte-z6w8je"><!> <!></div> <div class="subsection-head svelte-z6w8je"><h4 class="svelte-z6w8je">Event breakdown</h4> <span class="svelte-z6w8je"> </span></div> <div class="table-scroll svelte-z6w8je"><table class="data-table svelte-z6w8je"><thead><tr><th class="svelte-z6w8je">Type</th><th class="svelte-z6w8je">Total</th></tr></thead><tbody><!><!></tbody></table></div> <div class="subsection-head svelte-z6w8je"><h4 class="svelte-z6w8je">Most active sessions</h4> <span class="svelte-z6w8je"> </span></div> <div class="hot-session-list svelte-z6w8je"><!> <!></div></section></div> <section class="card-section session-details svelte-z6w8je"><div class="card-head svelte-z6w8je"><h3 class="svelte-z6w8je">Selected session</h3> <!></div> <!></section></div>`);function od(e,t){F(t,!0);let n=w(!1),s=w(!1),l=w(``),u=w(``),f=w(`connecting`),m=w(R([])),h=w(null),g=w(R([])),_=w(R([])),y=w(R([])),S=w(R({})),T=w(R({})),E=w(R([])),D=w(null),O=w(R(Date.now())),N=null,P=null,I=null;function L(e){let t=e.properties;if(typeof t?.sessionID==`string`)return t.sessionID;let n=t?.info;return typeof n?.id==`string`?n.id:``}function z(e,t=140){return e.length>t?`${e.slice(0,t-1)}...`:e}function ee(e){return{type:e.type,properties:e.properties??{}}}function te(e){let t=L(e);if(!t)return null;let n=ee(e),r=it(n,t);if(r)return{id:r.callID||`${r.tool}:${Date.now()}`,kind:`tool`,tool:r.tool,status:r.status,title:r.title??r.tool,detail:r.detail??``,output:r.output??``,error:r.error??``,updatedAt:Date.now()};let i=Ze(n,t);return i?{id:i.id,kind:`step`,tool:`step`,status:i.status,title:i.title,detail:i.detail??``,output:``,error:``,updatedAt:Date.now()}:null}function G(e){let t=e.properties,n=L(e),r=e.type;if(r===`permission.asked`)return{kind:`permission`,severity:`high`,title:`Approval needed`,detail:typeof t?.permission==`string`?t.permission:`Assistant is waiting for a permission decision.`,sessionId:n};if(r===`question.asked`)return{kind:`question`,severity:`high`,title:`Answer requested`,detail:Array.isArray(t?.questions)?`${t.questions.length} question${t.questions.length===1?``:`s`} waiting for an answer.`:`Assistant asked a question.`,sessionId:n};if(r===`session.error`)return{kind:`error`,severity:`high`,title:`Session error`,detail:typeof t?.error==`string`?t.error:`Assistant session reported an error.`,sessionId:n};if(r===`session.deleted`)return{kind:`info`,severity:`medium`,title:`Session removed`,detail:`An active session was deleted.`,sessionId:n};if(r===`session.created`)return{kind:`info`,severity:`low`,title:`New session started`,detail:`A new conversation became active.`,sessionId:n};if(r.startsWith(`session.next.tool.`)){let e=typeof t?.tool==`string`?t.tool:`tool`,i=typeof t?.progress==`string`?t.progress:typeof t?.message==`string`?t.message:``;if(r.endsWith(`.failed`))return{kind:`error`,severity:`high`,title:`Tool failed: ${e}`,detail:z(i||`Assistant tool execution failed.`),sessionId:n};if(r.endsWith(`.called`))return{kind:`info`,severity:`medium`,title:`Tool running: ${e}`,detail:z(i||`Assistant started a tool.`),sessionId:n};if(r.endsWith(`.completed`))return{kind:`info`,severity:`low`,title:`Tool finished: ${e}`,detail:`Assistant completed a tool call.`,sessionId:n}}if(r===`message.part.updated`){let e=t?.part;if(typeof e?.tool==`string`&&e.state?.status===`error`)return{kind:`error`,severity:`high`,title:`Tool failed: ${e.tool}`,detail:typeof e.state.error==`string`?z(e.state.error):`Assistant tool execution failed.`,sessionId:n}}return null}function ne(e){let t=e.properties?.info;if(typeof t?.title==`string`&&t.title.trim())return t.title;let n=G(e);if(n?.title)return n.title;let r=L(e);return r?`Session ${r.slice(0,8)}`:`Assistant event`}function q(e){let t=e.properties,n=G(e);if(n?.detail)return n.detail;if(!t)return``;if(e.type.startsWith(`session.next.tool.`)){let e=typeof t.tool==`string`?t.tool:`tool`,n=typeof t.progress==`string`?t.progress:typeof t.message==`string`?t.message:``;return z(n?`${e}: ${n}`:e)}if(e.type===`message.part.updated`){let e=t.part;if(typeof e?.tool==`string`){let t=typeof e.state?.status==`string`?e.state.status:`updated`;return`${e.tool} ${t}`}if(typeof e?.type==`string`)return e.type}return e.type===`session.updated`?`Session metadata changed.`:``}function J(e){let t=G(e);if(!t)return;let n=Date.now();U(_,[{id:`${n}-${Math.random().toString(36).slice(2,8)}`,timestamp:n,...t},...i(_)].slice(0,30),!0)}function Y(e){let t=Date.now(),n=e.type||`unknown`,r=L(e),a=te(e)??void 0;U(y,[{id:`${t}-${Math.random().toString(36).slice(2,8)}`,type:n,sessionId:r,title:ne(e),detail:q(e),toolState:a,timestamp:t},...i(y)].slice(0,80),!0),U(S,{...i(S),[n]:(i(S)[n]??0)+1},!0),r&&U(T,{...i(T),[r]:(i(T)[r]??0)+1},!0),U(E,[t,...i(E).filter(e=>t-e<=5*6e4)],!0),U(D,t,!0)}function re(e){let t=i(m).find(t=>t.id===e.id);if(t){U(m,[{...t,...e},...i(m).filter(t=>t.id!==e.id)].sort((e,t)=>t.updatedAt-e.updatedAt),!0);return}U(m,[e,...i(m)].sort((e,t)=>t.updatedAt-e.updatedAt),!0)}function ie(e){let t=e.properties?.info,n=L(e);if(e.type===`session.deleted`&&n){U(m,i(m).filter(e=>e.id!==n),!0),i(h)===n&&U(h,i(m)[0]?.id??null,!0);return}if(!n)return;let r=i(m).find(e=>e.id===n),a=typeof t?.time?.created==`number`?t.time.created:r?.createdAt??Date.now(),o=typeof t?.time?.updated==`number`?t.time.updated:Date.now();re({id:n,title:typeof t?.title==`string`?t.title:r?.title??``,createdAt:a,updatedAt:o})}async function X(){U(n,!0),U(l,``);try{U(m,await we(),!0),(!i(h)||!i(m).some(e=>e.id===i(h)))&&U(h,i(m)[0]?.id??null,!0)}catch(e){U(l,e instanceof Error?e.message:`Failed to load sessions.`,!0)}finally{U(n,!1)}}async function Z(e){if(!e){U(g,[],!0);return}U(s,!0);try{U(g,await le(e),!0)}catch{U(g,[],!0)}finally{U(s,!1)}}async function ae(e){U(h,e,!0),await Z(e)}function oe(e){if(!e)return`n/a`;let t=new Date(e),n=new Date;return t.getFullYear()===n.getFullYear()&&t.getMonth()===n.getMonth()&&t.getDate()===n.getDate()?t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}):t.toLocaleString([],{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function se(e){return new Date(e).toLocaleString([],{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}let ce=W(()=>i(m).find(e=>e.id===i(h))??null),ue=W(()=>i(_).filter(e=>e.kind===`permission`||e.kind===`question`).length),de=W(()=>i(_).filter(e=>e.severity===`high`).length),fe=W(()=>i(m).filter(e=>i(O)-e.updatedAt<=5*6e4).length),pe=W(()=>i(_).slice(0,10)),me=W(()=>i(E).filter(e=>i(O)-e<=6e4).length),he=W(()=>i(E).filter(e=>i(O)-e<=5*6e4).length),ge=W(()=>Object.entries(i(S)).sort((e,t)=>t[1]-e[1]).slice(0,8)),_e=W(()=>i(m).map(e=>({...e,events:i(T)[e.id]??0})).sort((e,t)=>t.events-e.events||t.updatedAt-e.updatedAt).slice(0,8));A(()=>{tt.load(),X().then(()=>Z(i(h))),U(f,`connecting`),N=$e({onConnect:()=>{U(f,`connected`),U(u,``)},onDisconnect:e=>{U(f,`disconnected`),U(u,e.message,!0)},onCreated:()=>{},onUpdated:()=>{},onDeleted:()=>{},onEvent:e=>{U(f,`connected`),J(e),Y(e),ie(e)}}),P=setInterval(()=>{X()},3e4),I=setInterval(()=>{U(O,Date.now(),!0)},5e3)}),V(()=>{N?.(),P&&clearInterval(P),I&&clearInterval(I)});var ve=ad(),ye=H(ve),be=x(H(ye),2),xe=H(be),Se=H(xe),Ce=e=>{$(e,{})};d(Se,e=>{i(n)&&e(Ce)}),b(),K(xe),K(be),K(ye);var Te=x(ye,2),Ee=e=>{var t=Bu(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(l))),o(e,t)};d(Te,e=>{i(l)&&e(Ee)});var De=x(Te,2),Oe=e=>{var t=Vu(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(u))),o(e,t)};d(De,e=>{i(u)&&i(f)===`disconnected`&&e(Oe)});var Q=x(De,2),ke=H(Q),Ae=x(H(ke),2),je=H(Ae,!0);K(Ae);var Me=x(Ae,2),Ne=H(Me,!0);K(Me),K(ke);var Pe=x(ke,2),Fe=H(Pe,!0);K(Pe),K(Q);var Ie=x(Q,2),Le=H(Ie),Re=x(H(Le),2),ze=H(Re,!0);K(Re);var Be=x(Re,2),Ve=H(Be);K(Be),K(Le);var He=x(Le,2),Ue=x(H(He),2),We=H(Ue,!0);K(Ue);var Ge=x(Ue,2),Ke=H(Ge);K(Ge),K(He);var qe=x(He,2),Je=x(H(qe),2),Ye=H(Je,!0);K(Je),b(2),K(qe);var Xe=x(qe,2);let Qe;var et=x(H(Xe),2),nt=H(et,!0);K(et);var rt=x(et,2),at=H(rt,!0);K(rt),K(Xe);var ot=x(Xe,2),st=x(H(ot),2),ct=H(st,!0);K(st);var lt=x(st,2),ut=H(lt);K(lt),K(ot);var dt=x(ot,2);let ft;var mt=x(H(dt),2),gt=H(mt,!0);K(mt);var _t=x(mt,2),vt=H(_t,!0);K(_t),K(dt),K(Ie);var yt=x(Ie,2),bt=H(yt),xt=H(bt),St=x(H(xt),2),Ct=H(St,!0);K(St),K(xt);var wt=x(xt,2),Tt=H(wt),Et=e=>{o(e,Hu())};d(Tt,e=>{i(pe).length===0&&e(Et)}),M(x(Tt,2),17,()=>i(pe),e=>e.id,(e,t)=>{var n=Wu(),s=H(n),c=H(s),l=H(c,!0);K(c);var u=x(c,2),f=H(u,!0);K(u),K(s);var h=x(s,2),g=H(h,!0);K(h);var _=x(h,2),y=e=>{let n=W(()=>i(m).find(e=>e.id===i(t).sessionId)?.title);var s=Uu(),c=H(s,!0);K(s),v(e=>{k(s,`aria-label`,i(t).sessionId),r(c,e)},[()=>i(n)||`Session ${i(t).sessionId.slice(0,8)}…`]),a(`click`,s,()=>void ae(i(t).sessionId)),o(e,s)};d(_,e=>{i(t).sessionId&&e(y)}),K(n),v(e=>{p(n,1,`attention-item attention-item--${i(t).severity??``}`,`svelte-z6w8je`),r(l,i(t).title),r(f,e),r(g,i(t).detail)},[()=>oe(i(t).timestamp)]),o(e,n)}),K(wt);var Dt=x(wt,2),Ot=x(H(Dt),2),kt=H(Ot,!0);K(Ot),K(Dt);var At=x(Dt,2),jt=H(At),Mt=e=>{o(e,Gu())};d(jt,e=>{i(y).length===0&&e(Mt)}),M(x(jt,2),17,()=>i(y).slice(0,12),e=>e.id,(e,t)=>{var n=Ju(),s=H(n),c=H(s),l=H(c,!0);K(c);var u=x(c,2),f=H(u,!0);K(u),K(s);var p=x(s,2),h=H(p,!0);K(p);var g=x(p,2),_=e=>{{let n=W(()=>[i(t).toolState]);pt(e,{get items(){return i(n)},ariaLabel:`Activity tool event`})}},y=e=>{var n=Ku(),a=H(n,!0);K(n),v(()=>r(a,i(t).detail)),o(e,n)};d(g,e=>{i(t).toolState?e(_):i(t).detail&&e(y,1)});var b=x(g,2),S=e=>{let n=W(()=>i(m).find(e=>e.id===i(t).sessionId)?.title);var s=qu(),c=H(s,!0);K(s),v(e=>{k(s,`aria-label`,i(t).sessionId),r(c,e)},[()=>i(n)||`Session ${i(t).sessionId.slice(0,8)}…`]),a(`click`,s,()=>void ae(i(t).sessionId)),o(e,s)};d(b,e=>{i(t).sessionId&&e(S)}),K(n),v(e=>{r(l,i(t).type),r(f,e),r(h,i(t).title)},[()=>oe(i(t).timestamp)]),o(e,n)}),K(At),K(bt);var Nt=x(bt,2),Pt=H(Nt),Ft=x(H(Pt),2),It=H(Ft,!0);K(Ft),K(Pt);var Lt=x(Pt,2),Rt=H(Lt),zt=e=>{o(e,Yu())};d(Rt,e=>{i(m).length===0&&!i(n)&&e(zt)}),M(x(Rt,2),17,()=>i(m).slice(0,12),e=>e.id,(e,t)=>{var n=Xu();let s;var c=H(n),l=H(c),u=H(l,!0);K(l);var d=x(l,2),f=H(d);K(d),K(c);var m=x(c,2),g=H(m),_=H(g);K(g);var y=x(g,2),b=H(y);K(y),K(m),K(n),v((e,a)=>{s=p(n,1,`session-row svelte-z6w8je`,null,s,{selected:i(h)===i(t).id}),r(u,i(t).title||`Untitled session`),r(f,`Updated ${e??``}`),r(_,`${i(T)[i(t).id]??0??``} evt`),r(b,`${a??``}...`)},[()=>se(i(t).updatedAt),()=>i(t).id.slice(0,12)]),a(`click`,n,()=>void ae(i(t).id)),o(e,n)}),K(Lt);var Bt=x(Lt,2),Vt=x(H(Bt),2),Ht=H(Vt,!0);K(Vt),K(Bt);var Ut=x(Bt,2),Wt=H(Ut),Gt=x(H(Wt)),Kt=H(Gt),qt=e=>{o(e,Zu())};d(Kt,e=>{i(ge).length===0&&e(qt)}),M(x(Kt),17,()=>i(ge),c,(e,t)=>{var n=W(()=>C(i(t),2));let a=()=>i(n)[0],s=()=>i(n)[1];var c=Qu(),l=H(c),u=H(l,!0);K(l);var d=x(l),f=H(d,!0);K(d),K(c),v(()=>{r(u,a()),r(f,s())}),o(e,c)}),K(Gt),K(Wt),K(Ut);var Jt=x(Ut,2),Yt=x(H(Jt),2),Xt=H(Yt,!0);K(Yt),K(Jt);var Zt=x(Jt,2),Qt=H(Zt),$t=e=>{o(e,$u())};d(Qt,e=>{i(_e).length===0&&e($t)}),M(x(Qt,2),17,()=>i(_e),e=>e.id,(e,t)=>{var n=ed(),a=H(n),s=H(a),c=H(s,!0);K(s);var l=x(s,2),u=H(l,!0);K(l),K(a);var d=x(a,2),f=H(d,!0);K(d),K(n),v(()=>{r(c,i(t).title||`Untitled session`),r(u,i(t).id),r(f,i(t).events)}),o(e,n)}),K(Zt),K(Nt),K(yt);var en=x(yt,2),tn=H(en),nn=x(H(tn),2),rn=e=>{var t=td(),n=H(t,!0);K(t),v(()=>r(n,i(ce).title||i(ce).id)),o(e,t)};d(nn,e=>{i(ce)&&e(rn)}),K(tn);var an=x(tn,2),on=e=>{var t=rd(),n=j(t),c=H(n),l=x(H(c)),u=H(l,!0);K(l),K(c);var f=x(c,2),p=x(H(f)),m=H(p,!0);K(p),K(f);var h=x(f,2),_=x(H(h)),y=H(_,!0);K(_),K(h);var S=x(h,2),C=x(H(S)),w=H(C,!0);K(C),K(S),K(n);var E=x(n,2),D=x(H(E),2),O=H(D),k=e=>{$(e,{})};d(O,e=>{i(s)&&e(k)}),b(),K(D),K(E);var A=x(E,2),N=e=>{o(e,nd())};d(A,e=>{i(g).length===0&&!i(s)&&e(N)});var P=x(A,2);M(P,21,()=>i(g).slice(-12),e=>e.id,(e,t)=>{ht(e,{get entry(){return i(t)}})}),K(P),v((e,t)=>{r(u,e),r(m,t),r(y,i(ce).id),r(w,i(T)[i(ce).id]??0),D.disabled=i(s)},[()=>se(i(ce).createdAt),()=>se(i(ce).updatedAt)]),a(`click`,D,()=>void Z(i(ce).id)),o(e,t)},sn=e=>{o(e,id())};d(an,e=>{i(ce)?e(on):e(sn,-1)}),K(en),K(ve),v((e,t)=>{xe.disabled=i(n),r(je,tt.active?.label??`Active assistant endpoint`),r(Ne,tt.active?.url??`Loading endpoint URL...`),p(Pe,1,`stream-badge stream-badge--${i(f)??``}`,`svelte-z6w8je`),r(Fe,i(f)),r(ze,i(me)),r(Ve,`${i(he)??``} events seen in the last 5 minutes`),r(We,i(m).length),r(Ke,`${i(fe)??``} active in the last 5 minutes`),r(Ye,i(ue)),Qe=p(Xe,1,`summary-card svelte-z6w8je`,null,Qe,{"summary-card--danger":i(de)>0}),r(nt,e),r(at,i(de)>0?`${i(de)} failure${i(de)===1?``:`s`} need review.`:i(f)===`connected`?`Stream healthy.`:`Reconnect needed.`),r(ct,t),r(ut,`${i(y).length??``} recent events buffered`),ft=p(dt,1,`summary-card svelte-z6w8je`,null,ft,{"summary-card--danger":i(de)>0}),r(gt,i(de)),r(vt,i(de)>0?`Tool or session failures need review.`:`No current failures seen.`),r(Ct,i(pe).length),r(kt,i(y).length),r(It,i(m).length),r(Ht,i(ge).length),r(Xt,i(_e).length)},[()=>oe(i(D)),()=>Object.keys(i(S)).length]),a(`click`,xe,()=>void X()),o(e,ve),B()}h([`click`]);var sd=f(`<div class="feedback feedback--error" role="alert"> </div>`),cd=f(`<div class="stats-loading svelte-1jrmvb5"><!> <span>Loading knowledge stats…</span></div>`),ld=f(`<div class="stats-unavailable svelte-1jrmvb5"><p> </p></div>`),ud=f(`<li> </li>`),dd=f(`<ul class="stats-advisories svelte-1jrmvb5"></ul>`),fd=f(`<div class="stats-row stats-row--wide svelte-1jrmvb5"><span> </span> <strong class="svelte-1jrmvb5"> </strong></div>`),pd=f(`<div class="stats-status svelte-1jrmvb5"><span> </span> <!></div> <div class="stats-cards svelte-1jrmvb5"><div class="stats-card svelte-1jrmvb5"><span class="stats-value svelte-1jrmvb5"> </span> <span class="stats-label svelte-1jrmvb5">Indexed assets</span></div> <div class="stats-card svelte-1jrmvb5"><span class="stats-value svelte-1jrmvb5"> </span> <span class="stats-label svelte-1jrmvb5">Pending proposals</span></div> <div class="stats-card svelte-1jrmvb5"><span class="stats-value svelte-1jrmvb5"> </span> <span class="stats-label svelte-1jrmvb5">Improve runs completed</span></div> <div class="stats-card svelte-1jrmvb5"><span class="stats-value svelte-1jrmvb5"> </span> <span class="stats-label svelte-1jrmvb5">Reflect cooldown skips</span></div></div> <div class="stats-grid svelte-1jrmvb5"><div class="stats-row svelte-1jrmvb5"><span>AKM version</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Last indexed</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Embeddings indexed</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Vector search available</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Memories indexed</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Skills indexed</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Lessons indexed</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Improve invoked</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Improve skipped</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Reflect OK</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Consolidation promoted</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Consolidation merged</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Consolidation deleted</span><strong class="svelte-1jrmvb5"> </strong></div></div> <div class="stats-grid svelte-1jrmvb5"><div class="stats-row stats-row--wide svelte-1jrmvb5"><span>Pending proposals</span><strong class="svelte-1jrmvb5"> </strong></div> <!></div>`,1),md=f(`<section class="stats-section svelte-1jrmvb5"><div class="stats-header svelte-1jrmvb5"><div><h3 class="svelte-1jrmvb5">Knowledge &amp; Learning</h3> <p class="section-note">Read-only AKM health, memory counts, improve activity, and pending proposals from live CLI JSON output.</p></div> <button class="btn btn-secondary btn-sm" type="button"><!> Refresh stats</button></div> <!></section>`);function hd(e,t){F(t,!0);let n=w(!1),c=w(``),l=w(null);async function u(){U(n,!0),U(c,``);try{U(l,await re(),!0)}catch(e){U(c,e instanceof Error?e.message:`Failed to load knowledge stats.`,!0)}finally{U(n,!1)}}function f(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}function m(e,t=`Yes`,n=`No`){return e===!0?t:e===!1?n:`—`}function h(e){return e==null?`—`:e.toLocaleString()}function g(e){return e===`pass`?`Healthy`:e===`warn`?`Warnings`:`Unknown`}A(()=>{u()});var _=md(),y=H(_),S=x(H(y),2),C=H(S),T=e=>{$(e,{})};d(C,e=>{i(n)&&e(T)}),b(),K(S),K(y);var E=x(y,2),D=e=>{var t=sd(),n=H(t,!0);K(t),v(()=>r(n,i(c))),o(e,t)},O=e=>{var t=cd();$(H(t),{}),b(2),K(t),o(e,t)},k=e=>{var t=ld(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(l).reason??`The akm CLI is not reachable from the admin host.`)),o(e,t)},N=e=>{var t=pd(),n=j(t),a=H(n),c=H(a,!0);K(a);var u=x(a,2),_=e=>{var t=dd();M(t,20,()=>i(l).health.advisories,e=>e,(e,t)=>{var n=ud(),i=H(n,!0);K(n),v(()=>r(i,t)),o(e,n)}),K(t),o(e,t)};d(u,e=>{i(l).health.advisories.length>0&&e(_)}),K(n);var y=x(n,2),S=H(y),C=H(S),w=H(C,!0);K(C),b(2),K(S);var T=x(S,2),E=H(T),D=H(E,!0);K(E),b(2),K(T);var O=x(T,2),k=H(O),A=H(k,!0);K(k),b(2),K(O);var N=x(O,2),P=H(N),F=H(P,!0);K(P),b(2),K(N),K(y);var I=x(y,2),L=H(I),R=x(H(L)),z=H(R,!0);K(R),K(L);var B=x(L,2),V=x(H(B)),U=H(V,!0);K(V),K(B);var ee=x(B,2),te=x(H(ee)),W=H(te,!0);K(te),K(ee);var G=x(ee,2),ne=x(H(G)),q=H(ne,!0);K(ne),K(G);var J=x(G,2),Y=x(H(J)),re=H(Y,!0);K(Y),K(J);var ie=x(J,2),X=x(H(ie)),Z=H(X,!0);K(X),K(ie);var ae=x(ie,2),oe=x(H(ae)),se=H(oe,!0);K(oe),K(ae);var ce=x(ae,2),le=x(H(ce)),ue=H(le,!0);K(le),K(ce);var de=x(ce,2),fe=x(H(de)),pe=H(fe,!0);K(fe),K(de);var me=x(de,2),he=x(H(me)),ge=H(he,!0);K(he),K(me);var _e=x(me,2),ve=x(H(_e)),ye=H(ve,!0);K(ve),K(_e);var be=x(_e,2),xe=x(H(be)),Se=H(xe,!0);K(xe),K(be);var Ce=x(be,2),we=x(H(Ce)),Te=H(we,!0);K(we),K(Ce),K(I);var Ee=x(I,2),De=H(Ee),Oe=x(H(De)),Q=H(Oe,!0);K(Oe),K(De);var ke=x(De,2),Ae=e=>{var t=s();M(j(t),19,()=>i(l).proposals.items,(e,t)=>e.ref??`${e.generator??`proposal`}-${t}`,(e,t)=>{var n=fd(),a=H(n),s=H(a,!0);K(a);var c=x(a,2),l=H(c);K(c),K(n),v(e=>{r(s,i(t).ref??`Unknown ref`),r(l,`${i(t).generator??`unknown generator`??``} · ${i(t).status??`pending`??``} · ${e??``}`)},[()=>f(i(t).createdAt)]),o(e,n)}),o(e,t)};d(ke,e=>{i(l).proposals.items.length>0&&e(Ae)}),K(Ee),v((e,t,n,o,s,u,d,f,m,h,g,_,v,y,b,x,S)=>{p(a,1,`stats-badge ${i(l).health.status===`warn`?`stats-badge-warn`:i(l).health.status===`unknown`?`stats-badge-unknown`:``}`,`svelte-1jrmvb5`),r(c,e),r(w,t),r(D,n),r(A,o),r(F,s),r(z,i(l).version??`—`),r(U,u),r(W,d),r(q,f),r(re,m),r(Z,h),r(se,g),r(ue,_),r(pe,v),r(ge,y),r(ye,b),r(Se,x),r(Te,S),r(Q,i(l).proposals.pending===0?`None pending.`:`${i(l).proposals.pending} pending`)},[()=>g(i(l).health.status),()=>h(i(l).index.entryCount),()=>h(i(l).proposals.pending),()=>h(i(l).improve.completed),()=>h(i(l).improve.reflectCooldown),()=>f(i(l).index.lastBuiltAt),()=>m(i(l).index.hasEmbeddings),()=>m(i(l).index.vecAvailable),()=>h(i(l).assetCounts.memory),()=>h(i(l).assetCounts.skill),()=>h(i(l).assetCounts.lesson),()=>h(i(l).improve.invoked),()=>h(i(l).improve.skipped),()=>h(i(l).improve.reflectOk),()=>h(i(l).improve.consolidation.promoted),()=>h(i(l).improve.consolidation.merged),()=>h(i(l).improve.consolidation.deleted)]),o(e,t)};d(E,e=>{i(c)?e(D):!i(l)||i(n)?e(O,1):i(l).available?e(N,-1):e(k,2)}),K(_),v(()=>S.disabled=t.disabled),a(`click`,S,()=>void u()),o(e,_),B()}h([`click`]);var gd=f(`<div class="input-with-toggle svelte-176sy43"><input class="control-input svelte-176sy43" spellcheck="false" autocomplete="new-password"/> <button type="button" class="btn-icon svelte-176sy43"> </button></div>`);function _d(e,t){F(t,!0);let n=L(t,`value`,15,``),s=L(t,`disabled`,3,!1),c=w(!1);var l=gd(),u=H(l);P(u);var d=x(u,2),f=H(d,!0);K(d),K(l),v(()=>{k(u,`id`,t.id),k(u,`type`,i(c)?`text`:`password`),k(u,`placeholder`,t.placeholder),u.disabled=s(),k(d,`aria-label`,i(c)?`Hide value`:`Show value`),d.disabled=s(),r(f,i(c)?`Hide`:`Show`)}),z(u,n),a(`click`,d,()=>{U(c,!i(c))}),o(e,l),B()}h([`click`]);var vd=f(`<section class="config-section svelte-y5k1u8"><div class="section-header svelte-y5k1u8"><h3 class="section-title svelte-y5k1u8">Semantic search (embeddings)</h3> <div class="section-actions svelte-y5k1u8"><button class="btn btn-secondary btn-sm" type="button"><!> Detect</button> <button class="btn btn-secondary btn-sm" type="button"><!> Test</button></div></div> <p class="section-note svelte-y5k1u8">Vector embedding provider for semantic search. Leave Endpoint and Model blank to use built-in local embeddings.</p> <div class="controls--grid svelte-y5k1u8"><div class="control-group control-group--wide svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embEndpoint">Endpoint</label> <input id="embEndpoint" class="control-input svelte-y5k1u8" type="url" spellcheck="false" placeholder="https://api.openai.com/v1/embeddings"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embModel">Model</label> <input id="embModel" class="control-input svelte-y5k1u8" type="text" spellcheck="false" placeholder="text-embedding-3-small"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embProvider">Provider (label)</label> <input id="embProvider" class="control-input svelte-y5k1u8" type="text" spellcheck="false" placeholder="openai"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embApiKey">API Key</label> <!></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embDimension">Dimensions</label> <input id="embDimension" class="control-input control-input--narrow svelte-y5k1u8" type="number" min="1"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embLocalModel">Local model</label> <input id="embLocalModel" class="control-input svelte-y5k1u8" type="text" spellcheck="false" placeholder="Xenova/bge-small-en-v1.5"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embBatchSize">Batch size</label> <input id="embBatchSize" class="control-input control-input--narrow svelte-y5k1u8" type="number" min="1"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embChunkSize">Chunk size (chars)</label> <input id="embChunkSize" class="control-input control-input--narrow svelte-y5k1u8" type="number" min="1"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embContextLength">Context length</label> <input id="embContextLength" class="control-input control-input--narrow svelte-y5k1u8" type="number" min="1"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embOllamaNumCtx">Ollama num_ctx</label> <input id="embOllamaNumCtx" class="control-input control-input--narrow svelte-y5k1u8" type="number" min="1"/></div></div></section>`);function yd(e,t){F(t,!0);let n=L(t,`endpoint`,15,``),r=L(t,`model`,15,``),i=L(t,`provider`,15,``),s=L(t,`apiKey`,15,``),c=L(t,`dimension`,15,1536),l=L(t,`localModel`,15,``),u=L(t,`batchSize`,15,``),f=L(t,`chunkSize`,15,``),p=L(t,`contextLength`,15,``),m=L(t,`ollamaNumCtx`,15,``),h=L(t,`disabled`,3,!1),g=L(t,`detecting`,3,!1),_=L(t,`testing`,3,!1);var y=vd(),S=H(y),C=x(H(S),2),w=H(C),T=H(w),E=e=>{$(e,{})};d(T,e=>{g()&&e(E)}),b(),K(w);var D=x(w,2),O=H(D),k=e=>{$(e,{})};d(O,e=>{_()&&e(k)}),b(),K(D),K(C),K(S);var A=x(S,4),j=H(A),M=x(H(j),2);P(M),K(j);var N=x(j,2),I=x(H(N),2);P(I),K(N);var R=x(N,2),V=x(H(R),2);P(V),K(R);var U=x(R,2);_d(x(H(U),2),{id:`embApiKey`,placeholder:"${AKM_EMBED_API_KEY}",get disabled(){return h()},get value(){return s()},set value(e){s(e)}}),K(U);var ee=x(U,2),te=x(H(ee),2);P(te),K(ee);var W=x(ee,2),G=x(H(W),2);P(G),K(W);var ne=x(W,2),q=x(H(ne),2);P(q),K(ne);var J=x(ne,2),Y=x(H(J),2);P(Y),K(J);var re=x(J,2),ie=x(H(re),2);P(ie),K(re);var X=x(re,2),Z=x(H(X),2);P(Z),K(X),K(A),K(y),v(()=>{w.disabled=h()||g()||_(),D.disabled=h()||g()||_(),M.disabled=h(),I.disabled=h(),V.disabled=h(),te.disabled=h(),G.disabled=h(),q.disabled=h(),Y.disabled=h(),ie.disabled=h(),Z.disabled=h()}),a(`click`,w,function(...e){t.ondetect?.apply(this,e)}),a(`click`,D,function(...e){t.ontest?.apply(this,e)}),z(M,n),z(I,r),z(V,i),z(te,c),z(G,l),z(q,u),z(Y,f),z(ie,p),z(Z,m),o(e,y),B()}h([`click`]);var bd=f(`<section class="config-section svelte-gfn07p"><h3 class="section-title svelte-gfn07p">Behavior</h3> <div class="controls--grid svelte-gfn07p"><div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="semanticSearch">Semantic search</label> <select id="semanticSearch" class="control-input svelte-gfn07p"><option>Auto (vector index when available)</option><option>Off (keyword only)</option></select></div> <div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="outputFormat">Output format</label> <select id="outputFormat" class="control-input svelte-gfn07p"><option>JSON</option><option>YAML</option><option>Text</option></select></div> <div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="outputDetail">Output detail</label> <select id="outputDetail" class="control-input svelte-gfn07p"><option>Brief</option><option>Normal</option><option>Full</option></select></div></div></section> <details class="adv-details svelte-gfn07p"><summary class="adv-summary svelte-gfn07p">Advanced tuning — affects memory scoring &amp; indexing (leave at defaults unless you know the impact)</summary> <section class="config-section adv-body svelte-gfn07p"><p class="section-note svelte-gfn07p">Global tuning beyond per-profile settings. Leave blank to use akm defaults.</p> <div class="controls--grid svelte-gfn07p"><div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-halflife">Utility decay half-life (days)</label> <input id="adv-halflife" class="control-input control-input--narrow svelte-gfn07p" type="number" min="0.1" step="0.1" placeholder="default"/></div> <div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-fbboost">Feedback stability boost (≥1)</label> <input id="adv-fbboost" class="control-input control-input--narrow svelte-gfn07p" type="number" min="1" step="0.1" placeholder="default"/></div> <div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-eventret">Event retention (days)</label> <input id="adv-eventret" class="control-input control-input--narrow svelte-gfn07p" type="number" min="0" placeholder="default"/></div> <div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-minscore">Search min score</label> <input id="adv-minscore" class="control-input control-input--narrow svelte-gfn07p" type="number" min="0" step="0.01" placeholder="default"/></div> <div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-rerank">Curate rerank</label> <select id="adv-rerank" class="control-input svelte-gfn07p"><option>Default</option><option>Enabled</option><option>Disabled</option></select></div> <div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-reqreason">Feedback requires reason</label> <select id="adv-reqreason" class="control-input svelte-gfn07p"><option>Default</option><option>Required</option><option>Optional</option></select></div> <div class="control-group control-group--wide svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-failmodes">Allowed feedback failure modes (comma-separated)</label> <input id="adv-failmodes" class="control-input svelte-gfn07p" type="text" spellcheck="false" placeholder="e.g. outdated, incorrect, irrelevant"/></div> <div class="control-group control-group--wide svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-index">Index config (JSON, per-pass)</label> <textarea id="adv-index" class="control-input svelte-gfn07p" rows="4" spellcheck="false"></textarea> <span class="section-note svelte-gfn07p">Advanced per-pass indexing options (enrichment, graphExtraction, metadataEnhance, stalenessDetection). Must be a JSON object.</span></div></div></section></details>`,1);function xd(e,t){F(t,!0);let n=L(t,`semanticSearchMode`,15,`auto`),r=L(t,`outputFormat`,15,`json`),i=L(t,`outputDetail`,15,`brief`),a=L(t,`imHalfLife`,15,``),s=L(t,`imFeedbackBoost`,15,``),c=L(t,`imEventRetention`,15,``),l=L(t,`searchMinScore`,15,``),u=L(t,`searchCurateRerank`,15,``),d=L(t,`fbRequireReason`,15,``),f=L(t,`fbFailureModes`,15,``),p=L(t,`indexJson`,15,``),m=L(t,`disabled`,3,!1);var h=bd(),g=j(h),_=x(H(g),2),y=H(_),S=x(H(y),2),C=H(S);C.value=C.__value=`auto`;var w=x(C);w.value=w.__value=`off`,K(S),K(y);var T=x(y,2),E=x(H(T),2),D=H(E);D.value=D.__value=`json`;var O=x(D);O.value=O.__value=`yaml`;var A=x(O);A.value=A.__value=`text`,K(E),K(T);var M=x(T,2),N=x(H(M),2),I=H(N);I.value=I.__value=`brief`;var R=x(I);R.value=R.__value=`normal`;var V=x(R);V.value=V.__value=`full`,K(N),K(M),K(_),K(g);var U=x(g,2),te=x(H(U),2),W=x(H(te),2),ne=H(W),q=x(H(ne),2);P(q),K(ne);var J=x(ne,2),Y=x(H(J),2);P(Y),K(J);var re=x(J,2),ie=x(H(re),2);P(ie),K(re);var X=x(re,2),Z=x(H(X),2);P(Z),K(X);var ae=x(X,2),oe=x(H(ae),2),se=H(oe);se.value=se.__value=``;var ce=x(se);ce.value=ce.__value=`on`;var le=x(ce);le.value=le.__value=`off`,K(oe),K(ae);var ue=x(ae,2),de=x(H(ue),2),fe=H(de);fe.value=fe.__value=``;var pe=x(fe);pe.value=pe.__value=`on`;var me=x(pe);me.value=me.__value=`off`,K(de),K(ue);var he=x(ue,2),ge=x(H(he),2);P(ge),K(he);var _e=x(he,2),ve=x(H(_e),2);ee(ve),k(ve,`placeholder`,`{ "enrichment": { "llm": false } }`),b(2),K(_e),K(W),K(te),K(U),v(()=>{S.disabled=m(),E.disabled=m(),N.disabled=m(),q.disabled=m(),Y.disabled=m(),ie.disabled=m(),Z.disabled=m(),oe.disabled=m(),de.disabled=m(),ge.disabled=m(),ve.disabled=m()}),G(S,n),G(E,r),G(N,i),z(q,a),z(Y,s),z(ie,c),z(Z,l),G(oe,u),G(de,d),z(ge,f),z(ve,p),o(e,h),B()}var Sd=f(`<option> </option>`),Cd=f(`<div class="report-error svelte-l50p56" role="alert"><p class="svelte-l50p56"> </p> <button class="btn btn-secondary btn-sm" type="button">Retry</button></div>`),wd=f(`<div class="report-loading svelte-l50p56">Generating report…</div>`),Td=f(`<iframe title="AKM Health Report" class="report-frame svelte-l50p56"></iframe>`),Ed=f(`<!> <!>`,1),Dd=f(`<section class="report-section svelte-l50p56"><div class="report-header svelte-l50p56"><div><h3 class="svelte-l50p56">AKM Health Report</h3> <p class="section-note">Build and view a live HTML report from the running assistant's <code>akm health</code> output. The default window is 72 hours.</p></div> <div class="report-controls svelte-l50p56"><label class="control-field svelte-l50p56" for="akm-report-window"><span>Time frame</span> <select id="akm-report-window" class="control-input svelte-l50p56"></select></label> <button class="btn btn-secondary btn-sm" type="button">Refresh report</button></div></div> <div class="report-frame-wrap svelte-l50p56"><!></div></section>`);function Od(e,t){F(t,!0);let n=[{value:`24h`,label:`24 hours`},{value:`72h`,label:`72 hours`},{value:`7d`,label:`7 days`},{value:`14d`,label:`14 days`},{value:`30d`,label:`30 days`}],s=w(`72h`),l=w(0),u=w(!0),f=w(!1),p=w(null),h=w(``),_=W(()=>`/admin/akm/health-report?since=${encodeURIComponent(i(s))}&refresh=${i(l)}`);async function y(){U(u,!0),U(f,!1),U(p,null),U(h,``);try{let e=await fetch(i(_),{method:`HEAD`});if(!e.ok){U(h,`Failed to generate report (${e.status} ${e.statusText}).`),U(u,!1);return}}catch{U(h,`Could not reach the report endpoint. Check that the stack is running.`),U(u,!1);return}U(p,i(_),!0)}function b(){U(l,i(l)+1),y()}function S(){U(l,i(l)+1),y()}A(()=>{y()});var C=Dd(),T=H(C),E=x(H(T),2),D=H(E),O=x(H(D),2);M(O,21,()=>n,c,(e,t)=>{var n=Sd(),a=H(n,!0);K(n);var s={};v(()=>{r(a,i(t).label),s!==(s=i(t).value)&&(n.value=(n.__value=i(t).value)??``)}),o(e,n)}),K(O),K(D);var N=x(D,2);K(E),K(T);var P=x(T,2),I=H(P),L=e=>{var t=Cd(),n=H(t),s=H(n,!0);K(n);var c=x(n,2);K(t),v(()=>r(s,i(h))),a(`click`,c,b),o(e,t)},R=e=>{var t=Ed(),n=j(t),r=e=>{o(e,wd())};d(n,e=>{(i(u)||!i(f))&&e(r)});var a=x(n,2),s=e=>{var t=Td();v(()=>k(t,`src`,i(p))),m(`load`,t,()=>{U(u,!1),U(f,!0)}),g(t),o(e,t)};d(a,e=>{i(p)&&e(s)}),o(e,t)};d(I,e=>{i(h)?e(L):e(R,-1)}),K(P),K(C),v(()=>{O.disabled=t.disabled,N.disabled=t.disabled}),a(`change`,O,S),G(O,()=>i(s),e=>U(s,e)),a(`click`,N,b),o(e,C),B()}h([`change`,`click`]);var kd=f(`<span class="badge badge--default svelte-zzh9mp">Default</span>`),Ad=f(`<button class="btn btn-sm">Set Default</button>`),jd=f(`<div class="profile-row svelte-zzh9mp"><span class="profile-row-name svelte-zzh9mp"> </span> <!> <!> <div class="profile-row-actions svelte-zzh9mp"><!> <button class="btn btn-sm">Edit</button> <button class="btn btn-sm btn-danger">Remove</button></div></div>`);function Md(e,t){let n=L(t,`disabled`,3,!1);var i=jd(),c=H(i),l=H(c,!0);K(c);var f=x(c,2),p=e=>{var n=s();u(j(n),()=>t.extra),o(e,n)};d(f,e=>{t.extra&&e(p)});var m=x(f,2),h=e=>{o(e,kd())};d(m,e=>{t.isDefault&&t.name&&e(h)});var g=x(m,2),_=H(g),y=e=>{var r=Ad();v(()=>r.disabled=n()),a(`click`,r,function(...e){t.onsetdefault?.apply(this,e)}),o(e,r)};d(_,e=>{t.name&&!t.isDefault&&e(y)});var b=x(_,2),S=x(b,2);K(g),K(i),v(()=>{r(l,t.name||`(unnamed)`),b.disabled=n(),S.disabled=n()}),a(`click`,b,function(...e){t.onedit?.apply(this,e)}),a(`click`,S,function(...e){t.onremove?.apply(this,e)}),o(e,i)}h([`click`]);var Nd=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M5 6.5c0-1.4 3.1-2.5 7-2.5s7 1.1 7 2.5-3.1 2.5-7 2.5-7-1.1-7-2.5z"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M5 6.5v11c0 1.4 3.1 2.5 7 2.5s7-1.1 7-2.5v-11"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M5 12c0 1.4 3.1 2.5 7 2.5s7-1.1 7-2.5"></path></svg>`);function Pd(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=Nd();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Fd=f(`<div class="profile-empty svelte-zwwvog"><!> <p class="empty-note svelte-zwwvog">No LLM profiles configured — add one below.</p></div>`),Id=f(`<div class="profile-list svelte-zwwvog"></div>`),Ld=f(`<section class="config-section svelte-zwwvog"><h3 class="section-title svelte-zwwvog">Language models <span class="section-title-aka svelte-zwwvog">akm LLM profiles</span></h3> <p class="section-note svelte-zwwvog">The language models your assistant uses to organize and improve its memory. Add one per LLM service.</p> <!> <button class="btn btn-secondary btn-sm">+ Add LLM Profile</button></section>`);function Rd(e,t){F(t,!0);let n=L(t,`profiles`,27,()=>R([])),r=L(t,`defaultName`,15,``),s=L(t,`disabled`,3,!1);var c=Ld(),l=x(H(c),4),u=e=>{var t=Fd();Pd(H(t),{size:24}),b(2),K(t),o(e,t)},f=e=>{var a=Id();M(a,21,n,e=>e.id,(e,n)=>{{let a=W(()=>r()===i(n).name);Md(e,{get name(){return i(n).name},get isDefault(){return i(a)},get disabled(){return s()},onsetdefault:()=>{r(i(n).name)},onedit:()=>t.onedit(i(n)),onremove:()=>t.onremove(i(n).id)})}}),K(a),o(e,a)};d(l,e=>{n().length===0?e(u):e(f,-1)});var p=x(l,2);K(c),v(()=>p.disabled=s()),a(`click`,p,function(...e){t.onadd?.apply(this,e)}),o(e,c),B()}h([`click`]);var zd=f(`<div class="profile-empty svelte-anyxpa"><!> <p class="empty-note svelte-anyxpa">No agent profiles defined.</p></div>`),Bd=f(`<span class="badge svelte-anyxpa"> </span>`),Vd=f(`<div class="profile-list svelte-anyxpa"></div>`),Hd=f(`<section class="config-section svelte-anyxpa"><h3 class="section-title svelte-anyxpa">Agent runners <span class="section-title-aka svelte-anyxpa">akm agent profiles</span></h3> <p class="section-note svelte-anyxpa">Runner configs for maintenance steps that spawn a subprocess (opencode or claude CLI).</p> <!> <button class="btn btn-secondary btn-sm">+ Add Agent Profile</button></section>`);function Ud(e,t){F(t,!0);let n=L(t,`profiles`,27,()=>R([])),s=L(t,`defaultName`,15,``),c=L(t,`disabled`,3,!1);var l=Hd(),u=x(H(l),4),f=e=>{var t=zd();gt(H(t),{size:24}),b(2),K(t),o(e,t)},p=e=>{var a=Vd();M(a,21,n,e=>e.id,(e,n)=>{{let a=e=>{var t=Bd(),a=H(t,!0);K(t),v(()=>r(a,i(n).platform)),o(e,t)},l=W(()=>s()===i(n).name);Md(e,{get name(){return i(n).name},get isDefault(){return i(l)},get disabled(){return c()},onsetdefault:()=>{s(i(n).name)},onedit:()=>t.onedit(i(n)),onremove:()=>t.onremove(i(n).id),extra:a,$$slots:{extra:!0}})}}),K(a),o(e,a)};d(u,e=>{n().length===0?e(f):e(p,-1)});var m=x(u,2);K(l),v(()=>m.disabled=c()),a(`click`,m,function(...e){t.onadd?.apply(this,e)}),o(e,l),B()}h([`click`]);var Wd=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M12 22c-3.3 0-5.5-2-5.5-4.5 0-3 2.5-5 3.5-7 .5 1.5 1.5 2 2 3 .5-2.5 1-5.5 1.5-8 1.5 2.5 2 5.5 1.5 8.5.5-1.5 1-3 .5-4.5 1 2 1.5 4 0 5.5 0 2.5-1.5 7-3.5 7z"></path></svg>`);function Gd(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=Wd();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Kd=f(`<div class="profile-empty svelte-1ngozvb"><!> <p class="empty-note svelte-1ngozvb">No improve profiles defined — add one below.</p></div>`),qd=f(`<span class="profile-row-desc svelte-1ngozvb"> </span>`),Jd=f(`<div class="profile-list svelte-1ngozvb"></div>`),Yd=f(`<section class="config-section svelte-1ngozvb"><h3 class="section-title svelte-1ngozvb">Memory maintenance <span class="section-title-aka svelte-1ngozvb">akm improve</span></h3> <p class="section-note svelte-1ngozvb">Scheduled runs that distill, deduplicate, and improve stored memories. Each configuration picks which steps run and which language model they use — add a language model above first.</p> <!> <button class="btn btn-secondary btn-sm">+ Add Improve Profile</button></section>`);function Xd(e,t){F(t,!0);let n=L(t,`profiles`,27,()=>R([])),c=L(t,`defaultName`,15,``),l=L(t,`disabled`,3,!1);var u=Yd(),f=x(H(u),4),p=e=>{var t=Kd();Gd(H(t),{size:24}),b(2),K(t),o(e,t)},m=e=>{var a=Jd();M(a,21,n,e=>e.id,(e,n)=>{{let a=e=>{var t=s(),a=j(t),c=e=>{var t=qd(),a=H(t,!0);K(t),v(()=>r(a,i(n).description)),o(e,t)};d(a,e=>{i(n).description&&e(c)}),o(e,t)},u=W(()=>c()===i(n).name);Md(e,{get name(){return i(n).name},get isDefault(){return i(u)},get disabled(){return l()},onsetdefault:()=>{c(i(n).name)},onedit:()=>t.onedit(i(n)),onremove:()=>t.onremove(i(n).id),extra:a,$$slots:{extra:!0}})}}),K(a),o(e,a)};d(f,e=>{n().length===0?e(p):e(m,-1)});var h=x(f,2);K(u),v(()=>h.disabled=l()),a(`click`,h,function(...e){t.onadd?.apply(this,e)}),o(e,u),B()}h([`click`]);var Zd=f(`<div class="drawer-scrim svelte-1gmn25z" role="presentation"></div> <div class="drawer svelte-1gmn25z" role="dialog" aria-modal="true" aria-label="Edit profile"><div class="drawer-header svelte-1gmn25z"><h3 class="drawer-title svelte-1gmn25z">LLM Profile</h3> <button class="drawer-close svelte-1gmn25z" aria-label="Close">✕</button></div> <div class="drawer-body svelte-1gmn25z"><div class="controls controls--grid svelte-1gmn25z"><div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-name">Profile Name</label> <input id="d-llm-name" class="control-input svelte-1gmn25z" type="text" spellcheck="false" placeholder="e.g. default"/></div> <div class="control-group control-group--wide svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-endpoint">Endpoint</label> <input id="d-llm-endpoint" class="control-input svelte-1gmn25z" type="url" spellcheck="false" placeholder="https://api.openai.com/v1/chat/completions"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-model">Model</label> <input id="d-llm-model" class="control-input svelte-1gmn25z" type="text" spellcheck="false" placeholder="gpt-4o-mini"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-provider">Provider (label)</label> <input id="d-llm-provider" class="control-input svelte-1gmn25z" type="text" spellcheck="false" placeholder="openai"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-apikey">API Key</label> <!></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-temperature">Temperature (0–2)</label> <input id="d-llm-temperature" class="control-input control-input--narrow svelte-1gmn25z" type="number" min="0" max="2" step="0.1"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-maxtokens">Max tokens</label> <input id="d-llm-maxtokens" class="control-input control-input--narrow svelte-1gmn25z" type="number" min="1"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-timeout">Timeout (ms)</label> <input id="d-llm-timeout" class="control-input control-input--narrow svelte-1gmn25z" type="number" min="1"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-concurrency">Concurrency</label> <input id="d-llm-concurrency" class="control-input control-input--narrow svelte-1gmn25z" type="number" min="1"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-contextlength">Context length</label> <input id="d-llm-contextlength" class="control-input control-input--narrow svelte-1gmn25z" type="number" min="1"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-judgemodel">Judge model</label> <input id="d-llm-judgemodel" class="control-input svelte-1gmn25z" type="text" spellcheck="false" placeholder="gpt-4o"/></div></div> <label class="toggle-row svelte-1gmn25z" style="margin-top: var(--s-sp-4)"><input type="checkbox" class="svelte-1gmn25z"/> <span class="toggle-label svelte-1gmn25z">Supports JSON schema</span> <span class="toggle-hint svelte-1gmn25z">Use response_format: json_schema for structured output</span></label> <label class="toggle-row svelte-1gmn25z"><input type="checkbox" class="svelte-1gmn25z"/> <span class="toggle-label svelte-1gmn25z">Structured output capability</span> <span class="toggle-hint svelte-1gmn25z">capabilities.structuredOutput — model reliably returns valid structured JSON</span></label> <label class="toggle-row svelte-1gmn25z"><input type="checkbox" class="svelte-1gmn25z"/> <span class="toggle-label svelte-1gmn25z">Enable thinking</span> <span class="toggle-hint svelte-1gmn25z">Allow extended/thinking tokens for reasoning models</span></label> <div class="control-group control-group--wide svelte-1gmn25z" style="margin-top: var(--s-sp-4)"><label class="control-label svelte-1gmn25z" for="d-llm-extra">Extra params (JSON)</label> <textarea id="d-llm-extra" class="control-input svelte-1gmn25z" rows="3" spellcheck="false"></textarea> <span class="feat-hint svelte-1gmn25z">Merged into the provider request body. Must be a JSON object.</span></div></div> <div class="drawer-footer svelte-1gmn25z"><button class="btn btn-secondary">Cancel</button> <button class="btn btn-primary">Apply</button></div></div>`,1);function Qd(e,t){F(t,!0);let n=L(t,`draft`,15);var r=Zd(),i=j(r),s=x(i,2),c=H(s),l=x(H(c),2);K(c);var u=x(c,2),d=H(u),f=H(d),p=x(H(f),2);P(p),K(f);var m=x(f,2),h=x(H(m),2);P(h),K(m);var g=x(m,2),_=x(H(g),2);P(_),K(g);var v=x(g,2),y=x(H(v),2);P(y),K(v);var S=x(v,2);_d(x(H(S),2),{id:`d-llm-apikey`,placeholder:"${AKM_LLM_API_KEY}",get value(){return n().apiKey},set value(e){n(n().apiKey=e,!0)}}),K(S);var C=x(S,2),w=x(H(C),2);P(w),K(C);var E=x(C,2),D=x(H(E),2);P(D),K(E);var O=x(E,2),A=x(H(O),2);P(A),K(O);var M=x(O,2),N=x(H(M),2);P(N),K(M);var I=x(M,2),R=x(H(I),2);P(R),K(I);var V=x(I,2),U=x(H(V),2);P(U),K(V),K(d);var te=x(d,2),W=H(te);P(W),b(4),K(te);var G=x(te,2),ne=H(G);P(ne),b(4),K(G);var q=x(G,2),J=H(q);P(J),b(4),K(q);var Y=x(q,2),re=x(H(Y),2);ee(re),k(re,`placeholder`,`{ "top_p": 0.9 }`),b(2),K(Y),K(u);var ie=x(u,2),X=H(ie),Z=x(X,2);K(ie),K(s),a(`click`,i,function(...e){t.oncancel?.apply(this,e)}),a(`click`,l,function(...e){t.oncancel?.apply(this,e)}),z(p,()=>n().name,e=>n(n().name=e,!0)),z(h,()=>n().endpoint,e=>n(n().endpoint=e,!0)),z(_,()=>n().model,e=>n(n().model=e,!0)),z(y,()=>n().provider,e=>n(n().provider=e,!0)),z(w,()=>n().temperature,e=>n(n().temperature=e,!0)),z(D,()=>n().maxTokens,e=>n(n().maxTokens=e,!0)),z(A,()=>n().timeoutMs,e=>n(n().timeoutMs=e,!0)),z(N,()=>n().concurrency,e=>n(n().concurrency=e,!0)),z(R,()=>n().contextLength,e=>n(n().contextLength=e,!0)),z(U,()=>n().judgeModel,e=>n(n().judgeModel=e,!0)),T(W,()=>n().supportsJsonSchema,e=>n(n().supportsJsonSchema=e,!0)),T(ne,()=>n().structuredOutput,e=>n(n().structuredOutput=e,!0)),T(J,()=>n().enableThinking,e=>n(n().enableThinking=e,!0)),z(re,()=>n().extraParams,e=>n(n().extraParams=e,!0)),a(`click`,X,function(...e){t.oncancel?.apply(this,e)}),a(`click`,Z,function(...e){t.onapply?.apply(this,e)}),o(e,r),B()}h([`click`]);var $d=f(`<div class="control-group svelte-1evj0pt"><label class="control-label svelte-1evj0pt" for="d-agent-bin">Binary</label> <input id="d-agent-bin" class="control-input svelte-1evj0pt" type="text" spellcheck="false" placeholder="opencode"/></div> <div class="control-group control-group--wide svelte-1evj0pt"><label class="control-label svelte-1evj0pt" for="d-agent-args">Extra args (space-separated)</label> <input id="d-agent-args" class="control-input svelte-1evj0pt" type="text" spellcheck="false" placeholder="run --model gpt-4o"/></div>`,1),ef=f(`<div class="control-group svelte-1evj0pt"><label class="control-label svelte-1evj0pt" for="d-agent-model">Model</label> <input id="d-agent-model" class="control-input svelte-1evj0pt" type="text" spellcheck="false" placeholder="anthropic/claude-sonnet-4-5"/></div> <div class="control-group svelte-1evj0pt"><label class="control-label svelte-1evj0pt" for="d-agent-workspace">Workspace</label> <input id="d-agent-workspace" class="control-input svelte-1evj0pt" type="text" spellcheck="false"/></div>`,1),tf=f(`<div class="drawer-scrim svelte-1evj0pt" role="presentation"></div> <div class="drawer svelte-1evj0pt" role="dialog" aria-modal="true" aria-label="Edit profile"><div class="drawer-header svelte-1evj0pt"><h3 class="drawer-title svelte-1evj0pt">Agent Profile</h3> <button class="drawer-close svelte-1evj0pt" aria-label="Close">✕</button></div> <div class="drawer-body svelte-1evj0pt"><div class="controls controls--grid svelte-1evj0pt"><div class="control-group svelte-1evj0pt"><label class="control-label svelte-1evj0pt" for="d-agent-name">Profile Name</label> <input id="d-agent-name" class="control-input svelte-1evj0pt" type="text" spellcheck="false" placeholder="e.g. opencode"/></div> <div class="control-group svelte-1evj0pt"><label class="control-label svelte-1evj0pt" for="d-agent-platform">Platform</label> <select id="d-agent-platform" class="control-input svelte-1evj0pt"><option>opencode</option><option>claude</option><option>opencode-sdk</option></select></div> <!></div></div> <div class="drawer-footer svelte-1evj0pt"><button class="btn btn-secondary">Cancel</button> <button class="btn btn-primary">Apply</button></div></div>`,1);function nf(e,t){F(t,!0);let n=L(t,`draft`,15);var r=tf(),i=j(r),s=x(i,2),c=H(s),l=x(H(c),2);K(c);var u=x(c,2),f=H(u),p=H(f),m=x(H(p),2);P(m),K(p);var h=x(p,2),g=x(H(h),2),_=H(g);_.value=_.__value=`opencode`;var v=x(_);v.value=v.__value=`claude`;var y=x(v);y.value=y.__value=`opencode-sdk`,K(g),K(h);var b=x(h,2),S=e=>{var t=$d(),r=j(t),i=x(H(r),2);P(i),K(r);var a=x(r,2),s=x(H(a),2);P(s),K(a),z(i,()=>n().bin,e=>n(n().bin=e,!0)),z(s,()=>n().args,e=>n(n().args=e,!0)),o(e,t)},C=e=>{var t=ef(),r=j(t),i=x(H(r),2);P(i),K(r);var a=x(r,2),s=x(H(a),2);P(s),k(s,`placeholder`,"${PWD}"),K(a),z(i,()=>n().model,e=>n(n().model=e,!0)),z(s,()=>n().workspace,e=>n(n().workspace=e,!0)),o(e,t)};d(b,e=>{n().platform===`opencode-sdk`?e(C,-1):e(S)}),K(f),K(u);var w=x(u,2),T=H(w),E=x(T,2);K(w),K(s),a(`click`,i,function(...e){t.oncancel?.apply(this,e)}),a(`click`,l,function(...e){t.oncancel?.apply(this,e)}),z(m,()=>n().name,e=>n(n().name=e,!0)),G(g,()=>n().platform,e=>n(n().platform=e,!0)),a(`click`,T,function(...e){t.oncancel?.apply(this,e)}),a(`click`,E,function(...e){t.onapply?.apply(this,e)}),o(e,r),B()}h([`click`]);var rf=[`reflect`,`distill`,`consolidate`,`validation`,`memoryInference`,`graphExtraction`,`extract`,`triage`],af={reflect:`Propose stash updates via self-reflection`,distill:`Quality-judge and distill feedback`,consolidate:`Deduplicate and merge overlapping memories`,validation:`Third-model confidence and staleness scoring`,memoryInference:`Derive structured memories from pending files`,graphExtraction:`Extract entities and relations for graph search`,extract:`Read session logs and queue insight proposals`,triage:`Auto-review and accept/promote queued proposals`},of={reflect:!0,distill:!0,consolidate:!1,validation:!1,memoryInference:!0,graphExtraction:!0,extract:!0,triage:!1};function sf(e){if(typeof e==`number`)return isNaN(e)?void 0:e;let t=parseFloat(e);return e.trim()===``||isNaN(t)?void 0:t}function cf(e){if(typeof e==`number`)return isNaN(e)?void 0:Math.trunc(e);let t=parseInt(e,10);return e.trim()===``||isNaN(t)?void 0:t}function lf(e){return{enabled:e,mode:``,profile:``,timeoutMs:``,allowedTypes:``,qualityGate:``,contradictionDetection:``,defaultSince:``,maxTotalChars:``,maxChunkSize:``,applyMode:``,policy:``,maxAcceptsPerRun:``,maxDiffLines:``,rejectEmpty:!1,judgment:{mode:``,profile:``,timeoutMs:``},rest:{}}}var uf=e=>typeof e==`object`&&e&&`enabled`in e?e.enabled?`on`:`off`:``,df=new Set([`enabled`,`mode`,`profile`,`timeoutMs`,`allowedTypes`,`qualityGate`,`contradictionDetection`,`defaultSince`,`maxTotalChars`,`maxChunkSize`,`applyMode`,`policy`,`maxAcceptsPerRun`,`maxDiffLines`,`rejectEmpty`,`judgment`]);function ff(e,t){let n=lf(t);if(typeof e==`boolean`)return n.enabled=e,n;if(typeof e!=`object`||!e||Array.isArray(e))return n;let r=e;if(typeof r.enabled==`boolean`&&(n.enabled=r.enabled),n.mode=r.mode??``,n.profile=r.profile??``,n.timeoutMs=r.timeoutMs==null?``:String(r.timeoutMs),n.allowedTypes=Array.isArray(r.allowedTypes)?r.allowedTypes.join(`, `):``,n.qualityGate=uf(r.qualityGate),n.contradictionDetection=uf(r.contradictionDetection),n.defaultSince=r.defaultSince??``,n.maxTotalChars=r.maxTotalChars==null?``:String(r.maxTotalChars),n.maxChunkSize=r.maxChunkSize==null?``:String(r.maxChunkSize),n.applyMode=r.applyMode??``,n.policy=r.policy??``,n.maxAcceptsPerRun=r.maxAcceptsPerRun==null?``:String(r.maxAcceptsPerRun),n.maxDiffLines=r.maxDiffLines==null?``:String(r.maxDiffLines),n.rejectEmpty=r.rejectEmpty===!0,typeof r.judgment==`object`&&r.judgment!==null){let e=r.judgment;n.judgment={mode:e.mode??``,profile:e.profile??``,timeoutMs:e.timeoutMs==null?``:String(e.timeoutMs)}}for(let[e,t]of Object.entries(r))df.has(e)||(n.rest[e]=t);return n}function pf(e){let t={...e.rest,enabled:e.enabled};e.mode&&(t.mode=e.mode),e.profile&&(t.profile=e.profile),e.timeoutMs!==``&&(t.timeoutMs=parseInt(e.timeoutMs,10));let n=e.allowedTypes.split(`,`).map(e=>e.trim()).filter(Boolean);n.length&&(t.allowedTypes=n),e.qualityGate&&(t.qualityGate={enabled:e.qualityGate===`on`}),e.contradictionDetection&&(t.contradictionDetection={enabled:e.contradictionDetection===`on`}),e.defaultSince&&(t.defaultSince=e.defaultSince);let r=cf(e.maxTotalChars);r!==void 0&&(t.maxTotalChars=r);let i=cf(e.maxChunkSize);i!==void 0&&(t.maxChunkSize=i),e.applyMode&&(t.applyMode=e.applyMode),e.policy&&(t.policy=e.policy);let a=cf(e.maxAcceptsPerRun);a!==void 0&&(t.maxAcceptsPerRun=a);let o=cf(e.maxDiffLines);o!==void 0&&(t.maxDiffLines=o),e.rejectEmpty&&(t.rejectEmpty=!0);let s={};return e.judgment.mode&&(s.mode=e.judgment.mode),e.judgment.profile&&(s.profile=e.judgment.profile),e.judgment.timeoutMs!==``&&(s.timeoutMs=parseInt(e.judgment.timeoutMs,10)),Object.keys(s).length&&(t.judgment=s),t}var mf=f(`<option></option>`),hf=f(`<label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Quality gate</span> <select class="control-input svelte-1ndbe78"><option>Default</option><option>Enabled</option><option>Disabled</option></select></label>`),gf=f(`<label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Contradiction detection</span> <select class="control-input svelte-1ndbe78"><option>Default</option><option>Enabled</option><option>Disabled</option></select></label>`),_f=f(`<label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Default since</span> <input class="control-input svelte-1ndbe78" type="text" spellcheck="false" placeholder="e.g. 7d, 2026-01-01"/></label> <label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Max total chars</span> <input class="control-input control-input--narrow svelte-1ndbe78" type="number" min="1"/></label> <label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Max chunk size (1–50)</span> <input class="control-input control-input--narrow svelte-1ndbe78" type="number" min="1" max="50"/></label>`,1),vf=f(`<label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Apply mode</span> <select class="control-input svelte-1ndbe78"><option>Default</option><option>Queue</option><option>Promote</option></select></label> <label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Policy</span> <input class="control-input svelte-1ndbe78" type="text" spellcheck="false" placeholder="policy name/ref"/></label> <label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Max accepts per run</span> <input class="control-input control-input--narrow svelte-1ndbe78" type="number" min="1"/></label> <label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Max diff lines</span> <input class="control-input control-input--narrow svelte-1ndbe78" type="number" min="1"/></label> <label class="adv-field adv-field--check svelte-1ndbe78"><input type="checkbox" class="svelte-1ndbe78"/> <span class="svelte-1ndbe78">Reject empty diffs</span></label> <div class="adv-field adv-field--wide svelte-1ndbe78"><span class="adv-sublabel svelte-1ndbe78">Judgment (overrides for the accept/reject decision)</span> <div class="proc-adv-grid svelte-1ndbe78"><label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Mode</span> <select class="control-input svelte-1ndbe78"><option>Default</option><option>LLM</option><option>Agent</option><option>SDK</option></select></label> <label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Profile</span> <input class="control-input svelte-1ndbe78" type="text" spellcheck="false" list="llm-profiles-list"/></label> <label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Timeout (ms)</span> <input class="control-input control-input--narrow svelte-1ndbe78" type="number" min="1"/></label></div></div>`,1),yf=f(`<div class="proc-card svelte-1ndbe78"><div class="proc-head svelte-1ndbe78"><input type="checkbox" class="svelte-1ndbe78"/> <div class="proc-name svelte-1ndbe78"><span class="feat-name svelte-1ndbe78"> </span><span class="feat-hint svelte-1ndbe78"> </span></div> <select class="control-input svelte-1ndbe78"><option>Default mode</option><option>LLM (direct call)</option><option>Agent (subprocess)</option><option>SDK (programmatic)</option></select> <input class="control-input svelte-1ndbe78" type="text" spellcheck="false" list="llm-profiles-list" placeholder="— default profile —"/> <input class="control-input control-input--narrow svelte-1ndbe78" type="number" min="1" placeholder="timeout ms"/></div> <details class="proc-adv svelte-1ndbe78"><summary class="svelte-1ndbe78">Advanced</summary> <div class="proc-adv-grid svelte-1ndbe78"><label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Allowed types (comma-separated)</span> <input class="control-input svelte-1ndbe78" type="text" spellcheck="false" placeholder="skill, knowledge, …"/></label> <!> <!> <!> <!></div></details></div>`),bf=f(`<datalist id="llm-profiles-list"></datalist> <div class="drawer-scrim svelte-1ndbe78" role="presentation"></div> <div class="drawer svelte-1ndbe78" role="dialog" aria-modal="true" aria-label="Edit profile"><div class="drawer-header svelte-1ndbe78"><h3 class="drawer-title svelte-1ndbe78">Improve Profile</h3> <button class="drawer-close svelte-1ndbe78" aria-label="Close">✕</button></div> <div class="drawer-body svelte-1ndbe78"><div class="controls controls--grid svelte-1ndbe78"><div class="control-group svelte-1ndbe78"><label class="control-label svelte-1ndbe78" for="d-imp-name">Profile Name</label> <input id="d-imp-name" class="control-input svelte-1ndbe78" type="text" spellcheck="false" placeholder="e.g. default"/></div> <div class="control-group control-group--wide svelte-1ndbe78"><label class="control-label svelte-1ndbe78" for="d-imp-desc">Description</label> <input id="d-imp-desc" class="control-input svelte-1ndbe78" type="text" spellcheck="false" placeholder="Optional description"/></div> <div class="control-group svelte-1ndbe78"><label class="control-label svelte-1ndbe78" for="d-imp-limit">Max proposals per run</label> <input id="d-imp-limit" class="control-input control-input--narrow svelte-1ndbe78" type="number" min="1" max="100"/></div> <div class="control-group svelte-1ndbe78"><label class="control-label svelte-1ndbe78" for="d-imp-autoacc">Auto-accept threshold (0 = manual)</label> <input id="d-imp-autoacc" class="control-input control-input--narrow svelte-1ndbe78" type="number" min="0" max="1" step="0.05"/></div></div> <div class="proc-list svelte-1ndbe78"></div> <div class="controls controls--grid svelte-1ndbe78"><div class="control-group svelte-1ndbe78"><label class="control-label svelte-1ndbe78" for="d-imp-sync">Git sync after run</label> <select id="d-imp-sync" class="control-input svelte-1ndbe78"><option>Default</option><option>Enabled</option><option>Disabled</option></select></div> <div class="control-group svelte-1ndbe78"><label class="control-label svelte-1ndbe78" for="d-imp-syncpush">Push to remote</label> <select id="d-imp-syncpush" class="control-input svelte-1ndbe78"><option>Default</option><option>Enabled</option><option>Disabled</option></select></div> <div class="control-group control-group--wide svelte-1ndbe78"><label class="control-label svelte-1ndbe78" for="d-imp-syncmsg">Commit message</label> <input id="d-imp-syncmsg" class="control-input svelte-1ndbe78" type="text" spellcheck="false" placeholder="Optional commit message"/></div></div></div> <div class="drawer-footer svelte-1ndbe78"><button class="btn btn-secondary">Cancel</button> <button class="btn btn-primary">Apply</button></div></div>`,1);function xf(e,t){F(t,!0);let n=L(t,`draft`,15);var s=bf(),l=j(s);M(l,21,()=>t.llmProfileNames,c,(e,t)=>{var n=mf(),r={};v(()=>{r!==(r=i(t))&&(n.value=(n.__value=i(t))??``)}),o(e,n)}),K(l);var u=x(l,2),f=x(u,2),p=H(f),m=x(H(p),2);K(p);var h=x(p,2),g=H(h),_=H(g),y=x(H(_),2);P(y),K(_);var S=x(_,2),C=x(H(S),2);P(C),K(S);var w=x(S,2),E=x(H(w),2);P(E),K(w);var D=x(w,2),O=x(H(D),2);P(O),K(D),K(g);var A=x(g,2);M(A,20,()=>rf,e=>e,(e,t)=>{let a=W(()=>n().processes[t]);var s=yf(),c=H(s),l=H(c);P(l);var u=x(l,2),f=H(u),p=H(f,!0);K(f);var m=x(f),h=H(m,!0);K(m),K(u);var g=x(u,2),_=H(g);_.value=_.__value=``;var y=x(_);y.value=y.__value=`llm`;var S=x(y);S.value=S.__value=`agent`;var C=x(S);C.value=C.__value=`sdk`,K(g);var w=x(g,2);P(w);var E=x(w,2);P(E),K(c);var D=x(c,2),O=x(H(D),2),A=H(O),M=x(H(A),2);P(M),K(A);var N=x(A,2),F=e=>{var t=hf(),n=x(H(t),2),r=H(n);r.value=r.__value=``;var s=x(r);s.value=s.__value=`on`;var c=x(s);c.value=c.__value=`off`,K(n),K(t),G(n,()=>i(a).qualityGate,e=>i(a).qualityGate=e),o(e,t)};d(N,e=>{(t===`reflect`||t===`distill`)&&e(F)});var I=x(N,2),L=e=>{var t=gf(),n=x(H(t),2),r=H(n);r.value=r.__value=``;var s=x(r);s.value=s.__value=`on`;var c=x(s);c.value=c.__value=`off`,K(n),K(t),G(n,()=>i(a).contradictionDetection,e=>i(a).contradictionDetection=e),o(e,t)};d(I,e=>{t===`consolidate`&&e(L)});var R=x(I,2),B=e=>{var t=_f(),n=j(t),r=x(H(n),2);P(r),K(n);var s=x(n,2),c=x(H(s),2);P(c),K(s);var l=x(s,2),u=x(H(l),2);P(u),K(l),z(r,()=>i(a).defaultSince,e=>i(a).defaultSince=e),z(c,()=>i(a).maxTotalChars,e=>i(a).maxTotalChars=e),z(u,()=>i(a).maxChunkSize,e=>i(a).maxChunkSize=e),o(e,t)};d(R,e=>{t===`extract`&&e(B)});var V=x(R,2),U=e=>{var t=vf(),n=j(t),r=x(H(n),2),s=H(r);s.value=s.__value=``;var c=x(s);c.value=c.__value=`queue`;var l=x(c);l.value=l.__value=`promote`,K(r),K(n);var u=x(n,2),d=x(H(u),2);P(d),K(u);var f=x(u,2),p=x(H(f),2);P(p),K(f);var m=x(f,2),h=x(H(m),2);P(h),K(m);var g=x(m,2),_=H(g);P(_),b(2),K(g);var v=x(g,2),y=x(H(v),2),S=H(y),C=x(H(S),2),w=H(C);w.value=w.__value=``;var E=x(w);E.value=E.__value=`llm`;var D=x(E);D.value=D.__value=`agent`;var O=x(D);O.value=O.__value=`sdk`,K(C),K(S);var k=x(S,2),A=x(H(k),2);P(A),K(k);var M=x(k,2),N=x(H(M),2);P(N),K(M),K(y),K(v),G(r,()=>i(a).applyMode,e=>i(a).applyMode=e),z(d,()=>i(a).policy,e=>i(a).policy=e),z(p,()=>i(a).maxAcceptsPerRun,e=>i(a).maxAcceptsPerRun=e),z(h,()=>i(a).maxDiffLines,e=>i(a).maxDiffLines=e),T(_,()=>i(a).rejectEmpty,e=>i(a).rejectEmpty=e),G(C,()=>i(a).judgment.mode,e=>i(a).judgment.mode=e),z(A,()=>i(a).judgment.profile,e=>i(a).judgment.profile=e),z(N,()=>i(a).judgment.timeoutMs,e=>i(a).judgment.timeoutMs=e),o(e,t)};d(V,e=>{t===`triage`&&e(U)}),K(O),K(D),K(s),v(()=>{k(l,`aria-label`,`${t??``} enabled`),r(p,t),r(h,af[t]),k(g,`aria-label`,`${t??``} mode`),k(w,`aria-label`,`${t??``} profile`),k(E,`aria-label`,`${t??``} timeout`)}),T(l,()=>i(a).enabled,e=>i(a).enabled=e),G(g,()=>i(a).mode,e=>i(a).mode=e),z(w,()=>i(a).profile,e=>i(a).profile=e),z(E,()=>i(a).timeoutMs,e=>i(a).timeoutMs=e),z(M,()=>i(a).allowedTypes,e=>i(a).allowedTypes=e),o(e,s)}),K(A);var N=x(A,2),I=H(N),R=x(H(I),2),V=H(R);V.value=V.__value=``;var U=x(V);U.value=U.__value=`on`;var ee=x(U);ee.value=ee.__value=`off`,K(R),K(I);var te=x(I,2),ne=x(H(te),2),q=H(ne);q.value=q.__value=``;var J=x(q);J.value=J.__value=`on`;var Y=x(J);Y.value=Y.__value=`off`,K(ne),K(te);var re=x(te,2),ie=x(H(re),2);P(ie),K(re),K(N),K(h);var X=x(h,2),Z=H(X),ae=x(Z,2);K(X),K(f),a(`click`,u,function(...e){t.oncancel?.apply(this,e)}),a(`click`,m,function(...e){t.oncancel?.apply(this,e)}),z(y,()=>n().name,e=>n(n().name=e,!0)),z(C,()=>n().description,e=>n(n().description=e,!0)),z(E,()=>n().limit,e=>n(n().limit=e,!0)),z(O,()=>n().autoAccept,e=>n(n().autoAccept=e,!0)),G(R,()=>n().syncEnabled,e=>n(n().syncEnabled=e,!0)),G(ne,()=>n().syncPush,e=>n(n().syncPush=e,!0)),z(ie,()=>n().syncMessage,e=>n(n().syncMessage=e,!0)),a(`click`,Z,function(...e){t.oncancel?.apply(this,e)}),a(`click`,ae,function(...e){t.onapply?.apply(this,e)}),o(e,s),B()}h([`click`]);var Sf=f(`<div class="error-banner svelte-19wb2va"><span> </span></div>`),Cf=f(`<!> <p class="section-note section-note--lead svelte-19wb2va">The AI services your assistant uses to build and search its memory — the language models that organize memories, the embedding provider for semantic search, and the maintenance pipeline.</p> <!> <!> <!> <!>`,1),wf=f(`<div class="panel" role="tabpanel"><div class="panel-header"><div><h2 class="svelte-19wb2va">Knowledge</h2> <p class="panel-header-sub svelte-19wb2va">Memory · LLM · embedding config</p></div> <div class="panel-header-actions svelte-19wb2va"><button class="btn btn-secondary btn-sm"><!> Refresh</button> <button class="btn btn-secondary btn-sm"><!> Re-index</button> <button class="btn btn-primary btn-sm"><!> Save</button></div></div> <!> <div class="panel-body svelte-19wb2va"><div class="k-tabs svelte-19wb2va" role="tablist" aria-label="Knowledge sections"><button role="tab">AI Services</button> <button role="tab">Behavior</button> <button role="tab">Health Report</button></div> <!> <!> <!></div> <!></div>`);function Tf(e,t){F(t,!0);let n=w(!1),s=w(!1),c=w(!1),l=w(!1),u=w(!1),f=w(``),m=w(R([])),h=w(``),g=w(R([])),_=w(``),y=w(R([])),S=w(``),C=w(``),T=w(``),E=w(``),D=w(``),O=w(1536),M=w(``),N=w(``),P=w(``),I=w(``),L=w(``),z=w(`auto`),V=w(`json`),ee=w(`brief`),te=w(``),G=w(``),ne=w(``),q=w(``),J=w(``),Y=w(``),re=w(``),ie=w(``),X=w(`ai-services`),Z=w(null),ae=w(null),oe=w(null),se=w(null),ce=W(()=>i(m).map(e=>e.name).filter(e=>e));function le(){return{id:crypto.randomUUID(),name:``,endpoint:``,model:``,provider:``,apiKey:``,showApiKey:!1,temperature:``,maxTokens:``,timeoutMs:``,concurrency:``,contextLength:``,judgeModel:``,supportsJsonSchema:!1,enableThinking:!1,structuredOutput:!1,extraParams:``}}function ue(){return{id:crypto.randomUUID(),name:``,platform:`opencode`,bin:``,args:``,workspace:``,model:``}}function de(){let e={};for(let t of rf)e[t]=lf(of[t]);return{id:crypto.randomUUID(),name:``,description:``,limit:25,autoAccept:0,processes:e,syncEnabled:``,syncPush:``,syncMessage:``}}function fe(e){return{endpoint:e.endpoint??``,model:e.model??``,provider:e.provider??``,apiKey:e.apiKey??``,showApiKey:!1,temperature:e.temperature==null?``:String(e.temperature),maxTokens:e.maxTokens==null?``:String(e.maxTokens),timeoutMs:e.timeoutMs==null?``:String(e.timeoutMs),concurrency:e.concurrency==null?``:String(e.concurrency),contextLength:e.contextLength==null?``:String(e.contextLength),judgeModel:e.judgeModel??``,supportsJsonSchema:e.supportsJsonSchema??!1,enableThinking:e.enableThinking??!1,structuredOutput:e.capabilities?.structuredOutput??!1,extraParams:e.extraParams&&typeof e.extraParams==`object`?JSON.stringify(e.extraParams,null,2):``}}function pe(e){let t={endpoint:e.endpoint,model:e.model};e.provider&&(t.provider=e.provider),e.apiKey&&(t.apiKey=e.apiKey);let n=sf(e.temperature);n!==void 0&&(t.temperature=n);let r=cf(e.maxTokens);r!==void 0&&(t.maxTokens=r);let i=cf(e.timeoutMs);i!==void 0&&(t.timeoutMs=i);let a=cf(e.concurrency);a!==void 0&&(t.concurrency=a);let o=cf(e.contextLength);if(o!==void 0&&(t.contextLength=o),e.judgeModel&&(t.judgeModel=e.judgeModel),e.supportsJsonSchema&&(t.supportsJsonSchema=!0),e.enableThinking&&(t.enableThinking=!0),e.structuredOutput&&(t.capabilities={structuredOutput:!0}),e.extraParams.trim()){let n;try{n=JSON.parse(e.extraParams)}catch{throw Error(`LLM profile "${e.name}": extraParams must be valid JSON`)}if(typeof n!=`object`||!n||Array.isArray(n))throw Error(`LLM profile "${e.name}": extraParams must be a JSON object`);t.extraParams=n}return t}function he(e,t){let n=t.processes??{},r={};for(let e of rf)r[e]=ff(n[e],of[e]);let i=t.sync;return{id:crypto.randomUUID(),name:e,description:t.description??``,limit:typeof t.limit==`number`?t.limit:25,autoAccept:typeof t.autoAccept==`number`?t.autoAccept:0,processes:r,syncEnabled:uf(i?{enabled:i.enabled}:void 0),syncPush:uf(i?{enabled:i.push}:void 0),syncMessage:i?.message??``}}function ge(e){U(ae,{...e},!0),U(Z,`llm`)}function _e(e){U(oe,{...e},!0),U(Z,`agent`)}function ve(e){let t={};for(let n of rf){let r=e.processes[n];t[n]={...r,judgment:{...r.judgment},rest:{...r.rest}}}U(se,{...e,processes:t},!0),U(Z,`improve`)}function ye(){if(i(Z)===`llm`&&i(ae)){let e={...i(ae)},t=i(m).findIndex(t=>t.id===e.id),n=t>=0?i(m)[t].name:``;U(m,t>=0?i(m).map((n,r)=>r===t?e:n):[...i(m),e],!0),i(h)===n&&U(h,e.name,!0)}else if(i(Z)===`agent`&&i(oe)){let e={...i(oe)},t=i(g).findIndex(t=>t.id===e.id),n=t>=0?i(g)[t].name:``;U(g,t>=0?i(g).map((n,r)=>r===t?e:n):[...i(g),e],!0),i(_)===n&&U(_,e.name,!0)}else if(i(Z)===`improve`&&i(se)){let e={...i(se),processes:{...i(se).processes}},t=i(y).findIndex(t=>t.id===e.id),n=t>=0?i(y)[t].name:``;U(y,t>=0?i(y).map((n,r)=>r===t?e:n):[...i(y),e],!0),i(S)===n&&U(S,e.name,!0)}be()}function be(){U(Z,null),U(ae,null),U(oe,null),U(se,null)}function xe(e,t){if(e===`llm`){let e=i(m).find(e=>e.id===t)?.name??``;i(h)===e&&U(h,``),U(m,i(m).filter(e=>e.id!==t),!0)}else if(e===`agent`){let e=i(g).find(e=>e.id===t)?.name??``;i(_)===e&&U(_,``),U(g,i(g).filter(e=>e.id!==t),!0)}else{let e=i(y).find(e=>e.id===t)?.name??``;i(S)===e&&U(S,``),U(y,i(y).filter(e=>e.id!==t),!0)}i(Z)===e&&be()}async function Se(){U(n,!0),U(f,``);try{let{config:e}=await me(),t=e.profiles,n=t?.llm;U(m,n?Object.entries(n).map(([e,t])=>({id:crypto.randomUUID(),name:e,...fe(t)})):[],!0);let r=t?.agent;U(g,r?Object.entries(r).map(([e,t])=>{let n=t;return{id:crypto.randomUUID(),name:e,platform:n.platform??`opencode`,bin:n.bin??``,args:Array.isArray(n.args)?n.args.join(` `):``,workspace:n.workspace??``,model:n.model??``}}):[],!0);let i=t?.improve;U(y,i?Object.entries(i).map(([e,t])=>he(e,t)):[],!0);let a=e.defaults;U(h,a?.llm??``,!0),U(_,a?.agent??``,!0),U(S,a?.improve??``,!0);let o=e.embedding;U(C,o?.endpoint??``,!0),U(T,o?.model??``,!0),U(E,o?.provider??``,!0),U(D,o?.apiKey??``,!0),U(O,typeof o?.dimension==`number`?o.dimension:1536,!0),U(M,o?.localModel??``,!0),U(N,o?.batchSize==null?``:String(o.batchSize),!0),U(P,o?.chunkSize==null?``:String(o.chunkSize),!0),U(I,o?.contextLength==null?``:String(o.contextLength),!0);let s=o?.ollamaOptions;U(L,s?.num_ctx==null?``:String(s.num_ctx),!0),U(z,e.semanticSearchMode??`auto`,!0);let c=e.output;U(V,c?.format??`json`,!0),U(ee,c?.detail??`brief`,!0);let l=e=>typeof e==`number`?String(e):``,u=e=>e&&typeof e==`object`&&`enabled`in e?e.enabled?`on`:`off`:``,d=e.improve,f=d?.utilityDecay;U(te,l(f?.halfLifeDays),!0),U(G,l(f?.feedbackStabilityBoost),!0),U(ne,l(d?.eventRetentionDays),!0);let p=e.search;U(q,l(p?.minScore),!0),U(J,u(p?.curateRerank),!0);let v=e.feedback;U(Y,typeof v?.requireReason==`boolean`?v.requireReason?`on`:`off`:``,!0),U(re,Array.isArray(v?.allowedFailureModes)?v.allowedFailureModes.join(`, `):``,!0),U(ie,e.index&&typeof e.index==`object`?JSON.stringify(e.index,null,2):``,!0)}catch(e){U(f,e instanceof Error?e.message:`Failed to load AKM config.`,!0)}finally{U(n,!1)}}async function Ce(){U(s,!0),U(f,``);try{let e={};for(let t of i(m))t.name.trim()&&(e[t.name.trim()]=pe(t));let t={};for(let e of i(g)){if(!e.name.trim())continue;let n={platform:e.platform};e.bin&&(n.bin=e.bin),e.args&&(n.args=e.args.split(/\s+/).filter(Boolean)),e.workspace&&(n.workspace=e.workspace),e.model&&(n.model=e.model),t[e.name.trim()]=n}let n={};for(let e of i(y)){if(!e.name.trim())continue;let t={};for(let n of rf)t[n]=pf(e.processes[n]);let r={limit:e.limit,processes:t};e.description&&(r.description=e.description),e.autoAccept>0&&(r.autoAccept=e.autoAccept);let i={};e.syncEnabled&&(i.enabled=e.syncEnabled===`on`),e.syncPush&&(i.push=e.syncPush===`on`),e.syncMessage.trim()&&(i.message=e.syncMessage.trim()),Object.keys(i).length&&(r.sync=i),n[e.name.trim()]=r}let r={endpoint:i(C),model:i(T),dimension:i(O)};i(E)&&(r.provider=i(E)),i(D)&&(r.apiKey=i(D)),i(M)&&(r.localModel=i(M));let a=cf(i(N));a!==void 0&&(r.batchSize=a);let o=cf(i(P));o!==void 0&&(r.chunkSize=o);let s=cf(i(I));s!==void 0&&(r.contextLength=s);let c=cf(i(L));c!==void 0&&(r.ollamaOptions={num_ctx:c});let l={};i(h)&&(l.llm=i(h)),i(_)&&(l.agent=i(_)),i(S)&&(l.improve=i(S));let u={},d={},f=sf(i(te));f!==void 0&&(d.halfLifeDays=f);let p=sf(i(G));p!==void 0&&(d.feedbackStabilityBoost=p),Object.keys(d).length&&(u.utilityDecay=d);let v=sf(i(ne));v!==void 0&&(u.eventRetentionDays=v);let b={},x=sf(i(q));x!==void 0&&(b.minScore=x),i(J)&&(b.curateRerank={enabled:i(J)===`on`});let w={};i(Y)&&(w.requireReason=i(Y)===`on`);let k=i(re).split(`,`).map(e=>e.trim()).filter(Boolean);k.length&&(w.allowedFailureModes=k);let A;if(i(ie).trim()){let e;try{e=JSON.parse(i(ie))}catch{throw Error(`Index config must be valid JSON`)}if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Index config must be a JSON object keyed by pass name`);A=e}await Be({profiles:{llm:e,agent:t,improve:n},defaults:l,embedding:r,semanticSearchMode:i(z),output:{format:i(V),detail:i(ee)},...Object.keys(u).length?{improve:u}:{},...Object.keys(b).length?{search:b}:{},...Object.keys(w).length?{feedback:w}:{},...A===void 0?{}:{index:A}}),Q.push(`success`,`AKM config saved.`)}catch(e){let t=e instanceof Error?e.message:`Failed to save AKM config.`;Q.push(`error`,t)}finally{U(s,!1)}}async function we(){U(c,!0),U(f,``);try{let e=await qe();U(C,e.endpoint,!0),U(T,e.model,!0),U(E,e.provider,!0),U(O,e.dimension,!0),Q.push(`success`,e.message)}catch(e){let t=e instanceof Error?e.message:`Failed to detect embedding settings.`;Q.push(`error`,t)}finally{U(c,!1)}}async function Te(){U(l,!0),U(f,``);try{let e=i(C).trim(),t=i(T).trim(),n=i(E).trim();if(!e||!t){let r=await qe();e=r.endpoint,t=r.model,n=r.provider,U(C,r.endpoint,!0),U(T,r.model,!0),U(E,r.provider,!0),U(O,r.dimension,!0)}let r=await Re({endpoint:e,model:t,provider:n,apiKey:i(D),dimension:i(O)});U(O,r.dimension,!0),Q.push(`success`,r.message)}catch(e){let t=e instanceof Error?e.message:`Failed to test embedding settings.`;Q.push(`error`,t)}finally{U(l,!1)}}async function Ee(){U(u,!0);try{let e=await ke();Q.push(`success`,e.message)}catch(e){let t=e instanceof Error?e.message:`Failed to rebuild the AKM index.`;Q.push(`error`,t)}finally{U(u,!1)}}A(()=>{t.tokenStored&&Se()});var De=wf(),Oe=H(De),Ae=x(H(Oe),2),je=H(Ae),Me=H(je),Ne=e=>{$(e,{})};d(Me,e=>{i(n)&&e(Ne)}),b(),K(je);var Pe=x(je,2),Fe=H(Pe),Ie=e=>{$(e,{})};d(Fe,e=>{i(u)&&e(Ie)}),b(),K(Pe);var Le=x(Pe,2),ze=H(Le),Ve=e=>{$(e,{})};d(ze,e=>{i(s)&&e(Ve)}),b(),K(Le),K(Ae),K(Oe);var He=x(Oe,2),Ue=e=>{var t=Sf(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(f))),o(e,t)};d(He,e=>{i(f)&&e(Ue)});var We=x(He,2),Ge=H(We),Ke=H(Ge);let Je;var Ye=x(Ke,2);let Xe;var Ze=x(Ye,2);let Qe;K(Ge);var $e=x(Ge,2),et=e=>{var r=Cf(),a=j(r);{let e=W(()=>i(n)||i(s)||i(c)||i(l)||i(u)||!t.tokenStored);hd(a,{get disabled(){return i(e)}})}var d=x(a,4);{let e=W(()=>i(n)||i(s));Rd(d,{get disabled(){return i(e)},onedit:e=>ge(e),onadd:()=>{U(ae,le(),!0),U(Z,`llm`)},onremove:e=>xe(`llm`,e),get profiles(){return i(m)},set profiles(e){U(m,e,!0)},get defaultName(){return i(h)},set defaultName(e){U(h,e,!0)}})}var f=x(d,2);{let e=W(()=>i(n)||i(s));Ud(f,{get disabled(){return i(e)},onedit:e=>_e(e),onadd:()=>{U(oe,ue(),!0),U(Z,`agent`)},onremove:e=>xe(`agent`,e),get profiles(){return i(g)},set profiles(e){U(g,e,!0)},get defaultName(){return i(_)},set defaultName(e){U(_,e,!0)}})}var p=x(f,2);{let e=W(()=>i(n)||i(s));Xd(p,{get disabled(){return i(e)},onedit:e=>ve(e),onadd:()=>{U(se,de(),!0),U(Z,`improve`)},onremove:e=>xe(`improve`,e),get profiles(){return i(y)},set profiles(e){U(y,e,!0)},get defaultName(){return i(S)},set defaultName(e){U(S,e,!0)}})}var v=x(p,2);{let e=W(()=>i(n)||i(s)||i(c)||i(l)||i(u));yd(v,{get detecting(){return i(c)},get testing(){return i(l)},ondetect:()=>void we(),ontest:()=>void Te(),get disabled(){return i(e)},get endpoint(){return i(C)},set endpoint(e){U(C,e,!0)},get model(){return i(T)},set model(e){U(T,e,!0)},get provider(){return i(E)},set provider(e){U(E,e,!0)},get apiKey(){return i(D)},set apiKey(e){U(D,e,!0)},get dimension(){return i(O)},set dimension(e){U(O,e,!0)},get localModel(){return i(M)},set localModel(e){U(M,e,!0)},get batchSize(){return i(N)},set batchSize(e){U(N,e,!0)},get chunkSize(){return i(P)},set chunkSize(e){U(P,e,!0)},get contextLength(){return i(I)},set contextLength(e){U(I,e,!0)},get ollamaNumCtx(){return i(L)},set ollamaNumCtx(e){U(L,e,!0)}})}o(e,r)};d($e,e=>{i(X)===`ai-services`&&e(et)});var tt=x($e,2),nt=e=>{{let t=W(()=>i(n)||i(s));xd(e,{get disabled(){return i(t)},get semanticSearchMode(){return i(z)},set semanticSearchMode(e){U(z,e,!0)},get outputFormat(){return i(V)},set outputFormat(e){U(V,e,!0)},get outputDetail(){return i(ee)},set outputDetail(e){U(ee,e,!0)},get imHalfLife(){return i(te)},set imHalfLife(e){U(te,e,!0)},get imFeedbackBoost(){return i(G)},set imFeedbackBoost(e){U(G,e,!0)},get imEventRetention(){return i(ne)},set imEventRetention(e){U(ne,e,!0)},get searchMinScore(){return i(q)},set searchMinScore(e){U(q,e,!0)},get searchCurateRerank(){return i(J)},set searchCurateRerank(e){U(J,e,!0)},get fbRequireReason(){return i(Y)},set fbRequireReason(e){U(Y,e,!0)},get fbFailureModes(){return i(re)},set fbFailureModes(e){U(re,e,!0)},get indexJson(){return i(ie)},set indexJson(e){U(ie,e,!0)}})}};d(tt,e=>{i(X)===`behavior`&&e(nt)});var rt=x(tt,2),it=e=>{{let r=W(()=>i(n)||i(s)||i(c)||i(l)||i(u)||!t.tokenStored);Od(e,{get disabled(){return i(r)}})}};d(rt,e=>{i(X)===`health-report`&&e(it)}),K(We);var at=x(We,2),ot=e=>{Qd(e,{oncancel:be,onapply:ye,get draft(){return i(ae)},set draft(e){U(ae,e,!0)}})},st=e=>{nf(e,{oncancel:be,onapply:ye,get draft(){return i(oe)},set draft(e){U(oe,e,!0)}})},ct=e=>{xf(e,{get llmProfileNames(){return i(ce)},oncancel:be,onapply:ye,get draft(){return i(se)},set draft(e){U(se,e,!0)}})};d(at,e=>{i(Z)===`llm`&&i(ae)?e(ot):i(Z)===`agent`&&i(oe)?e(st,1):i(Z)===`improve`&&i(se)&&e(ct,2)}),K(De),v(()=>{je.disabled=i(n)||i(s)||i(c)||i(l)||i(u)||!t.tokenStored,Pe.disabled=i(n)||i(s)||i(c)||i(l)||i(u)||!t.tokenStored,Le.disabled=i(n)||i(s)||i(c)||i(l)||i(u)||!t.tokenStored,Je=p(Ke,1,`k-tab svelte-19wb2va`,null,Je,{"k-tab--active":i(X)===`ai-services`}),k(Ke,`aria-selected`,i(X)===`ai-services`),Xe=p(Ye,1,`k-tab svelte-19wb2va`,null,Xe,{"k-tab--active":i(X)===`behavior`}),k(Ye,`aria-selected`,i(X)===`behavior`),Qe=p(Ze,1,`k-tab svelte-19wb2va`,null,Qe,{"k-tab--active":i(X)===`health-report`}),k(Ze,`aria-selected`,i(X)===`health-report`)}),a(`click`,je,()=>void Se()),a(`click`,Pe,()=>void Ee()),a(`click`,Le,()=>void Ce()),a(`click`,Ke,()=>{U(X,`ai-services`)}),a(`click`,Ye,()=>{U(X,`behavior`)}),a(`click`,Ze,()=>{U(X,`health-report`)}),o(e,De),B()}h([`click`]);var Ef=f(`<div class="hs-loading svelte-fv9i73"><!> Checking host stash…</div>`),Df=f(`<p class="section-note svelte-fv9i73">Host AKM sharing isn't available on this deployment.</p>`),Of=f(`<p class="section-note svelte-fv9i73"><span class="badge badge-neutral">Not detected</span> No personal AKM was found on this host (<code>~/.config/akm/config.json</code>).
125
- Run <code>akm init</code> on this machine to enable sharing.</p>`),kf=f(`<code class="host-akm-path svelte-fv9i73"> </code>`),Af=f(`<div class="control-group control-group--wide svelte-fv9i73"><label class="control-label control-label--checkbox svelte-fv9i73"><input type="checkbox" class="svelte-fv9i73"/> Also import host LLM/agent profiles (read-only snapshot)</label></div>`),jf=f(`<button class="btn btn-secondary btn-sm">Re-import host profiles</button>`),Mf=f(`<div class="controls controls--grid svelte-fv9i73"><div class="control-group control-group--wide svelte-fv9i73"><span class="control-label svelte-fv9i73">Status</span> <div class="host-akm-status svelte-fv9i73"><span> </span> <!></div></div> <!> <div class="control-group control-group--wide host-akm-actions svelte-fv9i73"><button class="btn btn-secondary btn-sm"><!> </button> <!></div></div>`),Nf=f(`<section class="config-section svelte-fv9i73"><p class="section-note svelte-fv9i73">Let the assistant read (and, on explicit request, contribute back to) your
126
- personal AKM stash on this machine (<code>~/akm</code>). Each side keeps its own
127
- primary stash, database, and cache — only the knowledge files are shared, as a
128
- writable secondary source. Your files' ownership and primary stash are never changed.</p> <p class="hs-restart svelte-fv9i73">⚠ Changes take effect after the next stack restart.</p> <!></section>`),Pf=f(`<div class="panel" role="tabpanel"><div class="panel-header svelte-fv9i73"><h2 class="svelte-fv9i73">Host knowledge sharing</h2></div> <div class="panel-body"><!></div></div>`);function Ff(e,t){F(t,!0);let n=w(null),s=w(!0),c=w(!1),l=w(!0);async function u(){U(s,!0);try{U(n,await _e(),!0)}catch{U(n,null)}finally{U(s,!1)}}async function f(){if(!i(c)){U(c,!0);try{if(i(n)?.sharing.enabled)U(n,await ve(),!0),Q.push(`success`,`Host AKM sharing disabled. Restart the stack to apply.`);else{let e=await ye({writable:!0,importProfiles:i(l)});U(n,e,!0);let t=e.profilesImported?.length?` Imported: ${e.profilesImported.join(`, `)}.`:``;Q.push(`success`,`Host AKM sharing enabled.${t} Takes effect on the assistant's next AKM run / stack restart.`)}}catch(e){Q.push(`error`,e instanceof Error?e.message:`Failed to update host AKM sharing.`)}finally{U(c,!1)}}}async function m(){if(!i(c)){U(c,!0);try{let e=await ye({writable:!0,importProfiles:!0});U(n,e,!0);let t=e.profilesImported?.length?e.profilesImported.join(`, `):`none`;Q.push(`success`,`Re-imported host profiles: ${t}.`)}catch(e){Q.push(`error`,e instanceof Error?e.message:`Failed to re-import host profiles.`)}finally{U(c,!1)}}}A(()=>{t.tokenStored&&u()});var h=Pf(),g=x(H(h),2),_=H(g),y=e=>{var t=Ef();$(H(t),{}),b(),K(t),o(e,t)},S=e=>{o(e,Df())},C=e=>{var s=Nf(),u=x(H(s),4),h=e=>{o(e,Of())},g=e=>{var s=Mf(),u=H(s),h=x(H(u),2),g=H(h),_=H(g,!0);K(g);var y=x(g,2),S=e=>{var t=kf(),a=H(t,!0);K(t),v(()=>r(a,i(n).sharing.hostStashPath)),o(e,t)};d(y,e=>{i(n).sharing.hostStashPath&&e(S)}),K(h),K(u);var C=x(u,2),w=e=>{var t=Af(),n=H(t),r=H(n);P(r),b(),K(n),K(t),v(()=>r.disabled=i(c)),T(r,()=>i(l),e=>U(l,e)),o(e,t)};d(C,e=>{i(n).sharing.enabled||e(w)});var E=x(C,2),D=H(E),O=H(D),k=e=>{$(e,{})};d(O,e=>{i(c)&&e(k)});var A=x(O);K(D);var j=x(D,2),M=e=>{var n=jf();v(()=>n.disabled=i(c)||!t.tokenStored),a(`click`,n,()=>void m()),o(e,n)};d(j,e=>{i(n).sharing.enabled&&e(M)}),K(E),K(s),v(()=>{p(g,1,`badge ${i(n).sharing.enabled?`badge-enabled`:`badge-disabled`}`),r(_,i(n).sharing.enabled?`Enabled`:`Disabled`),D.disabled=i(c)||!t.tokenStored,r(A,` ${i(n).sharing.enabled?`Disable host sharing`:`Enable host sharing`}`)}),a(`click`,D,()=>void f()),o(e,s)};d(u,e=>{i(n).sharing.available?e(g,-1):e(h)}),K(s),o(e,s)};d(_,e=>{i(s)?e(y):i(n)===null?e(S,1):e(C,-1)}),K(g),K(h),o(e,h),B()}h([`click`]);var If=f(`<p class="profile-single svelte-11ub9pr"> </p>`),Lf=f(`<p class="profile-desc svelte-11ub9pr">Select the profile that matches your hardware. GPU profiles are auto-selected when available.</p>`),Rf=f(`<option> </option>`),zf=f(`<span class="field-hint svelte-11ub9pr"> </span>`),Bf=f(`<span class="field-hint field-hint--warning svelte-11ub9pr"> </span>`),Vf=f(`<!> <div class="form-field"><label class="form-label" for="voice-profile">Profile</label> <select id="voice-profile" class="form-input"></select> <!> <!></div>`,1);function Hf(e,t){F(t,!0);let n=L(t,`showDescription`,7),c=W(()=>t.profiles.find(e=>e.id===t.selectedProfile)??t.profiles[0]);n(n()??!0);var l=s(),u=j(l),f=e=>{},p=e=>{var t=If(),n=H(t);K(t),v(()=>r(n,`Using ${i(c)?.label??i(c)?.id??`selected`??``}.`)),o(e,t)},m=e=>{var s=Vf(),l=j(s),u=e=>{o(e,Lf())};d(l,e=>{n()&&e(u)});var f=x(l,2),p=x(H(f),2);M(p,21,()=>t.profiles,e=>e.id,(e,t)=>{var n=Rf(),a=H(n);K(n);var s={};v(()=>{n.disabled=i(t).available===!1,k(n,`title`,i(t).available===!1?i(t).reason??`Not available on this host`:void 0),r(a,`${i(t).label??i(t).id??``}${i(t).available===!1?` — unavailable`:``}`),s!==(s=i(t).id)&&(n.value=(n.__value=i(t).id)??``)}),o(e,n)}),K(p);var m;ne(p);var h=x(p,2),g=e=>{var t=zf(),n=H(t);K(t),v(()=>r(n,`Requires: ${i(c).requires??``}`)),o(e,t)};d(h,e=>{i(c)?.requires&&e(g)});var _=x(h,2),y=e=>{var t=Bf(),n=H(t,!0);K(t),v(()=>r(n,i(c).reason??`This profile is not available on the current host.`)),o(e,t)};d(_,e=>{i(c)?.available===!1&&e(y)}),K(f),v(()=>{m!==(m=t.selectedProfile)&&(p.value=(p.__value=t.selectedProfile)??``,S(p,t.selectedProfile))}),a(`change`,p,e=>t.onchange(e.currentTarget.value)),o(e,s)};d(u,e=>{t.profiles.length===0?e(f):t.profiles.length===1?e(p,1):e(m,-1)}),o(e,l),B()}h([`change`]);var Uf=f(`<section class="engine-section svelte-1r7l91t"><h3 class="engine-heading svelte-1r7l91t">Hardware profile</h3> <!></section>`);function Wf(e,t){var n=Uf();Hf(x(H(n),2),{get profiles(){return t.profiles},get selectedProfile(){return t.selectedProfile},get onchange(){return t.onchange}}),K(n),o(e,n)}var Gf=f(`<div class="error-banner svelte-nokcxu"><span> </span></div>`),Kf=f(`<option> </option>`),qf=f(`<span> </span>`),Jf=f(`<p class="field-hint svelte-nokcxu"> </p>`),Yf=f(`<div class="field svelte-nokcxu"><label class="field-label svelte-nokcxu"> </label> <input class="field-input svelte-nokcxu" autocomplete="off"/> <!></div>`),Xf=f(`<p class="field-hint field-hint--warn svelte-nokcxu"> </p>`),Zf=f(`<!> <!>`,1),Qf=f(`<option> </option>`),$f=f(`<span> </span>`),ep=f(`<p class="field-hint svelte-nokcxu"> </p>`),tp=f(`<div class="field svelte-nokcxu"><label class="field-label svelte-nokcxu"> </label> <input class="field-input svelte-nokcxu" autocomplete="off"/> <!></div>`),np=f(`<span class="test-ok svelte-nokcxu">✓ Working</span>`),rp=f(`<span class="test-err svelte-nokcxu"> </span>`),ip=f(`<div class="panel" role="tabpanel"><div class="panel-header"><div><h2>Voice</h2> <p class="panel-subtitle">Speech-to-text · text-to-speech</p></div> <div class="panel-header-actions"><button class="btn btn-secondary btn-sm"><!> Refresh</button> <button class="btn btn-primary btn-sm"><!> Save</button></div></div> <!> <div class="panel-body svelte-nokcxu"><div class="voice-grid svelte-nokcxu"><div class="section-card svelte-nokcxu"><div class="sc-title svelte-nokcxu">Speech-to-text (STT)</div> <div class="field svelte-nokcxu"><label class="field-label svelte-nokcxu" for="stt-engine">Engine</label> <select id="stt-engine" class="field-select svelte-nokcxu"><option>— select engine —</option><!></select> <!></div> <!></div> <div class="section-card svelte-nokcxu"><div class="sc-title svelte-nokcxu">Text-to-speech (TTS)</div> <div class="field svelte-nokcxu"><label class="field-label svelte-nokcxu" for="tts-engine">Engine</label> <select id="tts-engine" class="field-select svelte-nokcxu"><option>— select engine —</option><!></select> <!></div> <!> <div class="sc-foot svelte-nokcxu"><div class="test-row svelte-nokcxu"><button type="button" class="btn btn-secondary btn-sm"><!> Test speaker</button> <!></div> <label class="auto-speak-toggle svelte-nokcxu"><input type="checkbox" class="svelte-nokcxu"/> <span>Speak replies automatically</span></label></div></div></div> <!></div></div>`);function ap(e,t){F(t,!0);let n=[{id:`openpalm-voice`,name:`OpenPalm Voice`,type:`local`,recommended:!0,desc:`Local Kokoro TTS + Whisper STT bundled together.`},{id:`remote`,name:`Remote (OpenAI-compatible)`,type:`cloud`,desc:`Point at any /v1/audio/speech endpoint (OpenAI, Kokoro, Piper, …).`},{id:`browser`,name:`Browser`,type:`builtin`,desc:`Web Speech API on this device. No setup, voice quality varies.`}],c=[{id:`openpalm-voice`,name:`OpenPalm Voice`,type:`local`,recommended:!0,desc:`Local Kokoro TTS + Whisper STT bundled together.`},{id:`remote`,name:`Remote (OpenAI-compatible)`,type:`cloud`,desc:`Point at any /v1/audio/transcriptions endpoint (Whisper, …).`},{id:`browser`,name:`Browser`,type:`builtin`,desc:`Web Speech API on this device. Chrome/Edge only on desktop.`}],l={"openpalm-voice":{id:`openpalm-voice`,fields:[]},remote:{id:`remote`,fields:[{key:`baseURL`,label:`Endpoint URL`,placeholder:`http://host.docker.internal:8880/v1`,hint:`OpenAI-compatible /v1/audio/speech endpoint.`},{key:`model`,label:`Model`,placeholder:`tts-1`},{key:`voice`,label:`Voice`,placeholder:`alloy`}]},browser:{id:`browser`,fields:[]}},u={"openpalm-voice":{id:`openpalm-voice`,fields:[]},remote:{id:`remote`,fields:[{key:`baseURL`,label:`Endpoint URL`,placeholder:`http://host.docker.internal:9000/v1`,hint:`OpenAI-compatible /v1/audio/transcriptions endpoint.`},{key:`model`,label:`Model`,placeholder:`whisper-1`},{key:`language`,label:`Language`,placeholder:`en`,hint:"A code like `en` or `fr`, or leave blank to detect."}]},browser:{id:`browser`,fields:[{key:`language`,label:`Language`,placeholder:`en-US`}]}},f=()=>({engine:``,baseURL:``,model:``,voice:``,language:``}),m=w(!1),h=w(!1),g=w(``),_=w(R(f())),C=w(R(f())),T=w(R({stt:{remoteConfigured:!1,remoteReachable:!1},tts:{remoteConfigured:!1,remoteReachable:!1}})),E=w(R([])),D=w(``),N=W(()=>i(_).engine===`openpalm-voice`||i(C).engine===`openpalm-voice`),I=w(!1),L=w(!1),z=w(!1),V=w(null),ee=w(``),te=W(()=>i(I)&&!!We.browserSttUnsupportedReason),G=W(()=>We.browserSttUnsupportedReason??``);function q(e,t){e===`baseURL`?i(C).baseURL=t:e===`model`?i(C).model=t:e===`language`&&(i(C).language=t)}function J(e,t){e===`baseURL`?i(_).baseURL=t:e===`model`?i(_).model=t:e===`voice`&&(i(_).voice=t)}function Y(e,t){return typeof e==`string`?e===`openpalm-voice`?`openpalm-voice`:e===`browser`||e===(t===`tts`?`browser-tts`:`browser-stt`)?`browser`:!e||e.startsWith(`skip-`)?``:`remote`:``}function re(e,t){let n=f();return!e||typeof e!=`object`?n:(n.engine=Y(e.engine,t),typeof e.baseURL==`string`&&(n.baseURL=e.baseURL),typeof e.model==`string`&&(n.model=e.model),t===`tts`&&typeof e.voice==`string`&&(n.voice=e.voice),t===`stt`&&typeof e.language==`string`&&(n.language=e.language),n)}async function ie(){U(m,!0),U(g,``);try{let e=await He();U(_,re(e.tts,`tts`),!0),U(C,re(e.stt,`stt`),!0);let t=e.availability;if(t&&U(T,t,!0),e.addon){U(E,e.addon.profiles??[],!0);let t=e=>!!e&&e.available!==!1,n=e.addon.selectedProfile??``,r=i(E).find(e=>e.id===n);if(t(r))U(D,n,!0);else{let e=i(E).find(e=>e.id===`addon.voice.cpu`&&t(e))??i(E).find(e=>e.default&&t(e))??i(E).find(e=>t(e));U(D,e?.id??``,!0),r&&e&&n!==e.id&&Q.push(`info`,`"${r.label??n}" profile isn't available on this host${r.reason?` (${r.reason})`:``}. Using "${e.label??e.id}" instead.`)}}}catch(e){U(g,e instanceof Error?e.message:`Failed to load voice settings.`,!0)}finally{U(m,!1)}}function X(e,t){if(!e.engine)return;let n={enabled:!0,engine:e.engine};return e.engine===`remote`?(e.baseURL&&(n.baseURL=e.baseURL),e.model&&(n.model=e.model),t===`tts`&&e.voice&&(n.voice=e.voice),t===`stt`&&e.language&&(n.language=e.language)):e.engine===`browser`&&t===`stt`&&e.language&&(n.language=e.language),n}async function Z(){U(h,!0),U(g,``);let e=i(_).engine===`openpalm-voice`||i(C).engine===`openpalm-voice`,t=null,n=null;e&&(t=Q.push(`info`,`Enabling voice addon…`,{sticky:!0}),n=setTimeout(()=>{t&&Q.push(`info`,`Starting voice addon — this may take a moment…`,{sticky:!0,replaceId:t})},1500));try{let r=await Ge({tts:X(i(_),`tts`),stt:X(i(C),`stt`),...i(N)&&i(D)?{profile:i(D)}:{}});if(n&&=(clearTimeout(n),null),e&&t){let e=r.voiceAddon;r.status===202&&e?(Q.push(`info`,e.message??`Voice image is downloading — this can take several minutes.`,{sticky:!0,replaceId:t}),ae(t),t=null):r.ok&&e?Q.push(`success`,e.wasAlreadyEnabled?`Voice addon ready — let's chat!`:`Voice addon started, let's chat!`,{replaceId:t}):e?Q.push(`error`,e.error??`Voice addon failed to start.`,{replaceId:t}):Q.push(`success`,`Voice settings saved.`,{replaceId:t})}e||Q.push(`success`,`Voice settings saved.`),await ie()}catch(r){n&&=(clearTimeout(n),null);let i=r instanceof Error?r.message:`Failed to save voice settings.`;U(g,i,!0),t?Q.push(`error`,i,{replaceId:t}):e&&Q.push(`error`,i)}finally{U(h,!1)}}async function ae(e){let t=Date.now()+30*6e4,n=`pulling`;for(;Date.now()<t;){await new Promise(e=>setTimeout(e,3e3));try{let t=(await He()).addon?.activeJob;if(!t){Q.push(`success`,`Voice addon ready — let's chat!`,{replaceId:e}),await ie();return}if(t.state===`healthy`){Q.push(`success`,`Voice addon ready — let's chat!`,{replaceId:e}),await ie();return}if(t.state===`error`){Q.push(`error`,t.error??`Voice addon failed to start.`,{replaceId:e}),await ie();return}if(t.state!==n){n=t.state;let r=t.state===`starting`?`Voice container started — warming up models…`:`Voice image still downloading…`;Q.push(`info`,r,{sticky:!0,replaceId:e})}}catch{}}Q.push(`error`,`Voice addon is taking longer than 30 minutes. Check Docker logs for openpalm-voice.`,{replaceId:e}),await ie()}async function oe(){if(!i(z)){U(z,!0),U(V,null),U(ee,``);try{We.errorMessage=``,await ze(`Hello! Your voice is working.`),We.errorMessage?(U(V,`error`),U(ee,We.errorMessage,!0)):U(V,`success`)}catch(e){U(V,`error`),U(ee,e instanceof Error?e.message:`Voice test failed.`,!0)}finally{U(z,!1),setTimeout(()=>{U(V,null),U(ee,``)},5e3)}}}A(()=>{U(I,`SpeechRecognition`in window||`webkitSpeechRecognition`in window,!0),U(L,`speechSynthesis`in window),t.tokenStored&&ie()});var se=ip(),ce=H(se),le=x(H(ce),2),ue=H(le),de=H(ue),fe=e=>{$(e,{size:12})};d(de,e=>{i(m)&&e(fe)}),b(),K(ue);var pe=x(ue,2),me=H(pe),he=e=>{$(e,{size:12})};d(me,e=>{i(h)&&e(he)}),b(),K(pe),K(le),K(ce);var ge=x(ce,2),_e=e=>{var t=Gf(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(g))),o(e,t)};d(ge,e=>{i(g)&&e(_e)});var ve=x(ge,2),ye=H(ve),be=H(ye),xe=x(H(be),2),Se=x(H(xe),2),Ce=H(Se);Ce.value=Ce.__value=``,M(x(Ce),17,()=>c,e=>e.id,(e,t)=>{var n=s(),a=j(n),c=e=>{var n=Kf(),a=H(n,!0);K(n);var s={};v(()=>{n.disabled=i(t).id===`browser`&&i(te),r(a,i(t).name),s!==(s=i(t).id)&&(n.value=(n.__value=i(t).id)??``)}),o(e,n)};d(a,e=>{(i(I)||i(t).id!==`browser`)&&e(c)}),o(e,n)}),K(Se);var we;ne(Se);var Ee=x(Se,2),De=e=>{var t=qf();let n;var a=H(t,!0);K(t),v(()=>{n=p(t,1,`reachability svelte-nokcxu`,null,n,{"reachability--ok":i(T).stt.remoteReachable}),r(a,i(T).stt.remoteReachable?`● Endpoint reachable`:`○ Endpoint not reachable`)}),o(e,t)};d(Ee,e=>{i(C).engine===`remote`&&i(T).stt.remoteConfigured&&e(De)}),K(xe);var Oe=x(xe,2),ke=e=>{var n=Zf(),s=j(n);M(s,17,()=>u[i(C).engine]?.fields??[],e=>e.key,(e,n)=>{var s=Yf(),c=H(s),l=H(c,!0);K(c);var u=x(c,2);P(u);var f=x(u,2),p=e=>{var t=Jf(),a=H(t,!0);K(t),v(()=>r(a,i(n).hint)),o(e,t)};d(f,e=>{i(n).hint&&e(p)}),K(s),v(()=>{k(c,`for`,`stt-${i(n).key??``}`),r(l,i(n).label),k(u,`id`,`stt-${i(n).key??``}`),k(u,`type`,i(n).key===`baseURL`?`url`:`text`),k(u,`placeholder`,i(n).placeholder??``),y(u,i(n).key===`baseURL`?i(C).baseURL:i(n).key===`model`?i(C).model:i(C).language),u.disabled=i(m)||i(h)||!t.tokenStored}),a(`input`,u,e=>q(i(n).key,e.currentTarget.value)),o(e,s)});var c=x(s,2),l=e=>{var t=Xf(),n=H(t,!0);K(t),v(()=>r(n,i(G))),o(e,t)};d(c,e=>{i(C).engine===`browser`&&i(te)&&e(l)}),o(e,n)};d(Oe,e=>{i(C).engine&&e(ke)}),K(be);var Ae=x(be,2),je=x(H(Ae),2),Me=x(H(je),2),Ne=H(Me);Ne.value=Ne.__value=``,M(x(Ne),17,()=>n,e=>e.id,(e,t)=>{var n=s(),a=j(n),c=e=>{var n=Qf(),a=H(n,!0);K(n);var s={};v(()=>{r(a,i(t).name),s!==(s=i(t).id)&&(n.value=(n.__value=i(t).id)??``)}),o(e,n)};d(a,e=>{(i(L)||i(t).id!==`browser`)&&e(c)}),o(e,n)}),K(Me);var Pe;ne(Me);var Fe=x(Me,2),Ie=e=>{var t=$f();let n;var a=H(t,!0);K(t),v(()=>{n=p(t,1,`reachability svelte-nokcxu`,null,n,{"reachability--ok":i(T).tts.remoteReachable}),r(a,i(T).tts.remoteReachable?`● Endpoint reachable`:`○ Endpoint not reachable`)}),o(e,t)};d(Fe,e=>{i(_).engine===`remote`&&i(T).tts.remoteConfigured&&e(Ie)}),K(je);var Le=x(je,2),Re=e=>{var n=s();M(j(n),17,()=>l[i(_).engine]?.fields??[],e=>e.key,(e,n)=>{var s=tp(),c=H(s),l=H(c,!0);K(c);var u=x(c,2);P(u);var f=x(u,2),p=e=>{var t=ep(),a=H(t,!0);K(t),v(()=>r(a,i(n).hint)),o(e,t)};d(f,e=>{i(n).hint&&e(p)}),K(s),v(()=>{k(c,`for`,`tts-${i(n).key??``}`),r(l,i(n).label),k(u,`id`,`tts-${i(n).key??``}`),k(u,`type`,i(n).key===`baseURL`?`url`:`text`),k(u,`placeholder`,i(n).placeholder??``),y(u,i(n).key===`baseURL`?i(_).baseURL:i(n).key===`model`?i(_).model:i(_).voice),u.disabled=i(m)||i(h)||!t.tokenStored}),a(`input`,u,e=>J(i(n).key,e.currentTarget.value)),o(e,s)}),o(e,n)};d(Le,e=>{i(_).engine&&e(Re)});var Be=x(Le,2),Ve=H(Be),Ue=H(Ve),Ke=H(Ue),qe=e=>{$(e,{size:12})};d(Ke,e=>{i(z)&&e(qe)}),b(),K(Ue);var Je=x(Ue,2),Ye=e=>{o(e,np())},Xe=e=>{var t=rp(),n=H(t,!0);K(t),v(()=>r(n,i(ee)||`Failed`)),o(e,t)};d(Je,e=>{i(V)===`success`?e(Ye):i(V)===`error`&&e(Xe,1)}),K(Ve);var Ze=x(Ve,2),Qe=H(Ze);P(Qe),b(2),K(Ze),K(Be),K(Ae),K(ye);var $e=x(ye,2),et=e=>{Wf(e,{get profiles(){return i(E)},get selectedProfile(){return i(D)},onchange:e=>U(D,e,!0)})};d($e,e=>{i(N)&&i(E).length>0&&e(et)}),K(ve),K(se),v(()=>{ue.disabled=i(m)||i(h)||!t.tokenStored,pe.disabled=i(m)||i(h)||!t.tokenStored,Se.disabled=i(m)||i(h)||!t.tokenStored,we!==(we=i(C).engine)&&(Se.value=(Se.__value=i(C).engine)??``,S(Se,i(C).engine)),Me.disabled=i(m)||i(h)||!t.tokenStored,Pe!==(Pe=i(_).engine)&&(Me.value=(Me.__value=i(_).engine)??``,S(Me,i(_).engine)),Ue.disabled=i(z)||i(h)||i(m)||!i(_).engine,O(Qe,We.ttsAutoEnabled)}),a(`click`,ue,()=>void ie()),a(`click`,pe,()=>void Z()),a(`change`,Se,e=>{i(C).engine=e.currentTarget.value}),a(`change`,Me,e=>{i(_).engine=e.currentTarget.value}),a(`click`,Ue,()=>void oe()),a(`change`,Qe,e=>Te(e.currentTarget.checked)),o(e,se),B()}h([`click`,`change`,`input`]);var op=f(`<!> <!> <main class="svelte-1jef3w8"><!> <!></main>`,1);function sp(e,t){F(t,!0);let r=w(null),a=w(null),s=w(!1),c=w(!1),l=w(!1),u=w(!1),f=w(``),p=w(`info`),m=w(null),h=w(``),g=w(null),v=w(null),y=w(``),b=w(null),S=w(`overview`),C=w(!1),T=null;function E(){D(),T=setInterval(()=>{i(m)&&L()},1e4)}function D(){T!==null&&(clearInterval(T),T=null)}V(()=>{D()});let O=W(()=>i(c)),k=W(()=>{if(!i(m))return new Map;let e=new Map;if(i(m).containers)for(let[t,n]of Object.entries(i(m).containers))e.set(t,n);if(i(m).dockerContainers)for(let t of i(m).dockerContainers)e.set(t.Service,t.State);return e}),M=W(()=>{if(!i(m))return[];let e=new Map;if(i(m).containers)for(let[t,n]of Object.entries(i(m).containers))e.set(t,{id:t,service:t,state:n,docker:null});if(i(m).dockerContainers)for(let t of i(m).dockerContainers){let n=e.get(t.Service);n?(n.state=t.State,n.docker=t,n.id=t.ID):e.set(t.Service,{id:t.ID,service:t.Service||t.Name,state:t.State,docker:t})}return[...e.values()].sort((e,t)=>e.state===`running`&&t.state!==`running`?-1:e.state!==`running`&&t.state===`running`?1:e.service.localeCompare(t.service))});function N(){J(`/login?redirectTo=%2Fadmin`)}async function P(){U(s,!0);try{let e=await de();U(r,e.admin,!0),U(a,e.guardian,!0)}catch(e){console.warn(`[page] Health check failed:`,e),U(r,{status:`error`,service:`admin`},!0),U(a,{status:`error`,service:`guardian`},!0)}U(s,!1)}async function L(){U(l,!0),U(h,``);try{U(m,await oe(),!0)}catch(e){U(m,null);let t=e;t.status===401?(U(h,`Invalid password.`),N()):U(h,`Failed to load containers: ${t.message??e}`)}U(l,!1),i(m)&&U(g,Qe(Date.now()),!0)}async function R(){U(u,!0),U(y,``);try{U(v,await pe(),!0)}catch(e){U(v,null);let t=e;t.status===401?(U(y,`Invalid password.`),N()):U(y,`Failed to load automations: ${t.message??e}`)}U(u,!1)}async function z(){if(!i(O)){U(c,!0);try{let e=await Ae();if(e.overallSuccess)U(f,e.restarted.length>0?`Changes applied successfully. Restarted: ${e.restarted.join(`, `)}.`:`Changes applied successfully.`,!0),U(p,`success`);else if(e.failed.length>0){let t=e.failed.map(e=>`${e.service}: ${e.reason}`).join(`; `),n=e.restarted.length>0?` (other services restarted: ${e.restarted.join(`, `)})`:``;U(f,`Apply failed for ${e.failed.length} service(s): ${t}${n}`),U(p,`error`)}else e.dockerAvailable?(U(f,`Apply failed: ${e.error??`unknown error`}`),U(p,`error`)):(U(f,`Config written, but Docker is unavailable — services were not restarted.`),U(p,`error`))}catch(e){let t=e;t.status===401?N():(U(f,`Error applying changes: ${t.message??e}`),U(p,`error`))}U(c,!1)}}async function ee(e,t){try{await je(e,t),await L()}catch(e){let t=e;t.status===401?N():U(h,`Action failed: ${t.message??e}`)}}function te(e){U(b,i(b)===e?null:e,!0)}let G=W(()=>{if(!i(m))return[];let e=new Set;if(i(m).containers)for(let t of Object.keys(i(m).containers))e.add(t);if(i(m).dockerContainers)for(let t of i(m).dockerContainers)t.Service&&e.add(t.Service);return[...e].sort()});async function ne(){U(C,!0);try{await Y(),await L()}catch(e){let t=e;t.status===401?N():U(h,`Pull failed: ${t.message??e}`)}finally{U(C,!1)}}function q(e){U(S,e,!0),e===`containers`&&!i(m)&&L(),e===`automations`&&!i(v)&&R()}function re(){N()}A(()=>{E(),P(),L(),R()});var ie=op();n(`1jef3w8`,e=>{_(()=>{I.title=`OpenPalm Console`})});var X=j(ie);ct(X,{});var Z=x(X,2);Vt(Z,{get active(){return i(S)},onSelect:q});var ae=x(Z,2),se=H(ae),ce=e=>{{let t=W(()=>i(m)?.managedServices??[]);ln(e,{get adminHealth(){return i(r)},get operationResult(){return i(f)},get operationResultType(){return i(p)},tokenStored:!0,get healthLoading(){return i(s)},get applyLoading(){return i(c)},get anyDangerousLoading(){return i(O)},get automationsData(){return i(v)},get mergedServices(){return i(k)},get managedServices(){return i(t)},onCheckHealth:P,onApplyChanges:z,onDismissResult:()=>{U(f,``),U(p,`info`)},onNavigate:q})}},le=e=>{Rn(e,{})},ue=e=>{er(e,{})},fe=e=>{kr(e,{onAuthError:re,onNavigate:q})},me=e=>{gi(e,{get containerData(){return i(m)},get serviceEntries(){return i(M)},get loading(){return i(l)},get error(){return i(h)},tokenStored:!0,get selectedContainerId(){return i(b)},onToggleContainer:te,onStart:e=>ee(`start`,e),onStop:e=>ee(`stop`,e),onRestart:e=>ee(`restart`,e),onRefresh:L,onPullImages:ne,get lastUpdated(){return i(g)},get pullLoading(){return i(C)}})},he=e=>{il(e,{get data(){return i(v)},get loading(){return i(u)},get error(){return i(y)},tokenStored:!0,onRefresh:R})},ge=e=>{od(e,{})},_e=e=>{fu(e,{})},ve=e=>{zu(e,{tokenStored:!0})},ye=e=>{Fu(e,{tokenStored:!0})};d(se,e=>{i(S)===`overview`?e(ce):i(S)===`updates`?e(le,1):i(S)===`recovery`?e(ue,2):i(S)===`addons`?e(fe,3):i(S)===`containers`?e(me,4):i(S)===`automations`?e(he,5):i(S)===`activity`?e(ge,6):i(S)===`connections`?e(_e,7):i(S)===`assistant`?e(ve,8):i(S)===`secrets`&&e(ye,9)});var be=x(se,2),xe=e=>{ap(e,{tokenStored:!0})},Se=e=>{Tf(e,{tokenStored:!0})},Ce=e=>{Ff(e,{tokenStored:!0})},we=e=>{{let t=W(()=>i(v)?.automations.map(e=>e.name)??[]);Ou(e,{tokenStored:!0,get services(){return i(G)},get automations(){return i(t)}})}};d(be,e=>{i(S)===`voice`?e(xe):i(S)===`akm`?e(Se,1):i(S)===`host-sharing`?e(Ce,2):i(S)===`logs`&&e(we,3)}),K(ae),o(e,ie),B()}export{sp as component};
124
+ `),!0),U(l,!0)}}catch(e){U(f,e instanceof Error?e.message:`Failed to fetch logs.`,!0)}finally{U(u,!1)}}async function D(){i(n)&&(await navigator.clipboard.writeText(i(n)),U(S,!0),setTimeout(()=>{U(S,!1)},2e3))}A(()=>{t.tokenStored&&E()});function O(e){U(m,e,!0),U(f,``),U(n,``),U(l,!1),e===`routines`&&!i(g)&&U(g,t.automations[0]??``,!0),E()}Mr(e,{title:`Journal`,role:`tabpanel`,actions:e=>{var s=pu(),c=j(s),l=H(c,!0);K(c);var f=x(c,2),p=H(f),m=e=>{$(e,{})};d(p,e=>{i(u)&&e(m)}),b(),K(f),v(()=>{c.disabled=!i(n),r(l,i(S)?`Copied!`:`Copy`),f.disabled=i(u)||!t.tokenStored}),a(`click`,c,()=>void D()),a(`click`,f,()=>void E()),o(e,s)},children:(e,S)=>{var w=Du(),D=j(w),A=H(D),N=x(H(A),2),F=H(N);let I;var L=x(F,2);let R;K(N),K(A);var z=x(A,2),B=e=>{var n=hu(),s=x(H(n),2),l=H(s);l.value=l.__value=``,M(x(l),17,()=>t.services,c,(e,t)=>{var n=mu(),a=H(n,!0);K(n);var s={};v(()=>{r(a,i(t)),s!==(s=i(t))&&(n.value=(n.__value=i(t))??``)}),o(e,n)}),K(s),K(n),a(`change`,s,()=>void E()),G(s,()=>i(h),e=>U(h,e)),o(e,n)},V=e=>{var n=vu(),l=x(H(n),2),u=H(l),f=e=>{var t=gu();t.value=t.__value=``,o(e,t)},p=e=>{var n=s();M(j(n),17,()=>t.automations,c,(e,t)=>{var n=_u(),a=H(n,!0);K(n);var s={};v(()=>{r(a,i(t)),s!==(s=i(t))&&(n.value=(n.__value=i(t))??``)}),o(e,n)}),o(e,n)};d(u,e=>{t.automations.length===0?e(f):e(p,-1)}),K(l),K(n),a(`change`,l,()=>void E()),G(l,()=>i(g),e=>U(g,e)),o(e,n)};d(z,e=>{i(m)===`services`?e(B):e(V,-1)});var ee=x(z,2),W=x(H(ee),2),ne=H(W);ne.value=ne.__value=50;var q=x(ne);q.value=q.__value=100;var J=x(q);J.value=J.__value=250;var Y=x(J);Y.value=Y.__value=500;var re=x(Y);re.value=re.__value=1e3,K(W),K(ee);var ie=x(ee,2),X=e=>{var t=yu(),n=H(t),r=H(n);P(r),b(2),K(n),K(t),T(r,()=>i(y),e=>U(y,e)),o(e,t)};d(ie,e=>{i(m)===`services`&&e(X)});var Z=x(ie,2),ae=H(Z),oe=e=>{$(e,{})};d(ae,e=>{i(u)&&e(oe)});var se=x(ae);K(Z),K(D);var ce=x(D,2),le=H(ce),ue=e=>{var t=bu(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(f))),o(e,t)};d(le,e=>{i(f)&&e(ue)});var de=x(le,2),fe=e=>{var t=xu(),a=H(t,!0);K(t),te(t,e=>U(C,e),()=>i(C)),v(()=>r(a,i(n))),o(e,t)},pe=e=>{nr(e,{icon:e=>{o(e,Su())},children:(e,t)=>{var n=s(),r=j(n),a=e=>{var t=s(),n=j(t),r=e=>{o(e,Cu())},a=e=>{o(e,wu())};d(n,e=>{i(m)===`services`?e(r):e(a,-1)}),o(e,t)},c=e=>{var t=s(),n=j(t),r=e=>{o(e,Tu())},a=e=>{o(e,Eu())};d(n,e=>{i(m)===`services`?e(r):e(a,-1)}),o(e,t)};d(r,e=>{i(l)?e(a):e(c,-1)}),o(e,n)},$$slots:{icon:!0,default:!0}})};d(de,e=>{i(n)?e(fe):i(u)||e(pe,1)}),K(ce),v(()=>{I=p(F,1,`source-pill svelte-coqj2u`,null,I,{"source-pill--active":i(m)===`services`}),k(F,`aria-selected`,i(m)===`services`),R=p(L,1,`source-pill svelte-coqj2u`,null,R,{"source-pill--active":i(m)===`routines`}),k(L,`aria-selected`,i(m)===`routines`),Z.disabled=i(u)||!t.tokenStored,r(se,` ${i(m)===`services`?`Load service logs`:`Load routine log`}`)}),a(`click`,F,()=>O(`services`)),a(`click`,L,()=>O(`routines`)),a(`change`,W,()=>void E()),G(W,()=>i(_),e=>U(_,e)),a(`click`,Z,()=>void E()),o(e,w)},$$slots:{actions:!0,default:!0}}),B()}h([`click`,`change`]);var ku=f(`<div class="error-banner svelte-epscb2"><span> </span></div>`),Au=f(`<p class="empty-note svelte-epscb2">No secret files found.</p>`),ju=f(`<div><button class="secret-name svelte-epscb2"><span class="mono svelte-epscb2"> </span> <span class="secret-size svelte-epscb2"> </span></button> <button class="btn btn-ghost btn-sm">✕</button></div>`),Mu=f(`<div class="editor-head svelte-epscb2"><span class="mono svelte-epscb2"> </span> <label class="reveal-toggle svelte-epscb2"><input type="checkbox" class="svelte-epscb2"/> Reveal</label></div> <textarea spellcheck="false" rows="16"></textarea> <div class="editor-actions svelte-epscb2"><button class="btn btn-secondary btn-sm">Close</button> <button class="btn btn-primary btn-sm"><!> Save</button></div>`,1),Nu=f(`<div class="editor-empty svelte-epscb2"><!> <p class="svelte-epscb2">Select a file to view or edit its contents.</p> <button class="btn btn-secondary btn-sm">New secret</button></div>`),Pu=f(`<div class="panel" role="tabpanel"><div class="panel-header"><div><h2>Secrets</h2> <p class="panel-subtitle">Encrypted key files under knowledge/secrets/</p></div> <div class="panel-header-actions"><button class="btn btn-secondary btn-sm"><!> Refresh</button></div></div> <!> <div class="secrets-layout svelte-epscb2"><div class="secrets-list svelte-epscb2"><!> <!> <div class="new-secret svelte-epscb2"><label class="new-secret-label svelte-epscb2" for="new-secret-name">New secret file</label> <div class="new-secret-row svelte-epscb2"><input id="new-secret-name" class="control-input" type="text" spellcheck="false" placeholder="new-file-name"/> <button class="btn btn-secondary btn-sm">Add</button></div></div></div> <div class="secrets-editor svelte-epscb2"><!></div></div></div>`);function Fu(e,t){F(t,!0);let n=w(!1),s=w(!1),c=w(``),l=w(R([])),u=w(null),f=w(``),m=w(!1),h=w(``),g=w(void 0);function _(e){return e<1024?`${e} B`:`${(e/1024).toFixed(1)} KB`}async function y(){U(n,!0),U(c,``);try{U(l,(await ce()).files,!0)}catch(e){U(c,e instanceof Error?e.message:`Failed to list secret files.`,!0)}finally{U(n,!1)}}async function S(e){if(!i(s)){U(s,!0),U(c,``);try{let t=await xe(e);U(u,t.name,!0),U(f,t.value,!0),U(m,!1)}catch(e){Q.push(`error`,e instanceof Error?e.message:`Failed to read file.`)}finally{U(s,!1)}}}function C(){U(u,null),U(f,``),U(m,!1)}async function E(){if(!(!i(u)||i(s))){U(s,!0);try{await Oe(i(u),i(f)),Q.push(`success`,`Saved ${i(u)}.`),await y()}catch(e){Q.push(`error`,e instanceof Error?e.message:`Failed to save file.`)}finally{U(s,!1)}}}async function D(e){if(!i(s)&&confirm(`Delete secret file "${e}"? This cannot be undone.`)){U(s,!0);try{await Je(e),Q.push(`success`,`Deleted ${e}.`),i(u)===e&&C(),await y()}catch(e){Q.push(`error`,e instanceof Error?e.message:`Failed to delete file.`)}finally{U(s,!1)}}}async function O(){let e=i(h).trim();if(!(!e||i(s))){U(s,!0);try{await Oe(e,``),Q.push(`success`,`Created ${e}.`),U(h,``),await y(),await S(e)}catch(e){Q.push(`error`,e instanceof Error?e.message:`Failed to create file.`)}finally{U(s,!1)}}}A(()=>{t.tokenStored&&y()});var N=Pu(),I=H(N),L=x(H(I),2),V=H(L),W=H(V),G=e=>{$(e,{})};d(W,e=>{i(n)&&e(G)}),b(),K(V),K(L),K(I);var ne=x(I,2),q=e=>{var t=ku(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(c))),o(e,t)};d(ne,e=>{i(c)&&e(q)});var J=x(ne,2),Y=H(J),re=H(Y),ie=e=>{o(e,Au())};d(re,e=>{i(l).length===0&&!i(n)&&e(ie)});var X=x(re,2);M(X,17,()=>i(l),e=>e.name,(e,t)=>{var n=ju(),c=H(n),l=H(c),d=H(l,!0);K(l);var f=x(l,2),m=H(f,!0);K(f),K(c);var h=x(c,2);K(n),v(e=>{p(n,1,`secret-row ${i(u)===i(t).name?`active`:``}`,`svelte-epscb2`),c.disabled=i(s),k(c,`aria-label`,`Edit ${i(t).name??``}`),r(d,i(t).name),r(m,e),h.disabled=i(s),k(h,`aria-label`,`Delete ${i(t).name??``}`)},[()=>_(i(t).size)]),a(`click`,c,()=>void S(i(t).name)),a(`click`,h,()=>void D(i(t).name)),o(e,n)});var Z=x(X,2),ae=x(H(Z),2),oe=H(ae);P(oe),te(oe,e=>U(g,e),()=>i(g));var se=x(oe,2);K(ae),K(Z),K(Y);var le=x(Y,2),ue=H(le),de=e=>{var t=Mu(),n=j(t),c=H(n),l=H(c,!0);K(c);var h=x(c,2),g=H(h);P(g),b(),K(h),K(n);var _=x(n,2);ee(_);var y=x(_,2),S=H(y),w=x(S,2),D=H(w),O=e=>{$(e,{})};d(D,e=>{i(s)&&e(O)}),b(),K(w),K(y),v(()=>{r(l,i(u)),p(_,1,`control-input editor-area ${i(m)?``:`masked`}`,`svelte-epscb2`),_.disabled=i(s),S.disabled=i(s),w.disabled=i(s)}),T(g,()=>i(m),e=>U(m,e)),z(_,()=>i(f),e=>U(f,e)),a(`click`,S,C),a(`click`,w,()=>void E()),o(e,t)},fe=e=>{var t=Nu(),n=H(t);vt(n,{size:24});var r=x(n,4);K(t),a(`click`,r,()=>i(g)?.focus()),o(e,t)};d(ue,e=>{i(u)?e(de):e(fe,-1)}),K(le),K(J),K(N),v(e=>{V.disabled=i(n)||i(s)||!t.tokenStored,oe.disabled=i(s),se.disabled=e},[()=>i(s)||!i(h).trim()]),a(`click`,V,()=>void y()),z(oe,()=>i(h),e=>U(h,e)),a(`click`,se,()=>void O()),o(e,N),B()}h([`click`]);var Iu=f(`<span class="unsaved-hint svelte-obkjlq" aria-live="polite">Unsaved changes</span>`),Lu=f(`<div class="error-banner svelte-obkjlq"><span> </span></div>`),Ru=f(`<div class="panel" role="tabpanel"><div class="panel-header"><div><h2>Assistant</h2> <p class="panel-subtitle">Persona · stack config</p></div> <div class="panel-header-actions"><button class="btn btn-secondary btn-sm"><!> Refresh</button> <!> <button class="btn btn-primary btn-sm"><!> Save</button></div></div> <!> <div class="settings-grid svelte-obkjlq"><section class="settings-card svelte-obkjlq"><h3 class="svelte-obkjlq">Compose Project Name</h3> <p class="section-note svelte-obkjlq">This writes <code>OP_PROJECT_NAME</code> in <code> </code>. If unset, OpenPalm defaults to <code>openpalm</code>.</p> <label class="field svelte-obkjlq" for="project-name"><span>Project name</span> <input id="project-name" class="control-input mono svelte-obkjlq" type="text" spellcheck="false" placeholder="openpalm"/></label> <p class="field-hint svelte-obkjlq">Lowercase letters, numbers, dashes, and underscores only. This affects Docker Compose naming and collision detection.</p></section> <section class="settings-card svelte-obkjlq"><h3 class="svelte-obkjlq">LAN Exposure</h3> <p class="section-note svelte-obkjlq">This writes <code>OP_ASSISTANT_BIND_ADDRESS</code> in <code> </code>.</p> <label class="field-inline svelte-obkjlq" for="assistant-lan-exposure"><input id="assistant-lan-exposure" type="checkbox" class="svelte-obkjlq"/> <span>Expose the assistant OpenCode server on the host LAN</span></label> <p class="field-hint svelte-obkjlq">Off keeps the host bind on <code>127.0.0.1</code>. On switches it to <code>0.0.0.0</code> so other devices on your LAN can reach the host port.</p></section> <section class="settings-card svelte-obkjlq"><h3 class="svelte-obkjlq">Persona</h3> <p class="section-note svelte-obkjlq">Edit the assistant persona markdown mounted into the assistant OpenCode instance.</p> <div class="path-chip svelte-obkjlq"> </div> <textarea class="control-input persona-editor mono svelte-obkjlq" rows="20" spellcheck="false"></textarea></section></div></div>`);function zu(e,t){F(t,!0);let n=w(!1),s=w(!1),c=w(``),l=w(`openpalm`),u=w(!1),f=w(`config/assistant/persona.md`),p=w(`knowledge/env/stack.env`),m=w(``),h=w(``);async function g(){U(n,!0),U(c,``);try{let e=await Pe();U(l,e.projectName,!0),U(u,e.lanExposureEnabled,!0),U(f,e.personaPath,!0),U(p,e.stackEnvPath,!0),U(m,e.personaContent,!0),U(h,e.personaContent,!0)}catch(e){U(c,e instanceof Error?e.message:`Failed to load assistant settings.`,!0)}finally{U(n,!1)}}async function _(){U(s,!0),U(c,``);try{let e=await Ue({projectName:i(l),lanExposureEnabled:i(u),personaContent:i(m)});U(l,e.projectName,!0),U(u,e.lanExposureEnabled,!0),U(m,e.personaContent,!0),U(h,e.personaContent,!0),Q.push(`success`,`Assistant settings saved. Restart the assistant container to apply them.`)}catch(e){let t=e instanceof Error?e.message:`Failed to save assistant settings.`;U(c,t,!0),Q.push(`error`,t)}finally{U(s,!1)}}let y=W(()=>i(m)!==i(h));A(()=>{t.tokenStored&&g()});var S=Ru(),C=H(S),E=x(H(C),2),D=H(E),O=H(D),k=e=>{$(e,{})};d(O,e=>{i(n)&&e(k)}),b(),K(D);var j=x(D,2),M=e=>{o(e,Iu())};d(j,e=>{i(y)&&e(M)});var N=x(j,2),I=H(N),L=e=>{$(e,{})};d(I,e=>{i(s)&&e(L)}),b(),K(N),K(E),K(C);var R=x(C,2),V=e=>{var t=Lu(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(c))),o(e,t)};d(R,e=>{i(c)&&e(V)});var te=x(R,2),G=H(te),ne=x(H(G),2),q=x(H(ne),3),J=H(q,!0);K(q),b(3),K(ne);var Y=x(ne,2),re=x(H(Y),2);P(re),K(Y),b(2),K(G);var ie=x(G,2),X=x(H(ie),2),Z=x(H(X),3),ae=H(Z,!0);K(Z),b(),K(X);var oe=x(X,2),se=H(oe);P(se),b(2),K(oe),b(2),K(ie);var ce=x(ie,2),le=x(H(ce),4),ue=H(le,!0);K(le);var de=x(le,2);ee(de),K(ce),K(te),K(S),v(()=>{D.disabled=i(n)||i(s)||!t.tokenStored,N.disabled=i(n)||i(s)||!t.tokenStored||!i(y),r(J,i(p)),re.disabled=i(n)||i(s),r(ae,i(p)),se.disabled=i(n)||i(s),r(ue,i(f)),de.disabled=i(n)||i(s)}),a(`click`,D,()=>void g()),a(`click`,N,()=>void _()),z(re,()=>i(l),e=>U(l,e)),T(se,()=>i(u),e=>U(u,e)),z(de,()=>i(m),e=>U(m,e)),o(e,S),B()}h([`click`]);var Bu=f(`<div class="error-banner svelte-z6w8je"><span> </span></div>`),Vu=f(`<div class="error-banner svelte-z6w8je"><span> </span></div>`),Hu=f(`<div class="empty-card svelte-z6w8je">Nothing urgent has happened yet.</div>`),Uu=f(`<button class="attention-session mono svelte-z6w8je" type="button"> </button>`),Wu=f(`<article><div class="attention-top svelte-z6w8je"><strong class="svelte-z6w8je"> </strong> <span class="svelte-z6w8je"> </span></div> <p class="svelte-z6w8je"> </p> <!></article>`),Gu=f(`<div class="empty-card svelte-z6w8je">Waiting for OpenCode events...</div>`),Ku=f(`<p class="svelte-z6w8je"> </p>`),qu=f(`<button class="attention-session mono svelte-z6w8je" type="button"> </button>`),Ju=f(`<article class="feed-row svelte-z6w8je"><div class="feed-top svelte-z6w8je"><span class="feed-type mono svelte-z6w8je"> </span> <span class="svelte-z6w8je"> </span></div> <strong class="svelte-z6w8je"> </strong> <!> <!></article>`),Yu=f(`<div class="empty-card svelte-z6w8je">No sessions found on the active assistant endpoint.</div>`),Xu=f(`<button><div><div class="session-title svelte-z6w8je"> </div> <div class="session-meta svelte-z6w8je"> </div></div> <div class="session-stats svelte-z6w8je"><strong> </strong> <span class="session-id mono svelte-z6w8je"> </span></div></button>`),Zu=f(`<tr class="svelte-z6w8je"><td colspan="2" class="empty-cell svelte-z6w8je">No events observed yet.</td></tr>`),Qu=f(`<tr class="svelte-z6w8je"><td class="mono svelte-z6w8je"> </td><td class="svelte-z6w8je"> </td></tr>`),$u=f(`<div class="empty-card svelte-z6w8je">No session activity captured yet.</div>`),ed=f(`<div class="hot-session-row svelte-z6w8je"><div><div class="session-title svelte-z6w8je"> </div> <div class="session-meta mono svelte-z6w8je"> </div></div> <strong> </strong></div>`),td=f(`<span class="svelte-z6w8je"> </span>`),nd=f(`<div class="empty-card svelte-z6w8je">No chat or tool activity available for this session yet.</div>`),rd=f(`<div class="selected-meta svelte-z6w8je"><div class="svelte-z6w8je"><span class="svelte-z6w8je">Created</span><strong class="svelte-z6w8je"> </strong></div> <div class="svelte-z6w8je"><span class="svelte-z6w8je">Updated</span><strong class="svelte-z6w8je"> </strong></div> <div class="svelte-z6w8je"><span class="svelte-z6w8je">Session ID</span><strong class="mono svelte-z6w8je"> </strong></div> <div class="svelte-z6w8je"><span class="svelte-z6w8je">Events seen</span><strong class="svelte-z6w8je"> </strong></div></div> <div class="message-panel-head svelte-z6w8je"><span>Recent activity</span> <button class="btn btn-ghost btn-sm"><!> Refresh</button></div> <!> <div class="selected-message-list svelte-z6w8je"></div>`,1),id=f(`<div class="empty-card svelte-z6w8je">Select a session to inspect its recent chat and tool activity.</div>`),ad=f(`<div class="panel" role="tabpanel"><div class="panel-header"><div><h2>Activity</h2> <p class="panel-subtitle">Operator telemetry · live</p></div> <div class="panel-header-actions"><button class="btn btn-secondary btn-sm"><!> Refresh</button></div></div> <!> <!> <div class="endpoint-banner svelte-z6w8je"><div><div class="endpoint-label svelte-z6w8je">Endpoint</div> <div class="endpoint-value svelte-z6w8je"> </div> <div class="endpoint-url mono svelte-z6w8je"> </div></div> <div> </div></div> <div class="summary-grid svelte-z6w8je"><div class="summary-card svelte-z6w8je"><span class="summary-label svelte-z6w8je">Events / minute</span> <strong class="summary-value svelte-z6w8je"> </strong> <small class="svelte-z6w8je"> </small></div> <div class="summary-card svelte-z6w8je"><span class="summary-label svelte-z6w8je">Sessions</span> <strong class="summary-value svelte-z6w8je"> </strong> <small class="svelte-z6w8je"> </small></div> <div class="summary-card summary-card--warning svelte-z6w8je"><span class="summary-label svelte-z6w8je">Waiting on people</span> <strong class="summary-value svelte-z6w8je"> </strong> <small class="svelte-z6w8je">Permissions and answers that block the assistant.</small></div> <div><span class="summary-label svelte-z6w8je">Last event</span> <strong class="summary-value summary-value--small svelte-z6w8je"> </strong> <small class="svelte-z6w8je"> </small></div> <div class="summary-card svelte-z6w8je"><span class="summary-label svelte-z6w8je">Observed types</span> <strong class="summary-value svelte-z6w8je"> </strong> <small class="svelte-z6w8je"> </small></div> <div><span class="summary-label svelte-z6w8je">Failures seen</span> <strong class="summary-value svelte-z6w8je"> </strong> <small class="svelte-z6w8je"> </small></div></div> <div class="activity-layout svelte-z6w8je"><section class="card-section svelte-z6w8je"><div class="card-head svelte-z6w8je"><h3 class="svelte-z6w8je">Needs attention</h3> <span class="svelte-z6w8je"> </span></div> <div class="attention-list svelte-z6w8je"><!> <!></div> <div class="subsection-head svelte-z6w8je"><h4 class="svelte-z6w8je">Live event feed</h4> <span class="svelte-z6w8je"> </span></div> <div class="feed-list svelte-z6w8je"><!> <!></div></section> <section class="card-section svelte-z6w8je"><div class="card-head svelte-z6w8je"><h3 class="svelte-z6w8je">Recent sessions</h3> <span class="svelte-z6w8je"> </span></div> <div class="session-list svelte-z6w8je"><!> <!></div> <div class="subsection-head svelte-z6w8je"><h4 class="svelte-z6w8je">Event breakdown</h4> <span class="svelte-z6w8je"> </span></div> <div class="table-scroll svelte-z6w8je"><table class="data-table svelte-z6w8je"><thead><tr><th class="svelte-z6w8je">Type</th><th class="svelte-z6w8je">Total</th></tr></thead><tbody><!><!></tbody></table></div> <div class="subsection-head svelte-z6w8je"><h4 class="svelte-z6w8je">Most active sessions</h4> <span class="svelte-z6w8je"> </span></div> <div class="hot-session-list svelte-z6w8je"><!> <!></div></section></div> <section class="card-section session-details svelte-z6w8je"><div class="card-head svelte-z6w8je"><h3 class="svelte-z6w8je">Selected session</h3> <!></div> <!></section></div>`);function od(e,t){F(t,!0);let n=w(!1),s=w(!1),l=w(``),u=w(``),f=w(`connecting`),m=w(R([])),h=w(null),g=w(R([])),_=w(R([])),y=w(R([])),S=w(R({})),T=w(R({})),E=w(R([])),D=w(null),O=w(R(Date.now())),N=null,P=null,I=null;function L(e){let t=e.properties;if(typeof t?.sessionID==`string`)return t.sessionID;let n=t?.info;return typeof n?.id==`string`?n.id:``}function z(e,t=140){return e.length>t?`${e.slice(0,t-1)}...`:e}function ee(e){return{type:e.type,properties:e.properties??{}}}function te(e){let t=L(e);if(!t)return null;let n=ee(e),r=it(n,t);if(r)return{id:r.callID||`${r.tool}:${Date.now()}`,kind:`tool`,tool:r.tool,status:r.status,title:r.title??r.tool,detail:r.detail??``,output:r.output??``,error:r.error??``,updatedAt:Date.now()};let i=Ze(n,t);return i?{id:i.id,kind:`step`,tool:`step`,status:i.status,title:i.title,detail:i.detail??``,output:``,error:``,updatedAt:Date.now()}:null}function G(e){let t=e.properties,n=L(e),r=e.type;if(r===`permission.asked`)return{kind:`permission`,severity:`high`,title:`Approval needed`,detail:typeof t?.permission==`string`?t.permission:`Assistant is waiting for a permission decision.`,sessionId:n};if(r===`question.asked`)return{kind:`question`,severity:`high`,title:`Answer requested`,detail:Array.isArray(t?.questions)?`${t.questions.length} question${t.questions.length===1?``:`s`} waiting for an answer.`:`Assistant asked a question.`,sessionId:n};if(r===`session.error`)return{kind:`error`,severity:`high`,title:`Session error`,detail:typeof t?.error==`string`?t.error:`Assistant session reported an error.`,sessionId:n};if(r===`session.deleted`)return{kind:`info`,severity:`medium`,title:`Session removed`,detail:`An active session was deleted.`,sessionId:n};if(r===`session.created`)return{kind:`info`,severity:`low`,title:`New session started`,detail:`A new conversation became active.`,sessionId:n};if(r.startsWith(`session.next.tool.`)){let e=typeof t?.tool==`string`?t.tool:`tool`,i=typeof t?.progress==`string`?t.progress:typeof t?.message==`string`?t.message:``;if(r.endsWith(`.failed`))return{kind:`error`,severity:`high`,title:`Tool failed: ${e}`,detail:z(i||`Assistant tool execution failed.`),sessionId:n};if(r.endsWith(`.called`))return{kind:`info`,severity:`medium`,title:`Tool running: ${e}`,detail:z(i||`Assistant started a tool.`),sessionId:n};if(r.endsWith(`.completed`))return{kind:`info`,severity:`low`,title:`Tool finished: ${e}`,detail:`Assistant completed a tool call.`,sessionId:n}}if(r===`message.part.updated`){let e=t?.part;if(typeof e?.tool==`string`&&e.state?.status===`error`)return{kind:`error`,severity:`high`,title:`Tool failed: ${e.tool}`,detail:typeof e.state.error==`string`?z(e.state.error):`Assistant tool execution failed.`,sessionId:n}}return null}function ne(e){let t=e.properties?.info;if(typeof t?.title==`string`&&t.title.trim())return t.title;let n=G(e);if(n?.title)return n.title;let r=L(e);return r?`Session ${r.slice(0,8)}`:`Assistant event`}function q(e){let t=e.properties,n=G(e);if(n?.detail)return n.detail;if(!t)return``;if(e.type.startsWith(`session.next.tool.`)){let e=typeof t.tool==`string`?t.tool:`tool`,n=typeof t.progress==`string`?t.progress:typeof t.message==`string`?t.message:``;return z(n?`${e}: ${n}`:e)}if(e.type===`message.part.updated`){let e=t.part;if(typeof e?.tool==`string`){let t=typeof e.state?.status==`string`?e.state.status:`updated`;return`${e.tool} ${t}`}if(typeof e?.type==`string`)return e.type}return e.type===`session.updated`?`Session metadata changed.`:``}function J(e){let t=G(e);if(!t)return;let n=Date.now();U(_,[{id:`${n}-${Math.random().toString(36).slice(2,8)}`,timestamp:n,...t},...i(_)].slice(0,30),!0)}function Y(e){let t=Date.now(),n=e.type||`unknown`,r=L(e),a=te(e)??void 0;U(y,[{id:`${t}-${Math.random().toString(36).slice(2,8)}`,type:n,sessionId:r,title:ne(e),detail:q(e),toolState:a,timestamp:t},...i(y)].slice(0,80),!0),U(S,{...i(S),[n]:(i(S)[n]??0)+1},!0),r&&U(T,{...i(T),[r]:(i(T)[r]??0)+1},!0),U(E,[t,...i(E).filter(e=>t-e<=5*6e4)],!0),U(D,t,!0)}function re(e){let t=i(m).find(t=>t.id===e.id);if(t){U(m,[{...t,...e},...i(m).filter(t=>t.id!==e.id)].sort((e,t)=>t.updatedAt-e.updatedAt),!0);return}U(m,[e,...i(m)].sort((e,t)=>t.updatedAt-e.updatedAt),!0)}function ie(e){let t=e.properties?.info,n=L(e);if(e.type===`session.deleted`&&n){U(m,i(m).filter(e=>e.id!==n),!0),i(h)===n&&U(h,i(m)[0]?.id??null,!0);return}if(!n)return;let r=i(m).find(e=>e.id===n),a=typeof t?.time?.created==`number`?t.time.created:r?.createdAt??Date.now(),o=typeof t?.time?.updated==`number`?t.time.updated:Date.now();re({id:n,title:typeof t?.title==`string`?t.title:r?.title??``,createdAt:a,updatedAt:o})}async function X(){U(n,!0),U(l,``);try{U(m,await we(),!0),(!i(h)||!i(m).some(e=>e.id===i(h)))&&U(h,i(m)[0]?.id??null,!0)}catch(e){U(l,e instanceof Error?e.message:`Failed to load sessions.`,!0)}finally{U(n,!1)}}async function Z(e){if(!e){U(g,[],!0);return}U(s,!0);try{U(g,await le(e),!0)}catch{U(g,[],!0)}finally{U(s,!1)}}async function ae(e){U(h,e,!0),await Z(e)}function oe(e){if(!e)return`n/a`;let t=new Date(e),n=new Date;return t.getFullYear()===n.getFullYear()&&t.getMonth()===n.getMonth()&&t.getDate()===n.getDate()?t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}):t.toLocaleString([],{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function se(e){return new Date(e).toLocaleString([],{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}let ce=W(()=>i(m).find(e=>e.id===i(h))??null),ue=W(()=>i(_).filter(e=>e.kind===`permission`||e.kind===`question`).length),de=W(()=>i(_).filter(e=>e.severity===`high`).length),fe=W(()=>i(m).filter(e=>i(O)-e.updatedAt<=5*6e4).length),pe=W(()=>i(_).slice(0,10)),me=W(()=>i(E).filter(e=>i(O)-e<=6e4).length),he=W(()=>i(E).filter(e=>i(O)-e<=5*6e4).length),ge=W(()=>Object.entries(i(S)).sort((e,t)=>t[1]-e[1]).slice(0,8)),_e=W(()=>i(m).map(e=>({...e,events:i(T)[e.id]??0})).sort((e,t)=>t.events-e.events||t.updatedAt-e.updatedAt).slice(0,8));A(()=>{tt.load(),X().then(()=>Z(i(h))),U(f,`connecting`),N=$e({onConnect:()=>{U(f,`connected`),U(u,``)},onDisconnect:e=>{U(f,`disconnected`),U(u,e.message,!0)},onCreated:()=>{},onUpdated:()=>{},onDeleted:()=>{},onEvent:e=>{U(f,`connected`),J(e),Y(e),ie(e)}}),P=setInterval(()=>{X()},3e4),I=setInterval(()=>{U(O,Date.now(),!0)},5e3)}),V(()=>{N?.(),P&&clearInterval(P),I&&clearInterval(I)});var ve=ad(),ye=H(ve),be=x(H(ye),2),xe=H(be),Se=H(xe),Ce=e=>{$(e,{})};d(Se,e=>{i(n)&&e(Ce)}),b(),K(xe),K(be),K(ye);var Te=x(ye,2),Ee=e=>{var t=Bu(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(l))),o(e,t)};d(Te,e=>{i(l)&&e(Ee)});var De=x(Te,2),Oe=e=>{var t=Vu(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(u))),o(e,t)};d(De,e=>{i(u)&&i(f)===`disconnected`&&e(Oe)});var Q=x(De,2),ke=H(Q),Ae=x(H(ke),2),je=H(Ae,!0);K(Ae);var Me=x(Ae,2),Ne=H(Me,!0);K(Me),K(ke);var Pe=x(ke,2),Fe=H(Pe,!0);K(Pe),K(Q);var Ie=x(Q,2),Le=H(Ie),Re=x(H(Le),2),ze=H(Re,!0);K(Re);var Be=x(Re,2),Ve=H(Be);K(Be),K(Le);var He=x(Le,2),Ue=x(H(He),2),We=H(Ue,!0);K(Ue);var Ge=x(Ue,2),Ke=H(Ge);K(Ge),K(He);var qe=x(He,2),Je=x(H(qe),2),Ye=H(Je,!0);K(Je),b(2),K(qe);var Xe=x(qe,2);let Qe;var et=x(H(Xe),2),nt=H(et,!0);K(et);var rt=x(et,2),at=H(rt,!0);K(rt),K(Xe);var ot=x(Xe,2),st=x(H(ot),2),ct=H(st,!0);K(st);var lt=x(st,2),ut=H(lt);K(lt),K(ot);var dt=x(ot,2);let ft;var mt=x(H(dt),2),gt=H(mt,!0);K(mt);var _t=x(mt,2),vt=H(_t,!0);K(_t),K(dt),K(Ie);var yt=x(Ie,2),bt=H(yt),xt=H(bt),St=x(H(xt),2),Ct=H(St,!0);K(St),K(xt);var wt=x(xt,2),Tt=H(wt),Et=e=>{o(e,Hu())};d(Tt,e=>{i(pe).length===0&&e(Et)}),M(x(Tt,2),17,()=>i(pe),e=>e.id,(e,t)=>{var n=Wu(),s=H(n),c=H(s),l=H(c,!0);K(c);var u=x(c,2),f=H(u,!0);K(u),K(s);var h=x(s,2),g=H(h,!0);K(h);var _=x(h,2),y=e=>{let n=W(()=>i(m).find(e=>e.id===i(t).sessionId)?.title);var s=Uu(),c=H(s,!0);K(s),v(e=>{k(s,`aria-label`,i(t).sessionId),r(c,e)},[()=>i(n)||`Session ${i(t).sessionId.slice(0,8)}…`]),a(`click`,s,()=>void ae(i(t).sessionId)),o(e,s)};d(_,e=>{i(t).sessionId&&e(y)}),K(n),v(e=>{p(n,1,`attention-item attention-item--${i(t).severity??``}`,`svelte-z6w8je`),r(l,i(t).title),r(f,e),r(g,i(t).detail)},[()=>oe(i(t).timestamp)]),o(e,n)}),K(wt);var Dt=x(wt,2),Ot=x(H(Dt),2),kt=H(Ot,!0);K(Ot),K(Dt);var At=x(Dt,2),jt=H(At),Mt=e=>{o(e,Gu())};d(jt,e=>{i(y).length===0&&e(Mt)}),M(x(jt,2),17,()=>i(y).slice(0,12),e=>e.id,(e,t)=>{var n=Ju(),s=H(n),c=H(s),l=H(c,!0);K(c);var u=x(c,2),f=H(u,!0);K(u),K(s);var p=x(s,2),h=H(p,!0);K(p);var g=x(p,2),_=e=>{{let n=W(()=>[i(t).toolState]);pt(e,{get items(){return i(n)},ariaLabel:`Activity tool event`})}},y=e=>{var n=Ku(),a=H(n,!0);K(n),v(()=>r(a,i(t).detail)),o(e,n)};d(g,e=>{i(t).toolState?e(_):i(t).detail&&e(y,1)});var b=x(g,2),S=e=>{let n=W(()=>i(m).find(e=>e.id===i(t).sessionId)?.title);var s=qu(),c=H(s,!0);K(s),v(e=>{k(s,`aria-label`,i(t).sessionId),r(c,e)},[()=>i(n)||`Session ${i(t).sessionId.slice(0,8)}…`]),a(`click`,s,()=>void ae(i(t).sessionId)),o(e,s)};d(b,e=>{i(t).sessionId&&e(S)}),K(n),v(e=>{r(l,i(t).type),r(f,e),r(h,i(t).title)},[()=>oe(i(t).timestamp)]),o(e,n)}),K(At),K(bt);var Nt=x(bt,2),Pt=H(Nt),Ft=x(H(Pt),2),It=H(Ft,!0);K(Ft),K(Pt);var Lt=x(Pt,2),Rt=H(Lt),zt=e=>{o(e,Yu())};d(Rt,e=>{i(m).length===0&&!i(n)&&e(zt)}),M(x(Rt,2),17,()=>i(m).slice(0,12),e=>e.id,(e,t)=>{var n=Xu();let s;var c=H(n),l=H(c),u=H(l,!0);K(l);var d=x(l,2),f=H(d);K(d),K(c);var m=x(c,2),g=H(m),_=H(g);K(g);var y=x(g,2),b=H(y);K(y),K(m),K(n),v((e,a)=>{s=p(n,1,`session-row svelte-z6w8je`,null,s,{selected:i(h)===i(t).id}),r(u,i(t).title||`Untitled session`),r(f,`Updated ${e??``}`),r(_,`${i(T)[i(t).id]??0??``} evt`),r(b,`${a??``}...`)},[()=>se(i(t).updatedAt),()=>i(t).id.slice(0,12)]),a(`click`,n,()=>void ae(i(t).id)),o(e,n)}),K(Lt);var Bt=x(Lt,2),Vt=x(H(Bt),2),Ht=H(Vt,!0);K(Vt),K(Bt);var Ut=x(Bt,2),Wt=H(Ut),Gt=x(H(Wt)),Kt=H(Gt),qt=e=>{o(e,Zu())};d(Kt,e=>{i(ge).length===0&&e(qt)}),M(x(Kt),17,()=>i(ge),c,(e,t)=>{var n=W(()=>C(i(t),2));let a=()=>i(n)[0],s=()=>i(n)[1];var c=Qu(),l=H(c),u=H(l,!0);K(l);var d=x(l),f=H(d,!0);K(d),K(c),v(()=>{r(u,a()),r(f,s())}),o(e,c)}),K(Gt),K(Wt),K(Ut);var Jt=x(Ut,2),Yt=x(H(Jt),2),Xt=H(Yt,!0);K(Yt),K(Jt);var Zt=x(Jt,2),Qt=H(Zt),$t=e=>{o(e,$u())};d(Qt,e=>{i(_e).length===0&&e($t)}),M(x(Qt,2),17,()=>i(_e),e=>e.id,(e,t)=>{var n=ed(),a=H(n),s=H(a),c=H(s,!0);K(s);var l=x(s,2),u=H(l,!0);K(l),K(a);var d=x(a,2),f=H(d,!0);K(d),K(n),v(()=>{r(c,i(t).title||`Untitled session`),r(u,i(t).id),r(f,i(t).events)}),o(e,n)}),K(Zt),K(Nt),K(yt);var en=x(yt,2),tn=H(en),nn=x(H(tn),2),rn=e=>{var t=td(),n=H(t,!0);K(t),v(()=>r(n,i(ce).title||i(ce).id)),o(e,t)};d(nn,e=>{i(ce)&&e(rn)}),K(tn);var an=x(tn,2),on=e=>{var t=rd(),n=j(t),c=H(n),l=x(H(c)),u=H(l,!0);K(l),K(c);var f=x(c,2),p=x(H(f)),m=H(p,!0);K(p),K(f);var h=x(f,2),_=x(H(h)),y=H(_,!0);K(_),K(h);var S=x(h,2),C=x(H(S)),w=H(C,!0);K(C),K(S),K(n);var E=x(n,2),D=x(H(E),2),O=H(D),k=e=>{$(e,{})};d(O,e=>{i(s)&&e(k)}),b(),K(D),K(E);var A=x(E,2),N=e=>{o(e,nd())};d(A,e=>{i(g).length===0&&!i(s)&&e(N)});var P=x(A,2);M(P,21,()=>i(g).slice(-12),e=>e.id,(e,t)=>{ht(e,{get entry(){return i(t)}})}),K(P),v((e,t)=>{r(u,e),r(m,t),r(y,i(ce).id),r(w,i(T)[i(ce).id]??0),D.disabled=i(s)},[()=>se(i(ce).createdAt),()=>se(i(ce).updatedAt)]),a(`click`,D,()=>void Z(i(ce).id)),o(e,t)},sn=e=>{o(e,id())};d(an,e=>{i(ce)?e(on):e(sn,-1)}),K(en),K(ve),v((e,t)=>{xe.disabled=i(n),r(je,tt.active?.label??`Active assistant endpoint`),r(Ne,tt.active?.url??`Loading endpoint URL...`),p(Pe,1,`stream-badge stream-badge--${i(f)??``}`,`svelte-z6w8je`),r(Fe,i(f)),r(ze,i(me)),r(Ve,`${i(he)??``} events seen in the last 5 minutes`),r(We,i(m).length),r(Ke,`${i(fe)??``} active in the last 5 minutes`),r(Ye,i(ue)),Qe=p(Xe,1,`summary-card svelte-z6w8je`,null,Qe,{"summary-card--danger":i(de)>0}),r(nt,e),r(at,i(de)>0?`${i(de)} failure${i(de)===1?``:`s`} need review.`:i(f)===`connected`?`Stream healthy.`:`Reconnect needed.`),r(ct,t),r(ut,`${i(y).length??``} recent events buffered`),ft=p(dt,1,`summary-card svelte-z6w8je`,null,ft,{"summary-card--danger":i(de)>0}),r(gt,i(de)),r(vt,i(de)>0?`Tool or session failures need review.`:`No current failures seen.`),r(Ct,i(pe).length),r(kt,i(y).length),r(It,i(m).length),r(Ht,i(ge).length),r(Xt,i(_e).length)},[()=>oe(i(D)),()=>Object.keys(i(S)).length]),a(`click`,xe,()=>void X()),o(e,ve),B()}h([`click`]);var sd=f(`<div class="feedback feedback--error" role="alert"> </div>`),cd=f(`<div class="stats-loading svelte-1jrmvb5"><!> <span>Loading knowledge stats…</span></div>`),ld=f(`<div class="stats-unavailable svelte-1jrmvb5"><p> </p></div>`),ud=f(`<li> </li>`),dd=f(`<ul class="stats-advisories svelte-1jrmvb5"></ul>`),fd=f(`<div class="stats-row stats-row--wide svelte-1jrmvb5"><span> </span> <strong class="svelte-1jrmvb5"> </strong></div>`),pd=f(`<div class="stats-status svelte-1jrmvb5"><span> </span> <!></div> <div class="stats-cards svelte-1jrmvb5"><div class="stats-card svelte-1jrmvb5"><span class="stats-value svelte-1jrmvb5"> </span> <span class="stats-label svelte-1jrmvb5">Indexed assets</span></div> <div class="stats-card svelte-1jrmvb5"><span class="stats-value svelte-1jrmvb5"> </span> <span class="stats-label svelte-1jrmvb5">Pending proposals</span></div> <div class="stats-card svelte-1jrmvb5"><span class="stats-value svelte-1jrmvb5"> </span> <span class="stats-label svelte-1jrmvb5">Improve runs completed</span></div> <div class="stats-card svelte-1jrmvb5"><span class="stats-value svelte-1jrmvb5"> </span> <span class="stats-label svelte-1jrmvb5">Reflect cooldown skips</span></div></div> <div class="stats-grid svelte-1jrmvb5"><div class="stats-row svelte-1jrmvb5"><span>AKM version</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Last indexed</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Embeddings indexed</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Vector search available</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Memories indexed</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Skills indexed</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Lessons indexed</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Improve invoked</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Improve skipped</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Reflect OK</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Consolidation promoted</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Consolidation merged</span><strong class="svelte-1jrmvb5"> </strong></div> <div class="stats-row svelte-1jrmvb5"><span>Consolidation deleted</span><strong class="svelte-1jrmvb5"> </strong></div></div> <div class="stats-grid svelte-1jrmvb5"><div class="stats-row stats-row--wide svelte-1jrmvb5"><span>Pending proposals</span><strong class="svelte-1jrmvb5"> </strong></div> <!></div>`,1),md=f(`<section class="stats-section svelte-1jrmvb5"><div class="stats-header svelte-1jrmvb5"><div><h3 class="svelte-1jrmvb5">Knowledge &amp; Learning</h3> <p class="section-note">Read-only AKM health, memory counts, improve activity, and pending proposals from live CLI JSON output.</p></div> <button class="btn btn-secondary btn-sm" type="button"><!> Refresh stats</button></div> <!></section>`);function hd(e,t){F(t,!0);let n=w(!1),c=w(``),l=w(null);async function u(){U(n,!0),U(c,``);try{U(l,await re(),!0)}catch(e){U(c,e instanceof Error?e.message:`Failed to load knowledge stats.`,!0)}finally{U(n,!1)}}function f(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}function m(e,t=`Yes`,n=`No`){return e===!0?t:e===!1?n:`—`}function h(e){return e==null?`—`:e.toLocaleString()}function g(e){return e===`pass`?`Healthy`:e===`warn`?`Warnings`:`Unknown`}A(()=>{u()});var _=md(),y=H(_),S=x(H(y),2),C=H(S),T=e=>{$(e,{})};d(C,e=>{i(n)&&e(T)}),b(),K(S),K(y);var E=x(y,2),D=e=>{var t=sd(),n=H(t,!0);K(t),v(()=>r(n,i(c))),o(e,t)},O=e=>{var t=cd();$(H(t),{}),b(2),K(t),o(e,t)},k=e=>{var t=ld(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(l).reason??`The akm CLI is not reachable from the admin host.`)),o(e,t)},N=e=>{var t=pd(),n=j(t),a=H(n),c=H(a,!0);K(a);var u=x(a,2),_=e=>{var t=dd();M(t,20,()=>i(l).health.advisories,e=>e,(e,t)=>{var n=ud(),i=H(n,!0);K(n),v(()=>r(i,t)),o(e,n)}),K(t),o(e,t)};d(u,e=>{i(l).health.advisories.length>0&&e(_)}),K(n);var y=x(n,2),S=H(y),C=H(S),w=H(C,!0);K(C),b(2),K(S);var T=x(S,2),E=H(T),D=H(E,!0);K(E),b(2),K(T);var O=x(T,2),k=H(O),A=H(k,!0);K(k),b(2),K(O);var N=x(O,2),P=H(N),F=H(P,!0);K(P),b(2),K(N),K(y);var I=x(y,2),L=H(I),R=x(H(L)),z=H(R,!0);K(R),K(L);var B=x(L,2),V=x(H(B)),U=H(V,!0);K(V),K(B);var ee=x(B,2),te=x(H(ee)),W=H(te,!0);K(te),K(ee);var G=x(ee,2),ne=x(H(G)),q=H(ne,!0);K(ne),K(G);var J=x(G,2),Y=x(H(J)),re=H(Y,!0);K(Y),K(J);var ie=x(J,2),X=x(H(ie)),Z=H(X,!0);K(X),K(ie);var ae=x(ie,2),oe=x(H(ae)),se=H(oe,!0);K(oe),K(ae);var ce=x(ae,2),le=x(H(ce)),ue=H(le,!0);K(le),K(ce);var de=x(ce,2),fe=x(H(de)),pe=H(fe,!0);K(fe),K(de);var me=x(de,2),he=x(H(me)),ge=H(he,!0);K(he),K(me);var _e=x(me,2),ve=x(H(_e)),ye=H(ve,!0);K(ve),K(_e);var be=x(_e,2),xe=x(H(be)),Se=H(xe,!0);K(xe),K(be);var Ce=x(be,2),we=x(H(Ce)),Te=H(we,!0);K(we),K(Ce),K(I);var Ee=x(I,2),De=H(Ee),Oe=x(H(De)),Q=H(Oe,!0);K(Oe),K(De);var ke=x(De,2),Ae=e=>{var t=s();M(j(t),19,()=>i(l).proposals.items,(e,t)=>e.ref??`${e.generator??`proposal`}-${t}`,(e,t)=>{var n=fd(),a=H(n),s=H(a,!0);K(a);var c=x(a,2),l=H(c);K(c),K(n),v(e=>{r(s,i(t).ref??`Unknown ref`),r(l,`${i(t).generator??`unknown generator`??``} · ${i(t).status??`pending`??``} · ${e??``}`)},[()=>f(i(t).createdAt)]),o(e,n)}),o(e,t)};d(ke,e=>{i(l).proposals.items.length>0&&e(Ae)}),K(Ee),v((e,t,n,o,s,u,d,f,m,h,g,_,v,y,b,x,S)=>{p(a,1,`stats-badge ${i(l).health.status===`warn`?`stats-badge-warn`:i(l).health.status===`unknown`?`stats-badge-unknown`:``}`,`svelte-1jrmvb5`),r(c,e),r(w,t),r(D,n),r(A,o),r(F,s),r(z,i(l).version??`—`),r(U,u),r(W,d),r(q,f),r(re,m),r(Z,h),r(se,g),r(ue,_),r(pe,v),r(ge,y),r(ye,b),r(Se,x),r(Te,S),r(Q,i(l).proposals.pending===0?`None pending.`:`${i(l).proposals.pending} pending`)},[()=>g(i(l).health.status),()=>h(i(l).index.entryCount),()=>h(i(l).proposals.pending),()=>h(i(l).improve.completed),()=>h(i(l).improve.reflectCooldown),()=>f(i(l).index.lastBuiltAt),()=>m(i(l).index.hasEmbeddings),()=>m(i(l).index.vecAvailable),()=>h(i(l).assetCounts.memory),()=>h(i(l).assetCounts.skill),()=>h(i(l).assetCounts.lesson),()=>h(i(l).improve.invoked),()=>h(i(l).improve.skipped),()=>h(i(l).improve.reflectOk),()=>h(i(l).improve.consolidation.promoted),()=>h(i(l).improve.consolidation.merged),()=>h(i(l).improve.consolidation.deleted)]),o(e,t)};d(E,e=>{i(c)?e(D):!i(l)||i(n)?e(O,1):i(l).available?e(N,-1):e(k,2)}),K(_),v(()=>S.disabled=t.disabled),a(`click`,S,()=>void u()),o(e,_),B()}h([`click`]);var gd=f(`<div class="input-with-toggle svelte-176sy43"><input class="control-input svelte-176sy43" spellcheck="false" autocomplete="new-password"/> <button type="button" class="btn-icon svelte-176sy43"> </button></div>`);function _d(e,t){F(t,!0);let n=L(t,`value`,15,``),s=L(t,`disabled`,3,!1),c=w(!1);var l=gd(),u=H(l);P(u);var d=x(u,2),f=H(d,!0);K(d),K(l),v(()=>{k(u,`id`,t.id),k(u,`type`,i(c)?`text`:`password`),k(u,`placeholder`,t.placeholder),u.disabled=s(),k(d,`aria-label`,i(c)?`Hide value`:`Show value`),d.disabled=s(),r(f,i(c)?`Hide`:`Show`)}),z(u,n),a(`click`,d,()=>{U(c,!i(c))}),o(e,l),B()}h([`click`]);var vd=f(`<section class="config-section svelte-y5k1u8"><div class="section-header svelte-y5k1u8"><h3 class="section-title svelte-y5k1u8">Semantic search (embeddings)</h3> <div class="section-actions svelte-y5k1u8"><button class="btn btn-secondary btn-sm" type="button"><!> Detect</button> <button class="btn btn-secondary btn-sm" type="button"><!> Test</button></div></div> <p class="section-note svelte-y5k1u8">Vector embedding provider for semantic search. Leave Endpoint and Model blank to use built-in local embeddings.</p> <div class="controls--grid svelte-y5k1u8"><div class="control-group control-group--wide svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embEndpoint">Endpoint</label> <input id="embEndpoint" class="control-input svelte-y5k1u8" type="url" spellcheck="false" placeholder="https://api.openai.com/v1/embeddings"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embModel">Model</label> <input id="embModel" class="control-input svelte-y5k1u8" type="text" spellcheck="false" placeholder="text-embedding-3-small"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embProvider">Provider (label)</label> <input id="embProvider" class="control-input svelte-y5k1u8" type="text" spellcheck="false" placeholder="openai"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embApiKey">API Key</label> <!></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embDimension">Dimensions</label> <input id="embDimension" class="control-input control-input--narrow svelte-y5k1u8" type="number" min="1"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embLocalModel">Local model</label> <input id="embLocalModel" class="control-input svelte-y5k1u8" type="text" spellcheck="false" placeholder="Xenova/bge-small-en-v1.5"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embBatchSize">Batch size</label> <input id="embBatchSize" class="control-input control-input--narrow svelte-y5k1u8" type="number" min="1"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embChunkSize">Chunk size (chars)</label> <input id="embChunkSize" class="control-input control-input--narrow svelte-y5k1u8" type="number" min="1"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embContextLength">Context length</label> <input id="embContextLength" class="control-input control-input--narrow svelte-y5k1u8" type="number" min="1"/></div> <div class="control-group svelte-y5k1u8"><label class="control-label svelte-y5k1u8" for="embOllamaNumCtx">Ollama num_ctx</label> <input id="embOllamaNumCtx" class="control-input control-input--narrow svelte-y5k1u8" type="number" min="1"/></div></div></section>`);function yd(e,t){F(t,!0);let n=L(t,`endpoint`,15,``),r=L(t,`model`,15,``),i=L(t,`provider`,15,``),s=L(t,`apiKey`,15,``),c=L(t,`dimension`,15,1536),l=L(t,`localModel`,15,``),u=L(t,`batchSize`,15,``),f=L(t,`chunkSize`,15,``),p=L(t,`contextLength`,15,``),m=L(t,`ollamaNumCtx`,15,``),h=L(t,`disabled`,3,!1),g=L(t,`detecting`,3,!1),_=L(t,`testing`,3,!1);var y=vd(),S=H(y),C=x(H(S),2),w=H(C),T=H(w),E=e=>{$(e,{})};d(T,e=>{g()&&e(E)}),b(),K(w);var D=x(w,2),O=H(D),k=e=>{$(e,{})};d(O,e=>{_()&&e(k)}),b(),K(D),K(C),K(S);var A=x(S,4),j=H(A),M=x(H(j),2);P(M),K(j);var N=x(j,2),I=x(H(N),2);P(I),K(N);var R=x(N,2),V=x(H(R),2);P(V),K(R);var U=x(R,2);_d(x(H(U),2),{id:`embApiKey`,placeholder:"${AKM_EMBED_API_KEY}",get disabled(){return h()},get value(){return s()},set value(e){s(e)}}),K(U);var ee=x(U,2),te=x(H(ee),2);P(te),K(ee);var W=x(ee,2),G=x(H(W),2);P(G),K(W);var ne=x(W,2),q=x(H(ne),2);P(q),K(ne);var J=x(ne,2),Y=x(H(J),2);P(Y),K(J);var re=x(J,2),ie=x(H(re),2);P(ie),K(re);var X=x(re,2),Z=x(H(X),2);P(Z),K(X),K(A),K(y),v(()=>{w.disabled=h()||g()||_(),D.disabled=h()||g()||_(),M.disabled=h(),I.disabled=h(),V.disabled=h(),te.disabled=h(),G.disabled=h(),q.disabled=h(),Y.disabled=h(),ie.disabled=h(),Z.disabled=h()}),a(`click`,w,function(...e){t.ondetect?.apply(this,e)}),a(`click`,D,function(...e){t.ontest?.apply(this,e)}),z(M,n),z(I,r),z(V,i),z(te,c),z(G,l),z(q,u),z(Y,f),z(ie,p),z(Z,m),o(e,y),B()}h([`click`]);var bd=f(`<section class="config-section svelte-gfn07p"><h3 class="section-title svelte-gfn07p">Behavior</h3> <div class="controls--grid svelte-gfn07p"><div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="semanticSearch">Semantic search</label> <select id="semanticSearch" class="control-input svelte-gfn07p"><option>Auto (vector index when available)</option><option>Off (keyword only)</option></select></div> <div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="outputFormat">Output format</label> <select id="outputFormat" class="control-input svelte-gfn07p"><option>JSON</option><option>YAML</option><option>Text</option></select></div> <div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="outputDetail">Output detail</label> <select id="outputDetail" class="control-input svelte-gfn07p"><option>Brief</option><option>Normal</option><option>Full</option></select></div></div></section> <details class="adv-details svelte-gfn07p"><summary class="adv-summary svelte-gfn07p">Advanced tuning — affects memory scoring &amp; indexing (leave at defaults unless you know the impact)</summary> <section class="config-section adv-body svelte-gfn07p"><p class="section-note svelte-gfn07p">Global tuning beyond per-profile settings. Leave blank to use akm defaults.</p> <div class="controls--grid svelte-gfn07p"><div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-halflife">Utility decay half-life (days)</label> <input id="adv-halflife" class="control-input control-input--narrow svelte-gfn07p" type="number" min="0.1" step="0.1" placeholder="default"/></div> <div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-fbboost">Feedback stability boost (≥1)</label> <input id="adv-fbboost" class="control-input control-input--narrow svelte-gfn07p" type="number" min="1" step="0.1" placeholder="default"/></div> <div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-eventret">Event retention (days)</label> <input id="adv-eventret" class="control-input control-input--narrow svelte-gfn07p" type="number" min="0" placeholder="default"/></div> <div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-minscore">Search min score</label> <input id="adv-minscore" class="control-input control-input--narrow svelte-gfn07p" type="number" min="0" step="0.01" placeholder="default"/></div> <div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-rerank">Curate rerank</label> <select id="adv-rerank" class="control-input svelte-gfn07p"><option>Default</option><option>Enabled</option><option>Disabled</option></select></div> <div class="control-group svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-reqreason">Feedback requires reason</label> <select id="adv-reqreason" class="control-input svelte-gfn07p"><option>Default</option><option>Required</option><option>Optional</option></select></div> <div class="control-group control-group--wide svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-failmodes">Allowed feedback failure modes (comma-separated)</label> <input id="adv-failmodes" class="control-input svelte-gfn07p" type="text" spellcheck="false" placeholder="e.g. outdated, incorrect, irrelevant"/></div> <div class="control-group control-group--wide svelte-gfn07p"><label class="control-label svelte-gfn07p" for="adv-index">Index config (JSON, per-pass)</label> <textarea id="adv-index" class="control-input svelte-gfn07p" rows="4" spellcheck="false"></textarea> <span class="section-note svelte-gfn07p">Advanced per-pass indexing options (enrichment, graphExtraction, metadataEnhance, stalenessDetection). Must be a JSON object.</span></div></div></section></details>`,1);function xd(e,t){F(t,!0);let n=L(t,`semanticSearchMode`,15,`auto`),r=L(t,`outputFormat`,15,`json`),i=L(t,`outputDetail`,15,`brief`),a=L(t,`imHalfLife`,15,``),s=L(t,`imFeedbackBoost`,15,``),c=L(t,`imEventRetention`,15,``),l=L(t,`searchMinScore`,15,``),u=L(t,`searchCurateRerank`,15,``),d=L(t,`fbRequireReason`,15,``),f=L(t,`fbFailureModes`,15,``),p=L(t,`indexJson`,15,``),m=L(t,`disabled`,3,!1);var h=bd(),g=j(h),_=x(H(g),2),y=H(_),S=x(H(y),2),C=H(S);C.value=C.__value=`auto`;var w=x(C);w.value=w.__value=`off`,K(S),K(y);var T=x(y,2),E=x(H(T),2),D=H(E);D.value=D.__value=`json`;var O=x(D);O.value=O.__value=`yaml`;var A=x(O);A.value=A.__value=`text`,K(E),K(T);var M=x(T,2),N=x(H(M),2),I=H(N);I.value=I.__value=`brief`;var R=x(I);R.value=R.__value=`normal`;var V=x(R);V.value=V.__value=`full`,K(N),K(M),K(_),K(g);var U=x(g,2),te=x(H(U),2),W=x(H(te),2),ne=H(W),q=x(H(ne),2);P(q),K(ne);var J=x(ne,2),Y=x(H(J),2);P(Y),K(J);var re=x(J,2),ie=x(H(re),2);P(ie),K(re);var X=x(re,2),Z=x(H(X),2);P(Z),K(X);var ae=x(X,2),oe=x(H(ae),2),se=H(oe);se.value=se.__value=``;var ce=x(se);ce.value=ce.__value=`on`;var le=x(ce);le.value=le.__value=`off`,K(oe),K(ae);var ue=x(ae,2),de=x(H(ue),2),fe=H(de);fe.value=fe.__value=``;var pe=x(fe);pe.value=pe.__value=`on`;var me=x(pe);me.value=me.__value=`off`,K(de),K(ue);var he=x(ue,2),ge=x(H(he),2);P(ge),K(he);var _e=x(he,2),ve=x(H(_e),2);ee(ve),k(ve,`placeholder`,`{ "enrichment": { "llm": false } }`),b(2),K(_e),K(W),K(te),K(U),v(()=>{S.disabled=m(),E.disabled=m(),N.disabled=m(),q.disabled=m(),Y.disabled=m(),ie.disabled=m(),Z.disabled=m(),oe.disabled=m(),de.disabled=m(),ge.disabled=m(),ve.disabled=m()}),G(S,n),G(E,r),G(N,i),z(q,a),z(Y,s),z(ie,c),z(Z,l),G(oe,u),G(de,d),z(ge,f),z(ve,p),o(e,h),B()}var Sd=f(`<option> </option>`),Cd=f(`<div class="report-error svelte-l50p56" role="alert"><p class="svelte-l50p56"> </p> <button class="btn btn-secondary btn-sm" type="button">Retry</button></div>`),wd=f(`<div class="report-loading svelte-l50p56">Generating report…</div>`),Td=f(`<iframe title="AKM Health Report" class="report-frame svelte-l50p56"></iframe>`),Ed=f(`<!> <!>`,1),Dd=f(`<section class="report-section svelte-l50p56"><div class="report-header svelte-l50p56"><div><h3 class="svelte-l50p56">AKM Health Report</h3> <p class="section-note">Build and view a live HTML report from the running assistant's <code>akm health</code> output. The default window is 72 hours.</p></div> <div class="report-controls svelte-l50p56"><label class="control-field svelte-l50p56" for="akm-report-window"><span>Time frame</span> <select id="akm-report-window" class="control-input svelte-l50p56"></select></label> <button class="btn btn-secondary btn-sm" type="button">Refresh report</button></div></div> <div class="report-frame-wrap svelte-l50p56"><!></div></section>`);function Od(e,t){F(t,!0);let n=[{value:`24h`,label:`24 hours`},{value:`72h`,label:`72 hours`},{value:`7d`,label:`7 days`},{value:`14d`,label:`14 days`},{value:`30d`,label:`30 days`}],s=w(`72h`),l=w(0),u=w(!0),f=w(!1),p=w(null),h=w(``),_=W(()=>`/admin/akm/health-report?since=${encodeURIComponent(i(s))}&refresh=${i(l)}`);async function y(){U(u,!0),U(f,!1),U(p,null),U(h,``);try{let e=await fetch(i(_),{method:`HEAD`});if(!e.ok){U(h,`Failed to generate report (${e.status} ${e.statusText}).`),U(u,!1);return}}catch{U(h,`Could not reach the report endpoint. Check that the stack is running.`),U(u,!1);return}U(p,i(_),!0)}function b(){U(l,i(l)+1),y()}function S(){U(l,i(l)+1),y()}A(()=>{y()});var C=Dd(),T=H(C),E=x(H(T),2),D=H(E),O=x(H(D),2);M(O,21,()=>n,c,(e,t)=>{var n=Sd(),a=H(n,!0);K(n);var s={};v(()=>{r(a,i(t).label),s!==(s=i(t).value)&&(n.value=(n.__value=i(t).value)??``)}),o(e,n)}),K(O),K(D);var N=x(D,2);K(E),K(T);var P=x(T,2),I=H(P),L=e=>{var t=Cd(),n=H(t),s=H(n,!0);K(n);var c=x(n,2);K(t),v(()=>r(s,i(h))),a(`click`,c,b),o(e,t)},R=e=>{var t=Ed(),n=j(t),r=e=>{o(e,wd())};d(n,e=>{(i(u)||!i(f))&&e(r)});var a=x(n,2),s=e=>{var t=Td();v(()=>k(t,`src`,i(p))),m(`load`,t,()=>{U(u,!1),U(f,!0)}),g(t),o(e,t)};d(a,e=>{i(p)&&e(s)}),o(e,t)};d(I,e=>{i(h)?e(L):e(R,-1)}),K(P),K(C),v(()=>{O.disabled=t.disabled,N.disabled=t.disabled}),a(`change`,O,S),G(O,()=>i(s),e=>U(s,e)),a(`click`,N,b),o(e,C),B()}h([`change`,`click`]);var kd=f(`<span class="badge badge--default svelte-zzh9mp">Default</span>`),Ad=f(`<button class="btn btn-sm">Set Default</button>`),jd=f(`<div class="profile-row svelte-zzh9mp"><span class="profile-row-name svelte-zzh9mp"> </span> <!> <!> <div class="profile-row-actions svelte-zzh9mp"><!> <button class="btn btn-sm">Edit</button> <button class="btn btn-sm btn-danger">Remove</button></div></div>`);function Md(e,t){let n=L(t,`disabled`,3,!1);var i=jd(),c=H(i),l=H(c,!0);K(c);var f=x(c,2),p=e=>{var n=s();u(j(n),()=>t.extra),o(e,n)};d(f,e=>{t.extra&&e(p)});var m=x(f,2),h=e=>{o(e,kd())};d(m,e=>{t.isDefault&&t.name&&e(h)});var g=x(m,2),_=H(g),y=e=>{var r=Ad();v(()=>r.disabled=n()),a(`click`,r,function(...e){t.onsetdefault?.apply(this,e)}),o(e,r)};d(_,e=>{t.name&&!t.isDefault&&e(y)});var b=x(_,2),S=x(b,2);K(g),K(i),v(()=>{r(l,t.name||`(unnamed)`),b.disabled=n(),S.disabled=n()}),a(`click`,b,function(...e){t.onedit?.apply(this,e)}),a(`click`,S,function(...e){t.onremove?.apply(this,e)}),o(e,i)}h([`click`]);var Nd=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M5 6.5c0-1.4 3.1-2.5 7-2.5s7 1.1 7 2.5-3.1 2.5-7 2.5-7-1.1-7-2.5z"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M5 6.5v11c0 1.4 3.1 2.5 7 2.5s7-1.1 7-2.5v-11"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M5 12c0 1.4 3.1 2.5 7 2.5s7-1.1 7-2.5"></path></svg>`);function Pd(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=Nd();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Fd=f(`<div class="profile-empty svelte-zwwvog"><!> <p class="empty-note svelte-zwwvog">No LLM profiles configured — add one below.</p></div>`),Id=f(`<div class="profile-list svelte-zwwvog"></div>`),Ld=f(`<section class="config-section svelte-zwwvog"><h3 class="section-title svelte-zwwvog">Language models <span class="section-title-aka svelte-zwwvog">akm LLM profiles</span></h3> <p class="section-note svelte-zwwvog">The language models your assistant uses to organize and improve its memory. Add one per LLM service.</p> <!> <button class="btn btn-secondary btn-sm">+ Add LLM Profile</button></section>`);function Rd(e,t){F(t,!0);let n=L(t,`profiles`,27,()=>R([])),r=L(t,`defaultName`,15,``),s=L(t,`disabled`,3,!1);var c=Ld(),l=x(H(c),4),u=e=>{var t=Fd();Pd(H(t),{size:24}),b(2),K(t),o(e,t)},f=e=>{var a=Id();M(a,21,n,e=>e.id,(e,n)=>{{let a=W(()=>r()===i(n).name);Md(e,{get name(){return i(n).name},get isDefault(){return i(a)},get disabled(){return s()},onsetdefault:()=>{r(i(n).name)},onedit:()=>t.onedit(i(n)),onremove:()=>t.onremove(i(n).id)})}}),K(a),o(e,a)};d(l,e=>{n().length===0?e(u):e(f,-1)});var p=x(l,2);K(c),v(()=>p.disabled=s()),a(`click`,p,function(...e){t.onadd?.apply(this,e)}),o(e,c),B()}h([`click`]);var zd=f(`<div class="profile-empty svelte-anyxpa"><!> <p class="empty-note svelte-anyxpa">No agent profiles defined.</p></div>`),Bd=f(`<span class="badge svelte-anyxpa"> </span>`),Vd=f(`<div class="profile-list svelte-anyxpa"></div>`),Hd=f(`<section class="config-section svelte-anyxpa"><h3 class="section-title svelte-anyxpa">Agent runners <span class="section-title-aka svelte-anyxpa">akm agent profiles</span></h3> <p class="section-note svelte-anyxpa">Runner configs for maintenance steps that spawn a subprocess (opencode or claude CLI).</p> <!> <button class="btn btn-secondary btn-sm">+ Add Agent Profile</button></section>`);function Ud(e,t){F(t,!0);let n=L(t,`profiles`,27,()=>R([])),s=L(t,`defaultName`,15,``),c=L(t,`disabled`,3,!1);var l=Hd(),u=x(H(l),4),f=e=>{var t=zd();gt(H(t),{size:24}),b(2),K(t),o(e,t)},p=e=>{var a=Vd();M(a,21,n,e=>e.id,(e,n)=>{{let a=e=>{var t=Bd(),a=H(t,!0);K(t),v(()=>r(a,i(n).platform)),o(e,t)},l=W(()=>s()===i(n).name);Md(e,{get name(){return i(n).name},get isDefault(){return i(l)},get disabled(){return c()},onsetdefault:()=>{s(i(n).name)},onedit:()=>t.onedit(i(n)),onremove:()=>t.onremove(i(n).id),extra:a,$$slots:{extra:!0}})}}),K(a),o(e,a)};d(u,e=>{n().length===0?e(f):e(p,-1)});var m=x(u,2);K(l),v(()=>m.disabled=c()),a(`click`,m,function(...e){t.onadd?.apply(this,e)}),o(e,l),B()}h([`click`]);var Wd=q(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M12 22c-3.3 0-5.5-2-5.5-4.5 0-3 2.5-5 3.5-7 .5 1.5 1.5 2 2 3 .5-2.5 1-5.5 1.5-8 1.5 2.5 2 5.5 1.5 8.5.5-1.5 1-3 .5-4.5 1 2 1.5 4 0 5.5 0 2.5-1.5 7-3.5 7z"></path></svg>`);function Gd(e,t){let n=L(t,`size`,3,20),r=L(t,`class`,3,``);var i=Wd();v(()=>{k(i,`width`,n()),k(i,`height`,n()),p(i,0,`s-icon ${r()??``}`)}),o(e,i)}var Kd=f(`<div class="profile-empty svelte-1ngozvb"><!> <p class="empty-note svelte-1ngozvb">No improve profiles defined — add one below.</p></div>`),qd=f(`<span class="profile-row-desc svelte-1ngozvb"> </span>`),Jd=f(`<div class="profile-list svelte-1ngozvb"></div>`),Yd=f(`<section class="config-section svelte-1ngozvb"><h3 class="section-title svelte-1ngozvb">Memory maintenance <span class="section-title-aka svelte-1ngozvb">akm improve</span></h3> <p class="section-note svelte-1ngozvb">Scheduled runs that distill, deduplicate, and improve stored memories. Each configuration picks which steps run and which language model they use — add a language model above first.</p> <!> <button class="btn btn-secondary btn-sm">+ Add Improve Profile</button></section>`);function Xd(e,t){F(t,!0);let n=L(t,`profiles`,27,()=>R([])),c=L(t,`defaultName`,15,``),l=L(t,`disabled`,3,!1);var u=Yd(),f=x(H(u),4),p=e=>{var t=Kd();Gd(H(t),{size:24}),b(2),K(t),o(e,t)},m=e=>{var a=Jd();M(a,21,n,e=>e.id,(e,n)=>{{let a=e=>{var t=s(),a=j(t),c=e=>{var t=qd(),a=H(t,!0);K(t),v(()=>r(a,i(n).description)),o(e,t)};d(a,e=>{i(n).description&&e(c)}),o(e,t)},u=W(()=>c()===i(n).name);Md(e,{get name(){return i(n).name},get isDefault(){return i(u)},get disabled(){return l()},onsetdefault:()=>{c(i(n).name)},onedit:()=>t.onedit(i(n)),onremove:()=>t.onremove(i(n).id),extra:a,$$slots:{extra:!0}})}}),K(a),o(e,a)};d(f,e=>{n().length===0?e(p):e(m,-1)});var h=x(f,2);K(u),v(()=>h.disabled=l()),a(`click`,h,function(...e){t.onadd?.apply(this,e)}),o(e,u),B()}h([`click`]);var Zd=f(`<div class="drawer-scrim svelte-1gmn25z" role="presentation"></div> <div class="drawer svelte-1gmn25z" role="dialog" aria-modal="true" aria-label="Edit profile"><div class="drawer-header svelte-1gmn25z"><h3 class="drawer-title svelte-1gmn25z">LLM Profile</h3> <button class="drawer-close svelte-1gmn25z" aria-label="Close">✕</button></div> <div class="drawer-body svelte-1gmn25z"><div class="controls controls--grid svelte-1gmn25z"><div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-name">Profile Name</label> <input id="d-llm-name" class="control-input svelte-1gmn25z" type="text" spellcheck="false" placeholder="e.g. default"/></div> <div class="control-group control-group--wide svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-endpoint">Endpoint</label> <input id="d-llm-endpoint" class="control-input svelte-1gmn25z" type="url" spellcheck="false" placeholder="https://api.openai.com/v1/chat/completions"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-model">Model</label> <input id="d-llm-model" class="control-input svelte-1gmn25z" type="text" spellcheck="false" placeholder="gpt-4o-mini"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-provider">Provider (label)</label> <input id="d-llm-provider" class="control-input svelte-1gmn25z" type="text" spellcheck="false" placeholder="openai"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-apikey">API Key</label> <!></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-temperature">Temperature (0–2)</label> <input id="d-llm-temperature" class="control-input control-input--narrow svelte-1gmn25z" type="number" min="0" max="2" step="0.1"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-maxtokens">Max tokens</label> <input id="d-llm-maxtokens" class="control-input control-input--narrow svelte-1gmn25z" type="number" min="1"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-timeout">Timeout (ms)</label> <input id="d-llm-timeout" class="control-input control-input--narrow svelte-1gmn25z" type="number" min="1"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-concurrency">Concurrency</label> <input id="d-llm-concurrency" class="control-input control-input--narrow svelte-1gmn25z" type="number" min="1"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-contextlength">Context length</label> <input id="d-llm-contextlength" class="control-input control-input--narrow svelte-1gmn25z" type="number" min="1"/></div> <div class="control-group svelte-1gmn25z"><label class="control-label svelte-1gmn25z" for="d-llm-judgemodel">Judge model</label> <input id="d-llm-judgemodel" class="control-input svelte-1gmn25z" type="text" spellcheck="false" placeholder="gpt-4o"/></div></div> <label class="toggle-row svelte-1gmn25z" style="margin-top: var(--s-sp-4)"><input type="checkbox" class="svelte-1gmn25z"/> <span class="toggle-label svelte-1gmn25z">Supports JSON schema</span> <span class="toggle-hint svelte-1gmn25z">Use response_format: json_schema for structured output</span></label> <label class="toggle-row svelte-1gmn25z"><input type="checkbox" class="svelte-1gmn25z"/> <span class="toggle-label svelte-1gmn25z">Structured output capability</span> <span class="toggle-hint svelte-1gmn25z">capabilities.structuredOutput — model reliably returns valid structured JSON</span></label> <label class="toggle-row svelte-1gmn25z"><input type="checkbox" class="svelte-1gmn25z"/> <span class="toggle-label svelte-1gmn25z">Enable thinking</span> <span class="toggle-hint svelte-1gmn25z">Allow extended/thinking tokens for reasoning models</span></label> <div class="control-group control-group--wide svelte-1gmn25z" style="margin-top: var(--s-sp-4)"><label class="control-label svelte-1gmn25z" for="d-llm-extra">Extra params (JSON)</label> <textarea id="d-llm-extra" class="control-input svelte-1gmn25z" rows="3" spellcheck="false"></textarea> <span class="feat-hint svelte-1gmn25z">Merged into the provider request body. Must be a JSON object.</span></div></div> <div class="drawer-footer svelte-1gmn25z"><button class="btn btn-secondary">Cancel</button> <button class="btn btn-primary">Apply</button></div></div>`,1);function Qd(e,t){F(t,!0);let n=L(t,`draft`,15);var r=Zd(),i=j(r),s=x(i,2),c=H(s),l=x(H(c),2);K(c);var u=x(c,2),d=H(u),f=H(d),p=x(H(f),2);P(p),K(f);var m=x(f,2),h=x(H(m),2);P(h),K(m);var g=x(m,2),_=x(H(g),2);P(_),K(g);var v=x(g,2),y=x(H(v),2);P(y),K(v);var S=x(v,2);_d(x(H(S),2),{id:`d-llm-apikey`,placeholder:"${AKM_LLM_API_KEY}",get value(){return n().apiKey},set value(e){n(n().apiKey=e,!0)}}),K(S);var C=x(S,2),w=x(H(C),2);P(w),K(C);var E=x(C,2),D=x(H(E),2);P(D),K(E);var O=x(E,2),A=x(H(O),2);P(A),K(O);var M=x(O,2),N=x(H(M),2);P(N),K(M);var I=x(M,2),R=x(H(I),2);P(R),K(I);var V=x(I,2),U=x(H(V),2);P(U),K(V),K(d);var te=x(d,2),W=H(te);P(W),b(4),K(te);var G=x(te,2),ne=H(G);P(ne),b(4),K(G);var q=x(G,2),J=H(q);P(J),b(4),K(q);var Y=x(q,2),re=x(H(Y),2);ee(re),k(re,`placeholder`,`{ "top_p": 0.9 }`),b(2),K(Y),K(u);var ie=x(u,2),X=H(ie),Z=x(X,2);K(ie),K(s),a(`click`,i,function(...e){t.oncancel?.apply(this,e)}),a(`click`,l,function(...e){t.oncancel?.apply(this,e)}),z(p,()=>n().name,e=>n(n().name=e,!0)),z(h,()=>n().endpoint,e=>n(n().endpoint=e,!0)),z(_,()=>n().model,e=>n(n().model=e,!0)),z(y,()=>n().provider,e=>n(n().provider=e,!0)),z(w,()=>n().temperature,e=>n(n().temperature=e,!0)),z(D,()=>n().maxTokens,e=>n(n().maxTokens=e,!0)),z(A,()=>n().timeoutMs,e=>n(n().timeoutMs=e,!0)),z(N,()=>n().concurrency,e=>n(n().concurrency=e,!0)),z(R,()=>n().contextLength,e=>n(n().contextLength=e,!0)),z(U,()=>n().judgeModel,e=>n(n().judgeModel=e,!0)),T(W,()=>n().supportsJsonSchema,e=>n(n().supportsJsonSchema=e,!0)),T(ne,()=>n().structuredOutput,e=>n(n().structuredOutput=e,!0)),T(J,()=>n().enableThinking,e=>n(n().enableThinking=e,!0)),z(re,()=>n().extraParams,e=>n(n().extraParams=e,!0)),a(`click`,X,function(...e){t.oncancel?.apply(this,e)}),a(`click`,Z,function(...e){t.onapply?.apply(this,e)}),o(e,r),B()}h([`click`]);var $d=f(`<div class="control-group svelte-1evj0pt"><label class="control-label svelte-1evj0pt" for="d-agent-bin">Binary</label> <input id="d-agent-bin" class="control-input svelte-1evj0pt" type="text" spellcheck="false" placeholder="opencode"/></div> <div class="control-group control-group--wide svelte-1evj0pt"><label class="control-label svelte-1evj0pt" for="d-agent-args">Extra args (space-separated)</label> <input id="d-agent-args" class="control-input svelte-1evj0pt" type="text" spellcheck="false" placeholder="run --model gpt-4o"/></div>`,1),ef=f(`<div class="control-group svelte-1evj0pt"><label class="control-label svelte-1evj0pt" for="d-agent-model">Model</label> <input id="d-agent-model" class="control-input svelte-1evj0pt" type="text" spellcheck="false" placeholder="anthropic/claude-sonnet-4-5"/></div> <div class="control-group svelte-1evj0pt"><label class="control-label svelte-1evj0pt" for="d-agent-workspace">Workspace</label> <input id="d-agent-workspace" class="control-input svelte-1evj0pt" type="text" spellcheck="false"/></div>`,1),tf=f(`<div class="drawer-scrim svelte-1evj0pt" role="presentation"></div> <div class="drawer svelte-1evj0pt" role="dialog" aria-modal="true" aria-label="Edit profile"><div class="drawer-header svelte-1evj0pt"><h3 class="drawer-title svelte-1evj0pt">Agent Profile</h3> <button class="drawer-close svelte-1evj0pt" aria-label="Close">✕</button></div> <div class="drawer-body svelte-1evj0pt"><div class="controls controls--grid svelte-1evj0pt"><div class="control-group svelte-1evj0pt"><label class="control-label svelte-1evj0pt" for="d-agent-name">Profile Name</label> <input id="d-agent-name" class="control-input svelte-1evj0pt" type="text" spellcheck="false" placeholder="e.g. opencode"/></div> <div class="control-group svelte-1evj0pt"><label class="control-label svelte-1evj0pt" for="d-agent-platform">Platform</label> <select id="d-agent-platform" class="control-input svelte-1evj0pt"><option>opencode</option><option>claude</option><option>opencode-sdk</option></select></div> <!></div></div> <div class="drawer-footer svelte-1evj0pt"><button class="btn btn-secondary">Cancel</button> <button class="btn btn-primary">Apply</button></div></div>`,1);function nf(e,t){F(t,!0);let n=L(t,`draft`,15);var r=tf(),i=j(r),s=x(i,2),c=H(s),l=x(H(c),2);K(c);var u=x(c,2),f=H(u),p=H(f),m=x(H(p),2);P(m),K(p);var h=x(p,2),g=x(H(h),2),_=H(g);_.value=_.__value=`opencode`;var v=x(_);v.value=v.__value=`claude`;var y=x(v);y.value=y.__value=`opencode-sdk`,K(g),K(h);var b=x(h,2),S=e=>{var t=$d(),r=j(t),i=x(H(r),2);P(i),K(r);var a=x(r,2),s=x(H(a),2);P(s),K(a),z(i,()=>n().bin,e=>n(n().bin=e,!0)),z(s,()=>n().args,e=>n(n().args=e,!0)),o(e,t)},C=e=>{var t=ef(),r=j(t),i=x(H(r),2);P(i),K(r);var a=x(r,2),s=x(H(a),2);P(s),k(s,`placeholder`,"${PWD}"),K(a),z(i,()=>n().model,e=>n(n().model=e,!0)),z(s,()=>n().workspace,e=>n(n().workspace=e,!0)),o(e,t)};d(b,e=>{n().platform===`opencode-sdk`?e(C,-1):e(S)}),K(f),K(u);var w=x(u,2),T=H(w),E=x(T,2);K(w),K(s),a(`click`,i,function(...e){t.oncancel?.apply(this,e)}),a(`click`,l,function(...e){t.oncancel?.apply(this,e)}),z(m,()=>n().name,e=>n(n().name=e,!0)),G(g,()=>n().platform,e=>n(n().platform=e,!0)),a(`click`,T,function(...e){t.oncancel?.apply(this,e)}),a(`click`,E,function(...e){t.onapply?.apply(this,e)}),o(e,r),B()}h([`click`]);var rf=[`reflect`,`distill`,`consolidate`,`validation`,`memoryInference`,`graphExtraction`,`extract`,`triage`],af={reflect:`Propose stash updates via self-reflection`,distill:`Quality-judge and distill feedback`,consolidate:`Deduplicate and merge overlapping memories`,validation:`Third-model confidence and staleness scoring`,memoryInference:`Derive structured memories from pending files`,graphExtraction:`Extract entities and relations for graph search`,extract:`Read session logs and queue insight proposals`,triage:`Auto-review and accept/promote queued proposals`},of={reflect:!0,distill:!0,consolidate:!1,validation:!1,memoryInference:!0,graphExtraction:!0,extract:!0,triage:!1};function sf(e){if(typeof e==`number`)return isNaN(e)?void 0:e;let t=parseFloat(e);return e.trim()===``||isNaN(t)?void 0:t}function cf(e){if(typeof e==`number`)return isNaN(e)?void 0:Math.trunc(e);let t=parseInt(e,10);return e.trim()===``||isNaN(t)?void 0:t}function lf(e){return{enabled:e,mode:``,profile:``,timeoutMs:``,allowedTypes:``,qualityGate:``,contradictionDetection:``,defaultSince:``,maxTotalChars:``,maxChunkSize:``,applyMode:``,policy:``,maxAcceptsPerRun:``,maxDiffLines:``,rejectEmpty:!1,judgment:{mode:``,profile:``,timeoutMs:``},rest:{}}}var uf=e=>typeof e==`object`&&e&&`enabled`in e?e.enabled?`on`:`off`:``,df=new Set([`enabled`,`mode`,`profile`,`timeoutMs`,`allowedTypes`,`qualityGate`,`contradictionDetection`,`defaultSince`,`maxTotalChars`,`maxChunkSize`,`applyMode`,`policy`,`maxAcceptsPerRun`,`maxDiffLines`,`rejectEmpty`,`judgment`]);function ff(e,t){let n=lf(t);if(typeof e==`boolean`)return n.enabled=e,n;if(typeof e!=`object`||!e||Array.isArray(e))return n;let r=e;if(typeof r.enabled==`boolean`&&(n.enabled=r.enabled),n.mode=r.mode??``,n.profile=r.profile??``,n.timeoutMs=r.timeoutMs==null?``:String(r.timeoutMs),n.allowedTypes=Array.isArray(r.allowedTypes)?r.allowedTypes.join(`, `):``,n.qualityGate=uf(r.qualityGate),n.contradictionDetection=uf(r.contradictionDetection),n.defaultSince=r.defaultSince??``,n.maxTotalChars=r.maxTotalChars==null?``:String(r.maxTotalChars),n.maxChunkSize=r.maxChunkSize==null?``:String(r.maxChunkSize),n.applyMode=r.applyMode??``,n.policy=r.policy??``,n.maxAcceptsPerRun=r.maxAcceptsPerRun==null?``:String(r.maxAcceptsPerRun),n.maxDiffLines=r.maxDiffLines==null?``:String(r.maxDiffLines),n.rejectEmpty=r.rejectEmpty===!0,typeof r.judgment==`object`&&r.judgment!==null){let e=r.judgment;n.judgment={mode:e.mode??``,profile:e.profile??``,timeoutMs:e.timeoutMs==null?``:String(e.timeoutMs)}}for(let[e,t]of Object.entries(r))df.has(e)||(n.rest[e]=t);return n}function pf(e){let t={...e.rest,enabled:e.enabled};e.mode&&(t.mode=e.mode),e.profile&&(t.profile=e.profile),e.timeoutMs!==``&&(t.timeoutMs=parseInt(e.timeoutMs,10));let n=e.allowedTypes.split(`,`).map(e=>e.trim()).filter(Boolean);n.length&&(t.allowedTypes=n),e.qualityGate&&(t.qualityGate={enabled:e.qualityGate===`on`}),e.contradictionDetection&&(t.contradictionDetection={enabled:e.contradictionDetection===`on`}),e.defaultSince&&(t.defaultSince=e.defaultSince);let r=cf(e.maxTotalChars);r!==void 0&&(t.maxTotalChars=r);let i=cf(e.maxChunkSize);i!==void 0&&(t.maxChunkSize=i),e.applyMode&&(t.applyMode=e.applyMode),e.policy&&(t.policy=e.policy);let a=cf(e.maxAcceptsPerRun);a!==void 0&&(t.maxAcceptsPerRun=a);let o=cf(e.maxDiffLines);o!==void 0&&(t.maxDiffLines=o),e.rejectEmpty&&(t.rejectEmpty=!0);let s={};return e.judgment.mode&&(s.mode=e.judgment.mode),e.judgment.profile&&(s.profile=e.judgment.profile),e.judgment.timeoutMs!==``&&(s.timeoutMs=parseInt(e.judgment.timeoutMs,10)),Object.keys(s).length&&(t.judgment=s),t}var mf=f(`<option></option>`),hf=f(`<label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Quality gate</span> <select class="control-input svelte-1ndbe78"><option>Default</option><option>Enabled</option><option>Disabled</option></select></label>`),gf=f(`<label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Contradiction detection</span> <select class="control-input svelte-1ndbe78"><option>Default</option><option>Enabled</option><option>Disabled</option></select></label>`),_f=f(`<label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Default since</span> <input class="control-input svelte-1ndbe78" type="text" spellcheck="false" placeholder="e.g. 7d, 2026-01-01"/></label> <label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Max total chars</span> <input class="control-input control-input--narrow svelte-1ndbe78" type="number" min="1"/></label> <label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Max chunk size (1–50)</span> <input class="control-input control-input--narrow svelte-1ndbe78" type="number" min="1" max="50"/></label>`,1),vf=f(`<label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Apply mode</span> <select class="control-input svelte-1ndbe78"><option>Default</option><option>Queue</option><option>Promote</option></select></label> <label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Policy</span> <input class="control-input svelte-1ndbe78" type="text" spellcheck="false" placeholder="policy name/ref"/></label> <label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Max accepts per run</span> <input class="control-input control-input--narrow svelte-1ndbe78" type="number" min="1"/></label> <label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Max diff lines</span> <input class="control-input control-input--narrow svelte-1ndbe78" type="number" min="1"/></label> <label class="adv-field adv-field--check svelte-1ndbe78"><input type="checkbox" class="svelte-1ndbe78"/> <span class="svelte-1ndbe78">Reject empty diffs</span></label> <div class="adv-field adv-field--wide svelte-1ndbe78"><span class="adv-sublabel svelte-1ndbe78">Judgment (overrides for the accept/reject decision)</span> <div class="proc-adv-grid svelte-1ndbe78"><label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Mode</span> <select class="control-input svelte-1ndbe78"><option>Default</option><option>LLM</option><option>Agent</option><option>SDK</option></select></label> <label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Profile</span> <input class="control-input svelte-1ndbe78" type="text" spellcheck="false" list="llm-profiles-list"/></label> <label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Timeout (ms)</span> <input class="control-input control-input--narrow svelte-1ndbe78" type="number" min="1"/></label></div></div>`,1),yf=f(`<div class="proc-card svelte-1ndbe78"><div class="proc-head svelte-1ndbe78"><input type="checkbox" class="svelte-1ndbe78"/> <div class="proc-name svelte-1ndbe78"><span class="feat-name svelte-1ndbe78"> </span><span class="feat-hint svelte-1ndbe78"> </span></div> <select class="control-input svelte-1ndbe78"><option>Default mode</option><option>LLM (direct call)</option><option>Agent (subprocess)</option><option>SDK (programmatic)</option></select> <input class="control-input svelte-1ndbe78" type="text" spellcheck="false" list="llm-profiles-list" placeholder="— default profile —"/> <input class="control-input control-input--narrow svelte-1ndbe78" type="number" min="1" placeholder="timeout ms"/></div> <details class="proc-adv svelte-1ndbe78"><summary class="svelte-1ndbe78">Advanced</summary> <div class="proc-adv-grid svelte-1ndbe78"><label class="adv-field svelte-1ndbe78"><span class="svelte-1ndbe78">Allowed types (comma-separated)</span> <input class="control-input svelte-1ndbe78" type="text" spellcheck="false" placeholder="skill, knowledge, …"/></label> <!> <!> <!> <!></div></details></div>`),bf=f(`<datalist id="llm-profiles-list"></datalist> <div class="drawer-scrim svelte-1ndbe78" role="presentation"></div> <div class="drawer svelte-1ndbe78" role="dialog" aria-modal="true" aria-label="Edit profile"><div class="drawer-header svelte-1ndbe78"><h3 class="drawer-title svelte-1ndbe78">Improve Profile</h3> <button class="drawer-close svelte-1ndbe78" aria-label="Close">✕</button></div> <div class="drawer-body svelte-1ndbe78"><div class="controls controls--grid svelte-1ndbe78"><div class="control-group svelte-1ndbe78"><label class="control-label svelte-1ndbe78" for="d-imp-name">Profile Name</label> <input id="d-imp-name" class="control-input svelte-1ndbe78" type="text" spellcheck="false" placeholder="e.g. default"/></div> <div class="control-group control-group--wide svelte-1ndbe78"><label class="control-label svelte-1ndbe78" for="d-imp-desc">Description</label> <input id="d-imp-desc" class="control-input svelte-1ndbe78" type="text" spellcheck="false" placeholder="Optional description"/></div> <div class="control-group svelte-1ndbe78"><label class="control-label svelte-1ndbe78" for="d-imp-limit">Max proposals per run</label> <input id="d-imp-limit" class="control-input control-input--narrow svelte-1ndbe78" type="number" min="1" max="100"/></div> <div class="control-group svelte-1ndbe78"><label class="control-label svelte-1ndbe78" for="d-imp-autoacc">Auto-accept threshold (0 = manual)</label> <input id="d-imp-autoacc" class="control-input control-input--narrow svelte-1ndbe78" type="number" min="0" max="1" step="0.05"/></div></div> <div class="proc-list svelte-1ndbe78"></div> <div class="controls controls--grid svelte-1ndbe78"><div class="control-group svelte-1ndbe78"><label class="control-label svelte-1ndbe78" for="d-imp-sync">Git sync after run</label> <select id="d-imp-sync" class="control-input svelte-1ndbe78"><option>Default</option><option>Enabled</option><option>Disabled</option></select></div> <div class="control-group svelte-1ndbe78"><label class="control-label svelte-1ndbe78" for="d-imp-syncpush">Push to remote</label> <select id="d-imp-syncpush" class="control-input svelte-1ndbe78"><option>Default</option><option>Enabled</option><option>Disabled</option></select></div> <div class="control-group control-group--wide svelte-1ndbe78"><label class="control-label svelte-1ndbe78" for="d-imp-syncmsg">Commit message</label> <input id="d-imp-syncmsg" class="control-input svelte-1ndbe78" type="text" spellcheck="false" placeholder="Optional commit message"/></div></div></div> <div class="drawer-footer svelte-1ndbe78"><button class="btn btn-secondary">Cancel</button> <button class="btn btn-primary">Apply</button></div></div>`,1);function xf(e,t){F(t,!0);let n=L(t,`draft`,15);var s=bf(),l=j(s);M(l,21,()=>t.llmProfileNames,c,(e,t)=>{var n=mf(),r={};v(()=>{r!==(r=i(t))&&(n.value=(n.__value=i(t))??``)}),o(e,n)}),K(l);var u=x(l,2),f=x(u,2),p=H(f),m=x(H(p),2);K(p);var h=x(p,2),g=H(h),_=H(g),y=x(H(_),2);P(y),K(_);var S=x(_,2),C=x(H(S),2);P(C),K(S);var w=x(S,2),E=x(H(w),2);P(E),K(w);var D=x(w,2),O=x(H(D),2);P(O),K(D),K(g);var A=x(g,2);M(A,20,()=>rf,e=>e,(e,t)=>{let a=W(()=>n().processes[t]);var s=yf(),c=H(s),l=H(c);P(l);var u=x(l,2),f=H(u),p=H(f,!0);K(f);var m=x(f),h=H(m,!0);K(m),K(u);var g=x(u,2),_=H(g);_.value=_.__value=``;var y=x(_);y.value=y.__value=`llm`;var S=x(y);S.value=S.__value=`agent`;var C=x(S);C.value=C.__value=`sdk`,K(g);var w=x(g,2);P(w);var E=x(w,2);P(E),K(c);var D=x(c,2),O=x(H(D),2),A=H(O),M=x(H(A),2);P(M),K(A);var N=x(A,2),F=e=>{var t=hf(),n=x(H(t),2),r=H(n);r.value=r.__value=``;var s=x(r);s.value=s.__value=`on`;var c=x(s);c.value=c.__value=`off`,K(n),K(t),G(n,()=>i(a).qualityGate,e=>i(a).qualityGate=e),o(e,t)};d(N,e=>{(t===`reflect`||t===`distill`)&&e(F)});var I=x(N,2),L=e=>{var t=gf(),n=x(H(t),2),r=H(n);r.value=r.__value=``;var s=x(r);s.value=s.__value=`on`;var c=x(s);c.value=c.__value=`off`,K(n),K(t),G(n,()=>i(a).contradictionDetection,e=>i(a).contradictionDetection=e),o(e,t)};d(I,e=>{t===`consolidate`&&e(L)});var R=x(I,2),B=e=>{var t=_f(),n=j(t),r=x(H(n),2);P(r),K(n);var s=x(n,2),c=x(H(s),2);P(c),K(s);var l=x(s,2),u=x(H(l),2);P(u),K(l),z(r,()=>i(a).defaultSince,e=>i(a).defaultSince=e),z(c,()=>i(a).maxTotalChars,e=>i(a).maxTotalChars=e),z(u,()=>i(a).maxChunkSize,e=>i(a).maxChunkSize=e),o(e,t)};d(R,e=>{t===`extract`&&e(B)});var V=x(R,2),U=e=>{var t=vf(),n=j(t),r=x(H(n),2),s=H(r);s.value=s.__value=``;var c=x(s);c.value=c.__value=`queue`;var l=x(c);l.value=l.__value=`promote`,K(r),K(n);var u=x(n,2),d=x(H(u),2);P(d),K(u);var f=x(u,2),p=x(H(f),2);P(p),K(f);var m=x(f,2),h=x(H(m),2);P(h),K(m);var g=x(m,2),_=H(g);P(_),b(2),K(g);var v=x(g,2),y=x(H(v),2),S=H(y),C=x(H(S),2),w=H(C);w.value=w.__value=``;var E=x(w);E.value=E.__value=`llm`;var D=x(E);D.value=D.__value=`agent`;var O=x(D);O.value=O.__value=`sdk`,K(C),K(S);var k=x(S,2),A=x(H(k),2);P(A),K(k);var M=x(k,2),N=x(H(M),2);P(N),K(M),K(y),K(v),G(r,()=>i(a).applyMode,e=>i(a).applyMode=e),z(d,()=>i(a).policy,e=>i(a).policy=e),z(p,()=>i(a).maxAcceptsPerRun,e=>i(a).maxAcceptsPerRun=e),z(h,()=>i(a).maxDiffLines,e=>i(a).maxDiffLines=e),T(_,()=>i(a).rejectEmpty,e=>i(a).rejectEmpty=e),G(C,()=>i(a).judgment.mode,e=>i(a).judgment.mode=e),z(A,()=>i(a).judgment.profile,e=>i(a).judgment.profile=e),z(N,()=>i(a).judgment.timeoutMs,e=>i(a).judgment.timeoutMs=e),o(e,t)};d(V,e=>{t===`triage`&&e(U)}),K(O),K(D),K(s),v(()=>{k(l,`aria-label`,`${t??``} enabled`),r(p,t),r(h,af[t]),k(g,`aria-label`,`${t??``} mode`),k(w,`aria-label`,`${t??``} profile`),k(E,`aria-label`,`${t??``} timeout`)}),T(l,()=>i(a).enabled,e=>i(a).enabled=e),G(g,()=>i(a).mode,e=>i(a).mode=e),z(w,()=>i(a).profile,e=>i(a).profile=e),z(E,()=>i(a).timeoutMs,e=>i(a).timeoutMs=e),z(M,()=>i(a).allowedTypes,e=>i(a).allowedTypes=e),o(e,s)}),K(A);var N=x(A,2),I=H(N),R=x(H(I),2),V=H(R);V.value=V.__value=``;var U=x(V);U.value=U.__value=`on`;var ee=x(U);ee.value=ee.__value=`off`,K(R),K(I);var te=x(I,2),ne=x(H(te),2),q=H(ne);q.value=q.__value=``;var J=x(q);J.value=J.__value=`on`;var Y=x(J);Y.value=Y.__value=`off`,K(ne),K(te);var re=x(te,2),ie=x(H(re),2);P(ie),K(re),K(N),K(h);var X=x(h,2),Z=H(X),ae=x(Z,2);K(X),K(f),a(`click`,u,function(...e){t.oncancel?.apply(this,e)}),a(`click`,m,function(...e){t.oncancel?.apply(this,e)}),z(y,()=>n().name,e=>n(n().name=e,!0)),z(C,()=>n().description,e=>n(n().description=e,!0)),z(E,()=>n().limit,e=>n(n().limit=e,!0)),z(O,()=>n().autoAccept,e=>n(n().autoAccept=e,!0)),G(R,()=>n().syncEnabled,e=>n(n().syncEnabled=e,!0)),G(ne,()=>n().syncPush,e=>n(n().syncPush=e,!0)),z(ie,()=>n().syncMessage,e=>n(n().syncMessage=e,!0)),a(`click`,Z,function(...e){t.oncancel?.apply(this,e)}),a(`click`,ae,function(...e){t.onapply?.apply(this,e)}),o(e,s),B()}h([`click`]);var Sf=f(`<div class="error-banner svelte-19wb2va"><span> </span></div>`),Cf=f(`<!> <p class="section-note section-note--lead svelte-19wb2va">The AI services your assistant uses to build and search its memory — the language models that organize memories, the embedding provider for semantic search, and the maintenance pipeline.</p> <!> <!> <!> <!>`,1),wf=f(`<div class="panel" role="tabpanel"><div class="panel-header"><div><h2 class="svelte-19wb2va">Knowledge</h2> <p class="panel-header-sub svelte-19wb2va">Memory · LLM · embedding config</p></div> <div class="panel-header-actions svelte-19wb2va"><button class="btn btn-secondary btn-sm"><!> Refresh</button> <button class="btn btn-secondary btn-sm"><!> Re-index</button> <button class="btn btn-primary btn-sm"><!> Save</button></div></div> <!> <div class="panel-body svelte-19wb2va"><div class="k-tabs svelte-19wb2va" role="tablist" aria-label="Knowledge sections"><button role="tab">AI Services</button> <button role="tab">Behavior</button> <button role="tab">Health Report</button></div> <!> <!> <!></div> <!></div>`);function Tf(e,t){F(t,!0);let n=w(!1),s=w(!1),c=w(!1),l=w(!1),u=w(!1),f=w(``),m=w(R([])),h=w(``),g=w(R([])),_=w(``),y=w(R([])),S=w(``),C=w(``),T=w(``),E=w(``),D=w(``),O=w(1536),M=w(``),N=w(``),P=w(``),I=w(``),L=w(``),z=w(`auto`),V=w(`json`),ee=w(`brief`),te=w(``),G=w(``),ne=w(``),q=w(``),J=w(``),Y=w(``),re=w(``),ie=w(``),X=w(`ai-services`),Z=w(null),ae=w(null),oe=w(null),se=w(null),ce=W(()=>i(m).map(e=>e.name).filter(e=>e));function le(){return{id:crypto.randomUUID(),name:``,endpoint:``,model:``,provider:``,apiKey:``,showApiKey:!1,temperature:``,maxTokens:``,timeoutMs:``,concurrency:``,contextLength:``,judgeModel:``,supportsJsonSchema:!1,enableThinking:!1,structuredOutput:!1,extraParams:``}}function ue(){return{id:crypto.randomUUID(),name:``,platform:`opencode`,bin:``,args:``,workspace:``,model:``}}function de(){let e={};for(let t of rf)e[t]=lf(of[t]);return{id:crypto.randomUUID(),name:``,description:``,limit:25,autoAccept:0,processes:e,syncEnabled:``,syncPush:``,syncMessage:``}}function fe(e){return{endpoint:e.endpoint??``,model:e.model??``,provider:e.provider??``,apiKey:e.apiKey??``,showApiKey:!1,temperature:e.temperature==null?``:String(e.temperature),maxTokens:e.maxTokens==null?``:String(e.maxTokens),timeoutMs:e.timeoutMs==null?``:String(e.timeoutMs),concurrency:e.concurrency==null?``:String(e.concurrency),contextLength:e.contextLength==null?``:String(e.contextLength),judgeModel:e.judgeModel??``,supportsJsonSchema:e.supportsJsonSchema??!1,enableThinking:e.enableThinking??!1,structuredOutput:e.capabilities?.structuredOutput??!1,extraParams:e.extraParams&&typeof e.extraParams==`object`?JSON.stringify(e.extraParams,null,2):``}}function pe(e){let t={endpoint:e.endpoint,model:e.model};e.provider&&(t.provider=e.provider),e.apiKey&&(t.apiKey=e.apiKey);let n=sf(e.temperature);n!==void 0&&(t.temperature=n);let r=cf(e.maxTokens);r!==void 0&&(t.maxTokens=r);let i=cf(e.timeoutMs);i!==void 0&&(t.timeoutMs=i);let a=cf(e.concurrency);a!==void 0&&(t.concurrency=a);let o=cf(e.contextLength);if(o!==void 0&&(t.contextLength=o),e.judgeModel&&(t.judgeModel=e.judgeModel),e.supportsJsonSchema&&(t.supportsJsonSchema=!0),e.enableThinking&&(t.enableThinking=!0),e.structuredOutput&&(t.capabilities={structuredOutput:!0}),e.extraParams.trim()){let n;try{n=JSON.parse(e.extraParams)}catch{throw Error(`LLM profile "${e.name}": extraParams must be valid JSON`)}if(typeof n!=`object`||!n||Array.isArray(n))throw Error(`LLM profile "${e.name}": extraParams must be a JSON object`);t.extraParams=n}return t}function he(e,t){let n=t.processes??{},r={};for(let e of rf)r[e]=ff(n[e],of[e]);let i=t.sync;return{id:crypto.randomUUID(),name:e,description:t.description??``,limit:typeof t.limit==`number`?t.limit:25,autoAccept:typeof t.autoAccept==`number`?t.autoAccept:0,processes:r,syncEnabled:uf(i?{enabled:i.enabled}:void 0),syncPush:uf(i?{enabled:i.push}:void 0),syncMessage:i?.message??``}}function ge(e){U(ae,{...e},!0),U(Z,`llm`)}function _e(e){U(oe,{...e},!0),U(Z,`agent`)}function ve(e){let t={};for(let n of rf){let r=e.processes[n];t[n]={...r,judgment:{...r.judgment},rest:{...r.rest}}}U(se,{...e,processes:t},!0),U(Z,`improve`)}function ye(){if(i(Z)===`llm`&&i(ae)){let e={...i(ae)},t=i(m).findIndex(t=>t.id===e.id),n=t>=0?i(m)[t].name:``;U(m,t>=0?i(m).map((n,r)=>r===t?e:n):[...i(m),e],!0),i(h)===n&&U(h,e.name,!0)}else if(i(Z)===`agent`&&i(oe)){let e={...i(oe)},t=i(g).findIndex(t=>t.id===e.id),n=t>=0?i(g)[t].name:``;U(g,t>=0?i(g).map((n,r)=>r===t?e:n):[...i(g),e],!0),i(_)===n&&U(_,e.name,!0)}else if(i(Z)===`improve`&&i(se)){let e={...i(se),processes:{...i(se).processes}},t=i(y).findIndex(t=>t.id===e.id),n=t>=0?i(y)[t].name:``;U(y,t>=0?i(y).map((n,r)=>r===t?e:n):[...i(y),e],!0),i(S)===n&&U(S,e.name,!0)}be()}function be(){U(Z,null),U(ae,null),U(oe,null),U(se,null)}function xe(e,t){if(e===`llm`){let e=i(m).find(e=>e.id===t)?.name??``;i(h)===e&&U(h,``),U(m,i(m).filter(e=>e.id!==t),!0)}else if(e===`agent`){let e=i(g).find(e=>e.id===t)?.name??``;i(_)===e&&U(_,``),U(g,i(g).filter(e=>e.id!==t),!0)}else{let e=i(y).find(e=>e.id===t)?.name??``;i(S)===e&&U(S,``),U(y,i(y).filter(e=>e.id!==t),!0)}i(Z)===e&&be()}async function Se(){U(n,!0),U(f,``);try{let{config:e}=await me(),t=e.profiles,n=t?.llm;U(m,n?Object.entries(n).map(([e,t])=>({id:crypto.randomUUID(),name:e,...fe(t)})):[],!0);let r=t?.agent;U(g,r?Object.entries(r).map(([e,t])=>{let n=t;return{id:crypto.randomUUID(),name:e,platform:n.platform??`opencode`,bin:n.bin??``,args:Array.isArray(n.args)?n.args.join(` `):``,workspace:n.workspace??``,model:n.model??``}}):[],!0);let i=t?.improve;U(y,i?Object.entries(i).map(([e,t])=>he(e,t)):[],!0);let a=e.defaults;U(h,a?.llm??``,!0),U(_,a?.agent??``,!0),U(S,a?.improve??``,!0);let o=e.embedding;U(C,o?.endpoint??``,!0),U(T,o?.model??``,!0),U(E,o?.provider??``,!0),U(D,o?.apiKey??``,!0),U(O,typeof o?.dimension==`number`?o.dimension:1536,!0),U(M,o?.localModel??``,!0),U(N,o?.batchSize==null?``:String(o.batchSize),!0),U(P,o?.chunkSize==null?``:String(o.chunkSize),!0),U(I,o?.contextLength==null?``:String(o.contextLength),!0);let s=o?.ollamaOptions;U(L,s?.num_ctx==null?``:String(s.num_ctx),!0),U(z,e.semanticSearchMode??`auto`,!0);let c=e.output;U(V,c?.format??`json`,!0),U(ee,c?.detail??`brief`,!0);let l=e=>typeof e==`number`?String(e):``,u=e=>e&&typeof e==`object`&&`enabled`in e?e.enabled?`on`:`off`:``,d=e.improve,f=d?.utilityDecay;U(te,l(f?.halfLifeDays),!0),U(G,l(f?.feedbackStabilityBoost),!0),U(ne,l(d?.eventRetentionDays),!0);let p=e.search;U(q,l(p?.minScore),!0),U(J,u(p?.curateRerank),!0);let v=e.feedback;U(Y,typeof v?.requireReason==`boolean`?v.requireReason?`on`:`off`:``,!0),U(re,Array.isArray(v?.allowedFailureModes)?v.allowedFailureModes.join(`, `):``,!0),U(ie,e.index&&typeof e.index==`object`?JSON.stringify(e.index,null,2):``,!0)}catch(e){U(f,e instanceof Error?e.message:`Failed to load AKM config.`,!0)}finally{U(n,!1)}}async function Ce(){U(s,!0),U(f,``);try{let e={};for(let t of i(m))t.name.trim()&&(e[t.name.trim()]=pe(t));let t={};for(let e of i(g)){if(!e.name.trim())continue;let n={platform:e.platform};e.bin&&(n.bin=e.bin),e.args&&(n.args=e.args.split(/\s+/).filter(Boolean)),e.workspace&&(n.workspace=e.workspace),e.model&&(n.model=e.model),t[e.name.trim()]=n}let n={};for(let e of i(y)){if(!e.name.trim())continue;let t={};for(let n of rf)t[n]=pf(e.processes[n]);let r={limit:e.limit,processes:t};e.description&&(r.description=e.description),e.autoAccept>0&&(r.autoAccept=e.autoAccept);let i={};e.syncEnabled&&(i.enabled=e.syncEnabled===`on`),e.syncPush&&(i.push=e.syncPush===`on`),e.syncMessage.trim()&&(i.message=e.syncMessage.trim()),Object.keys(i).length&&(r.sync=i),n[e.name.trim()]=r}let r={endpoint:i(C),model:i(T),dimension:i(O)};i(E)&&(r.provider=i(E)),i(D)&&(r.apiKey=i(D)),i(M)&&(r.localModel=i(M));let a=cf(i(N));a!==void 0&&(r.batchSize=a);let o=cf(i(P));o!==void 0&&(r.chunkSize=o);let s=cf(i(I));s!==void 0&&(r.contextLength=s);let c=cf(i(L));c!==void 0&&(r.ollamaOptions={num_ctx:c});let l={};i(h)&&(l.llm=i(h)),i(_)&&(l.agent=i(_)),i(S)&&(l.improve=i(S));let u={},d={},f=sf(i(te));f!==void 0&&(d.halfLifeDays=f);let p=sf(i(G));p!==void 0&&(d.feedbackStabilityBoost=p),Object.keys(d).length&&(u.utilityDecay=d);let v=sf(i(ne));v!==void 0&&(u.eventRetentionDays=v);let b={},x=sf(i(q));x!==void 0&&(b.minScore=x),i(J)&&(b.curateRerank={enabled:i(J)===`on`});let w={};i(Y)&&(w.requireReason=i(Y)===`on`);let k=i(re).split(`,`).map(e=>e.trim()).filter(Boolean);k.length&&(w.allowedFailureModes=k);let A;if(i(ie).trim()){let e;try{e=JSON.parse(i(ie))}catch{throw Error(`Index config must be valid JSON`)}if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Index config must be a JSON object keyed by pass name`);A=e}await Be({profiles:{llm:e,agent:t,improve:n},defaults:l,embedding:r,semanticSearchMode:i(z),output:{format:i(V),detail:i(ee)},...Object.keys(u).length?{improve:u}:{},...Object.keys(b).length?{search:b}:{},...Object.keys(w).length?{feedback:w}:{},...A===void 0?{}:{index:A}}),Q.push(`success`,`AKM config saved.`)}catch(e){let t=e instanceof Error?e.message:`Failed to save AKM config.`;Q.push(`error`,t)}finally{U(s,!1)}}async function we(){U(c,!0),U(f,``);try{let e=await qe();U(C,e.endpoint,!0),U(T,e.model,!0),U(E,e.provider,!0),U(O,e.dimension,!0),Q.push(`success`,e.message)}catch(e){let t=e instanceof Error?e.message:`Failed to detect embedding settings.`;Q.push(`error`,t)}finally{U(c,!1)}}async function Te(){U(l,!0),U(f,``);try{let e=i(C).trim(),t=i(T).trim(),n=i(E).trim();if(!e||!t){let r=await qe();e=r.endpoint,t=r.model,n=r.provider,U(C,r.endpoint,!0),U(T,r.model,!0),U(E,r.provider,!0),U(O,r.dimension,!0)}let r=await Re({endpoint:e,model:t,provider:n,apiKey:i(D),dimension:i(O)});U(O,r.dimension,!0),Q.push(`success`,r.message)}catch(e){let t=e instanceof Error?e.message:`Failed to test embedding settings.`;Q.push(`error`,t)}finally{U(l,!1)}}async function Ee(){U(u,!0);try{let e=await ke();Q.push(`success`,e.message)}catch(e){let t=e instanceof Error?e.message:`Failed to rebuild the AKM index.`;Q.push(`error`,t)}finally{U(u,!1)}}A(()=>{t.tokenStored&&Se()});var De=wf(),Oe=H(De),Ae=x(H(Oe),2),je=H(Ae),Me=H(je),Ne=e=>{$(e,{})};d(Me,e=>{i(n)&&e(Ne)}),b(),K(je);var Pe=x(je,2),Fe=H(Pe),Ie=e=>{$(e,{})};d(Fe,e=>{i(u)&&e(Ie)}),b(),K(Pe);var Le=x(Pe,2),ze=H(Le),Ve=e=>{$(e,{})};d(ze,e=>{i(s)&&e(Ve)}),b(),K(Le),K(Ae),K(Oe);var He=x(Oe,2),Ue=e=>{var t=Sf(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(f))),o(e,t)};d(He,e=>{i(f)&&e(Ue)});var We=x(He,2),Ge=H(We),Ke=H(Ge);let Je;var Ye=x(Ke,2);let Xe;var Ze=x(Ye,2);let Qe;K(Ge);var $e=x(Ge,2),et=e=>{var r=Cf(),a=j(r);{let e=W(()=>i(n)||i(s)||i(c)||i(l)||i(u)||!t.tokenStored);hd(a,{get disabled(){return i(e)}})}var d=x(a,4);{let e=W(()=>i(n)||i(s));Rd(d,{get disabled(){return i(e)},onedit:e=>ge(e),onadd:()=>{U(ae,le(),!0),U(Z,`llm`)},onremove:e=>xe(`llm`,e),get profiles(){return i(m)},set profiles(e){U(m,e,!0)},get defaultName(){return i(h)},set defaultName(e){U(h,e,!0)}})}var f=x(d,2);{let e=W(()=>i(n)||i(s));Ud(f,{get disabled(){return i(e)},onedit:e=>_e(e),onadd:()=>{U(oe,ue(),!0),U(Z,`agent`)},onremove:e=>xe(`agent`,e),get profiles(){return i(g)},set profiles(e){U(g,e,!0)},get defaultName(){return i(_)},set defaultName(e){U(_,e,!0)}})}var p=x(f,2);{let e=W(()=>i(n)||i(s));Xd(p,{get disabled(){return i(e)},onedit:e=>ve(e),onadd:()=>{U(se,de(),!0),U(Z,`improve`)},onremove:e=>xe(`improve`,e),get profiles(){return i(y)},set profiles(e){U(y,e,!0)},get defaultName(){return i(S)},set defaultName(e){U(S,e,!0)}})}var v=x(p,2);{let e=W(()=>i(n)||i(s)||i(c)||i(l)||i(u));yd(v,{get detecting(){return i(c)},get testing(){return i(l)},ondetect:()=>void we(),ontest:()=>void Te(),get disabled(){return i(e)},get endpoint(){return i(C)},set endpoint(e){U(C,e,!0)},get model(){return i(T)},set model(e){U(T,e,!0)},get provider(){return i(E)},set provider(e){U(E,e,!0)},get apiKey(){return i(D)},set apiKey(e){U(D,e,!0)},get dimension(){return i(O)},set dimension(e){U(O,e,!0)},get localModel(){return i(M)},set localModel(e){U(M,e,!0)},get batchSize(){return i(N)},set batchSize(e){U(N,e,!0)},get chunkSize(){return i(P)},set chunkSize(e){U(P,e,!0)},get contextLength(){return i(I)},set contextLength(e){U(I,e,!0)},get ollamaNumCtx(){return i(L)},set ollamaNumCtx(e){U(L,e,!0)}})}o(e,r)};d($e,e=>{i(X)===`ai-services`&&e(et)});var tt=x($e,2),nt=e=>{{let t=W(()=>i(n)||i(s));xd(e,{get disabled(){return i(t)},get semanticSearchMode(){return i(z)},set semanticSearchMode(e){U(z,e,!0)},get outputFormat(){return i(V)},set outputFormat(e){U(V,e,!0)},get outputDetail(){return i(ee)},set outputDetail(e){U(ee,e,!0)},get imHalfLife(){return i(te)},set imHalfLife(e){U(te,e,!0)},get imFeedbackBoost(){return i(G)},set imFeedbackBoost(e){U(G,e,!0)},get imEventRetention(){return i(ne)},set imEventRetention(e){U(ne,e,!0)},get searchMinScore(){return i(q)},set searchMinScore(e){U(q,e,!0)},get searchCurateRerank(){return i(J)},set searchCurateRerank(e){U(J,e,!0)},get fbRequireReason(){return i(Y)},set fbRequireReason(e){U(Y,e,!0)},get fbFailureModes(){return i(re)},set fbFailureModes(e){U(re,e,!0)},get indexJson(){return i(ie)},set indexJson(e){U(ie,e,!0)}})}};d(tt,e=>{i(X)===`behavior`&&e(nt)});var rt=x(tt,2),it=e=>{{let r=W(()=>i(n)||i(s)||i(c)||i(l)||i(u)||!t.tokenStored);Od(e,{get disabled(){return i(r)}})}};d(rt,e=>{i(X)===`health-report`&&e(it)}),K(We);var at=x(We,2),ot=e=>{Qd(e,{oncancel:be,onapply:ye,get draft(){return i(ae)},set draft(e){U(ae,e,!0)}})},st=e=>{nf(e,{oncancel:be,onapply:ye,get draft(){return i(oe)},set draft(e){U(oe,e,!0)}})},ct=e=>{xf(e,{get llmProfileNames(){return i(ce)},oncancel:be,onapply:ye,get draft(){return i(se)},set draft(e){U(se,e,!0)}})};d(at,e=>{i(Z)===`llm`&&i(ae)?e(ot):i(Z)===`agent`&&i(oe)?e(st,1):i(Z)===`improve`&&i(se)&&e(ct,2)}),K(De),v(()=>{je.disabled=i(n)||i(s)||i(c)||i(l)||i(u)||!t.tokenStored,Pe.disabled=i(n)||i(s)||i(c)||i(l)||i(u)||!t.tokenStored,Le.disabled=i(n)||i(s)||i(c)||i(l)||i(u)||!t.tokenStored,Je=p(Ke,1,`k-tab svelte-19wb2va`,null,Je,{"k-tab--active":i(X)===`ai-services`}),k(Ke,`aria-selected`,i(X)===`ai-services`),Xe=p(Ye,1,`k-tab svelte-19wb2va`,null,Xe,{"k-tab--active":i(X)===`behavior`}),k(Ye,`aria-selected`,i(X)===`behavior`),Qe=p(Ze,1,`k-tab svelte-19wb2va`,null,Qe,{"k-tab--active":i(X)===`health-report`}),k(Ze,`aria-selected`,i(X)===`health-report`)}),a(`click`,je,()=>void Se()),a(`click`,Pe,()=>void Ee()),a(`click`,Le,()=>void Ce()),a(`click`,Ke,()=>{U(X,`ai-services`)}),a(`click`,Ye,()=>{U(X,`behavior`)}),a(`click`,Ze,()=>{U(X,`health-report`)}),o(e,De),B()}h([`click`]);var Ef=f(`<div class="hs-loading svelte-fv9i73"><!> Checking host stash…</div>`),Df=f(`<p class="section-note svelte-fv9i73">Host stash sharing isn't available on this deployment.</p>`),Of=f(`<section class="config-section svelte-fv9i73"><p class="section-note svelte-fv9i73">Mount your personal AKM stash (<code> </code>) into the
125
+ assistant as a readable secondary source. Enabling also imports your host LLM and
126
+ agent connection profiles so the assistant can use the same providers you have
127
+ configured locally.</p> <div class="controls svelte-fv9i73"><div class="status-row svelte-fv9i73"><span> </span> <code class="host-path svelte-fv9i73"> </code></div> <button class="btn btn-secondary btn-sm"><!> </button> <p class="hint svelte-fv9i73">Takes effect after the next stack restart.</p></div></section>`),kf=f(`<div class="panel" role="tabpanel"><div class="panel-header svelte-fv9i73"><h2 class="svelte-fv9i73">Host knowledge sharing</h2></div> <div class="panel-body"><!></div></div>`);function Af(e,t){F(t,!0);let n=w(null),s=w(!0),c=w(!1);async function l(){U(s,!0);try{U(n,await _e(),!0)}catch{U(n,null)}finally{U(s,!1)}}async function u(){if(!i(c)){U(c,!0);try{if(i(n)?.enabled)U(n,await ve(),!0),Q.push(`success`,`Host stash sharing disabled. Restart the stack to apply.`);else{let e=await ye();U(n,e,!0);let t=e.profilesImported?.length?` Imported host profiles: ${e.profilesImported.join(`, `)}.`:``;Q.push(`success`,`Host stash sharing enabled.${t} Restart the stack to apply.`)}}catch(e){Q.push(`error`,e instanceof Error?e.message:`Failed to update host stash sharing.`)}finally{U(c,!1)}}}A(()=>{t.tokenStored&&l()});var f=kf(),m=x(H(f),2),h=H(m),g=e=>{var t=Ef();$(H(t),{}),b(),K(t),o(e,t)},_=e=>{o(e,Df())},y=e=>{var s=Of(),l=H(s),f=x(H(l)),m=H(f,!0);K(f),b(),K(l);var h=x(l,2),g=H(h),_=H(g),y=H(_,!0);K(_);var S=x(_,2),C=H(S,!0);K(S),K(g);var w=x(g,2),T=H(w),E=e=>{$(e,{})};d(T,e=>{i(c)&&e(E)});var D=x(T);K(w),b(2),K(h),K(s),v(()=>{r(m,i(n).hostStashPath),p(_,1,`badge ${i(n).enabled?`badge-enabled`:`badge-disabled`}`),r(y,i(n).enabled?`Enabled`:`Disabled`),r(C,i(n).hostStashPath),w.disabled=i(c)||!t.tokenStored,r(D,` ${i(n).enabled?`Disable host sharing`:`Enable host sharing`}`)}),a(`click`,w,()=>void u()),o(e,s)};d(h,e=>{i(s)?e(g):i(n)===null?e(_,1):e(y,-1)}),K(m),K(f),o(e,f),B()}h([`click`]);var jf=f(`<p class="profile-single svelte-11ub9pr"> </p>`),Mf=f(`<p class="profile-desc svelte-11ub9pr">Select the profile that matches your hardware. GPU profiles are auto-selected when available.</p>`),Nf=f(`<option> </option>`),Pf=f(`<span class="field-hint svelte-11ub9pr"> </span>`),Ff=f(`<span class="field-hint field-hint--warning svelte-11ub9pr"> </span>`),If=f(`<!> <div class="form-field"><label class="form-label" for="voice-profile">Profile</label> <select id="voice-profile" class="form-input"></select> <!> <!></div>`,1);function Lf(e,t){F(t,!0);let n=L(t,`showDescription`,7),c=W(()=>t.profiles.find(e=>e.id===t.selectedProfile)??t.profiles[0]);n(n()??!0);var l=s(),u=j(l),f=e=>{},p=e=>{var t=jf(),n=H(t);K(t),v(()=>r(n,`Using ${i(c)?.label??i(c)?.id??`selected`??``}.`)),o(e,t)},m=e=>{var s=If(),l=j(s),u=e=>{o(e,Mf())};d(l,e=>{n()&&e(u)});var f=x(l,2),p=x(H(f),2);M(p,21,()=>t.profiles,e=>e.id,(e,t)=>{var n=Nf(),a=H(n);K(n);var s={};v(()=>{n.disabled=i(t).available===!1,k(n,`title`,i(t).available===!1?i(t).reason??`Not available on this host`:void 0),r(a,`${i(t).label??i(t).id??``}${i(t).available===!1?` — unavailable`:``}`),s!==(s=i(t).id)&&(n.value=(n.__value=i(t).id)??``)}),o(e,n)}),K(p);var m;ne(p);var h=x(p,2),g=e=>{var t=Pf(),n=H(t);K(t),v(()=>r(n,`Requires: ${i(c).requires??``}`)),o(e,t)};d(h,e=>{i(c)?.requires&&e(g)});var _=x(h,2),y=e=>{var t=Ff(),n=H(t,!0);K(t),v(()=>r(n,i(c).reason??`This profile is not available on the current host.`)),o(e,t)};d(_,e=>{i(c)?.available===!1&&e(y)}),K(f),v(()=>{m!==(m=t.selectedProfile)&&(p.value=(p.__value=t.selectedProfile)??``,S(p,t.selectedProfile))}),a(`change`,p,e=>t.onchange(e.currentTarget.value)),o(e,s)};d(u,e=>{t.profiles.length===0?e(f):t.profiles.length===1?e(p,1):e(m,-1)}),o(e,l),B()}h([`change`]);var Rf=f(`<section class="engine-section svelte-1r7l91t"><h3 class="engine-heading svelte-1r7l91t">Hardware profile</h3> <!></section>`);function zf(e,t){var n=Rf();Lf(x(H(n),2),{get profiles(){return t.profiles},get selectedProfile(){return t.selectedProfile},get onchange(){return t.onchange}}),K(n),o(e,n)}var Bf=f(`<div class="error-banner svelte-nokcxu"><span> </span></div>`),Vf=f(`<option> </option>`),Hf=f(`<span> </span>`),Uf=f(`<p class="field-hint svelte-nokcxu"> </p>`),Wf=f(`<div class="field svelte-nokcxu"><label class="field-label svelte-nokcxu"> </label> <input class="field-input svelte-nokcxu" autocomplete="off"/> <!></div>`),Gf=f(`<p class="field-hint field-hint--warn svelte-nokcxu"> </p>`),Kf=f(`<!> <!>`,1),qf=f(`<option> </option>`),Jf=f(`<span> </span>`),Yf=f(`<p class="field-hint svelte-nokcxu"> </p>`),Xf=f(`<div class="field svelte-nokcxu"><label class="field-label svelte-nokcxu"> </label> <input class="field-input svelte-nokcxu" autocomplete="off"/> <!></div>`),Zf=f(`<span class="test-ok svelte-nokcxu">✓ Working</span>`),Qf=f(`<span class="test-err svelte-nokcxu"> </span>`),$f=f(`<div class="panel" role="tabpanel"><div class="panel-header"><div><h2>Voice</h2> <p class="panel-subtitle">Speech-to-text · text-to-speech</p></div> <div class="panel-header-actions"><button class="btn btn-secondary btn-sm"><!> Refresh</button> <button class="btn btn-primary btn-sm"><!> Save</button></div></div> <!> <div class="panel-body svelte-nokcxu"><div class="voice-grid svelte-nokcxu"><div class="section-card svelte-nokcxu"><div class="sc-title svelte-nokcxu">Speech-to-text (STT)</div> <div class="field svelte-nokcxu"><label class="field-label svelte-nokcxu" for="stt-engine">Engine</label> <select id="stt-engine" class="field-select svelte-nokcxu"><option>— select engine —</option><!></select> <!></div> <!></div> <div class="section-card svelte-nokcxu"><div class="sc-title svelte-nokcxu">Text-to-speech (TTS)</div> <div class="field svelte-nokcxu"><label class="field-label svelte-nokcxu" for="tts-engine">Engine</label> <select id="tts-engine" class="field-select svelte-nokcxu"><option>— select engine —</option><!></select> <!></div> <!> <div class="sc-foot svelte-nokcxu"><div class="test-row svelte-nokcxu"><button type="button" class="btn btn-secondary btn-sm"><!> Test speaker</button> <!></div> <label class="auto-speak-toggle svelte-nokcxu"><input type="checkbox" class="svelte-nokcxu"/> <span>Speak replies automatically</span></label></div></div></div> <!></div></div>`);function ep(e,t){F(t,!0);let n=[{id:`openpalm-voice`,name:`OpenPalm Voice`,type:`local`,recommended:!0,desc:`Local Kokoro TTS + Whisper STT bundled together.`},{id:`remote`,name:`Remote (OpenAI-compatible)`,type:`cloud`,desc:`Point at any /v1/audio/speech endpoint (OpenAI, Kokoro, Piper, …).`},{id:`browser`,name:`Browser`,type:`builtin`,desc:`Web Speech API on this device. No setup, voice quality varies.`}],c=[{id:`openpalm-voice`,name:`OpenPalm Voice`,type:`local`,recommended:!0,desc:`Local Kokoro TTS + Whisper STT bundled together.`},{id:`remote`,name:`Remote (OpenAI-compatible)`,type:`cloud`,desc:`Point at any /v1/audio/transcriptions endpoint (Whisper, …).`},{id:`browser`,name:`Browser`,type:`builtin`,desc:`Web Speech API on this device. Chrome/Edge only on desktop.`}],l={"openpalm-voice":{id:`openpalm-voice`,fields:[]},remote:{id:`remote`,fields:[{key:`baseURL`,label:`Endpoint URL`,placeholder:`http://host.docker.internal:8880/v1`,hint:`OpenAI-compatible /v1/audio/speech endpoint.`},{key:`model`,label:`Model`,placeholder:`tts-1`},{key:`voice`,label:`Voice`,placeholder:`alloy`}]},browser:{id:`browser`,fields:[]}},u={"openpalm-voice":{id:`openpalm-voice`,fields:[]},remote:{id:`remote`,fields:[{key:`baseURL`,label:`Endpoint URL`,placeholder:`http://host.docker.internal:9000/v1`,hint:`OpenAI-compatible /v1/audio/transcriptions endpoint.`},{key:`model`,label:`Model`,placeholder:`whisper-1`},{key:`language`,label:`Language`,placeholder:`en`,hint:"A code like `en` or `fr`, or leave blank to detect."}]},browser:{id:`browser`,fields:[{key:`language`,label:`Language`,placeholder:`en-US`}]}},f=()=>({engine:``,baseURL:``,model:``,voice:``,language:``}),m=w(!1),h=w(!1),g=w(``),_=w(R(f())),C=w(R(f())),T=w(R({stt:{remoteConfigured:!1,remoteReachable:!1},tts:{remoteConfigured:!1,remoteReachable:!1}})),E=w(R([])),D=w(``),N=W(()=>i(_).engine===`openpalm-voice`||i(C).engine===`openpalm-voice`),I=w(!1),L=w(!1),z=w(!1),V=w(null),ee=w(``),te=W(()=>i(I)&&!!We.browserSttUnsupportedReason),G=W(()=>We.browserSttUnsupportedReason??``);function q(e,t){e===`baseURL`?i(C).baseURL=t:e===`model`?i(C).model=t:e===`language`&&(i(C).language=t)}function J(e,t){e===`baseURL`?i(_).baseURL=t:e===`model`?i(_).model=t:e===`voice`&&(i(_).voice=t)}function Y(e,t){return typeof e==`string`?e===`openpalm-voice`?`openpalm-voice`:e===`browser`||e===(t===`tts`?`browser-tts`:`browser-stt`)?`browser`:!e||e.startsWith(`skip-`)?``:`remote`:``}function re(e,t){let n=f();return!e||typeof e!=`object`?n:(n.engine=Y(e.engine,t),typeof e.baseURL==`string`&&(n.baseURL=e.baseURL),typeof e.model==`string`&&(n.model=e.model),t===`tts`&&typeof e.voice==`string`&&(n.voice=e.voice),t===`stt`&&typeof e.language==`string`&&(n.language=e.language),n)}async function ie(){U(m,!0),U(g,``);try{let e=await He();U(_,re(e.tts,`tts`),!0),U(C,re(e.stt,`stt`),!0);let t=e.availability;if(t&&U(T,t,!0),e.addon){U(E,e.addon.profiles??[],!0);let t=e=>!!e&&e.available!==!1,n=e.addon.selectedProfile??``,r=i(E).find(e=>e.id===n);if(t(r))U(D,n,!0);else{let e=i(E).find(e=>e.id===`addon.voice.cpu`&&t(e))??i(E).find(e=>e.default&&t(e))??i(E).find(e=>t(e));U(D,e?.id??``,!0),r&&e&&n!==e.id&&Q.push(`info`,`"${r.label??n}" profile isn't available on this host${r.reason?` (${r.reason})`:``}. Using "${e.label??e.id}" instead.`)}}}catch(e){U(g,e instanceof Error?e.message:`Failed to load voice settings.`,!0)}finally{U(m,!1)}}function X(e,t){if(!e.engine)return;let n={enabled:!0,engine:e.engine};return e.engine===`remote`?(e.baseURL&&(n.baseURL=e.baseURL),e.model&&(n.model=e.model),t===`tts`&&e.voice&&(n.voice=e.voice),t===`stt`&&e.language&&(n.language=e.language)):e.engine===`browser`&&t===`stt`&&e.language&&(n.language=e.language),n}async function Z(){U(h,!0),U(g,``);let e=i(_).engine===`openpalm-voice`||i(C).engine===`openpalm-voice`,t=null,n=null;e&&(t=Q.push(`info`,`Enabling voice addon…`,{sticky:!0}),n=setTimeout(()=>{t&&Q.push(`info`,`Starting voice addon — this may take a moment…`,{sticky:!0,replaceId:t})},1500));try{let r=await Ge({tts:X(i(_),`tts`),stt:X(i(C),`stt`),...i(N)&&i(D)?{profile:i(D)}:{}});if(n&&=(clearTimeout(n),null),e&&t){let e=r.voiceAddon;r.status===202&&e?(Q.push(`info`,e.message??`Voice image is downloading — this can take several minutes.`,{sticky:!0,replaceId:t}),ae(t),t=null):r.ok&&e?Q.push(`success`,e.wasAlreadyEnabled?`Voice addon ready — let's chat!`:`Voice addon started, let's chat!`,{replaceId:t}):e?Q.push(`error`,e.error??`Voice addon failed to start.`,{replaceId:t}):Q.push(`success`,`Voice settings saved.`,{replaceId:t})}e||Q.push(`success`,`Voice settings saved.`),await ie()}catch(r){n&&=(clearTimeout(n),null);let i=r instanceof Error?r.message:`Failed to save voice settings.`;U(g,i,!0),t?Q.push(`error`,i,{replaceId:t}):e&&Q.push(`error`,i)}finally{U(h,!1)}}async function ae(e){let t=Date.now()+30*6e4,n=`pulling`;for(;Date.now()<t;){await new Promise(e=>setTimeout(e,3e3));try{let t=(await He()).addon?.activeJob;if(!t){Q.push(`success`,`Voice addon ready — let's chat!`,{replaceId:e}),await ie();return}if(t.state===`healthy`){Q.push(`success`,`Voice addon ready — let's chat!`,{replaceId:e}),await ie();return}if(t.state===`error`){Q.push(`error`,t.error??`Voice addon failed to start.`,{replaceId:e}),await ie();return}if(t.state!==n){n=t.state;let r=t.state===`starting`?`Voice container started — warming up models…`:`Voice image still downloading…`;Q.push(`info`,r,{sticky:!0,replaceId:e})}}catch{}}Q.push(`error`,`Voice addon is taking longer than 30 minutes. Check Docker logs for openpalm-voice.`,{replaceId:e}),await ie()}async function oe(){if(!i(z)){U(z,!0),U(V,null),U(ee,``);try{We.errorMessage=``,await ze(`Hello! Your voice is working.`),We.errorMessage?(U(V,`error`),U(ee,We.errorMessage,!0)):U(V,`success`)}catch(e){U(V,`error`),U(ee,e instanceof Error?e.message:`Voice test failed.`,!0)}finally{U(z,!1),setTimeout(()=>{U(V,null),U(ee,``)},5e3)}}}A(()=>{U(I,`SpeechRecognition`in window||`webkitSpeechRecognition`in window,!0),U(L,`speechSynthesis`in window),t.tokenStored&&ie()});var se=$f(),ce=H(se),le=x(H(ce),2),ue=H(le),de=H(ue),fe=e=>{$(e,{size:12})};d(de,e=>{i(m)&&e(fe)}),b(),K(ue);var pe=x(ue,2),me=H(pe),he=e=>{$(e,{size:12})};d(me,e=>{i(h)&&e(he)}),b(),K(pe),K(le),K(ce);var ge=x(ce,2),_e=e=>{var t=Bf(),n=H(t),a=H(n,!0);K(n),K(t),v(()=>r(a,i(g))),o(e,t)};d(ge,e=>{i(g)&&e(_e)});var ve=x(ge,2),ye=H(ve),be=H(ye),xe=x(H(be),2),Se=x(H(xe),2),Ce=H(Se);Ce.value=Ce.__value=``,M(x(Ce),17,()=>c,e=>e.id,(e,t)=>{var n=s(),a=j(n),c=e=>{var n=Vf(),a=H(n,!0);K(n);var s={};v(()=>{n.disabled=i(t).id===`browser`&&i(te),r(a,i(t).name),s!==(s=i(t).id)&&(n.value=(n.__value=i(t).id)??``)}),o(e,n)};d(a,e=>{(i(I)||i(t).id!==`browser`)&&e(c)}),o(e,n)}),K(Se);var we;ne(Se);var Ee=x(Se,2),De=e=>{var t=Hf();let n;var a=H(t,!0);K(t),v(()=>{n=p(t,1,`reachability svelte-nokcxu`,null,n,{"reachability--ok":i(T).stt.remoteReachable}),r(a,i(T).stt.remoteReachable?`● Endpoint reachable`:`○ Endpoint not reachable`)}),o(e,t)};d(Ee,e=>{i(C).engine===`remote`&&i(T).stt.remoteConfigured&&e(De)}),K(xe);var Oe=x(xe,2),ke=e=>{var n=Kf(),s=j(n);M(s,17,()=>u[i(C).engine]?.fields??[],e=>e.key,(e,n)=>{var s=Wf(),c=H(s),l=H(c,!0);K(c);var u=x(c,2);P(u);var f=x(u,2),p=e=>{var t=Uf(),a=H(t,!0);K(t),v(()=>r(a,i(n).hint)),o(e,t)};d(f,e=>{i(n).hint&&e(p)}),K(s),v(()=>{k(c,`for`,`stt-${i(n).key??``}`),r(l,i(n).label),k(u,`id`,`stt-${i(n).key??``}`),k(u,`type`,i(n).key===`baseURL`?`url`:`text`),k(u,`placeholder`,i(n).placeholder??``),y(u,i(n).key===`baseURL`?i(C).baseURL:i(n).key===`model`?i(C).model:i(C).language),u.disabled=i(m)||i(h)||!t.tokenStored}),a(`input`,u,e=>q(i(n).key,e.currentTarget.value)),o(e,s)});var c=x(s,2),l=e=>{var t=Gf(),n=H(t,!0);K(t),v(()=>r(n,i(G))),o(e,t)};d(c,e=>{i(C).engine===`browser`&&i(te)&&e(l)}),o(e,n)};d(Oe,e=>{i(C).engine&&e(ke)}),K(be);var Ae=x(be,2),je=x(H(Ae),2),Me=x(H(je),2),Ne=H(Me);Ne.value=Ne.__value=``,M(x(Ne),17,()=>n,e=>e.id,(e,t)=>{var n=s(),a=j(n),c=e=>{var n=qf(),a=H(n,!0);K(n);var s={};v(()=>{r(a,i(t).name),s!==(s=i(t).id)&&(n.value=(n.__value=i(t).id)??``)}),o(e,n)};d(a,e=>{(i(L)||i(t).id!==`browser`)&&e(c)}),o(e,n)}),K(Me);var Pe;ne(Me);var Fe=x(Me,2),Ie=e=>{var t=Jf();let n;var a=H(t,!0);K(t),v(()=>{n=p(t,1,`reachability svelte-nokcxu`,null,n,{"reachability--ok":i(T).tts.remoteReachable}),r(a,i(T).tts.remoteReachable?`● Endpoint reachable`:`○ Endpoint not reachable`)}),o(e,t)};d(Fe,e=>{i(_).engine===`remote`&&i(T).tts.remoteConfigured&&e(Ie)}),K(je);var Le=x(je,2),Re=e=>{var n=s();M(j(n),17,()=>l[i(_).engine]?.fields??[],e=>e.key,(e,n)=>{var s=Xf(),c=H(s),l=H(c,!0);K(c);var u=x(c,2);P(u);var f=x(u,2),p=e=>{var t=Yf(),a=H(t,!0);K(t),v(()=>r(a,i(n).hint)),o(e,t)};d(f,e=>{i(n).hint&&e(p)}),K(s),v(()=>{k(c,`for`,`tts-${i(n).key??``}`),r(l,i(n).label),k(u,`id`,`tts-${i(n).key??``}`),k(u,`type`,i(n).key===`baseURL`?`url`:`text`),k(u,`placeholder`,i(n).placeholder??``),y(u,i(n).key===`baseURL`?i(_).baseURL:i(n).key===`model`?i(_).model:i(_).voice),u.disabled=i(m)||i(h)||!t.tokenStored}),a(`input`,u,e=>J(i(n).key,e.currentTarget.value)),o(e,s)}),o(e,n)};d(Le,e=>{i(_).engine&&e(Re)});var Be=x(Le,2),Ve=H(Be),Ue=H(Ve),Ke=H(Ue),qe=e=>{$(e,{size:12})};d(Ke,e=>{i(z)&&e(qe)}),b(),K(Ue);var Je=x(Ue,2),Ye=e=>{o(e,Zf())},Xe=e=>{var t=Qf(),n=H(t,!0);K(t),v(()=>r(n,i(ee)||`Failed`)),o(e,t)};d(Je,e=>{i(V)===`success`?e(Ye):i(V)===`error`&&e(Xe,1)}),K(Ve);var Ze=x(Ve,2),Qe=H(Ze);P(Qe),b(2),K(Ze),K(Be),K(Ae),K(ye);var $e=x(ye,2),et=e=>{zf(e,{get profiles(){return i(E)},get selectedProfile(){return i(D)},onchange:e=>U(D,e,!0)})};d($e,e=>{i(N)&&i(E).length>0&&e(et)}),K(ve),K(se),v(()=>{ue.disabled=i(m)||i(h)||!t.tokenStored,pe.disabled=i(m)||i(h)||!t.tokenStored,Se.disabled=i(m)||i(h)||!t.tokenStored,we!==(we=i(C).engine)&&(Se.value=(Se.__value=i(C).engine)??``,S(Se,i(C).engine)),Me.disabled=i(m)||i(h)||!t.tokenStored,Pe!==(Pe=i(_).engine)&&(Me.value=(Me.__value=i(_).engine)??``,S(Me,i(_).engine)),Ue.disabled=i(z)||i(h)||i(m)||!i(_).engine,O(Qe,We.ttsAutoEnabled)}),a(`click`,ue,()=>void ie()),a(`click`,pe,()=>void Z()),a(`change`,Se,e=>{i(C).engine=e.currentTarget.value}),a(`change`,Me,e=>{i(_).engine=e.currentTarget.value}),a(`click`,Ue,()=>void oe()),a(`change`,Qe,e=>Te(e.currentTarget.checked)),o(e,se),B()}h([`click`,`change`,`input`]);var tp=f(`<!> <!> <main class="svelte-1jef3w8"><!> <!></main>`,1);function np(e,t){F(t,!0);let r=w(null),a=w(null),s=w(!1),c=w(!1),l=w(!1),u=w(!1),f=w(``),p=w(`info`),m=w(null),h=w(``),g=w(null),v=w(null),y=w(``),b=w(null),S=w(`overview`),C=w(!1),T=null;function E(){D(),T=setInterval(()=>{i(m)&&L()},1e4)}function D(){T!==null&&(clearInterval(T),T=null)}V(()=>{D()});let O=W(()=>i(c)),k=W(()=>{if(!i(m))return new Map;let e=new Map;if(i(m).containers)for(let[t,n]of Object.entries(i(m).containers))e.set(t,n);if(i(m).dockerContainers)for(let t of i(m).dockerContainers)e.set(t.Service,t.State);return e}),M=W(()=>{if(!i(m))return[];let e=new Map;if(i(m).containers)for(let[t,n]of Object.entries(i(m).containers))e.set(t,{id:t,service:t,state:n,docker:null});if(i(m).dockerContainers)for(let t of i(m).dockerContainers){let n=e.get(t.Service);n?(n.state=t.State,n.docker=t,n.id=t.ID):e.set(t.Service,{id:t.ID,service:t.Service||t.Name,state:t.State,docker:t})}return[...e.values()].sort((e,t)=>e.state===`running`&&t.state!==`running`?-1:e.state!==`running`&&t.state===`running`?1:e.service.localeCompare(t.service))});function N(){J(`/login?redirectTo=%2Fadmin`)}async function P(){U(s,!0);try{let e=await de();U(r,e.admin,!0),U(a,e.guardian,!0)}catch(e){console.warn(`[page] Health check failed:`,e),U(r,{status:`error`,service:`admin`},!0),U(a,{status:`error`,service:`guardian`},!0)}U(s,!1)}async function L(){U(l,!0),U(h,``);try{U(m,await oe(),!0)}catch(e){U(m,null);let t=e;t.status===401?(U(h,`Invalid password.`),N()):U(h,`Failed to load containers: ${t.message??e}`)}U(l,!1),i(m)&&U(g,Qe(Date.now()),!0)}async function R(){U(u,!0),U(y,``);try{U(v,await pe(),!0)}catch(e){U(v,null);let t=e;t.status===401?(U(y,`Invalid password.`),N()):U(y,`Failed to load automations: ${t.message??e}`)}U(u,!1)}async function z(){if(!i(O)){U(c,!0);try{let e=await Ae();if(e.overallSuccess)U(f,e.restarted.length>0?`Changes applied successfully. Restarted: ${e.restarted.join(`, `)}.`:`Changes applied successfully.`,!0),U(p,`success`);else if(e.failed.length>0){let t=e.failed.map(e=>`${e.service}: ${e.reason}`).join(`; `),n=e.restarted.length>0?` (other services restarted: ${e.restarted.join(`, `)})`:``;U(f,`Apply failed for ${e.failed.length} service(s): ${t}${n}`),U(p,`error`)}else e.dockerAvailable?(U(f,`Apply failed: ${e.error??`unknown error`}`),U(p,`error`)):(U(f,`Config written, but Docker is unavailable — services were not restarted.`),U(p,`error`))}catch(e){let t=e;t.status===401?N():(U(f,`Error applying changes: ${t.message??e}`),U(p,`error`))}U(c,!1)}}async function ee(e,t){try{await je(e,t),await L()}catch(e){let t=e;t.status===401?N():U(h,`Action failed: ${t.message??e}`)}}function te(e){U(b,i(b)===e?null:e,!0)}let G=W(()=>{if(!i(m))return[];let e=new Set;if(i(m).containers)for(let t of Object.keys(i(m).containers))e.add(t);if(i(m).dockerContainers)for(let t of i(m).dockerContainers)t.Service&&e.add(t.Service);return[...e].sort()});async function ne(){U(C,!0);try{await Y(),await L()}catch(e){let t=e;t.status===401?N():U(h,`Pull failed: ${t.message??e}`)}finally{U(C,!1)}}function q(e){U(S,e,!0),e===`containers`&&!i(m)&&L(),e===`automations`&&!i(v)&&R()}function re(){N()}A(()=>{E(),P(),L(),R()});var ie=tp();n(`1jef3w8`,e=>{_(()=>{I.title=`OpenPalm Console`})});var X=j(ie);ct(X,{});var Z=x(X,2);Vt(Z,{get active(){return i(S)},onSelect:q});var ae=x(Z,2),se=H(ae),ce=e=>{{let t=W(()=>i(m)?.managedServices??[]);ln(e,{get adminHealth(){return i(r)},get operationResult(){return i(f)},get operationResultType(){return i(p)},tokenStored:!0,get healthLoading(){return i(s)},get applyLoading(){return i(c)},get anyDangerousLoading(){return i(O)},get automationsData(){return i(v)},get mergedServices(){return i(k)},get managedServices(){return i(t)},onCheckHealth:P,onApplyChanges:z,onDismissResult:()=>{U(f,``),U(p,`info`)},onNavigate:q})}},le=e=>{Rn(e,{})},ue=e=>{er(e,{})},fe=e=>{kr(e,{onAuthError:re,onNavigate:q})},me=e=>{gi(e,{get containerData(){return i(m)},get serviceEntries(){return i(M)},get loading(){return i(l)},get error(){return i(h)},tokenStored:!0,get selectedContainerId(){return i(b)},onToggleContainer:te,onStart:e=>ee(`start`,e),onStop:e=>ee(`stop`,e),onRestart:e=>ee(`restart`,e),onRefresh:L,onPullImages:ne,get lastUpdated(){return i(g)},get pullLoading(){return i(C)}})},he=e=>{il(e,{get data(){return i(v)},get loading(){return i(u)},get error(){return i(y)},tokenStored:!0,onRefresh:R})},ge=e=>{od(e,{})},_e=e=>{fu(e,{})},ve=e=>{zu(e,{tokenStored:!0})},ye=e=>{Fu(e,{tokenStored:!0})};d(se,e=>{i(S)===`overview`?e(ce):i(S)===`updates`?e(le,1):i(S)===`recovery`?e(ue,2):i(S)===`addons`?e(fe,3):i(S)===`containers`?e(me,4):i(S)===`automations`?e(he,5):i(S)===`activity`?e(ge,6):i(S)===`connections`?e(_e,7):i(S)===`assistant`?e(ve,8):i(S)===`secrets`&&e(ye,9)});var be=x(se,2),xe=e=>{ep(e,{tokenStored:!0})},Se=e=>{Tf(e,{tokenStored:!0})},Ce=e=>{Af(e,{tokenStored:!0})},we=e=>{{let t=W(()=>i(v)?.automations.map(e=>e.name)??[]);Ou(e,{tokenStored:!0,get services(){return i(G)},get automations(){return i(t)}})}};d(be,e=>{i(S)===`voice`?e(xe):i(S)===`akm`?e(Se,1):i(S)===`host-sharing`?e(Ce,2):i(S)===`logs`&&e(we,3)}),K(ae),o(e,ie),B()}export{np as component};