miko-code 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +179 -0
  3. package/bin/miko +10 -0
  4. package/dist/client/antigravity.webp +0 -0
  5. package/dist/client/assets/abap-BdImnpbu.js +1 -0
  6. package/dist/client/assets/actionscript-3-CoDkCxhg.js +1 -0
  7. package/dist/client/assets/ada-bCR0ucgS.js +1 -0
  8. package/dist/client/assets/andromeeda-C4gqWexZ.js +1 -0
  9. package/dist/client/assets/angular-html-CU67Zn6k.js +1 -0
  10. package/dist/client/assets/angular-ts-BwZT4LLn.js +1 -0
  11. package/dist/client/assets/apache-Pmp26Uib.js +1 -0
  12. package/dist/client/assets/apex-D8_7TLub.js +1 -0
  13. package/dist/client/assets/apl-dKokRX4l.js +1 -0
  14. package/dist/client/assets/applescript-Co6uUVPk.js +1 -0
  15. package/dist/client/assets/ara-BRHolxvo.js +1 -0
  16. package/dist/client/assets/asciidoc-Ve4PFQV2.js +1 -0
  17. package/dist/client/assets/asm-D_Q5rh1f.js +1 -0
  18. package/dist/client/assets/astro-CbQHKStN.js +1 -0
  19. package/dist/client/assets/aurora-x-D-2ljcwZ.js +1 -0
  20. package/dist/client/assets/awk-DMzUqQB5.js +1 -0
  21. package/dist/client/assets/ayu-dark-DYE7WIF3.js +1 -0
  22. package/dist/client/assets/ayu-light-BA47KaF1.js +1 -0
  23. package/dist/client/assets/ayu-mirage-32ctXXKs.js +1 -0
  24. package/dist/client/assets/ballerina-BFfxhgS-.js +1 -0
  25. package/dist/client/assets/bat-BkioyH1T.js +1 -0
  26. package/dist/client/assets/beancount-k_qm7-4y.js +1 -0
  27. package/dist/client/assets/berry-uYugtg8r.js +1 -0
  28. package/dist/client/assets/bibtex-CHM0blh-.js +1 -0
  29. package/dist/client/assets/bicep-Bmn6On1c.js +1 -0
  30. package/dist/client/assets/bird2-DPOp833l.js +1 -0
  31. package/dist/client/assets/blade-D4QpJJKB.js +1 -0
  32. package/dist/client/assets/bsl-BO_Y6i37.js +1 -0
  33. package/dist/client/assets/c-BIGW1oBm.js +1 -0
  34. package/dist/client/assets/c3-eo99z4R2.js +1 -0
  35. package/dist/client/assets/cadence-Bv_4Rxtq.js +1 -0
  36. package/dist/client/assets/cairo-KRGpt6FW.js +1 -0
  37. package/dist/client/assets/catppuccin-frappe-DFWUc33u.js +1 -0
  38. package/dist/client/assets/catppuccin-latte-C9dUb6Cb.js +1 -0
  39. package/dist/client/assets/catppuccin-macchiato-DQyhUUbL.js +1 -0
  40. package/dist/client/assets/catppuccin-mocha-D87Tk5Gz.js +1 -0
  41. package/dist/client/assets/clarity-D53aC0YG.js +1 -0
  42. package/dist/client/assets/clojure-P80f7IUj.js +1 -0
  43. package/dist/client/assets/cmake-D1j8_8rp.js +1 -0
  44. package/dist/client/assets/cobol-nwyudZeR.js +1 -0
  45. package/dist/client/assets/codeowners-Bp6g37R7.js +1 -0
  46. package/dist/client/assets/codeql-DsOJ9woJ.js +1 -0
  47. package/dist/client/assets/coffee-Ch7k5sss.js +1 -0
  48. package/dist/client/assets/common-lisp-Cg-RD9OK.js +1 -0
  49. package/dist/client/assets/coq-DkFqJrB1.js +1 -0
  50. package/dist/client/assets/cpp-CofmeUqb.js +1 -0
  51. package/dist/client/assets/crystal-tKQVLTB8.js +1 -0
  52. package/dist/client/assets/csharp-COcwbKMJ.js +1 -0
  53. package/dist/client/assets/css-DPfMkruS.js +1 -0
  54. package/dist/client/assets/csv-fuZLfV_i.js +1 -0
  55. package/dist/client/assets/cue-D82EKSYY.js +1 -0
  56. package/dist/client/assets/cypher-COkxafJQ.js +1 -0
  57. package/dist/client/assets/d-85-TOEBH.js +1 -0
  58. package/dist/client/assets/dark-plus-C3mMm8J8.js +1 -0
  59. package/dist/client/assets/dart-CF10PKvl.js +1 -0
  60. package/dist/client/assets/dax-CEL-wOlO.js +1 -0
  61. package/dist/client/assets/desktop-BmXAJ9_W.js +1 -0
  62. package/dist/client/assets/diff-D97Zzqfu.js +1 -0
  63. package/dist/client/assets/docker-BcOcwvcX.js +1 -0
  64. package/dist/client/assets/dotenv-Da5cRb03.js +1 -0
  65. package/dist/client/assets/dracula-BzJJZx-M.js +1 -0
  66. package/dist/client/assets/dracula-soft-BXkSAIEj.js +1 -0
  67. package/dist/client/assets/dream-maker-BtqSS_iP.js +1 -0
  68. package/dist/client/assets/edge-BkV0erSs.js +1 -0
  69. package/dist/client/assets/elixir-CDX3lj18.js +1 -0
  70. package/dist/client/assets/elm-DbKCFpqz.js +1 -0
  71. package/dist/client/assets/emacs-lisp-C9XAeP06.js +1 -0
  72. package/dist/client/assets/erb-B12qg9BL.js +1 -0
  73. package/dist/client/assets/erlang-DsQrWhSR.js +1 -0
  74. package/dist/client/assets/everforest-dark-BgDCqdQA.js +1 -0
  75. package/dist/client/assets/everforest-light-C8M2exoo.js +1 -0
  76. package/dist/client/assets/fennel-BYunw83y.js +1 -0
  77. package/dist/client/assets/fish-BvzEVeQv.js +1 -0
  78. package/dist/client/assets/fluent-C4IJs8-o.js +1 -0
  79. package/dist/client/assets/fortran-fixed-form-CkoXwp7k.js +1 -0
  80. package/dist/client/assets/fortran-free-form-BxgE0vQu.js +1 -0
  81. package/dist/client/assets/fsharp-CXgrBDvD.js +1 -0
  82. package/dist/client/assets/gdresource-BOOCDP_w.js +1 -0
  83. package/dist/client/assets/gdscript-C5YyOfLZ.js +1 -0
  84. package/dist/client/assets/gdshader-DkwncUOv.js +1 -0
  85. package/dist/client/assets/genie-D0YGMca9.js +1 -0
  86. package/dist/client/assets/gherkin-DyxjwDmM.js +1 -0
  87. package/dist/client/assets/git-commit-F4YmCXRG.js +1 -0
  88. package/dist/client/assets/git-rebase-r7XF79zn.js +1 -0
  89. package/dist/client/assets/github-dark-DHJKELXO.js +1 -0
  90. package/dist/client/assets/github-dark-default-Cuk6v7N8.js +1 -0
  91. package/dist/client/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
  92. package/dist/client/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
  93. package/dist/client/assets/github-light-DAi9KRSo.js +1 -0
  94. package/dist/client/assets/github-light-default-D7oLnXFd.js +1 -0
  95. package/dist/client/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
  96. package/dist/client/assets/gleam-BspZqrRM.js +1 -0
  97. package/dist/client/assets/glimmer-js-Rg0-pVw9.js +1 -0
  98. package/dist/client/assets/glimmer-ts-U6CK756n.js +1 -0
  99. package/dist/client/assets/glsl-DplSGwfg.js +1 -0
  100. package/dist/client/assets/gn-n2N0HUVH.js +1 -0
  101. package/dist/client/assets/gnuplot-DdkO51Og.js +1 -0
  102. package/dist/client/assets/go-CxLEBnE3.js +1 -0
  103. package/dist/client/assets/graphql-ChdNCCLP.js +1 -0
  104. package/dist/client/assets/groovy-gcz8RCvz.js +1 -0
  105. package/dist/client/assets/gruvbox-dark-hard-CFHQjOhq.js +1 -0
  106. package/dist/client/assets/gruvbox-dark-medium-GsRaNv29.js +1 -0
  107. package/dist/client/assets/gruvbox-dark-soft-CVdnzihN.js +1 -0
  108. package/dist/client/assets/gruvbox-light-hard-CH1njM8p.js +1 -0
  109. package/dist/client/assets/gruvbox-light-medium-DRw_LuNl.js +1 -0
  110. package/dist/client/assets/gruvbox-light-soft-hJgmCMqR.js +1 -0
  111. package/dist/client/assets/hack-CaT9iCJl.js +1 -0
  112. package/dist/client/assets/haml-B8DHNrY2.js +1 -0
  113. package/dist/client/assets/handlebars-BL8al0AC.js +1 -0
  114. package/dist/client/assets/haskell-Df6bDoY_.js +1 -0
  115. package/dist/client/assets/haxe-CzTSHFRz.js +1 -0
  116. package/dist/client/assets/hcl-BWvSN4gD.js +1 -0
  117. package/dist/client/assets/hjson-D5-asLiD.js +1 -0
  118. package/dist/client/assets/hlsl-D3lLCCz7.js +1 -0
  119. package/dist/client/assets/horizon-BUw7H-hv.js +1 -0
  120. package/dist/client/assets/horizon-bright-Cn-bp-IR.js +1 -0
  121. package/dist/client/assets/houston-DnULxvSX.js +1 -0
  122. package/dist/client/assets/html-GMplVEZG.js +1 -0
  123. package/dist/client/assets/html-derivative-BFtXZ54Q.js +1 -0
  124. package/dist/client/assets/http-jrhK8wxY.js +1 -0
  125. package/dist/client/assets/hurl-irOxFIW8.js +1 -0
  126. package/dist/client/assets/hxml-Bvhsp5Yf.js +1 -0
  127. package/dist/client/assets/hy-DFXneXwc.js +1 -0
  128. package/dist/client/assets/imba-DGztddWO.js +1 -0
  129. package/dist/client/assets/index-C07zYq_-.css +32 -0
  130. package/dist/client/assets/index-Ce3hNHfL.js +2351 -0
  131. package/dist/client/assets/ini-BEwlwnbL.js +1 -0
  132. package/dist/client/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  133. package/dist/client/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  134. package/dist/client/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  135. package/dist/client/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  136. package/dist/client/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  137. package/dist/client/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  138. package/dist/client/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  139. package/dist/client/assets/java-CylS5w8V.js +1 -0
  140. package/dist/client/assets/javascript-wDzz0qaB.js +1 -0
  141. package/dist/client/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
  142. package/dist/client/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
  143. package/dist/client/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  144. package/dist/client/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  145. package/dist/client/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
  146. package/dist/client/assets/jinja-4LBKfQ-Z.js +1 -0
  147. package/dist/client/assets/jison-wvAkD_A8.js +1 -0
  148. package/dist/client/assets/json-Cp-IABpG.js +1 -0
  149. package/dist/client/assets/json5-C9tS-k6U.js +1 -0
  150. package/dist/client/assets/jsonc-Des-eS-w.js +1 -0
  151. package/dist/client/assets/jsonl-DcaNXYhu.js +1 -0
  152. package/dist/client/assets/jsonnet-DFQXde-d.js +1 -0
  153. package/dist/client/assets/jssm-C2t-YnRu.js +1 -0
  154. package/dist/client/assets/jsx-g9-lgVsj.js +1 -0
  155. package/dist/client/assets/julia-CxzCAyBv.js +1 -0
  156. package/dist/client/assets/just-Cw27pwNe.js +1 -0
  157. package/dist/client/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
  158. package/dist/client/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
  159. package/dist/client/assets/kanagawa-wave-DWedfzmr.js +1 -0
  160. package/dist/client/assets/kdl-DV7GczEv.js +1 -0
  161. package/dist/client/assets/kotlin-BdnUsdx6.js +1 -0
  162. package/dist/client/assets/kusto-DZf3V79B.js +1 -0
  163. package/dist/client/assets/laserwave-DUszq2jm.js +1 -0
  164. package/dist/client/assets/latex-CWtU0Tv5.js +1 -0
  165. package/dist/client/assets/lean-BZvkOJ9d.js +1 -0
  166. package/dist/client/assets/less-B1dDrJ26.js +1 -0
  167. package/dist/client/assets/light-plus-B7mTdjB0.js +1 -0
  168. package/dist/client/assets/liquid-DYVedYrR.js +1 -0
  169. package/dist/client/assets/llvm-DjAJT7YJ.js +1 -0
  170. package/dist/client/assets/log-2UxHyX5q.js +1 -0
  171. package/dist/client/assets/logo-BtOb2qkB.js +1 -0
  172. package/dist/client/assets/lua-BaeVxFsk.js +1 -0
  173. package/dist/client/assets/luau-C-HG3fhB.js +1 -0
  174. package/dist/client/assets/make-CHLpvVh8.js +1 -0
  175. package/dist/client/assets/markdown-Cvjx9yec.js +1 -0
  176. package/dist/client/assets/marko-CnJfTvn9.js +1 -0
  177. package/dist/client/assets/material-theme-D5KoaKCx.js +1 -0
  178. package/dist/client/assets/material-theme-darker-BfHTSMKl.js +1 -0
  179. package/dist/client/assets/material-theme-lighter-B0m2ddpp.js +1 -0
  180. package/dist/client/assets/material-theme-ocean-CyktbL80.js +1 -0
  181. package/dist/client/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
  182. package/dist/client/assets/matlab-D7o27uSR.js +1 -0
  183. package/dist/client/assets/mdc-BMNejdWA.js +1 -0
  184. package/dist/client/assets/mdx-Cmh6b_Ma.js +1 -0
  185. package/dist/client/assets/mermaid-mWjccvbQ.js +1 -0
  186. package/dist/client/assets/min-dark-CafNBF8u.js +1 -0
  187. package/dist/client/assets/min-light-CTRr51gU.js +1 -0
  188. package/dist/client/assets/mipsasm-CKIfxQSi.js +1 -0
  189. package/dist/client/assets/mojo-rZm6bMo-.js +1 -0
  190. package/dist/client/assets/monokai-D4h5O-jR.js +1 -0
  191. package/dist/client/assets/moonbit-_H4v1dQx.js +1 -0
  192. package/dist/client/assets/move-IF9eRakj.js +1 -0
  193. package/dist/client/assets/narrat-DRg8JJMk.js +1 -0
  194. package/dist/client/assets/nextflow-Zz6hmt5N.js +1 -0
  195. package/dist/client/assets/nextflow-groovy-BeH2EWoN.js +1 -0
  196. package/dist/client/assets/nginx-BpAMiNFr.js +1 -0
  197. package/dist/client/assets/night-owl-C39BiMTA.js +1 -0
  198. package/dist/client/assets/night-owl-light-CMTm3GFP.js +1 -0
  199. package/dist/client/assets/nim-CVrawwO9.js +1 -0
  200. package/dist/client/assets/nix-CwoSXNpI.js +1 -0
  201. package/dist/client/assets/nord-Ddv68eIx.js +1 -0
  202. package/dist/client/assets/nushell-Cz2AlsmD.js +1 -0
  203. package/dist/client/assets/objective-c-DXmwc3jG.js +1 -0
  204. package/dist/client/assets/objective-cpp-CLxacb5B.js +1 -0
  205. package/dist/client/assets/ocaml-C0hk2d4L.js +1 -0
  206. package/dist/client/assets/odin-BBf5iR-q.js +1 -0
  207. package/dist/client/assets/one-dark-pro-DVMEJ2y_.js +1 -0
  208. package/dist/client/assets/one-light-C3Wv6jpd.js +1 -0
  209. package/dist/client/assets/openscad-C4EeE6gA.js +1 -0
  210. package/dist/client/assets/pascal-D93ZcfNL.js +1 -0
  211. package/dist/client/assets/perl-C0TMdlhV.js +1 -0
  212. package/dist/client/assets/php-Dhbhpdrm.js +1 -0
  213. package/dist/client/assets/pierre-dark-DF2SEV7i.js +1 -0
  214. package/dist/client/assets/pierre-light-DOlZxES8.js +1 -0
  215. package/dist/client/assets/pkl-u5AG7uiY.js +1 -0
  216. package/dist/client/assets/plastic-3e1v2bzS.js +1 -0
  217. package/dist/client/assets/plsql-ChMvpjG-.js +1 -0
  218. package/dist/client/assets/po-BTJTHyun.js +1 -0
  219. package/dist/client/assets/poimandres-CS3Unz2-.js +1 -0
  220. package/dist/client/assets/polar-C0HS_06l.js +1 -0
  221. package/dist/client/assets/postcss-CXtECtnM.js +1 -0
  222. package/dist/client/assets/powerquery-CEu0bR-o.js +1 -0
  223. package/dist/client/assets/powershell-Dpen1YoG.js +1 -0
  224. package/dist/client/assets/prisma-Dd19v3D-.js +1 -0
  225. package/dist/client/assets/prolog-CbFg5uaA.js +1 -0
  226. package/dist/client/assets/proto-C7zT0LnQ.js +1 -0
  227. package/dist/client/assets/pug-CGlum2m_.js +1 -0
  228. package/dist/client/assets/puppet-BMWR74SV.js +1 -0
  229. package/dist/client/assets/purescript-CklMAg4u.js +1 -0
  230. package/dist/client/assets/python-B6aJPvgy.js +1 -0
  231. package/dist/client/assets/qml-3beO22l8.js +1 -0
  232. package/dist/client/assets/qmldir-C8lEn-DE.js +1 -0
  233. package/dist/client/assets/qss-IeuSbFQv.js +1 -0
  234. package/dist/client/assets/r-Dspwwk_N.js +1 -0
  235. package/dist/client/assets/racket-BqYA7rlc.js +1 -0
  236. package/dist/client/assets/raku-DXvB9xmW.js +1 -0
  237. package/dist/client/assets/razor-Uh8Bk_45.js +1 -0
  238. package/dist/client/assets/red-bN70gL4F.js +1 -0
  239. package/dist/client/assets/reg-C-SQnVFl.js +1 -0
  240. package/dist/client/assets/regexp-CDVJQ6XC.js +1 -0
  241. package/dist/client/assets/rel-C3B-1QV4.js +1 -0
  242. package/dist/client/assets/riscv-BM1_JUlF.js +1 -0
  243. package/dist/client/assets/ron-D8l8udqQ.js +1 -0
  244. package/dist/client/assets/rose-pine-dawn-DHQR4-dF.js +1 -0
  245. package/dist/client/assets/rose-pine-moon-D4_iv3hh.js +1 -0
  246. package/dist/client/assets/rose-pine-qdsjHGoJ.js +1 -0
  247. package/dist/client/assets/rosmsg-BJDFO7_C.js +1 -0
  248. package/dist/client/assets/rst-BrH8l1NY.js +1 -0
  249. package/dist/client/assets/ruby-Dw2BHqvy.js +1 -0
  250. package/dist/client/assets/rust-B1yitclQ.js +1 -0
  251. package/dist/client/assets/sas-cz2c8ADy.js +1 -0
  252. package/dist/client/assets/sass-Cj5Yp3dK.js +1 -0
  253. package/dist/client/assets/scala-C151Ov-r.js +1 -0
  254. package/dist/client/assets/scheme-C98Dy4si.js +1 -0
  255. package/dist/client/assets/scratchpad-page-DcMny6uZ.js +1 -0
  256. package/dist/client/assets/scss-OYdSNvt2.js +1 -0
  257. package/dist/client/assets/sdbl-DVxCFoDh.js +1 -0
  258. package/dist/client/assets/shaderlab-Dg9Lc6iA.js +1 -0
  259. package/dist/client/assets/shellscript-Yzrsuije.js +1 -0
  260. package/dist/client/assets/shellsession-BADoaaVG.js +1 -0
  261. package/dist/client/assets/slack-dark-BthQWCQV.js +1 -0
  262. package/dist/client/assets/slack-ochin-DqwNpetd.js +1 -0
  263. package/dist/client/assets/smalltalk-BERRCDM3.js +1 -0
  264. package/dist/client/assets/snazzy-light-Bw305WKR.js +1 -0
  265. package/dist/client/assets/solarized-dark-DXbdFlpD.js +1 -0
  266. package/dist/client/assets/solarized-light-L9t79GZl.js +1 -0
  267. package/dist/client/assets/solidity-rGO070M0.js +1 -0
  268. package/dist/client/assets/soy-Brmx7dQM.js +1 -0
  269. package/dist/client/assets/sparql-rVzFXLq3.js +1 -0
  270. package/dist/client/assets/splunk-BtCnVYZw.js +1 -0
  271. package/dist/client/assets/sql-BLtJtn59.js +1 -0
  272. package/dist/client/assets/ssh-config-_ykCGR6B.js +1 -0
  273. package/dist/client/assets/stata-BH5u7GGu.js +1 -0
  274. package/dist/client/assets/stylus-BEDo0Tqx.js +1 -0
  275. package/dist/client/assets/surrealql-Bq5Q-fJD.js +1 -0
  276. package/dist/client/assets/svelte-C_ipcX3V.js +1 -0
  277. package/dist/client/assets/swift-D82vCrfD.js +1 -0
  278. package/dist/client/assets/synthwave-84-CbfX1IO0.js +1 -0
  279. package/dist/client/assets/system-verilog-CnnmHF94.js +1 -0
  280. package/dist/client/assets/systemd-4A_iFExJ.js +1 -0
  281. package/dist/client/assets/talonscript-CkByrt1z.js +1 -0
  282. package/dist/client/assets/tasl-QIJgUcNo.js +1 -0
  283. package/dist/client/assets/tcl-dwOrl1Do.js +1 -0
  284. package/dist/client/assets/templ-P3uqSqPl.js +1 -0
  285. package/dist/client/assets/terraform-BETggiCN.js +1 -0
  286. package/dist/client/assets/tex-idrVyKtj.js +1 -0
  287. package/dist/client/assets/tokyo-night-hegEt444.js +1 -0
  288. package/dist/client/assets/toml-vGWfd6FD.js +1 -0
  289. package/dist/client/assets/ts-tags-zn1MmPIZ.js +1 -0
  290. package/dist/client/assets/tsv-B_m7g4N7.js +1 -0
  291. package/dist/client/assets/tsx-COt5Ahok.js +1 -0
  292. package/dist/client/assets/turtle-BsS91CYL.js +1 -0
  293. package/dist/client/assets/twig-DNn4PbVi.js +1 -0
  294. package/dist/client/assets/typescript-BPQ3VLAy.js +1 -0
  295. package/dist/client/assets/typespec-BGHnOYBU.js +1 -0
  296. package/dist/client/assets/typst-DHCkPAjA.js +1 -0
  297. package/dist/client/assets/v-BcVCzyr7.js +1 -0
  298. package/dist/client/assets/vala-CsfeWuGM.js +1 -0
  299. package/dist/client/assets/vb-D17OF-Vu.js +1 -0
  300. package/dist/client/assets/verilog-BQ8w6xss.js +1 -0
  301. package/dist/client/assets/vesper-DU1UobuO.js +1 -0
  302. package/dist/client/assets/vhdl-CeAyd5Ju.js +1 -0
  303. package/dist/client/assets/viml-CJc9bBzg.js +1 -0
  304. package/dist/client/assets/vitesse-black-Bkuqu6BP.js +1 -0
  305. package/dist/client/assets/vitesse-dark-D0r3Knsf.js +1 -0
  306. package/dist/client/assets/vitesse-light-CVO1_9PV.js +1 -0
  307. package/dist/client/assets/vue-DN_0RTcg.js +1 -0
  308. package/dist/client/assets/vue-html-AaS7Mt5G.js +1 -0
  309. package/dist/client/assets/vue-vine-CQOfvN7w.js +1 -0
  310. package/dist/client/assets/vyper-CDx5xZoG.js +1 -0
  311. package/dist/client/assets/wasm-CG6Dc4jp.js +1 -0
  312. package/dist/client/assets/wasm-MzD3tlZU.js +1 -0
  313. package/dist/client/assets/wenyan-BV7otONQ.js +1 -0
  314. package/dist/client/assets/wgsl-Dx-B1_4e.js +1 -0
  315. package/dist/client/assets/wikitext-BhOHFoWU.js +1 -0
  316. package/dist/client/assets/wit-5i3qLPDT.js +1 -0
  317. package/dist/client/assets/wolfram-lXgVvXCa.js +1 -0
  318. package/dist/client/assets/xml-sdJ4AIDG.js +1 -0
  319. package/dist/client/assets/xsl-CtQFsRM5.js +1 -0
  320. package/dist/client/assets/yaml-Buea-lGh.js +1 -0
  321. package/dist/client/assets/zenscript-DVFEvuxE.js +1 -0
  322. package/dist/client/assets/zig-VOosw3JB.js +1 -0
  323. package/dist/client/cursor.png +0 -0
  324. package/dist/client/favicon.svg +17 -0
  325. package/dist/client/finder.png +0 -0
  326. package/dist/client/icons/claude.svg +1 -0
  327. package/dist/client/icons/openai.svg +1 -0
  328. package/dist/client/images/github.png +0 -0
  329. package/dist/client/index.html +15 -0
  330. package/dist/client/logo.svg +17 -0
  331. package/dist/client/terminal.png +0 -0
  332. package/dist/client/vscode.png +0 -0
  333. package/dist/client/warp.png +0 -0
  334. package/package.json +107 -0
  335. package/src/server/agent-instruction-attachments.ts +458 -0
  336. package/src/server/agent.ts +1879 -0
  337. package/src/server/cli-runtime.ts +418 -0
  338. package/src/server/cli-supervisor.ts +90 -0
  339. package/src/server/cli.ts +102 -0
  340. package/src/server/codex-app-server-protocol.ts +478 -0
  341. package/src/server/codex-app-server.ts +1645 -0
  342. package/src/server/data-dir-lock.ts +128 -0
  343. package/src/server/diff-store.ts +1587 -0
  344. package/src/server/durable-file.ts +74 -0
  345. package/src/server/event-store.ts +1448 -0
  346. package/src/server/event.ts +249 -0
  347. package/src/server/external-file-access.ts +48 -0
  348. package/src/server/external-open.ts +259 -0
  349. package/src/server/generate-title.ts +75 -0
  350. package/src/server/git-refresh-poller.ts +92 -0
  351. package/src/server/github-rest-client.ts +176 -0
  352. package/src/server/harness-types.ts +24 -0
  353. package/src/server/keybindings.ts +203 -0
  354. package/src/server/machine-name.ts +22 -0
  355. package/src/server/paths.ts +51 -0
  356. package/src/server/pr-manager.ts +1204 -0
  357. package/src/server/pr-refresh-poller.ts +126 -0
  358. package/src/server/process-utils.ts +18 -0
  359. package/src/server/provider-catalog.ts +90 -0
  360. package/src/server/quick-response.ts +274 -0
  361. package/src/server/read-models.ts +311 -0
  362. package/src/server/restart.ts +33 -0
  363. package/src/server/scratchpad-manager.ts +87 -0
  364. package/src/server/server.ts +759 -0
  365. package/src/server/share.ts +126 -0
  366. package/src/server/terminal-manager.ts +371 -0
  367. package/src/server/update-manager.ts +250 -0
  368. package/src/server/uploads.ts +191 -0
  369. package/src/server/workspace-file-search.ts +191 -0
  370. package/src/server/workspace-manager.ts +627 -0
  371. package/src/server/workspace-polling.ts +10 -0
  372. package/src/server/ws-router.ts +1039 -0
  373. package/src/shared/branding.ts +69 -0
  374. package/src/shared/dev-ports.ts +100 -0
  375. package/src/shared/ports.ts +2 -0
  376. package/src/shared/protocol.ts +217 -0
  377. package/src/shared/tools.ts +324 -0
  378. package/src/shared/types.ts +1220 -0
  379. package/tsconfig.json +35 -0
