openfox 1.6.95 → 1.6.97

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 (331) hide show
  1. package/dist/{auto-compaction-UOYOMWLZ.js → auto-compaction-2I3XUF5P.js} +5 -5
  2. package/dist/{chat-handler-5HU4QWD4.js → chat-handler-42XM6GZI.js} +8 -8
  3. package/dist/{chunk-FVVLGR2G.js → chunk-47FAM55V.js} +5 -5
  4. package/dist/{chunk-N5D6DGMN.js → chunk-B7UUSHT7.js} +137 -123
  5. package/dist/{chunk-SCUGYF7R.js → chunk-FBKS6IPU.js} +2 -2
  6. package/dist/{chunk-CHEVYEM4.js → chunk-K7IJKGYL.js} +3 -3
  7. package/dist/{chunk-DTXWOKAG.js → chunk-QAN42RJQ.js} +3 -3
  8. package/dist/{chunk-PQCFNTFJ.js → chunk-ROWFVGB6.js} +20 -3
  9. package/dist/{chunk-4I3C46WU.js → chunk-RREZKLOD.js} +1 -1
  10. package/dist/{chunk-PAAUYFYS.js → chunk-T67WWSM7.js} +3 -24
  11. package/dist/cli/dev.js +1 -1
  12. package/dist/cli/index.js +1 -1
  13. package/dist/{events-HTVBWGHO.js → events-2UP7O6LW.js} +2 -2
  14. package/dist/{orchestrator-KGYZO6XH.js → orchestrator-I3YQFBTP.js} +6 -6
  15. package/dist/package.json +4 -2
  16. package/dist/{processor-QFBRN6AZ.js → processor-F3GKMYJT.js} +5 -5
  17. package/dist/{protocol-XRiJzlOK.d.ts → protocol-BFKDuZ7J.d.ts} +1 -0
  18. package/dist/{protocol-QDSVJTRN.js → protocol-FZUIA4BS.js} +2 -2
  19. package/dist/{serve-SSLGFSLJ.js → serve-QRK2E7HR.js} +7 -7
  20. package/dist/server/index.d.ts +1 -1
  21. package/dist/server/index.js +6 -6
  22. package/dist/{settings-AYSWDZUI.js → settings-TTYCUHWU.js} +2 -2
  23. package/dist/shared/index.d.ts +2 -2
  24. package/dist/{tools-FZS5JNQE.js → tools-SIVCXYHR.js} +5 -5
  25. package/dist/web/assets/abap-BdImnpbu.js +1 -0
  26. package/dist/web/assets/actionscript-3-CoDkCxhg.js +1 -0
  27. package/dist/web/assets/ada-bCR0ucgS.js +1 -0
  28. package/dist/web/assets/andromeeda-C4gqWexZ.js +1 -0
  29. package/dist/web/assets/angular-html-DA-rfuFy.js +1 -0
  30. package/dist/web/assets/angular-ts-BrjP3tb8.js +1 -0
  31. package/dist/web/assets/apache-Pmp26Uib.js +1 -0
  32. package/dist/web/assets/apex-Dqspr-GT.js +1 -0
  33. package/dist/web/assets/apl-CORt7UWP.js +1 -0
  34. package/dist/web/assets/applescript-Co6uUVPk.js +1 -0
  35. package/dist/web/assets/ara-BRHolxvo.js +1 -0
  36. package/dist/web/assets/asciidoc-Ve4PFQV2.js +1 -0
  37. package/dist/web/assets/asm-D_Q5rh1f.js +1 -0
  38. package/dist/web/assets/astro-HNnZUWAn.js +1 -0
  39. package/dist/web/assets/aurora-x-D-2ljcwZ.js +1 -0
  40. package/dist/web/assets/awk-DMzUqQB5.js +1 -0
  41. package/dist/web/assets/ayu-dark-DYE7WIF3.js +1 -0
  42. package/dist/web/assets/ayu-light-BA47KaF1.js +1 -0
  43. package/dist/web/assets/ayu-mirage-32ctXXKs.js +1 -0
  44. package/dist/web/assets/ballerina-BFfxhgS-.js +1 -0
  45. package/dist/web/assets/bat-BkioyH1T.js +1 -0
  46. package/dist/web/assets/beancount-k_qm7-4y.js +1 -0
  47. package/dist/web/assets/berry-uYugtg8r.js +1 -0
  48. package/dist/web/assets/bibtex-CHM0blh-.js +1 -0
  49. package/dist/web/assets/bicep-Bmn6On1c.js +1 -0
  50. package/dist/web/assets/bird2-BIv1doCn.js +1 -0
  51. package/dist/web/assets/blade-2xfisSek.js +1 -0
  52. package/dist/web/assets/bsl-BO_Y6i37.js +1 -0
  53. package/dist/web/assets/c-BIGW1oBm.js +1 -0
  54. package/dist/web/assets/c3-MRO5bC_T.js +1 -0
  55. package/dist/web/assets/cadence-Bv_4Rxtq.js +1 -0
  56. package/dist/web/assets/cairo-KRGpt6FW.js +1 -0
  57. package/dist/web/assets/catppuccin-frappe-DFWUc33u.js +1 -0
  58. package/dist/web/assets/catppuccin-latte-C9dUb6Cb.js +1 -0
  59. package/dist/web/assets/catppuccin-macchiato-DQyhUUbL.js +1 -0
  60. package/dist/web/assets/catppuccin-mocha-D87Tk5Gz.js +1 -0
  61. package/dist/web/assets/clarity-D53aC0YG.js +1 -0
  62. package/dist/web/assets/clojure-P80f7IUj.js +1 -0
  63. package/dist/web/assets/cmake-D1j8_8rp.js +1 -0
  64. package/dist/web/assets/cobol-nBiQ_Alo.js +1 -0
  65. package/dist/web/assets/codeowners-Bp6g37R7.js +1 -0
  66. package/dist/web/assets/codeql-DsOJ9woJ.js +1 -0
  67. package/dist/web/assets/coffee-Ch7k5sss.js +1 -0
  68. package/dist/web/assets/common-lisp-Cg-RD9OK.js +1 -0
  69. package/dist/web/assets/coq-DkFqJrB1.js +1 -0
  70. package/dist/web/assets/cpp-UfJy6YNI.js +1 -0
  71. package/dist/web/assets/crystal-DGywbUpC.js +1 -0
  72. package/dist/web/assets/csharp-DSvCPggb.js +1 -0
  73. package/dist/web/assets/css-CLj8gQPS.js +1 -0
  74. package/dist/web/assets/csv-fuZLfV_i.js +1 -0
  75. package/dist/web/assets/cue-D82EKSYY.js +1 -0
  76. package/dist/web/assets/cypher-COkxafJQ.js +1 -0
  77. package/dist/web/assets/d-85-TOEBH.js +1 -0
  78. package/dist/web/assets/dark-plus-C3mMm8J8.js +1 -0
  79. package/dist/web/assets/dart-bE4Kk8sk.js +1 -0
  80. package/dist/web/assets/dax-CEL-wOlO.js +1 -0
  81. package/dist/web/assets/desktop-BmXAJ9_W.js +1 -0
  82. package/dist/web/assets/diff-D97Zzqfu.js +1 -0
  83. package/dist/web/assets/docker-BcOcwvcX.js +1 -0
  84. package/dist/web/assets/dotenv-Da5cRb03.js +1 -0
  85. package/dist/web/assets/dracula-BzJJZx-M.js +1 -0
  86. package/dist/web/assets/dracula-soft-BXkSAIEj.js +1 -0
  87. package/dist/web/assets/dream-maker-BtqSS_iP.js +1 -0
  88. package/dist/web/assets/edge-FbVlp4U3.js +1 -0
  89. package/dist/web/assets/elixir-CkH2-t6x.js +1 -0
  90. package/dist/web/assets/elm-DbKCFpqz.js +1 -0
  91. package/dist/web/assets/emacs-lisp-CXvaQtF9.js +1 -0
  92. package/dist/web/assets/erb-Dm6A9KJ5.js +1 -0
  93. package/dist/web/assets/erlang-DsQrWhSR.js +1 -0
  94. package/dist/web/assets/everforest-dark-BgDCqdQA.js +1 -0
  95. package/dist/web/assets/everforest-light-C8M2exoo.js +1 -0
  96. package/dist/web/assets/fennel-BYunw83y.js +1 -0
  97. package/dist/web/assets/fish-BvzEVeQv.js +1 -0
  98. package/dist/web/assets/fluent-C4IJs8-o.js +1 -0
  99. package/dist/web/assets/fortran-fixed-form-CkoXwp7k.js +1 -0
  100. package/dist/web/assets/fortran-free-form-BxgE0vQu.js +1 -0
  101. package/dist/web/assets/fsharp-CXgrBDvD.js +1 -0
  102. package/dist/web/assets/gdresource-BOOCDP_w.js +1 -0
  103. package/dist/web/assets/gdscript-C5YyOfLZ.js +1 -0
  104. package/dist/web/assets/gdshader-DkwncUOv.js +1 -0
  105. package/dist/web/assets/genie-D0YGMca9.js +1 -0
  106. package/dist/web/assets/gherkin-DyxjwDmM.js +1 -0
  107. package/dist/web/assets/git-commit-F4YmCXRG.js +1 -0
  108. package/dist/web/assets/git-rebase-r7XF79zn.js +1 -0
  109. package/dist/web/assets/github-dark-DHJKELXO.js +1 -0
  110. package/dist/web/assets/github-dark-default-Cuk6v7N8.js +1 -0
  111. package/dist/web/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
  112. package/dist/web/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
  113. package/dist/web/assets/github-light-DAi9KRSo.js +1 -0
  114. package/dist/web/assets/github-light-default-D7oLnXFd.js +1 -0
  115. package/dist/web/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
  116. package/dist/web/assets/gleam-BspZqrRM.js +1 -0
  117. package/dist/web/assets/glimmer-js-ByusRIyA.js +1 -0
  118. package/dist/web/assets/glimmer-ts-BfAWNZQY.js +1 -0
  119. package/dist/web/assets/glsl-DplSGwfg.js +1 -0
  120. package/dist/web/assets/gn-n2N0HUVH.js +1 -0
  121. package/dist/web/assets/gnuplot-DdkO51Og.js +1 -0
  122. package/dist/web/assets/go-C27-OAKa.js +1 -0
  123. package/dist/web/assets/graphql-ChdNCCLP.js +1 -0
  124. package/dist/web/assets/groovy-gcz8RCvz.js +1 -0
  125. package/dist/web/assets/gruvbox-dark-hard-CFHQjOhq.js +1 -0
  126. package/dist/web/assets/gruvbox-dark-medium-GsRaNv29.js +1 -0
  127. package/dist/web/assets/gruvbox-dark-soft-CVdnzihN.js +1 -0
  128. package/dist/web/assets/gruvbox-light-hard-CH1njM8p.js +1 -0
  129. package/dist/web/assets/gruvbox-light-medium-DRw_LuNl.js +1 -0
  130. package/dist/web/assets/gruvbox-light-soft-hJgmCMqR.js +1 -0
  131. package/dist/web/assets/hack-DbPARsA_.js +1 -0
  132. package/dist/web/assets/haml-D5jkg6IW.js +1 -0
  133. package/dist/web/assets/handlebars-BpdQsYii.js +1 -0
  134. package/dist/web/assets/haskell-Df6bDoY_.js +1 -0
  135. package/dist/web/assets/haxe-CzTSHFRz.js +1 -0
  136. package/dist/web/assets/hcl-BWvSN4gD.js +1 -0
  137. package/dist/web/assets/hjson-D5-asLiD.js +1 -0
  138. package/dist/web/assets/hlsl-D3lLCCz7.js +1 -0
  139. package/dist/web/assets/horizon-BUw7H-hv.js +1 -0
  140. package/dist/web/assets/horizon-bright-CUuTKBJd.js +1 -0
  141. package/dist/web/assets/houston-DnULxvSX.js +1 -0
  142. package/dist/web/assets/html-derivative-DlHx6ybY.js +1 -0
  143. package/dist/web/assets/html-pp8916En.js +1 -0
  144. package/dist/web/assets/http-jrhK8wxY.js +1 -0
  145. package/dist/web/assets/hurl-irOxFIW8.js +1 -0
  146. package/dist/web/assets/hxml-Bvhsp5Yf.js +1 -0
  147. package/dist/web/assets/hy-DFXneXwc.js +1 -0
  148. package/dist/web/assets/imba-DGztddWO.js +1 -0
  149. package/dist/web/assets/{index-SgReTO7h.css → index-J5S6MyAu.css} +1 -1
  150. package/dist/web/assets/index-QfmLKYGt.js +298 -0
  151. package/dist/web/assets/ini-BEwlwnbL.js +1 -0
  152. package/dist/web/assets/java-CylS5w8V.js +1 -0
  153. package/dist/web/assets/javascript-wDzz0qaB.js +1 -0
  154. package/dist/web/assets/jinja-f2NsQr07.js +1 -0
  155. package/dist/web/assets/jison-wvAkD_A8.js +1 -0
  156. package/dist/web/assets/json-Cp-IABpG.js +1 -0
  157. package/dist/web/assets/json5-C9tS-k6U.js +1 -0
  158. package/dist/web/assets/jsonc-Des-eS-w.js +1 -0
  159. package/dist/web/assets/jsonl-DcaNXYhu.js +1 -0
  160. package/dist/web/assets/jsonnet-DFQXde-d.js +1 -0
  161. package/dist/web/assets/jssm-C2t-YnRu.js +1 -0
  162. package/dist/web/assets/jsx-g9-lgVsj.js +1 -0
  163. package/dist/web/assets/julia-D7OTSIA_.js +1 -0
  164. package/dist/web/assets/just-CUsbIsdP.js +1 -0
  165. package/dist/web/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
  166. package/dist/web/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
  167. package/dist/web/assets/kanagawa-wave-DWedfzmr.js +1 -0
  168. package/dist/web/assets/kdl-DV7GczEv.js +1 -0
  169. package/dist/web/assets/kotlin-BdnUsdx6.js +1 -0
  170. package/dist/web/assets/kusto-wEQ09or8.js +1 -0
  171. package/dist/web/assets/laserwave-DUszq2jm.js +1 -0
  172. package/dist/web/assets/latex-CaSxy8MP.js +1 -0
  173. package/dist/web/assets/lean-BZvkOJ9d.js +1 -0
  174. package/dist/web/assets/less-B1dDrJ26.js +1 -0
  175. package/dist/web/assets/light-plus-B7mTdjB0.js +1 -0
  176. package/dist/web/assets/liquid-C0sCDyMI.js +1 -0
  177. package/dist/web/assets/llvm-DjAJT7YJ.js +1 -0
  178. package/dist/web/assets/log-2UxHyX5q.js +1 -0
  179. package/dist/web/assets/logo-BtOb2qkB.js +1 -0
  180. package/dist/web/assets/lua-BaeVxFsk.js +1 -0
  181. package/dist/web/assets/luau-KW6xsasC.js +1 -0
  182. package/dist/web/assets/make-CHLpvVh8.js +1 -0
  183. package/dist/web/assets/markdown-Cvjx9yec.js +1 -0
  184. package/dist/web/assets/marko-DjSrsDqO.js +1 -0
  185. package/dist/web/assets/material-theme-D5KoaKCx.js +1 -0
  186. package/dist/web/assets/material-theme-darker-BfHTSMKl.js +1 -0
  187. package/dist/web/assets/material-theme-lighter-B0m2ddpp.js +1 -0
  188. package/dist/web/assets/material-theme-ocean-CyktbL80.js +1 -0
  189. package/dist/web/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
  190. package/dist/web/assets/matlab-D7o27uSR.js +1 -0
  191. package/dist/web/assets/mdc-DTYItulj.js +1 -0
  192. package/dist/web/assets/mdx-Cmh6b_Ma.js +1 -0
  193. package/dist/web/assets/mermaid-mWjccvbQ.js +1 -0
  194. package/dist/web/assets/min-dark-CafNBF8u.js +1 -0
  195. package/dist/web/assets/min-light-CTRr51gU.js +1 -0
  196. package/dist/web/assets/mipsasm-CKIfxQSi.js +1 -0
  197. package/dist/web/assets/mojo-rZm6bMo-.js +1 -0
  198. package/dist/web/assets/monokai-D4h5O-jR.js +1 -0
  199. package/dist/web/assets/moonbit-_H4v1dQx.js +1 -0
  200. package/dist/web/assets/move-IF9eRakj.js +1 -0
  201. package/dist/web/assets/narrat-DRg8JJMk.js +1 -0
  202. package/dist/web/assets/nextflow-C-mBbutL.js +1 -0
  203. package/dist/web/assets/nextflow-groovy-vE_lwT2v.js +1 -0
  204. package/dist/web/assets/nginx-BpAMiNFr.js +1 -0
  205. package/dist/web/assets/night-owl-C39BiMTA.js +1 -0
  206. package/dist/web/assets/night-owl-light-CMTm3GFP.js +1 -0
  207. package/dist/web/assets/nim-BIad80T-.js +1 -0
  208. package/dist/web/assets/nix-CwoSXNpI.js +1 -0
  209. package/dist/web/assets/nord-Ddv68eIx.js +1 -0
  210. package/dist/web/assets/nushell-Cz2AlsmD.js +1 -0
  211. package/dist/web/assets/objective-c-DXmwc3jG.js +1 -0
  212. package/dist/web/assets/objective-cpp-CLxacb5B.js +1 -0
  213. package/dist/web/assets/ocaml-C0hk2d4L.js +1 -0
  214. package/dist/web/assets/odin-BBf5iR-q.js +1 -0
  215. package/dist/web/assets/one-dark-pro-DVMEJ2y_.js +1 -0
  216. package/dist/web/assets/one-light-C3Wv6jpd.js +1 -0
  217. package/dist/web/assets/openscad-C4EeE6gA.js +1 -0
  218. package/dist/web/assets/pascal-D93ZcfNL.js +1 -0
  219. package/dist/web/assets/perl-B9cMNwum.js +1 -0
  220. package/dist/web/assets/php-Csjmro_R.js +1 -0
  221. package/dist/web/assets/pkl-u5AG7uiY.js +1 -0
  222. package/dist/web/assets/plastic-3e1v2bzS.js +1 -0
  223. package/dist/web/assets/plsql-ChMvpjG-.js +1 -0
  224. package/dist/web/assets/po-BTJTHyun.js +1 -0
  225. package/dist/web/assets/poimandres-CS3Unz2-.js +1 -0
  226. package/dist/web/assets/polar-C0HS_06l.js +1 -0
  227. package/dist/web/assets/postcss-CXtECtnM.js +1 -0
  228. package/dist/web/assets/powerquery-CEu0bR-o.js +1 -0
  229. package/dist/web/assets/powershell-Dpen1YoG.js +1 -0
  230. package/dist/web/assets/prisma-Dd19v3D-.js +1 -0
  231. package/dist/web/assets/prolog-CbFg5uaA.js +1 -0
  232. package/dist/web/assets/proto-C7zT0LnQ.js +1 -0
  233. package/dist/web/assets/pug-DKIMFp6K.js +1 -0
  234. package/dist/web/assets/puppet-BMWR74SV.js +1 -0
  235. package/dist/web/assets/purescript-CklMAg4u.js +1 -0
  236. package/dist/web/assets/python-B6aJPvgy.js +1 -0
  237. package/dist/web/assets/qml-3beO22l8.js +1 -0
  238. package/dist/web/assets/qmldir-C8lEn-DE.js +1 -0
  239. package/dist/web/assets/qss-IeuSbFQv.js +1 -0
  240. package/dist/web/assets/r-Dspwwk_N.js +1 -0
  241. package/dist/web/assets/racket-BqYA7rlc.js +1 -0
  242. package/dist/web/assets/raku-DXvB9xmW.js +1 -0
  243. package/dist/web/assets/razor-BjBPvh-w.js +1 -0
  244. package/dist/web/assets/red-bN70gL4F.js +1 -0
  245. package/dist/web/assets/reg-C-SQnVFl.js +1 -0
  246. package/dist/web/assets/regexp-CDVJQ6XC.js +1 -0
  247. package/dist/web/assets/rel-C3B-1QV4.js +1 -0
  248. package/dist/web/assets/riscv-BM1_JUlF.js +1 -0
  249. package/dist/web/assets/ron-D8l8udqQ.js +1 -0
  250. package/dist/web/assets/rose-pine-dawn-DHQR4-dF.js +1 -0
  251. package/dist/web/assets/rose-pine-moon-D4_iv3hh.js +1 -0
  252. package/dist/web/assets/rose-pine-qdsjHGoJ.js +1 -0
  253. package/dist/web/assets/rosmsg-BJDFO7_C.js +1 -0
  254. package/dist/web/assets/rst-CpCqk9r5.js +1 -0
  255. package/dist/web/assets/ruby-DyJCeAvU.js +1 -0
  256. package/dist/web/assets/rust-B1yitclQ.js +1 -0
  257. package/dist/web/assets/sas-DEy46yEz.js +1 -0
  258. package/dist/web/assets/sass-Cj5Yp3dK.js +1 -0
  259. package/dist/web/assets/scala-C151Ov-r.js +1 -0
  260. package/dist/web/assets/scheme-C98Dy4si.js +1 -0
  261. package/dist/web/assets/scss-D5BDwBP9.js +1 -0
  262. package/dist/web/assets/sdbl-DVxCFoDh.js +1 -0
  263. package/dist/web/assets/shaderlab-Dg9Lc6iA.js +1 -0
  264. package/dist/web/assets/shellscript-Yzrsuije.js +1 -0
  265. package/dist/web/assets/shellsession-BADoaaVG.js +1 -0
  266. package/dist/web/assets/slack-dark-BthQWCQV.js +1 -0
  267. package/dist/web/assets/slack-ochin-DqwNpetd.js +1 -0
  268. package/dist/web/assets/smalltalk-BERRCDM3.js +1 -0
  269. package/dist/web/assets/snazzy-light-Bw305WKR.js +1 -0
  270. package/dist/web/assets/solarized-dark-DXbdFlpD.js +1 -0
  271. package/dist/web/assets/solarized-light-L9t79GZl.js +1 -0
  272. package/dist/web/assets/solidity-rGO070M0.js +1 -0
  273. package/dist/web/assets/soy-8wufbnw4.js +1 -0
  274. package/dist/web/assets/sparql-rVzFXLq3.js +1 -0
  275. package/dist/web/assets/splunk-BtCnVYZw.js +1 -0
  276. package/dist/web/assets/sql-CRqJ_cUM.js +1 -0
  277. package/dist/web/assets/ssh-config-_ykCGR6B.js +1 -0
  278. package/dist/web/assets/stata-DI20mbqo.js +1 -0
  279. package/dist/web/assets/stylus-BEDo0Tqx.js +1 -0
  280. package/dist/web/assets/surrealql-Bq5Q-fJD.js +1 -0
  281. package/dist/web/assets/svelte-Cy7k_4gC.js +1 -0
  282. package/dist/web/assets/swift-D82vCrfD.js +1 -0
  283. package/dist/web/assets/synthwave-84-CbfX1IO0.js +1 -0
  284. package/dist/web/assets/system-verilog-CnnmHF94.js +1 -0
  285. package/dist/web/assets/systemd-4A_iFExJ.js +1 -0
  286. package/dist/web/assets/talonscript-CkByrt1z.js +1 -0
  287. package/dist/web/assets/tasl-QIJgUcNo.js +1 -0
  288. package/dist/web/assets/tcl-dwOrl1Do.js +1 -0
  289. package/dist/web/assets/templ-DhtptRzy.js +1 -0
  290. package/dist/web/assets/terraform-BETggiCN.js +1 -0
  291. package/dist/web/assets/tex-idrVyKtj.js +1 -0
  292. package/dist/web/assets/tokyo-night-hegEt444.js +1 -0
  293. package/dist/web/assets/toml-vGWfd6FD.js +1 -0
  294. package/dist/web/assets/ts-tags-D351s5mN.js +1 -0
  295. package/dist/web/assets/tsv-B_m7g4N7.js +1 -0
  296. package/dist/web/assets/tsx-COt5Ahok.js +1 -0
  297. package/dist/web/assets/turtle-BsS91CYL.js +1 -0
  298. package/dist/web/assets/twig-CW1WmMYd.js +1 -0
  299. package/dist/web/assets/typescript-BPQ3VLAy.js +1 -0
  300. package/dist/web/assets/typespec-CAFt9gP4.js +1 -0
  301. package/dist/web/assets/typst-DHCkPAjA.js +1 -0
  302. package/dist/web/assets/v-BcVCzyr7.js +1 -0
  303. package/dist/web/assets/vala-CsfeWuGM.js +1 -0
  304. package/dist/web/assets/vb-D17OF-Vu.js +1 -0
  305. package/dist/web/assets/verilog-BQ8w6xss.js +1 -0
  306. package/dist/web/assets/vesper-DRje8inN.js +1 -0
  307. package/dist/web/assets/vhdl-CeAyd5Ju.js +1 -0
  308. package/dist/web/assets/viml-CJc9bBzg.js +1 -0
  309. package/dist/web/assets/vitesse-black-Bkuqu6BP.js +1 -0
  310. package/dist/web/assets/vitesse-dark-D0r3Knsf.js +1 -0
  311. package/dist/web/assets/vitesse-light-CVO1_9PV.js +1 -0
  312. package/dist/web/assets/vue-D2xRrEX4.js +1 -0
  313. package/dist/web/assets/vue-html-AaS7Mt5G.js +1 -0
  314. package/dist/web/assets/vue-vine-BoDAl6tE.js +1 -0
  315. package/dist/web/assets/vyper-CDx5xZoG.js +1 -0
  316. package/dist/web/assets/wasm-CG6Dc4jp.js +1 -0
  317. package/dist/web/assets/wasm-MzD3tlZU.js +1 -0
  318. package/dist/web/assets/wenyan-BV7otONQ.js +1 -0
  319. package/dist/web/assets/wgsl-Dx-B1_4e.js +1 -0
  320. package/dist/web/assets/wikitext-BhOHFoWU.js +1 -0
  321. package/dist/web/assets/wit-5i3qLPDT.js +1 -0
  322. package/dist/web/assets/wolfram-lXgVvXCa.js +1 -0
  323. package/dist/web/assets/xml-sdJ4AIDG.js +1 -0
  324. package/dist/web/assets/xsl-CtQFsRM5.js +1 -0
  325. package/dist/web/assets/yaml-Buea-lGh.js +1 -0
  326. package/dist/web/assets/zenscript-DVFEvuxE.js +1 -0
  327. package/dist/web/assets/zig-VOosw3JB.js +1 -0
  328. package/dist/web/index.html +2 -2
  329. package/dist/web/sw.js +1 -1
  330. package/package.json +4 -2
  331. package/dist/web/assets/index-DKUIaoBa.js +0 -158
