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.
- package/LICENSE +21 -0
- package/README.md +179 -0
- package/bin/miko +10 -0
- package/dist/client/antigravity.webp +0 -0
- package/dist/client/assets/abap-BdImnpbu.js +1 -0
- package/dist/client/assets/actionscript-3-CoDkCxhg.js +1 -0
- package/dist/client/assets/ada-bCR0ucgS.js +1 -0
- package/dist/client/assets/andromeeda-C4gqWexZ.js +1 -0
- package/dist/client/assets/angular-html-CU67Zn6k.js +1 -0
- package/dist/client/assets/angular-ts-BwZT4LLn.js +1 -0
- package/dist/client/assets/apache-Pmp26Uib.js +1 -0
- package/dist/client/assets/apex-D8_7TLub.js +1 -0
- package/dist/client/assets/apl-dKokRX4l.js +1 -0
- package/dist/client/assets/applescript-Co6uUVPk.js +1 -0
- package/dist/client/assets/ara-BRHolxvo.js +1 -0
- package/dist/client/assets/asciidoc-Ve4PFQV2.js +1 -0
- package/dist/client/assets/asm-D_Q5rh1f.js +1 -0
- package/dist/client/assets/astro-CbQHKStN.js +1 -0
- package/dist/client/assets/aurora-x-D-2ljcwZ.js +1 -0
- package/dist/client/assets/awk-DMzUqQB5.js +1 -0
- package/dist/client/assets/ayu-dark-DYE7WIF3.js +1 -0
- package/dist/client/assets/ayu-light-BA47KaF1.js +1 -0
- package/dist/client/assets/ayu-mirage-32ctXXKs.js +1 -0
- package/dist/client/assets/ballerina-BFfxhgS-.js +1 -0
- package/dist/client/assets/bat-BkioyH1T.js +1 -0
- package/dist/client/assets/beancount-k_qm7-4y.js +1 -0
- package/dist/client/assets/berry-uYugtg8r.js +1 -0
- package/dist/client/assets/bibtex-CHM0blh-.js +1 -0
- package/dist/client/assets/bicep-Bmn6On1c.js +1 -0
- package/dist/client/assets/bird2-DPOp833l.js +1 -0
- package/dist/client/assets/blade-D4QpJJKB.js +1 -0
- package/dist/client/assets/bsl-BO_Y6i37.js +1 -0
- package/dist/client/assets/c-BIGW1oBm.js +1 -0
- package/dist/client/assets/c3-eo99z4R2.js +1 -0
- package/dist/client/assets/cadence-Bv_4Rxtq.js +1 -0
- package/dist/client/assets/cairo-KRGpt6FW.js +1 -0
- package/dist/client/assets/catppuccin-frappe-DFWUc33u.js +1 -0
- package/dist/client/assets/catppuccin-latte-C9dUb6Cb.js +1 -0
- package/dist/client/assets/catppuccin-macchiato-DQyhUUbL.js +1 -0
- package/dist/client/assets/catppuccin-mocha-D87Tk5Gz.js +1 -0
- package/dist/client/assets/clarity-D53aC0YG.js +1 -0
- package/dist/client/assets/clojure-P80f7IUj.js +1 -0
- package/dist/client/assets/cmake-D1j8_8rp.js +1 -0
- package/dist/client/assets/cobol-nwyudZeR.js +1 -0
- package/dist/client/assets/codeowners-Bp6g37R7.js +1 -0
- package/dist/client/assets/codeql-DsOJ9woJ.js +1 -0
- package/dist/client/assets/coffee-Ch7k5sss.js +1 -0
- package/dist/client/assets/common-lisp-Cg-RD9OK.js +1 -0
- package/dist/client/assets/coq-DkFqJrB1.js +1 -0
- package/dist/client/assets/cpp-CofmeUqb.js +1 -0
- package/dist/client/assets/crystal-tKQVLTB8.js +1 -0
- package/dist/client/assets/csharp-COcwbKMJ.js +1 -0
- package/dist/client/assets/css-DPfMkruS.js +1 -0
- package/dist/client/assets/csv-fuZLfV_i.js +1 -0
- package/dist/client/assets/cue-D82EKSYY.js +1 -0
- package/dist/client/assets/cypher-COkxafJQ.js +1 -0
- package/dist/client/assets/d-85-TOEBH.js +1 -0
- package/dist/client/assets/dark-plus-C3mMm8J8.js +1 -0
- package/dist/client/assets/dart-CF10PKvl.js +1 -0
- package/dist/client/assets/dax-CEL-wOlO.js +1 -0
- package/dist/client/assets/desktop-BmXAJ9_W.js +1 -0
- package/dist/client/assets/diff-D97Zzqfu.js +1 -0
- package/dist/client/assets/docker-BcOcwvcX.js +1 -0
- package/dist/client/assets/dotenv-Da5cRb03.js +1 -0
- package/dist/client/assets/dracula-BzJJZx-M.js +1 -0
- package/dist/client/assets/dracula-soft-BXkSAIEj.js +1 -0
- package/dist/client/assets/dream-maker-BtqSS_iP.js +1 -0
- package/dist/client/assets/edge-BkV0erSs.js +1 -0
- package/dist/client/assets/elixir-CDX3lj18.js +1 -0
- package/dist/client/assets/elm-DbKCFpqz.js +1 -0
- package/dist/client/assets/emacs-lisp-C9XAeP06.js +1 -0
- package/dist/client/assets/erb-B12qg9BL.js +1 -0
- package/dist/client/assets/erlang-DsQrWhSR.js +1 -0
- package/dist/client/assets/everforest-dark-BgDCqdQA.js +1 -0
- package/dist/client/assets/everforest-light-C8M2exoo.js +1 -0
- package/dist/client/assets/fennel-BYunw83y.js +1 -0
- package/dist/client/assets/fish-BvzEVeQv.js +1 -0
- package/dist/client/assets/fluent-C4IJs8-o.js +1 -0
- package/dist/client/assets/fortran-fixed-form-CkoXwp7k.js +1 -0
- package/dist/client/assets/fortran-free-form-BxgE0vQu.js +1 -0
- package/dist/client/assets/fsharp-CXgrBDvD.js +1 -0
- package/dist/client/assets/gdresource-BOOCDP_w.js +1 -0
- package/dist/client/assets/gdscript-C5YyOfLZ.js +1 -0
- package/dist/client/assets/gdshader-DkwncUOv.js +1 -0
- package/dist/client/assets/genie-D0YGMca9.js +1 -0
- package/dist/client/assets/gherkin-DyxjwDmM.js +1 -0
- package/dist/client/assets/git-commit-F4YmCXRG.js +1 -0
- package/dist/client/assets/git-rebase-r7XF79zn.js +1 -0
- package/dist/client/assets/github-dark-DHJKELXO.js +1 -0
- package/dist/client/assets/github-dark-default-Cuk6v7N8.js +1 -0
- package/dist/client/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
- package/dist/client/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
- package/dist/client/assets/github-light-DAi9KRSo.js +1 -0
- package/dist/client/assets/github-light-default-D7oLnXFd.js +1 -0
- package/dist/client/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
- package/dist/client/assets/gleam-BspZqrRM.js +1 -0
- package/dist/client/assets/glimmer-js-Rg0-pVw9.js +1 -0
- package/dist/client/assets/glimmer-ts-U6CK756n.js +1 -0
- package/dist/client/assets/glsl-DplSGwfg.js +1 -0
- package/dist/client/assets/gn-n2N0HUVH.js +1 -0
- package/dist/client/assets/gnuplot-DdkO51Og.js +1 -0
- package/dist/client/assets/go-CxLEBnE3.js +1 -0
- package/dist/client/assets/graphql-ChdNCCLP.js +1 -0
- package/dist/client/assets/groovy-gcz8RCvz.js +1 -0
- package/dist/client/assets/gruvbox-dark-hard-CFHQjOhq.js +1 -0
- package/dist/client/assets/gruvbox-dark-medium-GsRaNv29.js +1 -0
- package/dist/client/assets/gruvbox-dark-soft-CVdnzihN.js +1 -0
- package/dist/client/assets/gruvbox-light-hard-CH1njM8p.js +1 -0
- package/dist/client/assets/gruvbox-light-medium-DRw_LuNl.js +1 -0
- package/dist/client/assets/gruvbox-light-soft-hJgmCMqR.js +1 -0
- package/dist/client/assets/hack-CaT9iCJl.js +1 -0
- package/dist/client/assets/haml-B8DHNrY2.js +1 -0
- package/dist/client/assets/handlebars-BL8al0AC.js +1 -0
- package/dist/client/assets/haskell-Df6bDoY_.js +1 -0
- package/dist/client/assets/haxe-CzTSHFRz.js +1 -0
- package/dist/client/assets/hcl-BWvSN4gD.js +1 -0
- package/dist/client/assets/hjson-D5-asLiD.js +1 -0
- package/dist/client/assets/hlsl-D3lLCCz7.js +1 -0
- package/dist/client/assets/horizon-BUw7H-hv.js +1 -0
- package/dist/client/assets/horizon-bright-Cn-bp-IR.js +1 -0
- package/dist/client/assets/houston-DnULxvSX.js +1 -0
- package/dist/client/assets/html-GMplVEZG.js +1 -0
- package/dist/client/assets/html-derivative-BFtXZ54Q.js +1 -0
- package/dist/client/assets/http-jrhK8wxY.js +1 -0
- package/dist/client/assets/hurl-irOxFIW8.js +1 -0
- package/dist/client/assets/hxml-Bvhsp5Yf.js +1 -0
- package/dist/client/assets/hy-DFXneXwc.js +1 -0
- package/dist/client/assets/imba-DGztddWO.js +1 -0
- package/dist/client/assets/index-C07zYq_-.css +32 -0
- package/dist/client/assets/index-Ce3hNHfL.js +2351 -0
- package/dist/client/assets/ini-BEwlwnbL.js +1 -0
- package/dist/client/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- package/dist/client/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- package/dist/client/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- package/dist/client/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- package/dist/client/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/dist/client/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- package/dist/client/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/dist/client/assets/java-CylS5w8V.js +1 -0
- package/dist/client/assets/javascript-wDzz0qaB.js +1 -0
- package/dist/client/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
- package/dist/client/assets/jinja-4LBKfQ-Z.js +1 -0
- package/dist/client/assets/jison-wvAkD_A8.js +1 -0
- package/dist/client/assets/json-Cp-IABpG.js +1 -0
- package/dist/client/assets/json5-C9tS-k6U.js +1 -0
- package/dist/client/assets/jsonc-Des-eS-w.js +1 -0
- package/dist/client/assets/jsonl-DcaNXYhu.js +1 -0
- package/dist/client/assets/jsonnet-DFQXde-d.js +1 -0
- package/dist/client/assets/jssm-C2t-YnRu.js +1 -0
- package/dist/client/assets/jsx-g9-lgVsj.js +1 -0
- package/dist/client/assets/julia-CxzCAyBv.js +1 -0
- package/dist/client/assets/just-Cw27pwNe.js +1 -0
- package/dist/client/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
- package/dist/client/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
- package/dist/client/assets/kanagawa-wave-DWedfzmr.js +1 -0
- package/dist/client/assets/kdl-DV7GczEv.js +1 -0
- package/dist/client/assets/kotlin-BdnUsdx6.js +1 -0
- package/dist/client/assets/kusto-DZf3V79B.js +1 -0
- package/dist/client/assets/laserwave-DUszq2jm.js +1 -0
- package/dist/client/assets/latex-CWtU0Tv5.js +1 -0
- package/dist/client/assets/lean-BZvkOJ9d.js +1 -0
- package/dist/client/assets/less-B1dDrJ26.js +1 -0
- package/dist/client/assets/light-plus-B7mTdjB0.js +1 -0
- package/dist/client/assets/liquid-DYVedYrR.js +1 -0
- package/dist/client/assets/llvm-DjAJT7YJ.js +1 -0
- package/dist/client/assets/log-2UxHyX5q.js +1 -0
- package/dist/client/assets/logo-BtOb2qkB.js +1 -0
- package/dist/client/assets/lua-BaeVxFsk.js +1 -0
- package/dist/client/assets/luau-C-HG3fhB.js +1 -0
- package/dist/client/assets/make-CHLpvVh8.js +1 -0
- package/dist/client/assets/markdown-Cvjx9yec.js +1 -0
- package/dist/client/assets/marko-CnJfTvn9.js +1 -0
- package/dist/client/assets/material-theme-D5KoaKCx.js +1 -0
- package/dist/client/assets/material-theme-darker-BfHTSMKl.js +1 -0
- package/dist/client/assets/material-theme-lighter-B0m2ddpp.js +1 -0
- package/dist/client/assets/material-theme-ocean-CyktbL80.js +1 -0
- package/dist/client/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
- package/dist/client/assets/matlab-D7o27uSR.js +1 -0
- package/dist/client/assets/mdc-BMNejdWA.js +1 -0
- package/dist/client/assets/mdx-Cmh6b_Ma.js +1 -0
- package/dist/client/assets/mermaid-mWjccvbQ.js +1 -0
- package/dist/client/assets/min-dark-CafNBF8u.js +1 -0
- package/dist/client/assets/min-light-CTRr51gU.js +1 -0
- package/dist/client/assets/mipsasm-CKIfxQSi.js +1 -0
- package/dist/client/assets/mojo-rZm6bMo-.js +1 -0
- package/dist/client/assets/monokai-D4h5O-jR.js +1 -0
- package/dist/client/assets/moonbit-_H4v1dQx.js +1 -0
- package/dist/client/assets/move-IF9eRakj.js +1 -0
- package/dist/client/assets/narrat-DRg8JJMk.js +1 -0
- package/dist/client/assets/nextflow-Zz6hmt5N.js +1 -0
- package/dist/client/assets/nextflow-groovy-BeH2EWoN.js +1 -0
- package/dist/client/assets/nginx-BpAMiNFr.js +1 -0
- package/dist/client/assets/night-owl-C39BiMTA.js +1 -0
- package/dist/client/assets/night-owl-light-CMTm3GFP.js +1 -0
- package/dist/client/assets/nim-CVrawwO9.js +1 -0
- package/dist/client/assets/nix-CwoSXNpI.js +1 -0
- package/dist/client/assets/nord-Ddv68eIx.js +1 -0
- package/dist/client/assets/nushell-Cz2AlsmD.js +1 -0
- package/dist/client/assets/objective-c-DXmwc3jG.js +1 -0
- package/dist/client/assets/objective-cpp-CLxacb5B.js +1 -0
- package/dist/client/assets/ocaml-C0hk2d4L.js +1 -0
- package/dist/client/assets/odin-BBf5iR-q.js +1 -0
- package/dist/client/assets/one-dark-pro-DVMEJ2y_.js +1 -0
- package/dist/client/assets/one-light-C3Wv6jpd.js +1 -0
- package/dist/client/assets/openscad-C4EeE6gA.js +1 -0
- package/dist/client/assets/pascal-D93ZcfNL.js +1 -0
- package/dist/client/assets/perl-C0TMdlhV.js +1 -0
- package/dist/client/assets/php-Dhbhpdrm.js +1 -0
- package/dist/client/assets/pierre-dark-DF2SEV7i.js +1 -0
- package/dist/client/assets/pierre-light-DOlZxES8.js +1 -0
- package/dist/client/assets/pkl-u5AG7uiY.js +1 -0
- package/dist/client/assets/plastic-3e1v2bzS.js +1 -0
- package/dist/client/assets/plsql-ChMvpjG-.js +1 -0
- package/dist/client/assets/po-BTJTHyun.js +1 -0
- package/dist/client/assets/poimandres-CS3Unz2-.js +1 -0
- package/dist/client/assets/polar-C0HS_06l.js +1 -0
- package/dist/client/assets/postcss-CXtECtnM.js +1 -0
- package/dist/client/assets/powerquery-CEu0bR-o.js +1 -0
- package/dist/client/assets/powershell-Dpen1YoG.js +1 -0
- package/dist/client/assets/prisma-Dd19v3D-.js +1 -0
- package/dist/client/assets/prolog-CbFg5uaA.js +1 -0
- package/dist/client/assets/proto-C7zT0LnQ.js +1 -0
- package/dist/client/assets/pug-CGlum2m_.js +1 -0
- package/dist/client/assets/puppet-BMWR74SV.js +1 -0
- package/dist/client/assets/purescript-CklMAg4u.js +1 -0
- package/dist/client/assets/python-B6aJPvgy.js +1 -0
- package/dist/client/assets/qml-3beO22l8.js +1 -0
- package/dist/client/assets/qmldir-C8lEn-DE.js +1 -0
- package/dist/client/assets/qss-IeuSbFQv.js +1 -0
- package/dist/client/assets/r-Dspwwk_N.js +1 -0
- package/dist/client/assets/racket-BqYA7rlc.js +1 -0
- package/dist/client/assets/raku-DXvB9xmW.js +1 -0
- package/dist/client/assets/razor-Uh8Bk_45.js +1 -0
- package/dist/client/assets/red-bN70gL4F.js +1 -0
- package/dist/client/assets/reg-C-SQnVFl.js +1 -0
- package/dist/client/assets/regexp-CDVJQ6XC.js +1 -0
- package/dist/client/assets/rel-C3B-1QV4.js +1 -0
- package/dist/client/assets/riscv-BM1_JUlF.js +1 -0
- package/dist/client/assets/ron-D8l8udqQ.js +1 -0
- package/dist/client/assets/rose-pine-dawn-DHQR4-dF.js +1 -0
- package/dist/client/assets/rose-pine-moon-D4_iv3hh.js +1 -0
- package/dist/client/assets/rose-pine-qdsjHGoJ.js +1 -0
- package/dist/client/assets/rosmsg-BJDFO7_C.js +1 -0
- package/dist/client/assets/rst-BrH8l1NY.js +1 -0
- package/dist/client/assets/ruby-Dw2BHqvy.js +1 -0
- package/dist/client/assets/rust-B1yitclQ.js +1 -0
- package/dist/client/assets/sas-cz2c8ADy.js +1 -0
- package/dist/client/assets/sass-Cj5Yp3dK.js +1 -0
- package/dist/client/assets/scala-C151Ov-r.js +1 -0
- package/dist/client/assets/scheme-C98Dy4si.js +1 -0
- package/dist/client/assets/scratchpad-page-DcMny6uZ.js +1 -0
- package/dist/client/assets/scss-OYdSNvt2.js +1 -0
- package/dist/client/assets/sdbl-DVxCFoDh.js +1 -0
- package/dist/client/assets/shaderlab-Dg9Lc6iA.js +1 -0
- package/dist/client/assets/shellscript-Yzrsuije.js +1 -0
- package/dist/client/assets/shellsession-BADoaaVG.js +1 -0
- package/dist/client/assets/slack-dark-BthQWCQV.js +1 -0
- package/dist/client/assets/slack-ochin-DqwNpetd.js +1 -0
- package/dist/client/assets/smalltalk-BERRCDM3.js +1 -0
- package/dist/client/assets/snazzy-light-Bw305WKR.js +1 -0
- package/dist/client/assets/solarized-dark-DXbdFlpD.js +1 -0
- package/dist/client/assets/solarized-light-L9t79GZl.js +1 -0
- package/dist/client/assets/solidity-rGO070M0.js +1 -0
- package/dist/client/assets/soy-Brmx7dQM.js +1 -0
- package/dist/client/assets/sparql-rVzFXLq3.js +1 -0
- package/dist/client/assets/splunk-BtCnVYZw.js +1 -0
- package/dist/client/assets/sql-BLtJtn59.js +1 -0
- package/dist/client/assets/ssh-config-_ykCGR6B.js +1 -0
- package/dist/client/assets/stata-BH5u7GGu.js +1 -0
- package/dist/client/assets/stylus-BEDo0Tqx.js +1 -0
- package/dist/client/assets/surrealql-Bq5Q-fJD.js +1 -0
- package/dist/client/assets/svelte-C_ipcX3V.js +1 -0
- package/dist/client/assets/swift-D82vCrfD.js +1 -0
- package/dist/client/assets/synthwave-84-CbfX1IO0.js +1 -0
- package/dist/client/assets/system-verilog-CnnmHF94.js +1 -0
- package/dist/client/assets/systemd-4A_iFExJ.js +1 -0
- package/dist/client/assets/talonscript-CkByrt1z.js +1 -0
- package/dist/client/assets/tasl-QIJgUcNo.js +1 -0
- package/dist/client/assets/tcl-dwOrl1Do.js +1 -0
- package/dist/client/assets/templ-P3uqSqPl.js +1 -0
- package/dist/client/assets/terraform-BETggiCN.js +1 -0
- package/dist/client/assets/tex-idrVyKtj.js +1 -0
- package/dist/client/assets/tokyo-night-hegEt444.js +1 -0
- package/dist/client/assets/toml-vGWfd6FD.js +1 -0
- package/dist/client/assets/ts-tags-zn1MmPIZ.js +1 -0
- package/dist/client/assets/tsv-B_m7g4N7.js +1 -0
- package/dist/client/assets/tsx-COt5Ahok.js +1 -0
- package/dist/client/assets/turtle-BsS91CYL.js +1 -0
- package/dist/client/assets/twig-DNn4PbVi.js +1 -0
- package/dist/client/assets/typescript-BPQ3VLAy.js +1 -0
- package/dist/client/assets/typespec-BGHnOYBU.js +1 -0
- package/dist/client/assets/typst-DHCkPAjA.js +1 -0
- package/dist/client/assets/v-BcVCzyr7.js +1 -0
- package/dist/client/assets/vala-CsfeWuGM.js +1 -0
- package/dist/client/assets/vb-D17OF-Vu.js +1 -0
- package/dist/client/assets/verilog-BQ8w6xss.js +1 -0
- package/dist/client/assets/vesper-DU1UobuO.js +1 -0
- package/dist/client/assets/vhdl-CeAyd5Ju.js +1 -0
- package/dist/client/assets/viml-CJc9bBzg.js +1 -0
- package/dist/client/assets/vitesse-black-Bkuqu6BP.js +1 -0
- package/dist/client/assets/vitesse-dark-D0r3Knsf.js +1 -0
- package/dist/client/assets/vitesse-light-CVO1_9PV.js +1 -0
- package/dist/client/assets/vue-DN_0RTcg.js +1 -0
- package/dist/client/assets/vue-html-AaS7Mt5G.js +1 -0
- package/dist/client/assets/vue-vine-CQOfvN7w.js +1 -0
- package/dist/client/assets/vyper-CDx5xZoG.js +1 -0
- package/dist/client/assets/wasm-CG6Dc4jp.js +1 -0
- package/dist/client/assets/wasm-MzD3tlZU.js +1 -0
- package/dist/client/assets/wenyan-BV7otONQ.js +1 -0
- package/dist/client/assets/wgsl-Dx-B1_4e.js +1 -0
- package/dist/client/assets/wikitext-BhOHFoWU.js +1 -0
- package/dist/client/assets/wit-5i3qLPDT.js +1 -0
- package/dist/client/assets/wolfram-lXgVvXCa.js +1 -0
- package/dist/client/assets/xml-sdJ4AIDG.js +1 -0
- package/dist/client/assets/xsl-CtQFsRM5.js +1 -0
- package/dist/client/assets/yaml-Buea-lGh.js +1 -0
- package/dist/client/assets/zenscript-DVFEvuxE.js +1 -0
- package/dist/client/assets/zig-VOosw3JB.js +1 -0
- package/dist/client/cursor.png +0 -0
- package/dist/client/favicon.svg +17 -0
- package/dist/client/finder.png +0 -0
- package/dist/client/icons/claude.svg +1 -0
- package/dist/client/icons/openai.svg +1 -0
- package/dist/client/images/github.png +0 -0
- package/dist/client/index.html +15 -0
- package/dist/client/logo.svg +17 -0
- package/dist/client/terminal.png +0 -0
- package/dist/client/vscode.png +0 -0
- package/dist/client/warp.png +0 -0
- package/package.json +107 -0
- package/src/server/agent-instruction-attachments.ts +458 -0
- package/src/server/agent.ts +1879 -0
- package/src/server/cli-runtime.ts +418 -0
- package/src/server/cli-supervisor.ts +90 -0
- package/src/server/cli.ts +102 -0
- package/src/server/codex-app-server-protocol.ts +478 -0
- package/src/server/codex-app-server.ts +1645 -0
- package/src/server/data-dir-lock.ts +128 -0
- package/src/server/diff-store.ts +1587 -0
- package/src/server/durable-file.ts +74 -0
- package/src/server/event-store.ts +1448 -0
- package/src/server/event.ts +249 -0
- package/src/server/external-file-access.ts +48 -0
- package/src/server/external-open.ts +259 -0
- package/src/server/generate-title.ts +75 -0
- package/src/server/git-refresh-poller.ts +92 -0
- package/src/server/github-rest-client.ts +176 -0
- package/src/server/harness-types.ts +24 -0
- package/src/server/keybindings.ts +203 -0
- package/src/server/machine-name.ts +22 -0
- package/src/server/paths.ts +51 -0
- package/src/server/pr-manager.ts +1204 -0
- package/src/server/pr-refresh-poller.ts +126 -0
- package/src/server/process-utils.ts +18 -0
- package/src/server/provider-catalog.ts +90 -0
- package/src/server/quick-response.ts +274 -0
- package/src/server/read-models.ts +311 -0
- package/src/server/restart.ts +33 -0
- package/src/server/scratchpad-manager.ts +87 -0
- package/src/server/server.ts +759 -0
- package/src/server/share.ts +126 -0
- package/src/server/terminal-manager.ts +371 -0
- package/src/server/update-manager.ts +250 -0
- package/src/server/uploads.ts +191 -0
- package/src/server/workspace-file-search.ts +191 -0
- package/src/server/workspace-manager.ts +627 -0
- package/src/server/workspace-polling.ts +10 -0
- package/src/server/ws-router.ts +1039 -0
- package/src/shared/branding.ts +69 -0
- package/src/shared/dev-ports.ts +100 -0
- package/src/shared/ports.ts +2 -0
- package/src/shared/protocol.ts +217 -0
- package/src/shared/tools.ts +324 -0
- package/src/shared/types.ts +1220 -0
- package/tsconfig.json +35 -0
|
@@ -0,0 +1,1220 @@
|
|
|
1
|
+
export type AgentProvider = 'claude' | 'codex';
|
|
2
|
+
|
|
3
|
+
export type AttachmentKind = 'image' | 'file';
|
|
4
|
+
|
|
5
|
+
export interface ChatAttachment {
|
|
6
|
+
id: string;
|
|
7
|
+
kind: AttachmentKind;
|
|
8
|
+
displayName: string;
|
|
9
|
+
absolutePath: string;
|
|
10
|
+
relativePath: string;
|
|
11
|
+
contentUrl: string;
|
|
12
|
+
mimeType: string;
|
|
13
|
+
size: number;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export type PromptPart =
|
|
17
|
+
| { type: 'text'; text: string }
|
|
18
|
+
| { type: 'mention'; path: string; label?: string }
|
|
19
|
+
| { type: 'attachment'; attachmentId: string }
|
|
20
|
+
| { type: 'pasted_text'; id: string; text: string };
|
|
21
|
+
|
|
22
|
+
export interface InternalUserAttachmentsData {
|
|
23
|
+
userText: string;
|
|
24
|
+
attachments: ChatAttachment[];
|
|
25
|
+
llmHintText: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface ProviderModelOption {
|
|
29
|
+
id: string;
|
|
30
|
+
label: string;
|
|
31
|
+
supportsEffort: boolean;
|
|
32
|
+
contextWindowOptions?: readonly ProviderContextWindowOption[];
|
|
33
|
+
badge?: 'NEW';
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface ProviderEffortOption {
|
|
37
|
+
id: string;
|
|
38
|
+
label: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface ProviderContextWindowOption {
|
|
42
|
+
id: ClaudeContextWindow;
|
|
43
|
+
label: string;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export const CLAUDE_REASONING_OPTIONS = [
|
|
47
|
+
{ id: 'low', label: 'Low' },
|
|
48
|
+
{ id: 'medium', label: 'Medium' },
|
|
49
|
+
{ id: 'high', label: 'High' },
|
|
50
|
+
{ id: 'max', label: 'Max' },
|
|
51
|
+
] as const satisfies readonly ProviderEffortOption[];
|
|
52
|
+
|
|
53
|
+
export const CODEX_REASONING_OPTIONS = [
|
|
54
|
+
{ id: 'minimal', label: 'Minimal' },
|
|
55
|
+
{ id: 'low', label: 'Low' },
|
|
56
|
+
{ id: 'medium', label: 'Medium' },
|
|
57
|
+
{ id: 'high', label: 'High' },
|
|
58
|
+
{ id: 'xhigh', label: 'XHigh' },
|
|
59
|
+
] as const satisfies readonly ProviderEffortOption[];
|
|
60
|
+
|
|
61
|
+
export type ClaudeReasoningEffort = (typeof CLAUDE_REASONING_OPTIONS)[number]['id'];
|
|
62
|
+
export type CodexReasoningEffort = (typeof CODEX_REASONING_OPTIONS)[number]['id'];
|
|
63
|
+
export type ClaudeContextWindow = '200k' | '1m';
|
|
64
|
+
export type ServiceTier = 'fast';
|
|
65
|
+
|
|
66
|
+
export interface ClaudeModelOptions {
|
|
67
|
+
reasoningEffort: ClaudeReasoningEffort;
|
|
68
|
+
contextWindow: ClaudeContextWindow;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface CodexModelOptions {
|
|
72
|
+
reasoningEffort: CodexReasoningEffort;
|
|
73
|
+
fastMode: boolean;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export interface ProviderModelOptionsByProvider {
|
|
77
|
+
claude: ClaudeModelOptions;
|
|
78
|
+
codex: CodexModelOptions;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export type ModelOptions = Partial<{
|
|
82
|
+
[K in AgentProvider]: Partial<ProviderModelOptionsByProvider[K]>;
|
|
83
|
+
}>;
|
|
84
|
+
|
|
85
|
+
export const DEFAULT_CLAUDE_MODEL_OPTIONS = {
|
|
86
|
+
reasoningEffort: 'high',
|
|
87
|
+
contextWindow: '200k',
|
|
88
|
+
} as const satisfies ClaudeModelOptions;
|
|
89
|
+
|
|
90
|
+
export const DEFAULT_CODEX_MODEL_OPTIONS = {
|
|
91
|
+
reasoningEffort: 'high',
|
|
92
|
+
fastMode: false,
|
|
93
|
+
} as const satisfies CodexModelOptions;
|
|
94
|
+
|
|
95
|
+
export function isClaudeReasoningEffort(value: unknown): value is ClaudeReasoningEffort {
|
|
96
|
+
return CLAUDE_REASONING_OPTIONS.some((option) => option.id === value);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export function isCodexReasoningEffort(value: unknown): value is CodexReasoningEffort {
|
|
100
|
+
return CODEX_REASONING_OPTIONS.some((option) => option.id === value);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export const CLAUDE_CONTEXT_WINDOW_OPTIONS = [
|
|
104
|
+
{ id: '200k', label: '200k' },
|
|
105
|
+
{ id: '1m', label: '1M' },
|
|
106
|
+
] as const satisfies readonly ProviderContextWindowOption[];
|
|
107
|
+
|
|
108
|
+
export function isClaudeContextWindow(value: unknown): value is ClaudeContextWindow {
|
|
109
|
+
return CLAUDE_CONTEXT_WINDOW_OPTIONS.some((option) => option.id === value);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export interface ProviderCatalogEntry {
|
|
113
|
+
id: AgentProvider;
|
|
114
|
+
label: string;
|
|
115
|
+
defaultModel: string;
|
|
116
|
+
defaultEffort?: string;
|
|
117
|
+
supportsPlanMode: boolean;
|
|
118
|
+
models: ProviderModelOption[];
|
|
119
|
+
efforts: ProviderEffortOption[];
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export const PROVIDERS: ProviderCatalogEntry[] = [
|
|
123
|
+
{
|
|
124
|
+
id: 'claude',
|
|
125
|
+
label: 'Claude',
|
|
126
|
+
defaultModel: 'claude-sonnet-4-6',
|
|
127
|
+
defaultEffort: 'high',
|
|
128
|
+
supportsPlanMode: true,
|
|
129
|
+
// `id` values are runtime model ids accepted by the installed Claude Code harness.
|
|
130
|
+
// 1M context is a session beta (`context-1m-2025-08-07`); models that support it expose
|
|
131
|
+
// `contextWindowOptions` so the composer can offer a 1M variant row.
|
|
132
|
+
models: [
|
|
133
|
+
{ id: 'claude-fable-5', label: 'Fable 5', supportsEffort: true, badge: 'NEW' },
|
|
134
|
+
{
|
|
135
|
+
id: 'claude-opus-4-8',
|
|
136
|
+
label: 'Opus 4.8',
|
|
137
|
+
supportsEffort: true,
|
|
138
|
+
badge: 'NEW',
|
|
139
|
+
contextWindowOptions: [...CLAUDE_CONTEXT_WINDOW_OPTIONS],
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
id: 'claude-opus-4-6',
|
|
143
|
+
label: 'Opus 4.6',
|
|
144
|
+
supportsEffort: true,
|
|
145
|
+
contextWindowOptions: [...CLAUDE_CONTEXT_WINDOW_OPTIONS],
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
id: 'claude-sonnet-4-6',
|
|
149
|
+
label: 'Sonnet 4.6',
|
|
150
|
+
supportsEffort: true,
|
|
151
|
+
contextWindowOptions: [...CLAUDE_CONTEXT_WINDOW_OPTIONS],
|
|
152
|
+
},
|
|
153
|
+
{ id: 'claude-haiku-4-5', label: 'Haiku 4.5', supportsEffort: true },
|
|
154
|
+
],
|
|
155
|
+
efforts: [...CLAUDE_REASONING_OPTIONS],
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
id: 'codex',
|
|
159
|
+
label: 'Codex',
|
|
160
|
+
defaultModel: 'gpt-5.5',
|
|
161
|
+
supportsPlanMode: true,
|
|
162
|
+
models: [
|
|
163
|
+
{ id: 'gpt-5.5', label: 'GPT-5.5', supportsEffort: false },
|
|
164
|
+
{ id: 'gpt-5.4', label: 'GPT-5.4', supportsEffort: false },
|
|
165
|
+
],
|
|
166
|
+
efforts: [],
|
|
167
|
+
},
|
|
168
|
+
];
|
|
169
|
+
|
|
170
|
+
export function getProviderCatalog(provider: AgentProvider): ProviderCatalogEntry {
|
|
171
|
+
const entry = PROVIDERS.find((candidate) => candidate.id === provider);
|
|
172
|
+
if (!entry) {
|
|
173
|
+
throw new Error(`Unknown provider: ${provider}`);
|
|
174
|
+
}
|
|
175
|
+
return entry;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export function getClaudeModelOption(modelId: string): ProviderModelOption | undefined {
|
|
179
|
+
return getProviderCatalog('claude').models.find((candidate) => candidate.id === modelId);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export function getClaudeContextWindowOptions(
|
|
183
|
+
modelId: string,
|
|
184
|
+
): readonly ProviderContextWindowOption[] {
|
|
185
|
+
return getClaudeModelOption(modelId)?.contextWindowOptions ?? [];
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export function normalizeClaudeContextWindow(
|
|
189
|
+
modelId: string,
|
|
190
|
+
contextWindow?: unknown,
|
|
191
|
+
): ClaudeContextWindow {
|
|
192
|
+
const options = getClaudeContextWindowOptions(modelId);
|
|
193
|
+
if (options.length === 0) return DEFAULT_CLAUDE_MODEL_OPTIONS.contextWindow;
|
|
194
|
+
|
|
195
|
+
return options.some((option) => option.id === contextWindow)
|
|
196
|
+
? (contextWindow as ClaudeContextWindow)
|
|
197
|
+
: DEFAULT_CLAUDE_MODEL_OPTIONS.contextWindow;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
export function resolveClaudeContextWindowTokens(contextWindow: ClaudeContextWindow): number {
|
|
201
|
+
switch (contextWindow) {
|
|
202
|
+
case '1m':
|
|
203
|
+
return 1_000_000;
|
|
204
|
+
case '200k':
|
|
205
|
+
return 200_000;
|
|
206
|
+
default:
|
|
207
|
+
return 200_000;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export type MikoStatus = 'idle' | 'starting' | 'running' | 'waiting_for_user' | 'failed';
|
|
212
|
+
|
|
213
|
+
export interface DirectorySummary {
|
|
214
|
+
id: string;
|
|
215
|
+
localPath: string;
|
|
216
|
+
title: string;
|
|
217
|
+
githubOwner: string;
|
|
218
|
+
githubRepo: string;
|
|
219
|
+
defaultBranchName: 'main';
|
|
220
|
+
createdAt: number;
|
|
221
|
+
updatedAt: number;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
export type WorkspaceReviewState = 'in_progress' | 'in_review' | 'done' | 'closed';
|
|
225
|
+
export type WorkspaceVisibilityState = 'active' | 'archived';
|
|
226
|
+
export type WorkspaceSetupState = 'creating' | 'ready' | 'failed';
|
|
227
|
+
export type WorkspacePullRequestStatus = 'open' | 'merged' | 'closed';
|
|
228
|
+
export type WorkspaceHealthState =
|
|
229
|
+
| 'healthy'
|
|
230
|
+
| 'source_missing'
|
|
231
|
+
| 'workspace_missing'
|
|
232
|
+
| 'git_invalid'
|
|
233
|
+
| 'worktree_mismatch'
|
|
234
|
+
| 'branch_missing'
|
|
235
|
+
| 'detached_head'
|
|
236
|
+
| 'repo_mismatch';
|
|
237
|
+
|
|
238
|
+
export interface WorkspacePullRequestSummary {
|
|
239
|
+
number: number;
|
|
240
|
+
status: WorkspacePullRequestStatus;
|
|
241
|
+
title?: string;
|
|
242
|
+
body?: string;
|
|
243
|
+
url?: string;
|
|
244
|
+
headRefName?: string;
|
|
245
|
+
baseRefName?: string;
|
|
246
|
+
ciStatus?: 'unknown' | 'pending' | 'passing' | 'failing';
|
|
247
|
+
isDraft?: boolean;
|
|
248
|
+
mergeStateStatus?: string;
|
|
249
|
+
hasMergeConflicts?: boolean;
|
|
250
|
+
unresolvedCommentCount?: number;
|
|
251
|
+
additions?: number;
|
|
252
|
+
deletions?: number;
|
|
253
|
+
createdAt?: number;
|
|
254
|
+
lastObservedAt: number;
|
|
255
|
+
/**
|
|
256
|
+
* Snapshot of the PR's changed files at the time it was observed. Persisted so the
|
|
257
|
+
* right-sidebar Changes list survives a merge/close, when live PR refresh is skipped
|
|
258
|
+
* and the local branch...main diff has collapsed to empty.
|
|
259
|
+
*/
|
|
260
|
+
files?: WorkspaceDiffFile[];
|
|
261
|
+
comments?: PullRequestCommentSnapshot[];
|
|
262
|
+
checks?: PullRequestCheckSnapshot[];
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
export interface WorkspaceSummary {
|
|
266
|
+
id: string;
|
|
267
|
+
directoryId: string;
|
|
268
|
+
localPath: string;
|
|
269
|
+
branchName: string;
|
|
270
|
+
setupState: WorkspaceSetupState;
|
|
271
|
+
setupError?: string;
|
|
272
|
+
reviewState: WorkspaceReviewState;
|
|
273
|
+
visibilityState: WorkspaceVisibilityState;
|
|
274
|
+
hasUnreadAgentResult: boolean;
|
|
275
|
+
pullRequest?: WorkspacePullRequestSummary;
|
|
276
|
+
createdAt: number;
|
|
277
|
+
updatedAt: number;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
export interface SessionSummary {
|
|
281
|
+
id: string;
|
|
282
|
+
workspaceId: string;
|
|
283
|
+
title: string;
|
|
284
|
+
createdAt: number;
|
|
285
|
+
updatedAt: number;
|
|
286
|
+
provider: AgentProvider | null;
|
|
287
|
+
planMode: boolean;
|
|
288
|
+
sessionToken: string | null;
|
|
289
|
+
lastMessageAt?: number;
|
|
290
|
+
lastAssistantPreview?: string;
|
|
291
|
+
lastTurnOutcome: 'success' | 'failed' | 'cancelled' | null;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
export type WorkspaceSidebarIndicator =
|
|
295
|
+
| 'none'
|
|
296
|
+
| 'workspace_creating'
|
|
297
|
+
| 'workspace_failed'
|
|
298
|
+
| 'agent_active'
|
|
299
|
+
| 'commit_and_push'
|
|
300
|
+
| 'create_pr'
|
|
301
|
+
| 'pr_opened'
|
|
302
|
+
| 'draft_pr'
|
|
303
|
+
| 'ci_failed'
|
|
304
|
+
| 'merge_conflicts'
|
|
305
|
+
| 'merged'
|
|
306
|
+
| 'closed';
|
|
307
|
+
|
|
308
|
+
export interface SidebarWorkspaceRow {
|
|
309
|
+
_id: string;
|
|
310
|
+
_creationTime: number;
|
|
311
|
+
workspaceId: string;
|
|
312
|
+
createdAt: number;
|
|
313
|
+
updatedAt: number;
|
|
314
|
+
displayName: string;
|
|
315
|
+
reviewState: WorkspaceReviewState;
|
|
316
|
+
visibilityState: WorkspaceVisibilityState;
|
|
317
|
+
indicator: WorkspaceSidebarIndicator;
|
|
318
|
+
hasUnreadAgentResult: boolean;
|
|
319
|
+
hasActiveSession: boolean;
|
|
320
|
+
localPath: string;
|
|
321
|
+
branchName: string;
|
|
322
|
+
githubOwner: string;
|
|
323
|
+
githubRepo: string;
|
|
324
|
+
defaultBranchName: 'main';
|
|
325
|
+
hasPullRequest: boolean;
|
|
326
|
+
prNumber?: number;
|
|
327
|
+
prTitle?: string;
|
|
328
|
+
prUrl?: string;
|
|
329
|
+
prCreatedAt?: number;
|
|
330
|
+
hasDirtyFiles: boolean;
|
|
331
|
+
hasUnpushedCommits: boolean;
|
|
332
|
+
displayDiffStats: { additions: number; deletions: number };
|
|
333
|
+
lastActivityAt?: number;
|
|
334
|
+
lastSessionId?: string;
|
|
335
|
+
lastSessionTitle?: string;
|
|
336
|
+
lastAssistantPreview?: string;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
export interface SidebarDirectoryGroup {
|
|
340
|
+
groupKey: string;
|
|
341
|
+
directoryId: string;
|
|
342
|
+
localPath: string;
|
|
343
|
+
title: string;
|
|
344
|
+
createdAt: number;
|
|
345
|
+
updatedAt: number;
|
|
346
|
+
avatarUrl?: string;
|
|
347
|
+
workspaces: SidebarWorkspaceRow[];
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
export interface SidebarSnapshot {
|
|
351
|
+
directoryGroups: SidebarDirectoryGroup[];
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
export interface DirectoryListSnapshot {
|
|
355
|
+
machine: {
|
|
356
|
+
id: 'local';
|
|
357
|
+
displayName: string;
|
|
358
|
+
};
|
|
359
|
+
directories: DirectorySummary[];
|
|
360
|
+
workspaces: WorkspaceSummary[];
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
export type UpdateStatus =
|
|
364
|
+
| 'idle'
|
|
365
|
+
| 'checking'
|
|
366
|
+
| 'available'
|
|
367
|
+
| 'up_to_date'
|
|
368
|
+
| 'updating'
|
|
369
|
+
| 'restart_pending'
|
|
370
|
+
| 'error';
|
|
371
|
+
|
|
372
|
+
export interface UpdateSnapshot {
|
|
373
|
+
currentVersion: string;
|
|
374
|
+
latestVersion: string | null;
|
|
375
|
+
status: UpdateStatus;
|
|
376
|
+
updateAvailable: boolean;
|
|
377
|
+
lastCheckedAt: number | null;
|
|
378
|
+
error: string | null;
|
|
379
|
+
installAction: 'restart' | 'reload';
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
export type UpdateInstallErrorCode = 'version_not_live_yet' | 'install_failed' | 'command_missing';
|
|
383
|
+
|
|
384
|
+
export interface UpdateInstallResult {
|
|
385
|
+
ok: boolean;
|
|
386
|
+
action: 'restart' | 'realod';
|
|
387
|
+
errorCode: UpdateInstallErrorCode | null;
|
|
388
|
+
userTitle: string | null;
|
|
389
|
+
userMessage: string | null;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
export type KeybindingAction =
|
|
393
|
+
| 'toggleLeftSidebar'
|
|
394
|
+
| 'toggleEmbeddedTerminal'
|
|
395
|
+
| 'toggleRightSidebar'
|
|
396
|
+
| 'addSplitTerminal'
|
|
397
|
+
| 'createSessionInCurrentWorkspace'
|
|
398
|
+
| 'createWorkspaceInCurrentDirectory'
|
|
399
|
+
| 'switchToNextWorkspace';
|
|
400
|
+
|
|
401
|
+
export const DEFAULT_KEYBINDINGS: Record<KeybindingAction, string[]> = {
|
|
402
|
+
toggleLeftSidebar: ['cmd+shift+b', 'ctrl+shift+b'],
|
|
403
|
+
toggleEmbeddedTerminal: ['cmd+j', 'ctrl+`'],
|
|
404
|
+
toggleRightSidebar: ['cmd+b', 'ctrl+b'],
|
|
405
|
+
addSplitTerminal: ['cmd+/', 'ctrl+/'],
|
|
406
|
+
createSessionInCurrentWorkspace: ['cmd+alt+n'],
|
|
407
|
+
createWorkspaceInCurrentDirectory: ['cmd+alt+shift+n'],
|
|
408
|
+
switchToNextWorkspace: ['cmd+alt+down', 'ctrl+alt+down'],
|
|
409
|
+
};
|
|
410
|
+
|
|
411
|
+
export interface KeybindingsSnapshot {
|
|
412
|
+
bindings: Record<KeybindingAction, string[]>;
|
|
413
|
+
warning: string | null;
|
|
414
|
+
filePathDisplay: string;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
export interface McpServerInfo {
|
|
418
|
+
name: string;
|
|
419
|
+
status: string;
|
|
420
|
+
error?: string;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
export interface AccountInfo {
|
|
424
|
+
email?: string;
|
|
425
|
+
organization?: string;
|
|
426
|
+
subscriptionType?: string;
|
|
427
|
+
tokenSource?: string;
|
|
428
|
+
apiKeySource?: string;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
export interface AskUserQuestionOption {
|
|
432
|
+
label: string;
|
|
433
|
+
description?: string;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
export interface AskUserQuestionItem {
|
|
437
|
+
id?: string;
|
|
438
|
+
question: string;
|
|
439
|
+
header?: string;
|
|
440
|
+
options?: AskUserQuestionOption[];
|
|
441
|
+
multiSelect?: boolean;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
export type AskUserQuestionAnswerMap = Record<string, string[]>;
|
|
445
|
+
|
|
446
|
+
export interface TodoItem {
|
|
447
|
+
content: string;
|
|
448
|
+
status: 'pending' | 'in_progress' | 'completed';
|
|
449
|
+
activeForm: string;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
interface TranscriptEntryBase {
|
|
453
|
+
_id: string;
|
|
454
|
+
messageId?: string;
|
|
455
|
+
createdAt: number;
|
|
456
|
+
hidden?: boolean;
|
|
457
|
+
debugRaw?: string;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
interface ToolCallBase<Tkind extends string, TInput> {
|
|
461
|
+
kind: 'tool';
|
|
462
|
+
toolKind: Tkind;
|
|
463
|
+
toolName: string;
|
|
464
|
+
toolId: string;
|
|
465
|
+
input: TInput;
|
|
466
|
+
rawInput?: Record<string, unknown>;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
export interface AskUserQuestionToolCall
|
|
470
|
+
extends ToolCallBase<'ask_user_question', { questions: AskUserQuestionItem[] }> {}
|
|
471
|
+
|
|
472
|
+
export interface ExitPlanModeToolCall
|
|
473
|
+
extends ToolCallBase<'exit_plan_mode', { plan?: string; summary?: string }> {}
|
|
474
|
+
|
|
475
|
+
export interface TodoWriteToolCall extends ToolCallBase<'todo_write', { todos: TodoItem[] }> {}
|
|
476
|
+
|
|
477
|
+
export interface SkillToolCall extends ToolCallBase<'skill', { skill: string }> {}
|
|
478
|
+
|
|
479
|
+
export interface GlobToolCall extends ToolCallBase<'glob', { pattern: string }> {}
|
|
480
|
+
|
|
481
|
+
export interface GrepToolCall
|
|
482
|
+
extends ToolCallBase<'grep', { pattern: string; outputMode?: string }> {}
|
|
483
|
+
|
|
484
|
+
export interface BashToolCall
|
|
485
|
+
extends ToolCallBase<
|
|
486
|
+
'bash',
|
|
487
|
+
{ command: string; description?: string; timeoutMs?: number; runInBackground?: boolean }
|
|
488
|
+
> {}
|
|
489
|
+
|
|
490
|
+
export interface WebSearchToolCall extends ToolCallBase<'web_search', { query: string }> {}
|
|
491
|
+
|
|
492
|
+
export interface ReadFileToolCall extends ToolCallBase<'read_file', { filePath: string }> {}
|
|
493
|
+
|
|
494
|
+
export interface WriteFileToolCall
|
|
495
|
+
extends ToolCallBase<'write_file', { filePath: string; content: string }> {}
|
|
496
|
+
|
|
497
|
+
export interface EditFileToolCall
|
|
498
|
+
extends ToolCallBase<'edit_file', { filePath: string; oldString: string; newString: string }> {}
|
|
499
|
+
|
|
500
|
+
export interface DeleteFileToolCall
|
|
501
|
+
extends ToolCallBase<'delete_file', { filePath: string; oldString?: string }> {}
|
|
502
|
+
|
|
503
|
+
export interface SubAgentTaskToolCall
|
|
504
|
+
extends ToolCallBase<'subagent_task', { subagentType?: string }> {}
|
|
505
|
+
|
|
506
|
+
export interface McpGenericToolCall
|
|
507
|
+
extends ToolCallBase<
|
|
508
|
+
'mcp_generic',
|
|
509
|
+
{ server: string; tool: string; payload: Record<string, unknown> }
|
|
510
|
+
> {}
|
|
511
|
+
|
|
512
|
+
export interface UnknownToolCall
|
|
513
|
+
extends ToolCallBase<'unknown_tool', { payload: Record<string, unknown> }> {}
|
|
514
|
+
|
|
515
|
+
export type NormalizedToolCall =
|
|
516
|
+
| AskUserQuestionToolCall
|
|
517
|
+
| ExitPlanModeToolCall
|
|
518
|
+
| TodoWriteToolCall
|
|
519
|
+
| SkillToolCall
|
|
520
|
+
| GlobToolCall
|
|
521
|
+
| GrepToolCall
|
|
522
|
+
| BashToolCall
|
|
523
|
+
| WebSearchToolCall
|
|
524
|
+
| ReadFileToolCall
|
|
525
|
+
| WriteFileToolCall
|
|
526
|
+
| EditFileToolCall
|
|
527
|
+
| DeleteFileToolCall
|
|
528
|
+
| SubAgentTaskToolCall
|
|
529
|
+
| McpGenericToolCall
|
|
530
|
+
| UnknownToolCall;
|
|
531
|
+
|
|
532
|
+
export interface ToolResultEntry extends TranscriptEntryBase {
|
|
533
|
+
kind: 'tool_result';
|
|
534
|
+
toolId: string;
|
|
535
|
+
content: unknown;
|
|
536
|
+
isError?: false;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
export interface UserPromptEntry extends TranscriptEntryBase {
|
|
540
|
+
kind: 'user_prompt';
|
|
541
|
+
content: string;
|
|
542
|
+
attachments?: ChatAttachment[];
|
|
543
|
+
parts?: PromptPart[];
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
export interface SystemInitEntry extends TranscriptEntryBase {
|
|
547
|
+
kind: 'system_init';
|
|
548
|
+
provider: AgentProvider;
|
|
549
|
+
model: string;
|
|
550
|
+
tools: string[];
|
|
551
|
+
agents: string[];
|
|
552
|
+
slashCommands: string[];
|
|
553
|
+
mcpServers: McpServerInfo[];
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
export interface AccountInfoEntry extends TranscriptEntryBase {
|
|
557
|
+
kind: 'account_info';
|
|
558
|
+
accountInfo: AccountInfo;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
export interface AssistantTextEntry extends TranscriptEntryBase {
|
|
562
|
+
kind: 'assistant_text';
|
|
563
|
+
text: string;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
export interface ToolCallEntry extends TranscriptEntryBase {
|
|
567
|
+
kind: 'tool_call';
|
|
568
|
+
tool: NormalizedToolCall;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
export interface ResultEntry extends TranscriptEntryBase {
|
|
572
|
+
kind: 'result';
|
|
573
|
+
subtype: 'success' | 'error' | 'cancelled';
|
|
574
|
+
isError: boolean;
|
|
575
|
+
durationMs: number;
|
|
576
|
+
result: string;
|
|
577
|
+
costUsd?: number;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
export interface StatusEntry extends TranscriptEntryBase {
|
|
581
|
+
kind: 'status';
|
|
582
|
+
status: string;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
export interface ContextWindowUsageSnapshot {
|
|
586
|
+
usedTokens: number;
|
|
587
|
+
totalProcessedTokens?: number;
|
|
588
|
+
maxTokens?: number;
|
|
589
|
+
inputTokens?: number;
|
|
590
|
+
cachedInputTokens?: number;
|
|
591
|
+
outputTokens?: number;
|
|
592
|
+
reasoningOutputTokens?: number;
|
|
593
|
+
lastUsedTokens?: number;
|
|
594
|
+
lastInputTokens?: number;
|
|
595
|
+
lastCachedInputTokens?: number;
|
|
596
|
+
lastOutputTokens?: number;
|
|
597
|
+
lastReasoningOutputTokens?: number;
|
|
598
|
+
toolUses?: number;
|
|
599
|
+
durationMs?: number;
|
|
600
|
+
compactsAutomatically: boolean;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
export interface WorkspaceDiffFile {
|
|
604
|
+
path: string;
|
|
605
|
+
changeType: 'added' | 'deleted' | 'modified' | 'renamed';
|
|
606
|
+
isUntracked: boolean;
|
|
607
|
+
additions: number;
|
|
608
|
+
deletions: number;
|
|
609
|
+
patchDigest: string;
|
|
610
|
+
patch?: string;
|
|
611
|
+
mimeType?: string;
|
|
612
|
+
size?: number;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
export interface WorkspaceDiffPatchResult {
|
|
616
|
+
path: string;
|
|
617
|
+
patch: string;
|
|
618
|
+
patchDigest: string;
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
export interface WorkspaceTextFilePreviewResult {
|
|
622
|
+
kind: 'text';
|
|
623
|
+
path: string;
|
|
624
|
+
name: string;
|
|
625
|
+
contents: string;
|
|
626
|
+
mimeType: string;
|
|
627
|
+
size: number;
|
|
628
|
+
encoding: 'utf-8';
|
|
629
|
+
cacheKey: string;
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
export interface WorkspaceImageFilePreviewResult {
|
|
633
|
+
kind: 'image';
|
|
634
|
+
path: string;
|
|
635
|
+
name: string;
|
|
636
|
+
contentUrl: string;
|
|
637
|
+
mimeType: string;
|
|
638
|
+
size: number;
|
|
639
|
+
cacheKey: string;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
export interface WorkspaceBinaryFilePreviewResult {
|
|
643
|
+
kind: 'binary';
|
|
644
|
+
path: string;
|
|
645
|
+
name: string;
|
|
646
|
+
mimeType: string;
|
|
647
|
+
size: number;
|
|
648
|
+
cacheKey: string;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
export type WorkspaceFileContentsResult =
|
|
652
|
+
| WorkspaceTextFilePreviewResult
|
|
653
|
+
| WorkspaceImageFilePreviewResult
|
|
654
|
+
| WorkspaceBinaryFilePreviewResult;
|
|
655
|
+
|
|
656
|
+
export interface WorkspaceFileSearchResult {
|
|
657
|
+
id: string;
|
|
658
|
+
name: string;
|
|
659
|
+
relativePath: string;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
export interface WorkspaceBranchHistoryEntry {
|
|
663
|
+
sha: string;
|
|
664
|
+
summary: string;
|
|
665
|
+
description: string;
|
|
666
|
+
authorName?: string;
|
|
667
|
+
authoredAt: string;
|
|
668
|
+
tags: string[];
|
|
669
|
+
githubUrl?: string;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
export interface WorkspaceBranchHistorySnapshot {
|
|
673
|
+
entries: WorkspaceBranchHistoryEntry[];
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
export type WorkspaceBranchListEntryKind = 'local' | 'remote' | 'pull_request';
|
|
677
|
+
|
|
678
|
+
export interface WorkspaceBranchListEntry {
|
|
679
|
+
id: string;
|
|
680
|
+
kind: WorkspaceBranchListEntryKind;
|
|
681
|
+
name: string;
|
|
682
|
+
displayName: string;
|
|
683
|
+
updatedAt?: string;
|
|
684
|
+
description?: string;
|
|
685
|
+
prNumber?: number;
|
|
686
|
+
prTitle: string;
|
|
687
|
+
headRefName?: string;
|
|
688
|
+
headLabel?: string;
|
|
689
|
+
headRepoCloneUrl?: string;
|
|
690
|
+
isCrossRepository?: boolean;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
export interface WorkspaceBranchListResult {
|
|
694
|
+
currentBranchName?: string;
|
|
695
|
+
defaultBranchName?: string;
|
|
696
|
+
recent: WorkspaceBranchListEntry[];
|
|
697
|
+
local: WorkspaceBranchListEntry[];
|
|
698
|
+
remote: WorkspaceBranchListEntry[];
|
|
699
|
+
pullRequests: WorkspaceBranchListEntry[];
|
|
700
|
+
pullRequestsStatus: 'available' | 'unavailable' | 'error';
|
|
701
|
+
pullRequestsError?: string;
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
export interface GithubPublishInfo {
|
|
705
|
+
ghInstalled: boolean;
|
|
706
|
+
authenticated: boolean;
|
|
707
|
+
activeAccountLogin?: string;
|
|
708
|
+
owners: string[];
|
|
709
|
+
suggestedRepoName: string;
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
export interface GitHubRepoAvailabilityResult {
|
|
713
|
+
available: boolean;
|
|
714
|
+
message: string;
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
export interface BranchMetadata {
|
|
718
|
+
branchName?: string;
|
|
719
|
+
defaultBranchName?: string;
|
|
720
|
+
hasOriginRemote?: boolean;
|
|
721
|
+
originRepoSlug?: string;
|
|
722
|
+
hasUpstream?: boolean;
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
export interface UpstreamStatus {
|
|
726
|
+
aheadCount?: number;
|
|
727
|
+
behindCount?: number;
|
|
728
|
+
lastFetchedAt?: string;
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
export interface WorkspaceGitSnapshot extends BranchMetadata, UpstreamStatus {
|
|
732
|
+
status: 'unknown' | 'ready' | 'no_repo';
|
|
733
|
+
files: WorkspaceDiffFile[];
|
|
734
|
+
pullRequestFiles?: WorkspaceDiffFile[];
|
|
735
|
+
hasPushedCommits?: boolean;
|
|
736
|
+
branchPublishState?: 'unknown' | 'local_only' | 'published';
|
|
737
|
+
mainAheadCount?: number;
|
|
738
|
+
branchHistory?: WorkspaceBranchHistorySnapshot;
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
export interface WorkspaceGitHubSnapshot {
|
|
742
|
+
status: 'unknown' | 'none' | 'open' | 'merged' | 'closed';
|
|
743
|
+
owner: string;
|
|
744
|
+
repo: string;
|
|
745
|
+
prNumber?: number;
|
|
746
|
+
title?: string;
|
|
747
|
+
body?: string;
|
|
748
|
+
url?: string;
|
|
749
|
+
headRefName?: string;
|
|
750
|
+
baseRefName?: string;
|
|
751
|
+
ciStatus?: 'unknown' | 'pending' | 'passing' | 'failing';
|
|
752
|
+
isDraft?: boolean;
|
|
753
|
+
mergeStateStatus?: string;
|
|
754
|
+
hasMergeConflicts?: boolean;
|
|
755
|
+
unresolvedCommentCount?: number;
|
|
756
|
+
additions?: number;
|
|
757
|
+
deletions?: number;
|
|
758
|
+
files?: WorkspaceDiffFile[];
|
|
759
|
+
comments: PullRequestCommentSnapshot[];
|
|
760
|
+
checks: PullRequestCheckSnapshot[];
|
|
761
|
+
createdAt?: number;
|
|
762
|
+
lastRefreshedAt?: number;
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
export interface PullRequestCommentSnapshot {
|
|
766
|
+
id: string;
|
|
767
|
+
author?: string;
|
|
768
|
+
authorAssociation?: string;
|
|
769
|
+
body: string;
|
|
770
|
+
url?: string;
|
|
771
|
+
path?: string;
|
|
772
|
+
line?: number;
|
|
773
|
+
isResolved?: boolean;
|
|
774
|
+
isBot: boolean;
|
|
775
|
+
source: 'issue' | 'review' | 'thread';
|
|
776
|
+
createdAt?: string;
|
|
777
|
+
updatedAt?: string;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
export interface PullRequestCheckSnapshot {
|
|
781
|
+
name: string;
|
|
782
|
+
workflowName?: string;
|
|
783
|
+
status: 'unknown' | 'pending' | 'passing' | 'failing';
|
|
784
|
+
conclusion?: string;
|
|
785
|
+
detailsUrl?: string;
|
|
786
|
+
startedAt?: string;
|
|
787
|
+
completedAt?: string;
|
|
788
|
+
summary?: string;
|
|
789
|
+
canFetchLogs: boolean;
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
export interface ScratchpadSnapshot {
|
|
793
|
+
workspaceId: string;
|
|
794
|
+
content: string;
|
|
795
|
+
updatedAt: number | null;
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
export interface WorkspaceSnapshot {
|
|
799
|
+
workspace: WorkspaceSummary;
|
|
800
|
+
primaryLabel: string;
|
|
801
|
+
healthState: WorkspaceHealthState;
|
|
802
|
+
git: WorkspaceGitSnapshot | null;
|
|
803
|
+
github: WorkspaceGitHubSnapshot | null;
|
|
804
|
+
sessions: SessionSummary[];
|
|
805
|
+
hasActiveSession: boolean;
|
|
806
|
+
hasUnreadAgentResult: boolean;
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
export interface BranchActionSuccess {
|
|
810
|
+
ok: true;
|
|
811
|
+
branchName?: string;
|
|
812
|
+
snapshotChanged: boolean;
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
export interface BranchActionFailure {
|
|
816
|
+
ok: false;
|
|
817
|
+
title: string;
|
|
818
|
+
message: string;
|
|
819
|
+
detail?: string;
|
|
820
|
+
cancelled?: boolean;
|
|
821
|
+
snapshotChanged?: boolean;
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
export type WorkspaceSyncSuccess = BranchActionSuccess & {
|
|
825
|
+
action: 'fetch' | 'pull' | 'push' | 'publish';
|
|
826
|
+
aheadCount?: number;
|
|
827
|
+
behindCount?: number;
|
|
828
|
+
};
|
|
829
|
+
|
|
830
|
+
export type WorkspaceSyncFailure = BranchActionFailure & {
|
|
831
|
+
action: 'fetch' | 'pull' | 'push' | 'publish';
|
|
832
|
+
};
|
|
833
|
+
|
|
834
|
+
export type WorkspaceSyncResult = WorkspaceSyncSuccess | WorkspaceSyncFailure;
|
|
835
|
+
|
|
836
|
+
export type DiffCommitMode = 'commit_and_push' | 'commit_only';
|
|
837
|
+
|
|
838
|
+
export type WorkspaceCheckoutBranchSuccess = BranchActionSuccess;
|
|
839
|
+
export type WorkspaceCheckoutBranchFailure = BranchActionFailure;
|
|
840
|
+
export type WorkspaceCheckoutBranchResult =
|
|
841
|
+
| WorkspaceCheckoutBranchSuccess
|
|
842
|
+
| WorkspaceCheckoutBranchFailure;
|
|
843
|
+
export type WorkspaceCreateBranchSuccess = BranchActionSuccess & { branchName: string };
|
|
844
|
+
export type WorkspaceCreateBranchFailure = BranchActionFailure;
|
|
845
|
+
export type WorkspaceCreateBranchResult =
|
|
846
|
+
| WorkspaceCreateBranchSuccess
|
|
847
|
+
| WorkspaceCreateBranchFailure;
|
|
848
|
+
export type WorkspaceMergePreviewStatus = 'up_to_date' | 'mergeable' | 'conflicts' | 'error';
|
|
849
|
+
|
|
850
|
+
export interface WorkspaceMergePreviewResult {
|
|
851
|
+
currentBranchName?: string;
|
|
852
|
+
targetBranchName: string;
|
|
853
|
+
targetDisplayName: string;
|
|
854
|
+
status: WorkspaceMergePreviewStatus;
|
|
855
|
+
commitCount: number;
|
|
856
|
+
hasConflicts: boolean;
|
|
857
|
+
message: string;
|
|
858
|
+
detail?: string;
|
|
859
|
+
}
|
|
860
|
+
export type WorkspaceMergeBranchSuccess = BranchActionSuccess;
|
|
861
|
+
export type WorkspaceMergeBranchFailure = BranchActionFailure;
|
|
862
|
+
export type WorkspaceMergeBranchResult = WorkspaceMergeBranchSuccess | WorkspaceMergeBranchFailure;
|
|
863
|
+
export type DiffCommitSuccess = BranchActionSuccess & { mode: DiffCommitMode; pushed: boolean };
|
|
864
|
+
|
|
865
|
+
export type DiffCommitFailure = BranchActionFailure & {
|
|
866
|
+
mode: DiffCommitMode;
|
|
867
|
+
phase: 'commit' | 'push';
|
|
868
|
+
localCommitCreated?: boolean;
|
|
869
|
+
};
|
|
870
|
+
|
|
871
|
+
export type DiffCommitResult = DiffCommitSuccess | DiffCommitFailure;
|
|
872
|
+
|
|
873
|
+
export interface ContextWindowUpdatedEntry extends TranscriptEntryBase {
|
|
874
|
+
kind: 'context_window_updated';
|
|
875
|
+
usage: ContextWindowUsageSnapshot;
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
export interface CompactBoundaryEntry extends TranscriptEntryBase {
|
|
879
|
+
kind: 'compact_boundary';
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
export interface CompactSummaryEntry extends TranscriptEntryBase {
|
|
883
|
+
kind: 'compact_summary';
|
|
884
|
+
summary: string;
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
export interface ContextClearedEntry extends TranscriptEntryBase {
|
|
888
|
+
kind: 'context_cleared';
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
export interface InterruptedEntry extends TranscriptEntryBase {
|
|
892
|
+
kind: 'interrupted';
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
export type TranscriptEntry =
|
|
896
|
+
| UserPromptEntry
|
|
897
|
+
| SystemInitEntry
|
|
898
|
+
| AccountInfoEntry
|
|
899
|
+
| AssistantTextEntry
|
|
900
|
+
| ToolCallEntry
|
|
901
|
+
| ToolResultEntry
|
|
902
|
+
| ResultEntry
|
|
903
|
+
| StatusEntry
|
|
904
|
+
| ContextWindowUpdatedEntry
|
|
905
|
+
| CompactBoundaryEntry
|
|
906
|
+
| CompactSummaryEntry
|
|
907
|
+
| ContextClearedEntry
|
|
908
|
+
| InterruptedEntry;
|
|
909
|
+
|
|
910
|
+
export interface HydratedToolCallBase<TKind extends string, TInput, TResult> {
|
|
911
|
+
id: string;
|
|
912
|
+
messageId?: string;
|
|
913
|
+
hidden?: boolean;
|
|
914
|
+
kind: 'tool';
|
|
915
|
+
toolKind: TKind;
|
|
916
|
+
toolName: string;
|
|
917
|
+
toolId: string;
|
|
918
|
+
input: TInput;
|
|
919
|
+
result?: TResult;
|
|
920
|
+
hasResult: boolean;
|
|
921
|
+
rawResult?: unknown;
|
|
922
|
+
isError?: boolean;
|
|
923
|
+
timestamp: string;
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
export interface AskUserQuestionToolResult {
|
|
927
|
+
answers: AskUserQuestionAnswerMap;
|
|
928
|
+
discarded?: boolean;
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
export interface ExitPlanModeToolResult {
|
|
932
|
+
confirmed?: boolean;
|
|
933
|
+
clearContext?: boolean;
|
|
934
|
+
message?: string;
|
|
935
|
+
discarded?: boolean;
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
export type HydratedAskUserQuestionToolCall = HydratedToolCallBase<
|
|
939
|
+
'ask_user_question',
|
|
940
|
+
AskUserQuestionToolCall['input'],
|
|
941
|
+
AskUserQuestionToolResult
|
|
942
|
+
>;
|
|
943
|
+
|
|
944
|
+
export type HydratedExitPlanModeToolCall = HydratedToolCallBase<
|
|
945
|
+
'exit_plan_mode',
|
|
946
|
+
ExitPlanModeToolCall['input'],
|
|
947
|
+
ExitPlanModeToolResult
|
|
948
|
+
>;
|
|
949
|
+
|
|
950
|
+
export type HydratedTodoWriteToolCall = HydratedToolCallBase<
|
|
951
|
+
'todo_write',
|
|
952
|
+
TodoWriteToolCall['input'],
|
|
953
|
+
unknown
|
|
954
|
+
>;
|
|
955
|
+
|
|
956
|
+
export type HydratedSkillToolCall = HydratedToolCallBase<'skill', SkillToolCall['input'], unknown>;
|
|
957
|
+
|
|
958
|
+
export type HydratedGlobToolCall = HydratedToolCallBase<'glob', GlobToolCall['input'], unknown>;
|
|
959
|
+
|
|
960
|
+
export type HydratedGrepToolCall = HydratedToolCallBase<'grep', GrepToolCall['input'], unknown>;
|
|
961
|
+
|
|
962
|
+
export type HydratedBashToolCall = HydratedToolCallBase<'bash', BashToolCall['input'], unknown>;
|
|
963
|
+
|
|
964
|
+
export type HydratedWebSearchToolCall = HydratedToolCallBase<
|
|
965
|
+
'web_search',
|
|
966
|
+
WebSearchToolCall['input'],
|
|
967
|
+
unknown
|
|
968
|
+
>;
|
|
969
|
+
|
|
970
|
+
export interface ReadFileTextBlock {
|
|
971
|
+
type: 'text';
|
|
972
|
+
text: string;
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
export interface ReadFileImageBlock {
|
|
976
|
+
type: 'image';
|
|
977
|
+
data: string;
|
|
978
|
+
mimeType?: string;
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
export interface ReadFileToolResult {
|
|
982
|
+
content: string;
|
|
983
|
+
blocks?: Array<ReadFileTextBlock | ReadFileImageBlock>;
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
export type HydratedReadFileToolCall = HydratedToolCallBase<
|
|
987
|
+
'read_file',
|
|
988
|
+
ReadFileToolCall['input'],
|
|
989
|
+
ReadFileToolResult | string
|
|
990
|
+
>;
|
|
991
|
+
|
|
992
|
+
export type HydratedWriteFileToolCall = HydratedToolCallBase<
|
|
993
|
+
'write_file',
|
|
994
|
+
WriteFileToolCall['input'],
|
|
995
|
+
unknown
|
|
996
|
+
>;
|
|
997
|
+
|
|
998
|
+
export type HydratedEditFileToolCall = HydratedToolCallBase<
|
|
999
|
+
'edit_file',
|
|
1000
|
+
EditFileToolCall['input'],
|
|
1001
|
+
unknown
|
|
1002
|
+
>;
|
|
1003
|
+
|
|
1004
|
+
export type HydratedDeleteFileToolCall = HydratedToolCallBase<
|
|
1005
|
+
'delete_file',
|
|
1006
|
+
DeleteFileToolCall['input'],
|
|
1007
|
+
unknown
|
|
1008
|
+
>;
|
|
1009
|
+
|
|
1010
|
+
export type HydratedSubagentTaskToolCall = HydratedToolCallBase<
|
|
1011
|
+
'subagent_task',
|
|
1012
|
+
SubAgentTaskToolCall['input'],
|
|
1013
|
+
unknown
|
|
1014
|
+
>;
|
|
1015
|
+
|
|
1016
|
+
export type HydratedMcpGenericToolCall = HydratedToolCallBase<
|
|
1017
|
+
'mcp_generic',
|
|
1018
|
+
McpGenericToolCall['input'],
|
|
1019
|
+
unknown
|
|
1020
|
+
>;
|
|
1021
|
+
|
|
1022
|
+
export type HydratedUnknownToolCall = HydratedToolCallBase<
|
|
1023
|
+
'unknown_tool',
|
|
1024
|
+
UnknownToolCall['input'],
|
|
1025
|
+
unknown
|
|
1026
|
+
>;
|
|
1027
|
+
|
|
1028
|
+
export type HydratedToolCall =
|
|
1029
|
+
| HydratedAskUserQuestionToolCall
|
|
1030
|
+
| HydratedExitPlanModeToolCall
|
|
1031
|
+
| HydratedTodoWriteToolCall
|
|
1032
|
+
| HydratedSkillToolCall
|
|
1033
|
+
| HydratedGlobToolCall
|
|
1034
|
+
| HydratedGrepToolCall
|
|
1035
|
+
| HydratedBashToolCall
|
|
1036
|
+
| HydratedWebSearchToolCall
|
|
1037
|
+
| HydratedReadFileToolCall
|
|
1038
|
+
| HydratedWriteFileToolCall
|
|
1039
|
+
| HydratedEditFileToolCall
|
|
1040
|
+
| HydratedDeleteFileToolCall
|
|
1041
|
+
| HydratedSubagentTaskToolCall
|
|
1042
|
+
| HydratedMcpGenericToolCall
|
|
1043
|
+
| HydratedUnknownToolCall;
|
|
1044
|
+
|
|
1045
|
+
export type HydratedTranscriptMessage =
|
|
1046
|
+
| {
|
|
1047
|
+
kind: 'user_prompt';
|
|
1048
|
+
content: string;
|
|
1049
|
+
attachments?: ChatAttachment[];
|
|
1050
|
+
parts?: PromptPart[];
|
|
1051
|
+
id: string;
|
|
1052
|
+
messageId?: string;
|
|
1053
|
+
timestamp: string;
|
|
1054
|
+
hidden?: boolean;
|
|
1055
|
+
}
|
|
1056
|
+
| {
|
|
1057
|
+
kind: 'system_init';
|
|
1058
|
+
model: string;
|
|
1059
|
+
tools: string[];
|
|
1060
|
+
agents: string[];
|
|
1061
|
+
slashCommands: string[];
|
|
1062
|
+
mcpServers: McpServerInfo[];
|
|
1063
|
+
provider: AgentProvider;
|
|
1064
|
+
id: string;
|
|
1065
|
+
messageId?: string;
|
|
1066
|
+
timestamp: string;
|
|
1067
|
+
hidden?: boolean;
|
|
1068
|
+
debugRaw?: string;
|
|
1069
|
+
}
|
|
1070
|
+
| {
|
|
1071
|
+
kind: 'account_info';
|
|
1072
|
+
accountInfo: AccountInfo;
|
|
1073
|
+
id: string;
|
|
1074
|
+
messageId?: string;
|
|
1075
|
+
timestamp: string;
|
|
1076
|
+
hidden?: boolean;
|
|
1077
|
+
}
|
|
1078
|
+
| {
|
|
1079
|
+
kind: 'assistant_text';
|
|
1080
|
+
text: string;
|
|
1081
|
+
id: string;
|
|
1082
|
+
messageId?: string;
|
|
1083
|
+
timestamp: string;
|
|
1084
|
+
hidden?: boolean;
|
|
1085
|
+
}
|
|
1086
|
+
| {
|
|
1087
|
+
kind: 'result';
|
|
1088
|
+
success: boolean;
|
|
1089
|
+
cancelled?: boolean;
|
|
1090
|
+
result: string;
|
|
1091
|
+
durationMs: number;
|
|
1092
|
+
costUsd?: number;
|
|
1093
|
+
id: string;
|
|
1094
|
+
messageId?: string;
|
|
1095
|
+
timestamp: string;
|
|
1096
|
+
hidden?: boolean;
|
|
1097
|
+
}
|
|
1098
|
+
| {
|
|
1099
|
+
kind: 'status';
|
|
1100
|
+
status: string;
|
|
1101
|
+
id: string;
|
|
1102
|
+
messageId?: string;
|
|
1103
|
+
timestamp: string;
|
|
1104
|
+
hidden?: boolean;
|
|
1105
|
+
}
|
|
1106
|
+
| {
|
|
1107
|
+
kind: 'context_window_updated';
|
|
1108
|
+
usage: ContextWindowUsageSnapshot;
|
|
1109
|
+
id: string;
|
|
1110
|
+
messageId?: string;
|
|
1111
|
+
timestamp: string;
|
|
1112
|
+
hidden?: boolean;
|
|
1113
|
+
}
|
|
1114
|
+
| {
|
|
1115
|
+
kind: 'compact_boundary';
|
|
1116
|
+
id: string;
|
|
1117
|
+
messageId?: string;
|
|
1118
|
+
timestamp: string;
|
|
1119
|
+
hidden?: boolean;
|
|
1120
|
+
}
|
|
1121
|
+
| {
|
|
1122
|
+
kind: 'compact_summary';
|
|
1123
|
+
summary: string;
|
|
1124
|
+
id: string;
|
|
1125
|
+
messageId?: string;
|
|
1126
|
+
timestamp: string;
|
|
1127
|
+
hidden?: boolean;
|
|
1128
|
+
}
|
|
1129
|
+
| { kind: 'context_cleared'; id: string; messageId?: string; timestamp: string; hidden?: boolean }
|
|
1130
|
+
| { kind: 'interrupted'; id: string; messageId?: string; timestamp: string; hidden?: boolean }
|
|
1131
|
+
| {
|
|
1132
|
+
kind: 'unknown';
|
|
1133
|
+
json: string;
|
|
1134
|
+
id: string;
|
|
1135
|
+
messageId?: string;
|
|
1136
|
+
timestamp: string;
|
|
1137
|
+
hidden?: boolean;
|
|
1138
|
+
}
|
|
1139
|
+
| {
|
|
1140
|
+
kind: 'tool_result';
|
|
1141
|
+
toolId: string;
|
|
1142
|
+
rawResult: unknown;
|
|
1143
|
+
isError?: boolean;
|
|
1144
|
+
id: string;
|
|
1145
|
+
messageId?: string;
|
|
1146
|
+
timestamp: string;
|
|
1147
|
+
hidden?: boolean;
|
|
1148
|
+
}
|
|
1149
|
+
| ({ id: string; messageId?: string; hidden?: boolean } & HydratedToolCall);
|
|
1150
|
+
|
|
1151
|
+
export interface SessionRuntime {
|
|
1152
|
+
sessionId: string;
|
|
1153
|
+
workspaceId: string;
|
|
1154
|
+
directoryId: string;
|
|
1155
|
+
localPath: string;
|
|
1156
|
+
title: string;
|
|
1157
|
+
status: MikoStatus;
|
|
1158
|
+
isDraining: boolean;
|
|
1159
|
+
provider: AgentProvider | null;
|
|
1160
|
+
planMode: boolean;
|
|
1161
|
+
sessionToken: string | null;
|
|
1162
|
+
/** Set when the turn is parked awaiting a user response (plan approval / question). */
|
|
1163
|
+
pendingTool: PendingToolSnapshot | null;
|
|
1164
|
+
/** Messages queued while a turn is running, drained FIFO as each turn settles. */
|
|
1165
|
+
queued: QueuedMessageSnapshot[];
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
/** A message waiting to run after the active turn settles (see queue behavior). */
|
|
1169
|
+
export interface QueuedMessageSnapshot {
|
|
1170
|
+
id: string;
|
|
1171
|
+
content: string;
|
|
1172
|
+
attachmentCount: number;
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
export interface SessionHistorySnapshot {
|
|
1176
|
+
hasOlder: boolean;
|
|
1177
|
+
olderCursor: string | null;
|
|
1178
|
+
recentLimit: number;
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1181
|
+
export interface SessionSnapshot {
|
|
1182
|
+
runtime: SessionRuntime;
|
|
1183
|
+
messages: TranscriptEntry[];
|
|
1184
|
+
history: SessionHistorySnapshot;
|
|
1185
|
+
availableProviders: ProviderCatalogEntry[];
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
export interface SessionHistoryPage {
|
|
1189
|
+
messages: TranscriptEntry[];
|
|
1190
|
+
hasOlder: boolean;
|
|
1191
|
+
olderCursor: string | null;
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
export interface WorkspaceAppSnapshot {
|
|
1195
|
+
sidebar: SidebarSnapshot;
|
|
1196
|
+
session?: SessionSnapshot | null;
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1199
|
+
export type PendingToolSnapshot =
|
|
1200
|
+
| {
|
|
1201
|
+
toolUseId: string;
|
|
1202
|
+
toolKind: 'exit_plan_mode';
|
|
1203
|
+
plan?: string;
|
|
1204
|
+
summary?: string;
|
|
1205
|
+
}
|
|
1206
|
+
| {
|
|
1207
|
+
toolUseId: string;
|
|
1208
|
+
toolKind: 'ask_user_question';
|
|
1209
|
+
questions: AskUserQuestionItem[];
|
|
1210
|
+
};
|
|
1211
|
+
|
|
1212
|
+
/**
|
|
1213
|
+
* A slash command available in a session's composer. Sourced per provider: Claude via the
|
|
1214
|
+
* SDK's `supportedCommands()`, Codex via the app-server `skills/list`. `name` has no leading slash.
|
|
1215
|
+
*/
|
|
1216
|
+
export interface SlashCommandInfo {
|
|
1217
|
+
name: string;
|
|
1218
|
+
description?: string;
|
|
1219
|
+
argumentHint?: string;
|
|
1220
|
+
}
|