opencami 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/README.md +69 -74
  2. package/dist/client/analytics-dashboard.html +509 -0
  3. package/dist/client/analytics.json +598 -0
  4. package/dist/client/assets/_sessionKey-xUqdePGW.js +97 -0
  5. package/dist/client/assets/agents-BiadNAEz.js +2 -0
  6. package/dist/client/assets/agents-screen-C5TPJbry.js +1 -0
  7. package/dist/client/assets/button-seqh98ae.js +1 -0
  8. package/dist/client/assets/{connect-BRasuRbB.js → connect-DlVsi-ya.js} +2 -2
  9. package/dist/client/assets/file-explorer-screen-B0hwrjdF.js +1 -0
  10. package/dist/client/assets/files-dkr2U72N.js +2 -0
  11. package/dist/client/assets/index-CwoJpeG1.js +153 -0
  12. package/dist/client/assets/{index-DHGnKfAU.js → index-D1Et4XlM.js} +1 -1
  13. package/dist/client/assets/keyboard-shortcuts-dialog-zdnAmDiH.js +1 -0
  14. package/dist/client/assets/{main-BAHT5yqU.js → main-DOBfHXDF.js} +12 -12
  15. package/dist/client/assets/opencami-logo-Bxp_4d3X.js +1 -0
  16. package/dist/client/assets/react-DD8SkMJn.js +1 -0
  17. package/dist/client/assets/search-dialog-Ck1AQreu.js +1 -0
  18. package/dist/client/assets/session-export-dialog-Bh3zH4nZ.js +1 -0
  19. package/dist/client/assets/settings-dialog-CvUsgnnZ.js +1 -0
  20. package/dist/client/assets/styles-DogPvrGY.css +1 -0
  21. package/dist/client/assets/switch-BoGcWcnr.js +1 -0
  22. package/dist/client/assets/use-file-explorer-state-B5JLNsSa.js +12 -0
  23. package/dist/client/assets/useButton-csSB2uQJ.js +9 -0
  24. package/dist/client/manifest.json +8 -2
  25. package/dist/server/assets/{_sessionKey-qlAPF_Ft.js → _sessionKey-DQwkBUS7.js} +981 -229
  26. package/dist/server/assets/_tanstack-start-manifest_v-cW8K1Mnv.js +4 -0
  27. package/dist/server/assets/agents-Dz_i76VW.js +11 -0
  28. package/dist/server/assets/agents-screen-CqQPJndp.js +587 -0
  29. package/dist/server/assets/{connect-BWI_6rCm.js → connect-CIDOw12K.js} +34 -2
  30. package/dist/server/assets/{file-explorer-screen-DJXPEG_J.js → file-explorer-screen-BzvgvV8m.js} +7 -58
  31. package/dist/server/assets/{files-CONoVTGD.js → files-BxvRDIWU.js} +1 -1
  32. package/dist/server/assets/{index-Bp8QskbI.js → index-BwD7ufHE.js} +4 -3
  33. package/dist/server/assets/{index-COu2idHm.js → index-CmbNTqa2.js} +105 -14
  34. package/dist/server/assets/{keyboard-shortcuts-dialog-D5hqVX2v.js → keyboard-shortcuts-dialog-7OEtXUlW.js} +2 -2
  35. package/dist/server/assets/opencami-logo-C-43FL3R.js +24 -0
  36. package/dist/server/assets/{router-DbxyvprK.js → router-5qObg5aX.js} +368 -74
  37. package/dist/server/assets/{search-dialog-JY8C3mqa.js → search-dialog-BE2ZBkj0.js} +44 -12
  38. package/dist/server/assets/{session-export-dialog-D87uafPD.js → session-export-dialog-DRVbC8Q-.js} +2 -2
  39. package/dist/server/assets/{settings-dialog-CBj7njLM.js → settings-dialog-BBQcU55J.js} +204 -41
  40. package/dist/server/assets/switch-DnX0MjGS.js +28 -0
  41. package/dist/server/assets/tooltip-gbV6rEVv.js +60 -0
  42. package/dist/server/assets/{menu-D6n4DB0U.js → use-file-explorer-state-DMHdtb7D.js} +56 -57
  43. package/dist/server/server.js +2 -2
  44. package/package.json +1 -1
  45. package/dist/client/assets/_sessionKey-B-MBYHgD.js +0 -95
  46. package/dist/client/assets/abap-BdImnpbu.js +0 -1
  47. package/dist/client/assets/actionscript-3-CfeIJUat.js +0 -1
  48. package/dist/client/assets/ada-bCR0ucgS.js +0 -1
  49. package/dist/client/assets/andromeeda-C-Jbm3Hp.js +0 -1
  50. package/dist/client/assets/angular-html-CU67Zn6k.js +0 -1
  51. package/dist/client/assets/angular-ts-BwZT4LLn.js +0 -1
  52. package/dist/client/assets/apache-Pmp26Uib.js +0 -1
  53. package/dist/client/assets/apex-D8_7TLub.js +0 -1
  54. package/dist/client/assets/apl-dKokRX4l.js +0 -1
  55. package/dist/client/assets/applescript-Co6uUVPk.js +0 -1
  56. package/dist/client/assets/ara-BRHolxvo.js +0 -1
  57. package/dist/client/assets/asciidoc-Dv7Oe6Be.js +0 -1
  58. package/dist/client/assets/asm-D_Q5rh1f.js +0 -1
  59. package/dist/client/assets/astro-CbQHKStN.js +0 -1
  60. package/dist/client/assets/aurora-x-D-2ljcwZ.js +0 -1
  61. package/dist/client/assets/awk-DMzUqQB5.js +0 -1
  62. package/dist/client/assets/ayu-dark-CmMr59Fi.js +0 -1
  63. package/dist/client/assets/ballerina-BFfxhgS-.js +0 -1
  64. package/dist/client/assets/bat-BkioyH1T.js +0 -1
  65. package/dist/client/assets/beancount-k_qm7-4y.js +0 -1
  66. package/dist/client/assets/berry-uYugtg8r.js +0 -1
  67. package/dist/client/assets/bibtex-CHM0blh-.js +0 -1
  68. package/dist/client/assets/bicep-Bmn6On1c.js +0 -1
  69. package/dist/client/assets/blade-D4QpJJKB.js +0 -1
  70. package/dist/client/assets/bsl-BO_Y6i37.js +0 -1
  71. package/dist/client/assets/button-D_9OBT_f.js +0 -1
  72. package/dist/client/assets/c-BIGW1oBm.js +0 -1
  73. package/dist/client/assets/c3-VCDPK7BO.js +0 -1
  74. package/dist/client/assets/cadence-Bv_4Rxtq.js +0 -1
  75. package/dist/client/assets/cairo-KRGpt6FW.js +0 -1
  76. package/dist/client/assets/catppuccin-frappe-DFWUc33u.js +0 -1
  77. package/dist/client/assets/catppuccin-latte-C9dUb6Cb.js +0 -1
  78. package/dist/client/assets/catppuccin-macchiato-DQyhUUbL.js +0 -1
  79. package/dist/client/assets/catppuccin-mocha-D87Tk5Gz.js +0 -1
  80. package/dist/client/assets/clarity-D53aC0YG.js +0 -1
  81. package/dist/client/assets/clojure-P80f7IUj.js +0 -1
  82. package/dist/client/assets/cmake-D1j8_8rp.js +0 -1
  83. package/dist/client/assets/cobol-nwyudZeR.js +0 -1
  84. package/dist/client/assets/codeowners-Bp6g37R7.js +0 -1
  85. package/dist/client/assets/codeql-DsOJ9woJ.js +0 -1
  86. package/dist/client/assets/coffee-Ch7k5sss.js +0 -1
  87. package/dist/client/assets/common-lisp-Cg-RD9OK.js +0 -1
  88. package/dist/client/assets/coq-DkFqJrB1.js +0 -1
  89. package/dist/client/assets/cpp-CofmeUqb.js +0 -1
  90. package/dist/client/assets/crystal-tKQVLTB8.js +0 -1
  91. package/dist/client/assets/csharp-K5feNrxe.js +0 -1
  92. package/dist/client/assets/css-DPfMkruS.js +0 -1
  93. package/dist/client/assets/csv-fuZLfV_i.js +0 -1
  94. package/dist/client/assets/cue-D82EKSYY.js +0 -1
  95. package/dist/client/assets/cypher-COkxafJQ.js +0 -1
  96. package/dist/client/assets/d-85-TOEBH.js +0 -1
  97. package/dist/client/assets/dark-plus-C3mMm8J8.js +0 -1
  98. package/dist/client/assets/dart-CF10PKvl.js +0 -1
  99. package/dist/client/assets/dax-CEL-wOlO.js +0 -1
  100. package/dist/client/assets/desktop-BmXAJ9_W.js +0 -1
  101. package/dist/client/assets/diff-D97Zzqfu.js +0 -1
  102. package/dist/client/assets/docker-BcOcwvcX.js +0 -1
  103. package/dist/client/assets/dotenv-Da5cRb03.js +0 -1
  104. package/dist/client/assets/dracula-BzJJZx-M.js +0 -1
  105. package/dist/client/assets/dracula-soft-BXkSAIEj.js +0 -1
  106. package/dist/client/assets/dream-maker-BtqSS_iP.js +0 -1
  107. package/dist/client/assets/edge-BkV0erSs.js +0 -1
  108. package/dist/client/assets/elixir-CDX3lj18.js +0 -1
  109. package/dist/client/assets/elm-DbKCFpqz.js +0 -1
  110. package/dist/client/assets/emacs-lisp-C9XAeP06.js +0 -1
  111. package/dist/client/assets/erb-BOJIQeun.js +0 -1
  112. package/dist/client/assets/erlang-DsQrWhSR.js +0 -1
  113. package/dist/client/assets/everforest-dark-BgDCqdQA.js +0 -1
  114. package/dist/client/assets/everforest-light-C8M2exoo.js +0 -1
  115. package/dist/client/assets/fennel-BYunw83y.js +0 -1
  116. package/dist/client/assets/file-explorer-screen-Daf4rIq9.js +0 -1
  117. package/dist/client/assets/files-ByeIMLfw.js +0 -2
  118. package/dist/client/assets/fish-BvzEVeQv.js +0 -1
  119. package/dist/client/assets/fluent-C4IJs8-o.js +0 -1
  120. package/dist/client/assets/fortran-fixed-form-CkoXwp7k.js +0 -1
  121. package/dist/client/assets/fortran-free-form-BxgE0vQu.js +0 -1
  122. package/dist/client/assets/fsharp-CXgrBDvD.js +0 -1
  123. package/dist/client/assets/gdresource-B7Tvp0Sc.js +0 -1
  124. package/dist/client/assets/gdscript-DTMYz4Jt.js +0 -1
  125. package/dist/client/assets/gdshader-DkwncUOv.js +0 -1
  126. package/dist/client/assets/genie-D0YGMca9.js +0 -1
  127. package/dist/client/assets/gherkin-DyxjwDmM.js +0 -1
  128. package/dist/client/assets/git-commit-F4YmCXRG.js +0 -1
  129. package/dist/client/assets/git-rebase-r7XF79zn.js +0 -1
  130. package/dist/client/assets/github-dark-DHJKELXO.js +0 -1
  131. package/dist/client/assets/github-dark-default-Cuk6v7N8.js +0 -1
  132. package/dist/client/assets/github-dark-dimmed-DH5Ifo-i.js +0 -1
  133. package/dist/client/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -1
  134. package/dist/client/assets/github-light-DAi9KRSo.js +0 -1
  135. package/dist/client/assets/github-light-default-D7oLnXFd.js +0 -1
  136. package/dist/client/assets/github-light-high-contrast-BfjtVDDH.js +0 -1
  137. package/dist/client/assets/gleam-BspZqrRM.js +0 -1
  138. package/dist/client/assets/glimmer-js-Rg0-pVw9.js +0 -1
  139. package/dist/client/assets/glimmer-ts-U6CK756n.js +0 -1
  140. package/dist/client/assets/glsl-DplSGwfg.js +0 -1
  141. package/dist/client/assets/gn-n2N0HUVH.js +0 -1
  142. package/dist/client/assets/gnuplot-DdkO51Og.js +0 -1
  143. package/dist/client/assets/go-Dn2_MT6a.js +0 -1
  144. package/dist/client/assets/graphql-ChdNCCLP.js +0 -1
  145. package/dist/client/assets/groovy-gcz8RCvz.js +0 -1
  146. package/dist/client/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -1
  147. package/dist/client/assets/gruvbox-dark-medium-GsRaNv29.js +0 -1
  148. package/dist/client/assets/gruvbox-dark-soft-CVdnzihN.js +0 -1
  149. package/dist/client/assets/gruvbox-light-hard-CH1njM8p.js +0 -1
  150. package/dist/client/assets/gruvbox-light-medium-DRw_LuNl.js +0 -1
  151. package/dist/client/assets/gruvbox-light-soft-hJgmCMqR.js +0 -1
  152. package/dist/client/assets/hack-CaT9iCJl.js +0 -1
  153. package/dist/client/assets/haml-B8DHNrY2.js +0 -1
  154. package/dist/client/assets/handlebars-BL8al0AC.js +0 -1
  155. package/dist/client/assets/haskell-Df6bDoY_.js +0 -1
  156. package/dist/client/assets/haxe-CzTSHFRz.js +0 -1
  157. package/dist/client/assets/hcl-BWvSN4gD.js +0 -1
  158. package/dist/client/assets/hjson-D5-asLiD.js +0 -1
  159. package/dist/client/assets/hlsl-D3lLCCz7.js +0 -1
  160. package/dist/client/assets/houston-DnULxvSX.js +0 -1
  161. package/dist/client/assets/html-GMplVEZG.js +0 -1
  162. package/dist/client/assets/html-derivative-BFtXZ54Q.js +0 -1
  163. package/dist/client/assets/http-jrhK8wxY.js +0 -1
  164. package/dist/client/assets/hurl-irOxFIW8.js +0 -1
  165. package/dist/client/assets/hxml-Bvhsp5Yf.js +0 -1
  166. package/dist/client/assets/hy-DFXneXwc.js +0 -1
  167. package/dist/client/assets/imba-DGztddWO.js +0 -1
  168. package/dist/client/assets/index-ByUDBI-n.js +0 -14
  169. package/dist/client/assets/ini-BEwlwnbL.js +0 -1
  170. package/dist/client/assets/java-CylS5w8V.js +0 -1
  171. package/dist/client/assets/javascript-wDzz0qaB.js +0 -1
  172. package/dist/client/assets/jinja-4LBKfQ-Z.js +0 -1
  173. package/dist/client/assets/jison-wvAkD_A8.js +0 -1
  174. package/dist/client/assets/json-Cp-IABpG.js +0 -1
  175. package/dist/client/assets/json5-C9tS-k6U.js +0 -1
  176. package/dist/client/assets/jsonc-Des-eS-w.js +0 -1
  177. package/dist/client/assets/jsonl-DcaNXYhu.js +0 -1
  178. package/dist/client/assets/jsonnet-DFQXde-d.js +0 -1
  179. package/dist/client/assets/jssm-C2t-YnRu.js +0 -1
  180. package/dist/client/assets/jsx-g9-lgVsj.js +0 -1
  181. package/dist/client/assets/julia-CxzCAyBv.js +0 -1
  182. package/dist/client/assets/kanagawa-dragon-CkXjmgJE.js +0 -1
  183. package/dist/client/assets/kanagawa-lotus-CfQXZHmo.js +0 -1
  184. package/dist/client/assets/kanagawa-wave-DWedfzmr.js +0 -1
  185. package/dist/client/assets/kdl-DV7GczEv.js +0 -1
  186. package/dist/client/assets/keyboard-shortcuts-dialog-agsWJ36q.js +0 -1
  187. package/dist/client/assets/kotlin-BdnUsdx6.js +0 -1
  188. package/dist/client/assets/kusto-DZf3V79B.js +0 -1
  189. package/dist/client/assets/laserwave-DUszq2jm.js +0 -1
  190. package/dist/client/assets/latex-B4uzh10-.js +0 -1
  191. package/dist/client/assets/lean-BZvkOJ9d.js +0 -1
  192. package/dist/client/assets/less-B1dDrJ26.js +0 -1
  193. package/dist/client/assets/light-plus-B7mTdjB0.js +0 -1
  194. package/dist/client/assets/liquid-DYVedYrR.js +0 -1
  195. package/dist/client/assets/llvm-BtvRca6l.js +0 -1
  196. package/dist/client/assets/log-2UxHyX5q.js +0 -1
  197. package/dist/client/assets/logo-BtOb2qkB.js +0 -1
  198. package/dist/client/assets/lua-BbnMAYS6.js +0 -1
  199. package/dist/client/assets/luau-C-HG3fhB.js +0 -1
  200. package/dist/client/assets/make-CHLpvVh8.js +0 -1
  201. package/dist/client/assets/markdown-Cvjx9yec.js +0 -1
  202. package/dist/client/assets/marko-DZsq8hO1.js +0 -1
  203. package/dist/client/assets/material-theme-D5KoaKCx.js +0 -1
  204. package/dist/client/assets/material-theme-darker-BfHTSMKl.js +0 -1
  205. package/dist/client/assets/material-theme-lighter-B0m2ddpp.js +0 -1
  206. package/dist/client/assets/material-theme-ocean-CyktbL80.js +0 -1
  207. package/dist/client/assets/material-theme-palenight-Csfq5Kiy.js +0 -1
  208. package/dist/client/assets/matlab-D7o27uSR.js +0 -1
  209. package/dist/client/assets/mdc-DUICxH0z.js +0 -1
  210. package/dist/client/assets/mdx-Cmh6b_Ma.js +0 -1
  211. package/dist/client/assets/menu-BhVaz8Ly.js +0 -20
  212. package/dist/client/assets/mermaid-mWjccvbQ.js +0 -1
  213. package/dist/client/assets/min-dark-CafNBF8u.js +0 -1
  214. package/dist/client/assets/min-light-CTRr51gU.js +0 -1
  215. package/dist/client/assets/mipsasm-CKIfxQSi.js +0 -1
  216. package/dist/client/assets/mojo-B93PlW-d.js +0 -1
  217. package/dist/client/assets/monokai-D4h5O-jR.js +0 -1
  218. package/dist/client/assets/moonbit-Ba13S78F.js +0 -1
  219. package/dist/client/assets/move-Bu9oaDYs.js +0 -1
  220. package/dist/client/assets/narrat-DRg8JJMk.js +0 -1
  221. package/dist/client/assets/nextflow-BrzmwbiE.js +0 -1
  222. package/dist/client/assets/nginx-DknmC5AR.js +0 -1
  223. package/dist/client/assets/night-owl-C39BiMTA.js +0 -1
  224. package/dist/client/assets/nim-CVrawwO9.js +0 -1
  225. package/dist/client/assets/nix-CwoSXNpI.js +0 -1
  226. package/dist/client/assets/nord-Ddv68eIx.js +0 -1
  227. package/dist/client/assets/nushell-C-sUppwS.js +0 -1
  228. package/dist/client/assets/objective-c-DXmwc3jG.js +0 -1
  229. package/dist/client/assets/objective-cpp-CLxacb5B.js +0 -1
  230. package/dist/client/assets/ocaml-C0hk2d4L.js +0 -1
  231. package/dist/client/assets/one-dark-pro-DVMEJ2y_.js +0 -1
  232. package/dist/client/assets/one-light-PoHY5YXO.js +0 -1
  233. package/dist/client/assets/openscad-C4EeE6gA.js +0 -1
  234. package/dist/client/assets/pascal-D93ZcfNL.js +0 -1
  235. package/dist/client/assets/perl-C0TMdlhV.js +0 -1
  236. package/dist/client/assets/php-CDn_0X-4.js +0 -1
  237. package/dist/client/assets/pkl-u5AG7uiY.js +0 -1
  238. package/dist/client/assets/plastic-3e1v2bzS.js +0 -1
  239. package/dist/client/assets/plsql-ChMvpjG-.js +0 -1
  240. package/dist/client/assets/po-BTJTHyun.js +0 -1
  241. package/dist/client/assets/poimandres-CS3Unz2-.js +0 -1
  242. package/dist/client/assets/polar-C0HS_06l.js +0 -1
  243. package/dist/client/assets/postcss-CXtECtnM.js +0 -1
  244. package/dist/client/assets/powerquery-CEu0bR-o.js +0 -1
  245. package/dist/client/assets/powershell-Dpen1YoG.js +0 -1
  246. package/dist/client/assets/prisma-Dd19v3D-.js +0 -1
  247. package/dist/client/assets/prolog-CbFg5uaA.js +0 -1
  248. package/dist/client/assets/proto-C7zT0LnQ.js +0 -1
  249. package/dist/client/assets/pug-CGlum2m_.js +0 -1
  250. package/dist/client/assets/puppet-BMWR74SV.js +0 -1
  251. package/dist/client/assets/purescript-CklMAg4u.js +0 -1
  252. package/dist/client/assets/python-B6aJPvgy.js +0 -1
  253. package/dist/client/assets/qml-3beO22l8.js +0 -1
  254. package/dist/client/assets/qmldir-C8lEn-DE.js +0 -1
  255. package/dist/client/assets/qss-IeuSbFQv.js +0 -1
  256. package/dist/client/assets/r-Dspwwk_N.js +0 -1
  257. package/dist/client/assets/racket-BqYA7rlc.js +0 -1
  258. package/dist/client/assets/raku-DXvB9xmW.js +0 -1
  259. package/dist/client/assets/razor-C1TweQQi.js +0 -1
  260. package/dist/client/assets/red-bN70gL4F.js +0 -1
  261. package/dist/client/assets/reg-C-SQnVFl.js +0 -1
  262. package/dist/client/assets/regexp-CDVJQ6XC.js +0 -1
  263. package/dist/client/assets/rel-C3B-1QV4.js +0 -1
  264. package/dist/client/assets/riscv-BM1_JUlF.js +0 -1
  265. package/dist/client/assets/rose-pine-dawn-DHQR4-dF.js +0 -1
  266. package/dist/client/assets/rose-pine-moon-D4_iv3hh.js +0 -1
  267. package/dist/client/assets/rose-pine-qdsjHGoJ.js +0 -1
  268. package/dist/client/assets/rosmsg-BJDFO7_C.js +0 -1
  269. package/dist/client/assets/rst-B0xPkSld.js +0 -1
  270. package/dist/client/assets/ruby-BvKwtOVI.js +0 -1
  271. package/dist/client/assets/rust-B1yitclQ.js +0 -1
  272. package/dist/client/assets/sas-cz2c8ADy.js +0 -1
  273. package/dist/client/assets/sass-Cj5Yp3dK.js +0 -1
  274. package/dist/client/assets/scala-C151Ov-r.js +0 -1
  275. package/dist/client/assets/scheme-C98Dy4si.js +0 -1
  276. package/dist/client/assets/scss-OYdSNvt2.js +0 -1
  277. package/dist/client/assets/sdbl-DVxCFoDh.js +0 -1
  278. package/dist/client/assets/search-dialog-CHwnOyPS.js +0 -1
  279. package/dist/client/assets/session-export-dialog-uOlDUzgX.js +0 -1
  280. package/dist/client/assets/settings-dialog-D0aYDkAM.js +0 -1
  281. package/dist/client/assets/shaderlab-Dg9Lc6iA.js +0 -1
  282. package/dist/client/assets/shellscript-Yzrsuije.js +0 -1
  283. package/dist/client/assets/shellsession-BADoaaVG.js +0 -1
  284. package/dist/client/assets/slack-dark-BthQWCQV.js +0 -1
  285. package/dist/client/assets/slack-ochin-DqwNpetd.js +0 -1
  286. package/dist/client/assets/smalltalk-BERRCDM3.js +0 -1
  287. package/dist/client/assets/snazzy-light-Bw305WKR.js +0 -1
  288. package/dist/client/assets/solarized-dark-DXbdFlpD.js +0 -1
  289. package/dist/client/assets/solarized-light-L9t79GZl.js +0 -1
  290. package/dist/client/assets/solidity-rGO070M0.js +0 -1
  291. package/dist/client/assets/soy-Brmx7dQM.js +0 -1
  292. package/dist/client/assets/sparql-rVzFXLq3.js +0 -1
  293. package/dist/client/assets/splunk-BtCnVYZw.js +0 -1
  294. package/dist/client/assets/sql-BLtJtn59.js +0 -1
  295. package/dist/client/assets/ssh-config-_ykCGR6B.js +0 -1
  296. package/dist/client/assets/stata-BH5u7GGu.js +0 -1
  297. package/dist/client/assets/styles-7aVSlb6l.css +0 -1
  298. package/dist/client/assets/stylus-BEDo0Tqx.js +0 -1
  299. package/dist/client/assets/svelte-zxCyuUbr.js +0 -1
  300. package/dist/client/assets/swift-Dg5xB15N.js +0 -1
  301. package/dist/client/assets/synthwave-84-CbfX1IO0.js +0 -1
  302. package/dist/client/assets/system-verilog-CnnmHF94.js +0 -1
  303. package/dist/client/assets/systemd-4A_iFExJ.js +0 -1
  304. package/dist/client/assets/talonscript-CkByrt1z.js +0 -1
  305. package/dist/client/assets/tasl-QIJgUcNo.js +0 -1
  306. package/dist/client/assets/tcl-dwOrl1Do.js +0 -1
  307. package/dist/client/assets/templ-W15q3VgB.js +0 -1
  308. package/dist/client/assets/terraform-BETggiCN.js +0 -1
  309. package/dist/client/assets/tex-CvyZ59Mk.js +0 -1
  310. package/dist/client/assets/tokyo-night-hegEt444.js +0 -1
  311. package/dist/client/assets/toml-vGWfd6FD.js +0 -1
  312. package/dist/client/assets/ts-tags-zn1MmPIZ.js +0 -1
  313. package/dist/client/assets/tsv-B_m7g4N7.js +0 -1
  314. package/dist/client/assets/tsx-COt5Ahok.js +0 -1
  315. package/dist/client/assets/turtle-BsS91CYL.js +0 -1
  316. package/dist/client/assets/twig-CO9l9SDP.js +0 -1
  317. package/dist/client/assets/typescript-BPQ3VLAy.js +0 -1
  318. package/dist/client/assets/typespec-BGHnOYBU.js +0 -1
  319. package/dist/client/assets/typst-DHCkPAjA.js +0 -1
  320. package/dist/client/assets/v-BcVCzyr7.js +0 -1
  321. package/dist/client/assets/vala-CsfeWuGM.js +0 -1
  322. package/dist/client/assets/vb-D17OF-Vu.js +0 -1
  323. package/dist/client/assets/verilog-BQ8w6xss.js +0 -1
  324. package/dist/client/assets/vesper-DU1UobuO.js +0 -1
  325. package/dist/client/assets/vhdl-CeAyd5Ju.js +0 -1
  326. package/dist/client/assets/viml-CJc9bBzg.js +0 -1
  327. package/dist/client/assets/vitesse-black-Bkuqu6BP.js +0 -1
  328. package/dist/client/assets/vitesse-dark-D0r3Knsf.js +0 -1
  329. package/dist/client/assets/vitesse-light-CVO1_9PV.js +0 -1
  330. package/dist/client/assets/vue-DN_0RTcg.js +0 -1
  331. package/dist/client/assets/vue-html-AaS7Mt5G.js +0 -1
  332. package/dist/client/assets/vue-vine-CQOfvN7w.js +0 -1
  333. package/dist/client/assets/vyper-CDx5xZoG.js +0 -1
  334. package/dist/client/assets/wasm-CG6Dc4jp.js +0 -1
  335. package/dist/client/assets/wasm-MzD3tlZU.js +0 -1
  336. package/dist/client/assets/wenyan-BV7otONQ.js +0 -1
  337. package/dist/client/assets/wgsl-Dx-B1_4e.js +0 -1
  338. package/dist/client/assets/wikitext-BhOHFoWU.js +0 -1
  339. package/dist/client/assets/wit-5i3qLPDT.js +0 -1
  340. package/dist/client/assets/wolfram-lXgVvXCa.js +0 -1
  341. package/dist/client/assets/xml-sdJ4AIDG.js +0 -1
  342. package/dist/client/assets/xsl-CtQFsRM5.js +0 -1
  343. package/dist/client/assets/yaml-Buea-lGh.js +0 -1
  344. package/dist/client/assets/zenscript-DVFEvuxE.js +0 -1
  345. package/dist/client/assets/zig-VOosw3JB.js +0 -1
  346. package/dist/server/assets/_tanstack-start-manifest_v-El8F-kd-.js +0 -4