@@ -2,7 +2,7 @@ import {
2
2
  createVerifierNudgeConfig,
3
3
  runBuilderTurn,
4
4
  runChatTurn
5
- } from "./chunk-CHEVYEM4.js";
5
+ } from "./chunk-K7IJKGYL.js";
6
6
  import {
7
7
  TurnMetrics,
8
8
  agentExists,
@@ -46,7 +46,7 @@ import {
46
46
  saveSkillToProject,
47
47
  skillExists,
48
48
  spawnShellProcess
49
- } from "./chunk-FVVLGR2G.js";
49
+ } from "./chunk-47FAM55V.js";
50
50
  import {
51
51
  getProject
52
52
  } from "./chunk-ZHBL5G5X.js";
@@ -96,7 +96,7 @@ import {
96
96
  updateSessionProvider,
97
97
  updateSessionRunning,
98
98
  updateSessionSummary
99
- } from "./chunk-4I3C46WU.js";
99
+ } from "./chunk-RREZKLOD.js";
100
100
  import {
101
101
  initDatabase
102
102
  } from "./chunk-5GVCNVKV.js";
@@ -118,7 +118,7 @@ import {
118
118
  parseClientMessage,
119
119
  serializeServerMessage,
120
120
  storedEventToServerMessage
121
- } from "./chunk-PAAUYFYS.js";
121
+ } from "./chunk-T67WWSM7.js";
122
122
  import {
123
123
  EventEmitter,
124
124
  provideAnswer
@@ -146,7 +146,7 @@ import express from "express";
146
146
  import cors from "cors";
147
147
  import { createServer as createHttpServer } from "http";
148
148
  import { fileURLToPath as fileURLToPath4 } from "url";
149
- import { dirname as dirname5, resolve, join as join6 } from "path";
149
+ import { dirname as dirname6, resolve as resolve2, join as join7 } from "path";
150
150
  import { readFile as readFile3 } from "fs/promises";
151
151
  import { createServer as createViteServer } from "vite";
152
152
 
@@ -1670,7 +1670,7 @@ var TERMINAL_BLOCKED = "$blocked";
1670
1670
 
1671
1671
  // src/server/workflows/shell.ts
1672
1672
  function executeShellCommand(command, cwd, timeout, signal) {
1673
- return new Promise((resolve2, reject) => {
1673
+ return new Promise((resolve3, reject) => {
1674
1674
  if (checkAborted(signal)) {
1675
1675
  reject(new Error("Aborted"));
1676
1676
  return;
@@ -1682,7 +1682,7 @@ function executeShellCommand(command, cwd, timeout, signal) {
1682
1682
  const timer = setTimeout(() => {
1683
1683
  killed = true;
1684
1684
  proc.kill("SIGTERM");
1685
- resolve2({ exitCode: 1, stdout, stderr: stderr + "\nCommand timed out", success: false });
1685
+ resolve3({ exitCode: 1, stdout, stderr: stderr + "\nCommand timed out", success: false });
1686
1686
  }, timeout);
1687
1687
  const onAbort = () => {
1688
1688
  if (!killed) {
@@ -1704,13 +1704,13 @@ function executeShellCommand(command, cwd, timeout, signal) {
1704
1704
  signal?.removeEventListener("abort", onAbort);
1705
1705
  if (killed) return;
1706
1706
  const exitCode = code ?? 1;
1707
- resolve2({ exitCode, stdout, stderr, success: exitCode === 0 });
1707
+ resolve3({ exitCode, stdout, stderr, success: exitCode === 0 });
1708
1708
  });
1709
1709
  proc.on("error", (err) => {
1710
1710
  clearTimeout(timer);
1711
1711
  signal?.removeEventListener("abort", onAbort);
1712
1712
  if (killed) return;
1713
- resolve2({ exitCode: 1, stdout, stderr: err.message, success: false });
1713
+ resolve3({ exitCode: 1, stdout, stderr: err.message, success: false });
1714
1714
  });
1715
1715
  });
1716
1716
  }
@@ -2304,7 +2304,7 @@ async function isValidToken(token) {
2304
2304
 
2305
2305
  // src/server/ws/server.ts
2306
2306
  function moduleGitBranch(cwd) {
2307
- return new Promise((resolve2) => {
2307
+ return new Promise((resolve3) => {
2308
2308
  const proc = spawn2("git", ["rev-parse", "--abbrev-ref", "HEAD"], {
2309
2309
  cwd,
2310
2310
  stdio: ["ignore", "pipe", "ignore"]
@@ -2315,16 +2315,16 @@ function moduleGitBranch(cwd) {
2315
2315
  });
2316
2316
  proc.on("close", (code) => {
2317
2317
  if (code === 0 && stdout.trim()) {
2318
- resolve2(stdout.trim());
2318
+ resolve3(stdout.trim());
2319
2319
  } else {
2320
- resolve2(null);
2320
+ resolve3(null);
2321
2321
  }
2322
2322
  });
2323
- proc.on("error", () => resolve2(null));
2323
+ proc.on("error", () => resolve3(null));
2324
2324
  });
2325
2325
  }
2326
2326
  function moduleGitDiff(cwd) {
2327
- return new Promise((resolve2) => {
2327
+ return new Promise((resolve3) => {
2328
2328
  const proc = spawn2("git", ["diff", "--stat", "--numstat", "--format=", "HEAD"], {
2329
2329
  cwd,
2330
2330
  stdio: ["ignore", "pipe", "pipe"]
@@ -2347,7 +2347,7 @@ function moduleGitDiff(cwd) {
2347
2347
  let statusCode = null;
2348
2348
  const processResults = () => {
2349
2349
  if (diffCode !== 0 || statusCode !== 0) {
2350
- resolve2({ hash: "", files: [] });
2350
+ resolve3({ hash: "", files: [] });
2351
2351
  return;
2352
2352
  }
2353
2353
  const hashProc = spawn2("git", ["rev-parse", "HEAD"], { cwd, stdio: ["ignore", "pipe", "ignore"] });
@@ -2387,7 +2387,7 @@ function moduleGitDiff(cwd) {
2387
2387
  deletions: 0
2388
2388
  });
2389
2389
  }
2390
- resolve2({ hash: hash.trim(), files });
2390
+ resolve3({ hash: hash.trim(), files });
2391
2391
  };
2392
2392
  proc.on("close", (code) => {
2393
2393
  procExited = true;
@@ -2399,10 +2399,10 @@ function moduleGitDiff(cwd) {
2399
2399
  statusCode = code;
2400
2400
  if (procExited) processResults();
2401
2401
  });
2402
- proc.on("error", () => resolve2({ hash: "", files: [] }));
2402
+ proc.on("error", () => resolve3({ hash: "", files: [] }));
2403
2403
  statusProc.on("error", () => {
2404
2404
  if (!procExited) {
2405
- resolve2({ hash: "", files: [] });
2405
+ resolve3({ hash: "", files: [] });
2406
2406
  }
2407
2407
  });
2408
2408
  });
@@ -2865,9 +2865,10 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
2865
2865
  );
2866
2866
  return;
2867
2867
  // =========================================================================
2868
- // Session Load - Required for WS subscription mechanism
2869
- // Note: This is kept ONLY to set activeSessionId for event routing.
2870
- // For actual data loading, use REST API: GET /api/sessions/:id
2868
+ // Session Load - Sets active session for event routing
2869
+ // Note: Data loading is done via REST API: GET /api/sessions/:id
2870
+ // This WebSocket message is ONLY to tell the server which session is active
2871
+ // so it can route real-time events correctly.
2871
2872
  // =========================================================================
2872
2873
  case "session.load": {
2873
2874
  if (!isSessionLoadPayload(message.payload)) {
@@ -2881,31 +2882,17 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
2881
2882
  }
2882
2883
  client.activeSessionId = session.id;
2883
2884
  client.activeWorkdir = session.workdir;
2884
- if (session.workdir) moduleStartGitPolling(session.workdir);
2885
- ensureEventStoreSubscription(session.id);
2886
- const eventStore = getEventStore();
2887
- const events = eventStore.getEvents(session.id);
2888
- const messages = buildMessagesFromStoredEvents(events);
2889
- const pendingConfirmations = foldPendingConfirmations(events);
2890
- logger.debug("Loaded messages from EventStore", {
2891
- sessionId: session.id,
2892
- eventCount: events.length,
2893
- messageCount: messages.length,
2894
- pendingConfirmationsCount: pendingConfirmations.length
2895
- });
2896
- const initialGitStatus = (async () => {
2897
- if (!session.workdir) return void 0;
2885
+ if (session.workdir) {
2898
2886
  const branch = await moduleGitBranch(session.workdir);
2899
2887
  const { files } = await moduleGitDiff(session.workdir);
2900
- return { branch, diff: { files } };
2901
- })();
2902
- const gitStatusPayload = await initialGitStatus;
2903
- sendForSession(
2904
- session.id,
2905
- createSessionStateMessage(session, messages, pendingConfirmations, gitStatusPayload, message.id)
2906
- );
2888
+ const msg = createGitStatusMessage(branch, files);
2889
+ send(msg);
2890
+ if (branch) moduleStartGitPolling(session.workdir);
2891
+ }
2892
+ ensureEventStoreSubscription(session.id);
2907
2893
  const contextState = sessionManager.getContextState(session.id);
2908
- sendForSession(session.id, createContextStateMessage(contextState));
2894
+ send(createContextStateMessage(contextState));
2895
+ send({ type: "ack", payload: { sessionId: session.id }, id: message.id });
2909
2896
  break;
2910
2897
  }
2911
2898
  // =========================================================================
@@ -3373,19 +3360,19 @@ var LspServer = class {
3373
3360
  */
3374
3361
  async getDiagnosticsWithWait(path, timeoutMs = DIAGNOSTIC_WAIT_MS) {
3375
3362
  if (this.openDocuments.has(path)) {
3376
- return new Promise((resolve2) => {
3363
+ return new Promise((resolve3) => {
3377
3364
  const existing = this.diagnostics.get(path);
3378
3365
  if (existing !== void 0) {
3379
3366
  setTimeout(() => {
3380
- resolve2(this.diagnostics.get(path) ?? []);
3367
+ resolve3(this.diagnostics.get(path) ?? []);
3381
3368
  }, 100);
3382
3369
  return;
3383
3370
  }
3384
3371
  const timeout = setTimeout(() => {
3385
3372
  this.pendingDiagnostics.delete(path);
3386
- resolve2(this.diagnostics.get(path) ?? []);
3373
+ resolve3(this.diagnostics.get(path) ?? []);
3387
3374
  }, timeoutMs);
3388
- this.pendingDiagnostics.set(path, { resolve: resolve2, timeout });
3375
+ this.pendingDiagnostics.set(path, { resolve: resolve3, timeout });
3389
3376
  });
3390
3377
  }
3391
3378
  return this.diagnostics.get(path) ?? [];
@@ -4815,7 +4802,7 @@ ${summary}`,
4815
4802
  ...dbSession,
4816
4803
  mode: "planner",
4817
4804
  phase: "plan",
4818
- isRunning: false,
4805
+ isRunning: dbSession.isRunning,
4819
4806
  messages: [],
4820
4807
  criteria: [],
4821
4808
  contextWindows: [],
@@ -4844,11 +4831,12 @@ ${summary}`,
4844
4831
  if (m.promptContext !== void 0) msg.promptContext = m.promptContext;
4845
4832
  return msg;
4846
4833
  });
4834
+ const isRunning = dbSession.isRunning;
4847
4835
  return {
4848
4836
  ...dbSession,
4849
4837
  mode: eventState.mode,
4850
4838
  phase: eventState.phase,
4851
- isRunning: eventState.isRunning,
4839
+ isRunning,
4852
4840
  messages,
4853
4841
  criteria: eventState.criteria,
4854
4842
  contextWindows: [],
@@ -5354,17 +5342,54 @@ function createTerminalRoutes() {
5354
5342
  return router;
5355
5343
  }
5356
5344
 
5357
- // src/server/routes/auto-update.ts
5345
+ // src/server/routes/directories.ts
5358
5346
  import { Router as Router5 } from "express";
5347
+ import { readdir as readdir2 } from "fs/promises";
5348
+ import { resolve, join as join6, dirname as dirname5, basename as basename2 } from "path";
5349
+ function createDirectoryRoutes() {
5350
+ const router = Router5();
5351
+ const DEFAULT_BASE_PATH = process.cwd();
5352
+ router.get("/", async (req, res) => {
5353
+ const path = req.query["path"] || DEFAULT_BASE_PATH;
5354
+ try {
5355
+ const resolvedPath = resolve(path);
5356
+ const entries = await readdir2(resolvedPath, { withFileTypes: true });
5357
+ const directories = entries.filter((entry) => entry.isDirectory()).map((entry) => ({
5358
+ name: entry.name,
5359
+ path: join6(resolvedPath, entry.name)
5360
+ })).sort((a, b) => a.name.localeCompare(b.name));
5361
+ const parent = dirname5(resolvedPath);
5362
+ const hasParent = parent !== resolvedPath;
5363
+ res.json({
5364
+ current: resolvedPath,
5365
+ parent: hasParent ? parent : null,
5366
+ directories,
5367
+ basename: basename2(resolvedPath)
5368
+ });
5369
+ } catch {
5370
+ res.status(400).json({
5371
+ error: "Cannot read directory",
5372
+ current: DEFAULT_BASE_PATH,
5373
+ parent: null,
5374
+ directories: [],
5375
+ basename: basename2(DEFAULT_BASE_PATH)
5376
+ });
5377
+ }
5378
+ });
5379
+ return router;
5380
+ }
5381
+
5382
+ // src/server/routes/auto-update.ts
5383
+ import { Router as Router6 } from "express";
5359
5384
  import { spawn as spawn4 } from "child_process";
5360
5385
 
5361
5386
  // src/constants.ts
5362
- var VERSION = "1.6.95";
5387
+ var VERSION = "1.6.97";
5363
5388
 
5364
5389
  // src/server/routes/auto-update.ts
5365
5390
  var updateInProgress = false;
5366
5391
  function createAutoUpdateRoutes(options = {}) {
5367
- const router = Router5();
5392
+ const router = Router6();
5368
5393
  router.get("/check", async (req, res) => {
5369
5394
  const isTest = req.query["test"] === "1";
5370
5395
  const current = VERSION;
@@ -5373,7 +5398,7 @@ function createAutoUpdateRoutes(options = {}) {
5373
5398
  return;
5374
5399
  }
5375
5400
  try {
5376
- const latest = await new Promise((resolve2, reject) => {
5401
+ const latest = await new Promise((resolve3, reject) => {
5377
5402
  const child = spawn4("npm", ["view", "openfox", "version"], {
5378
5403
  stdio: ["ignore", "pipe", "pipe"]
5379
5404
  });
@@ -5383,7 +5408,7 @@ function createAutoUpdateRoutes(options = {}) {
5383
5408
  });
5384
5409
  child.on("close", (code) => {
5385
5410
  if (code === 0) {
5386
- resolve2(stdout.trim());
5411
+ resolve3(stdout.trim());
5387
5412
  } else {
5388
5413
  reject(new Error(`npm view exited with code ${code}`));
5389
5414
  }
@@ -5444,7 +5469,7 @@ function createAutoUpdateRoutes(options = {}) {
5444
5469
  }
5445
5470
 
5446
5471
  // src/server/index.ts
5447
- var __dirname2 = dirname5(fileURLToPath4(import.meta.url));
5472
+ var __dirname2 = dirname6(fileURLToPath4(import.meta.url));
5448
5473
  async function createServerHandle(config4) {
5449
5474
  setRuntimeConfig(config4);
5450
5475
  setLogLevel(config4.logging?.level ?? void 0, config4.mode);
@@ -5656,7 +5681,7 @@ async function createServerHandle(config4) {
5656
5681
  res.json({ project });
5657
5682
  });
5658
5683
  app.get("/api/sessions", async (req, res) => {
5659
- const { getRecentUserPromptsForSession } = await import("./events-HTVBWGHO.js");
5684
+ const { getRecentUserPromptsForSession } = await import("./events-2UP7O6LW.js");
5660
5685
  const projectId = req.query["projectId"];
5661
5686
  const limit = Math.min(parseInt(req.query["limit"]) || 20, 100);
5662
5687
  const offset = parseInt(req.query["offset"]) || 0;
@@ -5689,7 +5714,7 @@ async function createServerHandle(config4) {
5689
5714
  res.status(201).json({ session });
5690
5715
  });
5691
5716
  app.get("/api/sessions/:id", async (req, res) => {
5692
- const { getEventStore: getEventStore2 } = await import("./events-HTVBWGHO.js");
5717
+ const { getEventStore: getEventStore2 } = await import("./events-2UP7O6LW.js");
5693
5718
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-4VHGQE6Y.js");
5694
5719
  const session = sessionManager.getSession(req.params.id);
5695
5720
  if (!session) {
@@ -5720,7 +5745,7 @@ async function createServerHandle(config4) {
5720
5745
  res.json({ success: true });
5721
5746
  });
5722
5747
  app.post("/api/sessions/:id/provider", async (req, res) => {
5723
- const { getEventStore: getEventStore2 } = await import("./events-HTVBWGHO.js");
5748
+ const { getEventStore: getEventStore2 } = await import("./events-2UP7O6LW.js");
5724
5749
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-4VHGQE6Y.js");
5725
5750
  const sessionId = req.params.id;
5726
5751
  const session = sessionManager.getSession(sessionId);
@@ -5758,7 +5783,7 @@ async function createServerHandle(config4) {
5758
5783
  res.json({ success: true });
5759
5784
  });
5760
5785
  app.put("/api/sessions/:id/mode", async (req, res) => {
5761
- const { getEventStore: getEventStore2 } = await import("./events-HTVBWGHO.js");
5786
+ const { getEventStore: getEventStore2 } = await import("./events-2UP7O6LW.js");
5762
5787
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-4VHGQE6Y.js");
5763
5788
  const sessionId = req.params.id;
5764
5789
  const session = sessionManager.getSession(sessionId);
@@ -5815,14 +5840,14 @@ async function createServerHandle(config4) {
5815
5840
  if (!callId || approved === void 0) {
5816
5841
  return res.status(400).json({ error: "callId and approved are required" });
5817
5842
  }
5818
- const { providePathConfirmation } = await import("./tools-FZS5JNQE.js");
5843
+ const { providePathConfirmation } = await import("./tools-SIVCXYHR.js");
5819
5844
  const result = providePathConfirmation(callId, approved, alwaysAllow);
5820
5845
  if (!result.found) {
5821
5846
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
5822
5847
  }
5823
- const { getEventStore: getEventStore2 } = await import("./events-HTVBWGHO.js");
5848
+ const { getEventStore: getEventStore2 } = await import("./events-2UP7O6LW.js");
5824
5849
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations: foldPendingConfirmations2 } = await import("./folding-4VHGQE6Y.js");
5825
- const { createSessionStateMessage: createSessionStateMessage2 } = await import("./protocol-QDSVJTRN.js");
5850
+ const { createSessionStateMessage: createSessionStateMessage2 } = await import("./protocol-FZUIA4BS.js");
5826
5851
  const eventStore = getEventStore2();
5827
5852
  const events = eventStore.getEvents(sessionId);
5828
5853
  const messages = buildMessagesFromStoredEvents2(events);
@@ -5839,7 +5864,7 @@ async function createServerHandle(config4) {
5839
5864
  if (!callId || !answer) {
5840
5865
  return res.status(400).json({ error: "callId and answer are required" });
5841
5866
  }
5842
- const { provideAnswer: provideAnswer2 } = await import("./tools-FZS5JNQE.js");
5867
+ const { provideAnswer: provideAnswer2 } = await import("./tools-SIVCXYHR.js");
5843
5868
  const found = provideAnswer2(callId, answer);
5844
5869
  if (!found) {
5845
5870
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -5875,14 +5900,14 @@ async function createServerHandle(config4) {
5875
5900
  if (!session) {
5876
5901
  return res.status(404).json({ error: "Session not found" });
5877
5902
  }
5878
- const { stopSessionExecution } = await import("./chat-handler-5HU4QWD4.js");
5879
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-FZS5JNQE.js");
5903
+ const { stopSessionExecution } = await import("./chat-handler-42XM6GZI.js");
5904
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-SIVCXYHR.js");
5880
5905
  stopSessionExecution(sessionId, sessionManager);
5881
5906
  abortSession(sessionId);
5882
5907
  cancelQuestionsForSession(sessionId, "Session stopped by user");
5883
5908
  cancelPathConfirmationsForSession(sessionId, "Session stopped by user");
5884
5909
  sessionManager.clearMessageQueue(sessionId);
5885
- const eventStore = (await import("./events-HTVBWGHO.js")).getEventStore();
5910
+ const eventStore = (await import("./events-2UP7O6LW.js")).getEventStore();
5886
5911
  eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
5887
5912
  res.json({ success: true });
5888
5913
  });
@@ -5896,7 +5921,7 @@ async function createServerHandle(config4) {
5896
5921
  if (typeof messageIndex !== "number" || messageIndex < 0) {
5897
5922
  return res.status(400).json({ error: "messageIndex must be a non-negative number" });
5898
5923
  }
5899
- const { truncateSessionMessages } = await import("./events-HTVBWGHO.js");
5924
+ const { truncateSessionMessages } = await import("./events-2UP7O6LW.js");
5900
5925
  truncateSessionMessages(sessionId, messageIndex);
5901
5926
  res.json({ success: true });
5902
5927
  });
@@ -5926,14 +5951,33 @@ async function createServerHandle(config4) {
5926
5951
  }
5927
5952
  res.json({ accepted: true });
5928
5953
  });
5954
+ app.get("/api/settings", async (req, res) => {
5955
+ const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-TTYCUHWU.js");
5956
+ const keysParam = req.query["keys"];
5957
+ if (!keysParam) {
5958
+ return res.status(400).json({ error: "keys query parameter is required" });
5959
+ }
5960
+ const keys = keysParam.split(",").map((k) => k.trim());
5961
+ const result = {};
5962
+ for (const key of keys) {
5963
+ result[key] = getSetting(key) ?? SETTINGS_DEFAULTS[key] ?? "";
5964
+ }
5965
+ res.json(result);
5966
+ });
5967
+ app.get("/api/settings/:key", async (req, res) => {
5968
+ const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-TTYCUHWU.js");
5969
+ const key = req.params.key;
5970
+ const value = getSetting(key) ?? SETTINGS_DEFAULTS[key] ?? null;
5971
+ res.json({ key, value });
5972
+ });
5929
5973
  app.get("/api/settings/:key", async (req, res) => {
5930
- const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-AYSWDZUI.js");
5974
+ const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-TTYCUHWU.js");
5931
5975
  const key = req.params.key;
5932
5976
  const value = getSetting(key) ?? SETTINGS_DEFAULTS[key] ?? null;
5933
5977
  res.json({ key, value });
5934
5978
  });
5935
5979
  app.put("/api/settings/:key", async (req, res) => {
5936
- const { setSetting } = await import("./settings-AYSWDZUI.js");
5980
+ const { setSetting } = await import("./settings-TTYCUHWU.js");
5937
5981
  const key = req.params.key;
5938
5982
  const { value } = req.body;
5939
5983
  if (value === void 0) {
@@ -6229,42 +6273,15 @@ async function createServerHandle(config4) {
6229
6273
  app.get("/api/branch", async (req, res) => {
6230
6274
  await getCurrentBranch(req, res);
6231
6275
  });
6232
- const DEFAULT_BASE_PATH = process.cwd();
6233
- app.get("/api/directories", async (req, res) => {
6234
- const path = req.query["path"] || DEFAULT_BASE_PATH;
6235
- try {
6236
- const resolvedPath = resolve(path);
6237
- const entries = await import("fs/promises").then((m) => m.readdir(resolvedPath, { withFileTypes: true }));
6238
- const directories = entries.filter((entry) => entry.isDirectory() && !entry.name.startsWith(".")).map((entry) => ({
6239
- name: entry.name,
6240
- path: join6(resolvedPath, entry.name)
6241
- })).sort((a, b) => a.name.localeCompare(b.name));
6242
- const parent = dirname5(resolvedPath);
6243
- const hasParent = parent !== resolvedPath;
6244
- res.json({
6245
- current: resolvedPath,
6246
- parent: hasParent ? parent : null,
6247
- directories,
6248
- basename: basename2(resolvedPath)
6249
- });
6250
- } catch {
6251
- res.status(400).json({
6252
- error: "Cannot read directory",
6253
- current: DEFAULT_BASE_PATH,
6254
- parent: null,
6255
- directories: [],
6256
- basename: basename2(DEFAULT_BASE_PATH)
6257
- });
6258
- }
6259
- });
6260
- const webDir = resolve(__dirname2, "../../web");
6276
+ app.use("/api/directories", createDirectoryRoutes());
6277
+ const webDir = resolve2(__dirname2, "../../web");
6261
6278
  const isDev = config4.mode === "development";
6262
6279
  let viteServer;
6263
6280
  if (isDev) {
6264
6281
  logger.info("Dev mode: using Vite middleware");
6265
6282
  viteServer = await createViteServer({
6266
6283
  root: webDir,
6267
- configFile: resolve(__dirname2, "../../web/vite.config.ts"),
6284
+ configFile: resolve2(__dirname2, "../../web/vite.config.ts"),
6268
6285
  server: { middlewareMode: true },
6269
6286
  appType: "spa",
6270
6287
  logLevel: "warn"
@@ -6284,7 +6301,7 @@ async function createServerHandle(config4) {
6284
6301
  }
6285
6302
  });
6286
6303
  app.get("/fox.svg", (_req, res) => {
6287
- readFile3(join6(webDir, "fox.svg")).then((content) => {
6304
+ readFile3(join7(webDir, "fox.svg")).then((content) => {
6288
6305
  res.set("Content-Type", "image/svg+xml");
6289
6306
  res.send(content);
6290
6307
  }).catch(() => {
@@ -6293,7 +6310,7 @@ async function createServerHandle(config4) {
6293
6310
  });
6294
6311
  app.use(
6295
6312
  "/sounds",
6296
- express.static(join6(webDir, "public", "sounds"), {
6313
+ express.static(join7(webDir, "public", "sounds"), {
6297
6314
  setHeaders: (res) => {
6298
6315
  res.set("Content-Type", "audio/mpeg");
6299
6316
  }
@@ -6302,13 +6319,13 @@ async function createServerHandle(config4) {
6302
6319
  app.use("/__inspect__.js", (_req, res) => {
6303
6320
  res.set("Access-Control-Allow-Origin", "*");
6304
6321
  res.set("Content-Type", "application/javascript");
6305
- readFile3(join6(webDir, "public", "__inspect__.js")).then((content) => res.send(content)).catch(() => res.status(404).send("Not found"));
6322
+ readFile3(join7(webDir, "public", "__inspect__.js")).then((content) => res.send(content)).catch(() => res.status(404).send("Not found"));
6306
6323
  });
6307
6324
  app.get("/*path", (req, res) => {
6308
6325
  if (req.path.startsWith("/api/")) {
6309
6326
  return;
6310
6327
  }
6311
- readFile3(join6(webDir, "index.html"), "utf-8").then((indexHtml) => viteServer.transformIndexHtml(req.originalUrl, indexHtml)).then((transformed) => res.send(transformed)).catch((err) => {
6328
+ readFile3(join7(webDir, "index.html"), "utf-8").then((indexHtml) => viteServer.transformIndexHtml(req.originalUrl, indexHtml)).then((transformed) => res.send(transformed)).catch((err) => {
6312
6329
  logger.error("Error serving index.html", { error: err });
6313
6330
  res.status(500).send("Server error");
6314
6331
  });
@@ -6316,10 +6333,10 @@ async function createServerHandle(config4) {
6316
6333
  logger.info("Vite middleware ready", { port: config4.server.port });
6317
6334
  }
6318
6335
  if (!isDev) {
6319
- const distWebDir = resolve(__dirname2, "web");
6336
+ const distWebDir = resolve2(__dirname2, "web");
6320
6337
  app.use(
6321
6338
  "/assets",
6322
- express.static(join6(distWebDir, "assets"), {
6339
+ express.static(join7(distWebDir, "assets"), {
6323
6340
  setHeaders: (res, filepath) => {
6324
6341
  if (filepath.endsWith(".css")) {
6325
6342
  res.set("Content-Type", "text/css");
@@ -6327,11 +6344,11 @@ async function createServerHandle(config4) {
6327
6344
  }
6328
6345
  })
6329
6346
  );
6330
- app.use("/manifest.webmanifest", express.static(join6(distWebDir, "manifest.webmanifest")));
6331
- app.use("/registerSW.js", express.static(join6(distWebDir, "registerSW.js")));
6332
- app.use("/sw.js", express.static(join6(distWebDir, "sw.js")));
6347
+ app.use("/manifest.webmanifest", express.static(join7(distWebDir, "manifest.webmanifest")));
6348
+ app.use("/registerSW.js", express.static(join7(distWebDir, "registerSW.js")));
6349
+ app.use("/sw.js", express.static(join7(distWebDir, "sw.js")));
6333
6350
  app.get("/fox.svg", (_req, res) => {
6334
- readFile3(join6(distWebDir, "fox.svg")).then((content) => {
6351
+ readFile3(join7(distWebDir, "fox.svg")).then((content) => {
6335
6352
  res.set("Content-Type", "image/svg+xml");
6336
6353
  res.send(content);
6337
6354
  }).catch(() => {
@@ -6340,7 +6357,7 @@ async function createServerHandle(config4) {
6340
6357
  });
6341
6358
  app.use(
6342
6359
  "/sounds",
6343
- express.static(join6(distWebDir, "sounds"), {
6360
+ express.static(join7(distWebDir, "sounds"), {
6344
6361
  setHeaders: (res) => {
6345
6362
  res.set("Content-Type", "audio/mpeg");
6346
6363
  }
@@ -6349,15 +6366,15 @@ async function createServerHandle(config4) {
6349
6366
  app.use("/__inspect__.js", (_req, res) => {
6350
6367
  res.set("Access-Control-Allow-Origin", "*");
6351
6368
  res.set("Content-Type", "application/javascript");
6352
- readFile3(join6(distWebDir, "__inspect__.js")).then((content) => res.send(content)).catch(() => res.status(404).send("Not found"));
6369
+ readFile3(join7(distWebDir, "__inspect__.js")).then((content) => res.send(content)).catch(() => res.status(404).send("Not found"));
6353
6370
  });
6354
6371
  app.use("/__inspect__.js", (_req, res) => {
6355
6372
  res.set("Access-Control-Allow-Origin", "*");
6356
6373
  res.set("Content-Type", "application/javascript");
6357
- readFile3(join6(distWebDir, "__inspect__.js")).then((content) => res.send(content)).catch(() => res.status(404).send("Not found"));
6374
+ readFile3(join7(distWebDir, "__inspect__.js")).then((content) => res.send(content)).catch(() => res.status(404).send("Not found"));
6358
6375
  });
6359
6376
  app.get("/", (_req, res) => {
6360
- readFile3(join6(distWebDir, "index.html"), "utf-8").then((content) => res.send(content)).catch(() => {
6377
+ readFile3(join7(distWebDir, "index.html"), "utf-8").then((content) => res.send(content)).catch(() => {
6361
6378
  res.status(404).send("Web UI not built. Run `npm run build:web`");
6362
6379
  });
6363
6380
  });
@@ -6365,7 +6382,7 @@ async function createServerHandle(config4) {
6365
6382
  if (req.path.startsWith("/api/") || req.path.startsWith("/assets/") || req.path.startsWith("/sounds/") || req.path.startsWith("/manifest.webmanifest") || req.path.startsWith("/registerSW.js") || req.path.startsWith("/sw.js") || req.path === "/fox.svg") {
6366
6383
  return;
6367
6384
  }
6368
- readFile3(join6(distWebDir, "index.html"), "utf-8").then((content) => res.send(content)).catch(() => {
6385
+ readFile3(join7(distWebDir, "index.html"), "utf-8").then((content) => res.send(content)).catch(() => {
6369
6386
  res.status(404).send("Web UI not built");
6370
6387
  });
6371
6388
  });
@@ -6380,7 +6397,7 @@ async function createServerHandle(config4) {
6380
6397
  providerManager
6381
6398
  );
6382
6399
  const wss = wssExports.wss;
6383
- const { QueueProcessor } = await import("./processor-QFBRN6AZ.js");
6400
+ const { QueueProcessor } = await import("./processor-F3GKMYJT.js");
6384
6401
  const queueProcessor = new QueueProcessor({
6385
6402
  sessionManager,
6386
6403
  providerManager,
@@ -6400,7 +6417,7 @@ async function createServerHandle(config4) {
6400
6417
  return {
6401
6418
  httpServer,
6402
6419
  ctx: { config: config4, sessionManager, llmClient: getLLMClient(), toolRegistry, providerManager },
6403
- start: (port) => new Promise((resolve2, reject) => {
6420
+ start: (port) => new Promise((resolve3, reject) => {
6404
6421
  const listenPort = port ?? config4.server.port;
6405
6422
  const host = config4.server.host;
6406
6423
  httpServer.listen(listenPort, host, () => {
@@ -6410,11 +6427,11 @@ async function createServerHandle(config4) {
6410
6427
  logger.info(`OpenFox server running at http://${host}:${actualPort}`);
6411
6428
  logger.info(`WebSocket available at ws://${host}:${actualPort}/ws`);
6412
6429
  logger.info(`LLM backend: ${client.getBackend()}, model: ${client.getModel()}, url: ${config4.llm.baseUrl}`);
6413
- resolve2({ port: actualPort });
6430
+ resolve3({ port: actualPort });
6414
6431
  });
6415
6432
  httpServer.on("error", reject);
6416
6433
  }),
6417
- close: () => new Promise((resolve2) => {
6434
+ close: () => new Promise((resolve3) => {
6418
6435
  logger.info("Shutting down...");
6419
6436
  void (async () => {
6420
6437
  await devServerManager.stopAll();
@@ -6427,7 +6444,7 @@ async function createServerHandle(config4) {
6427
6444
  client.terminate();
6428
6445
  }
6429
6446
  wss.close();
6430
- httpServer.close(() => resolve2());
6447
+ httpServer.close(() => resolve3());
6431
6448
  })();
6432
6449
  })
6433
6450
  };
@@ -6446,13 +6463,10 @@ async function createServer(config4) {
6446
6463
  process.on("SIGINT", shutdown);
6447
6464
  process.on("SIGTERM", shutdown);
6448
6465
  }
6449
- function basename2(path) {
6450
- return path.split("/").pop() || path.split("\\").pop() || path;
6451
- }
6452
6466
 
6453
6467
  export {
6454
6468
  VERSION,
6455
6469
  createServerHandle,
6456
6470
  createServer
6457
6471
  };
6458
- //# sourceMappingURL=chunk-N5D6DGMN.js.map
6472
+ //# sourceMappingURL=chunk-B7UUSHT7.js.map
@@ -191,7 +191,7 @@ async function runCli(options) {
191
191
  if (!configExists) {
192
192
  await runNetworkSetup(mode);
193
193
  }
194
- const { runServe } = await import("./serve-SSLGFSLJ.js");
194
+ const { runServe } = await import("./serve-QRK2E7HR.js");
195
195
  const serveOptions = { mode };
196
196
  if (values.port) serveOptions.port = parseInt(values.port);
197
197
  if (values["no-browser"] === true) serveOptions.openBrowser = false;
@@ -203,4 +203,4 @@ async function runCli(options) {
203
203
  export {
204
204
  runCli
205
205
  };
206
- //# sourceMappingURL=chunk-SCUGYF7R.js.map
206
+ //# sourceMappingURL=chunk-FBKS6IPU.js.map