remote-codex 0.11.7 → 0.11.9
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/apps/relay-server/dist/index.js +27 -5
- package/apps/supervisor-api/dist/chunk-2ELO2EVR.js +27897 -0
- package/apps/supervisor-api/dist/{chunk-ZWZQVPDT.js → chunk-NWZLUCQV.js} +56 -15
- package/apps/supervisor-api/dist/chunk-XKQPZVOC.js +27890 -0
- package/apps/supervisor-api/dist/index.js +1 -1
- package/apps/supervisor-api/dist/worker-index.js +1 -1
- package/apps/supervisor-web/dist/assets/abap-BdImnpbu.js +1 -0
- package/apps/supervisor-web/dist/assets/actionscript-3-CoDkCxhg.js +1 -0
- package/apps/supervisor-web/dist/assets/ada-bCR0ucgS.js +1 -0
- package/apps/supervisor-web/dist/assets/andromeeda-C4gqWexZ.js +1 -0
- package/apps/supervisor-web/dist/assets/angular-html-CU67Zn6k.js +1 -0
- package/apps/supervisor-web/dist/assets/angular-ts-BwZT4LLn.js +1 -0
- package/apps/supervisor-web/dist/assets/apache-Pmp26Uib.js +1 -0
- package/apps/supervisor-web/dist/assets/apex-D8_7TLub.js +1 -0
- package/apps/supervisor-web/dist/assets/apl-dKokRX4l.js +1 -0
- package/apps/supervisor-web/dist/assets/applescript-Co6uUVPk.js +1 -0
- package/apps/supervisor-web/dist/assets/ara-BRHolxvo.js +1 -0
- package/apps/supervisor-web/dist/assets/asciidoc-Ve4PFQV2.js +1 -0
- package/apps/supervisor-web/dist/assets/asm-D_Q5rh1f.js +1 -0
- package/apps/supervisor-web/dist/assets/astro-CbQHKStN.js +1 -0
- package/apps/supervisor-web/dist/assets/aurora-x-D-2ljcwZ.js +1 -0
- package/apps/supervisor-web/dist/assets/awk-DMzUqQB5.js +1 -0
- package/apps/supervisor-web/dist/assets/ayu-mirage-32ctXXKs.js +1 -0
- package/apps/supervisor-web/dist/assets/ballerina-BFfxhgS-.js +1 -0
- package/apps/supervisor-web/dist/assets/bat-BkioyH1T.js +1 -0
- package/apps/supervisor-web/dist/assets/beancount-k_qm7-4y.js +1 -0
- package/apps/supervisor-web/dist/assets/berry-uYugtg8r.js +1 -0
- package/apps/supervisor-web/dist/assets/bibtex-CHM0blh-.js +1 -0
- package/apps/supervisor-web/dist/assets/bicep-Bmn6On1c.js +1 -0
- package/apps/supervisor-web/dist/assets/bird2-DPOp833l.js +1 -0
- package/apps/supervisor-web/dist/assets/blade-D4QpJJKB.js +1 -0
- package/apps/supervisor-web/dist/assets/bsl-BO_Y6i37.js +1 -0
- package/apps/supervisor-web/dist/assets/c-BIGW1oBm.js +1 -0
- package/apps/supervisor-web/dist/assets/c3-eo99z4R2.js +1 -0
- package/apps/supervisor-web/dist/assets/cadence-Bv_4Rxtq.js +1 -0
- package/apps/supervisor-web/dist/assets/cairo-KRGpt6FW.js +1 -0
- package/apps/supervisor-web/dist/assets/catppuccin-frappe-DFWUc33u.js +1 -0
- package/apps/supervisor-web/dist/assets/catppuccin-latte-C9dUb6Cb.js +1 -0
- package/apps/supervisor-web/dist/assets/catppuccin-macchiato-DQyhUUbL.js +1 -0
- package/apps/supervisor-web/dist/assets/catppuccin-mocha-D87Tk5Gz.js +1 -0
- package/apps/supervisor-web/dist/assets/clarity-D53aC0YG.js +1 -0
- package/apps/supervisor-web/dist/assets/clojure-P80f7IUj.js +1 -0
- package/apps/supervisor-web/dist/assets/cmake-D1j8_8rp.js +1 -0
- package/apps/supervisor-web/dist/assets/cobol-nwyudZeR.js +1 -0
- package/apps/supervisor-web/dist/assets/codeowners-Bp6g37R7.js +1 -0
- package/apps/supervisor-web/dist/assets/codeql-DsOJ9woJ.js +1 -0
- package/apps/supervisor-web/dist/assets/coffee-Ch7k5sss.js +1 -0
- package/apps/supervisor-web/dist/assets/common-lisp-Cg-RD9OK.js +1 -0
- package/apps/supervisor-web/dist/assets/coq-DkFqJrB1.js +1 -0
- package/apps/supervisor-web/dist/assets/cpp-CofmeUqb.js +1 -0
- package/apps/supervisor-web/dist/assets/crystal-tKQVLTB8.js +1 -0
- package/apps/supervisor-web/dist/assets/csharp-COcwbKMJ.js +1 -0
- package/apps/supervisor-web/dist/assets/{css-CLj8gQPS.js → css-DPfMkruS.js} +1 -1
- package/apps/supervisor-web/dist/assets/cue-D82EKSYY.js +1 -0
- package/apps/supervisor-web/dist/assets/cypher-COkxafJQ.js +1 -0
- package/apps/supervisor-web/dist/assets/d-85-TOEBH.js +1 -0
- package/apps/supervisor-web/dist/assets/dark-plus-C3mMm8J8.js +1 -0
- package/apps/supervisor-web/dist/assets/dart-CF10PKvl.js +1 -0
- package/apps/supervisor-web/dist/assets/dax-CEL-wOlO.js +1 -0
- package/apps/supervisor-web/dist/assets/desktop-BmXAJ9_W.js +1 -0
- package/apps/supervisor-web/dist/assets/diff-D97Zzqfu.js +1 -0
- package/apps/supervisor-web/dist/assets/docker-BcOcwvcX.js +1 -0
- package/apps/supervisor-web/dist/assets/dotenv-Da5cRb03.js +1 -0
- package/apps/supervisor-web/dist/assets/dracula-BzJJZx-M.js +1 -0
- package/apps/supervisor-web/dist/assets/dracula-soft-BXkSAIEj.js +1 -0
- package/apps/supervisor-web/dist/assets/dream-maker-BtqSS_iP.js +1 -0
- package/apps/supervisor-web/dist/assets/edge-BkV0erSs.js +1 -0
- package/apps/supervisor-web/dist/assets/elixir-CDX3lj18.js +1 -0
- package/apps/supervisor-web/dist/assets/elm-DbKCFpqz.js +1 -0
- package/apps/supervisor-web/dist/assets/emacs-lisp-C9XAeP06.js +1 -0
- package/apps/supervisor-web/dist/assets/erb-B12qg9BL.js +1 -0
- package/apps/supervisor-web/dist/assets/erlang-DsQrWhSR.js +1 -0
- package/apps/supervisor-web/dist/assets/everforest-dark-BgDCqdQA.js +1 -0
- package/apps/supervisor-web/dist/assets/everforest-light-C8M2exoo.js +1 -0
- package/apps/supervisor-web/dist/assets/fennel-BYunw83y.js +1 -0
- package/apps/supervisor-web/dist/assets/fish-BvzEVeQv.js +1 -0
- package/apps/supervisor-web/dist/assets/fluent-C4IJs8-o.js +1 -0
- package/apps/supervisor-web/dist/assets/fortran-fixed-form-CkoXwp7k.js +1 -0
- package/apps/supervisor-web/dist/assets/fortran-free-form-BxgE0vQu.js +1 -0
- package/apps/supervisor-web/dist/assets/fsharp-CXgrBDvD.js +1 -0
- package/apps/supervisor-web/dist/assets/gdresource-BOOCDP_w.js +1 -0
- package/apps/supervisor-web/dist/assets/gdscript-C5YyOfLZ.js +1 -0
- package/apps/supervisor-web/dist/assets/gdshader-DkwncUOv.js +1 -0
- package/apps/supervisor-web/dist/assets/genie-D0YGMca9.js +1 -0
- package/apps/supervisor-web/dist/assets/gherkin-DyxjwDmM.js +1 -0
- package/apps/supervisor-web/dist/assets/git-commit-F4YmCXRG.js +1 -0
- package/apps/supervisor-web/dist/assets/git-rebase-r7XF79zn.js +1 -0
- package/apps/supervisor-web/dist/assets/github-dark-DHJKELXO.js +1 -0
- package/apps/supervisor-web/dist/assets/github-dark-default-Cuk6v7N8.js +1 -0
- package/apps/supervisor-web/dist/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
- package/apps/supervisor-web/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
- package/apps/supervisor-web/dist/assets/github-light-DAi9KRSo.js +1 -0
- package/apps/supervisor-web/dist/assets/github-light-default-D7oLnXFd.js +1 -0
- package/apps/supervisor-web/dist/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
- package/apps/supervisor-web/dist/assets/gleam-BspZqrRM.js +1 -0
- package/apps/supervisor-web/dist/assets/glimmer-js-Rg0-pVw9.js +1 -0
- package/apps/supervisor-web/dist/assets/glimmer-ts-U6CK756n.js +1 -0
- package/apps/supervisor-web/dist/assets/glsl-DplSGwfg.js +1 -0
- package/apps/supervisor-web/dist/assets/gn-n2N0HUVH.js +1 -0
- package/apps/supervisor-web/dist/assets/gnuplot-DdkO51Og.js +1 -0
- package/apps/supervisor-web/dist/assets/go-CxLEBnE3.js +1 -0
- package/apps/supervisor-web/dist/assets/graphql-ChdNCCLP.js +1 -0
- package/apps/supervisor-web/dist/assets/groovy-gcz8RCvz.js +1 -0
- package/apps/supervisor-web/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +1 -0
- package/apps/supervisor-web/dist/assets/gruvbox-dark-medium-GsRaNv29.js +1 -0
- package/apps/supervisor-web/dist/assets/gruvbox-dark-soft-CVdnzihN.js +1 -0
- package/apps/supervisor-web/dist/assets/gruvbox-light-hard-CH1njM8p.js +1 -0
- package/apps/supervisor-web/dist/assets/gruvbox-light-medium-DRw_LuNl.js +1 -0
- package/apps/supervisor-web/dist/assets/gruvbox-light-soft-hJgmCMqR.js +1 -0
- package/apps/supervisor-web/dist/assets/hack-CaT9iCJl.js +1 -0
- package/apps/supervisor-web/dist/assets/haml-B8DHNrY2.js +1 -0
- package/apps/supervisor-web/dist/assets/handlebars-BL8al0AC.js +1 -0
- package/apps/supervisor-web/dist/assets/haskell-Df6bDoY_.js +1 -0
- package/apps/supervisor-web/dist/assets/haxe-CzTSHFRz.js +1 -0
- package/apps/supervisor-web/dist/assets/hcl-BWvSN4gD.js +1 -0
- package/apps/supervisor-web/dist/assets/highlighted-body-OFNGDK62-BRQR8o0F.js +1 -0
- package/apps/supervisor-web/dist/assets/hjson-D5-asLiD.js +1 -0
- package/apps/supervisor-web/dist/assets/hlsl-D3lLCCz7.js +1 -0
- package/apps/supervisor-web/dist/assets/horizon-BUw7H-hv.js +1 -0
- package/apps/supervisor-web/dist/assets/horizon-bright-Cn-bp-IR.js +1 -0
- package/apps/supervisor-web/dist/assets/houston-DnULxvSX.js +1 -0
- package/apps/supervisor-web/dist/assets/{html-pp8916En.js → html-GMplVEZG.js} +1 -1
- package/apps/supervisor-web/dist/assets/html-derivative-BFtXZ54Q.js +1 -0
- package/apps/supervisor-web/dist/assets/http-jrhK8wxY.js +1 -0
- package/apps/supervisor-web/dist/assets/hurl-irOxFIW8.js +1 -0
- package/apps/supervisor-web/dist/assets/hxml-Bvhsp5Yf.js +1 -0
- package/apps/supervisor-web/dist/assets/hy-DFXneXwc.js +1 -0
- package/apps/supervisor-web/dist/assets/imba-DGztddWO.js +1 -0
- package/apps/supervisor-web/dist/assets/index-APXuQABa.js +5 -0
- package/apps/supervisor-web/dist/assets/index-Dh2-KXLR.css +1 -0
- package/apps/supervisor-web/dist/assets/ini-BEwlwnbL.js +1 -0
- package/apps/supervisor-web/dist/assets/java-CylS5w8V.js +1 -0
- package/apps/supervisor-web/dist/assets/jinja-4LBKfQ-Z.js +1 -0
- package/apps/supervisor-web/dist/assets/jison-wvAkD_A8.js +1 -0
- package/apps/supervisor-web/dist/assets/json5-C9tS-k6U.js +1 -0
- package/apps/supervisor-web/dist/assets/jsonc-Des-eS-w.js +1 -0
- package/apps/supervisor-web/dist/assets/jsonl-DcaNXYhu.js +1 -0
- package/apps/supervisor-web/dist/assets/jsonnet-DFQXde-d.js +1 -0
- package/apps/supervisor-web/dist/assets/jssm-C2t-YnRu.js +1 -0
- package/apps/supervisor-web/dist/assets/julia-CxzCAyBv.js +1 -0
- package/apps/supervisor-web/dist/assets/just-Cw27pwNe.js +1 -0
- package/apps/supervisor-web/dist/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
- package/apps/supervisor-web/dist/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
- package/apps/supervisor-web/dist/assets/kanagawa-wave-DWedfzmr.js +1 -0
- package/apps/supervisor-web/dist/assets/kdl-DV7GczEv.js +1 -0
- package/apps/supervisor-web/dist/assets/kotlin-BdnUsdx6.js +1 -0
- package/apps/supervisor-web/dist/assets/kusto-DZf3V79B.js +1 -0
- package/apps/supervisor-web/dist/assets/laserwave-DUszq2jm.js +1 -0
- package/apps/supervisor-web/dist/assets/latex-CWtU0Tv5.js +1 -0
- package/apps/supervisor-web/dist/assets/lean-BZvkOJ9d.js +1 -0
- package/apps/supervisor-web/dist/assets/less-B1dDrJ26.js +1 -0
- package/apps/supervisor-web/dist/assets/light-plus-B7mTdjB0.js +1 -0
- package/apps/supervisor-web/dist/assets/liquid-DYVedYrR.js +1 -0
- package/apps/supervisor-web/dist/assets/llvm-DjAJT7YJ.js +1 -0
- package/apps/supervisor-web/dist/assets/log-2UxHyX5q.js +1 -0
- package/apps/supervisor-web/dist/assets/logo-BtOb2qkB.js +1 -0
- package/apps/supervisor-web/dist/assets/lua-BaeVxFsk.js +1 -0
- package/apps/supervisor-web/dist/assets/luau-C-HG3fhB.js +1 -0
- package/apps/supervisor-web/dist/assets/make-CHLpvVh8.js +1 -0
- package/apps/supervisor-web/dist/assets/markdown-vendor-C22AWDSP.js +29 -0
- package/apps/supervisor-web/dist/assets/marko-CnJfTvn9.js +1 -0
- package/apps/supervisor-web/dist/assets/material-theme-D5KoaKCx.js +1 -0
- package/apps/supervisor-web/dist/assets/material-theme-darker-BfHTSMKl.js +1 -0
- package/apps/supervisor-web/dist/assets/material-theme-lighter-B0m2ddpp.js +1 -0
- package/apps/supervisor-web/dist/assets/material-theme-ocean-CyktbL80.js +1 -0
- package/apps/supervisor-web/dist/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
- package/apps/supervisor-web/dist/assets/matlab-D7o27uSR.js +1 -0
- package/apps/supervisor-web/dist/assets/mdc-BMNejdWA.js +1 -0
- package/apps/supervisor-web/dist/assets/mdx-Cmh6b_Ma.js +1 -0
- package/apps/supervisor-web/dist/assets/mermaid-mWjccvbQ.js +1 -0
- package/apps/supervisor-web/dist/assets/min-dark-CafNBF8u.js +1 -0
- package/apps/supervisor-web/dist/assets/min-light-CTRr51gU.js +1 -0
- package/apps/supervisor-web/dist/assets/mipsasm-CKIfxQSi.js +1 -0
- package/apps/supervisor-web/dist/assets/mojo-rZm6bMo-.js +1 -0
- package/apps/supervisor-web/dist/assets/monokai-D4h5O-jR.js +1 -0
- package/apps/supervisor-web/dist/assets/moonbit-_H4v1dQx.js +1 -0
- package/apps/supervisor-web/dist/assets/move-IF9eRakj.js +1 -0
- package/apps/supervisor-web/dist/assets/narrat-DRg8JJMk.js +1 -0
- package/apps/supervisor-web/dist/assets/nextflow-Zz6hmt5N.js +1 -0
- package/apps/supervisor-web/dist/assets/nextflow-groovy-BeH2EWoN.js +1 -0
- package/apps/supervisor-web/dist/assets/nginx-BpAMiNFr.js +1 -0
- package/apps/supervisor-web/dist/assets/night-owl-C39BiMTA.js +1 -0
- package/apps/supervisor-web/dist/assets/night-owl-light-CMTm3GFP.js +1 -0
- package/apps/supervisor-web/dist/assets/nim-CVrawwO9.js +1 -0
- package/apps/supervisor-web/dist/assets/nix-CwoSXNpI.js +1 -0
- package/apps/supervisor-web/dist/assets/nord-Ddv68eIx.js +1 -0
- package/apps/supervisor-web/dist/assets/nushell-Cz2AlsmD.js +1 -0
- package/apps/supervisor-web/dist/assets/objective-c-DXmwc3jG.js +1 -0
- package/apps/supervisor-web/dist/assets/objective-cpp-CLxacb5B.js +1 -0
- package/apps/supervisor-web/dist/assets/ocaml-C0hk2d4L.js +1 -0
- package/apps/supervisor-web/dist/assets/odin-BBf5iR-q.js +1 -0
- package/apps/supervisor-web/dist/assets/one-dark-pro-DVMEJ2y_.js +1 -0
- package/apps/supervisor-web/dist/assets/one-light-C3Wv6jpd.js +1 -0
- package/apps/supervisor-web/dist/assets/openscad-C4EeE6gA.js +1 -0
- package/apps/supervisor-web/dist/assets/pascal-D93ZcfNL.js +1 -0
- package/apps/supervisor-web/dist/assets/perl-C0TMdlhV.js +1 -0
- package/apps/supervisor-web/dist/assets/php-Dhbhpdrm.js +1 -0
- package/apps/supervisor-web/dist/assets/pkl-u5AG7uiY.js +1 -0
- package/apps/supervisor-web/dist/assets/plastic-3e1v2bzS.js +1 -0
- package/apps/supervisor-web/dist/assets/plsql-ChMvpjG-.js +1 -0
- package/apps/supervisor-web/dist/assets/po-BTJTHyun.js +1 -0
- package/apps/supervisor-web/dist/assets/poimandres-CS3Unz2-.js +1 -0
- package/apps/supervisor-web/dist/assets/polar-C0HS_06l.js +1 -0
- package/apps/supervisor-web/dist/assets/postcss-CXtECtnM.js +1 -0
- package/apps/supervisor-web/dist/assets/powerquery-CEu0bR-o.js +1 -0
- package/apps/supervisor-web/dist/assets/powershell-Dpen1YoG.js +1 -0
- package/apps/supervisor-web/dist/assets/prisma-Dd19v3D-.js +1 -0
- package/apps/supervisor-web/dist/assets/prolog-CbFg5uaA.js +1 -0
- package/apps/supervisor-web/dist/assets/proto-C7zT0LnQ.js +1 -0
- package/apps/supervisor-web/dist/assets/pug-CGlum2m_.js +1 -0
- package/apps/supervisor-web/dist/assets/puppet-BMWR74SV.js +1 -0
- package/apps/supervisor-web/dist/assets/purescript-CklMAg4u.js +1 -0
- package/apps/supervisor-web/dist/assets/qml-3beO22l8.js +1 -0
- package/apps/supervisor-web/dist/assets/qmldir-C8lEn-DE.js +1 -0
- package/apps/supervisor-web/dist/assets/qss-IeuSbFQv.js +1 -0
- package/apps/supervisor-web/dist/assets/r-Dspwwk_N.js +1 -0
- package/apps/supervisor-web/dist/assets/racket-BqYA7rlc.js +1 -0
- package/apps/supervisor-web/dist/assets/raku-DXvB9xmW.js +1 -0
- package/apps/supervisor-web/dist/assets/razor-Uh8Bk_45.js +1 -0
- package/apps/supervisor-web/dist/assets/react-vendor-5VdTO_Bg.js +60 -0
- package/apps/supervisor-web/dist/assets/red-bN70gL4F.js +1 -0
- package/apps/supervisor-web/dist/assets/reg-C-SQnVFl.js +1 -0
- package/apps/supervisor-web/dist/assets/regexp-CDVJQ6XC.js +1 -0
- package/apps/supervisor-web/dist/assets/rel-C3B-1QV4.js +1 -0
- package/apps/supervisor-web/dist/assets/riscv-BM1_JUlF.js +1 -0
- package/apps/supervisor-web/dist/assets/ron-D8l8udqQ.js +1 -0
- package/apps/supervisor-web/dist/assets/rose-pine-dawn-DHQR4-dF.js +1 -0
- package/apps/supervisor-web/dist/assets/rose-pine-moon-D4_iv3hh.js +1 -0
- package/apps/supervisor-web/dist/assets/rose-pine-qdsjHGoJ.js +1 -0
- package/apps/supervisor-web/dist/assets/rosmsg-BJDFO7_C.js +1 -0
- package/apps/supervisor-web/dist/assets/rst-BrH8l1NY.js +1 -0
- package/apps/supervisor-web/dist/assets/ruby-Dw2BHqvy.js +1 -0
- package/apps/supervisor-web/dist/assets/rust-B1yitclQ.js +1 -0
- package/apps/supervisor-web/dist/assets/sas-cz2c8ADy.js +1 -0
- package/apps/supervisor-web/dist/assets/sass-Cj5Yp3dK.js +1 -0
- package/apps/supervisor-web/dist/assets/scala-C151Ov-r.js +1 -0
- package/apps/supervisor-web/dist/assets/scheme-C98Dy4si.js +1 -0
- package/apps/supervisor-web/dist/assets/scss-OYdSNvt2.js +1 -0
- package/apps/supervisor-web/dist/assets/sdbl-DVxCFoDh.js +1 -0
- package/apps/supervisor-web/dist/assets/shaderlab-Dg9Lc6iA.js +1 -0
- package/apps/supervisor-web/dist/assets/{shellscript-CEILq0vU.js → shellscript-Yzrsuije.js} +1 -1
- package/apps/supervisor-web/dist/assets/shellsession-BADoaaVG.js +1 -0
- package/apps/supervisor-web/dist/assets/slack-dark-BthQWCQV.js +1 -0
- package/apps/supervisor-web/dist/assets/slack-ochin-DqwNpetd.js +1 -0
- package/apps/supervisor-web/dist/assets/smalltalk-BERRCDM3.js +1 -0
- package/apps/supervisor-web/dist/assets/snazzy-light-Bw305WKR.js +1 -0
- package/apps/supervisor-web/dist/assets/solarized-dark-DXbdFlpD.js +1 -0
- package/apps/supervisor-web/dist/assets/solarized-light-L9t79GZl.js +1 -0
- package/apps/supervisor-web/dist/assets/solidity-rGO070M0.js +1 -0
- package/apps/supervisor-web/dist/assets/soy-Brmx7dQM.js +1 -0
- package/apps/supervisor-web/dist/assets/sparql-rVzFXLq3.js +1 -0
- package/apps/supervisor-web/dist/assets/splunk-BtCnVYZw.js +1 -0
- package/apps/supervisor-web/dist/assets/{sql-CRqJ_cUM.js → sql-BLtJtn59.js} +1 -1
- package/apps/supervisor-web/dist/assets/ssh-config-_ykCGR6B.js +1 -0
- package/apps/supervisor-web/dist/assets/stata-BH5u7GGu.js +1 -0
- package/apps/supervisor-web/dist/assets/stylus-BEDo0Tqx.js +1 -0
- package/apps/supervisor-web/dist/assets/surrealql-Bq5Q-fJD.js +1 -0
- package/apps/supervisor-web/dist/assets/svelte-C_ipcX3V.js +1 -0
- package/apps/supervisor-web/dist/assets/swift-D82vCrfD.js +1 -0
- package/apps/supervisor-web/dist/assets/synthwave-84-CbfX1IO0.js +1 -0
- package/apps/supervisor-web/dist/assets/system-verilog-CnnmHF94.js +1 -0
- package/apps/supervisor-web/dist/assets/systemd-4A_iFExJ.js +1 -0
- package/apps/supervisor-web/dist/assets/talonscript-CkByrt1z.js +1 -0
- package/apps/supervisor-web/dist/assets/tasl-QIJgUcNo.js +1 -0
- package/apps/supervisor-web/dist/assets/tcl-dwOrl1Do.js +1 -0
- package/apps/supervisor-web/dist/assets/templ-P3uqSqPl.js +1 -0
- package/apps/supervisor-web/dist/assets/{terminal-vendor-CLGgN91S.js → terminal-vendor-BHwWZ4Dd.js} +1 -1
- package/apps/supervisor-web/dist/assets/terraform-BETggiCN.js +1 -0
- package/apps/supervisor-web/dist/assets/tex-idrVyKtj.js +1 -0
- package/apps/supervisor-web/dist/assets/thread-ui-BEieA99i.css +1 -0
- package/apps/supervisor-web/dist/assets/thread-ui-LDojdlO_.js +1997 -0
- package/apps/supervisor-web/dist/assets/tokyo-night-hegEt444.js +1 -0
- package/apps/supervisor-web/dist/assets/ts-tags-zn1MmPIZ.js +1 -0
- package/apps/supervisor-web/dist/assets/tsv-B_m7g4N7.js +1 -0
- package/apps/supervisor-web/dist/assets/turtle-BsS91CYL.js +1 -0
- package/apps/supervisor-web/dist/assets/twig-DNn4PbVi.js +1 -0
- package/apps/supervisor-web/dist/assets/typespec-BGHnOYBU.js +1 -0
- package/apps/supervisor-web/dist/assets/typst-DHCkPAjA.js +1 -0
- package/apps/supervisor-web/dist/assets/ui-vendor-xVD8_rhm.js +6 -0
- package/apps/supervisor-web/dist/assets/v-BcVCzyr7.js +1 -0
- package/apps/supervisor-web/dist/assets/vala-CsfeWuGM.js +1 -0
- package/apps/supervisor-web/dist/assets/vb-D17OF-Vu.js +1 -0
- package/apps/supervisor-web/dist/assets/verilog-BQ8w6xss.js +1 -0
- package/apps/supervisor-web/dist/assets/vesper-DU1UobuO.js +1 -0
- package/apps/supervisor-web/dist/assets/vhdl-CeAyd5Ju.js +1 -0
- package/apps/supervisor-web/dist/assets/viml-CJc9bBzg.js +1 -0
- package/apps/supervisor-web/dist/assets/vitesse-black-Bkuqu6BP.js +1 -0
- package/apps/supervisor-web/dist/assets/vitesse-dark-D0r3Knsf.js +1 -0
- package/apps/supervisor-web/dist/assets/vitesse-light-CVO1_9PV.js +1 -0
- package/apps/supervisor-web/dist/assets/vue-DN_0RTcg.js +1 -0
- package/apps/supervisor-web/dist/assets/vue-html-AaS7Mt5G.js +1 -0
- package/apps/supervisor-web/dist/assets/vue-vine-CQOfvN7w.js +1 -0
- package/apps/supervisor-web/dist/assets/vyper-CDx5xZoG.js +1 -0
- package/apps/supervisor-web/dist/assets/wasm-CG6Dc4jp.js +1 -0
- package/apps/supervisor-web/dist/assets/wasm-MzD3tlZU.js +1 -0
- package/apps/supervisor-web/dist/assets/wenyan-BV7otONQ.js +1 -0
- package/apps/supervisor-web/dist/assets/wgsl-Dx-B1_4e.js +1 -0
- package/apps/supervisor-web/dist/assets/wikitext-BhOHFoWU.js +1 -0
- package/apps/supervisor-web/dist/assets/wit-5i3qLPDT.js +1 -0
- package/apps/supervisor-web/dist/assets/wolfram-lXgVvXCa.js +1 -0
- package/apps/supervisor-web/dist/assets/xml-sdJ4AIDG.js +1 -0
- package/apps/supervisor-web/dist/assets/xsl-CtQFsRM5.js +1 -0
- package/apps/supervisor-web/dist/assets/zenscript-DVFEvuxE.js +1 -0
- package/apps/supervisor-web/dist/assets/zig-VOosw3JB.js +1 -0
- package/apps/supervisor-web/dist/index.html +8 -9
- package/bin/remote-codex.mjs +255 -40
- package/package.json +1 -1
- package/packages/codex/src/local-session-store.ts +4 -1
- package/packages/shared/src/index.ts +1 -0
- package/apps/supervisor-web/dist/assets/core-DIQen2lE.js +0 -12
- package/apps/supervisor-web/dist/assets/engine-javascript-DBd1bXLz.js +0 -141
- package/apps/supervisor-web/dist/assets/graph-vendor-C5ap-Sga.css +0 -1
- package/apps/supervisor-web/dist/assets/graph-vendor-CGzY-MFv.js +0 -23
- package/apps/supervisor-web/dist/assets/index-CbdWtyx0.js +0 -5
- package/apps/supervisor-web/dist/assets/index-Di1JBevU.css +0 -1
- package/apps/supervisor-web/dist/assets/markdown-vendor-hBDTCSB-.js +0 -291
- package/apps/supervisor-web/dist/assets/react-vendor-o1Xrx7m4.js +0 -60
- package/apps/supervisor-web/dist/assets/thread-ui-ICfwCbte.js +0 -3604
- package/apps/supervisor-web/dist/assets/ui-vendor-D1uxdi-d.js +0 -430
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import e from"./java-CylS5w8V.js";const n=Object.freeze(JSON.parse(`{"displayName":"XML","name":"xml","patterns":[{"begin":"(<\\\\?)\\\\s*([-0-9A-Z_a-z]+)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.xml"}},"end":"(\\\\?>)","name":"meta.tag.preprocessor.xml","patterns":[{"match":" ([-A-Za-z]+)","name":"entity.other.attribute-name.xml"},{"include":"#doublequotedString"},{"include":"#singlequotedString"}]},{"begin":"(<!)(DOCTYPE)\\\\s+([:A-Z_a-z][-.0-:A-Z_a-z]*)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"keyword.other.doctype.xml"},"3":{"name":"variable.language.documentroot.xml"}},"end":"\\\\s*(>)","name":"meta.tag.sgml.doctype.xml","patterns":[{"include":"#internalSubset"}]},{"include":"#comments"},{"begin":"(<)((?:([-0-9A-Z_a-z]+)(:))?([-0-:A-Z_a-z]+))(?=(\\\\s[^>]*)?></\\\\2>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.xml"},"3":{"name":"entity.name.tag.namespace.xml"},"4":{"name":"punctuation.separator.namespace.xml"},"5":{"name":"entity.name.tag.localname.xml"}},"end":"(>)(</)((?:([-0-9A-Z_a-z]+)(:))?([-0-:A-Z_a-z]+))(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"punctuation.definition.tag.xml"},"3":{"name":"entity.name.tag.xml"},"4":{"name":"entity.name.tag.namespace.xml"},"5":{"name":"punctuation.separator.namespace.xml"},"6":{"name":"entity.name.tag.localname.xml"},"7":{"name":"punctuation.definition.tag.xml"}},"name":"meta.tag.no-content.xml","patterns":[{"include":"#tagStuff"}]},{"begin":"(</?)(?:([-.\\\\w]+)((:)))?([-.:\\\\w]+)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.namespace.xml"},"3":{"name":"entity.name.tag.xml"},"4":{"name":"punctuation.separator.namespace.xml"},"5":{"name":"entity.name.tag.localname.xml"}},"end":"(/?>)","name":"meta.tag.xml","patterns":[{"include":"#tagStuff"}]},{"include":"#entity"},{"include":"#bare-ampersand"},{"begin":"<%@","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.xml"}},"end":"%>","endCaptures":{"0":{"name":"punctuation.section.embedded.end.xml"}},"name":"source.java-props.embedded.xml","patterns":[{"match":"page|include|taglib","name":"keyword.other.page-props.xml"}]},{"begin":"<%[!=]?(?!--)","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.xml"}},"end":"(?!--)%>","endCaptures":{"0":{"name":"punctuation.section.embedded.end.xml"}},"name":"source.java.embedded.xml","patterns":[{"include":"source.java"}]},{"begin":"<!\\\\[CDATA\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"]]>","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.unquoted.cdata.xml"}],"repository":{"EntityDecl":{"begin":"(<!)(ENTITY)\\\\s+(%\\\\s+)?([:A-Z_a-z][-.0-:A-Z_a-z]*)(\\\\s+(?:SYSTEM|PUBLIC)\\\\s+)?","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"keyword.other.entity.xml"},"3":{"name":"punctuation.definition.entity.xml"},"4":{"name":"variable.language.entity.xml"},"5":{"name":"keyword.other.entitytype.xml"}},"end":"(>)","patterns":[{"include":"#doublequotedString"},{"include":"#singlequotedString"}]},"bare-ampersand":{"match":"&","name":"invalid.illegal.bad-ampersand.xml"},"comments":{"patterns":[{"begin":"<%--","captures":{"0":{"name":"punctuation.definition.comment.xml"},"end":"--%>","name":"comment.block.xml"}},{"begin":"<!--","captures":{"0":{"name":"punctuation.definition.comment.xml"}},"end":"-->","name":"comment.block.xml","patterns":[{"begin":"--(?!>)","captures":{"0":{"name":"invalid.illegal.bad-comments-or-CDATA.xml"}}}]}]},"doublequotedString":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.double.xml","patterns":[{"include":"#entity"},{"include":"#bare-ampersand"}]},"entity":{"captures":{"1":{"name":"punctuation.definition.constant.xml"},"3":{"name":"punctuation.definition.constant.xml"}},"match":"(&)([:A-Z_a-z][-.0-:A-Z_a-z]*|#[0-9]+|#x\\\\h+)(;)","name":"constant.character.entity.xml"},"internalSubset":{"begin":"(\\\\[)","captures":{"1":{"name":"punctuation.definition.constant.xml"}},"end":"(])","name":"meta.internalsubset.xml","patterns":[{"include":"#EntityDecl"},{"include":"#parameterEntity"},{"include":"#comments"}]},"parameterEntity":{"captures":{"1":{"name":"punctuation.definition.constant.xml"},"3":{"name":"punctuation.definition.constant.xml"}},"match":"(%)([:A-Z_a-z][-.0-:A-Z_a-z]*)(;)","name":"constant.character.parameter-entity.xml"},"singlequotedString":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.single.xml","patterns":[{"include":"#entity"},{"include":"#bare-ampersand"}]},"tagStuff":{"patterns":[{"captures":{"1":{"name":"entity.other.attribute-name.namespace.xml"},"2":{"name":"entity.other.attribute-name.xml"},"3":{"name":"punctuation.separator.namespace.xml"},"4":{"name":"entity.other.attribute-name.localname.xml"}},"match":"(?:^|\\\\s+)(?:([-.\\\\w]+)((:)))?([-.:\\\\w]+)\\\\s*="},{"include":"#doublequotedString"},{"include":"#singlequotedString"}]}},"scopeName":"text.xml","embeddedLangs":["java"]}`)),a=[...e,n];export{a as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import e from"./xml-sdJ4AIDG.js";import"./java-CylS5w8V.js";const n=Object.freeze(JSON.parse(`{"displayName":"XSL","name":"xsl","patterns":[{"begin":"(<)(xsl)((:))(template)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.namespace.xml"},"3":{"name":"entity.name.tag.xml"},"4":{"name":"punctuation.separator.namespace.xml"},"5":{"name":"entity.name.tag.localname.xml"}},"end":"(>)","name":"meta.tag.xml.template","patterns":[{"captures":{"1":{"name":"entity.other.attribute-name.namespace.xml"},"2":{"name":"entity.other.attribute-name.xml"},"3":{"name":"punctuation.separator.namespace.xml"},"4":{"name":"entity.other.attribute-name.localname.xml"}},"match":" (?:([-0-9A-Z_a-z]+)((:)))?([-A-Za-z]+)"},{"include":"#doublequotedString"},{"include":"#singlequotedString"}]},{"include":"text.xml"}],"repository":{"doublequotedString":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.double.xml"},"singlequotedString":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.single.xml"}},"scopeName":"text.xml.xsl","embeddedLangs":["xml"]}`)),m=[...e,n];export{m as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=Object.freeze(JSON.parse(`{"displayName":"ZenScript","fileTypes":["zs"],"name":"zenscript","patterns":[{"match":"\\\\b((0([Xx])\\\\h*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))(([Ee])([-+])?[0-9]+)?)([DFLUdflu]|UL|ul)?\\\\b","name":"constant.numeric.zenscript"},{"match":"\\\\b-?(0[BOXbox])(0|[1-9A-Fa-f][_\\\\h]*)[A-Z_a-z]*\\\\b","name":"constant.numeric.zenscript"},{"include":"#code"},{"match":"\\\\b((?:[a-z]\\\\w*\\\\.)*[A-Z]+\\\\w*)(?=\\\\[)","name":"storage.type.object.array.zenscript"}],"repository":{"brackets":{"patterns":[{"captures":{"1":{"name":"keyword.control.zenscript"},"2":{"name":"keyword.other.zenscript"},"3":{"name":"keyword.control.zenscript"},"4":{"name":"variable.other.zenscript"},"5":{"name":"keyword.control.zenscript"},"6":{"name":"constant.numeric.zenscript"},"7":{"name":"keyword.control.zenscript"}},"match":"(<)\\\\b(.*?)(:(.*?(:(\\\\*|\\\\d+)?)?)?)(>)","name":"keyword.other.zenscript"}]},"class":{"captures":{"1":{"name":"storage.type.zenscript"},"2":{"name":"entity.name.type.class.zenscript"}},"match":"(zenClass)\\\\s+(\\\\w+)","name":"meta.class.zenscript"},"code":{"patterns":[{"include":"#class"},{"include":"#functions"},{"include":"#dots"},{"include":"#quotes"},{"include":"#brackets"},{"include":"#comments"},{"include":"#var"},{"include":"#keywords"},{"include":"#constants"},{"include":"#operators"}]},"comments":{"patterns":[{"match":"//[^\\\\n]*","name":"comment.line.double=slash"},{"begin":"/\\\\*","beginCaptures":{"0":{"name":"comment.block"}},"end":"\\\\*/","endCaptures":{"0":{"name":"comment.block"}},"name":"comment.block"}]},"dots":{"captures":{"1":{"name":"storage.type.zenscript"},"2":{"name":"keyword.control.zenscript"},"5":{"name":"keyword.control.zenscript"}},"match":"\\\\b(\\\\w+)(\\\\.)(\\\\w+)((\\\\.)(\\\\w+))*","name":"plain.text.zenscript"},"functions":{"captures":{"0":{"name":"storage.type.function.zenscript"},"1":{"name":"entity.name.function.zenscript"}},"match":"function\\\\s+([$A-Z_a-z][$\\\\w]*)\\\\s*(?=\\\\()","name":"meta.function.zenscript"},"keywords":{"patterns":[{"match":"\\\\b(instanceof|get|implements|set|import|function|override|const|if|else|do|while|for|throw|panic|lock|try|catch|finally|return|break|continue|switch|case|default|in|is|as|match|throws|super|new)\\\\b","name":"keyword.control.zenscript"},{"match":"\\\\b(zenClass|zenConstructor|alias|class|interface|enum|struct|expand|variant|set|void|bool|byte|sbyte|short|ushort|int|uint|long|ulong|usize|float|double|char|string)\\\\b","name":"storage.type.zenscript"},{"match":"\\\\b(variant|abstract|final|private|public|export|internal|static|protected|implicit|virtual|extern|immutable)\\\\b","name":"storage.modifier.zenscript"},{"match":"\\\\b(Native|Precondition)\\\\b","name":"entity.other.attribute-name"},{"match":"\\\\b(null|true|false)\\\\b","name":"constant.language"}]},"operators":{"patterns":[{"match":"\\\\b(\\\\.\\\\.??|\\\\.\\\\.\\\\.|[+,]|\\\\+=|\\\\+\\\\+|-=??|--|~=??|\\\\*=??|/=??|%=??|\\\\|=??|\\\\|\\\\||&=??|&&|\\\\^=??|\\\\?\\\\.??|\\\\?\\\\?|<=??|<<=??|>=??|>>=??|>>>=??|=>?|===??|!=??|!==|[$\`])\\\\b","name":"keyword.control"},{"match":"\\\\b([:;])\\\\b","name":"keyword.control"}]},"quotes":{"patterns":[{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.zenscript"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.zenscript"}},"name":"string.quoted.double.zenscript","patterns":[{"match":"\\\\\\\\.","name":"constant.character.escape.zenscript"}]},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.zenscript"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.zenscript"}},"name":"string.quoted.single.zenscript","patterns":[{"match":"\\\\\\\\.","name":"constant.character.escape.zenscript"}]}]},"var":{"match":"\\\\b(va[lr])\\\\b","name":"storage.type"}},"scopeName":"source.zenscript"}`)),t=[e];export{t as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=Object.freeze(JSON.parse(`{"displayName":"Zig","fileTypes":["zig","zon"],"name":"zig","patterns":[{"include":"#comments"},{"include":"#strings"},{"include":"#keywords"},{"include":"#operators"},{"include":"#punctuation"},{"include":"#numbers"},{"include":"#support"},{"include":"#variables"}],"repository":{"commentContents":{"patterns":[{"match":"\\\\b(TODO|FIXME|XXX|NOTE)\\\\b:?","name":"keyword.todo.zig"}]},"comments":{"patterns":[{"begin":"//[!/](?=[^/])","end":"$","name":"comment.line.documentation.zig","patterns":[{"include":"#commentContents"}]},{"begin":"//","end":"$","name":"comment.line.double-slash.zig","patterns":[{"include":"#commentContents"}]}]},"keywords":{"patterns":[{"match":"\\\\binline\\\\b(?!\\\\s*\\\\bfn\\\\b)","name":"keyword.control.repeat.zig"},{"match":"\\\\b(while|for)\\\\b","name":"keyword.control.repeat.zig"},{"match":"\\\\b(extern|packed|export|pub|noalias|inline|comptime|volatile|align|linksection|threadlocal|allowzero|noinline|callconv)\\\\b","name":"keyword.storage.zig"},{"match":"\\\\b(struct|enum|union|opaque)\\\\b","name":"keyword.structure.zig"},{"match":"\\\\b(asm|unreachable)\\\\b","name":"keyword.statement.zig"},{"match":"\\\\b(break|return|continue|defer|errdefer)\\\\b","name":"keyword.control.flow.zig"},{"match":"\\\\b(resume|suspend|nosuspend)\\\\b","name":"keyword.control.async.zig"},{"match":"\\\\b(try|catch)\\\\b","name":"keyword.control.trycatch.zig"},{"match":"\\\\b(if|else|switch|orelse)\\\\b","name":"keyword.control.conditional.zig"},{"match":"\\\\b(null|undefined)\\\\b","name":"keyword.constant.default.zig"},{"match":"\\\\b(true|false)\\\\b","name":"keyword.constant.bool.zig"},{"match":"\\\\b(test|and|or)\\\\b","name":"keyword.default.zig"},{"match":"\\\\b(bool|void|noreturn|type|error|anyerror|anyframe|anytype|anyopaque)\\\\b","name":"keyword.type.zig"},{"match":"\\\\b(f16|f32|f64|f80|f128|u\\\\d+|i\\\\d+|isize|usize|comptime_int|comptime_float)\\\\b","name":"keyword.type.integer.zig"},{"match":"\\\\b(c_(?:char|short|ushort|int|uint|long|ulong|longlong|ulonglong|longdouble))\\\\b","name":"keyword.type.c.zig"}]},"numbers":{"patterns":[{"match":"\\\\b0x\\\\h[_\\\\h]*(\\\\.\\\\h[_\\\\h]*)?([Pp][-+]?[_\\\\h]+)?\\\\b","name":"constant.numeric.hexfloat.zig"},{"match":"\\\\b[0-9][0-9_]*(\\\\.[0-9][0-9_]*)?([Ee][-+]?[0-9_]+)?\\\\b","name":"constant.numeric.float.zig"},{"match":"\\\\b[0-9][0-9_]*\\\\b","name":"constant.numeric.decimal.zig"},{"match":"\\\\b0x[_\\\\h]+\\\\b","name":"constant.numeric.hexadecimal.zig"},{"match":"\\\\b0o[0-7_]+\\\\b","name":"constant.numeric.octal.zig"},{"match":"\\\\b0b[01_]+\\\\b","name":"constant.numeric.binary.zig"},{"match":"\\\\b[0-9](([EPep][-+])|[0-9A-Z_a-z])*(\\\\.(([EPep][-+])|[0-9A-Z_a-z])*)?([EPep][-+])?[0-9A-Z_a-z]*\\\\b","name":"constant.numeric.invalid.zig"}]},"operators":{"patterns":[{"match":"(?<=\\\\[)\\\\*c(?=])","name":"keyword.operator.c-pointer.zig"},{"match":"\\\\b((and|or))\\\\b|(==|!=|<=|>=|[<>])","name":"keyword.operator.comparison.zig"},{"match":"(-%?|\\\\+%?|\\\\*%?|[%/])=?","name":"keyword.operator.arithmetic.zig"},{"match":"(<<%?|>>|[!\\\\&^|~])=?","name":"keyword.operator.bitwise.zig"},{"match":"(==|\\\\+\\\\+|\\\\*\\\\*|->)","name":"keyword.operator.special.zig"},{"match":"=","name":"keyword.operator.assignment.zig"},{"match":"\\\\?","name":"keyword.operator.question.zig"}]},"punctuation":{"patterns":[{"match":"\\\\.","name":"punctuation.accessor.zig"},{"match":",","name":"punctuation.comma.zig"},{"match":":","name":"punctuation.separator.key-value.zig"},{"match":";","name":"punctuation.terminator.statement.zig"}]},"stringcontent":{"patterns":[{"match":"\\\\\\\\([\\"'\\\\\\\\nrt]|(x\\\\h{2})|(u\\\\{\\\\h+}))","name":"constant.character.escape.zig"},{"match":"\\\\\\\\.","name":"invalid.illegal.unrecognized-string-escape.zig"}]},"strings":{"patterns":[{"begin":"\\"","end":"\\"","name":"string.quoted.double.zig","patterns":[{"include":"#stringcontent"}]},{"begin":"\\\\\\\\\\\\\\\\","end":"$","name":"string.multiline.zig"},{"match":"'([^'\\\\\\\\]|\\\\\\\\(x\\\\h{2}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.))'","name":"string.quoted.single.zig"}]},"support":{"patterns":[{"match":"@[A-Z_a-z][0-9A-Z_a-z]*","name":"support.function.builtin.zig"}]},"variables":{"patterns":[{"name":"meta.function.declaration.zig","patterns":[{"captures":{"1":{"name":"storage.type.function.zig"},"2":{"name":"entity.name.type.zig"}},"match":"\\\\b(fn)\\\\s+([A-Z][0-9A-Za-z]*)\\\\b"},{"captures":{"1":{"name":"storage.type.function.zig"},"2":{"name":"entity.name.function.zig"}},"match":"\\\\b(fn)\\\\s+([A-Z_a-z][0-9A-Z_a-z]*)\\\\b"},{"begin":"\\\\b(fn)\\\\s+@\\"","beginCaptures":{"1":{"name":"storage.type.function.zig"}},"end":"\\"","name":"entity.name.function.string.zig","patterns":[{"include":"#stringcontent"}]},{"match":"\\\\b(const|var|fn)\\\\b","name":"keyword.default.zig"}]},{"name":"meta.function.call.zig","patterns":[{"match":"([A-Z][0-9A-Za-z]*)(?=\\\\s*\\\\()","name":"entity.name.type.zig"},{"match":"([A-Z_a-z][0-9A-Z_a-z]*)(?=\\\\s*\\\\()","name":"entity.name.function.zig"}]},{"name":"meta.variable.zig","patterns":[{"match":"\\\\b[A-Z_a-z][0-9A-Z_a-z]*\\\\b","name":"variable.zig"},{"begin":"@\\"","end":"\\"","name":"variable.string.zig","patterns":[{"include":"#stringcontent"}]}]}]}},"scopeName":"source.zig"}`)),n=[e];export{n as default};
|
|
@@ -4,16 +4,15 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>Remote Codex Supervisor</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
-
<link rel="modulepreload" crossorigin href="/assets/react-vendor-
|
|
9
|
-
<link rel="modulepreload" crossorigin href="/assets/ui-vendor-
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/terminal-vendor-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/thread-ui-ICfwCbte.js">
|
|
14
|
-
<link rel="stylesheet" crossorigin href="/assets/graph-vendor-C5ap-Sga.css">
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-APXuQABa.js"></script>
|
|
8
|
+
<link rel="modulepreload" crossorigin href="/assets/react-vendor-5VdTO_Bg.js">
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/ui-vendor-xVD8_rhm.js">
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/markdown-vendor-C22AWDSP.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/terminal-vendor-BHwWZ4Dd.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/thread-ui-LDojdlO_.js">
|
|
15
13
|
<link rel="stylesheet" crossorigin href="/assets/terminal-vendor-Beg8tuEN.css">
|
|
16
|
-
<link rel="stylesheet" crossorigin href="/assets/
|
|
14
|
+
<link rel="stylesheet" crossorigin href="/assets/thread-ui-BEieA99i.css">
|
|
15
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Dh2-KXLR.css">
|
|
17
16
|
</head>
|
|
18
17
|
<body class="bg-stone-950">
|
|
19
18
|
<div id="root"></div>
|
package/bin/remote-codex.mjs
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
import fs from 'node:fs';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
+
import os from 'node:os';
|
|
6
|
+
import crypto from 'node:crypto';
|
|
7
|
+
import readline from 'node:readline/promises';
|
|
5
8
|
import { spawn } from 'node:child_process';
|
|
6
9
|
import { fileURLToPath } from 'node:url';
|
|
7
10
|
|
|
@@ -13,6 +16,9 @@ const relayDistEntry = path.join(packageRoot, 'apps', 'relay-server', 'dist', 'i
|
|
|
13
16
|
const relaySourceEntry = path.join(packageRoot, 'apps', 'relay-server', 'src', 'index.ts');
|
|
14
17
|
const supervisorDistEntry = path.join(packageRoot, 'apps', 'supervisor-api', 'dist', 'index.js');
|
|
15
18
|
const supervisorSourceEntry = path.join(packageRoot, 'apps', 'supervisor-api', 'src', 'index.ts');
|
|
19
|
+
const relaySupervisorConfigPath = process.env.REMOTE_CODEX_RELAY_SUPERVISOR_CONFIG
|
|
20
|
+
? path.resolve(process.env.REMOTE_CODEX_RELAY_SUPERVISOR_CONFIG)
|
|
21
|
+
: path.join(os.homedir(), '.remote-codex', 'relay-supervisor.json');
|
|
16
22
|
const sourceCheckout =
|
|
17
23
|
fs.existsSync(path.join(packageRoot, 'pnpm-workspace.yaml')) &&
|
|
18
24
|
fs.existsSync(path.join(packageRoot, 'scripts', 'service-restart.mjs'));
|
|
@@ -50,7 +56,7 @@ if (command === 'version') {
|
|
|
50
56
|
if (command === 'relay') {
|
|
51
57
|
runRelayServer();
|
|
52
58
|
} else if (command === 'relay-supervisor') {
|
|
53
|
-
runRelaySupervisor();
|
|
59
|
+
await runRelaySupervisor();
|
|
54
60
|
} else if (!['start', 'stop', 'status'].includes(command)) {
|
|
55
61
|
printHelp();
|
|
56
62
|
process.exit(command ? 1 : 0);
|
|
@@ -88,8 +94,8 @@ function runRelayServer() {
|
|
|
88
94
|
['REMOTE_CODEX_RELAY_SESSION_SECRET', 'Relay session signing secret, at least 16 characters. Defaults to the admin password if omitted.'],
|
|
89
95
|
['REMOTE_CODEX_RELAY_DATA_DIR', 'Persistent relay user/device/share store. Defaults to .local/relay-server.'],
|
|
90
96
|
['REMOTE_CODEX_RELAY_REGISTRATION_ENABLED', 'true/false. Use false when only admins should create users.'],
|
|
91
|
-
['
|
|
92
|
-
['
|
|
97
|
+
['REMOTE_CODEX_RELAY_HOST', 'Relay listen host. Use 0.0.0.0 on a public server. Default 0.0.0.0. Falls back to HOST.'],
|
|
98
|
+
['REMOTE_CODEX_RELAY_PORT', 'Relay listen port. Default 8788. Falls back to PORT.'],
|
|
93
99
|
],
|
|
94
100
|
example: [
|
|
95
101
|
'REMOTE_CODEX_ADMIN_USERNAME=admin \\',
|
|
@@ -97,9 +103,15 @@ function runRelayServer() {
|
|
|
97
103
|
'REMOTE_CODEX_RELAY_SESSION_SECRET=at-least-16-characters \\',
|
|
98
104
|
'REMOTE_CODEX_RELAY_DATA_DIR=/var/lib/remote-codex-relay \\',
|
|
99
105
|
'REMOTE_CODEX_RELAY_REGISTRATION_ENABLED=false \\',
|
|
100
|
-
'
|
|
106
|
+
'REMOTE_CODEX_RELAY_HOST=0.0.0.0 REMOTE_CODEX_RELAY_PORT=8788 \\',
|
|
101
107
|
'remote-codex relay',
|
|
102
108
|
],
|
|
109
|
+
effective: () => [
|
|
110
|
+
[
|
|
111
|
+
'Relay listen address',
|
|
112
|
+
`${envValue(['REMOTE_CODEX_RELAY_HOST', 'HOST'], '0.0.0.0')}:${envValue(['REMOTE_CODEX_RELAY_PORT', 'PORT'], '8788')}`,
|
|
113
|
+
],
|
|
114
|
+
],
|
|
103
115
|
validate: () => {
|
|
104
116
|
const issues = [];
|
|
105
117
|
if (process.env.REMOTE_CODEX_ADMIN_PASSWORD && process.env.REMOTE_CODEX_ADMIN_PASSWORD.length < 8) {
|
|
@@ -150,7 +162,7 @@ function runRelayServer() {
|
|
|
150
162
|
}
|
|
151
163
|
|
|
152
164
|
if (code && code !== 0) {
|
|
153
|
-
console.error(`remote-codex relay exited with code ${code}. Check
|
|
165
|
+
console.error(`remote-codex relay exited with code ${code}. Check REMOTE_CODEX_RELAY_HOST/REMOTE_CODEX_RELAY_PORT and environment values above.`);
|
|
154
166
|
}
|
|
155
167
|
process.exit(code ?? 1);
|
|
156
168
|
});
|
|
@@ -161,32 +173,40 @@ function runRelayServer() {
|
|
|
161
173
|
});
|
|
162
174
|
}
|
|
163
175
|
|
|
164
|
-
function runRelaySupervisor() {
|
|
176
|
+
async function runRelaySupervisor() {
|
|
177
|
+
if (process.argv[3] === 'reset') {
|
|
178
|
+
resetRelaySupervisorConfig();
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
await ensureRelaySupervisorConfig();
|
|
165
182
|
const guidance = {
|
|
166
183
|
commandName: 'remote-codex relay-supervisor',
|
|
167
184
|
description: 'Run the private-machine supervisor backend that connects outward to a public relay.',
|
|
168
185
|
required: [
|
|
169
|
-
['REMOTE_CODEX_ADMIN_USERNAME', 'Private supervisor admin username.
|
|
170
|
-
['REMOTE_CODEX_ADMIN_PASSWORD', 'Private supervisor admin password.
|
|
171
|
-
['REMOTE_CODEX_SESSION_SECRET', 'Private supervisor session signing secret
|
|
186
|
+
['REMOTE_CODEX_ADMIN_USERNAME', 'Private supervisor admin username. Defaults to a saved local value.'],
|
|
187
|
+
['REMOTE_CODEX_ADMIN_PASSWORD', 'Private supervisor admin password. Defaults to a saved generated value.'],
|
|
188
|
+
['REMOTE_CODEX_SESSION_SECRET', 'Private supervisor session signing secret. Defaults to a saved generated value.'],
|
|
172
189
|
['REMOTE_CODEX_RELAY_SERVER_URL', 'Public relay websocket base URL, for example ws://host:8788 or wss://relay.example.com.'],
|
|
173
190
|
['REMOTE_CODEX_RELAY_AGENT_TOKEN', 'Device token created in the relay portal. This is not the relay admin password.'],
|
|
174
191
|
],
|
|
175
192
|
recommended: [
|
|
176
|
-
['
|
|
177
|
-
['
|
|
193
|
+
['REMOTE_CODEX_RELAY_SUPERVISOR_HOST', 'Private supervisor listen host. Default 127.0.0.1. Falls back to HOST.'],
|
|
194
|
+
['REMOTE_CODEX_RELAY_SUPERVISOR_PORT', 'Private supervisor listen port. Default 8787. Falls back to PORT.'],
|
|
178
195
|
['DATABASE_URL', 'SQLite database path. Set this when running a separate backend beside another Remote Codex.'],
|
|
179
196
|
['WORKSPACE_ROOT', 'Root directory that workspace paths must live under. Default is your home directory.'],
|
|
180
197
|
['CODEX_HOME', 'Codex config directory. Default ~/.codex.'],
|
|
181
198
|
],
|
|
182
199
|
example: [
|
|
183
|
-
'REMOTE_CODEX_ADMIN_USERNAME=admin \\',
|
|
184
|
-
'REMOTE_CODEX_ADMIN_PASSWORD=change-me-locally \\',
|
|
185
|
-
'REMOTE_CODEX_SESSION_SECRET=at-least-16-characters \\',
|
|
186
|
-
'REMOTE_CODEX_RELAY_SERVER_URL=wss://relay.example.com \\',
|
|
187
|
-
'REMOTE_CODEX_RELAY_AGENT_TOKEN=rcd_device_token_from_relay_portal \\',
|
|
188
|
-
'HOST=127.0.0.1 PORT=8787 \\',
|
|
189
200
|
'remote-codex relay-supervisor',
|
|
201
|
+
'# or reset saved interactive configuration:',
|
|
202
|
+
'remote-codex relay-supervisor reset',
|
|
203
|
+
],
|
|
204
|
+
effective: () => [
|
|
205
|
+
[
|
|
206
|
+
'Private supervisor listen address',
|
|
207
|
+
`${envValue(['REMOTE_CODEX_RELAY_SUPERVISOR_HOST', 'HOST'], '127.0.0.1')}:${envValue(['REMOTE_CODEX_RELAY_SUPERVISOR_PORT', 'PORT'], '8787')}`,
|
|
208
|
+
],
|
|
209
|
+
['Relay server URL', envValue(['REMOTE_CODEX_RELAY_SERVER_URL'], 'missing')],
|
|
190
210
|
],
|
|
191
211
|
validate: () => {
|
|
192
212
|
const issues = [];
|
|
@@ -247,7 +267,7 @@ function runRelaySupervisor() {
|
|
|
247
267
|
}
|
|
248
268
|
|
|
249
269
|
if (code && code !== 0) {
|
|
250
|
-
console.error(`remote-codex relay-supervisor exited with code ${code}. Check the relay server URL, device token, local
|
|
270
|
+
console.error(`remote-codex relay-supervisor exited with code ${code}. Check the relay server URL, device token, local REMOTE_CODEX_RELAY_SUPERVISOR_PORT, and environment values above.`);
|
|
251
271
|
}
|
|
252
272
|
process.exit(code ?? 1);
|
|
253
273
|
});
|
|
@@ -258,6 +278,114 @@ function runRelaySupervisor() {
|
|
|
258
278
|
});
|
|
259
279
|
}
|
|
260
280
|
|
|
281
|
+
async function ensureRelaySupervisorConfig() {
|
|
282
|
+
const existing = readRelaySupervisorConfig();
|
|
283
|
+
const generated = {
|
|
284
|
+
REMOTE_CODEX_ADMIN_USERNAME: 'admin',
|
|
285
|
+
REMOTE_CODEX_ADMIN_PASSWORD: randomSecret(24),
|
|
286
|
+
REMOTE_CODEX_SESSION_SECRET: randomSecret(32),
|
|
287
|
+
DATABASE_URL: path.join(os.homedir(), '.remote-codex', 'relay-supervisor.sqlite'),
|
|
288
|
+
};
|
|
289
|
+
const config = { ...generated, ...existing };
|
|
290
|
+
for (const [name, value] of Object.entries(config)) {
|
|
291
|
+
if (!nonEmptyEnv(name) && typeof value === 'string' && value.trim().length > 0) {
|
|
292
|
+
process.env[name] = value;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
const needsRelayUrl = !nonEmptyEnv('REMOTE_CODEX_RELAY_SERVER_URL');
|
|
297
|
+
const needsAgentToken = !nonEmptyEnv('REMOTE_CODEX_RELAY_AGENT_TOKEN');
|
|
298
|
+
if (!needsRelayUrl && !needsAgentToken) {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
if (!process.stdin.isTTY || !process.stderr.isTTY) {
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
console.error('remote-codex relay-supervisor needs relay connection details.');
|
|
306
|
+
console.error(`Answers will be saved to ${relaySupervisorConfigPath}.`);
|
|
307
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
|
|
308
|
+
try {
|
|
309
|
+
if (needsRelayUrl) {
|
|
310
|
+
process.env.REMOTE_CODEX_RELAY_SERVER_URL = await promptRelaySupervisorValue(
|
|
311
|
+
rl,
|
|
312
|
+
'Relay websocket URL (ws:// or wss://): ',
|
|
313
|
+
(value) => value.startsWith('ws://') || value.startsWith('wss://'),
|
|
314
|
+
'Relay websocket URL must start with ws:// or wss://.',
|
|
315
|
+
);
|
|
316
|
+
}
|
|
317
|
+
if (needsAgentToken) {
|
|
318
|
+
process.env.REMOTE_CODEX_RELAY_AGENT_TOKEN = await promptRelaySupervisorValue(
|
|
319
|
+
rl,
|
|
320
|
+
'Relay device token: ',
|
|
321
|
+
(value) => value.length > 0,
|
|
322
|
+
'Relay device token must not be empty.',
|
|
323
|
+
);
|
|
324
|
+
}
|
|
325
|
+
} finally {
|
|
326
|
+
rl.close();
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
writeRelaySupervisorConfig({
|
|
330
|
+
...config,
|
|
331
|
+
REMOTE_CODEX_RELAY_SERVER_URL: process.env.REMOTE_CODEX_RELAY_SERVER_URL,
|
|
332
|
+
REMOTE_CODEX_RELAY_AGENT_TOKEN: process.env.REMOTE_CODEX_RELAY_AGENT_TOKEN,
|
|
333
|
+
REMOTE_CODEX_ADMIN_USERNAME: process.env.REMOTE_CODEX_ADMIN_USERNAME,
|
|
334
|
+
REMOTE_CODEX_ADMIN_PASSWORD: process.env.REMOTE_CODEX_ADMIN_PASSWORD,
|
|
335
|
+
REMOTE_CODEX_SESSION_SECRET: process.env.REMOTE_CODEX_SESSION_SECRET,
|
|
336
|
+
DATABASE_URL: process.env.DATABASE_URL,
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
async function promptRelaySupervisorValue(rl, prompt, validate, invalidMessage) {
|
|
341
|
+
while (true) {
|
|
342
|
+
const value = (await rl.question(prompt)).trim();
|
|
343
|
+
if (validate(value)) {
|
|
344
|
+
return value;
|
|
345
|
+
}
|
|
346
|
+
console.error(invalidMessage);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
function readRelaySupervisorConfig() {
|
|
351
|
+
try {
|
|
352
|
+
return JSON.parse(fs.readFileSync(relaySupervisorConfigPath, 'utf8'));
|
|
353
|
+
} catch (error) {
|
|
354
|
+
if (error?.code !== 'ENOENT') {
|
|
355
|
+
console.error(`Ignoring invalid relay-supervisor config at ${relaySupervisorConfigPath}: ${error.message}`);
|
|
356
|
+
}
|
|
357
|
+
return {};
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
function writeRelaySupervisorConfig(config) {
|
|
362
|
+
fs.mkdirSync(path.dirname(relaySupervisorConfigPath), { recursive: true });
|
|
363
|
+
fs.writeFileSync(relaySupervisorConfigPath, `${JSON.stringify(config, null, 2)}\n`, { mode: 0o600 });
|
|
364
|
+
try {
|
|
365
|
+
fs.chmodSync(relaySupervisorConfigPath, 0o600);
|
|
366
|
+
} catch {
|
|
367
|
+
// Best-effort on filesystems that do not support chmod.
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
function resetRelaySupervisorConfig() {
|
|
372
|
+
try {
|
|
373
|
+
fs.unlinkSync(relaySupervisorConfigPath);
|
|
374
|
+
console.log(`Deleted relay-supervisor config: ${relaySupervisorConfigPath}`);
|
|
375
|
+
} catch (error) {
|
|
376
|
+
if (error?.code === 'ENOENT') {
|
|
377
|
+
console.log(`No relay-supervisor config found at ${relaySupervisorConfigPath}`);
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
console.error(`Failed to delete relay-supervisor config: ${error.message}`);
|
|
381
|
+
process.exit(1);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
function randomSecret(bytes) {
|
|
386
|
+
return crypto.randomBytes(bytes).toString('base64url');
|
|
387
|
+
}
|
|
388
|
+
|
|
261
389
|
function validateRequiredEnv(input) {
|
|
262
390
|
const missing = input.required
|
|
263
391
|
.map(([name]) => name)
|
|
@@ -306,31 +434,106 @@ function printEnvSummary(input) {
|
|
|
306
434
|
console.error(`${input.commandName} configuration:`);
|
|
307
435
|
console.error(input.description);
|
|
308
436
|
console.error('');
|
|
437
|
+
const effective = input.effective?.() ?? [];
|
|
438
|
+
if (effective.length > 0) {
|
|
439
|
+
console.error('Effective values:');
|
|
440
|
+
for (const [label, value] of effective) {
|
|
441
|
+
console.error(` ${label}: ${value}`);
|
|
442
|
+
}
|
|
443
|
+
console.error('');
|
|
444
|
+
}
|
|
309
445
|
console.error('Required:');
|
|
310
446
|
for (const [name, description] of input.required) {
|
|
311
|
-
console.error(` ${name}: ${
|
|
447
|
+
console.error(` ${name}: ${envStatusLabel(name, 'missing')}`);
|
|
312
448
|
console.error(` ${description}`);
|
|
313
449
|
}
|
|
314
450
|
if (input.recommended.length > 0) {
|
|
315
451
|
console.error('');
|
|
316
452
|
console.error('Recommended / optional:');
|
|
317
453
|
for (const [name, description] of input.recommended) {
|
|
318
|
-
console.error(` ${name}: ${
|
|
454
|
+
console.error(` ${name}: ${envStatusLabel(name, 'unset')}`);
|
|
319
455
|
console.error(` ${description}`);
|
|
320
456
|
}
|
|
321
457
|
}
|
|
322
458
|
console.error('');
|
|
323
459
|
}
|
|
324
460
|
|
|
461
|
+
function envStatusLabel(name, missingLabel) {
|
|
462
|
+
const directValue = cleanEnvValue(name);
|
|
463
|
+
if (directValue) {
|
|
464
|
+
return isSensitiveEnvName(name) ? 'set' : `set: ${directValue}`;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
const fallback = envFallbackFor(name);
|
|
468
|
+
if (fallback) {
|
|
469
|
+
for (const fallbackName of fallback.names) {
|
|
470
|
+
const fallbackValue = cleanEnvValue(fallbackName);
|
|
471
|
+
if (fallbackValue) {
|
|
472
|
+
return isSensitiveEnvName(name) ? `fallback from ${fallbackName}` : `fallback from ${fallbackName}: ${fallbackValue}`;
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
if (fallback.defaultValue) {
|
|
477
|
+
return `default: ${fallback.defaultValue}`;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
return missingLabel;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
function envFallbackFor(name) {
|
|
485
|
+
switch (name) {
|
|
486
|
+
case 'REMOTE_CODEX_RELAY_DATA_DIR':
|
|
487
|
+
return { names: [], defaultValue: '.local/relay-server' };
|
|
488
|
+
case 'REMOTE_CODEX_RELAY_HOST':
|
|
489
|
+
return { names: ['HOST'], defaultValue: '0.0.0.0' };
|
|
490
|
+
case 'REMOTE_CODEX_RELAY_PORT':
|
|
491
|
+
return { names: ['PORT'], defaultValue: '8788' };
|
|
492
|
+
case 'REMOTE_CODEX_RELAY_SUPERVISOR_HOST':
|
|
493
|
+
return { names: ['HOST'], defaultValue: '127.0.0.1' };
|
|
494
|
+
case 'REMOTE_CODEX_RELAY_SUPERVISOR_PORT':
|
|
495
|
+
return { names: ['PORT'], defaultValue: '8787' };
|
|
496
|
+
case 'DATABASE_URL':
|
|
497
|
+
return { names: [], defaultValue: `sqlite://${path.join('.local', 'remote-codex-relay-supervisor.sqlite')}` };
|
|
498
|
+
case 'WORKSPACE_ROOT':
|
|
499
|
+
return { names: [], defaultValue: os.homedir() };
|
|
500
|
+
case 'CODEX_HOME':
|
|
501
|
+
return { names: [], defaultValue: path.join(os.homedir(), '.codex') };
|
|
502
|
+
default:
|
|
503
|
+
return null;
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
function cleanEnvValue(name) {
|
|
508
|
+
const value = process.env[name];
|
|
509
|
+
return typeof value === 'string' && value.trim().length > 0 ? value.trim() : null;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
function isSensitiveEnvName(name) {
|
|
513
|
+
return /PASSWORD|SECRET|TOKEN/i.test(name);
|
|
514
|
+
}
|
|
515
|
+
|
|
325
516
|
function nonEmptyEnv(name) {
|
|
326
517
|
return typeof process.env[name] === 'string' && process.env[name].trim().length > 0;
|
|
327
518
|
}
|
|
328
519
|
|
|
520
|
+
function envValue(names, defaultValue) {
|
|
521
|
+
for (const name of names) {
|
|
522
|
+
const value = process.env[name];
|
|
523
|
+
if (typeof value === 'string' && value.trim().length > 0) {
|
|
524
|
+
return value.trim();
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
return defaultValue;
|
|
528
|
+
}
|
|
529
|
+
|
|
329
530
|
function relayServerEnv() {
|
|
330
531
|
const env = { ...process.env };
|
|
331
532
|
for (const name of [
|
|
332
533
|
'HOST',
|
|
333
534
|
'PORT',
|
|
535
|
+
'REMOTE_CODEX_RELAY_HOST',
|
|
536
|
+
'REMOTE_CODEX_RELAY_PORT',
|
|
334
537
|
'REMOTE_CODEX_RELAY_SUPERVISOR_TOKEN',
|
|
335
538
|
'REMOTE_CODEX_RELAY_CLIENT_TOKEN',
|
|
336
539
|
'REMOTE_CODEX_ADMIN_EMAIL',
|
|
@@ -555,10 +758,11 @@ Recommended environment:
|
|
|
555
758
|
Persistent user/device/share store. Default .local/relay-server.
|
|
556
759
|
REMOTE_CODEX_RELAY_REGISTRATION_ENABLED
|
|
557
760
|
true/false. Default true. Use false when only admins should create users.
|
|
558
|
-
|
|
761
|
+
REMOTE_CODEX_RELAY_HOST
|
|
559
762
|
Relay listen host. Default 0.0.0.0. Use 0.0.0.0 on a public server.
|
|
560
|
-
|
|
561
|
-
|
|
763
|
+
Falls back to HOST for legacy scripts.
|
|
764
|
+
REMOTE_CODEX_RELAY_PORT
|
|
765
|
+
Relay listen port. Default 8788. Falls back to PORT for legacy scripts.
|
|
562
766
|
REMOTE_CODEX_ADMIN_EMAIL
|
|
563
767
|
Optional seeded admin email. Defaults to <username>@relay.local.
|
|
564
768
|
REMOTE_CODEX_RELAY_WEB_DIST_DIR
|
|
@@ -574,7 +778,7 @@ Example:
|
|
|
574
778
|
REMOTE_CODEX_RELAY_SESSION_SECRET=at-least-16-characters \\
|
|
575
779
|
REMOTE_CODEX_RELAY_DATA_DIR=/var/lib/remote-codex-relay \\
|
|
576
780
|
REMOTE_CODEX_RELAY_REGISTRATION_ENABLED=false \\
|
|
577
|
-
|
|
781
|
+
REMOTE_CODEX_RELAY_HOST=0.0.0.0 REMOTE_CODEX_RELAY_PORT=8788 \\
|
|
578
782
|
remote-codex relay
|
|
579
783
|
|
|
580
784
|
After start:
|
|
@@ -602,28 +806,41 @@ public internet; it connects outward to a public relay server.
|
|
|
602
806
|
|
|
603
807
|
Usage:
|
|
604
808
|
remote-codex relay-supervisor
|
|
809
|
+
remote-codex relay-supervisor reset
|
|
605
810
|
|
|
606
811
|
This command automatically sets for the child supervisor:
|
|
607
812
|
REMOTE_CODEX_MODE=relay
|
|
608
813
|
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
814
|
+
Interactive setup:
|
|
815
|
+
When REMOTE_CODEX_RELAY_SERVER_URL or REMOTE_CODEX_RELAY_AGENT_TOKEN is
|
|
816
|
+
missing and stdin is interactive, the command asks for those values and saves
|
|
817
|
+
them to:
|
|
818
|
+
${relaySupervisorConfigPath}
|
|
819
|
+
|
|
820
|
+
The saved config also includes generated local supervisor auth/session values
|
|
821
|
+
so the normal first-run path only asks for relay URL and device token.
|
|
822
|
+
|
|
823
|
+
Use "remote-codex relay-supervisor reset" to delete the saved config.
|
|
824
|
+
|
|
825
|
+
Environment overrides:
|
|
616
826
|
REMOTE_CODEX_RELAY_SERVER_URL
|
|
617
827
|
Public relay websocket base URL. Use ws://host:port for plain relay ports or
|
|
618
828
|
wss://relay.example.com behind TLS.
|
|
619
829
|
REMOTE_CODEX_RELAY_AGENT_TOKEN
|
|
620
830
|
Device token created in the relay portal. This is not the relay admin password.
|
|
831
|
+
REMOTE_CODEX_ADMIN_USERNAME
|
|
832
|
+
Private supervisor admin username. Defaults to saved "admin".
|
|
833
|
+
REMOTE_CODEX_ADMIN_PASSWORD
|
|
834
|
+
Private supervisor admin password. Defaults to a saved generated value.
|
|
835
|
+
REMOTE_CODEX_SESSION_SECRET
|
|
836
|
+
Private supervisor session signing secret. Defaults to a saved generated value.
|
|
621
837
|
|
|
622
838
|
Recommended environment:
|
|
623
|
-
|
|
839
|
+
REMOTE_CODEX_RELAY_SUPERVISOR_HOST
|
|
624
840
|
Private supervisor listen host. Default 127.0.0.1.
|
|
625
|
-
|
|
626
|
-
|
|
841
|
+
Falls back to HOST for legacy scripts.
|
|
842
|
+
REMOTE_CODEX_RELAY_SUPERVISOR_PORT
|
|
843
|
+
Private supervisor listen port. Default 8787. Falls back to PORT for legacy scripts.
|
|
627
844
|
DATABASE_URL
|
|
628
845
|
SQLite database path. Set this when running beside another Remote Codex.
|
|
629
846
|
WORKSPACE_ROOT
|
|
@@ -636,18 +853,16 @@ Recommended environment:
|
|
|
636
853
|
Comma-separated provider ids, for example codex,claude.
|
|
637
854
|
|
|
638
855
|
Example:
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
856
|
+
remote-codex relay-supervisor
|
|
857
|
+
|
|
858
|
+
Non-interactive example:
|
|
642
859
|
REMOTE_CODEX_RELAY_SERVER_URL=wss://relay.example.com \\
|
|
643
860
|
REMOTE_CODEX_RELAY_AGENT_TOKEN=rcd_device_token_from_relay_portal \\
|
|
644
|
-
HOST=127.0.0.1 PORT=8787 \\
|
|
645
|
-
DATABASE_URL=$HOME/.remote-codex/relay-supervisor.sqlite \\
|
|
646
861
|
remote-codex relay-supervisor
|
|
647
862
|
|
|
648
863
|
When running a separate test backend beside an existing Remote Codex service,
|
|
649
864
|
set separate values for:
|
|
650
|
-
|
|
865
|
+
REMOTE_CODEX_RELAY_SUPERVISOR_PORT
|
|
651
866
|
DATABASE_URL
|
|
652
867
|
WORKSPACE_ROOT
|
|
653
868
|
|
package/package.json
CHANGED
|
@@ -252,8 +252,11 @@ export class LocalCodexSessionStore {
|
|
|
252
252
|
|
|
253
253
|
async findImportSession(
|
|
254
254
|
sessionId: string,
|
|
255
|
-
input: { fastMode: boolean },
|
|
255
|
+
input: { fastMode: boolean; provider?: string | null },
|
|
256
256
|
): Promise<LocalCodexImportSession | null> {
|
|
257
|
+
if (input.provider && input.provider !== 'codex') {
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
257
260
|
const localSession = await this.findSession(sessionId);
|
|
258
261
|
if (!localSession) {
|
|
259
262
|
return null;
|