@openhands/agent-canvas 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/README.windows.md +2 -2
- package/build/assets/{acp-providers-C921BlYB.js → acp-providers-DLe_gVDY.js} +1 -1
- package/build/assets/active-backend-context-B0wI7OzM.js +2 -0
- package/build/assets/agent-context-settings-CaQtdNA-.js +1 -0
- package/build/assets/{agent-profiles-settings-BymJf3EP.js → agent-profiles-settings-CvuErjp6.js} +1 -1
- package/build/assets/agent-server-conversation-service.api-km_8sOVf.js +41 -0
- package/build/assets/{agent-settings-WzqXk6B4.js → agent-settings-UE-U4Xii.js} +2 -2
- package/build/assets/agent-settings-nmO-KSXr.js +1 -0
- package/build/assets/alert-banner-BMaOtTCG.js +1 -0
- package/build/assets/{api-key-entry-screen-DI0I04O3.js → api-key-entry-screen-Cy66vT4D.js} +1 -1
- package/build/assets/{app-settings-DGistSFV.js → app-settings-9ok42bV6.js} +1 -1
- package/build/assets/automation-detail-fuITm6i3.js +3 -0
- package/build/assets/automation-export-CRq40mux.js +2 -0
- package/build/assets/automation-setup-route-EXDazOHW.js +1 -0
- package/build/assets/automation-templates-BArZsaxP.js +1 -0
- package/build/assets/automations-list-CG4HKOTn.js +1 -0
- package/build/assets/{back-nav-button-D4ngzpSh.js → back-nav-button-BZB6H7xz.js} +1 -1
- package/build/assets/{backend-form-modal-B8D5hBzK.js → backend-form-modal-B_lXjOGa.js} +1 -1
- package/build/assets/{backend-synced-settings-badge-BnzI8Ysj.js → backend-synced-settings-badge-B_NXJ3u1.js} +1 -1
- package/build/assets/{badge-1Mf1iPcX.js → badge-C64c-7PO.js} +1 -1
- package/build/assets/{base-modal-BBuy0WQQ.js → base-modal-C0RQPug5.js} +1 -1
- package/build/assets/bot-DuN83i3p.js +1 -0
- package/build/assets/{brand-button-DGN6Y9o6.js → brand-button-DJmFCyMK.js} +1 -1
- package/build/assets/{browser-D_ekTlTS.js → browser-D3gd2n83.js} +2 -2
- package/build/assets/{browser-tab-D4a4Ou_w.js → browser-tab-BicAWuJ1.js} +1 -1
- package/build/assets/{chat-send-button-CgbcjD97.js → chat-send-button-CCrH1E8u.js} +1 -1
- package/build/assets/check-DLOKoFU9.js +1 -0
- package/build/assets/{checkmark-CxdXtM3b.js → checkmark-XZyokq_Y.js} +1 -1
- package/build/assets/chevron-down-CnIbtM6i.js +1 -0
- package/build/assets/circle-check-CxCYJrpZ.js +1 -0
- package/build/assets/{circle-plus-check-toggle-yTAS-nX3.js → circle-plus-check-toggle-CB_sNERY.js} +1 -1
- package/build/assets/{close-CDAVqnTn.js → close-ScPlnwyq.js} +1 -1
- package/build/assets/{cloud-funnel-analytics-CEOl5Gxr.js → cloud-funnel-analytics-XynamQGU.js} +1 -1
- package/build/assets/{combobox-caret-Bd2yySnF.js → combobox-caret-Bwiifgjs.js} +1 -1
- package/build/assets/command-menu-CA3IjGNc.js +1 -0
- package/build/assets/condenser-settings-cNGy75gq.js +1 -0
- package/build/assets/{confirmation-modal-NCUPr2-O.js → confirmation-modal-BATFmFyP.js} +1 -1
- package/build/assets/context-menu-list-item-DhJCcBA0.js +1 -0
- package/build/assets/conversation-B6t6EiVp.js +1 -0
- package/build/assets/{conversation-CUJ0Vo8g.js → conversation-Csdxh9Xt.js} +7 -7
- package/build/assets/conversation-panel-B6t6EiVp.js +1 -0
- package/build/assets/{conversation-state-store-F62HvuI1.js → conversation-state-store-C2QzhPaK.js} +1 -1
- package/build/assets/{conversation-store-C6hSXHw0.js → conversation-store-B8Eahyeg.js} +1 -1
- package/build/assets/{conversation-tab-empty-state-BCZ7rUMH.js → conversation-tab-empty-state-D3fb5xIA.js} +1 -1
- package/build/assets/{copy-DCmZtz6n.js → copy-DaHuDtG4.js} +1 -1
- package/build/assets/{copy-z7idLzWO.js → copy-Drmhc2jD.js} +1 -1
- package/build/assets/{copy-to-clipboard-button-D_Lp6-Fl.js → copy-to-clipboard-button-c4MQwKGj.js} +1 -1
- package/build/assets/{device-verify-DLmolX8Q.js → device-verify-oFpQoLgm.js} +1 -1
- package/build/assets/{dist-hOnv1nn2.js → dist-Bl64nBZL.js} +1 -1
- package/build/assets/{dropdown-classes-BB8rzqXL.js → dropdown-classes-f91ARMV1.js} +1 -1
- package/build/assets/entry.client-BCzY2Bf3.js +2 -0
- package/build/assets/enum-filter-dropdown-HG3q3rkV.js +1 -0
- package/build/assets/{environment-switch-overlay-BepBBX66.js → environment-switch-overlay-CquZXolz.js} +1 -1
- package/build/assets/{extensions-hub-R3KNv-5V.js → extensions-hub-BeweE0PW.js} +1 -1
- package/build/assets/{extensions-navigation-CfWFmI1I.js → extensions-navigation-Dd58NlUF.js} +1 -1
- package/build/assets/{external-link-BdBSg8rk.js → external-link-zWbg5KXS.js} +1 -1
- package/build/assets/file-text-RecuaId_.js +1 -0
- package/build/assets/files-tab-CLLG55-q.js +1 -0
- package/build/assets/{folder-C86qXV7M.js → folder-C1ou4_DT.js} +1 -1
- package/build/assets/{form-control-classes-DAfsCJTe.js → form-control-classes-pHtZUI6K.js} +1 -1
- package/build/assets/format-relative-time-6-3uvOXe.js +1 -0
- package/build/assets/format-time-delta-BIR5Os7T.js +1 -0
- package/build/assets/{git-provider-icon-BZqqUPlm.js → git-provider-icon-wg7ShB98.js} +1 -1
- package/build/assets/{git-repo-dropdown-DEpOwUez.js → git-repo-dropdown-CWnaUyxL.js} +1 -1
- package/build/assets/git-repo-dropdown-TzOuG5Ef.js +1 -0
- package/build/assets/{highlighted-source-view-CX9oIoVT.js → highlighted-source-view-DBtI3por.js} +1 -1
- package/build/assets/home-BpZQkDWM.js +1 -0
- package/build/assets/home-OEx0XtfP.js +1 -0
- package/build/assets/{home-store-Ch1ErdBc.js → home-store-DM4qw1lF.js} +1 -1
- package/build/assets/{iconBase-B2rQun3J.js → iconBase-C2sR-uAp.js} +1 -1
- package/build/assets/index-home-OEx0XtfP.js +1 -0
- package/build/assets/info-C9lpK5pw.js +1 -0
- package/build/assets/install-server-modal-DnjZrJUy.js +1 -0
- package/build/assets/kebab-menu-item-content-By16Tm_0.js +1 -0
- package/build/assets/{launch-B1POpHuP.js → launch-C9uijypN.js} +1 -1
- package/build/assets/{link-external-BDBCz-_z.js → link-external-BNZzCM1I.js} +1 -1
- package/build/assets/list-filter-C86CBRDE.js +1 -0
- package/build/assets/{list-todo-DtiL3lTp.js → list-todo-CheUtB7F.js} +1 -1
- package/build/assets/llm-not-configured-banner-DrBrhfN0.js +27 -0
- package/build/assets/{llm-settings-CXo8iPNW.js → llm-settings-CRsLqxgu.js} +1 -1
- package/build/assets/llm-settings-RBm_3kNm.js +1 -0
- package/build/assets/{llm-subscription-service-DBJbfd8Z.js → llm-subscription-service-DwjJ8-_X.js} +1 -1
- package/build/assets/loader-circle-C5AnEN8r.js +1 -0
- package/build/assets/{loading-spinner-DfZ_bhV7.js → loading-spinner-6Yj-YyoS.js} +1 -1
- package/build/assets/{manage-backends-modal-CwyWsiag.js → manage-backends-modal-DrwErS0N.js} +1 -1
- package/build/assets/manifest-c352d453.js +1 -0
- package/build/assets/manifest-subpage-layout-CtqVwIvJ.js +1 -0
- package/build/assets/{markdown-renderer-DgiLLhW6.js → markdown-renderer-lsvsp7jn.js} +4 -4
- package/build/assets/mcp-DD4hPTRE.js +9 -0
- package/build/assets/mcp-marketplace-utils-BMnYz0Gc.js +1 -0
- package/build/assets/messages-Dt77e0qi.js +40 -0
- package/build/assets/{modal-backdrop-X-vKo61e.js → modal-backdrop-BSzNhM4r.js} +1 -1
- package/build/assets/{modal-body-CMsDpalT.js → modal-body-BHGCSAtj.js} +1 -1
- package/build/assets/{modal-classes-B6PDrxXo.js → modal-classes-DSTLuxkA.js} +1 -1
- package/build/assets/{modal-close-button-DyxBZaAb.js → modal-close-button-dheWZ2ys.js} +1 -1
- package/build/assets/mouse-pointer-click-Px-dXWcS.js +1 -0
- package/build/assets/{navigation-context-BOGzIng3.js → navigation-context-CQZwH_tC.js} +1 -1
- package/build/assets/navigation-link-Bxo3-4vo.js +1 -0
- package/build/assets/onboarding-5CZvRBbh.js +1 -0
- package/build/assets/onboarding-modal-CD2ehuxt.js +1 -0
- package/build/assets/{openhands-logo-CmYvJXBa.js → openhands-logo-BS-Epajy.js} +1 -1
- package/build/assets/{organization-service.api-UDy63-oC.js → organization-service.api-Dsuoep0g.js} +1 -1
- package/build/assets/{pencil-BjgtZmWp.js → pencil-Bl3GWhgq.js} +1 -1
- package/build/assets/{planner-tab-BWk8885v.js → planner-tab-DeO7Thb0.js} +1 -1
- package/build/assets/{plugins-management-service-CjkgF2dd.js → plugins-management-service-C9f75R6X.js} +1 -1
- package/build/assets/plus-CtzlyAoF.js +1 -0
- package/build/assets/{profiles-service.api-CukSFLzz.js → profiles-service.api-Dl20_2IM.js} +1 -1
- package/build/assets/{providers-CqUWC85T.js → providers-CeuhK46N.js} +1 -1
- package/build/assets/{proxy-BBUG3sd2.js → proxy-CIGI9zQC.js} +1 -1
- package/build/assets/{puzzle-BoNc6zZ8.js → puzzle-B3v361yY.js} +1 -1
- package/build/assets/recommended-automations-launcher-6xmbf7lh.js +1 -0
- package/build/assets/{refresh-cw-BrM5ZAZD.js → refresh-cw-B9GhC3QC.js} +1 -1
- package/build/assets/root-BQPNqNvD.js +2 -0
- package/build/assets/root-BeuHFY2s.css +1 -0
- package/build/assets/root-layout-Dl_2CDoq.js +3 -0
- package/build/assets/{schema-field-nImDoY6-.js → schema-field-z2vSLuLo.js} +1 -1
- package/build/assets/{sdk-section-page-BxMrtUNV.js → sdk-section-page-BnCXAytf.js} +1 -1
- package/build/assets/{search-7DRiGm4Z.js → search-BatSpWed.js} +1 -1
- package/build/assets/search-CYaiKHRp.js +1 -0
- package/build/assets/{secrets-service-Dhjh3HhH.js → secrets-service-DGUNlwQd.js} +1 -1
- package/build/assets/{secrets-settings-CPdxceT_.js → secrets-settings-DUmML_dK.js} +1 -1
- package/build/assets/{segmented-toggle-Do6oyepX.js → segmented-toggle-eSofF7gn.js} +1 -1
- package/build/assets/settings-CWFxymAf.js +1 -0
- package/build/assets/{settings-BRbnfKEm.js → settings-Co-M5bK9.js} +1 -1
- package/build/assets/{settings-dropdown-input-DYCULKpp.js → settings-dropdown-input-Cx4g7Xfl.js} +1 -1
- package/build/assets/{settings-gear-TYXnELES.js → settings-gear-DaJj6Pde.js} +1 -1
- package/build/assets/{settings-index-C9o2NBO0.js → settings-index-BECdgecg.js} +1 -1
- package/build/assets/{settings-input-B-q2gkVy.js → settings-input-BQY115xH.js} +1 -1
- package/build/assets/settings-like-page-layout-classes-Cw4Yzv_P.js +1 -0
- package/build/assets/{settings-list-classes-WpQi0q1L.js → settings-list-classes-C9cLrrcc.js} +1 -1
- package/build/assets/{settings-modal-CEK0AIx6.js → settings-modal-ChBJNTdd.js} +1 -1
- package/build/assets/{settings-section-header-context-CnIIQAUn.js → settings-section-header-context-BOJ_Fbak.js} +1 -1
- package/build/assets/settings-service.api-Dz9cZyvx.js +1 -0
- package/build/assets/{settings-switch-LqKdGxHL.js → settings-switch-BIodMVz9.js} +1 -1
- package/build/assets/{shared-conversation-Bu-dQlgp.js → shared-conversation-CSF0aTuE.js} +1 -1
- package/build/assets/{sidebar-layout-oHBGQmLh.js → sidebar-layout-DEycoFd_.js} +1 -1
- package/build/assets/sidebar-mobile-menu-toggle-DeRvTupV.js +1 -0
- package/build/assets/{sidebar-nav-link-CrujNA09.js → sidebar-nav-link-BjpQ-NVc.js} +1 -1
- package/build/assets/{sidebar-store-Bui-WNEr.js → sidebar-store-B04sX8aP.js} +1 -1
- package/build/assets/{skill-card-pill-row-CZBI7OqH.js → skill-card-pill-row-BH6fPGba.js} +1 -1
- package/build/assets/{skill-icon-badge-BOov_phZ.js → skill-icon-badge-D4uznfjU.js} +1 -1
- package/build/assets/skill-scope-DH_AUUUP.js +1 -0
- package/build/assets/{skills-CYFLsN5U.js → skills-B0IliMxw.js} +1 -1
- package/build/assets/{skills-plugins-D0PiHWAD.js → skills-plugins-vfvOk34h.js} +1 -1
- package/build/assets/skills-settings-DnbIu2eO.js +2 -0
- package/build/assets/sparkles-g7y3r-Ut.js +1 -0
- package/build/assets/{styled-tooltip-C7grwnOX.js → styled-tooltip-CQ9JEFiO.js} +1 -1
- package/build/assets/{switch-skeleton-BQoOhQTB.js → switch-skeleton-DwOoCqaL.js} +1 -1
- package/build/assets/{syntax-highlighter-B92AFGMy.js → syntax-highlighter-BGDg_7w9.js} +1 -1
- package/build/assets/{task-list-tab-R3ac6m7O.js → task-list-tab-DeF_uXdw.js} +1 -1
- package/build/assets/{terminal-cMS3RgVE.js → terminal-BUpID2wS.js} +1 -1
- package/build/assets/{terminal-yqkNdEAx.js → terminal-DRc4rup7.js} +1 -1
- package/build/assets/{toggle-switch-BeSrbgCg.js → toggle-switch--8n8NeV_.js} +1 -1
- package/build/assets/{trash-2-wW5TWcdN.js → trash-2-CzDVN-Iw.js} +1 -1
- package/build/assets/{typography-iYhzLlHO.js → typography-BSbUhJPn.js} +1 -1
- package/build/assets/{u-check-circle-DBEvndTS.js → u-check-circle-BKn1spCL.js} +1 -1
- package/build/assets/{u-edit-809W9D9T.js → u-edit-DAkcF52u.js} +1 -1
- package/build/assets/{u-robot-CJtSzy5X.js → u-robot-BvAOA2ZD.js} +1 -1
- package/build/assets/{use-acp-credential-form-DUxbxmbq.js → use-acp-credential-form-BGKFi1VL.js} +1 -1
- package/build/assets/{use-activate-agent-profile-CDHA52tC.js → use-activate-agent-profile-2nvALjC-.js} +1 -1
- package/build/assets/{use-agent-profiles-TsOdIyw5.js → use-agent-profiles-BlQA67MW.js} +1 -1
- package/build/assets/{use-breakpoint-DA7JqsRN.js → use-breakpoint-DWtihr9g.js} +1 -1
- package/build/assets/{use-can-manage-org-profiles-Bt1M71u5.js → use-can-manage-org-profiles-Clw5Dh1s.js} +1 -1
- package/build/assets/{use-click-outside-element-DKqpqEEm.js → use-click-outside-element-W6Os4Nlb.js} +1 -1
- package/build/assets/{use-cloud-current-user-id-DWt7HCgf.js → use-cloud-current-user-id-B8AQSQFM.js} +1 -1
- package/build/assets/{use-config-CxlEdf_v.js → use-config-C3zGuUQI.js} +1 -1
- package/build/assets/{use-create-conversation-nOJ6Um5h.js → use-create-conversation-FaP0kUpg.js} +1 -1
- package/build/assets/{use-create-secret-Dj5ang9x.js → use-create-secret-CgQ3pXd6.js} +1 -1
- package/build/assets/use-is-authed-Bka89Xmm.js +1 -0
- package/build/assets/{use-is-creating-conversation-CAggrM75.js → use-is-creating-conversation-CVefC9Ns.js} +1 -1
- package/build/assets/{use-launch-skill-in-chat-DKzCTMt0.js → use-launch-skill-in-chat-BcKNjxxd.js} +1 -1
- package/build/assets/use-llm-profiles-C-tDO6UB.js +1 -0
- package/build/assets/use-manifest-capabilities-DLP5wCxp.js +1 -0
- package/build/assets/{use-onboarding-completion-gxQlcEy2.js → use-onboarding-completion-BiCdXvlU.js} +1 -1
- package/build/assets/{use-plugins-marketplace-CVO7sXYR.js → use-plugins-marketplace-DRFNLBlr.js} +1 -1
- package/build/assets/use-save-agent-profile-CaGVAudI.js +1 -0
- package/build/assets/{use-save-settings-L3aMaDeS.js → use-save-settings-C9B8Y-h3.js} +1 -1
- package/build/assets/{use-settings-8nt3DGxW.js → use-settings-3RcgdUuZ.js} +1 -1
- package/build/assets/{use-settings-nav-items-DHAAD-zk.js → use-settings-nav-items-y-Oyc93G.js} +2 -2
- package/build/assets/use-tracking-CTtkLAmx.js +3 -0
- package/build/assets/{use-user-conversation-BIIpGUgM.js → use-user-conversation-Bei82QsZ.js} +1 -1
- package/build/assets/{useInfiniteQuery-BLRVmVPU.js → useInfiniteQuery-DbCv0Jzd.js} +1 -1
- package/build/assets/{useMutation-CaSHLnX0.js → useMutation-ChpkYxI5.js} +1 -1
- package/build/assets/{useQueries--d_WWAzc.js → useQueries-Cjv3E8_1.js} +1 -1
- package/build/assets/useQuery-BCnzy4LX.js +1 -0
- package/build/assets/utils-BX9XJ0IE.js +1 -0
- package/build/assets/{vendor-markdown-BML7QbqS.js → vendor-markdown-j0kYzV48.js} +1 -1
- package/build/assets/{vendor-styling-Bcgpimp9.js → vendor-styling-Ck5D_A2Q.js} +6 -6
- package/build/assets/{vendor~browser-jaN4ilxM.js → vendor~browser-C6uXH-dw.js} +2 -2
- package/build/assets/vendor~browser-DJ1pl_wn.js +47 -0
- package/build/assets/{vendor~browser-tab-_-VCXq8n.js → vendor~browser-tab-C5uuAxZX.js} +1 -1
- package/build/assets/vendor~entry.client-CgNUwtQL.js +1 -0
- package/build/assets/{vendor~entry.client-BcYIVQvB.js → vendor~entry.client-zSIea5EO.js} +2 -2
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~cy4jtuc2-rfV8mQ9m.js +1 -0
- package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~b0bpqexo-CbTboogo.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~kv3pap4j-oGvLV0dO.js} +4 -4
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~lq5hicxx-cHFhpUBq.js +26 -0
- package/build/assets/{vendor~files-tab-C7RmQJwN.js → vendor~files-tab-C87pjSpi.js} +1 -1
- package/build/assets/{vendor~index-home~home~conversation-panel~conversation-Bqp1ZqJM.js → vendor~index-home~home~conversation-panel~conversation-DiXf0dkj.js} +1 -1
- package/build/assets/{vendor~conversation-panel~conversation~alert-banner-BNzz5FuZ.js → vendor~index-home~home~conversation-panel~conversation~alert-banner-B3qC_oj8.js} +1 -1
- package/build/assets/{vendor~launch-ChXCOGw8.js → vendor~launch-CHwEQG6e.js} +1 -1
- package/build/assets/vendor~module-DyG7x7JT.js +2 -0
- package/build/assets/{vendor~root-layout~conversation-panel~conversation-BCn8lzeG.js → vendor~root-layout~conversation-panel~conversation-DEzjR4K7.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation~shared-conversation-DRblkyXD.js → vendor~root-layout~conversation-panel~conversation~shared-conversation-DOuig0C0.js} +1 -1
- package/build/assets/vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-U-xdsAEx.js +1 -0
- package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation~automation-setup-route-B_L-gcOG.js → vendor~root-layout~index-home~home~conversation-panel~conversation~automation-setup-route-CjECvSl5.js} +1 -1
- package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-sjx0x5ac.js → vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation-CQR5Sa0H.js} +1 -1
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gy8zbn65-CGt6bWRT.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~gxu4j2ea-Cwhh3zLe.js} +1 -1
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~dfc8ddxy-tTyxnjXT.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~hjcjabwg-CuQhkiS7.js} +1 -1
- package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~9pstowjp-BOVIFA_g.js +73 -0
- package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~dufan6ng-Dtdw8H0q.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~ht43enc2-C0JXQb_q.js} +162 -54
- package/build/assets/{verification-settings-DBsnSXC3.js → verification-settings-nD61Ijph.js} +1 -1
- package/build/assets/wrench-DRitTfwe.js +1 -0
- package/build/assets/x-RYDBg-e2.js +1 -0
- package/build/assets/{x-mark-jcTkPiOB.js → x-mark-BopmFoBq.js} +1 -1
- package/build/assets/zap-tbKDzCe3.js +1 -0
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +70 -4
- package/build/locales/ca/openhands.json +70 -4
- package/build/locales/de/openhands.json +70 -4
- package/build/locales/en/openhands.json +70 -4
- package/build/locales/es/openhands.json +70 -4
- package/build/locales/fr/openhands.json +70 -4
- package/build/locales/it/openhands.json +70 -4
- package/build/locales/ja/openhands.json +70 -4
- package/build/locales/ko-KR/openhands.json +70 -4
- package/build/locales/no/openhands.json +70 -4
- package/build/locales/pt/openhands.json +70 -4
- package/build/locales/tr/openhands.json +70 -4
- package/build/locales/uk/openhands.json +70 -4
- package/build/locales/zh-CN/openhands.json +70 -4
- package/build/locales/zh-TW/openhands.json +70 -4
- package/build/mockServiceWorker.js +21 -9
- package/config/defaults.json +3 -3
- package/dist/api/automation-service/automation-service.api.cjs +1 -1
- package/dist/api/automation-service/automation-service.api.cjs.map +1 -1
- package/dist/api/automation-service/automation-service.api.d.ts +5 -0
- package/dist/api/automation-service/automation-service.api.js +11 -0
- package/dist/api/automation-service/automation-service.api.js.map +1 -1
- package/dist/api/backend-registry/active-store.cjs +1 -1
- package/dist/api/backend-registry/active-store.cjs.map +1 -1
- package/dist/api/backend-registry/active-store.js +36 -31
- package/dist/api/backend-registry/active-store.js.map +1 -1
- package/dist/api/backend-registry/url-selection.cjs +2 -0
- package/dist/api/backend-registry/url-selection.cjs.map +1 -0
- package/dist/api/backend-registry/url-selection.d.ts +31 -0
- package/dist/api/backend-registry/url-selection.js +29 -0
- package/dist/api/backend-registry/url-selection.js.map +1 -0
- package/dist/api/mcp-service/mcp-redacted-credentials.cjs +1 -1
- package/dist/api/mcp-service/mcp-redacted-credentials.cjs.map +1 -1
- package/dist/api/mcp-service/mcp-redacted-credentials.d.ts +3 -2
- package/dist/api/mcp-service/mcp-redacted-credentials.js +32 -27
- package/dist/api/mcp-service/mcp-redacted-credentials.js.map +1 -1
- package/dist/api/mcp-service/mcp-service.api.cjs +1 -1
- package/dist/api/mcp-service/mcp-service.api.cjs.map +1 -1
- package/dist/api/mcp-service/mcp-service.api.js +19 -19
- package/dist/api/mcp-service/mcp-service.api.js.map +1 -1
- package/dist/api/settings-service/settings-service.api.cjs +1 -1
- package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
- package/dist/api/settings-service/settings-service.api.d.ts +10 -0
- package/dist/api/settings-service/settings-service.api.js +90 -100
- package/dist/api/settings-service/settings-service.api.js.map +1 -1
- package/dist/api/skills-service.cjs +1 -1
- package/dist/api/skills-service.cjs.map +1 -1
- package/dist/api/skills-service.js +1 -0
- package/dist/api/skills-service.js.map +1 -1
- package/dist/assets/chevron-left.d.ts +1 -1
- package/dist/assets/chevron-right.d.ts +1 -1
- package/dist/components/conversation-events/chat/event-message-components/collapsible-thinking.d.ts +2 -1
- package/dist/components/conversation-events/chat/event-message-components/critic-result-display.d.ts +2 -1
- package/dist/components/conversation-events/chat/event-message-components/error-event-message.d.ts +2 -1
- package/dist/components/conversation-events/chat/event-message-components/event-group.d.ts +1 -1
- package/dist/components/conversation-events/chat/event-message-components/finish-event-message.d.ts +1 -1
- package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.d.ts +1 -1
- package/dist/components/conversation-events/chat/event-message-components/observation-pair-event-message.d.ts +2 -1
- package/dist/components/conversation-events/chat/event-message-components/skill-item-expanded.d.ts +1 -1
- package/dist/components/conversation-events/chat/event-message-components/skill-ready-content-list.d.ts +2 -1
- package/dist/components/conversation-events/chat/event-message-components/thought-event-message.d.ts +1 -1
- package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.d.ts +2 -1
- package/dist/components/conversation-events/chat/event-message.d.ts +2 -1
- package/dist/components/conversation-events/chat/task-tracking/task-item.d.ts +1 -1
- package/dist/components/conversation-events/chat/task-tracking/task-list-section.d.ts +1 -1
- package/dist/components/features/alerts/alert-banner.d.ts +1 -1
- package/dist/components/features/analytics/telemetry-consent-banner.d.ts +2 -1
- package/dist/components/features/automations/add-automation-modal.d.ts +1 -1
- package/dist/components/features/automations/automation-card-skeleton.d.ts +1 -1
- package/dist/components/features/automations/automation-card.d.ts +9 -1
- package/dist/components/features/automations/automation-group.d.ts +9 -1
- package/dist/components/features/automations/automation-health-badge.d.ts +8 -0
- package/dist/components/features/automations/automation-list-row.d.ts +3 -1
- package/dist/components/features/automations/automation-run-insights.d.ts +17 -0
- package/dist/components/features/automations/automation-view-toggle.d.ts +1 -1
- package/dist/components/features/automations/backend-not-configured.d.ts +1 -1
- package/dist/components/features/automations/create-instructions.d.ts +2 -2
- package/dist/components/features/automations/dashboard/automations-dashboard-controls.d.ts +18 -0
- package/dist/components/features/automations/dashboard/automations-filtered-empty-state.d.ts +9 -0
- package/dist/components/features/automations/dashboard/use-automation-sub-page-nav.d.ts +12 -0
- package/dist/components/features/automations/delete-confirmation-modal.d.ts +1 -1
- package/dist/components/features/automations/detail/active-status-badge.d.ts +1 -1
- package/dist/components/features/automations/detail/activity-log-item.d.ts +1 -1
- package/dist/components/features/automations/detail/activity-log-section.d.ts +3 -1
- package/dist/components/features/automations/detail/activity-section.d.ts +1 -1
- package/dist/components/features/automations/detail/back-link.d.ts +1 -1
- package/dist/components/features/automations/detail/branch-badge.d.ts +1 -1
- package/dist/components/features/automations/detail/config-field.d.ts +1 -1
- package/dist/components/features/automations/detail/configuration-section.d.ts +1 -1
- package/dist/components/features/automations/detail/debug-automation-button.d.ts +1 -1
- package/dist/components/features/automations/detail/detail-header.d.ts +1 -1
- package/dist/components/features/automations/detail/detail-skeleton.d.ts +1 -1
- package/dist/components/features/automations/detail/edit-automation-modal.d.ts +1 -1
- package/dist/components/features/automations/detail/not-found-state.d.ts +1 -1
- package/dist/components/features/automations/detail/plugin-chip.d.ts +1 -1
- package/dist/components/features/automations/detail/plugins-section.d.ts +1 -1
- package/dist/components/features/automations/detail/prompt-section.d.ts +2 -1
- package/dist/components/features/automations/detail/run-logs-modal.d.ts +1 -1
- package/dist/components/features/automations/detail/run-status-badge.d.ts +10 -1
- package/dist/components/features/automations/detail/section-card.d.ts +1 -1
- package/dist/components/features/automations/empty-state.d.ts +1 -1
- package/dist/components/features/automations/error-state.d.ts +1 -1
- package/dist/components/features/automations/import-automation-modal.d.ts +1 -1
- package/dist/components/features/automations/kebab-menu-item-content.d.ts +1 -1
- package/dist/components/features/automations/kebab-menu.d.ts +1 -1
- package/dist/components/features/automations/metadata-chip.d.ts +1 -1
- package/dist/components/features/automations/recommended-automations-launcher.d.ts +1 -1
- package/dist/components/features/automations/recommended-automations-section.d.ts +1 -1
- package/dist/components/features/automations/responder-deployment-modal.d.ts +1 -1
- package/dist/components/features/automations/search-input.d.ts +1 -1
- package/dist/components/features/automations/status-badge.d.ts +1 -1
- package/dist/components/features/automations/turn-off-confirmation-modal.d.ts +8 -0
- package/dist/components/features/automations/view-menu-item-content.d.ts +1 -1
- package/dist/components/features/backends/add-backend-modal.d.ts +1 -1
- package/dist/components/features/backends/api-key-entry-screen.d.ts +2 -1
- package/dist/components/features/backends/backend-form-modal.d.ts +3 -3
- package/dist/components/features/backends/backend-row.d.ts +1 -1
- package/dist/components/features/backends/backend-selector.d.ts +2 -1
- package/dist/components/features/backends/backend-status-dot.d.ts +2 -1
- package/dist/components/features/backends/backend-version.d.ts +1 -1
- package/dist/components/features/backends/device-flow-auth.d.ts +1 -1
- package/dist/components/features/backends/manage-backends-modal.d.ts +2 -1
- package/dist/components/features/browser/browser-chrome-bar.d.ts +1 -1
- package/dist/components/features/browser/browser-snapshot.d.ts +1 -1
- package/dist/components/features/browser/browser.d.ts +1 -1
- package/dist/components/features/browser/empty-browser-message.d.ts +1 -1
- package/dist/components/features/chat/btw-messages.d.ts +1 -1
- package/dist/components/features/chat/change-agent-button.d.ts +2 -1
- package/dist/components/features/chat/change-agent-context-menu.d.ts +1 -1
- package/dist/components/features/chat/chat-action-tooltip.d.ts +1 -1
- package/dist/components/features/chat/chat-add-file-button.d.ts +2 -1
- package/dist/components/features/chat/chat-interface.d.ts +2 -1
- package/dist/components/features/chat/chat-message.d.ts +1 -1
- package/dist/components/features/chat/chat-messages-skeleton.d.ts +2 -1
- package/dist/components/features/chat/chat-play-button.d.ts +1 -1
- package/dist/components/features/chat/chat-send-button.d.ts +1 -1
- package/dist/components/features/chat/chat-status-indicator.d.ts +1 -1
- package/dist/components/features/chat/chat-stop-button.d.ts +1 -1
- package/dist/components/features/chat/chat-suggestions.d.ts +1 -1
- package/dist/components/features/chat/components/chat-input-actions.d.ts +2 -1
- package/dist/components/features/chat/components/chat-input-container.d.ts +1 -1
- package/dist/components/features/chat/components/chat-input-field.d.ts +1 -1
- package/dist/components/features/chat/components/chat-input-grip.d.ts +1 -1
- package/dist/components/features/chat/components/chat-input-llm-profile-picker.d.ts +3 -2
- package/dist/components/features/chat/components/chat-input-model.d.ts +3 -2
- package/dist/components/features/chat/components/chat-input-profile-picker.d.ts +1 -1
- package/dist/components/features/chat/components/chat-input-row.d.ts +1 -1
- package/dist/components/features/chat/components/hidden-file-input.d.ts +1 -1
- package/dist/components/features/chat/components/slash-command-menu.d.ts +2 -1
- package/dist/components/features/chat/confirmation-mode-enabled.d.ts +1 -1
- package/dist/components/features/chat/custom-chat-input.d.ts +1 -1
- package/dist/components/features/chat/drag-over.d.ts +1 -1
- package/dist/components/features/chat/error-message-banner.d.ts +2 -1
- package/dist/components/features/chat/error-message.d.ts +2 -1
- package/dist/components/features/chat/generic-event-message.d.ts +1 -1
- package/dist/components/features/chat/git-control-bar-branch-button.d.ts +1 -1
- package/dist/components/features/chat/git-control-bar-pr-button.d.ts +1 -1
- package/dist/components/features/chat/git-control-bar-pull-button.d.ts +1 -1
- package/dist/components/features/chat/git-control-bar-push-button.d.ts +1 -1
- package/dist/components/features/chat/git-control-bar-repo-button.d.ts +1 -1
- package/dist/components/features/chat/git-control-bar-tooltip-wrapper.d.ts +1 -1
- package/dist/components/features/chat/git-control-bar.d.ts +1 -1
- package/dist/components/features/chat/git-external-link-icon.d.ts +1 -1
- package/dist/components/features/chat/goal-status-banner.d.ts +1 -1
- package/dist/components/features/chat/goal-status-content.d.ts +1 -1
- package/dist/components/features/chat/got-it-button.d.ts +1 -1
- package/dist/components/features/chat/interactive-chat-box.d.ts +1 -1
- package/dist/components/features/chat/model-messages.d.ts +2 -1
- package/dist/components/features/chat/mono-component.d.ts +1 -1
- package/dist/components/features/chat/open-repository-modal.d.ts +2 -1
- package/dist/components/features/chat/pasted-image-upload-as-file-button.d.ts +1 -1
- package/dist/components/features/chat/path-component.d.ts +1 -1
- package/dist/components/features/chat/pending-stop-icon.d.ts +1 -1
- package/dist/components/features/chat/pending-user-messages.d.ts +2 -1
- package/dist/components/features/chat/plan-preview.d.ts +1 -1
- package/dist/components/features/chat/remove-file-button.d.ts +1 -1
- package/dist/components/features/chat/skill-install-restart-banner.d.ts +1 -1
- package/dist/components/features/chat/success-indicator.d.ts +1 -1
- package/dist/components/features/chat/task-tracking/status-badge.d.ts +1 -1
- package/dist/components/features/chat/task-tracking/status-icon.d.ts +1 -1
- package/dist/components/features/chat/task-tracking/task-item.d.ts +1 -1
- package/dist/components/features/chat/task-tracking/task-list-section.d.ts +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/code-block.d.ts +2 -1
- package/dist/components/features/chat/tool-visualizers/primitives/diff-view.d.ts +2 -1
- package/dist/components/features/chat/tool-visualizers/primitives/file-path-chip.d.ts +2 -1
- package/dist/components/features/chat/tool-visualizers/primitives/key-value-grid.d.ts +1 -1
- package/dist/components/features/chat/tool-visualizers/primitives/output-pane.d.ts +2 -1
- package/dist/components/features/chat/typing-indicator.d.ts +1 -1
- package/dist/components/features/chat/uploaded-file.d.ts +1 -1
- package/dist/components/features/chat/uploaded-files.d.ts +1 -1
- package/dist/components/features/chat/uploaded-image.d.ts +2 -1
- package/dist/components/features/chat/user-message-body.d.ts +2 -2
- package/dist/components/features/chat/waiting-for-runtime-message.d.ts +1 -1
- package/dist/components/features/chat/workspace-mode-icon.d.ts +1 -1
- package/dist/components/features/chat/workspace-mode-selector.d.ts +1 -1
- package/dist/components/features/command-menu/command-menu-trigger.d.ts +2 -1
- package/dist/components/features/context-menu/archived-disabled-tooltip.d.ts +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text-with-description.d.ts +1 -1
- package/dist/components/features/context-menu/context-menu-icon-text.d.ts +1 -1
- package/dist/components/features/context-menu/context-menu-list-item.cjs +1 -1
- package/dist/components/features/context-menu/context-menu-list-item.cjs.map +1 -1
- package/dist/components/features/context-menu/context-menu-list-item.d.ts +2 -1
- package/dist/components/features/context-menu/context-menu-list-item.js +2 -1
- package/dist/components/features/context-menu/context-menu-list-item.js.map +1 -1
- package/dist/components/features/controls/agent-loading.d.ts +1 -1
- package/dist/components/features/controls/agent-status.d.ts +1 -1
- package/dist/components/features/controls/git-tools-submenu.d.ts +1 -1
- package/dist/components/features/controls/macros-submenu.d.ts +1 -1
- package/dist/components/features/controls/server-status-context-menu-icon-text.d.ts +1 -1
- package/dist/components/features/controls/server-status-context-menu.d.ts +1 -1
- package/dist/components/features/controls/server-status.d.ts +1 -1
- package/dist/components/features/controls/tools-context-menu-icon-text.d.ts +1 -1
- package/dist/components/features/controls/tools-context-menu.d.ts +1 -1
- package/dist/components/features/controls/tools.d.ts +2 -1
- package/dist/components/features/conversation/conversation-loading.d.ts +1 -1
- package/dist/components/features/conversation/conversation-main/chat-interface-wrapper.d.ts +1 -1
- package/dist/components/features/conversation/conversation-main/conversation-main.d.ts +1 -1
- package/dist/components/features/conversation/conversation-main/conversation-mobile-panel-page.d.ts +2 -1
- package/dist/components/features/conversation/conversation-name-context-menu-icon-text.d.ts +1 -1
- package/dist/components/features/conversation/conversation-name-context-menu.d.ts +1 -1
- package/dist/components/features/conversation/conversation-name-with-status.d.ts +2 -1
- package/dist/components/features/conversation/conversation-name.d.ts +2 -1
- package/dist/components/features/conversation/conversation-tab-empty-state.d.ts +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content-crossfade.d.ts +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/conversation-tab-content.d.ts +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/suspense-pending-fallback.d.ts +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/tab-container.d.ts +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/tab-content-area.d.ts +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-content/tab-wrapper.d.ts +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tab-nav.d.ts +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.d.ts +1 -1
- package/dist/components/features/conversation/conversation-tabs/conversation-tabs.d.ts +1 -1
- package/dist/components/features/conversation/conversation-tabs/drawer-vscode-link.d.ts +1 -1
- package/dist/components/features/conversation/metrics-modal/context-window-section.d.ts +1 -1
- package/dist/components/features/conversation/metrics-modal/cost-section.d.ts +1 -1
- package/dist/components/features/conversation/metrics-modal/empty-state.d.ts +1 -1
- package/dist/components/features/conversation/metrics-modal/metric-row.d.ts +1 -1
- package/dist/components/features/conversation/metrics-modal/metrics-modal-header.d.ts +1 -1
- package/dist/components/features/conversation/metrics-modal/metrics-modal.d.ts +1 -1
- package/dist/components/features/conversation/metrics-modal/usage-section.d.ts +1 -1
- package/dist/components/features/conversation/right-panel-toggle.d.ts +1 -1
- package/dist/components/features/conversation/transcript-export-modal.d.ts +2 -1
- package/dist/components/features/conversation-panel/budget-display.d.ts +2 -1
- package/dist/components/features/conversation-panel/budget-progress-bar.d.ts +1 -1
- package/dist/components/features/conversation-panel/budget-usage-text.d.ts +2 -1
- package/dist/components/features/conversation-panel/cloud-new-conversation-menu.d.ts +1 -1
- package/dist/components/features/conversation-panel/compact-conversation-row.cjs +1 -1
- package/dist/components/features/conversation-panel/compact-conversation-row.cjs.map +1 -1
- package/dist/components/features/conversation-panel/compact-conversation-row.d.ts +2 -1
- package/dist/components/features/conversation-panel/compact-conversation-row.js +38 -37
- package/dist/components/features/conversation-panel/compact-conversation-row.js.map +1 -1
- package/dist/components/features/conversation-panel/confirm-delete-modal.d.ts +1 -1
- package/dist/components/features/conversation-panel/confirm-stop-modal.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-footer.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-header.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-skeleton.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card-title.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-card.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-repo-link.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-card/conversation-status-badges.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-card/no-repository.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-list.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-group-folder-row.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-filter-menu.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-new-thread-picker.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-panel-pinned-section.d.ts +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.cjs.map +1 -1
- package/dist/components/features/conversation-panel/conversation-panel.d.ts +2 -1
- package/dist/components/features/conversation-panel/conversation-panel.js +221 -220
- package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
- package/dist/components/features/conversation-panel/conversation-status-dot.d.ts +1 -1
- package/dist/components/features/conversation-panel/exit-conversation-modal.d.ts +1 -1
- package/dist/components/features/conversation-panel/hook-event-item.d.ts +1 -1
- package/dist/components/features/conversation-panel/hook-matcher-content.d.ts +1 -1
- package/dist/components/features/conversation-panel/hooks-empty-state.d.ts +1 -1
- package/dist/components/features/conversation-panel/hooks-loading-state.d.ts +1 -1
- package/dist/components/features/conversation-panel/hooks-modal-header.d.ts +1 -1
- package/dist/components/features/conversation-panel/hooks-modal.d.ts +1 -1
- package/dist/components/features/conversation-panel/local-new-conversation-menu.d.ts +1 -1
- package/dist/components/features/conversation-panel/menu-heading.d.ts +1 -1
- package/dist/components/features/conversation-panel/menu-row.d.ts +1 -1
- package/dist/components/features/conversation-panel/menu-separator.d.ts +1 -1
- package/dist/components/features/conversation-panel/new-conversation-button.d.ts +2 -1
- package/dist/components/features/conversation-panel/plugins-modal.d.ts +1 -1
- package/dist/components/features/conversation-panel/runtime-waiting-state.d.ts +1 -1
- package/dist/components/features/conversation-panel/skill-content.d.ts +1 -1
- package/dist/components/features/conversation-panel/skill-item.d.ts +1 -1
- package/dist/components/features/conversation-panel/skill-triggers.d.ts +1 -1
- package/dist/components/features/conversation-panel/skills-empty-state.d.ts +1 -1
- package/dist/components/features/conversation-panel/skills-loading-state.d.ts +1 -1
- package/dist/components/features/conversation-panel/skills-modal-header.d.ts +1 -1
- package/dist/components/features/conversation-panel/skills-modal-section.d.ts +1 -1
- package/dist/components/features/conversation-panel/skills-modal.d.ts +1 -1
- package/dist/components/features/conversation-panel/start-task-card/start-task-card-footer.d.ts +1 -1
- package/dist/components/features/conversation-panel/start-task-card/start-task-card-header.d.ts +1 -1
- package/dist/components/features/conversation-panel/start-task-card/start-task-card.d.ts +1 -1
- package/dist/components/features/conversation-panel/start-task-card/start-task-status-badge.d.ts +1 -1
- package/dist/components/features/conversation-panel/start-task-card/start-task-status-indicator.d.ts +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/empty-tools-state.d.ts +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/system-message-content.d.ts +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/system-message-header.d.ts +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/tab-button.d.ts +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/tab-content.d.ts +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/tab-navigation.d.ts +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/toggle-button.d.ts +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/tool-item.d.ts +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/tool-parameters.d.ts +1 -1
- package/dist/components/features/conversation-panel/system-message-modal/tools-list.d.ts +1 -1
- package/dist/components/features/conversation-panel/system-message-modal.d.ts +1 -1
- package/dist/components/features/diff-viewer/commit-list.d.ts +2 -1
- package/dist/components/features/diff-viewer/commit-row.d.ts +2 -1
- package/dist/components/features/diff-viewer/diff-drawer-icon.d.ts +1 -1
- package/dist/components/features/diff-viewer/editor-container.d.ts +1 -1
- package/dist/components/features/diff-viewer/empty-changes-message.d.ts +1 -1
- package/dist/components/features/diff-viewer/file-diff-viewer.d.ts +2 -1
- package/dist/components/features/diff-viewer/loading-spinner.d.ts +1 -1
- package/dist/components/features/files/file-item.d.ts +1 -1
- package/dist/components/features/files/file-list.d.ts +2 -1
- package/dist/components/features/files-tab/file-content-viewer.d.ts +1 -1
- package/dist/components/features/files-tab/file-quick-row.d.ts +1 -1
- package/dist/components/features/files-tab/file-tree-view.d.ts +1 -1
- package/dist/components/features/files-tab/highlighted-source-view.d.ts +1 -1
- package/dist/components/features/files-tab/no-file-selected-message.d.ts +1 -1
- package/dist/components/features/files-tab/segmented-toggle.d.ts +1 -1
- package/dist/components/features/files-tab/tree-node.d.ts +1 -1
- package/dist/components/features/home/featured-automations/automation-health-indicator.d.ts +11 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-metrics.d.ts +18 -0
- package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.d.ts +14 -0
- package/dist/components/features/home/featured-automations/automation-run-health.d.ts +25 -0
- package/dist/components/features/home/featured-automations/build-home-automation-menu-items.d.ts +39 -0
- package/dist/components/features/home/featured-automations/build-pinned-automation-menu-items.d.ts +22 -0
- package/dist/components/features/home/featured-automations/home-automation-activity.d.ts +23 -0
- package/dist/components/features/home/featured-automations/home-automation-menu.d.ts +13 -0
- package/dist/components/features/home/featured-automations/home-automation-run-tooltip.d.ts +12 -0
- package/dist/components/features/home/featured-automations/pinned-automation-card.d.ts +21 -0
- package/dist/components/features/home/featured-automations/pinned-automations-dashboard.d.ts +6 -0
- package/dist/components/features/home/featured-automations/running-automations-list.d.ts +6 -0
- package/dist/components/features/home/git-branch-dropdown/branch-dropdown-menu.d.ts +1 -1
- package/dist/components/features/home/git-branch-dropdown/git-branch-dropdown.d.ts +2 -1
- package/dist/components/features/home/git-provider-dropdown/git-provider-dropdown.d.ts +2 -1
- package/dist/components/features/home/git-repo-dropdown/git-repo-dropdown.d.ts +2 -1
- package/dist/components/features/home/home-chat-launcher.d.ts +1 -1
- package/dist/components/features/home/home-git-control-bar-preview.d.ts +1 -1
- package/dist/components/features/home/home-header/guide-message.d.ts +1 -1
- package/dist/components/features/home/home-header/home-header-title.d.ts +1 -1
- package/dist/components/features/home/home-header/home-header.d.ts +1 -1
- package/dist/components/features/home/llm-not-configured-banner.d.ts +1 -1
- package/dist/components/features/home/new-conversation/create-conversation-button.d.ts +1 -1
- package/dist/components/features/home/new-conversation/new-conversation.d.ts +1 -1
- package/dist/components/features/home/new-conversation.d.ts +1 -1
- package/dist/components/features/home/open-launcher-button.d.ts +1 -1
- package/dist/components/features/home/open-repository-dialog.d.ts +1 -1
- package/dist/components/features/home/open-workspace-dialog.d.ts +1 -1
- package/dist/components/features/home/repo-selection-form.d.ts +2 -1
- package/dist/components/features/home/shared/clear-button.d.ts +2 -1
- package/dist/components/features/home/shared/dropdown-item.d.ts +1 -1
- package/dist/components/features/home/shared/empty-state.d.ts +2 -1
- package/dist/components/features/home/shared/error-message.d.ts +2 -1
- package/dist/components/features/home/shared/generic-dropdown-menu.d.ts +1 -1
- package/dist/components/features/home/shared/loading-spinner.d.ts +2 -1
- package/dist/components/features/home/shared/toggle-button.d.ts +1 -1
- package/dist/components/features/home/tasks/task-card.d.ts +1 -1
- package/dist/components/features/home/tasks/task-group.d.ts +1 -1
- package/dist/components/features/home/tasks/task-issue-number.d.ts +1 -1
- package/dist/components/features/home/tasks/task-item-title.d.ts +1 -1
- package/dist/components/features/home/tasks/task-suggestions-skeleton.d.ts +1 -1
- package/dist/components/features/home/tasks/task-suggestions.d.ts +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.d.ts +2 -1
- package/dist/components/features/home/workspace-dropdown/manage-workspaces-modal.d.ts +2 -1
- package/dist/components/features/home/workspace-dropdown/workspace-dropdown.d.ts +2 -1
- package/dist/components/features/home/workspace-selection-form.d.ts +2 -1
- package/dist/components/features/images/image-carousel.d.ts +2 -1
- package/dist/components/features/images/image-preview.d.ts +1 -1
- package/dist/components/features/images/thumbnail.d.ts +1 -1
- package/dist/components/features/launch/plugin-launch-modal.d.ts +2 -1
- package/dist/components/features/launch/plugin-launch-parameter-input.d.ts +1 -1
- package/dist/components/features/launch/plugin-launch-plugin-section.d.ts +1 -1
- package/dist/components/features/manifest/manifest-form-field.d.ts +1 -1
- package/dist/components/features/manifest/manifest-icons.d.ts +13 -0
- package/dist/components/features/manifest/manifest-overview-tiles.d.ts +19 -0
- package/dist/components/features/manifest/manifest-prerequisites-step.d.ts +1 -1
- package/dist/components/features/manifest/manifest-review-step.d.ts +1 -1
- package/dist/components/features/manifest/manifest-setup-dialog.d.ts +1 -1
- package/dist/components/features/manifest/manifest-subpage-layout.d.ts +23 -0
- package/dist/components/features/markdown/anchor.d.ts +1 -1
- package/dist/components/features/markdown/blockquote.d.ts +1 -1
- package/dist/components/features/markdown/code.d.ts +1 -1
- package/dist/components/features/markdown/headings.d.ts +6 -6
- package/dist/components/features/markdown/horizontal-rule.d.ts +1 -1
- package/dist/components/features/markdown/list.d.ts +3 -3
- package/dist/components/features/markdown/markdown-renderer.d.ts +1 -1
- package/dist/components/features/markdown/markdown-table-scroll.d.ts +1 -1
- package/dist/components/features/markdown/paragraph.d.ts +1 -1
- package/dist/components/features/markdown/plan-components.d.ts +36 -36
- package/dist/components/features/markdown/table.d.ts +3 -3
- package/dist/components/features/mcp-logo-badge.d.ts +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.cjs +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.cjs.map +1 -1
- package/dist/components/features/mcp-page/custom-server-editor.d.ts +2 -1
- package/dist/components/features/mcp-page/custom-server-editor.js +5 -0
- package/dist/components/features/mcp-page/custom-server-editor.js.map +1 -1
- package/dist/components/features/mcp-page/install-server-modal.cjs +1 -1
- package/dist/components/features/mcp-page/install-server-modal.cjs.map +1 -1
- package/dist/components/features/mcp-page/install-server-modal.d.ts +2 -1
- package/dist/components/features/mcp-page/install-server-modal.js +117 -118
- package/dist/components/features/mcp-page/install-server-modal.js.map +1 -1
- package/dist/components/features/mcp-page/installed-server-card.d.ts +2 -1
- package/dist/components/features/mcp-page/installed-servers-section.d.ts +1 -1
- package/dist/components/features/mcp-page/marketplace-card.d.ts +1 -1
- package/dist/components/features/mcp-page/marketplace-section.d.ts +1 -1
- package/dist/components/features/mcp-page/mcp-logo-stack-badge.d.ts +1 -1
- package/dist/components/features/mcp-page/mcp-section-filter-dropdown.d.ts +1 -1
- package/dist/components/features/mcp-page/mcp-server-health.d.ts +2 -1
- package/dist/components/features/mcp-page/mcp-toolbar.d.ts +1 -1
- package/dist/components/features/mcp-page/save-as-secret-toggle.d.ts +1 -1
- package/dist/components/features/onboarding/onboarding-host.d.ts +1 -1
- package/dist/components/features/onboarding/onboarding-modal.d.ts +2 -1
- package/dist/components/features/onboarding/onboarding-progress-bar.d.ts +1 -1
- package/dist/components/features/onboarding/steps/check-backend-step.d.ts +2 -1
- package/dist/components/features/onboarding/steps/choose-agent-step.d.ts +3 -2
- package/dist/components/features/onboarding/steps/say-hello-step.d.ts +2 -1
- package/dist/components/features/onboarding/steps/setup-acp-secrets-step.d.ts +2 -1
- package/dist/components/features/onboarding/steps/setup-llm-step.d.ts +2 -1
- package/dist/components/features/plugins/add-plugin-modal.d.ts +2 -1
- package/dist/components/features/plugins/plugin-card.d.ts +2 -1
- package/dist/components/features/plugins/plugin-detail-modal.d.ts +1 -1
- package/dist/components/features/plugins/plugin-files-section.d.ts +2 -1
- package/dist/components/features/plugins/plugin-picker-card.d.ts +1 -1
- package/dist/components/features/plugins/plugin-picker-modal.d.ts +1 -1
- package/dist/components/features/plugins/plugin-picker-trigger.d.ts +1 -1
- package/dist/components/features/plugins/plugin-picker.d.ts +1 -1
- package/dist/components/features/plugins/plugins-toolbar.d.ts +1 -1
- package/dist/components/features/settings/acp-auth-status-banner.d.ts +1 -1
- package/dist/components/features/settings/acp-conflict-warnings.d.ts +2 -1
- package/dist/components/features/settings/acp-credentials-section.d.ts +1 -1
- package/dist/components/features/settings/acp-secret-field.d.ts +2 -1
- package/dist/components/features/settings/agent-canvas-update-card.d.ts +1 -1
- package/dist/components/features/settings/agent-profiles/agent-profile-actions-menu.d.ts +1 -1
- package/dist/components/features/settings/agent-profiles/agent-profile-row.d.ts +1 -1
- package/dist/components/features/settings/agent-profiles/agent-profiles-body.d.ts +1 -1
- package/dist/components/features/settings/agent-profiles/agent-profiles-local-view.d.ts +1 -1
- package/dist/components/features/settings/agent-profiles/agent-profiles-manager.d.ts +1 -1
- package/dist/components/features/settings/agent-profiles/delete-agent-profile-modal.d.ts +1 -1
- package/dist/components/features/settings/agent-server-onboarding.d.ts +2 -1
- package/dist/components/features/settings/api-key-modal-base.d.ts +1 -1
- package/dist/components/features/settings/app-settings/app-settings-inputs-skeleton.d.ts +1 -1
- package/dist/components/features/settings/app-settings/language-input.d.ts +1 -1
- package/dist/components/features/settings/app-settings/theme-input.d.ts +2 -1
- package/dist/components/features/settings/backend-synced-settings-badge.d.ts +1 -1
- package/dist/components/features/settings/banner-message.d.ts +1 -1
- package/dist/components/features/settings/cloud-settings-link.d.ts +1 -1
- package/dist/components/features/settings/input-skeleton.d.ts +1 -1
- package/dist/components/features/settings/integrations-settings-link.d.ts +1 -1
- package/dist/components/features/settings/key-status-icon.d.ts +1 -1
- package/dist/components/features/settings/llm-profiles/delete-profile-modal.d.ts +1 -1
- package/dist/components/features/settings/llm-profiles/llm-profiles-manager.d.ts +1 -1
- package/dist/components/features/settings/llm-profiles/llm-settings-local-view.d.ts +2 -1
- package/dist/components/features/settings/llm-profiles/profile-actions-menu-item.d.ts +1 -1
- package/dist/components/features/settings/llm-profiles/profile-actions-menu.d.ts +1 -1
- package/dist/components/features/settings/llm-profiles/profile-row.d.ts +1 -1
- package/dist/components/features/settings/llm-profiles/profiles-body.d.ts +1 -1
- package/dist/components/features/settings/llm-profiles/rename-profile-modal.d.ts +1 -1
- package/dist/components/features/settings/llm-settings/llm-settings-inputs-skeleton.d.ts +1 -1
- package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.d.ts +2 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs +1 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-form.cjs.map +1 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-form.d.ts +2 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-form.js +2 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-form.js.map +1 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-list-item.d.ts +1 -1
- package/dist/components/features/settings/mcp-settings/mcp-server-list.d.ts +1 -1
- package/dist/components/features/settings/mobile-header.d.ts +1 -1
- package/dist/components/features/settings/optional-tag.d.ts +1 -1
- package/dist/components/features/settings/sdk-settings/field-help.d.ts +1 -1
- package/dist/components/features/settings/sdk-settings/schema-field.d.ts +2 -1
- package/dist/components/features/settings/sdk-settings/sdk-section-page.d.ts +1 -1
- package/dist/components/features/settings/sdk-settings/view-toggle.d.ts +1 -1
- package/dist/components/features/settings/secrets-settings/secret-form.d.ts +2 -1
- package/dist/components/features/settings/secrets-settings/secret-list-item.d.ts +2 -2
- package/dist/components/features/settings/settings-desktop-sidebar.d.ts +1 -1
- package/dist/components/features/settings/settings-dropdown-input.d.ts +1 -1
- package/dist/components/features/settings/settings-layout.d.ts +1 -1
- package/dist/components/features/settings/settings-mobile-drawer.d.ts +1 -1
- package/dist/components/features/settings/settings-mobile-hub.d.ts +1 -1
- package/dist/components/features/settings/settings-nav-divider.d.ts +1 -1
- package/dist/components/features/settings/settings-nav-header.d.ts +1 -1
- package/dist/components/features/settings/settings-nav-link.d.ts +1 -1
- package/dist/components/features/settings/settings-navigation.d.ts +1 -1
- package/dist/components/features/settings/settings-switch.d.ts +1 -1
- package/dist/components/features/settings/subtext-skeleton.d.ts +1 -1
- package/dist/components/features/settings/switch-skeleton.d.ts +1 -1
- package/dist/components/features/settings/upgrade-banner.d.ts +1 -1
- package/dist/components/features/settings/upgrade-button.d.ts +1 -1
- package/dist/components/features/sidebar/avatar.d.ts +1 -1
- package/dist/components/features/sidebar/sidebar-collapsed-icon-slot.d.ts +1 -1
- package/dist/components/features/sidebar/sidebar-conversation-list.d.ts +1 -1
- package/dist/components/features/sidebar/sidebar-mobile-menu-bar.d.ts +1 -1
- package/dist/components/features/sidebar/sidebar-mobile-menu-toggle.d.ts +1 -1
- package/dist/components/features/sidebar/sidebar-mobile-nav-context.d.ts +1 -1
- package/dist/components/features/sidebar/sidebar-nav-link.d.ts +1 -1
- package/dist/components/features/sidebar/sidebar-rail-body.d.ts +1 -1
- package/dist/components/features/sidebar/sidebar.d.ts +2 -1
- package/dist/components/features/sidebar/user-avatar.d.ts +1 -1
- package/dist/components/features/skills/add-skill-modal.d.ts +2 -1
- package/dist/components/features/skills/extensions-mobile-hub.d.ts +1 -1
- package/dist/components/features/skills/extensions-navigation.d.ts +1 -1
- package/dist/components/features/skills/skill-card-pill-row.d.ts +1 -1
- package/dist/components/features/skills/skill-card.d.ts +2 -1
- package/dist/components/features/skills/skill-detail-modal.d.ts +2 -1
- package/dist/components/features/skills/skill-facet-rail.d.ts +8 -0
- package/dist/components/features/skills/skill-facet-row.d.ts +13 -0
- package/dist/components/features/skills/skill-filter.d.ts +34 -0
- package/dist/components/features/skills/skill-filters-modal.d.ts +10 -0
- package/dist/components/features/skills/skill-icon-badge.d.ts +1 -1
- package/dist/components/features/skills/skill-type-badge.d.ts +1 -1
- package/dist/components/features/skills/skills-toolbar.d.ts +3 -4
- package/dist/components/features/suggestions/suggestion-item.d.ts +1 -1
- package/dist/components/features/suggestions/suggestions.d.ts +1 -1
- package/dist/components/features/terminal/empty-terminal-message.d.ts +1 -1
- package/dist/components/features/terminal/terminal.d.ts +1 -1
- package/dist/components/features/tips/random-tip.d.ts +2 -1
- package/dist/components/providers/agent-server-ui-providers.d.ts +1 -1
- package/dist/components/providers/agent-server-ui-root.d.ts +1 -1
- package/dist/components/providers/telemetry-provider.d.ts +1 -1
- package/dist/components/shared/action-tooltip.d.ts +1 -1
- package/dist/components/shared/agent-brand-icon.d.ts +1 -1
- package/dist/components/shared/badge.d.ts +1 -1
- package/dist/components/shared/buttons/back-nav-button-content.d.ts +1 -1
- package/dist/components/shared/buttons/circle-plus-check-toggle.d.ts +3 -2
- package/dist/components/shared/buttons/conversation-confirmation-buttons.d.ts +1 -1
- package/dist/components/shared/buttons/copy-to-clipboard-button.d.ts +1 -1
- package/dist/components/shared/buttons/copyable-content-wrapper.d.ts +1 -1
- package/dist/components/shared/buttons/modal-button.d.ts +1 -1
- package/dist/components/shared/buttons/openhands-logo-button.d.ts +1 -1
- package/dist/components/shared/buttons/remove-button.d.ts +1 -1
- package/dist/components/shared/buttons/scroll-to-bottom-button.d.ts +1 -1
- package/dist/components/shared/buttons/styled-tooltip.d.ts +1 -1
- package/dist/components/shared/filters/enum-filter-dropdown.cjs +1 -1
- package/dist/components/shared/filters/enum-filter-dropdown.cjs.map +1 -1
- package/dist/components/shared/filters/enum-filter-dropdown.d.ts +6 -2
- package/dist/components/shared/filters/enum-filter-dropdown.js +13 -13
- package/dist/components/shared/filters/enum-filter-dropdown.js.map +1 -1
- package/dist/components/shared/git-provider-icon.d.ts +1 -1
- package/dist/components/shared/hook-execution-event-message.d.ts +2 -1
- package/dist/components/shared/loading-spinner.d.ts +1 -1
- package/dist/components/shared/modals/confirmation-modal.d.ts +1 -1
- package/dist/components/shared/modals/confirmation-modals/base-modal.d.ts +3 -3
- package/dist/components/shared/modals/confirmation-modals/danger-modal.d.ts +1 -1
- package/dist/components/shared/modals/modal-body.d.ts +1 -1
- package/dist/components/shared/modals/modal-close-button.d.ts +1 -1
- package/dist/components/shared/modals/settings/model-selector.d.ts +2 -1
- package/dist/components/shared/modals/settings/settings-form.d.ts +2 -1
- package/dist/components/shared/modals/settings/settings-modal.d.ts +1 -1
- package/dist/components/shared/navigation-link.cjs +1 -1
- package/dist/components/shared/navigation-link.cjs.map +1 -1
- package/dist/components/shared/navigation-link.js +11 -7
- package/dist/components/shared/navigation-link.js.map +1 -1
- package/dist/components/shared/risk-alert.d.ts +1 -1
- package/dist/components/shared/text-shimmer.d.ts +1 -1
- package/dist/components/ui/resize-handle.d.ts +1 -1
- package/dist/config/defaults.cjs +1 -1
- package/dist/config/defaults.cjs.map +1 -1
- package/dist/config/defaults.js +3 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/context/navigation-context.d.ts +1 -1
- package/dist/context/scroll-context.d.ts +1 -1
- package/dist/contexts/active-backend-context.d.ts +1 -1
- package/dist/contexts/conversation-websocket-context.d.ts +1 -1
- package/dist/contexts/settings-section-header-context.d.ts +1 -1
- package/dist/contexts/websocket-provider-wrapper.d.ts +1 -1
- package/dist/fixtures/home-automations-demo.d.ts +19 -0
- package/dist/hooks/mutation/use-add-mcp-server.cjs +1 -1
- package/dist/hooks/mutation/use-add-mcp-server.cjs.map +1 -1
- package/dist/hooks/mutation/use-add-mcp-server.js +10 -14
- package/dist/hooks/mutation/use-add-mcp-server.js.map +1 -1
- package/dist/hooks/mutation/use-delete-mcp-server.cjs +1 -1
- package/dist/hooks/mutation/use-delete-mcp-server.cjs.map +1 -1
- package/dist/hooks/mutation/use-delete-mcp-server.d.ts +2 -7
- package/dist/hooks/mutation/use-delete-mcp-server.js +8 -34
- package/dist/hooks/mutation/use-delete-mcp-server.js.map +1 -1
- package/dist/hooks/mutation/use-save-settings.cjs +1 -1
- package/dist/hooks/mutation/use-save-settings.cjs.map +1 -1
- package/dist/hooks/mutation/use-save-settings.js +8 -4
- package/dist/hooks/mutation/use-save-settings.js.map +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.cjs +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.cjs.map +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.d.ts +1 -1
- package/dist/hooks/mutation/use-update-mcp-server.js +31 -16
- package/dist/hooks/mutation/use-update-mcp-server.js.map +1 -1
- package/dist/hooks/query/use-active-conversation.d.ts +1 -1
- package/dist/hooks/query/use-agent-profiles.d.ts +1 -1
- package/dist/hooks/query/use-app-installations.d.ts +1 -1
- package/dist/hooks/query/use-automation-detail.d.ts +2 -2
- package/dist/hooks/query/use-automation-health.d.ts +2 -0
- package/dist/hooks/query/use-automations.d.ts +5 -1
- package/dist/hooks/query/use-bash-command-logs.d.ts +1 -1
- package/dist/hooks/query/use-cloud-sandbox.d.ts +1 -1
- package/dist/hooks/query/use-commit-changes.d.ts +1 -1
- package/dist/hooks/query/use-config.d.ts +1 -1
- package/dist/hooks/query/use-conversation-history.d.ts +1 -1
- package/dist/hooks/query/use-conversation-hooks.d.ts +1 -1
- package/dist/hooks/query/use-conversation-skills.d.ts +1 -1
- package/dist/hooks/query/use-get-secrets.d.ts +1 -1
- package/dist/hooks/query/use-home-automations.d.ts +20 -0
- package/dist/hooks/query/use-latest-automation-runs.d.ts +19 -0
- package/dist/hooks/query/use-llm-profiles.d.ts +1 -1
- package/dist/hooks/query/use-llm-subscription-models.d.ts +1 -1
- package/dist/hooks/query/use-llm-subscription-status.d.ts +1 -1
- package/dist/hooks/query/use-local-git-info.d.ts +1 -1
- package/dist/hooks/query/use-local-workspaces.d.ts +1 -1
- package/dist/hooks/query/use-manifest-capabilities.d.ts +2 -0
- package/dist/hooks/query/use-plugin-file-content.d.ts +1 -1
- package/dist/hooks/query/use-plugins-marketplace.d.ts +1 -1
- package/dist/hooks/query/use-provider-models.d.ts +1 -1
- package/dist/hooks/query/use-search-branches.d.ts +1 -1
- package/dist/hooks/query/use-search-providers.d.ts +1 -1
- package/dist/hooks/query/use-search-repositories.d.ts +1 -1
- package/dist/hooks/query/use-search-subdirs.d.ts +2 -2
- package/dist/hooks/query/use-settings.d.ts +2 -2
- package/dist/hooks/query/use-skills.d.ts +1 -1
- package/dist/hooks/query/use-start-tasks.d.ts +1 -1
- package/dist/hooks/query/use-sub-conversation-task-polling.d.ts +1 -1
- package/dist/hooks/query/use-sub-conversations.d.ts +1 -1
- package/dist/hooks/query/use-suggested-tasks.d.ts +1 -1
- package/dist/hooks/query/use-task-polling.d.ts +2 -2
- package/dist/hooks/query/use-unified-get-git-changes.d.ts +1 -1
- package/dist/hooks/query/use-unified-git-diff.d.ts +1 -1
- package/dist/hooks/query/use-user-conversation.d.ts +1 -1
- package/dist/hooks/query/use-workspace-file-content.d.ts +1 -1
- package/dist/hooks/use-backend-scoped-path.cjs +2 -0
- package/dist/hooks/use-backend-scoped-path.cjs.map +1 -0
- package/dist/hooks/use-backend-scoped-path.d.ts +10 -0
- package/dist/hooks/use-backend-scoped-path.js +13 -0
- package/dist/hooks/use-backend-scoped-path.js.map +1 -0
- package/dist/hooks/use-home-automation-actions.d.ts +23 -0
- package/dist/hooks/use-home-pinned-automations.d.ts +26 -0
- package/dist/hooks/use-tracking.cjs +1 -1
- package/dist/hooks/use-tracking.cjs.map +1 -1
- package/dist/hooks/use-tracking.d.ts +4 -0
- package/dist/hooks/use-tracking.js +6 -0
- package/dist/hooks/use-tracking.js.map +1 -1
- package/dist/i18n/declaration.cjs +1 -1
- package/dist/i18n/declaration.cjs.map +1 -1
- package/dist/i18n/declaration.d.ts +68 -2
- package/dist/i18n/declaration.js +1 -1
- package/dist/i18n/declaration.js.map +1 -1
- package/dist/i18n/translation.cjs +2 -2
- package/dist/i18n/translation.cjs.map +1 -1
- package/dist/i18n/translation.js +1169 -47
- package/dist/i18n/translation.js.map +1 -1
- package/dist/icons/code-pill.d.ts +1 -1
- package/dist/locales/ar/openhands.json +70 -4
- package/dist/locales/ca/openhands.json +70 -4
- package/dist/locales/de/openhands.json +70 -4
- package/dist/locales/en/openhands.json +70 -4
- package/dist/locales/es/openhands.json +70 -4
- package/dist/locales/fr/openhands.json +70 -4
- package/dist/locales/it/openhands.json +70 -4
- package/dist/locales/ja/openhands.json +70 -4
- package/dist/locales/ko-KR/openhands.json +70 -4
- package/dist/locales/no/openhands.json +70 -4
- package/dist/locales/pt/openhands.json +70 -4
- package/dist/locales/tr/openhands.json +70 -4
- package/dist/locales/uk/openhands.json +70 -4
- package/dist/locales/zh-CN/openhands.json +70 -4
- package/dist/locales/zh-TW/openhands.json +70 -4
- package/dist/manifests/automation-insights.d.ts +64 -0
- package/dist/manifests/automation-interface.cjs +1 -1
- package/dist/manifests/automation-interface.cjs.map +1 -1
- package/dist/manifests/automation-interface.d.ts +33 -1
- package/dist/manifests/automation-interface.js +2 -1
- package/dist/manifests/automation-interface.js.map +1 -1
- package/dist/manifests/interface-validation.cjs +1 -1
- package/dist/manifests/interface-validation.cjs.map +1 -1
- package/dist/manifests/interface-validation.js +228 -50
- package/dist/manifests/interface-validation.js.map +1 -1
- package/dist/manifests/manifest-template.d.ts +2 -0
- package/dist/manifests/manifest-validation.cjs.map +1 -1
- package/dist/manifests/manifest-validation.js.map +1 -1
- package/dist/manifests/types.cjs +1 -1
- package/dist/manifests/types.cjs.map +1 -1
- package/dist/manifests/types.d.ts +128 -0
- package/dist/manifests/types.js +35 -2
- package/dist/manifests/types.js.map +1 -1
- package/dist/mockServiceWorker.js +21 -9
- package/dist/node_modules/@openhands/extensions/automations/catalog/upstream-fork-sync/manifest.cjs +9 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/upstream-fork-sync/manifest.cjs.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/upstream-fork-sync/manifest.js +74 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog/upstream-fork-sync/manifest.js.map +1 -0
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js +6 -4
- package/dist/node_modules/@openhands/extensions/automations/catalog-index.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/interface.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/automations/interface.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/automations/interface.js +126 -5
- package/dist/node_modules/@openhands/extensions/automations/interface.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.cjs +161 -53
- package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.js +112 -50
- package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
- package/dist/node_modules/@tanstack/query-core/build/modern/utils.cjs +1 -1
- package/dist/node_modules/@tanstack/query-core/build/modern/utils.cjs.map +1 -1
- package/dist/node_modules/@tanstack/query-core/build/modern/utils.js +12 -1
- package/dist/node_modules/@tanstack/query-core/build/modern/utils.js.map +1 -1
- package/dist/node_modules/@tanstack/react-query/build/modern/useBaseQuery.cjs +1 -1
- package/dist/node_modules/@tanstack/react-query/build/modern/useBaseQuery.cjs.map +1 -1
- package/dist/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js +14 -12
- package/dist/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js.map +1 -1
- package/dist/node_modules/html-parse-stringify/dist/esm/html-parse-stringify.cjs +2 -0
- package/dist/node_modules/html-parse-stringify/dist/esm/html-parse-stringify.cjs.map +1 -0
- package/dist/node_modules/html-parse-stringify/dist/esm/html-parse-stringify.js +177 -0
- package/dist/node_modules/html-parse-stringify/dist/esm/html-parse-stringify.js.map +1 -0
- package/dist/node_modules/i18next/dist/esm/i18next.cjs +1 -1
- package/dist/node_modules/i18next/dist/esm/i18next.cjs.map +1 -1
- package/dist/node_modules/i18next/dist/esm/i18next.js +31 -24
- package/dist/node_modules/i18next/dist/esm/i18next.js.map +1 -1
- package/dist/node_modules/posthog-js/dist/module.cjs +2 -2
- package/dist/node_modules/posthog-js/dist/module.cjs.map +1 -1
- package/dist/node_modules/posthog-js/dist/module.js +2055 -1929
- package/dist/node_modules/posthog-js/dist/module.js.map +1 -1
- package/dist/node_modules/react-i18next/dist/es/TransWithoutContext.cjs +1 -1
- package/dist/node_modules/react-i18next/dist/es/TransWithoutContext.cjs.map +1 -1
- package/dist/node_modules/react-i18next/dist/es/TransWithoutContext.js +43 -62
- package/dist/node_modules/react-i18next/dist/es/TransWithoutContext.js.map +1 -1
- package/dist/node_modules/react-i18next/dist/es/useTranslation.cjs +1 -1
- package/dist/node_modules/react-i18next/dist/es/useTranslation.cjs.map +1 -1
- package/dist/node_modules/react-i18next/dist/es/useTranslation.js +12 -6
- package/dist/node_modules/react-i18next/dist/es/useTranslation.js.map +1 -1
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs +1 -1
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.cjs.map +1 -1
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +352 -310
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +34 -33
- package/dist/package.js.map +1 -1
- package/dist/routes/agent-settings.d.ts +3 -2
- package/dist/routes/app-settings.d.ts +2 -1
- package/dist/routes/browser-tab.d.ts +1 -1
- package/dist/routes/changes-tab.d.ts +2 -1
- package/dist/routes/commits-tab.d.ts +1 -1
- package/dist/routes/conversation.d.ts +2 -1
- package/dist/routes/files-tab.d.ts +1 -1
- package/dist/routes/llm-settings.d.ts +3 -2
- package/dist/routes/mcp.cjs +1 -1
- package/dist/routes/mcp.cjs.map +1 -1
- package/dist/routes/mcp.d.ts +2 -1
- package/dist/routes/mcp.js +1 -1
- package/dist/routes/mcp.js.map +1 -1
- package/dist/routes/planner-tab.d.ts +2 -1
- package/dist/routes/secrets-settings.d.ts +2 -1
- package/dist/routes/task-list-tab.d.ts +1 -1
- package/dist/services/settings.cjs +1 -1
- package/dist/services/settings.cjs.map +1 -1
- package/dist/services/settings.js +3 -7
- package/dist/services/settings.js.map +1 -1
- package/dist/types/automation.d.ts +16 -1
- package/dist/types/mcp-auth.cjs.map +1 -1
- package/dist/types/mcp-auth.d.ts +5 -41
- package/dist/types/mcp-auth.js.map +1 -1
- package/dist/types/mcp-server.d.ts +17 -32
- package/dist/types/settings.d.ts +8 -28
- package/dist/ui/card-title.d.ts +1 -1
- package/dist/ui/card.d.ts +1 -1
- package/dist/ui/combobox-caret.d.ts +3 -3
- package/dist/ui/context-menu.cjs +1 -1
- package/dist/ui/context-menu.cjs.map +1 -1
- package/dist/ui/context-menu.d.ts +3 -2
- package/dist/ui/context-menu.js +10 -9
- package/dist/ui/context-menu.js.map +1 -1
- package/dist/ui/divider.d.ts +1 -1
- package/dist/ui/dropdown/clear-button.d.ts +1 -1
- package/dist/ui/dropdown/dropdown-input.d.ts +1 -1
- package/dist/ui/dropdown/dropdown-menu.d.ts +1 -1
- package/dist/ui/dropdown/dropdown.d.ts +1 -1
- package/dist/ui/dropdown/loading-spinner.d.ts +1 -1
- package/dist/ui/dropdown/toggle-button.d.ts +1 -1
- package/dist/ui/help-link.d.ts +1 -1
- package/dist/ui/pre.d.ts +1 -1
- package/dist/ui/toggle-switch.d.ts +2 -2
- package/dist/ui/typography.d.ts +7 -7
- package/dist/utils/automation-activity-log-export.d.ts +17 -0
- package/dist/utils/automation-timeout.d.ts +4 -6
- package/dist/utils/custom-toast-handlers.d.ts +2 -2
- package/dist/utils/format-relative-time.d.ts +3 -0
- package/dist/utils/mcp-config.cjs +1 -1
- package/dist/utils/mcp-config.cjs.map +1 -1
- package/dist/utils/mcp-config.d.ts +12 -29
- package/dist/utils/mcp-config.js +161 -143
- package/dist/utils/mcp-config.js.map +1 -1
- package/dist/utils/mcp-installed-servers.cjs +1 -1
- package/dist/utils/mcp-installed-servers.cjs.map +1 -1
- package/dist/utils/mcp-installed-servers.d.ts +2 -2
- package/dist/utils/mcp-installed-servers.js +21 -32
- package/dist/utils/mcp-installed-servers.js.map +1 -1
- package/dist/utils/mcp-server-health-key.cjs.map +1 -1
- package/dist/utils/mcp-server-health-key.d.ts +2 -4
- package/dist/utils/mcp-server-health-key.js.map +1 -1
- package/dist/utils/settings-like-page-layout-classes.cjs +1 -1
- package/dist/utils/settings-like-page-layout-classes.cjs.map +1 -1
- package/dist/utils/settings-like-page-layout-classes.d.ts +6 -2
- package/dist/utils/settings-like-page-layout-classes.js +1 -1
- package/dist/utils/settings-like-page-layout-classes.js.map +1 -1
- package/dist/utils/skill-category.d.ts +12 -0
- package/package.json +36 -33
- package/scripts/check-sdk-version-sync.mjs +6 -6
- package/scripts/dev-safe.mjs +2 -2
- package/scripts/dev-with-automation.mjs +3 -2
- package/build/assets/Trans-Bwpzk1wT.js +0 -1
- package/build/assets/active-backend-context-BiwzkzDy.js +0 -2
- package/build/assets/agent-context-settings-DXNT_dcw.js +0 -1
- package/build/assets/agent-server-conversation-service.api-CYSWw-2g.js +0 -41
- package/build/assets/agent-settings-BjgQQe-_.js +0 -1
- package/build/assets/alert-banner-DR8EVyZM.js +0 -1
- package/build/assets/api-error-message-e16L1kwH.js +0 -1
- package/build/assets/automation-detail-DY6x2FW1.js +0 -2
- package/build/assets/automation-export-C09f-Lua.js +0 -2
- package/build/assets/automation-setup-route-CqKp0717.js +0 -1
- package/build/assets/automations-list-CqWJ7qXW.js +0 -1
- package/build/assets/check-CPLXgluF.js +0 -1
- package/build/assets/chevron-down-CP4QHvyc.js +0 -1
- package/build/assets/circle-check-Dpy2_xSI.js +0 -1
- package/build/assets/command-menu-Bj6X4ckE.js +0 -1
- package/build/assets/condenser-settings-EAXQNR2E.js +0 -1
- package/build/assets/context-menu-list-item-CrCrYuPF.js +0 -1
- package/build/assets/conversation-BzyIcSwr.js +0 -1
- package/build/assets/conversation-panel-BzyIcSwr.js +0 -1
- package/build/assets/entry.client-BbIYOsIg.js +0 -2
- package/build/assets/enum-filter-dropdown-C08-srev.js +0 -1
- package/build/assets/files-tab-DEq8MbHu.js +0 -1
- package/build/assets/format-time-delta-CxfPJpzC.js +0 -1
- package/build/assets/git-repo-dropdown-9WKINV6J.js +0 -1
- package/build/assets/home-CY0JaxiY.js +0 -1
- package/build/assets/home-CaNWlVvB.js +0 -1
- package/build/assets/index-home-CaNWlVvB.js +0 -1
- package/build/assets/info-CmWQXtRQ.js +0 -1
- package/build/assets/install-server-modal-BWrudmZU.js +0 -1
- package/build/assets/llm-not-configured-banner-3tMsM4K6.js +0 -27
- package/build/assets/llm-settings-D0W8mJDk.js +0 -1
- package/build/assets/loader-circle-B4QDBARx.js +0 -1
- package/build/assets/manifest-39f4789d.js +0 -1
- package/build/assets/mcp-DXG9LWrI.js +0 -9
- package/build/assets/mcp-marketplace-utils-DFmhKc5s.js +0 -1
- package/build/assets/messages-kBjKaAeA.js +0 -40
- package/build/assets/navigation-link-Bxmn-pCs.js +0 -1
- package/build/assets/onboarding-47hh2IHA.js +0 -1
- package/build/assets/onboarding-modal-9BuvvROo.js +0 -1
- package/build/assets/plus-DrKuuvMe.js +0 -1
- package/build/assets/recommended-automations-launcher-ejxy1P27.js +0 -1
- package/build/assets/root-5S-M8SYa.js +0 -2
- package/build/assets/root-DZ39lS5f.css +0 -1
- package/build/assets/root-layout-BPqoa0gv.js +0 -3
- package/build/assets/search-Dc2qR4O2.js +0 -1
- package/build/assets/settings-Chfn5xTD.js +0 -1
- package/build/assets/settings-like-page-layout-classes-DyxyJ0k4.js +0 -1
- package/build/assets/settings-service.api-CZiPD8__.js +0 -1
- package/build/assets/sidebar-mobile-menu-toggle-ND-hgygu.js +0 -1
- package/build/assets/skills-settings-B43KArIz.js +0 -2
- package/build/assets/use-is-authed-BT7Iud4U.js +0 -1
- package/build/assets/use-llm-profiles-2Wc2db8u.js +0 -1
- package/build/assets/use-save-agent-profile-D0wC5ExW.js +0 -1
- package/build/assets/use-skills-CE6miQ3r.js +0 -1
- package/build/assets/use-tracking-BGboadaZ.js +0 -68
- package/build/assets/useQuery-DiPh8LRJ.js +0 -1
- package/build/assets/utils-BgGG1znF.js +0 -1
- package/build/assets/v4-DDdyfk2q.js +0 -1
- package/build/assets/vendor~browser-IVYgIgG1.js +0 -47
- package/build/assets/vendor~entry.client-CXM9oiAk.js +0 -1
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~d4by102p-C2f0ZhS-.js +0 -26
- package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~emdr2jt4-BrmgjeOw.js +0 -1
- package/build/assets/vendor~module-BZXjBMvd.js +0 -2
- package/build/assets/x-omAzpXkl.js +0 -1
- package/dist/components/features/skills/skill-type-filter.d.ts +0 -3
- package/dist/components/features/skills/skills-type-filter-dropdown.d.ts +0 -7
- package/dist/node_modules/html-parse-stringify/dist/html-parse-stringify.module.cjs +0 -2
- package/dist/node_modules/html-parse-stringify/dist/html-parse-stringify.module.cjs.map +0 -1
- package/dist/node_modules/html-parse-stringify/dist/html-parse-stringify.module.js +0 -81
- package/dist/node_modules/html-parse-stringify/dist/html-parse-stringify.module.js.map +0 -1
- package/dist/node_modules/void-elements/index.cjs +0 -2
- package/dist/node_modules/void-elements/index.cjs.map +0 -1
- package/dist/node_modules/void-elements/index.js +0 -25
- package/dist/node_modules/void-elements/index.js.map +0 -1
- /package/build/assets/{vendor~root-layout~index-home~home~mcp~automations-list~automation-setup-route~onboarding-modal-D7IDevqN.js → vendor~root-layout~index-home~home~mcp~automations-list~automation-templates~automation-set~bxsimjx0-D7IDevqN.js} +0 -0
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./vendor~browser-jaN4ilxM.js";var u=class{constructor(e,t){this.protocol=e,this.data=t,this.events=new s}events},d=class extends t{frame;constructor(e,t){super(e,{}),this.frame=t}},f=class{emitter;constructor(){this.emitter=new s}async queue(e){await this.emitter.emitAsPromise(new d(`frame`,e))}on(e,t,n){this.emitter.on(e,t,n)}disable(){this.emitter.removeAllListeners()}};function p(e){let t=new URL(e.url);return t.protocol===`file:`||/(fonts\.googleapis\.com)/.test(t.hostname)||/node_modules/.test(t.pathname)||t.pathname.includes(`@vite`)?!0:/\.(s?css|less|m?jsx?|m?tsx?|html|ttf|otf|woff|woff2|eot|gif|jpe?g|png|avif|webp|svg|mp4|webm|ogg|mov|mp3|wav|ogg|flac|aac|pdf|txt|csv|json|xml|md|zip|tar|gz|rar|7z)$/i.test(t.pathname)}var m=`[MSW]`;function h(e,...t){return`${m} ${r(e,...t)}`}function g(e,...t){console.warn(h(e,...t))}function _(e,...t){console.error(h(e,...t))}var v={formatMessage:h,warn:g,error:_},y=class extends Error{constructor(e){super(e),this.name=`InternalError`}};function b(){if(typeof navigator<`u`&&navigator.product===`ReactNative`)return!0;if(typeof process<`u`){let e=process.type;return e===`renderer`||e===`worker`?!1:!!(process.versions&&process.versions.node)}return!1}var x=Object.defineProperty,S=(e,t)=>{for(var n in t)x(e,n,{get:t[n],enumerable:!0})},C={};S(C,{blue:()=>te,gray:()=>ne,green:()=>ie,red:()=>re,yellow:()=>ee});function ee(e){return`\x1B[33m${e}\x1B[0m`}function te(e){return`\x1B[34m${e}\x1B[0m`}function ne(e){return`\x1B[90m${e}\x1B[0m`}function re(e){return`\x1B[31m${e}\x1B[0m`}function ie(e){return`\x1B[32m${e}\x1B[0m`}var ae=b(),oe=class{constructor(e){this.name=e,this.prefix=`[${this.name}]`;let t=de(`DEBUG`),n=de(`LOG_LEVEL`);t===`1`||t===`true`||t!==void 0&&this.name.startsWith(t)?(this.debug=fe(n,`debug`)?w:this.debug,this.info=fe(n,`info`)?w:this.info,this.success=fe(n,`success`)?w:this.success,this.warning=fe(n,`warning`)?w:this.warning,this.error=fe(n,`error`)?w:this.error):(this.info=w,this.success=w,this.warning=w,this.error=w,this.only=w)}prefix;extend(e){return new oe(`${this.name}:${e}`)}debug(e,...t){this.logEntry({level:`debug`,message:ne(e),positionals:t,prefix:this.prefix,colors:{prefix:`gray`}})}info(e,...t){this.logEntry({level:`info`,message:e,positionals:t,prefix:this.prefix,colors:{prefix:`blue`}});let n=new se;return(e,...t)=>{n.measure(),this.logEntry({level:`info`,message:`${e} ${ne(`${n.deltaTime}ms`)}`,positionals:t,prefix:this.prefix,colors:{prefix:`blue`}})}}success(e,...t){this.logEntry({level:`info`,message:e,positionals:t,prefix:`\u2714 ${this.prefix}`,colors:{timestamp:`green`,prefix:`green`}})}warning(e,...t){this.logEntry({level:`warning`,message:e,positionals:t,prefix:`\u26A0 ${this.prefix}`,colors:{timestamp:`yellow`,prefix:`yellow`}})}error(e,...t){this.logEntry({level:`error`,message:e,positionals:t,prefix:`\u2716 ${this.prefix}`,colors:{timestamp:`red`,prefix:`red`}})}only(e){e()}createEntry(e,t){return{timestamp:new Date,level:e,message:t}}logEntry(e){let{level:t,message:n,prefix:r,colors:i,positionals:a=[]}=e,o=this.createEntry(t,n),s=i?.timestamp||`gray`,c=i?.prefix||`gray`,l={timestamp:C[s],prefix:C[c]};this.getWriter(t)([l.timestamp(this.formatTimestamp(o.timestamp))].concat(r==null?[]:l.prefix(r),pe(n)).join(` `),...a.map(pe))}formatTimestamp(e){return`${e.toLocaleTimeString(`en-GB`)}:${e.getMilliseconds()}`}getWriter(e){switch(e){case`debug`:case`success`:case`info`:return ce;case`warning`:return le;case`error`:return ue}}},se=class{startTime;endTime;deltaTime;constructor(){this.startTime=performance.now()}measure(){this.endTime=performance.now();let e=this.endTime-this.startTime;this.deltaTime=e.toFixed(2)}},w=()=>void 0;function ce(e,...t){if(ae){process.stdout.write(r(e,...t)+`
|
|
2
|
-
`);return}console.log(e,...t)}function le(e,...t){if(ae){process.stderr.write(r(e,...t)+`
|
|
3
|
-
`);return}console.warn(e,...t)}function ue(e,...t){if(ae){process.stderr.write(r(e,...t)+`
|
|
4
|
-
`);return}console.error(e,...t)}function de(e){return ae?{}[e]:globalThis[e]?.toString()}function fe(e,t){return e!==void 0&&e!==t}function pe(e){return e===void 0?`undefined`:e===null?`null`:typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):e.toString()}function me(e){return globalThis[e]||void 0}function he(e,t){globalThis[e]=t}function ge(e){delete globalThis[e]}var T=function(e){return e.INACTIVE=`INACTIVE`,e.APPLYING=`APPLYING`,e.APPLIED=`APPLIED`,e.DISPOSING=`DISPOSING`,e.DISPOSED=`DISPOSED`,e}({}),_e=class{constructor(t){this.symbol=t,this.readyState=T.INACTIVE,this.emitter=new e,this.subscriptions=[],this.logger=new oe(t.description),this.emitter.setMaxListeners(0),this.logger.info(`constructing the interceptor...`)}checkEnvironment(){return!0}apply(){let e=this.logger.extend(`apply`);if(e.info(`applying the interceptor...`),this.readyState===T.APPLIED){e.info(`intercepted already applied!`);return}if(!this.checkEnvironment()){e.info(`the interceptor cannot be applied in this environment!`);return}this.readyState=T.APPLYING;let t=this.getInstance();if(t){e.info(`found a running instance, reusing...`),this.on=(n,r)=>(e.info(`proxying the "%s" listener`,n),t.emitter.addListener(n,r),this.subscriptions.push(()=>{t.emitter.removeListener(n,r),e.info(`removed proxied "%s" listener!`,n)}),this),this.readyState=T.APPLIED;return}e.info(`no running instance found, setting up a new instance...`),this.setup(),this.setInstance(),this.readyState=T.APPLIED}setup(){}on(e,t){let n=this.logger.extend(`on`);return this.readyState===T.DISPOSING||this.readyState===T.DISPOSED?(n.info(`cannot listen to events, already disposed!`),this):(n.info(`adding "%s" event listener:`,e,t),this.emitter.on(e,t),this)}once(e,t){return this.emitter.once(e,t),this}off(e,t){return this.emitter.off(e,t),this}removeAllListeners(e){return this.emitter.removeAllListeners(e),this}dispose(){let e=this.logger.extend(`dispose`);if(this.readyState===T.DISPOSED){e.info(`cannot dispose, already disposed!`);return}if(e.info(`disposing the interceptor...`),this.readyState=T.DISPOSING,!this.getInstance()){e.info(`no interceptors running, skipping dispose...`);return}if(this.clearInstance(),e.info(`global symbol deleted:`,me(this.symbol)),this.subscriptions.length>0){e.info(`disposing of %d subscriptions...`,this.subscriptions.length);for(let e of this.subscriptions)e();this.subscriptions=[],e.info(`disposed of all subscriptions!`,this.subscriptions.length)}this.emitter.removeAllListeners(),e.info(`destroyed the listener!`),this.readyState=T.DISPOSED}getInstance(){let e=me(this.symbol);return this.logger.info(`retrieved global instance:`,e?.constructor?.name),e}setInstance(){he(this.symbol,this),this.logger.info(`set global instance!`,this.symbol.description)}clearInstance(){ge(this.symbol),this.logger.info(`cleared global instance!`,this.symbol.description)}};function ve(){return Math.random().toString(16).slice(2)}function ye(){let e=(t,n)=>{e.state=`pending`,e.resolve=n=>e.state===`pending`?(e.result=n,t(n instanceof Promise?n:Promise.resolve(n).then(t=>(e.state=`fulfilled`,t)))):void 0,e.reject=t=>{if(e.state===`pending`)return queueMicrotask(()=>{e.state=`rejected`}),n(e.rejectionReason=t)}};return e}var be=class extends Promise{#e;resolve;reject;constructor(e=null){let t=ye();super((n,r)=>{t(n,r),e?.(t.resolve,t.reject)}),this.#e=t,this.resolve=this.#e.resolve,this.reject=this.#e.reject}get state(){return this.#e.state}get rejectionReason(){return this.#e.rejectionReason}then(e,t){return this.#t(super.then(e,t))}catch(e){return this.#t(super.catch(e))}finally(e){return this.#t(super.finally(e))}#t(e){return Object.defineProperties(e,{resolve:{configurable:!0,value:this.resolve},reject:{configurable:!0,value:this.reject}})}},xe=class e extends Error{constructor(t){super(t),this.name=`InterceptorError`,Object.setPrototypeOf(this,e.prototype)}};(class e{static{this.PENDING=0}static{this.PASSTHROUGH=1}static{this.RESPONSE=2}static{this.ERROR=3}constructor(t,n){this.request=t,this.source=n,this.readyState=e.PENDING,this.handled=new be}get#e(){return this.handled}async passthrough(){l.as(xe,this.readyState===e.PENDING,`Failed to passthrough the "%s %s" request: the request has already been handled`,this.request.method,this.request.url),this.readyState=e.PASSTHROUGH,await this.source.passthrough(),this.#e.resolve()}respondWith(t){l.as(xe,this.readyState===e.PENDING,`Failed to respond to the "%s %s" request with "%d %s": the request has already been handled (%d)`,this.request.method,this.request.url,t.status,t.statusText||`OK`,this.readyState),this.readyState=e.RESPONSE,this.#e.resolve(),this.source.respondWith(t)}errorWith(t){l.as(xe,this.readyState===e.PENDING,`Failed to error the "%s %s" request with "%s": the request has already been handled (%d)`,this.request.method,this.request.url,t?.toString(),this.readyState),this.readyState=e.ERROR,this.source.errorWith(t),this.#e.resolve()}});function Se(e){try{return new URL(e),!0}catch{return!1}}function Ce(e,t){let n=Object.getOwnPropertySymbols(t).find(t=>t.description===e);if(n)return Reflect.get(t,n)}var we=Symbol(`kStatus`),Te=Symbol(`kUrl`),Ee=class e extends Response{static{this.STATUS_CODES_WITHOUT_BODY=[101,103,204,205,304]}static{this.STATUS_CODES_WITH_REDIRECT=[301,302,303,307,308]}static isConfigurableStatusCode(e){return e>=200&&e<=599}static isRedirectResponse(t){return e.STATUS_CODES_WITH_REDIRECT.includes(t)}static isResponseWithBody(t){return!e.STATUS_CODES_WITHOUT_BODY.includes(t)}static setStatus(e,t){let n=Ce(`state`,t);n?n.status=e:Object.defineProperty(t,"status",{value:e,enumerable:!0,configurable:!0,writable:!1}),Object.defineProperty(t,we,{value:e,enumerable:!1})}static setUrl(e,t){if(!e||e===`about:`||!Se(e))return;let n=Ce(`state`,t);n?n.urlList.push(new URL(e)):Object.defineProperty(t,"url",{value:e,enumerable:!0,configurable:!0,writable:!1}),Object.defineProperty(t,Te,{value:e,enumerable:!1})}static parseRawHeaders(e){let t=new Headers;for(let n=0;n<e.length;n+=2)t.append(e[n],e[n+1]);return t}static clone(e){try{return e.clone()}catch(e){return Response.json(e instanceof Error?{name:e.name,message:e.message,stack:e.stack}:{},{status:500,statusText:`Unclonable Response`})}}constructor(t,n={}){let r=n.status??200,i=e.isConfigurableStatusCode(r)?r:200,a=e.isResponseWithBody(r)?t:null;super(a,{status:i,statusText:n.statusText,headers:n.headers}),r!==i&&e.setStatus(r,this),e.setUrl(n.url,this)}clone(){let t=super.clone(),n=Reflect.get(this,we);n&&e.setStatus(n,t);let r=Reflect.get(this,Te);return r&&e.setUrl(r,t),t}};new TextEncoder;function De(e){if(typeof e==`string`)return De(new URL(e,typeof location<`u`?location.href:void 0));if(e.protocol===`http:`?e.protocol=`ws:`:e.protocol===`https:`&&(e.protocol=`wss:`),e.protocol!==`ws:`&&e.protocol!==`wss:`)throw SyntaxError(`Failed to construct 'WebSocket': The URL's scheme must be either 'http', 'https', 'ws', or 'wss'. '${e.protocol}' is not allowed.`);if(e.hash!==``)throw SyntaxError(`Failed to construct 'WebSocket': The URL contains a fragment identifier ('${e.hash}'). Fragment identifiers are not allowed in WebSocket URLs.`);return e.href}var Oe=class e extends _e{constructor(t){e.symbol=Symbol.for(t.name),super(e.symbol),this.interceptors=t.interceptors}setup(){let e=this.logger.extend(`setup`);e.info(`applying all %d interceptors...`,this.interceptors.length);for(let t of this.interceptors)e.info(`applying "%s" interceptor...`,t.constructor.name),t.apply(),e.info(`adding interceptor dispose subscription`),this.subscriptions.push(()=>t.dispose())}on(e,t){for(let n of this.interceptors)n.on(e,t);return this}once(e,t){for(let n of this.interceptors)n.once(e,t);return this}off(e,t){for(let n of this.interceptors)n.off(e,t);return this}removeAllListeners(e){for(let t of this.interceptors)t.removeAllListeners(e);return this}};function ke(e,t=!0){return[t&&e.origin,e.pathname].filter(Boolean).join(``)}function Ae(e){let t=e instanceof URL?e:new URL(e);return typeof location<`u`&&t.origin===location.origin?t.pathname:t.origin+t.pathname}var je=/[^a-z0-9\-#$%&'*+.^_`|~]/i;function Me(e){if(je.test(e)||e.trim()===``)throw TypeError(`Invalid character in header field name`);return e.trim().toLowerCase()}var Ne=[`
|
|
5
|
-
`,`\r`,` `,` `],Pe=RegExp(`(^[${Ne.join(``)}]|$[${Ne.join(``)}])`,`g`);function Fe(e){return e.replace(Pe,``)}function E(e){if(typeof e!=`string`||e.length===0)return!1;for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n>127||!Ie(n))return!1}return!0}function Ie(e){return![127,32,`(`,`)`,`<`,`>`,`@`,`,`,`;`,`:`,`\\`,`"`,`/`,`[`,`]`,`?`,`=`,`{`,`}`].includes(e)}function Le(e){if(typeof e!=`string`||e.trim()!==e)return!1;for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n===0||n===10||n===13)return!1}return!0}var Re,D=Symbol(`normalizedHeaders`),ze=Symbol(`rawHeaderNames`),Be=`, `,Ve=class e{constructor(t){this[D]={},this[ze]=new Map,this[Re]=`Headers`,[`Headers`,`HeadersPolyfill`].includes(t?.constructor?.name)||t instanceof e||globalThis.Headers!==void 0&&t instanceof globalThis.Headers?t.forEach((e,t)=>{this.append(t,e)},this):Array.isArray(t)?t.forEach(([e,t])=>{this.append(e,Array.isArray(t)?t.join(Be):t)}):t&&Object.getOwnPropertyNames(t).forEach(e=>{let n=t[e];this.append(e,Array.isArray(n)?n.join(Be):n)})}[(Re=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}*entries(){let e=Object.keys(this[D]).sort((e,t)=>e.localeCompare(t));for(let t of e)if(t===`set-cookie`)for(let e of this.getSetCookie())yield[t,e];else yield[t,this.get(t)]}has(e){if(!E(e))throw TypeError(`Invalid header name "${e}"`);return this[D].hasOwnProperty(Me(e))}get(e){if(!E(e))throw TypeError(`Invalid header name "${e}"`);return this[D][Me(e)]??null}set(e,t){if(!E(e)||!Le(t))return;let n=Me(e),r=Fe(t);this[D][n]=Fe(r),this[ze].set(n,e)}append(e,t){if(!E(e)||!Le(t))return;let n=Me(e),r=Fe(t),i=this.has(n)?`${this.get(n)}, ${r}`:r;this.set(e,i)}delete(e){if(!E(e)||!this.has(e))return;let t=Me(e);delete this[D][t],this[ze].delete(t)}forEach(e,t){for(let[n,r]of this.entries())e.call(t,r,n,this)}getSetCookie(){let e=this.get(`set-cookie`);return e===null?[]:e===``?[``]:n(e)}},He=/[/\\]msw[/\\]src[/\\](.+)/,Ue=/(node_modules)?[/\\]lib[/\\](core|browser|node|native|iife)[/\\]|^[^/\\]*$/;function We(e){let t=e.stack;if(!t)return;let n=t.split(`
|
|
6
|
-
`).slice(1).find(e=>!(He.test(e)||Ue.test(e)));if(n)return n.replace(/\s*at [^()]*\(([^)]+)\)/,`$1`).replace(/^@/,``)}function Ge(e){return e?Reflect.has(e,Symbol.iterator)||Reflect.has(e,Symbol.asyncIterator):!1}var Ke=Object.create,qe=Object.defineProperty,Je=Object.getOwnPropertyDescriptor,Ye=Object.getOwnPropertyNames,Xe=Object.getPrototypeOf,Ze=Object.prototype.hasOwnProperty,Qe=(e,t)=>function(){return t||(0,e[Ye(e)[0]])((t={exports:{}}).exports,t),t.exports},$e=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of Ye(t))!Ze.call(e,i)&&i!==n&&qe(e,i,{get:()=>t[i],enumerable:!(r=Je(t,i))||r.enumerable});return e},et=(e,t,n)=>(n=e==null?{}:Ke(Xe(e)),$e(t||!e||!e.__esModule?qe(n,`default`,{value:e,enumerable:!0}):n,e)),tt=Qe({"node_modules/.pnpm/statuses@2.0.2/node_modules/statuses/codes.json"(e,t){t.exports={100:`Continue`,101:`Switching Protocols`,102:`Processing`,103:`Early Hints`,200:`OK`,201:`Created`,202:`Accepted`,203:`Non-Authoritative Information`,204:`No Content`,205:`Reset Content`,206:`Partial Content`,207:`Multi-Status`,208:`Already Reported`,226:`IM Used`,300:`Multiple Choices`,301:`Moved Permanently`,302:`Found`,303:`See Other`,304:`Not Modified`,305:`Use Proxy`,307:`Temporary Redirect`,308:`Permanent Redirect`,400:`Bad Request`,401:`Unauthorized`,402:`Payment Required`,403:`Forbidden`,404:`Not Found`,405:`Method Not Allowed`,406:`Not Acceptable`,407:`Proxy Authentication Required`,408:`Request Timeout`,409:`Conflict`,410:`Gone`,411:`Length Required`,412:`Precondition Failed`,413:`Payload Too Large`,414:`URI Too Long`,415:`Unsupported Media Type`,416:`Range Not Satisfiable`,417:`Expectation Failed`,418:`I'm a Teapot`,421:`Misdirected Request`,422:`Unprocessable Entity`,423:`Locked`,424:`Failed Dependency`,425:`Too Early`,426:`Upgrade Required`,428:`Precondition Required`,429:`Too Many Requests`,431:`Request Header Fields Too Large`,451:`Unavailable For Legal Reasons`,500:`Internal Server Error`,501:`Not Implemented`,502:`Bad Gateway`,503:`Service Unavailable`,504:`Gateway Timeout`,505:`HTTP Version Not Supported`,506:`Variant Also Negotiates`,507:`Insufficient Storage`,508:`Loop Detected`,509:`Bandwidth Limit Exceeded`,510:`Not Extended`,511:`Network Authentication Required`}}}),nt=et(Qe({"node_modules/.pnpm/statuses@2.0.2/node_modules/statuses/index.js"(e,t){var n=tt();t.exports=s,s.message=n,s.code=r(n),s.codes=i(n),s.redirect={300:!0,301:!0,302:!0,303:!0,305:!0,307:!0,308:!0},s.empty={204:!0,205:!0,304:!0},s.retry={502:!0,503:!0,504:!0};function r(e){var t={};return Object.keys(e).forEach(function(n){var r=e[n],i=Number(n);t[r.toLowerCase()]=i}),t}function i(e){return Object.keys(e).map(function(e){return Number(e)})}function a(e){var t=e.toLowerCase();if(!Object.prototype.hasOwnProperty.call(s.code,t))throw Error(`invalid status message: "`+e+`"`);return s.code[t]}function o(e){if(!Object.prototype.hasOwnProperty.call(s.message,e))throw Error(`invalid status code: `+e);return s.message[e]}function s(e){if(typeof e==`number`)return o(e);if(typeof e!=`string`)throw TypeError(`code must be a number or string`);var t=parseInt(e,10);return isNaN(t)?a(e):o(t)}}})(),1),rt=nt.default||nt;rt.message;var it=rt,{message:at}=it,ot=Symbol(`kSetCookie`);function O(e={}){let t=e?.status||200,n=e?.statusText||at[t]||``,r=new Headers(e?.headers);return{...e,headers:r,status:t,statusText:n}}function st(e,t){t.type&&Object.defineProperty(e,"type",{value:t.type,enumerable:!0,writable:!1});let n=t.headers.get(`set-cookie`);return n&&Object.defineProperty(e,ot,{value:n,enumerable:!1,writable:!1}),e}function ct(e){return Reflect.get(e,ot)}var lt=Symbol(`bodyType`),ut=Symbol.for(`kDefaultContentType`),dt=class e extends Ee{[lt]=null;constructor(e,t){let n=O(t);super(e,n),st(this,n)}static error(){return super.error()}static text(t,n){let r=O(n),i=r.headers.has(`Content-Type`);i||r.headers.set(`Content-Type`,`text/plain`),r.headers.has(`Content-Length`)||r.headers.set(`Content-Length`,t?new Blob([t]).size.toString():`0`);let a=new e(t,r);return i||Object.defineProperty(a,ut,{value:!0,enumerable:!1}),a}static json(t,n){let r=O(n),i=r.headers.has(`Content-Type`);i||r.headers.set(`Content-Type`,`application/json`);let a=JSON.stringify(t);r.headers.has(`Content-Length`)||r.headers.set(`Content-Length`,a?new Blob([a]).size.toString():`0`);let o=new e(a,r);return i||Object.defineProperty(o,ut,{value:!0,enumerable:!1}),o}static xml(t,n){let r=O(n),i=r.headers.has(`Content-Type`);i||r.headers.set(`Content-Type`,`text/xml`);let a=new e(t,r);return i||Object.defineProperty(a,ut,{value:!0,enumerable:!1}),a}static html(t,n){let r=O(n),i=r.headers.has(`Content-Type`);i||r.headers.set(`Content-Type`,`text/html`);let a=new e(t,r);return i||Object.defineProperty(a,ut,{value:!0,enumerable:!1}),a}static arrayBuffer(t,n){let r=O(n),i=r.headers.has(`Content-Type`);i||r.headers.set(`Content-Type`,`application/octet-stream`),t&&!r.headers.has(`Content-Length`)&&r.headers.set(`Content-Length`,t.byteLength.toString());let a=new e(t,r);return i||Object.defineProperty(a,ut,{value:!0,enumerable:!1}),a}static formData(t,n){return new e(t,O(n))}},ft=class e{static cache=new WeakMap;kind=`request`;resolver;resolverIterator;resolverIteratorResult;options;info;isUsed;constructor(e){this.resolver=e.resolver,this.options=e.options;let t=We(Error());this.info={...e.info,callFrame:t},this.isUsed=!1}reset(){let e=this.resolverIterator;this.resolverIterator=void 0,this.resolverIteratorResult=void 0,typeof e?.return==`function`&&Promise.resolve(e.return())}restore(){this.options?.once&&(this.reset(),this.isUsed=!1)}async parse(e){return{}}async test(e){let t=await this.parse({request:e.request,resolutionContext:e.resolutionContext});return this.predicate({request:e.request,parsedResult:t,resolutionContext:e.resolutionContext})}extendResolverArgs(e){return{}}cloneRequestOrGetFromCache(t){let n=e.cache.get(t);if(n!==void 0)return n;let r=t.clone();return e.cache.set(t,r),r}async run(e){if(this.isUsed&&this.options?.once)return null;let t=this.cloneRequestOrGetFromCache(e.request),n=await this.parse({request:e.request,resolutionContext:e.resolutionContext});if(!await this.predicate({request:e.request,parsedResult:n,resolutionContext:e.resolutionContext})||this.isUsed&&this.options?.once)return null;this.isUsed=!0;let r=await this.wrapResolver(this.resolver)({...this.extendResolverArgs({request:e.request,parsedResult:n}),requestId:e.requestId,request:e.request}).catch(e=>{if(e instanceof Response)return e;throw e});return r&&pt(r),this.createExecutionResult({request:t,requestId:e.requestId,response:r,parsedResult:n})}wrapResolver(e){return async t=>{if(!this.resolverIterator){let n=await e(t);if(!Ge(n))return n;this.resolverIterator=Symbol.iterator in n?n[Symbol.iterator]():n[Symbol.asyncIterator]()}this.isUsed=!1;let{done:n,value:r}=await this.resolverIterator.next(),i=await r;return i&&(this.resolverIteratorResult=i.clone()),n?(this.isUsed=!0,this.resolverIteratorResult?.clone()):i}}createExecutionResult(e){return{handler:this,request:e.request,requestId:e.requestId,response:e.response,parsedResult:e.parsedResult}}};function pt(e){if(typeof document>`u`)return;let t=ct(e);if(!t)return;let n=Ve.prototype.getSetCookie.call(new Headers([[`set-cookie`,t]]));for(let e of n)document.cookie=e}var mt=async({request:e,requestId:t,handlers:n,resolutionContext:r})=>{let i=null,a=null;for(let o of n)if(a=await o.run({request:e,requestId:t,resolutionContext:r}),a!==null&&(i=o),a?.response)break;return i?{handler:i,parsedResult:a?.parsedResult,response:a?.response}:null};function ht(e){try{return JSON.parse(e)}catch{return}}var gt=new class{#e=`__msw-cookie-store__`;#t;#n;constructor(){b()||l(typeof localStorage<`u`,"Failed to create a CookieStore: `localStorage` is not available in this environment. This is likely an issue with your environment, which has been detected as browser (or browser-like) environment and must implement global browser APIs correctly."),this.#n=new o,this.#n.idx=this.getCookieStoreIndex(),this.#t=new i(this.#n)}getCookies(e){return this.#t.getCookiesSync(e)}async setCookie(e,t){await this.#t.setCookie(e,t),this.persist()}getCookieStoreIndex(){if(typeof localStorage>`u`||typeof localStorage.getItem!=`function`)return{};let e=localStorage.getItem(this.#e);if(e==null)return{};let t=ht(e);if(t==null)return{};let n={};for(let e of t){let t=c.fromJSON(e);t!=null&&t.domain!=null&&t.path!=null&&(n[t.domain]||={},n[t.domain][t.path]||={},n[t.domain][t.path][t.key]=t)}return n}persist(){if(typeof localStorage>`u`||typeof localStorage.setItem!=`function`)return;let e=[],{idx:t}=this.#n;for(let n in t)for(let r in t[n])for(let i in t[n][r])e.push(t[n][r][i].toJSON());localStorage.setItem(this.#e,JSON.stringify(e))}};async function _t(e,t){let n=ct(t);n&&await gt.setCookie(n,e.url)}function vt(e){return!!e.headers.get(`accept`)?.includes(`msw/passthrough`)}function yt(e){return e.status===302&&e.headers.get(`x-msw-intention`)===`passthrough`}function bt(e){let t=e.headers.get(`accept`);if(t){let n=t.replace(/(,\s+)?msw\/passthrough/,``);n?e.headers.set(`accept`,n):e.headers.delete(`accept`)}}function xt(e){for(var t=[],n=0;n<e.length;){var r=e[n];if(r===`*`||r===`+`||r===`?`){t.push({type:`MODIFIER`,index:n,value:e[n++]});continue}if(r===`\\`){t.push({type:`ESCAPED_CHAR`,index:n++,value:e[n++]});continue}if(r===`{`){t.push({type:`OPEN`,index:n,value:e[n++]});continue}if(r===`}`){t.push({type:`CLOSE`,index:n,value:e[n++]});continue}if(r===`:`){for(var i=``,a=n+1;a<e.length;){var o=e.charCodeAt(a);if(o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122||o===95){i+=e[a++];continue}break}if(!i)throw TypeError(`Missing parameter name at ${n}`);t.push({type:`NAME`,index:n,value:i}),n=a;continue}if(r===`(`){var s=1,c=``,a=n+1;if(e[a]===`?`)throw TypeError(`Pattern cannot start with "?" at ${a}`);for(;a<e.length;){if(e[a]===`\\`){c+=e[a++]+e[a++];continue}if(e[a]===`)`){if(s--,s===0){a++;break}}else if(e[a]===`(`&&(s++,e[a+1]!==`?`))throw TypeError(`Capturing groups are not allowed at ${a}`);c+=e[a++]}if(s)throw TypeError(`Unbalanced pattern at ${n}`);if(!c)throw TypeError(`Missing pattern at ${n}`);t.push({type:`PATTERN`,index:n,value:c}),n=a;continue}t.push({type:`CHAR`,index:n,value:e[n++]})}return t.push({type:`END`,index:n,value:``}),t}function St(e,t){t===void 0&&(t={});for(var n=xt(e),r=t.prefixes,i=r===void 0?`./`:r,a=t.delimiter,o=a===void 0?`/#?`:a,s=[],c=0,l=0,u=``,d=function(e){if(l<n.length&&n[l].type===e)return n[l++].value},f=function(e){var t=d(e);if(t!==void 0)return t;var r=n[l],i=r.type,a=r.index;throw TypeError(`Unexpected ${i} at ${a}, expected ${e}`)},p=function(){for(var e=``,t;t=d(`CHAR`)||d(`ESCAPED_CHAR`);)e+=t;return e},m=function(e){for(var t=0,n=o;t<n.length;t++){var r=n[t];if(e.indexOf(r)>-1)return!0}return!1},h=function(e){var t=s[s.length-1],n=e||(t&&typeof t==`string`?t:``);if(t&&!n)throw TypeError(`Must have text between two parameters, missing text after "${t.name}"`);return!n||m(n)?`[^${k(o)}]+?`:`(?:(?!${k(n)})[^${k(o)}])+?`};l<n.length;){var g=d(`CHAR`),_=d(`NAME`),v=d(`PATTERN`);if(_||v){var y=g||``;i.indexOf(y)===-1&&(u+=y,y=``),u&&=(s.push(u),``),s.push({name:_||c++,prefix:y,suffix:``,pattern:v||h(y),modifier:d(`MODIFIER`)||``});continue}var b=g||d(`ESCAPED_CHAR`);if(b){u+=b;continue}if(u&&=(s.push(u),``),d(`OPEN`)){var y=p(),x=d(`NAME`)||``,S=d(`PATTERN`)||``,C=p();f(`CLOSE`),s.push({name:x||(S?c++:``),pattern:x&&!S?h(y):S,prefix:y,suffix:C,modifier:d(`MODIFIER`)||``});continue}f(`END`)}return s}function Ct(e,t){var n=[];return wt(At(e,n,t),n,t)}function wt(e,t,n){n===void 0&&(n={});var r=n.decode,i=r===void 0?function(e){return e}:r;return function(n){var r=e.exec(n);if(!r)return!1;for(var a=r[0],o=r.index,s=Object.create(null),c=function(e){if(r[e]===void 0)return`continue`;var n=t[e-1];n.modifier===`*`||n.modifier===`+`?s[n.name]=r[e].split(n.prefix+n.suffix).map(function(e){return i(e,n)}):s[n.name]=i(r[e],n)},l=1;l<r.length;l++)c(l);return{path:a,index:o,params:s}}}function k(e){return e.replace(/([.+*?=^!:${}()[\]|/\\])/g,`\\$1`)}function Tt(e){return e&&e.sensitive?``:`i`}function Et(e,t){if(!t)return e;for(var n=/\((?:\?<(.*?)>)?(?!\?)/g,r=0,i=n.exec(e.source);i;)t.push({name:i[1]||r++,prefix:``,suffix:``,modifier:``,pattern:``}),i=n.exec(e.source);return e}function Dt(e,t,n){var r=e.map(function(e){return At(e,t,n).source});return RegExp(`(?:${r.join(`|`)})`,Tt(n))}function Ot(e,t,n){return kt(St(e,n),t,n)}function kt(e,t,n){n===void 0&&(n={});for(var r=n.strict,i=r===void 0?!1:r,a=n.start,o=a===void 0?!0:a,s=n.end,c=s===void 0?!0:s,l=n.encode,u=l===void 0?function(e){return e}:l,d=n.delimiter,f=d===void 0?`/#?`:d,p=n.endsWith,m=`[${k(p===void 0?``:p)}]|\$`,h=`[${k(f)}]`,g=o?`^`:``,_=0,v=e;_<v.length;_++){var y=v[_];if(typeof y==`string`)g+=k(u(y));else{var b=k(u(y.prefix)),x=k(u(y.suffix));if(y.pattern)if(t&&t.push(y),b||x)if(y.modifier===`+`||y.modifier===`*`){var S=y.modifier===`*`?`?`:``;g+=`(?:${b}((?:${y.pattern})(?:${x}${b}(?:${y.pattern}))*)${x})${S}`}else g+=`(?:${b}(${y.pattern})${x})${y.modifier}`;else{if(y.modifier===`+`||y.modifier===`*`)throw TypeError(`Can not repeat "${y.name}" without a prefix and suffix`);g+=`(${y.pattern})${y.modifier}`}else g+=`(?:${b}${x})${y.modifier}`}}if(c)i||(g+=`${h}?`),g+=n.endsWith?`(?=${m})`:`$`;else{var C=e[e.length-1],ee=typeof C==`string`?h.indexOf(C[C.length-1])>-1:C===void 0;i||(g+=`(?:${h}(?=${m}))?`),ee||(g+=`(?=${h}|${m})`)}return new RegExp(g,Tt(n))}function At(e,t,n){return e instanceof RegExp?Et(e,t):Array.isArray(e)?Dt(e,t,n):Ot(e,t,n)}var jt=/[?|#].*$/g;function Mt(e){return e.endsWith(`?`)?e:e.replace(jt,``)}function Nt(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function Pt(e,t){if(Nt(e)||e.startsWith(`*`))return e;let n=t||typeof location<`u`&&location.href;return n?decodeURI(new URL(encodeURI(e),n).href):e}function Ft(e,t){return e instanceof RegExp?e:Mt(Pt(e,t))}function It(e){return e.replace(/([:a-zA-Z_-]*)(\*{1,2})+/g,(e,t,n)=>{let r=`(.*)`;return t?t.startsWith(`:`)?`${t}${n}`:`${t}${r}`:r}).replace(/([^/])(:)(?=(?:\d+|\(\.\*\))(?=\/|$))/,`$1\\$2`).replace(/^([^/]+)(:)(?=\/\/)/,`$1\\$2`)}function Lt(e,t,n){let r=Ft(t,n),i=typeof r==`string`?It(r):r,a=ke(e),o=Ct(i,{decode:decodeURIComponent})(a),s=o&&o.params||{};return{matches:o!==!1,params:s}}function Rt(e){let t=new Date,n=`${t.getHours().toString().padStart(2,`0`)}:${t.getMinutes().toString().padStart(2,`0`)}:${t.getSeconds().toString().padStart(2,`0`)}`;return e?.milliseconds?`${n}.${t.getMilliseconds().toString().padStart(3,`0`)}`:n}function zt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var Bt=Symbol(`kConnect`),Vt=Symbol(`kAutoConnect`),Ht=Symbol(`kSiblingHandlers`);function Ut(e){return Reflect.get(e,Ht)||[]}function Wt(e){let t={},n=(e,n)=>{let r=t[e]||=[];r.includes(n)||r.push(n)};for(let t of e){n(t.kind,t);for(let e of Ut(t))n(e.kind,e)}return t}var Gt=class{getInitialState(e){l(this.#e(e),v.formatMessage(`Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?`));let t=Wt(e);return{initialHandlers:t,handlers:{...t}}}currentHandlers(){return Object.values(this.getState().handlers).flat().filter(e=>e!=null)}getHandlersByKind(e){return this.getState().handlers[e]||[]}use(e){if(l(this.#e(e),v.formatMessage(`[MSW] Failed to call "use()" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?`)),e.length===0)return;let{handlers:t}=this.getState(),n=Wt(e);for(let e in n){let r=n[e],i=t[e];t[e]=i?[...r,...i]:r}this.setState({handlers:t})}reset(e){l(e.length>0?this.#e(e):!0,v.formatMessage(`Failed to replace initial handlers during reset: invalid handlers. Did you forget to spread the handlers array?`));for(let e of this.currentHandlers())`reset`in e&&e.reset();let{initialHandlers:t}=this.getState();if(e.length===0){this.setState({handlers:{...t}});return}let n=Wt(e);this.setState({initialHandlers:n,handlers:{...n}})}restore(){for(let e of this.currentHandlers())`restore`in e&&e.restore()}#e(e){return e.every(e=>!Array.isArray(e))}},Kt=class extends Gt{#e;#t;constructor(e){super();let t=this.getInitialState(e);this.#t=t.initialHandlers,this.#e=t.handlers}getState(){return{initialHandlers:this.#t,handlers:this.#e}}setState(e){e.initialHandlers&&(this.#t=e.initialHandlers),e.handlers&&(this.#e=e.handlers)}},A=class extends t{requestId;request;constructor(e,t){super(e,{}),this.requestId=t.requestId,this.request=t.request}},qt=class extends t{requestId;request;response;constructor(e,t){super(e,{}),this.requestId=t.requestId,this.request=t.request,this.response=t.response}},Jt=class extends t{error;requestId;request;constructor(e,t){super(e,{}),this.error=t.error,this.requestId=t.requestId,this.request=t.request}},Yt=class extends u{constructor(e){let t=e.id||ve();super(`http`,{id:t,request:e.request})}getHandlers(e){return e.getHandlersByKind(`request`)}async getUnhandledMessage(){let{request:e}=this.data,t=new URL(e.url),n=Ae(t)+t.search,r=e.body==null?null:await e.clone().text();return`intercepted a request without a matching request handler:${`
|
|
7
|
-
|
|
8
|
-
\u2022 ${e.method} ${n}
|
|
9
|
-
|
|
10
|
-
${r?` \u2022 Request body: ${r}
|
|
11
|
-
|
|
12
|
-
`:``}`}If you still wish to intercept this unhandled request, please create a request handler for it.
|
|
13
|
-
Read more: https://mswjs.io/docs/http/intercepting-requests`}async resolve(e,t,n){let{id:r,request:i}=this.data,o=n?.quiet?null:i.clone();if(this.events.emit(new A(`request:start`,{requestId:r,request:i})),vt(i))return this.events.emit(new A(`request:end`,{requestId:r,request:i})),this.passthrough(),null;let[s,c]=await a(()=>mt({requestId:r,request:i,handlers:e,resolutionContext:{baseUrl:n?.baseUrl?.toString(),quiet:n?.quiet}}));if(s!=null)return this.events.emit(new Jt(`unhandledException`,{error:s,requestId:r,request:i}))||(console.error(s),v.error(`Encountered an unhandled exception during the handler lookup for "%s %s". Please see the original error above.`,i.method,i.url)),this.errorWith(s),null;if(c==null)return this.events.emit(new A(`request:unhandled`,{requestId:r,request:i})),await Xt(this,t).then(()=>this.passthrough(),e=>this.errorWith(e)),this.events.emit(new A(`request:end`,{requestId:r,request:i})),!1;let{response:l,handler:u,parsedResult:d}=c;if(this.events.emit(new A(`request:match`,{requestId:r,request:i})),l==null||yt(l))return this.events.emit(new A(`request:end`,{requestId:r,request:i})),this.passthrough(),null;let f=n?.quiet?null:l.clone();return await _t(i,l),this.respondWith(l),this.events.emit(new A(`request:end`,{requestId:r,request:i})),n?.quiet||u.log({request:o,response:f,parsedResult:d}),!0}};async function Xt(e,t){let n=async t=>{if(t===`bypass`)return;let n=await e.getUnhandledMessage();switch(t){case`warn`:return v.warn(`Warning: %s`,n);case`error`:return v.error(`Error: %s`,n)}},r=async e=>{if(l.as(y,e===`bypass`||e===`warn`||e===`error`,v.formatMessage(`Failed to react to an unhandled network frame: unknown strategy "%s". Please provide one of the supported strategies ("bypass", "warn", "error") or a custom callback function as the value of the "onUnhandledRequest" option.`,e)),e!==`bypass`&&(await n(e),e===`error`))return Promise.reject(new y(v.formatMessage(`Cannot bypass a request when using the "error" strategy for the "onUnhandledRequest" option.`)))};if(typeof t==`function`)return t({frame:e,defaults:{warn:n.bind(null,`warn`),error:n.bind(null,`error`)}});if(!(e instanceof Yt&&p(e.data.request)))return r(t)}function Zt(e){let t=[...e];return Object.freeze(t),t}function Qt(e){let t=[];for(let n of e)n instanceof Promise&&t.push(n);if(t.length>0)return Promise.all(t).then(()=>{})}var $t=(e=>(e[e.DISABLED=0]=`DISABLED`,e[e.ENABLED=1]=`ENABLED`,e))($t||{});function en(e){let t=0,n=new s,r=e=>e instanceof Gt?e:new Kt(e||[]),i={...e},a=r(i.handlers),o;return{get readyState(){return t},events:n,configure(e){l(t===0,``),e.handlers&&!Object.is(e.handlers,i.handlers)&&(a=r(e.handlers)),i={...i,...e}},enable(){return l(t===0,`Failed to call "enable" on the network: already enabled`),o=new AbortController,t=1,Qt(i.sources.map(e=>(f.prototype.disable.call(e),e.on(`frame`,async({frame:e})=>{e.events.on(`*`,e=>n.emit(e),{signal:o.signal});let t=e.getHandlers(a);await e.resolve(t,i.onUnhandledFrame||`warn`,i.context)}),e.enable())))},disable(){return l(t===1,`Failed to call "disable" on the network: already disabled`),o.abort(),t=0,Qt(i.sources.map(e=>e.disable()))},use(...e){a.use(e)},resetHandlers(...e){a.reset(e)},restoreHandlers(){a.restore()},listHandlers(){return Zt(a.currentHandlers())}}}async function tn(e,t,...n){let r=e.listeners(t);if(r.length!==0)for(let t of r)await t.apply(e,n)}var nn=new class{#e=new Map;applyPatch(e,t,n){let r=this.#e.get(e);l(!r?.has(t),`Failed to replace a global value at "${String(t)}": already replaced.`);let i=rn(e,t);if(i===void 0)return console.warn(`Failed to replace a global value at "${String(t)}": not a global value.`),()=>{};if(i.descriptor.configurable)Object.defineProperty(e,t,{value:n(e[t]),enumerable:!0,configurable:!0});else if(i.descriptor.writable)e[t]=n(e[t]);else throw Error(`Failed to patch a non-configurable non-writable property "${t.toString()}"`);let a=()=>{let n=this.#e.get(e);n?.has(t)&&(i.owner===e?Object.defineProperty(i.owner,t,i.descriptor):Reflect.deleteProperty(e,t),n.delete(t),n.size===0&&this.#e.delete(e))};return r?r.set(t,a):this.#e.set(e,new Map([[t,a]])),a}restoreAllPatches(){let e=[];for(let[,t]of this.#e)for(let[,n]of t)try{n()}catch(t){if(t instanceof Error)e.push(t);else throw t}if(e.length>0)throw AggregateError(e,`FOO!`)}};function rn(e,t){let n=e,r;for(;n;){if(r=Object.getOwnPropertyDescriptor(n,t),r)return{owner:n,descriptor:r};n=Object.getPrototypeOf(n)}}function an(e){let t=rn(globalThis,e);if(t===void 0)return!1;let{descriptor:n}=t;return typeof n.get==`function`&&n.get()===void 0||n.get===void 0&&n.value==null?!1:n.set===void 0&&!n.configurable?(console.error(`[MSW] Failed to apply interceptor: the global \`${e}\` property is non-configurable. This is likely an issue with your environment. If you are using a framework, please open an issue about this in their repository.`),!1):!0}function j(e,t){return Object.defineProperties(t,{target:{value:e,enumerable:!0,writable:!0},currentTarget:{value:e,enumerable:!0,writable:!0}}),t}var M=Symbol(`kCancelable`),N=Symbol(`kDefaultPrevented`),on=class extends MessageEvent{constructor(e,t){super(e,t),this[M]=!!t.cancelable,this[N]=!1}get cancelable(){return this[M]}set cancelable(e){this[M]=e}get defaultPrevented(){return this[N]}set defaultPrevented(e){this[N]=e}preventDefault(){this.cancelable&&!this[N]&&(this[N]=!0)}},sn=class extends Event{constructor(e,t={}){super(e,t),this.code=t.code===void 0?0:t.code,this.reason=t.reason===void 0?``:t.reason,this.wasClean=t.wasClean===void 0?!1:t.wasClean}},cn=class extends sn{constructor(e,t={}){super(e,t),this[M]=!!t.cancelable,this[N]=!1}get cancelable(){return this[M]}set cancelable(e){this[M]=e}get defaultPrevented(){return this[N]}set defaultPrevented(e){this[N]=e}preventDefault(){this.cancelable&&!this[N]&&(this[N]=!0)}},P=Symbol(`kEmitter`),ln=Symbol(`kBoundListener`),un=class{constructor(e,t){this.socket=e,this.transport=t,this.id=ve(),this.url=new URL(e.url),this[P]=new EventTarget,this.transport.addEventListener(`outgoing`,e=>{let t=j(this.socket,new on(`message`,{data:e.data,origin:e.origin,cancelable:!0}));this[P].dispatchEvent(t),t.defaultPrevented&&e.preventDefault()}),this.transport.addEventListener(`close`,e=>{this[P].dispatchEvent(j(this.socket,new sn(`close`,e)))})}addEventListener(e,t,n){if(!Reflect.has(t,ln)){let e=t.bind(this.socket);Object.defineProperty(t,ln,{value:e,enumerable:!1,configurable:!1})}this[P].addEventListener(e,Reflect.get(t,ln),n)}removeEventListener(e,t,n){this[P].removeEventListener(e,Reflect.get(t,ln),n)}send(e){this.transport.send(e)}close(e,t){this.transport.close(e,t)}},dn=`InvalidAccessError: close code out of user configurable range`,fn=Symbol(`kPassthroughPromise`),pn=Symbol(`kOnSend`),F=Symbol(`kClose`),mn=class extends EventTarget{static{this.CONNECTING=0}static{this.OPEN=1}static{this.CLOSING=2}static{this.CLOSED=3}constructor(e,t){super(),this.CONNECTING=0,this.OPEN=1,this.CLOSING=2,this.CLOSED=3,this._onopen=null,this._onmessage=null,this._onerror=null,this._onclose=null,this.url=De(e),this.protocol=``,this.extensions=``,this.binaryType=`blob`,this.readyState=this.CONNECTING,this.bufferedAmount=0,this[fn]=new be,queueMicrotask(async()=>{await this[fn]||(this.protocol=typeof t==`string`?t:Array.isArray(t)&&t.length>0?t[0]:``,this.readyState===this.CONNECTING&&(this.readyState=this.OPEN,this.dispatchEvent(j(this,new Event(`open`)))))})}set onopen(e){this.removeEventListener(`open`,this._onopen),this._onopen=e,e!==null&&this.addEventListener(`open`,e)}get onopen(){return this._onopen}set onmessage(e){this.removeEventListener(`message`,this._onmessage),this._onmessage=e,e!==null&&this.addEventListener(`message`,e)}get onmessage(){return this._onmessage}set onerror(e){this.removeEventListener(`error`,this._onerror),this._onerror=e,e!==null&&this.addEventListener(`error`,e)}get onerror(){return this._onerror}set onclose(e){this.removeEventListener(`close`,this._onclose),this._onclose=e,e!==null&&this.addEventListener(`close`,e)}get onclose(){return this._onclose}send(e){if(this.readyState===this.CONNECTING)throw this.close(),new DOMException(`InvalidStateError`);this.readyState===this.CLOSING||this.readyState===this.CLOSED||(this.bufferedAmount+=hn(e),queueMicrotask(()=>{this.bufferedAmount=0,this[pn]?.(e)}))}close(e=1e3,t){l(e,dn),l(e===1e3||e>=3e3&&e<=4999,dn),this[F](e,t)}[F](e=1e3,t,n=!0){this.readyState===this.CLOSING||this.readyState===this.CLOSED||(this.readyState=this.CLOSING,queueMicrotask(()=>{this.readyState=this.CLOSED,this.dispatchEvent(j(this,new sn(`close`,{code:e,reason:t,wasClean:n}))),this._onopen=null,this._onmessage=null,this._onerror=null,this._onclose=null}))}addEventListener(e,t,n){return super.addEventListener(e,t,n)}removeEventListener(e,t,n){return super.removeEventListener(e,t,n)}};function hn(e){return typeof e==`string`?e.length:e instanceof Blob?e.size:e.byteLength}var I=Symbol(`kEmitter`),gn=Symbol(`kBoundListener`),_n=Symbol(`kSend`),vn=class{constructor(e,t,n){this.client=e,this.transport=t,this.createConnection=n,this[I]=new EventTarget,this.mockCloseController=new AbortController,this.realCloseController=new AbortController,this.transport.addEventListener(`outgoing`,e=>{this.realWebSocket!==void 0&&queueMicrotask(()=>{e.defaultPrevented||this[_n](e.data)})}),this.transport.addEventListener(`incoming`,this.handleIncomingMessage.bind(this))}get socket(){return l(this.realWebSocket,'Cannot access "socket" on the original WebSocket server object: the connection is not open. Did you forget to call `server.connect()`?'),this.realWebSocket}connect(){l(!this.realWebSocket||this.realWebSocket.readyState!==WebSocket.OPEN,`Failed to call "connect()" on the original WebSocket instance: the connection already open`);let e=this.createConnection();e.binaryType=this.client.binaryType,e.addEventListener(`open`,e=>{this[I].dispatchEvent(j(this.realWebSocket,new Event(`open`,e)))},{once:!0}),e.addEventListener(`message`,e=>{this.transport.dispatchEvent(j(this.realWebSocket,new MessageEvent(`incoming`,{data:e.data,origin:e.origin})))}),this.client.addEventListener(`close`,e=>{this.handleMockClose(e)},{signal:this.mockCloseController.signal}),e.addEventListener(`close`,e=>{this.handleRealClose(e)},{signal:this.realCloseController.signal}),e.addEventListener(`error`,()=>{let t=j(e,new Event(`error`,{cancelable:!0}));this[I].dispatchEvent(t),t.defaultPrevented||this.client.dispatchEvent(j(this.client,new Event(`error`)))}),this.realWebSocket=e}addEventListener(e,t,n){if(!Reflect.has(t,gn)){let e=t.bind(this.client);Object.defineProperty(t,gn,{value:e,enumerable:!1})}this[I].addEventListener(e,Reflect.get(t,gn),n)}removeEventListener(e,t,n){this[I].removeEventListener(e,Reflect.get(t,gn),n)}send(e){this[_n](e)}[_n](e){let{realWebSocket:t}=this;if(l(t,`Failed to call "server.send()" for "%s": the connection is not open. Did you forget to call "server.connect()"?`,this.client.url),!(t.readyState===WebSocket.CLOSING||t.readyState===WebSocket.CLOSED)){if(t.readyState===WebSocket.CONNECTING){t.addEventListener(`open`,()=>{t.send(e)},{once:!0});return}t.send(e)}}close(){let{realWebSocket:e}=this;l(e,`Failed to close server connection for "%s": the connection is not open. Did you forget to call "server.connect()"?`,this.client.url),this.realCloseController.abort(),!(e.readyState===WebSocket.CLOSING||e.readyState===WebSocket.CLOSED)&&(e.close(),queueMicrotask(()=>{this[I].dispatchEvent(j(this.realWebSocket,new cn(`close`,{code:1e3,cancelable:!0})))}))}handleIncomingMessage(e){let t=j(e.target,new on(`message`,{data:e.data,origin:e.origin,cancelable:!0}));this[I].dispatchEvent(t),t.defaultPrevented||this.client.dispatchEvent(j(this.client,new MessageEvent(`message`,{data:e.data,origin:e.origin})))}handleMockClose(e){this.realWebSocket&&this.realWebSocket.close()}handleRealClose(e){this.mockCloseController.abort();let t=j(this.realWebSocket,new cn(`close`,{code:e.code,reason:e.reason,wasClean:e.wasClean,cancelable:!0}));this[I].dispatchEvent(t),t.defaultPrevented||this.client[F](e.code,e.reason)}},yn=class extends EventTarget{constructor(e){super(),this.socket=e,this.socket.addEventListener(`close`,e=>{this.dispatchEvent(j(this.socket,new sn(`close`,e)))}),this.socket[pn]=e=>{this.dispatchEvent(j(this.socket,new on(`outgoing`,{data:e,origin:this.socket.url,cancelable:!0})))}}addEventListener(e,t,n){return super.addEventListener(e,t,n)}dispatchEvent(e){return super.dispatchEvent(e)}send(e){queueMicrotask(()=>{if(this.socket.readyState===this.socket.CLOSING||this.socket.readyState===this.socket.CLOSED)return;let t=()=>{this.socket.dispatchEvent(j(this.socket,new MessageEvent(`message`,{data:e,origin:this.socket.url})))};this.socket.readyState===this.socket.CONNECTING?this.socket.addEventListener(`open`,()=>{t()},{once:!0}):t()})}close(e,t){this.socket[F](e,t)}};(class e extends _e{static{this.symbol=Symbol.for(`websocket-interceptor`)}constructor(){super(e.symbol)}checkEnvironment(){return an(`WebSocket`)}setup(){let e=this.logger.extend(`setup`),t=new Proxy(globalThis.WebSocket,{construct:(e,t,n)=>{let[r,i]=t,a=()=>Reflect.construct(e,t,n),o=new mn(r,i),s=new yn(o);return queueMicrotask(async()=>{try{let e=new vn(o,s,a),t=this.emitter.listenerCount(`connection`)>0;await tn(this.emitter,`connection`,{client:new un(o,s),server:e,info:{protocols:i}}),t?o[fn].resolve(!1):(o[fn].resolve(!0),e.connect(),e.addEventListener(`open`,()=>{o.dispatchEvent(j(o,new Event(`open`))),e.realWebSocket&&(o.protocol=e.realWebSocket.protocol)}))}catch(e){e instanceof Error&&(o.dispatchEvent(new Event(`error`)),o.readyState!==WebSocket.CLOSING&&o.readyState!==WebSocket.CLOSED&&o[F](1011,e.message,!1),console.error(e))}}),o}});e.info(`patching global WebSocket...`),this.subscriptions.push(nn.applyPatch(globalThis,`WebSocket`,()=>t)),e.info(`global WebSocket patched!`,globalThis.WebSocket.name)}});var bn=class extends t{url;protocols;constructor(e,t){super(e,{}),this.url=t.url,this.protocols=t.protocols}},xn=class extends t{url;protocols;error;constructor(e,t){super(e,{}),this.url=t.url,this.protocols=t.protocols,this.error=t.error}},Sn=class extends u{constructor(e){super(`ws`,{connection:e.connection})}getHandlers(e){return e.getHandlersByKind(`websocket`)}async resolve(e,t,n){let{connection:r}=this.data;if(this.events.emit(new bn(`connection`,{url:r.client.url,protocols:r.info.protocols})),e.length===0)return await Xt(this,t).then(()=>this.passthrough(),e=>this.errorWith(e)),!1;let i=!1;for(let t of e){let e=await t.run(r,{baseUrl:n?.baseUrl?.toString(),[Vt]:!1});if(!e)continue;i=!0;let a=n?.quiet?void 0:t.log(r);try{t[Bt](e)||a?.()}catch(e){throw this.events.emit(new xn(`unhandledException`,{error:e,url:r.client.url,protocols:r.info.protocols}))||(console.error(e),v.error(`Encountered an unhandled exception during the handler lookup for "%s". Please see the original error above.`,r.client.url)),e}}return i?!0:(await Xt(this,t).then(()=>this.passthrough(),e=>this.errorWith(e)),!1)}async getUnhandledMessage(){let{connection:e}=this.data;return`intercepted a WebSocket connection without a matching event handler:${`
|
|
14
|
-
|
|
15
|
-
\u2022 ${e.client.url}
|
|
16
|
-
|
|
17
|
-
`}If you still wish to intercept this unhandled connection, please create an event handler for it.
|
|
18
|
-
Read more: https://mswjs.io/docs/websocket`}},Cn=class extends f{#e;#t;constructor(e){super(),this.#e=new Oe({name:`interceptor-source`,interceptors:e.interceptors}),this.#t=new Map}enable(){this.#e.apply(),this.#e.on(`request`,this.#n.bind(this)).on(`response`,this.#r.bind(this)).on(`connection`,this.#i.bind(this))}disable(){super.disable(),this.#e.dispose(),this.#t.clear()}async#n({requestId:e,request:t,controller:n}){let r=new wn({id:e,request:t,controller:n});this.#t.set(e,r),await this.queue(r)}async#r({requestId:e,request:t,response:n,isMockedResponse:r}){let i=this.#t.get(e);this.#t.delete(e),i!=null&&queueMicrotask(()=>{i.events.emit(new qt(r?`response:mocked`:`response:bypass`,{requestId:e,request:t,response:n}))})}async#i(e){await this.queue(new Tn({connection:e}))}},wn=class extends Yt{#e;constructor(e){super({id:e.id,request:e.request}),this.#e=e.controller}passthrough(){bt(this.data.request)}respondWith(e){e&&this.#e.respondWith(e)}errorWith(e){if(e instanceof Response)return this.respondWith(e);throw e instanceof y&&this.#e.errorWith(e),e}},Tn=class extends Sn{constructor(e){super({connection:e.connection})}errorWith(e){if(e instanceof Error){let{client:t}=this.data.connection,n=new Event(`error`);Object.defineProperty(n,"cause",{enumerable:!0,configurable:!1,value:e}),t.socket.dispatchEvent(n)}}passthrough(){this.data.connection.server.connect()}};function En(e){return({frame:t,defaults:n})=>{let r=e();if(r!=null){if(typeof r==`function`){let e=t instanceof Yt?t.data.request:t instanceof Sn?new Request(t.data.connection.client.url,{headers:{connection:`upgrade`,upgrade:`websocket`}}):null;return l(e!=null,'Failed to coerce a network frame to a legacy `onUnhandledRequest` strategy: unknown frame protocol "%s"',t.protocol),r(e,{warning:n.warn,error:n.error})}return Xt(t,r)}}}function Dn(e){return{status:e.status,statusText:e.statusText,headers:Object.fromEntries(e.headers.entries())}}var On=/(%?)(%([sdijo]))/g;function kn(e,t){switch(t){case`s`:return e;case`d`:case`i`:return Number(e);case`j`:return JSON.stringify(e);case`o`:{if(typeof e==`string`)return e;let t=JSON.stringify(e);return t===`{}`||t===`[]`||/^\[object .+?\]$/.test(t)?e:t}}}function L(e,...t){if(t.length===0)return e;let n=0,r=e.replace(On,(e,r,i,a)=>{let o=t[n],s=kn(o,a);return r?e:(n++,s)});return n<t.length&&(r+=` ${t.slice(n).join(` `)}`),r=r.replace(/%{2,2}/g,`%`),r}var An=2;function jn(e){if(!e.stack)return;let t=e.stack.split(`
|
|
19
|
-
`);t.splice(1,An),e.stack=t.join(`
|
|
20
|
-
`)}var Mn=class extends Error{constructor(e,...t){super(e),this.message=e,this.name=`Invariant Violation`,this.message=L(e,...t),jn(this)}},R=(e,t,...n)=>{if(!e)throw new Mn(t,...n)};R.as=(e,t,n,...r)=>{if(!t){let t=r.length===0?n:L(n,...r),i;try{i=Reflect.construct(e,[t])}catch{i=e(t)}throw i}};function Nn(){if(typeof navigator<`u`&&navigator.product===`ReactNative`)return!0;if(typeof process<`u`){let e=process.type;return e===`renderer`||e===`worker`?!1:!!(process.versions&&process.versions.node)}return!1}var Pn=Object.defineProperty,Fn=(e,t)=>{for(var n in t)Pn(e,n,{get:t[n],enumerable:!0})},In={};Fn(In,{blue:()=>Rn,gray:()=>zn,green:()=>Vn,red:()=>Bn,yellow:()=>Ln});function Ln(e){return`\x1B[33m${e}\x1B[0m`}function Rn(e){return`\x1B[34m${e}\x1B[0m`}function zn(e){return`\x1B[90m${e}\x1B[0m`}function Bn(e){return`\x1B[31m${e}\x1B[0m`}function Vn(e){return`\x1B[32m${e}\x1B[0m`}var Hn=Nn(),Un=class{constructor(e){this.name=e,this.prefix=`[${this.name}]`;let t=Jn(`DEBUG`),n=Jn(`LOG_LEVEL`);t===`1`||t===`true`||t!==void 0&&this.name.startsWith(t)?(this.debug=B(n,`debug`)?z:this.debug,this.info=B(n,`info`)?z:this.info,this.success=B(n,`success`)?z:this.success,this.warning=B(n,`warning`)?z:this.warning,this.error=B(n,`error`)?z:this.error):(this.info=z,this.success=z,this.warning=z,this.error=z,this.only=z)}prefix;extend(e){return new Un(`${this.name}:${e}`)}debug(e,...t){this.logEntry({level:`debug`,message:zn(e),positionals:t,prefix:this.prefix,colors:{prefix:`gray`}})}info(e,...t){this.logEntry({level:`info`,message:e,positionals:t,prefix:this.prefix,colors:{prefix:`blue`}});let n=new Wn;return(e,...t)=>{n.measure(),this.logEntry({level:`info`,message:`${e} ${zn(`${n.deltaTime}ms`)}`,positionals:t,prefix:this.prefix,colors:{prefix:`blue`}})}}success(e,...t){this.logEntry({level:`info`,message:e,positionals:t,prefix:`\u2714 ${this.prefix}`,colors:{timestamp:`green`,prefix:`green`}})}warning(e,...t){this.logEntry({level:`warning`,message:e,positionals:t,prefix:`\u26A0 ${this.prefix}`,colors:{timestamp:`yellow`,prefix:`yellow`}})}error(e,...t){this.logEntry({level:`error`,message:e,positionals:t,prefix:`\u2716 ${this.prefix}`,colors:{timestamp:`red`,prefix:`red`}})}only(e){e()}createEntry(e,t){return{timestamp:new Date,level:e,message:t}}logEntry(e){let{level:t,message:n,prefix:r,colors:i,positionals:a=[]}=e,o=this.createEntry(t,n),s=i?.timestamp||`gray`,c=i?.prefix||`gray`,l={timestamp:In[s],prefix:In[c]};this.getWriter(t)([l.timestamp(this.formatTimestamp(o.timestamp))].concat(r==null?[]:l.prefix(r),Yn(n)).join(` `),...a.map(Yn))}formatTimestamp(e){return`${e.toLocaleTimeString(`en-GB`)}:${e.getMilliseconds()}`}getWriter(e){switch(e){case`debug`:case`success`:case`info`:return Gn;case`warning`:return Kn;case`error`:return qn}}},Wn=class{startTime;endTime;deltaTime;constructor(){this.startTime=performance.now()}measure(){this.endTime=performance.now();let e=this.endTime-this.startTime;this.deltaTime=e.toFixed(2)}},z=()=>void 0;function Gn(e,...t){if(Hn){process.stdout.write(L(e,...t)+`
|
|
21
|
-
`);return}console.log(e,...t)}function Kn(e,...t){if(Hn){process.stderr.write(L(e,...t)+`
|
|
22
|
-
`);return}console.warn(e,...t)}function qn(e,...t){if(Hn){process.stderr.write(L(e,...t)+`
|
|
23
|
-
`);return}console.error(e,...t)}function Jn(e){return Hn?{}[e]:globalThis[e]?.toString()}function B(e,t){return e!==void 0&&e!==t}function Yn(e){return e===void 0?`undefined`:e===null?`null`:typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):e.toString()}var Xn=class extends Error{constructor(e,t,n){super(`Possible EventEmitter memory leak detected. ${n} ${t.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`),this.emitter=e,this.type=t,this.count=n,this.name=`MaxListenersExceededWarning`}},Zn=class{static listenerCount(e,t){return e.listenerCount(t)}constructor(){this.events=new Map,this.maxListeners=Zn.defaultMaxListeners,this.hasWarnedAboutPotentialMemoryLeak=!1}_emitInternalEvent(e,t,n){this.emit(e,t,n)}_getListeners(e){return Array.prototype.concat.apply([],this.events.get(e))||[]}_removeListener(e,t){let n=e.indexOf(t);return n>-1&&e.splice(n,1),[]}_wrapOnceListener(e,t){let n=(...r)=>(this.removeListener(e,n),t.apply(this,r));return Object.defineProperty(n,"name",{value:t.name}),n}setMaxListeners(e){return this.maxListeners=e,this}getMaxListeners(){return this.maxListeners}eventNames(){return Array.from(this.events.keys())}emit(e,...t){let n=this._getListeners(e);return n.forEach(e=>{e.apply(this,t)}),n.length>0}addListener(e,t){this._emitInternalEvent(`newListener`,e,t);let n=this._getListeners(e).concat(t);if(this.events.set(e,n),this.maxListeners>0&&this.listenerCount(e)>this.maxListeners&&!this.hasWarnedAboutPotentialMemoryLeak){this.hasWarnedAboutPotentialMemoryLeak=!0;let t=new Xn(this,e,this.listenerCount(e));console.warn(t)}return this}on(e,t){return this.addListener(e,t)}once(e,t){return this.addListener(e,this._wrapOnceListener(e,t))}prependListener(e,t){let n=this._getListeners(e);if(n.length>0){let r=[t].concat(n);this.events.set(e,r)}else this.events.set(e,n.concat(t));return this}prependOnceListener(e,t){return this.prependListener(e,this._wrapOnceListener(e,t))}removeListener(e,t){let n=this._getListeners(e);return n.length>0&&(this._removeListener(n,t),this.events.set(e,n),this._emitInternalEvent(`removeListener`,e,t)),this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){return e?this.events.delete(e):this.events.clear(),this}listeners(e){return Array.from(this._getListeners(e))}listenerCount(e){return this._getListeners(e).length}rawListeners(e){return this.listeners(e)}},Qn=Zn;Qn.defaultMaxListeners=10;var $n=`x-interceptors-internal-request-id`;function er(e){return globalThis[e]||void 0}function tr(e,t){globalThis[e]=t}function nr(e){delete globalThis[e]}var V=(function(e){return e.INACTIVE=`INACTIVE`,e.APPLYING=`APPLYING`,e.APPLIED=`APPLIED`,e.DISPOSING=`DISPOSING`,e.DISPOSED=`DISPOSED`,e})({}),rr=class{constructor(e){this.symbol=e,this.readyState=V.INACTIVE,this.emitter=new Qn,this.subscriptions=[],this.logger=new Un(e.description),this.emitter.setMaxListeners(0),this.logger.info(`constructing the interceptor...`)}checkEnvironment(){return!0}apply(){let e=this.logger.extend(`apply`);if(e.info(`applying the interceptor...`),this.readyState===V.APPLIED){e.info(`intercepted already applied!`);return}if(!this.checkEnvironment()){e.info(`the interceptor cannot be applied in this environment!`);return}this.readyState=V.APPLYING;let t=this.getInstance();if(t){e.info(`found a running instance, reusing...`),this.on=(n,r)=>(e.info(`proxying the "%s" listener`,n),t.emitter.addListener(n,r),this.subscriptions.push(()=>{t.emitter.removeListener(n,r),e.info(`removed proxied "%s" listener!`,n)}),this),this.readyState=V.APPLIED;return}e.info(`no running instance found, setting up a new instance...`),this.setup(),this.setInstance(),this.readyState=V.APPLIED}setup(){}on(e,t){let n=this.logger.extend(`on`);return this.readyState===V.DISPOSING||this.readyState===V.DISPOSED?(n.info(`cannot listen to events, already disposed!`),this):(n.info(`adding "%s" event listener:`,e,t),this.emitter.on(e,t),this)}once(e,t){return this.emitter.once(e,t),this}off(e,t){return this.emitter.off(e,t),this}removeAllListeners(e){return this.emitter.removeAllListeners(e),this}dispose(){let e=this.logger.extend(`dispose`);if(this.readyState===V.DISPOSED){e.info(`cannot dispose, already disposed!`);return}if(e.info(`disposing the interceptor...`),this.readyState=V.DISPOSING,!this.getInstance()){e.info(`no interceptors running, skipping dispose...`);return}if(this.clearInstance(),e.info(`global symbol deleted:`,er(this.symbol)),this.subscriptions.length>0){e.info(`disposing of %d subscriptions...`,this.subscriptions.length);for(let e of this.subscriptions)e();this.subscriptions=[],e.info(`disposed of all subscriptions!`,this.subscriptions.length)}this.emitter.removeAllListeners(),e.info(`destroyed the listener!`),this.readyState=V.DISPOSED}getInstance(){let e=er(this.symbol);return this.logger.info(`retrieved global instance:`,e?.constructor?.name),e}setInstance(){tr(this.symbol,this),this.logger.info(`set global instance!`,this.symbol.description)}clearInstance(){nr(this.symbol),this.logger.info(`cleared global instance!`,this.symbol.description)}};function ir(){return Math.random().toString(16).slice(2)}function ar(e){if(typeof e==`string`)return ar(new URL(e,typeof location<`u`?location.href:void 0));if(e.protocol===`http:`?e.protocol=`ws:`:e.protocol===`https:`&&(e.protocol=`wss:`),e.protocol!==`ws:`&&e.protocol!==`wss:`)throw SyntaxError(`Failed to construct 'WebSocket': The URL's scheme must be either 'http', 'https', 'ws', or 'wss'. '${e.protocol}' is not allowed.`);if(e.hash!==``)throw SyntaxError(`Failed to construct 'WebSocket': The URL contains a fragment identifier ('${e.hash}'). Fragment identifiers are not allowed in WebSocket URLs.`);return e.href}async function or(e,t,...n){let r=e.listeners(t);if(r.length!==0)for(let t of r)await t.apply(e,n)}function sr(e){let t=Object.getOwnPropertyDescriptor(globalThis,e);return t===void 0||typeof t.get==`function`&&t.get()===void 0||t.get===void 0&&t.value==null?!1:t.set===void 0&&!t.configurable?(console.error(`[MSW] Failed to apply interceptor: the global \`${e}\` property is non-configurable. This is likely an issue with your environment. If you are using a framework, please open an issue about this in their repository.`),!1):!0}function cr(){let e=(t,n)=>{e.state=`pending`,e.resolve=n=>e.state===`pending`?(e.result=n,t(n instanceof Promise?n:Promise.resolve(n).then(t=>(e.state=`fulfilled`,t)))):void 0,e.reject=t=>{if(e.state===`pending`)return queueMicrotask(()=>{e.state=`rejected`}),n(e.rejectionReason=t)}};return e}var lr=class extends Promise{#e;resolve;reject;constructor(e=null){let t=cr();super((n,r)=>{t(n,r),e?.(t.resolve,t.reject)}),this.#e=t,this.resolve=this.#e.resolve,this.reject=this.#e.reject}get state(){return this.#e.state}get rejectionReason(){return this.#e.rejectionReason}then(e,t){return this.#t(super.then(e,t))}catch(e){return this.#t(super.catch(e))}finally(e){return this.#t(super.finally(e))}#t(e){return Object.defineProperties(e,{resolve:{configurable:!0,value:this.resolve},reject:{configurable:!0,value:this.reject}})}};function H(e,t){return Object.defineProperties(t,{target:{value:e,enumerable:!0,writable:!0},currentTarget:{value:e,enumerable:!0,writable:!0}}),t}var U=Symbol(`kCancelable`),W=Symbol(`kDefaultPrevented`),ur=class extends MessageEvent{constructor(e,t){super(e,t),this[U]=!!t.cancelable,this[W]=!1}get cancelable(){return this[U]}set cancelable(e){this[U]=e}get defaultPrevented(){return this[W]}set defaultPrevented(e){this[W]=e}preventDefault(){this.cancelable&&!this[W]&&(this[W]=!0)}},dr=class extends Event{constructor(e,t={}){super(e,t),this.code=t.code===void 0?0:t.code,this.reason=t.reason===void 0?``:t.reason,this.wasClean=t.wasClean===void 0?!1:t.wasClean}},fr=class extends dr{constructor(e,t={}){super(e,t),this[U]=!!t.cancelable,this[W]=!1}get cancelable(){return this[U]}set cancelable(e){this[U]=e}get defaultPrevented(){return this[W]}set defaultPrevented(e){this[W]=e}preventDefault(){this.cancelable&&!this[W]&&(this[W]=!0)}},pr=Symbol(`kEmitter`),mr=Symbol(`kBoundListener`),hr=class{constructor(e,t){this.socket=e,this.transport=t,this.id=ir(),this.url=new URL(e.url),this[pr]=new EventTarget,this.transport.addEventListener(`outgoing`,e=>{let t=H(this.socket,new ur(`message`,{data:e.data,origin:e.origin,cancelable:!0}));this[pr].dispatchEvent(t),t.defaultPrevented&&e.preventDefault()}),this.transport.addEventListener(`close`,e=>{this[pr].dispatchEvent(H(this.socket,new dr(`close`,e)))})}addEventListener(e,t,n){if(!Reflect.has(t,mr)){let e=t.bind(this.socket);Object.defineProperty(t,mr,{value:e,enumerable:!1,configurable:!1})}this[pr].addEventListener(e,Reflect.get(t,mr),n)}removeEventListener(e,t,n){this[pr].removeEventListener(e,Reflect.get(t,mr),n)}send(e){this.transport.send(e)}close(e,t){this.transport.close(e,t)}},gr=`InvalidAccessError: close code out of user configurable range`,_r=Symbol(`kPassthroughPromise`),vr=Symbol(`kOnSend`),yr=Symbol(`kClose`),br=class extends EventTarget{static{this.CONNECTING=0}static{this.OPEN=1}static{this.CLOSING=2}static{this.CLOSED=3}constructor(e,t){super(),this.CONNECTING=0,this.OPEN=1,this.CLOSING=2,this.CLOSED=3,this._onopen=null,this._onmessage=null,this._onerror=null,this._onclose=null,this.url=ar(e),this.protocol=``,this.extensions=``,this.binaryType=`blob`,this.readyState=this.CONNECTING,this.bufferedAmount=0,this[_r]=new lr,queueMicrotask(async()=>{await this[_r]||(this.protocol=typeof t==`string`?t:Array.isArray(t)&&t.length>0?t[0]:``,this.readyState===this.CONNECTING&&(this.readyState=this.OPEN,this.dispatchEvent(H(this,new Event(`open`)))))})}set onopen(e){this.removeEventListener(`open`,this._onopen),this._onopen=e,e!==null&&this.addEventListener(`open`,e)}get onopen(){return this._onopen}set onmessage(e){this.removeEventListener(`message`,this._onmessage),this._onmessage=e,e!==null&&this.addEventListener(`message`,e)}get onmessage(){return this._onmessage}set onerror(e){this.removeEventListener(`error`,this._onerror),this._onerror=e,e!==null&&this.addEventListener(`error`,e)}get onerror(){return this._onerror}set onclose(e){this.removeEventListener(`close`,this._onclose),this._onclose=e,e!==null&&this.addEventListener(`close`,e)}get onclose(){return this._onclose}send(e){if(this.readyState===this.CONNECTING)throw this.close(),new DOMException(`InvalidStateError`);this.readyState===this.CLOSING||this.readyState===this.CLOSED||(this.bufferedAmount+=xr(e),queueMicrotask(()=>{this.bufferedAmount=0,this[vr]?.(e)}))}close(e=1e3,t){R(e,gr),R(e===1e3||e>=3e3&&e<=4999,gr),this[yr](e,t)}[yr](e=1e3,t,n=!0){this.readyState===this.CLOSING||this.readyState===this.CLOSED||(this.readyState=this.CLOSING,queueMicrotask(()=>{this.readyState=this.CLOSED,this.dispatchEvent(H(this,new dr(`close`,{code:e,reason:t,wasClean:n}))),this._onopen=null,this._onmessage=null,this._onerror=null,this._onclose=null}))}addEventListener(e,t,n){return super.addEventListener(e,t,n)}removeEventListener(e,t,n){return super.removeEventListener(e,t,n)}};function xr(e){return typeof e==`string`?e.length:e instanceof Blob?e.size:e.byteLength}var G=Symbol(`kEmitter`),Sr=Symbol(`kBoundListener`),Cr=Symbol(`kSend`),wr=class{constructor(e,t,n){this.client=e,this.transport=t,this.createConnection=n,this[G]=new EventTarget,this.mockCloseController=new AbortController,this.realCloseController=new AbortController,this.transport.addEventListener(`outgoing`,e=>{this.realWebSocket!==void 0&&queueMicrotask(()=>{e.defaultPrevented||this[Cr](e.data)})}),this.transport.addEventListener(`incoming`,this.handleIncomingMessage.bind(this))}get socket(){return R(this.realWebSocket,'Cannot access "socket" on the original WebSocket server object: the connection is not open. Did you forget to call `server.connect()`?'),this.realWebSocket}connect(){R(!this.realWebSocket||this.realWebSocket.readyState!==WebSocket.OPEN,`Failed to call "connect()" on the original WebSocket instance: the connection already open`);let e=this.createConnection();e.binaryType=this.client.binaryType,e.addEventListener(`open`,e=>{this[G].dispatchEvent(H(this.realWebSocket,new Event(`open`,e)))},{once:!0}),e.addEventListener(`message`,e=>{this.transport.dispatchEvent(H(this.realWebSocket,new MessageEvent(`incoming`,{data:e.data,origin:e.origin})))}),this.client.addEventListener(`close`,e=>{this.handleMockClose(e)},{signal:this.mockCloseController.signal}),e.addEventListener(`close`,e=>{this.handleRealClose(e)},{signal:this.realCloseController.signal}),e.addEventListener(`error`,()=>{let t=H(e,new Event(`error`,{cancelable:!0}));this[G].dispatchEvent(t),t.defaultPrevented||this.client.dispatchEvent(H(this.client,new Event(`error`)))}),this.realWebSocket=e}addEventListener(e,t,n){if(!Reflect.has(t,Sr)){let e=t.bind(this.client);Object.defineProperty(t,Sr,{value:e,enumerable:!1})}this[G].addEventListener(e,Reflect.get(t,Sr),n)}removeEventListener(e,t,n){this[G].removeEventListener(e,Reflect.get(t,Sr),n)}send(e){this[Cr](e)}[Cr](e){let{realWebSocket:t}=this;if(R(t,`Failed to call "server.send()" for "%s": the connection is not open. Did you forget to call "server.connect()"?`,this.client.url),!(t.readyState===WebSocket.CLOSING||t.readyState===WebSocket.CLOSED)){if(t.readyState===WebSocket.CONNECTING){t.addEventListener(`open`,()=>{t.send(e)},{once:!0});return}t.send(e)}}close(){let{realWebSocket:e}=this;R(e,`Failed to close server connection for "%s": the connection is not open. Did you forget to call "server.connect()"?`,this.client.url),this.realCloseController.abort(),!(e.readyState===WebSocket.CLOSING||e.readyState===WebSocket.CLOSED)&&(e.close(),queueMicrotask(()=>{this[G].dispatchEvent(H(this.realWebSocket,new fr(`close`,{code:1e3,cancelable:!0})))}))}handleIncomingMessage(e){let t=H(e.target,new ur(`message`,{data:e.data,origin:e.origin,cancelable:!0}));this[G].dispatchEvent(t),t.defaultPrevented||this.client.dispatchEvent(H(this.client,new MessageEvent(`message`,{data:e.data,origin:e.origin})))}handleMockClose(e){this.realWebSocket&&this.realWebSocket.close()}handleRealClose(e){this.mockCloseController.abort();let t=H(this.realWebSocket,new fr(`close`,{code:e.code,reason:e.reason,wasClean:e.wasClean,cancelable:!0}));this[G].dispatchEvent(t),t.defaultPrevented||this.client[yr](e.code,e.reason)}},Tr=class extends EventTarget{constructor(e){super(),this.socket=e,this.socket.addEventListener(`close`,e=>{this.dispatchEvent(H(this.socket,new dr(`close`,e)))}),this.socket[vr]=e=>{this.dispatchEvent(H(this.socket,new ur(`outgoing`,{data:e,origin:this.socket.url,cancelable:!0})))}}addEventListener(e,t,n){return super.addEventListener(e,t,n)}dispatchEvent(e){return super.dispatchEvent(e)}send(e){queueMicrotask(()=>{if(this.socket.readyState===this.socket.CLOSING||this.socket.readyState===this.socket.CLOSED)return;let t=()=>{this.socket.dispatchEvent(H(this.socket,new MessageEvent(`message`,{data:e,origin:this.socket.url})))};this.socket.readyState===this.socket.CONNECTING?this.socket.addEventListener(`open`,()=>{t()},{once:!0}):t()})}close(e,t){this.socket[yr](e,t)}},Er=class e extends rr{static{this.symbol=Symbol(`websocket`)}constructor(){super(e.symbol)}checkEnvironment(){return sr(`WebSocket`)}setup(){let e=Object.getOwnPropertyDescriptor(globalThis,`WebSocket`),t=new Proxy(globalThis.WebSocket,{construct:(e,t,n)=>{let[r,i]=t,a=()=>Reflect.construct(e,t,n),o=new br(r,i),s=new Tr(o);return queueMicrotask(async()=>{try{let e=new wr(o,s,a),t=this.emitter.listenerCount(`connection`)>0;await or(this.emitter,`connection`,{client:new hr(o,s),server:e,info:{protocols:i}}),t?o[_r].resolve(!1):(o[_r].resolve(!0),e.connect(),e.addEventListener(`open`,()=>{o.dispatchEvent(H(o,new Event(`open`))),e.realWebSocket&&(o.protocol=e.realWebSocket.protocol)}))}catch(e){e instanceof Error&&(o.dispatchEvent(new Event(`error`)),o.readyState!==WebSocket.CLOSING&&o.readyState!==WebSocket.CLOSED&&o[yr](1011,e.message,!1),console.error(e))}}),o}});Object.defineProperty(globalThis,"WebSocket",{value:t,configurable:!0}),this.subscriptions.push(()=>{Object.defineProperty(globalThis,"WebSocket",e)})}};function Dr(){return typeof navigator<`u`&&`serviceWorker`in navigator&&typeof location<`u`&&location.protocol!==`file:`}function Or(){try{let e=new ReadableStream({start:e=>e.close()});return new MessageChannel().port1.postMessage(e,[e]),!0}catch{return!1}}function kr(){let e=((t,n)=>{e.state=`pending`,e.resolve=n=>e.state===`pending`?(e.result=n,t(n instanceof Promise?n:Promise.resolve(n).then(t=>(e.state=`fulfilled`,t)))):void 0,e.reject=t=>{if(e.state===`pending`)return queueMicrotask(()=>{e.state=`rejected`}),n(e.rejectionReason=t)}});return e}var Ar=class extends Promise{#e;resolve;reject;constructor(e=null){let t=kr();super((n,r)=>{t(n,r),e?.(t.resolve,t.reject)}),this.#e=t,this.resolve=this.#e.resolve,this.reject=this.#e.reject}get state(){return this.#e.state}get rejectionReason(){return this.#e.rejectionReason}then(e,t){return this.#t(super.then(e,t))}catch(e){return this.#t(super.catch(e))}finally(e){return this.#t(super.finally(e))}#t(e){return Object.defineProperties(e,{resolve:{configurable:!0,value:this.resolve},reject:{configurable:!0,value:this.reject}})}},K=Symbol(`isPatchedModule`),jr=class e extends Error{constructor(t){super(t),this.name=`InterceptorError`,Object.setPrototypeOf(this,e.prototype)}},q=class e{static{this.PENDING=0}static{this.PASSTHROUGH=1}static{this.RESPONSE=2}static{this.ERROR=3}constructor(t,n){this.request=t,this.source=n,this.readyState=e.PENDING,this.handled=new lr}get#e(){return this.handled}async passthrough(){R.as(jr,this.readyState===e.PENDING,`Failed to passthrough the "%s %s" request: the request has already been handled`,this.request.method,this.request.url),this.readyState=e.PASSTHROUGH,await this.source.passthrough(),this.#e.resolve()}respondWith(t){R.as(jr,this.readyState===e.PENDING,`Failed to respond to the "%s %s" request with "%d %s": the request has already been handled (%d)`,this.request.method,this.request.url,t.status,t.statusText||`OK`,this.readyState),this.readyState=e.RESPONSE,this.#e.resolve(),this.source.respondWith(t)}errorWith(t){R.as(jr,this.readyState===e.PENDING,`Failed to error the "%s %s" request with "%s": the request has already been handled (%d)`,this.request.method,this.request.url,t?.toString(),this.readyState),this.readyState=e.ERROR,this.source.errorWith(t),this.#e.resolve()}};function Mr(e){try{return new URL(e),!0}catch{return!1}}function Nr(e,t){let n=Object.getOwnPropertySymbols(t).find(t=>t.description===e);if(n)return Reflect.get(t,n)}var J=class e extends Response{static{this.STATUS_CODES_WITHOUT_BODY=[101,103,204,205,304]}static{this.STATUS_CODES_WITH_REDIRECT=[301,302,303,307,308]}static isConfigurableStatusCode(e){return e>=200&&e<=599}static isRedirectResponse(t){return e.STATUS_CODES_WITH_REDIRECT.includes(t)}static isResponseWithBody(t){return!e.STATUS_CODES_WITHOUT_BODY.includes(t)}static setUrl(e,t){if(!e||e===`about:`||!Mr(e))return;let n=Nr(`state`,t);n?n.urlList.push(new URL(e)):Object.defineProperty(t,"url",{value:e,enumerable:!0,configurable:!0,writable:!1})}static parseRawHeaders(e){let t=new Headers;for(let n=0;n<e.length;n+=2)t.append(e[n],e[n+1]);return t}constructor(t,n={}){let r=n.status??200,i=e.isConfigurableStatusCode(r)?r:200,a=e.isResponseWithBody(r)?t:null;if(super(a,{status:i,statusText:n.statusText,headers:n.headers}),r!==i){let e=Nr(`state`,this);e?e.status=r:Object.defineProperty(this,"status",{value:r,enumerable:!0,configurable:!0,writable:!1})}e.setUrl(n.url,this)}},Pr=Symbol(`kRawRequest`);function Fr(e,t){Reflect.set(e,Pr,t)}var Ir=new TextEncoder;function Lr(e){return Ir.encode(e)}function Rr(e,t){return new TextDecoder(t).decode(e)}function zr(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}async function Br(e){try{return[null,await e().catch(e=>{throw e})]}catch(e){return[e,null]}}function Vr(e){return new URL(e,location.href).href}function Hr(e,t,n){return[e.active,e.installing,e.waiting].filter(e=>e!=null).find(e=>n(e.scriptURL,t))||null}var Ur=async(e,t={},n)=>{let r=Vr(e),i=await navigator.serviceWorker.getRegistrations().then(e=>e.filter(e=>Hr(e,r,n)));!navigator.serviceWorker.controller&&i.length>0&&location.reload();let[a]=i;if(a)return a.update(),[Hr(a,r,n),a];let[o,s]=await Br(async()=>{let i=await navigator.serviceWorker.register(e,t);return[Hr(i,r,n),i]});if(o){if(o.message.includes(`(404)`)){let e=new URL(t?.scope||`/`,location.href);throw Error(v.formatMessage(`Failed to register a Service Worker for scope ('${e.href}') with script ('${r}'): Service Worker script does not exist at the given path.
|
|
24
|
-
|
|
25
|
-
Did you forget to run "npx msw init <PUBLIC_DIR>"?
|
|
26
|
-
|
|
27
|
-
Learn more about creating the Service Worker script: https://mswjs.io/docs/cli/init`))}throw Error(v.formatMessage(`Failed to register the Service Worker:
|
|
28
|
-
|
|
29
|
-
%s`,o.message))}return s},Wr=class{#e;#t;constructor(){this.#e=[],this.#t=new Map}get[Symbol.iterator](){return this.#e[Symbol.iterator].bind(this.#e)}entries(){return this.#t.entries()}get(e){return this.#t.get(e)||[]}getAll(){return this.#e.map(([,e])=>e)}append(e,t){this.#e.push([e,t]),this.#n(e,e=>e.push(t))}prepend(e,t){this.#e.unshift([e,t]),this.#n(e,e=>e.unshift(t))}delete(e,t){if(this.size===0)return;this.#e=this.#e.filter(e=>e[1]!==t);let n=this.#t.get(e);if(n){let e=n.indexOf(t);e!==-1&&n.splice(e,1)}}deleteAll(e){this.size!==0&&(this.#e=this.#e.filter(t=>t[0]!==e),this.#t.delete(e))}get size(){return this.#e.length}clear(){this.size!==0&&(this.#e.length=0,this.#t.clear())}#n(e,t){t(this.#t.get(e)||this.#t.set(e,[]).get(e))}},Gr=Symbol(`kDefaultPrevented`),Y=Symbol(`kPropagationStopped`),Kr=Symbol(`kImmediatePropagationStopped`),qr=class extends MessageEvent{[Gr];[Y];[Kr];constructor(...e){super(e[0],e[1]),this[Gr]=!1}get defaultPrevented(){return this[Gr]}preventDefault(){super.preventDefault(),this[Gr]=!0}stopImmediatePropagation(){super.stopImmediatePropagation(),this[Kr]=!0}},Jr=class{#e;#t;#n;#r;#i;hooks;constructor(){this.#e=new Wr,this.#t=new WeakMap,this.#n=new WeakSet,this.#r=new Wr,this.#i=new WeakMap,this.hooks={on:(e,t,n)=>{if(n?.once){let n=t,r=((...t)=>(this.#r.delete(e,r),n(...t)));t=r}this.#r.append(e,t),n&&this.#i.set(t,n),n?.signal&&n.signal.addEventListener(`abort`,()=>{this.#r.delete(e,t)},{once:!0})},removeListener:(e,t)=>{this.#r.delete(e,t)}}}on(e,t,n){return this.#a(e,t,n),this}once(e,t,n){return this.on(e,t,{...n||{},once:!0})}earlyOn(e,t,n){return this.#a(e,t,n,`prepend`),this}earlyOnce(e,t,n){return this.earlyOn(e,t,{...n||{},once:!0})}emit(e){if(this.#e.size===0)return!1;let t=this.listenerCount(e.type)>0,n=this.#o(e);for(let t of this.#c(e.type)){if(n.event[Y]!=null&&n.event[Y]!==this)return n.revoke(),!1;if(n.event[Kr])break;this.#s(n.event,t)}return n.revoke(),t}async emitAsPromise(e){if(this.#e.size===0)return[];let t=[],n=this.#o(e);for(let r of this.#c(e.type)){if(n.event[Y]!=null&&n.event[Y]!==this)return n.revoke(),[];if(n.event[Kr])break;let e=await Promise.resolve(this.#s(n.event,r));this.#l(r)||t.push(e)}return n.revoke(),Promise.allSettled(t).then(e=>e.map(e=>e.status===`fulfilled`?e.value:e.reason))}*emitAsGenerator(e){if(this.#e.size===0)return;let t=this.#o(e);for(let n of this.#c(e.type)){if(t.event[Y]!=null&&t.event[Y]!==this){t.revoke();return}if(t.event[Kr])break;let e=this.#s(t.event,n);this.#l(n)||(yield e)}t.revoke()}removeListener(e,t){let n=this.#t.get(t);this.#e.delete(e,t);for(let r of this.#r.get(`removeListener`))r(e,t,n)}removeAllListeners(e){if(e==null){this.#e.clear();for(let[e,t]of this.#r)this.#i.get(t)?.persist||this.#r.delete(e,t);return}this.#e.deleteAll(e)}listeners(e){return e==null?this.#e.getAll():this.#e.get(e)}listenerCount(e){return e==null?this.#e.size:this.listeners(e).length}#a(e,t,n,r=`append`){for(let r of this.#r.get(`newListener`))r(e,t,n);e===`*`&&this.#n.add(t),r===`prepend`?this.#e.prepend(e,t):this.#e.append(e,t),n&&(this.#t.set(t,n),n.signal&&n.signal.addEventListener(`abort`,()=>{this.removeListener(e,t)},{once:!0}))}#o(e){let{stopPropagation:t}=e;return e.stopPropagation=()=>{e[Y]=this,t.call(e)},{event:e,revoke(){e.stopPropagation=t}}}#s(e,t){for(let t of this.#r.get(`beforeEmit`))if(t(e)===!1)return;let n=t.call(this,e),r=this.#t.get(t);if(r?.once){let n=this.#l(t)?`*`:e.type;this.#e.delete(n,t);for(let e of this.#r.get(`removeListener`))e(n,t,r)}return n}*#c(e){for(let[t,n]of this.#e)(t===`*`||t===e)&&(yield n)}#l(e){return this.#n.has(e)}},Yr=Dr(),Xr=class extends qr{#e;constructor(e){let t=e.data.type,n=e.data.payload;super(t,{data:n}),this.#e=e}get ports(){return this.#e.ports}postMessage(e,...t){this.#e.ports[0].postMessage({type:e,data:t[0]},{transfer:t[1]})}},Zr=class extends Jr{#e;#t;constructor(e){super(),R(Yr,`Failed to open a WorkerChannel: Service Worker is not supported in this environment.`),this.#e=e.getWorker,this.#t=new AbortController,navigator.serviceWorker.addEventListener(`message`,async e=>{let t=await this.#e();e.source!=null&&e.source!==t||e.data&&zt(e.data)&&`type`in e.data&&this.emit(new Xr(e))},{signal:this.#t.signal})}postMessage(e){R(Yr,`Failed to post message on a WorkerChannel: the Service Worker API is unavailable in this environment. This is likely an issue with MSW. Please report it on GitHub: https://github.com/mswjs/msw/issues`),this.#e().then(t=>{t.postMessage(e)})}terminate(){this.#t.abort(),this.removeAllListeners()}};function Qr(e){if(![`HEAD`,`GET`].includes(e.method))return e.body}function $r(e){return new Request(e.url,{...e,body:Qr(e)})}function ei(e){location.href.startsWith(e.scope)||v.warn(`Cannot intercept requests on this page because it's outside of the worker's scope ("${e.scope}"). If you wish to mock API requests on this page, you must resolve this scope issue.
|
|
30
|
-
|
|
31
|
-
- (Recommended) Register the worker at the root level ("/") of your application.
|
|
32
|
-
- Set the "Service-Worker-Allowed" response header to allow out-of-scope workers.`)}function ti(e,t){return e.findWorker!==t.findWorker||e.serviceWorker.url!==t.serviceWorker.url||JSON.stringify(e.serviceWorker.options)!==JSON.stringify(t.serviceWorker.options)}var ni=class e extends f{static#e;static async from(t){return e.#e==null?e.#e=new e(t):ti(e.#e.#t,t)&&(await e.#e.terminate(),e.#e=new e(t)),e.#e}#t;#n;#r;#i;#a;#o;#s;workerPromise;constructor(e){super(),R(Dr(),`Failed to use Service Worker as the network source: the Service Worker API is not supported in this environment`),this.#t=e,this.#n=new Map,this.workerPromise=new Ar,this.#r=new Zr({getWorker:()=>this.workerPromise.then(([e])=>e)})}async enable(){if(this.workerPromise.state===`fulfilled`&&this.#s===void 0)return v.warn(`Found a redundant "worker.start()" call. Note that starting the worker while mocking is already enabled will have no effect. Consider removing this "worker.start()" call.`),this.workerPromise.then(([,e])=>e);this.#s=void 0,this.#r.removeAllListeners(),this.#n.clear(),this.#i=new AbortController;let[e,t]=await this.#c();if(e.state!==`activated`){let t=new AbortController,n=new Ar;n.then(()=>t.abort()),e.addEventListener(`statechange`,()=>{e.state===`activated`&&n.resolve()},{signal:t.signal}),await n}this.#r.postMessage(`MOCK_ACTIVATE`);let n=new Ar;return this.#a=n,this.#r.once(`MOCKING_ENABLED`,e=>{n.resolve(e.data.client)}),await n,this.#t.quiet||this.#p(),t}disable(){if(this.#s!==void 0){v.warn(`Found a redundant "worker.stop()" call. Notice that stopping the worker after it has already been stopped has no effect. Consider removing this "worker.stop()" call.`);return}this.#s=Date.now(),this.#i?.abort(),this.#i=void 0,this.#r.postMessage(`CLIENT_CLOSED`),this.#t.quiet||this.#m()}async terminate(){if(this.#o!=null&&(clearInterval(this.#o),this.#o=void 0),this.#n.clear(),this.#r.terminate(),this.#i?.abort(),this.#i=void 0,this.workerPromise.state===`fulfilled`){let[,e]=await this.workerPromise;await e.unregister()}e.#e===this&&(e.#e=void 0)}async#c(){this.#o&&clearInterval(this.#o);let e=this.#t.serviceWorker.url,[t,n]=await Ur(e,this.#t.serviceWorker.options,this.#t.findWorker||this.#d);if(t==null){let t=this.#t?.findWorker?v.formatMessage(`Failed to locate the Service Worker registration using a custom "findWorker" predicate.
|
|
33
|
-
|
|
34
|
-
Please ensure that the custom predicate properly locates the Service Worker registration at "%s".
|
|
35
|
-
More details: https://mswjs.io/docs/api/setup-worker/start#findworker
|
|
36
|
-
`,e):v.formatMessage(`Failed to locate the Service Worker registration.
|
|
37
|
-
|
|
38
|
-
This most likely means that the worker script URL "%s" cannot resolve against the actual public hostname (%s). This may happen if your application runs behind a proxy, or has a dynamic hostname.
|
|
39
|
-
|
|
40
|
-
Please consider using a custom "serviceWorker.url" option to point to the actual worker script location, or a custom "findWorker" option to resolve the Service Worker registration manually. More details: https://mswjs.io/docs/api/setup-worker/start`,e,location.host);throw Error(t)}return this.workerPromise.state===`pending`?this.workerPromise.resolve([t,n]):this.workerPromise=new Ar(e=>{e([t,n])}),this.#r.on(`REQUEST`,this.#l.bind(this)),this.#r.on(`RESPONSE`,this.#u.bind(this)),window.addEventListener(`beforeunload`,()=>{t.state!==`redundant`&&this.#r.postMessage(`CLIENT_CLOSED`),clearInterval(this.#o),window.postMessage({type:`msw/worker:stop`})},{signal:this.#i?.signal}),await this.#f().catch(e=>{v.error(`Error while checking the worker script integrity. Please report this on GitHub (https://github.com/mswjs/msw/issues) and include the original error below.`),console.error(e)}),this.#o=window.setInterval(()=>{this.#r.postMessage(`KEEPALIVE_REQUEST`)},5e3),this.#t.quiet||ei(n),[t,n]}async#l(e){if(this.#s&&e.data.interceptedAt>this.#s)return e.postMessage(`PASSTHROUGH`);let t=$r(e.data);ft.cache.set(t,t.clone());let n=new ri({event:e,request:t});this.#n.set(e.data.id,n),await this.queue(n)}async#u(e){let{request:t,response:n,isMockedResponse:r}=e.data;if(n.type?.includes(`opaque`)){this.#n.delete(t.id);return}let i=this.#n.get(t.id);if(this.#n.delete(t.id),i==null)return;let a=$r(t),o=n.status===0?Response.error():new J(J.isResponseWithBody(n.status)?n.body:null,{...n,url:t.url});i.events.emit(new qt(r?`response:mocked`:`response:bypass`,{requestId:i.data.id,request:a,response:o,isMockedResponse:r}))}#d=(e,t)=>e===t;async#f(){let e=new Ar;return this.#r.postMessage(`INTEGRITY_CHECK_REQUEST`),this.#r.once(`INTEGRITY_CHECK_RESPONSE`,t=>{let{checksum:n,packageVersion:r}=t.data;n!==`4db4a41e972cec1b64cc569c66952d82`&&v.warn(`The currently registered Service Worker has been generated by a different version of MSW (${r}) and may not be fully compatible with the installed version.
|
|
41
|
-
|
|
42
|
-
It's recommended you update your worker script by running this command:
|
|
43
|
-
|
|
44
|
-
\u2022 npx msw init <PUBLIC_DIR>
|
|
45
|
-
|
|
46
|
-
You can also automate this process and make the worker script update automatically upon the library installations. Read more: https://mswjs.io/docs/cli/init.`),e.resolve()}),e}async#p(){if(this.workerPromise.state===`rejected`)return;R(this.#a!=null,`[ServiceWorkerSource] Failed to print a start message: client confirmation not received`);let e=await this.#a,[t,n]=await this.workerPromise;console.groupCollapsed(`%c${v.formatMessage(`Mocking enabled.`)}`,`color:orangered;font-weight:bold;`),console.log(`%cDocumentation: %chttps://mswjs.io/docs`,`font-weight:bold`,`font-weight:normal`),console.log(`Found an issue? https://github.com/mswjs/msw/issues`),console.log(`Worker script URL:`,t.scriptURL),console.log(`Worker scope:`,n.scope),e&&console.log(`Client ID: %s (%s)`,e.id,e.frameType),console.groupEnd()}#m(){console.log(`%c${v.formatMessage(`Mocking disabled.`)}`,`color:orangered;font-weight:bold;`)}},ri=class extends Yt{#e;constructor(e){super({request:e.request}),this.#e=e.event}passthrough(){this.#e.postMessage(`PASSTHROUGH`)}respondWith(e){e&&this.#t(e)}errorWith(e){if(e instanceof Response)return this.respondWith(e);v.warn(`Uncaught exception in the request handler for "%s %s". This exception has been gracefully handled as a 500 response, however, it's strongly recommended to resolve this error, as it indicates a mistake in your code. If you wish to mock an error response, please see this guide: https://mswjs.io/docs/http/mocking-responses/error-responses`,this.data.request.method,this.data.request.url);let t=e instanceof Error?e:Error(e?.toString()||`Request failure`);this.respondWith(dt.json({name:t.name,message:t.message,stack:t.stack},{status:500,statusText:`Request Handler Error`}))}async#t(e){let t,n,r=Dn(e);Or()?(t=e.body,n=e.body==null?void 0:[e.body]):t=e.body==null?null:await e.clone().arrayBuffer(),this.#e.postMessage(`MOCK_RESPONSE`,{...r,body:t},n)}},ii=async e=>{try{return{error:null,data:await e().catch(e=>{throw e})}}catch(e){return{error:e,data:null}}};function ai(e,t=!1){return t?Object.prototype.toString.call(e).startsWith(`[object `):Object.prototype.toString.call(e)===`[object Object]`}function oi(e,t){try{return e[t],!0}catch{return!1}}function si(e){return new Response(JSON.stringify(e instanceof Error?{name:e.name,message:e.message,stack:e.stack}:e),{status:500,statusText:`Unhandled Exception`,headers:{"Content-Type":`application/json`}})}function ci(e){return e!=null&&e instanceof Response&&oi(e,`type`)&&e.type===`error`}function li(e){return ai(e,!0)&&oi(e,`status`)&&oi(e,`statusText`)&&oi(e,`bodyUsed`)}function ui(e){return e==null||!(e instanceof Error)?!1:`code`in e&&`errno`in e}async function di(e){let t=async t=>t instanceof Error?(await e.controller.errorWith(t),!0):ci(t)||li(t)?(await e.controller.respondWith(t),!0):ai(t)?(await e.controller.errorWith(t),!0):!1,n=async n=>{if(n instanceof jr)throw i.error;return ui(n)?(await e.controller.errorWith(n),!0):n instanceof Response?await t(n):!1},r=new lr;if(e.request.signal){if(e.request.signal.aborted){await e.controller.errorWith(e.request.signal.reason);return}e.request.signal.addEventListener(`abort`,()=>{r.reject(e.request.signal.reason)},{once:!0})}let i=await ii(async()=>{let t=or(e.emitter,`request`,{requestId:e.requestId,request:e.request,controller:e.controller});await Promise.race([r,t,e.controller.handled])});if(r.state===`rejected`){await e.controller.errorWith(r.rejectionReason);return}if(i.error){if(await n(i.error))return;if(e.emitter.listenerCount(`unhandledException`)>0){let n=new q(e.request,{passthrough(){},async respondWith(e){await t(e)},async errorWith(t){await e.controller.errorWith(t)}});if(await or(e.emitter,`unhandledException`,{error:i.error,request:e.request,requestId:e.requestId,controller:n}),n.readyState!==q.PENDING)return}await e.controller.respondWith(si(i.error));return}return e.controller.readyState===q.PENDING?await e.controller.passthrough():e.controller.handled}function X(e){return Object.assign(TypeError(`Failed to fetch`),{cause:e})}var fi=[`content-encoding`,`content-language`,`content-location`,`content-type`,`content-length`],pi=Symbol(`kRedirectCount`);async function mi(e,t){if(t.status!==303&&e.body!=null)return Promise.reject(X());let n=new URL(e.url),r;try{r=new URL(t.headers.get(`location`),e.url)}catch(e){return Promise.reject(X(e))}if(!(r.protocol===`http:`||r.protocol===`https:`))return Promise.reject(X(`URL scheme must be a HTTP(S) scheme`));if(Reflect.get(e,pi)>20)return Promise.reject(X(`redirect count exceeded`));if(Object.defineProperty(e,pi,{value:(Reflect.get(e,pi)||0)+1}),e.mode===`cors`&&(r.username||r.password)&&!hi(n,r))return Promise.reject(X(`cross origin not allowed for request mode "cors"`));let i={};([301,302].includes(t.status)&&e.method===`POST`||t.status===303&&![`HEAD`,`GET`].includes(e.method))&&(i.method=`GET`,i.body=null,fi.forEach(t=>{e.headers.delete(t)})),hi(n,r)||(e.headers.delete(`authorization`),e.headers.delete(`proxy-authorization`),e.headers.delete(`cookie`),e.headers.delete(`host`)),i.headers=e.headers;let a=await fetch(new Request(r,i));return Object.defineProperty(a,"redirected",{value:!0,configurable:!0}),a}function hi(e,t){return e.origin===t.origin&&e.origin===`null`||e.protocol===t.protocol&&e.hostname===t.hostname&&e.port===t.port}var gi=class extends TransformStream{constructor(){console.warn(`[Interceptors]: Brotli decompression of response streams is not supported in the browser`),super({transform(e,t){t.enqueue(e)}})}},_i=class extends TransformStream{constructor(e,...t){super({},...t);let n=[super.readable,...e].reduce((e,t)=>e.pipeThrough(t));Object.defineProperty(this,"readable",{get(){return n}})}};function vi(e){return e.toLowerCase().split(`,`).map(e=>e.trim())}function yi(e){if(e===``)return null;let t=vi(e);return t.length===0?null:new _i(t.reduceRight((e,t)=>t===`gzip`||t===`x-gzip`?e.concat(new DecompressionStream(`gzip`)):t===`deflate`?e.concat(new DecompressionStream(`deflate`)):t===`br`?e.concat(new gi):(e.length=0,e),[]))}function bi(e){if(e.body===null)return null;let t=yi(e.headers.get(`content-encoding`)||``);return t?(e.body.pipeTo(t.writable),t.readable):null}var xi=class e extends rr{static{this.symbol=Symbol(`fetch`)}constructor(){super(e.symbol)}checkEnvironment(){return sr(`fetch`)}async setup(){let e=globalThis.fetch;R(!e[K],`Failed to patch the "fetch" module: already patched.`),globalThis.fetch=async(t,n)=>{let r=ir(),i=typeof t==`string`&&typeof location<`u`&&!Mr(t)?new URL(t,location.href):t,a=new Request(i,n);t instanceof Request&&Fr(a,t);let o=new lr,s=new q(a,{passthrough:async()=>{this.logger.info(`request has not been handled, passthrough...`);let t=a.clone(),{error:n,data:i}=await ii(()=>e(a));if(n)return o.reject(n);if(this.logger.info(`original fetch performed`,i),this.emitter.listenerCount(`response`)>0){this.logger.info(`emitting the "response" event...`);let e=i.clone();await or(this.emitter,`response`,{response:e,isMockedResponse:!1,request:t,requestId:r})}o.resolve(i)},respondWith:async e=>{if(ci(e)){this.logger.info(`request has errored!`,{response:e}),o.reject(X(e));return}this.logger.info(`received mocked response!`,{rawResponse:e});let t=bi(e),n=t===null?e:new J(t,e);if(J.setUrl(a.url,n),J.isRedirectResponse(n.status)){if(a.redirect===`error`){o.reject(X(`unexpected redirect`));return}if(a.redirect===`follow`){mi(a,n).then(e=>{o.resolve(e)},e=>{o.reject(e)});return}}this.emitter.listenerCount(`response`)>0&&(this.logger.info(`emitting the "response" event...`),await or(this.emitter,`response`,{response:n.clone(),isMockedResponse:!0,request:a,requestId:r})),o.resolve(n)},errorWith:e=>{this.logger.info(`request has been aborted!`,{reason:e}),o.reject(e)}});return this.logger.info(`[%s] %s`,a.method,a.url),this.logger.info(`awaiting for the mocked response...`),this.logger.info(`emitting the "request" event for %s listener(s)...`,this.emitter.listenerCount(`request`)),await di({request:a,requestId:r,emitter:this.emitter,controller:s}),o},Object.defineProperty(globalThis.fetch,K,{enumerable:!0,configurable:!0,value:!0}),this.subscriptions.push(()=>{Object.defineProperty(globalThis.fetch,K,{value:void 0}),globalThis.fetch=e,this.logger.info(`restored native "globalThis.fetch"!`,globalThis.fetch.name)})}};function Si(e,t){let n=new Uint8Array(e.byteLength+t.byteLength);return n.set(e,0),n.set(t,e.byteLength),n}var Ci=class{constructor(e,t){this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,this.type=``,this.srcElement=null,this.currentTarget=null,this.eventPhase=0,this.isTrusted=!0,this.composed=!1,this.cancelable=!0,this.defaultPrevented=!1,this.bubbles=!0,this.lengthComputable=!0,this.loaded=0,this.total=0,this.cancelBubble=!1,this.returnValue=!0,this.type=e,this.target=t?.target||null,this.currentTarget=t?.currentTarget||null,this.timeStamp=Date.now()}composedPath(){return[]}initEvent(e,t,n){this.type=e,this.bubbles=!!t,this.cancelable=!!n}preventDefault(){this.defaultPrevented=!0}stopPropagation(){}stopImmediatePropagation(){}},wi=class extends Ci{constructor(e,t){super(e),this.lengthComputable=t?.lengthComputable||!1,this.composed=t?.composed||!1,this.loaded=t?.loaded||0,this.total=t?.total||0}},Ti=typeof ProgressEvent<`u`;function Ei(e,t,n){let r=[`error`,`progress`,`loadstart`,`loadend`,`load`,`timeout`,`abort`],i=Ti?ProgressEvent:wi;return r.includes(t)?new i(t,{lengthComputable:!0,loaded:n?.loaded||0,total:n?.total||0}):new Ci(t,{target:e,currentTarget:e})}function Di(e,t){if(!(t in e))return null;if(Object.prototype.hasOwnProperty.call(e,t))return e;let n=Reflect.getPrototypeOf(e);return n?Di(n,t):null}function Oi(e,t){return new Proxy(e,ki(t))}function ki(e){let{constructorCall:t,methodCall:n,getProperty:r,setProperty:i}=e,a={};return t!==void 0&&(a.construct=function(e,n,r){let i=Reflect.construct.bind(null,e,n,r);return t.call(r,n,i)}),a.set=function(e,t,n){let r=()=>{let r=Di(e,t)||e,i=Reflect.getOwnPropertyDescriptor(r,t);return i?.set===void 0?Reflect.defineProperty(r,t,{writable:!0,enumerable:!0,configurable:!0,value:n}):(i.set.apply(e,[n]),!0)};return i===void 0?r():i.call(e,[t,n],r)},a.get=function(e,t,i){let a=()=>e[t],o=r===void 0?a():r.call(e,[t,i],a);return typeof o==`function`?(...r)=>{let i=o.bind(e,...r);return n===void 0?i():n.call(e,[t,r],i)}:o},a}function Ai(e){return[`application/xhtml+xml`,`application/xml`,`image/svg+xml`,`text/html`,`text/xml`].some(t=>e.startsWith(t))}function ji(e){try{return JSON.parse(e)}catch{return null}}function Mi(e,t){return new J(J.isResponseWithBody(e.status)?t:null,{url:e.responseURL,status:e.status,statusText:e.statusText,headers:Ni(e.getAllResponseHeaders())})}function Ni(e){let t=new Headers,n=e.split(/[\r\n]+/);for(let e of n){if(e.trim()===``)continue;let[n,...r]=e.split(`: `),i=r.join(`: `);t.append(n,i)}return t}async function Pi(e){let t=e.headers.get(`content-length`);return t!=null&&t!==``?Number(t):(await e.arrayBuffer()).byteLength}var Fi=Symbol(`kIsRequestHandled`),Ii=Nn(),Li=Symbol(`kFetchRequest`),Ri=class{constructor(e,t){this.initialRequest=e,this.logger=t,this.method=`GET`,this.url=null,this[Fi]=!1,this.events=new Map,this.uploadEvents=new Map,this.requestId=ir(),this.requestHeaders=new Headers,this.responseBuffer=new Uint8Array,this.request=Oi(e,{setProperty:([e,t],n)=>{switch(e){case`ontimeout`:{let r=e.slice(2);return this.request.addEventListener(r,t),n()}default:return n()}},methodCall:([e,t],n)=>{switch(e){case`open`:{let[e,r]=t;return r===void 0?(this.method=`GET`,this.url=zi(e)):(this.method=e,this.url=zi(r)),this.logger=this.logger.extend(`${this.method} ${this.url.href}`),this.logger.info(`open`,this.method,this.url.href),n()}case`addEventListener`:{let[e,r]=t;return this.registerEvent(e,r),this.logger.info(`addEventListener`,e,r),n()}case`setRequestHeader`:{let[e,r]=t;return this.requestHeaders.set(e,r),this.logger.info(`setRequestHeader`,e,r),n()}case`send`:{let[e]=t;this.request.addEventListener(`load`,()=>{if(this.onResponse!==void 0){let e=Mi(this.request,this.request.response);this.onResponse.call(this,{response:e,isMockedResponse:this[Fi],request:i,requestId:this.requestId})}});let r=typeof e==`string`?Lr(e):e,i=this.toFetchApiRequest(r);this[Li]=i.clone(),queueMicrotask(()=>{(this.onRequest?.call(this,{request:i,requestId:this.requestId})||Promise.resolve()).finally(()=>{if(!this[Fi])return this.logger.info(`request callback settled but request has not been handled (readystate %d), performing as-is...`,this.request.readyState),Ii&&this.request.setRequestHeader($n,this.requestId),n()})});break}default:return n()}}}),Z(this.request,`upload`,Oi(this.request.upload,{setProperty:([e,t],n)=>{switch(e){case`onloadstart`:case`onprogress`:case`onaboart`:case`onerror`:case`onload`:case`ontimeout`:case`onloadend`:{let n=e.slice(2);this.registerUploadEvent(n,t)}}return n()},methodCall:([e,t],n)=>{switch(e){case`addEventListener`:{let[e,r]=t;return this.registerUploadEvent(e,r),this.logger.info(`upload.addEventListener`,e,r),n()}}}}))}registerEvent(e,t){let n=(this.events.get(e)||[]).concat(t);this.events.set(e,n),this.logger.info(`registered event "%s"`,e,t)}registerUploadEvent(e,t){let n=(this.uploadEvents.get(e)||[]).concat(t);this.uploadEvents.set(e,n),this.logger.info(`registered upload event "%s"`,e,t)}async respondWith(e){if(this[Fi]=!0,this[Li]){let e=await Pi(this[Li]);this.trigger(`loadstart`,this.request.upload,{loaded:0,total:e}),this.trigger(`progress`,this.request.upload,{loaded:e,total:e}),this.trigger(`load`,this.request.upload,{loaded:e,total:e}),this.trigger(`loadend`,this.request.upload,{loaded:e,total:e})}this.logger.info(`responding with a mocked response: %d %s`,e.status,e.statusText),Z(this.request,`status`,e.status),Z(this.request,`statusText`,e.statusText),Z(this.request,`responseURL`,this.url.href),this.request.getResponseHeader=new Proxy(this.request.getResponseHeader,{apply:(t,n,r)=>{if(this.logger.info(`getResponseHeader`,r[0]),this.request.readyState<this.request.HEADERS_RECEIVED)return this.logger.info(`headers not received yet, returning null`),null;let i=e.headers.get(r[0]);return this.logger.info(`resolved response header "%s" to`,r[0],i),i}}),this.request.getAllResponseHeaders=new Proxy(this.request.getAllResponseHeaders,{apply:()=>{if(this.logger.info(`getAllResponseHeaders`),this.request.readyState<this.request.HEADERS_RECEIVED)return this.logger.info(`headers not received yet, returning empty string`),``;let t=Array.from(e.headers.entries()).map(([e,t])=>`${e}: ${t}`).join(`\r
|
|
47
|
-
`);return this.logger.info(`resolved all response headers to`,t),t}}),Object.defineProperties(this.request,{response:{enumerable:!0,configurable:!1,get:()=>this.response},responseText:{enumerable:!0,configurable:!1,get:()=>this.responseText},responseXML:{enumerable:!0,configurable:!1,get:()=>this.responseXML}});let t=await Pi(e.clone());this.logger.info(`calculated response body length`,t),this.trigger(`loadstart`,this.request,{loaded:0,total:t}),this.setReadyState(this.request.HEADERS_RECEIVED),this.setReadyState(this.request.LOADING);let n=()=>{this.logger.info(`finalizing the mocked response...`),this.setReadyState(this.request.DONE),this.trigger(`load`,this.request,{loaded:this.responseBuffer.byteLength,total:t}),this.trigger(`loadend`,this.request,{loaded:this.responseBuffer.byteLength,total:t})};if(e.body){this.logger.info(`mocked response has body, streaming...`);let r=e.body.getReader(),i=async()=>{let{value:e,done:a}=await r.read();if(a){this.logger.info(`response body stream done!`),n();return}e&&(this.logger.info(`read response body chunk:`,e),this.responseBuffer=Si(this.responseBuffer,e),this.trigger(`progress`,this.request,{loaded:this.responseBuffer.byteLength,total:t})),i()};i()}else n()}responseBufferToText(){return Rr(this.responseBuffer)}get response(){if(this.logger.info(`getResponse (responseType: %s)`,this.request.responseType),this.request.readyState!==this.request.DONE)return null;switch(this.request.responseType){case`json`:{let e=ji(this.responseBufferToText());return this.logger.info(`resolved response JSON`,e),e}case`arraybuffer`:{let e=zr(this.responseBuffer);return this.logger.info(`resolved response ArrayBuffer`,e),e}case`blob`:{let e=this.request.getResponseHeader(`Content-Type`)||`text/plain`,t=new Blob([this.responseBufferToText()],{type:e});return this.logger.info(`resolved response Blob (mime type: %s)`,t,e),t}default:{let e=this.responseBufferToText();return this.logger.info(`resolving "%s" response type as text`,this.request.responseType,e),e}}}get responseText(){if(R(this.request.responseType===``||this.request.responseType===`text`,`InvalidStateError: The object is in invalid state.`),this.request.readyState!==this.request.LOADING&&this.request.readyState!==this.request.DONE)return``;let e=this.responseBufferToText();return this.logger.info(`getResponseText: "%s"`,e),e}get responseXML(){if(R(this.request.responseType===``||this.request.responseType===`document`,`InvalidStateError: The object is in invalid state.`),this.request.readyState!==this.request.DONE)return null;let e=this.request.getResponseHeader(`Content-Type`)||``;return typeof DOMParser>`u`?(console.warn(`Cannot retrieve XMLHttpRequest response body as XML: DOMParser is not defined. You are likely using an environment that is not browser or does not polyfill browser globals correctly.`),null):Ai(e)?new DOMParser().parseFromString(this.responseBufferToText(),e):null}errorWith(e){this[Fi]=!0,this.logger.info(`responding with an error`),this.setReadyState(this.request.DONE),this.trigger(`error`,this.request),this.trigger(`loadend`,this.request)}setReadyState(e){if(this.logger.info(`setReadyState: %d -> %d`,this.request.readyState,e),this.request.readyState===e){this.logger.info(`ready state identical, skipping transition...`);return}Z(this.request,`readyState`,e),this.logger.info(`set readyState to: %d`,e),e!==this.request.UNSENT&&(this.logger.info(`triggering "readystatechange" event...`),this.trigger(`readystatechange`,this.request))}trigger(e,t,n){let r=t[`on${e}`],i=Ei(t,e,n);this.logger.info(`trigger "%s"`,e,n||``),typeof r==`function`&&(this.logger.info(`found a direct "%s" callback, calling...`,e),r.call(t,i));let a=t instanceof XMLHttpRequestUpload?this.uploadEvents:this.events;for(let[n,r]of a)n===e&&(this.logger.info(`found %d listener(s) for "%s" event, calling...`,r.length,e),r.forEach(e=>e.call(t,i)))}toFetchApiRequest(e){this.logger.info(`converting request to a Fetch API Request...`);let t=e instanceof Document?e.documentElement.innerText:e,n=new Request(this.url.href,{method:this.method,headers:this.requestHeaders,credentials:this.request.withCredentials?`include`:`same-origin`,body:[`GET`,`HEAD`].includes(this.method.toUpperCase())?null:t});return Z(n,`headers`,Oi(n.headers,{methodCall:([e,t],r)=>{switch(e){case`append`:case`set`:{let[e,n]=t;this.request.setRequestHeader(e,n);break}case`delete`:{let[e]=t;console.warn(`XMLHttpRequest: Cannot remove a "${e}" header from the Fetch API representation of the "${n.method} ${n.url}" request. XMLHttpRequest headers cannot be removed.`);break}}return r()}})),Fr(n,this.request),this.logger.info(`converted request to a Fetch API Request!`,n),n}};function zi(e){return typeof location>`u`?new URL(e):new URL(e.toString(),location.href)}function Z(e,t,n){Reflect.defineProperty(e,t,{writable:!0,enumerable:!0,value:n})}function Bi({emitter:e,logger:t}){return new Proxy(globalThis.XMLHttpRequest,{construct(n,r,i){t.info(`constructed new XMLHttpRequest`);let a=Reflect.construct(n,r,i),o=Object.getOwnPropertyDescriptors(n.prototype);for(let e in o)Reflect.defineProperty(a,e,o[e]);let s=new Ri(a,t);return s.onRequest=async function({request:t,requestId:n}){let r=new q(t,{passthrough:()=>{this.logger.info(`no mocked response received, performing request as-is...`)},respondWith:async e=>{if(ci(e)){this.errorWith(TypeError(`Network error`));return}await this.respondWith(e)},errorWith:e=>{this.logger.info(`request errored!`,{error:e}),e instanceof Error&&this.errorWith(e)}});this.logger.info(`awaiting mocked response...`),this.logger.info(`emitting the "request" event for %s listener(s)...`,e.listenerCount(`request`)),await di({request:t,requestId:n,controller:r,emitter:e})},s.onResponse=async function({response:t,isMockedResponse:n,request:r,requestId:i}){this.logger.info(`emitting the "response" event for %s listener(s)...`,e.listenerCount(`response`)),e.emit(`response`,{response:t,isMockedResponse:n,request:r,requestId:i})},s.request}})}var Vi=class e extends rr{static{this.interceptorSymbol=Symbol(`xhr`)}constructor(){super(e.interceptorSymbol)}checkEnvironment(){return sr(`XMLHttpRequest`)}setup(){let e=this.logger.extend(`setup`);e.info(`patching "XMLHttpRequest" module...`);let t=globalThis.XMLHttpRequest;R(!t[K],`Failed to patch the "XMLHttpRequest" module: already patched.`),globalThis.XMLHttpRequest=Bi({emitter:this.emitter,logger:this.logger}),e.info(`native "XMLHttpRequest" module patched!`,globalThis.XMLHttpRequest.name),Object.defineProperty(globalThis.XMLHttpRequest,K,{enumerable:!0,configurable:!0,value:!0}),this.subscriptions.push(()=>{Object.defineProperty(globalThis.XMLHttpRequest,K,{value:void 0}),globalThis.XMLHttpRequest=t,e.info(`native "XMLHttpRequest" module restored!`,globalThis.XMLHttpRequest.name)})}},Hi=class extends Cn{constructor(e){super({interceptors:[new Vi,new xi]}),this.options=e}enable(){super.enable(),this.options.quiet||this.#e()}disable(){super.disable(),this.options.quiet||this.#t()}#e(){console.groupCollapsed(`%c${v.formatMessage(`Mocking enabled (fallback mode).`)}`,`color:orangered;font-weight:bold;`),console.log(`%cDocumentation: %chttps://mswjs.io/docs`,`font-weight:bold`,`font-weight:normal`),console.log(`Found an issue? https://github.com/mswjs/msw/issues`),console.groupEnd()}#t(){console.log(`%c${v.formatMessage(`Mocking disabled.`)}`,`color:orangered;font-weight:bold;`)}},Ui=`/mockServiceWorker.js`;function Wi(...e){R(!Nn(),v.formatMessage("Failed to execute `setupWorker` in a non-browser environment"));let t=en({sources:[],handlers:e});return{async start(e){if(e?.waitUntilReady!=null&&v.warn(`The "waitUntilReady" option has been deprecated. Please remove it from this "worker.start()" call. Follow the recommended Browser integration (https://mswjs.io/docs/integrations/browser) to eliminate any race conditions between the Service Worker registration and any requests made by your application on initial render.`),t.readyState===$t.ENABLED){v.warn(`Found a redundant "worker.start()" call. Note that starting the worker while mocking is already enabled will have no effect. Consider removing this "worker.start()" call.`);return}let n=Dr()?await ni.from({serviceWorker:{url:e?.serviceWorker?.url?.toString()||Ui,options:e?.serviceWorker?.options},findWorker:e?.findWorker,quiet:e?.quiet}):new Hi({quiet:e?.quiet});if(t.configure({sources:[n,new Cn({interceptors:[new Er]})],onUnhandledFrame:En(()=>e?.onUnhandledRequest||`warn`),context:{quiet:e?.quiet}}),await t.enable(),n instanceof ni){let[,e]=await n.workerPromise;return e}},stop(){if(t.readyState===$t.DISABLED){v.warn(`Found a redundant "worker.stop()" call. Notice that stopping the worker after it has already been stopped has no effect. Consider removing this "worker.stop()" call.`);return}t.disable(),window.postMessage({type:`msw/worker:stop`})},events:t.events,use:t.use.bind(t),resetHandlers:t.resetHandlers.bind(t),restoreHandlers:t.restoreHandlers.bind(t),listHandlers:t.listHandlers.bind(t)}}function Gi(e,t){return e.toLowerCase()===t.toLowerCase()}function Ki(e){return e<300?`#69AB32`:e<400?`#F0BB4B`:`#E95F5D`}async function qi(e){let t=await e.clone().text();return{url:new URL(e.url),method:e.method,headers:Object.fromEntries(e.headers.entries()),body:t}}var{message:Ji}=it;async function Yi(e){let t=e.clone(),n=await t.text(),r=t.status||200;return{status:r,statusText:t.statusText||Ji[r]||`OK`,headers:Object.fromEntries(t.headers.entries()),body:n}}var Xi=Object.create,Zi=Object.defineProperty,Qi=Object.getOwnPropertyDescriptor,$i=Object.getOwnPropertyNames,ea=Object.getPrototypeOf,ta=Object.prototype.hasOwnProperty,na=(e,t)=>function(){return t||(0,e[$i(e)[0]])((t={exports:{}}).exports,t),t.exports},ra=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of $i(t))!ta.call(e,i)&&i!==n&&Zi(e,i,{get:()=>t[i],enumerable:!(r=Qi(t,i))||r.enumerable});return e},ia=((e,t,n)=>(n=e==null?{}:Xi(ea(e)),ra(t||!e||!e.__esModule?Zi(n,`default`,{value:e,enumerable:!0}):n,e)))(na({"node_modules/.pnpm/cookie@1.1.1/node_modules/cookie/dist/index.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.parseCookie=c,e.parse=c,e.stringifyCookie=l,e.stringifySetCookie=u,e.serialize=u,e.parseSetCookie=d,e.stringifySetCookie=u,e.serialize=u;var t=/^[\u0021-\u003A\u003C\u003E-\u007E]+$/,n=/^[\u0021-\u003A\u003C-\u007E]*$/,r=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,i=/^[\u0020-\u003A\u003D-\u007E]*$/,a=/^-?\d+$/,o=Object.prototype.toString,s=(()=>{let e=function(){};return e.prototype=Object.create(null),e})();function c(e,t){let n=new s,r=e.length;if(r<2)return n;let i=t?.decode||h,a=0;do{let t=p(e,a,r);if(t===-1)break;let o=f(e,a,r);if(t>o){a=e.lastIndexOf(`;`,t-1)+1;continue}let s=m(e,a,t);n[s]===void 0&&(n[s]=i(m(e,t+1,o))),a=o+1}while(a<r);return n}function l(e,r){let i=r?.encode||encodeURIComponent,a=[];for(let r of Object.keys(e)){let o=e[r];if(o===void 0)continue;if(!t.test(r))throw TypeError(`cookie name is invalid: ${r}`);let s=i(o);if(!n.test(s))throw TypeError(`cookie val is invalid: ${o}`);a.push(`${r}=${s}`)}return a.join(`; `)}function u(e,a,o){let s=typeof e==`object`?e:{...o,name:e,value:String(a)},c=(typeof a==`object`?a:o)?.encode||encodeURIComponent;if(!t.test(s.name))throw TypeError(`argument name is invalid: ${s.name}`);let l=s.value?c(s.value):``;if(!n.test(l))throw TypeError(`argument val is invalid: ${s.value}`);let u=s.name+`=`+l;if(s.maxAge!==void 0){if(!Number.isInteger(s.maxAge))throw TypeError(`option maxAge is invalid: ${s.maxAge}`);u+=`; Max-Age=`+s.maxAge}if(s.domain){if(!r.test(s.domain))throw TypeError(`option domain is invalid: ${s.domain}`);u+=`; Domain=`+s.domain}if(s.path){if(!i.test(s.path))throw TypeError(`option path is invalid: ${s.path}`);u+=`; Path=`+s.path}if(s.expires){if(!g(s.expires)||!Number.isFinite(s.expires.valueOf()))throw TypeError(`option expires is invalid: ${s.expires}`);u+=`; Expires=`+s.expires.toUTCString()}if(s.httpOnly&&(u+=`; HttpOnly`),s.secure&&(u+=`; Secure`),s.partitioned&&(u+=`; Partitioned`),s.priority)switch(typeof s.priority==`string`?s.priority.toLowerCase():void 0){case`low`:u+=`; Priority=Low`;break;case`medium`:u+=`; Priority=Medium`;break;case`high`:u+=`; Priority=High`;break;default:throw TypeError(`option priority is invalid: ${s.priority}`)}if(s.sameSite)switch(typeof s.sameSite==`string`?s.sameSite.toLowerCase():s.sameSite){case!0:case`strict`:u+=`; SameSite=Strict`;break;case`lax`:u+=`; SameSite=Lax`;break;case`none`:u+=`; SameSite=None`;break;default:throw TypeError(`option sameSite is invalid: ${s.sameSite}`)}return u}function d(e,t){let n=t?.decode||h,r=e.length,i=f(e,0,r),o=p(e,0,i),s=o===-1?{name:``,value:n(m(e,0,i))}:{name:m(e,0,o),value:n(m(e,o+1,i))},c=i+1;for(;c<r;){let t=f(e,c,r),n=p(e,c,t),i=n===-1?m(e,c,t):m(e,c,n),o=n===-1?void 0:m(e,n+1,t);switch(i.toLowerCase()){case`httponly`:s.httpOnly=!0;break;case`secure`:s.secure=!0;break;case`partitioned`:s.partitioned=!0;break;case`domain`:s.domain=o;break;case`path`:s.path=o;break;case`max-age`:o&&a.test(o)&&(s.maxAge=Number(o));break;case`expires`:if(!o)break;let e=new Date(o);Number.isFinite(e.valueOf())&&(s.expires=e);break;case`priority`:if(!o)break;let t=o.toLowerCase();(t===`low`||t===`medium`||t===`high`)&&(s.priority=t);break;case`samesite`:if(!o)break;let n=o.toLowerCase();(n===`lax`||n===`strict`||n===`none`)&&(s.sameSite=n);break}c=t+1}return s}function f(e,t,n){let r=e.indexOf(`;`,t);return r===-1?n:r}function p(e,t,n){let r=e.indexOf(`=`,t);return r<n?r:-1}function m(e,t,n){let r=t,i=n;do{let t=e.charCodeAt(r);if(t!==32&&t!==9)break}while(++r<i);for(;i>r;){let t=e.charCodeAt(i-1);if(t!==32&&t!==9)break;i--}return e.slice(r,i)}function h(e){if(e.indexOf(`%`)===-1)return e;try{return decodeURIComponent(e)}catch{return e}}function g(e){return o.call(e)===`[object Date]`}}})(),1),aa=ia.default||ia,oa=aa.parse,sa=aa.serialize;function ca(e){let t=oa(e),n={};for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return n}function la(){return ca(document.cookie)}function ua(e){if(typeof document>`u`||typeof location>`u`)return{};switch(e.credentials){case`same-origin`:{let t=new URL(e.url);return location.origin===t.origin?la():{}}case`include`:return la();default:return{}}}function da(e){let t=e.headers.get(`cookie`),n=t?ca(t):{},r=ua(e);for(let t in r)e.headers.append(`cookie`,sa(t,r[t]));let i=gt.getCookies(e.url),a=Object.fromEntries(i.map(e=>[e.key,e.value]));for(let t of i)e.headers.append(`cookie`,t.toString());return{...r,...a,...n}}var Q=(e=>(e.HEAD=`HEAD`,e.GET=`GET`,e.POST=`POST`,e.PUT=`PUT`,e.PATCH=`PATCH`,e.OPTIONS=`OPTIONS`,e.DELETE=`DELETE`,e))(Q||{}),fa=class extends ft{constructor(e,t,n,r){let i=typeof t==`function`?`[custom predicate]`:t;super({info:{header:`${e}${i?` ${i}`:``}`,path:t,method:e},resolver:n,options:r}),this.checkRedundantQueryParameters()}checkRedundantQueryParameters(){let{method:e,path:t}=this.info;!t||t instanceof RegExp||typeof t==`function`||Mt(t)!==t&&v.warn(`Found a redundant usage of query parameters in the request handler URL for "${e} ${t}". Please match against a path instead and access query parameters using "new URL(request.url).searchParams" instead. Learn more: https://mswjs.io/docs/http/intercepting-requests#querysearch-parameters`)}async parse(e){let t=new URL(e.request.url),n=da(e.request);if(typeof this.info.path==`function`){let t=await this.info.path({request:e.request,cookies:n});return{match:typeof t==`boolean`?{matches:t,params:{}}:t,cookies:n}}return{match:this.info.path?Lt(t,this.info.path,e.resolutionContext?.baseUrl):{matches:!1,params:{}},cookies:n}}async predicate(e){let t=this.matchMethod(e.request.method),n=e.parsedResult.match.matches;return t&&n}matchMethod(e){return this.info.method instanceof RegExp?this.info.method.test(e):Gi(this.info.method,e)}extendResolverArgs(e){return{params:e.parsedResult.match?.params||{},cookies:e.parsedResult.cookies}}async log(e){let t=Ae(e.request.url),n=await qi(e.request),r=await Yi(e.response),i=Ki(r.status);console.groupCollapsed(v.formatMessage(`${Rt()} ${e.request.method} ${t} (%c${r.status} ${r.statusText}%c)`),`color:${i}`,`color:inherit`),console.log(`Request`,n),console.log(`Handler:`,this),console.log(`Response`,r),console.groupEnd()}};function $(e){return(t,n,r={})=>new fa(e,t,n,r)}var pa={all:$(/.+/),head:$(Q.HEAD),get:$(Q.GET),post:$(Q.POST),put:$(Q.PUT),delete:$(Q.DELETE),patch:$(Q.PATCH),options:$(Q.OPTIONS)};function ma(e){return zt(e)&&typeof Reflect.get(e,`ref`)==`function`&&typeof Reflect.get(e,`unref`)==`function`}var ha=2147483647;function ga(){return b()?5:Math.floor(Math.random()*300+100)}async function _a(e){let t;if(typeof e==`string`)switch(e){case`infinite`:t=ha;break;case`real`:t=ga();break;default:throw Error(`Failed to delay a response: unknown delay mode "${e}". Please make sure you provide one of the supported modes ("real", "infinite") or a number.`)}else if(e===void 0)t=ga();else{if(e>2147483647)throw Error(`Failed to delay a response: provided delay duration (${e}) exceeds the maximum allowed duration for "setTimeout" (${ha}). This will cause the response to be returned immediately. Please use a number within the allowed range to delay the response by exact duration, or consider the "infinite" delay mode to delay the response indefinitely.`);t=e}return new Promise(e=>{let n=setTimeout(e,t);t===2147483647&&b()&&ma(n)&&n.unref()})}var va={description:`Reference responses for the capabilities endpoint the host queries at stage 2. The endpoint does not exist yet - defining it is OpenHands/automation#262. Field names here are the contract that setup.requires.features, the trigger kinds in setup.form.triggers, and the cron and timezone field types are written against.`,endpoint:{method:`GET`,path:`/v1/capabilities`},responses:{supported:{description:`A deployment that is publicly reachable and can run every archetype.`,status:200,body:{ready:!0,triggerKinds:[`cron`,`event`],eventSources:[`github`],eventTypes:[`issue_comment.created`,`pull_request.opened`,`pull_request.labeled`,`pull_request_review_comment.created`,`push`],triggers:{cron:{minIntervalSeconds:300,timezones:[`UTC`,`America/Los_Angeles`,`America/New_York`,`Asia/Tokyo`,`Europe/London`]},event:{filterLanguage:`jmespath`,filterFunctions:[`contains`,`ends_with`,`glob`,`icontains`,`lower`,`regex`,`starts_with`,`upper`]}},features:[`conversationDispatch`,`mcpTools`,`presetPlugin`,`presetPrompt`,`repoClone`,`webhookDelivery`]}},cronOnly:{description:`A deployment that is not reachable from the public internet, so external services cannot deliver webhooks to it. Scheduled polling is the documented alternative - see skills/openhands-automation/SKILL.md.`,status:200,body:{ready:!0,triggerKinds:[`cron`],eventSources:[],eventTypes:[],triggers:{cron:{minIntervalSeconds:300,timezones:[`UTC`]}},features:[`conversationDispatch`,`mcpTools`,`presetPrompt`,`repoClone`]}},notReady:{description:`The automation service is reachable but not accepting work. It offers no features and no trigger kinds, so every setup block is blocked.`,status:200,body:{ready:!1,triggerKinds:[],eventSources:[],eventTypes:[],triggers:{},features:[]}}}};export{dt as a,Wi as i,_a as n,pa as r,va as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,t}from"./rolldown-runtime-Cyuzqnbw.js";import{St as n,bt as r}from"./vendor-styling-Bcgpimp9.js";import{A as i,C as a,D as o,E as s,N as c,O as l,P as u,S as d,T as f,b as p,c as m,f as h,g,h as _,j as v,s as y,w as b,x,y as S}from"./vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~d4by102p-C2f0ZhS-.js";var C=e(n(),1);[...h],new TextEncoder,C.Component;function w(e){if(!e)return null;let t=Object.entries(e),n={};for(let[e,r]of t)if(r&&r.__type===`RouteErrorResponse`)n[e]=new y(r.status,r.statusText,r.data,r.internal===!0);else if(r&&r.__type===`Error`){if(r.__subType){let t=window[r.__subType];if(typeof t==`function`)try{let i=new t(r.message);i.stack=r.stack,n[e]=i}catch{}}if(n[e]==null){let t=Error(r.message);t.stack=r.stack,n[e]=t}}else n[e]=r;return n}function T({state:e,routes:t,getRouteInfo:n,location:r,basename:i,isSpaMode:a}){let o={...e,loaderData:{...e.loaderData}},s=v(t,r,i);if(s)for(let e of s){let t=e.route.id,r=n(t);c(t,r.clientLoader,r.hasLoader,a)&&(r.hasHydrateFallback||!r.hasLoader)?delete o.loaderData[t]:r.hasLoader||(o.loaderData[t]=null)}return o}var E=e(r(),1);function D(e){return C.createElement(g,{flushSync:E.flushSync,...e})}var O=null,k=null;function A(){if(!O&&window.__reactRouterContext&&window.__reactRouterManifest&&window.__reactRouterRouteModules){if(window.__reactRouterManifest.sri===!0){let e=document.querySelector(`script[rr-importmap]`);if(e?.textContent)try{window.__reactRouterManifest.sri=JSON.parse(e.textContent).integrity}catch(e){console.error(`Failed to parse import map`,e)}}O={context:window.__reactRouterContext,manifest:window.__reactRouterManifest,routeModules:window.__reactRouterRouteModules,stateDecodingPromise:void 0,router:void 0,routerInitialized:!1}}}function j({getContext:e,instrumentations:t}){if(A(),!O)throw Error("You must be using the SSR features of React Router in order to skip passing a `router` prop to `<RouterProvider>`");let n=O;if(!O.stateDecodingPromise){let e=O.context.stream;l(e,`No stream found for single fetch decoding`),O.context.stream=void 0,O.stateDecodingPromise=b(e,window).then(e=>{O.context.state=e.value,n.stateDecodingPromise.value=!0}).catch(e=>{n.stateDecodingPromise.error=e})}if(O.stateDecodingPromise.error)throw O.stateDecodingPromise.error;if(!O.stateDecodingPromise.value)throw O.stateDecodingPromise;let r=p(O.manifest.routes,O.routeModules,O.context.state,O.context.ssr,O.context.isSpaMode),c;if(O.context.isSpaMode){let{loaderData:e}=O.context.state;O.manifest.routes.root?.hasLoader&&e&&`root`in e&&(c={loaderData:{root:e.root}})}else c=T({state:O.context.state,routes:r,getRouteInfo:e=>({clientLoader:O.routeModules[e]?.clientLoader,hasLoader:O.manifest.routes[e]?.hasLoader===!0,hasHydrateFallback:O.routeModules[e]?.HydrateFallback!=null}),location:window.location,basename:window.__reactRouterContext?.basename,isSpaMode:O.context.isSpaMode}),c&&c.errors&&(c.errors=w(c.errors));window.history.state&&window.history.state.masked&&window.history.replaceState({...window.history.state,masked:void 0},``);let u=a({routes:r,history:S(),basename:O.context.basename,getContext:e,hydrationData:c,hydrationRouteProperties:o,instrumentations:t,mapRouteProperties:i,future:{v8_passThroughRequests:O.context.future.v8_passThroughRequests},dataStrategy:s(()=>u,O.manifest,O.routeModules,O.context.ssr,O.context.basename,O.context.future.v8_trailingSlashAwareDataRequests),patchRoutesOnNavigation:f(()=>u,O.manifest,O.routeModules,O.context.ssr,O.context.routeDiscovery,O.context.isSpaMode,O.context.basename)});return O.router=u,u.state.initialized&&(O.routerInitialized=!0,u.initialize()),u.createRoutesForHMR=x,window.__reactRouterDataRouter=u,u}function M(e){k||=j({getContext:e.getContext,instrumentations:e.instrumentations});let[t,n]=C.useState(void 0);C.useEffect(()=>{},[]),C.useEffect(()=>{},[t]);let[r,i]=C.useState(k.state.location);return C.useLayoutEffect(()=>{O&&O.router&&!O.routerInitialized&&(O.routerInitialized=!0,O.router.initialize())},[]),C.useLayoutEffect(()=>{if(O&&O.router)return O.router.subscribe(e=>{e.location!==r&&i(e.location)})},[r]),l(O,`ssrInfo unavailable for HydratedRouter`),u(k,O.manifest,O.routeModules,O.context.ssr,O.context.routeDiscovery,O.context.isSpaMode),C.createElement(C.Fragment,null,C.createElement(m.Provider,{value:{manifest:O.manifest,routeModules:O.routeModules,future:O.context.future,criticalCss:t,ssr:O.context.ssr,isSpaMode:O.context.isSpaMode,routeDiscovery:O.context.routeDiscovery}},C.createElement(_,{location:r},C.createElement(D,{router:k,useTransitions:e.useTransitions,onError:e.onError}))),C.createElement(C.Fragment,null))}d();var N=t((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&j(x,t.startTime-e)}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-T<w)}function D(){if(g=!1,S){var t=e.unstable_now();T=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(C),C=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&j(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var k=new MessageChannel,A=k.port2;k.port1.onmessage=D,O=function(){A.postMessage(null)}}else O=function(){_(D,0)};function j(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):w=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,j(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),P=t(((e,t)=>{t.exports=N()}));export{M as n,P as t};
|