@openpalm/ui 0.11.5-rc.2 → 0.11.5-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/build/.openpalm-ui-version +1 -1
  2. package/build/client/_app/immutable/assets/{4.Dplzd8Dq.css → 4.BFLRjZM9.css} +1 -1
  3. package/build/client/_app/immutable/assets/4.BFLRjZM9.css.br +0 -0
  4. package/build/client/_app/immutable/assets/4.BFLRjZM9.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/7.DKl0e2Fb.css +1 -0
  6. package/build/client/_app/immutable/assets/7.DKl0e2Fb.css.br +0 -0
  7. package/build/client/_app/immutable/assets/7.DKl0e2Fb.css.gz +0 -0
  8. package/build/client/_app/immutable/chunks/{Cue0EpfJ.js → 0swOyi-5.js} +3 -3
  9. package/build/client/_app/immutable/chunks/0swOyi-5.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/0swOyi-5.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/B4LSIsxy.js +1 -0
  12. package/build/client/_app/immutable/chunks/B4LSIsxy.js.br +2 -0
  13. package/build/client/_app/immutable/chunks/B4LSIsxy.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/{Dd6EPzlG.js → BQ0vnNWj.js} +1 -1
  15. package/build/client/_app/immutable/chunks/BQ0vnNWj.js.br +1 -0
  16. package/build/client/_app/immutable/chunks/BQ0vnNWj.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/{Cu0zcwlV.js → BTsRblfw.js} +1 -1
  18. package/build/client/_app/immutable/chunks/BTsRblfw.js.br +0 -0
  19. package/build/client/_app/immutable/chunks/BTsRblfw.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/Bmfn2m9N.js +1 -0
  21. package/build/client/_app/immutable/chunks/Bmfn2m9N.js.br +1 -0
  22. package/build/client/_app/immutable/chunks/Bmfn2m9N.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/C-9oV3QK.js +1 -0
  24. package/build/client/_app/immutable/chunks/C-9oV3QK.js.br +0 -0
  25. package/build/client/_app/immutable/chunks/C-9oV3QK.js.gz +0 -0
  26. package/build/client/_app/immutable/chunks/{Z2W9flFH.js → CDS1U3lf.js} +2 -2
  27. package/build/client/_app/immutable/chunks/CDS1U3lf.js.br +0 -0
  28. package/build/client/_app/immutable/chunks/CDS1U3lf.js.gz +0 -0
  29. package/build/client/_app/immutable/chunks/TM1MyO6b.js +5 -0
  30. package/build/client/_app/immutable/chunks/TM1MyO6b.js.br +0 -0
  31. package/build/client/_app/immutable/chunks/TM1MyO6b.js.gz +0 -0
  32. package/build/client/_app/immutable/chunks/{DAn-iPjx.js → irujFCsS.js} +1 -1
  33. package/build/client/_app/immutable/chunks/irujFCsS.js.br +0 -0
  34. package/build/client/_app/immutable/chunks/irujFCsS.js.gz +0 -0
  35. package/build/client/_app/immutable/entry/app.j4FjlmJV.js +2 -0
  36. package/build/client/_app/immutable/entry/app.j4FjlmJV.js.br +0 -0
  37. package/build/client/_app/immutable/entry/app.j4FjlmJV.js.gz +0 -0
  38. package/build/client/_app/immutable/entry/start.BG0VgQz3.js +1 -0
  39. package/build/client/_app/immutable/entry/start.BG0VgQz3.js.br +1 -0
  40. package/build/client/_app/immutable/entry/start.BG0VgQz3.js.gz +0 -0
  41. package/build/client/_app/immutable/nodes/0.C7eQ_ow9.js +1 -0
  42. package/build/client/_app/immutable/nodes/0.C7eQ_ow9.js.br +0 -0
  43. package/build/client/_app/immutable/nodes/0.C7eQ_ow9.js.gz +0 -0
  44. package/build/client/_app/immutable/nodes/1.DOderKqv.js +1 -0
  45. package/build/client/_app/immutable/nodes/1.DOderKqv.js.br +1 -0
  46. package/build/client/_app/immutable/nodes/1.DOderKqv.js.gz +0 -0
  47. package/build/client/_app/immutable/nodes/2.B-8ehRO1.js +1 -0
  48. package/build/client/_app/immutable/nodes/2.B-8ehRO1.js.br +0 -0
  49. package/build/client/_app/immutable/nodes/2.B-8ehRO1.js.gz +0 -0
  50. package/build/client/_app/immutable/nodes/3.B_FXzjZB.js +1 -0
  51. package/build/client/_app/immutable/nodes/3.B_FXzjZB.js.br +0 -0
  52. package/build/client/_app/immutable/nodes/3.B_FXzjZB.js.gz +0 -0
  53. package/build/client/_app/immutable/nodes/4.CL9pbPfw.js +19 -0
  54. package/build/client/_app/immutable/nodes/4.CL9pbPfw.js.br +0 -0
  55. package/build/client/_app/immutable/nodes/4.CL9pbPfw.js.gz +0 -0
  56. package/build/client/_app/immutable/nodes/5.By0afU0Y.js +4 -0
  57. package/build/client/_app/immutable/nodes/5.By0afU0Y.js.br +0 -0
  58. package/build/client/_app/immutable/nodes/5.By0afU0Y.js.gz +0 -0
  59. package/build/client/_app/immutable/nodes/6.BnWmdf6t.js +1 -0
  60. package/build/client/_app/immutable/nodes/6.BnWmdf6t.js.br +0 -0
  61. package/build/client/_app/immutable/nodes/6.BnWmdf6t.js.gz +0 -0
  62. package/build/client/_app/immutable/nodes/7.RAc8_3qJ.js +15 -0
  63. package/build/client/_app/immutable/nodes/7.RAc8_3qJ.js.br +0 -0
  64. package/build/client/_app/immutable/nodes/7.RAc8_3qJ.js.gz +0 -0
  65. package/build/client/_app/immutable/nodes/8.Dytsowyk.js +1 -0
  66. package/build/client/_app/immutable/nodes/8.Dytsowyk.js.br +0 -0
  67. package/build/client/_app/immutable/nodes/8.Dytsowyk.js.gz +0 -0
  68. package/build/client/_app/immutable/nodes/9.CFQabEMi.js +5 -0
  69. package/build/client/_app/immutable/nodes/9.CFQabEMi.js.br +0 -0
  70. package/build/client/_app/immutable/nodes/9.CFQabEMi.js.gz +0 -0
  71. package/build/client/_app/version.json +1 -1
  72. package/build/client/_app/version.json.br +1 -1
  73. package/build/client/_app/version.json.gz +0 -0
  74. package/build/server/chunks/0-BGsPZcaQ.js +9 -0
  75. package/build/server/chunks/{0-DYSdORF4.js.map → 0-BGsPZcaQ.js.map} +1 -1
  76. package/build/server/chunks/1-Daoybjaw.js +9 -0
  77. package/build/server/chunks/{1-DriLpuch.js.map → 1-Daoybjaw.js.map} +1 -1
  78. package/build/server/chunks/{2-CTCIjKJp.js → 2-DQWoUtW1.js} +2 -2
  79. package/build/server/chunks/{2-CTCIjKJp.js.map → 2-DQWoUtW1.js.map} +1 -1
  80. package/build/server/chunks/{3-PAUGKR-M.js → 3-COIGgysA.js} +2 -2
  81. package/build/server/chunks/{3-PAUGKR-M.js.map → 3-COIGgysA.js.map} +1 -1
  82. package/build/server/chunks/4-Lm1O6Rmh.js +9 -0
  83. package/build/server/chunks/4-Lm1O6Rmh.js.map +1 -0
  84. package/build/server/chunks/5-BfmhtNP9.js +9 -0
  85. package/build/server/chunks/{5-CaAZ_pnW.js.map → 5-BfmhtNP9.js.map} +1 -1
  86. package/build/server/chunks/6-AcylLX8-.js +9 -0
  87. package/build/server/chunks/{6-Djkq9gPL.js.map → 6-AcylLX8-.js.map} +1 -1
  88. package/build/server/chunks/7-BT0zxD9E.js +9 -0
  89. package/build/server/chunks/7-BT0zxD9E.js.map +1 -0
  90. package/build/server/chunks/{8-CrXn8AWD.js → 8-DMgWQQBm.js} +3 -3
  91. package/build/server/chunks/{8-CrXn8AWD.js.map → 8-DMgWQQBm.js.map} +1 -1
  92. package/build/server/chunks/{9-yLwdBbDq.js → 9-CGVsBC0_.js} +2 -2
  93. package/build/server/chunks/{9-yLwdBbDq.js.map → 9-CGVsBC0_.js.map} +1 -1
  94. package/build/server/chunks/{Navbar-C72vlTUN.js → Navbar-C9kE6wR-.js} +38 -454
  95. package/build/server/chunks/Navbar-C9kE6wR-.js.map +1 -0
  96. package/build/server/chunks/{_layout.svelte-DzBCdyUD.js → _layout.svelte-DCfzq18z.js} +2 -2
  97. package/build/server/chunks/{_layout.svelte-DzBCdyUD.js.map → _layout.svelte-DCfzq18z.js.map} +1 -1
  98. package/build/server/chunks/{_page.svelte-BBHjv6FS.js → _page.svelte-B3FJ13Ci.js} +6 -6
  99. package/build/server/chunks/{_page.svelte-BBHjv6FS.js.map → _page.svelte-B3FJ13Ci.js.map} +1 -1
  100. package/build/server/chunks/{_page.svelte-DRU3ay4a.js → _page.svelte-BA7DptUV.js} +3 -3
  101. package/build/server/chunks/{_page.svelte-DRU3ay4a.js.map → _page.svelte-BA7DptUV.js.map} +1 -1
  102. package/build/server/chunks/{ChatMessage-jkPoi0IR.js → _page.svelte-C0eMsRDk.js} +105 -8
  103. package/build/server/chunks/_page.svelte-C0eMsRDk.js.map +1 -0
  104. package/build/server/chunks/{_page.svelte-C6_O57B-.js → _page.svelte-Dl3WoXNo.js} +10 -150
  105. package/build/server/chunks/_page.svelte-Dl3WoXNo.js.map +1 -0
  106. package/build/server/chunks/{_page.svelte-CtyxfG3i.js → _page.svelte-Dnt12F6c.js} +6 -6
  107. package/build/server/chunks/{_page.svelte-CtyxfG3i.js.map → _page.svelte-Dnt12F6c.js.map} +1 -1
  108. package/build/server/chunks/{_server.ts-BXz3inxG.js → _server.ts-1mdOjWEN.js} +5 -5
  109. package/build/server/chunks/{_server.ts-BXz3inxG.js.map → _server.ts-1mdOjWEN.js.map} +1 -1
  110. package/build/server/chunks/{_server.ts-CqKt78Pt.js → _server.ts-3JO3CKsE.js} +4 -4
  111. package/build/server/chunks/{_server.ts-CqKt78Pt.js.map → _server.ts-3JO3CKsE.js.map} +1 -1
  112. package/build/server/chunks/{_server.ts-CF9SWt4o.js → _server.ts-4HorMS2R.js} +4 -4
  113. package/build/server/chunks/{_server.ts-CF9SWt4o.js.map → _server.ts-4HorMS2R.js.map} +1 -1
  114. package/build/server/chunks/{_server.ts-CZ1QyKiP.js → _server.ts-B1Jl9Grz.js} +4 -4
  115. package/build/server/chunks/{_server.ts-CZ1QyKiP.js.map → _server.ts-B1Jl9Grz.js.map} +1 -1
  116. package/build/server/chunks/{_server.ts-BipzCnqX.js → _server.ts-B31I037d.js} +6 -6
  117. package/build/server/chunks/{_server.ts-BipzCnqX.js.map → _server.ts-B31I037d.js.map} +1 -1
  118. package/build/server/chunks/{_server.ts-DOiOnglY.js → _server.ts-B3ntDGZM.js} +5 -5
  119. package/build/server/chunks/{_server.ts-DOiOnglY.js.map → _server.ts-B3ntDGZM.js.map} +1 -1
  120. package/build/server/chunks/_server.ts-B79PxL9c.js +91 -0
  121. package/build/server/chunks/_server.ts-B79PxL9c.js.map +1 -0
  122. package/build/server/chunks/{_server.ts-DhJ3EQ1-.js → _server.ts-B8EZxkK3.js} +5 -5
  123. package/build/server/chunks/{_server.ts-DhJ3EQ1-.js.map → _server.ts-B8EZxkK3.js.map} +1 -1
  124. package/build/server/chunks/{_server.ts-C9PqkEga.js → _server.ts-B8YF9aVx.js} +4 -4
  125. package/build/server/chunks/{_server.ts-C9PqkEga.js.map → _server.ts-B8YF9aVx.js.map} +1 -1
  126. package/build/server/chunks/{_server.ts-DUqQgjZv.js → _server.ts-BEjyvkVV.js} +4 -4
  127. package/build/server/chunks/{_server.ts-DUqQgjZv.js.map → _server.ts-BEjyvkVV.js.map} +1 -1
  128. package/build/server/chunks/{_server.ts-BybgwfUH.js → _server.ts-BGqa6Laa.js} +4 -4
  129. package/build/server/chunks/{_server.ts-BybgwfUH.js.map → _server.ts-BGqa6Laa.js.map} +1 -1
  130. package/build/server/chunks/{_server.ts-DcKEI2Ff.js → _server.ts-BHmCir74.js} +4 -4
  131. package/build/server/chunks/{_server.ts-DcKEI2Ff.js.map → _server.ts-BHmCir74.js.map} +1 -1
  132. package/build/server/chunks/{_server.ts-B3CTgC7e.js → _server.ts-BLUm8wAq.js} +4 -4
  133. package/build/server/chunks/{_server.ts-B3CTgC7e.js.map → _server.ts-BLUm8wAq.js.map} +1 -1
  134. package/build/server/chunks/{_server.ts-D13Et6Nm.js → _server.ts-BNJn20vV.js} +4 -4
  135. package/build/server/chunks/{_server.ts-D13Et6Nm.js.map → _server.ts-BNJn20vV.js.map} +1 -1
  136. package/build/server/chunks/{_server.ts-DMh6Tg2b.js → _server.ts-BTvZB-WH.js} +4 -4
  137. package/build/server/chunks/{_server.ts-DMh6Tg2b.js.map → _server.ts-BTvZB-WH.js.map} +1 -1
  138. package/build/server/chunks/{_server.ts-CfMgNVBt.js → _server.ts-BUIWPYRF.js} +4 -4
  139. package/build/server/chunks/{_server.ts-CfMgNVBt.js.map → _server.ts-BUIWPYRF.js.map} +1 -1
  140. package/build/server/chunks/{_server.ts-CbKiZYKJ.js → _server.ts-BWtTOsFi.js} +4 -4
  141. package/build/server/chunks/{_server.ts-CbKiZYKJ.js.map → _server.ts-BWtTOsFi.js.map} +1 -1
  142. package/build/server/chunks/{_server.ts-1UmhXPK8.js → _server.ts-BY7nR9Ev.js} +4 -4
  143. package/build/server/chunks/{_server.ts-1UmhXPK8.js.map → _server.ts-BY7nR9Ev.js.map} +1 -1
  144. package/build/server/chunks/{_server.ts-CPdyvrte.js → _server.ts-BdLKHRnY.js} +6 -6
  145. package/build/server/chunks/{_server.ts-CPdyvrte.js.map → _server.ts-BdLKHRnY.js.map} +1 -1
  146. package/build/server/chunks/{_server.ts-xI2x8ziC.js → _server.ts-BhRtn8Xn.js} +4 -4
  147. package/build/server/chunks/{_server.ts-xI2x8ziC.js.map → _server.ts-BhRtn8Xn.js.map} +1 -1
  148. package/build/server/chunks/{_server.ts-QG_Io1nH.js → _server.ts-Bq4Oko-2.js} +4 -4
  149. package/build/server/chunks/{_server.ts-QG_Io1nH.js.map → _server.ts-Bq4Oko-2.js.map} +1 -1
  150. package/build/server/chunks/{_server.ts-CU1zUqIs.js → _server.ts-Bu_7eQaL.js} +5 -5
  151. package/build/server/chunks/{_server.ts-CU1zUqIs.js.map → _server.ts-Bu_7eQaL.js.map} +1 -1
  152. package/build/server/chunks/{_server.ts-BaUBfxz3.js → _server.ts-BvbnbZsl.js} +4 -4
  153. package/build/server/chunks/{_server.ts-BaUBfxz3.js.map → _server.ts-BvbnbZsl.js.map} +1 -1
  154. package/build/server/chunks/{_server.ts-DEFxa6iW.js → _server.ts-C4pf3VKi.js} +4 -4
  155. package/build/server/chunks/{_server.ts-DEFxa6iW.js.map → _server.ts-C4pf3VKi.js.map} +1 -1
  156. package/build/server/chunks/{_server.ts-owfxHChR.js → _server.ts-C7K7bv8w.js} +5 -5
  157. package/build/server/chunks/{_server.ts-owfxHChR.js.map → _server.ts-C7K7bv8w.js.map} +1 -1
  158. package/build/server/chunks/{_server.ts-DueRmcvI.js → _server.ts-C8BrkC8T.js} +5 -5
  159. package/build/server/chunks/{_server.ts-DueRmcvI.js.map → _server.ts-C8BrkC8T.js.map} +1 -1
  160. package/build/server/chunks/{_server.ts-BhS7lUNN.js → _server.ts-C8zFV8J3.js} +4 -4
  161. package/build/server/chunks/{_server.ts-BhS7lUNN.js.map → _server.ts-C8zFV8J3.js.map} +1 -1
  162. package/build/server/chunks/{_server.ts-CfOeqfql.js → _server.ts-CD-Cddqe.js} +5 -5
  163. package/build/server/chunks/{_server.ts-CfOeqfql.js.map → _server.ts-CD-Cddqe.js.map} +1 -1
  164. package/build/server/chunks/{_server.ts-CO62Q41P.js → _server.ts-CExwMomX.js} +4 -4
  165. package/build/server/chunks/{_server.ts-CO62Q41P.js.map → _server.ts-CExwMomX.js.map} +1 -1
  166. package/build/server/chunks/{_server.ts-D9kpjwUe.js → _server.ts-CH8uRkxq.js} +4 -4
  167. package/build/server/chunks/{_server.ts-D9kpjwUe.js.map → _server.ts-CH8uRkxq.js.map} +1 -1
  168. package/build/server/chunks/{_server.ts-dXPW3qhK.js → _server.ts-CHQmAGEC.js} +5 -5
  169. package/build/server/chunks/{_server.ts-dXPW3qhK.js.map → _server.ts-CHQmAGEC.js.map} +1 -1
  170. package/build/server/chunks/{_server.ts-Dhr817vY.js → _server.ts-CIEz-ybk.js} +4 -4
  171. package/build/server/chunks/{_server.ts-Dhr817vY.js.map → _server.ts-CIEz-ybk.js.map} +1 -1
  172. package/build/server/chunks/{_server.ts-CffocV9v.js → _server.ts-CNLz6iJ7.js} +4 -4
  173. package/build/server/chunks/{_server.ts-CffocV9v.js.map → _server.ts-CNLz6iJ7.js.map} +1 -1
  174. package/build/server/chunks/{_server.ts-rTKNgtmO.js → _server.ts-CVxiERfc.js} +4 -4
  175. package/build/server/chunks/{_server.ts-rTKNgtmO.js.map → _server.ts-CVxiERfc.js.map} +1 -1
  176. package/build/server/chunks/{_server.ts-nTzGdtnW.js → _server.ts-CX2sHcZR.js} +4 -4
  177. package/build/server/chunks/{_server.ts-nTzGdtnW.js.map → _server.ts-CX2sHcZR.js.map} +1 -1
  178. package/build/server/chunks/{_server.ts-agyoOrvg.js → _server.ts-CXI7k8hl.js} +4 -4
  179. package/build/server/chunks/{_server.ts-agyoOrvg.js.map → _server.ts-CXI7k8hl.js.map} +1 -1
  180. package/build/server/chunks/{_server.ts-DPgmVByY.js → _server.ts-CXmwf1pu.js} +2 -2
  181. package/build/server/chunks/{_server.ts-DPgmVByY.js.map → _server.ts-CXmwf1pu.js.map} +1 -1
  182. package/build/server/chunks/{_server.ts-vrMFfkPv.js → _server.ts-C_EnHMEu.js} +4 -4
  183. package/build/server/chunks/{_server.ts-vrMFfkPv.js.map → _server.ts-C_EnHMEu.js.map} +1 -1
  184. package/build/server/chunks/{_server.ts-C2xwF6p0.js → _server.ts-CbOKfJ3v.js} +6 -6
  185. package/build/server/chunks/{_server.ts-C2xwF6p0.js.map → _server.ts-CbOKfJ3v.js.map} +1 -1
  186. package/build/server/chunks/{_server.ts-CBEORQmf.js → _server.ts-CciSVwzg.js} +5 -5
  187. package/build/server/chunks/{_server.ts-CBEORQmf.js.map → _server.ts-CciSVwzg.js.map} +1 -1
  188. package/build/server/chunks/{_server.ts-DzWfvYWd.js → _server.ts-CdB1K2M6.js} +2 -2
  189. package/build/server/chunks/{_server.ts-DzWfvYWd.js.map → _server.ts-CdB1K2M6.js.map} +1 -1
  190. package/build/server/chunks/{_server.ts-DUJMugN3.js → _server.ts-CeeR1W32.js} +4 -4
  191. package/build/server/chunks/{_server.ts-DUJMugN3.js.map → _server.ts-CeeR1W32.js.map} +1 -1
  192. package/build/server/chunks/{_server.ts-CPTHGxCn.js → _server.ts-CpJ08_Lw.js} +4 -4
  193. package/build/server/chunks/{_server.ts-CPTHGxCn.js.map → _server.ts-CpJ08_Lw.js.map} +1 -1
  194. package/build/server/chunks/{_server.ts-Bn_yGKDn.js → _server.ts-CqH3nv-S.js} +5 -5
  195. package/build/server/chunks/{_server.ts-Bn_yGKDn.js.map → _server.ts-CqH3nv-S.js.map} +1 -1
  196. package/build/server/chunks/{_server.ts-C2din2_5.js → _server.ts-CreuvDch.js} +4 -4
  197. package/build/server/chunks/{_server.ts-C2din2_5.js.map → _server.ts-CreuvDch.js.map} +1 -1
  198. package/build/server/chunks/{_server.ts-DEKm5x2n.js → _server.ts-CtltE_T-.js} +2 -2
  199. package/build/server/chunks/{_server.ts-DEKm5x2n.js.map → _server.ts-CtltE_T-.js.map} +1 -1
  200. package/build/server/chunks/{_server.ts-DYdXyLLa.js → _server.ts-CzoE8edN.js} +5 -5
  201. package/build/server/chunks/{_server.ts-DYdXyLLa.js.map → _server.ts-CzoE8edN.js.map} +1 -1
  202. package/build/server/chunks/{_server.ts-zHhiafCS.js → _server.ts-D-Vwef5C.js} +4 -4
  203. package/build/server/chunks/{_server.ts-zHhiafCS.js.map → _server.ts-D-Vwef5C.js.map} +1 -1
  204. package/build/server/chunks/{_server.ts-BZU8fpG9.js → _server.ts-D3QPUpDc.js} +4 -4
  205. package/build/server/chunks/{_server.ts-BZU8fpG9.js.map → _server.ts-D3QPUpDc.js.map} +1 -1
  206. package/build/server/chunks/{_server.ts-DWuaJT7_.js → _server.ts-D8cp-Em3.js} +4 -4
  207. package/build/server/chunks/{_server.ts-DWuaJT7_.js.map → _server.ts-D8cp-Em3.js.map} +1 -1
  208. package/build/server/chunks/{_server.ts-9Qea4tbm.js → _server.ts-DAW24-9-.js} +4 -4
  209. package/build/server/chunks/{_server.ts-9Qea4tbm.js.map → _server.ts-DAW24-9-.js.map} +1 -1
  210. package/build/server/chunks/{_server.ts-9sR9fd3C.js → _server.ts-DHBX6Ary.js} +5 -5
  211. package/build/server/chunks/{_server.ts-9sR9fd3C.js.map → _server.ts-DHBX6Ary.js.map} +1 -1
  212. package/build/server/chunks/{_server.ts-DEpPzJ18.js → _server.ts-DL9hlvL8.js} +4 -4
  213. package/build/server/chunks/{_server.ts-DEpPzJ18.js.map → _server.ts-DL9hlvL8.js.map} +1 -1
  214. package/build/server/chunks/{_server.ts-B-boVJcF.js → _server.ts-DLVGDzlE.js} +4 -4
  215. package/build/server/chunks/{_server.ts-B-boVJcF.js.map → _server.ts-DLVGDzlE.js.map} +1 -1
  216. package/build/server/chunks/{_server.ts-rjMXs5w6.js → _server.ts-DPC8qYUD.js} +4 -4
  217. package/build/server/chunks/{_server.ts-rjMXs5w6.js.map → _server.ts-DPC8qYUD.js.map} +1 -1
  218. package/build/server/chunks/{_server.ts-NLmps3nz.js → _server.ts-DVRyf5BI.js} +4 -4
  219. package/build/server/chunks/{_server.ts-NLmps3nz.js.map → _server.ts-DVRyf5BI.js.map} +1 -1
  220. package/build/server/chunks/{_server.ts-BIdpky_N.js → _server.ts-DY3ZDXdA.js} +4 -4
  221. package/build/server/chunks/{_server.ts-BIdpky_N.js.map → _server.ts-DY3ZDXdA.js.map} +1 -1
  222. package/build/server/chunks/{_server.ts-DzNUAWRG.js → _server.ts-Dc9XEMmF.js} +4 -4
  223. package/build/server/chunks/{_server.ts-DzNUAWRG.js.map → _server.ts-Dc9XEMmF.js.map} +1 -1
  224. package/build/server/chunks/{_server.ts-DHjryCBX.js → _server.ts-Dd4Mh0JV.js} +4 -4
  225. package/build/server/chunks/{_server.ts-DHjryCBX.js.map → _server.ts-Dd4Mh0JV.js.map} +1 -1
  226. package/build/server/chunks/{_server.ts-ILHo2l5u.js → _server.ts-DlwXpopR.js} +3 -3
  227. package/build/server/chunks/{_server.ts-ILHo2l5u.js.map → _server.ts-DlwXpopR.js.map} +1 -1
  228. package/build/server/chunks/{_server.ts-D7mVp5wx.js → _server.ts-Do5L_4tt.js} +4 -4
  229. package/build/server/chunks/{_server.ts-D7mVp5wx.js.map → _server.ts-Do5L_4tt.js.map} +1 -1
  230. package/build/server/chunks/{_server.ts-DaKMiVFv.js → _server.ts-DsTUwnu1.js} +4 -4
  231. package/build/server/chunks/{_server.ts-DaKMiVFv.js.map → _server.ts-DsTUwnu1.js.map} +1 -1
  232. package/build/server/chunks/{_server.ts-DjY1Wxwi.js → _server.ts-DzIilMO5.js} +2 -2
  233. package/build/server/chunks/{_server.ts-DjY1Wxwi.js.map → _server.ts-DzIilMO5.js.map} +1 -1
  234. package/build/server/chunks/{_server.ts-BWz851yG.js → _server.ts-E5YqcwqQ.js} +4 -4
  235. package/build/server/chunks/{_server.ts-BWz851yG.js.map → _server.ts-E5YqcwqQ.js.map} +1 -1
  236. package/build/server/chunks/{_server.ts-Cln7YA08.js → _server.ts-Gbkg-oto.js} +4 -4
  237. package/build/server/chunks/{_server.ts-Cln7YA08.js.map → _server.ts-Gbkg-oto.js.map} +1 -1
  238. package/build/server/chunks/{_server.ts-CYQK3G4x.js → _server.ts-IzD0bafW.js} +5 -5
  239. package/build/server/chunks/{_server.ts-CYQK3G4x.js.map → _server.ts-IzD0bafW.js.map} +1 -1
  240. package/build/server/chunks/{_server.ts-DC8UQBex.js → _server.ts-Lzz9ashZ.js} +4 -4
  241. package/build/server/chunks/{_server.ts-DC8UQBex.js.map → _server.ts-Lzz9ashZ.js.map} +1 -1
  242. package/build/server/chunks/{_server.ts-IsQCU7Zw.js → _server.ts-MGn-MXr5.js} +4 -4
  243. package/build/server/chunks/{_server.ts-IsQCU7Zw.js.map → _server.ts-MGn-MXr5.js.map} +1 -1
  244. package/build/server/chunks/{_server.ts-DXWUvegr.js → _server.ts-QvBpEIYu.js} +4 -4
  245. package/build/server/chunks/{_server.ts-DXWUvegr.js.map → _server.ts-QvBpEIYu.js.map} +1 -1
  246. package/build/server/chunks/{_server.ts-MNKeYGnJ.js → _server.ts-SLlbT28g.js} +2 -2
  247. package/build/server/chunks/{_server.ts-MNKeYGnJ.js.map → _server.ts-SLlbT28g.js.map} +1 -1
  248. package/build/server/chunks/{_server.ts-COna958t.js → _server.ts-j5xF-dJX.js} +4 -4
  249. package/build/server/chunks/{_server.ts-COna958t.js.map → _server.ts-j5xF-dJX.js.map} +1 -1
  250. package/build/server/chunks/{_server.ts-DTDGaSBp.js → _server.ts-pQ9okj_b.js} +6 -6
  251. package/build/server/chunks/{_server.ts-DTDGaSBp.js.map → _server.ts-pQ9okj_b.js.map} +1 -1
  252. package/build/server/chunks/{_server.ts-CRr08SwC.js → _server.ts-yWBMi6sn.js} +6 -6
  253. package/build/server/chunks/{_server.ts-CRr08SwC.js.map → _server.ts-yWBMi6sn.js.map} +1 -1
  254. package/build/server/chunks/{_server.ts-BDtgFSkw.js → _server.ts-ykNeG8km.js} +4 -4
  255. package/build/server/chunks/{_server.ts-BDtgFSkw.js.map → _server.ts-ykNeG8km.js.map} +1 -1
  256. package/build/server/chunks/{addon-helpers-DFEyMJhA.js → addon-helpers-DBJL8kvq.js} +3 -3
  257. package/build/server/chunks/{addon-helpers-DFEyMJhA.js.map → addon-helpers-DBJL8kvq.js.map} +1 -1
  258. package/build/server/chunks/{akm-CxqalIXt.js → akm-hO0p79ZE.js} +2 -2
  259. package/build/server/chunks/{akm-CxqalIXt.js.map → akm-hO0p79ZE.js.map} +1 -1
  260. package/build/server/chunks/{client-DsJcfz5L.js → client-DchoQXpW.js} +2 -2
  261. package/build/server/chunks/{client-DsJcfz5L.js.map → client-DchoQXpW.js.map} +1 -1
  262. package/build/server/chunks/{config-gWehiHgc.js → config-5vfdWPGq.js} +2 -2
  263. package/build/server/chunks/{config-gWehiHgc.js.map → config-5vfdWPGq.js.map} +1 -1
  264. package/build/server/chunks/{docker-7X4MmyTh.js → docker-DYeytgDI.js} +2 -2
  265. package/build/server/chunks/{docker-7X4MmyTh.js.map → docker-DYeytgDI.js.map} +1 -1
  266. package/build/server/chunks/{endpoints-CtFzewjq.js → endpoints-pIoXJCW6.js} +2 -2
  267. package/build/server/chunks/{endpoints-CtFzewjq.js.map → endpoints-pIoXJCW6.js.map} +1 -1
  268. package/build/server/chunks/{environment-WkaY56eW.js → environment-B0PbsX5P.js} +2 -2
  269. package/build/server/chunks/{environment-WkaY56eW.js.map → environment-B0PbsX5P.js.map} +1 -1
  270. package/build/server/chunks/{error.svelte-wQDMzENS.js → error.svelte-Cmr7gpdL.js} +4 -4
  271. package/build/server/chunks/{error.svelte-wQDMzENS.js.map → error.svelte-Cmr7gpdL.js.map} +1 -1
  272. package/build/server/chunks/{helpers-DHqjUGTB.js → helpers-CVirrNSz.js} +3 -3
  273. package/build/server/chunks/{helpers-DHqjUGTB.js.map → helpers-CVirrNSz.js.map} +1 -1
  274. package/build/server/chunks/{hooks.server-BT9BE8vm.js → hooks.server-pc-TSpQy.js} +5 -5
  275. package/build/server/chunks/{hooks.server-BT9BE8vm.js.map → hooks.server-pc-TSpQy.js.map} +1 -1
  276. package/build/server/chunks/{http-oyGIz0mI.js → http-DGsfa0DV.js} +2 -2
  277. package/build/server/chunks/{http-oyGIz0mI.js.map → http-DGsfa0DV.js.map} +1 -1
  278. package/build/server/chunks/{internal-BxZRZr_z.js → internal-DriC3vi3.js} +3 -3
  279. package/build/server/chunks/{internal-BxZRZr_z.js.map → internal-DriC3vi3.js.map} +1 -1
  280. package/build/server/chunks/{session-cookie-xaN0BnnT.js → session-cookie-DEuOwtHY.js} +2 -2
  281. package/build/server/chunks/{session-cookie-xaN0BnnT.js.map → session-cookie-DEuOwtHY.js.map} +1 -1
  282. package/build/server/chunks/{setup-deploy-LcTBIlO0.js → setup-deploy-D4bnmfpV.js} +2 -2
  283. package/build/server/chunks/{setup-deploy-LcTBIlO0.js.map → setup-deploy-D4bnmfpV.js.map} +1 -1
  284. package/build/server/chunks/{src-Bqr11v--.js → src-CyeWH4Df.js} +4 -92
  285. package/build/server/chunks/src-CyeWH4Df.js.map +1 -0
  286. package/build/server/chunks/{state-Cp7JnmAS.js → state-BcUnjLg5.js} +2 -2
  287. package/build/server/chunks/{state-Cp7JnmAS.js.map → state-BcUnjLg5.js.map} +1 -1
  288. package/build/server/chunks/{theme-state.svelte-_CMr5Hu9.js → theme-state.svelte-CeABRes-.js} +24 -96
  289. package/build/server/chunks/theme-state.svelte-CeABRes-.js.map +1 -0
  290. package/build/server/index.js +2 -2
  291. package/build/server/manifest.js +85 -99
  292. package/build/server/manifest.js.map +1 -1
  293. package/package.json +2 -2
  294. package/build/client/_app/immutable/assets/4.Dplzd8Dq.css.br +0 -0
  295. package/build/client/_app/immutable/assets/4.Dplzd8Dq.css.gz +0 -0
  296. package/build/client/_app/immutable/assets/7.CtszQVIX.css +0 -1
  297. package/build/client/_app/immutable/assets/7.CtszQVIX.css.br +0 -0
  298. package/build/client/_app/immutable/assets/7.CtszQVIX.css.gz +0 -0
  299. package/build/client/_app/immutable/assets/ChatMessage.09JQ9G_F.css +0 -1
  300. package/build/client/_app/immutable/assets/ChatMessage.09JQ9G_F.css.br +0 -0
  301. package/build/client/_app/immutable/assets/ChatMessage.09JQ9G_F.css.gz +0 -0
  302. package/build/client/_app/immutable/chunks/B29IM9zg.js +0 -1
  303. package/build/client/_app/immutable/chunks/B29IM9zg.js.br +0 -0
  304. package/build/client/_app/immutable/chunks/B29IM9zg.js.gz +0 -0
  305. package/build/client/_app/immutable/chunks/BZzNcvj6.js +0 -1
  306. package/build/client/_app/immutable/chunks/BZzNcvj6.js.br +0 -2
  307. package/build/client/_app/immutable/chunks/BZzNcvj6.js.gz +0 -0
  308. package/build/client/_app/immutable/chunks/Cu0zcwlV.js.br +0 -0
  309. package/build/client/_app/immutable/chunks/Cu0zcwlV.js.gz +0 -0
  310. package/build/client/_app/immutable/chunks/Cue0EpfJ.js.br +0 -0
  311. package/build/client/_app/immutable/chunks/Cue0EpfJ.js.gz +0 -0
  312. package/build/client/_app/immutable/chunks/DAn-iPjx.js.br +0 -0
  313. package/build/client/_app/immutable/chunks/DAn-iPjx.js.gz +0 -0
  314. package/build/client/_app/immutable/chunks/DNTZUJo4.js +0 -15
  315. package/build/client/_app/immutable/chunks/DNTZUJo4.js.br +0 -0
  316. package/build/client/_app/immutable/chunks/DNTZUJo4.js.gz +0 -0
  317. package/build/client/_app/immutable/chunks/Dd6EPzlG.js.br +0 -0
  318. package/build/client/_app/immutable/chunks/Dd6EPzlG.js.gz +0 -0
  319. package/build/client/_app/immutable/chunks/DhD65Brz.js +0 -1
  320. package/build/client/_app/immutable/chunks/DhD65Brz.js.br +0 -1
  321. package/build/client/_app/immutable/chunks/DhD65Brz.js.gz +0 -0
  322. package/build/client/_app/immutable/chunks/Z2W9flFH.js.br +0 -0
  323. package/build/client/_app/immutable/chunks/Z2W9flFH.js.gz +0 -0
  324. package/build/client/_app/immutable/chunks/pnb2UBxa.js +0 -5
  325. package/build/client/_app/immutable/chunks/pnb2UBxa.js.br +0 -0
  326. package/build/client/_app/immutable/chunks/pnb2UBxa.js.gz +0 -0
  327. package/build/client/_app/immutable/entry/app.LopPl7G5.js +0 -2
  328. package/build/client/_app/immutable/entry/app.LopPl7G5.js.br +0 -0
  329. package/build/client/_app/immutable/entry/app.LopPl7G5.js.gz +0 -0
  330. package/build/client/_app/immutable/entry/start.Cg5Afe6E.js +0 -1
  331. package/build/client/_app/immutable/entry/start.Cg5Afe6E.js.br +0 -1
  332. package/build/client/_app/immutable/entry/start.Cg5Afe6E.js.gz +0 -0
  333. package/build/client/_app/immutable/nodes/0.n1Zne31Q.js +0 -1
  334. package/build/client/_app/immutable/nodes/0.n1Zne31Q.js.br +0 -0
  335. package/build/client/_app/immutable/nodes/0.n1Zne31Q.js.gz +0 -0
  336. package/build/client/_app/immutable/nodes/1.viUd6sTI.js +0 -1
  337. package/build/client/_app/immutable/nodes/1.viUd6sTI.js.br +0 -3
  338. package/build/client/_app/immutable/nodes/1.viUd6sTI.js.gz +0 -0
  339. package/build/client/_app/immutable/nodes/2.DsX_M4-Z.js +0 -1
  340. package/build/client/_app/immutable/nodes/2.DsX_M4-Z.js.br +0 -0
  341. package/build/client/_app/immutable/nodes/2.DsX_M4-Z.js.gz +0 -0
  342. package/build/client/_app/immutable/nodes/3.DVc7iZMv.js +0 -1
  343. package/build/client/_app/immutable/nodes/3.DVc7iZMv.js.br +0 -0
  344. package/build/client/_app/immutable/nodes/3.DVc7iZMv.js.gz +0 -0
  345. package/build/client/_app/immutable/nodes/4.CsYXQz3Y.js +0 -19
  346. package/build/client/_app/immutable/nodes/4.CsYXQz3Y.js.br +0 -0
  347. package/build/client/_app/immutable/nodes/4.CsYXQz3Y.js.gz +0 -0
  348. package/build/client/_app/immutable/nodes/5.OYZYGgdQ.js +0 -4
  349. package/build/client/_app/immutable/nodes/5.OYZYGgdQ.js.br +0 -0
  350. package/build/client/_app/immutable/nodes/5.OYZYGgdQ.js.gz +0 -0
  351. package/build/client/_app/immutable/nodes/6.D4Oy0UwK.js +0 -1
  352. package/build/client/_app/immutable/nodes/6.D4Oy0UwK.js.br +0 -0
  353. package/build/client/_app/immutable/nodes/6.D4Oy0UwK.js.gz +0 -0
  354. package/build/client/_app/immutable/nodes/7.BvvIQZgW.js +0 -1
  355. package/build/client/_app/immutable/nodes/7.BvvIQZgW.js.br +0 -0
  356. package/build/client/_app/immutable/nodes/7.BvvIQZgW.js.gz +0 -0
  357. package/build/client/_app/immutable/nodes/8.BypRBgKA.js +0 -1
  358. package/build/client/_app/immutable/nodes/8.BypRBgKA.js.br +0 -0
  359. package/build/client/_app/immutable/nodes/8.BypRBgKA.js.gz +0 -0
  360. package/build/client/_app/immutable/nodes/9.Cvhy8NSW.js +0 -5
  361. package/build/client/_app/immutable/nodes/9.Cvhy8NSW.js.br +0 -0
  362. package/build/client/_app/immutable/nodes/9.Cvhy8NSW.js.gz +0 -0
  363. package/build/server/chunks/0-DYSdORF4.js +0 -9
  364. package/build/server/chunks/1-DriLpuch.js +0 -9
  365. package/build/server/chunks/4-ipq2Fo20.js +0 -9
  366. package/build/server/chunks/4-ipq2Fo20.js.map +0 -1
  367. package/build/server/chunks/5-CaAZ_pnW.js +0 -9
  368. package/build/server/chunks/6-Djkq9gPL.js +0 -9
  369. package/build/server/chunks/7-Bw1DwzQC.js +0 -9
  370. package/build/server/chunks/7-Bw1DwzQC.js.map +0 -1
  371. package/build/server/chunks/ChatMessage-jkPoi0IR.js.map +0 -1
  372. package/build/server/chunks/Navbar-C72vlTUN.js.map +0 -1
  373. package/build/server/chunks/_page.svelte-C6_O57B-.js.map +0 -1
  374. package/build/server/chunks/_page.svelte-DzrHD3Dp.js +0 -326
  375. package/build/server/chunks/_page.svelte-DzrHD3Dp.js.map +0 -1
  376. package/build/server/chunks/_server.ts-CWmKP3RO.js +0 -614
  377. package/build/server/chunks/_server.ts-CWmKP3RO.js.map +0 -1
  378. package/build/server/chunks/_server.ts-FJA0FE83.js +0 -205
  379. package/build/server/chunks/_server.ts-FJA0FE83.js.map +0 -1
  380. package/build/server/chunks/_server.ts-NsPlw6SY.js +0 -86
  381. package/build/server/chunks/_server.ts-NsPlw6SY.js.map +0 -1
  382. package/build/server/chunks/src-Bqr11v--.js.map +0 -1
  383. package/build/server/chunks/theme-state.svelte-_CMr5Hu9.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"_server.ts-CWmKP3RO.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/akm/health-report/_server.ts.js"],"sourcesContent":["import { c as getState } from \"../../../../../chunks/endpoints.js\";\nimport { d as requireAdmin, o as getRequestId } from \"../../../../../chunks/helpers.js\";\nimport { n as runAkmCommand, r as safeParseJsonObject } from \"../../../../../chunks/akm.js\";\n//#region src/lib/server/akm-health-report.ts\nvar AKM_HEALTH_REPORT_WINDOWS = [\n\t\"24h\",\n\t\"72h\",\n\t\"7d\",\n\t\"14d\",\n\t\"30d\"\n];\nfunction asRecord(value) {\n\treturn value && typeof value === \"object\" && !Array.isArray(value) ? value : null;\n}\nfunction asArray(value) {\n\treturn Array.isArray(value) ? value : [];\n}\nfunction asNumber(value) {\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : 0;\n}\nfunction asString(value) {\n\treturn typeof value === \"string\" ? value : \"\";\n}\nfunction asBoolean(value) {\n\treturn value === true;\n}\nfunction clampWindow(value) {\n\treturn AKM_HEALTH_REPORT_WINDOWS.includes(value ?? \"\") ? value : \"72h\";\n}\nfunction escapeHtml(value) {\n\treturn value.replaceAll(\"&\", \"&amp;\").replaceAll(\"<\", \"&lt;\").replaceAll(\">\", \"&gt;\").replaceAll(\"\\\"\", \"&quot;\").replaceAll(\"'\", \"&#39;\");\n}\nfunction scriptJson(value) {\n\treturn JSON.stringify(value).replaceAll(\"<\", \"\\\\u003c\");\n}\nfunction fmtInt(value) {\n\treturn new Intl.NumberFormat(\"en-US\", { maximumFractionDigits: 0 }).format(value);\n}\nfunction fmtPercent(value) {\n\treturn `${(value * 100).toFixed(value === 0 || value >= .1 ? 0 : 1)}%`;\n}\nfunction fmtDuration(ms) {\n\tif (!Number.isFinite(ms) || ms <= 0) return \"0s\";\n\tif (ms < 1e3) return `${Math.round(ms)}ms`;\n\tconst seconds = ms / 1e3;\n\tif (seconds < 60) return `${seconds.toFixed(seconds >= 10 ? 0 : 1)}s`;\n\tconst minutes = Math.floor(seconds / 60);\n\tconst remSeconds = Math.round(seconds % 60);\n\tif (minutes < 60) return `${minutes}m ${remSeconds}s`;\n\treturn `${Math.floor(minutes / 60)}h ${minutes % 60}m`;\n}\nfunction fmtUtc(value) {\n\tif (!value) return \"n/a\";\n\tconst d = new Date(value);\n\tif (Number.isNaN(d.getTime())) return \"n/a\";\n\treturn d.toLocaleString(\"en-US\", {\n\t\tdateStyle: \"medium\",\n\t\ttimeStyle: \"short\",\n\t\ttimeZone: \"UTC\"\n\t}) + \" UTC\";\n}\nfunction metricDelta(current, prior) {\n\tif (prior === current) return \"flat vs prior window\";\n\tif (prior === 0) return current > 0 ? \"new vs prior window\" : \"flat vs prior window\";\n\tconst pct = (current - prior) / Math.abs(prior) * 100;\n\treturn `${pct > 0 ? \"up\" : \"down\"} ${Math.abs(pct).toFixed(Math.abs(pct) >= 10 ? 0 : 1)}% vs prior window`;\n}\nfunction statusClass(status) {\n\tif (status === \"ok\" || status === \"pass\") return \"ok\";\n\tif (status === \"warn\") return \"warn\";\n\treturn \"fail\";\n}\nfunction buildCards(current, prior, proposalCount) {\n\tconst invoked = asNumber(current.invoked);\n\tconst completed = asNumber(current.completed);\n\tconst completionRate = invoked > 0 ? completed / invoked : 0;\n\tconst failRate = asNumber(asRecord(current.actions)?.error) > 0 && invoked > 0 ? asNumber(asRecord(current.actions)?.error) / invoked : 0;\n\tconst promoted = asNumber(asRecord(current.consolidation)?.promoted);\n\tconst written = asNumber(asRecord(current.memoryInference)?.written);\n\tconst entities = asNumber(asRecord(current.graphExtraction)?.entities);\n\tconst medianMs = asNumber(asRecord(current.wallTime)?.medianMs);\n\tconst priorInvoked = asNumber(prior.invoked);\n\tconst priorCompleted = asNumber(prior.completed);\n\tconst priorCompletionRate = priorInvoked > 0 ? priorCompleted / priorInvoked : 0;\n\tconst priorFailRate = asNumber(asRecord(prior.actions)?.error) > 0 && priorInvoked > 0 ? asNumber(asRecord(prior.actions)?.error) / priorInvoked : 0;\n\treturn [\n\t\t{\n\t\t\tlabel: \"Completion rate\",\n\t\t\tvalue: fmtPercent(completionRate),\n\t\t\tsub: metricDelta(completionRate, priorCompletionRate)\n\t\t},\n\t\t{\n\t\t\tlabel: \"Fail rate\",\n\t\t\tvalue: fmtPercent(failRate),\n\t\t\tsub: metricDelta(failRate, priorFailRate)\n\t\t},\n\t\t{\n\t\t\tlabel: \"Promoted\",\n\t\t\tvalue: fmtInt(promoted),\n\t\t\tsub: metricDelta(promoted, asNumber(asRecord(prior.consolidation)?.promoted))\n\t\t},\n\t\t{\n\t\t\tlabel: \"MI written\",\n\t\t\tvalue: fmtInt(written),\n\t\t\tsub: metricDelta(written, asNumber(asRecord(prior.memoryInference)?.written))\n\t\t},\n\t\t{\n\t\t\tlabel: \"Graph entities\",\n\t\t\tvalue: fmtInt(entities),\n\t\t\tsub: metricDelta(entities, asNumber(asRecord(prior.graphExtraction)?.entities))\n\t\t},\n\t\t{\n\t\t\tlabel: \"Median duration\",\n\t\t\tvalue: fmtDuration(medianMs),\n\t\t\tsub: metricDelta(medianMs, asNumber(asRecord(prior.wallTime)?.medianMs))\n\t\t},\n\t\t{\n\t\t\tlabel: \"Runs\",\n\t\t\tvalue: fmtInt(completed),\n\t\t\tsub: metricDelta(completed, priorCompleted)\n\t\t},\n\t\t{\n\t\t\tlabel: \"Pending proposals\",\n\t\t\tvalue: fmtInt(proposalCount),\n\t\t\tsub: proposalCount > 0 ? \"review queue has pending items\" : \"no pending proposals\"\n\t\t}\n\t].map((card) => `\n <div class=\"card\">\n <div class=\"card-label\">${escapeHtml(card.label)}</div>\n <div class=\"card-value\">${escapeHtml(card.value)}</div>\n <div class=\"card-sub\">${escapeHtml(card.sub)}</div>\n </div>`).join(\"\");\n}\nfunction buildAdvisories(health) {\n\tconst items = [...asArray(health.advisories), ...asArray(health.hardChecks).filter((item) => {\n\t\tconst status = asString(asRecord(item)?.status);\n\t\treturn status === \"warn\" || status === \"fail\";\n\t})].map((item) => asRecord(item)).filter((item) => item !== null);\n\tif (items.length === 0) return \"<div class=\\\"notice ok\\\">No active advisories for this window.</div>\";\n\treturn items.map((item) => {\n\t\tconst status = statusClass(asString(item.status));\n\t\tconst name = asString(item.name) || \"advisory\";\n\t\tconst message = asString(item.message) || \"No details.\";\n\t\treturn `<div class=\"notice ${status}\"><strong>${escapeHtml(name)}</strong><span>${escapeHtml(message)}</span></div>`;\n\t}).join(\"\");\n}\nfunction buildProposalRows(proposals) {\n\tif (proposals.length === 0) return \"<tr><td colspan=\\\"4\\\" class=\\\"empty\\\">No pending proposals.</td></tr>\";\n\treturn proposals.slice(0, 20).map((proposal) => `\n <tr>\n <td>${escapeHtml(proposal.ref || proposal.id || \"unknown\")}</td>\n <td>${escapeHtml(proposal.source || \"unknown\")}</td>\n <td>${escapeHtml(fmtUtc(proposal.createdAt))}</td>\n <td>${escapeHtml(proposal.id || \"\")}</td>\n </tr>`).join(\"\");\n}\nfunction buildRunRows(runs) {\n\tif (runs.length === 0) return \"<tr><td colspan=\\\"6\\\" class=\\\"empty\\\">No improve runs in this window.</td></tr>\";\n\treturn runs.slice(-10).reverse().map((run, index) => {\n\t\tconst consolidation = asRecord(run.consolidation);\n\t\tconst memoryInference = asRecord(run.memoryInference);\n\t\tconst graphExtraction = asRecord(run.graphExtraction);\n\t\tconst startedAt = asString(run.startedAt);\n\t\tconst durationMs = asNumber(run.wallTimeMs) || asNumber(run.durationMs);\n\t\treturn `\n <tr>\n <td>${escapeHtml(asString(run.runId) || asString(run.id) || `run-${index + 1}`)}</td>\n <td>${escapeHtml(fmtUtc(startedAt))}</td>\n <td>${escapeHtml(fmtDuration(durationMs))}</td>\n <td>${escapeHtml(String(asBoolean(run.ok) ? \"ok\" : \"fail\"))}</td>\n <td>${escapeHtml(fmtInt(asNumber(consolidation?.promoted)))}</td>\n <td>${escapeHtml(fmtInt(asNumber(memoryInference?.written)))}</td>\n <td>${escapeHtml(fmtInt(asNumber(graphExtraction?.entities)))}</td>\n </tr>`;\n\t}).join(\"\");\n}\nfunction buildSummaryRows(current) {\n\treturn [\n\t\t[\"Invoked\", fmtInt(asNumber(current.invoked))],\n\t\t[\"Completed\", fmtInt(asNumber(current.completed))],\n\t\t[\"Skipped\", fmtInt(asNumber(current.skipped))],\n\t\t[\"Promoted\", fmtInt(asNumber(asRecord(current.consolidation)?.promoted))],\n\t\t[\"Merged\", fmtInt(asNumber(asRecord(current.consolidation)?.merged))],\n\t\t[\"Deleted\", fmtInt(asNumber(asRecord(current.consolidation)?.deleted))],\n\t\t[\"Judged no action\", fmtInt(asNumber(asRecord(current.consolidation)?.judgedNoAction))],\n\t\t[\"Inference written\", fmtInt(asNumber(asRecord(current.memoryInference)?.written))],\n\t\t[\"Graph entities\", fmtInt(asNumber(asRecord(current.graphExtraction)?.entities))],\n\t\t[\"Median wall time\", fmtDuration(asNumber(asRecord(current.wallTime)?.medianMs))]\n\t].map(([label, value]) => `\n <tr>\n <th>${escapeHtml(label)}</th>\n <td>${escapeHtml(value)}</td>\n </tr>`).join(\"\");\n}\nfunction renderHtml(window, health, proposals) {\n\tconst improve = asRecord(health.improve) ?? {};\n\tconst windows = asArray(health.windows).map((item) => asRecord(item)).filter((item) => item !== null);\n\tconst currentWindow = asRecord(windows.find((item) => asString(item.name) === \"current\")?.improve) ?? improve;\n\tconst priorWindow = asRecord(windows.find((item) => asString(item.name) === \"prior\")?.improve) ?? {};\n\tconst runs = asArray(health.runs).map((item) => asRecord(item)).filter((item) => item !== null);\n\tconst status = asString(health.status) || \"unknown\";\n\tconst since = asString(health.since);\n\tconst until = asString((windows.find((item) => asString(item.name) === \"current\") ?? {}).until);\n\tconst semanticStatus = asString(asRecord(asArray(health.advisories).map((item) => asRecord(item)).find((item) => asString(item?.name) === \"semantic-search-runtime\")?.evidence)?.status) || \"unknown\";\n\tconst payload = runs.map((run, index) => {\n\t\tconst consolidation = asRecord(run.consolidation);\n\t\tconst memoryInference = asRecord(run.memoryInference);\n\t\tconst graphExtraction = asRecord(run.graphExtraction);\n\t\treturn {\n\t\t\tlabel: asString(run.startedAt) ? fmtUtc(asString(run.startedAt)).replace(\" UTC\", \"\") : `Run ${index + 1}`,\n\t\t\twallTimeMs: asNumber(run.wallTimeMs) || asNumber(run.durationMs),\n\t\t\tpromoted: asNumber(consolidation?.promoted),\n\t\t\tmerged: asNumber(consolidation?.merged),\n\t\t\tdeleted: asNumber(consolidation?.deleted),\n\t\t\tjudgedNoAction: asNumber(consolidation?.judgedNoAction),\n\t\t\twritten: asNumber(memoryInference?.written),\n\t\t\tentities: asNumber(graphExtraction?.entities),\n\t\t\tconsolidationMs: asNumber(consolidation?.durationMs),\n\t\t\tmemoryInferenceMs: asNumber(memoryInference?.durationMs),\n\t\t\tgraphExtractionMs: asNumber(graphExtraction?.durationMs),\n\t\t\tok: asBoolean(run.ok)\n\t\t};\n\t});\n\treturn `<!doctype html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <title>AKM Health Report (${escapeHtml(window)})</title>\n <style>\n :root {\n color-scheme: dark;\n --bg: #07111f;\n --panel: #101b2d;\n --panel-soft: #15233a;\n --border: rgba(148, 163, 184, 0.18);\n --text: #e5eefc;\n --muted: #93a4bf;\n --ok: #22c55e;\n --warn: #f59e0b;\n --fail: #ef4444;\n --accent: #60a5fa;\n }\n * { box-sizing: border-box; }\n body {\n margin: 0;\n font-family: Inter, ui-sans-serif, system-ui, sans-serif;\n background: radial-gradient(circle at top, #14233d 0%, var(--bg) 55%);\n color: var(--text);\n padding: 24px;\n }\n .shell {\n max-width: 1400px;\n margin: 0 auto;\n display: grid;\n gap: 20px;\n }\n .hero, .panel {\n background: rgba(16, 27, 45, 0.9);\n border: 1px solid var(--border);\n border-radius: 18px;\n box-shadow: 0 12px 36px rgba(0, 0, 0, 0.28);\n }\n .hero {\n padding: 24px;\n display: grid;\n gap: 16px;\n }\n .hero-top {\n display: flex;\n justify-content: space-between;\n gap: 16px;\n align-items: flex-start;\n flex-wrap: wrap;\n }\n h1, h2, h3, p { margin: 0; }\n .eyebrow { color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; }\n .title { font-size: clamp(28px, 4vw, 40px); font-weight: 700; }\n .subtitle { color: var(--muted); max-width: 80ch; }\n .status {\n border-radius: 999px;\n padding: 8px 12px;\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n border: 1px solid transparent;\n }\n .status.ok { color: #bbf7d0; background: rgba(34, 197, 94, 0.14); border-color: rgba(34, 197, 94, 0.32); }\n .status.warn { color: #fde68a; background: rgba(245, 158, 11, 0.14); border-color: rgba(245, 158, 11, 0.32); }\n .status.fail { color: #fecaca; background: rgba(239, 68, 68, 0.14); border-color: rgba(239, 68, 68, 0.32); }\n .meta {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 12px;\n }\n .meta-item, .card {\n background: var(--panel-soft);\n border: 1px solid var(--border);\n border-radius: 14px;\n padding: 14px;\n }\n .meta-label, .card-label { color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: 0.06em; }\n .meta-value, .card-value { margin-top: 8px; font-size: 22px; font-weight: 700; }\n .card-sub { margin-top: 8px; color: var(--muted); font-size: 13px; }\n .cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 12px;\n }\n .grid-two {\n display: grid;\n grid-template-columns: minmax(0, 2fr) minmax(320px, 1fr);\n gap: 20px;\n }\n .panel { padding: 18px; }\n .panel-title { font-size: 18px; font-weight: 700; margin-bottom: 14px; }\n .chart-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 16px;\n }\n .chart {\n height: 320px;\n background: linear-gradient(180deg, rgba(255,255,255,0.01), rgba(255,255,255,0));\n border: 1px solid var(--border);\n border-radius: 14px;\n }\n .notice-list {\n display: grid;\n gap: 10px;\n }\n .notice {\n display: grid;\n gap: 6px;\n border-radius: 14px;\n padding: 14px;\n border: 1px solid var(--border);\n background: var(--panel-soft);\n }\n .notice.ok { border-color: rgba(34, 197, 94, 0.32); }\n .notice.warn { border-color: rgba(245, 158, 11, 0.32); }\n .notice.fail { border-color: rgba(239, 68, 68, 0.32); }\n .summary-table, .data-table {\n width: 100%;\n border-collapse: collapse;\n }\n .summary-table th, .summary-table td, .data-table th, .data-table td {\n padding: 10px 12px;\n border-bottom: 1px solid var(--border);\n text-align: left;\n vertical-align: top;\n }\n .summary-table th, .data-table th { color: var(--muted); font-weight: 600; }\n .empty { color: var(--muted); text-align: center; }\n .footer-note { color: var(--muted); font-size: 13px; }\n @media (max-width: 900px) {\n body { padding: 12px; }\n .grid-two { grid-template-columns: 1fr; }\n }\n </style>\n</head>\n<body>\n <div class=\"shell\">\n <section class=\"hero\">\n <div class=\"hero-top\">\n <div>\n <div class=\"eyebrow\">AKM Health Report</div>\n <h1 class=\"title\">Knowledge Health for ${escapeHtml(window)}</h1>\n <p class=\"subtitle\">Generated from live <code>akm health</code> data in the current stack stash. This mirrors the existing AKM report shape with KPI cards, ECharts trends, advisories, and queue visibility.</p>\n </div>\n <div class=\"status ${escapeHtml(statusClass(status))}\">${escapeHtml(status)}</div>\n </div>\n <div class=\"meta\">\n <div class=\"meta-item\">\n <div class=\"meta-label\">Window</div>\n <div class=\"meta-value\">${escapeHtml(window)}</div>\n </div>\n <div class=\"meta-item\">\n <div class=\"meta-label\">Since</div>\n <div class=\"meta-value\">${escapeHtml(fmtUtc(since))}</div>\n </div>\n <div class=\"meta-item\">\n <div class=\"meta-label\">Until</div>\n <div class=\"meta-value\">${escapeHtml(fmtUtc(until))}</div>\n </div>\n <div class=\"meta-item\">\n <div class=\"meta-label\">Semantic search</div>\n <div class=\"meta-value\">${escapeHtml(semanticStatus)}</div>\n </div>\n </div>\n <div class=\"cards\">${buildCards(currentWindow, priorWindow, proposals.length)}</div>\n </section>\n\n <section class=\"panel\">\n <h2 class=\"panel-title\">Run Trends</h2>\n <div class=\"chart-grid\">\n <div id=\"chartWallTime\" class=\"chart\"></div>\n <div id=\"chartPhases\" class=\"chart\"></div>\n <div id=\"chartOutput\" class=\"chart\"></div>\n <div id=\"chartKnowledge\" class=\"chart\"></div>\n </div>\n </section>\n\n <section class=\"grid-two\">\n <div class=\"panel\">\n <h2 class=\"panel-title\">Summary</h2>\n <table class=\"summary-table\">\n <tbody>${buildSummaryRows(currentWindow)}</tbody>\n </table>\n </div>\n <div class=\"panel\">\n <h2 class=\"panel-title\">Advisories</h2>\n <div class=\"notice-list\">${buildAdvisories(health)}</div>\n </div>\n </section>\n\n <section class=\"grid-two\">\n <div class=\"panel\">\n <h2 class=\"panel-title\">Pending Proposals (${escapeHtml(fmtInt(proposals.length))})</h2>\n <table class=\"data-table\">\n <thead>\n <tr><th>Ref</th><th>Source</th><th>Created</th><th>ID</th></tr>\n </thead>\n <tbody>${buildProposalRows(proposals)}</tbody>\n </table>\n </div>\n <div class=\"panel\">\n <h2 class=\"panel-title\">Recent Runs</h2>\n <table class=\"data-table\">\n <thead>\n <tr><th>Run</th><th>Started</th><th>Duration</th><th>Status</th><th>Promoted</th><th>MI</th><th>Entities</th></tr>\n </thead>\n <tbody>${buildRunRows(runs)}</tbody>\n </table>\n </div>\n </section>\n\n <div class=\"footer-note\">Charts use Apache ECharts from jsDelivr. If the browser blocks external assets, the summary tables above remain the source of truth.</div>\n </div>\n\n <script>window.REPORT_DATA = ${scriptJson(payload)};<\\/script>\n <script src=\"https://cdn.jsdelivr.net/npm/echarts@5.5.1/dist/echarts.min.js\"><\\/script>\n <script>\n const runs = Array.isArray(window.REPORT_DATA) ? window.REPORT_DATA : [];\n const textColor = '#dbe7ff';\n const mutedColor = '#93a4bf';\n const axisStyle = { axisLabel: { color: mutedColor }, axisLine: { lineStyle: { color: '#334155' } }, splitLine: { lineStyle: { color: 'rgba(148,163,184,0.12)' } } };\n function baseChart(id) {\n const el = document.getElementById(id);\n if (!el || !window.echarts) return null;\n return window.echarts.init(el, null, { renderer: 'canvas' });\n }\n function setEmpty(elId, label) {\n const el = document.getElementById(elId);\n if (!el) return;\n el.innerHTML = '<div style=\"height:100%;display:grid;place-items:center;color:' + mutedColor + ';font-size:14px;\">' + label + '</div>';\n }\n function labels() { return runs.map((run) => run.label); }\n if (!window.echarts) {\n ['chartWallTime', 'chartPhases', 'chartOutput', 'chartKnowledge'].forEach((id) => setEmpty(id, 'ECharts failed to load.'));\n } else if (runs.length === 0) {\n ['chartWallTime', 'chartPhases', 'chartOutput', 'chartKnowledge'].forEach((id) => setEmpty(id, 'No runs in this window.'));\n } else {\n const common = { textStyle: { color: textColor }, animation: false, grid: { left: 48, right: 18, top: 40, bottom: 36 }, tooltip: { trigger: 'axis' } };\n const wallTime = baseChart('chartWallTime');\n wallTime && wallTime.setOption({\n ...common,\n title: { text: 'Wall Time Per Run', textStyle: { color: textColor, fontSize: 14 } },\n xAxis: { type: 'category', data: labels(), ...axisStyle },\n yAxis: { type: 'value', axisLabel: { color: mutedColor, formatter: (value) => Math.round(value / 1000) + 's' }, splitLine: axisStyle.splitLine },\n series: [{ type: 'line', smooth: true, data: runs.map((run) => run.wallTimeMs), lineStyle: { color: '#60a5fa' }, itemStyle: { color: '#60a5fa' }, areaStyle: { color: 'rgba(96,165,250,0.14)' } }]\n });\n\n const phases = baseChart('chartPhases');\n phases && phases.setOption({\n ...common,\n title: { text: 'Phase Breakdown', textStyle: { color: textColor, fontSize: 14 } },\n legend: { textStyle: { color: mutedColor } },\n xAxis: { type: 'category', data: labels(), ...axisStyle },\n yAxis: { type: 'value', axisLabel: { color: mutedColor, formatter: (value) => Math.round(value / 1000) + 's' }, splitLine: axisStyle.splitLine },\n series: [\n { name: 'Consolidation', type: 'bar', stack: 'phases', data: runs.map((run) => run.consolidationMs), itemStyle: { color: '#60a5fa' } },\n { name: 'Memory Inference', type: 'bar', stack: 'phases', data: runs.map((run) => run.memoryInferenceMs), itemStyle: { color: '#a78bfa' } },\n { name: 'Graph Extraction', type: 'bar', stack: 'phases', data: runs.map((run) => run.graphExtractionMs), itemStyle: { color: '#34d399' } }\n ]\n });\n\n const output = baseChart('chartOutput');\n output && output.setOption({\n ...common,\n title: { text: 'Consolidation Output', textStyle: { color: textColor, fontSize: 14 } },\n legend: { textStyle: { color: mutedColor } },\n xAxis: { type: 'category', data: labels(), ...axisStyle },\n yAxis: { type: 'value', axisLabel: { color: mutedColor }, splitLine: axisStyle.splitLine },\n series: [\n { name: 'Promoted', type: 'bar', data: runs.map((run) => run.promoted), itemStyle: { color: '#22c55e' } },\n { name: 'Merged', type: 'bar', data: runs.map((run) => run.merged), itemStyle: { color: '#f59e0b' } },\n { name: 'Deleted', type: 'bar', data: runs.map((run) => run.deleted), itemStyle: { color: '#ef4444' } },\n { name: 'No action', type: 'bar', data: runs.map((run) => run.judgedNoAction), itemStyle: { color: '#94a3b8' } }\n ]\n });\n\n const knowledge = baseChart('chartKnowledge');\n knowledge && knowledge.setOption({\n ...common,\n title: { text: 'Knowledge Growth Signals', textStyle: { color: textColor, fontSize: 14 } },\n legend: { textStyle: { color: mutedColor } },\n xAxis: { type: 'category', data: labels(), ...axisStyle },\n yAxis: { type: 'value', axisLabel: { color: mutedColor }, splitLine: axisStyle.splitLine },\n series: [\n { name: 'MI written', type: 'line', smooth: true, data: runs.map((run) => run.written), itemStyle: { color: '#a78bfa' }, lineStyle: { color: '#a78bfa' } },\n { name: 'Entities', type: 'line', smooth: true, data: runs.map((run) => run.entities), itemStyle: { color: '#34d399' }, lineStyle: { color: '#34d399' } }\n ]\n });\n\n window.addEventListener('resize', () => {\n wallTime && wallTime.resize();\n phases && phases.resize();\n output && output.resize();\n knowledge && knowledge.resize();\n });\n }\n <\\/script>\n</body>\n</html>`;\n}\nasync function buildAkmHealthReport(state, requestedWindow) {\n\tconst window = clampWindow(requestedWindow);\n\tconst [healthResult, proposalsResult] = await Promise.all([runAkmCommand(state, [\n\t\t\"health\",\n\t\t`--since=${window}`,\n\t\t\"--group-by\",\n\t\t\"run\",\n\t\t`--window-compare=${window}`,\n\t\t\"--format\",\n\t\t\"json\"\n\t], 2e4), runAkmCommand(state, [\n\t\t\"proposal\",\n\t\t\"list\",\n\t\t\"--format\",\n\t\t\"json\"\n\t], 12e3)]);\n\tconst health = safeParseJsonObject(healthResult.stdout);\n\tconst proposalsPayload = safeParseJsonObject(proposalsResult.stdout);\n\tif (!health) {\n\t\tconst detail = [healthResult.stderr.trim(), healthResult.stdout.trim()].filter(Boolean).join(\"\\n\\n\");\n\t\treturn {\n\t\t\twindow,\n\t\t\thtml: `<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><title>AKM Health Report</title><style>body{margin:0;font-family:Inter,system-ui,sans-serif;background:#07111f;color:#e5eefc;padding:24px}main{max-width:860px;margin:0 auto;background:#101b2d;border:1px solid rgba(148,163,184,.18);border-radius:18px;padding:24px}pre{white-space:pre-wrap;background:#15233a;padding:16px;border-radius:12px;overflow:auto}code{font-family:ui-monospace,SFMono-Regular,monospace}</style></head><body><main><h1>AKM health report unavailable</h1><p>The admin UI could not build the report from <code>akm health</code> for window <code>${escapeHtml(window)}</code>.</p><pre>${escapeHtml(detail || \"The AKM CLI returned no parseable JSON output.\")}</pre></main></body></html>`\n\t\t};\n\t}\n\treturn {\n\t\thtml: renderHtml(window, health, asArray(proposalsPayload?.proposals).map((item) => asRecord(item)).filter((item) => item !== null).map((item) => ({\n\t\t\tid: asString(item.id),\n\t\t\tref: asString(item.ref),\n\t\t\tsource: asString(item.source),\n\t\t\tcreatedAt: asString(item.createdAt)\n\t\t}))),\n\t\twindow\n\t};\n}\n//#endregion\n//#region src/routes/admin/akm/health-report/+server.ts\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst denied = requireAdmin(event, requestId);\n\tif (denied) return denied;\n\ttry {\n\t\tconst { html } = await buildAkmHealthReport(getState(), event.url.searchParams.get(\"since\"));\n\t\treturn new Response(html, {\n\t\t\tstatus: 200,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"text/html; charset=utf-8\",\n\t\t\t\t\"cache-control\": \"no-store\",\n\t\t\t\t\"x-request-id\": requestId\n\t\t\t}\n\t\t});\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : \"Failed to build AKM health report.\";\n\t\treturn new Response(message, {\n\t\t\tstatus: 500,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"text/plain; charset=utf-8\",\n\t\t\t\t\"cache-control\": \"no-store\",\n\t\t\t\t\"x-request-id\": requestId\n\t\t\t}\n\t\t});\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AACtE;AACA;AACA,2BAA2B,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AACpF;AACA;AACA;AACA;AACA,kCAAkC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AACvD;AACA;AACA;AACA,kCAAkC,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D;AACA;AACA;AACA,kCAAkC,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D;AACA;AACA;AACA,kCAAkC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;AAC/D;AACA;AACA,yBAAyB,EAAE,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AACpF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACnD;AACA;AACA;AACA;AACA,iCAAiC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;AAC3D;AACA;;AAEA;AACA;AACA,mDAAmD,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1F;AACA;AACA;AACA;AACA,iBAAiB,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;AACtC;AACA;AACA;;AAEA;AACA;;AAEA,+BAA+B,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;AACR;AACA,eAAe,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE;AAC5D,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,eAAe,CAAC;AAC5C,CAAC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE;AACjF,EAAE,QAAQ;AACV,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACrB,EAAE,YAAY;AACd,EAAE,KAAK;AACP,EAAE,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAC9B,EAAE,UAAU;AACZ,EAAE;AACF,EAAE,EAAE,GAAG,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;AAC/B,EAAE,UAAU;AACZ,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE;AACF,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AACX,CAAC,MAAM,MAAM,GAAG,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAAC;AACxD,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,eAAe,CAAC,MAAM,CAAC;AACrE,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,MAAM,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACtG,EAAE,OAAO;AACT,GAAG,MAAM;AACT,GAAG,IAAI,EAAE,CAAC,irBAAirB,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,UAAU,CAAC,MAAM,IAAI,gDAAgD,CAAC,CAAC,2BAA2B;AACr0B,GAAG;AACH,CAAC;AACD,CAAC,OAAO;AACR,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACrJ,GAAG,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB,GAAG,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,GAAG,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,GAAG,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS;AACrC,GAAG,CAAC,CAAC,CAAC;AACN,EAAE;AACF,EAAE;AACF;AACA;AACA;AACG,IAAC,GAAG,GAAG,OAAO,KAAK,KAAK;AAC3B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AAC9C,CAAC,IAAI,MAAM,EAAE,OAAO,MAAM;AAC1B,CAAC,IAAI;AACL,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC9F,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;AAC5B,GAAG,MAAM,EAAE,GAAG;AACd,GAAG,OAAO,EAAE;AACZ,IAAI,cAAc,EAAE,0BAA0B;AAC9C,IAAI,eAAe,EAAE,UAAU;AAC/B,IAAI,cAAc,EAAE;AACpB;AACA,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;AACjB,EAAE,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,oCAAoC;AAC/F,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE;AAC/B,GAAG,MAAM,EAAE,GAAG;AACd,GAAG,OAAO,EAAE;AACZ,IAAI,cAAc,EAAE,2BAA2B;AAC/C,IAAI,eAAe,EAAE,UAAU;AAC/B,IAAI,cAAc,EAAE;AACpB;AACA,GAAG,CAAC;AACJ,CAAC;AACD;;;;"}