@@ -3,12 +3,13 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { QueryClientProvider, QueryClient } from "@tanstack/react-query";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import WebSocket from "ws";
6
+ import { readFileSync } from "node:fs";
7
+ import path, { join, resolve, relative, extname } from "node:path";
8
+ import os, { homedir } from "node:os";
6
9
  import { json } from "@tanstack/router-core/ssr/client";
7
10
  import { readFile, mkdir, writeFile, rename, stat, readdir, rm, realpath, lstat } from "node:fs/promises";
8
- import os from "node:os";
9
- import path, { join, resolve, relative, extname } from "node:path";
10
11
  import { posix } from "path";
11
- const appCss = "/assets/styles-7aVSlb6l.css";
12
+ const appCss = "/assets/styles-DogPvrGY.css";
12
13
  const swRegisterScript = `
13
14
  (() => {
14
15
  // Skip PWA service worker inside Capacitor native shell — they conflict
@@ -75,7 +76,14 @@ const textSizeScript = `
75
76
  } catch {}
76
77
  })()
77
78
  `;
78
- const Route$p = createRootRoute({
79
+ function NotFoundRedirect() {
80
+ if (typeof window !== "undefined") {
81
+ window.location.href = "/chat/main";
82
+ }
83
+ return null;
84
+ }
85
+ const Route$s = createRootRoute({
86
+ notFoundComponent: NotFoundRedirect,
79
87
  head: () => ({
80
88
  meta: [
81
89
  {
@@ -175,8 +183,8 @@ function RootDocument({ children }) {
175
183
  ] })
176
184
  ] });
177
185
  }
178
- const $$splitComponentImporter$4 = () => import("./new-Dzk5YxE9.js");
179
- const Route$o = createFileRoute("/new")({
186
+ const $$splitComponentImporter$5 = () => import("./new-Dzk5YxE9.js");
187
+ const Route$r = createFileRoute("/new")({
180
188
  beforeLoad: function redirectToNewChat() {
181
189
  throw redirect({
182
190
  to: "/chat/$sessionKey",
@@ -186,22 +194,26 @@ const Route$o = createFileRoute("/new")({
186
194
  replace: true
187
195
  });
188
196
  },
197
+ component: lazyRouteComponent($$splitComponentImporter$5, "component")
198
+ });
199
+ const $$splitComponentImporter$4 = () => import("./files-BxvRDIWU.js");
200
+ const Route$q = createFileRoute("/files")({
189
201
  component: lazyRouteComponent($$splitComponentImporter$4, "component")
190
202
  });
191
- const $$splitComponentImporter$3 = () => import("./files-CONoVTGD.js");
192
- const Route$n = createFileRoute("/files")({
203
+ const $$splitComponentImporter$3 = () => import("./connect-CIDOw12K.js");
204
+ const Route$p = createFileRoute("/connect")({
193
205
  component: lazyRouteComponent($$splitComponentImporter$3, "component")
194
206
  });
195
- const $$splitComponentImporter$2 = () => import("./connect-BWI_6rCm.js");
196
- const Route$m = createFileRoute("/connect")({
207
+ const $$splitComponentImporter$2 = () => import("./agents-Dz_i76VW.js");
208
+ const Route$o = createFileRoute("/agents")({
197
209
  component: lazyRouteComponent($$splitComponentImporter$2, "component")
198
210
  });
199
- const $$splitComponentImporter$1 = () => import("./index-Bp8QskbI.js");
200
- const Route$l = createFileRoute("/")({
211
+ const $$splitComponentImporter$1 = () => import("./index-BwD7ufHE.js");
212
+ const Route$n = createFileRoute("/")({
201
213
  component: lazyRouteComponent($$splitComponentImporter$1, "component")
202
214
  });
203
- const $$splitComponentImporter = () => import("./_sessionKey-qlAPF_Ft.js").then((n) => n.$);
204
- const Route$k = createFileRoute("/chat/$sessionKey")({
215
+ const $$splitComponentImporter = () => import("./_sessionKey-DQwkBUS7.js").then((n) => n.$);
216
+ const Route$m = createFileRoute("/chat/$sessionKey")({
205
217
  component: lazyRouteComponent($$splitComponentImporter, "component")
206
218
  });
207
219
  function getGatewayConfig() {
@@ -481,6 +493,18 @@ async function gatewayConnectCheck() {
481
493
  const conn = getPersistentConnection();
482
494
  await conn.ensureConnected();
483
495
  }
496
+ function readApiKeysFromConfig$1() {
497
+ try {
498
+ const cfgPath = join(homedir(), ".openclaw", "openclaw.json");
499
+ const cfg = JSON.parse(readFileSync(cfgPath, "utf-8"));
500
+ return {
501
+ elevenlabs: cfg?.messages?.tts?.elevenlabs?.apiKey || void 0,
502
+ openai: cfg?.env?.OPENAI_API_KEY || process.env.OPENAI_API_KEY || void 0
503
+ };
504
+ } catch {
505
+ return {};
506
+ }
507
+ }
484
508
  async function ttsElevenLabs(text, apiKey, voice) {
485
509
  const voiceId = voice || "21m00Tcm4TlvDq8ikWAM";
486
510
  const res = await fetch(
@@ -556,7 +580,7 @@ async function ttsEdge(text, voice) {
556
580
  }
557
581
  });
558
582
  }
559
- const Route$j = createFileRoute("/api/tts")({
583
+ const Route$l = createFileRoute("/api/tts")({
560
584
  server: {
561
585
  handlers: {
562
586
  POST: async ({ request }) => {
@@ -574,8 +598,9 @@ const Route$j = createFileRoute("/api/tts")({
574
598
  const configRes = await gatewayRpc("config.get", {});
575
599
  const ttsConfig = configRes?.config?.messages?.tts;
576
600
  const env = configRes?.config?.env || {};
577
- const elevenLabsKey = ttsConfig?.elevenlabs?.apiKey || env.ELEVENLABS_API_KEY || env.XI_API_KEY;
578
- const openaiKey = ttsConfig?.openai?.apiKey || env.OPENAI_API_KEY;
601
+ const directKeys = readApiKeysFromConfig$1();
602
+ const elevenLabsKey = directKeys.elevenlabs || ttsConfig?.elevenlabs?.apiKey || env.ELEVENLABS_API_KEY || env.XI_API_KEY;
603
+ const openaiKey = directKeys.openai || ttsConfig?.openai?.apiKey || env.OPENAI_API_KEY;
579
604
  const preferredProvider = provider || ttsConfig?.provider || "auto";
580
605
  const errors = [];
581
606
  if (preferredProvider === "elevenlabs" && elevenLabsKey) {
@@ -606,7 +631,7 @@ const Route$j = createFileRoute("/api/tts")({
606
631
  }
607
632
  }
608
633
  if (preferredProvider === "auto" || errors.length > 0) {
609
- if (elevenLabsKey) {
634
+ if (elevenLabsKey && preferredProvider !== "elevenlabs") {
610
635
  try {
611
636
  return await ttsElevenLabs(
612
637
  text,
@@ -619,7 +644,7 @@ const Route$j = createFileRoute("/api/tts")({
619
644
  );
620
645
  }
621
646
  }
622
- if (openaiKey) {
647
+ if (openaiKey && preferredProvider !== "openai") {
623
648
  try {
624
649
  return await ttsOpenAI(text, openaiKey, voice);
625
650
  } catch (e) {
@@ -656,7 +681,163 @@ const Route$j = createFileRoute("/api/tts")({
656
681
  }
657
682
  }
658
683
  });
659
- const Route$i = createFileRoute("/api/stream")({
684
+ function readApiKeysFromConfig() {
685
+ try {
686
+ const cfgPath = join(homedir(), ".openclaw", "openclaw.json");
687
+ const cfg = JSON.parse(readFileSync(cfgPath, "utf-8"));
688
+ return {
689
+ elevenlabs: cfg?.messages?.tts?.elevenlabs?.apiKey || void 0,
690
+ openai: cfg?.env?.OPENAI_API_KEY || process.env.OPENAI_API_KEY || void 0
691
+ };
692
+ } catch {
693
+ return {};
694
+ }
695
+ }
696
+ async function sttElevenLabs(audioBlob, apiKey, language) {
697
+ const formData = new FormData();
698
+ formData.append("file", audioBlob, "audio.webm");
699
+ formData.append("model_id", "scribe_v2");
700
+ if (language) {
701
+ formData.append("language_code", language);
702
+ }
703
+ const res = await fetch("https://api.elevenlabs.io/v1/speech-to-text", {
704
+ method: "POST",
705
+ headers: {
706
+ "xi-api-key": apiKey
707
+ },
708
+ body: formData
709
+ });
710
+ if (!res.ok) {
711
+ const err = await res.text();
712
+ throw new Error(`ElevenLabs STT error: ${err}`);
713
+ }
714
+ const data = await res.json();
715
+ return { text: data.text || "" };
716
+ }
717
+ async function sttOpenAI(audioBlob, apiKey, language) {
718
+ const formData = new FormData();
719
+ formData.append("file", audioBlob, "audio.webm");
720
+ formData.append("model", "whisper-1");
721
+ if (language) {
722
+ formData.append("language", language);
723
+ }
724
+ const res = await fetch("https://api.openai.com/v1/audio/transcriptions", {
725
+ method: "POST",
726
+ headers: {
727
+ Authorization: `Bearer ${apiKey}`
728
+ },
729
+ body: formData
730
+ });
731
+ if (!res.ok) {
732
+ const err = await res.text();
733
+ throw new Error(`OpenAI Whisper error: ${err}`);
734
+ }
735
+ const data = await res.json();
736
+ return { text: data.text || "" };
737
+ }
738
+ const Route$k = createFileRoute("/api/stt")({
739
+ server: {
740
+ handlers: {
741
+ POST: async ({ request }) => {
742
+ try {
743
+ const formData = await request.formData();
744
+ const audioFile = formData.get("audio");
745
+ const provider = formData.get("provider")?.trim() || "auto";
746
+ const language = formData.get("language")?.trim() || void 0;
747
+ if (!audioFile || !(audioFile instanceof Blob)) {
748
+ return json(
749
+ { ok: false, error: "No audio file provided" },
750
+ { status: 400 }
751
+ );
752
+ }
753
+ const configRes = await gatewayRpc("config.get", {});
754
+ const ttsConfig = configRes?.config?.messages?.tts;
755
+ const env = configRes?.config?.env || {};
756
+ const directKeys = readApiKeysFromConfig();
757
+ const elevenLabsKey = directKeys.elevenlabs || ttsConfig?.elevenlabs?.apiKey || env.ELEVENLABS_API_KEY || env.XI_API_KEY;
758
+ const openaiKey = directKeys.openai || ttsConfig?.openai?.apiKey || env.OPENAI_API_KEY;
759
+ const errors = [];
760
+ if (provider === "elevenlabs" && elevenLabsKey) {
761
+ try {
762
+ const result = await sttElevenLabs(
763
+ audioFile,
764
+ elevenLabsKey,
765
+ language
766
+ );
767
+ return json({
768
+ ok: true,
769
+ text: result.text,
770
+ provider: "elevenlabs"
771
+ });
772
+ } catch (e) {
773
+ errors.push(e instanceof Error ? e.message : String(e));
774
+ }
775
+ }
776
+ if (provider === "openai" && openaiKey) {
777
+ try {
778
+ const result = await sttOpenAI(audioFile, openaiKey, language);
779
+ return json({
780
+ ok: true,
781
+ text: result.text,
782
+ provider: "openai"
783
+ });
784
+ } catch (e) {
785
+ errors.push(e instanceof Error ? e.message : String(e));
786
+ }
787
+ }
788
+ const tried = /* @__PURE__ */ new Set();
789
+ if (errors.length > 0) tried.add(provider);
790
+ if (provider === "auto" || errors.length > 0) {
791
+ if (elevenLabsKey && !tried.has("elevenlabs")) {
792
+ try {
793
+ const result = await sttElevenLabs(
794
+ audioFile,
795
+ elevenLabsKey,
796
+ language
797
+ );
798
+ return json({
799
+ ok: true,
800
+ text: result.text,
801
+ provider: "elevenlabs"
802
+ });
803
+ } catch (e) {
804
+ errors.push(e instanceof Error ? e.message : String(e));
805
+ }
806
+ }
807
+ if (openaiKey && !tried.has("openai")) {
808
+ try {
809
+ const result = await sttOpenAI(audioFile, openaiKey, language);
810
+ return json({
811
+ ok: true,
812
+ text: result.text,
813
+ provider: "openai"
814
+ });
815
+ } catch (e) {
816
+ errors.push(e instanceof Error ? e.message : String(e));
817
+ }
818
+ }
819
+ }
820
+ return json(
821
+ {
822
+ ok: false,
823
+ error: errors.length > 0 ? `All STT providers failed: ${errors.join("; ")}` : "No STT provider configured. Use browser Web Speech API as fallback."
824
+ },
825
+ { status: 502 }
826
+ );
827
+ } catch (err) {
828
+ return json(
829
+ {
830
+ ok: false,
831
+ error: err instanceof Error ? err.message : String(err)
832
+ },
833
+ { status: 500 }
834
+ );
835
+ }
836
+ }
837
+ }
838
+ }
839
+ });
840
+ const Route$j = createFileRoute("/api/stream")({
660
841
  server: {
661
842
  handlers: {
662
843
  GET: async ({ request }) => {
@@ -785,7 +966,7 @@ function normalizeSessions(payload) {
785
966
  });
786
967
  return { sessions: normalized };
787
968
  }
788
- const Route$h = createFileRoute("/api/sessions")({
969
+ const Route$i = createFileRoute("/api/sessions")({
789
970
  server: {
790
971
  handlers: {
791
972
  GET: async () => {
@@ -938,7 +1119,7 @@ const Route$h = createFileRoute("/api/sessions")({
938
1119
  }
939
1120
  }
940
1121
  });
941
- const Route$g = createFileRoute("/api/send")({
1122
+ const Route$h = createFileRoute("/api/send")({
942
1123
  server: {
943
1124
  handlers: {
944
1125
  POST: async ({ request }) => {
@@ -1004,7 +1185,7 @@ const Route$g = createFileRoute("/api/send")({
1004
1185
  }
1005
1186
  }
1006
1187
  });
1007
- const Route$f = createFileRoute("/api/ping")({
1188
+ const Route$g = createFileRoute("/api/ping")({
1008
1189
  server: {
1009
1190
  handlers: {
1010
1191
  GET: async () => {
@@ -1028,7 +1209,7 @@ const categories = { "core": [{ "id": "cami", "name": "Cami", "emoji": "🦎", "
1028
1209
  const personasData = {
1029
1210
  categories
1030
1211
  };
1031
- const Route$e = createFileRoute("/api/personas")({
1212
+ const Route$f = createFileRoute("/api/personas")({
1032
1213
  server: {
1033
1214
  handlers: {
1034
1215
  GET: async () => {
@@ -1073,7 +1254,7 @@ function resolveSessionsDir() {
1073
1254
  )
1074
1255
  };
1075
1256
  }
1076
- const Route$d = createFileRoute("/api/paths")({
1257
+ const Route$e = createFileRoute("/api/paths")({
1077
1258
  server: {
1078
1259
  handlers: {
1079
1260
  GET: () => {
@@ -1098,7 +1279,7 @@ function parseModelName(modelId) {
1098
1279
  return word.charAt(0).toUpperCase() + word.slice(1);
1099
1280
  }).join(" ");
1100
1281
  }
1101
- const Route$c = createFileRoute("/api/models")({
1282
+ const Route$d = createFileRoute("/api/models")({
1102
1283
  server: {
1103
1284
  handlers: {
1104
1285
  GET: async () => {
@@ -1306,7 +1487,7 @@ function generateHeuristicTitle(message) {
1306
1487
  }
1307
1488
  return title || message.slice(0, 50);
1308
1489
  }
1309
- const Route$b = createFileRoute("/api/llm-features")({
1490
+ const Route$c = createFileRoute("/api/llm-features")({
1310
1491
  server: {
1311
1492
  handlers: {
1312
1493
  /**
@@ -1448,7 +1629,7 @@ const Route$b = createFileRoute("/api/llm-features")({
1448
1629
  }
1449
1630
  }
1450
1631
  });
1451
- const Route$a = createFileRoute("/api/history")({
1632
+ const Route$b = createFileRoute("/api/history")({
1452
1633
  server: {
1453
1634
  handlers: {
1454
1635
  GET: async ({ request }) => {
@@ -1511,7 +1692,7 @@ function parseFollowUps(text) {
1511
1692
  const lines = text.split("\n").map((line) => line.trim()).filter((line) => line.length > 0).map((line) => line.replace(/^\d+[.)\s]+/, "").trim()).map((line) => line.replace(/^[-•*]\s*/, "").trim()).map((line) => line.replace(/^["']|["']$/g, "").trim()).filter((line) => line.length > 0 && line.length < 150);
1512
1693
  return lines.slice(0, 3);
1513
1694
  }
1514
- const Route$9 = createFileRoute("/api/follow-ups")({
1695
+ const Route$a = createFileRoute("/api/follow-ups")({
1515
1696
  server: {
1516
1697
  handlers: {
1517
1698
  POST: async ({ request }) => {
@@ -1552,6 +1733,97 @@ ${truncatedResponse}`;
1552
1733
  }
