@hienlh/ppm 0.23.1 → 0.23.2
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/CHANGELOG.md +10 -0
- package/CLAUDE.md +1 -0
- package/assets/skills/ppm/SKILL.md +1 -1
- package/assets/skills/ppm/references/cli-reference.md +4 -4
- package/assets/skills/ppm/references/http-api.md +1 -1
- package/dist/web/assets/abap-DWbETETF.js.br +0 -0
- package/dist/web/assets/abap-DWbETETF.js.gz +0 -0
- package/dist/web/assets/accounts-settings-section-Cs7BC5O1.js +1 -0
- package/dist/web/assets/accounts-settings-section-Cs7BC5O1.js.br +0 -0
- package/dist/web/assets/accounts-settings-section-Cs7BC5O1.js.gz +0 -0
- package/dist/web/assets/actionscript-3-C278tgAF.js.br +0 -0
- package/dist/web/assets/actionscript-3-C278tgAF.js.gz +0 -0
- package/dist/web/assets/ada-C_5J29IC.js.br +0 -0
- package/dist/web/assets/ada-C_5J29IC.js.gz +0 -0
- package/dist/web/assets/{ai-resource-editor-BFVg2d2a.js → ai-resource-editor-TCREp5Ml.js} +1 -1
- package/dist/web/assets/ai-resource-editor-TCREp5Ml.js.br +0 -0
- package/dist/web/assets/ai-resource-editor-TCREp5Ml.js.gz +0 -0
- package/dist/web/assets/{ai-settings-section-BJw7E_lM.js → ai-settings-section-B7Un4KiW.js} +1 -1
- package/dist/web/assets/ai-settings-section-B7Un4KiW.js.br +0 -0
- package/dist/web/assets/ai-settings-section-B7Un4KiW.js.gz +0 -0
- package/dist/web/assets/{ai-settings-section-CO-i3ghA.js → ai-settings-section-BlKlcihJ.js} +1 -1
- package/dist/web/assets/andromeeda-Ct0fb9Zo.js.br +0 -0
- package/dist/web/assets/andromeeda-Ct0fb9Zo.js.gz +0 -0
- package/dist/web/assets/angular-html-D-rbk4zq.js.br +0 -0
- package/dist/web/assets/angular-html-D-rbk4zq.js.gz +0 -0
- package/dist/web/assets/angular-ts-B_ldKah2.js.br +0 -0
- package/dist/web/assets/angular-ts-B_ldKah2.js.gz +0 -0
- package/dist/web/assets/apache-oMwCqc2o.js.br +0 -0
- package/dist/web/assets/apache-oMwCqc2o.js.gz +0 -0
- package/dist/web/assets/apex-n6XQQudq.js.br +0 -0
- package/dist/web/assets/apex-n6XQQudq.js.gz +0 -0
- package/dist/web/assets/api-client-c8YOpTlT.js.br +0 -0
- package/dist/web/assets/api-client-c8YOpTlT.js.gz +0 -0
- package/dist/web/assets/api-settings-0s1Rfgcu.js.br +1 -0
- package/dist/web/assets/api-settings-0s1Rfgcu.js.gz +0 -0
- package/dist/web/assets/apl-19Dr02g6.js.br +0 -0
- package/dist/web/assets/apl-19Dr02g6.js.gz +0 -0
- package/dist/web/assets/{appearance-settings-section-Ck_FPs9g.js → appearance-settings-section-DACtiDor.js} +1 -1
- package/dist/web/assets/appearance-settings-section-DACtiDor.js.br +0 -0
- package/dist/web/assets/appearance-settings-section-DACtiDor.js.gz +0 -0
- package/dist/web/assets/applescript-QDMA6blY.js.br +0 -0
- package/dist/web/assets/applescript-QDMA6blY.js.gz +0 -0
- package/dist/web/assets/ara-D6rg_rTp.js.br +0 -0
- package/dist/web/assets/ara-D6rg_rTp.js.gz +0 -0
- package/dist/web/assets/asciidoc-DVeBWv0S.js.br +0 -0
- package/dist/web/assets/asciidoc-DVeBWv0S.js.gz +0 -0
- package/dist/web/assets/asm-DzHQzzqu.js.br +0 -0
- package/dist/web/assets/asm-DzHQzzqu.js.gz +0 -0
- package/dist/web/assets/astro-1q5o0N64.js.br +0 -0
- package/dist/web/assets/astro-1q5o0N64.js.gz +0 -0
- package/dist/web/assets/audio-preview-DXtE1Lpz.js.br +0 -0
- package/dist/web/assets/audio-preview-DXtE1Lpz.js.gz +0 -0
- package/dist/web/assets/aurora-x-pJESoXa6.js.br +0 -0
- package/dist/web/assets/aurora-x-pJESoXa6.js.gz +0 -0
- package/dist/web/assets/awk-BwfK4mzn.js.br +0 -0
- package/dist/web/assets/awk-BwfK4mzn.js.gz +0 -0
- package/dist/web/assets/ayu-dark-CG-9c7ej.js.br +0 -0
- package/dist/web/assets/ayu-dark-CG-9c7ej.js.gz +0 -0
- package/dist/web/assets/ayu-light-BGUfMG6m.js.br +0 -0
- package/dist/web/assets/ayu-light-BGUfMG6m.js.gz +0 -0
- package/dist/web/assets/ayu-mirage-CMD89qy6.js.br +0 -0
- package/dist/web/assets/ayu-mirage-CMD89qy6.js.gz +0 -0
- package/dist/web/assets/ballerina-CP5gYaiB.js.br +0 -0
- package/dist/web/assets/ballerina-CP5gYaiB.js.gz +0 -0
- package/dist/web/assets/bat-DCRdiK45.js.br +0 -0
- package/dist/web/assets/bat-DCRdiK45.js.gz +0 -0
- package/dist/web/assets/beancount-DHkDiOKO.js.br +0 -0
- package/dist/web/assets/beancount-DHkDiOKO.js.gz +0 -0
- package/dist/web/assets/berry-B6TPldKS.js.br +0 -0
- package/dist/web/assets/berry-B6TPldKS.js.gz +0 -0
- package/dist/web/assets/bibtex-DIor8yh9.js.br +0 -0
- package/dist/web/assets/bibtex-DIor8yh9.js.gz +0 -0
- package/dist/web/assets/bicep-BbIdLZZ_.js.br +0 -0
- package/dist/web/assets/bicep-BbIdLZZ_.js.gz +0 -0
- package/dist/web/assets/bird2-C76TmOG1.js.br +0 -0
- package/dist/web/assets/bird2-C76TmOG1.js.gz +0 -0
- package/dist/web/assets/blade-BNgXZCCk.js.br +0 -0
- package/dist/web/assets/blade-BNgXZCCk.js.gz +0 -0
- package/dist/web/assets/{branch-review-tab-CNVxMRuo.js → branch-review-tab-vHJuFXtB.js} +1 -1
- package/dist/web/assets/branch-review-tab-vHJuFXtB.js.br +0 -0
- package/dist/web/assets/branch-review-tab-vHJuFXtB.js.gz +0 -0
- package/dist/web/assets/bsl-C5u8-gEq.js.br +0 -0
- package/dist/web/assets/bsl-C5u8-gEq.js.gz +0 -0
- package/dist/web/assets/button-CBehaXpV.js.br +0 -0
- package/dist/web/assets/button-CBehaXpV.js.gz +0 -0
- package/dist/web/assets/c-Dko4ZphN.js.br +0 -0
- package/dist/web/assets/c-Dko4ZphN.js.gz +0 -0
- package/dist/web/assets/c3-CqZ77xXr.js.br +0 -0
- package/dist/web/assets/c3-CqZ77xXr.js.gz +0 -0
- package/dist/web/assets/cadence-BlaAb6F6.js.br +0 -0
- package/dist/web/assets/cadence-BlaAb6F6.js.gz +0 -0
- package/dist/web/assets/cairo-CrhmfCJH.js.br +0 -0
- package/dist/web/assets/cairo-CrhmfCJH.js.gz +0 -0
- package/dist/web/assets/can-open-in-ppm-D8T6Xca-.js.br +0 -0
- package/dist/web/assets/can-open-in-ppm-D8T6Xca-.js.gz +0 -0
- package/dist/web/assets/catppuccin-frappe-BuV7Zg67.js.br +0 -0
- package/dist/web/assets/catppuccin-frappe-BuV7Zg67.js.gz +0 -0
- package/dist/web/assets/catppuccin-latte-B7HXEZf7.js.br +0 -0
- package/dist/web/assets/catppuccin-latte-B7HXEZf7.js.gz +0 -0
- package/dist/web/assets/catppuccin-macchiato-B0KctcoC.js.br +0 -0
- package/dist/web/assets/catppuccin-macchiato-B0KctcoC.js.gz +0 -0
- package/dist/web/assets/catppuccin-mocha-Bofr5rzo.js.br +0 -0
- package/dist/web/assets/catppuccin-mocha-Bofr5rzo.js.gz +0 -0
- package/dist/web/assets/{chat-tab-DqLqcBci.js → chat-tab-Ba3NvUgt.js} +1 -1
- package/dist/web/assets/chat-tab-Ba3NvUgt.js.br +0 -0
- package/dist/web/assets/chat-tab-Ba3NvUgt.js.gz +0 -0
- package/dist/web/assets/chat-tab-DeISufm0.js +15 -0
- package/dist/web/assets/chat-tab-DeISufm0.js.br +0 -0
- package/dist/web/assets/chat-tab-DeISufm0.js.gz +0 -0
- package/dist/web/assets/clarity-CerfZ3dW.js.br +0 -0
- package/dist/web/assets/clarity-CerfZ3dW.js.gz +0 -0
- package/dist/web/assets/clojure-BCEG1uj6.js.br +0 -0
- package/dist/web/assets/clojure-BCEG1uj6.js.gz +0 -0
- package/dist/web/assets/cmake-CRxSSKSr.js.br +0 -0
- package/dist/web/assets/cmake-CRxSSKSr.js.gz +0 -0
- package/dist/web/assets/cobol-BgRxrYyZ.js.br +0 -0
- package/dist/web/assets/cobol-BgRxrYyZ.js.gz +0 -0
- package/dist/web/assets/{code-editor-wEeCvvMR.js → code-editor-BCwiLVyc.js} +3 -3
- package/dist/web/assets/code-editor-BCwiLVyc.js.br +0 -0
- package/dist/web/assets/code-editor-BCwiLVyc.js.gz +0 -0
- package/dist/web/assets/codeql-DlnOpgWF.js.br +0 -0
- package/dist/web/assets/codeql-DlnOpgWF.js.gz +0 -0
- package/dist/web/assets/codex-sign-in-again-dialog-DcIOYhAe.js +1 -0
- package/dist/web/assets/codex-sign-in-again-dialog-DcIOYhAe.js.br +0 -0
- package/dist/web/assets/codex-sign-in-again-dialog-DcIOYhAe.js.gz +0 -0
- package/dist/web/assets/coffee-9hmEOIYs.js.br +0 -0
- package/dist/web/assets/coffee-9hmEOIYs.js.gz +0 -0
- package/dist/web/assets/common-lisp-DgIX9jkq.js.br +0 -0
- package/dist/web/assets/common-lisp-DgIX9jkq.js.gz +0 -0
- package/dist/web/assets/{conflict-editor-Cu-z_LdX.js → conflict-editor-0YEDQ--c.js} +1 -1
- package/dist/web/assets/conflict-editor-0YEDQ--c.js.br +0 -0
- package/dist/web/assets/conflict-editor-0YEDQ--c.js.gz +0 -0
- package/dist/web/assets/context-menu-CjYTq8DI.js.br +0 -0
- package/dist/web/assets/context-menu-CjYTq8DI.js.gz +0 -0
- package/dist/web/assets/coq-CFeLOER-.js.br +0 -0
- package/dist/web/assets/coq-CFeLOER-.js.gz +0 -0
- package/dist/web/assets/cpp-BntsLe3X.js.br +0 -0
- package/dist/web/assets/cpp-BntsLe3X.js.gz +0 -0
- package/dist/web/assets/createLucideIcon-DBXq3G0e.js.br +0 -0
- package/dist/web/assets/createLucideIcon-DBXq3G0e.js.gz +0 -0
- package/dist/web/assets/crystal-CoXN2Gj8.js.br +0 -0
- package/dist/web/assets/crystal-CoXN2Gj8.js.gz +0 -0
- package/dist/web/assets/csharp-BGFGcV8G.js.br +0 -0
- package/dist/web/assets/csharp-BGFGcV8G.js.gz +0 -0
- package/dist/web/assets/css-DKuKlxIj.js.br +0 -0
- package/dist/web/assets/css-DKuKlxIj.js.gz +0 -0
- package/dist/web/assets/csv-Cx126-fo.js.br +0 -0
- package/dist/web/assets/csv-Cx126-fo.js.gz +0 -0
- package/dist/web/assets/csv-parser-BXeH-yzY.js.br +0 -0
- package/dist/web/assets/csv-parser-BXeH-yzY.js.gz +0 -0
- package/dist/web/assets/{csv-preview-DHbBIqUu.js → csv-preview-CYxznB1I.js} +1 -1
- package/dist/web/assets/csv-preview-CYxznB1I.js.br +0 -0
- package/dist/web/assets/csv-preview-CYxznB1I.js.gz +0 -0
- package/dist/web/assets/cue-Cd0PEGFL.js.br +0 -0
- package/dist/web/assets/cue-Cd0PEGFL.js.gz +0 -0
- package/dist/web/assets/cypher-QS9S-1Nu.js.br +0 -0
- package/dist/web/assets/cypher-QS9S-1Nu.js.gz +0 -0
- package/dist/web/assets/d-Bx6zK6J7.js.br +0 -0
- package/dist/web/assets/d-Bx6zK6J7.js.gz +0 -0
- package/dist/web/assets/dark-plus-DLqXEd2I.js.br +0 -0
- package/dist/web/assets/dark-plus-DLqXEd2I.js.gz +0 -0
- package/dist/web/assets/dart-BL2C2Z6E.js.br +0 -0
- package/dist/web/assets/dart-BL2C2Z6E.js.gz +0 -0
- package/dist/web/assets/data-grid-overlay-editor-2ERlh7_N.js.br +0 -0
- package/dist/web/assets/data-grid-overlay-editor-2ERlh7_N.js.gz +0 -0
- package/dist/web/assets/data-grid-types-DatI2Wee.js.br +0 -0
- package/dist/web/assets/data-grid-types-DatI2Wee.js.gz +0 -0
- package/dist/web/assets/{database-viewer-_McYjRzc.js → database-viewer-eP3gCxGb.js} +1 -1
- package/dist/web/assets/database-viewer-eP3gCxGb.js.br +0 -0
- package/dist/web/assets/database-viewer-eP3gCxGb.js.gz +0 -0
- package/dist/web/assets/dax-ClxUDxvY.js.br +0 -0
- package/dist/web/assets/dax-ClxUDxvY.js.gz +0 -0
- package/dist/web/assets/design-export-client-SWCbGwwU.js.br +0 -0
- package/dist/web/assets/design-export-client-SWCbGwwU.js.gz +0 -0
- package/dist/web/assets/design-responsive-dialog-CcJETHO2.js.br +0 -0
- package/dist/web/assets/design-responsive-dialog-CcJETHO2.js.gz +0 -0
- package/dist/web/assets/{design-tab-C0TUD5g-.js → design-tab-B7aVMMfj.js} +1 -1
- package/dist/web/assets/design-tab-B7aVMMfj.js.br +0 -0
- package/dist/web/assets/design-tab-B7aVMMfj.js.gz +0 -0
- package/dist/web/assets/{designs-sidebar-panel-XCAwSNtg.js → designs-sidebar-panel-8KI79o1u.js} +1 -1
- package/dist/web/assets/designs-sidebar-panel-8KI79o1u.js.br +0 -0
- package/dist/web/assets/designs-sidebar-panel-8KI79o1u.js.gz +0 -0
- package/dist/web/assets/desktop-DLEkw1UR.js.br +0 -0
- package/dist/web/assets/desktop-DLEkw1UR.js.gz +0 -0
- package/dist/web/assets/dialog-tzBRkGeW.js.br +0 -0
- package/dist/web/assets/dialog-tzBRkGeW.js.gz +0 -0
- package/dist/web/assets/diff-Dlp9KQSL.js.br +0 -0
- package/dist/web/assets/diff-Dlp9KQSL.js.gz +0 -0
- package/dist/web/assets/{diff-viewer-C4z-_68x.js → diff-viewer-B_K7VQup.js} +1 -1
- package/dist/web/assets/diff-viewer-B_K7VQup.js.br +0 -0
- package/dist/web/assets/diff-viewer-B_K7VQup.js.gz +0 -0
- package/dist/web/assets/dist-CDpxSUMU.js.br +0 -0
- package/dist/web/assets/dist-CDpxSUMU.js.gz +0 -0
- package/dist/web/assets/dist-CgtN5c7X.js.br +0 -0
- package/dist/web/assets/dist-CgtN5c7X.js.gz +0 -0
- package/dist/web/assets/dist-wmDsBD_Z.js.br +0 -0
- package/dist/web/assets/dist-wmDsBD_Z.js.gz +0 -0
- package/dist/web/assets/docker-DVBsQYb-.js.br +0 -0
- package/dist/web/assets/docker-DVBsQYb-.js.gz +0 -0
- package/dist/web/assets/docx-preview-C-UKGMXR.js.br +0 -0
- package/dist/web/assets/docx-preview-C-UKGMXR.js.gz +0 -0
- package/dist/web/assets/dotenv-DjBB7S8B.js.br +0 -0
- package/dist/web/assets/dotenv-DjBB7S8B.js.gz +0 -0
- package/dist/web/assets/dracula-Cu055q9D.js.br +0 -0
- package/dist/web/assets/dracula-Cu055q9D.js.gz +0 -0
- package/dist/web/assets/dracula-soft-BiX_luwV.js.br +0 -0
- package/dist/web/assets/dracula-soft-BiX_luwV.js.gz +0 -0
- package/dist/web/assets/dream-maker-S6ie6kFg.js.br +0 -0
- package/dist/web/assets/dream-maker-S6ie6kFg.js.gz +0 -0
- package/dist/web/assets/edge-gf7weBFr.js.br +0 -0
- package/dist/web/assets/edge-gf7weBFr.js.gz +0 -0
- package/dist/web/assets/edit-diff-preview-8nIct7kS.js.br +0 -0
- package/dist/web/assets/edit-diff-preview-8nIct7kS.js.gz +0 -0
- package/dist/web/assets/{editor-language-service-D8hW_eew.js → editor-language-service-DYBxZX66.js} +1 -1
- package/dist/web/assets/editor-language-service-DYBxZX66.js.br +0 -0
- package/dist/web/assets/editor-language-service-DYBxZX66.js.gz +0 -0
- package/dist/web/assets/elixir-DOEwBYus.js.br +0 -0
- package/dist/web/assets/elixir-DOEwBYus.js.gz +0 -0
- package/dist/web/assets/elm-7yx1A5qt.js.br +0 -0
- package/dist/web/assets/elm-7yx1A5qt.js.gz +0 -0
- package/dist/web/assets/emacs-lisp-DpOda430.js.br +0 -0
- package/dist/web/assets/emacs-lisp-DpOda430.js.gz +0 -0
- package/dist/web/assets/erb-Bm_J_rBw.js.br +0 -0
- package/dist/web/assets/erb-Bm_J_rBw.js.gz +0 -0
- package/dist/web/assets/erlang-DgkAVj5y.js.br +0 -0
- package/dist/web/assets/erlang-DgkAVj5y.js.gz +0 -0
- package/dist/web/assets/esm-wquH4IhX.js.br +0 -0
- package/dist/web/assets/esm-wquH4IhX.js.gz +0 -0
- package/dist/web/assets/everforest-dark-BAfSXdLG.js.br +0 -0
- package/dist/web/assets/everforest-dark-BAfSXdLG.js.gz +0 -0
- package/dist/web/assets/everforest-light-Dp59kp4R.js.br +0 -0
- package/dist/web/assets/everforest-light-Dp59kp4R.js.gz +0 -0
- package/dist/web/assets/{explorer-body-CdxolRQG.js → explorer-body-C0syNltJ.js} +1 -1
- package/dist/web/assets/explorer-body-C0syNltJ.js.br +0 -0
- package/dist/web/assets/explorer-body-C0syNltJ.js.gz +0 -0
- package/dist/web/assets/{explorer-window-content-D1fkI_cL.js → explorer-window-content-CfIomwTq.js} +1 -1
- package/dist/web/assets/explorer-window-content-CfIomwTq.js.br +0 -0
- package/dist/web/assets/explorer-window-content-CfIomwTq.js.gz +0 -0
- package/dist/web/assets/{extension-manager-section-CAaSoAuG.js → extension-manager-section-CL7pl3re.js} +1 -1
- package/dist/web/assets/extension-manager-section-CL7pl3re.js.br +0 -0
- package/dist/web/assets/extension-manager-section-CL7pl3re.js.gz +0 -0
- package/dist/web/assets/{extension-webview-DmBZun_i.js → extension-webview-FHTB0jh1.js} +1 -1
- package/dist/web/assets/extension-webview-FHTB0jh1.js.br +0 -0
- package/dist/web/assets/extension-webview-FHTB0jh1.js.gz +0 -0
- package/dist/web/assets/fennel-CNaNUmMo.js.br +0 -0
- package/dist/web/assets/fennel-CNaNUmMo.js.gz +0 -0
- package/dist/web/assets/file-icons-BlOxPo3P.js.br +0 -0
- package/dist/web/assets/file-icons-BlOxPo3P.js.gz +0 -0
- package/dist/web/assets/file-icons.generated-BtBErEwb.css.br +0 -0
- package/dist/web/assets/file-icons.generated-BtBErEwb.css.gz +0 -0
- package/dist/web/assets/file-store-CTlJqj2m.js.br +0 -0
- package/dist/web/assets/file-store-CTlJqj2m.js.gz +0 -0
- package/dist/web/assets/{files-settings-section-BFIzSuBh.js → files-settings-section-C574RfCl.js} +1 -1
- package/dist/web/assets/files-settings-section-C574RfCl.js.br +0 -0
- package/dist/web/assets/files-settings-section-C574RfCl.js.gz +0 -0
- package/dist/web/assets/fish-C8Z04ic7.js.br +0 -0
- package/dist/web/assets/fish-C8Z04ic7.js.gz +0 -0
- package/dist/web/assets/fluent-Bugk01mf.js.br +0 -0
- package/dist/web/assets/fluent-Bugk01mf.js.gz +0 -0
- package/dist/web/assets/format-file-meta-DLaHgkdx.js.br +0 -0
- package/dist/web/assets/format-file-meta-DLaHgkdx.js.gz +0 -0
- package/dist/web/assets/fortran-fixed-form-s8lQifxM.js.br +0 -0
- package/dist/web/assets/fortran-fixed-form-s8lQifxM.js.gz +0 -0
- package/dist/web/assets/fortran-free-form-csIz6MQj.js.br +0 -0
- package/dist/web/assets/fortran-free-form-csIz6MQj.js.gz +0 -0
- package/dist/web/assets/fs-api-RVc5RtTA.js.br +0 -0
- package/dist/web/assets/fs-api-RVc5RtTA.js.gz +0 -0
- package/dist/web/assets/fsharp-D6bmDjka.js.br +0 -0
- package/dist/web/assets/fsharp-D6bmDjka.js.gz +0 -0
- package/dist/web/assets/gdresource-wPII3GWW.js.br +0 -0
- package/dist/web/assets/gdresource-wPII3GWW.js.gz +0 -0
- package/dist/web/assets/gdscript-fdzYQLfk.js.br +0 -0
- package/dist/web/assets/gdscript-fdzYQLfk.js.gz +0 -0
- package/dist/web/assets/gdshader-CfsEtDeZ.js.br +0 -0
- package/dist/web/assets/gdshader-CfsEtDeZ.js.gz +0 -0
- package/dist/web/assets/{general-settings-section-BLLUvdhX.js → general-settings-section--DSUTrEP.js} +1 -1
- package/dist/web/assets/general-settings-section--DSUTrEP.js.br +0 -0
- package/dist/web/assets/general-settings-section--DSUTrEP.js.gz +0 -0
- package/dist/web/assets/genie-CtHN5N2Q.js.br +0 -0
- package/dist/web/assets/genie-CtHN5N2Q.js.gz +0 -0
- package/dist/web/assets/gherkin-gSp2ZJTf.js.br +0 -0
- package/dist/web/assets/gherkin-gSp2ZJTf.js.gz +0 -0
- package/dist/web/assets/git-commit-DqLhxK6K.js.br +0 -0
- package/dist/web/assets/git-commit-DqLhxK6K.js.gz +0 -0
- package/dist/web/assets/{git-log-panel-Lq2Vkm8w.js → git-log-panel-BzwEbRwN.js} +1 -1
- package/dist/web/assets/git-log-panel-BzwEbRwN.js.br +0 -0
- package/dist/web/assets/git-log-panel-BzwEbRwN.js.gz +0 -0
- package/dist/web/assets/git-repo-store-DFTJ5ngK.js.br +0 -0
- package/dist/web/assets/git-repo-store-DFTJ5ngK.js.gz +0 -0
- package/dist/web/assets/github-dark-D7O9efii.js.br +0 -0
- package/dist/web/assets/github-dark-D7O9efii.js.gz +0 -0
- package/dist/web/assets/github-dark-default-Bv2wIhqD.js.br +0 -0
- package/dist/web/assets/github-dark-default-Bv2wIhqD.js.gz +0 -0
- package/dist/web/assets/github-dark-dimmed-BuY_SpCX.js.br +0 -0
- package/dist/web/assets/github-dark-dimmed-BuY_SpCX.js.gz +0 -0
- package/dist/web/assets/github-dark-high-contrast-Chv0f5Wu.js.br +0 -0
- package/dist/web/assets/github-dark-high-contrast-Chv0f5Wu.js.gz +0 -0
- package/dist/web/assets/github-light-DV8f-W2f.js.br +0 -0
- package/dist/web/assets/github-light-DV8f-W2f.js.gz +0 -0
- package/dist/web/assets/github-light-default-CNBSU3dB.js.br +0 -0
- package/dist/web/assets/github-light-default-CNBSU3dB.js.gz +0 -0
- package/dist/web/assets/github-light-high-contrast-sg94tHwU.js.br +0 -0
- package/dist/web/assets/github-light-high-contrast-sg94tHwU.js.gz +0 -0
- package/dist/web/assets/gleam-w7270-PJ.js.br +0 -0
- package/dist/web/assets/gleam-w7270-PJ.js.gz +0 -0
- package/dist/web/assets/{glide-data-grid-CHdKFqis.js → glide-data-grid-CUNWBFfN.js} +1 -1
- package/dist/web/assets/glide-data-grid-CUNWBFfN.js.br +0 -0
- package/dist/web/assets/glide-data-grid-CUNWBFfN.js.gz +0 -0
- package/dist/web/assets/glide-data-grid-nthEL3fk.css.br +0 -0
- package/dist/web/assets/glide-data-grid-nthEL3fk.css.gz +0 -0
- package/dist/web/assets/glimmer-js-CmHFqq4N.js.br +0 -0
- package/dist/web/assets/glimmer-js-CmHFqq4N.js.gz +0 -0
- package/dist/web/assets/glimmer-ts-vLmZC1JJ.js.br +0 -0
- package/dist/web/assets/glimmer-ts-vLmZC1JJ.js.gz +0 -0
- package/dist/web/assets/glsl-DArPh0ws.js.br +0 -0
- package/dist/web/assets/glsl-DArPh0ws.js.gz +0 -0
- package/dist/web/assets/gn-yo_iE_A_.js.br +0 -0
- package/dist/web/assets/gn-yo_iE_A_.js.gz +0 -0
- package/dist/web/assets/gnuplot-DSBPrzl4.js.br +0 -0
- package/dist/web/assets/gnuplot-DSBPrzl4.js.gz +0 -0
- package/dist/web/assets/go-D1S7g97D.js.br +0 -0
- package/dist/web/assets/go-D1S7g97D.js.gz +0 -0
- package/dist/web/assets/graphql-B-_Ilekp.js.br +0 -0
- package/dist/web/assets/graphql-B-_Ilekp.js.gz +0 -0
- package/dist/web/assets/groovy-C7xW-5IV.js.br +0 -0
- package/dist/web/assets/groovy-C7xW-5IV.js.gz +0 -0
- package/dist/web/assets/{group-chat-tab-D2bluLme.js → group-chat-tab-Dp1p4Jdu.js} +1 -1
- package/dist/web/assets/group-chat-tab-Dp1p4Jdu.js.br +0 -0
- package/dist/web/assets/group-chat-tab-Dp1p4Jdu.js.gz +0 -0
- package/dist/web/assets/gruvbox-dark-hard-BZald7Z_.js.br +0 -0
- package/dist/web/assets/gruvbox-dark-hard-BZald7Z_.js.gz +0 -0
- package/dist/web/assets/gruvbox-dark-medium-v6W4PZne.js.br +0 -0
- package/dist/web/assets/gruvbox-dark-medium-v6W4PZne.js.gz +0 -0
- package/dist/web/assets/gruvbox-dark-soft-CN5mIGkw.js.br +0 -0
- package/dist/web/assets/gruvbox-dark-soft-CN5mIGkw.js.gz +0 -0
- package/dist/web/assets/gruvbox-light-hard-D3NIGRxd.js.br +0 -0
- package/dist/web/assets/gruvbox-light-hard-D3NIGRxd.js.gz +0 -0
- package/dist/web/assets/gruvbox-light-medium-m4ShuCnD.js.br +0 -0
- package/dist/web/assets/gruvbox-light-medium-m4ShuCnD.js.gz +0 -0
- package/dist/web/assets/gruvbox-light-soft-BEEYNyk-.js.br +0 -0
- package/dist/web/assets/gruvbox-light-soft-BEEYNyk-.js.gz +0 -0
- package/dist/web/assets/hack-4KVRpwwM.js.br +0 -0
- package/dist/web/assets/hack-4KVRpwwM.js.gz +0 -0
- package/dist/web/assets/haml-DoK94C5G.js.br +0 -0
- package/dist/web/assets/haml-DoK94C5G.js.gz +0 -0
- package/dist/web/assets/handlebars-D0_6yNlK.js.br +0 -0
- package/dist/web/assets/handlebars-D0_6yNlK.js.gz +0 -0
- package/dist/web/assets/haskell-CgtdXIH3.js.br +0 -0
- package/dist/web/assets/haskell-CgtdXIH3.js.gz +0 -0
- package/dist/web/assets/haxe-D7HQqtIx.js.br +0 -0
- package/dist/web/assets/haxe-D7HQqtIx.js.gz +0 -0
- package/dist/web/assets/hcl-C-YHDaXH.js.br +0 -0
- package/dist/web/assets/hcl-C-YHDaXH.js.gz +0 -0
- package/dist/web/assets/hjson-BrgEMvJK.js.br +0 -0
- package/dist/web/assets/hjson-BrgEMvJK.js.gz +0 -0
- package/dist/web/assets/hlsl-BsDumu1j.js.br +0 -0
- package/dist/web/assets/hlsl-BsDumu1j.js.gz +0 -0
- package/dist/web/assets/horizon-D9Kre3KQ.js.br +0 -0
- package/dist/web/assets/horizon-D9Kre3KQ.js.gz +0 -0
- package/dist/web/assets/horizon-bright-DJq8c_Yq.js.br +0 -0
- package/dist/web/assets/horizon-bright-DJq8c_Yq.js.gz +0 -0
- package/dist/web/assets/houston-B9tnxzX8.js.br +0 -0
- package/dist/web/assets/houston-B9tnxzX8.js.gz +0 -0
- package/dist/web/assets/html-BOqZwhzR.js.br +0 -0
- package/dist/web/assets/html-BOqZwhzR.js.gz +0 -0
- package/dist/web/assets/http-B6pQhqN4.js.br +0 -0
- package/dist/web/assets/http-B6pQhqN4.js.gz +0 -0
- package/dist/web/assets/hurl-BjW79rql.js.br +0 -0
- package/dist/web/assets/hurl-BjW79rql.js.gz +0 -0
- package/dist/web/assets/hxml-B1Yl76u6.js.br +0 -0
- package/dist/web/assets/hxml-B1Yl76u6.js.gz +0 -0
- package/dist/web/assets/hy-DUYVvXOj.js.br +0 -0
- package/dist/web/assets/hy-DUYVvXOj.js.gz +0 -0
- package/dist/web/assets/icons-CO_II6D-.js.br +0 -0
- package/dist/web/assets/icons-CO_II6D-.js.gz +0 -0
- package/dist/web/assets/imba-CGW-TsRm.js.br +0 -0
- package/dist/web/assets/imba-CGW-TsRm.js.gz +0 -0
- package/dist/web/assets/{index-DSbUqWiH.js → index-CvUGUp7d.js} +5 -5
- package/dist/web/assets/index-CvUGUp7d.js.br +0 -0
- package/dist/web/assets/index-CvUGUp7d.js.gz +0 -0
- package/dist/web/assets/index-DMA-So69.css +1 -0
- package/dist/web/assets/index-DMA-So69.css.br +0 -0
- package/dist/web/assets/index-DMA-So69.css.gz +0 -0
- package/dist/web/assets/ini-PqgYiEAV.js.br +5 -0
- package/dist/web/assets/ini-PqgYiEAV.js.gz +0 -0
- package/dist/web/assets/java-DPqGHyuh.js.br +0 -0
- package/dist/web/assets/java-DPqGHyuh.js.gz +0 -0
- package/dist/web/assets/javascript-D8x_R8ev.js.br +0 -0
- package/dist/web/assets/javascript-D8x_R8ev.js.gz +0 -0
- package/dist/web/assets/jinja-DOkXV84k.js.br +0 -0
- package/dist/web/assets/jinja-DOkXV84k.js.gz +0 -0
- package/dist/web/assets/{jira-watcher-section-BOe_ztas.js → jira-watcher-section-DoXl0GAq.js} +1 -1
- package/dist/web/assets/jira-watcher-section-DoXl0GAq.js.br +0 -0
- package/dist/web/assets/jira-watcher-section-DoXl0GAq.js.gz +0 -0
- package/dist/web/assets/jison-CGzlyBWT.js.br +0 -0
- package/dist/web/assets/jison-CGzlyBWT.js.gz +0 -0
- package/dist/web/assets/json-kcFjaEWA.js.br +0 -0
- package/dist/web/assets/json-kcFjaEWA.js.gz +0 -0
- package/dist/web/assets/json5-sbkvqHou.js.br +0 -0
- package/dist/web/assets/json5-sbkvqHou.js.gz +0 -0
- package/dist/web/assets/jsonc-pnywfpws.js.br +0 -0
- package/dist/web/assets/jsonc-pnywfpws.js.gz +0 -0
- package/dist/web/assets/jsonl-ZPOQ0pRn.js.br +0 -0
- package/dist/web/assets/jsonl-ZPOQ0pRn.js.gz +0 -0
- package/dist/web/assets/jsonnet-B_Q7j1YF.js.br +0 -0
- package/dist/web/assets/jsonnet-B_Q7j1YF.js.gz +0 -0
- package/dist/web/assets/jssm-K-xYeQyp.js.br +0 -0
- package/dist/web/assets/jssm-K-xYeQyp.js.gz +0 -0
- package/dist/web/assets/jsx-BzlJCumN.js.br +0 -0
- package/dist/web/assets/jsx-BzlJCumN.js.gz +0 -0
- package/dist/web/assets/julia-CZrbm1Fa.js.br +0 -0
- package/dist/web/assets/julia-CZrbm1Fa.js.gz +0 -0
- package/dist/web/assets/just-bRG6zWI_.js.br +0 -0
- package/dist/web/assets/just-bRG6zWI_.js.gz +0 -0
- package/dist/web/assets/kanagawa-dragon-DAdLBtU8.js.br +0 -0
- package/dist/web/assets/kanagawa-dragon-DAdLBtU8.js.gz +0 -0
- package/dist/web/assets/kanagawa-lotus-5BwvVGu8.js.br +0 -0
- package/dist/web/assets/kanagawa-lotus-5BwvVGu8.js.gz +0 -0
- package/dist/web/assets/kanagawa-wave-C0h9fsDT.js.br +0 -0
- package/dist/web/assets/kanagawa-wave-C0h9fsDT.js.gz +0 -0
- package/dist/web/assets/kdl-DXSsFcms.js.br +0 -0
- package/dist/web/assets/kdl-DXSsFcms.js.gz +0 -0
- package/dist/web/assets/{keybindings-store-DFPJBiXT.js → keybindings-store-BqGm9AgI.js} +1 -1
- package/dist/web/assets/{keyboard-shortcuts-section-CJubMhMq.js → keyboard-shortcuts-section-BogwnAdr.js} +1 -1
- package/dist/web/assets/keyboard-shortcuts-section-BogwnAdr.js.br +0 -0
- package/dist/web/assets/keyboard-shortcuts-section-BogwnAdr.js.gz +0 -0
- package/dist/web/assets/kotlin-BXNIvloo.js.br +0 -0
- package/dist/web/assets/kotlin-BXNIvloo.js.gz +0 -0
- package/dist/web/assets/kusto-wM3eio5V.js.br +0 -0
- package/dist/web/assets/kusto-wM3eio5V.js.gz +0 -0
- package/dist/web/assets/laserwave-FcbxdP2A.js.br +0 -0
- package/dist/web/assets/laserwave-FcbxdP2A.js.gz +0 -0
- package/dist/web/assets/latex-CZHLEkde.js.br +0 -0
- package/dist/web/assets/latex-CZHLEkde.js.gz +0 -0
- package/dist/web/assets/lean-RenzGeoM.js.br +0 -0
- package/dist/web/assets/lean-RenzGeoM.js.gz +0 -0
- package/dist/web/assets/less-CcUdtNJi.js.br +0 -0
- package/dist/web/assets/less-CcUdtNJi.js.gz +0 -0
- package/dist/web/assets/lib-KePrAxj7.js.br +0 -0
- package/dist/web/assets/lib-KePrAxj7.js.gz +0 -0
- package/dist/web/assets/libesm-DMnQ3WlF.js.br +0 -0
- package/dist/web/assets/libesm-DMnQ3WlF.js.gz +0 -0
- package/dist/web/assets/light-plus-BsMoOZJR.js.br +0 -0
- package/dist/web/assets/light-plus-BsMoOZJR.js.gz +0 -0
- package/dist/web/assets/liquid-Dcfq3Ccc.js.br +0 -0
- package/dist/web/assets/liquid-Dcfq3Ccc.js.gz +0 -0
- package/dist/web/assets/llvm-CyylMBuq.js.br +0 -0
- package/dist/web/assets/llvm-CyylMBuq.js.gz +0 -0
- package/dist/web/assets/log-BOi0GB58.js.br +0 -0
- package/dist/web/assets/log-BOi0GB58.js.gz +0 -0
- package/dist/web/assets/logo-BQUr3X2Y.js.br +0 -0
- package/dist/web/assets/logo-BQUr3X2Y.js.gz +0 -0
- package/dist/web/assets/lua-Ggfu9EYp.js.br +0 -0
- package/dist/web/assets/lua-Ggfu9EYp.js.gz +0 -0
- package/dist/web/assets/luau-3YZRDIsh.js.br +0 -0
- package/dist/web/assets/luau-3YZRDIsh.js.gz +0 -0
- package/dist/web/assets/make-DEkKRDRU.js.br +0 -0
- package/dist/web/assets/make-DEkKRDRU.js.gz +0 -0
- package/dist/web/assets/markdown-BmFN0-A1.js.br +0 -0
- package/dist/web/assets/markdown-BmFN0-A1.js.gz +0 -0
- package/dist/web/assets/{markdown-renderer-DxSQ4aqW.js → markdown-renderer-C33dsNJ_.js} +1 -1
- package/dist/web/assets/{markdown-renderer-6oU-L6RN.js → markdown-renderer-CZiECUJp.js} +1 -1
- package/dist/web/assets/markdown-renderer-CZiECUJp.js.br +0 -0
- package/dist/web/assets/markdown-renderer-CZiECUJp.js.gz +0 -0
- package/dist/web/assets/marko-BUwN_Iax.js.br +0 -0
- package/dist/web/assets/marko-BUwN_Iax.js.gz +0 -0
- package/dist/web/assets/material-theme-DqLHjEZ8.js.br +0 -0
- package/dist/web/assets/material-theme-DqLHjEZ8.js.gz +0 -0
- package/dist/web/assets/material-theme-darker-DhbvULnI.js.br +0 -0
- package/dist/web/assets/material-theme-darker-DhbvULnI.js.gz +0 -0
- package/dist/web/assets/material-theme-lighter-C_aA4yVe.js.br +0 -0
- package/dist/web/assets/material-theme-lighter-C_aA4yVe.js.gz +0 -0
- package/dist/web/assets/material-theme-ocean-Pk5JltJS.js.br +0 -0
- package/dist/web/assets/material-theme-ocean-Pk5JltJS.js.gz +0 -0
- package/dist/web/assets/material-theme-palenight-DNi3VguV.js.br +0 -0
- package/dist/web/assets/material-theme-palenight-DNi3VguV.js.gz +0 -0
- package/dist/web/assets/matlab-BqUtv2ml.js.br +0 -0
- package/dist/web/assets/matlab-BqUtv2ml.js.gz +0 -0
- package/dist/web/assets/mdc-CIifdeNY.js.br +0 -0
- package/dist/web/assets/mdc-CIifdeNY.js.gz +0 -0
- package/dist/web/assets/mdx-DFMrnHBn.js.br +0 -0
- package/dist/web/assets/mdx-DFMrnHBn.js.gz +0 -0
- package/dist/web/assets/mermaid-BpyuE0L_.js.br +0 -0
- package/dist/web/assets/mermaid-BpyuE0L_.js.gz +0 -0
- package/dist/web/assets/min-dark-DVfCMEPW.js.br +0 -0
- package/dist/web/assets/min-dark-DVfCMEPW.js.gz +0 -0
- package/dist/web/assets/min-light-B96aMADV.js.br +0 -0
- package/dist/web/assets/min-light-B96aMADV.js.gz +0 -0
- package/dist/web/assets/mipsasm-DHhEcvKr.js.br +0 -0
- package/dist/web/assets/mipsasm-DHhEcvKr.js.gz +0 -0
- package/dist/web/assets/mobile-bottom-sheet-Cf4kV1hS.js.br +0 -0
- package/dist/web/assets/mobile-bottom-sheet-Cf4kV1hS.js.gz +0 -0
- package/dist/web/assets/{mobile-explorer-sheet-D0968cuP.js → mobile-explorer-sheet-BOgo9tbK.js} +1 -1
- package/dist/web/assets/mobile-explorer-sheet-BOgo9tbK.js.br +0 -0
- package/dist/web/assets/mobile-explorer-sheet-BOgo9tbK.js.gz +0 -0
- package/dist/web/assets/mojo-BQ6HsVIQ.js.br +0 -0
- package/dist/web/assets/mojo-BQ6HsVIQ.js.gz +0 -0
- package/dist/web/assets/monaco/vs/_commonjsHelpers-CT9FvmAN.js +1 -0
- package/dist/web/assets/monaco/vs/abap-D-t0cyap.js +1 -0
- package/dist/web/assets/monaco/vs/abap-D-t0cyap.js.br +0 -0
- package/dist/web/assets/monaco/vs/abap-D-t0cyap.js.gz +0 -0
- package/dist/web/assets/monaco/vs/apex-CcIm7xu6.js +1 -0
- package/dist/web/assets/monaco/vs/apex-CcIm7xu6.js.br +0 -0
- package/dist/web/assets/monaco/vs/apex-CcIm7xu6.js.gz +0 -0
- package/dist/web/assets/monaco/vs/assets/css.worker-HnVq6Ewq.js +93 -0
- package/dist/web/assets/monaco/vs/assets/css.worker-HnVq6Ewq.js.br +0 -0
- package/dist/web/assets/monaco/vs/assets/css.worker-HnVq6Ewq.js.gz +0 -0
- package/dist/web/assets/monaco/vs/assets/editor.worker-Be8ye1pW.js +26 -0
- package/dist/web/assets/monaco/vs/assets/editor.worker-Be8ye1pW.js.br +0 -0
- package/dist/web/assets/monaco/vs/assets/editor.worker-Be8ye1pW.js.gz +0 -0
- package/dist/web/assets/monaco/vs/assets/html.worker-B51mlPHg.js +470 -0
- package/dist/web/assets/monaco/vs/assets/html.worker-B51mlPHg.js.br +0 -0
- package/dist/web/assets/monaco/vs/assets/html.worker-B51mlPHg.js.gz +0 -0
- package/dist/web/assets/monaco/vs/assets/json.worker-DKiEKt88.js +58 -0
- package/dist/web/assets/monaco/vs/assets/json.worker-DKiEKt88.js.br +0 -0
- package/dist/web/assets/monaco/vs/assets/json.worker-DKiEKt88.js.gz +0 -0
- package/dist/web/assets/monaco/vs/assets/ts.worker-CMbG-7ft.js +67731 -0
- package/dist/web/assets/monaco/vs/assets/ts.worker-CMbG-7ft.js.br +0 -0
- package/dist/web/assets/monaco/vs/assets/ts.worker-CMbG-7ft.js.gz +0 -0
- package/dist/web/assets/monaco/vs/azcli-BA0tQDCg.js +1 -0
- package/dist/web/assets/monaco/vs/basic-languages/monaco.contribution.js +1 -0
- package/dist/web/assets/monaco/vs/basic-languages/monaco.contribution.js.br +0 -0
- package/dist/web/assets/monaco/vs/basic-languages/monaco.contribution.js.gz +0 -0
- package/dist/web/assets/monaco/vs/bat-C397hTD6.js +1 -0
- package/dist/web/assets/monaco/vs/bat-C397hTD6.js.br +0 -0
- package/dist/web/assets/monaco/vs/bat-C397hTD6.js.gz +0 -0
- package/dist/web/assets/monaco/vs/bicep-DF5aW17k.js +2 -0
- package/dist/web/assets/monaco/vs/bicep-DF5aW17k.js.br +0 -0
- package/dist/web/assets/monaco/vs/bicep-DF5aW17k.js.gz +0 -0
- package/dist/web/assets/monaco/vs/cameligo-plsz8qhj.js +1 -0
- package/dist/web/assets/monaco/vs/cameligo-plsz8qhj.js.br +0 -0
- package/dist/web/assets/monaco/vs/cameligo-plsz8qhj.js.gz +0 -0
- package/dist/web/assets/monaco/vs/clojure-Y2auQMzK.js +1 -0
- package/dist/web/assets/monaco/vs/clojure-Y2auQMzK.js.br +0 -0
- package/dist/web/assets/monaco/vs/clojure-Y2auQMzK.js.gz +0 -0
- package/dist/web/assets/monaco/vs/coffee-Bu45yuWE.js +1 -0
- package/dist/web/assets/monaco/vs/coffee-Bu45yuWE.js.br +0 -0
- package/dist/web/assets/monaco/vs/coffee-Bu45yuWE.js.gz +0 -0
- package/dist/web/assets/monaco/vs/cpp-CkKPQIni.js +1 -0
- package/dist/web/assets/monaco/vs/cpp-CkKPQIni.js.br +0 -0
- package/dist/web/assets/monaco/vs/cpp-CkKPQIni.js.gz +0 -0
- package/dist/web/assets/monaco/vs/csharp-CX28MZyh.js +1 -0
- package/dist/web/assets/monaco/vs/csharp-CX28MZyh.js.br +0 -0
- package/dist/web/assets/monaco/vs/csharp-CX28MZyh.js.gz +0 -0
- package/dist/web/assets/monaco/vs/csp-D8uWnyxW.js +1 -0
- package/dist/web/assets/monaco/vs/csp-D8uWnyxW.js.br +0 -0
- package/dist/web/assets/monaco/vs/csp-D8uWnyxW.js.gz +0 -0
- package/dist/web/assets/monaco/vs/css-CaeNmE3S.js +3 -0
- package/dist/web/assets/monaco/vs/css-CaeNmE3S.js.br +0 -0
- package/dist/web/assets/monaco/vs/css-CaeNmE3S.js.gz +0 -0
- package/dist/web/assets/monaco/vs/cssMode-CjiAH6dQ.js +1 -0
- package/dist/web/assets/monaco/vs/cssMode-CjiAH6dQ.js.br +0 -0
- package/dist/web/assets/monaco/vs/cssMode-CjiAH6dQ.js.gz +0 -0
- package/dist/web/assets/monaco/vs/cypher-DVThT8BS.js +1 -0
- package/dist/web/assets/monaco/vs/cypher-DVThT8BS.js.br +0 -0
- package/dist/web/assets/monaco/vs/cypher-DVThT8BS.js.gz +0 -0
- package/dist/web/assets/monaco/vs/dart-CmGfCvrO.js +1 -0
- package/dist/web/assets/monaco/vs/dart-CmGfCvrO.js.br +0 -0
- package/dist/web/assets/monaco/vs/dart-CmGfCvrO.js.gz +0 -0
- package/dist/web/assets/monaco/vs/dockerfile-CZqqYdch.js +1 -0
- package/dist/web/assets/monaco/vs/dockerfile-CZqqYdch.js.br +0 -0
- package/dist/web/assets/monaco/vs/dockerfile-CZqqYdch.js.gz +0 -0
- package/dist/web/assets/monaco/vs/ecl-30fUercY.js +1 -0
- package/dist/web/assets/monaco/vs/ecl-30fUercY.js.br +0 -0
- package/dist/web/assets/monaco/vs/ecl-30fUercY.js.gz +0 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.css +1 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.css.br +0 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.css.gz +0 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.js +5 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.js.br +0 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.js.gz +0 -0
- package/dist/web/assets/monaco/vs/editor.api-CalNCsUg.js +903 -0
- package/dist/web/assets/monaco/vs/editor.api-CalNCsUg.js.br +0 -0
- package/dist/web/assets/monaco/vs/editor.api-CalNCsUg.js.gz +0 -0
- package/dist/web/assets/monaco/vs/elixir-xjPaIfzF.js +1 -0
- package/dist/web/assets/monaco/vs/elixir-xjPaIfzF.js.br +0 -0
- package/dist/web/assets/monaco/vs/elixir-xjPaIfzF.js.gz +0 -0
- package/dist/web/assets/monaco/vs/flow9-DqtmStfK.js +1 -0
- package/dist/web/assets/monaco/vs/flow9-DqtmStfK.js.br +0 -0
- package/dist/web/assets/monaco/vs/flow9-DqtmStfK.js.gz +0 -0
- package/dist/web/assets/monaco/vs/freemarker2-Cz_sV6Md.js +3 -0
- package/dist/web/assets/monaco/vs/freemarker2-Cz_sV6Md.js.br +0 -0
- package/dist/web/assets/monaco/vs/freemarker2-Cz_sV6Md.js.gz +0 -0
- package/dist/web/assets/monaco/vs/fsharp-BOMdg4U1.js +1 -0
- package/dist/web/assets/monaco/vs/fsharp-BOMdg4U1.js.br +0 -0
- package/dist/web/assets/monaco/vs/fsharp-BOMdg4U1.js.gz +0 -0
- package/dist/web/assets/monaco/vs/go-D_hbi-Jt.js +1 -0
- package/dist/web/assets/monaco/vs/go-D_hbi-Jt.js.br +0 -0
- package/dist/web/assets/monaco/vs/go-D_hbi-Jt.js.gz +0 -0
- package/dist/web/assets/monaco/vs/graphql-CKUU4kLG.js +1 -0
- package/dist/web/assets/monaco/vs/graphql-CKUU4kLG.js.br +0 -0
- package/dist/web/assets/monaco/vs/graphql-CKUU4kLG.js.gz +0 -0
- package/dist/web/assets/monaco/vs/handlebars-OwglfO-1.js +1 -0
- package/dist/web/assets/monaco/vs/handlebars-OwglfO-1.js.br +0 -0
- package/dist/web/assets/monaco/vs/handlebars-OwglfO-1.js.gz +0 -0
- package/dist/web/assets/monaco/vs/hcl-DTaboeZW.js +1 -0
- package/dist/web/assets/monaco/vs/hcl-DTaboeZW.js.br +0 -0
- package/dist/web/assets/monaco/vs/hcl-DTaboeZW.js.gz +0 -0
- package/dist/web/assets/monaco/vs/html-Pa1xEWsY.js +1 -0
- package/dist/web/assets/monaco/vs/html-Pa1xEWsY.js.br +0 -0
- package/dist/web/assets/monaco/vs/html-Pa1xEWsY.js.gz +0 -0
- package/dist/web/assets/monaco/vs/htmlMode-Bz67EXwp.js +1 -0
- package/dist/web/assets/monaco/vs/htmlMode-Bz67EXwp.js.br +0 -0
- package/dist/web/assets/monaco/vs/htmlMode-Bz67EXwp.js.gz +0 -0
- package/dist/web/assets/monaco/vs/ini-CsNwO04R.js +1 -0
- package/dist/web/assets/monaco/vs/ini-CsNwO04R.js.br +0 -0
- package/dist/web/assets/monaco/vs/ini-CsNwO04R.js.gz +0 -0
- package/dist/web/assets/monaco/vs/java-CI4ZMsH9.js +1 -0
- package/dist/web/assets/monaco/vs/java-CI4ZMsH9.js.br +0 -0
- package/dist/web/assets/monaco/vs/java-CI4ZMsH9.js.gz +0 -0
- package/dist/web/assets/monaco/vs/javascript-PczUCGdz.js +1 -0
- package/dist/web/assets/monaco/vs/jsonMode-DULH5oaX.js +7 -0
- package/dist/web/assets/monaco/vs/jsonMode-DULH5oaX.js.br +0 -0
- package/dist/web/assets/monaco/vs/jsonMode-DULH5oaX.js.gz +0 -0
- package/dist/web/assets/monaco/vs/julia-BwzEvaQw.js +1 -0
- package/dist/web/assets/monaco/vs/julia-BwzEvaQw.js.br +0 -0
- package/dist/web/assets/monaco/vs/julia-BwzEvaQw.js.gz +0 -0
- package/dist/web/assets/monaco/vs/kotlin-IUYPiTV8.js +1 -0
- package/dist/web/assets/monaco/vs/kotlin-IUYPiTV8.js.br +0 -0
- package/dist/web/assets/monaco/vs/kotlin-IUYPiTV8.js.gz +0 -0
- package/dist/web/assets/monaco/vs/language/css/monaco.contribution.js +1 -0
- package/dist/web/assets/monaco/vs/language/html/monaco.contribution.js +1 -0
- package/dist/web/assets/monaco/vs/language/json/monaco.contribution.js +1 -0
- package/dist/web/assets/monaco/vs/language/typescript/monaco.contribution.js +1 -0
- package/dist/web/assets/monaco/vs/less-C0eDYdqa.js +2 -0
- package/dist/web/assets/monaco/vs/less-C0eDYdqa.js.br +0 -0
- package/dist/web/assets/monaco/vs/less-C0eDYdqa.js.gz +0 -0
- package/dist/web/assets/monaco/vs/lexon-iON-Kj97.js +1 -0
- package/dist/web/assets/monaco/vs/lexon-iON-Kj97.js.br +0 -0
- package/dist/web/assets/monaco/vs/lexon-iON-Kj97.js.gz +0 -0
- package/dist/web/assets/monaco/vs/liquid-DqKjdPGy.js +1 -0
- package/dist/web/assets/monaco/vs/liquid-DqKjdPGy.js.br +0 -0
- package/dist/web/assets/monaco/vs/liquid-DqKjdPGy.js.gz +0 -0
- package/dist/web/assets/monaco/vs/loader.js +1368 -0
- package/dist/web/assets/monaco/vs/loader.js.br +0 -0
- package/dist/web/assets/monaco/vs/loader.js.gz +0 -0
- package/dist/web/assets/monaco/vs/lspLanguageFeatures-kM9O9rjY.js +4 -0
- package/dist/web/assets/monaco/vs/lspLanguageFeatures-kM9O9rjY.js.br +0 -0
- package/dist/web/assets/monaco/vs/lspLanguageFeatures-kM9O9rjY.js.gz +0 -0
- package/dist/web/assets/monaco/vs/lua-DtygF91M.js +1 -0
- package/dist/web/assets/monaco/vs/lua-DtygF91M.js.br +0 -0
- package/dist/web/assets/monaco/vs/lua-DtygF91M.js.gz +0 -0
- package/dist/web/assets/monaco/vs/m3-CsR4AuFi.js +1 -0
- package/dist/web/assets/monaco/vs/m3-CsR4AuFi.js.br +0 -0
- package/dist/web/assets/monaco/vs/m3-CsR4AuFi.js.gz +0 -0
- package/dist/web/assets/monaco/vs/markdown-C_rD0bIw.js +1 -0
- package/dist/web/assets/monaco/vs/markdown-C_rD0bIw.js.br +0 -0
- package/dist/web/assets/monaco/vs/markdown-C_rD0bIw.js.gz +0 -0
- package/dist/web/assets/monaco/vs/mdx-DEWtB1K5.js +1 -0
- package/dist/web/assets/monaco/vs/mdx-DEWtB1K5.js.br +0 -0
- package/dist/web/assets/monaco/vs/mdx-DEWtB1K5.js.gz +0 -0
- package/dist/web/assets/monaco/vs/mips-CiYP61RB.js +1 -0
- package/dist/web/assets/monaco/vs/mips-CiYP61RB.js.br +0 -0
- package/dist/web/assets/monaco/vs/mips-CiYP61RB.js.gz +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-D2OdxNBt.js +1 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-D2OdxNBt.js.br +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-D2OdxNBt.js.gz +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-DO3azKX8.js +1 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-DO3azKX8.js.br +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-DO3azKX8.js.gz +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-EcChJV6a.js +1 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-EcChJV6a.js.br +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-EcChJV6a.js.gz +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-qLAYrEOP.js +1 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-qLAYrEOP.js.br +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-qLAYrEOP.js.gz +0 -0
- package/dist/web/assets/monaco/vs/msdax-C38-sJlp.js +1 -0
- package/dist/web/assets/monaco/vs/msdax-C38-sJlp.js.br +0 -0
- package/dist/web/assets/monaco/vs/msdax-C38-sJlp.js.gz +0 -0
- package/dist/web/assets/monaco/vs/mysql-CdtbpvbG.js +1 -0
- package/dist/web/assets/monaco/vs/mysql-CdtbpvbG.js.br +0 -0
- package/dist/web/assets/monaco/vs/mysql-CdtbpvbG.js.gz +0 -0
- package/dist/web/assets/monaco/vs/nls.messages-loader.js +1 -0
- package/dist/web/assets/monaco/vs/objective-c-CntZFaHX.js +1 -0
- package/dist/web/assets/monaco/vs/objective-c-CntZFaHX.js.br +0 -0
- package/dist/web/assets/monaco/vs/objective-c-CntZFaHX.js.gz +0 -0
- package/dist/web/assets/monaco/vs/pascal-r6kuqfl_.js +1 -0
- package/dist/web/assets/monaco/vs/pascal-r6kuqfl_.js.br +0 -0
- package/dist/web/assets/monaco/vs/pascal-r6kuqfl_.js.gz +0 -0
- package/dist/web/assets/monaco/vs/pascaligo-BiXoTmXh.js +1 -0
- package/dist/web/assets/monaco/vs/pascaligo-BiXoTmXh.js.br +0 -0
- package/dist/web/assets/monaco/vs/pascaligo-BiXoTmXh.js.gz +0 -0
- package/dist/web/assets/monaco/vs/perl-DABw_TcH.js +1 -0
- package/dist/web/assets/monaco/vs/perl-DABw_TcH.js.br +0 -0
- package/dist/web/assets/monaco/vs/perl-DABw_TcH.js.gz +0 -0
- package/dist/web/assets/monaco/vs/pgsql-me_jFXeX.js +1 -0
- package/dist/web/assets/monaco/vs/pgsql-me_jFXeX.js.br +0 -0
- package/dist/web/assets/monaco/vs/pgsql-me_jFXeX.js.gz +0 -0
- package/dist/web/assets/monaco/vs/php-D_kh-9LK.js +1 -0
- package/dist/web/assets/monaco/vs/php-D_kh-9LK.js.br +0 -0
- package/dist/web/assets/monaco/vs/php-D_kh-9LK.js.gz +0 -0
- package/dist/web/assets/monaco/vs/pla-VfZjczW0.js +1 -0
- package/dist/web/assets/monaco/vs/pla-VfZjczW0.js.br +0 -0
- package/dist/web/assets/monaco/vs/pla-VfZjczW0.js.gz +0 -0
- package/dist/web/assets/monaco/vs/postiats-BBSzz8Pk.js +1 -0
- package/dist/web/assets/monaco/vs/postiats-BBSzz8Pk.js.br +0 -0
- package/dist/web/assets/monaco/vs/postiats-BBSzz8Pk.js.gz +0 -0
- package/dist/web/assets/monaco/vs/powerquery-Dt-g_2cc.js +1 -0
- package/dist/web/assets/monaco/vs/powerquery-Dt-g_2cc.js.br +0 -0
- package/dist/web/assets/monaco/vs/powerquery-Dt-g_2cc.js.gz +0 -0
- package/dist/web/assets/monaco/vs/powershell-B-7ap1zc.js +1 -0
- package/dist/web/assets/monaco/vs/powershell-B-7ap1zc.js.br +0 -0
- package/dist/web/assets/monaco/vs/powershell-B-7ap1zc.js.gz +0 -0
- package/dist/web/assets/monaco/vs/protobuf-BmtuEB1A.js +2 -0
- package/dist/web/assets/monaco/vs/protobuf-BmtuEB1A.js.br +0 -0
- package/dist/web/assets/monaco/vs/protobuf-BmtuEB1A.js.gz +0 -0
- package/dist/web/assets/monaco/vs/pug-BRpRNeEb.js +1 -0
- package/dist/web/assets/monaco/vs/pug-BRpRNeEb.js.br +0 -0
- package/dist/web/assets/monaco/vs/pug-BRpRNeEb.js.gz +0 -0
- package/dist/web/assets/monaco/vs/python-Cr0UkIbn.js +1 -0
- package/dist/web/assets/monaco/vs/python-Cr0UkIbn.js.br +0 -0
- package/dist/web/assets/monaco/vs/python-Cr0UkIbn.js.gz +0 -0
- package/dist/web/assets/monaco/vs/qsharp-BzsFaUU9.js +1 -0
- package/dist/web/assets/monaco/vs/qsharp-BzsFaUU9.js.br +0 -0
- package/dist/web/assets/monaco/vs/qsharp-BzsFaUU9.js.gz +0 -0
- package/dist/web/assets/monaco/vs/r-f8dDdrp4.js +1 -0
- package/dist/web/assets/monaco/vs/r-f8dDdrp4.js.br +0 -0
- package/dist/web/assets/monaco/vs/r-f8dDdrp4.js.gz +0 -0
- package/dist/web/assets/monaco/vs/razor-BYAHOTkz.js +1 -0
- package/dist/web/assets/monaco/vs/razor-BYAHOTkz.js.br +0 -0
- package/dist/web/assets/monaco/vs/razor-BYAHOTkz.js.gz +0 -0
- package/dist/web/assets/monaco/vs/redis-fvZQY4PI.js +1 -0
- package/dist/web/assets/monaco/vs/redis-fvZQY4PI.js.br +0 -0
- package/dist/web/assets/monaco/vs/redis-fvZQY4PI.js.gz +0 -0
- package/dist/web/assets/monaco/vs/redshift-45Et0LQi.js +1 -0
- package/dist/web/assets/monaco/vs/redshift-45Et0LQi.js.br +0 -0
- package/dist/web/assets/monaco/vs/redshift-45Et0LQi.js.gz +0 -0
- package/dist/web/assets/monaco/vs/restructuredtext-C7UUFKFD.js +1 -0
- package/dist/web/assets/monaco/vs/restructuredtext-C7UUFKFD.js.br +0 -0
- package/dist/web/assets/monaco/vs/restructuredtext-C7UUFKFD.js.gz +0 -0
- package/dist/web/assets/monaco/vs/ruby-CZO8zYTz.js +1 -0
- package/dist/web/assets/monaco/vs/ruby-CZO8zYTz.js.br +0 -0
- package/dist/web/assets/monaco/vs/ruby-CZO8zYTz.js.gz +0 -0
- package/dist/web/assets/monaco/vs/rust-Bfetafyc.js +1 -0
- package/dist/web/assets/monaco/vs/rust-Bfetafyc.js.br +0 -0
- package/dist/web/assets/monaco/vs/rust-Bfetafyc.js.gz +0 -0
- package/dist/web/assets/monaco/vs/sb-3GYllVck.js +1 -0
- package/dist/web/assets/monaco/vs/sb-3GYllVck.js.br +0 -0
- package/dist/web/assets/monaco/vs/sb-3GYllVck.js.gz +0 -0
- package/dist/web/assets/monaco/vs/scala-foMgrKo1.js +1 -0
- package/dist/web/assets/monaco/vs/scala-foMgrKo1.js.br +0 -0
- package/dist/web/assets/monaco/vs/scala-foMgrKo1.js.gz +0 -0
- package/dist/web/assets/monaco/vs/scheme-CHdMtr7p.js +1 -0
- package/dist/web/assets/monaco/vs/scheme-CHdMtr7p.js.br +0 -0
- package/dist/web/assets/monaco/vs/scheme-CHdMtr7p.js.gz +0 -0
- package/dist/web/assets/monaco/vs/scss-C1cmLt9V.js +3 -0
- package/dist/web/assets/monaco/vs/scss-C1cmLt9V.js.br +0 -0
- package/dist/web/assets/monaco/vs/scss-C1cmLt9V.js.gz +0 -0
- package/dist/web/assets/monaco/vs/shell-ClXCKCEW.js +1 -0
- package/dist/web/assets/monaco/vs/shell-ClXCKCEW.js.br +0 -0
- package/dist/web/assets/monaco/vs/shell-ClXCKCEW.js.gz +0 -0
- package/dist/web/assets/monaco/vs/solidity-MZ6ExpPy.js +1 -0
- package/dist/web/assets/monaco/vs/solidity-MZ6ExpPy.js.br +0 -0
- package/dist/web/assets/monaco/vs/solidity-MZ6ExpPy.js.gz +0 -0
- package/dist/web/assets/monaco/vs/sophia-DWkuSsPQ.js +1 -0
- package/dist/web/assets/monaco/vs/sophia-DWkuSsPQ.js.br +0 -0
- package/dist/web/assets/monaco/vs/sophia-DWkuSsPQ.js.gz +0 -0
- package/dist/web/assets/monaco/vs/sparql-AUGFYSyk.js +1 -0
- package/dist/web/assets/monaco/vs/sparql-AUGFYSyk.js.br +0 -0
- package/dist/web/assets/monaco/vs/sparql-AUGFYSyk.js.gz +0 -0
- package/dist/web/assets/monaco/vs/sql-32GpJSV2.js +1 -0
- package/dist/web/assets/monaco/vs/sql-32GpJSV2.js.br +0 -0
- package/dist/web/assets/monaco/vs/sql-32GpJSV2.js.gz +0 -0
- package/dist/web/assets/monaco/vs/st-CuDFIVZ_.js +1 -0
- package/dist/web/assets/monaco/vs/st-CuDFIVZ_.js.br +0 -0
- package/dist/web/assets/monaco/vs/st-CuDFIVZ_.js.gz +0 -0
- package/dist/web/assets/monaco/vs/swift-n-2HociN.js +3 -0
- package/dist/web/assets/monaco/vs/swift-n-2HociN.js.br +0 -0
- package/dist/web/assets/monaco/vs/swift-n-2HociN.js.gz +0 -0
- package/dist/web/assets/monaco/vs/systemverilog-Ch4vA8Yt.js +1 -0
- package/dist/web/assets/monaco/vs/systemverilog-Ch4vA8Yt.js.br +0 -0
- package/dist/web/assets/monaco/vs/systemverilog-Ch4vA8Yt.js.gz +0 -0
- package/dist/web/assets/monaco/vs/tcl-D74tq1nH.js +1 -0
- package/dist/web/assets/monaco/vs/tcl-D74tq1nH.js.br +0 -0
- package/dist/web/assets/monaco/vs/tcl-D74tq1nH.js.gz +0 -0
- package/dist/web/assets/monaco/vs/tsMode-CZz1Umrk.js +11 -0
- package/dist/web/assets/monaco/vs/tsMode-CZz1Umrk.js.br +0 -0
- package/dist/web/assets/monaco/vs/tsMode-CZz1Umrk.js.gz +0 -0
- package/dist/web/assets/monaco/vs/twig-C6taOxMV.js +1 -0
- package/dist/web/assets/monaco/vs/twig-C6taOxMV.js.br +0 -0
- package/dist/web/assets/monaco/vs/twig-C6taOxMV.js.gz +0 -0
- package/dist/web/assets/monaco/vs/typescript-DfOrAzoV.js +1 -0
- package/dist/web/assets/monaco/vs/typescript-DfOrAzoV.js.br +0 -0
- package/dist/web/assets/monaco/vs/typescript-DfOrAzoV.js.gz +0 -0
- package/dist/web/assets/monaco/vs/typespec-D-PIh9Xw.js +1 -0
- package/dist/web/assets/monaco/vs/typespec-D-PIh9Xw.js.br +0 -0
- package/dist/web/assets/monaco/vs/typespec-D-PIh9Xw.js.gz +0 -0
- package/dist/web/assets/monaco/vs/vb-Dyb2648j.js +1 -0
- package/dist/web/assets/monaco/vs/vb-Dyb2648j.js.br +0 -0
- package/dist/web/assets/monaco/vs/vb-Dyb2648j.js.gz +0 -0
- package/dist/web/assets/monaco/vs/wgsl-BhLXMOR0.js +298 -0
- package/dist/web/assets/monaco/vs/wgsl-BhLXMOR0.js.br +0 -0
- package/dist/web/assets/monaco/vs/wgsl-BhLXMOR0.js.gz +0 -0
- package/dist/web/assets/monaco/vs/workers-DcJshg-q.js +1 -0
- package/dist/web/assets/monaco/vs/workers-DcJshg-q.js.br +0 -0
- package/dist/web/assets/monaco/vs/workers-DcJshg-q.js.gz +0 -0
- package/dist/web/assets/monaco/vs/xml-CdsdnY8S.js +1 -0
- package/dist/web/assets/monaco/vs/xml-CdsdnY8S.js.br +0 -0
- package/dist/web/assets/monaco/vs/xml-CdsdnY8S.js.gz +0 -0
- package/dist/web/assets/monaco/vs/yaml-DYGvmE88.js +1 -0
- package/dist/web/assets/monaco/vs/yaml-DYGvmE88.js.br +0 -0
- package/dist/web/assets/monaco/vs/yaml-DYGvmE88.js.gz +0 -0
- package/dist/web/assets/monokai-amcXAKGG.js.br +0 -0
- package/dist/web/assets/monokai-amcXAKGG.js.gz +0 -0
- package/dist/web/assets/moonbit-CGSXXQJI.js.br +0 -0
- package/dist/web/assets/moonbit-CGSXXQJI.js.gz +0 -0
- package/dist/web/assets/move-BOa4mq0q.js.br +0 -0
- package/dist/web/assets/move-BOa4mq0q.js.gz +0 -0
- package/dist/web/assets/narrat-dBYNSnhr.js.br +0 -0
- package/dist/web/assets/narrat-dBYNSnhr.js.gz +0 -0
- package/dist/web/assets/{new-design-dialog-CbrMbKum.js → new-design-dialog-DcoejI1s.js} +1 -1
- package/dist/web/assets/new-design-dialog-DcoejI1s.js.br +0 -0
- package/dist/web/assets/new-design-dialog-DcoejI1s.js.gz +0 -0
- package/dist/web/assets/nextflow-DufnRZW1.js.br +0 -0
- package/dist/web/assets/nextflow-DufnRZW1.js.gz +0 -0
- package/dist/web/assets/nextflow-groovy-Dm2Y_qgn.js.br +0 -0
- package/dist/web/assets/nextflow-groovy-Dm2Y_qgn.js.gz +0 -0
- package/dist/web/assets/nginx-DtUJGfad.js.br +0 -0
- package/dist/web/assets/nginx-DtUJGfad.js.gz +0 -0
- package/dist/web/assets/night-owl-Dy9ibYHN.js.br +0 -0
- package/dist/web/assets/night-owl-Dy9ibYHN.js.gz +0 -0
- package/dist/web/assets/night-owl-light-DamYjQKi.js.br +0 -0
- package/dist/web/assets/night-owl-light-DamYjQKi.js.gz +0 -0
- package/dist/web/assets/nim-BeBPwibr.js.br +0 -0
- package/dist/web/assets/nim-BeBPwibr.js.gz +0 -0
- package/dist/web/assets/nix-C1LyoszC.js.br +0 -0
- package/dist/web/assets/nix-C1LyoszC.js.gz +0 -0
- package/dist/web/assets/nord-LtGRYAFI.js.br +0 -0
- package/dist/web/assets/nord-LtGRYAFI.js.gz +0 -0
- package/dist/web/assets/{notification-store-BO3RInEL.js → notification-store-D88Y9kF_.js} +1 -1
- package/dist/web/assets/notifications-settings-section-Bfxqz65i.js.br +0 -0
- package/dist/web/assets/notifications-settings-section-Bfxqz65i.js.gz +0 -0
- package/dist/web/assets/number-overlay-editor-xzM7GhYV.js.br +0 -0
- package/dist/web/assets/number-overlay-editor-xzM7GhYV.js.gz +0 -0
- package/dist/web/assets/nushell-BMoOkt47.js.br +0 -0
- package/dist/web/assets/nushell-BMoOkt47.js.gz +0 -0
- package/dist/web/assets/objective-c-CILaOZJu.js.br +0 -0
- package/dist/web/assets/objective-c-CILaOZJu.js.gz +0 -0
- package/dist/web/assets/objective-cpp-D5Fo-SoM.js.br +0 -0
- package/dist/web/assets/objective-cpp-D5Fo-SoM.js.gz +0 -0
- package/dist/web/assets/ocaml-D1TCTCEJ.js.br +0 -0
- package/dist/web/assets/ocaml-D1TCTCEJ.js.gz +0 -0
- package/dist/web/assets/odin-CjdYcmpW.js.br +0 -0
- package/dist/web/assets/odin-CjdYcmpW.js.gz +0 -0
- package/dist/web/assets/onboarding-entry-CcvySZ_l.js.br +0 -0
- package/dist/web/assets/onboarding-entry-CcvySZ_l.js.gz +0 -0
- package/dist/web/assets/onboarding-quick-orientation-CT4PylG0.js.br +0 -0
- package/dist/web/assets/onboarding-quick-orientation-CT4PylG0.js.gz +0 -0
- package/dist/web/assets/one-dark-pro-GpsZUGZl.js.br +0 -0
- package/dist/web/assets/one-dark-pro-GpsZUGZl.js.gz +0 -0
- package/dist/web/assets/one-light-DlketcS4.js.br +0 -0
- package/dist/web/assets/one-light-DlketcS4.js.gz +0 -0
- package/dist/web/assets/openscad-BoT8wwuI.js.br +0 -0
- package/dist/web/assets/openscad-BoT8wwuI.js.gz +0 -0
- package/dist/web/assets/overview-panel-DshAIz6C.js.br +0 -0
- package/dist/web/assets/overview-panel-DshAIz6C.js.gz +0 -0
- package/dist/web/assets/panel-store-BUQ-CPsd.js.br +0 -0
- package/dist/web/assets/panel-store-BUQ-CPsd.js.gz +0 -0
- package/dist/web/assets/pascal-Cqy403Sf.js.br +0 -0
- package/dist/web/assets/pascal-Cqy403Sf.js.gz +0 -0
- package/dist/web/assets/pdf-preview-BWim6mu1.js.br +0 -0
- package/dist/web/assets/pdf-preview-BWim6mu1.js.gz +0 -0
- package/dist/web/assets/perl-hV0EoLCp.js.br +0 -0
- package/dist/web/assets/perl-hV0EoLCp.js.gz +0 -0
- package/dist/web/assets/php-N1YBqBhK.js.br +0 -0
- package/dist/web/assets/php-N1YBqBhK.js.gz +0 -0
- package/dist/web/assets/pkl-D6gRI9qQ.js.br +0 -0
- package/dist/web/assets/pkl-D6gRI9qQ.js.gz +0 -0
- package/dist/web/assets/plastic-DgvX8DXX.js.br +0 -0
- package/dist/web/assets/plastic-DgvX8DXX.js.gz +0 -0
- package/dist/web/assets/plsql-CTDnCVE3.js.br +0 -0
- package/dist/web/assets/plsql-CTDnCVE3.js.gz +0 -0
- package/dist/web/assets/po-DDnzm7AQ.js.br +0 -0
- package/dist/web/assets/po-DDnzm7AQ.js.gz +0 -0
- package/dist/web/assets/poimandres-C4HQwFp-.js.br +0 -0
- package/dist/web/assets/poimandres-C4HQwFp-.js.gz +0 -0
- package/dist/web/assets/polar-WBTQdMzX.js.br +0 -0
- package/dist/web/assets/polar-WBTQdMzX.js.gz +0 -0
- package/dist/web/assets/postcss-CWxogTg1.js.br +0 -0
- package/dist/web/assets/postcss-CWxogTg1.js.gz +0 -0
- package/dist/web/assets/postgres-viewer-HwlL1UTJ.js.br +0 -0
- package/dist/web/assets/postgres-viewer-HwlL1UTJ.js.gz +0 -0
- package/dist/web/assets/powerquery-DVtReIRR.js.br +0 -0
- package/dist/web/assets/powerquery-DVtReIRR.js.gz +0 -0
- package/dist/web/assets/powershell-Cb_RNzSh.js.br +0 -0
- package/dist/web/assets/powershell-Cb_RNzSh.js.gz +0 -0
- package/dist/web/assets/{ppmbot-settings-section-CHr2FIDj.js → ppmbot-settings-section-DF0kqdyO.js} +1 -1
- package/dist/web/assets/ppmbot-settings-section-DF0kqdyO.js.br +0 -0
- package/dist/web/assets/ppmbot-settings-section-DF0kqdyO.js.gz +0 -0
- package/dist/web/assets/pptx-export-D6DOknBD.js.br +0 -0
- package/dist/web/assets/pptx-export-D6DOknBD.js.gz +0 -0
- package/dist/web/assets/prisma-nKLUh3DY.js.br +0 -0
- package/dist/web/assets/prisma-nKLUh3DY.js.gz +0 -0
- package/dist/web/assets/{problems-panel-41z59l78.js → problems-panel-DRcq5ChN.js} +1 -1
- package/dist/web/assets/problems-panel-DRcq5ChN.js.br +0 -0
- package/dist/web/assets/problems-panel-DRcq5ChN.js.gz +0 -0
- package/dist/web/assets/{process-table-CVMEMJqQ.js → process-table-Ds0S_YK-.js} +1 -1
- package/dist/web/assets/process-table-Ds0S_YK-.js.br +0 -0
- package/dist/web/assets/process-table-Ds0S_YK-.js.gz +0 -0
- package/dist/web/assets/project-store-C5gJXkvb.js.br +0 -0
- package/dist/web/assets/project-store-C5gJXkvb.js.gz +0 -0
- package/dist/web/assets/prolog-BD9orEy4.js.br +0 -0
- package/dist/web/assets/prolog-BD9orEy4.js.gz +0 -0
- package/dist/web/assets/proto-B-AFoz75.js.br +0 -0
- package/dist/web/assets/proto-B-AFoz75.js.gz +0 -0
- package/dist/web/assets/{proxy-settings-section-B4dkvCCx.js → proxy-settings-section-Q-ttqVOa.js} +1 -1
- package/dist/web/assets/proxy-settings-section-Q-ttqVOa.js.br +0 -0
- package/dist/web/assets/proxy-settings-section-Q-ttqVOa.js.gz +0 -0
- package/dist/web/assets/pug-IMA1knL7.js.br +0 -0
- package/dist/web/assets/pug-IMA1knL7.js.gz +0 -0
- package/dist/web/assets/puppet-DDW6wWm4.js.br +0 -0
- package/dist/web/assets/puppet-DDW6wWm4.js.gz +0 -0
- package/dist/web/assets/purescript-DXy49AJg.js.br +0 -0
- package/dist/web/assets/purescript-DXy49AJg.js.gz +0 -0
- package/dist/web/assets/python-BQnvDlc7.js.br +0 -0
- package/dist/web/assets/python-BQnvDlc7.js.gz +0 -0
- package/dist/web/assets/qml-DuwVuXga.js.br +0 -0
- package/dist/web/assets/qml-DuwVuXga.js.gz +0 -0
- package/dist/web/assets/qss-8XaprLEt.js.br +0 -0
- package/dist/web/assets/qss-8XaprLEt.js.gz +0 -0
- package/dist/web/assets/query-audit-section-Cn11xqgz.js.br +0 -0
- package/dist/web/assets/query-audit-section-Cn11xqgz.js.gz +0 -0
- package/dist/web/assets/r-DsXT2lmn.js.br +0 -0
- package/dist/web/assets/r-DsXT2lmn.js.gz +0 -0
- package/dist/web/assets/racket-ChcVp15M.js.br +0 -0
- package/dist/web/assets/racket-ChcVp15M.js.gz +0 -0
- package/dist/web/assets/raku-dEgEXW0A.js.br +0 -0
- package/dist/web/assets/raku-dEgEXW0A.js.gz +0 -0
- package/dist/web/assets/razor-Be4LE-G0.js.br +0 -0
- package/dist/web/assets/razor-Be4LE-G0.js.gz +0 -0
- package/dist/web/assets/red-hmwjontD.js.br +0 -0
- package/dist/web/assets/red-hmwjontD.js.gz +0 -0
- package/dist/web/assets/reg-CIkOufh2.js.br +0 -0
- package/dist/web/assets/reg-CIkOufh2.js.gz +0 -0
- package/dist/web/assets/regexp-ztLDvplH.js.br +0 -0
- package/dist/web/assets/regexp-ztLDvplH.js.gz +0 -0
- package/dist/web/assets/rel-NXKKDiTi.js.br +0 -0
- package/dist/web/assets/rel-NXKKDiTi.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-clipboard-notice-Co4vEiiB.js → remote-desktop-clipboard-notice-CvPPtrRq.js} +1 -1
- package/dist/web/assets/remote-desktop-clipboard-notice-CvPPtrRq.js.br +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-CvPPtrRq.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-mobile-sheet-Cv4yo7K4.js → remote-desktop-mobile-sheet-B-TT9Fdt.js} +2 -2
- package/dist/web/assets/remote-desktop-mobile-sheet-B-TT9Fdt.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-B-TT9Fdt.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-mobile-view-CcuulHIu.js → remote-desktop-mobile-view-hUnYxXDk.js} +1 -1
- package/dist/web/assets/remote-desktop-mobile-view-hUnYxXDk.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-hUnYxXDk.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-readiness-gate-ouPRvBlu.js → remote-desktop-readiness-gate-CUmaeiX9.js} +1 -1
- package/dist/web/assets/remote-desktop-readiness-gate-CUmaeiX9.js.br +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate-CUmaeiX9.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-window-content-DmH3jBuG.js → remote-desktop-window-content-DEPUOOGw.js} +1 -1
- package/dist/web/assets/remote-desktop-window-content-DEPUOOGw.js.br +0 -0
- package/dist/web/assets/remote-desktop-window-content-DEPUOOGw.js.gz +0 -0
- package/dist/web/assets/resolve-theme-B87m6l4i.js.br +0 -0
- package/dist/web/assets/resolve-theme-B87m6l4i.js.gz +0 -0
- package/dist/web/assets/riscv-BEIzhPcg.js.br +0 -0
- package/dist/web/assets/riscv-BEIzhPcg.js.gz +0 -0
- package/dist/web/assets/rolldown-runtime-C5c2KzVm.js.br +0 -0
- package/dist/web/assets/rolldown-runtime-C5c2KzVm.js.gz +0 -0
- package/dist/web/assets/ron-CW2Bt8rN.js.br +0 -0
- package/dist/web/assets/ron-CW2Bt8rN.js.gz +0 -0
- package/dist/web/assets/rose-pine-DhnBfr5a.js.br +0 -0
- package/dist/web/assets/rose-pine-DhnBfr5a.js.gz +0 -0
- package/dist/web/assets/rose-pine-dawn-Jyj59rVs.js.br +0 -0
- package/dist/web/assets/rose-pine-dawn-Jyj59rVs.js.gz +0 -0
- package/dist/web/assets/rose-pine-moon-BMulxhJC.js.br +0 -0
- package/dist/web/assets/rose-pine-moon-BMulxhJC.js.gz +0 -0
- package/dist/web/assets/rosmsg-DuctJm-Q.js.br +0 -0
- package/dist/web/assets/rosmsg-DuctJm-Q.js.gz +0 -0
- package/dist/web/assets/rst-BdtOZUlL.js.br +0 -0
- package/dist/web/assets/rst-BdtOZUlL.js.gz +0 -0
- package/dist/web/assets/ruby-DTna6e9n.js.br +0 -0
- package/dist/web/assets/ruby-DTna6e9n.js.gz +0 -0
- package/dist/web/assets/rust-FbJ2fCp9.js.br +0 -0
- package/dist/web/assets/rust-FbJ2fCp9.js.gz +0 -0
- package/dist/web/assets/sas-X50YKLBX.js.br +0 -0
- package/dist/web/assets/sas-X50YKLBX.js.gz +0 -0
- package/dist/web/assets/sass-Dfxwdu2h.js.br +0 -0
- package/dist/web/assets/sass-Dfxwdu2h.js.gz +0 -0
- package/dist/web/assets/scala-ClsSR0wG.js.br +0 -0
- package/dist/web/assets/scala-ClsSR0wG.js.gz +0 -0
- package/dist/web/assets/{schedules-settings-section-Dy6hARk0.js → schedules-settings-section-Bv_wrzDp.js} +1 -1
- package/dist/web/assets/schedules-settings-section-Bv_wrzDp.js.br +0 -0
- package/dist/web/assets/schedules-settings-section-Bv_wrzDp.js.gz +0 -0
- package/dist/web/assets/scheme-Jj_Cc-8H.js.br +0 -0
- package/dist/web/assets/scheme-Jj_Cc-8H.js.gz +0 -0
- package/dist/web/assets/scroll-area-xAtds1T-.js.br +0 -0
- package/dist/web/assets/scroll-area-xAtds1T-.js.gz +0 -0
- package/dist/web/assets/scss-cQk9zuqD.js.br +0 -0
- package/dist/web/assets/scss-cQk9zuqD.js.gz +0 -0
- package/dist/web/assets/sdbl-Bi8D_DGN.js.br +0 -0
- package/dist/web/assets/sdbl-Bi8D_DGN.js.gz +0 -0
- package/dist/web/assets/send-to-chat-TSKk3fI9.js.br +0 -0
- package/dist/web/assets/send-to-chat-TSKk3fI9.js.gz +0 -0
- package/dist/web/assets/{settings-body-CZSwxG0i.js → settings-body-C5_chEpq.js} +2 -2
- package/dist/web/assets/settings-body-C5_chEpq.js.br +0 -0
- package/dist/web/assets/settings-body-C5_chEpq.js.gz +0 -0
- package/dist/web/assets/settings-store-DXmQug0m.js.br +0 -0
- package/dist/web/assets/settings-store-DXmQug0m.js.gz +0 -0
- package/dist/web/assets/{settings-tab-B_WPC-y7.js → settings-tab-CogpEbq5.js} +1 -1
- package/dist/web/assets/{settings-window-content-CSWdwQn1.js → settings-window-content-BNRirQDZ.js} +1 -1
- package/dist/web/assets/shaderlab-CSeOcwk6.js.br +0 -0
- package/dist/web/assets/shaderlab-CSeOcwk6.js.gz +0 -0
- package/dist/web/assets/shellscript-Dtzjnpp9.js.br +0 -0
- package/dist/web/assets/shellscript-Dtzjnpp9.js.gz +0 -0
- package/dist/web/assets/slack-dark-B7gbmJT9.js.br +0 -0
- package/dist/web/assets/slack-dark-B7gbmJT9.js.gz +0 -0
- package/dist/web/assets/slack-ochin-O7j_c76D.js.br +0 -0
- package/dist/web/assets/slack-ochin-O7j_c76D.js.gz +0 -0
- package/dist/web/assets/smalltalk-BD5-U3JK.js.br +0 -0
- package/dist/web/assets/smalltalk-BD5-U3JK.js.gz +0 -0
- package/dist/web/assets/snazzy-light-BbiRB69_.js.br +0 -0
- package/dist/web/assets/snazzy-light-BbiRB69_.js.gz +0 -0
- package/dist/web/assets/solarized-dark-2OWHYEBu.js.br +0 -0
- package/dist/web/assets/solarized-dark-2OWHYEBu.js.gz +0 -0
- package/dist/web/assets/solarized-light-Cew4YqT3.js.br +0 -0
- package/dist/web/assets/solarized-light-Cew4YqT3.js.gz +0 -0
- package/dist/web/assets/solidity-Bpbne2Tx.js.br +0 -0
- package/dist/web/assets/solidity-Bpbne2Tx.js.gz +0 -0
- package/dist/web/assets/soy-DeMex-y3.js.br +0 -0
- package/dist/web/assets/soy-DeMex-y3.js.gz +0 -0
- package/dist/web/assets/sparql-CDZTYDwx.js.br +0 -0
- package/dist/web/assets/sparql-CDZTYDwx.js.gz +0 -0
- package/dist/web/assets/splunk-Dq86L1_O.js.br +0 -0
- package/dist/web/assets/splunk-Dq86L1_O.js.gz +0 -0
- package/dist/web/assets/sql-BS_vTOM8.js.br +0 -0
- package/dist/web/assets/sql-BS_vTOM8.js.gz +0 -0
- package/dist/web/assets/{sql-query-editor-6Ee_Zn5j.js → sql-query-editor-Bg3lOrmt.js} +1 -1
- package/dist/web/assets/sql-query-editor-Bg3lOrmt.js.br +0 -0
- package/dist/web/assets/sql-query-editor-Bg3lOrmt.js.gz +0 -0
- package/dist/web/assets/{sqlite-viewer-Cj0S_m9V.js → sqlite-viewer-DMKtDkI6.js} +1 -1
- package/dist/web/assets/sqlite-viewer-DMKtDkI6.js.br +0 -0
- package/dist/web/assets/sqlite-viewer-DMKtDkI6.js.gz +0 -0
- package/dist/web/assets/ssh-config-j5hsMvbs.js.br +0 -0
- package/dist/web/assets/ssh-config-j5hsMvbs.js.gz +0 -0
- package/dist/web/assets/stata-PkjbLwNy.js.br +0 -0
- package/dist/web/assets/stata-PkjbLwNy.js.gz +0 -0
- package/dist/web/assets/stylus-DWhCIBg0.js.br +0 -0
- package/dist/web/assets/stylus-DWhCIBg0.js.gz +0 -0
- package/dist/web/assets/surrealql-BJ6bKPXV.js.br +0 -0
- package/dist/web/assets/surrealql-BJ6bKPXV.js.gz +0 -0
- package/dist/web/assets/svelte-D4u1sGpe.js.br +0 -0
- package/dist/web/assets/svelte-D4u1sGpe.js.gz +0 -0
- package/dist/web/assets/swift-29fG5ztW.js.br +0 -0
- package/dist/web/assets/swift-29fG5ztW.js.gz +0 -0
- package/dist/web/assets/synthwave-84-DraIUmiw.js.br +0 -0
- package/dist/web/assets/synthwave-84-DraIUmiw.js.gz +0 -0
- package/dist/web/assets/{system-monitor-body-PQqXdK4a.js → system-monitor-body-Dst39LA7.js} +2 -2
- package/dist/web/assets/system-monitor-body-Dst39LA7.js.br +0 -0
- package/dist/web/assets/system-monitor-body-Dst39LA7.js.gz +0 -0
- package/dist/web/assets/{system-monitor-tab-BEjvgQuQ.js → system-monitor-tab-CEwME1_C.js} +1 -1
- package/dist/web/assets/{system-monitor-window-content-DZwvvN-M.js → system-monitor-window-content-DQRBjn9z.js} +1 -1
- package/dist/web/assets/system-verilog-DqcJAWq_.js.br +0 -0
- package/dist/web/assets/system-verilog-DqcJAWq_.js.gz +0 -0
- package/dist/web/assets/systemd-BUPJrx1D.js.br +0 -0
- package/dist/web/assets/systemd-BUPJrx1D.js.gz +0 -0
- package/dist/web/assets/{tab-host-window-content-CnV4Z4Yt.js → tab-host-window-content-Dlunzrfh.js} +1 -1
- package/dist/web/assets/tab-host-window-content-Dlunzrfh.js.br +0 -0
- package/dist/web/assets/tab-host-window-content-Dlunzrfh.js.gz +0 -0
- package/dist/web/assets/talonscript-BGYbnAKh.js.br +0 -0
- package/dist/web/assets/talonscript-BGYbnAKh.js.gz +0 -0
- package/dist/web/assets/tasl-CwbSJqng.js.br +0 -0
- package/dist/web/assets/tasl-CwbSJqng.js.gz +0 -0
- package/dist/web/assets/tcl-Ba9376wa.js.br +0 -0
- package/dist/web/assets/tcl-Ba9376wa.js.gz +0 -0
- package/dist/web/assets/{team-member-sheet-8EVCTM-X.js → team-member-sheet-CPZGU9j5.js} +2 -2
- package/dist/web/assets/team-member-sheet-CPZGU9j5.js.br +0 -0
- package/dist/web/assets/team-member-sheet-CPZGU9j5.js.gz +0 -0
- package/dist/web/assets/{team-member-window-content-Bc0ydBAn.js → team-member-window-content-CwI9JD_H.js} +1 -1
- package/dist/web/assets/team-member-window-content-CwI9JD_H.js.br +0 -0
- package/dist/web/assets/team-member-window-content-CwI9JD_H.js.gz +0 -0
- package/dist/web/assets/templ-vtFoIgGG.js.br +0 -0
- package/dist/web/assets/templ-vtFoIgGG.js.gz +0 -0
- package/dist/web/assets/{terminal-tab-0b63-txz.js → terminal-tab-BcQXleSa.js} +1 -1
- package/dist/web/assets/terminal-tab-BcQXleSa.js.br +0 -0
- package/dist/web/assets/terminal-tab-BcQXleSa.js.gz +0 -0
- package/dist/web/assets/terraform-ChSasWu8.js.br +0 -0
- package/dist/web/assets/terraform-ChSasWu8.js.gz +0 -0
- package/dist/web/assets/tex-o6JLe3Qo.js.br +0 -0
- package/dist/web/assets/tex-o6JLe3Qo.js.gz +0 -0
- package/dist/web/assets/tokyo-night-Bbw1Yguv.js.br +0 -0
- package/dist/web/assets/tokyo-night-Bbw1Yguv.js.gz +0 -0
- package/dist/web/assets/toml-CYb7zi5B.js.br +0 -0
- package/dist/web/assets/toml-CYb7zi5B.js.gz +0 -0
- package/dist/web/assets/{tool-cards-C09WknHl.js → tool-cards-DsQdMorI.js} +2 -2
- package/dist/web/assets/tool-cards-DsQdMorI.js.br +0 -0
- package/dist/web/assets/tool-cards-DsQdMorI.js.gz +0 -0
- package/dist/web/assets/ts-tags-DkmPnhIx.js.br +0 -0
- package/dist/web/assets/ts-tags-DkmPnhIx.js.gz +0 -0
- package/dist/web/assets/tsx-BUq9xm2T.js.br +0 -0
- package/dist/web/assets/tsx-BUq9xm2T.js.gz +0 -0
- package/dist/web/assets/turtle-DIoQTATC.js.br +0 -0
- package/dist/web/assets/turtle-DIoQTATC.js.gz +0 -0
- package/dist/web/assets/twig-I9ja_Rk_.js.br +0 -0
- package/dist/web/assets/twig-I9ja_Rk_.js.gz +0 -0
- package/dist/web/assets/typescript-CP3RLBKz.js.br +0 -0
- package/dist/web/assets/typescript-CP3RLBKz.js.gz +0 -0
- package/dist/web/assets/typespec-Dpr1bC2k.js.br +0 -0
- package/dist/web/assets/typespec-Dpr1bC2k.js.gz +0 -0
- package/dist/web/assets/typst-D4WMCDMn.js.br +0 -0
- package/dist/web/assets/typst-D4WMCDMn.js.gz +0 -0
- package/dist/web/assets/{use-inline-blame-BuAc9IXE.js → use-inline-blame--fS-pzzX.js} +1 -1
- package/dist/web/assets/use-inline-blame--fS-pzzX.js.br +0 -0
- package/dist/web/assets/use-inline-blame--fS-pzzX.js.gz +0 -0
- package/dist/web/assets/{use-lsp-DAtq1G0M.js → use-lsp-DK26Eter.js} +1 -1
- package/dist/web/assets/use-lsp-DK26Eter.js.br +0 -0
- package/dist/web/assets/use-lsp-DK26Eter.js.gz +0 -0
- package/dist/web/assets/{use-monaco-theme-Ch_znquJ.js → use-monaco-theme-BVatH9yZ.js} +1 -1
- package/dist/web/assets/{use-websocket-DGEOad8p.js → use-websocket-C1mloX0R.js} +1 -1
- package/dist/web/assets/utils-btZ8C8-R.js.br +0 -0
- package/dist/web/assets/utils-btZ8C8-R.js.gz +0 -0
- package/dist/web/assets/v-B1wY-VFU.js.br +0 -0
- package/dist/web/assets/v-B1wY-VFU.js.gz +0 -0
- package/dist/web/assets/vala-BKqhrirP.js.br +0 -0
- package/dist/web/assets/vala-BKqhrirP.js.gz +0 -0
- package/dist/web/assets/vb-S9PHCa7-.js.br +0 -0
- package/dist/web/assets/vb-S9PHCa7-.js.gz +0 -0
- package/dist/web/assets/vendor-markdown-QKPNiWEd.js.br +0 -0
- package/dist/web/assets/vendor-markdown-QKPNiWEd.js.gz +0 -0
- package/dist/web/assets/vendor-mermaid-eg2XWIjK.js.br +0 -0
- package/dist/web/assets/vendor-mermaid-eg2XWIjK.js.gz +0 -0
- package/dist/web/assets/vendor-ui-BHh12_0v.js.br +0 -0
- package/dist/web/assets/vendor-ui-BHh12_0v.js.gz +0 -0
- package/dist/web/assets/vendor-xterm-BHKF_Nsf.js.br +0 -0
- package/dist/web/assets/vendor-xterm-BHKF_Nsf.js.gz +0 -0
- package/dist/web/assets/vendor-xterm-DkTCHfhq.css.br +0 -0
- package/dist/web/assets/vendor-xterm-DkTCHfhq.css.gz +0 -0
- package/dist/web/assets/verilog-CrztYl3V.js.br +0 -0
- package/dist/web/assets/verilog-CrztYl3V.js.gz +0 -0
- package/dist/web/assets/vesper-C5KfcyFv.js.br +0 -0
- package/dist/web/assets/vesper-C5KfcyFv.js.gz +0 -0
- package/dist/web/assets/vhdl-D0qMeIJu.js.br +0 -0
- package/dist/web/assets/vhdl-D0qMeIJu.js.gz +0 -0
- package/dist/web/assets/{video-preview-DH3RtwVT.js → video-preview-C48Go7JZ.js} +1 -1
- package/dist/web/assets/video-preview-C48Go7JZ.js.br +0 -0
- package/dist/web/assets/video-preview-C48Go7JZ.js.gz +0 -0
- package/dist/web/assets/viml-Dsv9mRPK.js.br +0 -0
- package/dist/web/assets/viml-Dsv9mRPK.js.gz +0 -0
- package/dist/web/assets/vitesse-black-rJvNN5GN.js.br +0 -0
- package/dist/web/assets/vitesse-black-rJvNN5GN.js.gz +0 -0
- package/dist/web/assets/vitesse-dark-CYp0WWjf.js.br +0 -0
- package/dist/web/assets/vitesse-dark-CYp0WWjf.js.gz +0 -0
- package/dist/web/assets/vitesse-light-BczSAvzE.js.br +0 -0
- package/dist/web/assets/vitesse-light-BczSAvzE.js.gz +0 -0
- package/dist/web/assets/vue-DJf-APPD.js.br +0 -0
- package/dist/web/assets/vue-DJf-APPD.js.gz +0 -0
- package/dist/web/assets/vue-html-DUJ89Ycn.js.br +0 -0
- package/dist/web/assets/vue-html-DUJ89Ycn.js.gz +0 -0
- package/dist/web/assets/vue-vine-CWUFwuRE.js.br +0 -0
- package/dist/web/assets/vue-vine-CWUFwuRE.js.gz +0 -0
- package/dist/web/assets/vyper-DM7bKz7E.js.br +0 -0
- package/dist/web/assets/vyper-DM7bKz7E.js.gz +0 -0
- package/dist/web/assets/wasm-BXCHhbrz.js.br +0 -0
- package/dist/web/assets/wasm-BXCHhbrz.js.gz +0 -0
- package/dist/web/assets/wasm-CAJoqhGc.js.br +0 -0
- package/dist/web/assets/wasm-CAJoqhGc.js.gz +0 -0
- package/dist/web/assets/wenyan-NQ8fdbEq.js.br +0 -0
- package/dist/web/assets/wenyan-NQ8fdbEq.js.gz +0 -0
- package/dist/web/assets/wgsl-C88C7vmC.js.br +0 -0
- package/dist/web/assets/wgsl-C88C7vmC.js.gz +0 -0
- package/dist/web/assets/wikitext-D92r7uX8.js.br +0 -0
- package/dist/web/assets/wikitext-D92r7uX8.js.gz +0 -0
- package/dist/web/assets/window-store-B4cbZ5rr.js.br +0 -0
- package/dist/web/assets/window-store-B4cbZ5rr.js.gz +0 -0
- package/dist/web/assets/wit-DNvTfQjW.js.br +0 -0
- package/dist/web/assets/wit-DNvTfQjW.js.gz +0 -0
- package/dist/web/assets/wolfram-CNS5lCGj.js.br +0 -0
- package/dist/web/assets/wolfram-CNS5lCGj.js.gz +0 -0
- package/dist/web/assets/xml-DshhaDKq.js.br +0 -0
- package/dist/web/assets/xml-DshhaDKq.js.gz +0 -0
- package/dist/web/assets/xsl-BlRNlmF7.js.br +0 -0
- package/dist/web/assets/xsl-BlRNlmF7.js.gz +0 -0
- package/dist/web/assets/yaml-seUOGdyI.js.br +0 -0
- package/dist/web/assets/yaml-seUOGdyI.js.gz +0 -0
- package/dist/web/assets/zenscript-B_rGi-H_.js.br +0 -0
- package/dist/web/assets/zenscript-B_rGi-H_.js.gz +0 -0
- package/dist/web/assets/zig-BRi9UYQa.js.br +0 -0
- package/dist/web/assets/zig-BRi9UYQa.js.gz +0 -0
- package/dist/web/index.html +2 -2
- package/dist/web/index.html.br +0 -0
- package/dist/web/index.html.gz +0 -0
- package/dist/web/sw.js +1 -1
- package/dist/web/sw.js.br +0 -0
- package/dist/web/sw.js.gz +0 -0
- package/package.json +1 -1
- package/scripts/check-ppm-dir-usage.sh +0 -0
- package/scripts/install.sh +0 -0
- package/scripts/release.sh +0 -0
- package/src/providers/codex-app-server/codex-auth-failure.ts +51 -0
- package/src/providers/codex-app-server/codex-event-mapper.ts +8 -0
- package/src/providers/codex-app-server/codex-provider.ts +97 -19
- package/src/providers/codex-app-server/codex-usage-source.ts +14 -1
- package/src/server/routes/codex-accounts.ts +18 -6
- package/src/services/codex-account-auth-state.ts +58 -0
- package/src/services/codex-account-login.ts +42 -9
- package/src/services/codex-account.service.ts +42 -7
- package/src/services/proxy-agent-anthropic-bridge.ts +2 -2
- package/src/services/proxy-agent-bridge.ts +2 -2
- package/src/services/proxy-agent-turn.ts +80 -20
- package/src/services/proxy-image-bridge.ts +3 -3
- package/src/services/proxy.service.ts +1 -1
- package/src/web/components/chat/codex-usage-panel.tsx +13 -1
- package/src/web/components/chat/usage-badge.tsx +14 -0
- package/src/web/components/settings/accounts/account-add-dialog.tsx +10 -3
- package/src/web/components/settings/accounts/account-card.tsx +15 -4
- package/src/web/components/settings/accounts/account-hint.tsx +19 -2
- package/src/web/components/settings/accounts/claude-accounts-section.tsx +10 -2
- package/src/web/components/settings/accounts/codex-accounts-section.tsx +18 -2
- package/src/web/components/settings/accounts/codex-add-account-dialog.tsx +50 -33
- package/src/web/components/settings/accounts/codex-sign-in-again-dialog.tsx +47 -0
- package/src/web/components/settings/accounts/use-codex-accounts.ts +18 -4
- package/dist/web/assets/accounts-settings-section-BR7t8CEk.js +0 -1
- package/dist/web/assets/chat-tab-MdU9Jr3F.js +0 -15
- package/dist/web/assets/codex-daily-guard-B21M4m-P.js +0 -1
- package/dist/web/assets/index-CzYrKDUF.css +0 -1
package/dist/web/assets/{ppmbot-settings-section-CHr2FIDj.js → ppmbot-settings-section-DF0kqdyO.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-BHh12_0v.js";import{J as r,Mr as i,T as a,b as o,dr as s,ir as c}from"./icons-CO_II6D-.js";import{n as l}from"./api-client-c8YOpTlT.js";import{t as u}from"./button-CBehaXpV.js";import{t as d}from"./input-CP31LZnN.js";import{dt as f}from"./index-DSbUqWiH.js";import{t as p}from"./separator-D8SNZI6E.js";var m=e(t(),1),h=n();function g(){let[e,t]=(0,m.useState)(null),[n,g]=(0,m.useState)(!1),[_,v]=(0,m.useState)(null),[y,b]=(0,m.useState)(``),[x,S]=(0,m.useState)(!1),[C,w]=(0,m.useState)(!1),[T,E]=(0,m.useState)(!1),[D,O]=(0,m.useState)(``),[k,A]=(0,m.useState)(!0),[j,M]=(0,m.useState)(!1),[N,P]=(0,m.useState)(2e3),[F,I]=(0,m.useState)([]),[L,R]=(0,m.useState)(``),[z,B]=(0,m.useState)(!1),[V,H]=(0,m.useState)(!1),[U,W]=(0,m.useState)([]),[G,ee]=(0,m.useState)(`_global`),[K,q]=(0,m.useState)([]),J=(0,m.useRef)(void 0),Y=(0,m.useCallback)(async()=>{try{I(await l.get(`/api/settings/clawbot/paired`))}catch{}},[]),X=(0,m.useCallback)(async(e=G)=>{try{W(await l.get(`/api/settings/clawbot/memories?project=${encodeURIComponent(e)}`))}catch{}},[G]),Z=(0,m.useCallback)(async()=>{try{q(await l.get(`/api/settings/clawbot/tasks?limit=20`))}catch{}},[]),Q=async e=>{try{await l.del(`/api/settings/clawbot/memories/${e}`),W(t=>t.filter(t=>t.id!==e))}catch{}};(0,m.useEffect)(()=>(l.get(`/api/settings/clawbot`).then(e=>{t(e),E(e.enabled),O(e.system_prompt),A(e.show_tool_calls),M(e.show_thinking),P(e.debounce_ms)}).catch(()=>{}),l.get(`/api/settings/telegram`).then(e=>{S(!!e.bot_token)}).catch(()=>{}),Y(),X(`_global`),Z(),J.current=setInterval(Z,1e4),()=>{J.current&&clearInterval(J.current)}),[Y,X,Z]);let $=async()=>{if(y.trim()){w(!0),v(null);try{await l.put(`/api/settings/telegram`,{bot_token:y}),S(!0),b(``),v({type:`ok`,msg:`Bot token saved`})}catch(e){v({type:`err`,msg:e.message})}finally{w(!1)}}},te=async()=>{g(!0),v(null);try{let e={enabled:T,system_prompt:D,show_tool_calls:k,show_thinking:j,debounce_ms:N};t(await l.put(`/api/settings/clawbot`,e)),v({type:`ok`,msg:T?`Saved — bot started`:`Saved — bot stopped`})}catch(e){v({type:`err`,msg:e.message})}finally{g(!1)}},ne=async()=>{if(L.trim()){B(!0);try{await l.post(`/api/settings/clawbot/paired/approve`,{code:L.trim().toUpperCase()}),R(``),await Y(),v({type:`ok`,msg:`Device approved`})}catch(e){v({type:`err`,msg:e.message})}finally{B(!1)}}},re=async e=>{try{await l.del(`/api/settings/clawbot/paired/${e}`),await Y(),v({type:`ok`,msg:`Device revoked`})}catch(e){v({type:`err`,msg:e.message})}},ie=async()=>{H(!0),v(null);try{await l.post(`/api/settings/telegram/test`,{}),v({type:`ok`,msg:`Test notification sent to all paired devices!`})}catch(e){v({type:`err`,msg:e.message})}finally{H(!1)}};if(!e)return(0,h.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading...`});let ae=F.filter(e=>e.status===`approved`).length,oe={pending:`⏳`,running:`🔄`,completed:`✅`,failed:`❌`,timeout:`⏱`},se={running:`text-primary`,completed:`text-success`,failed:`text-destructive`,timeout:`text-warning`};return(0,h.jsxs)(`div`,{className:`space-y-4`,children:[(0,h.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,h.jsx)(`label`,{className:`text-[11px] text-muted-foreground`,children:`Telegram Bot Token`}),(0,h.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,h.jsx)(d,{type:`password`,placeholder:x?`•••••• (saved)`:`123456:ABC-DEF...`,value:y,onChange:e=>b(e.target.value),className:`h-7 text-xs flex-1`}),(0,h.jsx)(u,{variant:`outline`,size:`sm`,className:`h-7 text-xs shrink-0 cursor-pointer`,disabled:C||!y.trim(),onClick:$,children:C?`...`:`Save`})]}),(0,h.jsxs)(`p`,{className:`text-[10px] text-muted-foreground`,children:[`Create a bot via `,(0,h.jsx)(`b`,{children:`@BotFather`}),` on Telegram. Used for both chat and notifications.`]})]}),(0,h.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`p`,{className:`text-xs font-medium`,children:`Enable PPMBot`}),(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`AI coordinator on Telegram — delegates tasks to your projects`})]}),(0,h.jsx)(f,{checked:T,onCheckedChange:E})]}),(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsx)(`p`,{className:`text-xs font-medium`,children:`Paired Devices`}),(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Send any message to the bot on Telegram to get a pairing code. Enter it below to approve. Notifications are sent to all approved devices.`}),(0,h.jsxs)(`div`,{className:`flex gap-2`,children:[(0,h.jsx)(d,{placeholder:`Enter pairing code (e.g. A3K7WR)`,value:L,onChange:e=>R(e.target.value.toUpperCase()),className:`h-8 text-xs font-mono tracking-wider uppercase`,maxLength:6}),(0,h.jsx)(u,{variant:`outline`,size:`sm`,className:`h-8 text-xs shrink-0 cursor-pointer`,disabled:z||L.length<6,onClick:ne,children:z?`...`:`Approve`})]}),F.length===0?(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground italic`,children:`No paired devices yet.`}):(0,h.jsx)(`div`,{className:`space-y-1`,children:F.map(e=>(0,h.jsxs)(`div`,{className:`flex items-center justify-between rounded-md border p-2`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[e.status===`approved`?(0,h.jsx)(a,{className:`size-3.5 text-success shrink-0`}):(0,h.jsx)(r,{className:`size-3.5 text-warning shrink-0`}),(0,h.jsxs)(`div`,{className:`min-w-0`,children:[(0,h.jsx)(`p`,{className:`text-xs truncate`,children:e.display_name||`Chat ${e.telegram_chat_id}`}),(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:e.status===`pending`&&e.pairing_code?`Code: ${e.pairing_code}`:e.status})]})]}),(0,h.jsx)(u,{variant:`ghost`,size:`sm`,className:`h-7 w-7 p-0 text-destructive hover:text-destructive cursor-pointer`,onClick:()=>re(e.telegram_chat_id),children:(0,h.jsx)(i,{className:`size-3.5`})})]},e.id))}),x&&ae>0&&(0,h.jsxs)(u,{variant:`outline`,size:`sm`,className:`h-7 text-xs gap-1 w-full cursor-pointer`,disabled:V,onClick:ie,children:[(0,h.jsx)(s,{className:`size-3`}),V?`Sending...`:`Test Notification`]})]}),(0,h.jsx)(p,{}),(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,h.jsx)(`p`,{className:`text-xs font-medium`,children:`Delegated Tasks`}),(0,h.jsx)(u,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 cursor-pointer`,onClick:Z,children:(0,h.jsx)(c,{className:`size-3`})})]}),K.length===0?(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground italic`,children:`No delegated tasks yet. The coordinator will create tasks when you ask it to work on a project.`}):(0,h.jsx)(`div`,{className:`space-y-1 max-h-[200px] overflow-y-auto`,children:K.map(e=>{let t=e.completed_at?`${Math.round((e.completed_at-e.created_at)/60)}m`:`${Math.round((Date.now()/1e3-e.created_at)/60)}m`;return(0,h.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border p-2 text-[11px]`,children:[(0,h.jsx)(`span`,{className:se[e.status]??``,children:oe[e.status]??`?`}),(0,h.jsx)(`span`,{className:`font-medium shrink-0`,children:e.project_name}),(0,h.jsx)(`span`,{className:`truncate text-muted-foreground flex-1`,children:e.prompt.slice(0,60)}),(0,h.jsx)(`span`,{className:`text-[10px] text-muted-foreground shrink-0`,children:t})]},e.id)})})]}),(0,h.jsx)(p,{}),(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,h.jsx)(o,{className:`size-3.5 text-muted-foreground`}),(0,h.jsx)(`p`,{className:`text-xs font-medium`,children:`Memory & Identity`})]}),(0,h.jsx)(u,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 cursor-pointer`,onClick:()=>X(G),children:(0,h.jsx)(c,{className:`size-3`})})]}),(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Facts the bot remembers across sessions. Use /remember on Telegram to add, or delete here.`}),U.length===0?(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground italic`,children:`No memories stored yet. Send /start on Telegram and introduce yourself.`}):(0,h.jsx)(`div`,{className:`space-y-1 max-h-[200px] overflow-y-auto`,children:U.map(e=>(0,h.jsxs)(`div`,{className:`flex items-start justify-between rounded-md border p-2 gap-1`,children:[(0,h.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,h.jsx)(`p`,{className:`text-[11px] break-words`,children:e.content}),(0,h.jsxs)(`p`,{className:`text-[10px] text-muted-foreground`,children:[e.category,` · `,e.project]})]}),(0,h.jsx)(u,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 text-destructive hover:text-destructive cursor-pointer shrink-0`,onClick:()=>Q(e.id),children:(0,h.jsx)(i,{className:`size-3`})})]},e.id))})]}),(0,h.jsx)(p,{}),(0,h.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,h.jsx)(`label`,{className:`text-[11px] text-muted-foreground`,children:`Custom Instructions`}),(0,h.jsx)(`textarea`,{placeholder:`Additional instructions for the coordinator (optional)...`,value:D,onChange:e=>O(e.target.value),className:`flex w-full rounded-md border border-input bg-background px-3 py-2 text-xs min-h-[60px] resize-y ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,rows:3}),(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Extra instructions added to the coordinator identity. Leave empty to use defaults from coordinator.md.`})]}),(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,h.jsx)(`p`,{className:`text-xs`,children:`Show tool calls`}),(0,h.jsx)(f,{checked:k,onCheckedChange:A})]}),(0,h.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,h.jsx)(`p`,{className:`text-xs`,children:`Show thinking`}),(0,h.jsx)(f,{checked:j,onCheckedChange:M})]})]}),(0,h.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,h.jsx)(`label`,{className:`text-[11px] text-muted-foreground`,children:`Debounce (ms)`}),(0,h.jsx)(d,{type:`number`,min:0,max:3e4,step:500,value:N,onChange:e=>P(Number(e.target.value)),className:`h-7 text-xs w-24`}),(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Merge rapid messages within this window. 0 = no debounce.`})]}),(0,h.jsx)(u,{variant:`default`,size:`sm`,className:`h-8 text-xs w-full cursor-pointer`,disabled:n,onClick:te,children:n?`Saving...`:`Save`}),_&&(0,h.jsx)(`p`,{className:`text-[11px] ${_.type===`ok`?`text-success`:`text-destructive`}`,children:_.msg})]})}export{g as PPMBotSettingsSection};
|
|
1
|
+
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-BHh12_0v.js";import{J as r,Mr as i,T as a,b as o,dr as s,ir as c}from"./icons-CO_II6D-.js";import{n as l}from"./api-client-c8YOpTlT.js";import{t as u}from"./button-CBehaXpV.js";import{t as d}from"./input-CP31LZnN.js";import{dt as f}from"./index-CvUGUp7d.js";import{t as p}from"./separator-D8SNZI6E.js";var m=e(t(),1),h=n();function g(){let[e,t]=(0,m.useState)(null),[n,g]=(0,m.useState)(!1),[_,v]=(0,m.useState)(null),[y,b]=(0,m.useState)(``),[x,S]=(0,m.useState)(!1),[C,w]=(0,m.useState)(!1),[T,E]=(0,m.useState)(!1),[D,O]=(0,m.useState)(``),[k,A]=(0,m.useState)(!0),[j,M]=(0,m.useState)(!1),[N,P]=(0,m.useState)(2e3),[F,I]=(0,m.useState)([]),[L,R]=(0,m.useState)(``),[z,B]=(0,m.useState)(!1),[V,H]=(0,m.useState)(!1),[U,W]=(0,m.useState)([]),[G,ee]=(0,m.useState)(`_global`),[K,q]=(0,m.useState)([]),J=(0,m.useRef)(void 0),Y=(0,m.useCallback)(async()=>{try{I(await l.get(`/api/settings/clawbot/paired`))}catch{}},[]),X=(0,m.useCallback)(async(e=G)=>{try{W(await l.get(`/api/settings/clawbot/memories?project=${encodeURIComponent(e)}`))}catch{}},[G]),Z=(0,m.useCallback)(async()=>{try{q(await l.get(`/api/settings/clawbot/tasks?limit=20`))}catch{}},[]),Q=async e=>{try{await l.del(`/api/settings/clawbot/memories/${e}`),W(t=>t.filter(t=>t.id!==e))}catch{}};(0,m.useEffect)(()=>(l.get(`/api/settings/clawbot`).then(e=>{t(e),E(e.enabled),O(e.system_prompt),A(e.show_tool_calls),M(e.show_thinking),P(e.debounce_ms)}).catch(()=>{}),l.get(`/api/settings/telegram`).then(e=>{S(!!e.bot_token)}).catch(()=>{}),Y(),X(`_global`),Z(),J.current=setInterval(Z,1e4),()=>{J.current&&clearInterval(J.current)}),[Y,X,Z]);let $=async()=>{if(y.trim()){w(!0),v(null);try{await l.put(`/api/settings/telegram`,{bot_token:y}),S(!0),b(``),v({type:`ok`,msg:`Bot token saved`})}catch(e){v({type:`err`,msg:e.message})}finally{w(!1)}}},te=async()=>{g(!0),v(null);try{let e={enabled:T,system_prompt:D,show_tool_calls:k,show_thinking:j,debounce_ms:N};t(await l.put(`/api/settings/clawbot`,e)),v({type:`ok`,msg:T?`Saved — bot started`:`Saved — bot stopped`})}catch(e){v({type:`err`,msg:e.message})}finally{g(!1)}},ne=async()=>{if(L.trim()){B(!0);try{await l.post(`/api/settings/clawbot/paired/approve`,{code:L.trim().toUpperCase()}),R(``),await Y(),v({type:`ok`,msg:`Device approved`})}catch(e){v({type:`err`,msg:e.message})}finally{B(!1)}}},re=async e=>{try{await l.del(`/api/settings/clawbot/paired/${e}`),await Y(),v({type:`ok`,msg:`Device revoked`})}catch(e){v({type:`err`,msg:e.message})}},ie=async()=>{H(!0),v(null);try{await l.post(`/api/settings/telegram/test`,{}),v({type:`ok`,msg:`Test notification sent to all paired devices!`})}catch(e){v({type:`err`,msg:e.message})}finally{H(!1)}};if(!e)return(0,h.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading...`});let ae=F.filter(e=>e.status===`approved`).length,oe={pending:`⏳`,running:`🔄`,completed:`✅`,failed:`❌`,timeout:`⏱`},se={running:`text-primary`,completed:`text-success`,failed:`text-destructive`,timeout:`text-warning`};return(0,h.jsxs)(`div`,{className:`space-y-4`,children:[(0,h.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,h.jsx)(`label`,{className:`text-[11px] text-muted-foreground`,children:`Telegram Bot Token`}),(0,h.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,h.jsx)(d,{type:`password`,placeholder:x?`•••••• (saved)`:`123456:ABC-DEF...`,value:y,onChange:e=>b(e.target.value),className:`h-7 text-xs flex-1`}),(0,h.jsx)(u,{variant:`outline`,size:`sm`,className:`h-7 text-xs shrink-0 cursor-pointer`,disabled:C||!y.trim(),onClick:$,children:C?`...`:`Save`})]}),(0,h.jsxs)(`p`,{className:`text-[10px] text-muted-foreground`,children:[`Create a bot via `,(0,h.jsx)(`b`,{children:`@BotFather`}),` on Telegram. Used for both chat and notifications.`]})]}),(0,h.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`p`,{className:`text-xs font-medium`,children:`Enable PPMBot`}),(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`AI coordinator on Telegram — delegates tasks to your projects`})]}),(0,h.jsx)(f,{checked:T,onCheckedChange:E})]}),(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsx)(`p`,{className:`text-xs font-medium`,children:`Paired Devices`}),(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Send any message to the bot on Telegram to get a pairing code. Enter it below to approve. Notifications are sent to all approved devices.`}),(0,h.jsxs)(`div`,{className:`flex gap-2`,children:[(0,h.jsx)(d,{placeholder:`Enter pairing code (e.g. A3K7WR)`,value:L,onChange:e=>R(e.target.value.toUpperCase()),className:`h-8 text-xs font-mono tracking-wider uppercase`,maxLength:6}),(0,h.jsx)(u,{variant:`outline`,size:`sm`,className:`h-8 text-xs shrink-0 cursor-pointer`,disabled:z||L.length<6,onClick:ne,children:z?`...`:`Approve`})]}),F.length===0?(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground italic`,children:`No paired devices yet.`}):(0,h.jsx)(`div`,{className:`space-y-1`,children:F.map(e=>(0,h.jsxs)(`div`,{className:`flex items-center justify-between rounded-md border p-2`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[e.status===`approved`?(0,h.jsx)(a,{className:`size-3.5 text-success shrink-0`}):(0,h.jsx)(r,{className:`size-3.5 text-warning shrink-0`}),(0,h.jsxs)(`div`,{className:`min-w-0`,children:[(0,h.jsx)(`p`,{className:`text-xs truncate`,children:e.display_name||`Chat ${e.telegram_chat_id}`}),(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:e.status===`pending`&&e.pairing_code?`Code: ${e.pairing_code}`:e.status})]})]}),(0,h.jsx)(u,{variant:`ghost`,size:`sm`,className:`h-7 w-7 p-0 text-destructive hover:text-destructive cursor-pointer`,onClick:()=>re(e.telegram_chat_id),children:(0,h.jsx)(i,{className:`size-3.5`})})]},e.id))}),x&&ae>0&&(0,h.jsxs)(u,{variant:`outline`,size:`sm`,className:`h-7 text-xs gap-1 w-full cursor-pointer`,disabled:V,onClick:ie,children:[(0,h.jsx)(s,{className:`size-3`}),V?`Sending...`:`Test Notification`]})]}),(0,h.jsx)(p,{}),(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,h.jsx)(`p`,{className:`text-xs font-medium`,children:`Delegated Tasks`}),(0,h.jsx)(u,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 cursor-pointer`,onClick:Z,children:(0,h.jsx)(c,{className:`size-3`})})]}),K.length===0?(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground italic`,children:`No delegated tasks yet. The coordinator will create tasks when you ask it to work on a project.`}):(0,h.jsx)(`div`,{className:`space-y-1 max-h-[200px] overflow-y-auto`,children:K.map(e=>{let t=e.completed_at?`${Math.round((e.completed_at-e.created_at)/60)}m`:`${Math.round((Date.now()/1e3-e.created_at)/60)}m`;return(0,h.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border p-2 text-[11px]`,children:[(0,h.jsx)(`span`,{className:se[e.status]??``,children:oe[e.status]??`?`}),(0,h.jsx)(`span`,{className:`font-medium shrink-0`,children:e.project_name}),(0,h.jsx)(`span`,{className:`truncate text-muted-foreground flex-1`,children:e.prompt.slice(0,60)}),(0,h.jsx)(`span`,{className:`text-[10px] text-muted-foreground shrink-0`,children:t})]},e.id)})})]}),(0,h.jsx)(p,{}),(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,h.jsx)(o,{className:`size-3.5 text-muted-foreground`}),(0,h.jsx)(`p`,{className:`text-xs font-medium`,children:`Memory & Identity`})]}),(0,h.jsx)(u,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 cursor-pointer`,onClick:()=>X(G),children:(0,h.jsx)(c,{className:`size-3`})})]}),(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Facts the bot remembers across sessions. Use /remember on Telegram to add, or delete here.`}),U.length===0?(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground italic`,children:`No memories stored yet. Send /start on Telegram and introduce yourself.`}):(0,h.jsx)(`div`,{className:`space-y-1 max-h-[200px] overflow-y-auto`,children:U.map(e=>(0,h.jsxs)(`div`,{className:`flex items-start justify-between rounded-md border p-2 gap-1`,children:[(0,h.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,h.jsx)(`p`,{className:`text-[11px] break-words`,children:e.content}),(0,h.jsxs)(`p`,{className:`text-[10px] text-muted-foreground`,children:[e.category,` · `,e.project]})]}),(0,h.jsx)(u,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 text-destructive hover:text-destructive cursor-pointer shrink-0`,onClick:()=>Q(e.id),children:(0,h.jsx)(i,{className:`size-3`})})]},e.id))})]}),(0,h.jsx)(p,{}),(0,h.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,h.jsx)(`label`,{className:`text-[11px] text-muted-foreground`,children:`Custom Instructions`}),(0,h.jsx)(`textarea`,{placeholder:`Additional instructions for the coordinator (optional)...`,value:D,onChange:e=>O(e.target.value),className:`flex w-full rounded-md border border-input bg-background px-3 py-2 text-xs min-h-[60px] resize-y ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,rows:3}),(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Extra instructions added to the coordinator identity. Leave empty to use defaults from coordinator.md.`})]}),(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,h.jsx)(`p`,{className:`text-xs`,children:`Show tool calls`}),(0,h.jsx)(f,{checked:k,onCheckedChange:A})]}),(0,h.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,h.jsx)(`p`,{className:`text-xs`,children:`Show thinking`}),(0,h.jsx)(f,{checked:j,onCheckedChange:M})]})]}),(0,h.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,h.jsx)(`label`,{className:`text-[11px] text-muted-foreground`,children:`Debounce (ms)`}),(0,h.jsx)(d,{type:`number`,min:0,max:3e4,step:500,value:N,onChange:e=>P(Number(e.target.value)),className:`h-7 text-xs w-24`}),(0,h.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Merge rapid messages within this window. 0 = no debounce.`})]}),(0,h.jsx)(u,{variant:`default`,size:`sm`,className:`h-8 text-xs w-full cursor-pointer`,disabled:n,onClick:te,children:n?`Saving...`:`Save`}),_&&(0,h.jsx)(`p`,{className:`text-[11px] ${_.type===`ok`?`text-success`:`text-destructive`}`,children:_.msg})]})}export{g as PPMBotSettingsSection};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-BHh12_0v.js";import{Jt as r,O as i,U as a,j as o,r as s,tn as c}from"./icons-CO_II6D-.js";import"./api-client-c8YOpTlT.js";import{n as l}from"./utils-btZ8C8-R.js";import{t as u}from"./panel-store-BUQ-CPsd.js";import"./window-store-B4cbZ5rr.js";import{i as d}from"./project-store-C5gJXkvb.js";import"./project-framework-store-XxFXcUpb.js";import{n as f}from"./use-is-mobile-CkO33jqU.js";import{t as p}from"./file-icons-BlOxPo3P.js";import{F as m,I as h,M as g,N as _,P as v,nn as y}from"./index-
|
|
1
|
+
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-BHh12_0v.js";import{Jt as r,O as i,U as a,j as o,r as s,tn as c}from"./icons-CO_II6D-.js";import"./api-client-c8YOpTlT.js";import{n as l}from"./utils-btZ8C8-R.js";import{t as u}from"./panel-store-BUQ-CPsd.js";import"./window-store-B4cbZ5rr.js";import{i as d}from"./project-store-C5gJXkvb.js";import"./project-framework-store-XxFXcUpb.js";import{n as f}from"./use-is-mobile-CkO33jqU.js";import{t as p}from"./file-icons-BlOxPo3P.js";import{F as m,I as h,M as g,N as _,P as v,nn as y}from"./index-CvUGUp7d.js";var b=e(t(),1),x=n();function S(){let e=h(y(e=>e.files)),t=d(e=>e.activeProject?.name??null),n=f(),[r,c]=(0,b.useState)(new Set),[S,D]=(0,b.useState)(``),O=(0,b.useMemo)(()=>g(e,t),[e,t]),k=(0,b.useMemo)(()=>{let e=m(O),t=S.trim().toLowerCase();return t?e.map(e=>({...e,diagnostics:e.filePath.toLowerCase().includes(t)?e.diagnostics:e.diagnostics.filter(e=>C(e,t))})).filter(e=>e.diagnostics.length>0):e},[O,S]),A=(0,b.useMemo)(()=>_(O),[O]),j=k.reduce((e,t)=>e+t.diagnostics.length,0);function M(e,t){let{grid:n,focusedPanelId:r,openTab:i}=u.getState(),a=n.flat(),o=a.includes(r)?r:a[0];i({type:`editor`,title:e.filePath.split(`/`).pop()??e.filePath,metadata:{filePath:e.filePath,projectName:e.projectName,lineNumber:t.range.start.line+1},projectId:e.projectName,closable:!0},o)}function N(e){c(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}return Object.keys(O).length===0?(0,x.jsxs)(`div`,{className:`p-4 space-y-2`,children:[(0,x.jsx)(`p`,{className:`text-xs text-text-subtle`,children:`No problems have been detected in the open files.`}),(0,x.jsx)(`p`,{className:`text-[11px] text-text-subtle/70 leading-relaxed`,children:`Diagnostics come from the language server for each file you open, so a file that has never been opened is not checked.`})]}):(0,x.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,x.jsxs)(`div`,{className:`shrink-0 p-2 space-y-2 border-b border-border-soft`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3 text-[11px] text-text-3`,children:[(0,x.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,x.jsx)(a,{className:`size-3 text-error`}),A.errors]}),(0,x.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,x.jsx)(s,{className:`size-3 text-warning`}),A.warnings]}),(0,x.jsxs)(`span`,{className:`ml-auto text-text-subtle`,children:[k.length,` file`,k.length===1?``:`s`]})]}),(0,x.jsx)(`input`,{value:S,onChange:e=>D(e.target.value),placeholder:`Filter problems`,className:l(`w-full rounded border border-border bg-surface px-2 text-xs outline-none focus:border-primary`,n?`min-h-11`:`py-1`)})]}),(0,x.jsxs)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:[j===0&&(0,x.jsxs)(`p`,{className:`p-4 text-xs text-text-subtle`,children:[`No problems match “`,S.trim(),`”.`]}),k.map(e=>{let t=v(e.projectName,e.filePath),a=r.has(t);return(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`button`,{type:`button`,onClick:()=>N(t),className:l(`w-full flex items-center gap-1 px-2 text-left hover:bg-surface-elevated transition-colors`,n?`min-h-11`:`py-1`),children:[a?(0,x.jsx)(o,{className:`size-3 shrink-0 text-text-subtle`}):(0,x.jsx)(i,{className:`size-3 shrink-0 text-text-subtle`}),(0,x.jsx)(p,{name:e.filePath,className:`size-3.5`}),(0,x.jsx)(`span`,{className:`text-xs truncate`,children:e.filePath.split(`/`).pop()}),(0,x.jsx)(`span`,{className:`text-[10px] text-text-subtle truncate min-w-0`,children:E(e.filePath)}),(0,x.jsx)(`span`,{className:`ml-auto shrink-0 rounded-full bg-surface-elevated px-1.5 text-[10px] text-text-3`,children:e.diagnostics.length})]}),!a&&e.diagnostics.map((t,r)=>(0,x.jsxs)(`button`,{type:`button`,onClick:()=>M(e,t),title:t.message,className:l(`w-full flex items-start gap-1.5 pl-6 pr-2 text-left hover:bg-surface-elevated transition-colors`,n?`min-h-11 py-2`:`py-0.5`),children:[(0,x.jsx)(w,{severity:t.severity}),(0,x.jsx)(`span`,{className:l(`flex-1 min-w-0 text-xs text-text-2`,n?`break-words`:`truncate`),children:t.message}),(0,x.jsxs)(`span`,{className:`shrink-0 text-[10px] text-text-subtle font-mono pt-px`,children:[T(t),t.range.start.line+1,`:`,t.range.start.character+1]})]},`${t.range.start.line}:${t.range.start.character}:${r}`))]},t)})]})]})}function C(e,t){return e.message.toLowerCase().includes(t)||(e.source?.toLowerCase().includes(t)??!1)||String(e.code??``).toLowerCase().includes(t)}function w({severity:e}){return e===2?(0,x.jsx)(s,{className:`size-3 shrink-0 text-warning mt-px`}):e===3?(0,x.jsx)(r,{className:`size-3 shrink-0 text-info mt-px`}):e===4?(0,x.jsx)(c,{className:`size-3 shrink-0 text-text-subtle mt-px`}):(0,x.jsx)(a,{className:`size-3 shrink-0 text-error mt-px`})}function T(e){return e.source?e.code===void 0?`${e.source} `:`${e.source}(${e.code}) `:``}function E(e){let t=e.lastIndexOf(`/`);return t<0?``:e.slice(0,t)}export{S as ProblemsPanel};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-BHh12_0v.js";import{Jr as r,O as i,a,d as o,j as s,ur as c}from"./icons-CO_II6D-.js";import{r as l,s as u}from"./api-client-c8YOpTlT.js";import{n as d}from"./utils-btZ8C8-R.js";import"./portal-container-context-NFSuymMu.js";import{n as f}from"./use-is-mobile-CkO33jqU.js";import{t as p}from"./button-CBehaXpV.js";import{a as m,n as h,o as g,t as _}from"./dialog-tzBRkGeW.js";import{t as v}from"./mobile-bottom-sheet-Cf4kV1hS.js";import"./use-visual-viewport-C307OVeV.js";import{dt as y,tn as b}from"./index-DSbUqWiH.js";import{n as x,t as S}from"./format-bytes-DBBzVCYA.js";var C=e(t(),1);function w(e,t){return{cpu:e.cpu,ramMB:e.ramMB,name:t,diskReadBps:e.diskReadBps,diskWriteBps:e.diskWriteBps,gpuPct:e.gpuPct,gpuMemMB:e.gpuMemMB,netInBps:e.netInBps,netOutBps:e.netOutBps}}function T(e,t){if(!(e===void 0&&t===void 0))return(e??0)+(t??0)}function E(e,t){return e===`disk`?T(t.diskReadBps,t.diskWriteBps):e===`net`?T(t.netInBps,t.netOutBps):e===`gpu`?t.gpuPct:t.gpuMemMB}function D(e){return e===`disk`||e===`gpu`||e===`gpuMem`||e===`net`}function O(e,t,n,r){return t?[...e].sort((e,i)=>{let a=r(e),o=r(i);if(t===`name`){let e=a.name.localeCompare(o.name);return n===`asc`?e:-e}if(t===`cpu`)return n===`asc`?a.cpu-o.cpu:o.cpu-a.cpu;if(t===`ram`)return n===`asc`?a.ramMB-o.ramMB:o.ramMB-a.ramMB;if(D(t)){let e=E(t,a),r=E(t,o);return e===void 0&&r===void 0?0:e===void 0?1:r===void 0?-1:n===`asc`?e-r:r-e}return 0}):e}var k={cpu:0,ramMB:0,count:0};function A(e,t){return t===void 0?e:(e??0)+t}function j(e,t,n){return{cpu:e.cpu+t.cpu,ramMB:e.ramMB+t.ramMB,count:e.count+n,diskReadBps:A(e.diskReadBps,t.diskReadBps),diskWriteBps:A(e.diskWriteBps,t.diskWriteBps),gpuMemMB:A(e.gpuMemMB,t.gpuMemMB),netInBps:A(e.netInBps,t.netInBps),netOutBps:A(e.netOutBps,t.netOutBps)}}function M(e,t){return e.toLowerCase().includes(t)}function N(e,t){return M(e.name,t)||M(e.command,t)}function ee(e){let{processes:t,groups:n,mode:r,ppmOnly:i,query:a,sortKey:o,sortDir:s,expanded:c}=e,l=a.trim().toLowerCase(),u=new Map(t.map(e=>[e.pid,e]));if(r===`flat`){let e=i?t.filter(e=>e.ppm):t;l&&(e=e.filter(e=>N(e,l))),e=O(e,o,s,e=>w(e,e.name));let n=e.reduce((e,t)=>j(e,t,1),k);return{rows:e.map(e=>({kind:`process`,proc:e,indent:!1})),totals:n,autoExpanded:new Set}}let d=i?n.filter(e=>e.ppm):n,f=new Set;l&&(d=d.filter(e=>{let t=M(e.label,l),n=e.pids.some(e=>{let t=u.get(e);return t?N(t,l):!1}),r=t||n;return r&&n&&f.add(e.key),r})),d=O(d,o,s,e=>w(e,e.label));let p=[];for(let e of d){let t=l&&f.has(e.key)||c.has(e.key);if(p.push({kind:`group`,group:e,expanded:t}),!t)continue;let n=e.pids.map(e=>u.get(e)).filter(e=>e!==void 0);l&&(n=n.filter(e=>N(e,l))),n=O(n,o,s,e=>w(e,e.name));for(let e of n)p.push({kind:`process`,proc:e,indent:!0})}return{rows:p,totals:d.reduce((e,t)=>j(e,t,t.count),k),autoExpanded:f}}function te(e,t,n){return e===n?t===`desc`?[n,`asc`]:[null,`desc`]:[n,`desc`]}var P=[`disk`,`gpu`,`net`],F={cpu:64,ram:80,disk:120,gpu:90,net:120},ne=`minmax(0,1fr)`,I=`44px`;function re(e){return e===`disk`||e===`gpu`||e===`net`}function L(e){return Math.round(Math.min(400,Math.max(48,e)))}function R(e,t){let n=t[e];return typeof n==`number`&&Number.isFinite(n)?L(n):F[e]}function z(e,t,n={}){let r=P.filter(t=>e[t]),i=re(t)&&e[t]?t:null,a=e=>`${R(e,n)}px`,o=[ne,a(`cpu`),a(`ram`)];return{wideTemplate:[...o,...r.map(a),I].join(` `),narrowTemplate:[...o,...i?[a(i)]:[],I].join(` `),columns:e,narrowExtra:i}}var B=`grid-cols-[var(--sysmon-grid-n)] @lg:grid-cols-[var(--sysmon-grid-w)]`;function ie(e){return{"--sysmon-grid-n":e.narrowTemplate,"--sysmon-grid-w":e.wideTemplate}}function V(e,t){return e.narrowExtra===t?`block`:`hidden @lg:block`}function H(e){return e>80?`text-error`:e>50?`text-warning`:`text-success`}function ae(e){if(!e)return``;let t=Math.round((Date.now()-e)/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d ${r%24}h`}function U(e,t){return e===void 0&&t===void 0?`—`:`↓ ${S(e??0)} ↑ ${S(t??0)}`}function W(e,t){return e===void 0&&t===void 0?`—`:`↓ ${S(e??0)} ↑ ${S(t??0)}`}function G(e,t){return e===void 0&&t===void 0?`—`:`${e===void 0?`—`:`${e.toFixed(0)}%`} · ${t===void 0?`—`:x(t)}`}function K(e,t){if(!(e===void 0&&t===void 0))return(e??0)+(t??0)}var q=n();function J({label:e,field:t,activeKey:n,activeDir:r,onClick:i,align:s=`right`,testId:c,className:l,resizeKey:u,resize:f}){let p=n===t,m=p?r===`asc`?o:a:null,h=p?r===`asc`?`ascending`:`descending`:`none`;return(0,q.jsxs)(`div`,{role:`columnheader`,"aria-sort":h,className:d(`relative py-1.5 px-2 font-medium select-none`,s===`left`?`text-left`:`text-right`,l),children:[(0,q.jsxs)(`button`,{type:`button`,"data-testid":c,onClick:()=>i(t),className:d(`flex items-center gap-0.5 w-full min-h-11 md:min-h-0 cursor-pointer hover:text-text-primary transition-colors`,s===`left`?`justify-start`:`justify-end`,p&&`text-text-primary`),children:[(0,q.jsx)(`span`,{className:`truncate`,children:e}),m&&(0,q.jsx)(m,{className:`size-3 shrink-0`})]}),u&&f&&(0,q.jsx)(`div`,{role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize ${e} column`,"data-testid":c?`${c}-resize`:void 0,onPointerDown:e=>f.onResizeStart(u,e),onDoubleClick:()=>f.onResizeReset(u),className:`hidden md:block absolute top-0 -right-1 h-full w-2 cursor-col-resize hover:bg-primary/40 active:bg-primary/60`})]})}var oe=150;function se({mode:e,onModeChange:t,ppmOnly:n,onPpmOnlyChange:r,onQueryChange:i}){let[a,o]=(0,C.useState)(``),s=(0,C.useRef)(null);return(0,C.useEffect)(()=>(s.current&&clearTimeout(s.current),s.current=setTimeout(()=>i(a),oe),()=>{s.current&&clearTimeout(s.current)}),[a]),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 p-2 border-b border-border shrink-0`,children:[(0,q.jsxs)(`div`,{className:`relative flex-1 min-w-[140px]`,children:[(0,q.jsx)(c,{className:`absolute left-2 top-1/2 -translate-y-1/2 size-3.5 text-text-subtle`}),(0,q.jsx)(`input`,{type:`text`,value:a,onChange:e=>o(e.target.value),placeholder:`Search processes`,"aria-label":`Search processes`,"data-testid":`sysmon-process-search`,className:`w-full min-h-11 md:min-h-8 pl-7 pr-2 text-sm rounded-md border border-border bg-transparent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`})]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>t(e===`grouped`?`flat`:`grouped`),"aria-pressed":e===`flat`,"data-testid":`sysmon-toggle-flat`,className:`min-h-11 md:min-h-8 px-3 text-xs rounded-md border border-border hover:bg-surface-hover transition-colors`,children:e===`flat`?`Flat`:`Grouped`}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>r(!n),"aria-pressed":n,"data-testid":`sysmon-filter-ppm`,className:d(`min-h-11 md:min-h-8 px-3 text-xs rounded-md border transition-colors`,n?`border-primary bg-primary/10 text-primary`:`border-border hover:bg-surface-hover`),children:`PPM only`})]})}function ce({sortKey:e,sortDir:t,grid:n,onSort:r,resize:i}){let a={activeKey:e,activeDir:t,onClick:r,resize:i};return(0,q.jsxs)(`div`,{role:`row`,className:d(`grid gap-1 px-3 py-1.5 text-[11px] text-text-subtle border-b border-border sticky top-0 bg-background z-10`,B),children:[(0,q.jsx)(J,{label:`Process`,field:`name`,...a,resize:void 0,align:`left`,testId:`sysmon-sort-name`}),(0,q.jsx)(J,{label:`CPU`,field:`cpu`,...a,resizeKey:`cpu`,testId:`sysmon-sort-cpu`}),(0,q.jsx)(J,{label:`RAM`,field:`ram`,...a,resizeKey:`ram`,testId:`sysmon-sort-ram`}),n.columns.disk&&(0,q.jsx)(J,{label:`Disk`,field:`disk`,...a,resizeKey:`disk`,testId:`sysmon-col-disk`,className:V(n,`disk`)}),n.columns.gpu&&(0,q.jsx)(J,{label:`GPU`,field:`gpu`,...a,resizeKey:`gpu`,testId:`sysmon-col-gpu`,className:V(n,`gpu`)}),n.columns.net&&(0,q.jsx)(J,{label:`Net`,field:`net`,...a,resizeKey:`net`,testId:`sysmon-col-net`,className:V(n,`net`)}),(0,q.jsx)(`span`,{})]})}function le({totals:e,grid:t,gpuUtilPercent:n}){return(0,q.jsxs)(`div`,{className:d(`grid gap-1 px-3 py-1.5 text-xs font-medium border-t border-border shrink-0`,B),"data-testid":`sysmon-total`,"data-process-count":e.count,children:[(0,q.jsxs)(`span`,{className:`truncate`,children:[`Total (`,e.count,` processes)`]}),(0,q.jsxs)(`span`,{className:d(`text-right`,H(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,q.jsx)(`span`,{className:`text-right text-text-secondary`,children:x(e.ramMB)}),t.columns.disk&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(t,`disk`)),children:U(e.diskReadBps,e.diskWriteBps)}),t.columns.gpu&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(t,`gpu`)),children:G(n,e.gpuMemMB)}),t.columns.net&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(t,`net`)),children:W(e.netInBps,e.netOutBps)}),(0,q.jsx)(`span`,{})]})}var ue=`Protected: this app contains a PPM or OS-critical process — cannot be ended as a whole.`;function de({group:e,expanded:t,grid:n,killProtected:a,onToggle:o,onKillClick:c}){let l=t?i:s;return(0,q.jsxs)(`div`,{className:`grid items-center gap-1 min-h-11 md:min-h-7 px-3 text-xs cursor-pointer hover:bg-surface-hover transition-colors group/proc grid-cols-[var(--sysmon-grid-n)] @lg:grid-cols-[var(--sysmon-grid-w)]`,onClick:()=>o(e.key),"data-testid":`sysmon-group-row`,"data-group-key":e.key,"data-count":e.count,"data-disk-bps":K(e.diskReadBps,e.diskWriteBps),"data-gpu-pct":e.gpuPct,"data-net-bps":K(e.netInBps,e.netOutBps),children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),o(e.key)},"aria-expanded":t,"aria-label":`${t?`Collapse`:`Expand`} ${e.label}`,"data-testid":`sysmon-group-expand`,className:`flex items-center justify-center size-11 md:size-7 -ml-2 shrink-0`,children:(0,q.jsx)(l,{className:`size-3.5 text-text-subtle`})}),(0,q.jsx)(`span`,{className:`truncate font-medium`,children:e.label}),(0,q.jsxs)(`span`,{className:`text-text-subtle shrink-0`,children:[`(`,e.count,`)`]})]}),(0,q.jsxs)(`span`,{className:d(`text-right`,H(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,q.jsx)(`span`,{className:`text-right text-text-secondary`,children:x(e.ramMB)}),n.columns.disk&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(n,`disk`)),children:U(e.diskReadBps,e.diskWriteBps)}),n.columns.gpu&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(n,`gpu`)),children:G(e.gpuPct,e.gpuMemMB)}),n.columns.net&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(n,`net`)),children:W(e.netInBps,e.netOutBps)}),(0,q.jsx)(`div`,{className:`flex justify-end`,children:(0,q.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),c(e)},disabled:a,"aria-label":`End ${e.label} and its ${e.count} processes`,title:a?ue:`End ${e.label} (${e.count} processes)`,"data-testid":`sysmon-group-kill-btn`,className:d(`flex items-center justify-center size-11 md:size-7 rounded transition-all`,`can-hover:opacity-0 can-hover:group-hover/proc:opacity-100`,a?`opacity-40 cursor-not-allowed`:`hover:bg-error/20 hover:text-error active:bg-error/30`),children:(0,q.jsx)(r,{className:`size-3.5`})})})]})}var fe=`Protected: PPM or OS-critical process — cannot be ended.`;function pe({proc:e,indent:t,grid:n,onKillClick:i}){return(0,q.jsxs)(`div`,{className:`grid items-center gap-1 min-h-11 md:min-h-7 px-3 text-xs group/proc hover:bg-surface-hover transition-colors grid-cols-[var(--sysmon-grid-n)] @lg:grid-cols-[var(--sysmon-grid-w)]`,"data-testid":`sysmon-process-row`,"data-pid":e.pid,"data-ppm":e.ppm,"data-protected":e.protected,"data-disk-bps":K(e.diskReadBps,e.diskWriteBps),"data-gpu-pct":e.gpuPct,"data-net-bps":K(e.netInBps,e.netOutBps),children:[(0,q.jsxs)(`div`,{className:d(`flex items-start gap-1.5 min-w-0`,t&&`pl-6`),children:[(0,q.jsx)(`span`,{className:`text-text-subtle shrink-0`,children:e.pid}),(0,q.jsx)(`span`,{className:`truncate text-text-secondary`,title:e.startedAt?`${e.command}\nRunning ${ae(e.startedAt)}`:e.command,children:e.command})]}),(0,q.jsxs)(`span`,{className:d(`text-right`,H(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,q.jsx)(`span`,{className:`text-right text-text-secondary`,children:x(e.ramMB)}),n.columns.disk&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(n,`disk`)),children:U(e.diskReadBps,e.diskWriteBps)}),n.columns.gpu&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(n,`gpu`)),children:G(e.gpuPct,e.gpuMemMB)}),n.columns.net&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(n,`net`)),children:W(e.netInBps,e.netOutBps)}),(0,q.jsx)(`div`,{className:`flex justify-end`,children:(0,q.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),i(e)},disabled:e.protected,"aria-label":`End process ${e.name} (${e.pid})`,title:e.protected?fe:`End process ${e.name}`,"data-testid":`sysmon-kill-btn`,className:d(`flex items-center justify-center size-11 md:size-7 rounded transition-all`,`can-hover:opacity-0 can-hover:group-hover/proc:opacity-100`,e.protected?`opacity-40 cursor-not-allowed`:`hover:bg-error/20 hover:text-error active:bg-error/30`),children:(0,q.jsx)(r,{className:`size-3.5`})})})]})}function me({target:e,onConfirm:t,onCancel:n}){let r=f(),[i,a]=(0,C.useState)(!1);if((0,C.useEffect)(()=>{e||a(!1)},[e]),!e)return null;let o=e.kind===`group`,s=o?`End app`:`End process`,c=o?e.group.cpu:e.proc.cpu,l=o?e.group.ramMB:e.proc.ramMB,u=(0,q.jsxs)(`div`,{className:`space-y-4`,"data-testid":`sysmon-kill-confirm`,"data-kill-kind":e.kind,children:[o?(0,q.jsxs)(`p`,{className:`text-sm`,children:[`End `,(0,q.jsx)(`span`,{className:`font-medium`,children:e.group.label}),` and all its`,` `,(0,q.jsx)(`span`,{className:`font-medium`,children:e.members.length}),` processes?`]}):(0,q.jsxs)(`p`,{className:`text-sm`,children:[`End `,(0,q.jsx)(`span`,{className:`font-medium`,children:e.proc.name}),` (pid `,e.proc.pid,`)?`]}),(0,q.jsxs)(`p`,{className:`text-xs text-text-subtle`,children:[`CPU `,c.toFixed(1),`% · RAM `,x(l)]}),!o&&(0,q.jsxs)(`label`,{className:`flex items-center justify-between gap-3 min-h-11 py-1`,children:[(0,q.jsx)(`span`,{className:`text-sm`,children:`Also end child processes`}),(0,q.jsx)(y,{checked:i,onCheckedChange:a,"data-testid":`sysmon-kill-tree`,"aria-label":`Also end child processes`})]}),(0,q.jsxs)(`div`,{className:`flex flex-col-reverse md:flex-row gap-2 md:justify-end pt-2`,children:[(0,q.jsx)(p,{variant:`outline`,onClick:n,"data-testid":`sysmon-kill-confirm-cancel`,className:`min-h-11`,children:`Cancel`}),(0,q.jsx)(p,{variant:`destructive`,autoFocus:!1,onClick:()=>t(e,i),"data-testid":`sysmon-kill-confirm-ok`,className:`min-h-11`,children:o?`End ${e.members.length} processes`:`End process`})]})]});return r?(0,q.jsx)(v,{open:!0,onClose:n,children:(0,q.jsxs)(`div`,{className:`px-4 pb-4`,children:[(0,q.jsx)(`h2`,{className:`text-base font-semibold mb-3`,children:s}),u]})}):(0,q.jsx)(_,{open:!0,onOpenChange:e=>!e&&n(),children:(0,q.jsxs)(h,{children:[(0,q.jsx)(m,{children:(0,q.jsx)(g,{children:s})}),u]})})}function Y(e,t){return{pid:e.pid,startedAt:e.startedAt,tree:t}}function he(e,t){let n=e.rootPid===null?void 0:t.find(t=>t.pid===e.rootPid);return n?[Y(n,!0)]:t.map(e=>Y(e,!1))}function ge(e){return e.some(e=>e.protected)}async function X(e){let t=l(),n={"Content-Type":`application/json`,"X-PPM-Request":`1`};t&&(n.Authorization=`Bearer ${t}`);let r=await fetch(`/api/system/resources/kill`,{method:`POST`,headers:n,body:JSON.stringify(e)}),i;try{i=await r.json()}catch{throw Error(r.ok?`Empty response from server`:`Server error (HTTP ${r.status})`)}if(i.ok===!1)throw Error(i.error??`HTTP ${r.status}`);return i.data}function _e(e){let[t,n]=(0,C.useState)(null),r=(0,C.useCallback)(t=>{let n=new Map(e.processes.map(e=>[e.pid,e]));return t.pids.map(e=>n.get(e)).filter(e=>!!e)},[e.processes]),i=(0,C.useMemo)(()=>new Map(e.groups.map(e=>[e.key,ge(r(e))])),[e.groups,r]),a=(0,C.useCallback)(e=>n({kind:`process`,proc:e}),[]),o=(0,C.useCallback)(e=>n({kind:`group`,group:e,members:r(e)}),[r]),s=(0,C.useCallback)(()=>n(null),[]);return{pendingKill:t,groupProtected:i,requestKillProcess:a,requestKillGroup:o,confirmKill:(0,C.useCallback)(async(e,t)=>{if(n(null),e.kind===`process`){let{proc:n}=e;try{await X(Y(n,t)),u.success(`Ended ${n.name} (${n.pid})`)}catch(e){u.error(e instanceof Error?e.message:`Failed to end ${n.name}`)}return}let{group:r,members:i}=e,a=[];for(let e of he(r,i))try{await X(e)}catch(t){a.push(t instanceof Error?t.message:`pid ${e.pid}`)}a.length===0?u.success(`Ended ${r.label} (${i.length} processes)`):u.error(`${r.label}: ${a.length} of ${i.length} could not be ended — ${a[0]}`)},[]),cancelKill:s}}var Z=`ppm-sysmon-col-widths`;function Q(){try{let e=localStorage.getItem(Z);if(!e)return{};let t=JSON.parse(e),n={};for(let e of[`cpu`,`ram`,`disk`,`gpu`,`net`]){let r=t[e];typeof r==`number`&&Number.isFinite(r)&&(n[e]=L(r))}return n}catch{return{}}}function $(e){try{Object.keys(e).length===0?localStorage.removeItem(Z):localStorage.setItem(Z,JSON.stringify(e))}catch{}}function ve(){let[e,t]=(0,C.useState)(()=>typeof localStorage>`u`?{}:Q()),n=(0,C.useRef)(null);return(0,C.useEffect)(()=>{let e=e=>{let r=n.current;if(!r)return;let i=L(r.startWidth+(e.clientX-r.startX));t(e=>e[r.key]===i?e:{...e,[r.key]:i})},r=()=>{n.current&&(n.current=null,document.body.style.cursor=``,t(e=>($(e),e)))};return window.addEventListener(`pointermove`,e),window.addEventListener(`pointerup`,r),window.addEventListener(`pointercancel`,r),()=>{window.removeEventListener(`pointermove`,e),window.removeEventListener(`pointerup`,r),window.removeEventListener(`pointercancel`,r)}},[]),{widths:e,begin:(0,C.useCallback)((t,r)=>{r.preventDefault(),n.current={key:t,startX:r.clientX,startWidth:R(t,e)},document.body.style.cursor=`col-resize`},[e]),reset:(0,C.useCallback)(e=>{t(t=>{if(!(e in t))return t;let{[e]:n,...r}=t;return $(r),r})},[])}}var ye={disk:!1,gpu:!1,net:!1};function be({snapshot:e}){let t=f(),n=(0,C.useRef)(null),[r,i]=(0,C.useState)(`grouped`),[a,o]=(0,C.useState)(!1),[s,c]=(0,C.useState)(``),[l,u]=(0,C.useState)(null),[d,p]=(0,C.useState)(`desc`),[m,h]=(0,C.useState)(()=>new Set),{pendingKill:g,groupProtected:_,requestKillProcess:v,requestKillGroup:y,confirmKill:x,cancelKill:S}=_e(e),{widths:w,begin:T,reset:E}=ve(),{rows:D,totals:O}=(0,C.useMemo)(()=>ee({processes:e.processes,groups:e.groups,mode:r,ppmOnly:a,query:s,sortKey:l,sortDir:d,expanded:m}),[e.processes,e.groups,r,a,s,l,d,m]),k=e.processColumns??ye,A=(0,C.useMemo)(()=>z(k,l,w),[k,l,w]),j=e.system.gpus[0]?.utilPercent,M=b({count:D.length,getScrollElement:()=>n.current,estimateSize:()=>t?44:28,overscan:12}),N=(0,C.useCallback)(e=>{let[t,n]=te(l,d,e);u(t),p(n)},[l,d]),P=(0,C.useCallback)(e=>{h(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]);return(0,q.jsxs)(`div`,{className:`h-full flex flex-col min-h-0 @container`,style:ie(A),"data-testid":`sysmon-processes`,"data-row-count":D.length,children:[(0,q.jsx)(se,{mode:r,onModeChange:i,ppmOnly:a,onPpmOnlyChange:o,onQueryChange:c}),(0,q.jsx)(ce,{sortKey:l,sortDir:d,grid:A,onSort:N,resize:{onResizeStart:T,onResizeReset:E}}),(0,q.jsx)(`div`,{ref:n,className:`flex-1 min-h-0 overflow-y-auto`,children:(0,q.jsx)(`div`,{style:{height:M.getTotalSize(),position:`relative`},children:M.getVirtualItems().map(e=>{let t=D[e.index];return t?(0,q.jsx)(`div`,{style:{position:`absolute`,top:0,left:0,right:0,transform:`translateY(${e.start}px)`},children:t.kind===`group`?(0,q.jsx)(de,{group:t.group,expanded:t.expanded,grid:A,killProtected:_.get(t.group.key)??!0,onToggle:P,onKillClick:y}):(0,q.jsx)(pe,{proc:t.proc,indent:t.indent,grid:A,onKillClick:v})},t.kind===`group`?t.group.key:`p:${t.proc.pid}`):null})})}),(0,q.jsx)(le,{totals:O,grid:A,gpuUtilPercent:j}),(0,q.jsx)(me,{target:g,onConfirm:x,onCancel:S})]})}export{be as ProcessTable};
|
|
1
|
+
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-BHh12_0v.js";import{Jr as r,O as i,a,d as o,j as s,ur as c}from"./icons-CO_II6D-.js";import{r as l,s as u}from"./api-client-c8YOpTlT.js";import{n as d}from"./utils-btZ8C8-R.js";import"./portal-container-context-NFSuymMu.js";import{n as f}from"./use-is-mobile-CkO33jqU.js";import{t as p}from"./button-CBehaXpV.js";import{a as m,n as h,o as g,t as _}from"./dialog-tzBRkGeW.js";import{t as v}from"./mobile-bottom-sheet-Cf4kV1hS.js";import"./use-visual-viewport-C307OVeV.js";import{dt as y,tn as b}from"./index-CvUGUp7d.js";import{n as x,t as S}from"./format-bytes-DBBzVCYA.js";var C=e(t(),1);function w(e,t){return{cpu:e.cpu,ramMB:e.ramMB,name:t,diskReadBps:e.diskReadBps,diskWriteBps:e.diskWriteBps,gpuPct:e.gpuPct,gpuMemMB:e.gpuMemMB,netInBps:e.netInBps,netOutBps:e.netOutBps}}function T(e,t){if(!(e===void 0&&t===void 0))return(e??0)+(t??0)}function E(e,t){return e===`disk`?T(t.diskReadBps,t.diskWriteBps):e===`net`?T(t.netInBps,t.netOutBps):e===`gpu`?t.gpuPct:t.gpuMemMB}function D(e){return e===`disk`||e===`gpu`||e===`gpuMem`||e===`net`}function O(e,t,n,r){return t?[...e].sort((e,i)=>{let a=r(e),o=r(i);if(t===`name`){let e=a.name.localeCompare(o.name);return n===`asc`?e:-e}if(t===`cpu`)return n===`asc`?a.cpu-o.cpu:o.cpu-a.cpu;if(t===`ram`)return n===`asc`?a.ramMB-o.ramMB:o.ramMB-a.ramMB;if(D(t)){let e=E(t,a),r=E(t,o);return e===void 0&&r===void 0?0:e===void 0?1:r===void 0?-1:n===`asc`?e-r:r-e}return 0}):e}var k={cpu:0,ramMB:0,count:0};function A(e,t){return t===void 0?e:(e??0)+t}function j(e,t,n){return{cpu:e.cpu+t.cpu,ramMB:e.ramMB+t.ramMB,count:e.count+n,diskReadBps:A(e.diskReadBps,t.diskReadBps),diskWriteBps:A(e.diskWriteBps,t.diskWriteBps),gpuMemMB:A(e.gpuMemMB,t.gpuMemMB),netInBps:A(e.netInBps,t.netInBps),netOutBps:A(e.netOutBps,t.netOutBps)}}function M(e,t){return e.toLowerCase().includes(t)}function N(e,t){return M(e.name,t)||M(e.command,t)}function ee(e){let{processes:t,groups:n,mode:r,ppmOnly:i,query:a,sortKey:o,sortDir:s,expanded:c}=e,l=a.trim().toLowerCase(),u=new Map(t.map(e=>[e.pid,e]));if(r===`flat`){let e=i?t.filter(e=>e.ppm):t;l&&(e=e.filter(e=>N(e,l))),e=O(e,o,s,e=>w(e,e.name));let n=e.reduce((e,t)=>j(e,t,1),k);return{rows:e.map(e=>({kind:`process`,proc:e,indent:!1})),totals:n,autoExpanded:new Set}}let d=i?n.filter(e=>e.ppm):n,f=new Set;l&&(d=d.filter(e=>{let t=M(e.label,l),n=e.pids.some(e=>{let t=u.get(e);return t?N(t,l):!1}),r=t||n;return r&&n&&f.add(e.key),r})),d=O(d,o,s,e=>w(e,e.label));let p=[];for(let e of d){let t=l&&f.has(e.key)||c.has(e.key);if(p.push({kind:`group`,group:e,expanded:t}),!t)continue;let n=e.pids.map(e=>u.get(e)).filter(e=>e!==void 0);l&&(n=n.filter(e=>N(e,l))),n=O(n,o,s,e=>w(e,e.name));for(let e of n)p.push({kind:`process`,proc:e,indent:!0})}return{rows:p,totals:d.reduce((e,t)=>j(e,t,t.count),k),autoExpanded:f}}function te(e,t,n){return e===n?t===`desc`?[n,`asc`]:[null,`desc`]:[n,`desc`]}var P=[`disk`,`gpu`,`net`],F={cpu:64,ram:80,disk:120,gpu:90,net:120},ne=`minmax(0,1fr)`,I=`44px`;function re(e){return e===`disk`||e===`gpu`||e===`net`}function L(e){return Math.round(Math.min(400,Math.max(48,e)))}function R(e,t){let n=t[e];return typeof n==`number`&&Number.isFinite(n)?L(n):F[e]}function z(e,t,n={}){let r=P.filter(t=>e[t]),i=re(t)&&e[t]?t:null,a=e=>`${R(e,n)}px`,o=[ne,a(`cpu`),a(`ram`)];return{wideTemplate:[...o,...r.map(a),I].join(` `),narrowTemplate:[...o,...i?[a(i)]:[],I].join(` `),columns:e,narrowExtra:i}}var B=`grid-cols-[var(--sysmon-grid-n)] @lg:grid-cols-[var(--sysmon-grid-w)]`;function ie(e){return{"--sysmon-grid-n":e.narrowTemplate,"--sysmon-grid-w":e.wideTemplate}}function V(e,t){return e.narrowExtra===t?`block`:`hidden @lg:block`}function H(e){return e>80?`text-error`:e>50?`text-warning`:`text-success`}function ae(e){if(!e)return``;let t=Math.round((Date.now()-e)/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d ${r%24}h`}function U(e,t){return e===void 0&&t===void 0?`—`:`↓ ${S(e??0)} ↑ ${S(t??0)}`}function W(e,t){return e===void 0&&t===void 0?`—`:`↓ ${S(e??0)} ↑ ${S(t??0)}`}function G(e,t){return e===void 0&&t===void 0?`—`:`${e===void 0?`—`:`${e.toFixed(0)}%`} · ${t===void 0?`—`:x(t)}`}function K(e,t){if(!(e===void 0&&t===void 0))return(e??0)+(t??0)}var q=n();function J({label:e,field:t,activeKey:n,activeDir:r,onClick:i,align:s=`right`,testId:c,className:l,resizeKey:u,resize:f}){let p=n===t,m=p?r===`asc`?o:a:null,h=p?r===`asc`?`ascending`:`descending`:`none`;return(0,q.jsxs)(`div`,{role:`columnheader`,"aria-sort":h,className:d(`relative py-1.5 px-2 font-medium select-none`,s===`left`?`text-left`:`text-right`,l),children:[(0,q.jsxs)(`button`,{type:`button`,"data-testid":c,onClick:()=>i(t),className:d(`flex items-center gap-0.5 w-full min-h-11 md:min-h-0 cursor-pointer hover:text-text-primary transition-colors`,s===`left`?`justify-start`:`justify-end`,p&&`text-text-primary`),children:[(0,q.jsx)(`span`,{className:`truncate`,children:e}),m&&(0,q.jsx)(m,{className:`size-3 shrink-0`})]}),u&&f&&(0,q.jsx)(`div`,{role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize ${e} column`,"data-testid":c?`${c}-resize`:void 0,onPointerDown:e=>f.onResizeStart(u,e),onDoubleClick:()=>f.onResizeReset(u),className:`hidden md:block absolute top-0 -right-1 h-full w-2 cursor-col-resize hover:bg-primary/40 active:bg-primary/60`})]})}var oe=150;function se({mode:e,onModeChange:t,ppmOnly:n,onPpmOnlyChange:r,onQueryChange:i}){let[a,o]=(0,C.useState)(``),s=(0,C.useRef)(null);return(0,C.useEffect)(()=>(s.current&&clearTimeout(s.current),s.current=setTimeout(()=>i(a),oe),()=>{s.current&&clearTimeout(s.current)}),[a]),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 p-2 border-b border-border shrink-0`,children:[(0,q.jsxs)(`div`,{className:`relative flex-1 min-w-[140px]`,children:[(0,q.jsx)(c,{className:`absolute left-2 top-1/2 -translate-y-1/2 size-3.5 text-text-subtle`}),(0,q.jsx)(`input`,{type:`text`,value:a,onChange:e=>o(e.target.value),placeholder:`Search processes`,"aria-label":`Search processes`,"data-testid":`sysmon-process-search`,className:`w-full min-h-11 md:min-h-8 pl-7 pr-2 text-sm rounded-md border border-border bg-transparent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`})]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>t(e===`grouped`?`flat`:`grouped`),"aria-pressed":e===`flat`,"data-testid":`sysmon-toggle-flat`,className:`min-h-11 md:min-h-8 px-3 text-xs rounded-md border border-border hover:bg-surface-hover transition-colors`,children:e===`flat`?`Flat`:`Grouped`}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>r(!n),"aria-pressed":n,"data-testid":`sysmon-filter-ppm`,className:d(`min-h-11 md:min-h-8 px-3 text-xs rounded-md border transition-colors`,n?`border-primary bg-primary/10 text-primary`:`border-border hover:bg-surface-hover`),children:`PPM only`})]})}function ce({sortKey:e,sortDir:t,grid:n,onSort:r,resize:i}){let a={activeKey:e,activeDir:t,onClick:r,resize:i};return(0,q.jsxs)(`div`,{role:`row`,className:d(`grid gap-1 px-3 py-1.5 text-[11px] text-text-subtle border-b border-border sticky top-0 bg-background z-10`,B),children:[(0,q.jsx)(J,{label:`Process`,field:`name`,...a,resize:void 0,align:`left`,testId:`sysmon-sort-name`}),(0,q.jsx)(J,{label:`CPU`,field:`cpu`,...a,resizeKey:`cpu`,testId:`sysmon-sort-cpu`}),(0,q.jsx)(J,{label:`RAM`,field:`ram`,...a,resizeKey:`ram`,testId:`sysmon-sort-ram`}),n.columns.disk&&(0,q.jsx)(J,{label:`Disk`,field:`disk`,...a,resizeKey:`disk`,testId:`sysmon-col-disk`,className:V(n,`disk`)}),n.columns.gpu&&(0,q.jsx)(J,{label:`GPU`,field:`gpu`,...a,resizeKey:`gpu`,testId:`sysmon-col-gpu`,className:V(n,`gpu`)}),n.columns.net&&(0,q.jsx)(J,{label:`Net`,field:`net`,...a,resizeKey:`net`,testId:`sysmon-col-net`,className:V(n,`net`)}),(0,q.jsx)(`span`,{})]})}function le({totals:e,grid:t,gpuUtilPercent:n}){return(0,q.jsxs)(`div`,{className:d(`grid gap-1 px-3 py-1.5 text-xs font-medium border-t border-border shrink-0`,B),"data-testid":`sysmon-total`,"data-process-count":e.count,children:[(0,q.jsxs)(`span`,{className:`truncate`,children:[`Total (`,e.count,` processes)`]}),(0,q.jsxs)(`span`,{className:d(`text-right`,H(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,q.jsx)(`span`,{className:`text-right text-text-secondary`,children:x(e.ramMB)}),t.columns.disk&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(t,`disk`)),children:U(e.diskReadBps,e.diskWriteBps)}),t.columns.gpu&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(t,`gpu`)),children:G(n,e.gpuMemMB)}),t.columns.net&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(t,`net`)),children:W(e.netInBps,e.netOutBps)}),(0,q.jsx)(`span`,{})]})}var ue=`Protected: this app contains a PPM or OS-critical process — cannot be ended as a whole.`;function de({group:e,expanded:t,grid:n,killProtected:a,onToggle:o,onKillClick:c}){let l=t?i:s;return(0,q.jsxs)(`div`,{className:`grid items-center gap-1 min-h-11 md:min-h-7 px-3 text-xs cursor-pointer hover:bg-surface-hover transition-colors group/proc grid-cols-[var(--sysmon-grid-n)] @lg:grid-cols-[var(--sysmon-grid-w)]`,onClick:()=>o(e.key),"data-testid":`sysmon-group-row`,"data-group-key":e.key,"data-count":e.count,"data-disk-bps":K(e.diskReadBps,e.diskWriteBps),"data-gpu-pct":e.gpuPct,"data-net-bps":K(e.netInBps,e.netOutBps),children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),o(e.key)},"aria-expanded":t,"aria-label":`${t?`Collapse`:`Expand`} ${e.label}`,"data-testid":`sysmon-group-expand`,className:`flex items-center justify-center size-11 md:size-7 -ml-2 shrink-0`,children:(0,q.jsx)(l,{className:`size-3.5 text-text-subtle`})}),(0,q.jsx)(`span`,{className:`truncate font-medium`,children:e.label}),(0,q.jsxs)(`span`,{className:`text-text-subtle shrink-0`,children:[`(`,e.count,`)`]})]}),(0,q.jsxs)(`span`,{className:d(`text-right`,H(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,q.jsx)(`span`,{className:`text-right text-text-secondary`,children:x(e.ramMB)}),n.columns.disk&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(n,`disk`)),children:U(e.diskReadBps,e.diskWriteBps)}),n.columns.gpu&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(n,`gpu`)),children:G(e.gpuPct,e.gpuMemMB)}),n.columns.net&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(n,`net`)),children:W(e.netInBps,e.netOutBps)}),(0,q.jsx)(`div`,{className:`flex justify-end`,children:(0,q.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),c(e)},disabled:a,"aria-label":`End ${e.label} and its ${e.count} processes`,title:a?ue:`End ${e.label} (${e.count} processes)`,"data-testid":`sysmon-group-kill-btn`,className:d(`flex items-center justify-center size-11 md:size-7 rounded transition-all`,`can-hover:opacity-0 can-hover:group-hover/proc:opacity-100`,a?`opacity-40 cursor-not-allowed`:`hover:bg-error/20 hover:text-error active:bg-error/30`),children:(0,q.jsx)(r,{className:`size-3.5`})})})]})}var fe=`Protected: PPM or OS-critical process — cannot be ended.`;function pe({proc:e,indent:t,grid:n,onKillClick:i}){return(0,q.jsxs)(`div`,{className:`grid items-center gap-1 min-h-11 md:min-h-7 px-3 text-xs group/proc hover:bg-surface-hover transition-colors grid-cols-[var(--sysmon-grid-n)] @lg:grid-cols-[var(--sysmon-grid-w)]`,"data-testid":`sysmon-process-row`,"data-pid":e.pid,"data-ppm":e.ppm,"data-protected":e.protected,"data-disk-bps":K(e.diskReadBps,e.diskWriteBps),"data-gpu-pct":e.gpuPct,"data-net-bps":K(e.netInBps,e.netOutBps),children:[(0,q.jsxs)(`div`,{className:d(`flex items-start gap-1.5 min-w-0`,t&&`pl-6`),children:[(0,q.jsx)(`span`,{className:`text-text-subtle shrink-0`,children:e.pid}),(0,q.jsx)(`span`,{className:`truncate text-text-secondary`,title:e.startedAt?`${e.command}\nRunning ${ae(e.startedAt)}`:e.command,children:e.command})]}),(0,q.jsxs)(`span`,{className:d(`text-right`,H(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,q.jsx)(`span`,{className:`text-right text-text-secondary`,children:x(e.ramMB)}),n.columns.disk&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(n,`disk`)),children:U(e.diskReadBps,e.diskWriteBps)}),n.columns.gpu&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(n,`gpu`)),children:G(e.gpuPct,e.gpuMemMB)}),n.columns.net&&(0,q.jsx)(`span`,{className:d(`text-right text-text-secondary tabular-nums truncate`,V(n,`net`)),children:W(e.netInBps,e.netOutBps)}),(0,q.jsx)(`div`,{className:`flex justify-end`,children:(0,q.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),i(e)},disabled:e.protected,"aria-label":`End process ${e.name} (${e.pid})`,title:e.protected?fe:`End process ${e.name}`,"data-testid":`sysmon-kill-btn`,className:d(`flex items-center justify-center size-11 md:size-7 rounded transition-all`,`can-hover:opacity-0 can-hover:group-hover/proc:opacity-100`,e.protected?`opacity-40 cursor-not-allowed`:`hover:bg-error/20 hover:text-error active:bg-error/30`),children:(0,q.jsx)(r,{className:`size-3.5`})})})]})}function me({target:e,onConfirm:t,onCancel:n}){let r=f(),[i,a]=(0,C.useState)(!1);if((0,C.useEffect)(()=>{e||a(!1)},[e]),!e)return null;let o=e.kind===`group`,s=o?`End app`:`End process`,c=o?e.group.cpu:e.proc.cpu,l=o?e.group.ramMB:e.proc.ramMB,u=(0,q.jsxs)(`div`,{className:`space-y-4`,"data-testid":`sysmon-kill-confirm`,"data-kill-kind":e.kind,children:[o?(0,q.jsxs)(`p`,{className:`text-sm`,children:[`End `,(0,q.jsx)(`span`,{className:`font-medium`,children:e.group.label}),` and all its`,` `,(0,q.jsx)(`span`,{className:`font-medium`,children:e.members.length}),` processes?`]}):(0,q.jsxs)(`p`,{className:`text-sm`,children:[`End `,(0,q.jsx)(`span`,{className:`font-medium`,children:e.proc.name}),` (pid `,e.proc.pid,`)?`]}),(0,q.jsxs)(`p`,{className:`text-xs text-text-subtle`,children:[`CPU `,c.toFixed(1),`% · RAM `,x(l)]}),!o&&(0,q.jsxs)(`label`,{className:`flex items-center justify-between gap-3 min-h-11 py-1`,children:[(0,q.jsx)(`span`,{className:`text-sm`,children:`Also end child processes`}),(0,q.jsx)(y,{checked:i,onCheckedChange:a,"data-testid":`sysmon-kill-tree`,"aria-label":`Also end child processes`})]}),(0,q.jsxs)(`div`,{className:`flex flex-col-reverse md:flex-row gap-2 md:justify-end pt-2`,children:[(0,q.jsx)(p,{variant:`outline`,onClick:n,"data-testid":`sysmon-kill-confirm-cancel`,className:`min-h-11`,children:`Cancel`}),(0,q.jsx)(p,{variant:`destructive`,autoFocus:!1,onClick:()=>t(e,i),"data-testid":`sysmon-kill-confirm-ok`,className:`min-h-11`,children:o?`End ${e.members.length} processes`:`End process`})]})]});return r?(0,q.jsx)(v,{open:!0,onClose:n,children:(0,q.jsxs)(`div`,{className:`px-4 pb-4`,children:[(0,q.jsx)(`h2`,{className:`text-base font-semibold mb-3`,children:s}),u]})}):(0,q.jsx)(_,{open:!0,onOpenChange:e=>!e&&n(),children:(0,q.jsxs)(h,{children:[(0,q.jsx)(m,{children:(0,q.jsx)(g,{children:s})}),u]})})}function Y(e,t){return{pid:e.pid,startedAt:e.startedAt,tree:t}}function he(e,t){let n=e.rootPid===null?void 0:t.find(t=>t.pid===e.rootPid);return n?[Y(n,!0)]:t.map(e=>Y(e,!1))}function ge(e){return e.some(e=>e.protected)}async function X(e){let t=l(),n={"Content-Type":`application/json`,"X-PPM-Request":`1`};t&&(n.Authorization=`Bearer ${t}`);let r=await fetch(`/api/system/resources/kill`,{method:`POST`,headers:n,body:JSON.stringify(e)}),i;try{i=await r.json()}catch{throw Error(r.ok?`Empty response from server`:`Server error (HTTP ${r.status})`)}if(i.ok===!1)throw Error(i.error??`HTTP ${r.status}`);return i.data}function _e(e){let[t,n]=(0,C.useState)(null),r=(0,C.useCallback)(t=>{let n=new Map(e.processes.map(e=>[e.pid,e]));return t.pids.map(e=>n.get(e)).filter(e=>!!e)},[e.processes]),i=(0,C.useMemo)(()=>new Map(e.groups.map(e=>[e.key,ge(r(e))])),[e.groups,r]),a=(0,C.useCallback)(e=>n({kind:`process`,proc:e}),[]),o=(0,C.useCallback)(e=>n({kind:`group`,group:e,members:r(e)}),[r]),s=(0,C.useCallback)(()=>n(null),[]);return{pendingKill:t,groupProtected:i,requestKillProcess:a,requestKillGroup:o,confirmKill:(0,C.useCallback)(async(e,t)=>{if(n(null),e.kind===`process`){let{proc:n}=e;try{await X(Y(n,t)),u.success(`Ended ${n.name} (${n.pid})`)}catch(e){u.error(e instanceof Error?e.message:`Failed to end ${n.name}`)}return}let{group:r,members:i}=e,a=[];for(let e of he(r,i))try{await X(e)}catch(t){a.push(t instanceof Error?t.message:`pid ${e.pid}`)}a.length===0?u.success(`Ended ${r.label} (${i.length} processes)`):u.error(`${r.label}: ${a.length} of ${i.length} could not be ended — ${a[0]}`)},[]),cancelKill:s}}var Z=`ppm-sysmon-col-widths`;function Q(){try{let e=localStorage.getItem(Z);if(!e)return{};let t=JSON.parse(e),n={};for(let e of[`cpu`,`ram`,`disk`,`gpu`,`net`]){let r=t[e];typeof r==`number`&&Number.isFinite(r)&&(n[e]=L(r))}return n}catch{return{}}}function $(e){try{Object.keys(e).length===0?localStorage.removeItem(Z):localStorage.setItem(Z,JSON.stringify(e))}catch{}}function ve(){let[e,t]=(0,C.useState)(()=>typeof localStorage>`u`?{}:Q()),n=(0,C.useRef)(null);return(0,C.useEffect)(()=>{let e=e=>{let r=n.current;if(!r)return;let i=L(r.startWidth+(e.clientX-r.startX));t(e=>e[r.key]===i?e:{...e,[r.key]:i})},r=()=>{n.current&&(n.current=null,document.body.style.cursor=``,t(e=>($(e),e)))};return window.addEventListener(`pointermove`,e),window.addEventListener(`pointerup`,r),window.addEventListener(`pointercancel`,r),()=>{window.removeEventListener(`pointermove`,e),window.removeEventListener(`pointerup`,r),window.removeEventListener(`pointercancel`,r)}},[]),{widths:e,begin:(0,C.useCallback)((t,r)=>{r.preventDefault(),n.current={key:t,startX:r.clientX,startWidth:R(t,e)},document.body.style.cursor=`col-resize`},[e]),reset:(0,C.useCallback)(e=>{t(t=>{if(!(e in t))return t;let{[e]:n,...r}=t;return $(r),r})},[])}}var ye={disk:!1,gpu:!1,net:!1};function be({snapshot:e}){let t=f(),n=(0,C.useRef)(null),[r,i]=(0,C.useState)(`grouped`),[a,o]=(0,C.useState)(!1),[s,c]=(0,C.useState)(``),[l,u]=(0,C.useState)(null),[d,p]=(0,C.useState)(`desc`),[m,h]=(0,C.useState)(()=>new Set),{pendingKill:g,groupProtected:_,requestKillProcess:v,requestKillGroup:y,confirmKill:x,cancelKill:S}=_e(e),{widths:w,begin:T,reset:E}=ve(),{rows:D,totals:O}=(0,C.useMemo)(()=>ee({processes:e.processes,groups:e.groups,mode:r,ppmOnly:a,query:s,sortKey:l,sortDir:d,expanded:m}),[e.processes,e.groups,r,a,s,l,d,m]),k=e.processColumns??ye,A=(0,C.useMemo)(()=>z(k,l,w),[k,l,w]),j=e.system.gpus[0]?.utilPercent,M=b({count:D.length,getScrollElement:()=>n.current,estimateSize:()=>t?44:28,overscan:12}),N=(0,C.useCallback)(e=>{let[t,n]=te(l,d,e);u(t),p(n)},[l,d]),P=(0,C.useCallback)(e=>{h(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]);return(0,q.jsxs)(`div`,{className:`h-full flex flex-col min-h-0 @container`,style:ie(A),"data-testid":`sysmon-processes`,"data-row-count":D.length,children:[(0,q.jsx)(se,{mode:r,onModeChange:i,ppmOnly:a,onPpmOnlyChange:o,onQueryChange:c}),(0,q.jsx)(ce,{sortKey:l,sortDir:d,grid:A,onSort:N,resize:{onResizeStart:T,onResizeReset:E}}),(0,q.jsx)(`div`,{ref:n,className:`flex-1 min-h-0 overflow-y-auto`,children:(0,q.jsx)(`div`,{style:{height:M.getTotalSize(),position:`relative`},children:M.getVirtualItems().map(e=>{let t=D[e.index];return t?(0,q.jsx)(`div`,{style:{position:`absolute`,top:0,left:0,right:0,transform:`translateY(${e.start}px)`},children:t.kind===`group`?(0,q.jsx)(de,{group:t.group,expanded:t.expanded,grid:A,killProtected:_.get(t.group.key)??!0,onToggle:P,onKillClick:y}):(0,q.jsx)(pe,{proc:t.proc,indent:t.indent,grid:A,onKillClick:v})},t.kind===`group`?t.group.key:`p:${t.proc.pid}`):null})})}),(0,q.jsx)(le,{totals:O,grid:A,gpuUtilPercent:j}),(0,q.jsx)(me,{target:g,onConfirm:x,onCancel:S})]})}export{be as ProcessTable};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/web/assets/{proxy-settings-section-B4dkvCCx.js → proxy-settings-section-Q-ttqVOa.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-BHh12_0v.js";import{St as r,Yn as i,ir as a,nt as o,un as s}from"./icons-CO_II6D-.js";import"./api-client-c8YOpTlT.js";import"./portal-container-context-NFSuymMu.js";import{t as c}from"./button-CBehaXpV.js";import{a as l,n as u,o as d,r as f,s as p,t as m}from"./dialog-tzBRkGeW.js";import{t as h}from"./input-CP31LZnN.js";import{dt as g,xn as _,yt as v}from"./index-DSbUqWiH.js";import{C as y,a as b,d as x}from"./api-settings-0s1Rfgcu.js";var S=e(t(),1),C=[{value:`claude-opus-5-5`,label:`Claude Opus 5.5`,hint:`balanced, recommended`},{value:`claude-fable-5-1`,label:`Claude Fable 5.1`,hint:`flagship`},{value:`claude-opus-5`,label:`Claude Opus 5`,hint:`most powerful`},{value:`claude-fable-5`,label:`Claude Fable 5`,hint:`flagship`},{value:`claude-opus-4-8`,label:`Claude Opus 4.8`,hint:`powerful`},{value:`claude-opus-4-7`,label:`Claude Opus 4.7`,hint:`powerful`},{value:`claude-opus-4-6`,label:`Claude Opus 4.6`,hint:`powerful`},{value:`claude-sonnet-5`,label:`Claude Sonnet 5`,hint:`fast`},{value:`claude-sonnet-4-6`,label:`Claude Sonnet 4.6`,hint:`fast`},{value:`claude-haiku-4-5`,label:`Claude Haiku 4.5`,hint:`cheap`}];C.map(e=>e.value);function w(e,t){return`${e}/proxy${t?`/${t}`:``}`}function T(e,t){let n=w(e,t);return{anthropicBase:n,openAiBase:`${n}/v1`,anthropicMessages:`${n}/v1/messages`,openAiChatCompletions:`${n}/v1/chat/completions`,models:`${n}/v1/models`,imagesGenerations:t?`${n}/v1/images/generations`:null,imagesEdits:t?`${n}/v1/images/edits`:null}}var E=n(),D=`Hello! Reply briefly.`,O=`claude-opus-5-5`;function k(e){let[t,n]=(0,S.useState)(!1);return(0,E.jsxs)(m,{open:t,onOpenChange:n,children:[(0,E.jsx)(p,{asChild:!0,children:(0,E.jsxs)(c,{variant:`outline`,size:`sm`,className:`h-7 text-[11px] gap-1.5 cursor-pointer`,children:[(0,E.jsx)(r,{className:`size-3`}),`Test`]})}),(0,E.jsxs)(u,{className:`sm:max-w-md max-h-[85vh] overflow-y-auto`,children:[(0,E.jsxs)(l,{children:[(0,E.jsx)(d,{className:`text-sm`,children:`Test Proxy`}),(0,E.jsx)(f,{className:`text-[11px]`,children:`Send a test request and inspect the raw response.`})]}),t&&(0,E.jsx)(A,{...e})]})]})}function A({authKey:e,baseUrl:t,provider:n}){let[r,a]=(0,S.useState)(`anthropic`),[o,l]=(0,S.useState)(D),[u,d]=(0,S.useState)(n?``:O),[f,p]=(0,S.useState)(!0),[m,g]=(0,S.useState)(!1),[_,y]=(0,S.useState)(null),[b,x]=(0,S.useState)(null),[w,k]=(0,S.useState)(null),A=(0,S.useRef)(null),j=(0,S.useRef)(null);(0,S.useEffect)(()=>{A.current?.select()},[]),(0,S.useEffect)(()=>{j.current&&(j.current.scrollTop=j.current.scrollHeight)},[_]);let M=e=>{a(e),y(null),x(null),k(null)},N=async()=>{g(!0),y(null),x(null),k(null);let i=Date.now(),a=r===`openai`,s=T(t,n),c=a?s.openAiChatCompletions:s.anthropicMessages,l=JSON.stringify({...u?{model:u}:{},max_tokens:256,stream:f,messages:[{role:`user`,content:o}]}),d={"Content-Type":`application/json`};a?d.Authorization=`Bearer ${e}`:(d[`x-api-key`]=e,d[`anthropic-version`]=`2023-06-01`);try{let e=await fetch(c,{method:`POST`,headers:d,body:l});if(!e.ok){let t=await e.text();x(`HTTP ${e.status}: ${t}`),g(!1),k(Date.now()-i);return}if(f){let t=e.body?.getReader();if(!t){x(`No response body`),g(!1);return}let n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;r+=n.decode(i,{stream:!0}),y(r)}k(Date.now()-i)}else{let t=await e.text();try{y(JSON.stringify(JSON.parse(t),null,2))}catch{y(t)}k(Date.now()-i)}}catch(e){x(e.message)}finally{g(!1),k(e=>e??Date.now()-i)}};return(0,E.jsxs)(`div`,{className:`space-y-3 min-w-0`,children:[(0,E.jsxs)(`div`,{className:`space-y-1.5 min-w-0`,children:[(0,E.jsx)(v,{className:`text-[11px]`,children:`Auth Style`}),(0,E.jsx)(`div`,{className:`flex gap-1`,children:[`anthropic`,`openai`].map(e=>(0,E.jsx)(`button`,{onClick:()=>M(e),className:`flex-1 h-8 rounded-md text-[11px] font-medium border transition-colors cursor-pointer ${r===e?`bg-primary text-primary-foreground border-primary`:`bg-muted text-muted-foreground border-transparent hover:bg-muted/80`}`,children:e===`anthropic`?`Anthropic`:`OpenAI`},e))}),(0,E.jsxs)(`p`,{className:`text-[9px] text-muted-foreground break-all`,children:[r===`anthropic`?`x-api-key header`:`Authorization: Bearer header`,` · `,(0,E.jsx)(`code`,{children:`/proxy${n?`/${n}`:``}/v1/${r===`anthropic`?`messages`:`chat/completions`}`})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(v,{className:`text-[11px]`,children:`Model`}),n?(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(h,{value:u,onChange:e=>d(e.target.value),placeholder:`leave empty to let the provider choose`,className:`h-8 text-[11px] font-mono`}),(0,E.jsxs)(`p`,{className:`text-[9px] text-muted-foreground`,children:[`Names come from `,(0,E.jsxs)(`code`,{children:[`GET /proxy/`,n,`/v1/models`]}),`.`]})]}):(0,E.jsx)(`select`,{value:u,onChange:e=>d(e.target.value),className:`h-8 w-full rounded-md border bg-background px-2 text-[11px]`,children:C.map(e=>(0,E.jsx)(`option`,{value:e.value,children:e.value},e.value))})]}),(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsx)(v,{className:`text-[11px]`,children:`Streaming`}),(0,E.jsx)(`div`,{className:`flex gap-1`,children:[!0,!1].map(e=>(0,E.jsx)(`button`,{onClick:()=>p(e),className:`h-7 px-3 rounded-md text-[11px] font-medium border transition-colors cursor-pointer ${f===e?`bg-primary text-primary-foreground border-primary`:`bg-muted text-muted-foreground border-transparent hover:bg-muted/80`}`,children:e?`Stream`:`JSON`},String(e)))})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(v,{className:`text-[11px]`,children:`Message`}),(0,E.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,E.jsx)(h,{ref:A,value:o,onChange:e=>l(e.target.value),placeholder:`Type a test message...`,className:`h-9 text-[11px] flex-1 min-w-0`,onKeyDown:e=>{e.key===`Enter`&&!m&&N()}}),(0,E.jsxs)(c,{size:`sm`,className:`h-9 px-3 cursor-pointer shrink-0`,onClick:N,disabled:m||!o.trim(),children:[m?(0,E.jsx)(s,{className:`size-3.5 animate-spin`}):(0,E.jsx)(i,{className:`size-3.5`}),(0,E.jsx)(`span`,{className:`ml-1 text-[11px]`,children:m?`...`:`Send`})]})]})]}),(_||b)&&(0,E.jsxs)(`div`,{className:`space-y-1 min-w-0`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Raw Response`}),w!=null&&(0,E.jsxs)(`span`,{className:`text-[9px] font-mono text-muted-foreground`,children:[(w/1e3).toFixed(1),`s`]})]}),b?(0,E.jsx)(`pre`,{className:`text-[9px] font-mono bg-error/10 text-error p-2 rounded overflow-auto max-h-52 whitespace-pre-wrap break-all`,children:b}):(0,E.jsx)(`pre`,{ref:j,className:`text-[9px] font-mono bg-muted p-2 rounded overflow-auto max-h-52 whitespace-pre-wrap break-all`,children:_})]})]})}function j(){let[e,t]=(0,S.useState)(``),[n,r]=(0,S.useState)([]);(0,S.useEffect)(()=>{b().then(e=>r(Object.keys(e.providers??{}).filter(e=>e!==`mock`&&e!==`claude`))).catch(()=>r([]))},[]);let[i,s]=(0,S.useState)(null),[l,u]=(0,S.useState)(!0),[d,f]=(0,S.useState)(!1),[p,m]=(0,S.useState)(null),[C,w]=(0,S.useState)(null);(0,S.useEffect)(()=>{u(!0),x().then(s).catch(e=>m(e.message)).finally(()=>u(!1))},[]);let D=async e=>{f(!0),m(null);try{s(await y(e))}catch(e){m(e.message)}finally{f(!1)}},O=(e,t)=>{_(e),w(t),setTimeout(()=>w(null),2e3)};if(l||!i)return(0,E.jsxs)(`div`,{className:`space-y-2`,children:[(0,E.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`API Proxy`}),(0,E.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:p?`Error: ${p}`:`Loading...`})]});let A=!!i.authKey,j=!!i.tunnelUrl,M=i.localEndpoint.replace(/\/proxy\/v1\/messages$/,``),N=T(j?i.tunnelUrl:M,e),P=N.anthropicMessages,F=N.openAiChatCompletions,I=`ANTHROPIC_BASE_URL=${N.anthropicBase}\nANTHROPIC_API_KEY=${i.authKey}`,L=`OPENAI_BASE_URL=${N.openAiBase}\nOPENAI_API_KEY=${i.authKey}`;return(0,E.jsxs)(`div`,{className:`space-y-4`,children:[(0,E.jsx)(`div`,{className:`space-y-1.5`,children:(0,E.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Expose your accounts as an API that speaks both the Anthropic and OpenAI formats, so most SDKs need only a new base URL. The default path answers from your Claude accounts; pick a provider below to run its agent instead, which also unlocks image generation.`})}),(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,E.jsx)(v,{className:`text-xs`,children:`Enable Proxy`}),(0,E.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Accept API requests under /proxy`})]}),(0,E.jsx)(g,{checked:i.enabled,onCheckedChange:e=>D({enabled:e}),disabled:d})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(v,{className:`text-[11px]`,children:`Auth Key`}),A?(0,E.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,E.jsx)(h,{readOnly:!0,value:i.authKey,className:`h-7 text-[11px] font-mono flex-1`}),(0,E.jsx)(c,{variant:`outline`,size:`sm`,className:`h-7 px-2 cursor-pointer shrink-0`,onClick:()=>O(i.authKey,`key`),children:C===`key`?`Copied!`:(0,E.jsx)(o,{className:`size-3`})}),(0,E.jsx)(c,{variant:`outline`,size:`sm`,className:`h-7 px-2 cursor-pointer shrink-0`,onClick:()=>D({generateKey:!0}),disabled:d,children:(0,E.jsx)(a,{className:`size-3`})})]}):(0,E.jsx)(c,{variant:`outline`,size:`sm`,className:`h-7 text-xs cursor-pointer`,onClick:()=>D({generateKey:!0}),disabled:d,children:`Generate Auth Key`}),(0,E.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Use as Bearer token or x-api-key when calling the proxy.`})]}),i.enabled&&A&&(0,E.jsxs)(`div`,{className:`space-y-2 rounded-md border p-3 bg-muted/30`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsx)(`h4`,{className:`text-[11px] font-medium`,children:`Connection Info`}),(0,E.jsx)(k,{authKey:i.authKey,baseUrl:window.location.origin,provider:e})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Provider`}),(0,E.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:[{id:``,label:`Claude (default)`},...n.map(e=>({id:e,label:e}))].map(n=>(0,E.jsx)(`button`,{type:`button`,onClick:()=>t(n.id),className:`text-[10px] px-2.5 min-h-[36px] rounded-md border transition-colors cursor-pointer ${e===n.id?`border-primary bg-primary/15`:`border-border bg-muted/40 hover:bg-muted`}`,children:n.label},n.id||`default`))}),e&&(0,E.jsxs)(`p`,{className:`text-[10px] text-muted-foreground`,children:[`Runs the `,e,` agent per request (read-only sandbox, one turn). Slower than the default path.`]})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Anthropic Endpoint`}),(0,E.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,E.jsx)(`code`,{className:`text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded flex-1 truncate`,children:P}),(0,E.jsx)(c,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 cursor-pointer shrink-0`,onClick:()=>O(P,`anthropic`),children:C===`anthropic`?`Copied!`:(0,E.jsx)(o,{className:`size-3`})})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`OpenAI-Compatible Endpoint`}),(0,E.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,E.jsx)(`code`,{className:`text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded flex-1 truncate`,children:F}),(0,E.jsx)(c,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 cursor-pointer shrink-0`,onClick:()=>O(F,`openai`),children:C===`openai`?`Copied!`:(0,E.jsx)(o,{className:`size-3`})})]})]}),N.imagesGenerations&&N.imagesEdits&&(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Image Endpoints`}),(0,E.jsx)(`code`,{className:`block text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded truncate`,children:N.imagesGenerations}),(0,E.jsx)(`code`,{className:`block text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded truncate`,children:N.imagesEdits})]}),!j&&(0,E.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Start a Cloudflare tunnel (Share) to get a public URL.`}),(0,E.jsxs)(`div`,{className:`space-y-1 pt-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Anthropic Format`}),(0,E.jsxs)(`div`,{className:`relative`,children:[(0,E.jsx)(`pre`,{className:`text-[9px] font-mono bg-muted p-2 rounded overflow-x-auto whitespace-pre`,children:I}),(0,E.jsx)(c,{variant:`ghost`,size:`sm`,className:`absolute top-1 right-1 h-5 px-1 cursor-pointer`,onClick:()=>O(I,`anthropic-env`),children:C===`anthropic-env`?`Copied!`:(0,E.jsx)(o,{className:`size-2.5`})})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`OpenAI Format`}),(0,E.jsxs)(`div`,{className:`relative`,children:[(0,E.jsx)(`pre`,{className:`text-[9px] font-mono bg-muted p-2 rounded overflow-x-auto whitespace-pre`,children:L}),(0,E.jsx)(c,{variant:`ghost`,size:`sm`,className:`absolute top-1 right-1 h-5 px-1 cursor-pointer`,onClick:()=>O(L,`openai-env`),children:C===`openai-env`?`Copied!`:(0,E.jsx)(o,{className:`size-2.5`})})]})]}),(0,E.jsx)(`div`,{className:`flex items-center gap-3 pt-1`,children:(0,E.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[`Requests served: `,(0,E.jsx)(`span`,{className:`font-mono`,children:i.requestCount})]})})]}),d&&(0,E.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:`Saving...`}),p&&(0,E.jsx)(`p`,{className:`text-[11px] text-error`,children:p})]})}export{j as ProxySettingsSection};
|
|
1
|
+
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-BHh12_0v.js";import{St as r,Yn as i,ir as a,nt as o,un as s}from"./icons-CO_II6D-.js";import"./api-client-c8YOpTlT.js";import"./portal-container-context-NFSuymMu.js";import{t as c}from"./button-CBehaXpV.js";import{a as l,n as u,o as d,r as f,s as p,t as m}from"./dialog-tzBRkGeW.js";import{t as h}from"./input-CP31LZnN.js";import{dt as g,xn as _,yt as v}from"./index-CvUGUp7d.js";import{C as y,a as b,d as x}from"./api-settings-0s1Rfgcu.js";var S=e(t(),1),C=[{value:`claude-opus-5-5`,label:`Claude Opus 5.5`,hint:`balanced, recommended`},{value:`claude-fable-5-1`,label:`Claude Fable 5.1`,hint:`flagship`},{value:`claude-opus-5`,label:`Claude Opus 5`,hint:`most powerful`},{value:`claude-fable-5`,label:`Claude Fable 5`,hint:`flagship`},{value:`claude-opus-4-8`,label:`Claude Opus 4.8`,hint:`powerful`},{value:`claude-opus-4-7`,label:`Claude Opus 4.7`,hint:`powerful`},{value:`claude-opus-4-6`,label:`Claude Opus 4.6`,hint:`powerful`},{value:`claude-sonnet-5`,label:`Claude Sonnet 5`,hint:`fast`},{value:`claude-sonnet-4-6`,label:`Claude Sonnet 4.6`,hint:`fast`},{value:`claude-haiku-4-5`,label:`Claude Haiku 4.5`,hint:`cheap`}];C.map(e=>e.value);function w(e,t){return`${e}/proxy${t?`/${t}`:``}`}function T(e,t){let n=w(e,t);return{anthropicBase:n,openAiBase:`${n}/v1`,anthropicMessages:`${n}/v1/messages`,openAiChatCompletions:`${n}/v1/chat/completions`,models:`${n}/v1/models`,imagesGenerations:t?`${n}/v1/images/generations`:null,imagesEdits:t?`${n}/v1/images/edits`:null}}var E=n(),D=`Hello! Reply briefly.`,O=`claude-opus-5-5`;function k(e){let[t,n]=(0,S.useState)(!1);return(0,E.jsxs)(m,{open:t,onOpenChange:n,children:[(0,E.jsx)(p,{asChild:!0,children:(0,E.jsxs)(c,{variant:`outline`,size:`sm`,className:`h-7 text-[11px] gap-1.5 cursor-pointer`,children:[(0,E.jsx)(r,{className:`size-3`}),`Test`]})}),(0,E.jsxs)(u,{className:`sm:max-w-md max-h-[85vh] overflow-y-auto`,children:[(0,E.jsxs)(l,{children:[(0,E.jsx)(d,{className:`text-sm`,children:`Test Proxy`}),(0,E.jsx)(f,{className:`text-[11px]`,children:`Send a test request and inspect the raw response.`})]}),t&&(0,E.jsx)(A,{...e})]})]})}function A({authKey:e,baseUrl:t,provider:n}){let[r,a]=(0,S.useState)(`anthropic`),[o,l]=(0,S.useState)(D),[u,d]=(0,S.useState)(n?``:O),[f,p]=(0,S.useState)(!0),[m,g]=(0,S.useState)(!1),[_,y]=(0,S.useState)(null),[b,x]=(0,S.useState)(null),[w,k]=(0,S.useState)(null),A=(0,S.useRef)(null),j=(0,S.useRef)(null);(0,S.useEffect)(()=>{A.current?.select()},[]),(0,S.useEffect)(()=>{j.current&&(j.current.scrollTop=j.current.scrollHeight)},[_]);let M=e=>{a(e),y(null),x(null),k(null)},N=async()=>{g(!0),y(null),x(null),k(null);let i=Date.now(),a=r===`openai`,s=T(t,n),c=a?s.openAiChatCompletions:s.anthropicMessages,l=JSON.stringify({...u?{model:u}:{},max_tokens:256,stream:f,messages:[{role:`user`,content:o}]}),d={"Content-Type":`application/json`};a?d.Authorization=`Bearer ${e}`:(d[`x-api-key`]=e,d[`anthropic-version`]=`2023-06-01`);try{let e=await fetch(c,{method:`POST`,headers:d,body:l});if(!e.ok){let t=await e.text();x(`HTTP ${e.status}: ${t}`),g(!1),k(Date.now()-i);return}if(f){let t=e.body?.getReader();if(!t){x(`No response body`),g(!1);return}let n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;r+=n.decode(i,{stream:!0}),y(r)}k(Date.now()-i)}else{let t=await e.text();try{y(JSON.stringify(JSON.parse(t),null,2))}catch{y(t)}k(Date.now()-i)}}catch(e){x(e.message)}finally{g(!1),k(e=>e??Date.now()-i)}};return(0,E.jsxs)(`div`,{className:`space-y-3 min-w-0`,children:[(0,E.jsxs)(`div`,{className:`space-y-1.5 min-w-0`,children:[(0,E.jsx)(v,{className:`text-[11px]`,children:`Auth Style`}),(0,E.jsx)(`div`,{className:`flex gap-1`,children:[`anthropic`,`openai`].map(e=>(0,E.jsx)(`button`,{onClick:()=>M(e),className:`flex-1 h-8 rounded-md text-[11px] font-medium border transition-colors cursor-pointer ${r===e?`bg-primary text-primary-foreground border-primary`:`bg-muted text-muted-foreground border-transparent hover:bg-muted/80`}`,children:e===`anthropic`?`Anthropic`:`OpenAI`},e))}),(0,E.jsxs)(`p`,{className:`text-[9px] text-muted-foreground break-all`,children:[r===`anthropic`?`x-api-key header`:`Authorization: Bearer header`,` · `,(0,E.jsx)(`code`,{children:`/proxy${n?`/${n}`:``}/v1/${r===`anthropic`?`messages`:`chat/completions`}`})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(v,{className:`text-[11px]`,children:`Model`}),n?(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(h,{value:u,onChange:e=>d(e.target.value),placeholder:`leave empty to let the provider choose`,className:`h-8 text-[11px] font-mono`}),(0,E.jsxs)(`p`,{className:`text-[9px] text-muted-foreground`,children:[`Names come from `,(0,E.jsxs)(`code`,{children:[`GET /proxy/`,n,`/v1/models`]}),`.`]})]}):(0,E.jsx)(`select`,{value:u,onChange:e=>d(e.target.value),className:`h-8 w-full rounded-md border bg-background px-2 text-[11px]`,children:C.map(e=>(0,E.jsx)(`option`,{value:e.value,children:e.value},e.value))})]}),(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsx)(v,{className:`text-[11px]`,children:`Streaming`}),(0,E.jsx)(`div`,{className:`flex gap-1`,children:[!0,!1].map(e=>(0,E.jsx)(`button`,{onClick:()=>p(e),className:`h-7 px-3 rounded-md text-[11px] font-medium border transition-colors cursor-pointer ${f===e?`bg-primary text-primary-foreground border-primary`:`bg-muted text-muted-foreground border-transparent hover:bg-muted/80`}`,children:e?`Stream`:`JSON`},String(e)))})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(v,{className:`text-[11px]`,children:`Message`}),(0,E.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,E.jsx)(h,{ref:A,value:o,onChange:e=>l(e.target.value),placeholder:`Type a test message...`,className:`h-9 text-[11px] flex-1 min-w-0`,onKeyDown:e=>{e.key===`Enter`&&!m&&N()}}),(0,E.jsxs)(c,{size:`sm`,className:`h-9 px-3 cursor-pointer shrink-0`,onClick:N,disabled:m||!o.trim(),children:[m?(0,E.jsx)(s,{className:`size-3.5 animate-spin`}):(0,E.jsx)(i,{className:`size-3.5`}),(0,E.jsx)(`span`,{className:`ml-1 text-[11px]`,children:m?`...`:`Send`})]})]})]}),(_||b)&&(0,E.jsxs)(`div`,{className:`space-y-1 min-w-0`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Raw Response`}),w!=null&&(0,E.jsxs)(`span`,{className:`text-[9px] font-mono text-muted-foreground`,children:[(w/1e3).toFixed(1),`s`]})]}),b?(0,E.jsx)(`pre`,{className:`text-[9px] font-mono bg-error/10 text-error p-2 rounded overflow-auto max-h-52 whitespace-pre-wrap break-all`,children:b}):(0,E.jsx)(`pre`,{ref:j,className:`text-[9px] font-mono bg-muted p-2 rounded overflow-auto max-h-52 whitespace-pre-wrap break-all`,children:_})]})]})}function j(){let[e,t]=(0,S.useState)(``),[n,r]=(0,S.useState)([]);(0,S.useEffect)(()=>{b().then(e=>r(Object.keys(e.providers??{}).filter(e=>e!==`mock`&&e!==`claude`))).catch(()=>r([]))},[]);let[i,s]=(0,S.useState)(null),[l,u]=(0,S.useState)(!0),[d,f]=(0,S.useState)(!1),[p,m]=(0,S.useState)(null),[C,w]=(0,S.useState)(null);(0,S.useEffect)(()=>{u(!0),x().then(s).catch(e=>m(e.message)).finally(()=>u(!1))},[]);let D=async e=>{f(!0),m(null);try{s(await y(e))}catch(e){m(e.message)}finally{f(!1)}},O=(e,t)=>{_(e),w(t),setTimeout(()=>w(null),2e3)};if(l||!i)return(0,E.jsxs)(`div`,{className:`space-y-2`,children:[(0,E.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`API Proxy`}),(0,E.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:p?`Error: ${p}`:`Loading...`})]});let A=!!i.authKey,j=!!i.tunnelUrl,M=i.localEndpoint.replace(/\/proxy\/v1\/messages$/,``),N=T(j?i.tunnelUrl:M,e),P=N.anthropicMessages,F=N.openAiChatCompletions,I=`ANTHROPIC_BASE_URL=${N.anthropicBase}\nANTHROPIC_API_KEY=${i.authKey}`,L=`OPENAI_BASE_URL=${N.openAiBase}\nOPENAI_API_KEY=${i.authKey}`;return(0,E.jsxs)(`div`,{className:`space-y-4`,children:[(0,E.jsx)(`div`,{className:`space-y-1.5`,children:(0,E.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Expose your accounts as an API that speaks both the Anthropic and OpenAI formats, so most SDKs need only a new base URL. The default path answers from your Claude accounts; pick a provider below to run its agent instead, which also unlocks image generation.`})}),(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,E.jsx)(v,{className:`text-xs`,children:`Enable Proxy`}),(0,E.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Accept API requests under /proxy`})]}),(0,E.jsx)(g,{checked:i.enabled,onCheckedChange:e=>D({enabled:e}),disabled:d})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(v,{className:`text-[11px]`,children:`Auth Key`}),A?(0,E.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,E.jsx)(h,{readOnly:!0,value:i.authKey,className:`h-7 text-[11px] font-mono flex-1`}),(0,E.jsx)(c,{variant:`outline`,size:`sm`,className:`h-7 px-2 cursor-pointer shrink-0`,onClick:()=>O(i.authKey,`key`),children:C===`key`?`Copied!`:(0,E.jsx)(o,{className:`size-3`})}),(0,E.jsx)(c,{variant:`outline`,size:`sm`,className:`h-7 px-2 cursor-pointer shrink-0`,onClick:()=>D({generateKey:!0}),disabled:d,children:(0,E.jsx)(a,{className:`size-3`})})]}):(0,E.jsx)(c,{variant:`outline`,size:`sm`,className:`h-7 text-xs cursor-pointer`,onClick:()=>D({generateKey:!0}),disabled:d,children:`Generate Auth Key`}),(0,E.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Use as Bearer token or x-api-key when calling the proxy.`})]}),i.enabled&&A&&(0,E.jsxs)(`div`,{className:`space-y-2 rounded-md border p-3 bg-muted/30`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsx)(`h4`,{className:`text-[11px] font-medium`,children:`Connection Info`}),(0,E.jsx)(k,{authKey:i.authKey,baseUrl:window.location.origin,provider:e})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Provider`}),(0,E.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:[{id:``,label:`Claude (default)`},...n.map(e=>({id:e,label:e}))].map(n=>(0,E.jsx)(`button`,{type:`button`,onClick:()=>t(n.id),className:`text-[10px] px-2.5 min-h-[36px] rounded-md border transition-colors cursor-pointer ${e===n.id?`border-primary bg-primary/15`:`border-border bg-muted/40 hover:bg-muted`}`,children:n.label},n.id||`default`))}),e&&(0,E.jsxs)(`p`,{className:`text-[10px] text-muted-foreground`,children:[`Runs the `,e,` agent per request (read-only sandbox, one turn). Slower than the default path.`]})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Anthropic Endpoint`}),(0,E.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,E.jsx)(`code`,{className:`text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded flex-1 truncate`,children:P}),(0,E.jsx)(c,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 cursor-pointer shrink-0`,onClick:()=>O(P,`anthropic`),children:C===`anthropic`?`Copied!`:(0,E.jsx)(o,{className:`size-3`})})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`OpenAI-Compatible Endpoint`}),(0,E.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,E.jsx)(`code`,{className:`text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded flex-1 truncate`,children:F}),(0,E.jsx)(c,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 cursor-pointer shrink-0`,onClick:()=>O(F,`openai`),children:C===`openai`?`Copied!`:(0,E.jsx)(o,{className:`size-3`})})]})]}),N.imagesGenerations&&N.imagesEdits&&(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Image Endpoints`}),(0,E.jsx)(`code`,{className:`block text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded truncate`,children:N.imagesGenerations}),(0,E.jsx)(`code`,{className:`block text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded truncate`,children:N.imagesEdits})]}),!j&&(0,E.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Start a Cloudflare tunnel (Share) to get a public URL.`}),(0,E.jsxs)(`div`,{className:`space-y-1 pt-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Anthropic Format`}),(0,E.jsxs)(`div`,{className:`relative`,children:[(0,E.jsx)(`pre`,{className:`text-[9px] font-mono bg-muted p-2 rounded overflow-x-auto whitespace-pre`,children:I}),(0,E.jsx)(c,{variant:`ghost`,size:`sm`,className:`absolute top-1 right-1 h-5 px-1 cursor-pointer`,onClick:()=>O(I,`anthropic-env`),children:C===`anthropic-env`?`Copied!`:(0,E.jsx)(o,{className:`size-2.5`})})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`OpenAI Format`}),(0,E.jsxs)(`div`,{className:`relative`,children:[(0,E.jsx)(`pre`,{className:`text-[9px] font-mono bg-muted p-2 rounded overflow-x-auto whitespace-pre`,children:L}),(0,E.jsx)(c,{variant:`ghost`,size:`sm`,className:`absolute top-1 right-1 h-5 px-1 cursor-pointer`,onClick:()=>O(L,`openai-env`),children:C===`openai-env`?`Copied!`:(0,E.jsx)(o,{className:`size-2.5`})})]})]}),(0,E.jsx)(`div`,{className:`flex items-center gap-3 pt-1`,children:(0,E.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[`Requests served: `,(0,E.jsx)(`span`,{className:`font-mono`,children:i.requestCount})]})})]}),d&&(0,E.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:`Saving...`}),p&&(0,E.jsx)(`p`,{className:`text-[11px] text-error`,children:p})]})}export{j as ProxySettingsSection};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import{Ar as r,G as i,Jr as a,W as o}from"./icons-CO_II6D-.js";import{n as s}from"./api-client-c8YOpTlT.js";import{t as c,y as l}from"./settings-store-DXmQug0m.js";import{n as u}from"./utils-btZ8C8-R.js";import{t as d}from"./ws-auth-B_y5rMfZ.js";import{z as f}from"./index-DSbUqWiH.js";import{r as p}from"./run-in-terminal-SU9cwoZ4.js";function m(e,t,n=`8081`){let r=d(`/ws/remote-desktop`),i=e.protocol===`https:`?`wss:`:`ws:`;return t&&e.protocol!==`https:`?`ws://${e.hostname}:${n}${r}`:`${i}//${e.host}${r}`}var h=30;function g(e,t=h){return Math.round(e*1e6/t)}var _=e(t(),1);function v(e,t){return t||e}function y(e){let[t,n]=(0,_.useState)(`idle`),[r,i]=(0,_.useState)(null),[a,o]=(0,_.useState)({width:0,height:0}),s=(0,_.useRef)(null),c=(0,_.useRef)(null),l=(0,_.useRef)(!1),u=(0,_.useRef)(0),d=(0,_.useRef)(0),f=(0,_.useRef)(null),p=(0,_.useRef)(!1),m=(0,_.useCallback)(e=>{n(`error`),i(e)},[]),h=(0,_.useCallback)(async t=>{if(f.current=t,typeof VideoDecoder>`u`){n(`unsupported`),i(`This browser has no WebCodecs VideoDecoder — try Chrome, Edge, or Safari 16.4+.`);return}let r={codec:t,optimizeForLatency:!0};try{if(!(await VideoDecoder.isConfigSupported(r)).supported){n(`unsupported`),i(`This browser's decoder does not support ${t}.`);return}}catch(e){m(e.message);return}s.current?.close(),l.current=!1,d.current=0;let a=new VideoDecoder({output:t=>{u.current+=1;let n=e.current;n&&((n.width!==t.displayWidth||n.height!==t.displayHeight)&&(n.width=t.displayWidth,n.height=t.displayHeight,o({width:t.displayWidth,height:t.displayHeight})),c.current||=n.getContext(`2d`),c.current?.drawImage(t,0,0,n.width,n.height)),t.close()},error:e=>y(e.message)});try{a.configure(r)}catch(e){m(e.message);return}s.current=a,p.current=!0,n(`ready`),i(null)},[e,m]),y=(0,_.useCallback)(e=>{if(!p.current)return;let t=f.current;if(!t){m(e);return}try{s.current?.close()}catch{}s.current=null,h(t)},[h,m]);return{status:t,errorMessage:r,configure:h,decodeAccessUnit:(0,_.useCallback)((e,t)=>{let n=s.current;if(!(!n||n.state!==`configured`)&&v(l.current,t)){t&&(l.current=!0);try{n.decode(new EncodedVideoChunk({type:t?`key`:`delta`,timestamp:g(d.current++),data:e}))}catch(e){y(e.message)}}},[y]),reset:(0,_.useCallback)(()=>{p.current=!1;try{s.current?.close()}catch{}s.current=null,l.current=!1,u.current=0,d.current=0,n(`idle`),i(null)},[]),getFrameCount:(0,_.useCallback)(()=>u.current,[]),frameSize:a}}function b(e){return e.code===`KeyV`&&(e.ctrlKey||e.metaKey)}function x(e){return(e.code===`KeyC`||e.code===`KeyX`)&&(e.ctrlKey||e.metaKey)}function S(e){let t=document.createElement(`textarea`);t.value=e,t.style.cssText=`position:fixed;top:0;left:-9999px;opacity:0`,t.setAttribute(`aria-hidden`,`true`),document.body.appendChild(t);let n=document.activeElement,r=!1;try{t.focus({preventScroll:!0}),t.setSelectionRange(0,e.length),t.select(),r=document.execCommand(`copy`)}catch{r=!1}t.remove();try{n?.focus({preventScroll:!0})}catch{}return r}async function C(e){try{return navigator.clipboard?.writeText?(await navigator.clipboard.writeText(e),!0):!1}catch{return!1}}var w=120,T=400;function ee(){let e=(0,_.useRef)(null),t=(0,_.useRef)(null),n=(0,_.useRef)(null),r=(0,_.useRef)(0),i=(0,_.useRef)(0),[a,o]=(0,_.useState)(`idle`),s=(0,_.useCallback)(()=>{try{t.current?.close()}catch{}t.current=null,n.current=null;let a=e.current;e.current=null,a&&a.close().catch(()=>{}),r.current=0,i.current=0,o(e=>e===`unsupported`?e:`idle`)},[]),c=(0,_.useCallback)(t=>{let i=e.current;if(!i){t.close();return}let a=t.numberOfFrames,o=t.numberOfChannels,s=i.createBuffer(o,a,t.sampleRate);for(let e=0;e<o;e++){let n=new Float32Array(a);t.copyTo(n,{planeIndex:e,format:`f32-planar`}),s.copyToChannel(n,e)}t.close();let c=i.currentTime,l=(r.current-c)*1e3;(l<0||l>T)&&(r.current=c+w/1e3);let u=i.createBufferSource();u.buffer=s,u.connect(i.destination),n.current&&u.connect(n.current),u.start(r.current),r.current+=s.duration},[]),l=(0,_.useCallback)(async(a,l)=>{if(typeof AudioDecoder>`u`||typeof AudioContext>`u`){o(`unsupported`);return}s();let u=new AudioContext({sampleRate:l,latencyHint:`interactive`});e.current=u,u.state===`suspended`&&await u.resume().catch(()=>{}),n.current=u.createMediaStreamDestination();let d=new AudioDecoder({output:c,error:()=>{try{t.current?.reset()}catch{}}});try{d.configure({codec:`opus`,sampleRate:l,numberOfChannels:a})}catch{o(`unsupported`);return}t.current=d,r.current=0,i.current=0,o(`playing`)},[c,s]),u=(0,_.useCallback)(e=>{let n=t.current;if(!n||n.state!==`configured`)return;let r=i.current;i.current+=2e4;try{n.decode(new EncodedAudioChunk({type:`key`,timestamp:r,data:e}))}catch{}},[]),d=(0,_.useCallback)(()=>n.current?n.current.stream.getAudioTracks():[],[]);return(0,_.useEffect)(()=>()=>s(),[s]),{status:a,configure:l,decodePacket:u,reset:s,getTracks:d}}var E=5e3,D=2;function O(e,{displayId:t}={}){let n=(0,_.useRef)(null),r=(0,_.useRef)(0),[i,a]=(0,_.useState)(`connecting`),[o,u]=(0,_.useState)(null),[d,f]=(0,_.useState)(0),[p,h]=(0,_.useState)(()=>({preset:l(c.getState().remoteDesktopQuality)??`balanced`,held:1})),g=(0,_.useRef)(l(c.getState().remoteDesktopQuality)),[v,b]=(0,_.useState)(null),x=(0,_.useRef)(null),S=c(e=>e.remoteDesktopShowCursor),w=c(e=>e.remoteDesktopClipboardSync),T=(0,_.useRef)(S),O=(0,_.useRef)(w);(0,_.useEffect)(()=>{T.current=S},[S]),(0,_.useEffect)(()=>{O.current=w},[w]);let k=(0,_.useRef)(c.getState().remoteDesktopCodec),[A,j]=(0,_.useState)(k.current),M=y(e),N=ee(),[P,F]=(0,_.useState)(!1),[I,L]=(0,_.useState)(!1),[R,z]=(0,_.useState)(null),[B,V]=(0,_.useState)(null),[H,U]=(0,_.useState)(null),[W,G]=(0,_.useState)(null),K=(0,_.useCallback)(e=>{let t=n.current;t?.readyState===WebSocket.OPEN&&t.send(JSON.stringify(e))},[]),q=(0,_.useCallback)(e=>{let t=l(e.preset);t&&h({preset:t,held:typeof e.held==`number`&&e.held>0&&e.held<1?e.held:1})},[]),J=(0,_.useCallback)(e=>{if(e!==`custom`)return{type:`quality`,preset:e};let t=c.getState();return{type:`quality`,preset:`custom`,percent:t.remoteDesktopCustomQualityPercent,fps:t.remoteDesktopCustomFps}},[]),Y=(0,_.useCallback)(e=>{g.current=e,c.getState().setRemoteDesktopQuality(e),K(J(e))},[J,K]),X=(0,_.useCallback)((e,t)=>{let n=c.getState();n.setRemoteDesktopCustomQuality(e,t),n.setRemoteDesktopQuality(`custom`),g.current=`custom`,K(J(`custom`))},[J,K]),Z=(0,_.useCallback)(e=>{z(null),K({type:`privacy`,enabled:e})},[K]),Q=(0,_.useCallback)(e=>{F(e),e||N.reset(),K({type:`audio`,enabled:e})},[N,K]),$=(0,_.useCallback)(e=>{k.current=e,c.getState().setRemoteDesktopCodec(e),j(e),e&&K({type:`codec`,encoder:e})},[K]),te=(0,_.useCallback)(e=>{G(null),K({type:`resolution`,modeId:e})},[K]),ne=(0,_.useCallback)(e=>{T.current=e,c.getState().setRemoteDesktopShowCursor(e),K({type:`cursor`,show:e})},[K]),re=(0,_.useCallback)((e,t,n=!1)=>{K({type:`clipboard`,text:e,paste:t,shift:n})},[K]),ie=(0,_.useCallback)(()=>{x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{x.current=null,K({type:`clipboardRead`})},350)},[K]),ae=(0,_.useCallback)(()=>b(null),[]);(0,_.useEffect)(()=>()=>{x.current&&clearTimeout(x.current)},[]),(0,_.useEffect)(()=>{let e=!1,i=null;a(`connecting`),u(null),L(!1),z(null),r.current=0,M.reset(),(async()=>{let o;try{o=(await s.post(`/api/remote-desktop/session`)).nonce}catch(t){e||(a(`error`),u(t.message));return}if(e)return;let c=m(window.location,!1,void 0),l=new WebSocket(c);l.binaryType=`arraybuffer`,n.current=l,l.onopen=()=>{l.send(JSON.stringify({type:`auth`,nonce:o,...t?{displayId:t}:{},cursor:T.current,...k.current?{codec:k.current}:{}})),g.current&&l.send(JSON.stringify(J(g.current))),i=setInterval(()=>K({type:`ping`}),E)},l.onmessage=t=>{if(typeof t.data==`string`){let n;try{n=JSON.parse(t.data)}catch{return}if(n.type===`config`&&typeof n.codec==`string`)q(n),j(typeof n.encoder==`string`?n.encoder:null),M.configure(n.codec).then(()=>{e||a(`streaming`)});else if(n.type===`quality`)q(n);else if(n.type===`codec`)j(typeof n.encoder==`string`?n.encoder:null);else if(n.type===`resolution`)V(typeof n.modeId==`string`?n.modeId:null),U(typeof n.original==`string`?n.original:null),G(null);else if(n.type===`resolutionError`)G(typeof n.message==`string`?n.message:`The host refused the mode.`);else if(n.type===`privacy`)L(n.enabled===!0),z(typeof n.reason==`string`?n.reason:null);else if(n.type===`audio`){let e=n.enabled===!0;if(F(e),!e){N.reset();return}let t=typeof n.channels==`number`?n.channels:2,r=typeof n.sampleRate==`number`?n.sampleRate:48e3;N.configure(t,r)}else if(n.type===`clipboard`&&typeof n.text==`string`){if(!O.current)return;let t=n.text;C(t).then(n=>{!n&&!e&&b(t)})}else n.type===`error`&&(a(`error`),u(typeof n.message==`string`?n.message:`Server error`));return}let n=new Uint8Array(t.data);if(!(n.length<1)){if(r.current+=n.length,n[0]===D){N.decodePacket(n.subarray(1));return}M.decodeAccessUnit(n.subarray(1),n[0]===1)}},l.onerror=()=>{e||(a(`error`),u(`WebSocket error`))},l.onclose=()=>{e||a(e=>e===`error`?e:`closed`)}})();let o=()=>{if(document.hidden||e)return;let t=n.current;t&&t.readyState===WebSocket.OPEN?t.send(JSON.stringify({type:`ping`})):f(e=>e+1)};return document.addEventListener(`visibilitychange`,o),()=>{e=!0,document.removeEventListener(`visibilitychange`,o),i&&clearInterval(i);try{n.current?.close()}catch{}n.current=null;try{M.reset()}catch{}try{N.reset()}catch{}}},[d,t]);let oe=(0,_.useCallback)(()=>f(e=>e+1),[]),se=(0,_.useCallback)(()=>r.current,[]);return{connState:i,errorMessage:o,decoderStatus:M.status,decoderErrorMessage:M.errorMessage,sendMessage:K,reconnect:oe,getTotalBytes:se,getFrameCount:M.getFrameCount,frameSize:M.frameSize,quality:p,setQuality:Y,setCustomQuality:X,showCursor:S,setShowCursor:ne,codec:A,setCodec:$,audioOn:P,setAudioOn:Q,getAudioTracks:N.getTracks,privacyOn:I,privacyError:R,setPrivacyOn:Z,hostModeId:B,hostOriginalModeId:H,resolutionError:W,setHostMode:te,pendingHostClipboard:v,clearHostClipboard:ae,sendClipboard:re,requestHostClipboard:ie}}function k(e){return Math.min(Math.max(e,0),1)}function A(e,t,n){let r=n.width>0?(e-n.left)/n.width:0,i=n.height>0?(t-n.top)/n.height:0;return{xFrac:k(r),yFrac:k(i)}}function j(e,t,n,r){let i=r.scale||1,a=n.left+n.width/2,o=n.top+n.height/2;return A(a+(e-a-r.panX)/i,o+(t-o-r.panY)/i,n)}function M(e,t,n){if(t<=0||n<=0||e.width<=0||e.height<=0)return e;let r=e.width/e.height,i=t/n;if(i>r){let t=e.width/i;return{left:e.left,top:e.top+(e.height-t)/2,width:e.width,height:t}}let a=e.height*i;return{left:e.left+(e.width-a)/2,top:e.top,width:a,height:e.height}}function N(e){let t=new Map;for(let n of e){if(n.width<=0||n.height<=0)continue;let e=`${n.width}x${n.height}`,r=t.get(e);(!r||P(n,r))&&t.set(e,n)}return[...t.values()].sort((e,t)=>t.width*t.height-e.width*e.height||t.refresh-e.refresh).map(e=>({id:e.id,width:e.width,height:e.height,refresh:e.refresh,current:e.current,preferred:e.preferred}))}function P(e,t){return e.current===t.current?e.preferred===t.preferred?e.refresh>t.refresh:e.preferred:e.current}function F(e,t,n){if(!t||t.width<=0||t.height<=0)return null;let r=e.filter(e=>e.width===t.width&&e.height===t.height);if(r.length===0)return null;let i=e.find(e=>e.id===n)??e.find(e=>e.current)??null;return i&&i.width===t.width&&i.height===t.height?null:r.reduce((e,t)=>P(t,e)?t:e)}function I(){if(typeof window>`u`||!window.screen)return null;let e=Math.round(window.screen.width),t=Math.round(window.screen.height);return e>0&&t>0?{width:e,height:t}:null}function L(e){let t=`${e.width} × ${e.height}`;return e.refresh>0?`${t} · ${e.refresh} Hz`:t}var R=[`video/mp4;codecs=avc1.42E01E,mp4a.40.2`,`video/mp4`,`video/webm;codecs=vp9,opus`,`video/webm;codecs=vp8,opus`,`video/webm`];function z(e=e=>typeof MediaRecorder<`u`&&MediaRecorder.isTypeSupported(e)){return typeof MediaRecorder>`u`?null:R.find(e)??null}function B(e){return e.startsWith(`video/mp4`)?`mp4`:`webm`}function V(e,t=new Date){let n=e=>String(e).padStart(2,`0`);return`ppm-remote-${`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}_${n(t.getHours())}-${n(t.getMinutes())}-${n(t.getSeconds())}`}.${e}`}function H(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.rel=`noopener`,document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e4)}async function U(e){if(!e||e.width===0||e.height===0)return!1;let t=await new Promise(t=>e.toBlob(t,`image/png`));return t?(H(t,V(`png`)),!0):!1}function W(e,t){let n=(0,_.useRef)(null),r=(0,_.useRef)([]),[i,a]=(0,_.useState)(!1),[o,s]=(0,_.useState)(0),c=(0,_.useRef)(null);c.current===null&&(c.current=z());let l=(0,_.useCallback)(()=>{n.current?.stop()},[]),u=(0,_.useCallback)(()=>{let i=e.current,o=c.current;if(!i||!o||n.current)return;let l=i.captureStream();for(let e of t?.()??[])l.addTrack(e);let u;try{u=new MediaRecorder(l,{mimeType:o})}catch{return}r.current=[],u.ondataavailable=e=>{e.data.size>0&&r.current.push(e.data)},u.onstop=()=>{let e=new Blob(r.current,{type:o});r.current=[],n.current=null,a(!1),s(0),e.size>0&&H(e,V(B(o)))},u.start(1e3),n.current=u,a(!0),s(0)},[e,t]),d=(0,_.useCallback)(()=>{n.current?l():u()},[u,l]);return(0,_.useEffect)(()=>{if(!i)return;let e=Date.now(),t=setInterval(()=>{let t=Date.now()-e;s(Math.floor(t/1e3)),t>=72e5&&l()},1e3);return()=>clearInterval(t)},[i,l]),(0,_.useEffect)(()=>()=>{n.current?.stop()},[]),{recording:i,elapsedSec:o,supported:c.current!==null,toggle:d}}var G={fps:0,kbps:0};function K(e,t){let n=t.atMs-e.atMs;if(n<=0)return G;let r=n/1e3,i=Math.max(0,t.frameCount-e.frameCount),a=Math.max(0,t.totalBytes-e.totalBytes);return{fps:i/r,kbps:a/1024/r}}var q=n(),J=500;function Y({canvasRef:e,getFrameCount:t,getTotalBytes:n,positionClassName:r=`left-1 top-1`}){let i=c(e=>e.remoteDesktopStatsVisible),[a,o]=(0,_.useState)({fps:0,kbps:0,width:0,height:0}),s=(0,_.useRef)({frameCount:0,totalBytes:0,atMs:0});return(0,_.useEffect)(()=>{if(!i)return;s.current={frameCount:t(),totalBytes:n(),atMs:performance.now()};let r=setInterval(()=>{let r={frameCount:t(),totalBytes:n(),atMs:performance.now()},{fps:i,kbps:a}=K(s.current,r);s.current=r;let c=e.current;o({fps:i,kbps:a,width:c?.width??0,height:c?.height??0})},J);return()=>clearInterval(r)},[i,e,t,n]),i?(0,q.jsxs)(`div`,{className:`pointer-events-none absolute z-40 rounded bg-black/60 px-1.5 py-0.5 font-mono text-[10px] text-white/80 ${r}`,"data-testid":`remote-desktop-stats-overlay`,children:[Math.round(a.fps),` fps · `,Math.round(a.kbps),` KB/s · `,a.width,`×`,a.height]}):null}function X(){let{caps:e}=f(!1),t=e?.displays??[],[n,r]=(0,_.useState)(void 0),i=t.find(e=>e.id===n)??t.find(e=>e.primary)??t[0];return{displays:t,displayId:n,current:i,select:r,next:(0,_.useCallback)(()=>{t.length<2||r(t[(t.findIndex(e=>e.id===i?.id)+1)%t.length]?.id)},[t,i])}}function Z({pendingText:e,onDismiss:t,missingToolAction:n,onDismissMissingTool:a,positionClassName:s=`absolute bottom-2 left-1/2 max-w-[92%] -translate-x-1/2`}){let[c,l]=(0,_.useState)(!1);return e===null?n==null?null:(0,q.jsxs)(Q,{onDismiss:a??(()=>{}),testId:`remote-desktop-clipboard-missing-tool`,positionClassName:s,children:[(0,q.jsx)(o,{className:`size-4 shrink-0 text-amber-300`}),(0,q.jsx)(`span`,{className:`min-w-0 flex-1`,children:`The host has no clipboard tool installed.`}),n.kind===`terminal`&&(0,q.jsxs)(`button`,{type:`button`,onClick:()=>p(n.command),title:n.command,className:`inline-flex min-h-8 shrink-0 items-center gap-1.5 rounded bg-white/15 px-2.5 text-xs hover:bg-white/25`,children:[(0,q.jsx)(r,{className:`size-3.5`}),` `,n.label]})]}):(0,q.jsxs)(Q,{onDismiss:t,testId:`remote-desktop-clipboard-pending`,positionClassName:s,children:[(0,q.jsx)(i,{className:`size-4 shrink-0 text-emerald-400`}),(0,q.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[c?`Could not copy — select the text manually:`:`Copied on the host:`,(0,q.jsx)(`span`,{className:`ml-1 text-white/60`,children:$(e)})]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>{S(e)?t():l(!0)},className:`min-h-8 shrink-0 rounded bg-white/15 px-2.5 text-xs hover:bg-white/25`,"data-testid":`remote-desktop-clipboard-copy`,children:`Copy here`})]})}function Q({children:e,onDismiss:t,testId:n,positionClassName:r}){return(0,q.jsxs)(`div`,{className:u(`z-50 flex items-center gap-2 rounded-lg border border-white/10 bg-black/85 px-3 py-2 text-xs text-white shadow-lg`,r),"data-testid":n,children:[e,(0,q.jsx)(`button`,{type:`button`,onClick:t,"aria-label":`Dismiss`,className:`flex size-8 shrink-0 items-center justify-center rounded text-white/60 hover:bg-white/10 hover:text-white`,children:(0,q.jsx)(a,{className:`size-3.5`})})]})}function $(e){let t=e.replace(/\s+/g,` `).trim();return t.length>60?`${t.slice(0,60)}…`:t}export{U as a,N as c,j as d,M as f,b as h,W as i,L as l,x as m,X as n,F as o,O as p,Y as r,I as s,Z as t,A as u};
|
|
1
|
+
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import{Ar as r,G as i,Jr as a,W as o}from"./icons-CO_II6D-.js";import{n as s}from"./api-client-c8YOpTlT.js";import{t as c,y as l}from"./settings-store-DXmQug0m.js";import{n as u}from"./utils-btZ8C8-R.js";import{t as d}from"./ws-auth-B_y5rMfZ.js";import{z as f}from"./index-CvUGUp7d.js";import{r as p}from"./run-in-terminal-SU9cwoZ4.js";function m(e,t,n=`8081`){let r=d(`/ws/remote-desktop`),i=e.protocol===`https:`?`wss:`:`ws:`;return t&&e.protocol!==`https:`?`ws://${e.hostname}:${n}${r}`:`${i}//${e.host}${r}`}var h=30;function g(e,t=h){return Math.round(e*1e6/t)}var _=e(t(),1);function v(e,t){return t||e}function y(e){let[t,n]=(0,_.useState)(`idle`),[r,i]=(0,_.useState)(null),[a,o]=(0,_.useState)({width:0,height:0}),s=(0,_.useRef)(null),c=(0,_.useRef)(null),l=(0,_.useRef)(!1),u=(0,_.useRef)(0),d=(0,_.useRef)(0),f=(0,_.useRef)(null),p=(0,_.useRef)(!1),m=(0,_.useCallback)(e=>{n(`error`),i(e)},[]),h=(0,_.useCallback)(async t=>{if(f.current=t,typeof VideoDecoder>`u`){n(`unsupported`),i(`This browser has no WebCodecs VideoDecoder — try Chrome, Edge, or Safari 16.4+.`);return}let r={codec:t,optimizeForLatency:!0};try{if(!(await VideoDecoder.isConfigSupported(r)).supported){n(`unsupported`),i(`This browser's decoder does not support ${t}.`);return}}catch(e){m(e.message);return}s.current?.close(),l.current=!1,d.current=0;let a=new VideoDecoder({output:t=>{u.current+=1;let n=e.current;n&&((n.width!==t.displayWidth||n.height!==t.displayHeight)&&(n.width=t.displayWidth,n.height=t.displayHeight,o({width:t.displayWidth,height:t.displayHeight})),c.current||=n.getContext(`2d`),c.current?.drawImage(t,0,0,n.width,n.height)),t.close()},error:e=>y(e.message)});try{a.configure(r)}catch(e){m(e.message);return}s.current=a,p.current=!0,n(`ready`),i(null)},[e,m]),y=(0,_.useCallback)(e=>{if(!p.current)return;let t=f.current;if(!t){m(e);return}try{s.current?.close()}catch{}s.current=null,h(t)},[h,m]);return{status:t,errorMessage:r,configure:h,decodeAccessUnit:(0,_.useCallback)((e,t)=>{let n=s.current;if(!(!n||n.state!==`configured`)&&v(l.current,t)){t&&(l.current=!0);try{n.decode(new EncodedVideoChunk({type:t?`key`:`delta`,timestamp:g(d.current++),data:e}))}catch(e){y(e.message)}}},[y]),reset:(0,_.useCallback)(()=>{p.current=!1;try{s.current?.close()}catch{}s.current=null,l.current=!1,u.current=0,d.current=0,n(`idle`),i(null)},[]),getFrameCount:(0,_.useCallback)(()=>u.current,[]),frameSize:a}}function b(e){return e.code===`KeyV`&&(e.ctrlKey||e.metaKey)}function x(e){return(e.code===`KeyC`||e.code===`KeyX`)&&(e.ctrlKey||e.metaKey)}function S(e){let t=document.createElement(`textarea`);t.value=e,t.style.cssText=`position:fixed;top:0;left:-9999px;opacity:0`,t.setAttribute(`aria-hidden`,`true`),document.body.appendChild(t);let n=document.activeElement,r=!1;try{t.focus({preventScroll:!0}),t.setSelectionRange(0,e.length),t.select(),r=document.execCommand(`copy`)}catch{r=!1}t.remove();try{n?.focus({preventScroll:!0})}catch{}return r}async function C(e){try{return navigator.clipboard?.writeText?(await navigator.clipboard.writeText(e),!0):!1}catch{return!1}}var w=120,T=400;function ee(){let e=(0,_.useRef)(null),t=(0,_.useRef)(null),n=(0,_.useRef)(null),r=(0,_.useRef)(0),i=(0,_.useRef)(0),[a,o]=(0,_.useState)(`idle`),s=(0,_.useCallback)(()=>{try{t.current?.close()}catch{}t.current=null,n.current=null;let a=e.current;e.current=null,a&&a.close().catch(()=>{}),r.current=0,i.current=0,o(e=>e===`unsupported`?e:`idle`)},[]),c=(0,_.useCallback)(t=>{let i=e.current;if(!i){t.close();return}let a=t.numberOfFrames,o=t.numberOfChannels,s=i.createBuffer(o,a,t.sampleRate);for(let e=0;e<o;e++){let n=new Float32Array(a);t.copyTo(n,{planeIndex:e,format:`f32-planar`}),s.copyToChannel(n,e)}t.close();let c=i.currentTime,l=(r.current-c)*1e3;(l<0||l>T)&&(r.current=c+w/1e3);let u=i.createBufferSource();u.buffer=s,u.connect(i.destination),n.current&&u.connect(n.current),u.start(r.current),r.current+=s.duration},[]),l=(0,_.useCallback)(async(a,l)=>{if(typeof AudioDecoder>`u`||typeof AudioContext>`u`){o(`unsupported`);return}s();let u=new AudioContext({sampleRate:l,latencyHint:`interactive`});e.current=u,u.state===`suspended`&&await u.resume().catch(()=>{}),n.current=u.createMediaStreamDestination();let d=new AudioDecoder({output:c,error:()=>{try{t.current?.reset()}catch{}}});try{d.configure({codec:`opus`,sampleRate:l,numberOfChannels:a})}catch{o(`unsupported`);return}t.current=d,r.current=0,i.current=0,o(`playing`)},[c,s]),u=(0,_.useCallback)(e=>{let n=t.current;if(!n||n.state!==`configured`)return;let r=i.current;i.current+=2e4;try{n.decode(new EncodedAudioChunk({type:`key`,timestamp:r,data:e}))}catch{}},[]),d=(0,_.useCallback)(()=>n.current?n.current.stream.getAudioTracks():[],[]);return(0,_.useEffect)(()=>()=>s(),[s]),{status:a,configure:l,decodePacket:u,reset:s,getTracks:d}}var E=5e3,D=2;function O(e,{displayId:t}={}){let n=(0,_.useRef)(null),r=(0,_.useRef)(0),[i,a]=(0,_.useState)(`connecting`),[o,u]=(0,_.useState)(null),[d,f]=(0,_.useState)(0),[p,h]=(0,_.useState)(()=>({preset:l(c.getState().remoteDesktopQuality)??`balanced`,held:1})),g=(0,_.useRef)(l(c.getState().remoteDesktopQuality)),[v,b]=(0,_.useState)(null),x=(0,_.useRef)(null),S=c(e=>e.remoteDesktopShowCursor),w=c(e=>e.remoteDesktopClipboardSync),T=(0,_.useRef)(S),O=(0,_.useRef)(w);(0,_.useEffect)(()=>{T.current=S},[S]),(0,_.useEffect)(()=>{O.current=w},[w]);let k=(0,_.useRef)(c.getState().remoteDesktopCodec),[A,j]=(0,_.useState)(k.current),M=y(e),N=ee(),[P,F]=(0,_.useState)(!1),[I,L]=(0,_.useState)(!1),[R,z]=(0,_.useState)(null),[B,V]=(0,_.useState)(null),[H,U]=(0,_.useState)(null),[W,G]=(0,_.useState)(null),K=(0,_.useCallback)(e=>{let t=n.current;t?.readyState===WebSocket.OPEN&&t.send(JSON.stringify(e))},[]),q=(0,_.useCallback)(e=>{let t=l(e.preset);t&&h({preset:t,held:typeof e.held==`number`&&e.held>0&&e.held<1?e.held:1})},[]),J=(0,_.useCallback)(e=>{if(e!==`custom`)return{type:`quality`,preset:e};let t=c.getState();return{type:`quality`,preset:`custom`,percent:t.remoteDesktopCustomQualityPercent,fps:t.remoteDesktopCustomFps}},[]),Y=(0,_.useCallback)(e=>{g.current=e,c.getState().setRemoteDesktopQuality(e),K(J(e))},[J,K]),X=(0,_.useCallback)((e,t)=>{let n=c.getState();n.setRemoteDesktopCustomQuality(e,t),n.setRemoteDesktopQuality(`custom`),g.current=`custom`,K(J(`custom`))},[J,K]),Z=(0,_.useCallback)(e=>{z(null),K({type:`privacy`,enabled:e})},[K]),Q=(0,_.useCallback)(e=>{F(e),e||N.reset(),K({type:`audio`,enabled:e})},[N,K]),$=(0,_.useCallback)(e=>{k.current=e,c.getState().setRemoteDesktopCodec(e),j(e),e&&K({type:`codec`,encoder:e})},[K]),te=(0,_.useCallback)(e=>{G(null),K({type:`resolution`,modeId:e})},[K]),ne=(0,_.useCallback)(e=>{T.current=e,c.getState().setRemoteDesktopShowCursor(e),K({type:`cursor`,show:e})},[K]),re=(0,_.useCallback)((e,t,n=!1)=>{K({type:`clipboard`,text:e,paste:t,shift:n})},[K]),ie=(0,_.useCallback)(()=>{x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{x.current=null,K({type:`clipboardRead`})},350)},[K]),ae=(0,_.useCallback)(()=>b(null),[]);(0,_.useEffect)(()=>()=>{x.current&&clearTimeout(x.current)},[]),(0,_.useEffect)(()=>{let e=!1,i=null;a(`connecting`),u(null),L(!1),z(null),r.current=0,M.reset(),(async()=>{let o;try{o=(await s.post(`/api/remote-desktop/session`)).nonce}catch(t){e||(a(`error`),u(t.message));return}if(e)return;let c=m(window.location,!1,void 0),l=new WebSocket(c);l.binaryType=`arraybuffer`,n.current=l,l.onopen=()=>{l.send(JSON.stringify({type:`auth`,nonce:o,...t?{displayId:t}:{},cursor:T.current,...k.current?{codec:k.current}:{}})),g.current&&l.send(JSON.stringify(J(g.current))),i=setInterval(()=>K({type:`ping`}),E)},l.onmessage=t=>{if(typeof t.data==`string`){let n;try{n=JSON.parse(t.data)}catch{return}if(n.type===`config`&&typeof n.codec==`string`)q(n),j(typeof n.encoder==`string`?n.encoder:null),M.configure(n.codec).then(()=>{e||a(`streaming`)});else if(n.type===`quality`)q(n);else if(n.type===`codec`)j(typeof n.encoder==`string`?n.encoder:null);else if(n.type===`resolution`)V(typeof n.modeId==`string`?n.modeId:null),U(typeof n.original==`string`?n.original:null),G(null);else if(n.type===`resolutionError`)G(typeof n.message==`string`?n.message:`The host refused the mode.`);else if(n.type===`privacy`)L(n.enabled===!0),z(typeof n.reason==`string`?n.reason:null);else if(n.type===`audio`){let e=n.enabled===!0;if(F(e),!e){N.reset();return}let t=typeof n.channels==`number`?n.channels:2,r=typeof n.sampleRate==`number`?n.sampleRate:48e3;N.configure(t,r)}else if(n.type===`clipboard`&&typeof n.text==`string`){if(!O.current)return;let t=n.text;C(t).then(n=>{!n&&!e&&b(t)})}else n.type===`error`&&(a(`error`),u(typeof n.message==`string`?n.message:`Server error`));return}let n=new Uint8Array(t.data);if(!(n.length<1)){if(r.current+=n.length,n[0]===D){N.decodePacket(n.subarray(1));return}M.decodeAccessUnit(n.subarray(1),n[0]===1)}},l.onerror=()=>{e||(a(`error`),u(`WebSocket error`))},l.onclose=()=>{e||a(e=>e===`error`?e:`closed`)}})();let o=()=>{if(document.hidden||e)return;let t=n.current;t&&t.readyState===WebSocket.OPEN?t.send(JSON.stringify({type:`ping`})):f(e=>e+1)};return document.addEventListener(`visibilitychange`,o),()=>{e=!0,document.removeEventListener(`visibilitychange`,o),i&&clearInterval(i);try{n.current?.close()}catch{}n.current=null;try{M.reset()}catch{}try{N.reset()}catch{}}},[d,t]);let oe=(0,_.useCallback)(()=>f(e=>e+1),[]),se=(0,_.useCallback)(()=>r.current,[]);return{connState:i,errorMessage:o,decoderStatus:M.status,decoderErrorMessage:M.errorMessage,sendMessage:K,reconnect:oe,getTotalBytes:se,getFrameCount:M.getFrameCount,frameSize:M.frameSize,quality:p,setQuality:Y,setCustomQuality:X,showCursor:S,setShowCursor:ne,codec:A,setCodec:$,audioOn:P,setAudioOn:Q,getAudioTracks:N.getTracks,privacyOn:I,privacyError:R,setPrivacyOn:Z,hostModeId:B,hostOriginalModeId:H,resolutionError:W,setHostMode:te,pendingHostClipboard:v,clearHostClipboard:ae,sendClipboard:re,requestHostClipboard:ie}}function k(e){return Math.min(Math.max(e,0),1)}function A(e,t,n){let r=n.width>0?(e-n.left)/n.width:0,i=n.height>0?(t-n.top)/n.height:0;return{xFrac:k(r),yFrac:k(i)}}function j(e,t,n,r){let i=r.scale||1,a=n.left+n.width/2,o=n.top+n.height/2;return A(a+(e-a-r.panX)/i,o+(t-o-r.panY)/i,n)}function M(e,t,n){if(t<=0||n<=0||e.width<=0||e.height<=0)return e;let r=e.width/e.height,i=t/n;if(i>r){let t=e.width/i;return{left:e.left,top:e.top+(e.height-t)/2,width:e.width,height:t}}let a=e.height*i;return{left:e.left+(e.width-a)/2,top:e.top,width:a,height:e.height}}function N(e){let t=new Map;for(let n of e){if(n.width<=0||n.height<=0)continue;let e=`${n.width}x${n.height}`,r=t.get(e);(!r||P(n,r))&&t.set(e,n)}return[...t.values()].sort((e,t)=>t.width*t.height-e.width*e.height||t.refresh-e.refresh).map(e=>({id:e.id,width:e.width,height:e.height,refresh:e.refresh,current:e.current,preferred:e.preferred}))}function P(e,t){return e.current===t.current?e.preferred===t.preferred?e.refresh>t.refresh:e.preferred:e.current}function F(e,t,n){if(!t||t.width<=0||t.height<=0)return null;let r=e.filter(e=>e.width===t.width&&e.height===t.height);if(r.length===0)return null;let i=e.find(e=>e.id===n)??e.find(e=>e.current)??null;return i&&i.width===t.width&&i.height===t.height?null:r.reduce((e,t)=>P(t,e)?t:e)}function I(){if(typeof window>`u`||!window.screen)return null;let e=Math.round(window.screen.width),t=Math.round(window.screen.height);return e>0&&t>0?{width:e,height:t}:null}function L(e){let t=`${e.width} × ${e.height}`;return e.refresh>0?`${t} · ${e.refresh} Hz`:t}var R=[`video/mp4;codecs=avc1.42E01E,mp4a.40.2`,`video/mp4`,`video/webm;codecs=vp9,opus`,`video/webm;codecs=vp8,opus`,`video/webm`];function z(e=e=>typeof MediaRecorder<`u`&&MediaRecorder.isTypeSupported(e)){return typeof MediaRecorder>`u`?null:R.find(e)??null}function B(e){return e.startsWith(`video/mp4`)?`mp4`:`webm`}function V(e,t=new Date){let n=e=>String(e).padStart(2,`0`);return`ppm-remote-${`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}_${n(t.getHours())}-${n(t.getMinutes())}-${n(t.getSeconds())}`}.${e}`}function H(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.rel=`noopener`,document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e4)}async function U(e){if(!e||e.width===0||e.height===0)return!1;let t=await new Promise(t=>e.toBlob(t,`image/png`));return t?(H(t,V(`png`)),!0):!1}function W(e,t){let n=(0,_.useRef)(null),r=(0,_.useRef)([]),[i,a]=(0,_.useState)(!1),[o,s]=(0,_.useState)(0),c=(0,_.useRef)(null);c.current===null&&(c.current=z());let l=(0,_.useCallback)(()=>{n.current?.stop()},[]),u=(0,_.useCallback)(()=>{let i=e.current,o=c.current;if(!i||!o||n.current)return;let l=i.captureStream();for(let e of t?.()??[])l.addTrack(e);let u;try{u=new MediaRecorder(l,{mimeType:o})}catch{return}r.current=[],u.ondataavailable=e=>{e.data.size>0&&r.current.push(e.data)},u.onstop=()=>{let e=new Blob(r.current,{type:o});r.current=[],n.current=null,a(!1),s(0),e.size>0&&H(e,V(B(o)))},u.start(1e3),n.current=u,a(!0),s(0)},[e,t]),d=(0,_.useCallback)(()=>{n.current?l():u()},[u,l]);return(0,_.useEffect)(()=>{if(!i)return;let e=Date.now(),t=setInterval(()=>{let t=Date.now()-e;s(Math.floor(t/1e3)),t>=72e5&&l()},1e3);return()=>clearInterval(t)},[i,l]),(0,_.useEffect)(()=>()=>{n.current?.stop()},[]),{recording:i,elapsedSec:o,supported:c.current!==null,toggle:d}}var G={fps:0,kbps:0};function K(e,t){let n=t.atMs-e.atMs;if(n<=0)return G;let r=n/1e3,i=Math.max(0,t.frameCount-e.frameCount),a=Math.max(0,t.totalBytes-e.totalBytes);return{fps:i/r,kbps:a/1024/r}}var q=n(),J=500;function Y({canvasRef:e,getFrameCount:t,getTotalBytes:n,positionClassName:r=`left-1 top-1`}){let i=c(e=>e.remoteDesktopStatsVisible),[a,o]=(0,_.useState)({fps:0,kbps:0,width:0,height:0}),s=(0,_.useRef)({frameCount:0,totalBytes:0,atMs:0});return(0,_.useEffect)(()=>{if(!i)return;s.current={frameCount:t(),totalBytes:n(),atMs:performance.now()};let r=setInterval(()=>{let r={frameCount:t(),totalBytes:n(),atMs:performance.now()},{fps:i,kbps:a}=K(s.current,r);s.current=r;let c=e.current;o({fps:i,kbps:a,width:c?.width??0,height:c?.height??0})},J);return()=>clearInterval(r)},[i,e,t,n]),i?(0,q.jsxs)(`div`,{className:`pointer-events-none absolute z-40 rounded bg-black/60 px-1.5 py-0.5 font-mono text-[10px] text-white/80 ${r}`,"data-testid":`remote-desktop-stats-overlay`,children:[Math.round(a.fps),` fps · `,Math.round(a.kbps),` KB/s · `,a.width,`×`,a.height]}):null}function X(){let{caps:e}=f(!1),t=e?.displays??[],[n,r]=(0,_.useState)(void 0),i=t.find(e=>e.id===n)??t.find(e=>e.primary)??t[0];return{displays:t,displayId:n,current:i,select:r,next:(0,_.useCallback)(()=>{t.length<2||r(t[(t.findIndex(e=>e.id===i?.id)+1)%t.length]?.id)},[t,i])}}function Z({pendingText:e,onDismiss:t,missingToolAction:n,onDismissMissingTool:a,positionClassName:s=`absolute bottom-2 left-1/2 max-w-[92%] -translate-x-1/2`}){let[c,l]=(0,_.useState)(!1);return e===null?n==null?null:(0,q.jsxs)(Q,{onDismiss:a??(()=>{}),testId:`remote-desktop-clipboard-missing-tool`,positionClassName:s,children:[(0,q.jsx)(o,{className:`size-4 shrink-0 text-amber-300`}),(0,q.jsx)(`span`,{className:`min-w-0 flex-1`,children:`The host has no clipboard tool installed.`}),n.kind===`terminal`&&(0,q.jsxs)(`button`,{type:`button`,onClick:()=>p(n.command),title:n.command,className:`inline-flex min-h-8 shrink-0 items-center gap-1.5 rounded bg-white/15 px-2.5 text-xs hover:bg-white/25`,children:[(0,q.jsx)(r,{className:`size-3.5`}),` `,n.label]})]}):(0,q.jsxs)(Q,{onDismiss:t,testId:`remote-desktop-clipboard-pending`,positionClassName:s,children:[(0,q.jsx)(i,{className:`size-4 shrink-0 text-emerald-400`}),(0,q.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[c?`Could not copy — select the text manually:`:`Copied on the host:`,(0,q.jsx)(`span`,{className:`ml-1 text-white/60`,children:$(e)})]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>{S(e)?t():l(!0)},className:`min-h-8 shrink-0 rounded bg-white/15 px-2.5 text-xs hover:bg-white/25`,"data-testid":`remote-desktop-clipboard-copy`,children:`Copy here`})]})}function Q({children:e,onDismiss:t,testId:n,positionClassName:r}){return(0,q.jsxs)(`div`,{className:u(`z-50 flex items-center gap-2 rounded-lg border border-white/10 bg-black/85 px-3 py-2 text-xs text-white shadow-lg`,r),"data-testid":n,children:[e,(0,q.jsx)(`button`,{type:`button`,onClick:t,"aria-label":`Dismiss`,className:`flex size-8 shrink-0 items-center justify-center rounded text-white/60 hover:bg-white/10 hover:text-white`,children:(0,q.jsx)(a,{className:`size-3.5`})})]})}function $(e){let t=e.replace(/\s+/g,` `).trim();return t.length>60?`${t.slice(0,60)}…`:t}export{U as a,N as c,j as d,M as f,b as h,W as i,L as l,x as m,X as n,F as o,O as p,Y as r,I as s,Z as t,A as u};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/remote-desktop-mobile-view-
|
|
2
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import{pt as r}from"./vendor-ui-BHh12_0v.js";import"./icons-CO_II6D-.js";import"./api-client-c8YOpTlT.js";import"./settings-store-DXmQug0m.js";import{q as i}from"./vendor-mermaid-eg2XWIjK.js";import{n as a}from"./portal-container-context-NFSuymMu.js";import"./panel-store-BUQ-CPsd.js";import"./window-store-B4cbZ5rr.js";import{B as o}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/remote-desktop-mobile-view-hUnYxXDk.js","assets/rolldown-runtime-C5c2KzVm.js","assets/index-CvUGUp7d.js","assets/vendor-mermaid-eg2XWIjK.js","assets/vendor-ui-BHh12_0v.js","assets/vendor-markdown-QKPNiWEd.js","assets/button-CBehaXpV.js","assets/utils-btZ8C8-R.js","assets/createLucideIcon-DBXq3G0e.js","assets/api-client-c8YOpTlT.js","assets/react-CzUPVyyG.js","assets/settings-store-DXmQug0m.js","assets/file-store-CTlJqj2m.js","assets/window-store-B4cbZ5rr.js","assets/window-pip-registry-DH07f_8k.js","assets/panel-store-BUQ-CPsd.js","assets/onboarding-quick-orientation-CT4PylG0.js","assets/dialog-tzBRkGeW.js","assets/portal-container-context-NFSuymMu.js","assets/icons-CO_II6D-.js","assets/use-is-mobile-CkO33jqU.js","assets/format-file-meta-DLaHgkdx.js","assets/fs-api-RVc5RtTA.js","assets/context-menu-CjYTq8DI.js","assets/input-CP31LZnN.js","assets/mobile-bottom-sheet-Cf4kV1hS.js","assets/use-visual-viewport-C307OVeV.js","assets/scroll-area-xAtds1T-.js","assets/file-icons-BlOxPo3P.js","assets/project-framework-store-XxFXcUpb.js","assets/format-date-BMtvCeb9.js","assets/git-repo-store-DFTJ5ngK.js","assets/project-store-C5gJXkvb.js","assets/ws-auth-B_y5rMfZ.js","assets/tab-store-DqeaGhhE.js","assets/apply-theme-aVoqSG0I.js","assets/resolve-theme-B87m6l4i.js","assets/index-DMA-So69.css","assets/remote-desktop-clipboard-notice-CvPPtrRq.js","assets/run-in-terminal-SU9cwoZ4.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import{pt as r}from"./vendor-ui-BHh12_0v.js";import"./icons-CO_II6D-.js";import"./api-client-c8YOpTlT.js";import"./settings-store-DXmQug0m.js";import{q as i}from"./vendor-mermaid-eg2XWIjK.js";import{n as a}from"./portal-container-context-NFSuymMu.js";import"./panel-store-BUQ-CPsd.js";import"./window-store-B4cbZ5rr.js";import{B as o}from"./index-CvUGUp7d.js";import"./run-in-terminal-SU9cwoZ4.js";import{n as s,t as c}from"./remote-desktop-readiness-gate-CUmaeiX9.js";var l=e(t(),1),u=e(r(),1),d=n(),f=(0,l.lazy)(()=>i(()=>import(`./remote-desktop-mobile-view-hUnYxXDk.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39])));function p(){let e=o(e=>e.isOpen),t=o(e=>e.close),n=a();return e?(0,u.createPortal)((0,d.jsx)(`div`,{className:`fixed inset-0 z-[45] bg-black`,"data-testid":`remote-desktop-mobile-sheet`,children:(0,d.jsx)(s,{onCancel:t,children:(0,d.jsx)(c,{onCancel:t,children:(0,d.jsx)(l.Suspense,{fallback:(0,d.jsx)(`div`,{className:`flex h-full items-center justify-center text-sm text-text-2`,children:`Loading…`}),children:(0,d.jsx)(f,{onClose:t})})})})}),n??document.getElementById(`root`)??document.body):null}export{p as RemoteDesktopMobileSheet};
|
|
Binary file
|
|
Binary file
|