@@ -0,0 +1,126 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { bin as cloudflaredBin, install as installCloudflared, Tunnel } from 'cloudflared';
3
+ import QRCode from 'qrcode';
4
+
5
+ export interface StartedShareTunnel {
6
+ publicUrl: string;
7
+ stop: () => void;
8
+ }
9
+
10
+ export interface ShareTunnelProcess {
11
+ once(event: 'url', listener: (url: string) => void): ShareTunnelProcess;
12
+ once(event: 'error', listener: (error: Error) => void): ShareTunnelProcess;
13
+ once(
14
+ event: 'exit',
15
+ listener: (code: number | null, signal: NodeJS.Signals | null) => void,
16
+ ): ShareTunnelProcess;
17
+ off(event: 'url', listener: (url: string) => void): ShareTunnelProcess;
18
+ off(event: 'error', listener: (error: Error) => void): ShareTunnelProcess;
19
+ off(
20
+ event: 'exit',
21
+ listener: (code: number | null, signal: NodeJS.Signals | null) => void,
22
+ ): ShareTunnelProcess;
23
+ stop(): boolean;
24
+ }
25
+
26
+ export interface ShareTunnelDeps {
27
+ cloudflaredBin?: string;
28
+ existsSync?: (path: string) => boolean;
29
+ installCloudflared?: (to: string) => Promise<string>;
30
+ createQuickTunnel?: (localUrl: string) => ShareTunnelProcess;
31
+ log?: (message: string) => void;
32
+ }
33
+
34
+ export async function renderTerminalQr(url: string) {
35
+ return QRCode.toString(url, {
36
+ type: 'terminal',
37
+ small: true,
38
+ errorCorrectionLevel: 'M',
39
+ });
40
+ }
41
+
42
+ export async function ensureCloudflaredInstalled(deps: ShareTunnelDeps = {}) {
43
+ const resolvedBin = deps.cloudflaredBin ?? cloudflaredBin;
44
+ const fileExists = deps.existsSync ?? existsSync;
45
+ const installBinary = deps.installCloudflared ?? installCloudflared;
46
+
47
+ if (fileExists(resolvedBin)) {
48
+ return resolvedBin;
49
+ }
50
+
51
+ deps.log?.('installing cloudflared binary');
52
+ await installBinary(resolvedBin);
53
+ return resolvedBin;
54
+ }
55
+
56
+ export async function startShareTunnel(
57
+ localUrl: string,
58
+ deps: ShareTunnelDeps = {},
59
+ ): Promise<StartedShareTunnel> {
60
+ await ensureCloudflaredInstalled(deps);
61
+ const tunnel = (deps.createQuickTunnel ?? ((url) => Tunnel.quick(url)))(localUrl);
62
+
63
+ const publicUrl = await new Promise<string>((resolve, reject) => {
64
+ let settled = false;
65
+
66
+ const cleanup = () => {
67
+ tunnel.off('url', handleUrl);
68
+ tunnel.off('error', handleError);
69
+ tunnel.off('exit', handleExit);
70
+ };
71
+
72
+ const settle = (callback: () => void) => {
73
+ if (settled) return;
74
+ settled = true;
75
+ cleanup();
76
+ callback();
77
+ };
78
+
79
+ const handleUrl = (url: string) => {
80
+ settle(() => resolve(url));
81
+ };
82
+
83
+ const handleError = (error: Error) => {
84
+ settle(() => reject(error));
85
+ };
86
+
87
+ const handleExit = (code: number | null, signal: NodeJS.Signals | null) => {
88
+ settle(() =>
89
+ reject(
90
+ new Error(
91
+ `Cloudflare tunnel exited before a public URL was ready (code: ${String(code)}, signal: ${String(signal)})`,
92
+ ),
93
+ ),
94
+ );
95
+ };
96
+
97
+ tunnel.once('url', handleUrl);
98
+ tunnel.once('error', handleError);
99
+ tunnel.once('exit', handleExit);
100
+ });
101
+
102
+ return {
103
+ publicUrl,
104
+ stop: () => {
105
+ tunnel.stop();
106
+ },
107
+ };
108
+ }
109
+
110
+ export async function logShareDetails(
111
+ log: (message: string) => void,
112
+ publicUrl: string,
113
+ localUrl: string,
114
+ renderShareQrImpl: (url: string) => Promise<string> = renderTerminalQr,
115
+ ) {
116
+ const qrCode = await renderShareQrImpl(publicUrl);
117
+
118
+ log('QR Code:');
119
+ log(qrCode.trimEnd());
120
+ log('');
121
+ log('Public URL:');
122
+ log(publicUrl);
123
+ log('');
124
+ log('Local URL:');
125
+ log(localUrl);
126
+ }
@@ -0,0 +1,371 @@
1
+ import path from 'node:path';
2
+ import process from 'node:process';
3
+ import { SerializeAddon } from '@xterm/addon-serialize';
4
+ import { Terminal } from '@xterm/headless';
5
+ import defaultShell, { detectDefaultShell } from 'default-shell';
6
+ import type { TerminalEvent, TerminalSnapshot } from '../shared/protocol';
7
+
8
+ const DEFAULT_COLS = 80;
9
+ const DEFAULT_ROWS = 24;
10
+ const DEFAULT_SCROLLBACK = 1_000;
11
+ const MIN_SCROLLBACK = 500;
12
+ const MAX_SCROLLBACK = 5_000;
13
+ const FOCUS_IN_SEQUENCE = '\x1b[I';
14
+ const FOCUS_OUT_SEQUENCE = '\x1b[O';
15
+ const MODE_SEQUENCE_TAIL_LENGTH = 16;
16
+
17
+ interface CreateTerminalArgs {
18
+ workspacePath: string;
19
+ terminalId: string;
20
+ cols: number;
21
+ rows: number;
22
+ scrollback: number;
23
+ }
24
+
25
+ interface TerminalSession {
26
+ terminalId: string;
27
+ title: string;
28
+ cwd: string;
29
+ shell: string;
30
+ cols: number;
31
+ rows: number;
32
+ scrollback: number;
33
+ status: 'running' | 'exited';
34
+ exitCode: number | null;
35
+ process: Bun.Subprocess | null;
36
+ terminal: Bun.Terminal;
37
+ headless: Terminal;
38
+ serializeAddon: SerializeAddon;
39
+ focusReportingEnabled: boolean;
40
+ modeSequenceTail: string;
41
+ }
42
+
43
+ interface ResolveShellOptions {
44
+ detect?: () => string;
45
+ defaultShellPath?: string | null;
46
+ env?: Record<string, string | undefined>;
47
+ }
48
+
49
+ export function clampScrollback(value: number) {
50
+ if (!Number.isFinite(value)) return DEFAULT_SCROLLBACK;
51
+ return Math.min(MAX_SCROLLBACK, Math.max(MIN_SCROLLBACK, Math.round(value)));
52
+ }
53
+
54
+ export function normalizeTerminalDimension(value: number, fallback: number) {
55
+ if (!Number.isFinite(value)) return fallback;
56
+ return Math.max(1, Math.round(value));
57
+ }
58
+
59
+ export function resolveShell(options: ResolveShellOptions = {}) {
60
+ const detect = options.detect ?? detectDefaultShell;
61
+ const defaultShellPath =
62
+ options.defaultShellPath === undefined ? defaultShell : options.defaultShellPath;
63
+ const env = options.env ?? process.env;
64
+
65
+ try {
66
+ return detect();
67
+ } catch {
68
+ if (defaultShellPath) return defaultShellPath;
69
+ return env.SHELL || '/bin/sh';
70
+ }
71
+ }
72
+
73
+ export function resolveShellArgs(shellPath: string) {
74
+ const shellName = path.basename(shellPath);
75
+ if (['bash', 'zsh', 'fish', 'sh', 'ksh'].includes(shellName)) {
76
+ return ['-l'];
77
+ }
78
+ return [];
79
+ }
80
+
81
+ function createTerminalEnv() {
82
+ return {
83
+ ...process.env,
84
+ TERM: 'xterm-256color',
85
+ COLORTERM: 'truecolor',
86
+ };
87
+ }
88
+
89
+ export function updateFocusReportingState(
90
+ session: Pick<TerminalSession, 'focusReportingEnabled' | 'modeSequenceTail'>,
91
+ chunk: string,
92
+ ) {
93
+ const combined = session.modeSequenceTail + chunk;
94
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: ESC (\x1b) is required to match ANSI focus-reporting mode toggles.
95
+ const regex = /\x1b\[\?1004([hl])/g;
96
+
97
+ for (const match of combined.matchAll(regex)) {
98
+ session.focusReportingEnabled = match[1] === 'h';
99
+ }
100
+
101
+ session.modeSequenceTail = combined.slice(-MODE_SEQUENCE_TAIL_LENGTH);
102
+ }
103
+
104
+ function filterFocusReportInput(data: string, allowFocusReporting: boolean) {
105
+ if (allowFocusReporting) {
106
+ return data;
107
+ }
108
+
109
+ return data.replaceAll(FOCUS_IN_SEQUENCE, '').replaceAll(FOCUS_OUT_SEQUENCE, '');
110
+ }
111
+
112
+ function isValidProcessGroupPid(pid: number) {
113
+ return Number.isInteger(pid) && pid > 0;
114
+ }
115
+
116
+ export function killTerminalProcessTree(subprocess: Bun.Subprocess | null) {
117
+ if (!subprocess) return;
118
+
119
+ const pid = subprocess.pid;
120
+ if (!isValidProcessGroupPid(pid)) return;
121
+
122
+ try {
123
+ process.kill(-pid, 'SIGKILL');
124
+ return;
125
+ } catch {
126
+ // Fall back to killing only the shell process if group termination fails.
127
+ }
128
+
129
+ try {
130
+ subprocess.kill('SIGKILL');
131
+ } catch {
132
+ // Ignore subprocess shutdown errors during disposal.
133
+ }
134
+ }
135
+
136
+ export function signalTerminalProcessGroup(
137
+ subprocess: Bun.Subprocess | null,
138
+ signal: NodeJS.Signals,
139
+ ) {
140
+ if (!subprocess) return false;
141
+
142
+ const pid = subprocess.pid;
143
+ if (!isValidProcessGroupPid(pid)) return false;
144
+
145
+ try {
146
+ process.kill(-pid, signal);
147
+ return true;
148
+ } catch {
149
+ // Fall back to signaling only the shell if group signaling fails.
150
+ }
151
+
152
+ try {
153
+ subprocess.kill(signal);
154
+ return true;
155
+ } catch {
156
+ return false;
157
+ }
158
+ }
159
+
160
+ export class TerminalManager {
161
+ private readonly sessions = new Map<string, TerminalSession>();
162
+ private readonly listeners = new Set<(event: TerminalEvent) => void>();
163
+
164
+ onEvent(listener: (event: TerminalEvent) => void) {
165
+ this.listeners.add(listener);
166
+ return () => {
167
+ this.listeners.delete(listener);
168
+ };
169
+ }
170
+
171
+ createTerminal(args: CreateTerminalArgs) {
172
+ if (typeof Bun.Terminal !== 'function') {
173
+ throw new Error('Embedded terminal requires Bun 1.3.5+ with Bun.Terminal support.');
174
+ }
175
+
176
+ const existing = this.sessions.get(args.terminalId);
177
+ if (existing) {
178
+ existing.scrollback = clampScrollback(args.scrollback);
179
+ existing.cols = normalizeTerminalDimension(args.cols, existing.cols);
180
+ existing.rows = normalizeTerminalDimension(args.rows, existing.rows);
181
+
182
+ existing.headless.options.scrollback = existing.scrollback;
183
+ existing.headless.resize(existing.cols, existing.rows);
184
+ existing.terminal.resize(existing.cols, existing.rows);
185
+
186
+ signalTerminalProcessGroup(existing.process, 'SIGWINCH');
187
+ return this.snapshotOf(existing);
188
+ }
189
+
190
+ const shell = resolveShell();
191
+ const cols = normalizeTerminalDimension(args.cols, DEFAULT_COLS);
192
+ const rows = normalizeTerminalDimension(args.rows, DEFAULT_ROWS);
193
+ const scrollback = clampScrollback(args.scrollback);
194
+
195
+ const title = path.basename(shell) || 'shell';
196
+ const headless = new Terminal({ cols, rows, scrollback, allowProposedApi: true });
197
+ const serializeAddon = new SerializeAddon();
198
+ headless.loadAddon(serializeAddon);
199
+
200
+ const session: TerminalSession = {
201
+ terminalId: args.terminalId,
202
+ title,
203
+ cwd: args.workspacePath,
204
+ shell,
205
+ cols,
206
+ rows,
207
+ scrollback,
208
+ status: 'running',
209
+ exitCode: null,
210
+ process: null,
211
+ terminal: new Bun.Terminal({
212
+ cols,
213
+ rows,
214
+ name: 'xterm-256color',
215
+ data: (_terminal, data) => {
216
+ const chunk = Buffer.from(data).toString('utf8');
217
+ updateFocusReportingState(session, chunk);
218
+ headless.write(chunk);
219
+ this.emit({
220
+ type: 'terminal.output',
221
+ terminalId: args.terminalId,
222
+ data: chunk,
223
+ });
224
+ },
225
+ }),
226
+ headless,
227
+ serializeAddon,
228
+ focusReportingEnabled: false,
229
+ modeSequenceTail: '',
230
+ };
231
+
232
+ try {
233
+ session.process = Bun.spawn([shell, ...resolveShellArgs(shell)], {
234
+ cwd: args.workspacePath,
235
+ env: createTerminalEnv(),
236
+ terminal: session.terminal,
237
+ });
238
+ } catch (error) {
239
+ session.terminal.close();
240
+ session.serializeAddon.dispose();
241
+ session.headless.dispose();
242
+ throw error;
243
+ }
244
+
245
+ void session.process.exited
246
+ .then((exitCode) => {
247
+ const active = this.sessions.get(args.terminalId);
248
+ if (!active) return;
249
+
250
+ active.status = 'exited';
251
+ active.exitCode = exitCode;
252
+
253
+ this.emit({
254
+ type: 'terminal.exit',
255
+ terminalId: args.terminalId,
256
+ exitCode,
257
+ });
258
+ })
259
+ .catch((error) => {
260
+ const active = this.sessions.get(args.terminalId);
261
+ if (!active) return;
262
+
263
+ active.status = 'exited';
264
+ active.exitCode = 1;
265
+
266
+ this.emit({
267
+ type: 'terminal.output',
268
+ terminalId: args.terminalId,
269
+ data: `\r\n[terminal error] ${error instanceof Error ? error.message : String(error)}\r\n`,
270
+ });
271
+
272
+ this.emit({
273
+ type: 'terminal.exit',
274
+ terminalId: args.terminalId,
275
+ exitCode: 1,
276
+ });
277
+ });
278
+
279
+ this.sessions.set(args.terminalId, session);
280
+ return this.snapshotOf(session);
281
+ }
282
+
283
+ getSnapshot(terminalId: string): TerminalSnapshot | null {
284
+ const session = this.sessions.get(terminalId);
285
+ return session ? this.snapshotOf(session) : null;
286
+ }
287
+
288
+ write(terminalId: string, data: string) {
289
+ const session = this.sessions.get(terminalId);
290
+ if (!session || session.status === 'exited') return;
291
+
292
+ const filteredData = filterFocusReportInput(data, session.focusReportingEnabled);
293
+ if (!filteredData) return;
294
+
295
+ let cursor = 0;
296
+
297
+ while (cursor < filteredData.length) {
298
+ const ctrlCIndex = filteredData.indexOf('\x03', cursor);
299
+
300
+ if (ctrlCIndex === -1) {
301
+ session.terminal.write(filteredData.slice(cursor));
302
+ return;
303
+ }
304
+
305
+ if (ctrlCIndex > cursor) {
306
+ session.terminal.write(filteredData.slice(cursor, ctrlCIndex));
307
+ }
308
+
309
+ signalTerminalProcessGroup(session.process, 'SIGINT');
310
+ cursor = ctrlCIndex + 1;
311
+ }
312
+ }
313
+
314
+ resize(terminalId: string, cols: number, rows: number) {
315
+ const session = this.sessions.get(terminalId);
316
+ if (!session) return;
317
+
318
+ session.cols = normalizeTerminalDimension(cols, session.cols);
319
+ session.rows = normalizeTerminalDimension(rows, session.rows);
320
+
321
+ session.headless.resize(session.cols, session.rows);
322
+ session.terminal.resize(session.cols, session.rows);
323
+ signalTerminalProcessGroup(session.process, 'SIGWINCH');
324
+ }
325
+
326
+ close(terminalId: string) {
327
+ const session = this.sessions.get(terminalId);
328
+ if (!session) return;
329
+
330
+ this.sessions.delete(terminalId);
331
+ killTerminalProcessTree(session.process);
332
+
333
+ session.terminal.close();
334
+ session.serializeAddon.dispose();
335
+ session.headless.dispose();
336
+ }
337
+
338
+ closeByCwd(cwd: string) {
339
+ for (const [terminalId, session] of this.sessions.entries()) {
340
+ if (session.cwd !== cwd) continue;
341
+ this.close(terminalId);
342
+ }
343
+ }
344
+
345
+ closeAll() {
346
+ for (const terminalId of this.sessions.keys()) {
347
+ this.close(terminalId);
348
+ }
349
+ }
350
+
351
+ private snapshotOf(session: TerminalSession): TerminalSnapshot {
352
+ return {
353
+ terminalId: session.terminalId,
354
+ title: session.title,
355
+ cwd: session.cwd,
356
+ shell: session.shell,
357
+ cols: session.cols,
358
+ rows: session.rows,
359
+ scrollback: session.scrollback,
360
+ serializedState: session.serializeAddon.serialize({ scrollback: session.scrollback }),
361
+ status: session.status,
362
+ exitCode: session.exitCode,
363
+ };
364
+ }
365
+
366
+ private emit(event: TerminalEvent) {
367
+ for (const listener of this.listeners) {
368
+ listener(event);
369
+ }
370
+ }
371
+ }