1553
1734
  }
1554
1735
  });
1736
+ async function readConfigAgents() {
1737
+ try {
1738
+ const raw = await readFile(
1739
+ `${process.env.HOME || "/root"}/.openclaw/openclaw.json`,
1740
+ "utf-8"
1741
+ );
1742
+ const cfg = JSON.parse(raw);
1743
+ return cfg?.agents?.list ?? [];
1744
+ } catch {
1745
+ return [];
1746
+ }
1747
+ }
1748
+ function resolveModel(m) {
1749
+ if (!m) return void 0;
1750
+ if (typeof m === "string") return m;
1751
+ if (typeof m === "object" && "primary" in m) return m.primary;
1752
+ return void 0;
1753
+ }
1754
+ const Route$9 = createFileRoute("/api/agents")({
1755
+ server: {
1756
+ handlers: {
1757
+ GET: async () => {
1758
+ try {
1759
+ const [payload, configAgents] = await Promise.all([
1760
+ gatewayRpc("agents.list"),
1761
+ readConfigAgents()
1762
+ ]);
1763
+ console.log("[agents.list] raw payload:", JSON.stringify(payload).slice(0, 1e3));
1764
+ const rpcAgents = Array.isArray(payload) ? payload : Array.isArray(payload?.agents) ? payload.agents : [];
1765
+ const cfgMap = /* @__PURE__ */ new Map();
1766
+ for (const c of configAgents) cfgMap.set(c.id, c);
1767
+ const agents = rpcAgents.map((a) => {
1768
+ const cfg = cfgMap.get(a.id);
1769
+ return {
1770
+ ...a,
1771
+ name: a.name || cfg?.name || "",
1772
+ model: a.model || resolveModel(cfg?.model),
1773
+ workspace: a.workspace || cfg?.workspace || void 0,
1774
+ emoji: a.emoji || cfg?.emoji,
1775
+ isDefault: cfg?.default ?? a.id === "main"
1776
+ };
1777
+ });
1778
+ return json({ agents });
1779
+ } catch (err) {
1780
+ return json(
1781
+ { error: err instanceof Error ? err.message : String(err) },
1782
+ { status: 500 }
1783
+ );
1784
+ }
1785
+ },
1786
+ POST: async ({ request }) => {
1787
+ try {
1788
+ const body = await request.json().catch(() => ({}));
1789
+ const action = typeof body.action === "string" ? body.action : "create";
1790
+ if (action === "create") {
1791
+ const params = {};
1792
+ if (typeof body.name === "string") params.name = body.name.trim();
1793
+ if (typeof body.workspace === "string") params.workspace = body.workspace.trim();
1794
+ if (typeof body.emoji === "string") params.emoji = body.emoji.trim();
1795
+ if (typeof body.avatar === "string") params.avatar = body.avatar.trim();
1796
+ const payload = await gatewayRpc("agents.create", params);
1797
+ return json({ ok: true, ...payload });
1798
+ }
1799
+ if (action === "update") {
1800
+ const params = {};
1801
+ if (typeof body.agentId === "string") params.agentId = body.agentId.trim();
1802
+ if (typeof body.name === "string") params.name = body.name.trim();
1803
+ if (typeof body.workspace === "string") params.workspace = body.workspace.trim();
1804
+ if (typeof body.model === "string") params.model = body.model.trim();
1805
+ if (typeof body.avatar === "string") params.avatar = body.avatar.trim();
1806
+ const payload = await gatewayRpc("agents.update", params);
1807
+ return json({ ok: true, ...payload });
1808
+ }
1809
+ if (action === "delete") {
1810
+ const params = {};
1811
+ if (typeof body.agentId === "string") params.agentId = body.agentId.trim();
1812
+ if (typeof body.deleteFiles === "boolean") params.deleteFiles = body.deleteFiles;
1813
+ const payload = await gatewayRpc("agents.delete", params);
1814
+ return json({ ok: true, ...payload });
1815
+ }
1816
+ return json({ error: "Unknown action" }, { status: 400 });
1817
+ } catch (err) {
1818
+ return json(
1819
+ { ok: false, error: err instanceof Error ? err.message : String(err) },
1820
+ { status: 500 }
1821
+ );
1822
+ }
1823
+ }
1824
+ }
1825
+ }
1826
+ });
1555
1827
  function createError(message, status, code) {
1556
1828
  const err = new Error(message);
1557
1829
  err.status = status;
@@ -1570,7 +1842,11 @@ async function resolveSafePath(virtualPath) {
1570
1842
  if (virtualPath.includes("\0")) {
1571
1843
  throw createError("Invalid path", 400, "INVALID_PATH");
1572
1844
  }
1573
- const cleaned = virtualPath.replace(/^\/+/, "");
1845
+ let normalized = virtualPath;
1846
+ if (normalized.startsWith(root + "/")) {
1847
+ normalized = normalized.slice(root.length);
1848
+ }
1849
+ const cleaned = normalized.replace(/^\/+/, "");
1574
1850
  const resolved = resolve(root, cleaned);
1575
1851
  const rel = relative(root, resolved);
1576
1852
  if (rel.startsWith("..") || resolve(root, rel) !== resolved) {
@@ -2576,136 +2852,153 @@ const Route = createFileRoute("/api/files/delete")({
2576
2852
  }
2577
2853
  }
2578
2854
  });
2579
- const NewRoute = Route$o.update({
2855
+ const NewRoute = Route$r.update({
2580
2856
  id: "/new",
2581
2857
  path: "/new",
2582
- getParentRoute: () => Route$p
2858
+ getParentRoute: () => Route$s
2583
2859
  });
2584
- const FilesRoute = Route$n.update({
2860
+ const FilesRoute = Route$q.update({
2585
2861
  id: "/files",
2586
2862
  path: "/files",
2587
- getParentRoute: () => Route$p
2863
+ getParentRoute: () => Route$s
2588
2864
  });
2589
- const ConnectRoute = Route$m.update({
2865
+ const ConnectRoute = Route$p.update({
2590
2866
  id: "/connect",
2591
2867
  path: "/connect",
2592
- getParentRoute: () => Route$p
2868
+ getParentRoute: () => Route$s
2869
+ });
2870
+ const AgentsRoute = Route$o.update({
2871
+ id: "/agents",
2872
+ path: "/agents",
2873
+ getParentRoute: () => Route$s
2593
2874
  });
2594
- const IndexRoute = Route$l.update({
2875
+ const IndexRoute = Route$n.update({
2595
2876
  id: "/",
2596
2877
  path: "/",
2597
- getParentRoute: () => Route$p
2878
+ getParentRoute: () => Route$s
2598
2879
  });
2599
- const ChatSessionKeyRoute = Route$k.update({
2880
+ const ChatSessionKeyRoute = Route$m.update({
2600
2881
  id: "/chat/$sessionKey",
2601
2882
  path: "/chat/$sessionKey",
2602
- getParentRoute: () => Route$p
2883
+ getParentRoute: () => Route$s
2603
2884
  });
2604
- const ApiTtsRoute = Route$j.update({
2885
+ const ApiTtsRoute = Route$l.update({
2605
2886
  id: "/api/tts",
2606
2887
  path: "/api/tts",
2607
- getParentRoute: () => Route$p
2888
+ getParentRoute: () => Route$s
2608
2889
  });
2609
- const ApiStreamRoute = Route$i.update({
2890
+ const ApiSttRoute = Route$k.update({
2891
+ id: "/api/stt",
2892
+ path: "/api/stt",
2893
+ getParentRoute: () => Route$s
2894
+ });
2895
+ const ApiStreamRoute = Route$j.update({
2610
2896
  id: "/api/stream",
2611
2897
  path: "/api/stream",
2612
- getParentRoute: () => Route$p
2898
+ getParentRoute: () => Route$s
2613
2899
  });
2614
- const ApiSessionsRoute = Route$h.update({
2900
+ const ApiSessionsRoute = Route$i.update({
2615
2901
  id: "/api/sessions",
2616
2902
  path: "/api/sessions",
2617
- getParentRoute: () => Route$p
2903
+ getParentRoute: () => Route$s
2618
2904
  });
2619
- const ApiSendRoute = Route$g.update({
2905
+ const ApiSendRoute = Route$h.update({
2620
2906
  id: "/api/send",
2621
2907
  path: "/api/send",
2622
- getParentRoute: () => Route$p
2908
+ getParentRoute: () => Route$s
2623
2909
  });
2624
- const ApiPingRoute = Route$f.update({
2910
+ const ApiPingRoute = Route$g.update({
2625
2911
  id: "/api/ping",
2626
2912
  path: "/api/ping",
2627
- getParentRoute: () => Route$p
2913
+ getParentRoute: () => Route$s
2628
2914
  });
2629
- const ApiPersonasRoute = Route$e.update({
2915
+ const ApiPersonasRoute = Route$f.update({
2630
2916
  id: "/api/personas",
2631
2917
  path: "/api/personas",
2632
- getParentRoute: () => Route$p
2918
+ getParentRoute: () => Route$s
2633
2919
  });
2634
- const ApiPathsRoute = Route$d.update({
2920
+ const ApiPathsRoute = Route$e.update({
2635
2921
  id: "/api/paths",
2636
2922
  path: "/api/paths",
2637
- getParentRoute: () => Route$p
2923
+ getParentRoute: () => Route$s
2638
2924
  });
2639
- const ApiModelsRoute = Route$c.update({
2925
+ const ApiModelsRoute = Route$d.update({
2640
2926
  id: "/api/models",
2641
2927
  path: "/api/models",
2642
- getParentRoute: () => Route$p
2928
+ getParentRoute: () => Route$s
2643
2929
  });
2644
- const ApiLlmFeaturesRoute = Route$b.update({
2930
+ const ApiLlmFeaturesRoute = Route$c.update({
2645
2931
  id: "/api/llm-features",
2646
2932
  path: "/api/llm-features",
2647
- getParentRoute: () => Route$p
2933
+ getParentRoute: () => Route$s
2648
2934
  });
2649
- const ApiHistoryRoute = Route$a.update({
2935
+ const ApiHistoryRoute = Route$b.update({
2650
2936
  id: "/api/history",
2651
2937
  path: "/api/history",
2652
- getParentRoute: () => Route$p
2938
+ getParentRoute: () => Route$s
2653
2939
  });
2654
- const ApiFollowUpsRoute = Route$9.update({
2940
+ const ApiFollowUpsRoute = Route$a.update({
2655
2941
  id: "/api/follow-ups",
2656
2942
  path: "/api/follow-ups",
2657
- getParentRoute: () => Route$p
2943
+ getParentRoute: () => Route$s
2944
+ });
2945
+ const ApiAgentsRoute = Route$9.update({
2946
+ id: "/api/agents",
2947
+ path: "/api/agents",
2948
+ getParentRoute: () => Route$s
2658
2949
  });
2659
2950
  const ApiFilesUploadRoute = Route$8.update({
2660
2951
  id: "/api/files/upload",
2661
2952
  path: "/api/files/upload",
2662
- getParentRoute: () => Route$p
2953
+ getParentRoute: () => Route$s
2663
2954
  });
2664
2955
  const ApiFilesSaveRoute = Route$7.update({
2665
2956
  id: "/api/files/save",
2666
2957
  path: "/api/files/save",
2667
- getParentRoute: () => Route$p
2958
+ getParentRoute: () => Route$s
2668
2959
  });
2669
2960
  const ApiFilesRenameRoute = Route$6.update({
2670
2961
  id: "/api/files/rename",
2671
2962
  path: "/api/files/rename",
2672
- getParentRoute: () => Route$p
2963
+ getParentRoute: () => Route$s
2673
2964
  });
2674
2965
  const ApiFilesReadRoute = Route$5.update({
2675
2966
  id: "/api/files/read",
2676
2967
  path: "/api/files/read",
2677
- getParentRoute: () => Route$p
2968
+ getParentRoute: () => Route$s
2678
2969
  });
2679
2970
  const ApiFilesMkdirRoute = Route$4.update({
2680
2971
  id: "/api/files/mkdir",
2681
2972
  path: "/api/files/mkdir",
2682
- getParentRoute: () => Route$p
2973
+ getParentRoute: () => Route$s
2683
2974
  });
2684
2975
  const ApiFilesListRoute = Route$3.update({
2685
2976
  id: "/api/files/list",
2686
2977
  path: "/api/files/list",
2687
- getParentRoute: () => Route$p
2978
+ getParentRoute: () => Route$s
2688
2979
  });
2689
2980
  const ApiFilesInfoRoute = Route$2.update({
2690
2981
  id: "/api/files/info",
2691
2982
  path: "/api/files/info",
2692
- getParentRoute: () => Route$p
2983
+ getParentRoute: () => Route$s
2693
2984
  });
2694
2985
  const ApiFilesDownloadRoute = Route$1.update({
2695
2986
  id: "/api/files/download",
2696
2987
  path: "/api/files/download",
2697
- getParentRoute: () => Route$p
2988
+ getParentRoute: () => Route$s
2698
2989
  });
2699
2990
  const ApiFilesDeleteRoute = Route.update({
2700
2991
  id: "/api/files/delete",
2701
2992
  path: "/api/files/delete",
2702
- getParentRoute: () => Route$p
2993
+ getParentRoute: () => Route$s
2703
2994
  });
2704
2995
  const rootRouteChildren = {
2705
2996
  IndexRoute,
2997
+ AgentsRoute,
2706
2998
  ConnectRoute,
2707
2999
  FilesRoute,
2708
3000
  NewRoute,
3001
+ ApiAgentsRoute,
2709
3002
  ApiFollowUpsRoute,
2710
3003
  ApiHistoryRoute,
2711
3004
  ApiLlmFeaturesRoute,
@@ -2716,6 +3009,7 @@ const rootRouteChildren = {
2716
3009
  ApiSendRoute,
2717
3010
  ApiSessionsRoute,
2718
3011
  ApiStreamRoute,
3012
+ ApiSttRoute,
2719
3013
  ApiTtsRoute,
2720
3014
  ChatSessionKeyRoute,
2721
3015
  ApiFilesDeleteRoute,
@@ -2728,7 +3022,7 @@ const rootRouteChildren = {
2728
3022
  ApiFilesSaveRoute,
2729
3023
  ApiFilesUploadRoute
2730
3024
  };
2731
- const routeTree = Route$p._addFileChildren(rootRouteChildren)._addFileTypes();
3025
+ const routeTree = Route$s._addFileChildren(rootRouteChildren)._addFileTypes();
2732
3026
  const getRouter = () => {
2733
3027
  const router2 = createRouter({
2734
3028
  routeTree,
@@ -2743,7 +3037,7 @@ const router = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
2743
3037
  getRouter
2744
3038
  }, Symbol.toStringTag, { value: "Module" }));
2745
3039
  export {
2746
- Route$l as R,
2747
- Route$k as a,
3040
+ Route$n as R,
3041
+ Route$m as a,
2748
3042
  router as r
2749
3043
  };