@rynx-ai/server 0.1.11-beta.24 → 0.1.11-beta.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/dist/control-api.js +492 -69
  2. package/dist/control-web/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  3. package/dist/control-web/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  4. package/dist/control-web/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  5. package/dist/control-web/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  6. package/dist/control-web/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  7. package/dist/control-web/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  8. package/dist/control-web/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  9. package/dist/control-web/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  10. package/dist/control-web/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  11. package/dist/control-web/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  12. package/dist/control-web/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  13. package/dist/control-web/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  14. package/dist/control-web/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  15. package/dist/control-web/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  16. package/dist/control-web/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  17. package/dist/control-web/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  18. package/dist/control-web/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  19. package/dist/control-web/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  20. package/dist/control-web/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  21. package/dist/control-web/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  22. package/dist/control-web/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  23. package/dist/control-web/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  24. package/dist/control-web/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  25. package/dist/control-web/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  26. package/dist/control-web/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  27. package/dist/control-web/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  28. package/dist/control-web/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  29. package/dist/control-web/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  30. package/dist/control-web/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  31. package/dist/control-web/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  32. package/dist/control-web/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  33. package/dist/control-web/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  34. package/dist/control-web/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  35. package/dist/control-web/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  36. package/dist/control-web/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  37. package/dist/control-web/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  38. package/dist/control-web/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  39. package/dist/control-web/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  40. package/dist/control-web/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  41. package/dist/control-web/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  42. package/dist/control-web/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  43. package/dist/control-web/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  44. package/dist/control-web/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  45. package/dist/control-web/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  46. package/dist/control-web/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  47. package/dist/control-web/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  48. package/dist/control-web/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  49. package/dist/control-web/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  50. package/dist/control-web/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  51. package/dist/control-web/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  52. package/dist/control-web/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  53. package/dist/control-web/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  54. package/dist/control-web/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  55. package/dist/control-web/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  56. package/dist/control-web/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  57. package/dist/control-web/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  58. package/dist/control-web/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  59. package/dist/control-web/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  60. package/dist/control-web/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  61. package/dist/control-web/assets/abap-BdImnpbu.js +1 -0
  62. package/dist/control-web/assets/abnfDiagram-VRR7QNED-COu02MlJ.js +1 -0
  63. package/dist/control-web/assets/actionscript-3-CoDkCxhg.js +1 -0
  64. package/dist/control-web/assets/ada-bCR0ucgS.js +1 -0
  65. package/dist/control-web/assets/andromeeda-C4gqWexZ.js +1 -0
  66. package/dist/control-web/assets/angular-html-CU67Zn6k.js +1 -0
  67. package/dist/control-web/assets/angular-ts-BwZT4LLn.js +1 -0
  68. package/dist/control-web/assets/apache-Pmp26Uib.js +1 -0
  69. package/dist/control-web/assets/apex-D8_7TLub.js +1 -0
  70. package/dist/control-web/assets/apl-dKokRX4l.js +1 -0
  71. package/dist/control-web/assets/applescript-Co6uUVPk.js +1 -0
  72. package/dist/control-web/assets/ara-BRHolxvo.js +1 -0
  73. package/dist/control-web/assets/arc-DqiFeYAM.js +1 -0
  74. package/dist/control-web/assets/architectureDiagram-ZJ3FMSHR-BWFGgUV4.js +36 -0
  75. package/dist/control-web/assets/asciidoc-Ve4PFQV2.js +1 -0
  76. package/dist/control-web/assets/asm-D_Q5rh1f.js +1 -0
  77. package/dist/control-web/assets/astro-CbQHKStN.js +1 -0
  78. package/dist/control-web/assets/aurora-x-D-2ljcwZ.js +1 -0
  79. package/dist/control-web/assets/awk-DMzUqQB5.js +1 -0
  80. package/dist/control-web/assets/ayu-dark-DYE7WIF3.js +1 -0
  81. package/dist/control-web/assets/ayu-light-BA47KaF1.js +1 -0
  82. package/dist/control-web/assets/ayu-mirage-32ctXXKs.js +1 -0
  83. package/dist/control-web/assets/ballerina-BFfxhgS-.js +1 -0
  84. package/dist/control-web/assets/bat-BkioyH1T.js +1 -0
  85. package/dist/control-web/assets/beancount-k_qm7-4y.js +1 -0
  86. package/dist/control-web/assets/berry-uYugtg8r.js +1 -0
  87. package/dist/control-web/assets/bibtex-CHM0blh-.js +1 -0
  88. package/dist/control-web/assets/bicep-Bmn6On1c.js +1 -0
  89. package/dist/control-web/assets/bird2-DPOp833l.js +1 -0
  90. package/dist/control-web/assets/blade-D4QpJJKB.js +1 -0
  91. package/dist/control-web/assets/blockDiagram-677ZJIJ3-ZC0bXDzB.js +132 -0
  92. package/dist/control-web/assets/bsl-BO_Y6i37.js +1 -0
  93. package/dist/control-web/assets/c-BIGW1oBm.js +1 -0
  94. package/dist/control-web/assets/c3-eo99z4R2.js +1 -0
  95. package/dist/control-web/assets/c4Diagram-LMCZKHZV-Uupq5I-s.js +10 -0
  96. package/dist/control-web/assets/cadence-Bv_4Rxtq.js +1 -0
  97. package/dist/control-web/assets/cairo-KRGpt6FW.js +1 -0
  98. package/dist/control-web/assets/catppuccin-frappe-DFWUc33u.js +1 -0
  99. package/dist/control-web/assets/catppuccin-latte-C9dUb6Cb.js +1 -0
  100. package/dist/control-web/assets/catppuccin-macchiato-DQyhUUbL.js +1 -0
  101. package/dist/control-web/assets/catppuccin-mocha-D87Tk5Gz.js +1 -0
  102. package/dist/control-web/assets/channel-3HG15wfa.js +1 -0
  103. package/dist/control-web/assets/chunk-2Q5K7J3B-C77vwuDM.js +1 -0
  104. package/dist/control-web/assets/chunk-32BRIVSS-BkfLE_TX.js +1 -0
  105. package/dist/control-web/assets/chunk-5VM5RSS4-By6zfDWW.js +15 -0
  106. package/dist/control-web/assets/chunk-EX3LRPZG-CO439p_3.js +231 -0
  107. package/dist/control-web/assets/chunk-JWPE2WC7-B9BPEwug.js +1 -0
  108. package/dist/control-web/assets/chunk-MOJQB5TN-CYKygWZz.js +88 -0
  109. package/dist/control-web/assets/chunk-RYQCIY6F-ug-An4HG.js +1 -0
  110. package/dist/control-web/assets/chunk-V7JOEXUC-3UFQGnKX.js +206 -0
  111. package/dist/control-web/assets/chunk-VR4S4FIN-DjspjYUb.js +1 -0
  112. package/dist/control-web/assets/chunk-XXDRQBXY-3znnutie.js +1 -0
  113. package/dist/control-web/assets/clarity-D53aC0YG.js +1 -0
  114. package/dist/control-web/assets/classDiagram-OUVF2IWQ-WmU4L9YT.js +1 -0
  115. package/dist/control-web/assets/classDiagram-v2-EOCWNBFH-WmU4L9YT.js +1 -0
  116. package/dist/control-web/assets/clojure-P80f7IUj.js +1 -0
  117. package/dist/control-web/assets/cmake-D1j8_8rp.js +1 -0
  118. package/dist/control-web/assets/cobol-nwyudZeR.js +1 -0
  119. package/dist/control-web/assets/codeowners-Bp6g37R7.js +1 -0
  120. package/dist/control-web/assets/codeql-DsOJ9woJ.js +1 -0
  121. package/dist/control-web/assets/coffee-Ch7k5sss.js +1 -0
  122. package/dist/control-web/assets/common-lisp-Cg-RD9OK.js +1 -0
  123. package/dist/control-web/assets/coq-DkFqJrB1.js +1 -0
  124. package/dist/control-web/assets/cose-bilkent-JH36ORCC-Dr28goCd.js +1 -0
  125. package/dist/control-web/assets/cpp-CofmeUqb.js +1 -0
  126. package/dist/control-web/assets/crystal-tKQVLTB8.js +1 -0
  127. package/dist/control-web/assets/csharp-COcwbKMJ.js +1 -0
  128. package/dist/control-web/assets/css-DPfMkruS.js +1 -0
  129. package/dist/control-web/assets/csv-fuZLfV_i.js +1 -0
  130. package/dist/control-web/assets/cue-D82EKSYY.js +1 -0
  131. package/dist/control-web/assets/cynefin-VYW2F7L2-Be5uJhnw.js +178 -0
  132. package/dist/control-web/assets/cynefinDiagram-TSTJHNR4-BLxtSvL6.js +62 -0
  133. package/dist/control-web/assets/cypher-COkxafJQ.js +1 -0
  134. package/dist/control-web/assets/cytoscape.esm-DTSO7Bv0.js +331 -0
  135. package/dist/control-web/assets/d-85-TOEBH.js +1 -0
  136. package/dist/control-web/assets/dagre-VKFMJZFB-DPRuDV5p.js +4 -0
  137. package/dist/control-web/assets/dark-plus-C3mMm8J8.js +1 -0
  138. package/dist/control-web/assets/dart-CF10PKvl.js +1 -0
  139. package/dist/control-web/assets/dax-CEL-wOlO.js +1 -0
  140. package/dist/control-web/assets/defaultLocale-DX6XiGOO.js +1 -0
  141. package/dist/control-web/assets/desktop-BmXAJ9_W.js +1 -0
  142. package/dist/control-web/assets/diagram-FQU43EPY-Cybg22U0.js +3 -0
  143. package/dist/control-web/assets/diagram-G47NLZAW-CGeIKUfW.js +24 -0
  144. package/dist/control-web/assets/diagram-NH7WQ7WH-BJq5MBRm.js +24 -0
  145. package/dist/control-web/assets/diagram-OA4YK3LP-DquOQGwg.js +30 -0
  146. package/dist/control-web/assets/diagram-WEI45ONY-Cblb4xP2.js +41 -0
  147. package/dist/control-web/assets/diff-D97Zzqfu.js +1 -0
  148. package/dist/control-web/assets/docker-BcOcwvcX.js +1 -0
  149. package/dist/control-web/assets/dotenv-Da5cRb03.js +1 -0
  150. package/dist/control-web/assets/dracula-BzJJZx-M.js +1 -0
  151. package/dist/control-web/assets/dracula-soft-BXkSAIEj.js +1 -0
  152. package/dist/control-web/assets/dream-maker-BtqSS_iP.js +1 -0
  153. package/dist/control-web/assets/ebnfDiagram-CCIWWBDH-CQjHiOqj.js +1 -0
  154. package/dist/control-web/assets/edge-BkV0erSs.js +1 -0
  155. package/dist/control-web/assets/elixir-CDX3lj18.js +1 -0
  156. package/dist/control-web/assets/elm-DbKCFpqz.js +1 -0
  157. package/dist/control-web/assets/emacs-lisp-C9XAeP06.js +1 -0
  158. package/dist/control-web/assets/erDiagram-Q63AITRT-Bspr3uKJ.js +85 -0
  159. package/dist/control-web/assets/erb-B12qg9BL.js +1 -0
  160. package/dist/control-web/assets/erlang-DsQrWhSR.js +1 -0
  161. package/dist/control-web/assets/everforest-dark-BgDCqdQA.js +1 -0
  162. package/dist/control-web/assets/everforest-light-C8M2exoo.js +1 -0
  163. package/dist/control-web/assets/fennel-BYunw83y.js +1 -0
  164. package/dist/control-web/assets/fish-BvzEVeQv.js +1 -0
  165. package/dist/control-web/assets/flowDiagram-23GEKE2U-CxcZyBA-.js +156 -0
  166. package/dist/control-web/assets/fluent-C4IJs8-o.js +1 -0
  167. package/dist/control-web/assets/fortran-fixed-form-CkoXwp7k.js +1 -0
  168. package/dist/control-web/assets/fortran-free-form-BxgE0vQu.js +1 -0
  169. package/dist/control-web/assets/fsharp-CXgrBDvD.js +1 -0
  170. package/dist/control-web/assets/ganttDiagram-NO4QXBWP-qBdh7A-P.js +292 -0
  171. package/dist/control-web/assets/gdresource-BOOCDP_w.js +1 -0
  172. package/dist/control-web/assets/gdscript-C5YyOfLZ.js +1 -0
  173. package/dist/control-web/assets/gdshader-DkwncUOv.js +1 -0
  174. package/dist/control-web/assets/genie-D0YGMca9.js +1 -0
  175. package/dist/control-web/assets/gherkin-DyxjwDmM.js +1 -0
  176. package/dist/control-web/assets/git-commit-F4YmCXRG.js +1 -0
  177. package/dist/control-web/assets/git-rebase-r7XF79zn.js +1 -0
  178. package/dist/control-web/assets/gitGraphDiagram-IHSO6WYX-BTYub2KT.js +106 -0
  179. package/dist/control-web/assets/github-dark-DHJKELXO.js +1 -0
  180. package/dist/control-web/assets/github-dark-default-Cuk6v7N8.js +1 -0
  181. package/dist/control-web/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
  182. package/dist/control-web/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
  183. package/dist/control-web/assets/github-light-DAi9KRSo.js +1 -0
  184. package/dist/control-web/assets/github-light-default-D7oLnXFd.js +1 -0
  185. package/dist/control-web/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
  186. package/dist/control-web/assets/gleam-BspZqrRM.js +1 -0
  187. package/dist/control-web/assets/glimmer-js-Rg0-pVw9.js +1 -0
  188. package/dist/control-web/assets/glimmer-ts-U6CK756n.js +1 -0
  189. package/dist/control-web/assets/glsl-DplSGwfg.js +1 -0
  190. package/dist/control-web/assets/gn-n2N0HUVH.js +1 -0
  191. package/dist/control-web/assets/gnuplot-DdkO51Og.js +1 -0
  192. package/dist/control-web/assets/go-CxLEBnE3.js +1 -0
  193. package/dist/control-web/assets/graph-C9eacEi8.js +1 -0
  194. package/dist/control-web/assets/graphql-ChdNCCLP.js +1 -0
  195. package/dist/control-web/assets/groovy-gcz8RCvz.js +1 -0
  196. package/dist/control-web/assets/gruvbox-dark-hard-CFHQjOhq.js +1 -0
  197. package/dist/control-web/assets/gruvbox-dark-medium-GsRaNv29.js +1 -0
  198. package/dist/control-web/assets/gruvbox-dark-soft-CVdnzihN.js +1 -0
  199. package/dist/control-web/assets/gruvbox-light-hard-CH1njM8p.js +1 -0
  200. package/dist/control-web/assets/gruvbox-light-medium-DRw_LuNl.js +1 -0
  201. package/dist/control-web/assets/gruvbox-light-soft-hJgmCMqR.js +1 -0
  202. package/dist/control-web/assets/hack-CaT9iCJl.js +1 -0
  203. package/dist/control-web/assets/haml-B8DHNrY2.js +1 -0
  204. package/dist/control-web/assets/handlebars-BL8al0AC.js +1 -0
  205. package/dist/control-web/assets/haskell-Df6bDoY_.js +1 -0
  206. package/dist/control-web/assets/haxe-CzTSHFRz.js +1 -0
  207. package/dist/control-web/assets/hcl-BWvSN4gD.js +1 -0
  208. package/dist/control-web/assets/{highlighted-body-OFNGDK62-DV5jYwcf.js → highlighted-body-OFNGDK62-DyksUrwu.js} +1 -1
  209. package/dist/control-web/assets/hjson-D5-asLiD.js +1 -0
  210. package/dist/control-web/assets/hlsl-D3lLCCz7.js +1 -0
  211. package/dist/control-web/assets/horizon-BUw7H-hv.js +1 -0
  212. package/dist/control-web/assets/horizon-bright-Cn-bp-IR.js +1 -0
  213. package/dist/control-web/assets/houston-DnULxvSX.js +1 -0
  214. package/dist/control-web/assets/html-GMplVEZG.js +1 -0
  215. package/dist/control-web/assets/html-derivative-BFtXZ54Q.js +1 -0
  216. package/dist/control-web/assets/http-jrhK8wxY.js +1 -0
  217. package/dist/control-web/assets/hurl-irOxFIW8.js +1 -0
  218. package/dist/control-web/assets/hxml-Bvhsp5Yf.js +1 -0
  219. package/dist/control-web/assets/hy-DFXneXwc.js +1 -0
  220. package/dist/control-web/assets/imba-DGztddWO.js +1 -0
  221. package/dist/control-web/assets/index-B9SAq_63.js +718 -0
  222. package/dist/control-web/assets/index-BDaSctIT.js +153 -0
  223. package/dist/control-web/assets/index-CtaYRNgJ.css +32 -0
  224. package/dist/control-web/assets/infoDiagram-FWYZ7A6U-ChbQR3Zo.js +2 -0
  225. package/dist/control-web/assets/ini-BEwlwnbL.js +1 -0
  226. package/dist/control-web/assets/init-Gi6I4Gst.js +1 -0
  227. package/dist/control-web/assets/ishikawaDiagram-FXEZZL3T-C-4_qGzn.js +70 -0
  228. package/dist/control-web/assets/java-CylS5w8V.js +1 -0
  229. package/dist/control-web/assets/javascript-wDzz0qaB.js +1 -0
  230. package/dist/control-web/assets/jinja-4LBKfQ-Z.js +1 -0
  231. package/dist/control-web/assets/jison-wvAkD_A8.js +1 -0
  232. package/dist/control-web/assets/journeyDiagram-5HDEW3XC-B090zN18.js +139 -0
  233. package/dist/control-web/assets/json-Cp-IABpG.js +1 -0
  234. package/dist/control-web/assets/json5-C9tS-k6U.js +1 -0
  235. package/dist/control-web/assets/jsonc-Des-eS-w.js +1 -0
  236. package/dist/control-web/assets/jsonl-DcaNXYhu.js +1 -0
  237. package/dist/control-web/assets/jsonnet-DFQXde-d.js +1 -0
  238. package/dist/control-web/assets/jssm-C2t-YnRu.js +1 -0
  239. package/dist/control-web/assets/jsx-g9-lgVsj.js +1 -0
  240. package/dist/control-web/assets/julia-CxzCAyBv.js +1 -0
  241. package/dist/control-web/assets/just-Cw27pwNe.js +1 -0
  242. package/dist/control-web/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
  243. package/dist/control-web/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
  244. package/dist/control-web/assets/kanagawa-wave-DWedfzmr.js +1 -0
  245. package/dist/control-web/assets/kanban-definition-HUTT4EX6-RlTcRbPs.js +89 -0
  246. package/dist/control-web/assets/kdl-DV7GczEv.js +1 -0
  247. package/dist/control-web/assets/kotlin-BdnUsdx6.js +1 -0
  248. package/dist/control-web/assets/kusto-DZf3V79B.js +1 -0
  249. package/dist/control-web/assets/laserwave-DUszq2jm.js +1 -0
  250. package/dist/control-web/assets/latex-CWtU0Tv5.js +1 -0
  251. package/dist/control-web/assets/layout-DEXfKzaS.js +1 -0
  252. package/dist/control-web/assets/lean-BZvkOJ9d.js +1 -0
  253. package/dist/control-web/assets/less-B1dDrJ26.js +1 -0
  254. package/dist/control-web/assets/light-plus-B7mTdjB0.js +1 -0
  255. package/dist/control-web/assets/linear-DTuNxDqu.js +1 -0
  256. package/dist/control-web/assets/liquid-DYVedYrR.js +1 -0
  257. package/dist/control-web/assets/llvm-DjAJT7YJ.js +1 -0
  258. package/dist/control-web/assets/log-2UxHyX5q.js +1 -0
  259. package/dist/control-web/assets/logo-BtOb2qkB.js +1 -0
  260. package/dist/control-web/assets/lua-BaeVxFsk.js +1 -0
  261. package/dist/control-web/assets/luau-C-HG3fhB.js +1 -0
  262. package/dist/control-web/assets/make-CHLpvVh8.js +1 -0
  263. package/dist/control-web/assets/map-Czzmt4hB.js +1 -0
  264. package/dist/control-web/assets/markdown-Cvjx9yec.js +1 -0
  265. package/dist/control-web/assets/marko-CnJfTvn9.js +1 -0
  266. package/dist/control-web/assets/material-theme-D5KoaKCx.js +1 -0
  267. package/dist/control-web/assets/material-theme-darker-BfHTSMKl.js +1 -0
  268. package/dist/control-web/assets/material-theme-lighter-B0m2ddpp.js +1 -0
  269. package/dist/control-web/assets/material-theme-ocean-CyktbL80.js +1 -0
  270. package/dist/control-web/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
  271. package/dist/control-web/assets/matlab-D7o27uSR.js +1 -0
  272. package/dist/control-web/assets/mdc-BMNejdWA.js +1 -0
  273. package/dist/control-web/assets/mdx-Cmh6b_Ma.js +1 -0
  274. package/dist/control-web/assets/mermaid-GHXKKRXX-BYZTj3zW.css +1 -0
  275. package/dist/control-web/assets/mermaid-GHXKKRXX-BkcV3dgg.js +710 -0
  276. package/dist/control-web/assets/mermaid-mWjccvbQ.js +1 -0
  277. package/dist/control-web/assets/min-dark-CafNBF8u.js +1 -0
  278. package/dist/control-web/assets/min-light-CTRr51gU.js +1 -0
  279. package/dist/control-web/assets/mindmap-definition-LN4V7U3C-DYby41E9.js +96 -0
  280. package/dist/control-web/assets/mipsasm-CKIfxQSi.js +1 -0
  281. package/dist/control-web/assets/mojo-rZm6bMo-.js +1 -0
  282. package/dist/control-web/assets/monokai-D4h5O-jR.js +1 -0
  283. package/dist/control-web/assets/moonbit-_H4v1dQx.js +1 -0
  284. package/dist/control-web/assets/move-IF9eRakj.js +1 -0
  285. package/dist/control-web/assets/narrat-DRg8JJMk.js +1 -0
  286. package/dist/control-web/assets/nextflow-Zz6hmt5N.js +1 -0
  287. package/dist/control-web/assets/nextflow-groovy-BeH2EWoN.js +1 -0
  288. package/dist/control-web/assets/nginx-BpAMiNFr.js +1 -0
  289. package/dist/control-web/assets/night-owl-C39BiMTA.js +1 -0
  290. package/dist/control-web/assets/night-owl-light-CMTm3GFP.js +1 -0
  291. package/dist/control-web/assets/nim-CVrawwO9.js +1 -0
  292. package/dist/control-web/assets/nix-CwoSXNpI.js +1 -0
  293. package/dist/control-web/assets/nord-Ddv68eIx.js +1 -0
  294. package/dist/control-web/assets/nushell-Cz2AlsmD.js +1 -0
  295. package/dist/control-web/assets/objective-c-DXmwc3jG.js +1 -0
  296. package/dist/control-web/assets/objective-cpp-CLxacb5B.js +1 -0
  297. package/dist/control-web/assets/ocaml-C0hk2d4L.js +1 -0
  298. package/dist/control-web/assets/odin-BBf5iR-q.js +1 -0
  299. package/dist/control-web/assets/one-dark-pro-DVMEJ2y_.js +1 -0
  300. package/dist/control-web/assets/one-light-C3Wv6jpd.js +1 -0
  301. package/dist/control-web/assets/openscad-C4EeE6gA.js +1 -0
  302. package/dist/control-web/assets/ordinal-Cboi1Yqb.js +1 -0
  303. package/dist/control-web/assets/pascal-D93ZcfNL.js +1 -0
  304. package/dist/control-web/assets/pegDiagram-2B236MQR-CPK6GaEv.js +1 -0
  305. package/dist/control-web/assets/perl-C0TMdlhV.js +1 -0
  306. package/dist/control-web/assets/php-Dhbhpdrm.js +1 -0
  307. package/dist/control-web/assets/pieDiagram-ENE6RG2P-DLCmXuji.js +39 -0
  308. package/dist/control-web/assets/pkl-u5AG7uiY.js +1 -0
  309. package/dist/control-web/assets/plastic-3e1v2bzS.js +1 -0
  310. package/dist/control-web/assets/plsql-ChMvpjG-.js +1 -0
  311. package/dist/control-web/assets/po-BTJTHyun.js +1 -0
  312. package/dist/control-web/assets/poimandres-CS3Unz2-.js +1 -0
  313. package/dist/control-web/assets/polar-C0HS_06l.js +1 -0
  314. package/dist/control-web/assets/postcss-CXtECtnM.js +1 -0
  315. package/dist/control-web/assets/powerquery-CEu0bR-o.js +1 -0
  316. package/dist/control-web/assets/powershell-Dpen1YoG.js +1 -0
  317. package/dist/control-web/assets/prisma-Dd19v3D-.js +1 -0
  318. package/dist/control-web/assets/prolog-CbFg5uaA.js +1 -0
  319. package/dist/control-web/assets/proto-C7zT0LnQ.js +1 -0
  320. package/dist/control-web/assets/pug-CGlum2m_.js +1 -0
  321. package/dist/control-web/assets/puppet-BMWR74SV.js +1 -0
  322. package/dist/control-web/assets/purescript-CklMAg4u.js +1 -0
  323. package/dist/control-web/assets/python-B6aJPvgy.js +1 -0
  324. package/dist/control-web/assets/qml-3beO22l8.js +1 -0
  325. package/dist/control-web/assets/qmldir-C8lEn-DE.js +1 -0
  326. package/dist/control-web/assets/qss-IeuSbFQv.js +1 -0
  327. package/dist/control-web/assets/quadrantDiagram-ABIIQ3AL-RIS8r7CA.js +7 -0
  328. package/dist/control-web/assets/r-Dspwwk_N.js +1 -0
  329. package/dist/control-web/assets/racket-BqYA7rlc.js +1 -0
  330. package/dist/control-web/assets/railroadDiagram-RFXS5EU6-B1HB7xsg.js +1 -0
  331. package/dist/control-web/assets/raku-DXvB9xmW.js +1 -0
  332. package/dist/control-web/assets/razor-Uh8Bk_45.js +1 -0
  333. package/dist/control-web/assets/red-bN70gL4F.js +1 -0
  334. package/dist/control-web/assets/reg-C-SQnVFl.js +1 -0
  335. package/dist/control-web/assets/regexp-CDVJQ6XC.js +1 -0
  336. package/dist/control-web/assets/rel-C3B-1QV4.js +1 -0
  337. package/dist/control-web/assets/requirementDiagram-TGXJPOKE-Inh_4hU0.js +84 -0
  338. package/dist/control-web/assets/riscv-BM1_JUlF.js +1 -0
  339. package/dist/control-web/assets/ron-D8l8udqQ.js +1 -0
  340. package/dist/control-web/assets/rose-pine-dawn-DHQR4-dF.js +1 -0
  341. package/dist/control-web/assets/rose-pine-moon-D4_iv3hh.js +1 -0
  342. package/dist/control-web/assets/rose-pine-qdsjHGoJ.js +1 -0
  343. package/dist/control-web/assets/rosmsg-BJDFO7_C.js +1 -0
  344. package/dist/control-web/assets/rst-BrH8l1NY.js +1 -0
  345. package/dist/control-web/assets/ruby-Dw2BHqvy.js +1 -0
  346. package/dist/control-web/assets/rust-B1yitclQ.js +1 -0
  347. package/dist/control-web/assets/sankeyDiagram-HTMAVEWB-DPF33kPB.js +40 -0
  348. package/dist/control-web/assets/sas-cz2c8ADy.js +1 -0
  349. package/dist/control-web/assets/sass-Cj5Yp3dK.js +1 -0
  350. package/dist/control-web/assets/scala-C151Ov-r.js +1 -0
  351. package/dist/control-web/assets/scheme-C98Dy4si.js +1 -0
  352. package/dist/control-web/assets/scss-OYdSNvt2.js +1 -0
  353. package/dist/control-web/assets/sdbl-DVxCFoDh.js +1 -0
  354. package/dist/control-web/assets/sequenceDiagram-DBY2YBRQ-iywKWoYc.js +162 -0
  355. package/dist/control-web/assets/shaderlab-Dg9Lc6iA.js +1 -0
  356. package/dist/control-web/assets/shellscript-Yzrsuije.js +1 -0
  357. package/dist/control-web/assets/shellsession-BADoaaVG.js +1 -0
  358. package/dist/control-web/assets/sizeCapture-X5ZJPWSS-DlnHubz9.js +1 -0
  359. package/dist/control-web/assets/slack-dark-BthQWCQV.js +1 -0
  360. package/dist/control-web/assets/slack-ochin-DqwNpetd.js +1 -0
  361. package/dist/control-web/assets/smalltalk-BERRCDM3.js +1 -0
  362. package/dist/control-web/assets/snazzy-light-Bw305WKR.js +1 -0
  363. package/dist/control-web/assets/solarized-dark-DXbdFlpD.js +1 -0
  364. package/dist/control-web/assets/solarized-light-L9t79GZl.js +1 -0
  365. package/dist/control-web/assets/solidity-rGO070M0.js +1 -0
  366. package/dist/control-web/assets/soy-Brmx7dQM.js +1 -0
  367. package/dist/control-web/assets/sparql-rVzFXLq3.js +1 -0
  368. package/dist/control-web/assets/splunk-BtCnVYZw.js +1 -0
  369. package/dist/control-web/assets/sql-BLtJtn59.js +1 -0
  370. package/dist/control-web/assets/ssh-config-_ykCGR6B.js +1 -0
  371. package/dist/control-web/assets/stata-BH5u7GGu.js +1 -0
  372. package/dist/control-web/assets/stateDiagram-2N3HPSRC-CShzll2N.js +1 -0
  373. package/dist/control-web/assets/stateDiagram-v2-6OUMAXLB-Cdx0fWna.js +1 -0
  374. package/dist/control-web/assets/stylus-BEDo0Tqx.js +1 -0
  375. package/dist/control-web/assets/surrealql-Bq5Q-fJD.js +1 -0
  376. package/dist/control-web/assets/svelte-C_ipcX3V.js +1 -0
  377. package/dist/control-web/assets/swift-D82vCrfD.js +1 -0
  378. package/dist/control-web/assets/swimlanes-5IMT3BWC-CxlQpFBv.js +2 -0
  379. package/dist/control-web/assets/swimlanesDiagram-G3AALYLV-CoX0jnUu.js +8 -0
  380. package/dist/control-web/assets/synthwave-84-CbfX1IO0.js +1 -0
  381. package/dist/control-web/assets/system-verilog-CnnmHF94.js +1 -0
  382. package/dist/control-web/assets/systemd-4A_iFExJ.js +1 -0
  383. package/dist/control-web/assets/talonscript-CkByrt1z.js +1 -0
  384. package/dist/control-web/assets/tasl-QIJgUcNo.js +1 -0
  385. package/dist/control-web/assets/tcl-dwOrl1Do.js +1 -0
  386. package/dist/control-web/assets/templ-P3uqSqPl.js +1 -0
  387. package/dist/control-web/assets/terraform-BETggiCN.js +1 -0
  388. package/dist/control-web/assets/tex-idrVyKtj.js +1 -0
  389. package/dist/control-web/assets/timeline-definition-FHXFAJF6-Dlx59Xc3.js +120 -0
  390. package/dist/control-web/assets/tokyo-night-hegEt444.js +1 -0
  391. package/dist/control-web/assets/toml-vGWfd6FD.js +1 -0
  392. package/dist/control-web/assets/ts-tags-zn1MmPIZ.js +1 -0
  393. package/dist/control-web/assets/tsv-B_m7g4N7.js +1 -0
  394. package/dist/control-web/assets/tsx-COt5Ahok.js +1 -0
  395. package/dist/control-web/assets/turtle-BsS91CYL.js +1 -0
  396. package/dist/control-web/assets/twig-DNn4PbVi.js +1 -0
  397. package/dist/control-web/assets/typescript-BPQ3VLAy.js +1 -0
  398. package/dist/control-web/assets/typespec-BGHnOYBU.js +1 -0
  399. package/dist/control-web/assets/typst-DHCkPAjA.js +1 -0
  400. package/dist/control-web/assets/v-BcVCzyr7.js +1 -0
  401. package/dist/control-web/assets/vala-CsfeWuGM.js +1 -0
  402. package/dist/control-web/assets/vb-D17OF-Vu.js +1 -0
  403. package/dist/control-web/assets/vennDiagram-L72KCM5P-DLsv4i_t.js +34 -0
  404. package/dist/control-web/assets/verilog-BQ8w6xss.js +1 -0
  405. package/dist/control-web/assets/vesper-DU1UobuO.js +1 -0
  406. package/dist/control-web/assets/vhdl-CeAyd5Ju.js +1 -0
  407. package/dist/control-web/assets/viml-CJc9bBzg.js +1 -0
  408. package/dist/control-web/assets/vitesse-black-Bkuqu6BP.js +1 -0
  409. package/dist/control-web/assets/vitesse-dark-D0r3Knsf.js +1 -0
  410. package/dist/control-web/assets/vitesse-light-CVO1_9PV.js +1 -0
  411. package/dist/control-web/assets/vue-DN_0RTcg.js +1 -0
  412. package/dist/control-web/assets/vue-html-AaS7Mt5G.js +1 -0
  413. package/dist/control-web/assets/vue-vine-CQOfvN7w.js +1 -0
  414. package/dist/control-web/assets/vyper-CDx5xZoG.js +1 -0
  415. package/dist/control-web/assets/wardleyDiagram-EHGQE667-BazV8fpH.js +78 -0
  416. package/dist/control-web/assets/wasm-CG6Dc4jp.js +1 -0
  417. package/dist/control-web/assets/wasm-MzD3tlZU.js +1 -0
  418. package/dist/control-web/assets/wenyan-BV7otONQ.js +1 -0
  419. package/dist/control-web/assets/wgsl-Dx-B1_4e.js +1 -0
  420. package/dist/control-web/assets/wikitext-BhOHFoWU.js +1 -0
  421. package/dist/control-web/assets/wit-5i3qLPDT.js +1 -0
  422. package/dist/control-web/assets/wolfram-lXgVvXCa.js +1 -0
  423. package/dist/control-web/assets/xml-sdJ4AIDG.js +1 -0
  424. package/dist/control-web/assets/xsl-CtQFsRM5.js +1 -0
  425. package/dist/control-web/assets/xychartDiagram-FW5EYKEG-Bx9uDlYu.js +7 -0
  426. package/dist/control-web/assets/yaml-Buea-lGh.js +1 -0
  427. package/dist/control-web/assets/zenscript-DVFEvuxE.js +1 -0
  428. package/dist/control-web/assets/zig-VOosw3JB.js +1 -0
  429. package/dist/control-web/index.html +2 -2
  430. package/dist/machine-session-service.d.ts +62 -7
  431. package/dist/machine-session-service.js +559 -18
  432. package/dist/remote-runtime-dispatcher.d.ts +1 -1
  433. package/dist/remote-runtime-dispatcher.js +8 -0
  434. package/dist/remote-runtime-session-projection.js +4 -0
  435. package/dist/server.d.ts +9 -3
  436. package/dist/server.js +86 -4
  437. package/dist/session-runtime-index.js +14 -1
  438. package/package.json +7 -7
  439. package/dist/control-web/assets/index-0noHpRXD.css +0 -32
  440. package/dist/control-web/assets/index-D-5t2eCT.js +0 -709
  441. package/dist/control-web/assets/mermaid-GHXKKRXX-DPZO2Q9W.js +0 -131
