@mquan/mochi 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/README.md +154 -0
- package/dist/bin/mochi.d.ts +3 -0
- package/dist/bin/mochi.d.ts.map +1 -0
- package/dist/bin/mochi.js +74 -0
- package/dist/bin/mochi.js.map +1 -0
- package/dist/bin/tsconfig.tsbuildinfo +1 -0
- package/dist/server/analysis/git-context.d.ts +12 -0
- package/dist/server/analysis/git-context.d.ts.map +1 -0
- package/dist/server/analysis/git-context.js +151 -0
- package/dist/server/analysis/git-context.js.map +1 -0
- package/dist/server/analysis/grammars.d.ts +3 -0
- package/dist/server/analysis/grammars.d.ts.map +1 -0
- package/dist/server/analysis/grammars.js +32 -0
- package/dist/server/analysis/grammars.js.map +1 -0
- package/dist/server/analysis/index.d.ts +8 -0
- package/dist/server/analysis/index.d.ts.map +1 -0
- package/dist/server/analysis/index.js +86 -0
- package/dist/server/analysis/index.js.map +1 -0
- package/dist/server/analysis/tree-sitter.d.ts +20 -0
- package/dist/server/analysis/tree-sitter.d.ts.map +1 -0
- package/dist/server/analysis/tree-sitter.js +126 -0
- package/dist/server/analysis/tree-sitter.js.map +1 -0
- package/dist/server/analysis/ts-morph.d.ts +17 -0
- package/dist/server/analysis/ts-morph.d.ts.map +1 -0
- package/dist/server/analysis/ts-morph.js +143 -0
- package/dist/server/analysis/ts-morph.js.map +1 -0
- package/dist/server/analysis/types.d.ts +7 -0
- package/dist/server/analysis/types.d.ts.map +1 -0
- package/dist/server/analysis/types.js +9 -0
- package/dist/server/analysis/types.js.map +1 -0
- package/dist/server/api.d.ts +14 -0
- package/dist/server/api.d.ts.map +1 -0
- package/dist/server/api.js +121 -0
- package/dist/server/api.js.map +1 -0
- package/dist/server/diagram/cache.d.ts +23 -0
- package/dist/server/diagram/cache.d.ts.map +1 -0
- package/dist/server/diagram/cache.js +158 -0
- package/dist/server/diagram/cache.js.map +1 -0
- package/dist/server/diagram/endpoint.d.ts +21 -0
- package/dist/server/diagram/endpoint.d.ts.map +1 -0
- package/dist/server/diagram/endpoint.js +426 -0
- package/dist/server/diagram/endpoint.js.map +1 -0
- package/dist/server/diagram/generate.d.ts +220 -0
- package/dist/server/diagram/generate.d.ts.map +1 -0
- package/dist/server/diagram/generate.js +605 -0
- package/dist/server/diagram/generate.js.map +1 -0
- package/dist/server/diagram/prompt-version.d.ts +2 -0
- package/dist/server/diagram/prompt-version.d.ts.map +1 -0
- package/dist/server/diagram/prompt-version.js +47 -0
- package/dist/server/diagram/prompt-version.js.map +1 -0
- package/dist/server/diagram/prompts/diagram-spec.md +315 -0
- package/dist/server/diagram/scope-resolver.d.ts +44 -0
- package/dist/server/diagram/scope-resolver.d.ts.map +1 -0
- package/dist/server/diagram/scope-resolver.js +198 -0
- package/dist/server/diagram/scope-resolver.js.map +1 -0
- package/dist/server/diagram/spawn.d.ts +18 -0
- package/dist/server/diagram/spawn.d.ts.map +1 -0
- package/dist/server/diagram/spawn.js +103 -0
- package/dist/server/diagram/spawn.js.map +1 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +2 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/input/path-selector.d.ts +8 -0
- package/dist/server/input/path-selector.d.ts.map +1 -0
- package/dist/server/input/path-selector.js +45 -0
- package/dist/server/input/path-selector.js.map +1 -0
- package/dist/server/server.d.ts +14 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +79 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/tsconfig.tsbuildinfo +1 -0
- package/dist/shared/analysis-schema.d.ts +120 -0
- package/dist/shared/analysis-schema.d.ts.map +1 -0
- package/dist/shared/analysis-schema.js +43 -0
- package/dist/shared/analysis-schema.js.map +1 -0
- package/dist/shared/design/index.d.ts +6 -0
- package/dist/shared/design/index.d.ts.map +1 -0
- package/dist/shared/design/index.js +7 -0
- package/dist/shared/design/index.js.map +1 -0
- package/dist/shared/design/kinds.d.ts +26 -0
- package/dist/shared/design/kinds.d.ts.map +1 -0
- package/dist/shared/design/kinds.js +141 -0
- package/dist/shared/design/kinds.js.map +1 -0
- package/dist/shared/design/lenses.d.ts +11 -0
- package/dist/shared/design/lenses.d.ts.map +1 -0
- package/dist/shared/design/lenses.js +36 -0
- package/dist/shared/design/lenses.js.map +1 -0
- package/dist/shared/design/node-styles.d.ts +24 -0
- package/dist/shared/design/node-styles.d.ts.map +1 -0
- package/dist/shared/design/node-styles.js +150 -0
- package/dist/shared/design/node-styles.js.map +1 -0
- package/dist/shared/design/prompt-fragments.d.ts +4 -0
- package/dist/shared/design/prompt-fragments.d.ts.map +1 -0
- package/dist/shared/design/prompt-fragments.js +45 -0
- package/dist/shared/design/prompt-fragments.js.map +1 -0
- package/dist/shared/design/tokens.d.ts +102 -0
- package/dist/shared/design/tokens.d.ts.map +1 -0
- package/dist/shared/design/tokens.js +110 -0
- package/dist/shared/design/tokens.js.map +1 -0
- package/dist/shared/diagram-spec.d.ts +914 -0
- package/dist/shared/diagram-spec.d.ts.map +1 -0
- package/dist/shared/diagram-spec.js +173 -0
- package/dist/shared/diagram-spec.js.map +1 -0
- package/dist/shared/index.d.ts +2 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +2 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/tsconfig.tsbuildinfo +1 -0
- package/dist/web/assets/abap-BdImnpbu.js +1 -0
- package/dist/web/assets/actionscript-3-CoDkCxhg.js +1 -0
- package/dist/web/assets/ada-bCR0ucgS.js +1 -0
- package/dist/web/assets/andromeeda-C4gqWexZ.js +1 -0
- package/dist/web/assets/angular-html-DMxchsRu.js +1 -0
- package/dist/web/assets/angular-ts-DzOHUlBM.js +1 -0
- package/dist/web/assets/apache-Pmp26Uib.js +1 -0
- package/dist/web/assets/apex-D8_7TLub.js +1 -0
- package/dist/web/assets/apl-dKokRX4l.js +1 -0
- package/dist/web/assets/applescript-Co6uUVPk.js +1 -0
- package/dist/web/assets/ara-BRHolxvo.js +1 -0
- package/dist/web/assets/asciidoc-Ve4PFQV2.js +1 -0
- package/dist/web/assets/asm-D_Q5rh1f.js +1 -0
- package/dist/web/assets/astro-CbQHKStN.js +1 -0
- package/dist/web/assets/aurora-x-D-2ljcwZ.js +1 -0
- package/dist/web/assets/awk-DMzUqQB5.js +1 -0
- package/dist/web/assets/ayu-dark-DYE7WIF3.js +1 -0
- package/dist/web/assets/ayu-light-BA47KaF1.js +1 -0
- package/dist/web/assets/ayu-mirage-32ctXXKs.js +1 -0
- package/dist/web/assets/ballerina-BFfxhgS-.js +1 -0
- package/dist/web/assets/bat-BkioyH1T.js +1 -0
- package/dist/web/assets/beancount-k_qm7-4y.js +1 -0
- package/dist/web/assets/berry-uYugtg8r.js +1 -0
- package/dist/web/assets/bibtex-CHM0blh-.js +1 -0
- package/dist/web/assets/bicep-Bmn6On1c.js +1 -0
- package/dist/web/assets/bird2-DPOp833l.js +1 -0
- package/dist/web/assets/blade-D4QpJJKB.js +1 -0
- package/dist/web/assets/bsl-BO_Y6i37.js +1 -0
- package/dist/web/assets/c-BIGW1oBm.js +1 -0
- package/dist/web/assets/c3-eo99z4R2.js +1 -0
- package/dist/web/assets/cadence-Bv_4Rxtq.js +1 -0
- package/dist/web/assets/cairo-KRGpt6FW.js +1 -0
- package/dist/web/assets/catppuccin-frappe-DFWUc33u.js +1 -0
- package/dist/web/assets/catppuccin-latte-C9dUb6Cb.js +1 -0
- package/dist/web/assets/catppuccin-macchiato-DQyhUUbL.js +1 -0
- package/dist/web/assets/catppuccin-mocha-D87Tk5Gz.js +1 -0
- package/dist/web/assets/clarity-D53aC0YG.js +1 -0
- package/dist/web/assets/clojure-P80f7IUj.js +1 -0
- package/dist/web/assets/cmake-D1j8_8rp.js +1 -0
- package/dist/web/assets/cobol-nwyudZeR.js +1 -0
- package/dist/web/assets/codeowners-Bp6g37R7.js +1 -0
- package/dist/web/assets/codeql-DsOJ9woJ.js +1 -0
- package/dist/web/assets/coffee-Ch7k5sss.js +1 -0
- package/dist/web/assets/common-lisp-Cg-RD9OK.js +1 -0
- package/dist/web/assets/coq-DkFqJrB1.js +1 -0
- package/dist/web/assets/cpp-CofmeUqb.js +1 -0
- package/dist/web/assets/crystal-tKQVLTB8.js +1 -0
- package/dist/web/assets/csharp-COcwbKMJ.js +1 -0
- package/dist/web/assets/css-DPfMkruS.js +1 -0
- package/dist/web/assets/csv-fuZLfV_i.js +1 -0
- package/dist/web/assets/cue-D82EKSYY.js +1 -0
- package/dist/web/assets/cypher-COkxafJQ.js +1 -0
- package/dist/web/assets/d-85-TOEBH.js +1 -0
- package/dist/web/assets/dark-plus-C3mMm8J8.js +1 -0
- package/dist/web/assets/dart-CF10PKvl.js +1 -0
- package/dist/web/assets/dax-CEL-wOlO.js +1 -0
- package/dist/web/assets/desktop-BmXAJ9_W.js +1 -0
- package/dist/web/assets/diff-D97Zzqfu.js +1 -0
- package/dist/web/assets/docker-BcOcwvcX.js +1 -0
- package/dist/web/assets/dotenv-Da5cRb03.js +1 -0
- package/dist/web/assets/dracula-BzJJZx-M.js +1 -0
- package/dist/web/assets/dracula-soft-BXkSAIEj.js +1 -0
- package/dist/web/assets/dream-maker-BtqSS_iP.js +1 -0
- package/dist/web/assets/edge-BkV0erSs.js +1 -0
- package/dist/web/assets/elixir-CDX3lj18.js +1 -0
- package/dist/web/assets/elm-DbKCFpqz.js +1 -0
- package/dist/web/assets/emacs-lisp-C9XAeP06.js +1 -0
- package/dist/web/assets/erb-B12qg9BL.js +1 -0
- package/dist/web/assets/erlang-DsQrWhSR.js +1 -0
- package/dist/web/assets/everforest-dark-BgDCqdQA.js +1 -0
- package/dist/web/assets/everforest-light-C8M2exoo.js +1 -0
- package/dist/web/assets/fennel-BYunw83y.js +1 -0
- package/dist/web/assets/fish-BvzEVeQv.js +1 -0
- package/dist/web/assets/fluent-C4IJs8-o.js +1 -0
- package/dist/web/assets/fortran-fixed-form-CkoXwp7k.js +1 -0
- package/dist/web/assets/fortran-free-form-BxgE0vQu.js +1 -0
- package/dist/web/assets/fsharp-CXgrBDvD.js +1 -0
- package/dist/web/assets/gdresource-BOOCDP_w.js +1 -0
- package/dist/web/assets/gdscript-C5YyOfLZ.js +1 -0
- package/dist/web/assets/gdshader-DkwncUOv.js +1 -0
- package/dist/web/assets/genie-D0YGMca9.js +1 -0
- package/dist/web/assets/gherkin-DyxjwDmM.js +1 -0
- package/dist/web/assets/git-commit-F4YmCXRG.js +1 -0
- package/dist/web/assets/git-rebase-r7XF79zn.js +1 -0
- package/dist/web/assets/github-dark-DHJKELXO.js +1 -0
- package/dist/web/assets/github-dark-default-Cuk6v7N8.js +1 -0
- package/dist/web/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
- package/dist/web/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
- package/dist/web/assets/github-light-DAi9KRSo.js +1 -0
- package/dist/web/assets/github-light-default-D7oLnXFd.js +1 -0
- package/dist/web/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
- package/dist/web/assets/gleam-BspZqrRM.js +1 -0
- package/dist/web/assets/glimmer-js-Rg0-pVw9.js +1 -0
- package/dist/web/assets/glimmer-ts-U6CK756n.js +1 -0
- package/dist/web/assets/glsl-DplSGwfg.js +1 -0
- package/dist/web/assets/gn-n2N0HUVH.js +1 -0
- package/dist/web/assets/gnuplot-DdkO51Og.js +1 -0
- package/dist/web/assets/go-CxLEBnE3.js +1 -0
- package/dist/web/assets/graphql-ChdNCCLP.js +1 -0
- package/dist/web/assets/groovy-gcz8RCvz.js +1 -0
- package/dist/web/assets/gruvbox-dark-hard-CFHQjOhq.js +1 -0
- package/dist/web/assets/gruvbox-dark-medium-GsRaNv29.js +1 -0
- package/dist/web/assets/gruvbox-dark-soft-CVdnzihN.js +1 -0
- package/dist/web/assets/gruvbox-light-hard-CH1njM8p.js +1 -0
- package/dist/web/assets/gruvbox-light-medium-DRw_LuNl.js +1 -0
- package/dist/web/assets/gruvbox-light-soft-hJgmCMqR.js +1 -0
- package/dist/web/assets/hack-CaT9iCJl.js +1 -0
- package/dist/web/assets/haml-B8DHNrY2.js +1 -0
- package/dist/web/assets/handlebars-BL8al0AC.js +1 -0
- package/dist/web/assets/haskell-Df6bDoY_.js +1 -0
- package/dist/web/assets/haxe-CzTSHFRz.js +1 -0
- package/dist/web/assets/hcl-BWvSN4gD.js +1 -0
- package/dist/web/assets/hjson-D5-asLiD.js +1 -0
- package/dist/web/assets/hlsl-D3lLCCz7.js +1 -0
- package/dist/web/assets/horizon-BUw7H-hv.js +1 -0
- package/dist/web/assets/horizon-bright-Cn-bp-IR.js +1 -0
- package/dist/web/assets/houston-DnULxvSX.js +1 -0
- package/dist/web/assets/html-GMplVEZG.js +1 -0
- package/dist/web/assets/html-derivative-BFtXZ54Q.js +1 -0
- package/dist/web/assets/http-jrhK8wxY.js +1 -0
- package/dist/web/assets/hurl-irOxFIW8.js +1 -0
- package/dist/web/assets/hxml-Bvhsp5Yf.js +1 -0
- package/dist/web/assets/hy-DFXneXwc.js +1 -0
- package/dist/web/assets/imba-DGztddWO.js +1 -0
- package/dist/web/assets/index-B4-Q-CcM.js +88 -0
- package/dist/web/assets/index-DtQV41FL.css +1 -0
- package/dist/web/assets/ini-BEwlwnbL.js +1 -0
- package/dist/web/assets/java-CylS5w8V.js +1 -0
- package/dist/web/assets/javascript-wDzz0qaB.js +1 -0
- package/dist/web/assets/jinja-4LBKfQ-Z.js +1 -0
- package/dist/web/assets/jison-wvAkD_A8.js +1 -0
- package/dist/web/assets/json-Cp-IABpG.js +1 -0
- package/dist/web/assets/json5-C9tS-k6U.js +1 -0
- package/dist/web/assets/jsonc-Des-eS-w.js +1 -0
- package/dist/web/assets/jsonl-DcaNXYhu.js +1 -0
- package/dist/web/assets/jsonnet-DFQXde-d.js +1 -0
- package/dist/web/assets/jssm-C2t-YnRu.js +1 -0
- package/dist/web/assets/jsx-g9-lgVsj.js +1 -0
- package/dist/web/assets/julia-CxzCAyBv.js +1 -0
- package/dist/web/assets/just-Cw27pwNe.js +1 -0
- package/dist/web/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
- package/dist/web/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
- package/dist/web/assets/kanagawa-wave-DWedfzmr.js +1 -0
- package/dist/web/assets/kdl-DV7GczEv.js +1 -0
- package/dist/web/assets/kotlin-BdnUsdx6.js +1 -0
- package/dist/web/assets/kusto-DZf3V79B.js +1 -0
- package/dist/web/assets/laserwave-DUszq2jm.js +1 -0
- package/dist/web/assets/latex-CWtU0Tv5.js +1 -0
- package/dist/web/assets/lean-BZvkOJ9d.js +1 -0
- package/dist/web/assets/less-B1dDrJ26.js +1 -0
- package/dist/web/assets/light-plus-B7mTdjB0.js +1 -0
- package/dist/web/assets/liquid-DYVedYrR.js +1 -0
- package/dist/web/assets/llvm-DjAJT7YJ.js +1 -0
- package/dist/web/assets/log-2UxHyX5q.js +1 -0
- package/dist/web/assets/logo-BtOb2qkB.js +1 -0
- package/dist/web/assets/lua-BaeVxFsk.js +1 -0
- package/dist/web/assets/luau-C-HG3fhB.js +1 -0
- package/dist/web/assets/make-CHLpvVh8.js +1 -0
- package/dist/web/assets/markdown-Cvjx9yec.js +1 -0
- package/dist/web/assets/marko-CnJfTvn9.js +1 -0
- package/dist/web/assets/material-theme-D5KoaKCx.js +1 -0
- package/dist/web/assets/material-theme-darker-BfHTSMKl.js +1 -0
- package/dist/web/assets/material-theme-lighter-B0m2ddpp.js +1 -0
- package/dist/web/assets/material-theme-ocean-CyktbL80.js +1 -0
- package/dist/web/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
- package/dist/web/assets/matlab-D7o27uSR.js +1 -0
- package/dist/web/assets/mdc-BMNejdWA.js +1 -0
- package/dist/web/assets/mdx-Cmh6b_Ma.js +1 -0
- package/dist/web/assets/mermaid-mWjccvbQ.js +1 -0
- package/dist/web/assets/min-dark-CafNBF8u.js +1 -0
- package/dist/web/assets/min-light-CTRr51gU.js +1 -0
- package/dist/web/assets/mipsasm-CKIfxQSi.js +1 -0
- package/dist/web/assets/mojo-rZm6bMo-.js +1 -0
- package/dist/web/assets/monokai-D4h5O-jR.js +1 -0
- package/dist/web/assets/moonbit-_H4v1dQx.js +1 -0
- package/dist/web/assets/move-IF9eRakj.js +1 -0
- package/dist/web/assets/narrat-DRg8JJMk.js +1 -0
- package/dist/web/assets/nextflow-Zz6hmt5N.js +1 -0
- package/dist/web/assets/nextflow-groovy-BeH2EWoN.js +1 -0
- package/dist/web/assets/nginx-BpAMiNFr.js +1 -0
- package/dist/web/assets/night-owl-C39BiMTA.js +1 -0
- package/dist/web/assets/night-owl-light-CMTm3GFP.js +1 -0
- package/dist/web/assets/nim-CVrawwO9.js +1 -0
- package/dist/web/assets/nix-CwoSXNpI.js +1 -0
- package/dist/web/assets/nord-Ddv68eIx.js +1 -0
- package/dist/web/assets/nushell-Cz2AlsmD.js +1 -0
- package/dist/web/assets/objective-c-DXmwc3jG.js +1 -0
- package/dist/web/assets/objective-cpp-CLxacb5B.js +1 -0
- package/dist/web/assets/ocaml-C0hk2d4L.js +1 -0
- package/dist/web/assets/odin-BBf5iR-q.js +1 -0
- package/dist/web/assets/one-dark-pro-DVMEJ2y_.js +1 -0
- package/dist/web/assets/one-light-C3Wv6jpd.js +1 -0
- package/dist/web/assets/openscad-C4EeE6gA.js +1 -0
- package/dist/web/assets/pascal-D93ZcfNL.js +1 -0
- package/dist/web/assets/perl-C0TMdlhV.js +1 -0
- package/dist/web/assets/php-Dhbhpdrm.js +1 -0
- package/dist/web/assets/pkl-u5AG7uiY.js +1 -0
- package/dist/web/assets/plastic-3e1v2bzS.js +1 -0
- package/dist/web/assets/plsql-ChMvpjG-.js +1 -0
- package/dist/web/assets/po-BTJTHyun.js +1 -0
- package/dist/web/assets/poimandres-CS3Unz2-.js +1 -0
- package/dist/web/assets/polar-C0HS_06l.js +1 -0
- package/dist/web/assets/postcss-CXtECtnM.js +1 -0
- package/dist/web/assets/powerquery-CEu0bR-o.js +1 -0
- package/dist/web/assets/powershell-Dpen1YoG.js +1 -0
- package/dist/web/assets/prisma-Dd19v3D-.js +1 -0
- package/dist/web/assets/prolog-CbFg5uaA.js +1 -0
- package/dist/web/assets/proto-C7zT0LnQ.js +1 -0
- package/dist/web/assets/pug-CGlum2m_.js +1 -0
- package/dist/web/assets/puppet-BMWR74SV.js +1 -0
- package/dist/web/assets/purescript-CklMAg4u.js +1 -0
- package/dist/web/assets/python-B6aJPvgy.js +1 -0
- package/dist/web/assets/qml-3beO22l8.js +1 -0
- package/dist/web/assets/qmldir-C8lEn-DE.js +1 -0
- package/dist/web/assets/qss-IeuSbFQv.js +1 -0
- package/dist/web/assets/r-Dspwwk_N.js +1 -0
- package/dist/web/assets/racket-BqYA7rlc.js +1 -0
- package/dist/web/assets/raku-DXvB9xmW.js +1 -0
- package/dist/web/assets/razor-Uh8Bk_45.js +1 -0
- package/dist/web/assets/red-bN70gL4F.js +1 -0
- package/dist/web/assets/reg-C-SQnVFl.js +1 -0
- package/dist/web/assets/regexp-CDVJQ6XC.js +1 -0
- package/dist/web/assets/rel-C3B-1QV4.js +1 -0
- package/dist/web/assets/riscv-BM1_JUlF.js +1 -0
- package/dist/web/assets/ron-D8l8udqQ.js +1 -0
- package/dist/web/assets/rose-pine-dawn-DHQR4-dF.js +1 -0
- package/dist/web/assets/rose-pine-moon-D4_iv3hh.js +1 -0
- package/dist/web/assets/rose-pine-qdsjHGoJ.js +1 -0
- package/dist/web/assets/rosmsg-BJDFO7_C.js +1 -0
- package/dist/web/assets/rst-BrH8l1NY.js +1 -0
- package/dist/web/assets/ruby-Dw2BHqvy.js +1 -0
- package/dist/web/assets/rust-B1yitclQ.js +1 -0
- package/dist/web/assets/sas-cz2c8ADy.js +1 -0
- package/dist/web/assets/sass-Cj5Yp3dK.js +1 -0
- package/dist/web/assets/scala-C151Ov-r.js +1 -0
- package/dist/web/assets/scheme-C98Dy4si.js +1 -0
- package/dist/web/assets/scss-OYdSNvt2.js +1 -0
- package/dist/web/assets/sdbl-DVxCFoDh.js +1 -0
- package/dist/web/assets/shaderlab-Dg9Lc6iA.js +1 -0
- package/dist/web/assets/shellscript-Yzrsuije.js +1 -0
- package/dist/web/assets/shellsession-BADoaaVG.js +1 -0
- package/dist/web/assets/slack-dark-BthQWCQV.js +1 -0
- package/dist/web/assets/slack-ochin-DqwNpetd.js +1 -0
- package/dist/web/assets/smalltalk-BERRCDM3.js +1 -0
- package/dist/web/assets/snazzy-light-Bw305WKR.js +1 -0
- package/dist/web/assets/solarized-dark-DXbdFlpD.js +1 -0
- package/dist/web/assets/solarized-light-L9t79GZl.js +1 -0
- package/dist/web/assets/solidity-rGO070M0.js +1 -0
- package/dist/web/assets/soy-Brmx7dQM.js +1 -0
- package/dist/web/assets/sparql-rVzFXLq3.js +1 -0
- package/dist/web/assets/splunk-BtCnVYZw.js +1 -0
- package/dist/web/assets/sql-BLtJtn59.js +1 -0
- package/dist/web/assets/ssh-config-_ykCGR6B.js +1 -0
- package/dist/web/assets/stata-BH5u7GGu.js +1 -0
- package/dist/web/assets/stylus-BEDo0Tqx.js +1 -0
- package/dist/web/assets/surrealql-Bq5Q-fJD.js +1 -0
- package/dist/web/assets/svelte-C_ipcX3V.js +1 -0
- package/dist/web/assets/swift-D82vCrfD.js +1 -0
- package/dist/web/assets/synthwave-84-CbfX1IO0.js +1 -0
- package/dist/web/assets/system-verilog-CnnmHF94.js +1 -0
- package/dist/web/assets/systemd-4A_iFExJ.js +1 -0
- package/dist/web/assets/talonscript-CkByrt1z.js +1 -0
- package/dist/web/assets/tasl-QIJgUcNo.js +1 -0
- package/dist/web/assets/tcl-dwOrl1Do.js +1 -0
- package/dist/web/assets/templ-P3uqSqPl.js +1 -0
- package/dist/web/assets/terraform-BETggiCN.js +1 -0
- package/dist/web/assets/tex-idrVyKtj.js +1 -0
- package/dist/web/assets/tokyo-night-hegEt444.js +1 -0
- package/dist/web/assets/toml-vGWfd6FD.js +1 -0
- package/dist/web/assets/ts-tags-zn1MmPIZ.js +1 -0
- package/dist/web/assets/tsv-B_m7g4N7.js +1 -0
- package/dist/web/assets/tsx-COt5Ahok.js +1 -0
- package/dist/web/assets/turtle-BsS91CYL.js +1 -0
- package/dist/web/assets/twig-DNn4PbVi.js +1 -0
- package/dist/web/assets/typescript-BPQ3VLAy.js +1 -0
- package/dist/web/assets/typespec-BGHnOYBU.js +1 -0
- package/dist/web/assets/typst-DHCkPAjA.js +1 -0
- package/dist/web/assets/v-BcVCzyr7.js +1 -0
- package/dist/web/assets/vala-CsfeWuGM.js +1 -0
- package/dist/web/assets/vb-D17OF-Vu.js +1 -0
- package/dist/web/assets/verilog-BQ8w6xss.js +1 -0
- package/dist/web/assets/vesper-DU1UobuO.js +1 -0
- package/dist/web/assets/vhdl-CeAyd5Ju.js +1 -0
- package/dist/web/assets/viml-CJc9bBzg.js +1 -0
- package/dist/web/assets/vitesse-black-Bkuqu6BP.js +1 -0
- package/dist/web/assets/vitesse-dark-D0r3Knsf.js +1 -0
- package/dist/web/assets/vitesse-light-CVO1_9PV.js +1 -0
- package/dist/web/assets/vue-DN_0RTcg.js +1 -0
- package/dist/web/assets/vue-html-AaS7Mt5G.js +1 -0
- package/dist/web/assets/vue-vine-CQOfvN7w.js +1 -0
- package/dist/web/assets/vyper-CDx5xZoG.js +1 -0
- package/dist/web/assets/wasm-CG6Dc4jp.js +1 -0
- package/dist/web/assets/wasm-MzD3tlZU.js +1 -0
- package/dist/web/assets/wenyan-BV7otONQ.js +1 -0
- package/dist/web/assets/wgsl-Dx-B1_4e.js +1 -0
- package/dist/web/assets/wikitext-BhOHFoWU.js +1 -0
- package/dist/web/assets/wit-5i3qLPDT.js +1 -0
- package/dist/web/assets/wolfram-lXgVvXCa.js +1 -0
- package/dist/web/assets/xml-sdJ4AIDG.js +1 -0
- package/dist/web/assets/xsl-CtQFsRM5.js +1 -0
- package/dist/web/assets/yaml-Buea-lGh.js +1 -0
- package/dist/web/assets/zenscript-DVFEvuxE.js +1 -0
- package/dist/web/assets/zig-VOosw3JB.js +1 -0
- package/dist/web/index.html +13 -0
- package/package.json +56 -0
package/README.md
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# mochi
|
|
2
|
+
|
|
3
|
+
**Diagram-first behavioral views of local code.**
|
|
4
|
+
|
|
5
|
+
Drop in a path. Mochi opens a browser viewer, lets you pick a file (or
|
|
6
|
+
directory, or a few coordinating files), and asks Claude to produce a
|
|
7
|
+
steppable diagram of how that code *behaves*. Four lenses — flow,
|
|
8
|
+
state, architecture, protocol — picked per scope automatically, with
|
|
9
|
+
one-click switching between alternatives. Each diagram has 6–15 curated
|
|
10
|
+
steps with causal "WHY" narration and code-anchored highlights.
|
|
11
|
+
|
|
12
|
+
## Install
|
|
13
|
+
|
|
14
|
+
Once published to npm, the typical entry is npx — installs on first run,
|
|
15
|
+
points at the current directory by default:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
cd ~/some-codebase
|
|
19
|
+
npx @mquan/mochi # equivalent to: npx @mquan/mochi .
|
|
20
|
+
npx @mquan/mochi src/ # pin to a subdirectory
|
|
21
|
+
npx @mquan/mochi -p 6000 # pick a port
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
> The plain `mochi` slot on npm is taken by an old test runner — publish
|
|
25
|
+
> under a scope (e.g. `@mquan/mochi`) and adjust `package.json#name` to
|
|
26
|
+
> match before `npm publish --access public`.
|
|
27
|
+
|
|
28
|
+
For a local clone (until then):
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
git clone git@github.com:mquan/mochi.git
|
|
32
|
+
cd mochi
|
|
33
|
+
nvm use # picks Node 24.15.0 from .nvmrc
|
|
34
|
+
npm install
|
|
35
|
+
npm run build
|
|
36
|
+
./dist/bin/mochi.js # current directory
|
|
37
|
+
./dist/bin/mochi.js src/ # or any path
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Setup
|
|
41
|
+
|
|
42
|
+
Mochi reuses your Claude Code session via the `claude` CLI as a subprocess
|
|
43
|
+
— there is **no separate `ANTHROPIC_API_KEY`** to manage and no separate
|
|
44
|
+
billing surface.
|
|
45
|
+
|
|
46
|
+
Requirements:
|
|
47
|
+
|
|
48
|
+
- Node.js ≥ 24.15.0 (a `.nvmrc` is pinned to `24.15.0`; `nvm use` picks it up)
|
|
49
|
+
- [Claude Code](https://claude.com/claude-code) installed and on your `PATH`
|
|
50
|
+
- Run `claude /login` once
|
|
51
|
+
|
|
52
|
+
Mochi probes for `claude --version` at startup and exits with a clear
|
|
53
|
+
message if the CLI is missing or unauthenticated.
|
|
54
|
+
|
|
55
|
+
## First diagram
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx @mquan/mochi # or ./dist/bin/mochi.js from a local clone
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The browser opens (server binds to `127.0.0.1` on the first free port at
|
|
62
|
+
or above 5173). Then:
|
|
63
|
+
|
|
64
|
+
1. Click any file in the tree on the left — code appears in the **Code** tab.
|
|
65
|
+
2. Optionally type an intent in the bar at the top — e.g. *"how does auth
|
|
66
|
+
work"*, *"trace a request"*.
|
|
67
|
+
3. Hit **Generate**.
|
|
68
|
+
|
|
69
|
+
A new **Diagram** tab opens, streams progress (resolving scope → indexed →
|
|
70
|
+
asking Claude → validating), and renders the spec. You can:
|
|
71
|
+
|
|
72
|
+
- **Click a block** in the diagram → switches back to the Code tab and
|
|
73
|
+
scrolls to the anchored lines.
|
|
74
|
+
- **Click a Protocol / State / Architecture pill** in the lens switcher →
|
|
75
|
+
re-asks Claude using that lens for the same scope.
|
|
76
|
+
- **Click ▶ Play** below the diagram → walks through the steps with
|
|
77
|
+
narration.
|
|
78
|
+
- **Click ✕** on any Diagram tab → closes it (and cancels its in-flight
|
|
79
|
+
stream if still running).
|
|
80
|
+
|
|
81
|
+
Each Generate opens a *new* Diagram tab — old diagrams aren't overwritten.
|
|
82
|
+
|
|
83
|
+
## Lenses
|
|
84
|
+
|
|
85
|
+
- **Flow** — step-by-step execution path through a single function or file.
|
|
86
|
+
Branches, loops, early returns.
|
|
87
|
+
- **State** — states and transitions of a stateful entity. Sessions,
|
|
88
|
+
workflows, finite-state machines.
|
|
89
|
+
- **Architecture** — deployable units (services, modules, components) and
|
|
90
|
+
how they communicate. Pick a directory or a handful of files.
|
|
91
|
+
- **Protocol** — message exchanges between participants over time.
|
|
92
|
+
Swim-lane sequence view. Pick two or more coordinating files.
|
|
93
|
+
|
|
94
|
+
Mochi includes `alternative_lenses` in every spec, so you can pivot from
|
|
95
|
+
"this is a flow" to "show me it as a state machine" in one click.
|
|
96
|
+
|
|
97
|
+
## Troubleshooting
|
|
98
|
+
|
|
99
|
+
- **"Claude can't authenticate"** — run `claude /login` and retry.
|
|
100
|
+
- **"Scope is too large"** — narrow the selection. Multi-file scopes work
|
|
101
|
+
best with 2–5 closely-related files.
|
|
102
|
+
- **"Nothing useful to diagram here"** — Claude returned an empty spec.
|
|
103
|
+
Try a different file, or add an intent to focus the question.
|
|
104
|
+
- **`claude` not found at startup** — install Claude Code and ensure
|
|
105
|
+
it's on your `PATH`.
|
|
106
|
+
- **Stale cache** — caching is keyed by the SHA-256 of the resolved scope
|
|
107
|
+
+ prompt version. Edit the file (or bump `PROMPT_VERSION` in
|
|
108
|
+
`server/diagram/prompt-version.ts`) to invalidate.
|
|
109
|
+
|
|
110
|
+
## Development
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
nvm use # picks Node 24.15.0 from .nvmrc
|
|
114
|
+
npm install
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Build + run** — the standard loop after every change to server, prompts,
|
|
118
|
+
or generated assets (tokens, prompt template):
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
npm run build # tsc + vite + gen-prompt + gen-tokens-css
|
|
122
|
+
node ./dist/bin/mochi.js . # boot the server pointing at the cwd
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Open the URL the server logs (defaults to `http://127.0.0.1:5173`).
|
|
126
|
+
Ctrl-C to stop.
|
|
127
|
+
|
|
128
|
+
**Fast iteration** — for web-only changes, use the dev server (Vite HMR +
|
|
129
|
+
tsx-watched server, no rebuild step):
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
npm run dev
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Tests:**
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
npm run test # vitest — unit + integration
|
|
139
|
+
npm run smoke # spec-contract smoke (validates every lens fixture)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Ship checks
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
npm run build # production build
|
|
146
|
+
npm run smoke # spec-contract smoke
|
|
147
|
+
npm pack --dry-run # confirm tarball contents + size
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Status
|
|
151
|
+
|
|
152
|
+
v0.1.0 — first usable release. All four lenses render, multi-file +
|
|
153
|
+
directory scopes generate, code-anchored playback works, warnings + empty
|
|
154
|
+
states are handled.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mochi.d.ts","sourceRoot":"","sources":["../../bin/mochi.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { spawnSync } from "node:child_process";
|
|
4
|
+
import { existsSync } from "node:fs";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import open from "open";
|
|
7
|
+
import { selectFromPath } from "../server/input/path-selector.js";
|
|
8
|
+
import { findFreePort, startServer } from "../server/server.js";
|
|
9
|
+
const DEFAULT_PORT = 5173;
|
|
10
|
+
// Fail fast at startup if the claude CLI isn't usable, rather than at first
|
|
11
|
+
// /api/diagram request. ~50ms cost, no network, no LLM call.
|
|
12
|
+
function ensureClaudeCli() {
|
|
13
|
+
const probe = spawnSync("claude", ["--version"], { encoding: "utf8" });
|
|
14
|
+
if (probe.error && probe.error.code === "ENOENT") {
|
|
15
|
+
console.error("mochi: `claude` CLI not found on PATH.\n" +
|
|
16
|
+
" Install Claude Code (https://claude.com/claude-code), then\n" +
|
|
17
|
+
" run `claude /login` once. Mochi reuses your CC session — no\n" +
|
|
18
|
+
" separate API key required.");
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
if (probe.status !== 0) {
|
|
22
|
+
const stderr = (probe.stderr ?? "").trim();
|
|
23
|
+
console.error("mochi: `claude --version` exited " + String(probe.status) +
|
|
24
|
+
(stderr ? ": " + stderr : "") +
|
|
25
|
+
"\n Reinstall Claude Code or check your installation.");
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async function main() {
|
|
30
|
+
ensureClaudeCli();
|
|
31
|
+
const program = new Command();
|
|
32
|
+
program
|
|
33
|
+
.name("mochi")
|
|
34
|
+
.description("Diagram-first behavioral views of local code")
|
|
35
|
+
.argument("[path]", "file or directory to view (default: current directory)", ".")
|
|
36
|
+
.option("-p, --port <n>", "preferred port (default 5173, increments if taken)", (v) => Number.parseInt(v, 10));
|
|
37
|
+
program.parse();
|
|
38
|
+
// commander always populates `args[0]` because the [path] default is ".".
|
|
39
|
+
const inputPath = program.args[0] ?? ".";
|
|
40
|
+
const opts = program.opts();
|
|
41
|
+
if (opts.port !== undefined) {
|
|
42
|
+
if (!Number.isInteger(opts.port) || opts.port < 1 || opts.port > 65535) {
|
|
43
|
+
console.error("mochi: --port must be an integer between 1 and 65535");
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const absPath = path.resolve(inputPath);
|
|
48
|
+
if (!existsSync(absPath)) {
|
|
49
|
+
console.error("mochi: path not found: " + inputPath);
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
const { root, files } = await selectFromPath(absPath);
|
|
53
|
+
const port = await findFreePort(opts.port ?? DEFAULT_PORT);
|
|
54
|
+
const { server, url } = await startServer({ root, files, port });
|
|
55
|
+
console.log("mochi listening on " + url + " (" + files.length + " files indexed)");
|
|
56
|
+
console.log("Open in browser: " + url);
|
|
57
|
+
open(url).catch(() => {
|
|
58
|
+
// best-effort browser launch; failure is non-fatal
|
|
59
|
+
});
|
|
60
|
+
const shutdown = () => {
|
|
61
|
+
console.log("mochi: shutting down");
|
|
62
|
+
const forceExit = setTimeout(() => process.exit(0), 2000);
|
|
63
|
+
forceExit.unref();
|
|
64
|
+
server.close(() => process.exit(0));
|
|
65
|
+
};
|
|
66
|
+
process.once("SIGINT", shutdown);
|
|
67
|
+
process.once("SIGTERM", shutdown);
|
|
68
|
+
}
|
|
69
|
+
main().catch((err) => {
|
|
70
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
71
|
+
console.error(msg);
|
|
72
|
+
process.exit(1);
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=mochi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mochi.js","sourceRoot":"","sources":["../../bin/mochi.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMhE,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,4EAA4E;AAC5E,6DAA6D;AAC7D,SAAS,eAAe;IACtB,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACvE,IAAI,KAAK,CAAC,KAAK,IAAK,KAAK,CAAC,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5E,OAAO,CAAC,KAAK,CACX,0CAA0C;YACxC,qEAAqE;YACrE,sEAAsE;YACtE,mCAAmC,CACtC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,OAAO,CAAC,KAAK,CACX,mCAAmC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YACxD,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,4DAA4D,CAC/D,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,eAAe,EAAE,CAAC;IAElB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,8CAA8C,CAAC;SAC3D,QAAQ,CACP,QAAQ,EACR,wDAAwD,EACxD,GAAG,CACJ;SACA,MAAM,CAAC,gBAAgB,EAAE,oDAAoD,EAAE,CAAC,CAAC,EAAE,EAAE,CACpF,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CACvB,CAAC;IAEJ,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,0EAA0E;IAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAEzC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAc,CAAC;IAExC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC;IAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjE,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,GAAG,CAAC,CAAC;IAEvC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACnB,mDAAmD;IACrD,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1D,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/typescript/lib/lib.es2022.full.d.ts","../../node_modules/commander/typings/index.d.ts","../../node_modules/commander/typings/esm.d.mts","../../node_modules/open/index.d.ts","../server/input/path-selector.d.ts","../server/server.d.ts","../../bin/mochi.ts","../../node_modules/@types/node/compatibility/disposable.d.ts","../../node_modules/@types/node/compatibility/indexable.d.ts","../../node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/@types/node/compatibility/index.d.ts","../../node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../node_modules/@types/node/web-globals/domexception.d.ts","../../node_modules/@types/node/web-globals/events.d.ts","../../node_modules/undici-types/header.d.ts","../../node_modules/undici-types/readable.d.ts","../../node_modules/undici-types/file.d.ts","../../node_modules/undici-types/fetch.d.ts","../../node_modules/undici-types/formdata.d.ts","../../node_modules/undici-types/connector.d.ts","../../node_modules/undici-types/client.d.ts","../../node_modules/undici-types/errors.d.ts","../../node_modules/undici-types/dispatcher.d.ts","../../node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/undici-types/global-origin.d.ts","../../node_modules/undici-types/pool-stats.d.ts","../../node_modules/undici-types/pool.d.ts","../../node_modules/undici-types/handlers.d.ts","../../node_modules/undici-types/balanced-pool.d.ts","../../node_modules/undici-types/agent.d.ts","../../node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/undici-types/mock-agent.d.ts","../../node_modules/undici-types/mock-client.d.ts","../../node_modules/undici-types/mock-pool.d.ts","../../node_modules/undici-types/mock-errors.d.ts","../../node_modules/undici-types/proxy-agent.d.ts","../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/undici-types/retry-handler.d.ts","../../node_modules/undici-types/retry-agent.d.ts","../../node_modules/undici-types/api.d.ts","../../node_modules/undici-types/interceptors.d.ts","../../node_modules/undici-types/util.d.ts","../../node_modules/undici-types/cookies.d.ts","../../node_modules/undici-types/patch.d.ts","../../node_modules/undici-types/websocket.d.ts","../../node_modules/undici-types/eventsource.d.ts","../../node_modules/undici-types/filereader.d.ts","../../node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/undici-types/content-type.d.ts","../../node_modules/undici-types/cache.d.ts","../../node_modules/undici-types/index.d.ts","../../node_modules/@types/node/web-globals/fetch.d.ts","../../node_modules/@types/node/web-globals/navigator.d.ts","../../node_modules/@types/node/web-globals/storage.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/inspector.generated.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/readline/promises.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/sea.d.ts","../../node_modules/@types/node/sqlite.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/test.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/index.d.ts"],"fileIdsList":[[65,66,67,68,75,123,124,135,140,141,145],[75,123,140,141],[75,123,137,140,141],[75,120,121,123,140,141],[75,122,123,140,141],[123,140,141],[75,123,128,140,141,158],[75,123,124,129,134,140,141,143,155,166],[75,123,124,125,134,140,141,143],[70,71,72,75,123,140,141],[75,123,126,140,141,167],[75,123,127,128,135,140,141,144],[75,123,128,140,141,155,163],[75,123,129,131,134,140,141,143],[75,122,123,130,140,141],[75,123,131,132,140,141],[75,123,133,134,140,141],[75,122,123,134,140,141],[75,123,134,135,136,140,141,155,166],[75,123,134,135,136,140,141,150,155,158],[75,116,123,131,134,137,140,141,143,155,166],[75,123,134,135,137,138,140,141,143,155,163,166],[75,123,137,139,140,141,155,163,166],[73,74,75,76,77,78,79,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172],[75,123,134,140,141],[75,123,140,141,142,166],[75,123,131,134,140,141,143,155],[75,123,140,141,144],[75,123,140,141,145],[75,122,123,140,141,146],[75,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172],[75,123,140,141,148],[75,123,140,141,149],[75,123,134,140,141,150,151],[75,123,140,141,150,152,167,169],[75,123,135,140,141],[75,123,134,140,141,155,156,158],[75,123,140,141,157,158],[75,123,140,141,155,156],[75,123,140,141,158],[75,123,140,141,159],[75,120,123,140,141,155,160,166],[75,123,134,140,141,161,162],[75,123,140,141,161,162],[75,123,128,140,141,143,155,163],[75,123,140,141,164],[75,123,140,141,143,165],[75,123,137,140,141,149,166],[75,123,128,140,141,167],[75,123,140,141,155,168],[75,123,140,141,142,169],[75,123,140,141,170],[75,116,123,140,141],[75,116,123,134,136,140,141,146,155,158,166,168,169,171],[75,123,140,141,155,172],[64,75,123,140,141],[75,123,124,140,141],[75,88,92,123,140,141,166],[75,88,123,140,141,155,166],[75,83,123,140,141],[75,85,88,123,140,141,163,166],[75,123,140,141,143,163],[75,123,140,141,173],[75,83,123,140,141,173],[75,85,88,123,140,141,143,166],[75,80,81,84,87,123,134,140,141,155,166],[75,88,95,123,140,141],[75,80,86,123,140,141],[75,88,109,110,123,140,141],[75,84,88,123,140,141,158,166,173],[75,109,123,140,141,173],[75,82,83,123,140,141,173],[75,88,123,140,141],[75,82,83,84,85,86,87,88,89,90,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,110,111,112,113,114,115,123,140,141],[75,88,103,123,140,141],[75,88,95,96,123,140,141],[75,86,88,96,97,123,140,141],[75,87,123,140,141],[75,80,83,88,123,140,141],[75,88,92,96,97,123,140,141],[75,92,123,140,141],[75,86,88,91,123,140,141,166],[75,80,85,88,95,123,140,141],[75,123,140,141,155],[75,83,88,109,123,140,141,171,173]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","impliedFormat":1},{"version":"a722a71d8f3cb0028857b12579c7eca55acc76bf34e5db7eaf6fe817b985f9c3","impliedFormat":1},{"version":"b124c0624b15412ace7d54644ade38d7a69db7e25488a1a4d2a8df6e11696538","impliedFormat":99},{"version":"0132e7a32bd600a3b6e0a5e59171a3706df2d1375ffbf6b2239f326a9b0dbaaf","impliedFormat":99},{"version":"5f15165276cfe0ea15049ae7e8a10c5254046a44702cc416af6f1e7539a189a2","impliedFormat":99},{"version":"7f4e75978366a10863a12ac36d74c75571898f59231cc06ab836d43d8e00afe7","impliedFormat":99},{"version":"116fbf110cfc6e665a2c54bc134686103e6cbd74af0753a3bf35c95d30fbefee","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012","impliedFormat":99},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"58647d85d0f722a1ce9de50955df60a7489f0593bf1a7015521efe901c06d770","impliedFormat":1},{"version":"73b5fa37db36eeac90c4d752e39586f1b57187400c4f5280fd05f16437287a45","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"80523c00b8544a2000ae0143e4a90a00b47f99823eb7926c1e03c494216fc363","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"746911b62b329587939560deb5c036aca48aece03147b021fa680223255d5183","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c8d3e5a18ba35629954e48c4cc8f11dc88224650067a172685c736b27a34a4dc","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2b55d426ff2b9087485e52ac4bc7cfafe1dc420fc76dad926cd46526567c501a","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1}],"root":[69],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":199,"outDir":"./","rootDir":"../../bin","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[69,1],[67,2],[68,3],[120,4],[121,4],[122,5],[75,6],[123,7],[124,8],[125,9],[70,2],[73,10],[71,2],[72,2],[126,11],[127,12],[128,13],[129,14],[130,15],[131,16],[132,16],[133,17],[134,18],[135,19],[136,20],[76,2],[74,2],[137,21],[138,22],[139,23],[173,24],[140,25],[141,2],[142,26],[143,27],[144,28],[145,29],[146,30],[147,31],[148,32],[149,33],[150,34],[151,34],[152,35],[153,2],[154,36],[155,37],[157,38],[156,39],[158,40],[159,41],[160,42],[161,43],[162,44],[163,45],[164,46],[165,47],[166,48],[167,49],[168,50],[169,51],[170,52],[77,2],[78,2],[79,2],[117,53],[118,2],[119,2],[171,54],[172,55],[65,56],[64,2],[66,57],[61,2],[62,2],[12,2],[10,2],[11,2],[16,2],[15,2],[2,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[24,2],[3,2],[25,2],[26,2],[4,2],[27,2],[31,2],[28,2],[29,2],[30,2],[32,2],[33,2],[34,2],[5,2],[35,2],[36,2],[37,2],[38,2],[6,2],[42,2],[39,2],[40,2],[41,2],[43,2],[7,2],[44,2],[49,2],[50,2],[45,2],[46,2],[47,2],[48,2],[8,2],[54,2],[51,2],[52,2],[53,2],[55,2],[9,2],[56,2],[63,2],[57,2],[58,2],[60,2],[59,2],[1,2],[14,2],[13,2],[95,58],[105,59],[94,58],[115,60],[86,61],[85,62],[114,63],[108,64],[113,65],[88,66],[102,67],[87,68],[111,69],[83,70],[82,63],[112,71],[84,72],[89,73],[90,2],[93,73],[80,2],[116,74],[106,75],[97,76],[98,77],[100,78],[96,79],[99,80],[109,63],[91,81],[92,82],[101,83],[81,84],[104,75],[103,73],[107,2],[110,85]],"latestChangedDtsFile":"./mochi.d.ts","version":"5.9.3"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface Commit {
|
|
2
|
+
sha: string;
|
|
3
|
+
message: string;
|
|
4
|
+
date: string;
|
|
5
|
+
}
|
|
6
|
+
export interface GitContext {
|
|
7
|
+
recentCommits: Commit[];
|
|
8
|
+
blame?: Record<string, string>;
|
|
9
|
+
prContext?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function getGitContext(repoRoot: string, files: string[]): Promise<GitContext>;
|
|
12
|
+
//# sourceMappingURL=git-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-context.d.ts","sourceRoot":"","sources":["../../../server/analysis/git-context.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6GD,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,UAAU,CAAC,CAwBrB"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// Git context wrapper.
|
|
2
|
+
//
|
|
3
|
+
// Three slices of repo provenance:
|
|
4
|
+
// - recentCommits: last 20 commits touching the in-scope files (one
|
|
5
|
+
// `git log` invocation, no per-file fanout).
|
|
6
|
+
// - blame: per-file blame summary, capped at 50 files and 100
|
|
7
|
+
// lines per file (200 chars per line as a defensive
|
|
8
|
+
// truncation against pathological source widths).
|
|
9
|
+
// - prContext: formatted "PR: <title>\n\n<body>" via `gh pr view`
|
|
10
|
+
// when the CLI is installed and the branch has an
|
|
11
|
+
// open PR. Soft-fails on every error path.
|
|
12
|
+
//
|
|
13
|
+
// This function never throws. Non-repo / missing tools / no PR all return
|
|
14
|
+
// graceful empty values. simple-git is used for git operations (no shell
|
|
15
|
+
// interpolation); `gh` is invoked via spawn with array args (also no shell).
|
|
16
|
+
import { spawn } from "node:child_process";
|
|
17
|
+
import { simpleGit } from "simple-git";
|
|
18
|
+
const MAX_FILES_FOR_LOG = 200;
|
|
19
|
+
const MAX_FILES_FOR_BLAME = 50;
|
|
20
|
+
const BLAME_LINES_PER_FILE = 100;
|
|
21
|
+
const BLAME_MAX_LINE_CHARS = 200;
|
|
22
|
+
const PR_CONTEXT_MAX_BYTES = 8 * 1024;
|
|
23
|
+
function truncateBlame(raw) {
|
|
24
|
+
const lines = raw.split("\n").slice(0, BLAME_LINES_PER_FILE);
|
|
25
|
+
for (let i = 0; i < lines.length; i++) {
|
|
26
|
+
if (lines[i].length > BLAME_MAX_LINE_CHARS) {
|
|
27
|
+
lines[i] = lines[i].slice(0, BLAME_MAX_LINE_CHARS) + "…";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return lines.join("\n");
|
|
31
|
+
}
|
|
32
|
+
async function getRecentCommits(git, files) {
|
|
33
|
+
const limited = files.slice(0, MAX_FILES_FOR_LOG);
|
|
34
|
+
if (limited.length < files.length) {
|
|
35
|
+
console.info(`mochi: git-context truncated file list for log from ${files.length} to ${limited.length}`);
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
const out = await git.raw([
|
|
39
|
+
"log",
|
|
40
|
+
"--max-count=20",
|
|
41
|
+
"--pretty=format:%H%x09%s%x09%aI",
|
|
42
|
+
"--",
|
|
43
|
+
...limited,
|
|
44
|
+
]);
|
|
45
|
+
if (!out.trim())
|
|
46
|
+
return [];
|
|
47
|
+
return out
|
|
48
|
+
.split("\n")
|
|
49
|
+
.filter(Boolean)
|
|
50
|
+
.map((line) => {
|
|
51
|
+
const [sha, message, date] = line.split("\t");
|
|
52
|
+
return { sha: sha ?? "", message: message ?? "", date: date ?? "" };
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
57
|
+
console.warn(`mochi: git-context recentCommits failed: ${msg}`);
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async function getBlame(git, files) {
|
|
62
|
+
if (files.length === 0)
|
|
63
|
+
return undefined;
|
|
64
|
+
if (files.length > MAX_FILES_FOR_BLAME) {
|
|
65
|
+
console.info(`mochi: git-context skipping blame (file count ${files.length} exceeds cap ${MAX_FILES_FOR_BLAME})`);
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
const blame = {};
|
|
69
|
+
for (const file of files) {
|
|
70
|
+
try {
|
|
71
|
+
const raw = await git.raw(["blame", "-c", "--root", "--", file]);
|
|
72
|
+
blame[file] = truncateBlame(raw);
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
// Most common cause: file isn't tracked. Soft-fail per-file.
|
|
76
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
77
|
+
console.info(`mochi: git-context blame skipped for ${file} (${msg})`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return blame;
|
|
81
|
+
}
|
|
82
|
+
function getPrContext() {
|
|
83
|
+
return new Promise((resolve) => {
|
|
84
|
+
let stdout = "";
|
|
85
|
+
let stderr = "";
|
|
86
|
+
let child;
|
|
87
|
+
try {
|
|
88
|
+
child = spawn("gh", ["pr", "view", "--json", "title,body"], {
|
|
89
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
resolve(undefined);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
child.on("error", () => resolve(undefined));
|
|
97
|
+
child.stdout?.on("data", (d) => {
|
|
98
|
+
stdout += String(d);
|
|
99
|
+
});
|
|
100
|
+
child.stderr?.on("data", (d) => {
|
|
101
|
+
stderr += String(d);
|
|
102
|
+
});
|
|
103
|
+
child.on("close", (code) => {
|
|
104
|
+
if (code !== 0 || !stdout.trim()) {
|
|
105
|
+
if (stderr)
|
|
106
|
+
console.info(`mochi: gh pr view returned ${code} (no PR or unauth'd)`);
|
|
107
|
+
resolve(undefined);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
const parsed = JSON.parse(stdout);
|
|
112
|
+
const title = parsed.title ?? "";
|
|
113
|
+
const body = parsed.body ?? "";
|
|
114
|
+
let formatted = `PR: ${title}\n\n${body}`;
|
|
115
|
+
if (formatted.length > PR_CONTEXT_MAX_BYTES) {
|
|
116
|
+
formatted = formatted.slice(0, PR_CONTEXT_MAX_BYTES);
|
|
117
|
+
}
|
|
118
|
+
resolve(formatted);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
resolve(undefined);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
export async function getGitContext(repoRoot, files) {
|
|
127
|
+
const git = simpleGit(repoRoot);
|
|
128
|
+
let isRepo = false;
|
|
129
|
+
try {
|
|
130
|
+
isRepo = await git.checkIsRepo();
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
isRepo = false;
|
|
134
|
+
}
|
|
135
|
+
if (!isRepo) {
|
|
136
|
+
console.info(`mochi: git-context — ${repoRoot} is not a git repo, skipping`);
|
|
137
|
+
return { recentCommits: [] };
|
|
138
|
+
}
|
|
139
|
+
const [recentCommits, blame, prContext] = await Promise.all([
|
|
140
|
+
getRecentCommits(git, files),
|
|
141
|
+
getBlame(git, files),
|
|
142
|
+
getPrContext(),
|
|
143
|
+
]);
|
|
144
|
+
const result = { recentCommits };
|
|
145
|
+
if (blame !== undefined)
|
|
146
|
+
result.blame = blame;
|
|
147
|
+
if (prContext !== undefined)
|
|
148
|
+
result.prContext = prContext;
|
|
149
|
+
return result;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=git-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-context.js","sourceRoot":"","sources":["../../../server/analysis/git-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grammars.d.ts","sourceRoot":"","sources":["../../../server/analysis/grammars.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,MAAM,CAO1D,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE7D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Resolves on-disk paths to the bundled tree-sitter grammar WASMs.
|
|
2
|
+
//
|
|
3
|
+
// Keys MUST match the language strings produced by `EXT_TO_LANG` in
|
|
4
|
+
// `server/api.ts` — that is the contract the rest of the analysis pipeline
|
|
5
|
+
// relies on. `jsx` aliases to the JavaScript grammar (tree-sitter has no
|
|
6
|
+
// dedicated JSX grammar; the JS one accepts JSX).
|
|
7
|
+
//
|
|
8
|
+
// Source of the .wasm binaries: the `tree-sitter-wasms` runtime dep, which
|
|
9
|
+
// ships pre-built grammars under `node_modules/tree-sitter-wasms/out/`.
|
|
10
|
+
// Resolved via `createRequire` so the bundler/runtime can locate them from
|
|
11
|
+
// any working directory the CLI is invoked in.
|
|
12
|
+
import { createRequire } from "node:module";
|
|
13
|
+
// `createRequire` is portable across plain Node ESM and Vitest's SSR loader,
|
|
14
|
+
// where `import.meta.resolve` is not available. The resolved path is the
|
|
15
|
+
// real file path (no `file://` URL scheme) so it can be passed straight to
|
|
16
|
+
// `Language.load`.
|
|
17
|
+
const requireFromHere = createRequire(import.meta.url);
|
|
18
|
+
function wasmPath(file) {
|
|
19
|
+
return requireFromHere.resolve(`tree-sitter-wasms/out/${file}`);
|
|
20
|
+
}
|
|
21
|
+
export const LANGUAGE_GRAMMARS = {
|
|
22
|
+
typescript: () => wasmPath("tree-sitter-typescript.wasm"),
|
|
23
|
+
tsx: () => wasmPath("tree-sitter-tsx.wasm"),
|
|
24
|
+
javascript: () => wasmPath("tree-sitter-javascript.wasm"),
|
|
25
|
+
jsx: () => wasmPath("tree-sitter-javascript.wasm"),
|
|
26
|
+
python: () => wasmPath("tree-sitter-python.wasm"),
|
|
27
|
+
rust: () => wasmPath("tree-sitter-rust.wasm"),
|
|
28
|
+
};
|
|
29
|
+
export function isSupportedLanguage(language) {
|
|
30
|
+
return Object.hasOwn(LANGUAGE_GRAMMARS, language);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=grammars.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grammars.js","sourceRoot":"","sources":["../../../server/analysis/grammars.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,EAAE;AACF,oEAAoE;AACpE,2EAA2E;AAC3E,yEAAyE;AACzE,kDAAkD;AAClD,EAAE;AACF,2EAA2E;AAC3E,wEAAwE;AACxE,2EAA2E;AAC3E,+CAA+C;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,6EAA6E;AAC7E,yEAAyE;AACzE,2EAA2E;AAC3E,mBAAmB;AACnB,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEvD,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,eAAe,CAAC,OAAO,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAiC;IAC7D,UAAU,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACzD,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC3C,UAAU,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACzD,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAClD,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACjD,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;CAC9C,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AnalysisContext as AnalysisContextT } from "../../shared/analysis-schema.js";
|
|
2
|
+
import type { FileEntry } from "./types.js";
|
|
3
|
+
export type { FileEntry } from "./types.js";
|
|
4
|
+
export type { AstSummary } from "./tree-sitter.js";
|
|
5
|
+
export type { CallEdge, ImportEntry, TsMorphResult } from "./ts-morph.js";
|
|
6
|
+
export type { Commit, GitContext } from "./git-context.js";
|
|
7
|
+
export declare function runAnalysis(files: FileEntry[], rootDir: string): Promise<AnalysisContextT>;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/analysis/index.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAK3F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1E,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA0B3D,wBAAsB,WAAW,CAC/B,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,CAqD3B"}
|