@@ -1,205 +0,0 @@
1
- import { ai as readStackEnv } from './src-Bqr11v--.js';
2
- import { b as getState } from './endpoints-CtFzewjq.js';
3
- import { d as getRequestId, r as requireAdmin, e as errorResponse } from './helpers-DHqjUGTB.js';
4
- import { o as opencodeFetch } from './http-oyGIz0mI.js';
5
- import { g as getCurrentConfig } from './config-gWehiHgc.js';
6
- import { existsSync, readFileSync } from 'node:fs';
7
- import { join } from 'node:path';
8
- import './chunk-CLZ62Ad-.js';
9
- import 'node:module';
10
- import 'buffer';
11
- import 'node:os';
12
- import 'fs';
13
- import 'path';
14
- import 'node:child_process';
15
- import 'node:url';
16
- import 'node:crypto';
17
- import 'events';
18
- import 'node:events';
19
- import 'node:stream';
20
- import 'node:string_decoder';
21
- import 'assert';
22
- import 'zlib';
23
- import 'node:assert';
24
- import 'node:fs/promises';
25
- import './coercion-TNFJisCC.js';
26
-
27
- //#region src/lib/server/speech-prep.ts
28
- function personaPath() {
29
- return join(getState().configDir, "assistant", "openpalm.md");
30
- }
31
- function readPersona() {
32
- const path = personaPath();
33
- if (!existsSync(path)) return "";
34
- try {
35
- return readFileSync(path, "utf-8").trim();
36
- } catch {
37
- return "";
38
- }
39
- }
40
- function extractText(response) {
41
- return (response.parts ?? []).filter((part) => part.type === "text" && typeof part.text === "string").map((part) => part.text?.trim() ?? "").join(" ").trim();
42
- }
43
- function buildPrompt(input) {
44
- const personaBlock = input.persona ? input.persona : "No persona markdown is configured. Use a neutral, helpful, conversational tone.";
45
- if (input.mode === "chat_ack") return [
46
- "You are preparing a short spoken acknowledgement for text-to-speech.",
47
- "Return only the exact words to speak.",
48
- "Keep it to one brief sentence.",
49
- "Sound conversational and aligned with the persona context.",
50
- "Do not use markdown, lists, or quotes.",
51
- "Do not answer the full request. Just acknowledge that you are working on it.",
52
- "",
53
- "Persona markdown:",
54
- personaBlock,
55
- "",
56
- "User request:",
57
- input.userText
58
- ].join("\n");
59
- return [
60
- "You are preparing a spoken summary for text-to-speech.",
61
- "Return only the exact words to speak.",
62
- "Rewrite the final assistant reply into a concise, natural, conversational response.",
63
- "Preserve the meaning and important caveats.",
64
- "Keep it brief enough for audio playback.",
65
- "Do not use markdown, lists, or quotes.",
66
- "",
67
- "Persona markdown:",
68
- personaBlock,
69
- "",
70
- "User request:",
71
- input.userText,
72
- "",
73
- "Final assistant reply:",
74
- input.assistantText ?? ""
75
- ].join("\n");
76
- }
77
- function resolveSpeechModel(config) {
78
- const small = typeof config.small_model === "string" ? config.small_model.trim() : "";
79
- if (small) return small;
80
- return (typeof config.model === "string" ? config.model.trim() : "") || null;
81
- }
82
- async function loadSpeechConfig() {
83
- try {
84
- return await opencodeFetch("/config");
85
- } catch {
86
- return getCurrentConfig();
87
- }
88
- }
89
- async function prepareSpeechText(input) {
90
- const userText = input.userText.trim();
91
- if (!userText) return null;
92
- if (input.mode === "chat_reply" && !input.assistantText?.trim()) return null;
93
- const persona = readPersona();
94
- const model = resolveSpeechModel(await loadSpeechConfig());
95
- const prompt = buildPrompt({
96
- mode: input.mode,
97
- userText,
98
- assistantText: input.assistantText?.trim(),
99
- persona
100
- });
101
- let sessionId = "";
102
- try {
103
- const created = await opencodeFetch("/session", {
104
- method: "POST",
105
- body: JSON.stringify({})
106
- });
107
- sessionId = typeof created.id === "string" ? created.id : "";
108
- if (!sessionId) return null;
109
- return extractText(await opencodeFetch(`/session/${encodeURIComponent(sessionId)}/message`, {
110
- method: "POST",
111
- body: JSON.stringify({
112
- parts: [{
113
- type: "text",
114
- text: prompt
115
- }],
116
- ...model ? { model } : {}
117
- })
118
- })) || null;
119
- } finally {
120
- if (sessionId) await opencodeFetch(`/session/${encodeURIComponent(sessionId)}`, { method: "DELETE" }).catch(() => {});
121
- }
122
- }
123
- //#endregion
124
- //#region src/routes/api/speak/+server.ts
125
- var DEFAULT_MODEL = "kokoro";
126
- var DEFAULT_VOICE = "bf_isabella";
127
- var DEFAULT_FORMAT = "wav";
128
- var UPSTREAM_TIMEOUT_MS = 6e4;
129
- function redactKey(s) {
130
- return s.replace(/(sk-[A-Za-z0-9_-]{4,})/g, "sk-***").replace(/(Bearer\s+)[A-Za-z0-9._-]+/gi, "$1***");
131
- }
132
- var POST = async (event) => {
133
- const requestId = getRequestId(event);
134
- const authError = requireAdmin(event, requestId);
135
- if (authError) return authError;
136
- const stackEnv = readStackEnv(getState().stackDir);
137
- const ttsBaseURL = (stackEnv.OP_TTS_BASE_URL || process.env.OP_TTS_BASE_URL || "").trim();
138
- const ttsModel = (stackEnv.OP_TTS_MODEL || process.env.OP_TTS_MODEL || "").trim() || DEFAULT_MODEL;
139
- const ttsVoice = (stackEnv.OP_TTS_VOICE || process.env.OP_TTS_VOICE || "").trim() || DEFAULT_VOICE;
140
- const ttsApiKey = (process.env.OP_TTS_API_KEY ?? "").trim();
141
- if (!ttsBaseURL) return errorResponse(503, "tts_not_configured", "Configure a TTS engine in Admin → Voice settings.", {}, requestId);
142
- let body;
143
- try {
144
- body = await event.request.json();
145
- } catch {
146
- return errorResponse(400, "bad_request", "Invalid JSON body", {}, requestId);
147
- }
148
- const b = body ?? {};
149
- const text = typeof b.text === "string" ? b.text.trim() : "";
150
- if (!text) return errorResponse(400, "bad_request", "\"text\" is required", {}, requestId);
151
- const mode = b.mode === "chat_ack" || b.mode === "chat_reply" ? b.mode : null;
152
- const userText = typeof b.userText === "string" ? b.userText.trim() : "";
153
- const assistantText = typeof b.assistantText === "string" ? b.assistantText.trim() : "";
154
- const voice = typeof b.voice === "string" && b.voice.trim() ? b.voice.trim() : ttsVoice;
155
- const format = typeof b.format === "string" && b.format.trim() ? b.format.trim() : DEFAULT_FORMAT;
156
- let speechText = text;
157
- if (mode) try {
158
- const prepared = await prepareSpeechText({
159
- mode,
160
- userText,
161
- assistantText
162
- });
163
- if (prepared) speechText = prepared;
164
- } catch (err) {
165
- console.warn("[api/speak] speech prep failed; falling back to raw text", err);
166
- }
167
- const upstreamUrl = ttsBaseURL.replace(/\/+$/, "") + "/v1/audio/speech";
168
- const headers = { "content-type": "application/json" };
169
- if (ttsApiKey) headers["authorization"] = `Bearer ${ttsApiKey}`;
170
- let upstream;
171
- try {
172
- upstream = await fetch(upstreamUrl, {
173
- method: "POST",
174
- headers,
175
- body: JSON.stringify({
176
- model: ttsModel,
177
- voice,
178
- input: speechText,
179
- response_format: format
180
- }),
181
- signal: AbortSignal.timeout(UPSTREAM_TIMEOUT_MS)
182
- });
183
- } catch (err) {
184
- return errorResponse(502, "upstream_error", `Could not reach TTS endpoint: ${redactKey(err instanceof Error ? err.message : String(err))}`, { upstream: upstreamUrl }, requestId);
185
- }
186
- if (!upstream.ok) {
187
- const body = await upstream.text().catch(() => "");
188
- return errorResponse(502, "upstream_error", `TTS endpoint returned ${upstream.status}`, {
189
- upstreamStatus: upstream.status,
190
- body: redactKey(body).slice(0, 500)
191
- }, requestId);
192
- }
193
- const responseHeaders = new Headers();
194
- responseHeaders.set("content-type", upstream.headers.get("content-type") ?? "audio/wav");
195
- const contentLength = upstream.headers.get("content-length");
196
- if (contentLength) responseHeaders.set("content-length", contentLength);
197
- responseHeaders.set("x-request-id", requestId);
198
- return new Response(upstream.body, {
199
- status: 200,
200
- headers: responseHeaders
201
- });
202
- };
203
-
204
- export { POST };
205
- //# sourceMappingURL=_server.ts-FJA0FE83.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_server.ts-FJA0FE83.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/speak/_server.ts.js"],"sourcesContent":["import { xt as readStackEnv } from \"../../../../chunks/src.js\";\nimport { c as getState } from \"../../../../chunks/endpoints.js\";\nimport { d as requireAdmin, i as errorResponse, o as getRequestId } from \"../../../../chunks/helpers.js\";\nimport { t as opencodeFetch } from \"../../../../chunks/http.js\";\nimport { t as getCurrentConfig } from \"../../../../chunks/config.js\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n//#region src/lib/server/speech-prep.ts\nfunction personaPath() {\n\treturn join(getState().configDir, \"assistant\", \"openpalm.md\");\n}\nfunction readPersona() {\n\tconst path = personaPath();\n\tif (!existsSync(path)) return \"\";\n\ttry {\n\t\treturn readFileSync(path, \"utf-8\").trim();\n\t} catch {\n\t\treturn \"\";\n\t}\n}\nfunction extractText(response) {\n\treturn (response.parts ?? []).filter((part) => part.type === \"text\" && typeof part.text === \"string\").map((part) => part.text?.trim() ?? \"\").join(\" \").trim();\n}\nfunction buildPrompt(input) {\n\tconst personaBlock = input.persona ? input.persona : \"No persona markdown is configured. Use a neutral, helpful, conversational tone.\";\n\tif (input.mode === \"chat_ack\") return [\n\t\t\"You are preparing a short spoken acknowledgement for text-to-speech.\",\n\t\t\"Return only the exact words to speak.\",\n\t\t\"Keep it to one brief sentence.\",\n\t\t\"Sound conversational and aligned with the persona context.\",\n\t\t\"Do not use markdown, lists, or quotes.\",\n\t\t\"Do not answer the full request. Just acknowledge that you are working on it.\",\n\t\t\"\",\n\t\t\"Persona markdown:\",\n\t\tpersonaBlock,\n\t\t\"\",\n\t\t\"User request:\",\n\t\tinput.userText\n\t].join(\"\\n\");\n\treturn [\n\t\t\"You are preparing a spoken summary for text-to-speech.\",\n\t\t\"Return only the exact words to speak.\",\n\t\t\"Rewrite the final assistant reply into a concise, natural, conversational response.\",\n\t\t\"Preserve the meaning and important caveats.\",\n\t\t\"Keep it brief enough for audio playback.\",\n\t\t\"Do not use markdown, lists, or quotes.\",\n\t\t\"\",\n\t\t\"Persona markdown:\",\n\t\tpersonaBlock,\n\t\t\"\",\n\t\t\"User request:\",\n\t\tinput.userText,\n\t\t\"\",\n\t\t\"Final assistant reply:\",\n\t\tinput.assistantText ?? \"\"\n\t].join(\"\\n\");\n}\nfunction resolveSpeechModel(config) {\n\tconst small = typeof config.small_model === \"string\" ? config.small_model.trim() : \"\";\n\tif (small) return small;\n\treturn (typeof config.model === \"string\" ? config.model.trim() : \"\") || null;\n}\nasync function loadSpeechConfig() {\n\ttry {\n\t\treturn await opencodeFetch(\"/config\");\n\t} catch {\n\t\treturn getCurrentConfig();\n\t}\n}\nasync function prepareSpeechText(input) {\n\tconst userText = input.userText.trim();\n\tif (!userText) return null;\n\tif (input.mode === \"chat_reply\" && !input.assistantText?.trim()) return null;\n\tconst persona = readPersona();\n\tconst model = resolveSpeechModel(await loadSpeechConfig());\n\tconst prompt = buildPrompt({\n\t\tmode: input.mode,\n\t\tuserText,\n\t\tassistantText: input.assistantText?.trim(),\n\t\tpersona\n\t});\n\tlet sessionId = \"\";\n\ttry {\n\t\tconst created = await opencodeFetch(\"/session\", {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: JSON.stringify({})\n\t\t});\n\t\tsessionId = typeof created.id === \"string\" ? created.id : \"\";\n\t\tif (!sessionId) return null;\n\t\treturn extractText(await opencodeFetch(`/session/${encodeURIComponent(sessionId)}/message`, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: JSON.stringify({\n\t\t\t\tparts: [{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: prompt\n\t\t\t\t}],\n\t\t\t\t...model ? { model } : {}\n\t\t\t})\n\t\t})) || null;\n\t} finally {\n\t\tif (sessionId) await opencodeFetch(`/session/${encodeURIComponent(sessionId)}`, { method: \"DELETE\" }).catch(() => {});\n\t}\n}\n//#endregion\n//#region src/routes/api/speak/+server.ts\nvar DEFAULT_MODEL = \"kokoro\";\nvar DEFAULT_VOICE = \"bf_isabella\";\nvar DEFAULT_FORMAT = \"wav\";\nvar UPSTREAM_TIMEOUT_MS = 6e4;\nfunction redactKey(s) {\n\treturn s.replace(/(sk-[A-Za-z0-9_-]{4,})/g, \"sk-***\").replace(/(Bearer\\s+)[A-Za-z0-9._-]+/gi, \"$1***\");\n}\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst stackEnv = readStackEnv(getState().stackDir);\n\tconst ttsBaseURL = (stackEnv.OP_TTS_BASE_URL || process.env.OP_TTS_BASE_URL || \"\").trim();\n\tconst ttsModel = (stackEnv.OP_TTS_MODEL || process.env.OP_TTS_MODEL || \"\").trim() || DEFAULT_MODEL;\n\tconst ttsVoice = (stackEnv.OP_TTS_VOICE || process.env.OP_TTS_VOICE || \"\").trim() || DEFAULT_VOICE;\n\tconst ttsApiKey = (process.env.OP_TTS_API_KEY ?? \"\").trim();\n\tif (!ttsBaseURL) return errorResponse(503, \"tts_not_configured\", \"Configure a TTS engine in Admin → Voice settings.\", {}, requestId);\n\tlet body;\n\ttry {\n\t\tbody = await event.request.json();\n\t} catch {\n\t\treturn errorResponse(400, \"bad_request\", \"Invalid JSON body\", {}, requestId);\n\t}\n\tconst b = body ?? {};\n\tconst text = typeof b.text === \"string\" ? b.text.trim() : \"\";\n\tif (!text) return errorResponse(400, \"bad_request\", \"\\\"text\\\" is required\", {}, requestId);\n\tconst mode = b.mode === \"chat_ack\" || b.mode === \"chat_reply\" ? b.mode : null;\n\tconst userText = typeof b.userText === \"string\" ? b.userText.trim() : \"\";\n\tconst assistantText = typeof b.assistantText === \"string\" ? b.assistantText.trim() : \"\";\n\tconst voice = typeof b.voice === \"string\" && b.voice.trim() ? b.voice.trim() : ttsVoice;\n\tconst format = typeof b.format === \"string\" && b.format.trim() ? b.format.trim() : DEFAULT_FORMAT;\n\tlet speechText = text;\n\tif (mode) try {\n\t\tconst prepared = await prepareSpeechText({\n\t\t\tmode,\n\t\t\tuserText,\n\t\t\tassistantText\n\t\t});\n\t\tif (prepared) speechText = prepared;\n\t} catch (err) {\n\t\tconsole.warn(\"[api/speak] speech prep failed; falling back to raw text\", err);\n\t}\n\tconst upstreamUrl = ttsBaseURL.replace(/\\/+$/, \"\") + \"/v1/audio/speech\";\n\tconst headers = { \"content-type\": \"application/json\" };\n\tif (ttsApiKey) headers[\"authorization\"] = `Bearer ${ttsApiKey}`;\n\tlet upstream;\n\ttry {\n\t\tupstream = await fetch(upstreamUrl, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tbody: JSON.stringify({\n\t\t\t\tmodel: ttsModel,\n\t\t\t\tvoice,\n\t\t\t\tinput: speechText,\n\t\t\t\tresponse_format: format\n\t\t\t}),\n\t\t\tsignal: AbortSignal.timeout(UPSTREAM_TIMEOUT_MS)\n\t\t});\n\t} catch (err) {\n\t\treturn errorResponse(502, \"upstream_error\", `Could not reach TTS endpoint: ${redactKey(err instanceof Error ? err.message : String(err))}`, { upstream: upstreamUrl }, requestId);\n\t}\n\tif (!upstream.ok) {\n\t\tconst body = await upstream.text().catch(() => \"\");\n\t\treturn errorResponse(502, \"upstream_error\", `TTS endpoint returned ${upstream.status}`, {\n\t\t\tupstreamStatus: upstream.status,\n\t\t\tbody: redactKey(body).slice(0, 500)\n\t\t}, requestId);\n\t}\n\tconst responseHeaders = new Headers();\n\tresponseHeaders.set(\"content-type\", upstream.headers.get(\"content-type\") ?? \"audio/wav\");\n\tconst contentLength = upstream.headers.get(\"content-length\");\n\tif (contentLength) responseHeaders.set(\"content-length\", contentLength);\n\tresponseHeaders.set(\"x-request-id\", requestId);\n\treturn new Response(upstream.body, {\n\t\tstatus: 200,\n\t\theaders: responseHeaders\n\t});\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":"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"}
@@ -1,86 +0,0 @@
1
- import { ai as readStackEnv, ac as patchSecretsEnvFile, az as writeFileAtomic } from './src-Bqr11v--.js';
2
- import { b as getState } from './endpoints-CtFzewjq.js';
3
- import { d as getRequestId, r as requireAdmin, k as jsonResponse, w as withAdminBody, e as errorResponse } from './helpers-DHqjUGTB.js';
4
- import { existsSync, readFileSync, mkdirSync } from 'node:fs';
5
- import { join } from 'node:path';
6
- import './chunk-CLZ62Ad-.js';
7
- import 'node:module';
8
- import 'buffer';
9
- import 'node:os';
10
- import 'fs';
11
- import 'path';
12
- import 'node:child_process';
13
- import 'node:url';
14
- import 'node:crypto';
15
- import 'events';
16
- import 'node:events';
17
- import 'node:stream';
18
- import 'node:string_decoder';
19
- import 'assert';
20
- import 'zlib';
21
- import 'node:assert';
22
- import 'node:fs/promises';
23
-
24
- //#region src/routes/admin/assistant/+server.ts
25
- var DEFAULT_PROJECT_NAME = "openpalm";
26
- var DEFAULT_ASSISTANT_BIND_ADDRESS = "127.0.0.1";
27
- var LAN_ASSISTANT_BIND_ADDRESS = "0.0.0.0";
28
- var PROJECT_NAME_RE = /^[a-z0-9][a-z0-9_-]*$/;
29
- function personaPath(configDir) {
30
- return join(configDir, "assistant", "openpalm.md");
31
- }
32
- function readPersona(configDir) {
33
- const path = personaPath(configDir);
34
- if (!existsSync(path)) return "";
35
- try {
36
- return readFileSync(path, "utf-8");
37
- } catch {
38
- return "";
39
- }
40
- }
41
- function normalizeProjectName(raw) {
42
- if (typeof raw !== "string") return null;
43
- const value = raw.trim() || DEFAULT_PROJECT_NAME;
44
- if (value.length > 63) return null;
45
- return PROJECT_NAME_RE.test(value) ? value : null;
46
- }
47
- var GET = async (event) => {
48
- const requestId = getRequestId(event);
49
- const denied = requireAdmin(event, requestId);
50
- if (denied) return denied;
51
- const state = getState();
52
- const env = readStackEnv(state.stackDir);
53
- return jsonResponse(200, {
54
- projectName: env.OP_PROJECT_NAME?.trim() || DEFAULT_PROJECT_NAME,
55
- lanExposureEnabled: (env.OP_ASSISTANT_BIND_ADDRESS?.trim() || DEFAULT_ASSISTANT_BIND_ADDRESS) === LAN_ASSISTANT_BIND_ADDRESS,
56
- stackEnvPath: "knowledge/env/stack.env",
57
- personaPath: "config/assistant/openpalm.md",
58
- personaContent: readPersona(state.configDir)
59
- }, requestId);
60
- };
61
- var PUT = async (event) => withAdminBody(event, async ({ requestId, body }) => {
62
- const projectName = normalizeProjectName(body.projectName);
63
- if (!projectName) return errorResponse(400, "bad_request", "projectName must be 1-63 chars of lowercase letters, numbers, dashes, or underscores.", {}, requestId);
64
- if (typeof body.personaContent !== "string") return errorResponse(400, "bad_request", "personaContent must be a string", {}, requestId);
65
- if (typeof body.lanExposureEnabled !== "boolean") return errorResponse(400, "bad_request", "lanExposureEnabled must be a boolean", {}, requestId);
66
- const state = getState();
67
- patchSecretsEnvFile(state.stackDir, {
68
- OP_PROJECT_NAME: projectName,
69
- OP_ASSISTANT_BIND_ADDRESS: body.lanExposureEnabled ? LAN_ASSISTANT_BIND_ADDRESS : DEFAULT_ASSISTANT_BIND_ADDRESS
70
- });
71
- const path = personaPath(state.configDir);
72
- mkdirSync(join(state.configDir, "assistant"), { recursive: true });
73
- const personaContent = body.personaContent.endsWith("\n") ? body.personaContent : `${body.personaContent}\n`;
74
- writeFileAtomic(path, personaContent, 420);
75
- return jsonResponse(200, {
76
- ok: true,
77
- projectName,
78
- lanExposureEnabled: body.lanExposureEnabled,
79
- stackEnvPath: "knowledge/env/stack.env",
80
- personaPath: "config/assistant/openpalm.md",
81
- personaContent
82
- }, requestId);
83
- });
84
-
85
- export { GET, PUT };
86
- //# sourceMappingURL=_server.ts-NsPlw6SY.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_server.ts-NsPlw6SY.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/assistant/_server.ts.js"],"sourcesContent":["import { N as writeFileAtomic, bt as patchSecretsEnvFile, xt as readStackEnv } from \"../../../../chunks/src.js\";\nimport { c as getState } from \"../../../../chunks/endpoints.js\";\nimport { d as requireAdmin, i as errorResponse, l as jsonResponse, o as getRequestId, p as withAdminBody } from \"../../../../chunks/helpers.js\";\nimport { existsSync, mkdirSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n//#region src/routes/admin/assistant/+server.ts\nvar DEFAULT_PROJECT_NAME = \"openpalm\";\nvar DEFAULT_ASSISTANT_BIND_ADDRESS = \"127.0.0.1\";\nvar LAN_ASSISTANT_BIND_ADDRESS = \"0.0.0.0\";\nvar PROJECT_NAME_RE = /^[a-z0-9][a-z0-9_-]*$/;\nfunction personaPath(configDir) {\n\treturn join(configDir, \"assistant\", \"openpalm.md\");\n}\nfunction readPersona(configDir) {\n\tconst path = personaPath(configDir);\n\tif (!existsSync(path)) return \"\";\n\ttry {\n\t\treturn readFileSync(path, \"utf-8\");\n\t} catch {\n\t\treturn \"\";\n\t}\n}\nfunction normalizeProjectName(raw) {\n\tif (typeof raw !== \"string\") return null;\n\tconst value = raw.trim() || DEFAULT_PROJECT_NAME;\n\tif (value.length > 63) return null;\n\treturn PROJECT_NAME_RE.test(value) ? value : null;\n}\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst denied = requireAdmin(event, requestId);\n\tif (denied) return denied;\n\tconst state = getState();\n\tconst env = readStackEnv(state.stackDir);\n\treturn jsonResponse(200, {\n\t\tprojectName: env.OP_PROJECT_NAME?.trim() || DEFAULT_PROJECT_NAME,\n\t\tlanExposureEnabled: (env.OP_ASSISTANT_BIND_ADDRESS?.trim() || DEFAULT_ASSISTANT_BIND_ADDRESS) === LAN_ASSISTANT_BIND_ADDRESS,\n\t\tstackEnvPath: \"knowledge/env/stack.env\",\n\t\tpersonaPath: \"config/assistant/openpalm.md\",\n\t\tpersonaContent: readPersona(state.configDir)\n\t}, requestId);\n};\nvar PUT = async (event) => withAdminBody(event, async ({ requestId, body }) => {\n\tconst projectName = normalizeProjectName(body.projectName);\n\tif (!projectName) return errorResponse(400, \"bad_request\", \"projectName must be 1-63 chars of lowercase letters, numbers, dashes, or underscores.\", {}, requestId);\n\tif (typeof body.personaContent !== \"string\") return errorResponse(400, \"bad_request\", \"personaContent must be a string\", {}, requestId);\n\tif (typeof body.lanExposureEnabled !== \"boolean\") return errorResponse(400, \"bad_request\", \"lanExposureEnabled must be a boolean\", {}, requestId);\n\tconst state = getState();\n\tpatchSecretsEnvFile(state.stackDir, {\n\t\tOP_PROJECT_NAME: projectName,\n\t\tOP_ASSISTANT_BIND_ADDRESS: body.lanExposureEnabled ? LAN_ASSISTANT_BIND_ADDRESS : DEFAULT_ASSISTANT_BIND_ADDRESS\n\t});\n\tconst path = personaPath(state.configDir);\n\tmkdirSync(join(state.configDir, \"assistant\"), { recursive: true });\n\tconst personaContent = body.personaContent.endsWith(\"\\n\") ? body.personaContent : `${body.personaContent}\\n`;\n\twriteFileAtomic(path, personaContent, 420);\n\treturn jsonResponse(200, {\n\t\tok: true,\n\t\tprojectName,\n\t\tlanExposureEnabled: body.lanExposureEnabled,\n\t\tstackEnvPath: \"knowledge/env/stack.env\",\n\t\tpersonaPath: \"config/assistant/openpalm.md\",\n\t\tpersonaContent\n\t}, requestId);\n});\n//#endregion\nexport { GET, PUT };\n"],"names":[],"mappings":"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"}