@@ -8,6 +8,8 @@
8
8
  * into a Control Plane database.
9
9
  */
10
10
  import { createHash } from "node:crypto";
11
+ import { open, realpath, stat } from "node:fs/promises";
12
+ import { basename, extname, isAbsolute, relative, resolve, sep } from "node:path";
11
13
  import { SESSION_PROVIDER_IDS, getRuntimeProfile, isSessionProviderId, newSessionId, normalizeSessionTitle, } from "@rynx-ai/core";
12
14
  import { REMOTE_RUNTIME_SESSION_DEFAULT_PAGE_SIZE, REMOTE_RUNTIME_SESSION_MAX_CURSOR_CHARS, REMOTE_RUNTIME_SESSION_MAX_ID_CHARS, REMOTE_RUNTIME_SESSION_MAX_PAGE_SIZE, } from "@rynx-ai/protocol/remote-runtime-rpc";
13
15
  const DEFAULT_LIST_LIMIT = REMOTE_RUNTIME_SESSION_DEFAULT_PAGE_SIZE;
@@ -54,6 +56,7 @@ export class MachineSessionService {
54
56
  pendingDeliveries = new Map();
55
57
  cancelledPendingDeliveries = new Set();
56
58
  forkTasks = new Map();
59
+ sessionMutationTails = new Map();
57
60
  constructor(ports, options = {}) {
58
61
  this.ports = ports;
59
62
  this.maxListLimit = boundedInteger(options.maxListLimit ?? MAX_LIST_LIMIT, 1, MAX_LIST_LIMIT, "maxListLimit");
@@ -218,11 +221,20 @@ export class MachineSessionService {
218
221
  async updateExecutionSettings(input) {
219
222
  const sessionId = validOpaqueToken(input.sessionId, "sessionId", MAX_SESSION_ID_CHARS);
220
223
  const modelId = input.model === null ? null : validRequiredText(input.model, "model");
221
- const meta = this.ports.registry.get(sessionId);
222
- if (!meta) {
223
- throw new MachineSessionServiceFailure("not_found", "session not found");
224
- }
225
- await this.assertNotForkReserved(sessionId);
224
+ const reasoningEffort = input.reasoningEffort === null
225
+ ? null
226
+ : validRequiredText(input.reasoningEffort, "reasoningEffort");
227
+ return this.withSessionMutation(sessionId, async () => {
228
+ const meta = this.ports.registry.get(sessionId);
229
+ if (!meta) {
230
+ throw new MachineSessionServiceFailure("not_found", "session not found");
231
+ }
232
+ await this.assertNotForkReserved(sessionId);
233
+ const nextExecution = await this.replaceExecutionSettings(sessionId, meta, { model: modelId, reasoningEffort }, input.collaborationMode);
234
+ return executionSettingsResult(nextExecution);
235
+ });
236
+ }
237
+ async replaceExecutionSettings(sessionId, meta, selection, collaborationMode) {
226
238
  if (meta.execution.provider === "claude") {
227
239
  const runtime = this.ports.runtimeState.snapshot(sessionId);
228
240
  const pendingMessage = await this.ports.pendingMessages?.get(sessionId);
@@ -234,19 +246,54 @@ export class MachineSessionService {
234
246
  }
235
247
  }
236
248
  const executionPort = this.requireExecution();
237
- const reasoningEffort = input.reasoningEffort === null
238
- ? null
239
- : validRequiredText(input.reasoningEffort, "reasoningEffort");
240
249
  const nextExecution = {
241
250
  ...structuredClone(meta.execution),
242
- model: modelId,
243
- reasoningEffort,
251
+ model: selection.model,
252
+ reasoningEffort: selection.reasoningEffort,
253
+ ...(meta.execution.provider !== "claude" && collaborationMode !== undefined
254
+ ? { collaborationMode }
255
+ : {}),
244
256
  };
257
+ if (meta.execution.provider !== "claude" && collaborationMode !== undefined) {
258
+ const updateMode = executionPort.runner.updateCollaborationMode;
259
+ if (!updateMode) {
260
+ const message = "This Runtime does not support live collaboration-mode updates";
261
+ throw new MachineSessionServiceFailure("failed_precondition", message, message, {
262
+ message,
263
+ code: "collaboration_mode_unavailable",
264
+ statusCode: 409,
265
+ });
266
+ }
267
+ // Omnigent parity: native state is authoritative. Do not make a failed
268
+ // toggle survive reload when the loaded thread rejected it.
269
+ try {
270
+ await updateMode.call(executionPort.runner, sessionId, collaborationMode);
271
+ }
272
+ catch (error) {
273
+ const failure = liveSessionFailureFrom(error);
274
+ const message = collaborationModeFailureMessage(meta.execution.provider, failure, error instanceof Error ? error.message : "Native collaboration mode update failed");
275
+ throw new MachineSessionServiceFailure("failed_precondition", message, message, failure ? { ...failure, message } : undefined);
276
+ }
277
+ }
245
278
  this.ports.registry.setExecution(sessionId, nextExecution);
246
279
  if (nextExecution.provider === "claude") {
247
280
  executionPort.runner.stopRunner(sessionId);
248
281
  }
249
- return executionSettingsResult(nextExecution);
282
+ return nextExecution;
283
+ }
284
+ /** Persist a mode changed from the native TUI before its reflected event is
285
+ * fanned out to Web clients. Unknown/deleted and Claude Sessions are ignored. */
286
+ recordNativeCollaborationMode(sessionIdInput, mode) {
287
+ const sessionId = validOpaqueToken(sessionIdInput, "sessionId", MAX_SESSION_ID_CHARS);
288
+ const meta = this.ports.registry.get(sessionId);
289
+ if (!meta || meta.execution.provider === "claude")
290
+ return;
291
+ if (meta.execution.collaborationMode === mode)
292
+ return;
293
+ this.ports.registry.setExecution(sessionId, {
294
+ ...structuredClone(meta.execution),
295
+ collaborationMode: mode,
296
+ });
250
297
  }
251
298
  /** Create target-owned Session identity from one Agent preset or direct Provider. */
252
299
  async create(input) {
@@ -452,8 +499,122 @@ export class MachineSessionService {
452
499
  async sendMessage(sessionIdInput, messageInput) {
453
500
  return this.withAdmission(() => this.sendMessageAdmitted(sessionIdInput, messageInput));
454
501
  }
455
- async sendMessageAdmitted(sessionIdInput, messageInput) {
502
+ /** Start a turn and return only that response's canonical event stream. */
503
+ async startRun(sessionIdInput, messageInput, options = {}) {
504
+ return this.withAdmission(async () => {
505
+ const sessionId = validOpaqueToken(sessionIdInput, "sessionId", MAX_SESSION_ID_CHARS);
506
+ const meta = this.ports.registry.get(sessionId);
507
+ if (!meta)
508
+ throw new MachineSessionServiceFailure("not_found", "Session not found");
509
+ const subscription = this.ports.events.subscribe(sessionId)[Symbol.asyncIterator]();
510
+ let unsteer;
511
+ let ownsTurn = false;
512
+ const activateTurn = () => {
513
+ if (ownsTurn)
514
+ return;
515
+ ownsTurn = true;
516
+ if (!options.signal?.aborted) {
517
+ unsteer = options.steer?.subscribe((text) => {
518
+ void this.requireExecution().runner.injectMessage(sessionId, text);
519
+ });
520
+ }
521
+ };
522
+ const interrupt = () => {
523
+ if (ownsTurn)
524
+ void this.ports.interruption.interrupt(sessionId);
525
+ };
526
+ try {
527
+ options.signal?.addEventListener("abort", interrupt, { once: true });
528
+ const result = await this.sendMessageAdmitted(sessionId, messageInput, options.signal, activateTurn, true, options.collaborationMode
529
+ ? { collaborationMode: options.collaborationMode }
530
+ : undefined);
531
+ if (!result.responseId) {
532
+ throw new MachineSessionServiceFailure("outcome_unknown", "run was already accepted but its response stream is unavailable");
533
+ }
534
+ const responseId = result.responseId;
535
+ const replayItems = result.replayed
536
+ ? (await this.ports.log.snapshot(sessionId)).filter((item) => item.responseId === responseId)
537
+ : [];
538
+ const replayedItemIds = new Set(replayItems.map((item) => item.id));
539
+ const replayWasActive = this.ports.runtimeState
540
+ .snapshot(sessionId)
541
+ .activeResponseIds.includes(responseId);
542
+ if (result.replayed && !replayWasActive) {
543
+ throw new MachineSessionServiceFailure("outcome_unknown", "run was already accepted but its terminal event is no longer available");
544
+ }
545
+ if (result.replayed) {
546
+ activateTurn();
547
+ if (options.signal?.aborted) {
548
+ await this.ports.interruption.interrupt(sessionId).catch(() => false);
549
+ throw abortReason(options.signal);
550
+ }
551
+ }
552
+ const runExecution = result.operationExecution ?? {
553
+ model: meta.execution.model,
554
+ reasoningEffort: meta.execution.reasoningEffort,
555
+ };
556
+ const model = runExecution.model;
557
+ const generator = (async function* () {
558
+ try {
559
+ if (result.replayed) {
560
+ yield {
561
+ type: "response.created",
562
+ sessionId,
563
+ responseId,
564
+ model: model ?? "unknown",
565
+ };
566
+ for (const item of replayItems)
567
+ yield replaySessionItem(item);
568
+ }
569
+ while (true) {
570
+ const next = await subscription.next();
571
+ if (next.done)
572
+ return;
573
+ const event = next.value;
574
+ if (sessionEventResponseId(event) !== responseId)
575
+ continue;
576
+ const itemId = sessionEventItemId(event);
577
+ if (itemId && replayedItemIds.has(itemId))
578
+ continue;
579
+ yield event;
580
+ if (event.type === "response.completed" || event.type === "response.failed")
581
+ return;
582
+ }
583
+ }
584
+ finally {
585
+ options.signal?.removeEventListener("abort", interrupt);
586
+ unsteer?.();
587
+ await subscription.return?.();
588
+ }
589
+ })();
590
+ const provider = meta.execution.provider;
591
+ return {
592
+ responseId,
593
+ provider,
594
+ model: runExecution.model,
595
+ authSource: provider === "traex"
596
+ ? "traex_cli"
597
+ : provider === "claude"
598
+ ? "claude_cli"
599
+ : "codex_cli",
600
+ generator,
601
+ };
602
+ }
603
+ catch (error) {
604
+ options.signal?.removeEventListener("abort", interrupt);
605
+ unsteer?.();
606
+ await subscription.return?.();
607
+ throw error;
608
+ }
609
+ });
610
+ }
611
+ async sendMessageAdmitted(sessionIdInput, messageInput, signal, onTurnOwned, includeResponseId = false, turnOptions) {
456
612
  const sessionId = validOpaqueToken(sessionIdInput, "sessionId", MAX_SESSION_ID_CHARS);
613
+ return this.withSessionMutation(sessionId, () => this.sendMessageAdmittedSerial(sessionId, messageInput, signal, onTurnOwned, includeResponseId, turnOptions));
614
+ }
615
+ async sendMessageAdmittedSerial(sessionId, messageInput, signal, onTurnOwned, includeResponseId = false, turnOptions) {
616
+ if (signal?.aborted)
617
+ throw abortReason(signal);
457
618
  await this.assertNotForkReserved(sessionId);
458
619
  const request = typeof messageInput === "string"
459
620
  ? { message: messageInput }
@@ -469,7 +630,24 @@ export class MachineSessionService {
469
630
  if (hasContent && (!Array.isArray(request.content) || request.content.length === 0)) {
470
631
  throw new MachineSessionServiceInputError("content must be a non-empty array");
471
632
  }
472
- const meta = this.ports.registry.get(sessionId);
633
+ let meta = this.ports.registry.get(sessionId);
634
+ const executionSelection = normalizeRunExecutionSelection(request.execution);
635
+ if (executionSelection && !meta) {
636
+ throw new MachineSessionServiceFailure("not_found", "session not found");
637
+ }
638
+ const requestedOperationExecution = executionSelection && meta
639
+ ? {
640
+ selection: executionSelection,
641
+ snapshot: {
642
+ model: executionSelection.model !== undefined
643
+ ? executionSelection.model
644
+ : meta.execution.model,
645
+ reasoningEffort: executionSelection.reasoningEffort !== undefined
646
+ ? executionSelection.reasoningEffort
647
+ : meta.execution.reasoningEffort,
648
+ },
649
+ }
650
+ : undefined;
473
651
  const consoleMeta = meta?.source === "console" ? meta : undefined;
474
652
  let prepared;
475
653
  const needsPreparedOperation = hasContent || request.clientMessageId !== undefined;
@@ -485,14 +663,24 @@ export class MachineSessionService {
485
663
  }
486
664
  prepared = await resources.prepareInput(sessionId, hasContent
487
665
  ? request.content
488
- : [{ type: "input_text", text: request.message }], request.clientMessageId);
666
+ : [{ type: "input_text", text: request.message }], request.clientMessageId, ...(requestedOperationExecution ? [requestedOperationExecution] : []));
489
667
  if (prepared.operationState === "injecting" ||
490
668
  prepared.operationState === "outcome_unknown") {
491
669
  throw new MachineSessionServiceFailure("outcome_unknown", "message delivery outcome is unknown");
492
670
  }
493
671
  if (prepared.operationState === "injected" ||
494
672
  prepared.operationState === "mirrored") {
495
- return { ok: true, injected: true };
673
+ return {
674
+ ok: true,
675
+ injected: true,
676
+ ...(includeResponseId && prepared.responseId
677
+ ? { responseId: prepared.responseId }
678
+ : {}),
679
+ ...(prepared.operationExecution
680
+ ? { operationExecution: prepared.operationExecution }
681
+ : {}),
682
+ replayed: true,
683
+ };
496
684
  }
497
685
  }
498
686
  else {
@@ -506,10 +694,24 @@ export class MachineSessionService {
506
694
  title: request.message,
507
695
  };
508
696
  }
697
+ const operationExecution = prepared.operationExecution ?? requestedOperationExecution?.snapshot;
698
+ if (operationExecution &&
699
+ meta &&
700
+ (operationExecution.model !== meta.execution.model ||
701
+ operationExecution.reasoningEffort !== meta.execution.reasoningEffort)) {
702
+ const nextExecution = await this.replaceExecutionSettings(sessionId, meta, operationExecution);
703
+ meta = { ...meta, execution: nextExecution };
704
+ }
509
705
  if (consoleMeta && !consoleMeta.title) {
510
706
  this.ports.registry.setTitle(sessionId, synthesizeSessionTitle(prepared.title));
511
707
  }
512
708
  const resources = this.ports.resources;
709
+ if (signal?.aborted) {
710
+ if (request.clientMessageId) {
711
+ await resources?.markMessageFailedNotStarted(sessionId, request.clientMessageId, "run was cancelled before injection");
712
+ }
713
+ throw abortReason(signal);
714
+ }
513
715
  if (request.clientMessageId) {
514
716
  await resources?.markMessageInjecting(sessionId, request.clientMessageId);
515
717
  }
@@ -523,9 +725,18 @@ export class MachineSessionService {
523
725
  }
524
726
  throw error;
525
727
  }
728
+ if (signal?.aborted) {
729
+ if (request.clientMessageId) {
730
+ await resources?.markMessageFailedNotStarted(sessionId, request.clientMessageId, "run was cancelled before injection");
731
+ }
732
+ throw abortReason(signal);
733
+ }
526
734
  let result;
527
735
  try {
528
- result = await execution.runner.injectMessage(sessionId, needsPreparedOperation ? prepared.input : request.message);
736
+ const injectionInput = needsPreparedOperation ? prepared.input : request.message;
737
+ result = turnOptions
738
+ ? await execution.runner.injectMessage(sessionId, injectionInput, turnOptions)
739
+ : await execution.runner.injectMessage(sessionId, injectionInput);
529
740
  }
530
741
  catch (error) {
531
742
  const failure = execution.runner.lastLiveSessionFailure?.(sessionId)
@@ -558,16 +769,48 @@ export class MachineSessionService {
558
769
  }
559
770
  throw new MachineSessionServiceFailure("failed_precondition", `live injection ${outcome}`, reason, failure);
560
771
  }
772
+ onTurnOwned?.();
773
+ if (signal?.aborted) {
774
+ await this.ports.interruption.interrupt(sessionId).catch(() => false);
775
+ if (request.clientMessageId) {
776
+ await Promise.resolve(resources?.markMessageInjected(sessionId, request.clientMessageId, result.responseId ? { responseId: result.responseId } : undefined)).catch(() => undefined);
777
+ }
778
+ throw abortReason(signal);
779
+ }
561
780
  if (request.clientMessageId) {
562
781
  try {
563
- await resources?.markMessageInjected(sessionId, request.clientMessageId);
782
+ await resources?.markMessageInjected(sessionId, request.clientMessageId, result.responseId ? { responseId: result.responseId } : undefined);
564
783
  }
565
784
  catch {
566
785
  await Promise.resolve(resources?.markMessageOutcomeUnknown(sessionId, request.clientMessageId, "message state could not be persisted after injection")).catch(() => undefined);
567
786
  throw new MachineSessionServiceFailure("outcome_unknown", "message was injected but its delivery state could not be persisted");
568
787
  }
569
788
  }
570
- return { ok: true, injected: true };
789
+ return {
790
+ ok: true,
791
+ injected: true,
792
+ ...(includeResponseId && result.responseId ? { responseId: result.responseId } : {}),
793
+ ...(operationExecution ? { operationExecution } : {}),
794
+ };
795
+ }
796
+ async withSessionMutation(sessionId, action) {
797
+ const previous = this.sessionMutationTails.get(sessionId);
798
+ let release;
799
+ const tail = new Promise((resolve) => {
800
+ release = resolve;
801
+ });
802
+ this.sessionMutationTails.set(sessionId, tail);
803
+ if (previous)
804
+ await previous;
805
+ try {
806
+ return await action();
807
+ }
808
+ finally {
809
+ release();
810
+ if (this.sessionMutationTails.get(sessionId) === tail) {
811
+ this.sessionMutationTails.delete(sessionId);
812
+ }
813
+ }
571
814
  }
572
815
  resourcePolicy(sessionIdInput) {
573
816
  const sessionId = this.requireResourceSession(sessionIdInput);
@@ -597,6 +840,62 @@ export class MachineSessionService {
597
840
  const sessionId = this.requireResourceSession(input.sessionId);
598
841
  return this.requireResources().deleteResource({ ...input, sessionId });
599
842
  }
843
+ async resolveResourcePath(sessionIdInput, resourceId) {
844
+ const sessionId = this.requireResourceSession(sessionIdInput);
845
+ const resolve = this.requireResources().resolveCommittedLocalPath;
846
+ if (!resolve) {
847
+ throw new MachineSessionServiceFailure("failed_precondition", "Session resource paths are unavailable");
848
+ }
849
+ return resolve.call(this.requireResources(), sessionId, resourceId);
850
+ }
851
+ async getFile(input) {
852
+ const resolved = await this.resolveSessionItemFile(input);
853
+ return { file: resolved.metadata };
854
+ }
855
+ async readFile(input) {
856
+ const resolved = await this.resolveSessionItemFile(input);
857
+ return this.readResolvedFile(resolved, input);
858
+ }
859
+ async getWorkspaceFile(input) {
860
+ const resolved = await this.resolveSessionWorkspaceFile(input);
861
+ return { file: resolved.metadata };
862
+ }
863
+ async readWorkspaceFile(input) {
864
+ const resolved = await this.resolveSessionWorkspaceFile(input);
865
+ return this.readResolvedFile(resolved, input);
866
+ }
867
+ async readResolvedFile(resolved, input) {
868
+ if (resolved.metadata.version !== input.version) {
869
+ throw new MachineSessionServiceFailure("conflict", "Session file changed while it was being read");
870
+ }
871
+ if (input.offset >= resolved.metadata.byteLength) {
872
+ return { data: "", offset: input.offset, eof: true };
873
+ }
874
+ const length = Math.min(input.length, resolved.metadata.byteLength - input.offset);
875
+ const file = await open(resolved.path, "r");
876
+ try {
877
+ const openedStat = await file.stat();
878
+ if (!openedStat.isFile() ||
879
+ sessionFileVersion(resolved.path, openedStat) !== resolved.metadata.version) {
880
+ throw new MachineSessionServiceFailure("conflict", "Session file changed while it was being read");
881
+ }
882
+ const buffer = Buffer.allocUnsafe(length);
883
+ const { bytesRead } = await file.read(buffer, 0, length, input.offset);
884
+ const completedStat = await file.stat();
885
+ if (sessionFileVersion(resolved.path, completedStat) !== resolved.metadata.version) {
886
+ throw new MachineSessionServiceFailure("conflict", "Session file changed while it was being read");
887
+ }
888
+ const nextOffset = input.offset + bytesRead;
889
+ return {
890
+ data: buffer.subarray(0, bytesRead).toString("base64"),
891
+ offset: nextOffset,
892
+ eof: nextOffset >= resolved.metadata.byteLength,
893
+ };
894
+ }
895
+ finally {
896
+ await file.close();
897
+ }
898
+ }
600
899
  /** Persist the first task while login/onboarding owns the Provider TUI. The
601
900
  * delivery worker starts the pane now, waits for a real native thread, then
602
901
  * injects exactly once. `failed` is fenced as outcome_unknown and never retried. */
@@ -701,6 +1000,101 @@ export class MachineSessionService {
701
1000
  }
702
1001
  return { ok: true };
703
1002
  }
1003
+ async resolveSessionItemFile(input) {
1004
+ const sessionId = this.requireResourceSession(input.sessionId);
1005
+ const item = await this.ports.log.get(sessionId, input.itemId);
1006
+ if (!item) {
1007
+ throw new MachineSessionServiceFailure("not_found", "Session item was not found");
1008
+ }
1009
+ let reference;
1010
+ let type;
1011
+ if (item.type === "message" && item.data.role === "user") {
1012
+ const part = item.data.content[input.partIndex];
1013
+ if (!part || (part.type !== "input_image" && part.type !== "input_file")) {
1014
+ throw new MachineSessionServiceFailure("not_found", "Session item file was not found");
1015
+ }
1016
+ reference = part;
1017
+ type = part.type;
1018
+ }
1019
+ else if (item.type === "function_call_output" && input.partIndex === 0) {
1020
+ if (!item.data.generatedImage) {
1021
+ throw new MachineSessionServiceFailure("not_found", "Session item file was not found");
1022
+ }
1023
+ reference = item.data.generatedImage;
1024
+ type = "generated_image";
1025
+ }
1026
+ else {
1027
+ throw new MachineSessionServiceFailure("not_found", "Session item file was not found");
1028
+ }
1029
+ if (!("path" in reference) || !reference.path || !isAbsolute(reference.path)) {
1030
+ throw new MachineSessionServiceFailure("not_found", "Session item is not path-backed");
1031
+ }
1032
+ try {
1033
+ const canonicalPath = await realpath(reference.path);
1034
+ const fileStat = await stat(canonicalPath);
1035
+ if (!fileStat.isFile() || fileStat.size < 1) {
1036
+ throw new MachineSessionServiceFailure("not_found", "Session item path is not a file");
1037
+ }
1038
+ const modifiedAt = Math.max(0, Math.trunc(fileStat.mtimeMs));
1039
+ const version = sessionFileVersion(canonicalPath, fileStat);
1040
+ return {
1041
+ path: canonicalPath,
1042
+ metadata: {
1043
+ itemId: item.id,
1044
+ partIndex: input.partIndex,
1045
+ type,
1046
+ filename: reference.filename || basename(canonicalPath),
1047
+ mediaType: reference.mediaType,
1048
+ byteLength: fileStat.size,
1049
+ modifiedAt,
1050
+ version,
1051
+ },
1052
+ };
1053
+ }
1054
+ catch (error) {
1055
+ if (error instanceof MachineSessionServiceFailure)
1056
+ throw error;
1057
+ throw new MachineSessionServiceFailure("not_found", "Session item file is unavailable", error instanceof Error ? error.message : String(error));
1058
+ }
1059
+ }
1060
+ async resolveSessionWorkspaceFile(input) {
1061
+ const sessionId = this.requireResourceSession(input.sessionId);
1062
+ const session = this.ports.registry.get(sessionId);
1063
+ try {
1064
+ const workspaceRoot = await realpath(session.workspace.cwd);
1065
+ const requestedPath = isAbsolute(input.path)
1066
+ ? input.path
1067
+ : resolve(workspaceRoot, input.path);
1068
+ const canonicalPath = await realpath(requestedPath);
1069
+ const workspaceRelative = relative(workspaceRoot, canonicalPath);
1070
+ if (!workspaceRelative ||
1071
+ workspaceRelative === ".." ||
1072
+ workspaceRelative.startsWith(`..${sep}`) ||
1073
+ isAbsolute(workspaceRelative)) {
1074
+ throw new MachineSessionServiceFailure("not_found", "Session workspace file was not found");
1075
+ }
1076
+ const fileStat = await stat(canonicalPath);
1077
+ if (!fileStat.isFile()) {
1078
+ throw new MachineSessionServiceFailure("not_found", "Session workspace path is not a file");
1079
+ }
1080
+ return {
1081
+ path: canonicalPath,
1082
+ metadata: {
1083
+ path: input.path,
1084
+ filename: basename(canonicalPath),
1085
+ mediaType: workspaceFileMediaType(canonicalPath),
1086
+ byteLength: fileStat.size,
1087
+ modifiedAt: Math.max(0, Math.trunc(fileStat.mtimeMs)),
1088
+ version: sessionFileVersion(canonicalPath, fileStat),
1089
+ },
1090
+ };
1091
+ }
1092
+ catch (error) {
1093
+ if (error instanceof MachineSessionServiceFailure)
1094
+ throw error;
1095
+ throw new MachineSessionServiceFailure("not_found", "Session workspace file is unavailable", error instanceof Error ? error.message : String(error));
1096
+ }
1097
+ }
704
1098
  requireAgents() {
705
1099
  if (!this.ports.agents) {
706
1100
  throw new MachineSessionServiceFailure("failed_precondition", "session agent options are unavailable");
@@ -1021,6 +1415,7 @@ function executionSettingsResult(execution) {
1021
1415
  provider: execution.provider,
1022
1416
  model: execution.model,
1023
1417
  reasoningEffort: execution.reasoningEffort,
1418
+ collaborationMode: execution.collaborationMode ?? null,
1024
1419
  };
1025
1420
  }
1026
1421
  function compareMetaRecency(left, right) {
@@ -1092,6 +1487,9 @@ function cancellableWatch(sessionId, iterator, signal) {
1092
1487
  function cloneRuntimeSnapshot(snapshot) {
1093
1488
  return {
1094
1489
  status: snapshot.status,
1490
+ ...(snapshot.backgroundTaskCount === undefined
1491
+ ? {}
1492
+ : { backgroundTaskCount: snapshot.backgroundTaskCount }),
1095
1493
  activeResponseIds: [...snapshot.activeResponseIds],
1096
1494
  pendingInteractions: snapshot.pendingInteractions.map((pending) => ({
1097
1495
  responseId: pending.responseId,
@@ -1099,6 +1497,87 @@ function cloneRuntimeSnapshot(snapshot) {
1099
1497
  })),
1100
1498
  };
1101
1499
  }
1500
+ function sessionEventResponseId(event) {
1501
+ if ("responseId" in event && typeof event.responseId === "string")
1502
+ return event.responseId;
1503
+ if ("item" in event && event.item && typeof event.item.responseId === "string") {
1504
+ return event.item.responseId;
1505
+ }
1506
+ return undefined;
1507
+ }
1508
+ function sessionEventItemId(event) {
1509
+ return "item" in event && event.item && typeof event.item.id === "string"
1510
+ ? event.item.id
1511
+ : undefined;
1512
+ }
1513
+ function replaySessionItem(item) {
1514
+ if (item.type === "message" && item.data.role === "user") {
1515
+ return { type: "session.input.consumed", item };
1516
+ }
1517
+ if (item.type === "interaction_request") {
1518
+ return {
1519
+ type: "session.interaction.requested",
1520
+ sessionId: item.sessionId,
1521
+ responseId: item.responseId,
1522
+ interaction: item.data.interaction,
1523
+ item,
1524
+ };
1525
+ }
1526
+ if (item.type === "interaction_resolution" &&
1527
+ item.data.status === "resolved" &&
1528
+ item.data.resolution) {
1529
+ return {
1530
+ type: "session.interaction.resolved",
1531
+ sessionId: item.sessionId,
1532
+ responseId: item.responseId,
1533
+ interactionId: item.data.interactionId,
1534
+ resolution: item.data.resolution,
1535
+ item,
1536
+ };
1537
+ }
1538
+ if (item.type === "interaction_resolution" &&
1539
+ (item.data.status === "cancelled" || item.data.status === "expired")) {
1540
+ const reason = item.data.reason ?? (item.data.status === "expired" ? "expired" : undefined);
1541
+ return {
1542
+ type: "session.interaction.cancelled",
1543
+ sessionId: item.sessionId,
1544
+ responseId: item.responseId,
1545
+ interactionId: item.data.interactionId,
1546
+ ...(reason ? { reason } : {}),
1547
+ item,
1548
+ };
1549
+ }
1550
+ return { type: "response.output_item.done", responseId: item.responseId, item };
1551
+ }
1552
+ function normalizeRunExecutionSelection(value) {
1553
+ if (value === undefined)
1554
+ return undefined;
1555
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
1556
+ throw new MachineSessionServiceInputError("execution must be an object");
1557
+ }
1558
+ if (Object.keys(value).some((key) => key !== "model" && key !== "reasoningEffort")) {
1559
+ throw new MachineSessionServiceInputError("execution has unknown fields");
1560
+ }
1561
+ const selection = {};
1562
+ if (Object.prototype.hasOwnProperty.call(value, "model")) {
1563
+ selection.model = value.model === null
1564
+ ? null
1565
+ : validRequiredText(value.model, "execution.model");
1566
+ }
1567
+ if (Object.prototype.hasOwnProperty.call(value, "reasoningEffort")) {
1568
+ selection.reasoningEffort = value.reasoningEffort === null
1569
+ ? null
1570
+ : validRequiredText(value.reasoningEffort, "execution.reasoningEffort");
1571
+ }
1572
+ return selection;
1573
+ }
1574
+ function abortReason(signal) {
1575
+ if (signal.reason instanceof Error)
1576
+ return signal.reason;
1577
+ const error = new Error("run was cancelled");
1578
+ error.name = "AbortError";
1579
+ return error;
1580
+ }
1102
1581
  function liveSessionFailureFrom(error) {
1103
1582
  if (!error || typeof error !== "object")
1104
1583
  return undefined;
@@ -1113,6 +1592,20 @@ function liveSessionFailureFrom(error) {
1113
1592
  statusCode: candidate.statusCode,
1114
1593
  };
1115
1594
  }
1595
+ /** Turn structured native mode failures into actionable, Provider-specific
1596
+ * messages before the Direct Runtime adapter crosses the process boundary.
1597
+ * Unstructured failures keep their original text and remain subject to the
1598
+ * adapter's normal redaction policy. */
1599
+ function collaborationModeFailureMessage(provider, failure, fallback) {
1600
+ const providerLabel = provider === "traex" ? "TraeX" : "Codex";
1601
+ if (failure?.code === "native_session_not_live") {
1602
+ return `No live ${providerLabel} runner is available. Reconnect this Session and try again.`;
1603
+ }
1604
+ if (failure?.code === "native_thread_not_ready") {
1605
+ return `${providerLabel} is still loading its native thread. Reconnect this Session and try again.`;
1606
+ }
1607
+ return failure?.message ?? fallback;
1608
+ }
1116
1609
  function requestLimit(value, fallback, maximum, field) {
1117
1610
  return value === undefined ? Math.min(fallback, maximum) : boundedInteger(value, 1, maximum, field);
1118
1611
  }
@@ -1152,6 +1645,54 @@ function timestampFromEpoch(value, field) {
1152
1645
  }
1153
1646
  return new Date(value).toISOString();
1154
1647
  }
1648
+ function sessionFileVersion(path, fileStat) {
1649
+ return createHash("sha256")
1650
+ .update(`${path}\0${fileStat.dev}\0${fileStat.ino}\0${fileStat.size}\0${fileStat.mtimeMs}\0${fileStat.ctimeMs}`)
1651
+ .digest("hex");
1652
+ }
1653
+ function workspaceFileMediaType(path) {
1654
+ switch (extname(path).toLowerCase()) {
1655
+ case ".png": return "image/png";
1656
+ case ".jpg":
1657
+ case ".jpeg": return "image/jpeg";
1658
+ case ".webp": return "image/webp";
1659
+ case ".gif": return "image/gif";
1660
+ case ".svg": return "image/svg+xml";
1661
+ case ".pdf": return "application/pdf";
1662
+ case ".json": return "application/json";
1663
+ case ".html":
1664
+ case ".htm": return "text/html";
1665
+ case ".css": return "text/css";
1666
+ case ".js":
1667
+ case ".mjs":
1668
+ case ".cjs": return "text/javascript";
1669
+ case ".md":
1670
+ case ".mdx": return "text/markdown";
1671
+ case ".csv": return "text/csv";
1672
+ case ".tsv": return "text/tab-separated-values";
1673
+ case ".txt":
1674
+ case ".log":
1675
+ case ".ts":
1676
+ case ".tsx":
1677
+ case ".jsx":
1678
+ case ".py":
1679
+ case ".go":
1680
+ case ".rs":
1681
+ case ".java":
1682
+ case ".c":
1683
+ case ".cc":
1684
+ case ".cpp":
1685
+ case ".h":
1686
+ case ".hpp":
1687
+ case ".sh":
1688
+ case ".zsh":
1689
+ case ".bash":
1690
+ case ".yaml":
1691
+ case ".yml":
1692
+ case ".toml": return "text/plain";
1693
+ default: return "application/octet-stream";
1694
+ }
1695
+ }
1155
1696
  function jsonByteLength(value) {
1156
1697
  return Buffer.byteLength(JSON.stringify(value), "utf8");
1157
1698
  }