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.
- package/README.md +69 -74
- package/dist/client/analytics-dashboard.html +509 -0
- package/dist/client/analytics.json +598 -0
- package/dist/client/assets/_sessionKey-xUqdePGW.js +97 -0
- package/dist/client/assets/agents-BiadNAEz.js +2 -0
- package/dist/client/assets/agents-screen-C5TPJbry.js +1 -0
- package/dist/client/assets/button-seqh98ae.js +1 -0
- package/dist/client/assets/{connect-BRasuRbB.js → connect-DlVsi-ya.js} +2 -2
- package/dist/client/assets/file-explorer-screen-B0hwrjdF.js +1 -0
- package/dist/client/assets/files-dkr2U72N.js +2 -0
- package/dist/client/assets/index-CwoJpeG1.js +153 -0
- package/dist/client/assets/{index-DHGnKfAU.js → index-D1Et4XlM.js} +1 -1
- package/dist/client/assets/keyboard-shortcuts-dialog-zdnAmDiH.js +1 -0
- package/dist/client/assets/{main-BAHT5yqU.js → main-DOBfHXDF.js} +12 -12
- package/dist/client/assets/opencami-logo-Bxp_4d3X.js +1 -0
- package/dist/client/assets/react-DD8SkMJn.js +1 -0
- package/dist/client/assets/search-dialog-Ck1AQreu.js +1 -0
- package/dist/client/assets/session-export-dialog-Bh3zH4nZ.js +1 -0
- package/dist/client/assets/settings-dialog-CvUsgnnZ.js +1 -0
- package/dist/client/assets/styles-DogPvrGY.css +1 -0
- package/dist/client/assets/switch-BoGcWcnr.js +1 -0
- package/dist/client/assets/use-file-explorer-state-B5JLNsSa.js +12 -0
- package/dist/client/assets/useButton-csSB2uQJ.js +9 -0
- package/dist/client/manifest.json +8 -2
- package/dist/server/assets/{_sessionKey-qlAPF_Ft.js → _sessionKey-DQwkBUS7.js} +981 -229
- package/dist/server/assets/_tanstack-start-manifest_v-cW8K1Mnv.js +4 -0
- package/dist/server/assets/agents-Dz_i76VW.js +11 -0
- package/dist/server/assets/agents-screen-CqQPJndp.js +587 -0
- package/dist/server/assets/{connect-BWI_6rCm.js → connect-CIDOw12K.js} +34 -2
- package/dist/server/assets/{file-explorer-screen-DJXPEG_J.js → file-explorer-screen-BzvgvV8m.js} +7 -58
- package/dist/server/assets/{files-CONoVTGD.js → files-BxvRDIWU.js} +1 -1
- package/dist/server/assets/{index-Bp8QskbI.js → index-BwD7ufHE.js} +4 -3
- package/dist/server/assets/{index-COu2idHm.js → index-CmbNTqa2.js} +105 -14
- package/dist/server/assets/{keyboard-shortcuts-dialog-D5hqVX2v.js → keyboard-shortcuts-dialog-7OEtXUlW.js} +2 -2
- package/dist/server/assets/opencami-logo-C-43FL3R.js +24 -0
- package/dist/server/assets/{router-DbxyvprK.js → router-5qObg5aX.js} +368 -74
- package/dist/server/assets/{search-dialog-JY8C3mqa.js → search-dialog-BE2ZBkj0.js} +44 -12
- package/dist/server/assets/{session-export-dialog-D87uafPD.js → session-export-dialog-DRVbC8Q-.js} +2 -2
- package/dist/server/assets/{settings-dialog-CBj7njLM.js → settings-dialog-BBQcU55J.js} +204 -41
- package/dist/server/assets/switch-DnX0MjGS.js +28 -0
- package/dist/server/assets/tooltip-gbV6rEVv.js +60 -0
- package/dist/server/assets/{menu-D6n4DB0U.js → use-file-explorer-state-DMHdtb7D.js} +56 -57
- package/dist/server/server.js +2 -2
- package/package.json +1 -1
- package/dist/client/assets/_sessionKey-B-MBYHgD.js +0 -95
- package/dist/client/assets/abap-BdImnpbu.js +0 -1
- package/dist/client/assets/actionscript-3-CfeIJUat.js +0 -1
- package/dist/client/assets/ada-bCR0ucgS.js +0 -1
- package/dist/client/assets/andromeeda-C-Jbm3Hp.js +0 -1
- package/dist/client/assets/angular-html-CU67Zn6k.js +0 -1
- package/dist/client/assets/angular-ts-BwZT4LLn.js +0 -1
- package/dist/client/assets/apache-Pmp26Uib.js +0 -1
- package/dist/client/assets/apex-D8_7TLub.js +0 -1
- package/dist/client/assets/apl-dKokRX4l.js +0 -1
- package/dist/client/assets/applescript-Co6uUVPk.js +0 -1
- package/dist/client/assets/ara-BRHolxvo.js +0 -1
- package/dist/client/assets/asciidoc-Dv7Oe6Be.js +0 -1
- package/dist/client/assets/asm-D_Q5rh1f.js +0 -1
- package/dist/client/assets/astro-CbQHKStN.js +0 -1
- package/dist/client/assets/aurora-x-D-2ljcwZ.js +0 -1
- package/dist/client/assets/awk-DMzUqQB5.js +0 -1
- package/dist/client/assets/ayu-dark-CmMr59Fi.js +0 -1
- package/dist/client/assets/ballerina-BFfxhgS-.js +0 -1
- package/dist/client/assets/bat-BkioyH1T.js +0 -1
- package/dist/client/assets/beancount-k_qm7-4y.js +0 -1
- package/dist/client/assets/berry-uYugtg8r.js +0 -1
- package/dist/client/assets/bibtex-CHM0blh-.js +0 -1
- package/dist/client/assets/bicep-Bmn6On1c.js +0 -1
- package/dist/client/assets/blade-D4QpJJKB.js +0 -1
- package/dist/client/assets/bsl-BO_Y6i37.js +0 -1
- package/dist/client/assets/button-D_9OBT_f.js +0 -1
- package/dist/client/assets/c-BIGW1oBm.js +0 -1
- package/dist/client/assets/c3-VCDPK7BO.js +0 -1
- package/dist/client/assets/cadence-Bv_4Rxtq.js +0 -1
- package/dist/client/assets/cairo-KRGpt6FW.js +0 -1
- package/dist/client/assets/catppuccin-frappe-DFWUc33u.js +0 -1
- package/dist/client/assets/catppuccin-latte-C9dUb6Cb.js +0 -1
- package/dist/client/assets/catppuccin-macchiato-DQyhUUbL.js +0 -1
- package/dist/client/assets/catppuccin-mocha-D87Tk5Gz.js +0 -1
- package/dist/client/assets/clarity-D53aC0YG.js +0 -1
- package/dist/client/assets/clojure-P80f7IUj.js +0 -1
- package/dist/client/assets/cmake-D1j8_8rp.js +0 -1
- package/dist/client/assets/cobol-nwyudZeR.js +0 -1
- package/dist/client/assets/codeowners-Bp6g37R7.js +0 -1
- package/dist/client/assets/codeql-DsOJ9woJ.js +0 -1
- package/dist/client/assets/coffee-Ch7k5sss.js +0 -1
- package/dist/client/assets/common-lisp-Cg-RD9OK.js +0 -1
- package/dist/client/assets/coq-DkFqJrB1.js +0 -1
- package/dist/client/assets/cpp-CofmeUqb.js +0 -1
- package/dist/client/assets/crystal-tKQVLTB8.js +0 -1
- package/dist/client/assets/csharp-K5feNrxe.js +0 -1
- package/dist/client/assets/css-DPfMkruS.js +0 -1
- package/dist/client/assets/csv-fuZLfV_i.js +0 -1
- package/dist/client/assets/cue-D82EKSYY.js +0 -1
- package/dist/client/assets/cypher-COkxafJQ.js +0 -1
- package/dist/client/assets/d-85-TOEBH.js +0 -1
- package/dist/client/assets/dark-plus-C3mMm8J8.js +0 -1
- package/dist/client/assets/dart-CF10PKvl.js +0 -1
- package/dist/client/assets/dax-CEL-wOlO.js +0 -1
- package/dist/client/assets/desktop-BmXAJ9_W.js +0 -1
- package/dist/client/assets/diff-D97Zzqfu.js +0 -1
- package/dist/client/assets/docker-BcOcwvcX.js +0 -1
- package/dist/client/assets/dotenv-Da5cRb03.js +0 -1
- package/dist/client/assets/dracula-BzJJZx-M.js +0 -1
- package/dist/client/assets/dracula-soft-BXkSAIEj.js +0 -1
- package/dist/client/assets/dream-maker-BtqSS_iP.js +0 -1
- package/dist/client/assets/edge-BkV0erSs.js +0 -1
- package/dist/client/assets/elixir-CDX3lj18.js +0 -1
- package/dist/client/assets/elm-DbKCFpqz.js +0 -1
- package/dist/client/assets/emacs-lisp-C9XAeP06.js +0 -1
- package/dist/client/assets/erb-BOJIQeun.js +0 -1
- package/dist/client/assets/erlang-DsQrWhSR.js +0 -1
- package/dist/client/assets/everforest-dark-BgDCqdQA.js +0 -1
- package/dist/client/assets/everforest-light-C8M2exoo.js +0 -1
- package/dist/client/assets/fennel-BYunw83y.js +0 -1
- package/dist/client/assets/file-explorer-screen-Daf4rIq9.js +0 -1
- package/dist/client/assets/files-ByeIMLfw.js +0 -2
- package/dist/client/assets/fish-BvzEVeQv.js +0 -1
- package/dist/client/assets/fluent-C4IJs8-o.js +0 -1
- package/dist/client/assets/fortran-fixed-form-CkoXwp7k.js +0 -1
- package/dist/client/assets/fortran-free-form-BxgE0vQu.js +0 -1
- package/dist/client/assets/fsharp-CXgrBDvD.js +0 -1
- package/dist/client/assets/gdresource-B7Tvp0Sc.js +0 -1
- package/dist/client/assets/gdscript-DTMYz4Jt.js +0 -1
- package/dist/client/assets/gdshader-DkwncUOv.js +0 -1
- package/dist/client/assets/genie-D0YGMca9.js +0 -1
- package/dist/client/assets/gherkin-DyxjwDmM.js +0 -1
- package/dist/client/assets/git-commit-F4YmCXRG.js +0 -1
- package/dist/client/assets/git-rebase-r7XF79zn.js +0 -1
- package/dist/client/assets/github-dark-DHJKELXO.js +0 -1
- package/dist/client/assets/github-dark-default-Cuk6v7N8.js +0 -1
- package/dist/client/assets/github-dark-dimmed-DH5Ifo-i.js +0 -1
- package/dist/client/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -1
- package/dist/client/assets/github-light-DAi9KRSo.js +0 -1
- package/dist/client/assets/github-light-default-D7oLnXFd.js +0 -1
- package/dist/client/assets/github-light-high-contrast-BfjtVDDH.js +0 -1
- package/dist/client/assets/gleam-BspZqrRM.js +0 -1
- package/dist/client/assets/glimmer-js-Rg0-pVw9.js +0 -1
- package/dist/client/assets/glimmer-ts-U6CK756n.js +0 -1
- package/dist/client/assets/glsl-DplSGwfg.js +0 -1
- package/dist/client/assets/gn-n2N0HUVH.js +0 -1
- package/dist/client/assets/gnuplot-DdkO51Og.js +0 -1
- package/dist/client/assets/go-Dn2_MT6a.js +0 -1
- package/dist/client/assets/graphql-ChdNCCLP.js +0 -1
- package/dist/client/assets/groovy-gcz8RCvz.js +0 -1
- package/dist/client/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -1
- package/dist/client/assets/gruvbox-dark-medium-GsRaNv29.js +0 -1
- package/dist/client/assets/gruvbox-dark-soft-CVdnzihN.js +0 -1
- package/dist/client/assets/gruvbox-light-hard-CH1njM8p.js +0 -1
- package/dist/client/assets/gruvbox-light-medium-DRw_LuNl.js +0 -1
- package/dist/client/assets/gruvbox-light-soft-hJgmCMqR.js +0 -1
- package/dist/client/assets/hack-CaT9iCJl.js +0 -1
- package/dist/client/assets/haml-B8DHNrY2.js +0 -1
- package/dist/client/assets/handlebars-BL8al0AC.js +0 -1
- package/dist/client/assets/haskell-Df6bDoY_.js +0 -1
- package/dist/client/assets/haxe-CzTSHFRz.js +0 -1
- package/dist/client/assets/hcl-BWvSN4gD.js +0 -1
- package/dist/client/assets/hjson-D5-asLiD.js +0 -1
- package/dist/client/assets/hlsl-D3lLCCz7.js +0 -1
- package/dist/client/assets/houston-DnULxvSX.js +0 -1
- package/dist/client/assets/html-GMplVEZG.js +0 -1
- package/dist/client/assets/html-derivative-BFtXZ54Q.js +0 -1
- package/dist/client/assets/http-jrhK8wxY.js +0 -1
- package/dist/client/assets/hurl-irOxFIW8.js +0 -1
- package/dist/client/assets/hxml-Bvhsp5Yf.js +0 -1
- package/dist/client/assets/hy-DFXneXwc.js +0 -1
- package/dist/client/assets/imba-DGztddWO.js +0 -1
- package/dist/client/assets/index-ByUDBI-n.js +0 -14
- package/dist/client/assets/ini-BEwlwnbL.js +0 -1
- package/dist/client/assets/java-CylS5w8V.js +0 -1
- package/dist/client/assets/javascript-wDzz0qaB.js +0 -1
- package/dist/client/assets/jinja-4LBKfQ-Z.js +0 -1
- package/dist/client/assets/jison-wvAkD_A8.js +0 -1
- package/dist/client/assets/json-Cp-IABpG.js +0 -1
- package/dist/client/assets/json5-C9tS-k6U.js +0 -1
- package/dist/client/assets/jsonc-Des-eS-w.js +0 -1
- package/dist/client/assets/jsonl-DcaNXYhu.js +0 -1
- package/dist/client/assets/jsonnet-DFQXde-d.js +0 -1
- package/dist/client/assets/jssm-C2t-YnRu.js +0 -1
- package/dist/client/assets/jsx-g9-lgVsj.js +0 -1
- package/dist/client/assets/julia-CxzCAyBv.js +0 -1
- package/dist/client/assets/kanagawa-dragon-CkXjmgJE.js +0 -1
- package/dist/client/assets/kanagawa-lotus-CfQXZHmo.js +0 -1
- package/dist/client/assets/kanagawa-wave-DWedfzmr.js +0 -1
- package/dist/client/assets/kdl-DV7GczEv.js +0 -1
- package/dist/client/assets/keyboard-shortcuts-dialog-agsWJ36q.js +0 -1
- package/dist/client/assets/kotlin-BdnUsdx6.js +0 -1
- package/dist/client/assets/kusto-DZf3V79B.js +0 -1
- package/dist/client/assets/laserwave-DUszq2jm.js +0 -1
- package/dist/client/assets/latex-B4uzh10-.js +0 -1
- package/dist/client/assets/lean-BZvkOJ9d.js +0 -1
- package/dist/client/assets/less-B1dDrJ26.js +0 -1
- package/dist/client/assets/light-plus-B7mTdjB0.js +0 -1
- package/dist/client/assets/liquid-DYVedYrR.js +0 -1
- package/dist/client/assets/llvm-BtvRca6l.js +0 -1
- package/dist/client/assets/log-2UxHyX5q.js +0 -1
- package/dist/client/assets/logo-BtOb2qkB.js +0 -1
- package/dist/client/assets/lua-BbnMAYS6.js +0 -1
- package/dist/client/assets/luau-C-HG3fhB.js +0 -1
- package/dist/client/assets/make-CHLpvVh8.js +0 -1
- package/dist/client/assets/markdown-Cvjx9yec.js +0 -1
- package/dist/client/assets/marko-DZsq8hO1.js +0 -1
- package/dist/client/assets/material-theme-D5KoaKCx.js +0 -1
- package/dist/client/assets/material-theme-darker-BfHTSMKl.js +0 -1
- package/dist/client/assets/material-theme-lighter-B0m2ddpp.js +0 -1
- package/dist/client/assets/material-theme-ocean-CyktbL80.js +0 -1
- package/dist/client/assets/material-theme-palenight-Csfq5Kiy.js +0 -1
- package/dist/client/assets/matlab-D7o27uSR.js +0 -1
- package/dist/client/assets/mdc-DUICxH0z.js +0 -1
- package/dist/client/assets/mdx-Cmh6b_Ma.js +0 -1
- package/dist/client/assets/menu-BhVaz8Ly.js +0 -20
- package/dist/client/assets/mermaid-mWjccvbQ.js +0 -1
- package/dist/client/assets/min-dark-CafNBF8u.js +0 -1
- package/dist/client/assets/min-light-CTRr51gU.js +0 -1
- package/dist/client/assets/mipsasm-CKIfxQSi.js +0 -1
- package/dist/client/assets/mojo-B93PlW-d.js +0 -1
- package/dist/client/assets/monokai-D4h5O-jR.js +0 -1
- package/dist/client/assets/moonbit-Ba13S78F.js +0 -1
- package/dist/client/assets/move-Bu9oaDYs.js +0 -1
- package/dist/client/assets/narrat-DRg8JJMk.js +0 -1
- package/dist/client/assets/nextflow-BrzmwbiE.js +0 -1
- package/dist/client/assets/nginx-DknmC5AR.js +0 -1
- package/dist/client/assets/night-owl-C39BiMTA.js +0 -1
- package/dist/client/assets/nim-CVrawwO9.js +0 -1
- package/dist/client/assets/nix-CwoSXNpI.js +0 -1
- package/dist/client/assets/nord-Ddv68eIx.js +0 -1
- package/dist/client/assets/nushell-C-sUppwS.js +0 -1
- package/dist/client/assets/objective-c-DXmwc3jG.js +0 -1
- package/dist/client/assets/objective-cpp-CLxacb5B.js +0 -1
- package/dist/client/assets/ocaml-C0hk2d4L.js +0 -1
- package/dist/client/assets/one-dark-pro-DVMEJ2y_.js +0 -1
- package/dist/client/assets/one-light-PoHY5YXO.js +0 -1
- package/dist/client/assets/openscad-C4EeE6gA.js +0 -1
- package/dist/client/assets/pascal-D93ZcfNL.js +0 -1
- package/dist/client/assets/perl-C0TMdlhV.js +0 -1
- package/dist/client/assets/php-CDn_0X-4.js +0 -1
- package/dist/client/assets/pkl-u5AG7uiY.js +0 -1
- package/dist/client/assets/plastic-3e1v2bzS.js +0 -1
- package/dist/client/assets/plsql-ChMvpjG-.js +0 -1
- package/dist/client/assets/po-BTJTHyun.js +0 -1
- package/dist/client/assets/poimandres-CS3Unz2-.js +0 -1
- package/dist/client/assets/polar-C0HS_06l.js +0 -1
- package/dist/client/assets/postcss-CXtECtnM.js +0 -1
- package/dist/client/assets/powerquery-CEu0bR-o.js +0 -1
- package/dist/client/assets/powershell-Dpen1YoG.js +0 -1
- package/dist/client/assets/prisma-Dd19v3D-.js +0 -1
- package/dist/client/assets/prolog-CbFg5uaA.js +0 -1
- package/dist/client/assets/proto-C7zT0LnQ.js +0 -1
- package/dist/client/assets/pug-CGlum2m_.js +0 -1
- package/dist/client/assets/puppet-BMWR74SV.js +0 -1
- package/dist/client/assets/purescript-CklMAg4u.js +0 -1
- package/dist/client/assets/python-B6aJPvgy.js +0 -1
- package/dist/client/assets/qml-3beO22l8.js +0 -1
- package/dist/client/assets/qmldir-C8lEn-DE.js +0 -1
- package/dist/client/assets/qss-IeuSbFQv.js +0 -1
- package/dist/client/assets/r-Dspwwk_N.js +0 -1
- package/dist/client/assets/racket-BqYA7rlc.js +0 -1
- package/dist/client/assets/raku-DXvB9xmW.js +0 -1
- package/dist/client/assets/razor-C1TweQQi.js +0 -1
- package/dist/client/assets/red-bN70gL4F.js +0 -1
- package/dist/client/assets/reg-C-SQnVFl.js +0 -1
- package/dist/client/assets/regexp-CDVJQ6XC.js +0 -1
- package/dist/client/assets/rel-C3B-1QV4.js +0 -1
- package/dist/client/assets/riscv-BM1_JUlF.js +0 -1
- package/dist/client/assets/rose-pine-dawn-DHQR4-dF.js +0 -1
- package/dist/client/assets/rose-pine-moon-D4_iv3hh.js +0 -1
- package/dist/client/assets/rose-pine-qdsjHGoJ.js +0 -1
- package/dist/client/assets/rosmsg-BJDFO7_C.js +0 -1
- package/dist/client/assets/rst-B0xPkSld.js +0 -1
- package/dist/client/assets/ruby-BvKwtOVI.js +0 -1
- package/dist/client/assets/rust-B1yitclQ.js +0 -1
- package/dist/client/assets/sas-cz2c8ADy.js +0 -1
- package/dist/client/assets/sass-Cj5Yp3dK.js +0 -1
- package/dist/client/assets/scala-C151Ov-r.js +0 -1
- package/dist/client/assets/scheme-C98Dy4si.js +0 -1
- package/dist/client/assets/scss-OYdSNvt2.js +0 -1
- package/dist/client/assets/sdbl-DVxCFoDh.js +0 -1
- package/dist/client/assets/search-dialog-CHwnOyPS.js +0 -1
- package/dist/client/assets/session-export-dialog-uOlDUzgX.js +0 -1
- package/dist/client/assets/settings-dialog-D0aYDkAM.js +0 -1
- package/dist/client/assets/shaderlab-Dg9Lc6iA.js +0 -1
- package/dist/client/assets/shellscript-Yzrsuije.js +0 -1
- package/dist/client/assets/shellsession-BADoaaVG.js +0 -1
- package/dist/client/assets/slack-dark-BthQWCQV.js +0 -1
- package/dist/client/assets/slack-ochin-DqwNpetd.js +0 -1
- package/dist/client/assets/smalltalk-BERRCDM3.js +0 -1
- package/dist/client/assets/snazzy-light-Bw305WKR.js +0 -1
- package/dist/client/assets/solarized-dark-DXbdFlpD.js +0 -1
- package/dist/client/assets/solarized-light-L9t79GZl.js +0 -1
- package/dist/client/assets/solidity-rGO070M0.js +0 -1
- package/dist/client/assets/soy-Brmx7dQM.js +0 -1
- package/dist/client/assets/sparql-rVzFXLq3.js +0 -1
- package/dist/client/assets/splunk-BtCnVYZw.js +0 -1
- package/dist/client/assets/sql-BLtJtn59.js +0 -1
- package/dist/client/assets/ssh-config-_ykCGR6B.js +0 -1
- package/dist/client/assets/stata-BH5u7GGu.js +0 -1
- package/dist/client/assets/styles-7aVSlb6l.css +0 -1
- package/dist/client/assets/stylus-BEDo0Tqx.js +0 -1
- package/dist/client/assets/svelte-zxCyuUbr.js +0 -1
- package/dist/client/assets/swift-Dg5xB15N.js +0 -1
- package/dist/client/assets/synthwave-84-CbfX1IO0.js +0 -1
- package/dist/client/assets/system-verilog-CnnmHF94.js +0 -1
- package/dist/client/assets/systemd-4A_iFExJ.js +0 -1
- package/dist/client/assets/talonscript-CkByrt1z.js +0 -1
- package/dist/client/assets/tasl-QIJgUcNo.js +0 -1
- package/dist/client/assets/tcl-dwOrl1Do.js +0 -1
- package/dist/client/assets/templ-W15q3VgB.js +0 -1
- package/dist/client/assets/terraform-BETggiCN.js +0 -1
- package/dist/client/assets/tex-CvyZ59Mk.js +0 -1
- package/dist/client/assets/tokyo-night-hegEt444.js +0 -1
- package/dist/client/assets/toml-vGWfd6FD.js +0 -1
- package/dist/client/assets/ts-tags-zn1MmPIZ.js +0 -1
- package/dist/client/assets/tsv-B_m7g4N7.js +0 -1
- package/dist/client/assets/tsx-COt5Ahok.js +0 -1
- package/dist/client/assets/turtle-BsS91CYL.js +0 -1
- package/dist/client/assets/twig-CO9l9SDP.js +0 -1
- package/dist/client/assets/typescript-BPQ3VLAy.js +0 -1
- package/dist/client/assets/typespec-BGHnOYBU.js +0 -1
- package/dist/client/assets/typst-DHCkPAjA.js +0 -1
- package/dist/client/assets/v-BcVCzyr7.js +0 -1
- package/dist/client/assets/vala-CsfeWuGM.js +0 -1
- package/dist/client/assets/vb-D17OF-Vu.js +0 -1
- package/dist/client/assets/verilog-BQ8w6xss.js +0 -1
- package/dist/client/assets/vesper-DU1UobuO.js +0 -1
- package/dist/client/assets/vhdl-CeAyd5Ju.js +0 -1
- package/dist/client/assets/viml-CJc9bBzg.js +0 -1
- package/dist/client/assets/vitesse-black-Bkuqu6BP.js +0 -1
- package/dist/client/assets/vitesse-dark-D0r3Knsf.js +0 -1
- package/dist/client/assets/vitesse-light-CVO1_9PV.js +0 -1
- package/dist/client/assets/vue-DN_0RTcg.js +0 -1
- package/dist/client/assets/vue-html-AaS7Mt5G.js +0 -1
- package/dist/client/assets/vue-vine-CQOfvN7w.js +0 -1
- package/dist/client/assets/vyper-CDx5xZoG.js +0 -1
- package/dist/client/assets/wasm-CG6Dc4jp.js +0 -1
- package/dist/client/assets/wasm-MzD3tlZU.js +0 -1
- package/dist/client/assets/wenyan-BV7otONQ.js +0 -1
- package/dist/client/assets/wgsl-Dx-B1_4e.js +0 -1
- package/dist/client/assets/wikitext-BhOHFoWU.js +0 -1
- package/dist/client/assets/wit-5i3qLPDT.js +0 -1
- package/dist/client/assets/wolfram-lXgVvXCa.js +0 -1
- package/dist/client/assets/xml-sdJ4AIDG.js +0 -1
- package/dist/client/assets/xsl-CtQFsRM5.js +0 -1
- package/dist/client/assets/yaml-Buea-lGh.js +0 -1
- package/dist/client/assets/zenscript-DVFEvuxE.js +0 -1
- package/dist/client/assets/zig-VOosw3JB.js +0 -1
- 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-
|
|
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
|
-
|
|
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$
|
|
179
|
-
const Route$
|
|
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("./
|
|
192
|
-
const Route$
|
|
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("./
|
|
196
|
-
const Route$
|
|
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-
|
|
200
|
-
const Route$
|
|
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-
|
|
204
|
-
const Route$
|
|
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$
|
|
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
|
|
578
|
-
const
|
|
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
|
-
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
-
|
|
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$
|
|
2855
|
+
const NewRoute = Route$r.update({
|
|
2580
2856
|
id: "/new",
|
|
2581
2857
|
path: "/new",
|
|
2582
|
-
getParentRoute: () => Route$
|
|
2858
|
+
getParentRoute: () => Route$s
|
|
2583
2859
|
});
|
|
2584
|
-
const FilesRoute = Route$
|
|
2860
|
+
const FilesRoute = Route$q.update({
|
|
2585
2861
|
id: "/files",
|
|
2586
2862
|
path: "/files",
|
|
2587
|
-
getParentRoute: () => Route$
|
|
2863
|
+
getParentRoute: () => Route$s
|
|
2588
2864
|
});
|
|
2589
|
-
const ConnectRoute = Route$
|
|
2865
|
+
const ConnectRoute = Route$p.update({
|
|
2590
2866
|
id: "/connect",
|
|
2591
2867
|
path: "/connect",
|
|
2592
|
-
getParentRoute: () => Route$
|
|
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$
|
|
2875
|
+
const IndexRoute = Route$n.update({
|
|
2595
2876
|
id: "/",
|
|
2596
2877
|
path: "/",
|
|
2597
|
-
getParentRoute: () => Route$
|
|
2878
|
+
getParentRoute: () => Route$s
|
|
2598
2879
|
});
|
|
2599
|
-
const ChatSessionKeyRoute = Route$
|
|
2880
|
+
const ChatSessionKeyRoute = Route$m.update({
|
|
2600
2881
|
id: "/chat/$sessionKey",
|
|
2601
2882
|
path: "/chat/$sessionKey",
|
|
2602
|
-
getParentRoute: () => Route$
|
|
2883
|
+
getParentRoute: () => Route$s
|
|
2603
2884
|
});
|
|
2604
|
-
const ApiTtsRoute = Route$
|
|
2885
|
+
const ApiTtsRoute = Route$l.update({
|
|
2605
2886
|
id: "/api/tts",
|
|
2606
2887
|
path: "/api/tts",
|
|
2607
|
-
getParentRoute: () => Route$
|
|
2888
|
+
getParentRoute: () => Route$s
|
|
2608
2889
|
});
|
|
2609
|
-
const
|
|
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$
|
|
2898
|
+
getParentRoute: () => Route$s
|
|
2613
2899
|
});
|
|
2614
|
-
const ApiSessionsRoute = Route$
|
|
2900
|
+
const ApiSessionsRoute = Route$i.update({
|
|
2615
2901
|
id: "/api/sessions",
|
|
2616
2902
|
path: "/api/sessions",
|
|
2617
|
-
getParentRoute: () => Route$
|
|
2903
|
+
getParentRoute: () => Route$s
|
|
2618
2904
|
});
|
|
2619
|
-
const ApiSendRoute = Route$
|
|
2905
|
+
const ApiSendRoute = Route$h.update({
|
|
2620
2906
|
id: "/api/send",
|
|
2621
2907
|
path: "/api/send",
|
|
2622
|
-
getParentRoute: () => Route$
|
|
2908
|
+
getParentRoute: () => Route$s
|
|
2623
2909
|
});
|
|
2624
|
-
const ApiPingRoute = Route$
|
|
2910
|
+
const ApiPingRoute = Route$g.update({
|
|
2625
2911
|
id: "/api/ping",
|
|
2626
2912
|
path: "/api/ping",
|
|
2627
|
-
getParentRoute: () => Route$
|
|
2913
|
+
getParentRoute: () => Route$s
|
|
2628
2914
|
});
|
|
2629
|
-
const ApiPersonasRoute = Route$
|
|
2915
|
+
const ApiPersonasRoute = Route$f.update({
|
|
2630
2916
|
id: "/api/personas",
|
|
2631
2917
|
path: "/api/personas",
|
|
2632
|
-
getParentRoute: () => Route$
|
|
2918
|
+
getParentRoute: () => Route$s
|
|
2633
2919
|
});
|
|
2634
|
-
const ApiPathsRoute = Route$
|
|
2920
|
+
const ApiPathsRoute = Route$e.update({
|
|
2635
2921
|
id: "/api/paths",
|
|
2636
2922
|
path: "/api/paths",
|
|
2637
|
-
getParentRoute: () => Route$
|
|
2923
|
+
getParentRoute: () => Route$s
|
|
2638
2924
|
});
|
|
2639
|
-
const ApiModelsRoute = Route$
|
|
2925
|
+
const ApiModelsRoute = Route$d.update({
|
|
2640
2926
|
id: "/api/models",
|
|
2641
2927
|
path: "/api/models",
|
|
2642
|
-
getParentRoute: () => Route$
|
|
2928
|
+
getParentRoute: () => Route$s
|
|
2643
2929
|
});
|
|
2644
|
-
const ApiLlmFeaturesRoute = Route$
|
|
2930
|
+
const ApiLlmFeaturesRoute = Route$c.update({
|
|
2645
2931
|
id: "/api/llm-features",
|
|
2646
2932
|
path: "/api/llm-features",
|
|
2647
|
-
getParentRoute: () => Route$
|
|
2933
|
+
getParentRoute: () => Route$s
|
|
2648
2934
|
});
|
|
2649
|
-
const ApiHistoryRoute = Route$
|
|
2935
|
+
const ApiHistoryRoute = Route$b.update({
|
|
2650
2936
|
id: "/api/history",
|
|
2651
2937
|
path: "/api/history",
|
|
2652
|
-
getParentRoute: () => Route$
|
|
2938
|
+
getParentRoute: () => Route$s
|
|
2653
2939
|
});
|
|
2654
|
-
const ApiFollowUpsRoute = Route$
|
|
2940
|
+
const ApiFollowUpsRoute = Route$a.update({
|
|
2655
2941
|
id: "/api/follow-ups",
|
|
2656
2942
|
path: "/api/follow-ups",
|
|
2657
|
-
getParentRoute: () => Route$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
2747
|
-
Route$
|
|
3040
|
+
Route$n as R,
|
|
3041
|
+
Route$m as a,
|
|
2748
3042
|
router as r
|
|
2749
3043
|
};
|