@rynx-ai/server 0.1.11-beta.32 → 0.1.11-beta.34
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/dist/control-web/assets/abap-CLvhMVsD.js +1 -0
- package/dist/control-web/assets/abnfDiagram-VRR7QNED-CmU_MmlR.js +1 -0
- package/dist/control-web/assets/actionscript-3--17pq3dv.js +1 -0
- package/dist/control-web/assets/ada-C5qYipkI.js +1 -0
- package/dist/control-web/assets/andromeeda-vGVdxbeo.js +1 -0
- package/dist/control-web/assets/angular-html-DlZBZkSp.js +1 -0
- package/dist/control-web/assets/angular-ts-BVPGOT0K.js +1 -0
- package/dist/control-web/assets/apache-U0d_L8uA.js +1 -0
- package/dist/control-web/assets/apex-CGTLDQj6.js +1 -0
- package/dist/control-web/assets/apl-cDmXqmZ-.js +1 -0
- package/dist/control-web/assets/applescript-CCn79oCD.js +1 -0
- package/dist/control-web/assets/ara-4CJ0cIlV.js +1 -0
- package/dist/control-web/assets/arc-Pry-7G1_.js +1 -0
- package/dist/control-web/assets/architecture-TIHT7OUA-BA6n-Dzl.js +1 -0
- package/dist/control-web/assets/architectureDiagram-ZJ3FMSHR-OecV-i7M.js +36 -0
- package/dist/control-web/assets/array-BifhSqXX.js +1 -0
- package/dist/control-web/assets/asciidoc-DE70LPWp.js +1 -0
- package/dist/control-web/assets/asm-Cmm7eHzH.js +1 -0
- package/dist/control-web/assets/astro-B1Q6BwBx.js +1 -0
- package/dist/control-web/assets/aurora-x-CDeNXAV0.js +1 -0
- package/dist/control-web/assets/awk-BWXHIvNe.js +1 -0
- package/dist/control-web/assets/ayu-dark-DluEY0Gj.js +1 -0
- package/dist/control-web/assets/ayu-light-C3h-C4tm.js +1 -0
- package/dist/control-web/assets/ayu-mirage-Bqwy1Gya.js +1 -0
- package/dist/control-web/assets/ballerina-B7ZEbQpA.js +1 -0
- package/dist/control-web/assets/bat-Bo4NYOV-.js +1 -0
- package/dist/control-web/assets/beancount-D-usSTwE.js +1 -0
- package/dist/control-web/assets/berry-DKpUyyne.js +1 -0
- package/dist/control-web/assets/bibtex-Ci_nEsc7.js +1 -0
- package/dist/control-web/assets/bicep-CUHmPFLl.js +1 -0
- package/dist/control-web/assets/bird2-C2hNVINV.js +1 -0
- package/dist/control-web/assets/blade-Xpu-LGTm.js +1 -0
- package/dist/control-web/assets/blockDiagram-677ZJIJ3-DOxDUxjd.js +132 -0
- package/dist/control-web/assets/bsl-BkkzgIyY.js +1 -0
- package/dist/control-web/assets/c-iCihek07.js +1 -0
- package/dist/control-web/assets/c3-CnJL0r0V.js +1 -0
- package/dist/control-web/assets/c4Diagram-LMCZKHZV-D557d6cD.js +10 -0
- package/dist/control-web/assets/cadence-CQ2zXKGN.js +1 -0
- package/dist/control-web/assets/cairo-DLTphjLi.js +1 -0
- package/dist/control-web/assets/catppuccin-frappe-3VR1Za6u.js +1 -0
- package/dist/control-web/assets/catppuccin-latte-DwIHMF0Q.js +1 -0
- package/dist/control-web/assets/catppuccin-macchiato-DYnBP6_5.js +1 -0
- package/dist/control-web/assets/catppuccin-mocha-DYhrFGRu.js +1 -0
- package/dist/control-web/assets/channel-CvSP6WIQ.js +1 -0
- package/dist/control-web/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
- package/dist/control-web/assets/chunk-32BRIVSS-BfXRqSpF.js +1 -0
- package/dist/control-web/assets/chunk-52WLFC77-BeKggk68.js +10 -0
- package/dist/control-web/assets/{chunk-5VM5RSS4-CXKpL77L.js → chunk-5VM5RSS4-ZNzvKenW.js} +2 -2
- package/dist/control-web/assets/chunk-7BUUIJ7U-Bb538aSH.js +1 -0
- package/dist/control-web/assets/chunk-C7G6YPKG-D0W6xHti.js +1 -0
- package/dist/control-web/assets/chunk-EX3LRPZG-D-s3PHl_.js +231 -0
- package/dist/control-web/assets/chunk-HOUHSVGY-Cz-4R9wb.js +1 -0
- package/dist/control-web/assets/chunk-ICXQ74PX-Jh1cDG2d.js +2 -0
- package/dist/control-web/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
- package/dist/control-web/assets/chunk-KEIR6QF5-BICK3FdT.js +161 -0
- package/dist/control-web/assets/chunk-MOJQB5TN-Bne3Czi6.js +88 -0
- package/dist/control-web/assets/chunk-OGEWGWER-B3ysgOD5.js +1 -0
- package/dist/control-web/assets/chunk-PUDLZKDR-CcXYtnKN.js +156 -0
- package/dist/control-web/assets/chunk-Q4XR5HBZ-puXEgeqv.js +70 -0
- package/dist/control-web/assets/chunk-RYQCIY6F-BsoV8yK2.js +1 -0
- package/dist/control-web/assets/chunk-V7JOEXUC-C3tvTxnz.js +206 -0
- package/dist/control-web/assets/chunk-VR4S4FIN-DW_38atK.js +1 -0
- package/dist/control-web/assets/chunk-WYO6CB5R-Bbp0lWuA.js +128 -0
- package/dist/control-web/assets/chunk-XXDRQBXY-DqAYeljN.js +1 -0
- package/dist/control-web/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
- package/dist/control-web/assets/chunk-ZGVPDNZ5-EJHunJJc.js +62 -0
- package/dist/control-web/assets/clarity-SemFz856.js +1 -0
- package/dist/control-web/assets/classDiagram-OUVF2IWQ-CbpSOtxx.js +1 -0
- package/dist/control-web/assets/classDiagram-v2-EOCWNBFH-CbpSOtxx.js +1 -0
- package/dist/control-web/assets/clojure-DqKBuwfJ.js +1 -0
- package/dist/control-web/assets/cmake-Bj61d0ZC.js +1 -0
- package/dist/control-web/assets/cobol-BsV-839J.js +1 -0
- package/dist/control-web/assets/codeowners-C8r90Shi.js +1 -0
- package/dist/control-web/assets/codeql-oeQT6MSM.js +1 -0
- package/dist/control-web/assets/coffee-CiiSLhB6.js +1 -0
- package/dist/control-web/assets/common-lisp-Cv5bFMCO.js +1 -0
- package/dist/control-web/assets/coq-BrsZFFmf.js +1 -0
- package/dist/control-web/assets/cose-bilkent-JH36ORCC-lJEhNiw_.js +1 -0
- package/dist/control-web/assets/cpp-DjoE5qBx.js +1 -0
- package/dist/control-web/assets/crystal-DDxHDkHz.js +1 -0
- package/dist/control-web/assets/csharp-Ct8U2NOr.js +1 -0
- package/dist/control-web/assets/css-LjpOdHib.js +1 -0
- package/dist/control-web/assets/csv-Dx-8-gkx.js +1 -0
- package/dist/control-web/assets/cue-CE9AQfxI.js +1 -0
- package/dist/control-web/assets/cynefin-VYW2F7L2-BaT-TB_Y.js +1 -0
- package/dist/control-web/assets/cynefinDiagram-TSTJHNR4-sW0lbfzR.js +62 -0
- package/dist/control-web/assets/cypher-ClKdZ_lG.js +1 -0
- package/dist/control-web/assets/cytoscape.esm-B-NFISlW.js +321 -0
- package/dist/control-web/assets/d-qD-0Kul2.js +1 -0
- package/dist/control-web/assets/dagre-Buvkdvvj.js +1 -0
- package/dist/control-web/assets/dagre-VKFMJZFB-DszFEQ50.js +4 -0
- package/dist/control-web/assets/dark-plus-Cs2F2srj.js +1 -0
- package/dist/control-web/assets/dart-DkHntEIa.js +1 -0
- package/dist/control-web/assets/dax-BkyTk9wS.js +1 -0
- package/dist/control-web/assets/defaultLocale-BFoDCU3G.js +1 -0
- package/dist/control-web/assets/desktop-Dlh5hvp9.js +1 -0
- package/dist/control-web/assets/diagram-FQU43EPY-BPueVs2y.js +3 -0
- package/dist/control-web/assets/diagram-G47NLZAW-BSgnrddi.js +24 -0
- package/dist/control-web/assets/diagram-NH7WQ7WH-1WyXWZVF.js +24 -0
- package/dist/control-web/assets/diagram-OA4YK3LP--O72jADz.js +30 -0
- package/dist/control-web/assets/diagram-WEI45ONY-B2QpDXZ9.js +41 -0
- package/dist/control-web/assets/diff-woXpYk--.js +1 -0
- package/dist/control-web/assets/dist-Dv-qw3vC.js +153 -0
- package/dist/control-web/assets/dist-v5Q1xZ2K.js +1 -0
- package/dist/control-web/assets/docker-IyjqRm3v.js +1 -0
- package/dist/control-web/assets/dotenv-_5a1GRtc.js +1 -0
- package/dist/control-web/assets/dracula-BHWKrbxM.js +1 -0
- package/dist/control-web/assets/dracula-soft-5eyTD99u.js +1 -0
- package/dist/control-web/assets/dream-maker-DW3nJb8Q.js +1 -0
- package/dist/control-web/assets/ebnfDiagram-CCIWWBDH-DSs-ystO.js +1 -0
- package/dist/control-web/assets/edge-8z7Jp9dO.js +1 -0
- package/dist/control-web/assets/elixir-CUV54ev5.js +1 -0
- package/dist/control-web/assets/elm-o4NJxfws.js +1 -0
- package/dist/control-web/assets/emacs-lisp-C9PiwqqW.js +1 -0
- package/dist/control-web/assets/erDiagram-Q63AITRT-Dd6hMu35.js +85 -0
- package/dist/control-web/assets/erb-CIsHcwm1.js +1 -0
- package/dist/control-web/assets/erlang-Cphh6RMH.js +1 -0
- package/dist/control-web/assets/eventmodeling-45OFAUF4-B4JspsqG.js +1 -0
- package/dist/control-web/assets/everforest-dark-sB-x3p7T.js +1 -0
- package/dist/control-web/assets/everforest-light-Df2xbC6M.js +1 -0
- package/dist/control-web/assets/fennel-DQxkIbk2.js +1 -0
- package/dist/control-web/assets/fish-BJitypiv.js +1 -0
- package/dist/control-web/assets/flowDiagram-23GEKE2U-Ium-zrch.js +1 -0
- package/dist/control-web/assets/fluent-C03EYrpw.js +1 -0
- package/dist/control-web/assets/fortran-fixed-form-DEKoE2YW.js +1 -0
- package/dist/control-web/assets/fortran-free-form-CYNrtFtB.js +1 -0
- package/dist/control-web/assets/fsharp-D13ZGOAj.js +1 -0
- package/dist/control-web/assets/ganttDiagram-NO4QXBWP-COHCKhqO.js +292 -0
- package/dist/control-web/assets/gdresource-C0sCabJj.js +1 -0
- package/dist/control-web/assets/gdscript-Cp2uCuqX.js +1 -0
- package/dist/control-web/assets/gdshader-CBce3t8t.js +1 -0
- package/dist/control-web/assets/genie-CV2tkWYe.js +1 -0
- package/dist/control-web/assets/gherkin-DExj1W_8.js +1 -0
- package/dist/control-web/assets/git-commit-BSykSTBG.js +1 -0
- package/dist/control-web/assets/git-rebase-BDPpS8w6.js +1 -0
- package/dist/control-web/assets/gitGraph-TEB2WS4Q-CysYOV0u.js +1 -0
- package/dist/control-web/assets/gitGraphDiagram-IHSO6WYX-RDxV8G1J.js +106 -0
- package/dist/control-web/assets/github-dark-C-LZuMrd.js +1 -0
- package/dist/control-web/assets/github-dark-default-DXG-b-1a.js +1 -0
- package/dist/control-web/assets/github-dark-dimmed-Bx1FflLF.js +1 -0
- package/dist/control-web/assets/github-dark-high-contrast-B_tTalzw.js +1 -0
- package/dist/control-web/assets/github-light-EUqPIrTm.js +1 -0
- package/dist/control-web/assets/github-light-default-BXViO-2h.js +1 -0
- package/dist/control-web/assets/github-light-high-contrast-B68TUdTA.js +1 -0
- package/dist/control-web/assets/gleam-CSRkHgEL.js +1 -0
- package/dist/control-web/assets/glimmer-js-OEO36pDk.js +1 -0
- package/dist/control-web/assets/glimmer-ts-BnAPyISE.js +1 -0
- package/dist/control-web/assets/glsl-D5MA2a_X.js +1 -0
- package/dist/control-web/assets/gn-ilITqXS6.js +1 -0
- package/dist/control-web/assets/gnuplot-7GGW24-e.js +1 -0
- package/dist/control-web/assets/go-BJwz_mda.js +1 -0
- package/dist/control-web/assets/graphlib-DS17s2tU.js +1 -0
- package/dist/control-web/assets/graphql-Ctjuxyvl.js +1 -0
- package/dist/control-web/assets/groovy-CacY0gHj.js +1 -0
- package/dist/control-web/assets/gruvbox-dark-hard-C820rvS2.js +1 -0
- package/dist/control-web/assets/gruvbox-dark-medium-BPjhmG05.js +1 -0
- package/dist/control-web/assets/gruvbox-dark-soft-MrdJrrXF.js +1 -0
- package/dist/control-web/assets/gruvbox-light-hard-BC_s9l72.js +1 -0
- package/dist/control-web/assets/gruvbox-light-medium-BAWPOn9u.js +1 -0
- package/dist/control-web/assets/gruvbox-light-soft-BSMLrYjP.js +1 -0
- package/dist/control-web/assets/hack-D_mkkoLd.js +1 -0
- package/dist/control-web/assets/haml-mpgecWZ6.js +1 -0
- package/dist/control-web/assets/handlebars-CAx_777f.js +1 -0
- package/dist/control-web/assets/haskell-D8IpX4py.js +1 -0
- package/dist/control-web/assets/haxe-OTjmBuCE.js +1 -0
- package/dist/control-web/assets/hcl-Dh228itO.js +1 -0
- package/dist/control-web/assets/highlighted-body-OFNGDK62-D0q5eseS.js +1 -0
- package/dist/control-web/assets/hjson-CxZEssPk.js +1 -0
- package/dist/control-web/assets/hlsl-Cvrh5tZx.js +1 -0
- package/dist/control-web/assets/horizon-CE9ld1lL.js +1 -0
- package/dist/control-web/assets/horizon-bright-Br1oVSNq.js +1 -0
- package/dist/control-web/assets/houston-CsvMBhTu.js +1 -0
- package/dist/control-web/assets/html-B2lrdnWr.js +1 -0
- package/dist/control-web/assets/html-derivative-CDfZYcul.js +1 -0
- package/dist/control-web/assets/http-kmH8AyfE.js +1 -0
- package/dist/control-web/assets/hurl-DCZHXKU4.js +1 -0
- package/dist/control-web/assets/hxml-B0Qn7Nwc.js +1 -0
- package/dist/control-web/assets/hy-CZbG8q4J.js +1 -0
- package/dist/control-web/assets/imba-DsUTQ-LC.js +1 -0
- package/dist/control-web/assets/index-CfRLpoTC.js +140 -0
- package/dist/control-web/assets/index-uEpvRMX9.css +1 -0
- package/dist/control-web/assets/info-DKCQHKI2-C8E_rmu3.js +1 -0
- package/dist/control-web/assets/infoDiagram-FWYZ7A6U-BmH8cm18.js +2 -0
- package/dist/control-web/assets/ini-B5eOa1yu.js +1 -0
- package/dist/control-web/assets/init-C-OQMol4.js +1 -0
- package/dist/control-web/assets/ishikawaDiagram-FXEZZL3T-DR1Vhzx7.js +70 -0
- package/dist/control-web/assets/java-DdHNQ9hk.js +1 -0
- package/dist/control-web/assets/javascript-obGGvMPs.js +1 -0
- package/dist/control-web/assets/jinja-BMiPVedm.js +1 -0
- package/dist/control-web/assets/jison-CBjhYtSs.js +1 -0
- package/dist/control-web/assets/journeyDiagram-5HDEW3XC-C7gr8G1Z.js +139 -0
- package/dist/control-web/assets/json-DAgxKhMr.js +1 -0
- package/dist/control-web/assets/json5-BR5RXkoi.js +1 -0
- package/dist/control-web/assets/jsonc-CYpm1nAK.js +1 -0
- package/dist/control-web/assets/jsonl-CmCQp5Yx.js +1 -0
- package/dist/control-web/assets/jsonnet-CJTPZ8u_.js +1 -0
- package/dist/control-web/assets/jssm-DXw9l8Rf.js +1 -0
- package/dist/control-web/assets/jsx-gTgmArGx.js +1 -0
- package/dist/control-web/assets/julia-CjHxn3vf.js +1 -0
- package/dist/control-web/assets/just-DMArCiVH.js +1 -0
- package/dist/control-web/assets/kanagawa-dragon-CXtmUGW6.js +1 -0
- package/dist/control-web/assets/kanagawa-lotus-BN08jTvb.js +1 -0
- package/dist/control-web/assets/kanagawa-wave-CTweb8Dz.js +1 -0
- package/dist/control-web/assets/kanban-definition-HUTT4EX6-Cg_3ELUy.js +89 -0
- package/dist/control-web/assets/katex-BSYj5LXs.js +1 -0
- package/dist/control-web/assets/kdl-CsD5j6eV.js +1 -0
- package/dist/control-web/assets/kotlin-DhhofPvG.js +1 -0
- package/dist/control-web/assets/kusto-BUv0MjJC.js +1 -0
- package/dist/control-web/assets/laserwave-C_8bwKvT.js +1 -0
- package/dist/control-web/assets/latex-D9bvcAJr.js +1 -0
- package/dist/control-web/assets/lean-CewbzKMR.js +1 -0
- package/dist/control-web/assets/less-DVTAwKKz.js +1 -0
- package/dist/control-web/assets/lib-BZ_F5vVH.js +1 -0
- package/dist/control-web/assets/light-plus-DVQuIRkW.js +1 -0
- package/dist/control-web/assets/line-Dt86r9Z9.js +1 -0
- package/dist/control-web/assets/linear-DmucvK78.js +1 -0
- package/dist/control-web/assets/liquid-CCX5qouA.js +1 -0
- package/dist/control-web/assets/llvm-Cm23YOpf.js +1 -0
- package/dist/control-web/assets/log-BNLmms1o.js +1 -0
- package/dist/control-web/assets/logo-Cluzi2Zq.js +1 -0
- package/dist/control-web/assets/lua-FONpmTUP.js +1 -0
- package/dist/control-web/assets/luau-CNKltnaQ.js +1 -0
- package/dist/control-web/assets/make-Dixweg8N.js +1 -0
- package/dist/control-web/assets/map-BaFkSB1l.js +1 -0
- package/dist/control-web/assets/markdown-BYOwaDjH.js +1 -0
- package/dist/control-web/assets/markdown-streamdown-DEcVZfaU.css +1 -0
- package/dist/control-web/assets/markdown-streamdown-OYO-HVz6.js +433 -0
- package/dist/control-web/assets/marko-oPGh3KfH.js +1 -0
- package/dist/control-web/assets/material-theme-Bm3Qr25_.js +1 -0
- package/dist/control-web/assets/material-theme-darker-2IIEA8gg.js +1 -0
- package/dist/control-web/assets/material-theme-lighter-uhdI0v04.js +1 -0
- package/dist/control-web/assets/material-theme-ocean-CHQ94UKr.js +1 -0
- package/dist/control-web/assets/material-theme-palenight-B5W6OYN7.js +1 -0
- package/dist/control-web/assets/matlab-D7qyCx1q.js +1 -0
- package/dist/control-web/assets/mdc-B_uQHOlt.js +1 -0
- package/dist/control-web/assets/mdx-DQZ5AkYe.js +1 -0
- package/dist/control-web/assets/mermaid-Bk4SNUv9.js +1 -0
- package/dist/control-web/assets/mermaid-GHXKKRXX-BybKptJt.js +1 -0
- package/dist/control-web/assets/mermaid-parser.core-pxV_1Fef.js +7 -0
- package/dist/control-web/assets/min-dark-BSWPekZh.js +1 -0
- package/dist/control-web/assets/min-light-DDpmG2fV.js +1 -0
- package/dist/control-web/assets/mindmap-definition-LN4V7U3C-CBevDwDF.js +96 -0
- package/dist/control-web/assets/mipsasm-BMqwQI7S.js +1 -0
- package/dist/control-web/assets/mojo-BgCJLMeH.js +1 -0
- package/dist/control-web/assets/monokai-CdkpiU2Y.js +1 -0
- package/dist/control-web/assets/moonbit-CaWjb8XO.js +1 -0
- package/dist/control-web/assets/move-B1IS1UjX.js +1 -0
- package/dist/control-web/assets/narrat-_X_XdTYD.js +1 -0
- package/dist/control-web/assets/nextflow-Bbiyy34d.js +1 -0
- package/dist/control-web/assets/nextflow-groovy-Dc_ddanL.js +1 -0
- package/dist/control-web/assets/nginx-BTMw9COX.js +1 -0
- package/dist/control-web/assets/night-owl-DhmEMT88.js +1 -0
- package/dist/control-web/assets/night-owl-light-eJ-hLW7d.js +1 -0
- package/dist/control-web/assets/nim-8PQFL6ZB.js +1 -0
- package/dist/control-web/assets/nix-IvuFDN5E.js +1 -0
- package/dist/control-web/assets/nord-Cb4Vim4T.js +1 -0
- package/dist/control-web/assets/nushell-DcLAeLz5.js +1 -0
- package/dist/control-web/assets/objective-c-D1A_Heim.js +1 -0
- package/dist/control-web/assets/objective-cpp-BsSzOQcm.js +1 -0
- package/dist/control-web/assets/ocaml-O90oeIOV.js +1 -0
- package/dist/control-web/assets/odin-B1RWQWA5.js +1 -0
- package/dist/control-web/assets/one-dark-pro-CLwyXe_n.js +1 -0
- package/dist/control-web/assets/one-light-D7Lr4KcI.js +1 -0
- package/dist/control-web/assets/openscad-BUDT5pXO.js +1 -0
- package/dist/control-web/assets/ordinal-BDEzSJ7C.js +1 -0
- package/dist/control-web/assets/packet-7NZHBO7P-A9sKZzEL.js +1 -0
- package/dist/control-web/assets/pascal-4ZHwLPI5.js +1 -0
- package/dist/control-web/assets/path-fybaL0A-.js +1 -0
- package/dist/control-web/assets/pegDiagram-2B236MQR-BTIvrl_V.js +1 -0
- package/dist/control-web/assets/perl-Vf0i0hAx.js +1 -0
- package/dist/control-web/assets/php-am1OsKhm.js +1 -0
- package/dist/control-web/assets/pie-RZYD4A2V-DUzb4QBE.js +1 -0
- package/dist/control-web/assets/pieDiagram-ENE6RG2P-CzmJJofh.js +39 -0
- package/dist/control-web/assets/pkl-ot-7Btpt.js +1 -0
- package/dist/control-web/assets/plastic-DQwYfKfQ.js +1 -0
- package/dist/control-web/assets/plsql-DGHpHOYJ.js +1 -0
- package/dist/control-web/assets/po-BiJDBrnU.js +1 -0
- package/dist/control-web/assets/poimandres-DRFjx7u4.js +1 -0
- package/dist/control-web/assets/polar-C7UOKdEL.js +1 -0
- package/dist/control-web/assets/postcss-BXeXVLqQ.js +1 -0
- package/dist/control-web/assets/powerquery-DNMTfnFr.js +1 -0
- package/dist/control-web/assets/powershell-DshXNtvi.js +1 -0
- package/dist/control-web/assets/prisma-BsRQq5mF.js +1 -0
- package/dist/control-web/assets/prolog-iXnhIJG7.js +1 -0
- package/dist/control-web/assets/proto-DB4EqR-F.js +1 -0
- package/dist/control-web/assets/pug-DO6yvBr3.js +1 -0
- package/dist/control-web/assets/puppet-CDv2pdJW.js +1 -0
- package/dist/control-web/assets/purescript-9MfHhQsQ.js +1 -0
- package/dist/control-web/assets/python-gzcpVVnB.js +1 -0
- package/dist/control-web/assets/qml-_a-QhfPD.js +1 -0
- package/dist/control-web/assets/qmldir-DCQb3MpD.js +1 -0
- package/dist/control-web/assets/qss-Fe1Jh2GI.js +1 -0
- package/dist/control-web/assets/quadrantDiagram-ABIIQ3AL-D6bXvpAG.js +7 -0
- package/dist/control-web/assets/r-D6UWEOL2.js +1 -0
- package/dist/control-web/assets/racket-DcIDlBhZ.js +1 -0
- package/dist/control-web/assets/radar-I7S5WNFK-BV54nFux.js +1 -0
- package/dist/control-web/assets/railroad-3IZDKUUU-B2cY_UXv.js +1 -0
- package/dist/control-web/assets/railroad-abnf-AHOZXSZD-C6gyeMKO.js +1 -0
- package/dist/control-web/assets/railroad-ebnf-EBAXGLYW-CTnsShXg.js +1 -0
- package/dist/control-web/assets/railroad-peg-LSFZ7HO6-NgilCakK.js +1 -0
- package/dist/control-web/assets/railroadDiagram-RFXS5EU6-D_fo16vD.js +1 -0
- package/dist/control-web/assets/raku-B3gFvitq.js +1 -0
- package/dist/control-web/assets/razor-CMVBVp3T.js +1 -0
- package/dist/control-web/assets/red-CJ3rzSJv.js +1 -0
- package/dist/control-web/assets/reg-CRGYupPL.js +1 -0
- package/dist/control-web/assets/regexp-DR20uMnK.js +1 -0
- package/dist/control-web/assets/rel-BtDbiS_P.js +1 -0
- package/dist/control-web/assets/requirementDiagram-TGXJPOKE-D2yP7TUp.js +84 -0
- package/dist/control-web/assets/riscv-Ckw8ddFX.js +1 -0
- package/dist/control-web/assets/rolldown-runtime-hePW80VL.js +1 -0
- package/dist/control-web/assets/ron-VUp2lXgN.js +1 -0
- package/dist/control-web/assets/rose-pine-BthvhNj6.js +1 -0
- package/dist/control-web/assets/rose-pine-dawn-Dg85fqjY.js +1 -0
- package/dist/control-web/assets/rose-pine-moon-hon4tzzS.js +1 -0
- package/dist/control-web/assets/rosmsg-CAekHB0j.js +1 -0
- package/dist/control-web/assets/rough.esm-Dy-Kn_BL.js +1 -0
- package/dist/control-web/assets/rst-CgIrbW_q.js +1 -0
- package/dist/control-web/assets/ruby-Dp6Zud9H.js +1 -0
- package/dist/control-web/assets/rust-Cfkwpbl8.js +1 -0
- package/dist/control-web/assets/sankeyDiagram-HTMAVEWB-By_qJ9BM.js +40 -0
- package/dist/control-web/assets/sas-B6p8-ynO.js +1 -0
- package/dist/control-web/assets/sass-DXrisJhu.js +1 -0
- package/dist/control-web/assets/scala-DKOlJaKm.js +1 -0
- package/dist/control-web/assets/scheme-DQCgrYNe.js +1 -0
- package/dist/control-web/assets/scss-DcoSS-ti.js +1 -0
- package/dist/control-web/assets/sdbl-bTVj8UrX.js +1 -0
- package/dist/control-web/assets/sequenceDiagram-DBY2YBRQ-DgX1K1l4.js +162 -0
- package/dist/control-web/assets/shaderlab-TOUzSsQk.js +1 -0
- package/dist/control-web/assets/shellscript-Da78Ox-3.js +1 -0
- package/dist/control-web/assets/shellsession-CVsQGYfZ.js +1 -0
- package/dist/control-web/assets/sizeCapture-X5ZJPWSS-B0uUizjq.js +1 -0
- package/dist/control-web/assets/slack-dark-DnToyrRv.js +1 -0
- package/dist/control-web/assets/slack-ochin-B2OO5cIa.js +1 -0
- package/dist/control-web/assets/smalltalk-B16xEiuN.js +1 -0
- package/dist/control-web/assets/snazzy-light-4G7pJPwS.js +1 -0
- package/dist/control-web/assets/solarized-dark-DV17i1UV.js +1 -0
- package/dist/control-web/assets/solarized-light-DSh2HLQt.js +1 -0
- package/dist/control-web/assets/solidity-CKzVLygQ.js +1 -0
- package/dist/control-web/assets/soy-B5n_eHSp.js +1 -0
- package/dist/control-web/assets/sparql-D_iOobhT.js +1 -0
- package/dist/control-web/assets/splunk-BC2Px7Mm.js +1 -0
- package/dist/control-web/assets/sql-ClgswhA6.js +1 -0
- package/dist/control-web/assets/src-B6xuSHsQ.js +1 -0
- package/dist/control-web/assets/ssh-config-BgfXC-Er.js +1 -0
- package/dist/control-web/assets/stata-RoaAgbqU.js +1 -0
- package/dist/control-web/assets/stateDiagram-2N3HPSRC-CeUgjm3D.js +1 -0
- package/dist/control-web/assets/stateDiagram-v2-6OUMAXLB-CsJT1Rvc.js +1 -0
- package/dist/control-web/assets/stylus-B6D30XZt.js +1 -0
- package/dist/control-web/assets/surrealql-DIn4NJsS.js +1 -0
- package/dist/control-web/assets/svelte-CIt8Fl9I.js +1 -0
- package/dist/control-web/assets/swift-DonLKvLd.js +1 -0
- package/dist/control-web/assets/swimlanes-5IMT3BWC-CTlZZmMW.js +2 -0
- package/dist/control-web/assets/swimlanesDiagram-G3AALYLV-CzaTMmXS.js +8 -0
- package/dist/control-web/assets/synthwave-84-nFMaYfgc.js +1 -0
- package/dist/control-web/assets/system-verilog-DJ5XKQeo.js +1 -0
- package/dist/control-web/assets/systemd-BxMlprV5.js +1 -0
- package/dist/control-web/assets/talonscript-CohzipZa.js +1 -0
- package/dist/control-web/assets/tasl-DMoTqEGO.js +1 -0
- package/dist/control-web/assets/tcl-CZd0xW_V.js +1 -0
- package/dist/control-web/assets/templ-BREsJpNc.js +1 -0
- package/dist/control-web/assets/terraform-DswuEJGm.js +1 -0
- package/dist/control-web/assets/tex-0w6-Dtgt.js +1 -0
- package/dist/control-web/assets/timeline-definition-FHXFAJF6-Cq3seh59.js +120 -0
- package/dist/control-web/assets/tokyo-night-oM2G3aXe.js +1 -0
- package/dist/control-web/assets/toml-CcmNWLt0.js +1 -0
- package/dist/control-web/assets/treeView-QDETBFTQ-Cumz-G5q.js +1 -0
- package/dist/control-web/assets/treemap-6X3UGDF4-Bq5v5pf6.js +1 -0
- package/dist/control-web/assets/ts-tags-q3pptdMi.js +1 -0
- package/dist/control-web/assets/tsv-sltzmVWM.js +1 -0
- package/dist/control-web/assets/tsx-CUOciP0b.js +1 -0
- package/dist/control-web/assets/turtle-ByJddavk.js +1 -0
- package/dist/control-web/assets/twig-LIeLXgf5.js +1 -0
- package/dist/control-web/assets/typescript-BydbNFcO.js +1 -0
- package/dist/control-web/assets/typespec-B88KGewJ.js +1 -0
- package/dist/control-web/assets/typst-DI99ib-x.js +1 -0
- package/dist/control-web/assets/v-DETTlOr0.js +1 -0
- package/dist/control-web/assets/vala-zf12oZj6.js +1 -0
- package/dist/control-web/assets/vb-Djn5o6TS.js +1 -0
- package/dist/control-web/assets/vennDiagram-L72KCM5P-Bx9PN1Pw.js +34 -0
- package/dist/control-web/assets/verilog-CiiDBU1e.js +1 -0
- package/dist/control-web/assets/vesper-D5bVUKB1.js +1 -0
- package/dist/control-web/assets/vhdl-BroJfC0k.js +1 -0
- package/dist/control-web/assets/viml-DvXPmvsu.js +1 -0
- package/dist/control-web/assets/vitesse-black-fwtXNY1n.js +1 -0
- package/dist/control-web/assets/vitesse-dark-BZCL-v6S.js +1 -0
- package/dist/control-web/assets/vitesse-light-VbXTXTou.js +1 -0
- package/dist/control-web/assets/vue-DVSfBueU.js +1 -0
- package/dist/control-web/assets/vue-html-DkKkQnZL.js +1 -0
- package/dist/control-web/assets/vue-vine-pWqEcBkW.js +1 -0
- package/dist/control-web/assets/vyper-CgoNMtux.js +1 -0
- package/dist/control-web/assets/wardley-OPB4EBWU-DDRYn_rw.js +1 -0
- package/dist/control-web/assets/wardleyDiagram-EHGQE667-DOHp80dH.js +78 -0
- package/dist/control-web/assets/{wasm-CG6Dc4jp.js → wasm-BnjxR4X6.js} +1 -1
- package/dist/control-web/assets/wasm-ByWQv1Qj.js +1 -0
- package/dist/control-web/assets/wenyan-C8pVoKbM.js +1 -0
- package/dist/control-web/assets/wgsl-BsKzXJz4.js +1 -0
- package/dist/control-web/assets/wikitext-ClFFjSW2.js +1 -0
- package/dist/control-web/assets/wit-DdvCle-K.js +1 -0
- package/dist/control-web/assets/wolfram-DLL8P-h_.js +1 -0
- package/dist/control-web/assets/xml-BlnrEAEy.js +1 -0
- package/dist/control-web/assets/xsl-BOPS8gLt.js +1 -0
- package/dist/control-web/assets/xychartDiagram-FW5EYKEG-kaZ1Sn-e.js +7 -0
- package/dist/control-web/assets/yaml-Du_6cdrH.js +1 -0
- package/dist/control-web/assets/zenscript-BnlCZFoB.js +1 -0
- package/dist/control-web/assets/zig-CMLA9XwU.js +1 -0
- package/dist/control-web/index.html +3 -2
- package/dist/direct-runtime-server.js +187 -153
- package/dist/machine-session-service.d.ts +3 -1
- package/dist/machine-session-service.js +71 -14
- package/dist/session-portal.js +32 -18
- package/dist/session-terminal-host.d.ts +22 -2
- package/dist/session-terminal-host.js +66 -83
- package/dist/terminal-ws.d.ts +4 -1
- package/dist/terminal-ws.js +95 -31
- package/package.json +7 -7
- package/dist/control-web/assets/abap-BdImnpbu.js +0 -1
- package/dist/control-web/assets/abnfDiagram-VRR7QNED-8c99_3I5.js +0 -1
- package/dist/control-web/assets/actionscript-3-CoDkCxhg.js +0 -1
- package/dist/control-web/assets/ada-bCR0ucgS.js +0 -1
- package/dist/control-web/assets/andromeeda-C4gqWexZ.js +0 -1
- package/dist/control-web/assets/angular-html-CU67Zn6k.js +0 -1
- package/dist/control-web/assets/angular-ts-BwZT4LLn.js +0 -1
- package/dist/control-web/assets/apache-Pmp26Uib.js +0 -1
- package/dist/control-web/assets/apex-D8_7TLub.js +0 -1
- package/dist/control-web/assets/apl-dKokRX4l.js +0 -1
- package/dist/control-web/assets/applescript-Co6uUVPk.js +0 -1
- package/dist/control-web/assets/ara-BRHolxvo.js +0 -1
- package/dist/control-web/assets/arc-FWW96Tzo.js +0 -1
- package/dist/control-web/assets/architectureDiagram-ZJ3FMSHR-B5FrqoRB.js +0 -36
- package/dist/control-web/assets/asciidoc-Ve4PFQV2.js +0 -1
- package/dist/control-web/assets/asm-D_Q5rh1f.js +0 -1
- package/dist/control-web/assets/astro-CbQHKStN.js +0 -1
- package/dist/control-web/assets/aurora-x-D-2ljcwZ.js +0 -1
- package/dist/control-web/assets/awk-DMzUqQB5.js +0 -1
- package/dist/control-web/assets/ayu-dark-DYE7WIF3.js +0 -1
- package/dist/control-web/assets/ayu-light-BA47KaF1.js +0 -1
- package/dist/control-web/assets/ayu-mirage-32ctXXKs.js +0 -1
- package/dist/control-web/assets/ballerina-BFfxhgS-.js +0 -1
- package/dist/control-web/assets/bat-BkioyH1T.js +0 -1
- package/dist/control-web/assets/beancount-k_qm7-4y.js +0 -1
- package/dist/control-web/assets/berry-uYugtg8r.js +0 -1
- package/dist/control-web/assets/bibtex-CHM0blh-.js +0 -1
- package/dist/control-web/assets/bicep-Bmn6On1c.js +0 -1
- package/dist/control-web/assets/bird2-DPOp833l.js +0 -1
- package/dist/control-web/assets/blade-D4QpJJKB.js +0 -1
- package/dist/control-web/assets/blockDiagram-677ZJIJ3-DJRwOGMa.js +0 -132
- package/dist/control-web/assets/bsl-BO_Y6i37.js +0 -1
- package/dist/control-web/assets/c-BIGW1oBm.js +0 -1
- package/dist/control-web/assets/c3-eo99z4R2.js +0 -1
- package/dist/control-web/assets/c4Diagram-LMCZKHZV-B8FCUurl.js +0 -10
- package/dist/control-web/assets/cadence-Bv_4Rxtq.js +0 -1
- package/dist/control-web/assets/cairo-KRGpt6FW.js +0 -1
- package/dist/control-web/assets/catppuccin-frappe-DFWUc33u.js +0 -1
- package/dist/control-web/assets/catppuccin-latte-C9dUb6Cb.js +0 -1
- package/dist/control-web/assets/catppuccin-macchiato-DQyhUUbL.js +0 -1
- package/dist/control-web/assets/catppuccin-mocha-D87Tk5Gz.js +0 -1
- package/dist/control-web/assets/channel-Bnyhn1Qs.js +0 -1
- package/dist/control-web/assets/chunk-2Q5K7J3B-DC5xexY2.js +0 -1
- package/dist/control-web/assets/chunk-32BRIVSS-DAzT69zb.js +0 -1
- package/dist/control-web/assets/chunk-EX3LRPZG-DQKQvoPv.js +0 -231
- package/dist/control-web/assets/chunk-JWPE2WC7-CWMqpJoT.js +0 -1
- package/dist/control-web/assets/chunk-MOJQB5TN-Bd8jn7RZ.js +0 -88
- package/dist/control-web/assets/chunk-RYQCIY6F-DKXEMFO6.js +0 -1
- package/dist/control-web/assets/chunk-V7JOEXUC-BUDLq5nU.js +0 -206
- package/dist/control-web/assets/chunk-VR4S4FIN-C65l7VIz.js +0 -1
- package/dist/control-web/assets/chunk-XXDRQBXY-Y2498HkC.js +0 -1
- package/dist/control-web/assets/clarity-D53aC0YG.js +0 -1
- package/dist/control-web/assets/classDiagram-OUVF2IWQ-CBtXSdwW.js +0 -1
- package/dist/control-web/assets/classDiagram-v2-EOCWNBFH-CBtXSdwW.js +0 -1
- package/dist/control-web/assets/clojure-P80f7IUj.js +0 -1
- package/dist/control-web/assets/cmake-D1j8_8rp.js +0 -1
- package/dist/control-web/assets/cobol-nwyudZeR.js +0 -1
- package/dist/control-web/assets/codeowners-Bp6g37R7.js +0 -1
- package/dist/control-web/assets/codeql-DsOJ9woJ.js +0 -1
- package/dist/control-web/assets/coffee-Ch7k5sss.js +0 -1
- package/dist/control-web/assets/common-lisp-Cg-RD9OK.js +0 -1
- package/dist/control-web/assets/coq-DkFqJrB1.js +0 -1
- package/dist/control-web/assets/cose-bilkent-JH36ORCC-C9aVXb8E.js +0 -1
- package/dist/control-web/assets/cpp-CofmeUqb.js +0 -1
- package/dist/control-web/assets/crystal-tKQVLTB8.js +0 -1
- package/dist/control-web/assets/csharp-COcwbKMJ.js +0 -1
- package/dist/control-web/assets/css-DPfMkruS.js +0 -1
- package/dist/control-web/assets/csv-fuZLfV_i.js +0 -1
- package/dist/control-web/assets/cue-D82EKSYY.js +0 -1
- package/dist/control-web/assets/cynefin-VYW2F7L2-BsyMhvG0.js +0 -178
- package/dist/control-web/assets/cynefinDiagram-TSTJHNR4-DwY43f3-.js +0 -62
- package/dist/control-web/assets/cypher-COkxafJQ.js +0 -1
- package/dist/control-web/assets/cytoscape.esm-DTSO7Bv0.js +0 -331
- package/dist/control-web/assets/d-85-TOEBH.js +0 -1
- package/dist/control-web/assets/dagre-VKFMJZFB-CP1xk7Ox.js +0 -4
- package/dist/control-web/assets/dark-plus-C3mMm8J8.js +0 -1
- package/dist/control-web/assets/dart-CF10PKvl.js +0 -1
- package/dist/control-web/assets/dax-CEL-wOlO.js +0 -1
- package/dist/control-web/assets/defaultLocale-DX6XiGOO.js +0 -1
- package/dist/control-web/assets/desktop-BmXAJ9_W.js +0 -1
- package/dist/control-web/assets/diagram-FQU43EPY-D_yRnH1b.js +0 -3
- package/dist/control-web/assets/diagram-G47NLZAW-DpTmLmbm.js +0 -24
- package/dist/control-web/assets/diagram-NH7WQ7WH-Wh_P26Dr.js +0 -24
- package/dist/control-web/assets/diagram-OA4YK3LP-BMMaO78f.js +0 -30
- package/dist/control-web/assets/diagram-WEI45ONY-D8smty9F.js +0 -41
- package/dist/control-web/assets/diff-D97Zzqfu.js +0 -1
- package/dist/control-web/assets/docker-BcOcwvcX.js +0 -1
- package/dist/control-web/assets/dotenv-Da5cRb03.js +0 -1
- package/dist/control-web/assets/dracula-BzJJZx-M.js +0 -1
- package/dist/control-web/assets/dracula-soft-BXkSAIEj.js +0 -1
- package/dist/control-web/assets/dream-maker-BtqSS_iP.js +0 -1
- package/dist/control-web/assets/ebnfDiagram-CCIWWBDH-BqVsmEYh.js +0 -1
- package/dist/control-web/assets/edge-BkV0erSs.js +0 -1
- package/dist/control-web/assets/elixir-CDX3lj18.js +0 -1
- package/dist/control-web/assets/elm-DbKCFpqz.js +0 -1
- package/dist/control-web/assets/emacs-lisp-C9XAeP06.js +0 -1
- package/dist/control-web/assets/erDiagram-Q63AITRT-CxaumIzW.js +0 -85
- package/dist/control-web/assets/erb-B12qg9BL.js +0 -1
- package/dist/control-web/assets/erlang-DsQrWhSR.js +0 -1
- package/dist/control-web/assets/everforest-dark-BgDCqdQA.js +0 -1
- package/dist/control-web/assets/everforest-light-C8M2exoo.js +0 -1
- package/dist/control-web/assets/fennel-BYunw83y.js +0 -1
- package/dist/control-web/assets/fish-BvzEVeQv.js +0 -1
- package/dist/control-web/assets/flowDiagram-23GEKE2U-DZhUBne-.js +0 -156
- package/dist/control-web/assets/fluent-C4IJs8-o.js +0 -1
- package/dist/control-web/assets/fortran-fixed-form-CkoXwp7k.js +0 -1
- package/dist/control-web/assets/fortran-free-form-BxgE0vQu.js +0 -1
- package/dist/control-web/assets/fsharp-CXgrBDvD.js +0 -1
- package/dist/control-web/assets/ganttDiagram-NO4QXBWP-B20dY8SF.js +0 -292
- package/dist/control-web/assets/gdresource-BOOCDP_w.js +0 -1
- package/dist/control-web/assets/gdscript-C5YyOfLZ.js +0 -1
- package/dist/control-web/assets/gdshader-DkwncUOv.js +0 -1
- package/dist/control-web/assets/genie-D0YGMca9.js +0 -1
- package/dist/control-web/assets/gherkin-DyxjwDmM.js +0 -1
- package/dist/control-web/assets/git-commit-F4YmCXRG.js +0 -1
- package/dist/control-web/assets/git-rebase-r7XF79zn.js +0 -1
- package/dist/control-web/assets/gitGraphDiagram-IHSO6WYX-CAlnqFfW.js +0 -106
- package/dist/control-web/assets/github-dark-DHJKELXO.js +0 -1
- package/dist/control-web/assets/github-dark-default-Cuk6v7N8.js +0 -1
- package/dist/control-web/assets/github-dark-dimmed-DH5Ifo-i.js +0 -1
- package/dist/control-web/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -1
- package/dist/control-web/assets/github-light-DAi9KRSo.js +0 -1
- package/dist/control-web/assets/github-light-default-D7oLnXFd.js +0 -1
- package/dist/control-web/assets/github-light-high-contrast-BfjtVDDH.js +0 -1
- package/dist/control-web/assets/gleam-BspZqrRM.js +0 -1
- package/dist/control-web/assets/glimmer-js-Rg0-pVw9.js +0 -1
- package/dist/control-web/assets/glimmer-ts-U6CK756n.js +0 -1
- package/dist/control-web/assets/glsl-DplSGwfg.js +0 -1
- package/dist/control-web/assets/gn-n2N0HUVH.js +0 -1
- package/dist/control-web/assets/gnuplot-DdkO51Og.js +0 -1
- package/dist/control-web/assets/go-CxLEBnE3.js +0 -1
- package/dist/control-web/assets/graph-C9eacEi8.js +0 -1
- package/dist/control-web/assets/graphql-ChdNCCLP.js +0 -1
- package/dist/control-web/assets/groovy-gcz8RCvz.js +0 -1
- package/dist/control-web/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -1
- package/dist/control-web/assets/gruvbox-dark-medium-GsRaNv29.js +0 -1
- package/dist/control-web/assets/gruvbox-dark-soft-CVdnzihN.js +0 -1
- package/dist/control-web/assets/gruvbox-light-hard-CH1njM8p.js +0 -1
- package/dist/control-web/assets/gruvbox-light-medium-DRw_LuNl.js +0 -1
- package/dist/control-web/assets/gruvbox-light-soft-hJgmCMqR.js +0 -1
- package/dist/control-web/assets/hack-CaT9iCJl.js +0 -1
- package/dist/control-web/assets/haml-B8DHNrY2.js +0 -1
- package/dist/control-web/assets/handlebars-BL8al0AC.js +0 -1
- package/dist/control-web/assets/haskell-Df6bDoY_.js +0 -1
- package/dist/control-web/assets/haxe-CzTSHFRz.js +0 -1
- package/dist/control-web/assets/hcl-BWvSN4gD.js +0 -1
- package/dist/control-web/assets/highlighted-body-OFNGDK62-vBlGjC8F.js +0 -1
- package/dist/control-web/assets/hjson-D5-asLiD.js +0 -1
- package/dist/control-web/assets/hlsl-D3lLCCz7.js +0 -1
- package/dist/control-web/assets/horizon-BUw7H-hv.js +0 -1
- package/dist/control-web/assets/horizon-bright-Cn-bp-IR.js +0 -1
- package/dist/control-web/assets/houston-DnULxvSX.js +0 -1
- package/dist/control-web/assets/html-GMplVEZG.js +0 -1
- package/dist/control-web/assets/html-derivative-BFtXZ54Q.js +0 -1
- package/dist/control-web/assets/http-jrhK8wxY.js +0 -1
- package/dist/control-web/assets/hurl-irOxFIW8.js +0 -1
- package/dist/control-web/assets/hxml-Bvhsp5Yf.js +0 -1
- package/dist/control-web/assets/hy-DFXneXwc.js +0 -1
- package/dist/control-web/assets/imba-DGztddWO.js +0 -1
- package/dist/control-web/assets/index-B3g4Kfko.js +0 -153
- package/dist/control-web/assets/index-BKqZNg1a.js +0 -718
- package/dist/control-web/assets/index-CZrE_F_i.css +0 -32
- package/dist/control-web/assets/infoDiagram-FWYZ7A6U-PaEyeSke.js +0 -2
- package/dist/control-web/assets/ini-BEwlwnbL.js +0 -1
- package/dist/control-web/assets/init-Gi6I4Gst.js +0 -1
- package/dist/control-web/assets/ishikawaDiagram-FXEZZL3T-BwsgPXGC.js +0 -70
- package/dist/control-web/assets/java-CylS5w8V.js +0 -1
- package/dist/control-web/assets/javascript-wDzz0qaB.js +0 -1
- package/dist/control-web/assets/jinja-4LBKfQ-Z.js +0 -1
- package/dist/control-web/assets/jison-wvAkD_A8.js +0 -1
- package/dist/control-web/assets/journeyDiagram-5HDEW3XC-BUEf1NEq.js +0 -139
- package/dist/control-web/assets/json-Cp-IABpG.js +0 -1
- package/dist/control-web/assets/json5-C9tS-k6U.js +0 -1
- package/dist/control-web/assets/jsonc-Des-eS-w.js +0 -1
- package/dist/control-web/assets/jsonl-DcaNXYhu.js +0 -1
- package/dist/control-web/assets/jsonnet-DFQXde-d.js +0 -1
- package/dist/control-web/assets/jssm-C2t-YnRu.js +0 -1
- package/dist/control-web/assets/jsx-g9-lgVsj.js +0 -1
- package/dist/control-web/assets/julia-CxzCAyBv.js +0 -1
- package/dist/control-web/assets/just-Cw27pwNe.js +0 -1
- package/dist/control-web/assets/kanagawa-dragon-CkXjmgJE.js +0 -1
- package/dist/control-web/assets/kanagawa-lotus-CfQXZHmo.js +0 -1
- package/dist/control-web/assets/kanagawa-wave-DWedfzmr.js +0 -1
- package/dist/control-web/assets/kanban-definition-HUTT4EX6-CiTCwnJ7.js +0 -89
- package/dist/control-web/assets/kdl-DV7GczEv.js +0 -1
- package/dist/control-web/assets/kotlin-BdnUsdx6.js +0 -1
- package/dist/control-web/assets/kusto-DZf3V79B.js +0 -1
- package/dist/control-web/assets/laserwave-DUszq2jm.js +0 -1
- package/dist/control-web/assets/latex-CWtU0Tv5.js +0 -1
- package/dist/control-web/assets/layout-DEXfKzaS.js +0 -1
- package/dist/control-web/assets/lean-BZvkOJ9d.js +0 -1
- package/dist/control-web/assets/less-B1dDrJ26.js +0 -1
- package/dist/control-web/assets/light-plus-B7mTdjB0.js +0 -1
- package/dist/control-web/assets/linear-Cs4GSPvX.js +0 -1
- package/dist/control-web/assets/liquid-DYVedYrR.js +0 -1
- package/dist/control-web/assets/llvm-DjAJT7YJ.js +0 -1
- package/dist/control-web/assets/log-2UxHyX5q.js +0 -1
- package/dist/control-web/assets/logo-BtOb2qkB.js +0 -1
- package/dist/control-web/assets/lua-BaeVxFsk.js +0 -1
- package/dist/control-web/assets/luau-C-HG3fhB.js +0 -1
- package/dist/control-web/assets/make-CHLpvVh8.js +0 -1
- package/dist/control-web/assets/map-Czzmt4hB.js +0 -1
- package/dist/control-web/assets/markdown-Cvjx9yec.js +0 -1
- package/dist/control-web/assets/marko-CnJfTvn9.js +0 -1
- package/dist/control-web/assets/material-theme-D5KoaKCx.js +0 -1
- package/dist/control-web/assets/material-theme-darker-BfHTSMKl.js +0 -1
- package/dist/control-web/assets/material-theme-lighter-B0m2ddpp.js +0 -1
- package/dist/control-web/assets/material-theme-ocean-CyktbL80.js +0 -1
- package/dist/control-web/assets/material-theme-palenight-Csfq5Kiy.js +0 -1
- package/dist/control-web/assets/matlab-D7o27uSR.js +0 -1
- package/dist/control-web/assets/mdc-BMNejdWA.js +0 -1
- package/dist/control-web/assets/mdx-Cmh6b_Ma.js +0 -1
- package/dist/control-web/assets/mermaid-GHXKKRXX-BYZTj3zW.css +0 -1
- package/dist/control-web/assets/mermaid-GHXKKRXX-C_lUqoOB.js +0 -710
- package/dist/control-web/assets/mermaid-mWjccvbQ.js +0 -1
- package/dist/control-web/assets/min-dark-CafNBF8u.js +0 -1
- package/dist/control-web/assets/min-light-CTRr51gU.js +0 -1
- package/dist/control-web/assets/mindmap-definition-LN4V7U3C-B8TkylOR.js +0 -96
- package/dist/control-web/assets/mipsasm-CKIfxQSi.js +0 -1
- package/dist/control-web/assets/mojo-rZm6bMo-.js +0 -1
- package/dist/control-web/assets/monokai-D4h5O-jR.js +0 -1
- package/dist/control-web/assets/moonbit-_H4v1dQx.js +0 -1
- package/dist/control-web/assets/move-IF9eRakj.js +0 -1
- package/dist/control-web/assets/narrat-DRg8JJMk.js +0 -1
- package/dist/control-web/assets/nextflow-Zz6hmt5N.js +0 -1
- package/dist/control-web/assets/nextflow-groovy-BeH2EWoN.js +0 -1
- package/dist/control-web/assets/nginx-BpAMiNFr.js +0 -1
- package/dist/control-web/assets/night-owl-C39BiMTA.js +0 -1
- package/dist/control-web/assets/night-owl-light-CMTm3GFP.js +0 -1
- package/dist/control-web/assets/nim-CVrawwO9.js +0 -1
- package/dist/control-web/assets/nix-CwoSXNpI.js +0 -1
- package/dist/control-web/assets/nord-Ddv68eIx.js +0 -1
- package/dist/control-web/assets/nushell-Cz2AlsmD.js +0 -1
- package/dist/control-web/assets/objective-c-DXmwc3jG.js +0 -1
- package/dist/control-web/assets/objective-cpp-CLxacb5B.js +0 -1
- package/dist/control-web/assets/ocaml-C0hk2d4L.js +0 -1
- package/dist/control-web/assets/odin-BBf5iR-q.js +0 -1
- package/dist/control-web/assets/one-dark-pro-DVMEJ2y_.js +0 -1
- package/dist/control-web/assets/one-light-C3Wv6jpd.js +0 -1
- package/dist/control-web/assets/openscad-C4EeE6gA.js +0 -1
- package/dist/control-web/assets/ordinal-Cboi1Yqb.js +0 -1
- package/dist/control-web/assets/pascal-D93ZcfNL.js +0 -1
- package/dist/control-web/assets/pegDiagram-2B236MQR-Bnge_jzz.js +0 -1
- package/dist/control-web/assets/perl-C0TMdlhV.js +0 -1
- package/dist/control-web/assets/php-Dhbhpdrm.js +0 -1
- package/dist/control-web/assets/pieDiagram-ENE6RG2P-DOP7FAKG.js +0 -39
- package/dist/control-web/assets/pkl-u5AG7uiY.js +0 -1
- package/dist/control-web/assets/plastic-3e1v2bzS.js +0 -1
- package/dist/control-web/assets/plsql-ChMvpjG-.js +0 -1
- package/dist/control-web/assets/po-BTJTHyun.js +0 -1
- package/dist/control-web/assets/poimandres-CS3Unz2-.js +0 -1
- package/dist/control-web/assets/polar-C0HS_06l.js +0 -1
- package/dist/control-web/assets/postcss-CXtECtnM.js +0 -1
- package/dist/control-web/assets/powerquery-CEu0bR-o.js +0 -1
- package/dist/control-web/assets/powershell-Dpen1YoG.js +0 -1
- package/dist/control-web/assets/prisma-Dd19v3D-.js +0 -1
- package/dist/control-web/assets/prolog-CbFg5uaA.js +0 -1
- package/dist/control-web/assets/proto-C7zT0LnQ.js +0 -1
- package/dist/control-web/assets/pug-CGlum2m_.js +0 -1
- package/dist/control-web/assets/puppet-BMWR74SV.js +0 -1
- package/dist/control-web/assets/purescript-CklMAg4u.js +0 -1
- package/dist/control-web/assets/python-B6aJPvgy.js +0 -1
- package/dist/control-web/assets/qml-3beO22l8.js +0 -1
- package/dist/control-web/assets/qmldir-C8lEn-DE.js +0 -1
- package/dist/control-web/assets/qss-IeuSbFQv.js +0 -1
- package/dist/control-web/assets/quadrantDiagram-ABIIQ3AL-Cqqu5uu-.js +0 -7
- package/dist/control-web/assets/r-Dspwwk_N.js +0 -1
- package/dist/control-web/assets/racket-BqYA7rlc.js +0 -1
- package/dist/control-web/assets/railroadDiagram-RFXS5EU6-1bk56BMW.js +0 -1
- package/dist/control-web/assets/raku-DXvB9xmW.js +0 -1
- package/dist/control-web/assets/razor-Uh8Bk_45.js +0 -1
- package/dist/control-web/assets/red-bN70gL4F.js +0 -1
- package/dist/control-web/assets/reg-C-SQnVFl.js +0 -1
- package/dist/control-web/assets/regexp-CDVJQ6XC.js +0 -1
- package/dist/control-web/assets/rel-C3B-1QV4.js +0 -1
- package/dist/control-web/assets/requirementDiagram-TGXJPOKE-BHVwG79A.js +0 -84
- package/dist/control-web/assets/riscv-BM1_JUlF.js +0 -1
- package/dist/control-web/assets/ron-D8l8udqQ.js +0 -1
- package/dist/control-web/assets/rose-pine-dawn-DHQR4-dF.js +0 -1
- package/dist/control-web/assets/rose-pine-moon-D4_iv3hh.js +0 -1
- package/dist/control-web/assets/rose-pine-qdsjHGoJ.js +0 -1
- package/dist/control-web/assets/rosmsg-BJDFO7_C.js +0 -1
- package/dist/control-web/assets/rst-BrH8l1NY.js +0 -1
- package/dist/control-web/assets/ruby-Dw2BHqvy.js +0 -1
- package/dist/control-web/assets/rust-B1yitclQ.js +0 -1
- package/dist/control-web/assets/sankeyDiagram-HTMAVEWB-ghjBFqfs.js +0 -40
- package/dist/control-web/assets/sas-cz2c8ADy.js +0 -1
- package/dist/control-web/assets/sass-Cj5Yp3dK.js +0 -1
- package/dist/control-web/assets/scala-C151Ov-r.js +0 -1
- package/dist/control-web/assets/scheme-C98Dy4si.js +0 -1
- package/dist/control-web/assets/scss-OYdSNvt2.js +0 -1
- package/dist/control-web/assets/sdbl-DVxCFoDh.js +0 -1
- package/dist/control-web/assets/sequenceDiagram-DBY2YBRQ-DChtyqq5.js +0 -162
- package/dist/control-web/assets/shaderlab-Dg9Lc6iA.js +0 -1
- package/dist/control-web/assets/shellscript-Yzrsuije.js +0 -1
- package/dist/control-web/assets/shellsession-BADoaaVG.js +0 -1
- package/dist/control-web/assets/sizeCapture-X5ZJPWSS-BNp94nCS.js +0 -1
- package/dist/control-web/assets/slack-dark-BthQWCQV.js +0 -1
- package/dist/control-web/assets/slack-ochin-DqwNpetd.js +0 -1
- package/dist/control-web/assets/smalltalk-BERRCDM3.js +0 -1
- package/dist/control-web/assets/snazzy-light-Bw305WKR.js +0 -1
- package/dist/control-web/assets/solarized-dark-DXbdFlpD.js +0 -1
- package/dist/control-web/assets/solarized-light-L9t79GZl.js +0 -1
- package/dist/control-web/assets/solidity-rGO070M0.js +0 -1
- package/dist/control-web/assets/soy-Brmx7dQM.js +0 -1
- package/dist/control-web/assets/sparql-rVzFXLq3.js +0 -1
- package/dist/control-web/assets/splunk-BtCnVYZw.js +0 -1
- package/dist/control-web/assets/sql-BLtJtn59.js +0 -1
- package/dist/control-web/assets/ssh-config-_ykCGR6B.js +0 -1
- package/dist/control-web/assets/stata-BH5u7GGu.js +0 -1
- package/dist/control-web/assets/stateDiagram-2N3HPSRC-CaFYkZZ2.js +0 -1
- package/dist/control-web/assets/stateDiagram-v2-6OUMAXLB-CCvEZFYI.js +0 -1
- package/dist/control-web/assets/stylus-BEDo0Tqx.js +0 -1
- package/dist/control-web/assets/surrealql-Bq5Q-fJD.js +0 -1
- package/dist/control-web/assets/svelte-C_ipcX3V.js +0 -1
- package/dist/control-web/assets/swift-D82vCrfD.js +0 -1
- package/dist/control-web/assets/swimlanes-5IMT3BWC-CV2YWeYv.js +0 -2
- package/dist/control-web/assets/swimlanesDiagram-G3AALYLV-BFAdJHEB.js +0 -8
- package/dist/control-web/assets/synthwave-84-CbfX1IO0.js +0 -1
- package/dist/control-web/assets/system-verilog-CnnmHF94.js +0 -1
- package/dist/control-web/assets/systemd-4A_iFExJ.js +0 -1
- package/dist/control-web/assets/talonscript-CkByrt1z.js +0 -1
- package/dist/control-web/assets/tasl-QIJgUcNo.js +0 -1
- package/dist/control-web/assets/tcl-dwOrl1Do.js +0 -1
- package/dist/control-web/assets/templ-P3uqSqPl.js +0 -1
- package/dist/control-web/assets/terraform-BETggiCN.js +0 -1
- package/dist/control-web/assets/tex-idrVyKtj.js +0 -1
- package/dist/control-web/assets/timeline-definition-FHXFAJF6-Cq32UWLH.js +0 -120
- package/dist/control-web/assets/tokyo-night-hegEt444.js +0 -1
- package/dist/control-web/assets/toml-vGWfd6FD.js +0 -1
- package/dist/control-web/assets/ts-tags-zn1MmPIZ.js +0 -1
- package/dist/control-web/assets/tsv-B_m7g4N7.js +0 -1
- package/dist/control-web/assets/tsx-COt5Ahok.js +0 -1
- package/dist/control-web/assets/turtle-BsS91CYL.js +0 -1
- package/dist/control-web/assets/twig-DNn4PbVi.js +0 -1
- package/dist/control-web/assets/typescript-BPQ3VLAy.js +0 -1
- package/dist/control-web/assets/typespec-BGHnOYBU.js +0 -1
- package/dist/control-web/assets/typst-DHCkPAjA.js +0 -1
- package/dist/control-web/assets/v-BcVCzyr7.js +0 -1
- package/dist/control-web/assets/vala-CsfeWuGM.js +0 -1
- package/dist/control-web/assets/vb-D17OF-Vu.js +0 -1
- package/dist/control-web/assets/vennDiagram-L72KCM5P-BgBoqPth.js +0 -34
- package/dist/control-web/assets/verilog-BQ8w6xss.js +0 -1
- package/dist/control-web/assets/vesper-DU1UobuO.js +0 -1
- package/dist/control-web/assets/vhdl-CeAyd5Ju.js +0 -1
- package/dist/control-web/assets/viml-CJc9bBzg.js +0 -1
- package/dist/control-web/assets/vitesse-black-Bkuqu6BP.js +0 -1
- package/dist/control-web/assets/vitesse-dark-D0r3Knsf.js +0 -1
- package/dist/control-web/assets/vitesse-light-CVO1_9PV.js +0 -1
- package/dist/control-web/assets/vue-DN_0RTcg.js +0 -1
- package/dist/control-web/assets/vue-html-AaS7Mt5G.js +0 -1
- package/dist/control-web/assets/vue-vine-CQOfvN7w.js +0 -1
- package/dist/control-web/assets/vyper-CDx5xZoG.js +0 -1
- package/dist/control-web/assets/wardleyDiagram-EHGQE667-VsC2Gfpu.js +0 -78
- package/dist/control-web/assets/wasm-MzD3tlZU.js +0 -1
- package/dist/control-web/assets/wenyan-BV7otONQ.js +0 -1
- package/dist/control-web/assets/wgsl-Dx-B1_4e.js +0 -1
- package/dist/control-web/assets/wikitext-BhOHFoWU.js +0 -1
- package/dist/control-web/assets/wit-5i3qLPDT.js +0 -1
- package/dist/control-web/assets/wolfram-lXgVvXCa.js +0 -1
- package/dist/control-web/assets/xml-sdJ4AIDG.js +0 -1
- package/dist/control-web/assets/xsl-CtQFsRM5.js +0 -1
- package/dist/control-web/assets/xychartDiagram-FW5EYKEG-CyFiAunt.js +0 -7
- package/dist/control-web/assets/yaml-Buea-lGh.js +0 -1
- package/dist/control-web/assets/zenscript-DVFEvuxE.js +0 -1
- package/dist/control-web/assets/zig-VOosw3JB.js +0 -1
package/dist/session-portal.js
CHANGED
|
@@ -4,6 +4,7 @@ import Router from "@koa/router";
|
|
|
4
4
|
import Koa from "koa";
|
|
5
5
|
import { WebSocket, WebSocketServer } from "ws";
|
|
6
6
|
import { sendSpaFile } from "./control-web-dist.js";
|
|
7
|
+
import { isBrowserTerminalResizeFrame } from "./terminal-ws.js";
|
|
7
8
|
export const SESSION_PORTAL_HEADER = "x-rynx-session-portal";
|
|
8
9
|
export const SESSION_PORTAL_QUERY = "portal";
|
|
9
10
|
export const SESSION_PORTAL_SECRET_HEADER = "x-rynx-session-portal-secret";
|
|
@@ -564,8 +565,9 @@ function bridgePortalWebSocket(client, kind, requestUrl, grant, options) {
|
|
|
564
565
|
// Revoke may have committed and returned while handleUpgrade was accepting
|
|
565
566
|
// this socket but before it became visible to the registry; in that case the
|
|
566
567
|
// fresh lookup must fail before the upstream can receive any frame.
|
|
567
|
-
|
|
568
|
-
|
|
568
|
+
const initialRefresh = options.reauthorize();
|
|
569
|
+
if (!initialRefresh || (grant.access === "read_write" && initialRefresh.access !== "read_write")) {
|
|
570
|
+
closeSocket(client, 4403, initialRefresh ? "Session Portal access changed" : "Session Portal grant revoked");
|
|
569
571
|
// `ws` emits an error when a CONNECTING client is terminated; this early
|
|
570
572
|
// branch returns before the normal upstream error handler is installed.
|
|
571
573
|
upstream.on("error", () => undefined);
|
|
@@ -597,17 +599,33 @@ function bridgePortalWebSocket(client, kind, requestUrl, grant, options) {
|
|
|
597
599
|
untrack();
|
|
598
600
|
options.shutdownSignal.removeEventListener("abort", stopForShutdown);
|
|
599
601
|
};
|
|
600
|
-
|
|
602
|
+
const reauthorizeOrClose = () => {
|
|
601
603
|
const current = options.reauthorize();
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
604
|
+
const downgraded = grant.access === "read_write" && current?.access !== "read_write";
|
|
605
|
+
if (current && !downgraded)
|
|
606
|
+
return current;
|
|
607
|
+
pending.length = 0;
|
|
608
|
+
pendingBytes = 0;
|
|
609
|
+
const reason = downgraded
|
|
610
|
+
? "Session Portal access changed"
|
|
611
|
+
: "Session Portal grant revoked";
|
|
612
|
+
closeSocket(client, 4403, reason);
|
|
613
|
+
closeSocket(upstream, 4403, reason);
|
|
614
|
+
return undefined;
|
|
615
|
+
};
|
|
616
|
+
client.on("message", (data, isBinary) => {
|
|
617
|
+
const current = reauthorizeOrClose();
|
|
618
|
+
if (!current)
|
|
605
619
|
return;
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
return;
|
|
620
|
+
// The role of an established socket never becomes more permissive. A
|
|
621
|
+
// grant upgraded in storage must reconnect before it can gain write access.
|
|
622
|
+
if (grant.access === "read_only" || current.access === "read_only") {
|
|
610
623
|
if (!allowedReadOnlySocketFrame(kind, data, isBinary)) {
|
|
624
|
+
// A read-only terminal intentionally ignores keystrokes and malformed
|
|
625
|
+
// controls while keeping the live output stream attached. Only its
|
|
626
|
+
// canonical resize control is forwarded to the tmux client.
|
|
627
|
+
if (kind === "terminal")
|
|
628
|
+
return;
|
|
611
629
|
closeSocket(client, 4403, "Session Portal is read only");
|
|
612
630
|
closeSocket(upstream, 4403, "Session Portal is read only");
|
|
613
631
|
return;
|
|
@@ -628,11 +646,8 @@ function bridgePortalWebSocket(client, kind, requestUrl, grant, options) {
|
|
|
628
646
|
pendingBytes += frame.byteLength;
|
|
629
647
|
});
|
|
630
648
|
upstream.on("open", () => {
|
|
631
|
-
if (!
|
|
632
|
-
closeSocket(client, 4403, "Session Portal grant revoked");
|
|
633
|
-
closeSocket(upstream, 4403, "Session Portal grant revoked");
|
|
649
|
+
if (!reauthorizeOrClose())
|
|
634
650
|
return;
|
|
635
|
-
}
|
|
636
651
|
for (const frame of pending.splice(0)) {
|
|
637
652
|
pendingBytes -= frame.data.byteLength;
|
|
638
653
|
if (!forwardSocketFrame(client, upstream, frame.data, frame.isBinary))
|
|
@@ -640,11 +655,8 @@ function bridgePortalWebSocket(client, kind, requestUrl, grant, options) {
|
|
|
640
655
|
}
|
|
641
656
|
});
|
|
642
657
|
upstream.on("message", (data, isBinary) => {
|
|
643
|
-
if (!
|
|
644
|
-
closeSocket(client, 4403, "Session Portal grant revoked");
|
|
645
|
-
closeSocket(upstream, 4403, "Session Portal grant revoked");
|
|
658
|
+
if (!reauthorizeOrClose())
|
|
646
659
|
return;
|
|
647
|
-
}
|
|
648
660
|
forwardSocketFrame(upstream, client, data, isBinary);
|
|
649
661
|
});
|
|
650
662
|
client.on("close", (code, reason) => {
|
|
@@ -708,6 +720,8 @@ function readOnlySocketRoleAllowed(kind, rawUrl, grant) {
|
|
|
708
720
|
return kind === "terminal" ? role === "read-only" : role === "view";
|
|
709
721
|
}
|
|
710
722
|
function allowedReadOnlySocketFrame(kind, data, isBinary) {
|
|
723
|
+
if (kind === "terminal")
|
|
724
|
+
return isBrowserTerminalResizeFrame(data, isBinary);
|
|
711
725
|
if (kind !== "browser" || isBinary)
|
|
712
726
|
return false;
|
|
713
727
|
try {
|
|
@@ -11,12 +11,32 @@ export type SessionTerminalCloseReason = "client_closed" | "terminal_exited" | "
|
|
|
11
11
|
export interface SessionTerminalCloseInfo {
|
|
12
12
|
reason: SessionTerminalCloseReason;
|
|
13
13
|
exitCode?: number;
|
|
14
|
+
finalOffset?: number;
|
|
14
15
|
}
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
export interface SessionTerminalRead {
|
|
17
|
+
data: Uint8Array;
|
|
18
|
+
nextOffset: number;
|
|
19
|
+
done: boolean;
|
|
20
|
+
finalOffset?: number;
|
|
21
|
+
}
|
|
22
|
+
/** One demand-driven attachment; close detaches only this viewer. */
|
|
23
|
+
export interface SessionTerminalAttachment {
|
|
17
24
|
readonly sessionId: string;
|
|
18
25
|
readonly role: SessionTerminalRole;
|
|
26
|
+
readonly seedBytes: number;
|
|
27
|
+
/** Actual tmux pane size captured with the seed. */
|
|
28
|
+
readonly dimensions?: {
|
|
29
|
+
cols: number;
|
|
30
|
+
rows: number;
|
|
31
|
+
};
|
|
19
32
|
readonly closed: Promise<SessionTerminalCloseInfo>;
|
|
33
|
+
readSeed(offset: number, maxBytes: number): Promise<SessionTerminalRead>;
|
|
34
|
+
start(): Promise<void>;
|
|
35
|
+
read(offset: number, maxBytes: number): Promise<SessionTerminalRead>;
|
|
36
|
+
onResize?(listener: (dimensions: {
|
|
37
|
+
cols: number;
|
|
38
|
+
rows: number;
|
|
39
|
+
}) => void): void;
|
|
20
40
|
write(data: Uint8Array): void | Promise<void>;
|
|
21
41
|
resize(cols: number, rows: number): void | Promise<void>;
|
|
22
42
|
close(): Promise<void>;
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { TerminalOpenError } from "@rynx-ai/runtime";
|
|
2
|
-
const MAX_QUEUED_OUTPUT_FRAMES = 128;
|
|
3
|
-
const MAX_QUEUED_OUTPUT_BYTES = 512 * 1024;
|
|
4
2
|
const MAX_TERMINAL_DIMENSION = 1_000;
|
|
5
3
|
export class SessionTerminalOpenError extends Error {
|
|
6
4
|
code;
|
|
@@ -55,7 +53,7 @@ export function createRunnerSessionTerminalHost(options) {
|
|
|
55
53
|
void attachment.closed.then(releaseActivity, releaseActivity);
|
|
56
54
|
try {
|
|
57
55
|
const opened = await waitFor(parent.ready, openOptions.signal);
|
|
58
|
-
attachment.opened(opened.role);
|
|
56
|
+
attachment.opened(opened.role, opened.dimensions, opened.seedBytes);
|
|
59
57
|
attachment.throwIfOpeningFailed();
|
|
60
58
|
return attachment;
|
|
61
59
|
}
|
|
@@ -107,13 +105,13 @@ class RunnerSessionTerminalAttachment {
|
|
|
107
105
|
sessionId;
|
|
108
106
|
parent;
|
|
109
107
|
signal;
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
ended = false;
|
|
114
|
-
terminalError;
|
|
115
|
-
openingFailure;
|
|
108
|
+
detached = false;
|
|
109
|
+
readerFinished = false;
|
|
110
|
+
closeSettled = false;
|
|
116
111
|
currentRole;
|
|
112
|
+
currentDimensions;
|
|
113
|
+
currentSeedBytes = 0;
|
|
114
|
+
resizeListener;
|
|
117
115
|
resolveClosed;
|
|
118
116
|
closed;
|
|
119
117
|
onAbort;
|
|
@@ -128,8 +126,18 @@ class RunnerSessionTerminalAttachment {
|
|
|
128
126
|
this.onAbort = () => {
|
|
129
127
|
void this.close().catch(() => undefined);
|
|
130
128
|
};
|
|
131
|
-
parent.
|
|
132
|
-
|
|
129
|
+
parent.onResize?.((dimensions) => {
|
|
130
|
+
this.currentDimensions = dimensions;
|
|
131
|
+
this.resizeListener?.(dimensions);
|
|
132
|
+
});
|
|
133
|
+
void parent.readerDone.then((info) => {
|
|
134
|
+
this.readerFinished = true;
|
|
135
|
+
this.settleClosed({
|
|
136
|
+
reason: info.reason,
|
|
137
|
+
exitCode: info.exitCode,
|
|
138
|
+
finalOffset: info.finalOffset,
|
|
139
|
+
});
|
|
140
|
+
});
|
|
133
141
|
if (signal?.aborted)
|
|
134
142
|
this.onAbort();
|
|
135
143
|
else
|
|
@@ -138,97 +146,72 @@ class RunnerSessionTerminalAttachment {
|
|
|
138
146
|
get role() {
|
|
139
147
|
return this.currentRole;
|
|
140
148
|
}
|
|
141
|
-
|
|
149
|
+
get dimensions() {
|
|
150
|
+
return this.currentDimensions;
|
|
151
|
+
}
|
|
152
|
+
get seedBytes() {
|
|
153
|
+
return this.currentSeedBytes;
|
|
154
|
+
}
|
|
155
|
+
onResize(listener) {
|
|
156
|
+
this.resizeListener = listener;
|
|
157
|
+
if (this.currentDimensions)
|
|
158
|
+
queueMicrotask(() => listener(this.currentDimensions));
|
|
159
|
+
}
|
|
160
|
+
opened(role, dimensions, seedBytes = 0) {
|
|
142
161
|
this.currentRole = role;
|
|
162
|
+
this.currentDimensions = dimensions;
|
|
163
|
+
this.currentSeedBytes = seedBytes;
|
|
143
164
|
}
|
|
144
165
|
throwIfOpeningFailed() {
|
|
145
|
-
if (this.
|
|
146
|
-
throw this.openingFailure;
|
|
147
|
-
if (this.ended) {
|
|
166
|
+
if (this.detached || this.readerFinished) {
|
|
148
167
|
throw new SessionTerminalOpenError("internal", "Session terminal closed while opening");
|
|
149
168
|
}
|
|
150
169
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
next() {
|
|
155
|
-
const queued = this.queue.shift();
|
|
156
|
-
if (queued) {
|
|
157
|
-
this.queuedBytes -= queued.bytes;
|
|
158
|
-
return Promise.resolve({ done: false, value: queued.data });
|
|
159
|
-
}
|
|
160
|
-
if (this.terminalError !== undefined)
|
|
161
|
-
return Promise.reject(this.terminalError);
|
|
162
|
-
if (this.ended)
|
|
163
|
-
return Promise.resolve({ done: true, value: undefined });
|
|
164
|
-
if (this.waiter) {
|
|
165
|
-
return Promise.reject(new SessionTerminalStreamError("internal", "Concurrent reads from one Session terminal are not allowed"));
|
|
170
|
+
readSeed(offset, maxBytes) {
|
|
171
|
+
if (this.detached || this.readerFinished) {
|
|
172
|
+
return Promise.reject(new Error("Session terminal is closed"));
|
|
166
173
|
}
|
|
167
|
-
return
|
|
168
|
-
|
|
169
|
-
|
|
174
|
+
return this.parent.readSeed(offset, maxBytes);
|
|
175
|
+
}
|
|
176
|
+
async start() {
|
|
177
|
+
if (this.detached || this.readerFinished)
|
|
178
|
+
throw new Error("Session terminal is closed");
|
|
179
|
+
await this.parent.start();
|
|
170
180
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
181
|
+
read(offset, maxBytes) {
|
|
182
|
+
// Reader completion publishes the final offset before the consumer has
|
|
183
|
+
// necessarily pulled the final bytes. Only detaching makes that tail
|
|
184
|
+
// unreadable.
|
|
185
|
+
if (this.detached)
|
|
186
|
+
return Promise.reject(new Error("Session terminal is closed"));
|
|
187
|
+
return this.parent.read(offset, maxBytes);
|
|
174
188
|
}
|
|
175
|
-
write(data) {
|
|
176
|
-
if (this.
|
|
189
|
+
async write(data) {
|
|
190
|
+
if (this.detached ||
|
|
191
|
+
this.readerFinished ||
|
|
192
|
+
this.currentRole !== "owner" ||
|
|
193
|
+
data.byteLength === 0)
|
|
177
194
|
return;
|
|
178
|
-
this.parent.write(
|
|
195
|
+
await this.parent.write(data);
|
|
179
196
|
}
|
|
180
|
-
resize(cols, rows) {
|
|
197
|
+
async resize(cols, rows) {
|
|
181
198
|
validateDimensions(cols, rows);
|
|
182
|
-
if (!this.
|
|
183
|
-
this.parent.resize(cols, rows);
|
|
199
|
+
if (!this.detached && !this.readerFinished) {
|
|
200
|
+
await this.parent.resize(cols, rows);
|
|
201
|
+
}
|
|
184
202
|
}
|
|
185
203
|
async close() {
|
|
186
|
-
if (this.
|
|
204
|
+
if (this.detached)
|
|
187
205
|
return;
|
|
206
|
+
this.detached = true;
|
|
188
207
|
this.parent.close();
|
|
189
|
-
this.
|
|
190
|
-
}
|
|
191
|
-
push(data) {
|
|
192
|
-
if (this.ended || data.byteLength === 0)
|
|
193
|
-
return;
|
|
194
|
-
if (this.waiter) {
|
|
195
|
-
const waiter = this.waiter;
|
|
196
|
-
this.waiter = undefined;
|
|
197
|
-
waiter.resolve({ done: false, value: data });
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
if (this.queue.length >= MAX_QUEUED_OUTPUT_FRAMES ||
|
|
201
|
-
this.queuedBytes + data.byteLength > MAX_QUEUED_OUTPUT_BYTES) {
|
|
202
|
-
const error = new SessionTerminalStreamError("backpressure", "Session terminal output exceeded its bounded queue");
|
|
203
|
-
this.openingFailure = new SessionTerminalOpenError("capacity", error.message, {
|
|
204
|
-
cause: error,
|
|
205
|
-
});
|
|
206
|
-
this.parent.close();
|
|
207
|
-
this.finish({ reason: "backpressure" }, error, true);
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
const copy = Uint8Array.from(data);
|
|
211
|
-
this.queue.push({ data: copy, bytes: copy.byteLength });
|
|
212
|
-
this.queuedBytes += copy.byteLength;
|
|
208
|
+
this.settleClosed({ reason: "client_closed" });
|
|
213
209
|
}
|
|
214
|
-
|
|
215
|
-
if (this.
|
|
210
|
+
settleClosed(info) {
|
|
211
|
+
if (this.closeSettled)
|
|
216
212
|
return;
|
|
217
|
-
this.
|
|
218
|
-
this.terminalError = error;
|
|
213
|
+
this.closeSettled = true;
|
|
219
214
|
this.signal?.removeEventListener("abort", this.onAbort);
|
|
220
|
-
if (discardQueue) {
|
|
221
|
-
this.queue.length = 0;
|
|
222
|
-
this.queuedBytes = 0;
|
|
223
|
-
}
|
|
224
|
-
const waiter = this.waiter;
|
|
225
|
-
this.waiter = undefined;
|
|
226
|
-
if (waiter) {
|
|
227
|
-
if (error === undefined)
|
|
228
|
-
waiter.resolve({ done: true, value: undefined });
|
|
229
|
-
else
|
|
230
|
-
waiter.reject(error);
|
|
231
|
-
}
|
|
232
215
|
this.resolveClosed(info);
|
|
233
216
|
}
|
|
234
217
|
}
|
package/dist/terminal-ws.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Server } from "node:http";
|
|
2
|
-
import { WebSocketServer } from "ws";
|
|
2
|
+
import { WebSocketServer, type RawData } from "ws";
|
|
3
3
|
import { type RuntimeWebAccessPolicy } from "./runtime-web-auth.js";
|
|
4
4
|
import { type SessionTerminalHost } from "./session-terminal-host.js";
|
|
5
5
|
import type { RuntimeConnectionResolverHost } from "./server.js";
|
|
@@ -15,3 +15,6 @@ export interface TerminalWsDeps {
|
|
|
15
15
|
}
|
|
16
16
|
/** Attach the authenticated Runtime-scoped terminal bridge to an HTTP server. */
|
|
17
17
|
export declare function attachTerminalWs(server: Server, deps: TerminalWsDeps): WebSocketServer;
|
|
18
|
+
/** Reuse the terminal protocol's canonical parser at proxy boundaries that
|
|
19
|
+
* must admit resize controls while rejecting every form of terminal input. */
|
|
20
|
+
export declare function isBrowserTerminalResizeFrame(data: RawData, isBinary: boolean): boolean;
|
package/dist/terminal-ws.js
CHANGED
|
@@ -8,10 +8,10 @@ const MAX_DIMENSION = 1_000;
|
|
|
8
8
|
const MAX_BROWSER_MESSAGE_BYTES = 64 * 1024;
|
|
9
9
|
const MAX_PENDING_BROWSER_MESSAGES = 32;
|
|
10
10
|
const MAX_PENDING_BROWSER_BYTES = 128 * 1024;
|
|
11
|
-
const MAX_BROWSER_BUFFERED_BYTES = 1024 * 1024;
|
|
12
11
|
const INTERACTIVE_OUTPUT_CHUNK_BYTES = 2 * 1024;
|
|
13
|
-
const NORMAL_OUTPUT_CHUNK_BYTES =
|
|
12
|
+
const NORMAL_OUTPUT_CHUNK_BYTES = 64 * 1024;
|
|
14
13
|
const INTERACTIVE_ECHO_WINDOW_MS = 750;
|
|
14
|
+
const TERMINAL_OUTPUT_DRAIN_TIMEOUT_MS = 5_000;
|
|
15
15
|
const WS_CLOSE_BAD_REQUEST = 4400;
|
|
16
16
|
const WS_CLOSE_UNAUTHORIZED = 4403;
|
|
17
17
|
/** Reserved exclusively for an attachment that was not live at open time. */
|
|
@@ -76,7 +76,7 @@ async function handleConnection(ws, url, route, deps) {
|
|
|
76
76
|
let terminal;
|
|
77
77
|
let browserClosed = false;
|
|
78
78
|
let cleanupPromise;
|
|
79
|
-
let
|
|
79
|
+
let lastAcknowledgedInputAt = Number.NEGATIVE_INFINITY;
|
|
80
80
|
let liveInputTail = Promise.resolve();
|
|
81
81
|
let liveInputFrames = 0;
|
|
82
82
|
let liveInputBytes = 0;
|
|
@@ -95,6 +95,7 @@ async function handleConnection(ws, url, route, deps) {
|
|
|
95
95
|
cleanupPromise = (async () => {
|
|
96
96
|
try {
|
|
97
97
|
await opened?.close();
|
|
98
|
+
await liveInputTail.catch(() => undefined);
|
|
98
99
|
}
|
|
99
100
|
finally {
|
|
100
101
|
acquired?.release();
|
|
@@ -122,8 +123,6 @@ async function handleConnection(ws, url, route, deps) {
|
|
|
122
123
|
void cleanup();
|
|
123
124
|
return;
|
|
124
125
|
}
|
|
125
|
-
if (input.type === "input")
|
|
126
|
-
lastClientInputAt = Date.now();
|
|
127
126
|
const bytes = input.type === "input" ? input.data.byteLength : 16;
|
|
128
127
|
const opened = terminal;
|
|
129
128
|
if (opened && inputReady) {
|
|
@@ -135,7 +134,11 @@ async function handleConnection(ws, url, route, deps) {
|
|
|
135
134
|
}
|
|
136
135
|
liveInputFrames += 1;
|
|
137
136
|
liveInputBytes += bytes;
|
|
138
|
-
const operation = liveInputTail.then(() =>
|
|
137
|
+
const operation = liveInputTail.then(async () => {
|
|
138
|
+
const acknowledgedInput = await applyBrowserInput(opened, input);
|
|
139
|
+
if (acknowledgedInput)
|
|
140
|
+
lastAcknowledgedInputAt = performance.now();
|
|
141
|
+
});
|
|
139
142
|
liveInputTail = operation
|
|
140
143
|
.catch((error) => {
|
|
141
144
|
closeForError(ws, error);
|
|
@@ -205,26 +208,42 @@ async function handleConnection(ws, url, route, deps) {
|
|
|
205
208
|
return;
|
|
206
209
|
}
|
|
207
210
|
terminal = opened;
|
|
208
|
-
sendText(ws, {
|
|
211
|
+
sendText(ws, {
|
|
212
|
+
t: "opened",
|
|
213
|
+
role: opened.role,
|
|
214
|
+
...(opened.dimensions ?? {}),
|
|
215
|
+
});
|
|
216
|
+
opened.onResize?.(({ cols, rows }) => {
|
|
217
|
+
if (!browserClosed)
|
|
218
|
+
sendText(ws, { t: "dimensions", cols, rows });
|
|
219
|
+
});
|
|
220
|
+
let seedOffset = 0;
|
|
221
|
+
while (seedOffset < opened.seedBytes) {
|
|
222
|
+
const seed = await opened.readSeed(seedOffset, NORMAL_OUTPUT_CHUNK_BYTES);
|
|
223
|
+
if (seed.data.byteLength > 0)
|
|
224
|
+
await sendBinary(ws, seed.data);
|
|
225
|
+
seedOffset = seed.nextOffset;
|
|
226
|
+
if (seed.done)
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
if (seedOffset !== opened.seedBytes) {
|
|
230
|
+
throw new Error(`Terminal history ended at ${seedOffset}, expected ${opened.seedBytes}`);
|
|
231
|
+
}
|
|
232
|
+
await opened.start();
|
|
209
233
|
while (pendingInputs.length > 0) {
|
|
210
234
|
const batch = pendingInputs.splice(0);
|
|
211
235
|
for (const queued of batch) {
|
|
212
236
|
pendingInputBytes -= queued.bytes;
|
|
213
|
-
await applyBrowserInput(opened, queued.input);
|
|
237
|
+
const acknowledgedInput = await applyBrowserInput(opened, queued.input);
|
|
238
|
+
if (acknowledgedInput)
|
|
239
|
+
lastAcknowledgedInputAt = performance.now();
|
|
214
240
|
}
|
|
215
241
|
}
|
|
216
242
|
pendingInputBytes = 0;
|
|
217
243
|
inputReady = true;
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
const chunkSize = Date.now() - lastClientInputAt < INTERACTIVE_ECHO_WINDOW_MS
|
|
222
|
-
? INTERACTIVE_OUTPUT_CHUNK_BYTES
|
|
223
|
-
: NORMAL_OUTPUT_CHUNK_BYTES;
|
|
224
|
-
for (let offset = 0; offset < output.byteLength; offset += chunkSize) {
|
|
225
|
-
await sendBinary(ws, output.subarray(offset, Math.min(offset + chunkSize, output.byteLength)));
|
|
226
|
-
}
|
|
227
|
-
}
|
|
244
|
+
await forwardTerminalOutput(ws, opened, () => (performance.now() - lastAcknowledgedInputAt < INTERACTIVE_ECHO_WINDOW_MS
|
|
245
|
+
? INTERACTIVE_OUTPUT_CHUNK_BYTES
|
|
246
|
+
: NORMAL_OUTPUT_CHUNK_BYTES));
|
|
228
247
|
if (browserClosed)
|
|
229
248
|
return;
|
|
230
249
|
const closed = await opened.closed;
|
|
@@ -297,25 +316,34 @@ function parseBrowserInput(data, isBinary) {
|
|
|
297
316
|
}
|
|
298
317
|
throw new Error("Unknown or invalid terminal control frame");
|
|
299
318
|
}
|
|
319
|
+
/** Reuse the terminal protocol's canonical parser at proxy boundaries that
|
|
320
|
+
* must admit resize controls while rejecting every form of terminal input. */
|
|
321
|
+
export function isBrowserTerminalResizeFrame(data, isBinary) {
|
|
322
|
+
try {
|
|
323
|
+
return parseBrowserInput(data, isBinary).type === "resize";
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
return false;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
300
329
|
async function applyBrowserInput(terminal, input) {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
if (terminal.role !== "owner")
|
|
305
|
-
return;
|
|
306
|
-
if (input.type === "input")
|
|
330
|
+
if (input.type === "input") {
|
|
331
|
+
if (terminal.role !== "owner")
|
|
332
|
+
return false;
|
|
307
333
|
await terminal.write(input.data);
|
|
308
|
-
|
|
309
|
-
|
|
334
|
+
return true;
|
|
335
|
+
}
|
|
336
|
+
await terminal.resize(input.cols, input.rows);
|
|
337
|
+
return false;
|
|
310
338
|
}
|
|
311
339
|
async function sendBinary(ws, data) {
|
|
312
340
|
if (ws.readyState !== WebSocket.OPEN)
|
|
313
341
|
throw transportError("Browser terminal is closed");
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
342
|
+
// Await every send and admit only one frame at a time. Terminal output may
|
|
343
|
+
// legitimately arrive in multi-megabyte bursts; a fixed bufferedAmount
|
|
344
|
+
// cutoff turns a temporarily slow browser into a detached healthy pane.
|
|
345
|
+
// The terminal forwarder coalesces normal output to 64 KiB frames and uses
|
|
346
|
+
// 2 KiB frames in the interactive echo window.
|
|
319
347
|
await new Promise((resolve, reject) => {
|
|
320
348
|
ws.send(data, { binary: true, compress: false }, (error) => {
|
|
321
349
|
if (error)
|
|
@@ -325,6 +353,42 @@ async function sendBinary(ws, data) {
|
|
|
325
353
|
});
|
|
326
354
|
});
|
|
327
355
|
}
|
|
356
|
+
async function forwardTerminalOutput(ws, terminal, frameLimit) {
|
|
357
|
+
let drainTimer;
|
|
358
|
+
const drainDeadline = terminal.closed.then((closed) => new Promise((_, reject) => {
|
|
359
|
+
if (closed.reason !== "terminal_exited")
|
|
360
|
+
return;
|
|
361
|
+
drainTimer = setTimeout(() => {
|
|
362
|
+
const error = new Error(`Terminal output did not drain within ${TERMINAL_OUTPUT_DRAIN_TIMEOUT_MS}ms after exit`);
|
|
363
|
+
error.name = "BackpressureError";
|
|
364
|
+
// A pending ws send has no cancellation primitive. Terminating the
|
|
365
|
+
// transport is the only way to guarantee teardown after the deadline.
|
|
366
|
+
if (ws.readyState === WebSocket.OPEN || ws.readyState === WebSocket.CLOSING) {
|
|
367
|
+
ws.terminate();
|
|
368
|
+
}
|
|
369
|
+
reject(error);
|
|
370
|
+
}, TERMINAL_OUTPUT_DRAIN_TIMEOUT_MS);
|
|
371
|
+
drainTimer.unref?.();
|
|
372
|
+
}));
|
|
373
|
+
const forwarding = (async () => {
|
|
374
|
+
let offset = 0;
|
|
375
|
+
for (;;) {
|
|
376
|
+
const next = await terminal.read(offset, frameLimit());
|
|
377
|
+
if (next.data.byteLength > 0)
|
|
378
|
+
await sendBinary(ws, next.data);
|
|
379
|
+
offset = next.nextOffset;
|
|
380
|
+
if (next.done)
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
})();
|
|
384
|
+
try {
|
|
385
|
+
await Promise.race([forwarding, drainDeadline]);
|
|
386
|
+
}
|
|
387
|
+
finally {
|
|
388
|
+
if (drainTimer)
|
|
389
|
+
clearTimeout(drainTimer);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
328
392
|
function sendText(ws, value) {
|
|
329
393
|
if (ws.readyState === WebSocket.OPEN) {
|
|
330
394
|
ws.send(JSON.stringify(value), { binary: false, compress: false });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rynx-ai/server",
|
|
3
|
-
"version": "0.1.11-beta.
|
|
3
|
+
"version": "0.1.11-beta.34",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/rynx-ai/rynx.git",
|
|
@@ -27,15 +27,15 @@
|
|
|
27
27
|
"@koa/router": "^15.4.0",
|
|
28
28
|
"koa": "^3.2.0",
|
|
29
29
|
"ws": "^8.21.0",
|
|
30
|
-
"@rynx-ai/
|
|
31
|
-
"@rynx-ai/
|
|
32
|
-
"@rynx-ai/
|
|
33
|
-
"@rynx-ai/remote-runtime-e2ee": "0.1.11-beta.
|
|
34
|
-
"@rynx-ai/runtime": "0.1.11-beta.
|
|
30
|
+
"@rynx-ai/core": "0.1.11-beta.34",
|
|
31
|
+
"@rynx-ai/plugin-sdk": "0.1.11-beta.34",
|
|
32
|
+
"@rynx-ai/protocol": "0.1.11-beta.34",
|
|
33
|
+
"@rynx-ai/remote-runtime-e2ee": "0.1.11-beta.34",
|
|
34
|
+
"@rynx-ai/runtime": "0.1.11-beta.34"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/ws": "^8.18.1",
|
|
38
|
-
"@rynx-ai/control-web": "0.1.11-beta.
|
|
38
|
+
"@rynx-ai/control-web": "0.1.11-beta.34"
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "rm -rf dist && tsc -p tsconfig.json && mkdir -p dist/control-web && cp -R ../control-web/dist/. dist/control-web/",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=Object.freeze(JSON.parse('{"displayName":"ABAP","fileTypes":["abap","ABAP"],"foldingStartMarker":"/\\\\*\\\\*|\\\\{\\\\s*$","foldingStopMarker":"\\\\*\\\\*/|^\\\\s*}","name":"abap","patterns":[{"captures":{"1":{"name":"punctuation.definition.comment.abap"}},"match":"^\\\\*.*\\\\n?","name":"comment.line.full.abap"},{"captures":{"1":{"name":"punctuation.definition.comment.abap"}},"match":"\\".*\\\\n?","name":"comment.line.partial.abap"},{"match":"(?<!\\\\S)##.*?(?=([,.:\\\\s]))","name":"comment.line.pragma.abap"},{"match":"(?i)(?<=[-~\\\\s])(?<=[-=]>)([/_a-z][/-9_a-z]*)(?=\\\\s+(?:|[-*+/]|&&?)=\\\\s+)","name":"variable.other.abap"},{"match":"\\\\b[0-9]+(\\\\b|[,.])","name":"constant.numeric.abap"},{"match":"(?i)(^|\\\\s+)((P(?:UBLIC|RIVATE|ROTECTED))\\\\sSECTION)(?=\\\\s+|[.:])","name":"storage.modifier.class.abap"},{"begin":"(?<!\\\\\\\\)(\\\\|)(.*?)","beginCaptures":{"1":{"name":"constant.character.escape.abap"}},"end":"(?<!\\\\\\\\)(\\\\||(\\\\\\\\\\\\\\\\\\\\|))","endCaptures":{"1":{"name":"constant.character.escape.abap"}},"name":"string.interpolated.abap","patterns":[{"match":"(\\\\{ )|( })","name":"constant.character.escape"},{"match":"\\\\\\\\\\\\|","name":"constant.character.escape.abap"},{"match":"(?i)(?<=\\\\s)(align|alpha|case|country|currency|date|decimals|exponent|number|pad|sign|style|time|timestamp|timezone|width|xsd|zero)(?=\\\\s=)","name":"entity.name.property.stringtemplate.abap"},{"match":"(?i)(?<==\\\\s)(center|engineering|environment|in|iso|left|leftplus|leftspace|lower|no|out|raw|right|rightplus|rightspace|scale_preserving|scale_preserving_scientific|scientific|scientific_with_leading_zero|sign_as_postfix|simple|space|upper|user|yes)(?=\\\\s)","name":"entity.value.property.stringtemplate.abap"}]},{"begin":"\'","end":"\'","name":"string.quoted.single.abap","patterns":[{"match":"\'\'","name":"constant.character.escape.abap"}]},{"begin":"`","end":"`","name":"string.quoted.single.abap","patterns":[{"match":"``","name":"constant.character.escape.abap"}]},{"begin":"(?i)^\\\\s*(class)\\\\s([/_a-z][/-9_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.block.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","name":"meta.block.begin.implementation.abap","patterns":[{"match":"(?i)(^|\\\\s+)(definition|implementation|public|inheriting\\\\s+from|final|deferred|abstract|shared\\\\s+memory\\\\s+enabled|(global|local)*\\\\s*friends|(create\\\\s+(p(?:ublic|rotected|rivate)))|for\\\\s+behavior\\\\s+of|for\\\\s+testing|risk\\\\s+level\\\\s+(critical|dangerous|harmless))|duration\\\\s(short|medium|long)(?=\\\\s+|\\\\.)","name":"storage.modifier.class.abap"},{"begin":"(?=[A-Z_a-z][0-9A-Z_a-z]*)","contentName":"entity.name.type.block.abap","end":"(?![0-9A-Z_a-z])","patterns":[{"include":"#generic_names"}]}]},{"begin":"(?i)^\\\\s*(method)\\\\s(?:([/_a-z][/-9_a-z]*)~)?([/_a-z][/-9_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.abap"},"3":{"name":"entity.name.function.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","patterns":[{"match":"(?i)(?<=^|\\\\s)(BY(?:\\\\s+DATABASE(\\\\s+PROCEDURE|\\\\s+FUNCTION|\\\\s+GRAPH\\\\s+WORKSPACE)|\\\\s+KERNEL\\\\s+MODULE))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"match":"(?i)(?<=^|\\\\s)(FOR\\\\s+(HDB|LLANG))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"match":"(?i)(?<=\\\\s)(OPTIONS\\\\s+(READ-ONLY|DETERMINISTIC|SUPPRESS\\\\s+SYNTAX\\\\s+ERRORS))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"match":"(?i)(?<=^|\\\\s)(LANGUAGE\\\\s+(SQLSCRIPT|SQL|GRAPH))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"captures":{"1":{"name":"storage.modifier.method.abap"}},"match":"(?i)(?<=\\\\s)(USING)\\\\s+([/_a-z][/-9=>_a-z]*)+(?=\\\\s+|\\\\.)"},{"begin":"(?=[A-Z_a-z][0-9A-Z_a-z]*)","end":"(?![0-9A-Z_a-z])","patterns":[{"include":"#generic_names"}]}]},{"begin":"(?i)^\\\\s*(INTERFACE)\\\\s([/_a-z][/-9_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","patterns":[{"match":"(?i)(?<=^|\\\\s)(DEFERRED|PUBLIC)(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"}]},{"begin":"(?i)^\\\\s*(FORM)\\\\s([/_a-z][-/-9?_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","patterns":[{"match":"(?i)(?<=^|\\\\s)(USING|TABLES|CHANGING|RAISING|IMPLEMENTATION|DEFINITION)(?=\\\\s+|\\\\.)","name":"storage.modifier.form.abap"},{"include":"#abaptypes"},{"include":"#keywords_followed_by_braces"}]},{"match":"(?i)(end(?:class|method|form|interface))","name":"storage.type.block.end.abap"},{"match":"(?i)(<[A-Z_a-z][0-9A-Z_a-z]*>)","name":"variable.other.field.symbol.abap"},{"include":"#keywords"},{"include":"#abap_constants"},{"include":"#reserved_names"},{"include":"#operators"},{"include":"#builtin_functions"},{"include":"#abaptypes"},{"include":"#system_fields"},{"include":"#sql_functions"},{"include":"#sql_types"}],"repository":{"abap_constants":{"match":"(?i)(?<=\\\\s)(initial|null|@?space|@?abap_true|@?abap_false|@?abap_undefined|table_line|%_final|%_hints|%_predefined|col_background|col_group|col_heading|col_key|col_negative|col_normal|col_positive|col_total|adabas|as400|db2|db6|hdb|oracle|sybase|mssqlnt|pos_low|pos_high)(?=[,.\\\\s])","name":"constant.language.abap"},"abaptypes":{"patterns":[{"match":"(?i)\\\\s(abap_bool|string|xstring|any|clike|csequence|numeric|xsequence|decfloat|decfloat16|decfloat34|utclong|simple|int8|[cdfinptx])(?=[,.\\\\s])","name":"support.type.abap"},{"match":"(?i)\\\\s(TYPE|REF|TO|LIKE|LINE|OF|STRUCTURE|STANDARD|SORTED|HASHED|INDEX|TABLE|WITH|UNIQUE|NON-UNIQUE|SECONDARY|DEFAULT|KEY)(?=[,.\\\\s])","name":"keyword.control.simple.abap"}]},"arithmetic_operator":{"match":"(?i)(?<=\\\\s)([-*+]|\\\\*\\\\*|[%/]|DIV|MOD|BIT-AND|BIT-OR|BIT-XOR|BIT-NOT)(?=\\\\s)","name":"keyword.control.simple.abap"},"builtin_functions":{"match":"(?i)(?<=\\\\s)(abs|sign|ceil|floor|trunc|frac|acos|asin|atan|cos|sin|tan|cosh|sinh|tanh|exp|log|log10|sqrt|strlen|xstrlen|charlen|lines|numofchar|dbmaxlen|round|rescale|nmax|nmin|cmax|cmin|boolc|boolx|xsdbool|contains|contains_any_of|contains_any_not_of|matches|line_exists|ipow|char_off|count|count_any_of|count_any_not_of|distance|condense|concat_lines_of|escape|find|find_end|find_any_of|find_any_not_of|insert|match|repeat|replace|reverse|segment|shift_left|shift_right|substring|substring_after|substring_from|substring_before|substring_to|to_upper|to_lower|to_mixed|from_mixed|translate|bit-set|line_index)(?=\\\\()","name":"entity.name.function.builtin.abap"},"comparison_operator":{"match":"(?i)(?<=\\\\s)([<>]|<=|>=|=|<>|eq|ne|lt|le|gt|ge|cs|cp|co|cn|ca|na|ns|np|byte-co|byte-cn|byte-ca|byte-na|byte-cs|byte-ns|[moz])(?=\\\\s)","name":"keyword.control.simple.abap"},"control_keywords":{"match":"(?i)(^|\\\\s)(at|case|catch|continue|do|elseif|else|endat|endcase|endcatch|enddo|endif|endloop|endon|endtry|endwhile|if|loop|on|raise|try|while)(?=[.:\\\\s])","name":"keyword.control.flow.abap"},"generic_names":{"match":"[A-Z_a-z][0-9A-Z_a-z]*"},"keywords":{"patterns":[{"include":"#main_keywords"},{"include":"#text_symbols"},{"include":"#control_keywords"},{"include":"#keywords_followed_by_braces"}]},"keywords_followed_by_braces":{"captures":{"1":{"name":"keyword.control.simple.abap"},"2":{"name":"variable.other.abap"}},"match":"(?i)\\\\b(data|value|field-symbol|final|reference|resumable)\\\\((<?[/_a-z][/-9_a-z]*>?)\\\\)"},"logical_operator":{"match":"(?i)(?<=\\\\s)(not|or|and)(?=\\\\s)","name":"keyword.control.simple.abap"},"main_keywords":{"match":"(?i)(?<=^|\\\\s)(abap-source|abstract|accept|accepting|access|according|action|activation|actual|add|add-corresponding|adjacent|after|alias|aliases|all|allocate|amdp|analysis|analyzer|append|appending|application|archive|area|arithmetic|as|ascending|assert|assign|assigned|assigning|association|asynchronous|at|attributes|authority|authority-check|authorization|auto|back|background|backward|badi|base|before|begin|behavior|between|binary|bit|blanks??|blocks??|bound|boundaries|bounds|boxed|break|break-point|buffer|by|bypassing|byte|byte-order|call|calling|cast|casting|cds|centered|change|changing|channels|char-to-hex|character|check|checkbox|cid|circular|class|class-data|class-events|class-methods??|class-pool|cleanup|clear|clients??|clock|clone|close|cnt|code|collect|color|column|comments??|commit|common|communication|comparing|components??|compression|compute|concatenate|cond|condense|condition|connection|constants??|contexts??|controls??|conv|conversion|convert|copy|corresponding|count|country|cover|create|currency|current|cursor|customer-function|data|database|datainfo|dataset|date|daylight|ddl|deallocate|decimals|declarations|deep|default|deferred|define|delete|deleting|demand|descending|describe|destination|detail|determine|dialog|did|directory|discarding|display|display-mode|distance|distinct|divide|divide-corresponding|dummy|duplicates??|duration|during|dynpro|edit|editor-call|empty|enabled|enabling|encoding|end|end-enhancement-section|end-of-definition|end-of-page|end-of-selection|end-test-injection|end-test-seam|endenhancement|endexec|endfunction|endian|ending|endmodule|endprovide|endselect|endwith|enhancement|enhancement-point|enhancement-section|enhancements|entities|entity|entries|entry|enum|equiv|errors|escape|escaping|events??|exact|except|exception|exception-table|exceptions|excluding|exec|execute|exists|exit|exit-command|expanding|explicit|exponent|export|exporting|extended|extension|extract|fail|failed|features|fetch|field|field-groups|field-symbols|fields|file|fill|filters??|final|find|first|first-line|fixed-point|flush|following|for|format|forward|found|frames??|free|from|full|function|function-pool|generate|get|giving|graph|groups??|handler??|hashed|having|headers??|heading|help-id|help-request|hide|hint|hold|hotspot|icon|id|identification|identifier|ignore|ignoring|immediately|implemented|implicit|import|importing|in|inactive|incl|includes??|including|increment|index|index-line|indicators|infotypes|inheriting|init|initial|initialization|inner|input|insert|instances??|intensified|interface|interface-pool|interfaces|internal|intervals|into|inverse|inverted-date|is|job|join|keep|keeping|kernel|keys??|keywords|kind|language|last|late|layout|leading|leave|left|left-justified|legacy|length|let|levels??|like|line|line-count|line-selection|line-size|linefeed|lines|link|list|list-processing|listbox|load|load-of-program|locale??|locks??|log-point|logical|lower|mapped|mapping|margin|mark|mask|match|matchcode|maximum|members|memory|mesh|message|message-id|messages|messaging|methods??|mode|modif|modifier|modify|module|move|move-corresponding|multiply|multiply-corresponding|name|nametab|native|nested|nesting|new|new-line|new-page|new-section|next|no-display|no-extension|no-gaps??|no-grouping|no-heading|no-scrolling|no-sign|no-title|no-zero|nodes|non-unicode|non-unique|number|objects??|objmgr|obligatory|occurences??|occurrences??|occurs|of|offset|on|only|open|optional|options??|order|others|out|outer|output|output-length|overflow|overlay|pack|package|padding|page|parameter|parameter-table|parameters|part|partially|pcre|perform|performing|permissions|pf-status|places|pool|position|pragmas|preceding|precompiled|preferred|preserving|primary|print|print-control|private|privileged|procedure|process|program|property|protected|provide|push|pushbutton|put|query|queue-only|queueonly|quickinfo|radiobutton|raising|ranges??|read|read-only|received??|receiving|redefinition|reduce|ref|reference|refresh|regex|reject|renaming|replace|replacement|replacing|report|reported|request|requested|required|reserve|reset|resolution|respecting|response|restore|results??|resumable|resume|retry|return|returning|right|right-justified|rollback|rows|rp-provide-from-last|run|sap|sap-spool|save|saving|scan|screen|scroll|scroll-boundary|scrolling|search|seconds|section|select|select-options|selection|selection-screen|selection-sets??|selection-table|selections|send|separated??|session|set|shared|shift|shortdump|shortdump-id|sign|simple|simulation|single|size|skip|skipping|smart|some|sort|sortable|sorted|source|specified|split|spool|spots|sql|stable|stamp|standard|start-of-selection|starting|state|statements??|statics??|statusinfo|step|step-loop|stop|structures??|style|subkey|submatches|submit|subroutine|subscreen|substring|subtract|subtract-corresponding|suffix|sum|summary|supplied|supply|suppress|switch|symbol|syntax-check|syntax-trace|system-call|system-exceptions|tab|tabbed|tables??|tableview|tabstrip|target|tasks??|test|test-injection|test-seam|testing|text|textpool|then|throw|times??|title|titlebar|to|tokens|top-lines|top-of-page|trace-file|trace-table|trailing|transaction|transfer|transformation|translate|transporting|trmac|truncate|truncation|type|type-pools??|types|uline|unassign|unbounded|under|unicode|union|unique|unit|unix|unpack|until|unwind|up|update|upper|user|user-command|using|utf-8|uuid|valid|validate|value|value-request|values|vary|varying|version|via|visible|wait|when|where|windows??|with|with-heading|with-title|without|word|work|workspace|write|xml|zone)(?=[,.:\\\\s])","name":"keyword.control.simple.abap"},"operators":{"patterns":[{"include":"#other_operator"},{"include":"#arithmetic_operator"},{"include":"#comparison_operator"},{"include":"#logical_operator"}]},"other_operator":{"match":"(?<=\\\\s)(&&?|\\\\?=|\\\\+=|-=|/=|\\\\*=|&&=|&=)(?=\\\\s)","name":"keyword.control.simple.abap"},"reserved_names":{"match":"(?i)(?<=\\\\s)(me|super)(?=[,.\\\\s]|->)","name":"constant.language.abap"},"sql_functions":{"match":"(?i)(?<=\\\\s)(abap_system_timezone|abap_user_timezone|abs|add_days|add_months|allow_precision_loss|as_geo_json|avg|bintohex|cast|ceil|coalesce|concat_with_space|concat|corr_spearman|corr|count|currency_conversion|datn_add_days|datn_add_months|datn_days_between|dats_add_days|dats_add_months|dats_days_between|dats_from_datn|dats_is_valid|dats_tims_to_tstmp|dats_to_datn|dayname|days_between|dense_rank|division|div|extract_day|extract_hour|extract_minute|extract_month|extract_second|extract_year|first_value|floor|grouping|hextobin|initcap|instr|is_valid|lag|last_value|lead|left|length|like_regexpr|locate_regexpr_after|locate_regexpr|locate|lower|lpad|ltrim|max|median|min|mod|monthname|ntile|occurrences_regexpr|over|product|rank|replace_regexpr|replace|rigth|round|row_number|rpad|rtrim|stddev|string_agg|substring_regexpr|substring|sum|tims_from_timn|tims_is_valid|tims_to_timn|to_blob|to_clob|tstmp_add_seconds|tstmp_current_utctimestamp|tstmp_is_valid|tstmp_seconds_between|tstmp_to_dats|tstmp_to_dst|tstmp_to_tims|tstmpl_from_utcl|tstmpl_to_utcl|unit_conversion|upper|utcl_add_seconds|utcl_current|utcl_seconds_between|uuid|var|weekday)(?=\\\\()","name":"entity.name.function.sql.abap"},"sql_types":{"match":"(?i)(?<=\\\\s)(char|clnt|cuky|curr|datn|dats|dec|decfloat16|decfloat34|fltp|int1|int2|int4|int8|lang|numc|quan|raw|sstring|timn|tims|unit|utclong)(?=[()\\\\s])","name":"entity.name.type.sql.abap"},"system_fields":{"captures":{"1":{"name":"variable.language.abap"},"2":{"name":"variable.language.abap"}},"match":"(?i)\\\\b(sy)-(abcde|batch|binpt|calld|callr|colno|cpage|cprog|cucol|curow|datar|datlo|datum|dayst|dbcnt|dbnam|dbsysc|dyngr|dynnr|fdayw|fdpos|host|index|langu|ldbpg|lilli|linct|linno|linsz|lisel|listi|loopc|lsind|macol|mandt|marow|modno|msgid|msgli|msgno|msgty|msgv[1-4]|opsysc|pagno|pfkey|repid|saprl|scols|slset|spono|srows|staco|staro|stepl|subrc|sysid|tabix|tcode|tfill|timlo|title|tleng|tvar[0-9]|tzone|ucomm|uline|uname|uzeit|vline|wtitl|zonlo)(?=[.\\\\s])"},"text_symbols":{"captures":{"1":{"name":"keyword.control.simple.abap"},"2":{"name":"constant.numeric.abap"}},"match":"(?i)(?<=^|\\\\s)(text)-([0-9A-Z]{1,3})(?=[,.:\\\\s])"}},"scopeName":"source.abap"}')),a=[e];export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-Bd8jn7RZ.js";import{p as f}from"./chunk-JWPE2WC7-CWMqpJoT.js";import{_ as n,l as o}from"./mermaid-GHXKKRXX-C_lUqoOB.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-BsyMhvG0.js";import"./index-BKqZNg1a.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
|