@shinsa/darwin-arm64 0.0.0 → 1.0.0-canary.52
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/bin/shinsa +4 -0
- package/package.json +22 -1
- package/plugin/.claude-plugin/plugin.json +5 -0
- package/plugin/skills/evidence/SKILL.md +175 -0
- package/plugin/skills/handover/SKILL.md +143 -0
- package/plugin/skills/review/SKILL.md +125 -0
- package/web/android-chrome-192x192.png +0 -0
- package/web/android-chrome-512x512.png +0 -0
- package/web/apple-touch-icon.png +0 -0
- package/web/assets/ABCArealMonoVariable-DpNhOIcz.woff2 +0 -0
- package/web/assets/ABCArealVariable-B-OUA419.woff2 +0 -0
- package/web/assets/abap-BdImnpbu.js +1 -0
- package/web/assets/abap-Dg923wIy.js +1 -0
- package/web/assets/actionscript-3-8WTK4YD2.js +1 -0
- package/web/assets/actionscript-3-CoDkCxhg.js +1 -0
- package/web/assets/ada-CTi7YQtL.js +1 -0
- package/web/assets/ada-bCR0ucgS.js +1 -0
- package/web/assets/andromeeda-C-bfsIs1.js +1 -0
- package/web/assets/andromeeda-C4gqWexZ.js +1 -0
- package/web/assets/angular-html-CU67Zn6k.js +1 -0
- package/web/assets/angular-html-D2R1pe45.js +1 -0
- package/web/assets/angular-ts-BDmYQnhm.js +1 -0
- package/web/assets/angular-ts-BwZT4LLn.js +1 -0
- package/web/assets/apache-PcO-DBxQ.js +1 -0
- package/web/assets/apache-Pmp26Uib.js +1 -0
- package/web/assets/apex-CnCu5_gb.js +1 -0
- package/web/assets/apex-D8_7TLub.js +1 -0
- package/web/assets/apl-B4CMkyY2.js +1 -0
- package/web/assets/apl-DkfyvC6M.js +1 -0
- package/web/assets/apl-dKokRX4l.js +1 -0
- package/web/assets/applescript-Co6uUVPk.js +1 -0
- package/web/assets/applescript-Ds_W2jPS.js +1 -0
- package/web/assets/ara-BRHolxvo.js +1 -0
- package/web/assets/ara-C1--7J61.js +1 -0
- package/web/assets/asciiarmor-Df11BRmG.js +1 -0
- package/web/assets/asciidoc-Ve4PFQV2.js +1 -0
- package/web/assets/asciidoc-nTfEFGxb.js +1 -0
- package/web/assets/asm-CTFRnVOM.js +1 -0
- package/web/assets/asm-D_Q5rh1f.js +1 -0
- package/web/assets/asn1-EdZsLKOL.js +1 -0
- package/web/assets/asterisk-B-8jnY81.js +1 -0
- package/web/assets/astro-CbQHKStN.js +1 -0
- package/web/assets/astro-DtPAdMss.js +1 -0
- package/web/assets/aurora-x-Bp-Yupxr.js +1 -0
- package/web/assets/aurora-x-D-2ljcwZ.js +1 -0
- package/web/assets/awk-CrWgQKhV.js +1 -0
- package/web/assets/awk-DMzUqQB5.js +1 -0
- package/web/assets/ayu-dark-BZqFIPPA.js +1 -0
- package/web/assets/ayu-dark-DYE7WIF3.js +1 -0
- package/web/assets/ayu-light-BA47KaF1.js +1 -0
- package/web/assets/ayu-light-uCS3aZnO.js +1 -0
- package/web/assets/ayu-mirage-32ctXXKs.js +1 -0
- package/web/assets/ayu-mirage-C61zB6r0.js +1 -0
- package/web/assets/ballerina-BFfxhgS-.js +1 -0
- package/web/assets/ballerina-a0yOSyc5.js +1 -0
- package/web/assets/bat-B0cHNp6s.js +1 -0
- package/web/assets/bat-BkioyH1T.js +1 -0
- package/web/assets/beancount-dPJi_gci.js +1 -0
- package/web/assets/beancount-k_qm7-4y.js +1 -0
- package/web/assets/berry-CVKoklHx.js +1 -0
- package/web/assets/berry-uYugtg8r.js +1 -0
- package/web/assets/bibtex-CHM0blh-.js +1 -0
- package/web/assets/bibtex-DRcCXNgM.js +1 -0
- package/web/assets/bicep-Bmn6On1c.js +1 -0
- package/web/assets/bicep-jWz-hQ8I.js +1 -0
- package/web/assets/bird2-DPOp833l.js +1 -0
- package/web/assets/bird2-DaGXIRGu.js +1 -0
- package/web/assets/blade-D4QpJJKB.js +1 -0
- package/web/assets/blade-QlWdzBxO.js +1 -0
- package/web/assets/brainfuck-C4LP7Hcl.js +1 -0
- package/web/assets/bsl-BO_Y6i37.js +1 -0
- package/web/assets/bsl-jNujDQK2.js +1 -0
- package/web/assets/c-BG-tZi7o.js +1 -0
- package/web/assets/c-BIGW1oBm.js +1 -0
- package/web/assets/c3-Fcb8_HKm.js +1 -0
- package/web/assets/c3-eo99z4R2.js +1 -0
- package/web/assets/cadence-BuaeHeSu.js +1 -0
- package/web/assets/cadence-Bv_4Rxtq.js +1 -0
- package/web/assets/cairo-BYiDgOF2.js +1 -0
- package/web/assets/cairo-KRGpt6FW.js +1 -0
- package/web/assets/catppuccin-frappe-DFWUc33u.js +1 -0
- package/web/assets/catppuccin-frappe-DuvesqGE.js +1 -0
- package/web/assets/catppuccin-latte-BwRyHOL6.js +1 -0
- package/web/assets/catppuccin-latte-C9dUb6Cb.js +1 -0
- package/web/assets/catppuccin-macchiato-DQyhUUbL.js +1 -0
- package/web/assets/catppuccin-macchiato-Shdv-gD7.js +1 -0
- package/web/assets/catppuccin-mocha-B4av5j2V.js +1 -0
- package/web/assets/catppuccin-mocha-D87Tk5Gz.js +1 -0
- package/web/assets/clarity-CC_0IFDj.js +1 -0
- package/web/assets/clarity-D53aC0YG.js +1 -0
- package/web/assets/clike-B9uivgTg.js +1 -0
- package/web/assets/clojure-BMjYHr_A.js +1 -0
- package/web/assets/clojure-KnfDkB_V.js +1 -0
- package/web/assets/clojure-P80f7IUj.js +1 -0
- package/web/assets/cmake-BQqOBYOt.js +1 -0
- package/web/assets/cmake-D1j8_8rp.js +1 -0
- package/web/assets/cmake-bh2MLnkv.js +1 -0
- package/web/assets/cobol-CWcv1MsR.js +1 -0
- package/web/assets/cobol-dIXRVV9Y.js +1 -0
- package/web/assets/cobol-nwyudZeR.js +1 -0
- package/web/assets/code-ByZVSj2f.js +8 -0
- package/web/assets/code-diff-view-D3H9rUXv.js +186 -0
- package/web/assets/code-editor-DsNVGqdA.js +5 -0
- package/web/assets/codeowners-Bp6g37R7.js +1 -0
- package/web/assets/codeowners-CtwIM3TN.js +1 -0
- package/web/assets/codeql-D164juXQ.js +1 -0
- package/web/assets/codeql-DsOJ9woJ.js +1 -0
- package/web/assets/coffee-Bk-z6oI_.js +1 -0
- package/web/assets/coffee-Ch7k5sss.js +1 -0
- package/web/assets/coffeescript-S37ZYGWr.js +1 -0
- package/web/assets/commands-C30s37KG.js +14 -0
- package/web/assets/common-lisp-Cg-RD9OK.js +1 -0
- package/web/assets/common-lisp-DXc9XcIM.js +1 -0
- package/web/assets/commonlisp-DBKNyK5s.js +1 -0
- package/web/assets/coq-BBL5-mG4.js +1 -0
- package/web/assets/coq-DkFqJrB1.js +1 -0
- package/web/assets/core-BMBm1EnF.js +4 -0
- package/web/assets/cpp-C0lzDePx.js +1 -0
- package/web/assets/cpp-CofmeUqb.js +1 -0
- package/web/assets/crystal-Bhade0k2.js +1 -0
- package/web/assets/crystal-SjHAIU92.js +1 -0
- package/web/assets/crystal-tKQVLTB8.js +1 -0
- package/web/assets/csharp-B7nLXyi8.js +1 -0
- package/web/assets/csharp-COcwbKMJ.js +1 -0
- package/web/assets/css-BnMrqG3P.js +1 -0
- package/web/assets/css-DPfMkruS.js +1 -0
- package/web/assets/css-PZBBrkI0.js +1 -0
- package/web/assets/csv-D5aBhKLr.js +1 -0
- package/web/assets/csv-fuZLfV_i.js +1 -0
- package/web/assets/cue-D82EKSYY.js +1 -0
- package/web/assets/cue-WCin6O4e.js +1 -0
- package/web/assets/cypher-COkxafJQ.js +1 -0
- package/web/assets/cypher-C_CwsFkJ.js +1 -0
- package/web/assets/cypher-DYQk2G82.js +1 -0
- package/web/assets/d-85-TOEBH.js +1 -0
- package/web/assets/d-DVc-yF-l.js +1 -0
- package/web/assets/d-pRatUO7H.js +1 -0
- package/web/assets/dark-plus-C3mMm8J8.js +1 -0
- package/web/assets/dark-plus-D0x4Yx-C.js +1 -0
- package/web/assets/dart-CF10PKvl.js +1 -0
- package/web/assets/dart-YLd5yyRs.js +1 -0
- package/web/assets/dax-CEL-wOlO.js +1 -0
- package/web/assets/dax-oldcCaJg.js +1 -0
- package/web/assets/desktop-BmXAJ9_W.js +1 -0
- package/web/assets/desktop-DZfyBMgF.js +1 -0
- package/web/assets/diff-D97Zzqfu.js +1 -0
- package/web/assets/diff-DbItnlRl.js +1 -0
- package/web/assets/diff-jW5kmiru.js +1 -0
- package/web/assets/docker-BcOcwvcX.js +1 -0
- package/web/assets/docker-DG9neUKd.js +1 -0
- package/web/assets/dockerfile-BKs6k2Af.js +1 -0
- package/web/assets/dotenv-Bea-FkXq.js +1 -0
- package/web/assets/dotenv-Da5cRb03.js +1 -0
- package/web/assets/dracula-BzJJZx-M.js +1 -0
- package/web/assets/dracula-J135E_M2.js +1 -0
- package/web/assets/dracula-soft-BXkSAIEj.js +1 -0
- package/web/assets/dracula-soft-LK7eZfHV.js +1 -0
- package/web/assets/dream-maker-BtqSS_iP.js +1 -0
- package/web/assets/dream-maker-DAHQwpwp.js +1 -0
- package/web/assets/dtd-DF_7sFjM.js +1 -0
- package/web/assets/dylan-DwRh75JA.js +1 -0
- package/web/assets/ebnf-CDyGwa7X.js +1 -0
- package/web/assets/ecl-Cabwm37j.js +1 -0
- package/web/assets/edge-BkV0erSs.js +1 -0
- package/web/assets/edge-zt3dU95k.js +1 -0
- package/web/assets/eiffel-CnydiIhH.js +1 -0
- package/web/assets/elixir-CDX3lj18.js +1 -0
- package/web/assets/elixir-JolcG37e.js +1 -0
- package/web/assets/elm-BjIDgKzz.js +1 -0
- package/web/assets/elm-DbKCFpqz.js +1 -0
- package/web/assets/elm-vLlmbW-K.js +1 -0
- package/web/assets/emacs-lisp-C9XAeP06.js +1 -0
- package/web/assets/emacs-lisp-DMBh55R4.js +1 -0
- package/web/assets/engine-javascript-B-MSK8a4.js +141 -0
- package/web/assets/engine-oniguruma-DQf0HSoH.js +1 -0
- package/web/assets/erb-B12qg9BL.js +1 -0
- package/web/assets/erb-rsjdL4fB.js +1 -0
- package/web/assets/erlang-BNw1qcRV.js +1 -0
- package/web/assets/erlang-DNeY46SW.js +1 -0
- package/web/assets/erlang-DsQrWhSR.js +1 -0
- package/web/assets/everforest-dark-BFqi-w3D.js +1 -0
- package/web/assets/everforest-dark-BgDCqdQA.js +1 -0
- package/web/assets/everforest-light-C8M2exoo.js +1 -0
- package/web/assets/everforest-light-DBOenRr_.js +1 -0
- package/web/assets/factor-kuTfRLto.js +1 -0
- package/web/assets/fcl-Kvtd6kyn.js +1 -0
- package/web/assets/fennel-BYunw83y.js +1 -0
- package/web/assets/fennel-DBMsxtrh.js +1 -0
- package/web/assets/fish-BvzEVeQv.js +1 -0
- package/web/assets/fish-BxskpYPN.js +1 -0
- package/web/assets/fluent-Bwo2XpEt.js +1 -0
- package/web/assets/fluent-C4IJs8-o.js +1 -0
- package/web/assets/forth-Ffai-XNe.js +1 -0
- package/web/assets/fortran-DYz_wnZ1.js +1 -0
- package/web/assets/fortran-fixed-form-CkoXwp7k.js +1 -0
- package/web/assets/fortran-fixed-form-DFFnVrrY.js +1 -0
- package/web/assets/fortran-free-form-BxgE0vQu.js +1 -0
- package/web/assets/fortran-free-form-DB5N_DgY.js +1 -0
- package/web/assets/fsharp-CXgrBDvD.js +1 -0
- package/web/assets/fsharp-DRAF1jsN.js +1 -0
- package/web/assets/gas-Bneqetm1.js +1 -0
- package/web/assets/gdresource-BD-1uzY7.js +1 -0
- package/web/assets/gdresource-BOOCDP_w.js +1 -0
- package/web/assets/gdscript-C3mT4Uym.js +1 -0
- package/web/assets/gdscript-C5YyOfLZ.js +1 -0
- package/web/assets/gdshader-DkwncUOv.js +1 -0
- package/web/assets/gdshader-G7X6ysY3.js +1 -0
- package/web/assets/genie-D0YGMca9.js +1 -0
- package/web/assets/genie-DSsjfZMX.js +1 -0
- package/web/assets/gherkin-Cl2Fw-_0.js +1 -0
- package/web/assets/gherkin-DyxjwDmM.js +1 -0
- package/web/assets/gherkin-heZmZLOM.js +1 -0
- package/web/assets/git-commit-CJPsQObV.js +1 -0
- package/web/assets/git-commit-F4YmCXRG.js +1 -0
- package/web/assets/git-rebase-DeZqv4fp.js +1 -0
- package/web/assets/git-rebase-r7XF79zn.js +1 -0
- package/web/assets/github-dark-DEMA7cls.js +1 -0
- package/web/assets/github-dark-DHJKELXO.js +1 -0
- package/web/assets/github-dark-default-CecffVCw.js +1 -0
- package/web/assets/github-dark-default-Cuk6v7N8.js +1 -0
- package/web/assets/github-dark-dimmed-BUVApZRJ.js +1 -0
- package/web/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
- package/web/assets/github-dark-high-contrast-Bgie-zSp.js +1 -0
- package/web/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
- package/web/assets/github-light-DAi9KRSo.js +1 -0
- package/web/assets/github-light-DlbDZuKJ.js +1 -0
- package/web/assets/github-light-default-CoJo_M8V.js +1 -0
- package/web/assets/github-light-default-D7oLnXFd.js +1 -0
- package/web/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
- package/web/assets/github-light-high-contrast-QIWGb0Pe.js +1 -0
- package/web/assets/gleam-BeBqoPwE.js +1 -0
- package/web/assets/gleam-BspZqrRM.js +1 -0
- package/web/assets/glimmer-js-BuyKUjfV.js +1 -0
- package/web/assets/glimmer-js-Rg0-pVw9.js +1 -0
- package/web/assets/glimmer-ts-D9iniPFN.js +1 -0
- package/web/assets/glimmer-ts-U6CK756n.js +1 -0
- package/web/assets/glsl-BOG9l2nV.js +1 -0
- package/web/assets/glsl-DplSGwfg.js +1 -0
- package/web/assets/gn-Dxr0sSUf.js +1 -0
- package/web/assets/gn-n2N0HUVH.js +1 -0
- package/web/assets/gnuplot-CtW3R_Hz.js +1 -0
- package/web/assets/gnuplot-DdkO51Og.js +1 -0
- package/web/assets/go-BBr2UQCn.js +1 -0
- package/web/assets/go-CxLEBnE3.js +1 -0
- package/web/assets/graphql-B6XHM4uj.js +1 -0
- package/web/assets/graphql-ChdNCCLP.js +1 -0
- package/web/assets/groovy-D9Dt4D0W.js +1 -0
- package/web/assets/groovy-DFxE31Qs.js +1 -0
- package/web/assets/groovy-gcz8RCvz.js +1 -0
- package/web/assets/gruvbox-dark-hard-CFHQjOhq.js +1 -0
- package/web/assets/gruvbox-dark-hard-CVAXEe8V.js +1 -0
- package/web/assets/gruvbox-dark-medium-DY_qlPYa.js +1 -0
- package/web/assets/gruvbox-dark-medium-GsRaNv29.js +1 -0
- package/web/assets/gruvbox-dark-soft-CVdnzihN.js +1 -0
- package/web/assets/gruvbox-dark-soft-Cq4JVvbh.js +1 -0
- package/web/assets/gruvbox-light-hard-BJT-doEQ.js +1 -0
- package/web/assets/gruvbox-light-hard-CH1njM8p.js +1 -0
- package/web/assets/gruvbox-light-medium-C4PlNM3V.js +1 -0
- package/web/assets/gruvbox-light-medium-DRw_LuNl.js +1 -0
- package/web/assets/gruvbox-light-soft-CaUKsQRi.js +1 -0
- package/web/assets/gruvbox-light-soft-hJgmCMqR.js +1 -0
- package/web/assets/hack-CaT9iCJl.js +1 -0
- package/web/assets/hack-Cxa-FaZ4.js +1 -0
- package/web/assets/haml-2e0EI6Is.js +1 -0
- package/web/assets/haml-B8DHNrY2.js +1 -0
- package/web/assets/handlebars-BL8al0AC.js +1 -0
- package/web/assets/handlebars-CojHdNmS.js +1 -0
- package/web/assets/haskell-BfdhR_WN.js +1 -0
- package/web/assets/haskell-Cw1EW3IL.js +1 -0
- package/web/assets/haskell-Df6bDoY_.js +1 -0
- package/web/assets/haxe-CzTSHFRz.js +1 -0
- package/web/assets/haxe-DVIybFAS.js +1 -0
- package/web/assets/haxe-H-WmDvRZ.js +1 -0
- package/web/assets/hcl-B6OePqme.js +1 -0
- package/web/assets/hcl-BWvSN4gD.js +1 -0
- package/web/assets/highlights-CGQB_ofA.js +4 -0
- package/web/assets/hjson-D2jn7IRw.js +1 -0
- package/web/assets/hjson-D5-asLiD.js +1 -0
- package/web/assets/hlsl-D3lLCCz7.js +1 -0
- package/web/assets/hlsl-MKeth5V9.js +1 -0
- package/web/assets/horizon-BUw7H-hv.js +1 -0
- package/web/assets/horizon-CYww_A_a.js +1 -0
- package/web/assets/horizon-bright-CSTgqtGf.js +1 -0
- package/web/assets/horizon-bright-Cn-bp-IR.js +1 -0
- package/web/assets/houston-DD-gVVvF.js +1 -0
- package/web/assets/houston-DnULxvSX.js +1 -0
- package/web/assets/html-DOf0XnR2.js +1 -0
- package/web/assets/html-GMplVEZG.js +1 -0
- package/web/assets/html-derivative-BFtXZ54Q.js +1 -0
- package/web/assets/html-derivative-DfCZ6Hio.js +1 -0
- package/web/assets/http-CG3jvXcS.js +1 -0
- package/web/assets/http-DBlCnlav.js +1 -0
- package/web/assets/http-jrhK8wxY.js +1 -0
- package/web/assets/hurl-CxQrh4RI.js +1 -0
- package/web/assets/hurl-irOxFIW8.js +1 -0
- package/web/assets/hxml-Bvhsp5Yf.js +1 -0
- package/web/assets/hxml-CkS3Eie7.js +1 -0
- package/web/assets/hy-DFXneXwc.js +1 -0
- package/web/assets/hy-DI6mCUnw.js +1 -0
- package/web/assets/idl-BEugSyMb.js +1 -0
- package/web/assets/imba-D-Pk5S0X.js +1 -0
- package/web/assets/imba-DGztddWO.js +1 -0
- package/web/assets/index-B8i_Npwx.js +1 -0
- package/web/assets/index-BO5QshFZ.js +1 -0
- package/web/assets/index-BTJDQCx7.js +7 -0
- package/web/assets/index-BeO3HZi8.js +1 -0
- package/web/assets/index-Bg8XC6PL.js +1 -0
- package/web/assets/index-Bqsc65tu.js +1 -0
- package/web/assets/index-BrHERoQu.js +13 -0
- package/web/assets/index-Bs28LYAL.js +1 -0
- package/web/assets/index-BvwOxJUs.js +1 -0
- package/web/assets/index-CO3ht2SW.js +1 -0
- package/web/assets/index-CWD5WvZ2.js +1 -0
- package/web/assets/index-Cf5v_iOJ.js +6 -0
- package/web/assets/index-Cl1kAC6E.js +1 -0
- package/web/assets/index-Cy4rJbGi.js +1 -0
- package/web/assets/index-Cz_jZ643.js +9 -0
- package/web/assets/index-DGti80WN.js +1 -0
- package/web/assets/index-DLyEuPU2.css +1 -0
- package/web/assets/index-DYQMUdQi.js +1 -0
- package/web/assets/index-DdqggMxb.js +1 -0
- package/web/assets/index-Dl6dJHXS.js +1 -0
- package/web/assets/index-DsCq3C1F.js +1 -0
- package/web/assets/index-DuIGzFZE.js +2 -0
- package/web/assets/index-ErfaDdfx.js +1 -0
- package/web/assets/index-HGQTBwgf.js +3 -0
- package/web/assets/index-N7fe8U_9.js +1 -0
- package/web/assets/index-UKKSElMc.js +1 -0
- package/web/assets/index-p6hCu4Ur.js +428 -0
- package/web/assets/index-tfBN7-WG.js +165 -0
- package/web/assets/ini-BEwlwnbL.js +1 -0
- package/web/assets/ini-Dix3pTmg.js +1 -0
- package/web/assets/java-BTDmaRNO.js +1 -0
- package/web/assets/java-CylS5w8V.js +1 -0
- package/web/assets/javascript-WyGyM1wV.js +1 -0
- package/web/assets/javascript-iXu5QeM3.js +1 -0
- package/web/assets/javascript-wDzz0qaB.js +1 -0
- package/web/assets/jinja-4LBKfQ-Z.js +1 -0
- package/web/assets/jinja-D0mZ3q2r.js +1 -0
- package/web/assets/jison-B9XHrcYJ.js +1 -0
- package/web/assets/jison-wvAkD_A8.js +1 -0
- package/web/assets/json-B8JryHcM.js +1 -0
- package/web/assets/json-Cp-IABpG.js +1 -0
- package/web/assets/json5-C9tS-k6U.js +1 -0
- package/web/assets/json5-Cdatmj9n.js +1 -0
- package/web/assets/jsonc-CvUCa1o5.js +1 -0
- package/web/assets/jsonc-Des-eS-w.js +1 -0
- package/web/assets/jsonl-9I_GBd5L.js +1 -0
- package/web/assets/jsonl-DcaNXYhu.js +1 -0
- package/web/assets/jsonnet-DFQXde-d.js +1 -0
- package/web/assets/jsonnet-XoenQ2oc.js +1 -0
- package/web/assets/jssm-C2t-YnRu.js +1 -0
- package/web/assets/jssm-CWE2S0Z5.js +1 -0
- package/web/assets/jsx-8cLv2Six.js +1 -0
- package/web/assets/jsx-g9-lgVsj.js +1 -0
- package/web/assets/julia-C1oINnwa.js +1 -0
- package/web/assets/julia-CxzCAyBv.js +1 -0
- package/web/assets/julia-DuME0IfC.js +1 -0
- package/web/assets/just-Bo3fV9RY.js +1 -0
- package/web/assets/just-Cw27pwNe.js +1 -0
- package/web/assets/kanagawa-dragon-Br5yho-4.js +1 -0
- package/web/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
- package/web/assets/kanagawa-lotus-CWkNqswW.js +1 -0
- package/web/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
- package/web/assets/kanagawa-wave-DNPk6o89.js +1 -0
- package/web/assets/kanagawa-wave-DWedfzmr.js +1 -0
- package/web/assets/kdl-CMbyIXjQ.js +1 -0
- package/web/assets/kdl-DV7GczEv.js +1 -0
- package/web/assets/kotlin-BQy537ds.js +1 -0
- package/web/assets/kotlin-BdnUsdx6.js +1 -0
- package/web/assets/kusto-B_y0uMaZ.js +1 -0
- package/web/assets/kusto-DZf3V79B.js +1 -0
- package/web/assets/langs-CE8fVNl2.js +2 -0
- package/web/assets/laserwave-CFOgL8KP.js +1 -0
- package/web/assets/laserwave-DUszq2jm.js +1 -0
- package/web/assets/latex-CWtU0Tv5.js +1 -0
- package/web/assets/latex-CZAhoKip.js +1 -0
- package/web/assets/lean-BZvkOJ9d.js +1 -0
- package/web/assets/lean-C4RHkN41.js +1 -0
- package/web/assets/less-B1dDrJ26.js +1 -0
- package/web/assets/less-XNfgnZC7.js +1 -0
- package/web/assets/light-plus-B7mTdjB0.js +1 -0
- package/web/assets/light-plus-DhAxFHZq.js +1 -0
- package/web/assets/liquid-DFlqVvG0.js +1 -0
- package/web/assets/liquid-DYVedYrR.js +1 -0
- package/web/assets/livescript-BwQOo05w.js +1 -0
- package/web/assets/llvm-BJRUtCev.js +1 -0
- package/web/assets/llvm-DjAJT7YJ.js +1 -0
- package/web/assets/loader-B9n4tYiy.js +1 -0
- package/web/assets/log-2UxHyX5q.js +1 -0
- package/web/assets/log-CcaF_xNv.js +1 -0
- package/web/assets/logo-BtOb2qkB.js +1 -0
- package/web/assets/logo-D9WQLoKQ.js +1 -0
- package/web/assets/lua-8Av-h-ns.js +1 -0
- package/web/assets/lua-BaeVxFsk.js +1 -0
- package/web/assets/lua-VAEuO923.js +1 -0
- package/web/assets/luau-BTSFCcFb.js +1 -0
- package/web/assets/luau-C-HG3fhB.js +1 -0
- package/web/assets/make-CHLpvVh8.js +1 -0
- package/web/assets/make-DXVx14cr.js +1 -0
- package/web/assets/markdown-Cvjx9yec.js +1 -0
- package/web/assets/markdown-DX-TNHnc.js +1 -0
- package/web/assets/marko-CnJfTvn9.js +1 -0
- package/web/assets/marko-DiIoNBFw.js +1 -0
- package/web/assets/material-theme-D5KoaKCx.js +1 -0
- package/web/assets/material-theme-DqJqL2R6.js +1 -0
- package/web/assets/material-theme-darker-BfHTSMKl.js +1 -0
- package/web/assets/material-theme-darker-W_3qP7EH.js +1 -0
- package/web/assets/material-theme-lighter-B0m2ddpp.js +1 -0
- package/web/assets/material-theme-lighter-D9JaVzxs.js +1 -0
- package/web/assets/material-theme-ocean-CuOk3Xta.js +1 -0
- package/web/assets/material-theme-ocean-CyktbL80.js +1 -0
- package/web/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
- package/web/assets/material-theme-palenight-DKy8WuJj.js +1 -0
- package/web/assets/mathematica-DTrFuWx2.js +1 -0
- package/web/assets/matlab-D7o27uSR.js +1 -0
- package/web/assets/matlab-DzreyMvm.js +1 -0
- package/web/assets/mbox-CNhZ1qSd.js +1 -0
- package/web/assets/mdc-BMNejdWA.js +1 -0
- package/web/assets/mdc-D_DpLax5.js +1 -0
- package/web/assets/mdx-C2fqO2XY.js +1 -0
- package/web/assets/mdx-Cmh6b_Ma.js +1 -0
- package/web/assets/mermaid-Cwy4Up_p.js +1 -0
- package/web/assets/mermaid-mWjccvbQ.js +1 -0
- package/web/assets/min-dark-CafNBF8u.js +1 -0
- package/web/assets/min-dark-Dy_aLcWh.js +1 -0
- package/web/assets/min-light-CTRr51gU.js +1 -0
- package/web/assets/min-light-_grBxJgO.js +1 -0
- package/web/assets/mipsasm-CKIfxQSi.js +1 -0
- package/web/assets/mipsasm-yE_Aqo9y.js +1 -0
- package/web/assets/mirc-CjQqDB4T.js +1 -0
- package/web/assets/mllike-CXdrOF99.js +1 -0
- package/web/assets/modelica-Dc1JOy9r.js +1 -0
- package/web/assets/mojo-M6pJPbMk.js +1 -0
- package/web/assets/mojo-rZm6bMo-.js +1 -0
- package/web/assets/monokai-CdVLaXlQ.js +1 -0
- package/web/assets/monokai-D4h5O-jR.js +1 -0
- package/web/assets/moonbit-CR8uFLGd.js +1 -0
- package/web/assets/moonbit-_H4v1dQx.js +1 -0
- package/web/assets/move-CyYMWVy5.js +1 -0
- package/web/assets/move-IF9eRakj.js +1 -0
- package/web/assets/mscgen-BA5vi2Kp.js +1 -0
- package/web/assets/mumps-BT43cFF4.js +1 -0
- package/web/assets/narrat-DRg8JJMk.js +1 -0
- package/web/assets/narrat-DXUZ_ZkW.js +1 -0
- package/web/assets/nextflow-BPolriEg.js +1 -0
- package/web/assets/nextflow-Zz6hmt5N.js +1 -0
- package/web/assets/nextflow-groovy-BeH2EWoN.js +1 -0
- package/web/assets/nextflow-groovy-pQRwk_Jg.js +1 -0
- package/web/assets/nginx-BpAMiNFr.js +1 -0
- package/web/assets/nginx-DSXkacNc.js +1 -0
- package/web/assets/nginx-DdIZxoE0.js +1 -0
- package/web/assets/night-owl-BQqHEEnY.js +1 -0
- package/web/assets/night-owl-C39BiMTA.js +1 -0
- package/web/assets/night-owl-light-CMTm3GFP.js +1 -0
- package/web/assets/night-owl-light-PcYqxiSn.js +1 -0
- package/web/assets/nim-CVrawwO9.js +1 -0
- package/web/assets/nim-e2z2kCcq.js +1 -0
- package/web/assets/nix-Ckjrpg0r.js +1 -0
- package/web/assets/nix-CwoSXNpI.js +1 -0
- package/web/assets/nord-21HrTSIF.js +1 -0
- package/web/assets/nord-Ddv68eIx.js +1 -0
- package/web/assets/nsis-LY0VT_u5.js +1 -0
- package/web/assets/ntriples-BfvgReVJ.js +1 -0
- package/web/assets/nushell-Cz2AlsmD.js +1 -0
- package/web/assets/nushell-DtHLcZf1.js +1 -0
- package/web/assets/objective-c-BoaBTdtz.js +1 -0
- package/web/assets/objective-c-DXmwc3jG.js +1 -0
- package/web/assets/objective-cpp-CLxacb5B.js +1 -0
- package/web/assets/objective-cpp-DstR8hNy.js +1 -0
- package/web/assets/ocaml-C0hk2d4L.js +1 -0
- package/web/assets/ocaml-DTbn2Hv7.js +1 -0
- package/web/assets/octave-Ck1zUtKM.js +1 -0
- package/web/assets/odin-BBf5iR-q.js +1 -0
- package/web/assets/odin-Bxc4S6Xn.js +1 -0
- package/web/assets/one-dark-pro-BhKceDNE.js +1 -0
- package/web/assets/one-dark-pro-DVMEJ2y_.js +1 -0
- package/web/assets/one-light-C3Wv6jpd.js +1 -0
- package/web/assets/one-light-jLTs6gNg.js +1 -0
- package/web/assets/openscad-C4EeE6gA.js +1 -0
- package/web/assets/openscad-CXHpNBsb.js +1 -0
- package/web/assets/oz-BzwKVEFT.js +1 -0
- package/web/assets/pascal--L3eBynH.js +1 -0
- package/web/assets/pascal-D93ZcfNL.js +1 -0
- package/web/assets/pascal-Sr-XLSE6.js +1 -0
- package/web/assets/perl-C0TMdlhV.js +1 -0
- package/web/assets/perl-C95KruZl.js +1 -0
- package/web/assets/perl-CdXCOZ3F.js +1 -0
- package/web/assets/php-B4Kqya17.js +1 -0
- package/web/assets/php-Dhbhpdrm.js +1 -0
- package/web/assets/pierre-dark-CyvmCCZW.js +1 -0
- package/web/assets/pierre-dark-VKo95ZgA.js +1 -0
- package/web/assets/pierre-dark-protanopia-deuteranopia-9NA1cYBf.js +1 -0
- package/web/assets/pierre-dark-protanopia-deuteranopia-Rgc0TwpF.js +1 -0
- package/web/assets/pierre-dark-soft-7QOAm_IF.js +1 -0
- package/web/assets/pierre-dark-soft-BHGpRqa4.js +1 -0
- package/web/assets/pierre-dark-tritanopia-Beq2gCRQ.js +1 -0
- package/web/assets/pierre-dark-tritanopia-DgRbsqLz.js +1 -0
- package/web/assets/pierre-dark-vibrant-BC460iGc.js +1 -0
- package/web/assets/pierre-dark-vibrant-BWBVywrn.js +1 -0
- package/web/assets/pierre-light-480U9XYS.js +1 -0
- package/web/assets/pierre-light-BVSW-Xev.js +1 -0
- package/web/assets/pierre-light-protanopia-deuteranopia-CaVOBURG.js +1 -0
- package/web/assets/pierre-light-protanopia-deuteranopia-DS2cemZ4.js +1 -0
- package/web/assets/pierre-light-soft-BsJo76K9.js +1 -0
- package/web/assets/pierre-light-soft-CVdyfjmI.js +1 -0
- package/web/assets/pierre-light-tritanopia-B4_gpKOM.js +1 -0
- package/web/assets/pierre-light-tritanopia-DkLkAQhg.js +1 -0
- package/web/assets/pierre-light-vibrant-CuV07qLW.js +1 -0
- package/web/assets/pierre-light-vibrant-DdTDNdfJ.js +1 -0
- package/web/assets/pig-CevX1Tat.js +1 -0
- package/web/assets/pkl-CRusufhw.js +1 -0
- package/web/assets/pkl-u5AG7uiY.js +1 -0
- package/web/assets/plastic-3e1v2bzS.js +1 -0
- package/web/assets/plastic-NAeKviv3.js +1 -0
- package/web/assets/plsql-ChMvpjG-.js +1 -0
- package/web/assets/plsql-Dbm3tV2N.js +1 -0
- package/web/assets/po-BTJTHyun.js +1 -0
- package/web/assets/po-LG0lFwH4.js +1 -0
- package/web/assets/poimandres-CS3Unz2-.js +1 -0
- package/web/assets/poimandres-DxtD-TUE.js +1 -0
- package/web/assets/polar-C0HS_06l.js +1 -0
- package/web/assets/polar-DjOs3GWb.js +1 -0
- package/web/assets/postcss-CXtECtnM.js +1 -0
- package/web/assets/postcss-GRRkWn2F.js +1 -0
- package/web/assets/powerquery-CEu0bR-o.js +1 -0
- package/web/assets/powerquery-DHf-dtTS.js +1 -0
- package/web/assets/powershell-CFHJl5sT.js +1 -0
- package/web/assets/powershell-DXrKVo3G.js +1 -0
- package/web/assets/powershell-Dpen1YoG.js +1 -0
- package/web/assets/prisma-Dd19v3D-.js +1 -0
- package/web/assets/prisma-Dgf8IN_C.js +1 -0
- package/web/assets/prolog-9JcfiY6I.js +1 -0
- package/web/assets/prolog-CbFg5uaA.js +1 -0
- package/web/assets/properties-C78fOPTZ.js +1 -0
- package/web/assets/proto-C7zT0LnQ.js +1 -0
- package/web/assets/proto-dqx_Sj2i.js +1 -0
- package/web/assets/protobuf-ChK-085T.js +1 -0
- package/web/assets/pug-CGlum2m_.js +1 -0
- package/web/assets/pug-CoOVtr4u.js +1 -0
- package/web/assets/pug-DeIclll2.js +1 -0
- package/web/assets/puppet-BMWR74SV.js +1 -0
- package/web/assets/puppet-DMA9R1ak.js +1 -0
- package/web/assets/puppet-Di57VbSS.js +1 -0
- package/web/assets/purescript-BgpM7rDH.js +1 -0
- package/web/assets/purescript-CklMAg4u.js +1 -0
- package/web/assets/python-B6Ihcp-E.js +1 -0
- package/web/assets/python-B6aJPvgy.js +1 -0
- package/web/assets/python-BuPzkPfP.js +1 -0
- package/web/assets/q-pXgVlZs6.js +1 -0
- package/web/assets/qml-3beO22l8.js +1 -0
- package/web/assets/qml-DmGQGbca.js +1 -0
- package/web/assets/qmldir-C8lEn-DE.js +1 -0
- package/web/assets/qmldir-DXd9s5XC.js +1 -0
- package/web/assets/qss-B7NnhfIi.js +1 -0
- package/web/assets/qss-IeuSbFQv.js +1 -0
- package/web/assets/quick-open-MJ5vCyZF.js +3 -0
- package/web/assets/r-1ts4xG1r.js +1 -0
- package/web/assets/r-B6wPVr8A.js +1 -0
- package/web/assets/r-Dspwwk_N.js +1 -0
- package/web/assets/racket-BqYA7rlc.js +1 -0
- package/web/assets/racket-CeDx7KO2.js +1 -0
- package/web/assets/raku-BMJwmrCS.js +1 -0
- package/web/assets/raku-DXvB9xmW.js +1 -0
- package/web/assets/razor-BaMsy-R7.js +1 -0
- package/web/assets/razor-Uh8Bk_45.js +1 -0
- package/web/assets/red-CXrvuCEp.js +1 -0
- package/web/assets/red-bN70gL4F.js +1 -0
- package/web/assets/reg-C-SQnVFl.js +1 -0
- package/web/assets/reg-Cvyu2Gnx.js +1 -0
- package/web/assets/regexp-CDVJQ6XC.js +1 -0
- package/web/assets/regexp-DK-WlHNu.js +1 -0
- package/web/assets/rel-BlqNHz8k.js +1 -0
- package/web/assets/rel-C3B-1QV4.js +1 -0
- package/web/assets/riscv-BM1_JUlF.js +1 -0
- package/web/assets/riscv-C5dpdlr7.js +1 -0
- package/web/assets/ron-D8l8udqQ.js +1 -0
- package/web/assets/ron-j5NfrB3z.js +1 -0
- package/web/assets/rose-pine-D8FAFHem.js +1 -0
- package/web/assets/rose-pine-dawn-BASY_2xG.js +1 -0
- package/web/assets/rose-pine-dawn-DHQR4-dF.js +1 -0
- package/web/assets/rose-pine-moon-D4_iv3hh.js +1 -0
- package/web/assets/rose-pine-moon-Dy-VLyzr.js +1 -0
- package/web/assets/rose-pine-qdsjHGoJ.js +1 -0
- package/web/assets/rosmsg-BJDFO7_C.js +1 -0
- package/web/assets/rosmsg-ZkSIzPhc.js +1 -0
- package/web/assets/rpm-CTu-6PCP.js +1 -0
- package/web/assets/rst-BrH8l1NY.js +1 -0
- package/web/assets/rst-C371KPjr.js +1 -0
- package/web/assets/ruby-BK5aLJev.js +1 -0
- package/web/assets/ruby-DusoydGj.js +1 -0
- package/web/assets/ruby-Dw2BHqvy.js +1 -0
- package/web/assets/rust-B1yitclQ.js +1 -0
- package/web/assets/rust-CxuBE0J8.js +1 -0
- package/web/assets/sas-B4kiWyti.js +1 -0
- package/web/assets/sas-DtSHuIwI.js +1 -0
- package/web/assets/sas-cz2c8ADy.js +1 -0
- package/web/assets/sass-Cj5Yp3dK.js +1 -0
- package/web/assets/sass-bfEVHPJ8.js +1 -0
- package/web/assets/scala-C151Ov-r.js +1 -0
- package/web/assets/scala-Dtw19ca_.js +1 -0
- package/web/assets/scheme-C41bIUwD.js +1 -0
- package/web/assets/scheme-C98Dy4si.js +1 -0
- package/web/assets/scheme-OJppFQF3.js +1 -0
- package/web/assets/scss-DxBkwadj.js +1 -0
- package/web/assets/scss-OYdSNvt2.js +1 -0
- package/web/assets/sdbl-CvZs3G9c.js +1 -0
- package/web/assets/sdbl-DVxCFoDh.js +1 -0
- package/web/assets/shaderlab-CEJedz68.js +1 -0
- package/web/assets/shaderlab-Dg9Lc6iA.js +1 -0
- package/web/assets/shell-CjFT_Tl9.js +1 -0
- package/web/assets/shellscript-DgJyDXW6.js +1 -0
- package/web/assets/shellscript-Yzrsuije.js +1 -0
- package/web/assets/shellsession-BADoaaVG.js +1 -0
- package/web/assets/shellsession-DSlzxnCM.js +1 -0
- package/web/assets/shiki-DrujbUi0.js +2 -0
- package/web/assets/sieve-C3Gn_uJK.js +1 -0
- package/web/assets/simple-mode-GW_nhZxv.js +1 -0
- package/web/assets/slack-dark-B_rKnIg6.js +1 -0
- package/web/assets/slack-dark-BthQWCQV.js +1 -0
- package/web/assets/slack-ochin-DqwNpetd.js +1 -0
- package/web/assets/slack-ochin-ZXM6bUvf.js +1 -0
- package/web/assets/smalltalk-B9IHbYt7.js +1 -0
- package/web/assets/smalltalk-BERRCDM3.js +1 -0
- package/web/assets/smalltalk-CnHTOXQT.js +1 -0
- package/web/assets/snazzy-light-Bw305WKR.js +1 -0
- package/web/assets/snazzy-light-DZPhPzZb.js +1 -0
- package/web/assets/solarized-dark-BZway46k.js +1 -0
- package/web/assets/solarized-dark-DXbdFlpD.js +1 -0
- package/web/assets/solarized-light-0RO1u5Jj.js +1 -0
- package/web/assets/solarized-light-L9t79GZl.js +1 -0
- package/web/assets/solidity-B3CjIuAd.js +1 -0
- package/web/assets/solidity-rGO070M0.js +1 -0
- package/web/assets/solr-DehyRSwq.js +1 -0
- package/web/assets/soy-BSb8SaP0.js +1 -0
- package/web/assets/soy-Brmx7dQM.js +1 -0
- package/web/assets/sparql-BJh4JEw-.js +1 -0
- package/web/assets/sparql-DkYu6x3z.js +1 -0
- package/web/assets/sparql-rVzFXLq3.js +1 -0
- package/web/assets/splunk-BtCnVYZw.js +1 -0
- package/web/assets/splunk-h-bNAnbk.js +1 -0
- package/web/assets/spreadsheet-BCZA_wO0.js +1 -0
- package/web/assets/sql-BLtJtn59.js +1 -0
- package/web/assets/sql-BbONfI8K.js +1 -0
- package/web/assets/sql-D0XecflT.js +1 -0
- package/web/assets/ssh-config-CywOjoXH.js +1 -0
- package/web/assets/ssh-config-_ykCGR6B.js +1 -0
- package/web/assets/stata-BH5u7GGu.js +1 -0
- package/web/assets/stata-BKjsT8qe.js +1 -0
- package/web/assets/stex-C3f8Ysf7.js +1 -0
- package/web/assets/stream-tokenizer-BtnezefX.js +4 -0
- package/web/assets/stylus-B533Al4x.js +1 -0
- package/web/assets/stylus-BEDo0Tqx.js +1 -0
- package/web/assets/stylus-CIg617SB.js +1 -0
- package/web/assets/surrealql-2KNEnAt7.js +1 -0
- package/web/assets/surrealql-Bq5Q-fJD.js +1 -0
- package/web/assets/svelte-C_ipcX3V.js +1 -0
- package/web/assets/svelte-xaxjcSSP.js +1 -0
- package/web/assets/swift-BzpIVaGY.js +1 -0
- package/web/assets/swift-D82vCrfD.js +1 -0
- package/web/assets/swift-tEesUtni.js +1 -0
- package/web/assets/synthwave-84-CbfX1IO0.js +1 -0
- package/web/assets/synthwave-84-DWUGC1Lz.js +1 -0
- package/web/assets/system-verilog-CnnmHF94.js +1 -0
- package/web/assets/system-verilog-Qdm_1g2q.js +1 -0
- package/web/assets/systemd-4A_iFExJ.js +1 -0
- package/web/assets/systemd-DKMPPZjB.js +1 -0
- package/web/assets/talonscript-CkByrt1z.js +1 -0
- package/web/assets/talonscript-eRuyeYHl.js +1 -0
- package/web/assets/tasl-B9CVvjfG.js +1 -0
- package/web/assets/tasl-QIJgUcNo.js +1 -0
- package/web/assets/tcl-Bq9dbVAF.js +1 -0
- package/web/assets/tcl-DVfN8rqt.js +1 -0
- package/web/assets/tcl-dwOrl1Do.js +1 -0
- package/web/assets/templ-BVTOctZ7.js +1 -0
- package/web/assets/templ-P3uqSqPl.js +1 -0
- package/web/assets/terraform-BETggiCN.js +1 -0
- package/web/assets/terraform-CAp711iT.js +1 -0
- package/web/assets/tex-BHxF5DMe.js +1 -0
- package/web/assets/tex-idrVyKtj.js +1 -0
- package/web/assets/textile-CnDTJFAw.js +1 -0
- package/web/assets/themes-DswzDCzb.js +2 -0
- package/web/assets/tiddlywiki-DO-Gjzrf.js +1 -0
- package/web/assets/tiki-DGYXhP31.js +1 -0
- package/web/assets/tokenize.worker-Cgg-YDUo.js +12 -0
- package/web/assets/tokyo-night-hegEt444.js +1 -0
- package/web/assets/tokyo-night-rFhgOD-L.js +1 -0
- package/web/assets/toml-Bm5Em-hy.js +1 -0
- package/web/assets/toml-Ms459DBw.js +1 -0
- package/web/assets/toml-vGWfd6FD.js +1 -0
- package/web/assets/troff-wAsdV37c.js +1 -0
- package/web/assets/ts-tags-C-gylFal.js +1 -0
- package/web/assets/ts-tags-zn1MmPIZ.js +1 -0
- package/web/assets/tsv-BFtm7NXx.js +1 -0
- package/web/assets/tsv-B_m7g4N7.js +1 -0
- package/web/assets/tsx-COt5Ahok.js +1 -0
- package/web/assets/tsx-D6116Ycy.js +1 -0
- package/web/assets/ttcn-CfJYG6tj.js +1 -0
- package/web/assets/ttcn-cfg-B9xdYoR4.js +1 -0
- package/web/assets/turtle-B1tBg_DP.js +1 -0
- package/web/assets/turtle-BsS91CYL.js +1 -0
- package/web/assets/turtle-DpRhbQZY.js +1 -0
- package/web/assets/twig-DNn4PbVi.js +1 -0
- package/web/assets/twig-DuP5mDZ4.js +1 -0
- package/web/assets/typescript-BPQ3VLAy.js +1 -0
- package/web/assets/typescript-BqvgUolh.js +1 -0
- package/web/assets/typespec-BGHnOYBU.js +1 -0
- package/web/assets/typespec-DhK7u29_.js +1 -0
- package/web/assets/typst-DHCkPAjA.js +1 -0
- package/web/assets/typst-Dfd71gQj.js +1 -0
- package/web/assets/v-BH76v7br.js +1 -0
- package/web/assets/v-BcVCzyr7.js +1 -0
- package/web/assets/vala-CsfeWuGM.js +1 -0
- package/web/assets/vala-z59IxkFd.js +1 -0
- package/web/assets/vb-4AxSLKIU.js +1 -0
- package/web/assets/vb-CmGdzxic.js +1 -0
- package/web/assets/vb-D17OF-Vu.js +1 -0
- package/web/assets/vbscript-BuJXcnF6.js +1 -0
- package/web/assets/velocity-D8B20fx6.js +1 -0
- package/web/assets/verilog-BQ8w6xss.js +1 -0
- package/web/assets/verilog-C6RDOZhf.js +1 -0
- package/web/assets/verilog-LfQUkHDc.js +1 -0
- package/web/assets/vesper-DU1UobuO.js +1 -0
- package/web/assets/vesper-DXdoX7tc.js +1 -0
- package/web/assets/vhdl-CeAyd5Ju.js +1 -0
- package/web/assets/vhdl-DJCsFYgn.js +1 -0
- package/web/assets/vhdl-lSbBsy5d.js +1 -0
- package/web/assets/viml-CJc9bBzg.js +1 -0
- package/web/assets/viml-pbKHW3Ia.js +1 -0
- package/web/assets/vitesse-black-B2Lmt1K7.js +1 -0
- package/web/assets/vitesse-black-Bkuqu6BP.js +1 -0
- package/web/assets/vitesse-dark-BXGlYFEP.js +1 -0
- package/web/assets/vitesse-dark-D0r3Knsf.js +1 -0
- package/web/assets/vitesse-light-CVO1_9PV.js +1 -0
- package/web/assets/vitesse-light-DFUEw_1q.js +1 -0
- package/web/assets/vue-D2k0BAl5.js +1 -0
- package/web/assets/vue-DN_0RTcg.js +1 -0
- package/web/assets/vue-html-AaS7Mt5G.js +1 -0
- package/web/assets/vue-html-zEfNEgpj.js +1 -0
- package/web/assets/vue-vine-CQOfvN7w.js +1 -0
- package/web/assets/vue-vine-D9eCaTqi.js +1 -0
- package/web/assets/vyper-CDx5xZoG.js +1 -0
- package/web/assets/vyper-DpazWNpx.js +1 -0
- package/web/assets/wasm-CFi-k9--.js +1 -0
- package/web/assets/wasm-CG6Dc4jp.js +1 -0
- package/web/assets/wasm-MzD3tlZU.js +1 -0
- package/web/assets/webidl-ZXfAyPTL.js +1 -0
- package/web/assets/wenyan-BV7otONQ.js +1 -0
- package/web/assets/wenyan-CYFFG9DK.js +1 -0
- package/web/assets/wgsl-CxjTZs-b.js +1 -0
- package/web/assets/wgsl-Dx-B1_4e.js +1 -0
- package/web/assets/wikitext-BhOHFoWU.js +1 -0
- package/web/assets/wikitext-Bx2qct8O.js +1 -0
- package/web/assets/wit-5i3qLPDT.js +1 -0
- package/web/assets/wit-DDW3hD69.js +1 -0
- package/web/assets/wolfram-lXgVvXCa.js +1 -0
- package/web/assets/wolfram-pu21K997.js +1 -0
- package/web/assets/xml-BkAJuBCc.js +1 -0
- package/web/assets/xml-sdJ4AIDG.js +1 -0
- package/web/assets/xquery-DzFWVndE.js +1 -0
- package/web/assets/xsl-C6UUWSil.js +1 -0
- package/web/assets/xsl-CtQFsRM5.js +1 -0
- package/web/assets/yacas-BJ4BC0dw.js +1 -0
- package/web/assets/yaml-Bopit2L3.js +1 -0
- package/web/assets/yaml-Buea-lGh.js +1 -0
- package/web/assets/z80-Hz9HOZM7.js +1 -0
- package/web/assets/zenscript-BIAKq-aR.js +1 -0
- package/web/assets/zenscript-DVFEvuxE.js +1 -0
- package/web/assets/zig-VOosw3JB.js +1 -0
- package/web/assets/zig-bSFrHQ7n.js +1 -0
- package/web/favicon-16x16.png +0 -0
- package/web/favicon-32x32.png +0 -0
- package/web/favicon.ico +0 -0
- package/web/index.html +22 -0
- package/web/samples/evidence/checks.txt +2 -0
- package/web/samples/evidence/contrast.md +6 -0
- package/web/samples/evidence/disabled-rows.md +1 -0
- package/web/samples/evidence/settings-dark-after.png +0 -0
- package/web/samples/evidence/settings-dark-before.png +0 -0
- package/web/samples/evidence/tab-group-tests.txt +10 -0
- package/web/samples/evidence/tabs-scroll.webm +0 -0
package/bin/shinsa
ADDED
package/package.json
CHANGED
|
@@ -1 +1,22 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"name": "@shinsa/darwin-arm64",
|
|
3
|
+
"version": "1.0.0-canary.52",
|
|
4
|
+
"description": "The Shinsa engine for darwin arm64. Install shinsa rather than this package.",
|
|
5
|
+
"license": "AGPL-3.0-only",
|
|
6
|
+
"homepage": "https://shinsa.dev",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/shinsa-dev/shinsa.git"
|
|
10
|
+
},
|
|
11
|
+
"os": [
|
|
12
|
+
"darwin"
|
|
13
|
+
],
|
|
14
|
+
"cpu": [
|
|
15
|
+
"arm64"
|
|
16
|
+
],
|
|
17
|
+
"files": [
|
|
18
|
+
"bin",
|
|
19
|
+
"plugin",
|
|
20
|
+
"web"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: evidence
|
|
3
|
+
description: How to prove user-facing work in Shinsa before the human reviews it: a before and after comparison of each view you changed at the right widths and themes, a short recording for behaviour, simulator captures for iOS, and the focused test run for logic. Use whenever your change is visible to a user, and as the reviewer when the evidence is missing or doubtful.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Evidence
|
|
7
|
+
|
|
8
|
+
The human reviews the evidence before the diff, in the review's Evidence section, as items, each with its kind: a
|
|
9
|
+
comparison (one view before and after, or in light and dark) side by side, a recording that plays in the image viewer,
|
|
10
|
+
a screenshot, a test or check run as the result and output of the check Shinsa ran, a note. "4 pieces of evidence" counts items, not files: a before and
|
|
11
|
+
its after are one comparison, and so are a view's light and dark shots. Without it they have to run your change
|
|
12
|
+
themselves, which is the work Shinsa exists to save. Attach every item with `attach_evidence`; Shinsa copies the files
|
|
13
|
+
into its own store (`<data>/evidence/<task id>/round-<n>/`), so a file you leave in `/tmp` is fine.
|
|
14
|
+
|
|
15
|
+
## Which kind
|
|
16
|
+
|
|
17
|
+
| The change | Attach | Kind |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| A screen looks different | A comparison of each view you changed, the same view before and after, at 1280px and 390px wide, light and dark | `comparison` |
|
|
20
|
+
| One view in several states (empty, loading, error, filled) | One comparison with a part per state, each named by its `label` | `comparison` |
|
|
21
|
+
| Something moves or responds (a menu, a drag, a scroll, a form) | A recording of the flow, 5 to 20 seconds, at 1280px | `recording` |
|
|
22
|
+
| A new screen with nothing before it | Per width, its light and dark as one comparison, parts labelled `Light` and `Dark` | `comparison` |
|
|
23
|
+
| One view in light and dark | One comparison, never two screenshots: a part per theme, labelled `Light` and `Dark` | `comparison` |
|
|
24
|
+
| Logic, an API, a script | The focused test that fails without your change and passes with it, as a check you link | `test` |
|
|
25
|
+
| What a run cannot show (a failing run before the fix, a manual check, a measurement) | A short note in markdown | `note` |
|
|
26
|
+
| A preview deployment exists | Its URL | `preview` |
|
|
27
|
+
| The project has a service that shows the change (its dev server) | Its local preview: the URL `run_service` reports, with the path to the screen | `preview` |
|
|
28
|
+
|
|
29
|
+
Skip a width or a theme only when it cannot differ (a command's output has no theme), and say so in `detail`. A
|
|
30
|
+
comparison counts as the screenshots (or recordings) a plan asks for.
|
|
31
|
+
|
|
32
|
+
## Fill the fields
|
|
33
|
+
|
|
34
|
+
- `title`: what it shows: "Settings, appearance section". Never a file name.
|
|
35
|
+
- `width`, `theme`: the viewport width in CSS pixels (1280, never the file's 2560), and `light` or `dark`. Shinsa
|
|
36
|
+
shows a shot at that width, so a 2x file stays sharp.
|
|
37
|
+
- `detail`: what to look at, in one sentence: "The muted labels now pass 4.5:1 contrast."
|
|
38
|
+
- A comparison takes `parts`, two to six files in order, each with its `path` and a `stage` (`before`, `after`) or a
|
|
39
|
+
short `label` ("Empty", "Loading", "Light", "Dark"):
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{ "kind": "comparison", "title": "Settings, appearance section", "width": 1280, "theme": "dark",
|
|
43
|
+
"parts": [{ "path": "/tmp/evidence/settings-before.png", "stage": "before" },
|
|
44
|
+
{ "path": "/tmp/evidence/settings-after.png", "stage": "after" }] }
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Light and dark shots of one view are one comparison too, a part per theme named by its `label`, with no `theme`
|
|
48
|
+
on the comparison (the labels say it):
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{ "kind": "comparison", "title": "Review tab, a finding with its fix", "width": 1280,
|
|
52
|
+
"parts": [{ "path": "/tmp/evidence/review-light.png", "label": "Light" },
|
|
53
|
+
{ "path": "/tmp/evidence/review-dark.png", "label": "Dark" }] }
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
You take the before shot before you edit, so you may attach it on its own then (`kind: "screenshot"`,
|
|
57
|
+
`stage: "before"`) and its after later with the same `key` (`stage: "after"`): Shinsa shows the two as one
|
|
58
|
+
comparison.
|
|
59
|
+
- Give every item a `key` for what it shows (`settings-dark-900`); without one its title, width and theme are its key.
|
|
60
|
+
Evidence shows the work as it is now: when a later change alters a view, attach it again with the same key and it
|
|
61
|
+
replaces the earlier item (a new after keeps its before). Remove an item that no longer applies with
|
|
62
|
+
`remove_evidence` and a reason. The human sees only the current items; the old ones fold under Earlier versions.
|
|
63
|
+
- A `test` or `check` takes only `check`, the id of one of the task's checks (`c1`, as `read_task` lists them), and
|
|
64
|
+
an optional `detail`: `{ "kind": "test", "check": "c2", "detail": "Fails before the fix with the empty name." }`.
|
|
65
|
+
Shinsa shows that check's result and the output of its last run; never paste test output.
|
|
66
|
+
- Every other kind takes exactly one source: `path` for a file (absolute, or relative to the worktree), `text` for a
|
|
67
|
+
note, `url` for a preview.
|
|
68
|
+
- A note is markdown, rendered as it is in the chat: lists, code, links. Put measurements in a table, one row per
|
|
69
|
+
thing measured, and link the file you changed with a reference (`[theme.css](shinsa://file/src/theme.css#L12-L16)`)
|
|
70
|
+
so the human can open it. A test or check run is a linked check, never a note.
|
|
71
|
+
|
|
72
|
+
```md
|
|
73
|
+
| Token | Before | After | Needs |
|
|
74
|
+
| --- | --- | --- | --- |
|
|
75
|
+
| Hint text (`--muted`) | 2.6:1 | 6.9:1 | 4.5:1 |
|
|
76
|
+
| Borders (`--border`) | 1.2:1 | 1.6:1 | none, decorative |
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Web UI
|
|
80
|
+
|
|
81
|
+
1. Start the app the way the repository says (its CLAUDE.md, README, package scripts), on a free port, with its own
|
|
82
|
+
data or seed if it has one. Never stop or reuse a server you did not start, and stop yours when you are done.
|
|
83
|
+
2. **Before shots first.** Capture the before shots before you edit anything a user sees. If you already changed the
|
|
84
|
+
code, capture them from a scratch checkout of the base: `git worktree add --detach /tmp/before <base commit>`,
|
|
85
|
+
install, run it on another port, capture, then `git worktree remove /tmp/before`.
|
|
86
|
+
3. Capture at a device scale factor of 2: the human reviews on a Retina screen, where a shot with one pixel per CSS
|
|
87
|
+
pixel looks soft. A 1280px wide view is a 2560px wide file. Shinsa starts the Playwright MCP at that scale; take
|
|
88
|
+
its screenshots with `scale: "device"` (its default, `"css"`, halves them again). On the command line pass
|
|
89
|
+
`--device="Desktop Chrome HiDPI"` with your `--viewport-size`; in a script set `deviceScaleFactor: 2` on every page
|
|
90
|
+
and context.
|
|
91
|
+
4. Capture with the browser tools you have (the Playwright MCP tools), or the Playwright command line for a single
|
|
92
|
+
page. Every browser you start runs headless: the human works on this machine, and a window that opens takes their
|
|
93
|
+
screen. Shinsa starts the Playwright MCP headless for you. In a script, launch with `headless: true`, never with
|
|
94
|
+
`headless: false` or `--headed`, and never open a page with `open` or in a desktop browser.
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
bunx playwright screenshot --device="Desktop Chrome HiDPI" --viewport-size=1280,800 --color-scheme=dark \
|
|
98
|
+
--wait-for-timeout=500 http://localhost:5900/settings /tmp/evidence/settings-1280-dark-after.png
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
For a page you must click through first, or a recording, write a short script and run it from a scratch folder,
|
|
102
|
+
so the repository's dependencies stay as they are:
|
|
103
|
+
|
|
104
|
+
```sh
|
|
105
|
+
mkdir -p /tmp/evidence && cd /tmp/evidence && bun add playwright && bunx playwright install chromium
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
```ts
|
|
109
|
+
import { chromium } from 'playwright';
|
|
110
|
+
|
|
111
|
+
const browser = await chromium.launch({ headless: true });
|
|
112
|
+
for (const theme of ['light', 'dark'] as const) {
|
|
113
|
+
for (const width of [1280, 390]) {
|
|
114
|
+
const page = await browser.newPage({ viewport: { width, height: 800 }, deviceScaleFactor: 2, colorScheme: theme });
|
|
115
|
+
await page.goto('http://localhost:5900/settings');
|
|
116
|
+
await page.getByRole('button', { name: 'Appearance' }).click();
|
|
117
|
+
await page.screenshot({ path: `/tmp/evidence/settings-${width}-${theme}-after.png` });
|
|
118
|
+
await page.close();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const context = await browser.newContext({
|
|
122
|
+
viewport: { width: 1280, height: 800 },
|
|
123
|
+
deviceScaleFactor: 2,
|
|
124
|
+
recordVideo: { dir: '/tmp/evidence/video', size: { width: 2560, height: 1600 } },
|
|
125
|
+
});
|
|
126
|
+
const page = await context.newPage();
|
|
127
|
+
await page.goto('http://localhost:5900/settings');
|
|
128
|
+
await page.getByRole('button', { name: 'Appearance' }).click();
|
|
129
|
+
await context.close();
|
|
130
|
+
console.log(await page.video()?.path());
|
|
131
|
+
await browser.close();
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
5. Read the browser console on every page you captured. An error you introduced is a bug, not evidence.
|
|
135
|
+
6. Look at every image before you attach it: the right screen, the change visible, nothing half loaded, and twice the
|
|
136
|
+
width you captured at (`sips -g pixelWidth` or `file` on the PNG).
|
|
137
|
+
7. Attach each view's before and after as one comparison, each recording as a `recording`, with the fields above.
|
|
138
|
+
|
|
139
|
+
## iOS
|
|
140
|
+
|
|
141
|
+
Build for a simulator with `xcodebuild`, install it with `xcrun simctl install`, launch it, and capture with
|
|
142
|
+
`xcrun simctl io <device> screenshot` and `xcrun simctl io <device> recordVideo`, light and dark
|
|
143
|
+
(`xcrun simctl ui <device> appearance dark`). They are in the device's own pixels, sharp already; use the device's
|
|
144
|
+
width in points as `width`.
|
|
145
|
+
|
|
146
|
+
## Logic
|
|
147
|
+
|
|
148
|
+
Write the test that fails without your change and passes with it, and make it a check: in the plan's
|
|
149
|
+
`verification`, or with `check_changes` on the phase that adds it (the `handover` skill). Shinsa runs it after that
|
|
150
|
+
phase and keeps its output, so link it with `kind: "test"` and `check` (its id) instead of pasting the run. Run it once
|
|
151
|
+
before the fix yourself and attach that failing run as a `note` when it shows something the passing run does not.
|
|
152
|
+
Scope the check to the test that proves your change, never the whole suite: CI runs that on the pull request.
|
|
153
|
+
|
|
154
|
+
## A local preview
|
|
155
|
+
|
|
156
|
+
When the project has services (`list_services`), the human can look at the change themselves on this machine. Before
|
|
157
|
+
the last hand-over, start each service that shows the change with `run_service` and leave it running: each run of a
|
|
158
|
+
task gets a port of its own, and the start reports the run's preview URL. Add the path to the screen to check and
|
|
159
|
+
attach it: `{ "kind": "preview", "url": "http://localhost:4123/tasks/SW-17", "title": "Task page, Services fact" }`.
|
|
160
|
+
Name that link as the first step of How to test. The preview stays up while the task waits for review and stops when
|
|
161
|
+
the task is finished, so never stop it yourself. No preview URL in the start's reply means the service has none set:
|
|
162
|
+
say so and attach the screenshots alone. When no service shows the change, add the one that would with
|
|
163
|
+
`add_service` (with its `preview_url`) and then start it.
|
|
164
|
+
|
|
165
|
+
## As the reviewer
|
|
166
|
+
|
|
167
|
+
You did not write the change, so your evidence is independent. Check the agent's evidence against the diff: the
|
|
168
|
+
right screens, both themes, the states it claims. Where a user-visible claim has no evidence, or you doubt one,
|
|
169
|
+
capture your own the same way and attach it; the human sees it marked as from the agent review. You may run the app;
|
|
170
|
+
never edit the worktree.
|
|
171
|
+
|
|
172
|
+
## When you cannot
|
|
173
|
+
|
|
174
|
+
If the app cannot run here (missing secrets, services, a device), say so plainly in your summary and attach what you
|
|
175
|
+
could: a test, a type check, a rendered component. Never claim something works that you did not see work.
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: handover
|
|
3
|
+
description: How to fill Shinsa's hand-over tools well (propose_plan, complete_phase, complete_fix, report_review, answer, report_diagnosis, submit_report, report_outcome, reshape_task). Use before you call any of them.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Handing work over
|
|
7
|
+
|
|
8
|
+
Each tool's schema already names its fields, their limits and what goes in them. This page is only what the schemas
|
|
9
|
+
cannot say: how to fill the fields well.
|
|
10
|
+
|
|
11
|
+
## The plan (`propose_plan`)
|
|
12
|
+
|
|
13
|
+
- Phases are steps you build yourself, in order, each committed on its own: a clear end, not a role or a file.
|
|
14
|
+
- `verification` is the list of checks that prove the change (below). A change the user sees asks for `screenshot`
|
|
15
|
+
in `evidence`.
|
|
16
|
+
- Decide what you can from the code and say so in `approach`. `questions` are only for what the human must decide.
|
|
17
|
+
- When the steps do not fit the request, call `reshape_task` instead of planning.
|
|
18
|
+
|
|
19
|
+
### The checks (`verification`)
|
|
20
|
+
|
|
21
|
+
A check is one command Shinsa runs for you after the phases it covers: a fact for the reviewer and the human, never
|
|
22
|
+
your claim. Choose them like evidence, for what this change touches, and scope each one:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
[
|
|
26
|
+
{ "label": "Transcript tests", "command": "bun test --cwd apps/engine test/agents/transcripts", "phases": [1, 2] },
|
|
27
|
+
{ "label": "Web types", "command": "bun run --cwd apps/web check-types", "phases": [2] },
|
|
28
|
+
{ "label": "Lint the changed files", "command": "bunx biome check apps/web/src/lib/chat", "phases": [2] }
|
|
29
|
+
]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
- One test file or folder, one package's type check, the linter on the paths you change. Never the whole suite
|
|
33
|
+
(`bun test`, `npm test`, `vitest`, `pytest`, `go test ./...`, `bun run check` and the like): Shinsa refuses it, and
|
|
34
|
+
CI runs the whole suite on the pull request.
|
|
35
|
+
- Run each command once yourself before you plan it, from the repository root, where Shinsa runs it. Where each
|
|
36
|
+
package has its own test config (a monorepo), point the runner at the package (`bun test --cwd apps/engine …`): a
|
|
37
|
+
path that matches no test file is a broken check. A scoped run that misses the package's coverage floor passes;
|
|
38
|
+
the floor is CI's.
|
|
39
|
+
- Cover every piece of new logic with tests, and make those tests checks: Shinsa measures changed-line coverage
|
|
40
|
+
from them before review.
|
|
41
|
+
- The repository's own commands, when it has any, run once before review on their own; never list them.
|
|
42
|
+
|
|
43
|
+
## A phase (`complete_phase`)
|
|
44
|
+
|
|
45
|
+
The human reviews the change as a walkthrough assembled from your phases, in plan order, and a reviewer adds where it
|
|
46
|
+
disagrees. You built it and know why it is the way it is, so you write the explanation.
|
|
47
|
+
|
|
48
|
+
- **spots**: the few lines that carry the idea, not the whole function. `why` says what could go wrong or which
|
|
49
|
+
judgement call it holds, never what the code does. Leave out boilerplate, renames, formatting and mechanical edits.
|
|
50
|
+
- **judgement_calls** matter more than the code: name every one a reader would ask about, with the alternatives you
|
|
51
|
+
rejected. Title each as the decision ("Poll instead of webhooks"), never "Decision 1"; title a risk the same way
|
|
52
|
+
("Offsets shift during an export").
|
|
53
|
+
- **walkthrough** (last phase): whenever the change has structure or a flow, draw it in `flow` (or `approach` for
|
|
54
|
+
structure) as a text diagram in a fenced block, at most 72 columns, a few words beside each step. Reviewers read it
|
|
55
|
+
first. Skip it only for one small edit.
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
complete_phase { spots } the Agent's hand-over
|
|
59
|
+
│
|
|
60
|
+
▼
|
|
61
|
+
assembleReport ──► WorkReport one report, plan order
|
|
62
|
+
│
|
|
63
|
+
▼
|
|
64
|
+
Review tab ──► Code tab a spot opens its lines
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
- **testing.manual** starts from where to go (the preview URL, the local preview you attached, or the command that starts the app and its local URL),
|
|
68
|
+
then one concrete step each, then the edge cases worth trying (an empty field, a narrow window, a second tab). An
|
|
69
|
+
`expect` is concrete enough to tell pass from fail; "it works" is not a result. Link a file in an action as
|
|
70
|
+
`[duplicate.ts](shinsa://file/src/paywalls/duplicate.ts#L12-L20)`. Leave `manual` empty only when
|
|
71
|
+
nothing can be tried by hand, and say so in `automated`.
|
|
72
|
+
- **steps** are only what needs a person with production access. Do everything in the repository yourself first (code,
|
|
73
|
+
tests, docs, `.env.example`, the migration file). Name every variable and secret production does not have yet, give
|
|
74
|
+
the exact command, never a secret's value. Write the title and detail as markdown the human can act on: names,
|
|
75
|
+
variables and files in backticks, a dashboard as a link with its full URL, a task as its shinsa:// link. Only the human ticks a step; changing a step's title, detail, kind or
|
|
76
|
+
command asks them to do it again, so change one only when what they must do changed. Never put `pre_merge` or
|
|
77
|
+
`post_merge` in `reshape_task`.
|
|
78
|
+
- **watchdogs** watch the change after it merges, through data the tests never see (traces, logs, errors, analytics,
|
|
79
|
+
support messages); add one where the change sends something the world reads or writes, never for a refactor. Read
|
|
80
|
+
how the repository ships first: when the merge is not the release, set `starts: production` with a
|
|
81
|
+
`production_check`. Any MCP server you have can be the `source`, not only the data sources the last phase's prompt
|
|
82
|
+
lists, whose descriptions are hints: list them with `mcp_list` and check each that could hold the data with its own
|
|
83
|
+
tools (list its Workers or services, query the logs of the one the change touches) before you decide none does. Ask
|
|
84
|
+
with `source_request` (the data, the code that sends it and the servers you checked and why each falls short,
|
|
85
|
+
servers to connect) only when none reaches it; Shinsa refuses a suggestion of a server you already have unless the
|
|
86
|
+
evidence says “checked <server>” and why it falls short. The schedule fields are optional
|
|
87
|
+
and the settings fill the rest. An issue a check finds becomes a task forked from this one.
|
|
88
|
+
|
|
89
|
+
- **check_changes**: keep the checks current as you build. When a phase adds a file, a test or a package the checks
|
|
90
|
+
do not cover, add a check for it in that phase's hand-over, with a one-sentence `reason` the human reads. The
|
|
91
|
+
repository's own checks (`r1`…) are the human's. A failure your change caused comes back to you as a fix; one that
|
|
92
|
+
passes when its test files run alone, or already fails on the base branch, does not.
|
|
93
|
+
|
|
94
|
+
Attach evidence with `attach_evidence` before the last phase (the `evidence` skill): for a test or a check, link the
|
|
95
|
+
check by its id instead of pasting output.
|
|
96
|
+
|
|
97
|
+
## A fix (`complete_fix`)
|
|
98
|
+
|
|
99
|
+
Shinsa runs again the failing checks and the checks of every phase whose files the fix changed. Name other checks the
|
|
100
|
+
fix touches in `checks`, and fix a check whose command was wrong or too wide with `check_changes`; never widen one to
|
|
101
|
+
the whole suite to make it pass. While you fix, run only the test files or folders the fix touches.
|
|
102
|
+
|
|
103
|
+
Evidence must show the work as it is after the fix: attach what the fix changed again with the same `key` (it
|
|
104
|
+
replaces the old item), remove what no longer applies with `remove_evidence`, and name in `evidence_kept` each earlier
|
|
105
|
+
item the fix touched that still holds.
|
|
106
|
+
|
|
107
|
+
When the fix answers something the human sent, it carries `reply` (Replying to the human, below).
|
|
108
|
+
|
|
109
|
+
Send `walkthrough` only when the fix changes the approach, the flow, a risk, the testing, the steps or the watchdogs. Each part you
|
|
110
|
+
send replaces that part whole, so send the full new list, not just the new item.
|
|
111
|
+
|
|
112
|
+
## Replying to the human (`reply`)
|
|
113
|
+
|
|
114
|
+
`propose_plan`, `complete_phase`, `complete_fix`, `answer`, `report_diagnosis`, `submit_report` and `report_outcome`
|
|
115
|
+
take `reply`. When the hand-over follows something the human sent (feedback on a plan, a request at review, a
|
|
116
|
+
question, line comments, a follow-up, or a message while you work), `reply` is required; on a hand-over nobody asked
|
|
117
|
+
for, such as a first plan, it is refused. The human reads it above the plan, phase, fix or result, in the chat and on
|
|
118
|
+
the overview, so it must stand alone, and the rest of the hand-over stays the full plan or result, never a quote of
|
|
119
|
+
their request:
|
|
120
|
+
|
|
121
|
+
- `headline`: one sentence, what you did about their request.
|
|
122
|
+
- `points`: each thing they raised, in their order and their words cut short, marked `done`, `answered` (a question,
|
|
123
|
+
and the note is the answer) or `not_changed` (the note says why). Never mark a point done that you did not change.
|
|
124
|
+
- `next`: what they do now to see or try it, as numbered steps with exact commands in ```bash run blocks and full
|
|
125
|
+
links. Leave it out when there is nothing to do.
|
|
126
|
+
|
|
127
|
+
## Review findings (`report_review`)
|
|
128
|
+
|
|
129
|
+
`blocking` is a bug, a missed requirement, a broken rule or a check the change makes fail (not one already failing
|
|
130
|
+
on main); the agent fixes it before the human reviews. `should_fix` is not proven broken but worth holding the merge
|
|
131
|
+
for; the human sees it with Fix chosen. `optional` is taste or polish; the human sees it with Dismiss chosen. One
|
|
132
|
+
finding per problem, each one you reproduced (the `review` skill).
|
|
133
|
+
|
|
134
|
+
## Inquiries
|
|
135
|
+
|
|
136
|
+
`answer`, `report_diagnosis` and `submit_report` take `propose_change` only when what you found calls for a code
|
|
137
|
+
change; the human decides whether the task becomes it.
|
|
138
|
+
|
|
139
|
+
## Copy
|
|
140
|
+
|
|
141
|
+
Sentence case, plain words, no em dashes, no exclamation marks, no filler, no markdown inside short fields. In a
|
|
142
|
+
Markdown field, a command the human runs themselves goes in a ```bash run block; commands in structured fields (a
|
|
143
|
+
`command` target, a step's `command`) are always runnable, so never fence them.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review
|
|
3
|
+
description: How a Shinsa reviewer judges a change before the human sees it. Use whenever you are the reviewer, or when you check your own work before `complete_phase` or `complete_fix`.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Reviewing a change
|
|
7
|
+
|
|
8
|
+
You are a signal for the human, never the approval. Your job is to catch what the human would otherwise have to send back, so the human's review is about judgement, not about mistakes.
|
|
9
|
+
|
|
10
|
+
A finding you cannot reproduce is a guess. A fix you have not watched fail without it is a hope. Keep both out of the report.
|
|
11
|
+
|
|
12
|
+
## 1. Scope
|
|
13
|
+
|
|
14
|
+
- Your brief names the change: the branch against the default branch (`git diff $(git merge-base HEAD origin/<default>)`),
|
|
15
|
+
against the branch a stacked task sits on, or, in a later round, only that round's commits. Read every file in it.
|
|
16
|
+
- Read the request and the approved plan first. The change is judged against them, then against the repository rules.
|
|
17
|
+
|
|
18
|
+
## 2. The checks, and what they miss
|
|
19
|
+
|
|
20
|
+
When you are the reviewer, Shinsa has already run the task's checks: the scoped commands the agent chose for each phase (a test file or folder, a package's type check, the linter on the changed paths) and the repository's own commands, once before review. Your brief lists each with its result. Nothing in them blocks, or you would not be reviewing. Look for what they miss:
|
|
21
|
+
|
|
22
|
+
- Code the change touches that no check covers: a changed module with no test among the checks, a package whose types no check runs. Run what covers it yourself, scoped to those files or that package (copy the commands from the workflows and package scripts), and report a failure as blocking.
|
|
23
|
+
- A check scoped so narrowly that it proves nothing about the change, or one that passes with and without it.
|
|
24
|
+
- Changed lines no test runs, when your brief lists coverage gaps.
|
|
25
|
+
|
|
26
|
+
CI runs the whole suite on the pull request after your review, so never run it yourself: other agents share this machine, and Shinsa refuses the command. A result marked "passed when re-run alone" passed; one marked "already failing on the base branch" fails on main too, so it is not the change's and does not count against it. A claim in a summary that something passes is not evidence. A check that fails because of the change is always a blocking finding.
|
|
27
|
+
|
|
28
|
+
## 3. Rank every finding
|
|
29
|
+
|
|
30
|
+
Every finding gets one of three levels, named for what should happen to it:
|
|
31
|
+
|
|
32
|
+
- `blocking`: the agent fixes it before the human sees the review. The list below.
|
|
33
|
+
- `should_fix`: not proven broken, but the change is worse without the fix and you would hold the merge for it in a
|
|
34
|
+
colleague's pull request: an edge case nothing handles, untested logic that decides something, a helper the
|
|
35
|
+
repository already has re-implemented, a misleading name, message or doc. The human sees it with Fix chosen.
|
|
36
|
+
- `optional`: taste, polish or a small cleanup the change is fine without. The human sees it with Dismiss chosen.
|
|
37
|
+
|
|
38
|
+
The human trusts the default, so rank honestly: a `should_fix` is a request, an `optional` is a remark. When you are
|
|
39
|
+
unsure between the two, ask whether you would hold the merge for it.
|
|
40
|
+
|
|
41
|
+
### What is blocking
|
|
42
|
+
|
|
43
|
+
- A bug: something that breaks, crashes, loses data, or behaves differently from the request.
|
|
44
|
+
- A missed requirement from the request or the plan.
|
|
45
|
+
- A broken repository rule (its CLAUDE.md, AGENTS.md, lint, conventions).
|
|
46
|
+
- Pattern drift that a rule names: new code that does something the repository already has a way to do, and does it
|
|
47
|
+
another way (see below).
|
|
48
|
+
- A check the change makes fail (not one already failing on main), a test that encodes the old behaviour, a test that
|
|
49
|
+
passes with and without the fix.
|
|
50
|
+
- UI work without evidence, or evidence that does not show the changed flow. Capture your own as the evidence skill
|
|
51
|
+
says, so the human has independent evidence either way. When you capture a view again in a later review, attach it
|
|
52
|
+
with the same `key` so it replaces your earlier shot, and remove your own that no longer applies.
|
|
53
|
+
|
|
54
|
+
Everything else is `should_fix` or `optional`. Do not report taste as blocking, and do not rank a real problem
|
|
55
|
+
`optional` because it is small.
|
|
56
|
+
|
|
57
|
+
## 3a. Check the patterns
|
|
58
|
+
|
|
59
|
+
The checks catch what a tool can. Read the new code next to the code it sits beside and look for what only a reader
|
|
60
|
+
sees:
|
|
61
|
+
|
|
62
|
+
- A helper, hook, component or query re-implemented when the repository already has one that does the job. Find the
|
|
63
|
+
existing one (`grep` for its name and for the idea) and name it in the finding.
|
|
64
|
+
- A new way of doing what the repository does one way everywhere: error handling, naming, a data-loading pattern, the
|
|
65
|
+
folder a kind of file lives in, how tests are set up.
|
|
66
|
+
- A new dependency for something the repository already does without it.
|
|
67
|
+
|
|
68
|
+
When the repository's rules name the pattern (its CLAUDE.md, a conventions skill, a lint rule), the drift is a broken
|
|
69
|
+
rule and blocking. Otherwise it is `should_fix`, with the existing code to follow.
|
|
70
|
+
|
|
71
|
+
## 4. Prove it
|
|
72
|
+
|
|
73
|
+
For each blocking finding, point to `file:line` and say what breaks and how you saw it. If you cannot make it happen, it is `should_fix` at most.
|
|
74
|
+
|
|
75
|
+
## 5. Judge, do not obey
|
|
76
|
+
|
|
77
|
+
Earlier review comments, bots and your own instincts are input. Decide for each: valid, stale or a nitpick.
|
|
78
|
+
|
|
79
|
+
## 6. Check the judgement calls
|
|
80
|
+
|
|
81
|
+
Your brief numbers the judgement calls the agent made. They are its claims about the change, not its reasoning: read
|
|
82
|
+
the code each is about and decide whether you would have made the same call. Where you would not, say why and what you
|
|
83
|
+
would do instead. A call that breaks the request or a rule is a blocking finding, not only a disagreement.
|
|
84
|
+
|
|
85
|
+
## 7. Check the steps around the merge
|
|
86
|
+
|
|
87
|
+
Your brief lists the steps the agent left for the human before and after the merge. Check the list against the code:
|
|
88
|
+
|
|
89
|
+
- A new environment variable or secret the code reads, a migration file, a deploy, a config or feature flag, a
|
|
90
|
+
service to restart or a third-party setting the change needs, missing from the list: a blocking finding, naming
|
|
91
|
+
the step that is missing.
|
|
92
|
+
- A step an agent could have done in the repository (code, tests, docs, `.env.example`, the migration file itself): a
|
|
93
|
+
finding to do it instead.
|
|
94
|
+
- A step without the command or the place it needs, or one in the wrong order (`pre_merge` for something that needs
|
|
95
|
+
the merged code): `should_fix`.
|
|
96
|
+
- A secret's value written into a step: blocking.
|
|
97
|
+
|
|
98
|
+
## 8. Check the guide for testing it
|
|
99
|
+
|
|
100
|
+
Your brief lists how the agent says to test the change: what the tests cover and the steps the human tries by hand.
|
|
101
|
+
Follow the steps you can from the worktree (start the app, open the URL, run the command, read the file).
|
|
102
|
+
|
|
103
|
+
- A step you cannot follow: a URL, file, command or screen that does not exist or does not lead where it says, or an
|
|
104
|
+
action too vague to do. A finding, anchored to the line the step is about.
|
|
105
|
+
- A step whose expected result is vague ("it works", "looks right") or does not match what you see. A finding.
|
|
106
|
+
- A user-visible change with no manual steps, or a guide that skips the edge case the change is about: `should_fix`.
|
|
107
|
+
- A claim in `automated` the tests do not back (a test file that does not exist or does not check what it says): a
|
|
108
|
+
blocking finding.
|
|
109
|
+
|
|
110
|
+
## 9. Check what the tests miss
|
|
111
|
+
|
|
112
|
+
When the repository measures test coverage, your brief says how many of the changed lines the tests run, and lists
|
|
113
|
+
the files and line ranges (new-file line numbers) that no test runs. Read each of those ranges.
|
|
114
|
+
|
|
115
|
+
- Important new logic no test runs (a branch that decides something, error handling, a calculation, a migration): a
|
|
116
|
+
finding anchored to the range, blocking when a bug there would go unnoticed, `should_fix` otherwise.
|
|
117
|
+
- Leave trivial lines out: a log line, a type, a re-export, a guard that cannot fire.
|
|
118
|
+
- Coverage counts lines a test ran, not lines a test checked. A covered line with no assertion on its result is still
|
|
119
|
+
worth a `should_fix` when it matters.
|
|
120
|
+
|
|
121
|
+
## Report
|
|
122
|
+
|
|
123
|
+
`report_review` with a `summary` (one or two sentences: what you checked and your overall view of the change) and the findings, most severe first, each with a `title` (what is wrong, in a few words), a `message` (what is wrong and why it matters) and a `fix` when you know what to change; an empty list when you found nothing; then `disagreements`, the judgement calls you would have made differently, by number. Nothing about what is fine. Then stop without restating the findings.
|
|
124
|
+
|
|
125
|
+
In a `message` or a `fix`, a command the human should run themselves (a migration, a sign-in) goes in a ```` ```bash run ```` block, which Shinsa gives a Run in terminal button; code you suggest and example commands go in a plain fence (```` ```ts ````, ```` ```bash ````), which can only be copied.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=Object.freeze(JSON.parse('{"displayName":"ABAP","fileTypes":["abap","ABAP"],"foldingStartMarker":"/\\\\*\\\\*|\\\\{\\\\s*$","foldingStopMarker":"\\\\*\\\\*/|^\\\\s*}","name":"abap","patterns":[{"captures":{"1":{"name":"punctuation.definition.comment.abap"}},"match":"^\\\\*.*\\\\n?","name":"comment.line.full.abap"},{"captures":{"1":{"name":"punctuation.definition.comment.abap"}},"match":"\\".*\\\\n?","name":"comment.line.partial.abap"},{"match":"(?<!\\\\S)##.*?(?=([,.:\\\\s]))","name":"comment.line.pragma.abap"},{"match":"(?i)(?<=[-~\\\\s])(?<=[-=]>)([/_a-z][/-9_a-z]*)(?=\\\\s+(?:|[-*+/]|&&?)=\\\\s+)","name":"variable.other.abap"},{"match":"\\\\b[0-9]+(\\\\b|[,.])","name":"constant.numeric.abap"},{"match":"(?i)(^|\\\\s+)((P(?:UBLIC|RIVATE|ROTECTED))\\\\sSECTION)(?=\\\\s+|[.:])","name":"storage.modifier.class.abap"},{"begin":"(?<!\\\\\\\\)(\\\\|)(.*?)","beginCaptures":{"1":{"name":"constant.character.escape.abap"}},"end":"(?<!\\\\\\\\)(\\\\||(\\\\\\\\\\\\\\\\\\\\|))","endCaptures":{"1":{"name":"constant.character.escape.abap"}},"name":"string.interpolated.abap","patterns":[{"match":"(\\\\{ )|( })","name":"constant.character.escape"},{"match":"\\\\\\\\\\\\|","name":"constant.character.escape.abap"},{"match":"(?i)(?<=\\\\s)(align|alpha|case|country|currency|date|decimals|exponent|number|pad|sign|style|time|timestamp|timezone|width|xsd|zero)(?=\\\\s=)","name":"entity.name.property.stringtemplate.abap"},{"match":"(?i)(?<==\\\\s)(center|engineering|environment|in|iso|left|leftplus|leftspace|lower|no|out|raw|right|rightplus|rightspace|scale_preserving|scale_preserving_scientific|scientific|scientific_with_leading_zero|sign_as_postfix|simple|space|upper|user|yes)(?=\\\\s)","name":"entity.value.property.stringtemplate.abap"}]},{"begin":"\'","end":"\'","name":"string.quoted.single.abap","patterns":[{"match":"\'\'","name":"constant.character.escape.abap"}]},{"begin":"`","end":"`","name":"string.quoted.single.abap","patterns":[{"match":"``","name":"constant.character.escape.abap"}]},{"begin":"(?i)^\\\\s*(class)\\\\s([/_a-z][/-9_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.block.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","name":"meta.block.begin.implementation.abap","patterns":[{"match":"(?i)(^|\\\\s+)(definition|implementation|public|inheriting\\\\s+from|final|deferred|abstract|shared\\\\s+memory\\\\s+enabled|(global|local)*\\\\s*friends|(create\\\\s+(p(?:ublic|rotected|rivate)))|for\\\\s+behavior\\\\s+of|for\\\\s+testing|risk\\\\s+level\\\\s+(critical|dangerous|harmless))|duration\\\\s(short|medium|long)(?=\\\\s+|\\\\.)","name":"storage.modifier.class.abap"},{"begin":"(?=[A-Z_a-z][0-9A-Z_a-z]*)","contentName":"entity.name.type.block.abap","end":"(?![0-9A-Z_a-z])","patterns":[{"include":"#generic_names"}]}]},{"begin":"(?i)^\\\\s*(method)\\\\s(?:([/_a-z][/-9_a-z]*)~)?([/_a-z][/-9_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.abap"},"3":{"name":"entity.name.function.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","patterns":[{"match":"(?i)(?<=^|\\\\s)(BY(?:\\\\s+DATABASE(\\\\s+PROCEDURE|\\\\s+FUNCTION|\\\\s+GRAPH\\\\s+WORKSPACE)|\\\\s+KERNEL\\\\s+MODULE))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"match":"(?i)(?<=^|\\\\s)(FOR\\\\s+(HDB|LLANG))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"match":"(?i)(?<=\\\\s)(OPTIONS\\\\s+(READ-ONLY|DETERMINISTIC|SUPPRESS\\\\s+SYNTAX\\\\s+ERRORS))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"match":"(?i)(?<=^|\\\\s)(LANGUAGE\\\\s+(SQLSCRIPT|SQL|GRAPH))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"captures":{"1":{"name":"storage.modifier.method.abap"}},"match":"(?i)(?<=\\\\s)(USING)\\\\s+([/_a-z][/-9=>_a-z]*)+(?=\\\\s+|\\\\.)"},{"begin":"(?=[A-Z_a-z][0-9A-Z_a-z]*)","end":"(?![0-9A-Z_a-z])","patterns":[{"include":"#generic_names"}]}]},{"begin":"(?i)^\\\\s*(INTERFACE)\\\\s([/_a-z][/-9_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","patterns":[{"match":"(?i)(?<=^|\\\\s)(DEFERRED|PUBLIC)(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"}]},{"begin":"(?i)^\\\\s*(FORM)\\\\s([/_a-z][-/-9?_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","patterns":[{"match":"(?i)(?<=^|\\\\s)(USING|TABLES|CHANGING|RAISING|IMPLEMENTATION|DEFINITION)(?=\\\\s+|\\\\.)","name":"storage.modifier.form.abap"},{"include":"#abaptypes"},{"include":"#keywords_followed_by_braces"}]},{"match":"(?i)(end(?:class|method|form|interface))","name":"storage.type.block.end.abap"},{"match":"(?i)(<[A-Z_a-z][0-9A-Z_a-z]*>)","name":"variable.other.field.symbol.abap"},{"include":"#keywords"},{"include":"#abap_constants"},{"include":"#reserved_names"},{"include":"#operators"},{"include":"#builtin_functions"},{"include":"#abaptypes"},{"include":"#system_fields"},{"include":"#sql_functions"},{"include":"#sql_types"}],"repository":{"abap_constants":{"match":"(?i)(?<=\\\\s)(initial|null|@?space|@?abap_true|@?abap_false|@?abap_undefined|table_line|%_final|%_hints|%_predefined|col_background|col_group|col_heading|col_key|col_negative|col_normal|col_positive|col_total|adabas|as400|db2|db6|hdb|oracle|sybase|mssqlnt|pos_low|pos_high)(?=[,.\\\\s])","name":"constant.language.abap"},"abaptypes":{"patterns":[{"match":"(?i)\\\\s(abap_bool|string|xstring|any|clike|csequence|numeric|xsequence|decfloat|decfloat16|decfloat34|utclong|simple|int8|[cdfinptx])(?=[,.\\\\s])","name":"support.type.abap"},{"match":"(?i)\\\\s(TYPE|REF|TO|LIKE|LINE|OF|STRUCTURE|STANDARD|SORTED|HASHED|INDEX|TABLE|WITH|UNIQUE|NON-UNIQUE|SECONDARY|DEFAULT|KEY)(?=[,.\\\\s])","name":"keyword.control.simple.abap"}]},"arithmetic_operator":{"match":"(?i)(?<=\\\\s)([-*+]|\\\\*\\\\*|[%/]|DIV|MOD|BIT-AND|BIT-OR|BIT-XOR|BIT-NOT)(?=\\\\s)","name":"keyword.control.simple.abap"},"builtin_functions":{"match":"(?i)(?<=\\\\s)(abs|sign|ceil|floor|trunc|frac|acos|asin|atan|cos|sin|tan|cosh|sinh|tanh|exp|log|log10|sqrt|strlen|xstrlen|charlen|lines|numofchar|dbmaxlen|round|rescale|nmax|nmin|cmax|cmin|boolc|boolx|xsdbool|contains|contains_any_of|contains_any_not_of|matches|line_exists|ipow|char_off|count|count_any_of|count_any_not_of|distance|condense|concat_lines_of|escape|find|find_end|find_any_of|find_any_not_of|insert|match|repeat|replace|reverse|segment|shift_left|shift_right|substring|substring_after|substring_from|substring_before|substring_to|to_upper|to_lower|to_mixed|from_mixed|translate|bit-set|line_index)(?=\\\\()","name":"entity.name.function.builtin.abap"},"comparison_operator":{"match":"(?i)(?<=\\\\s)([<>]|<=|>=|=|<>|eq|ne|lt|le|gt|ge|cs|cp|co|cn|ca|na|ns|np|byte-co|byte-cn|byte-ca|byte-na|byte-cs|byte-ns|[moz])(?=\\\\s)","name":"keyword.control.simple.abap"},"control_keywords":{"match":"(?i)(^|\\\\s)(at|case|catch|continue|do|elseif|else|endat|endcase|endcatch|enddo|endif|endloop|endon|endtry|endwhile|if|loop|on|raise|try|while)(?=[.:\\\\s])","name":"keyword.control.flow.abap"},"generic_names":{"match":"[A-Z_a-z][0-9A-Z_a-z]*"},"keywords":{"patterns":[{"include":"#main_keywords"},{"include":"#text_symbols"},{"include":"#control_keywords"},{"include":"#keywords_followed_by_braces"}]},"keywords_followed_by_braces":{"captures":{"1":{"name":"keyword.control.simple.abap"},"2":{"name":"variable.other.abap"}},"match":"(?i)\\\\b(data|value|field-symbol|final|reference|resumable)\\\\((<?[/_a-z][/-9_a-z]*>?)\\\\)"},"logical_operator":{"match":"(?i)(?<=\\\\s)(not|or|and)(?=\\\\s)","name":"keyword.control.simple.abap"},"main_keywords":{"match":"(?i)(?<=^|\\\\s)(abap-source|abstract|accept|accepting|access|according|action|activation|actual|add|add-corresponding|adjacent|after|alias|aliases|all|allocate|amdp|analysis|analyzer|append|appending|application|archive|area|arithmetic|as|ascending|assert|assign|assigned|assigning|association|asynchronous|at|attributes|authority|authority-check|authorization|auto|back|background|backward|badi|base|before|begin|behavior|between|binary|bit|blanks??|blocks??|bound|boundaries|bounds|boxed|break|break-point|buffer|by|bypassing|byte|byte-order|call|calling|cast|casting|cds|centered|change|changing|channels|char-to-hex|character|check|checkbox|cid|circular|class|class-data|class-events|class-methods??|class-pool|cleanup|clear|clients??|clock|clone|close|cnt|code|collect|color|column|comments??|commit|common|communication|comparing|components??|compression|compute|concatenate|cond|condense|condition|connection|constants??|contexts??|controls??|conv|conversion|convert|copy|corresponding|count|country|cover|create|currency|current|cursor|customer-function|data|database|datainfo|dataset|date|daylight|ddl|deallocate|decimals|declarations|deep|default|deferred|define|delete|deleting|demand|descending|describe|destination|detail|determine|dialog|did|directory|discarding|display|display-mode|distance|distinct|divide|divide-corresponding|dummy|duplicates??|duration|during|dynpro|edit|editor-call|empty|enabled|enabling|encoding|end|end-enhancement-section|end-of-definition|end-of-page|end-of-selection|end-test-injection|end-test-seam|endenhancement|endexec|endfunction|endian|ending|endmodule|endprovide|endselect|endwith|enhancement|enhancement-point|enhancement-section|enhancements|entities|entity|entries|entry|enum|equiv|errors|escape|escaping|events??|exact|except|exception|exception-table|exceptions|excluding|exec|execute|exists|exit|exit-command|expanding|explicit|exponent|export|exporting|extended|extension|extract|fail|failed|features|fetch|field|field-groups|field-symbols|fields|file|fill|filters??|final|find|first|first-line|fixed-point|flush|following|for|format|forward|found|frames??|free|from|full|function|function-pool|generate|get|giving|graph|groups??|handler??|hashed|having|headers??|heading|help-id|help-request|hide|hint|hold|hotspot|icon|id|identification|identifier|ignore|ignoring|immediately|implemented|implicit|import|importing|in|inactive|incl|includes??|including|increment|index|index-line|indicators|infotypes|inheriting|init|initial|initialization|inner|input|insert|instances??|intensified|interface|interface-pool|interfaces|internal|intervals|into|inverse|inverted-date|is|job|join|keep|keeping|kernel|keys??|keywords|kind|language|last|late|layout|leading|leave|left|left-justified|legacy|length|let|levels??|like|line|line-count|line-selection|line-size|linefeed|lines|link|list|list-processing|listbox|load|load-of-program|locale??|locks??|log-point|logical|lower|mapped|mapping|margin|mark|mask|match|matchcode|maximum|members|memory|mesh|message|message-id|messages|messaging|methods??|mode|modif|modifier|modify|module|move|move-corresponding|multiply|multiply-corresponding|name|nametab|native|nested|nesting|new|new-line|new-page|new-section|next|no-display|no-extension|no-gaps??|no-grouping|no-heading|no-scrolling|no-sign|no-title|no-zero|nodes|non-unicode|non-unique|number|objects??|objmgr|obligatory|occurences??|occurrences??|occurs|of|offset|on|only|open|optional|options??|order|others|out|outer|output|output-length|overflow|overlay|pack|package|padding|page|parameter|parameter-table|parameters|part|partially|pcre|perform|performing|permissions|pf-status|places|pool|position|pragmas|preceding|precompiled|preferred|preserving|primary|print|print-control|private|privileged|procedure|process|program|property|protected|provide|push|pushbutton|put|query|queue-only|queueonly|quickinfo|radiobutton|raising|ranges??|read|read-only|received??|receiving|redefinition|reduce|ref|reference|refresh|regex|reject|renaming|replace|replacement|replacing|report|reported|request|requested|required|reserve|reset|resolution|respecting|response|restore|results??|resumable|resume|retry|return|returning|right|right-justified|rollback|rows|rp-provide-from-last|run|sap|sap-spool|save|saving|scan|screen|scroll|scroll-boundary|scrolling|search|seconds|section|select|select-options|selection|selection-screen|selection-sets??|selection-table|selections|send|separated??|session|set|shared|shift|shortdump|shortdump-id|sign|simple|simulation|single|size|skip|skipping|smart|some|sort|sortable|sorted|source|specified|split|spool|spots|sql|stable|stamp|standard|start-of-selection|starting|state|statements??|statics??|statusinfo|step|step-loop|stop|structures??|style|subkey|submatches|submit|subroutine|subscreen|substring|subtract|subtract-corresponding|suffix|sum|summary|supplied|supply|suppress|switch|symbol|syntax-check|syntax-trace|system-call|system-exceptions|tab|tabbed|tables??|tableview|tabstrip|target|tasks??|test|test-injection|test-seam|testing|text|textpool|then|throw|times??|title|titlebar|to|tokens|top-lines|top-of-page|trace-file|trace-table|trailing|transaction|transfer|transformation|translate|transporting|trmac|truncate|truncation|type|type-pools??|types|uline|unassign|unbounded|under|unicode|union|unique|unit|unix|unpack|until|unwind|up|update|upper|user|user-command|using|utf-8|uuid|valid|validate|value|value-request|values|vary|varying|version|via|visible|wait|when|where|windows??|with|with-heading|with-title|without|word|work|workspace|write|xml|zone)(?=[,.:\\\\s])","name":"keyword.control.simple.abap"},"operators":{"patterns":[{"include":"#other_operator"},{"include":"#arithmetic_operator"},{"include":"#comparison_operator"},{"include":"#logical_operator"}]},"other_operator":{"match":"(?<=\\\\s)(&&?|\\\\?=|\\\\+=|-=|/=|\\\\*=|&&=|&=)(?=\\\\s)","name":"keyword.control.simple.abap"},"reserved_names":{"match":"(?i)(?<=\\\\s)(me|super)(?=[,.\\\\s]|->)","name":"constant.language.abap"},"sql_functions":{"match":"(?i)(?<=\\\\s)(abap_system_timezone|abap_user_timezone|abs|add_days|add_months|allow_precision_loss|as_geo_json|avg|bintohex|cast|ceil|coalesce|concat_with_space|concat|corr_spearman|corr|count|currency_conversion|datn_add_days|datn_add_months|datn_days_between|dats_add_days|dats_add_months|dats_days_between|dats_from_datn|dats_is_valid|dats_tims_to_tstmp|dats_to_datn|dayname|days_between|dense_rank|division|div|extract_day|extract_hour|extract_minute|extract_month|extract_second|extract_year|first_value|floor|grouping|hextobin|initcap|instr|is_valid|lag|last_value|lead|left|length|like_regexpr|locate_regexpr_after|locate_regexpr|locate|lower|lpad|ltrim|max|median|min|mod|monthname|ntile|occurrences_regexpr|over|product|rank|replace_regexpr|replace|rigth|round|row_number|rpad|rtrim|stddev|string_agg|substring_regexpr|substring|sum|tims_from_timn|tims_is_valid|tims_to_timn|to_blob|to_clob|tstmp_add_seconds|tstmp_current_utctimestamp|tstmp_is_valid|tstmp_seconds_between|tstmp_to_dats|tstmp_to_dst|tstmp_to_tims|tstmpl_from_utcl|tstmpl_to_utcl|unit_conversion|upper|utcl_add_seconds|utcl_current|utcl_seconds_between|uuid|var|weekday)(?=\\\\()","name":"entity.name.function.sql.abap"},"sql_types":{"match":"(?i)(?<=\\\\s)(char|clnt|cuky|curr|datn|dats|dec|decfloat16|decfloat34|fltp|int1|int2|int4|int8|lang|numc|quan|raw|sstring|timn|tims|unit|utclong)(?=[()\\\\s])","name":"entity.name.type.sql.abap"},"system_fields":{"captures":{"1":{"name":"variable.language.abap"},"2":{"name":"variable.language.abap"}},"match":"(?i)\\\\b(sy)-(abcde|batch|binpt|calld|callr|colno|cpage|cprog|cucol|curow|datar|datlo|datum|dayst|dbcnt|dbnam|dbsysc|dyngr|dynnr|fdayw|fdpos|host|index|langu|ldbpg|lilli|linct|linno|linsz|lisel|listi|loopc|lsind|macol|mandt|marow|modno|msgid|msgli|msgno|msgty|msgv[1-4]|opsysc|pagno|pfkey|repid|saprl|scols|slset|spono|srows|staco|staro|stepl|subrc|sysid|tabix|tcode|tfill|timlo|title|tleng|tvar[0-9]|tzone|ucomm|uline|uname|uzeit|vline|wtitl|zonlo)(?=[.\\\\s])"},"text_symbols":{"captures":{"1":{"name":"keyword.control.simple.abap"},"2":{"name":"constant.numeric.abap"}},"match":"(?i)(?<=^|\\\\s)(text)-([0-9A-Z]{1,3})(?=[,.:\\\\s])"}},"scopeName":"source.abap"}')),a=[e];export{a as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=Object.freeze(JSON.parse('{"displayName":"ABAP","fileTypes":["abap","ABAP"],"foldingStartMarker":"/\\\\*\\\\*|\\\\{\\\\s*$","foldingStopMarker":"\\\\*\\\\*/|^\\\\s*}","name":"abap","patterns":[{"captures":{"1":{"name":"punctuation.definition.comment.abap"}},"match":"^\\\\*.*\\\\n?","name":"comment.line.full.abap"},{"captures":{"1":{"name":"punctuation.definition.comment.abap"}},"match":"\\".*\\\\n?","name":"comment.line.partial.abap"},{"match":"(?<!\\\\S)##.*?(?=([,.:\\\\s]))","name":"comment.line.pragma.abap"},{"match":"(?i)(?<=[-~\\\\s])(?<=[-=]>)([/_a-z][/-9_a-z]*)(?=\\\\s+(?:|[-*+/]|&&?)=\\\\s+)","name":"variable.other.abap"},{"match":"\\\\b[0-9]+(\\\\b|[,.])","name":"constant.numeric.abap"},{"match":"(?i)(^|\\\\s+)((P(?:UBLIC|RIVATE|ROTECTED))\\\\sSECTION)(?=\\\\s+|[.:])","name":"storage.modifier.class.abap"},{"begin":"(?<!\\\\\\\\)(\\\\|)(.*?)","beginCaptures":{"1":{"name":"constant.character.escape.abap"}},"end":"(?<!\\\\\\\\)(\\\\||(\\\\\\\\\\\\\\\\\\\\|))","endCaptures":{"1":{"name":"constant.character.escape.abap"}},"name":"string.interpolated.abap","patterns":[{"match":"(\\\\{ )|( })","name":"constant.character.escape"},{"match":"\\\\\\\\\\\\|","name":"constant.character.escape.abap"},{"match":"(?i)(?<=\\\\s)(align|alpha|case|country|currency|date|decimals|exponent|number|pad|sign|style|time|timestamp|timezone|width|xsd|zero)(?=\\\\s=)","name":"entity.name.property.stringtemplate.abap"},{"match":"(?i)(?<==\\\\s)(center|engineering|environment|in|iso|left|leftplus|leftspace|lower|no|out|raw|right|rightplus|rightspace|scale_preserving|scale_preserving_scientific|scientific|scientific_with_leading_zero|sign_as_postfix|simple|space|upper|user|yes)(?=\\\\s)","name":"entity.value.property.stringtemplate.abap"}]},{"begin":"\'","end":"\'","name":"string.quoted.single.abap","patterns":[{"match":"\'\'","name":"constant.character.escape.abap"}]},{"begin":"`","end":"`","name":"string.quoted.single.abap","patterns":[{"match":"``","name":"constant.character.escape.abap"}]},{"begin":"(?i)^\\\\s*(class)\\\\s([/_a-z][/-9_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.block.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","name":"meta.block.begin.implementation.abap","patterns":[{"match":"(?i)(^|\\\\s+)(definition|implementation|public|inheriting\\\\s+from|final|deferred|abstract|shared\\\\s+memory\\\\s+enabled|(global|local)*\\\\s*friends|(create\\\\s+(p(?:ublic|rotected|rivate)))|for\\\\s+behavior\\\\s+of|for\\\\s+testing|risk\\\\s+level\\\\s+(critical|dangerous|harmless))|duration\\\\s(short|medium|long)(?=\\\\s+|\\\\.)","name":"storage.modifier.class.abap"},{"begin":"(?=[A-Z_a-z][0-9A-Z_a-z]*)","contentName":"entity.name.type.block.abap","end":"(?![0-9A-Z_a-z])","patterns":[{"include":"#generic_names"}]}]},{"begin":"(?i)^\\\\s*(method)\\\\s(?:([/_a-z][/-9_a-z]*)~)?([/_a-z][/-9_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.abap"},"3":{"name":"entity.name.function.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","patterns":[{"match":"(?i)(?<=^|\\\\s)(BY(?:\\\\s+DATABASE(\\\\s+PROCEDURE|\\\\s+FUNCTION|\\\\s+GRAPH\\\\s+WORKSPACE)|\\\\s+KERNEL\\\\s+MODULE))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"match":"(?i)(?<=^|\\\\s)(FOR\\\\s+(HDB|LLANG))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"match":"(?i)(?<=\\\\s)(OPTIONS\\\\s+(READ-ONLY|DETERMINISTIC|SUPPRESS\\\\s+SYNTAX\\\\s+ERRORS))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"match":"(?i)(?<=^|\\\\s)(LANGUAGE\\\\s+(SQLSCRIPT|SQL|GRAPH))(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"},{"captures":{"1":{"name":"storage.modifier.method.abap"}},"match":"(?i)(?<=\\\\s)(USING)\\\\s+([/_a-z][/-9=>_a-z]*)+(?=\\\\s+|\\\\.)"},{"begin":"(?=[A-Z_a-z][0-9A-Z_a-z]*)","end":"(?![0-9A-Z_a-z])","patterns":[{"include":"#generic_names"}]}]},{"begin":"(?i)^\\\\s*(INTERFACE)\\\\s([/_a-z][/-9_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","patterns":[{"match":"(?i)(?<=^|\\\\s)(DEFERRED|PUBLIC)(?=\\\\s+|\\\\.)","name":"storage.modifier.method.abap"}]},{"begin":"(?i)^\\\\s*(FORM)\\\\s([/_a-z][-/-9?_a-z]*)","beginCaptures":{"1":{"name":"storage.type.block.abap"},"2":{"name":"entity.name.type.abap"}},"end":"\\\\s*\\\\.\\\\s*\\\\n?","patterns":[{"match":"(?i)(?<=^|\\\\s)(USING|TABLES|CHANGING|RAISING|IMPLEMENTATION|DEFINITION)(?=\\\\s+|\\\\.)","name":"storage.modifier.form.abap"},{"include":"#abaptypes"},{"include":"#keywords_followed_by_braces"}]},{"match":"(?i)(end(?:class|method|form|interface))","name":"storage.type.block.end.abap"},{"match":"(?i)(<[A-Z_a-z][0-9A-Z_a-z]*>)","name":"variable.other.field.symbol.abap"},{"include":"#keywords"},{"include":"#abap_constants"},{"include":"#reserved_names"},{"include":"#operators"},{"include":"#builtin_functions"},{"include":"#abaptypes"},{"include":"#system_fields"},{"include":"#sql_functions"},{"include":"#sql_types"}],"repository":{"abap_constants":{"match":"(?i)(?<=\\\\s)(initial|null|@?space|@?abap_true|@?abap_false|@?abap_undefined|table_line|%_final|%_hints|%_predefined|col_background|col_group|col_heading|col_key|col_negative|col_normal|col_positive|col_total|adabas|as400|db2|db6|hdb|oracle|sybase|mssqlnt|pos_low|pos_high)(?=[,.\\\\s])","name":"constant.language.abap"},"abaptypes":{"patterns":[{"match":"(?i)\\\\s(abap_bool|string|xstring|any|clike|csequence|numeric|xsequence|decfloat|decfloat16|decfloat34|utclong|simple|int8|[cdfinptx])(?=[,.\\\\s])","name":"support.type.abap"},{"match":"(?i)\\\\s(TYPE|REF|TO|LIKE|LINE|OF|STRUCTURE|STANDARD|SORTED|HASHED|INDEX|TABLE|WITH|UNIQUE|NON-UNIQUE|SECONDARY|DEFAULT|KEY)(?=[,.\\\\s])","name":"keyword.control.simple.abap"}]},"arithmetic_operator":{"match":"(?i)(?<=\\\\s)([-*+]|\\\\*\\\\*|[%/]|DIV|MOD|BIT-AND|BIT-OR|BIT-XOR|BIT-NOT)(?=\\\\s)","name":"keyword.control.simple.abap"},"builtin_functions":{"match":"(?i)(?<=\\\\s)(abs|sign|ceil|floor|trunc|frac|acos|asin|atan|cos|sin|tan|cosh|sinh|tanh|exp|log|log10|sqrt|strlen|xstrlen|charlen|lines|numofchar|dbmaxlen|round|rescale|nmax|nmin|cmax|cmin|boolc|boolx|xsdbool|contains|contains_any_of|contains_any_not_of|matches|line_exists|ipow|char_off|count|count_any_of|count_any_not_of|distance|condense|concat_lines_of|escape|find|find_end|find_any_of|find_any_not_of|insert|match|repeat|replace|reverse|segment|shift_left|shift_right|substring|substring_after|substring_from|substring_before|substring_to|to_upper|to_lower|to_mixed|from_mixed|translate|bit-set|line_index)(?=\\\\()","name":"entity.name.function.builtin.abap"},"comparison_operator":{"match":"(?i)(?<=\\\\s)([<>]|<=|>=|=|<>|eq|ne|lt|le|gt|ge|cs|cp|co|cn|ca|na|ns|np|byte-co|byte-cn|byte-ca|byte-na|byte-cs|byte-ns|[moz])(?=\\\\s)","name":"keyword.control.simple.abap"},"control_keywords":{"match":"(?i)(^|\\\\s)(at|case|catch|continue|do|elseif|else|endat|endcase|endcatch|enddo|endif|endloop|endon|endtry|endwhile|if|loop|on|raise|try|while)(?=[.:\\\\s])","name":"keyword.control.flow.abap"},"generic_names":{"match":"[A-Z_a-z][0-9A-Z_a-z]*"},"keywords":{"patterns":[{"include":"#main_keywords"},{"include":"#text_symbols"},{"include":"#control_keywords"},{"include":"#keywords_followed_by_braces"}]},"keywords_followed_by_braces":{"captures":{"1":{"name":"keyword.control.simple.abap"},"2":{"name":"variable.other.abap"}},"match":"(?i)\\\\b(data|value|field-symbol|final|reference|resumable)\\\\((<?[/_a-z][/-9_a-z]*>?)\\\\)"},"logical_operator":{"match":"(?i)(?<=\\\\s)(not|or|and)(?=\\\\s)","name":"keyword.control.simple.abap"},"main_keywords":{"match":"(?i)(?<=^|\\\\s)(abap-source|abstract|accept|accepting|access|according|action|activation|actual|add|add-corresponding|adjacent|after|alias|aliases|all|allocate|amdp|analysis|analyzer|append|appending|application|archive|area|arithmetic|as|ascending|assert|assign|assigned|assigning|association|asynchronous|at|attributes|authority|authority-check|authorization|auto|back|background|backward|badi|base|before|begin|behavior|between|binary|bit|blanks??|blocks??|bound|boundaries|bounds|boxed|break|break-point|buffer|by|bypassing|byte|byte-order|call|calling|cast|casting|cds|centered|change|changing|channels|char-to-hex|character|check|checkbox|cid|circular|class|class-data|class-events|class-methods??|class-pool|cleanup|clear|clients??|clock|clone|close|cnt|code|collect|color|column|comments??|commit|common|communication|comparing|components??|compression|compute|concatenate|cond|condense|condition|connection|constants??|contexts??|controls??|conv|conversion|convert|copy|corresponding|count|country|cover|create|currency|current|cursor|customer-function|data|database|datainfo|dataset|date|daylight|ddl|deallocate|decimals|declarations|deep|default|deferred|define|delete|deleting|demand|descending|describe|destination|detail|determine|dialog|did|directory|discarding|display|display-mode|distance|distinct|divide|divide-corresponding|dummy|duplicates??|duration|during|dynpro|edit|editor-call|empty|enabled|enabling|encoding|end|end-enhancement-section|end-of-definition|end-of-page|end-of-selection|end-test-injection|end-test-seam|endenhancement|endexec|endfunction|endian|ending|endmodule|endprovide|endselect|endwith|enhancement|enhancement-point|enhancement-section|enhancements|entities|entity|entries|entry|enum|equiv|errors|escape|escaping|events??|exact|except|exception|exception-table|exceptions|excluding|exec|execute|exists|exit|exit-command|expanding|explicit|exponent|export|exporting|extended|extension|extract|fail|failed|features|fetch|field|field-groups|field-symbols|fields|file|fill|filters??|final|find|first|first-line|fixed-point|flush|following|for|format|forward|found|frames??|free|from|full|function|function-pool|generate|get|giving|graph|groups??|handler??|hashed|having|headers??|heading|help-id|help-request|hide|hint|hold|hotspot|icon|id|identification|identifier|ignore|ignoring|immediately|implemented|implicit|import|importing|in|inactive|incl|includes??|including|increment|index|index-line|indicators|infotypes|inheriting|init|initial|initialization|inner|input|insert|instances??|intensified|interface|interface-pool|interfaces|internal|intervals|into|inverse|inverted-date|is|job|join|keep|keeping|kernel|keys??|keywords|kind|language|last|late|layout|leading|leave|left|left-justified|legacy|length|let|levels??|like|line|line-count|line-selection|line-size|linefeed|lines|link|list|list-processing|listbox|load|load-of-program|locale??|locks??|log-point|logical|lower|mapped|mapping|margin|mark|mask|match|matchcode|maximum|members|memory|mesh|message|message-id|messages|messaging|methods??|mode|modif|modifier|modify|module|move|move-corresponding|multiply|multiply-corresponding|name|nametab|native|nested|nesting|new|new-line|new-page|new-section|next|no-display|no-extension|no-gaps??|no-grouping|no-heading|no-scrolling|no-sign|no-title|no-zero|nodes|non-unicode|non-unique|number|objects??|objmgr|obligatory|occurences??|occurrences??|occurs|of|offset|on|only|open|optional|options??|order|others|out|outer|output|output-length|overflow|overlay|pack|package|padding|page|parameter|parameter-table|parameters|part|partially|pcre|perform|performing|permissions|pf-status|places|pool|position|pragmas|preceding|precompiled|preferred|preserving|primary|print|print-control|private|privileged|procedure|process|program|property|protected|provide|push|pushbutton|put|query|queue-only|queueonly|quickinfo|radiobutton|raising|ranges??|read|read-only|received??|receiving|redefinition|reduce|ref|reference|refresh|regex|reject|renaming|replace|replacement|replacing|report|reported|request|requested|required|reserve|reset|resolution|respecting|response|restore|results??|resumable|resume|retry|return|returning|right|right-justified|rollback|rows|rp-provide-from-last|run|sap|sap-spool|save|saving|scan|screen|scroll|scroll-boundary|scrolling|search|seconds|section|select|select-options|selection|selection-screen|selection-sets??|selection-table|selections|send|separated??|session|set|shared|shift|shortdump|shortdump-id|sign|simple|simulation|single|size|skip|skipping|smart|some|sort|sortable|sorted|source|specified|split|spool|spots|sql|stable|stamp|standard|start-of-selection|starting|state|statements??|statics??|statusinfo|step|step-loop|stop|structures??|style|subkey|submatches|submit|subroutine|subscreen|substring|subtract|subtract-corresponding|suffix|sum|summary|supplied|supply|suppress|switch|symbol|syntax-check|syntax-trace|system-call|system-exceptions|tab|tabbed|tables??|tableview|tabstrip|target|tasks??|test|test-injection|test-seam|testing|text|textpool|then|throw|times??|title|titlebar|to|tokens|top-lines|top-of-page|trace-file|trace-table|trailing|transaction|transfer|transformation|translate|transporting|trmac|truncate|truncation|type|type-pools??|types|uline|unassign|unbounded|under|unicode|union|unique|unit|unix|unpack|until|unwind|up|update|upper|user|user-command|using|utf-8|uuid|valid|validate|value|value-request|values|vary|varying|version|via|visible|wait|when|where|windows??|with|with-heading|with-title|without|word|work|workspace|write|xml|zone)(?=[,.:\\\\s])","name":"keyword.control.simple.abap"},"operators":{"patterns":[{"include":"#other_operator"},{"include":"#arithmetic_operator"},{"include":"#comparison_operator"},{"include":"#logical_operator"}]},"other_operator":{"match":"(?<=\\\\s)(&&?|\\\\?=|\\\\+=|-=|/=|\\\\*=|&&=|&=)(?=\\\\s)","name":"keyword.control.simple.abap"},"reserved_names":{"match":"(?i)(?<=\\\\s)(me|super)(?=[,.\\\\s]|->)","name":"constant.language.abap"},"sql_functions":{"match":"(?i)(?<=\\\\s)(abap_system_timezone|abap_user_timezone|abs|add_days|add_months|allow_precision_loss|as_geo_json|avg|bintohex|cast|ceil|coalesce|concat_with_space|concat|corr_spearman|corr|count|currency_conversion|datn_add_days|datn_add_months|datn_days_between|dats_add_days|dats_add_months|dats_days_between|dats_from_datn|dats_is_valid|dats_tims_to_tstmp|dats_to_datn|dayname|days_between|dense_rank|division|div|extract_day|extract_hour|extract_minute|extract_month|extract_second|extract_year|first_value|floor|grouping|hextobin|initcap|instr|is_valid|lag|last_value|lead|left|length|like_regexpr|locate_regexpr_after|locate_regexpr|locate|lower|lpad|ltrim|max|median|min|mod|monthname|ntile|occurrences_regexpr|over|product|rank|replace_regexpr|replace|rigth|round|row_number|rpad|rtrim|stddev|string_agg|substring_regexpr|substring|sum|tims_from_timn|tims_is_valid|tims_to_timn|to_blob|to_clob|tstmp_add_seconds|tstmp_current_utctimestamp|tstmp_is_valid|tstmp_seconds_between|tstmp_to_dats|tstmp_to_dst|tstmp_to_tims|tstmpl_from_utcl|tstmpl_to_utcl|unit_conversion|upper|utcl_add_seconds|utcl_current|utcl_seconds_between|uuid|var|weekday)(?=\\\\()","name":"entity.name.function.sql.abap"},"sql_types":{"match":"(?i)(?<=\\\\s)(char|clnt|cuky|curr|datn|dats|dec|decfloat16|decfloat34|fltp|int1|int2|int4|int8|lang|numc|quan|raw|sstring|timn|tims|unit|utclong)(?=[()\\\\s])","name":"entity.name.type.sql.abap"},"system_fields":{"captures":{"1":{"name":"variable.language.abap"},"2":{"name":"variable.language.abap"}},"match":"(?i)\\\\b(sy)-(abcde|batch|binpt|calld|callr|colno|cpage|cprog|cucol|curow|datar|datlo|datum|dayst|dbcnt|dbnam|dbsysc|dyngr|dynnr|fdayw|fdpos|host|index|langu|ldbpg|lilli|linct|linno|linsz|lisel|listi|loopc|lsind|macol|mandt|marow|modno|msgid|msgli|msgno|msgty|msgv[1-4]|opsysc|pagno|pfkey|repid|saprl|scols|slset|spono|srows|staco|staro|stepl|subrc|sysid|tabix|tcode|tfill|timlo|title|tleng|tvar[0-9]|tzone|ucomm|uline|uname|uzeit|vline|wtitl|zonlo)(?=[.\\\\s])"},"text_symbols":{"captures":{"1":{"name":"keyword.control.simple.abap"},"2":{"name":"constant.numeric.abap"}},"match":"(?i)(?<=^|\\\\s)(text)-([0-9A-Z]{1,3})(?=[,.:\\\\s])"}},"scopeName":"source.abap"}'));var a=[e];export{a as default};
|