@rynx-ai/server 0.1.11-beta.4 → 0.1.11-beta.41
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-api.d.ts +17 -4
- package/dist/control-api.js +722 -84
- package/dist/control-web/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/control-web/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/control-web/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/control-web/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/control-web/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/control-web/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/control-web/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/control-web/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/control-web/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/control-web/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/control-web/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/control-web/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/control-web/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/control-web/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/control-web/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/control-web/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/control-web/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/control-web/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/control-web/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/control-web/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/control-web/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/control-web/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/control-web/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/control-web/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/control-web/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/control-web/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/control-web/assets/abap-CLvhMVsD.js +1 -0
- package/dist/control-web/assets/abnfDiagram-VRR7QNED-D_NL89dn.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-C9wU1KtW.js +1 -0
- package/dist/control-web/assets/architectureDiagram-ZJ3FMSHR-CV0rxVH6.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-Cc7nrkZh.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-BPRU9m-F.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-BFm2_j8K.js +1 -0
- package/dist/control-web/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
- package/dist/control-web/assets/chunk-32BRIVSS-Bbq3O54m.js +1 -0
- package/dist/control-web/assets/chunk-52WLFC77-sD4al-Ob.js +10 -0
- package/dist/control-web/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
- package/dist/control-web/assets/chunk-7BUUIJ7U-Bb538aSH.js +1 -0
- package/dist/control-web/assets/chunk-C7G6YPKG-DqHaDS1O.js +1 -0
- package/dist/control-web/assets/chunk-EX3LRPZG-36GNQ5wp.js +231 -0
- package/dist/control-web/assets/chunk-HOUHSVGY-DeZ63q1j.js +1 -0
- package/dist/control-web/assets/chunk-ICXQ74PX-D2yF6lD_.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-CdaKyBz5.js +88 -0
- package/dist/control-web/assets/chunk-OGEWGWER-eOXC7kiH.js +1 -0
- package/dist/control-web/assets/chunk-PUDLZKDR-6w0LILL_.js +156 -0
- package/dist/control-web/assets/chunk-Q4XR5HBZ-CXgD5TGL.js +70 -0
- package/dist/control-web/assets/chunk-RYQCIY6F-BsoV8yK2.js +1 -0
- package/dist/control-web/assets/chunk-V7JOEXUC-BfoZ78b6.js +206 -0
- package/dist/control-web/assets/chunk-VR4S4FIN-BW2gCEMQ.js +1 -0
- package/dist/control-web/assets/chunk-WYO6CB5R-CHn7hulw.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-CmFP0-fr.js +62 -0
- package/dist/control-web/assets/clarity-SemFz856.js +1 -0
- package/dist/control-web/assets/classDiagram-OUVF2IWQ-CUe_bETB.js +1 -0
- package/dist/control-web/assets/classDiagram-v2-EOCWNBFH-CUe_bETB.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-NaLr7Qlq.js +1 -0
- package/dist/control-web/assets/cynefinDiagram-TSTJHNR4-C90wpjAI.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-BxrPFWTb.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-VIQINsvz.js +3 -0
- package/dist/control-web/assets/diagram-G47NLZAW-DFeAfYXn.js +24 -0
- package/dist/control-web/assets/diagram-NH7WQ7WH-ATzdppDd.js +24 -0
- package/dist/control-web/assets/diagram-OA4YK3LP-DJZpWmbl.js +30 -0
- package/dist/control-web/assets/diagram-WEI45ONY-CqDHcW3g.js +41 -0
- package/dist/control-web/assets/diff-woXpYk--.js +1 -0
- package/dist/control-web/assets/dist-Dx9YWgcW.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-DnP6dHND.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-Bo8bFqrZ.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-DTN8wqsu.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-BwjqRyvd.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-kxQaBTzd.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-a646NnuJ.js +1 -0
- package/dist/control-web/assets/gitGraphDiagram-IHSO6WYX-BBe0q0At.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-DVCHy9oI.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-D7URT6K_.js +140 -0
- package/dist/control-web/assets/index-uEpvRMX9.css +1 -0
- package/dist/control-web/assets/info-DKCQHKI2-Cp_JrY-b.js +1 -0
- package/dist/control-web/assets/infoDiagram-FWYZ7A6U-CAm-h4F_.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-O17pqcWr.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-DQ-JuSoR.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-Cgv3kPbm.js +89 -0
- package/dist/control-web/assets/katex-CyHG4N6b.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-DUsXzGJZ.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-4N4AcNp5.js +433 -0
- package/dist/control-web/assets/markdown-streamdown-DEcVZfaU.css +1 -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-BElZGKGd.js +1 -0
- package/dist/control-web/assets/mermaid-parser.core-VMln12Kd.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-Bn0lH-UM.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-Zw8iJ8lo.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-CtF7vVs_.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-su_3QGU2.js +1 -0
- package/dist/control-web/assets/pieDiagram-ENE6RG2P-BkMUBLE1.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-ba-VaqMe.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-Dat0rqem.js +1 -0
- package/dist/control-web/assets/railroad-3IZDKUUU-Dh2-s8r8.js +1 -0
- package/dist/control-web/assets/railroad-abnf-AHOZXSZD-CNUwq0JR.js +1 -0
- package/dist/control-web/assets/railroad-ebnf-EBAXGLYW-RHr0duea.js +1 -0
- package/dist/control-web/assets/railroad-peg-LSFZ7HO6-CVBWS2eU.js +1 -0
- package/dist/control-web/assets/railroadDiagram-RFXS5EU6-BiJX3SY-.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-CFfakCzs.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-jgDi0God.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-DBfyyb0N.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-Dwb_ncVi.js +1 -0
- package/dist/control-web/assets/stateDiagram-v2-6OUMAXLB-DI0opaA1.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-DW0LuiIV.js +2 -0
- package/dist/control-web/assets/swimlanesDiagram-G3AALYLV-DDTVjcOR.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-DeX4B_B8.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-D1UXtICj.js +1 -0
- package/dist/control-web/assets/treemap-6X3UGDF4-CrppzjZH.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-BYpf-7VR.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-B9rA0UsV.js +1 -0
- package/dist/control-web/assets/wardleyDiagram-EHGQE667-BdvAUa5F.js +78 -0
- package/dist/control-web/assets/wasm-BnjxR4X6.js +1 -0
- 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-BaEV3pGm.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/control-web-dist.d.ts +1 -1
- package/dist/control-web-dist.js +4 -2
- package/dist/desktop-browser-host.d.ts +3 -1
- package/dist/desktop-browser-host.js +39 -4
- package/dist/direct-runtime-server.js +187 -153
- package/dist/machine-session-service.d.ts +105 -15
- package/dist/machine-session-service.js +781 -87
- package/dist/remote-runtime-dispatcher.d.ts +2 -2
- package/dist/remote-runtime-dispatcher.js +42 -2
- package/dist/remote-runtime-session-projection.d.ts +1 -0
- package/dist/remote-runtime-session-projection.js +12 -0
- package/dist/server.d.ts +64 -11
- package/dist/server.js +422 -55
- package/dist/session-browser-service.d.ts +24 -4
- package/dist/session-browser-service.js +127 -1
- package/dist/session-pending-inputs.d.ts +42 -0
- package/dist/session-pending-inputs.js +87 -0
- package/dist/session-portal.d.ts +54 -0
- package/dist/session-portal.js +997 -0
- package/dist/session-runtime-index.d.ts +3 -6
- package/dist/session-runtime-index.js +96 -38
- 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 +93 -27
- package/package.json +7 -7
- package/dist/control-web/assets/highlighted-body-OFNGDK62-DWWsUtHF.js +0 -1
- package/dist/control-web/assets/index-BnX7NWJX.js +0 -689
- package/dist/control-web/assets/index-CUoWRX2i.css +0 -32
- package/dist/control-web/assets/mermaid-GHXKKRXX-C1fxAgiw.js +0 -131
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createServer, } from "node:http";
|
|
2
2
|
import { decodeDirectRuntimeFrame, DIRECT_RUNTIME_CLOSE_CODE, DIRECT_RUNTIME_BROWSER_INSPECT_PATH, DIRECT_RUNTIME_BROWSER_SURFACE_PATH, DIRECT_RUNTIME_CONTROL_PATH, DIRECT_RUNTIME_MAX_HANDSHAKE_FRAME_BYTES, encodeDirectRuntimeFrame, parseServerAccepted, parseServerHello, } from "@rynx-ai/protocol/direct-runtime";
|
|
3
3
|
import { createServerE2EEChannel, DIRECT_RUNTIME_E2EE_MAX_ENVELOPE_BYTES, } from "@rynx-ai/remote-runtime-e2ee";
|
|
4
|
-
import { encodeRemoteRuntimeSessionEventsFrame, encodeRemoteRuntimeSessionTerminalServerFrame, encodeRemoteRuntimeRpcResponse, parseRemoteRuntimeRpcFrame, parseRemoteRuntimeSessionEventsFrame, parseRemoteRuntimeSessionTerminalClientFrame,
|
|
4
|
+
import { encodeRemoteRuntimeSessionEventsFrame, encodeRemoteRuntimeSessionTerminalServerFrame, encodeRemoteRuntimeRpcResponse, parseRemoteRuntimeRpcFrame, parseRemoteRuntimeSessionEventsFrame, parseRemoteRuntimeSessionTerminalClientFrame, REMOTE_RUNTIME_RPC_MAX_FRAME_BYTES, REMOTE_RUNTIME_RPC_MAX_ID_CHARS, REMOTE_RUNTIME_RPC_METHOD_METADATA, } from "@rynx-ai/protocol/remote-runtime-rpc";
|
|
5
5
|
import { encodeRuntimeEmulatorSurfaceServerFrame, parseRuntimeEmulatorSurfaceClientFrame, RUNTIME_EMULATOR_SURFACE_CHUNK_BYTES, RUNTIME_EMULATOR_SURFACE_MAX_FRAME_BYTES, } from "@rynx-ai/protocol/runtime-emulator-surface";
|
|
6
6
|
import { WebSocket, WebSocketServer } from "ws";
|
|
7
7
|
import { attachDirectRuntimeBrowserSurfaceServer, } from "./direct-runtime-browser-surface-server.js";
|
|
@@ -400,6 +400,9 @@ export async function startDirectRuntimeServer(options) {
|
|
|
400
400
|
return;
|
|
401
401
|
}
|
|
402
402
|
if (frame.type === "session.terminal.open" ||
|
|
403
|
+
frame.type === "session.terminal.seed.read" ||
|
|
404
|
+
frame.type === "session.terminal.start" ||
|
|
405
|
+
frame.type === "session.terminal.read" ||
|
|
403
406
|
frame.type === "session.terminal.input" ||
|
|
404
407
|
frame.type === "session.terminal.resize" ||
|
|
405
408
|
frame.type === "session.terminal.close") {
|
|
@@ -1032,66 +1035,153 @@ export async function startDirectRuntimeServer(options) {
|
|
|
1032
1035
|
}
|
|
1033
1036
|
const terminal = connection.terminal;
|
|
1034
1037
|
if (terminal?.attachmentId === frame.attachmentId) {
|
|
1035
|
-
finishTerminal(connection, terminal, "client_closed"
|
|
1038
|
+
finishTerminal(connection, terminal, "client_closed");
|
|
1036
1039
|
}
|
|
1037
1040
|
else if (!connection.seenTerminalAttachmentIds.has(frame.attachmentId)) {
|
|
1038
1041
|
connection.close(CLOSE_BAD_PROTOCOL, "Remote Session terminal attachment id is unknown");
|
|
1039
1042
|
}
|
|
1040
1043
|
return;
|
|
1041
1044
|
}
|
|
1042
|
-
if (frame.type === "session.terminal.
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1045
|
+
if (frame.type === "session.terminal.open") {
|
|
1046
|
+
await openTerminal(connection, frame, peer);
|
|
1047
|
+
return;
|
|
1048
|
+
}
|
|
1049
|
+
const terminal = connection.terminal;
|
|
1050
|
+
if (!terminal || terminal.attachmentId !== frame.attachmentId || terminal.finishing) {
|
|
1051
|
+
connection.close(CLOSE_BAD_PROTOCOL, "Remote Session terminal attachment is not active");
|
|
1052
|
+
return;
|
|
1053
|
+
}
|
|
1054
|
+
if (terminal.seenRequestIds.has(frame.requestId)) {
|
|
1055
|
+
connection.close(CLOSE_BAD_PROTOCOL, "Remote Session terminal request id was already used");
|
|
1056
|
+
return;
|
|
1057
|
+
}
|
|
1058
|
+
if (terminal.seenRequestIds.size >= limits.maxRequestIds) {
|
|
1059
|
+
connection.close(CLOSE_CAPACITY, "Direct Runtime terminal request id capacity reached");
|
|
1060
|
+
return;
|
|
1061
|
+
}
|
|
1062
|
+
terminal.seenRequestIds.add(frame.requestId);
|
|
1063
|
+
let active = false;
|
|
1064
|
+
try {
|
|
1065
|
+
active = await options.isPeerActive(peer);
|
|
1066
|
+
}
|
|
1067
|
+
catch (error) {
|
|
1068
|
+
options.onError?.(error, "Direct Runtime terminal peer activity check");
|
|
1069
|
+
}
|
|
1070
|
+
if (!active) {
|
|
1071
|
+
finishTerminal(connection, terminal, "unauthorized");
|
|
1072
|
+
connection.close(CLOSE_UNAUTHORIZED, "Remote Runtime grant is not active");
|
|
1073
|
+
return;
|
|
1074
|
+
}
|
|
1075
|
+
if (frame.type === "session.terminal.seed.read" || frame.type === "session.terminal.read") {
|
|
1076
|
+
const kind = frame.type === "session.terminal.seed.read" ? "seed" : "live";
|
|
1077
|
+
if (terminal.pendingPull ||
|
|
1078
|
+
(kind === "seed" && terminal.phase !== "prepared") ||
|
|
1079
|
+
(kind === "live" && terminal.phase !== "started")) {
|
|
1080
|
+
connection.close(CLOSE_BAD_PROTOCOL, "Remote Session terminal pull is out of order");
|
|
1046
1081
|
return;
|
|
1047
1082
|
}
|
|
1048
|
-
|
|
1049
|
-
|
|
1083
|
+
terminal.pendingPull = { requestId: frame.requestId, kind };
|
|
1084
|
+
const reading = kind === "seed"
|
|
1085
|
+
? terminal.attachment.readSeed(frame.offset, frame.maxBytes)
|
|
1086
|
+
: terminal.attachment.read(frame.offset, frame.maxBytes);
|
|
1087
|
+
void reading.then(async (result) => {
|
|
1088
|
+
if (terminal.finishing || terminal.pendingPull?.requestId !== frame.requestId)
|
|
1050
1089
|
return;
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
if (frame.type === "session.terminal.input") {
|
|
1065
|
-
if (terminal.attachment.role === "owner") {
|
|
1066
|
-
await terminal.attachment.write(Uint8Array.from(Buffer.from(frame.data, "base64")));
|
|
1067
|
-
}
|
|
1068
|
-
}
|
|
1069
|
-
else {
|
|
1070
|
-
await terminal.attachment.resize(frame.cols, frame.rows);
|
|
1071
|
-
}
|
|
1072
|
-
}
|
|
1073
|
-
catch (error) {
|
|
1074
|
-
options.onError?.(error, "Remote Session terminal control");
|
|
1075
|
-
finishTerminal(connection, terminal, "internal", "Remote Session terminal control failed", true);
|
|
1076
|
-
}
|
|
1090
|
+
terminal.pendingPull = undefined;
|
|
1091
|
+
await sendText(connection, encodeRemoteRuntimeSessionTerminalServerFrame({
|
|
1092
|
+
type: kind === "seed" ? "session.terminal.seed.chunk" : "session.terminal.chunk",
|
|
1093
|
+
attachmentId: terminal.attachmentId,
|
|
1094
|
+
requestId: frame.requestId,
|
|
1095
|
+
data: Buffer.from(result.data).toString("base64"),
|
|
1096
|
+
nextOffset: result.nextOffset,
|
|
1097
|
+
done: result.done,
|
|
1098
|
+
...(result.finalOffset === undefined ? {} : { finalOffset: result.finalOffset }),
|
|
1099
|
+
}), limits.maxBufferedBytes);
|
|
1100
|
+
}).catch((error) => {
|
|
1101
|
+
options.onError?.(error, "Remote Session terminal pull");
|
|
1102
|
+
finishTerminal(connection, terminal, "internal", "Remote Session terminal pull failed");
|
|
1077
1103
|
});
|
|
1078
|
-
terminal.controlTail = control.catch(() => undefined);
|
|
1079
|
-
await control;
|
|
1080
1104
|
return;
|
|
1081
1105
|
}
|
|
1106
|
+
if (frame.type === "session.terminal.start") {
|
|
1107
|
+
if (terminal.phase !== "prepared") {
|
|
1108
|
+
connection.close(CLOSE_BAD_PROTOCOL, "Remote Session terminal start is out of order");
|
|
1109
|
+
return;
|
|
1110
|
+
}
|
|
1111
|
+
terminal.phase = "starting";
|
|
1112
|
+
try {
|
|
1113
|
+
await terminal.attachment.start();
|
|
1114
|
+
terminal.phase = "started";
|
|
1115
|
+
await sendText(connection, encodeRemoteRuntimeSessionTerminalServerFrame({
|
|
1116
|
+
type: "session.terminal.started",
|
|
1117
|
+
attachmentId: terminal.attachmentId,
|
|
1118
|
+
requestId: frame.requestId,
|
|
1119
|
+
}), limits.maxBufferedBytes);
|
|
1120
|
+
void terminal.attachment.closed.then(async (closed) => {
|
|
1121
|
+
if (terminal.finishing)
|
|
1122
|
+
return;
|
|
1123
|
+
await sendText(connection, encodeRemoteRuntimeSessionTerminalServerFrame({
|
|
1124
|
+
type: "session.terminal.reader.done",
|
|
1125
|
+
attachmentId: terminal.attachmentId,
|
|
1126
|
+
finalOffset: closed.finalOffset ?? 0,
|
|
1127
|
+
reason: closed.reason === "terminal_exited" ||
|
|
1128
|
+
closed.reason === "client_closed" ||
|
|
1129
|
+
closed.reason === "backpressure"
|
|
1130
|
+
? closed.reason
|
|
1131
|
+
: "internal",
|
|
1132
|
+
exitCode: closed.exitCode ?? 0,
|
|
1133
|
+
}), limits.maxBufferedBytes);
|
|
1134
|
+
}).catch((error) => {
|
|
1135
|
+
options.onError?.(error, "Remote Session terminal reader completion");
|
|
1136
|
+
finishTerminal(connection, terminal, "internal");
|
|
1137
|
+
});
|
|
1138
|
+
}
|
|
1139
|
+
catch (error) {
|
|
1140
|
+
options.onError?.(error, "Remote Session terminal start");
|
|
1141
|
+
finishTerminal(connection, terminal, "internal", "Remote Session terminal start failed");
|
|
1142
|
+
}
|
|
1143
|
+
return;
|
|
1144
|
+
}
|
|
1145
|
+
if (terminal.phase !== "started") {
|
|
1146
|
+
connection.close(CLOSE_BAD_PROTOCOL, "Remote Session terminal control is not writable");
|
|
1147
|
+
return;
|
|
1148
|
+
}
|
|
1149
|
+
const control = terminal.controlTail.then(async () => {
|
|
1150
|
+
if (terminal.finishing)
|
|
1151
|
+
return;
|
|
1152
|
+
if (frame.type === "session.terminal.input") {
|
|
1153
|
+
if (terminal.attachment.role === "owner") {
|
|
1154
|
+
await terminal.attachment.write(Uint8Array.from(Buffer.from(frame.data, "base64")));
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
else {
|
|
1158
|
+
await terminal.attachment.resize(frame.cols, frame.rows);
|
|
1159
|
+
}
|
|
1160
|
+
await sendText(connection, encodeRemoteRuntimeSessionTerminalServerFrame({
|
|
1161
|
+
type: frame.type === "session.terminal.input"
|
|
1162
|
+
? "session.terminal.input.ack"
|
|
1163
|
+
: "session.terminal.resize.ack",
|
|
1164
|
+
attachmentId: terminal.attachmentId,
|
|
1165
|
+
requestId: frame.requestId,
|
|
1166
|
+
}), limits.maxBufferedBytes);
|
|
1167
|
+
});
|
|
1168
|
+
terminal.controlTail = control.catch(() => undefined);
|
|
1169
|
+
await control.catch((error) => {
|
|
1170
|
+
options.onError?.(error, "Remote Session terminal control");
|
|
1171
|
+
finishTerminal(connection, terminal, "internal", "Remote Session terminal control failed");
|
|
1172
|
+
});
|
|
1173
|
+
}
|
|
1174
|
+
async function openTerminal(connection, frame, peer) {
|
|
1082
1175
|
let admissionFailure;
|
|
1083
1176
|
let pending;
|
|
1084
|
-
if (connection.seenTerminalAttachmentIds.has(frame.attachmentId))
|
|
1177
|
+
if (connection.seenTerminalAttachmentIds.has(frame.attachmentId))
|
|
1085
1178
|
admissionFailure = "duplicate";
|
|
1086
|
-
|
|
1087
|
-
else if (connection.seenTerminalAttachmentIds.size >= limits.maxRequestIds) {
|
|
1179
|
+
else if (connection.seenTerminalAttachmentIds.size >= limits.maxRequestIds)
|
|
1088
1180
|
admissionFailure = "id_capacity";
|
|
1089
|
-
}
|
|
1090
1181
|
else {
|
|
1091
1182
|
connection.seenTerminalAttachmentIds.add(frame.attachmentId);
|
|
1092
|
-
if (connection.pendingTerminal || connection.terminal)
|
|
1183
|
+
if (connection.pendingTerminal || connection.terminal)
|
|
1093
1184
|
admissionFailure = "attachment_capacity";
|
|
1094
|
-
}
|
|
1095
1185
|
else {
|
|
1096
1186
|
pending = {
|
|
1097
1187
|
attachmentId: frame.attachmentId,
|
|
@@ -1100,32 +1190,9 @@ export async function startDirectRuntimeServer(options) {
|
|
|
1100
1190
|
cancelRequested: false,
|
|
1101
1191
|
closeFrameClaimed: false,
|
|
1102
1192
|
};
|
|
1103
|
-
// Reserve the id before awaiting peer status or application open. A
|
|
1104
|
-
// following close can now tombstone this pending attach and abort it.
|
|
1105
1193
|
connection.pendingTerminal = pending;
|
|
1106
1194
|
}
|
|
1107
1195
|
}
|
|
1108
|
-
let active = false;
|
|
1109
|
-
try {
|
|
1110
|
-
active = await options.isPeerActive(peer);
|
|
1111
|
-
}
|
|
1112
|
-
catch (error) {
|
|
1113
|
-
options.onError?.(error, "Direct Runtime terminal peer activity check");
|
|
1114
|
-
}
|
|
1115
|
-
if (!active) {
|
|
1116
|
-
if (pending) {
|
|
1117
|
-
connection.pendingTerminal = undefined;
|
|
1118
|
-
pending.cancelRequested = true;
|
|
1119
|
-
pending.abortController.abort(new Error("Remote Runtime grant is not active"));
|
|
1120
|
-
}
|
|
1121
|
-
if (!pending?.closeFrameClaimed) {
|
|
1122
|
-
if (pending)
|
|
1123
|
-
pending.closeFrameClaimed = true;
|
|
1124
|
-
await sendTerminalClosed(connection, frame.attachmentId, "unauthorized");
|
|
1125
|
-
}
|
|
1126
|
-
connection.close(CLOSE_UNAUTHORIZED, "Remote Runtime grant is not active");
|
|
1127
|
-
return;
|
|
1128
|
-
}
|
|
1129
1196
|
if (admissionFailure === "duplicate") {
|
|
1130
1197
|
await sendTerminalClosed(connection, frame.attachmentId, "capacity", "Remote Session terminal attachment id was already used");
|
|
1131
1198
|
return;
|
|
@@ -1135,13 +1202,28 @@ export async function startDirectRuntimeServer(options) {
|
|
|
1135
1202
|
return;
|
|
1136
1203
|
}
|
|
1137
1204
|
if (admissionFailure === "attachment_capacity") {
|
|
1138
|
-
await sendTerminalClosed(connection, frame.attachmentId, "capacity", "Direct Runtime
|
|
1205
|
+
await sendTerminalClosed(connection, frame.attachmentId, "capacity", "Direct Runtime admits one Session terminal per connection");
|
|
1139
1206
|
return;
|
|
1140
1207
|
}
|
|
1141
1208
|
if (!pending) {
|
|
1142
1209
|
connection.close(CLOSE_INTERNAL, "Remote Session pending terminal is unavailable");
|
|
1143
1210
|
return;
|
|
1144
1211
|
}
|
|
1212
|
+
let active = false;
|
|
1213
|
+
try {
|
|
1214
|
+
active = await options.isPeerActive(peer);
|
|
1215
|
+
}
|
|
1216
|
+
catch (error) {
|
|
1217
|
+
options.onError?.(error, "Direct Runtime terminal peer activity check");
|
|
1218
|
+
}
|
|
1219
|
+
if (!active) {
|
|
1220
|
+
connection.pendingTerminal = undefined;
|
|
1221
|
+
pending.cancelRequested = true;
|
|
1222
|
+
pending.abortController.abort(new Error("Remote Runtime grant is not active"));
|
|
1223
|
+
await sendTerminalClosed(connection, frame.attachmentId, "unauthorized");
|
|
1224
|
+
connection.close(CLOSE_UNAUTHORIZED, "Remote Runtime grant is not active");
|
|
1225
|
+
return;
|
|
1226
|
+
}
|
|
1145
1227
|
let opened;
|
|
1146
1228
|
try {
|
|
1147
1229
|
opened = await options.dispatcher.openSessionTerminal(frame.sessionId, { role: frame.role, cols: frame.cols, rows: frame.rows }, { subject: peer.subject, signal: pending.abortController.signal });
|
|
@@ -1160,14 +1242,10 @@ export async function startDirectRuntimeServer(options) {
|
|
|
1160
1242
|
await sendTerminalClosed(connection, frame.attachmentId, remoteTerminalOpenCloseReason(error));
|
|
1161
1243
|
return;
|
|
1162
1244
|
}
|
|
1163
|
-
if (pending.cancelRequested ||
|
|
1164
|
-
isConnectionClosed(connection) ||
|
|
1165
|
-
connection.pendingTerminal !== pending) {
|
|
1245
|
+
if (pending.cancelRequested || isConnectionClosed(connection) || connection.pendingTerminal !== pending) {
|
|
1166
1246
|
if (connection.pendingTerminal === pending)
|
|
1167
1247
|
connection.pendingTerminal = undefined;
|
|
1168
|
-
await opened.close().catch((
|
|
1169
|
-
options.onError?.(error, "Remote Session late terminal detach");
|
|
1170
|
-
});
|
|
1248
|
+
await opened.close().catch(() => undefined);
|
|
1171
1249
|
if (!pending.closeFrameClaimed && !isConnectionClosed(connection)) {
|
|
1172
1250
|
pending.closeFrameClaimed = true;
|
|
1173
1251
|
await sendTerminalClosed(connection, frame.attachmentId, "client_closed");
|
|
@@ -1184,86 +1262,40 @@ export async function startDirectRuntimeServer(options) {
|
|
|
1184
1262
|
attachmentId: frame.attachmentId,
|
|
1185
1263
|
sessionId: frame.sessionId,
|
|
1186
1264
|
attachment: opened,
|
|
1187
|
-
|
|
1265
|
+
seenRequestIds: new Set(),
|
|
1266
|
+
phase: "prepared",
|
|
1188
1267
|
controlTail: Promise.resolve(),
|
|
1189
1268
|
finishing: false,
|
|
1190
1269
|
};
|
|
1191
1270
|
connection.pendingTerminal = undefined;
|
|
1192
1271
|
connection.terminal = terminal;
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
try {
|
|
1197
|
-
await sendText(connection, encodeRemoteRuntimeSessionTerminalServerFrame({
|
|
1198
|
-
type: "session.terminal.opened",
|
|
1199
|
-
attachmentId: terminal.attachmentId,
|
|
1200
|
-
sessionId: terminal.sessionId,
|
|
1201
|
-
role: opened.role,
|
|
1202
|
-
}), limits.maxBufferedBytes);
|
|
1203
|
-
void writeTerminalOutput(connection, terminal);
|
|
1204
|
-
}
|
|
1205
|
-
catch (error) {
|
|
1206
|
-
finishTerminal(connection, terminal, undefined, undefined, true);
|
|
1207
|
-
throw error;
|
|
1208
|
-
}
|
|
1209
|
-
}
|
|
1210
|
-
async function readTerminalOutput(connection, terminal) {
|
|
1211
|
-
try {
|
|
1212
|
-
for await (const data of terminal.attachment) {
|
|
1213
|
-
if (terminal.finishing)
|
|
1214
|
-
return;
|
|
1215
|
-
for (let offset = 0; offset < data.byteLength; offset += REMOTE_RUNTIME_SESSION_TERMINAL_MAX_DATA_BYTES) {
|
|
1216
|
-
const chunk = data.subarray(offset, Math.min(offset + REMOTE_RUNTIME_SESSION_TERMINAL_MAX_DATA_BYTES, data.byteLength));
|
|
1217
|
-
if (chunk.byteLength === 0)
|
|
1218
|
-
continue;
|
|
1219
|
-
const encoded = encodeRemoteRuntimeSessionTerminalServerFrame({
|
|
1220
|
-
type: "session.terminal.output",
|
|
1221
|
-
attachmentId: terminal.attachmentId,
|
|
1222
|
-
data: Buffer.from(chunk).toString("base64"),
|
|
1223
|
-
});
|
|
1224
|
-
if (!terminal.output.push(encoded)) {
|
|
1225
|
-
finishTerminal(connection, terminal, "backpressure", "Remote Session terminal consumer is too slow", true);
|
|
1226
|
-
return;
|
|
1227
|
-
}
|
|
1228
|
-
}
|
|
1229
|
-
}
|
|
1230
|
-
if (terminal.finishing)
|
|
1272
|
+
let lastDimensions = opened.dimensions;
|
|
1273
|
+
opened.onResize?.(({ cols, rows }) => {
|
|
1274
|
+
if (terminal.finishing || terminal.phase !== "started")
|
|
1231
1275
|
return;
|
|
1232
|
-
|
|
1233
|
-
const reason = closed.reason === "terminal_exited"
|
|
1234
|
-
? "terminal_exited"
|
|
1235
|
-
: closed.reason === "backpressure"
|
|
1236
|
-
? "backpressure"
|
|
1237
|
-
: "internal";
|
|
1238
|
-
finishTerminal(connection, terminal, reason, undefined, reason !== "terminal_exited", closed.exitCode);
|
|
1239
|
-
}
|
|
1240
|
-
catch (error) {
|
|
1241
|
-
if (terminal.finishing)
|
|
1276
|
+
if (lastDimensions?.cols === cols && lastDimensions.rows === rows)
|
|
1242
1277
|
return;
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
}
|
|
1261
|
-
}
|
|
1262
|
-
finally {
|
|
1263
|
-
finishTerminal(connection, terminal, undefined, undefined, true);
|
|
1264
|
-
}
|
|
1278
|
+
lastDimensions = { cols, rows };
|
|
1279
|
+
void sendText(connection, encodeRemoteRuntimeSessionTerminalServerFrame({
|
|
1280
|
+
type: "session.terminal.dimensions",
|
|
1281
|
+
attachmentId: terminal.attachmentId,
|
|
1282
|
+
cols,
|
|
1283
|
+
rows,
|
|
1284
|
+
}), limits.maxBufferedBytes).catch((error) => {
|
|
1285
|
+
options.onError?.(error, "Remote Session terminal dimensions");
|
|
1286
|
+
finishTerminal(connection, terminal, "internal");
|
|
1287
|
+
});
|
|
1288
|
+
});
|
|
1289
|
+
await sendText(connection, encodeRemoteRuntimeSessionTerminalServerFrame({
|
|
1290
|
+
type: "session.terminal.prepared",
|
|
1291
|
+
attachmentId: terminal.attachmentId,
|
|
1292
|
+
sessionId: terminal.sessionId,
|
|
1293
|
+
role: opened.role,
|
|
1294
|
+
seedBytes: opened.seedBytes,
|
|
1295
|
+
...(opened.dimensions ?? {}),
|
|
1296
|
+
}), limits.maxBufferedBytes);
|
|
1265
1297
|
}
|
|
1266
|
-
function finishTerminal(connection, terminal, reason, message,
|
|
1298
|
+
function finishTerminal(connection, terminal, reason, message, exitCode) {
|
|
1267
1299
|
if (terminal.finishing)
|
|
1268
1300
|
return;
|
|
1269
1301
|
terminal.finishing = true;
|
|
@@ -1272,19 +1304,17 @@ export async function startDirectRuntimeServer(options) {
|
|
|
1272
1304
|
void terminal.attachment.close().catch((error) => {
|
|
1273
1305
|
options.onError?.(error, "Remote Session terminal detach");
|
|
1274
1306
|
});
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
: encodeRemoteRuntimeSessionTerminalServerFrame({
|
|
1307
|
+
if (reason !== undefined && !isConnectionClosed(connection)) {
|
|
1308
|
+
void sendText(connection, encodeRemoteRuntimeSessionTerminalServerFrame({
|
|
1278
1309
|
type: "session.terminal.closed",
|
|
1279
1310
|
attachmentId: terminal.attachmentId,
|
|
1280
1311
|
reason,
|
|
1281
1312
|
...(exitCode === undefined ? {} : { exitCode }),
|
|
1282
1313
|
...(message === undefined ? {} : { message }),
|
|
1314
|
+
}), limits.maxBufferedBytes).catch((error) => {
|
|
1315
|
+
options.onError?.(error, "Remote Session terminal close delivery");
|
|
1283
1316
|
});
|
|
1284
|
-
|
|
1285
|
-
terminal.output.replaceAndFinish(finalFrame);
|
|
1286
|
-
else
|
|
1287
|
-
terminal.output.finish(finalFrame);
|
|
1317
|
+
}
|
|
1288
1318
|
}
|
|
1289
1319
|
async function sendTerminalClosed(connection, attachmentId, reason, message) {
|
|
1290
1320
|
await sendText(connection, encodeRemoteRuntimeSessionTerminalServerFrame({
|
|
@@ -1336,6 +1366,7 @@ export async function startDirectRuntimeServer(options) {
|
|
|
1336
1366
|
const accepted = parseServerAccepted(result.accepted);
|
|
1337
1367
|
assertAuthenticationResult(serverHello, authenticate, result.peer, accepted);
|
|
1338
1368
|
connection.peer = result.peer;
|
|
1369
|
+
connection.coreProtocolVersion = accepted.coreProtocolVersion;
|
|
1339
1370
|
const registration = connectionHub.registerWithinLimit(result.peer.grantId, connection, limits.maxConnectionsPerGrant);
|
|
1340
1371
|
if (registration === "revoked") {
|
|
1341
1372
|
connection.close(CLOSE_UNAUTHORIZED, "Remote Runtime grant is not active");
|
|
@@ -1385,7 +1416,7 @@ export async function startDirectRuntimeServer(options) {
|
|
|
1385
1416
|
connection.pendingTerminal = undefined;
|
|
1386
1417
|
}
|
|
1387
1418
|
if (connection.terminal) {
|
|
1388
|
-
finishTerminal(connection, connection.terminal, undefined
|
|
1419
|
+
finishTerminal(connection, connection.terminal, undefined);
|
|
1389
1420
|
}
|
|
1390
1421
|
finalizeConnectionEmulatorSurface(connection, reason);
|
|
1391
1422
|
if (connection.ws.readyState === WebSocket.OPEN) {
|
|
@@ -1422,7 +1453,7 @@ export async function startDirectRuntimeServer(options) {
|
|
|
1422
1453
|
connection.pendingTerminal = undefined;
|
|
1423
1454
|
}
|
|
1424
1455
|
if (connection.terminal) {
|
|
1425
|
-
finishTerminal(connection, connection.terminal, undefined
|
|
1456
|
+
finishTerminal(connection, connection.terminal, undefined);
|
|
1426
1457
|
}
|
|
1427
1458
|
finalizeConnectionEmulatorSurface(connection, "Direct Runtime connection closed");
|
|
1428
1459
|
releaseUnauthenticatedConnection(connection);
|
|
@@ -1559,6 +1590,9 @@ function parseAuthenticatedClientFrame(bytes) {
|
|
|
1559
1590
|
return frame;
|
|
1560
1591
|
}
|
|
1561
1592
|
if (type === "session.terminal.open" ||
|
|
1593
|
+
type === "session.terminal.seed.read" ||
|
|
1594
|
+
type === "session.terminal.start" ||
|
|
1595
|
+
type === "session.terminal.read" ||
|
|
1562
1596
|
type === "session.terminal.input" ||
|
|
1563
1597
|
type === "session.terminal.resize" ||
|
|
1564
1598
|
type === "session.terminal.close") {
|