@openhands/agent-canvas 1.0.0-rc.8 → 1.0.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 +46 -31
- package/README.windows.md +2 -2
- package/bin/agent-canvas.mjs +3 -1
- package/build/assets/Trans-CBypf0vt.js +1 -0
- package/build/assets/{acp-providers-BqUvf67Q.js → acp-providers-BMyF5WII.js} +1 -1
- package/build/assets/active-backend-context-Cy_Ui5d7.js +1 -0
- package/build/assets/add-backend-modal-CUw7x0zm.js +1 -0
- package/build/assets/agent-server-client-options-FoO1qgAQ.js +1 -0
- package/build/assets/agent-server-conversation-service.api-D6Cmbnhd.js +5 -0
- package/build/assets/{agent-settings-DoHXHcoA.js → agent-settings-DW4vwOaz.js} +2 -2
- package/build/assets/{alert-banner-Bsvys-hT.js → alert-banner-BHmoArV2.js} +1 -1
- package/build/assets/{analytics-consent-form-modal-CVhsAREx.js → analytics-consent-form-modal-BNK0yu4L.js} +1 -1
- package/build/assets/api-key-entry-screen-BjVajIjf.js +1 -0
- package/build/assets/app-settings-C-5X6RzZ.js +1 -0
- package/build/assets/automation-detail-uDMoYmAc.js +1 -0
- package/build/assets/automations-list-DBCKCbId.js +1 -0
- package/build/assets/{back-nav-button-D20Avel_.js → back-nav-button-Bckz5Wh6.js} +1 -1
- package/build/assets/backend-form-modal-D2-XqJA4.js +1 -0
- package/build/assets/{backend-synced-settings-badge-Dcd4712m.js → backend-synced-settings-badge-Dx16CR_k.js} +1 -1
- package/build/assets/{base-modal-DvuGYyu1.js → base-modal-7QRNzf6r.js} +1 -1
- package/build/assets/{brand-button-9SOzmqPP.js → brand-button-CKLvirxz.js} +1 -1
- package/build/assets/browser-D1ZybR7v.js +5 -0
- package/build/assets/browser-store-hzasvz9c.js +1 -0
- package/build/assets/{browser-tab-bveyJhG9.js → browser-tab-iOQjXzmI.js} +1 -1
- package/build/assets/chat-send-button-_Uc9iFpG.js +1 -0
- package/build/assets/check-DfvhVBub.js +1 -0
- package/build/assets/{checkmark--JWAesua.js → checkmark-BHPhb50L.js} +1 -1
- package/build/assets/{chevron-down-B9j6lcFg.js → chevron-down-CMkqyPEY.js} +1 -1
- package/build/assets/{circle-plus-check-toggle-AO9DWyDX.js → circle-plus-check-toggle-ChmnRlpR.js} +1 -1
- package/build/assets/{close--W-tHn1h.js → close-DBs90sI6.js} +1 -1
- package/build/assets/{code-tag-chmctf4w.js → code-tag-BtHOqHwB.js} +1 -1
- package/build/assets/{color-themes-0biOprdo.js → color-themes-CBikRn3w.js} +1 -1
- package/build/assets/{combobox-caret-C9BNHfSu.js → combobox-caret-evUAh6YW.js} +1 -1
- package/build/assets/{command-store-UzKGSUC2.js → command-store-DZfR8QtE.js} +1 -1
- package/build/assets/condenser-settings-0tw3yXX8.js +1 -0
- package/build/assets/{confirmation-modal-Cq3eqvqH.js → confirmation-modal-DWuxe1zG.js} +1 -1
- package/build/assets/{context-menu-list-item-BQU0jZPq.js → context-menu-list-item-BbHFxHaq.js} +1 -1
- package/build/assets/conversation-B1v96pQf.js +19 -0
- package/build/assets/conversation-DgfcjCPm.js +1 -0
- package/build/assets/{conversation-local-storage-an3MiIiJ.js → conversation-local-storage-Btum2xBJ.js} +1 -1
- package/build/assets/conversation-panel-TJ7swm6a.js +1 -0
- package/build/assets/conversation-service.api-DXawvmNN.js +1 -0
- package/build/assets/conversation-state-store-DmuPn875.js +1 -0
- package/build/assets/{conversation-store-FQmakEd-.js → conversation-store-Bu89Yxg1.js} +1 -1
- package/build/assets/{conversation-tab-empty-state-C8tztloo.js → conversation-tab-empty-state-7js7FjYM.js} +1 -1
- package/build/assets/{copy-CdKN5rtJ.js → copy-B0SkXenR.js} +1 -1
- package/build/assets/copy-to-clipboard-button-CfH2EQz9.js +1 -0
- package/build/assets/{createLucideIcon-CkGTf9Qj.js → createLucideIcon-Bazr-V-B.js} +1 -1
- package/build/assets/declaration-Cn-NXHEy.js +1 -0
- package/build/assets/{device-verify-YuGXnpRk.js → device-verify-CWKyQ680.js} +1 -1
- package/build/assets/{dist-5dObF4p4.js → dist-Cbu6eGx8.js} +1 -1
- package/build/assets/dist-Dg2JWLGc.js +1 -0
- package/build/assets/{dropdown-classes-CVp0kVdt.js → dropdown-classes-BI1bI1ho.js} +1 -1
- package/build/assets/edit-automation-modal-DdAG6kFZ.js +1 -0
- package/build/assets/{ellipsis-button-k7HLwYth.js → ellipsis-button-DdCsOBHV.js} +1 -1
- package/build/assets/entry.client-DXyvKj5G.js +2 -0
- package/build/assets/{enum-filter-dropdown-COqUq3mB.js → enum-filter-dropdown-WROAIeys.js} +1 -1
- package/build/assets/{environment-switch-overlay-wB5LxfYZ.js → environment-switch-overlay-Dv0imPE6.js} +1 -1
- package/build/assets/{extensions-hub-CoWO3SzQ.js → extensions-hub-CkyDPXvn.js} +1 -1
- package/build/assets/{extensions-navigation-D5w2sFQe.js → extensions-navigation-gMR-la1J.js} +1 -1
- package/build/assets/{external-link-BATfjnkz.js → external-link-FsutnU75.js} +1 -1
- package/build/assets/files-tab-DNUoveJZ.js +1 -0
- package/build/assets/files-tab-store-SyvkH3ic.js +1 -0
- package/build/assets/{folder-DPTBlxWb.js → folder-DusyBXDE.js} +1 -1
- package/build/assets/{globe-Dpgjreyy.js → globe-BUcin4kT.js} +1 -1
- package/build/assets/home-D809jWVS.js +1 -0
- package/build/assets/{iconBase-BVhFI-0E.js → iconBase-B6CXDDaE.js} +1 -1
- package/build/assets/index-redirect-nMYgOTBX.js +1 -0
- package/build/assets/install-server-modal-D92Qy57I.js +1 -0
- package/build/assets/{launch-fU77utLO.js → launch-BnCG2g2a.js} +1 -1
- package/build/assets/lesson-plan-j-ZaE8vK.js +3 -0
- package/build/assets/{lightbulb-S616sGEL.js → lightbulb-BJ5tWmAh.js} +1 -1
- package/build/assets/{link-external-ooNztGLp.js → link-external-DUtmHAHi.js} +1 -1
- package/build/assets/{list-todo-nCa9zxVE.js → list-todo-C-gekh-4.js} +1 -1
- package/build/assets/{llm-client-P9f2gKeW.js → llm-client-BZUkZYlc.js} +1 -1
- package/build/assets/llm-not-configured-banner-PlvJ99rE.js +27 -0
- package/build/assets/llm-settings-Dgk32xRW.js +1 -0
- package/build/assets/llm-settings-Dxo7owKm.js +1 -0
- package/build/assets/llm-subscription-Bvu8BLXc.js +1 -0
- package/build/assets/llm-subscription-service-Bq6z3Wkv.js +1 -0
- package/build/assets/loader-circle-Cw7_q9hg.js +1 -0
- package/build/assets/{loading-spinner-D7bOU6I7.js → loading-spinner-RF3IlMF5.js} +1 -1
- package/build/assets/manage-backends-modal-BT66a6e0.js +1 -0
- package/build/assets/manifest-b8402d59.js +1 -0
- package/build/assets/markdown-renderer-Tw6FR2ad.js +2 -0
- package/build/assets/mcp-B_pA7vZg.js +9 -0
- package/build/assets/mcp-client-ppbYplKX.js +1 -0
- package/build/assets/messages-Cg9aNVi6.js +41 -0
- package/build/assets/{modal-backdrop-_VbcKk5K.js → modal-backdrop-DRpBVVW5.js} +1 -1
- package/build/assets/{modal-body-Cd-PtMHr.js → modal-body-CEV2O67p.js} +1 -1
- package/build/assets/{modal-classes-CNm4ovfm.js → modal-classes-B2DuQ9qD.js} +1 -1
- package/build/assets/{modal-close-button-Dbo0NAMt.js → modal-close-button-gtb7RHFB.js} +1 -1
- package/build/assets/model-selector-CAv3RrJ3.js +1 -0
- package/build/assets/{mouse-pointer-click-D0QNGSIo.js → mouse-pointer-click-B3i6HcaF.js} +1 -1
- package/build/assets/{navigation-context-BpAOh_t5.js → navigation-context-CM9JmTvm.js} +1 -1
- package/build/assets/{navigation-link-Dci7Nuyf.js → navigation-link-FmXzqR1J.js} +1 -1
- package/build/assets/onboarding-Q9CzuVWy.js +1 -0
- package/build/assets/{openhands-logo-Dzm-d_V_.js → openhands-logo-B4aEO2sf.js} +1 -1
- package/build/assets/option-service.api-C-s2BYZp.js +1 -0
- package/build/assets/organization-service.api-CXTKpFnV.js +1 -0
- package/build/assets/{path-utils-YlkpoImJ.js → path-utils-CE98fIFP.js} +1 -1
- package/build/assets/{pencil-DPEtl5QD.js → pencil-bWrxRWlr.js} +1 -1
- package/build/assets/{plan-components-CutRBi0G.js → plan-components-BF-X7vnQ.js} +1 -1
- package/build/assets/{planner-tab-DjIFIQDk.js → planner-tab-jkyaGiRc.js} +1 -1
- package/build/assets/plus-BTCK8WtR.js +1 -0
- package/build/assets/{profiles-client-BNvHck-I.js → profiles-client-CQ9L1yHR.js} +1 -1
- package/build/assets/providers-B3hkV58J.js +1 -0
- package/build/assets/proxy-BOcEWkCD.js +1 -0
- package/build/assets/{react-dom-hVBnwgwZ.js → react-dom-BBXlXOZX.js} +1 -1
- package/build/assets/{react-CM_dJw1Z.js → react-uQK8du1l.js} +1 -1
- package/build/assets/{react-Dy05vyj5.js → react-x84lbX6s.js} +1 -1
- package/build/assets/{recommended-automations-launcher-DCi0RXIj.js → recommended-automations-launcher-DMk35aFI.js} +11 -11
- package/build/assets/root-CV0kyxfP.js +2 -0
- package/build/assets/root-PB2Jnj61.css +1 -0
- package/build/assets/root-layout-Bl4Qzg5J.js +2 -0
- package/build/assets/{runtime-waiting-state-8i0Z3A_i.js → runtime-waiting-state-C1hJpXxl.js} +1 -1
- package/build/assets/sdk-section-page-DHbC2_j3.js +1 -0
- package/build/assets/sdk-settings-schema-z51bBmMl.js +1 -0
- package/build/assets/{search-C_l_XW4e.js → search-Dxm1MUMi.js} +1 -1
- package/build/assets/{secrets-service-D6Gcymcs.js → secrets-service-DlScPUwy.js} +1 -1
- package/build/assets/secrets-settings-B97-JKBe.js +1 -0
- package/build/assets/settings-BpmooyBV.js +1 -0
- package/build/assets/{settings-dropdown-input-BP-arqjU.js → settings-dropdown-input-hIIAlmHb.js} +1 -1
- package/build/assets/{settings-gear-f-zWpxfI.js → settings-gear-DQLTCnFx.js} +1 -1
- package/build/assets/{settings-index-B035V2pu.js → settings-index-kKASonWk.js} +1 -1
- package/build/assets/{settings-input-BM8ANxDb.js → settings-input-BlOzCtP3.js} +1 -1
- package/build/assets/{settings-list-classes-B9uo5WES.js → settings-list-classes-BFRbCy4U.js} +1 -1
- package/build/assets/settings-modal-C4pZwj-l.js +1 -0
- package/build/assets/{settings-section-header-context-Cid25HM2.js → settings-section-header-context-iz4Go0dL.js} +1 -1
- package/build/assets/settings-service.api-DVLwi82B.js +1 -0
- package/build/assets/{settings-switch-xa6q4M6j.js → settings-switch-6cXIH-UE.js} +1 -1
- package/build/assets/{settings-utils--H_EvFjx.js → settings-utils-CfScEaPn.js} +1 -1
- package/build/assets/shared-conversation-CLkayApe.js +1 -0
- package/build/assets/sidebar-mobile-menu-toggle-C8uT4Mhd.js +1 -0
- package/build/assets/{sidebar-nav-link-CPWuQ_c6.js → sidebar-nav-link-BKZiAQxQ.js} +1 -1
- package/build/assets/{skill-card-pill-row-DeodrwPG.js → skill-card-pill-row-D13WRKIE.js} +1 -1
- package/build/assets/{skills-BE5HJuGM.js → skills-NpRk6v79.js} +1 -1
- package/build/assets/{skills-client-Ui_9FvXp.js → skills-client-DsqwQEwj.js} +1 -1
- package/build/assets/{skills-plugins-Dc4ec3CW.js → skills-plugins-bkwxItAw.js} +1 -1
- package/build/assets/{skills-settings-B6HwvA0S.js → skills-settings-DMbrlB2b.js} +2 -2
- package/build/assets/{square-chevron-right-BWAB7NPp.js → square-chevron-right-DxZKcVq4.js} +1 -1
- package/build/assets/{styled-tooltip-X61SEwqk.js → styled-tooltip-DG1ofAcS.js} +1 -1
- package/build/assets/suspense-sOGeme-f.js +1 -0
- package/build/assets/{switch-skeleton-BbIWemkK.js → switch-skeleton-CZ6XCVZk.js} +1 -1
- package/build/assets/{task-list-tab-BFnyHGsn.js → task-list-tab-CddMPNCD.js} +1 -1
- package/build/assets/telemetry-CX4mTZUw.js +2 -0
- package/build/assets/{terminal-CltMeLv4.js → terminal-BOAVxAej.js} +1 -1
- package/build/assets/{terminal-B92mACR5.js → terminal-DbtwHqt4.js} +1 -1
- package/build/assets/{toggle-switch-CL_wRiGs.js → toggle-switch-C0t6ge2m.js} +1 -1
- package/build/assets/{trash-2-C-RvV8WA.js → trash-2-Dmprz0A0.js} +1 -1
- package/build/assets/{typography-BLSEGjph.js → typography-CNHbO1eE.js} +1 -1
- package/build/assets/{u-check-circle-dG_VJqx5.js → u-check-circle-CX66WzfT.js} +1 -1
- package/build/assets/{u-check-circle-half-D-5ZPRnd.js → u-check-circle-half-Bj853Ub0.js} +1 -1
- package/build/assets/{u-circuit-BXoisXOA.js → u-circuit-B9bLCP7N.js} +1 -1
- package/build/assets/{u-edit-DIgADxLH.js → u-edit-D7JyvoWm.js} +1 -1
- package/build/assets/use-acp-credential-form-Cj_oUYd5.js +1 -0
- package/build/assets/{use-active-conversation-B0_rXnqa.js → use-active-conversation-B64-yy2X.js} +1 -1
- package/build/assets/use-agent-settings-schema-BzbQYEzb.js +1 -0
- package/build/assets/{use-agent-state-BuOzLeFN.js → use-agent-state-DxFk391r.js} +1 -1
- package/build/assets/{use-breakpoint-DpxHDmuH.js → use-breakpoint-Cent5lpI.js} +1 -1
- package/build/assets/{use-click-outside-element-DhxCUyWl.js → use-click-outside-element-DOYR26nw.js} +1 -1
- package/build/assets/{use-cloud-current-user-id-DVZXa_WH.js → use-cloud-current-user-id-BVf7pb8n.js} +1 -1
- package/build/assets/use-config-CvdJUq4E.js +1 -0
- package/build/assets/use-create-conversation-Cnouynop.js +1 -0
- package/build/assets/{use-create-secret-ClPpLBgD.js → use-create-secret-Cgu4uxyr.js} +1 -1
- package/build/assets/{use-event-store-DNSmyzUh.js → use-event-store-Nv92IYMU.js} +1 -1
- package/build/assets/use-handle-plan-click-C7824bbe.js +1 -0
- package/build/assets/use-is-authed-mnJtd2bw.js +1 -0
- package/build/assets/{use-launch-skill-in-chat-BTgXIu3N.js → use-launch-skill-in-chat-NDUo_UCA.js} +1 -1
- package/build/assets/use-llm-profiles-9eH3Y3Ef.js +1 -0
- package/build/assets/use-runtime-is-ready-DEnxJH7W.js +1 -0
- package/build/assets/use-save-settings-DrClHnX7.js +1 -0
- package/build/assets/use-settings-BNAoCX93.js +1 -0
- package/build/assets/{use-settings-nav-items-DVrMNk0I.js → use-settings-nav-items-CLIW2p2n.js} +2 -2
- package/build/assets/{use-skills-Bv8LXrys.js → use-skills-B9gOHrOj.js} +1 -1
- package/build/assets/{use-task-list-E5t-jtgs.js → use-task-list-DLKPnq3I.js} +1 -1
- package/build/assets/{use-tracking-BhyV5A9i.js → use-tracking-Dph_dRlL.js} +1 -1
- package/build/assets/{use-user-conversation-6yFVEXiG.js → use-user-conversation-leIsQH1B.js} +1 -1
- package/build/assets/useMutation-cXADjWAv.js +1 -0
- package/build/assets/useQuery-BQr6A6ry.js +1 -0
- package/build/assets/useTranslation-Bp1btAjp.js +1 -0
- package/build/assets/{utils-eXk6yerZ.js → utils-o-OXNtEy.js} +1 -1
- package/build/assets/v4-DOSjXdIn.js +1 -0
- package/build/assets/{vendor~browser-tab-BGJDGHyS.js → vendor~browser-tab-642bOcE1.js} +1 -1
- package/build/assets/{vendor~conversation-panel~conversation-D98u43rl.js → vendor~conversation-panel~conversation-DqmbnXRn.js} +1 -1
- package/build/assets/{vendor~conversation-panel~conversation~alert-banner-CtjHOMO_.js → vendor~conversation-panel~conversation~alert-banner-CSDVP1nw.js} +1 -1
- package/build/assets/{vendor~conversation-panel~conversation~index-BXt2-3Cc.js → vendor~conversation-panel~conversation~index-DITarr3F.js} +1 -1
- package/build/assets/{vendor~entry.client-DrAdOKqA.js → vendor~entry.client-CQ77DucR.js} +1 -1
- package/build/assets/{vendor~entry.client-EcEhmoJW.js → vendor~entry.client-ePAFmSwg.js} +1 -1
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~f0pn7nss-DUk-MwlC.js +177 -0
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~lb3qbbk3-BvmOva8I.js +1 -0
- package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~lpdshwee-Cl4h-NSi.js → vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~lpdshwee-BkQQxq_q.js} +1 -1
- package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~oli4dvxu-BmOMM-6e.js → vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~oli4dvxu-8xF3WeB9.js} +1 -1
- package/build/assets/{vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~cnj3raoq-BjMt2JeR.js → vendor~entry.client~root~root-layout~index-redirect~home~conversation-panel~conversation~la~nyk4vv4g-UzR6fe3Y.js} +1 -1
- package/build/assets/{vendor~files-tab--640YzQO.js → vendor~files-tab-Cko7Kr5k.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation-dhKA2JVJ.js → vendor~home~conversation-panel~conversation-D3otw5Jn.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DMOoHVBy.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-CMdKUYP2.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BoE6JRJj.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DSR6Mugx.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-Dqpi2xyZ.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DdOzMvB1.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DX2CmDJ0.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-Dj2eezvL.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BNExlCqT.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DyN8jeZz.js} +1 -1
- package/build/assets/{vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DCn1M97v.js → vendor~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-lpEWrbMA.js} +1 -1
- package/build/assets/{vendor~launch-C0VvUe2W.js → vendor~launch-DoYO54df.js} +1 -1
- package/build/assets/{vendor~root-layout~conversation-panel~conversation~shared-conversation-COLUW-6M.js → vendor~root-layout~conversation-panel~conversation~shared-conversation-BGwU2SbU.js} +1 -1
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation-eG1kjEbj.js → vendor~root-layout~home~conversation-panel~conversation-Iqs0j4Wo.js} +1 -1
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~bok0tgtf-7eqKdLSQ.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~bok0tgtf-BdS6bbw9.js} +1 -1
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~bok0tgtf-BP3MGAAY.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~bok0tgtf-Fd3F3jth.js} +1 -1
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ceijy54y-Dkd2wxJA.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ceijy54y-Cg0AqwMN.js} +2 -2
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~bxn4ldi1-_LydBB1e.js → vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~bxn4ldi1-BlsbqRyZ.js} +1 -1
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~launch~settings~settings-index~agen~ec6pk3ix-CBICqfKC.js +48 -0
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~mcp~automati~dou5smdo-DavKsAvB.js → vendor~root-layout~home~conversation-panel~conversation~launch~skills-settings~automations-~nv6afr11-BYNoKMU0.js} +97 -69
- package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~shared-conversation~alert-banner~pl~rqjteh0a-CsO1gYxF.js → vendor~root-layout~home~conversation-panel~conversation~shared-conversation~alert-banner~pl~rqjteh0a-BspUuSsP.js} +1 -1
- package/build/assets/{vendor~root-layout~home~mcp~automations-list-D40jgugf.js → vendor~root-layout~home~mcp~automations-list-C9U_eOqU.js} +1 -1
- package/build/assets/{vendor~root-layout~home~mcp~automations-list-cNHi83v_.js → vendor~root-layout~home~mcp~automations-list-DhQ3LPVw.js} +1 -1
- package/build/assets/{vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~o7tv66sg-xCM3k6Rd.js → vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~o7tv66sg-BEbhHQYg.js} +1 -1
- package/build/assets/{vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~o7tv66sg-BIm99UaF.js → vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~o7tv66sg-DdgDNzMc.js} +2 -2
- package/build/assets/{verification-settings-Be6NxjuT.js → verification-settings-D7R-Ne6L.js} +1 -1
- package/build/assets/x-DCZg87p7.js +1 -0
- package/build/assets/{x-mark-C42svtnu.js → x-mark-jrBTJbnP.js} +1 -1
- package/build/index.html +4 -4
- package/build/locales/ar/openhands.json +22 -0
- package/build/locales/ca/openhands.json +22 -0
- package/build/locales/de/openhands.json +22 -0
- package/build/locales/en/openhands.json +22 -0
- package/build/locales/es/openhands.json +22 -0
- package/build/locales/fr/openhands.json +22 -0
- package/build/locales/it/openhands.json +22 -0
- package/build/locales/ja/openhands.json +22 -0
- package/build/locales/ko-KR/openhands.json +22 -0
- package/build/locales/no/openhands.json +22 -0
- package/build/locales/pt/openhands.json +22 -0
- package/build/locales/tr/openhands.json +22 -0
- package/build/locales/uk/openhands.json +22 -0
- package/build/locales/zh-CN/openhands.json +22 -0
- package/build/locales/zh-TW/openhands.json +22 -0
- package/config/defaults.json +4 -7
- package/dist/api/agent-server-adapter.cjs +3 -3
- package/dist/api/agent-server-adapter.cjs.map +1 -1
- package/dist/api/agent-server-adapter.d.ts +8 -0
- package/dist/api/agent-server-adapter.js +82 -80
- package/dist/api/agent-server-adapter.js.map +1 -1
- package/dist/api/agent-server-compatibility.cjs +1 -1
- package/dist/api/agent-server-compatibility.cjs.map +1 -1
- package/dist/api/agent-server-compatibility.d.ts +10 -0
- package/dist/api/agent-server-compatibility.js +69 -25
- package/dist/api/agent-server-compatibility.js.map +1 -1
- package/dist/api/backend-registry/default-backend.cjs +1 -1
- package/dist/api/backend-registry/default-backend.cjs.map +1 -1
- package/dist/api/backend-registry/default-backend.d.ts +6 -5
- package/dist/api/backend-registry/default-backend.js +1 -1
- package/dist/api/backend-registry/default-backend.js.map +1 -1
- package/dist/api/backend-registry/storage.cjs +1 -1
- package/dist/api/backend-registry/storage.cjs.map +1 -1
- package/dist/api/backend-registry/storage.js +38 -68
- package/dist/api/backend-registry/storage.js.map +1 -1
- package/dist/api/cloud/proxy.cjs +1 -1
- package/dist/api/cloud/proxy.cjs.map +1 -1
- package/dist/api/cloud/proxy.d.ts +3 -16
- package/dist/api/cloud/proxy.js +1 -1
- package/dist/api/cloud/proxy.js.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
- package/dist/api/conversation-service/agent-server-conversation-service.api.js +75 -75
- package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
- package/dist/api/llm-subscription-service.cjs +2 -0
- package/dist/api/llm-subscription-service.cjs.map +1 -0
- package/dist/api/llm-subscription-service.d.ts +23 -0
- package/dist/api/llm-subscription-service.js +109 -0
- package/dist/api/llm-subscription-service.js.map +1 -0
- 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.d.ts +2 -3
- package/dist/api/mcp-service/mcp-service.api.js +38 -13
- 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.js +41 -42
- package/dist/api/settings-service/settings-service.api.js.map +1 -1
- package/dist/components/conversation-events/chat/messages.cjs +1 -1
- package/dist/components/conversation-events/chat/messages.cjs.map +1 -1
- package/dist/components/conversation-events/chat/messages.js +4 -4
- package/dist/components/conversation-events/chat/messages.js.map +1 -1
- package/dist/components/features/backends/backend-form-modal.cjs +1 -1
- package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
- package/dist/components/features/backends/backend-form-modal.js +136 -135
- package/dist/components/features/backends/backend-form-modal.js.map +1 -1
- package/dist/components/features/backends/backend-selector.cjs +1 -1
- package/dist/components/features/backends/backend-selector.cjs.map +1 -1
- package/dist/components/features/backends/backend-selector.js +103 -91
- package/dist/components/features/backends/backend-selector.js.map +1 -1
- package/dist/components/features/backends/manage-backends-modal.cjs +1 -1
- package/dist/components/features/backends/manage-backends-modal.cjs.map +1 -1
- package/dist/components/features/backends/manage-backends-modal.js +14 -8
- package/dist/components/features/backends/manage-backends-modal.js.map +1 -1
- package/dist/components/features/chat/path-component.cjs +1 -1
- package/dist/components/features/chat/path-component.cjs.map +1 -1
- package/dist/components/features/chat/path-component.js +1 -1
- package/dist/components/features/chat/path-component.js.map +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.cjs +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.cjs.map +1 -1
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.js +77 -66
- package/dist/components/features/home/workspace-dropdown/folder-browser-modal.js.map +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.js +1 -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.js +73 -46
- package/dist/components/features/mcp-page/install-server-modal.js.map +1 -1
- package/dist/components/features/mcp-page/marketplace-card.cjs +1 -1
- package/dist/components/features/mcp-page/marketplace-card.cjs.map +1 -1
- package/dist/components/features/mcp-page/marketplace-card.js +6 -2
- package/dist/components/features/mcp-page/marketplace-card.js.map +1 -1
- package/dist/components/features/settings/brand-button.cjs +1 -1
- package/dist/components/features/settings/brand-button.cjs.map +1 -1
- package/dist/components/features/settings/brand-button.js +1 -1
- package/dist/components/features/settings/brand-button.js.map +1 -1
- package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.cjs +2 -0
- package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.cjs.map +1 -0
- package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.d.ts +5 -0
- package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.js +167 -0
- package/dist/components/features/settings/llm-settings/openai-subscription-auth-card.js.map +1 -0
- package/dist/components/shared/modals/settings/model-selector.cjs +1 -1
- package/dist/components/shared/modals/settings/model-selector.cjs.map +1 -1
- package/dist/components/shared/modals/settings/model-selector.d.ts +1 -2
- package/dist/components/shared/modals/settings/model-selector.js +59 -65
- package/dist/components/shared/modals/settings/model-selector.js.map +1 -1
- package/dist/components/shared/modals/settings/settings-form.cjs +1 -1
- package/dist/components/shared/modals/settings/settings-form.cjs.map +1 -1
- package/dist/components/shared/modals/settings/settings-form.js +1 -2
- package/dist/components/shared/modals/settings/settings-form.js.map +1 -1
- package/dist/config/defaults.cjs +2 -0
- package/dist/config/defaults.cjs.map +1 -0
- package/dist/config/defaults.js +35 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/constants/llm-subscription.cjs +2 -0
- package/dist/constants/llm-subscription.cjs.map +1 -0
- package/dist/constants/llm-subscription.d.ts +16 -0
- package/dist/constants/llm-subscription.js +47 -0
- package/dist/constants/llm-subscription.js.map +1 -0
- package/dist/contexts/conversation-websocket-context.cjs +1 -1
- package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
- package/dist/contexts/conversation-websocket-context.js +1 -1
- package/dist/contexts/conversation-websocket-context.js.map +1 -1
- package/dist/hooks/mutation/use-llm-subscription-auth.cjs +2 -0
- package/dist/hooks/mutation/use-llm-subscription-auth.cjs.map +1 -0
- package/dist/hooks/mutation/use-llm-subscription-auth.d.ts +3 -0
- package/dist/hooks/mutation/use-llm-subscription-auth.js +30 -0
- package/dist/hooks/mutation/use-llm-subscription-auth.js.map +1 -0
- package/dist/hooks/mutation/use-save-fields-as-secrets.cjs +1 -1
- package/dist/hooks/mutation/use-save-fields-as-secrets.cjs.map +1 -1
- package/dist/hooks/mutation/use-save-fields-as-secrets.d.ts +8 -6
- package/dist/hooks/mutation/use-save-fields-as-secrets.js +1 -1
- package/dist/hooks/mutation/use-save-fields-as-secrets.js.map +1 -1
- package/dist/hooks/mutation/use-test-mcp-server.d.ts +1 -1
- package/dist/hooks/query/query-keys.cjs +1 -1
- package/dist/hooks/query/query-keys.cjs.map +1 -1
- package/dist/hooks/query/query-keys.d.ts +5 -0
- package/dist/hooks/query/query-keys.js +14 -2
- package/dist/hooks/query/query-keys.js.map +1 -1
- package/dist/hooks/query/use-agent-settings-schema.cjs +1 -1
- package/dist/hooks/query/use-agent-settings-schema.cjs.map +1 -1
- package/dist/hooks/query/use-agent-settings-schema.d.ts +2 -2
- package/dist/hooks/query/use-agent-settings-schema.js +21 -19
- package/dist/hooks/query/use-agent-settings-schema.js.map +1 -1
- package/dist/hooks/query/use-backends-health.cjs +1 -1
- package/dist/hooks/query/use-backends-health.cjs.map +1 -1
- package/dist/hooks/query/use-backends-health.js +38 -36
- package/dist/hooks/query/use-backends-health.js.map +1 -1
- package/dist/hooks/query/use-llm-subscription-models.cjs +2 -0
- package/dist/hooks/query/use-llm-subscription-models.cjs.map +1 -0
- package/dist/hooks/query/use-llm-subscription-models.d.ts +3 -0
- package/dist/hooks/query/use-llm-subscription-models.js +19 -0
- package/dist/hooks/query/use-llm-subscription-models.js.map +1 -0
- package/dist/hooks/query/use-llm-subscription-status.cjs +2 -0
- package/dist/hooks/query/use-llm-subscription-status.cjs.map +1 -0
- package/dist/hooks/query/use-llm-subscription-status.d.ts +3 -0
- package/dist/hooks/query/use-llm-subscription-status.js +19 -0
- package/dist/hooks/query/use-llm-subscription-status.js.map +1 -0
- package/dist/hooks/use-websocket.cjs +1 -1
- package/dist/hooks/use-websocket.cjs.map +1 -1
- package/dist/hooks/use-websocket.d.ts +0 -1
- package/dist/hooks/use-websocket.js +37 -38
- package/dist/hooks/use-websocket.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 +22 -0
- 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 +374 -0
- package/dist/i18n/translation.js.map +1 -1
- package/dist/locales/ar/openhands.json +22 -0
- package/dist/locales/ca/openhands.json +22 -0
- package/dist/locales/de/openhands.json +22 -0
- package/dist/locales/en/openhands.json +22 -0
- package/dist/locales/es/openhands.json +22 -0
- package/dist/locales/fr/openhands.json +22 -0
- package/dist/locales/it/openhands.json +22 -0
- package/dist/locales/ja/openhands.json +22 -0
- package/dist/locales/ko-KR/openhands.json +22 -0
- package/dist/locales/no/openhands.json +22 -0
- package/dist/locales/pt/openhands.json +22 -0
- package/dist/locales/tr/openhands.json +22 -0
- package/dist/locales/uk/openhands.json +22 -0
- package/dist/locales/zh-CN/openhands.json +22 -0
- package/dist/locales/zh-TW/openhands.json +22 -0
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js +10 -22
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.cjs +97 -69
- package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/skills/index.js +3 -3
- package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +3 -5
- package/dist/package.js.map +1 -1
- package/dist/routes/files-tab.cjs +1 -1
- package/dist/routes/files-tab.cjs.map +1 -1
- package/dist/routes/files-tab.js +28 -17
- package/dist/routes/files-tab.js.map +1 -1
- package/dist/routes/llm-settings.cjs +1 -1
- package/dist/routes/llm-settings.cjs.map +1 -1
- package/dist/routes/llm-settings.js +142 -85
- package/dist/routes/llm-settings.js.map +1 -1
- package/dist/services/canvas-ui.cjs +1 -1
- package/dist/services/canvas-ui.cjs.map +1 -1
- package/dist/services/canvas-ui.d.ts +1 -1
- package/dist/services/canvas-ui.js +2 -2
- package/dist/services/canvas-ui.js.map +1 -1
- package/dist/stores/files-tab-store.cjs +1 -1
- package/dist/stores/files-tab-store.cjs.map +1 -1
- package/dist/stores/files-tab-store.d.ts +2 -1
- package/dist/stores/files-tab-store.js +5 -1
- package/dist/stores/files-tab-store.js.map +1 -1
- package/dist/stores/use-event-store.cjs +1 -1
- package/dist/stores/use-event-store.cjs.map +1 -1
- package/dist/stores/use-event-store.js +39 -34
- package/dist/stores/use-event-store.js.map +1 -1
- package/dist/types/mcp-server.d.ts +21 -0
- package/dist/ui/dropdown/dropdown.cjs +1 -1
- package/dist/ui/dropdown/dropdown.cjs.map +1 -1
- package/dist/ui/dropdown/dropdown.js +6 -2
- package/dist/ui/dropdown/dropdown.js.map +1 -1
- package/dist/utils/handle-event-for-ui.cjs +1 -1
- package/dist/utils/handle-event-for-ui.cjs.map +1 -1
- package/dist/utils/handle-event-for-ui.d.ts +2 -0
- package/dist/utils/handle-event-for-ui.js +1 -1
- package/dist/utils/handle-event-for-ui.js.map +1 -1
- package/dist/utils/llm-subscription-schema.cjs +2 -0
- package/dist/utils/llm-subscription-schema.cjs.map +1 -0
- package/dist/utils/llm-subscription-schema.d.ts +2 -0
- package/dist/utils/llm-subscription-schema.js +22 -0
- package/dist/utils/llm-subscription-schema.js.map +1 -0
- package/dist/utils/mcp-config.cjs +1 -1
- package/dist/utils/mcp-config.cjs.map +1 -1
- package/dist/utils/mcp-config.js +32 -17
- package/dist/utils/mcp-config.js.map +1 -1
- package/dist/utils/mcp-credential-validation.cjs +2 -0
- package/dist/utils/mcp-credential-validation.cjs.map +1 -0
- package/dist/utils/mcp-credential-validation.d.ts +22 -0
- package/dist/utils/mcp-credential-validation.js +31 -0
- package/dist/utils/mcp-credential-validation.js.map +1 -0
- package/dist/utils/mcp-marketplace-utils.cjs +1 -1
- package/dist/utils/mcp-marketplace-utils.cjs.map +1 -1
- package/dist/utils/mcp-marketplace-utils.d.ts +7 -2
- package/dist/utils/mcp-marketplace-utils.js +33 -48
- package/dist/utils/mcp-marketplace-utils.js.map +1 -1
- package/dist/utils/sdk-settings-schema.cjs +1 -1
- package/dist/utils/sdk-settings-schema.cjs.map +1 -1
- package/dist/utils/sdk-settings-schema.js +64 -61
- package/dist/utils/sdk-settings-schema.js.map +1 -1
- package/dist/utils/websocket-url.cjs +1 -1
- package/dist/utils/websocket-url.cjs.map +1 -1
- package/dist/utils/websocket-url.js +2 -2
- package/dist/utils/websocket-url.js.map +1 -1
- package/package.json +3 -5
- package/scripts/check-sdk-version-sync.mjs +9 -27
- package/scripts/dev-with-automation.mjs +1 -3
- package/scripts/docker-build.mjs +0 -4
- package/scripts/run-staged-typecheck.mjs +44 -0
- package/build/assets/QueryClientProvider-XcSjsfpb.js +0 -1
- package/build/assets/Trans-sy4l4TyQ.js +0 -1
- package/build/assets/active-backend-context-CNF2lPkA.js +0 -1
- package/build/assets/add-backend-modal-BywVr6uq.js +0 -1
- package/build/assets/agent-server-adapter-k8veH-1O.js +0 -5
- package/build/assets/agent-server-client-options-B-C8JaTb.js +0 -1
- package/build/assets/agent-server-conversation-service.api-CGbkhsLj.js +0 -1
- package/build/assets/api-key-entry-screen-Dnr5TcV0.js +0 -1
- package/build/assets/app-settings-Bgm2-yOM.js +0 -1
- package/build/assets/automation-detail-86M_yMqz.js +0 -1
- package/build/assets/automations-list-BWUILrqY.js +0 -1
- package/build/assets/backend-form-modal-Dl29wkF5.js +0 -1
- package/build/assets/browser-store-JRrcGdlk.js +0 -1
- package/build/assets/browser-wz8UzRmF.js +0 -5
- package/build/assets/chat-send-button-BhoO7T0s.js +0 -1
- package/build/assets/check-BhnsMsWy.js +0 -1
- package/build/assets/condenser-settings-DgQ0rsAf.js +0 -1
- package/build/assets/context-CI9FqkUp.js +0 -1
- package/build/assets/conversation-CayU5Lrr.js +0 -19
- package/build/assets/conversation-erinyBqT.js +0 -1
- package/build/assets/conversation-panel-DiI4q-8-.js +0 -1
- package/build/assets/conversation-service.api-shHWtFwu.js +0 -1
- package/build/assets/conversation-state-store-NEktJKfL.js +0 -1
- package/build/assets/declaration-D9ucT0fq.js +0 -1
- package/build/assets/dist-BCpEDEJq.js +0 -1
- package/build/assets/edit-automation-modal-8y9Uctxo.js +0 -1
- package/build/assets/entry.client-D_wtryHT.js +0 -2
- package/build/assets/files-tab-CxdtgkIe.js +0 -1
- package/build/assets/files-tab-store-DSKUhziI.js +0 -1
- package/build/assets/home-3joHMYSR.js +0 -1
- package/build/assets/index-redirect-BQ_55qN6.js +0 -1
- package/build/assets/install-server-modal-_7l1gcjd.js +0 -1
- package/build/assets/lesson-plan-CHGc-B8Y.js +0 -3
- package/build/assets/llm-not-configured-banner-BMGzpBPV.js +0 -27
- package/build/assets/llm-settings-BRotm_g6.js +0 -1
- package/build/assets/llm-settings-yDgbXP6Q.js +0 -1
- package/build/assets/loader-circle-1XB9nbwF.js +0 -1
- package/build/assets/manage-backends-modal-tfdzTXWU.js +0 -1
- package/build/assets/manifest-bbc1374e.js +0 -1
- package/build/assets/markdown-renderer-z446oW0Z.js +0 -2
- package/build/assets/mcp-Dopstf0t.js +0 -9
- package/build/assets/mcp-settings-redirect-l3Zbmc0F.js +0 -1
- package/build/assets/messages-CsFUrAen.js +0 -41
- package/build/assets/model-selector-sioC8xP4.js +0 -1
- package/build/assets/onboarding-CQh50i2z.js +0 -1
- package/build/assets/option-service.api-DjPvPAtd.js +0 -1
- package/build/assets/organization-service.api-BNc9Kn6n.js +0 -1
- package/build/assets/plus-DKUID4kd.js +0 -1
- package/build/assets/providers-BiWSYwRT.js +0 -1
- package/build/assets/proxy--Uy1iGsW.js +0 -1
- package/build/assets/query-client-config-Ca3tW1AH.js +0 -1
- package/build/assets/root-CRkz_h2T.css +0 -1
- package/build/assets/root-DrHpnAqU.js +0 -2
- package/build/assets/root-layout-Cf7FC9DC.js +0 -2
- package/build/assets/sdk-section-page-COlGKv4E.js +0 -1
- package/build/assets/sdk-settings-schema-Big50zDH.js +0 -1
- package/build/assets/secrets-settings-DYfTc5c8.js +0 -1
- package/build/assets/settings-DRmVFdOc.js +0 -1
- package/build/assets/settings-modal-CeRvS5Bc.js +0 -1
- package/build/assets/settings-service.api-CFt5HmXD.js +0 -1
- package/build/assets/shared-conversation-CBbpyPaD.js +0 -1
- package/build/assets/sidebar-mobile-menu-toggle-SKcwsEtD.js +0 -1
- package/build/assets/suspense-Bqb0V0q1.js +0 -1
- package/build/assets/telemetry-DCFAqpIA.js +0 -2
- package/build/assets/use-acp-credential-form-LjCIhMSK.js +0 -1
- package/build/assets/use-agent-settings-schema-D8x5LJVS.js +0 -1
- package/build/assets/use-config-5zEjywCL.js +0 -1
- package/build/assets/use-create-conversation-pV2eA-e9.js +0 -1
- package/build/assets/use-handle-plan-click-CwN_nNib.js +0 -1
- package/build/assets/use-is-authed-B8eLO-Xq.js +0 -1
- package/build/assets/use-llm-profiles-CWLfWjav.js +0 -1
- package/build/assets/use-runtime-is-ready-Bbory9-s.js +0 -1
- package/build/assets/use-save-settings-Xp8DD-jf.js +0 -1
- package/build/assets/use-settings-0SeqaDeW.js +0 -1
- package/build/assets/useMutation-Dm84WAKR.js +0 -1
- package/build/assets/useQuery-DGRSm7IT.js +0 -1
- package/build/assets/useTranslation-CL6FTf1b.js +0 -1
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~dqseey1n-D_BSEDk4.js +0 -1
- package/build/assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~jfbjdnyv-C5ZIbuq8.js +0 -177
- package/build/assets/vendor~root-layout~home~conversation-panel~conversation~launch~mcp~settings~settings-index~~m3acswdn-CGm-Jxp5.js +0 -48
- package/build/assets/x-CCfDppg5.js +0 -1
- package/dist/api/settings-service/legacy-app-preferences-migration.cjs +0 -2
- package/dist/api/settings-service/legacy-app-preferences-migration.cjs.map +0 -1
- package/dist/api/settings-service/legacy-app-preferences-migration.d.ts +0 -34
- package/dist/api/settings-service/legacy-app-preferences-migration.js +0 -52
- package/dist/api/settings-service/legacy-app-preferences-migration.js.map +0 -1
- package/dist/hooks/query/use-openhands-verified-models.cjs +0 -2
- package/dist/hooks/query/use-openhands-verified-models.cjs.map +0 -1
- package/dist/hooks/query/use-openhands-verified-models.d.ts +0 -1
- package/dist/hooks/query/use-openhands-verified-models.js +0 -14
- package/dist/hooks/query/use-openhands-verified-models.js.map +0 -1
- package/dist/utils/normalize-display-model.cjs +0 -2
- package/dist/utils/normalize-display-model.cjs.map +0 -1
- package/dist/utils/normalize-display-model.d.ts +0 -9
- package/dist/utils/normalize-display-model.js +0 -13
- package/dist/utils/normalize-display-model.js.map +0 -1
- package/dist/utils/openhands-llm.cjs +0 -2
- package/dist/utils/openhands-llm.cjs.map +0 -1
- package/dist/utils/openhands-llm.d.ts +0 -15
- package/dist/utils/openhands-llm.js +0 -15
- package/dist/utils/openhands-llm.js.map +0 -1
- /package/build/assets/{agent-server-ui-style-scope-BwIZYdC1.js → agent-server-ui-style-scope-1MuaCC1k.js} +0 -0
- /package/build/assets/{common-Dh7OqABE.js → common-DqjLSBOt.js} +0 -0
- /package/build/assets/{environment-switch-store-CiurvTtK.js → environment-switch-store-CBXkf5bS.js} +0 -0
- /package/build/assets/{extension-module-card-classes-DP5J6ngE.js → extension-module-card-classes-CVGfXtoL.js} +0 -0
- /package/build/assets/{git-status-mapper-BI8FyUVp.js → git-status-mapper-DVFXF1_X.js} +0 -0
- /package/build/assets/{handle-capture-consent-CPMXU29K.js → handle-capture-consent-BTvatyfE.js} +0 -0
- /package/build/assets/{map-provider-BM2SJarp.js → map-provider-COgsZR9p.js} +0 -0
- /package/build/assets/{objectWithoutPropertiesLoose-DSQKyRhw.js → objectWithoutPropertiesLoose-B80nTzVc.js} +0 -0
- /package/build/assets/{preload-helper-CT1Z6Pdu.js → preload-helper-D_sPnjeL.js} +0 -0
- /package/build/assets/{rolldown-runtime-BFRubm34.js → rolldown-runtime-wFmyQBCi.js} +0 -0
- /package/build/assets/{sdk-settings-field-metadata-p2GVlft7.js → sdk-settings-field-metadata-Cc4D-ut7.js} +0 -0
- /package/build/assets/{settings-wh2sLLJM.js → settings-1287uR2J.js} +0 -0
- /package/build/assets/{vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~nh19ovoo-DJTFnsA1.js → vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~extensions~cg1m3bv7-aUIHudsf.js} +0 -0
- /package/build/assets/{vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ntycl9e1-BmZcy_kH.js → vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ntycl9e1-DPPGSgT1.js} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dist-
|
|
2
|
-
import{a as e}from"./rolldown-runtime-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dist-Dg2JWLGc.js","assets/vendor~conversation-panel~conversation~index-DITarr3F.js","assets/rolldown-runtime-wFmyQBCi.js","assets/vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~ntycl9e1-DPPGSgT1.js","assets/react-uQK8du1l.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{a as e}from"./rolldown-runtime-wFmyQBCi.js";import{t}from"./react-uQK8du1l.js";import{t as n}from"./preload-helper-D_sPnjeL.js";import{t as r}from"./react-dom-BBXlXOZX.js";import{c as i}from"./declaration-Cn-NXHEy.js";import{A as a,D as o,N as s,O as c,P as l,_ as u,a as d,b as f,g as p,h as m,n as h,o as g,p as _,r as v,s as y,t as b,w as x}from"./vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~bok0tgtf-Fd3F3jth.js";import{C as S,D as C,O as w,X as T,Z as E,ct as D,d as O,dt as k,g as A,i as j,l as M,m as ee,t as te,x as ne}from"./vendor~root-layout~home~conversation-panel~conversation~extensions-hub~skills-settings~mcp~~bok0tgtf-BdS6bbw9.js";function re(e,t){if(e!=null){if(o(e)){e(t);return}try{e.current=t}catch{throw Error(`Cannot assign value '${t}' to ref '${e}'`)}}}function ie(...e){return t=>{e.forEach(e=>re(e,t))}}var N=e(t(),1),P=e(r(),1),F=N.createContext(null);function I(e){let{children:t}=e,n=(0,N.useContext)(F),[r,i]=(0,N.useState)(0),a=(0,N.useMemo)(()=>({parent:n,modalCount:r,addModal(){i(e=>e+1),n&&n.addModal()},removeModal(){i(e=>e-1),n&&n.removeModal()}}),[n,r]);return N.createElement(F.Provider,{value:a},t)}function L(){let e=(0,N.useContext)(F);return{modalProviderProps:{"aria-hidden":e&&e.modalCount>0?!0:void 0}}}function R(e){let{modalProviderProps:t}=L();return N.createElement(`div`,{"data-overlay-container":!0,...e,...t})}function z(e){return N.createElement(I,null,N.createElement(R,e))}function B(e){let t=k(),{portalContainer:n=t?null:document.body,...r}=e,{getContainer:i}=j();if(!e.portalContainer&&i&&(n=i()),N.useEffect(()=>{if(n?.closest(`[data-overlay-container]`))throw Error(`An OverlayContainer must not be inside another container. Please change the portalContainer prop.`)},[n]),!n)return null;let a=N.createElement(z,r);return P.createPortal(a,n)}var V=1500,H=500,U={},W=0,G=!1,K=null,q=null;function ae(e={}){let{delay:t=V,closeDelay:n=H}=e,{isOpen:r,open:i,close:a}=te(e),o=(0,N.useMemo)(()=>`${++W}`,[]),s=(0,N.useRef)(null),c=(0,N.useRef)(a),l=()=>{U[o]=f},u=()=>{for(let e in U)e!==o&&(U[e](!0),delete U[e])},d=()=>{s.current&&clearTimeout(s.current),s.current=null,u(),l(),G=!0,i(),K&&=(clearTimeout(K),null),q&&=(clearTimeout(q),null)},f=e=>{e||n<=0?(s.current&&clearTimeout(s.current),s.current=null,c.current()):s.current||=setTimeout(()=>{s.current=null,c.current()},n),K&&=(clearTimeout(K),null),G&&(q&&clearTimeout(q),q=setTimeout(()=>{delete U[o],q=null,G=!1},Math.max(H,n)))},p=()=>{u(),l(),!r&&!G?(K&&clearTimeout(K),K=setTimeout(()=>{K=null,G=!0,d()},t)):r||d()};return(0,N.useEffect)(()=>{c.current=a},[a]),(0,N.useEffect)(()=>()=>{s.current&&clearTimeout(s.current),U[o]&&delete U[o]},[o]),{isOpen:r,open:e=>{!e&&t>0&&!s.current?p():d()},close:f}}function oe(e,t){let n=T(e,{labelable:!0}),{hoverProps:r}=M({onHoverStart:()=>t?.open(!0),onHoverEnd:()=>t?.close()});return{tooltipProps:E(n,r,{role:`tooltip`})}}function se(e,t,n){let{isDisabled:r,trigger:i,shouldCloseOnPress:a=!0}=e,o=D(),s=(0,N.useRef)(!1),c=(0,N.useRef)(!1),l=()=>{(s.current||c.current)&&t.open(c.current)},u=e=>{!s.current&&!c.current&&t.close(e)};(0,N.useEffect)(()=>{let e=e=>{n&&n.current&&e.key===`Escape`&&(e.stopPropagation(),t.close(!0))};if(t.isOpen)return document.addEventListener(`keydown`,e,!0),()=>{document.removeEventListener(`keydown`,e,!0)}},[n,t]);let d=()=>{i!==`focus`&&(ee()===`pointer`?s.current=!0:s.current=!1,l())},f=()=>{i!==`focus`&&(c.current=!1,s.current=!1,u())},p=()=>{a&&(c.current=!1,s.current=!1,u(!0))},m=()=>{A()&&(c.current=!0,l())},h=()=>{c.current=!1,s.current=!1,u(!0)},{hoverProps:g}=M({isDisabled:r,onHoverStart:d,onHoverEnd:f}),{focusableProps:_}=O({isDisabled:r,onFocus:m,onBlur:h},n);return{triggerProps:{"aria-describedby":t.isOpen?o:void 0,...E(_,g,{onPointerDown:p,onKeyDown:p}),tabIndex:void 0},tooltipProps:{id:o}}}function J(e){let t=f(),[n,r]=u(e,_.variantKeys),{ref:i,as:o,isOpen:s,content:d,children:p,defaultOpen:y,onOpenChange:S,isDisabled:C,trigger:w,shouldFlip:T=!0,containerPadding:E=12,placement:D=`top`,delay:O=0,closeDelay:k=500,showArrow:A=!1,offset:j=7,crossOffset:M=0,isDismissable:ee,shouldCloseOnBlur:te=!0,portalContainer:re,isKeyboardDismissDisabled:P=!1,updatePositionDeps:F=[],shouldCloseOnInteractOutside:I,className:L,onClose:R,motionProps:z,classNames:B,...V}=n,H=o||`div`,U=e?.disableAnimation??t?.disableAnimation??!1,W=ae({delay:O,closeDelay:k,isDisabled:C,defaultOpen:y,isOpen:s,onOpenChange:e=>{S?.(e),e||R?.()}}),G=(0,N.useRef)(null),K=(0,N.useRef)(null),q=(0,N.useId)(),J=W.isOpen&&!C;(0,N.useImperativeHandle)(i,()=>l(K));let{triggerProps:Y,tooltipProps:ce}=se({isDisabled:C,trigger:w},W,G),{tooltipProps:X}=oe({isOpen:J,...c(n,ce)},W),{overlayProps:Z,placement:Q,updatePosition:le}=ne({isOpen:J,targetRef:G,placement:g(D),overlayRef:K,offset:A?j+3:j,crossOffset:M,shouldFlip:T,containerPadding:E});h(()=>{F.length&&le()},F);let{overlayProps:ue}=b({isOpen:J,onClose:W.close,isDismissable:ee,shouldCloseOnBlur:te,isKeyboardDismissDisabled:P,shouldCloseOnInteractOutside:I},K),$=(0,N.useMemo)(()=>_({...r,disableAnimation:U,radius:e?.radius??`md`,size:e?.size??`md`,shadow:e?.shadow??`sm`}),[a(r),U,e?.radius,e?.size,e?.shadow]),de=(0,N.useCallback)((e={},t=null)=>({...c(Y,e),ref:ie(t,G),"aria-describedby":J?q:void 0}),[Y,J,q,W]),fe=(0,N.useCallback)(()=>({ref:K,"data-slot":`base`,"data-open":x(J),"data-arrow":x(A),"data-disabled":x(C),"data-placement":v(Q||`top`,D),...c(X,ue,V),style:c(Z.style,V.style,n.style),className:$.base({class:B?.base}),id:q}),[$,J,A,C,Q,D,X,ue,V,Z,n,q]);return{Component:H,content:d,children:p,isOpen:J,triggerRef:G,showArrow:A,portalContainer:re,placement:D,disableAnimation:U,isDisabled:C,motionProps:z,getTooltipContentProps:(0,N.useCallback)(()=>({"data-slot":`content`,"data-open":x(J),"data-arrow":x(A),"data-disabled":x(C),"data-placement":v(Q||`top`,D),className:$.content({class:m(B?.content,L)})}),[$,J,A,C,Q,D,B]),getTriggerProps:de,getTooltipProps:fe}}var Y=i(),ce=()=>n(()=>import(`./dist-Dg2JWLGc.js`).then(e=>e.default),__vite__mapDeps([0,1,2,3,4])),X=p((e,t)=>{let{Component:n,children:r,content:i,isOpen:a,portalContainer:o,placement:l,disableAnimation:u,motionProps:f,getTriggerProps:p,getTooltipProps:m,getTooltipContentProps:h}=J({...e,ref:t}),g;try{if(N.Children.count(r)!==1)throw Error();if(!(0,N.isValidElement)(r))g=(0,Y.jsx)(`p`,{...p(),children:r});else{let e=r,t=e.props.ref??e.ref;g=(0,N.cloneElement)(e,p(e.props,t))}}catch{g=(0,Y.jsx)(`span`,{}),s(`Tooltip must have only one child node. Please, check your code.`)}let{ref:_,id:v,style:b,...x}=m(),T=(0,Y.jsx)(`div`,{ref:_,id:v,style:b,children:(0,Y.jsx)(S.div,{animate:`enter`,exit:`exit`,initial:`exit`,variants:y.scaleSpring,...c(f,x),style:{...d(l)},children:(0,Y.jsx)(n,{...h(),children:i})},`${v}-tooltip-inner`)},`${v}-tooltip-content`);return(0,Y.jsxs)(Y.Fragment,{children:[g,u?a&&(0,Y.jsx)(B,{portalContainer:o,children:(0,Y.jsx)(`div`,{ref:_,id:v,style:b,...x,children:(0,Y.jsx)(n,{...h(),children:i})})}):(0,Y.jsx)(C,{features:ce,children:(0,Y.jsx)(w,{children:a&&(0,Y.jsx)(B,{portalContainer:o,children:T})})})]})});X.displayName=`HeroUI.Tooltip`;var Z=X;export{Z as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-wFmyQBCi.js";function t(e,t){return function(){return e.apply(t,arguments)}}var{toString:n}=Object.prototype,{getPrototypeOf:r}=Object,{iterator:i,toStringTag:a}=Symbol,o=(e=>t=>{let r=n.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),s=e=>(e=e.toLowerCase(),t=>o(t)===e),c=e=>t=>typeof t===e,{isArray:l}=Array,u=c(`undefined`);function d(e){return e!==null&&!u(e)&&e.constructor!==null&&!u(e.constructor)&&h(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}var f=s(`ArrayBuffer`);function p(e){let t;return t=typeof ArrayBuffer<`u`&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&f(e.buffer),t}var m=c(`string`),h=c(`function`),g=c(`number`),_=e=>typeof e==`object`&&!!e,v=e=>e===!0||e===!1,y=e=>{if(o(e)!==`object`)return!1;let t=r(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(a in e)&&!(i in e)},b=e=>{if(!_(e)||d(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},ee=s(`Date`),x=s(`File`),S=e=>!!(e&&e.uri!==void 0),C=e=>e&&e.getParts!==void 0,te=s(`Blob`),ne=s(`FileList`),w=e=>_(e)&&h(e.pipe);function T(){return typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{}}var E=T(),D=E.FormData===void 0?void 0:E.FormData,O=e=>{if(!e)return!1;if(D&&e instanceof D)return!0;let t=r(e);if(!t||t===Object.prototype||!h(e.append))return!1;let n=o(e);return n===`formdata`||n===`object`&&h(e.toString)&&e.toString()===`[object FormData]`},re=s(`URLSearchParams`),[ie,ae,oe,se]=[`ReadableStream`,`Request`,`Response`,`Headers`].map(s),ce=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,``);function k(e,t,{allOwnKeys:n=!1}={}){if(e==null)return;let r,i;if(typeof e!=`object`&&(e=[e]),l(e))for(r=0,i=e.length;r<i;r++)t.call(null,e[r],r,e);else{if(d(e))return;let i=n?Object.getOwnPropertyNames(e):Object.keys(e),a=i.length,o;for(r=0;r<a;r++)o=i[r],t.call(null,e[o],o,e)}}function le(e,t){if(d(e))return null;t=t.toLowerCase();let n=Object.keys(e),r=n.length,i;for(;r-- >0;)if(i=n[r],t===i.toLowerCase())return i;return null}var A=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:global,ue=e=>!u(e)&&e!==A;function de(...e){let{caseless:t,skipUndefined:n}=ue(this)&&this||{},r={},i=(e,i)=>{if(i===`__proto__`||i===`constructor`||i===`prototype`)return;let a=t&&le(r,i)||i,o=j(r,a)?r[a]:void 0;y(o)&&y(e)?r[a]=de(o,e):y(e)?r[a]=de({},e):l(e)?r[a]=e.slice():(!n||!u(e))&&(r[a]=e)};for(let t=0,n=e.length;t<n;t++)e[t]&&k(e[t],i);return r}var fe=(e,n,r,{allOwnKeys:i}={})=>(k(n,(n,i)=>{r&&h(n)?Object.defineProperty(e,i,{__proto__:null,value:t(n,r),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,i,{__proto__:null,value:n,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:i}),e),pe=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),me=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),Object.defineProperty(e.prototype,`constructor`,{__proto__:null,value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,`super`,{__proto__:null,value:t.prototype}),n&&Object.assign(e.prototype,n)},he=(e,t,n,i)=>{let a,o,s,c={};if(t||={},e==null)return t;do{for(a=Object.getOwnPropertyNames(e),o=a.length;o-- >0;)s=a[o],(!i||i(s,e,t))&&!c[s]&&(t[s]=e[s],c[s]=!0);e=n!==!1&&r(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},ge=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;let r=e.indexOf(t,n);return r!==-1&&r===n},_e=e=>{if(!e)return null;if(l(e))return e;let t=e.length;if(!g(t))return null;let n=Array(t);for(;t-- >0;)n[t]=e[t];return n},ve=(e=>t=>e&&t instanceof e)(typeof Uint8Array<`u`&&r(Uint8Array)),ye=(e,t)=>{let n=(e&&e[i]).call(e),r;for(;(r=n.next())&&!r.done;){let n=r.value;t.call(e,n[0],n[1])}},be=(e,t)=>{let n,r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},xe=s(`HTMLFormElement`),Se=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n}),j=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Ce=s(`RegExp`),we=(e,t)=>{let n=Object.getOwnPropertyDescriptors(e),r={};k(n,(n,i)=>{let a;(a=t(n,i,e))!==!1&&(r[i]=a||n)}),Object.defineProperties(e,r)},Te=e=>{we(e,(t,n)=>{if(h(e)&&[`arguments`,`caller`,`callee`].includes(n))return!1;let r=e[n];if(h(r)){if(t.enumerable=!1,`writable`in t){t.writable=!1;return}t.set||=()=>{throw Error(`Can not rewrite read-only method '`+n+`'`)}}})},Ee=(e,t)=>{let n={},r=e=>{e.forEach(e=>{n[e]=!0})};return l(e)?r(e):r(String(e).split(t)),n},De=()=>{},Oe=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function ke(e){return!!(e&&h(e.append)&&e[a]===`FormData`&&e[i])}var Ae=e=>{let t=Array(10),n=(e,r)=>{if(_(e)){if(t.indexOf(e)>=0)return;if(d(e))return e;if(!(`toJSON`in e)){t[r]=e;let i=l(e)?[]:{};return k(e,(e,t)=>{let a=n(e,r+1);!u(a)&&(i[t]=a)}),t[r]=void 0,i}}return e};return n(e,0)},je=s(`AsyncFunction`),Me=e=>e&&(_(e)||h(e))&&h(e.then)&&h(e.catch),Ne=((e,t)=>e?setImmediate:t?((e,t)=>(A.addEventListener(`message`,({source:n,data:r})=>{n===A&&r===e&&t.length&&t.shift()()},!1),n=>{t.push(n),A.postMessage(e,`*`)}))(`axios@${Math.random()}`,[]):e=>setTimeout(e))(typeof setImmediate==`function`,h(A.postMessage)),M={isArray:l,isArrayBuffer:f,isBuffer:d,isFormData:O,isArrayBufferView:p,isString:m,isNumber:g,isBoolean:v,isObject:_,isPlainObject:y,isEmptyObject:b,isReadableStream:ie,isRequest:ae,isResponse:oe,isHeaders:se,isUndefined:u,isDate:ee,isFile:x,isReactNativeBlob:S,isReactNative:C,isBlob:te,isRegExp:Ce,isFunction:h,isStream:w,isURLSearchParams:re,isTypedArray:ve,isFileList:ne,forEach:k,merge:de,extend:fe,trim:ce,stripBOM:pe,inherits:me,toFlatObject:he,kindOf:o,kindOfTest:s,endsWith:ge,toArray:_e,forEachEntry:ye,matchAll:be,isHTMLForm:xe,hasOwnProperty:j,hasOwnProp:j,reduceDescriptors:we,freezeMethods:Te,toObjectSet:Ee,toCamelCase:Se,noop:De,toFiniteNumber:Oe,findKey:le,global:A,isContextDefined:ue,isSpecCompliantForm:ke,toJSONObject:Ae,isAsyncFn:je,isThenable:Me,setImmediate:Ne,asap:typeof queueMicrotask<`u`?queueMicrotask.bind(A):typeof process<`u`&&process.nextTick||Ne,isIterable:e=>e!=null&&h(e[i])},Pe=M.toObjectSet([`age`,`authorization`,`content-length`,`content-type`,`etag`,`expires`,`from`,`host`,`if-modified-since`,`if-unmodified-since`,`last-modified`,`location`,`max-forwards`,`proxy-authorization`,`referer`,`retry-after`,`user-agent`]),Fe=e=>{let t={},n,r,i;return e&&e.split(`
|
|
2
2
|
`).forEach(function(e){i=e.indexOf(`:`),n=e.substring(0,i).trim().toLowerCase(),r=e.substring(i+1).trim(),!(!n||t[n]&&Pe[n])&&(n===`set-cookie`?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+`, `+r:r)}),t},Ie=Symbol(`internals`),Le=/[^\x09\x20-\x7E\x80-\xFF]/g;function Re(e){let t=0,n=e.length;for(;t<n;){let n=e.charCodeAt(t);if(n!==9&&n!==32)break;t+=1}for(;n>t;){let t=e.charCodeAt(n-1);if(t!==9&&t!==32)break;--n}return t===0&&n===e.length?e:e.slice(t,n)}function N(e){return e&&String(e).trim().toLowerCase()}function ze(e){return Re(e.replace(Le,``))}function P(e){return e===!1||e==null?e:M.isArray(e)?e.map(P):ze(String(e))}function Be(e){let t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g,r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}var Ve=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function F(e,t,n,r,i){if(M.isFunction(r))return r.call(this,t,n);if(i&&(t=n),M.isString(t)){if(M.isString(r))return t.indexOf(r)!==-1;if(M.isRegExp(r))return r.test(t)}}function He(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,n)=>t.toUpperCase()+n)}function Ue(e,t){let n=M.toCamelCase(` `+t);[`get`,`set`,`has`].forEach(r=>{Object.defineProperty(e,r+n,{__proto__:null,value:function(e,n,i){return this[r].call(this,t,e,n,i)},configurable:!0})})}var I=class{constructor(e){e&&this.set(e)}set(e,t,n){let r=this;function i(e,t,n){let i=N(t);if(!i)throw Error(`header name must be a non-empty string`);let a=M.findKey(r,i);(!a||r[a]===void 0||n===!0||n===void 0&&r[a]!==!1)&&(r[a||t]=P(e))}let a=(e,t)=>M.forEach(e,(e,n)=>i(e,n,t));if(M.isPlainObject(e)||e instanceof this.constructor)a(e,t);else if(M.isString(e)&&(e=e.trim())&&!Ve(e))a(Fe(e),t);else if(M.isObject(e)&&M.isIterable(e)){let n={},r,i;for(let t of e){if(!M.isArray(t))throw TypeError(`Object iterator must return a key-value pair`);n[i=t[0]]=(r=n[i])?M.isArray(r)?[...r,t[1]]:[r,t[1]]:t[1]}a(n,t)}else e!=null&&i(t,e,n);return this}get(e,t){if(e=N(e),e){let n=M.findKey(this,e);if(n){let e=this[n];if(!t)return e;if(t===!0)return Be(e);if(M.isFunction(t))return t.call(this,e,n);if(M.isRegExp(t))return t.exec(e);throw TypeError(`parser must be boolean|regexp|function`)}}}has(e,t){if(e=N(e),e){let n=M.findKey(this,e);return!!(n&&this[n]!==void 0&&(!t||F(this,this[n],n,t)))}return!1}delete(e,t){let n=this,r=!1;function i(e){if(e=N(e),e){let i=M.findKey(n,e);i&&(!t||F(n,n[i],i,t))&&(delete n[i],r=!0)}}return M.isArray(e)?e.forEach(i):i(e),r}clear(e){let t=Object.keys(this),n=t.length,r=!1;for(;n--;){let i=t[n];(!e||F(this,this[i],i,e,!0))&&(delete this[i],r=!0)}return r}normalize(e){let t=this,n={};return M.forEach(this,(r,i)=>{let a=M.findKey(n,i);if(a){t[a]=P(r),delete t[i];return}let o=e?He(i):String(i).trim();o!==i&&delete t[i],t[o]=P(r),n[o]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){let t=Object.create(null);return M.forEach(this,(n,r)=>{n!=null&&n!==!1&&(t[r]=e&&M.isArray(n)?n.join(`, `):n)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+`: `+t).join(`
|
|
3
3
|
`)}getSetCookie(){return this.get(`set-cookie`)||[]}get[Symbol.toStringTag](){return`AxiosHeaders`}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){let n=new this(e);return t.forEach(e=>n.set(e)),n}static accessor(e){let t=(this[Ie]=this[Ie]={accessors:{}}).accessors,n=this.prototype;function r(e){let r=N(e);t[r]||(Ue(n,e),t[r]=!0)}return M.isArray(e)?e.forEach(r):r(e),this}};I.accessor([`Content-Type`,`Content-Length`,`Accept`,`Accept-Encoding`,`User-Agent`,`Authorization`]),M.reduceDescriptors(I.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),M.freezeMethods(I);var We=`[REDACTED ****]`;function Ge(e){if(M.hasOwnProp(e,`toJSON`))return!0;let t=Object.getPrototypeOf(e);for(;t&&t!==Object.prototype;){if(M.hasOwnProp(t,`toJSON`))return!0;t=Object.getPrototypeOf(t)}return!1}function Ke(e,t){let n=new Set(t.map(e=>String(e).toLowerCase())),r=[],i=e=>{if(typeof e!=`object`||!e||M.isBuffer(e))return e;if(r.indexOf(e)!==-1)return;e instanceof I&&(e=e.toJSON()),r.push(e);let t;if(M.isArray(e))t=[],e.forEach((e,n)=>{let r=i(e);M.isUndefined(r)||(t[n]=r)});else{if(!M.isPlainObject(e)&&Ge(e))return r.pop(),e;t=Object.create(null);for(let[r,a]of Object.entries(e)){let e=n.has(r.toLowerCase())?We:i(a);M.isUndefined(e)||(t[r]=e)}}return r.pop(),t};return i(e)}var L=class e extends Error{static from(t,n,r,i,a,o){let s=new e(t.message,n||t.code,r,i,a);return s.cause=t,s.name=t.name,t.status!=null&&s.status==null&&(s.status=t.status),o&&Object.assign(s,o),s}constructor(e,t,n,r,i){super(e),Object.defineProperty(this,`message`,{__proto__:null,value:e,enumerable:!0,writable:!0,configurable:!0}),this.name=`AxiosError`,this.isAxiosError=!0,t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),i&&(this.response=i,this.status=i.status)}toJSON(){let e=this.config,t=e&&M.hasOwnProp(e,`redact`)?e.redact:void 0,n=M.isArray(t)&&t.length>0?Ke(e,t):M.toJSONObject(e);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:n,code:this.code,status:this.status}}};L.ERR_BAD_OPTION_VALUE=`ERR_BAD_OPTION_VALUE`,L.ERR_BAD_OPTION=`ERR_BAD_OPTION`,L.ECONNABORTED=`ECONNABORTED`,L.ETIMEDOUT=`ETIMEDOUT`,L.ECONNREFUSED=`ECONNREFUSED`,L.ERR_NETWORK=`ERR_NETWORK`,L.ERR_FR_TOO_MANY_REDIRECTS=`ERR_FR_TOO_MANY_REDIRECTS`,L.ERR_DEPRECATED=`ERR_DEPRECATED`,L.ERR_BAD_RESPONSE=`ERR_BAD_RESPONSE`,L.ERR_BAD_REQUEST=`ERR_BAD_REQUEST`,L.ERR_CANCELED=`ERR_CANCELED`,L.ERR_NOT_SUPPORT=`ERR_NOT_SUPPORT`,L.ERR_INVALID_URL=`ERR_INVALID_URL`,L.ERR_FORM_DATA_DEPTH_EXCEEDED=`ERR_FORM_DATA_DEPTH_EXCEEDED`;function R(e){return M.isPlainObject(e)||M.isArray(e)}function qe(e){return M.endsWith(e,`[]`)?e.slice(0,-2):e}function z(e,t,n){return e?e.concat(t).map(function(e,t){return e=qe(e),!n&&t?`[`+e+`]`:e}).join(n?`.`:``):t}function Je(e){return M.isArray(e)&&!e.some(R)}var Ye=M.toFlatObject(M,{},null,function(e){return/^is[A-Z]/.test(e)});function B(e,t,n){if(!M.isObject(e))throw TypeError(`target must be an object`);t||=new FormData,n=M.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!M.isUndefined(t[e])});let r=n.metaTokens,i=n.visitor||d,a=n.dots,o=n.indexes,s=n.Blob||typeof Blob<`u`&&Blob,c=n.maxDepth===void 0?100:n.maxDepth,l=s&&M.isSpecCompliantForm(t);if(!M.isFunction(i))throw TypeError(`visitor must be a function`);function u(e){if(e===null)return``;if(M.isDate(e))return e.toISOString();if(M.isBoolean(e))return e.toString();if(!l&&M.isBlob(e))throw new L(`Blob is not supported. Use a Buffer instead.`);return M.isArrayBuffer(e)||M.isTypedArray(e)?l&&typeof Blob==`function`?new Blob([e]):Buffer.from(e):e}function d(e,n,i){let s=e;if(M.isReactNative(t)&&M.isReactNativeBlob(e))return t.append(z(i,n,a),u(e)),!1;if(e&&!i&&typeof e==`object`){if(M.endsWith(n,`{}`))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(M.isArray(e)&&Je(e)||(M.isFileList(e)||M.endsWith(n,`[]`))&&(s=M.toArray(e)))return n=qe(n),s.forEach(function(e,r){!(M.isUndefined(e)||e===null)&&t.append(o===!0?z([n],r,a):o===null?n:n+`[]`,u(e))}),!1}return R(e)?!0:(t.append(z(i,n,a),u(e)),!1)}let f=[],p=Object.assign(Ye,{defaultVisitor:d,convertValue:u,isVisitable:R});function m(e,n,r=0){if(!M.isUndefined(e)){if(r>c)throw new L(`Object is too deeply nested (`+r+` levels). Max depth: `+c,L.ERR_FORM_DATA_DEPTH_EXCEEDED);if(f.indexOf(e)!==-1)throw Error(`Circular reference detected in `+n.join(`.`));f.push(e),M.forEach(e,function(e,a){(!(M.isUndefined(e)||e===null)&&i.call(t,e,M.isString(a)?a.trim():a,n,p))===!0&&m(e,n?n.concat(a):[a],r+1)}),f.pop()}}if(!M.isObject(e))throw TypeError(`data must be an object`);return m(e),t}function Xe(e){let t={"!":`%21`,"'":`%27`,"(":`%28`,")":`%29`,"~":`%7E`,"%20":`+`};return encodeURIComponent(e).replace(/[!'()~]|%20/g,function(e){return t[e]})}function V(e,t){this._pairs=[],e&&B(e,this,t)}var Ze=V.prototype;Ze.append=function(e,t){this._pairs.push([e,t])},Ze.toString=function(e){let t=e?function(t){return e.call(this,t,Xe)}:Xe;return this._pairs.map(function(e){return t(e[0])+`=`+t(e[1])},``).join(`&`)};function Qe(e){return encodeURIComponent(e).replace(/%3A/gi,`:`).replace(/%24/g,`$`).replace(/%2C/gi,`,`).replace(/%20/g,`+`)}function $e(e,t,n){if(!t)return e;let r=n&&n.encode||Qe,i=M.isFunction(n)?{serialize:n}:n,a=i&&i.serialize,o;if(o=a?a(t,i):M.isURLSearchParams(t)?t.toString():new V(t,i).toString(r),o){let t=e.indexOf(`#`);t!==-1&&(e=e.slice(0,t)),e+=(e.indexOf(`?`)===-1?`?`:`&`)+o}return e}var et=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&=[]}forEach(e){M.forEach(this.handlers,function(t){t!==null&&e(t)})}},tt={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},nt={isBrowser:!0,classes:{URLSearchParams:typeof URLSearchParams<`u`?URLSearchParams:V,FormData:typeof FormData<`u`?FormData:null,Blob:typeof Blob<`u`?Blob:null},protocols:[`http`,`https`,`file`,`blob`,`url`,`data`]},rt=e({hasBrowserEnv:()=>it,hasStandardBrowserEnv:()=>ot,hasStandardBrowserWebWorkerEnv:()=>st,navigator:()=>at,origin:()=>ct}),it=typeof window<`u`&&typeof document<`u`,at=typeof navigator==`object`&&navigator||void 0,ot=it&&(!at||[`ReactNative`,`NativeScript`,`NS`].indexOf(at.product)<0),st=typeof WorkerGlobalScope<`u`&&self instanceof WorkerGlobalScope&&typeof self.importScripts==`function`,ct=it&&window.location.href||`http://localhost`,H={...rt,...nt};function lt(e,t){return B(e,new H.classes.URLSearchParams,{visitor:function(e,t,n,r){return H.isNode&&M.isBuffer(e)?(this.append(t,e.toString(`base64`)),!1):r.defaultVisitor.apply(this,arguments)},...t})}function ut(e){return M.matchAll(/\w+|\[(\w*)]/g,e).map(e=>e[0]===`[]`?``:e[1]||e[0])}function dt(e){let t={},n=Object.keys(e),r,i=n.length,a;for(r=0;r<i;r++)a=n[r],t[a]=e[a];return t}function ft(e){function t(e,n,r,i){let a=e[i++];if(a===`__proto__`)return!0;let o=Number.isFinite(+a),s=i>=e.length;return a=!a&&M.isArray(r)?r.length:a,s?(M.hasOwnProp(r,a)?r[a]=M.isArray(r[a])?r[a].concat(n):[r[a],n]:r[a]=n,!o):((!r[a]||!M.isObject(r[a]))&&(r[a]=[]),t(e,n,r[a],i)&&M.isArray(r[a])&&(r[a]=dt(r[a])),!o)}if(M.isFormData(e)&&M.isFunction(e.entries)){let n={};return M.forEachEntry(e,(e,r)=>{t(ut(e),r,n,0)}),n}return null}var U=(e,t)=>e!=null&&M.hasOwnProp(e,t)?e[t]:void 0;function pt(e,t,n){if(M.isString(e))try{return(t||JSON.parse)(e),M.trim(e)}catch(e){if(e.name!==`SyntaxError`)throw e}return(n||JSON.stringify)(e)}var W={transitional:tt,adapter:[`xhr`,`http`,`fetch`],transformRequest:[function(e,t){let n=t.getContentType()||``,r=n.indexOf(`application/json`)>-1,i=M.isObject(e);if(i&&M.isHTMLForm(e)&&(e=new FormData(e)),M.isFormData(e))return r?JSON.stringify(ft(e)):e;if(M.isArrayBuffer(e)||M.isBuffer(e)||M.isStream(e)||M.isFile(e)||M.isBlob(e)||M.isReadableStream(e))return e;if(M.isArrayBufferView(e))return e.buffer;if(M.isURLSearchParams(e))return t.setContentType(`application/x-www-form-urlencoded;charset=utf-8`,!1),e.toString();let a;if(i){let t=U(this,`formSerializer`);if(n.indexOf(`application/x-www-form-urlencoded`)>-1)return lt(e,t).toString();if((a=M.isFileList(e))||n.indexOf(`multipart/form-data`)>-1){let n=U(this,`env`),r=n&&n.FormData;return B(a?{"files[]":e}:e,r&&new r,t)}}return i||r?(t.setContentType(`application/json`,!1),pt(e)):e}],transformResponse:[function(e){let t=U(this,`transitional`)||W.transitional,n=t&&t.forcedJSONParsing,r=U(this,`responseType`),i=r===`json`;if(M.isResponse(e)||M.isReadableStream(e))return e;if(e&&M.isString(e)&&(n&&!r||i)){let n=!(t&&t.silentJSONParsing)&&i;try{return JSON.parse(e,U(this,`parseReviver`))}catch(e){if(n)throw e.name===`SyntaxError`?L.from(e,L.ERR_BAD_RESPONSE,this,null,U(this,`response`)):e}}return e}],timeout:0,xsrfCookieName:`XSRF-TOKEN`,xsrfHeaderName:`X-XSRF-TOKEN`,maxContentLength:-1,maxBodyLength:-1,env:{FormData:H.classes.FormData,Blob:H.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:`application/json, text/plain, */*`,"Content-Type":void 0}}};M.forEach([`delete`,`get`,`head`,`post`,`put`,`patch`,`query`],e=>{W.headers[e]={}});function mt(e,t){let n=this||W,r=t||n,i=I.from(r.headers),a=r.data;return M.forEach(e,function(e){a=e.call(n,a,i.normalize(),t?t.status:void 0)}),i.normalize(),a}function ht(e){return!!(e&&e.__CANCEL__)}var G=class extends L{constructor(e,t,n){super(e??`canceled`,L.ERR_CANCELED,t,n),this.name=`CanceledError`,this.__CANCEL__=!0}};function gt(e,t,n){let r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new L(`Request failed with status code `+n.status,n.status>=400&&n.status<500?L.ERR_BAD_REQUEST:L.ERR_BAD_RESPONSE,n.config,n.request,n))}function _t(e){let t=/^([-+\w]{1,25}):(?:\/\/)?/.exec(e);return t&&t[1]||``}function vt(e,t){e||=10;let n=Array(e),r=Array(e),i=0,a=0,o;return t=t===void 0?1e3:t,function(s){let c=Date.now(),l=r[a];o||=c,n[i]=s,r[i]=c;let u=a,d=0;for(;u!==i;)d+=n[u++],u%=e;if(i=(i+1)%e,i===a&&(a=(a+1)%e),c-o<t)return;let f=l&&c-l;return f?Math.round(d*1e3/f):void 0}}function yt(e,t){let n=0,r=1e3/t,i,a,o=(t,r=Date.now())=>{n=r,i=null,a&&=(clearTimeout(a),null),e(...t)};return[(...e)=>{let t=Date.now(),s=t-n;s>=r?o(e,t):(i=e,a||=setTimeout(()=>{a=null,o(i)},r-s))},()=>i&&o(i)]}var K=(e,t,n=3)=>{let r=0,i=vt(50,250);return yt(n=>{let a=n.loaded,o=n.lengthComputable?n.total:void 0,s=o==null?a:Math.min(a,o),c=Math.max(0,s-r),l=i(c);r=Math.max(r,s),e({loaded:s,total:o,progress:o?s/o:void 0,bytes:c,rate:l||void 0,estimated:l&&o?(o-s)/l:void 0,event:n,lengthComputable:o!=null,[t?`download`:`upload`]:!0})},n)},bt=(e,t)=>{let n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},xt=e=>(...t)=>M.asap(()=>e(...t)),St=H.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,H.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(H.origin),H.navigator&&/(msie|trident)/i.test(H.navigator.userAgent)):()=>!0,Ct=H.hasStandardBrowserEnv?{write(e,t,n,r,i,a,o){if(typeof document>`u`)return;let s=[`${e}=${encodeURIComponent(t)}`];M.isNumber(n)&&s.push(`expires=${new Date(n).toUTCString()}`),M.isString(r)&&s.push(`path=${r}`),M.isString(i)&&s.push(`domain=${i}`),a===!0&&s.push(`secure`),M.isString(o)&&s.push(`SameSite=${o}`),document.cookie=s.join(`; `)},read(e){if(typeof document>`u`)return null;let t=document.cookie.split(`;`);for(let n=0;n<t.length;n++){let r=t[n].replace(/^\s+/,``),i=r.indexOf(`=`);if(i!==-1&&r.slice(0,i)===e)return decodeURIComponent(r.slice(i+1))}return null},remove(e){this.write(e,``,Date.now()-864e5,`/`)}}:{write(){},read(){return null},remove(){}};function wt(e){return typeof e==`string`?/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e):!1}function Tt(e,t){return t?e.replace(/\/?\/$/,``)+`/`+t.replace(/^\/+/,``):e}function Et(e,t,n){let r=!wt(t);return e&&(r||n===!1)?Tt(e,t):t}var Dt=e=>e instanceof I?{...e}:e;function q(e,t){t||={};let n=Object.create(null);Object.defineProperty(n,`hasOwnProperty`,{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function r(e,t,n,r){return M.isPlainObject(e)&&M.isPlainObject(t)?M.merge.call({caseless:r},e,t):M.isPlainObject(t)?M.merge({},t):M.isArray(t)?t.slice():t}function i(e,t,n,i){if(!M.isUndefined(t))return r(e,t,n,i);if(!M.isUndefined(e))return r(void 0,e,n,i)}function a(e,t){if(!M.isUndefined(t))return r(void 0,t)}function o(e,t){if(!M.isUndefined(t))return r(void 0,t);if(!M.isUndefined(e))return r(void 0,e)}function s(n,i,a){if(M.hasOwnProp(t,a))return r(n,i);if(M.hasOwnProp(e,a))return r(void 0,n)}let c={url:a,method:a,data:a,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,allowedSocketPaths:o,responseEncoding:o,validateStatus:s,headers:(e,t,n)=>i(Dt(e),Dt(t),n,!0)};return M.forEach(Object.keys({...e,...t}),function(r){if(r===`__proto__`||r===`constructor`||r===`prototype`)return;let a=M.hasOwnProp(c,r)?c[r]:i,o=a(M.hasOwnProp(e,r)?e[r]:void 0,M.hasOwnProp(t,r)?t[r]:void 0,r);M.isUndefined(o)&&a!==s||(n[r]=o)}),n}var Ot=[`content-type`,`content-length`];function kt(e,t,n){if(n!==`content-only`){e.set(t);return}Object.entries(t).forEach(([t,n])=>{Ot.includes(t.toLowerCase())&&e.set(t,n)})}var At=e=>encodeURIComponent(e).replace(/%([0-9A-F]{2})/gi,(e,t)=>String.fromCharCode(parseInt(t,16))),jt=e=>{let t=q({},e),n=e=>M.hasOwnProp(t,e)?t[e]:void 0,r=n(`data`),i=n(`withXSRFToken`),a=n(`xsrfHeaderName`),o=n(`xsrfCookieName`),s=n(`headers`),c=n(`auth`),l=n(`baseURL`),u=n(`allowAbsoluteUrls`),d=n(`url`);if(t.headers=s=I.from(s),t.url=$e(Et(l,d,u),e.params,e.paramsSerializer),c&&s.set(`Authorization`,`Basic `+btoa((c.username||``)+`:`+(c.password?At(c.password):``))),M.isFormData(r)&&(H.hasStandardBrowserEnv||H.hasStandardBrowserWebWorkerEnv?s.setContentType(void 0):M.isFunction(r.getHeaders)&&kt(s,r.getHeaders(),n(`formDataHeaderPolicy`))),H.hasStandardBrowserEnv&&(M.isFunction(i)&&(i=i(t)),i===!0||i==null&&St(t.url))){let e=a&&o&&Ct.read(o);e&&s.set(a,e)}return t},Mt=typeof XMLHttpRequest<`u`&&function(e){return new Promise(function(t,n){let r=jt(e),i=r.data,a=I.from(r.headers).normalize(),{responseType:o,onUploadProgress:s,onDownloadProgress:c}=r,l,u,d,f,p;function m(){f&&f(),p&&p(),r.cancelToken&&r.cancelToken.unsubscribe(l),r.signal&&r.signal.removeEventListener(`abort`,l)}let h=new XMLHttpRequest;h.open(r.method.toUpperCase(),r.url,!0),h.timeout=r.timeout;function g(){if(!h)return;let r=I.from(`getAllResponseHeaders`in h&&h.getAllResponseHeaders());gt(function(e){t(e),m()},function(e){n(e),m()},{data:!o||o===`text`||o===`json`?h.responseText:h.response,status:h.status,statusText:h.statusText,headers:r,config:e,request:h}),h=null}`onloadend`in h?h.onloadend=g:h.onreadystatechange=function(){!h||h.readyState!==4||h.status===0&&!(h.responseURL&&h.responseURL.startsWith(`file:`))||setTimeout(g)},h.onabort=function(){h&&=(n(new L(`Request aborted`,L.ECONNABORTED,e,h)),m(),null)},h.onerror=function(t){let r=new L(t&&t.message?t.message:`Network Error`,L.ERR_NETWORK,e,h);r.event=t||null,n(r),m(),h=null},h.ontimeout=function(){let t=r.timeout?`timeout of `+r.timeout+`ms exceeded`:`timeout exceeded`,i=r.transitional||tt;r.timeoutErrorMessage&&(t=r.timeoutErrorMessage),n(new L(t,i.clarifyTimeoutError?L.ETIMEDOUT:L.ECONNABORTED,e,h)),m(),h=null},i===void 0&&a.setContentType(null),`setRequestHeader`in h&&M.forEach(a.toJSON(),function(e,t){h.setRequestHeader(t,e)}),M.isUndefined(r.withCredentials)||(h.withCredentials=!!r.withCredentials),o&&o!==`json`&&(h.responseType=r.responseType),c&&([d,p]=K(c,!0),h.addEventListener(`progress`,d)),s&&h.upload&&([u,f]=K(s),h.upload.addEventListener(`progress`,u),h.upload.addEventListener(`loadend`,f)),(r.cancelToken||r.signal)&&(l=t=>{h&&=(n(!t||t.type?new G(null,e,h):t),h.abort(),m(),null)},r.cancelToken&&r.cancelToken.subscribe(l),r.signal&&(r.signal.aborted?l():r.signal.addEventListener(`abort`,l)));let _=_t(r.url);if(_&&!H.protocols.includes(_)){n(new L(`Unsupported protocol `+_+`:`,L.ERR_BAD_REQUEST,e));return}h.send(i||null)})},Nt=(e,t)=>{let{length:n}=e=e?e.filter(Boolean):[];if(t||n){let n=new AbortController,r,i=function(e){if(!r){r=!0,o();let t=e instanceof Error?e:this.reason;n.abort(t instanceof L?t:new G(t instanceof Error?t.message:t))}},a=t&&setTimeout(()=>{a=null,i(new L(`timeout of ${t}ms exceeded`,L.ETIMEDOUT))},t),o=()=>{e&&=(a&&clearTimeout(a),a=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(i):e.removeEventListener(`abort`,i)}),null)};e.forEach(e=>e.addEventListener(`abort`,i));let{signal:s}=n;return s.unsubscribe=()=>M.asap(o),s}},Pt=function*(e,t){let n=e.byteLength;if(!t||n<t){yield e;return}let r=0,i;for(;r<n;)i=r+t,yield e.slice(r,i),r=i},Ft=async function*(e,t){for await(let n of It(e))yield*Pt(n,t)},It=async function*(e){if(e[Symbol.asyncIterator]){yield*e;return}let t=e.getReader();try{for(;;){let{done:e,value:n}=await t.read();if(e)break;yield n}}finally{await t.cancel()}},Lt=(e,t,n,r)=>{let i=Ft(e,t),a=0,o,s=e=>{o||(o=!0,r&&r(e))};return new ReadableStream({async pull(e){try{let{done:t,value:r}=await i.next();if(t){s(),e.close();return}let o=r.byteLength;n&&n(a+=o),e.enqueue(new Uint8Array(r))}catch(e){throw s(e),e}},cancel(e){return s(e),i.return()}},{highWaterMark:2})};function Rt(e){if(!e||typeof e!=`string`||!e.startsWith(`data:`))return 0;let t=e.indexOf(`,`);if(t<0)return 0;let n=e.slice(5,t),r=e.slice(t+1);if(/;base64/i.test(n)){let e=r.length,t=r.length;for(let n=0;n<t;n++)if(r.charCodeAt(n)===37&&n+2<t){let t=r.charCodeAt(n+1),i=r.charCodeAt(n+2);(t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102)&&(i>=48&&i<=57||i>=65&&i<=70||i>=97&&i<=102)&&(e-=2,n+=2)}let n=0,i=t-1,a=e=>e>=2&&r.charCodeAt(e-2)===37&&r.charCodeAt(e-1)===51&&(r.charCodeAt(e)===68||r.charCodeAt(e)===100);i>=0&&(r.charCodeAt(i)===61?(n++,i--):a(i)&&(n++,i-=3)),n===1&&i>=0&&(r.charCodeAt(i)===61||a(i))&&n++;let o=Math.floor(e/4)*3-(n||0);return o>0?o:0}if(typeof Buffer<`u`&&typeof Buffer.byteLength==`function`)return Buffer.byteLength(r,`utf8`);let i=0;for(let e=0,t=r.length;e<t;e++){let n=r.charCodeAt(e);if(n<128)i+=1;else if(n<2048)i+=2;else if(n>=55296&&n<=56319&&e+1<t){let t=r.charCodeAt(e+1);t>=56320&&t<=57343?(i+=4,e++):i+=3}else i+=3}return i}var zt=`1.16.0`,Bt=64*1024,{isFunction:J}=M,Vt=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Ht=e=>{let t=M.global??globalThis,{ReadableStream:n,TextEncoder:r}=t;e=M.merge.call({skipUndefined:!0},{Request:t.Request,Response:t.Response},e);let{fetch:i,Request:a,Response:o}=e,s=i?J(i):typeof fetch==`function`,c=J(a),l=J(o);if(!s)return!1;let u=s&&J(n),d=s&&(typeof r==`function`?(e=>t=>e.encode(t))(new r):async e=>new Uint8Array(await new a(e).arrayBuffer())),f=c&&u&&Vt(()=>{let e=!1,t=new a(H.origin,{body:new n,method:`POST`,get duplex(){return e=!0,`half`}}),r=t.headers.has(`Content-Type`);return t.body!=null&&t.body.cancel(),e&&!r}),p=l&&u&&Vt(()=>M.isReadableStream(new o(``).body)),m={stream:p&&(e=>e.body)};s&&[`text`,`arrayBuffer`,`blob`,`formData`,`stream`].forEach(e=>{!m[e]&&(m[e]=(t,n)=>{let r=t&&t[e];if(r)return r.call(t);throw new L(`Response type '${e}' is not supported`,L.ERR_NOT_SUPPORT,n)})});let h=async e=>{if(e==null)return 0;if(M.isBlob(e))return e.size;if(M.isSpecCompliantForm(e))return(await new a(H.origin,{method:`POST`,body:e}).arrayBuffer()).byteLength;if(M.isArrayBufferView(e)||M.isArrayBuffer(e))return e.byteLength;if(M.isURLSearchParams(e)&&(e+=``),M.isString(e))return(await d(e)).byteLength},g=async(e,t)=>M.toFiniteNumber(e.getContentLength())??h(t);return async e=>{let{url:t,method:n,data:s,signal:l,cancelToken:u,timeout:d,onDownloadProgress:h,onUploadProgress:_,responseType:v,headers:y,withCredentials:b=`same-origin`,fetchOptions:ee,maxContentLength:x,maxBodyLength:S}=jt(e),C=M.isNumber(x)&&x>-1,te=M.isNumber(S)&&S>-1,ne=i||fetch;v=v?(v+``).toLowerCase():`text`;let w=Nt([l,u&&u.toAbortSignal()],d),T=null,E=w&&w.unsubscribe&&(()=>{w.unsubscribe()}),D;try{if(C&&typeof t==`string`&&t.startsWith(`data:`)&&Rt(t)>x)throw new L(`maxContentLength size of `+x+` exceeded`,L.ERR_BAD_RESPONSE,e,T);if(te&&n!==`get`&&n!==`head`){let t=await g(y,s);if(typeof t==`number`&&isFinite(t)&&t>S)throw new L(`Request body larger than maxBodyLength limit`,L.ERR_BAD_REQUEST,e,T)}if(_&&f&&n!==`get`&&n!==`head`&&(D=await g(y,s))!==0){let e=new a(t,{method:`POST`,body:s,duplex:`half`}),n;if(M.isFormData(s)&&(n=e.headers.get(`content-type`))&&y.setContentType(n),e.body){let[t,n]=bt(D,K(xt(_)));s=Lt(e.body,Bt,t,n)}}M.isString(b)||(b=b?`include`:`omit`);let i=c&&`credentials`in a.prototype;if(M.isFormData(s)){let e=y.getContentType();e&&/^multipart\/form-data/i.test(e)&&!/boundary=/i.test(e)&&y.delete(`content-type`)}y.set(`User-Agent`,`axios/`+zt,!1);let l={...ee,signal:w,method:n.toUpperCase(),headers:y.normalize().toJSON(),body:s,duplex:`half`,credentials:i?b:void 0};T=c&&new a(t,l);let u=await(c?ne(T,ee):ne(t,l));if(C){let t=M.toFiniteNumber(u.headers.get(`content-length`));if(t!=null&&t>x)throw new L(`maxContentLength size of `+x+` exceeded`,L.ERR_BAD_RESPONSE,e,T)}let d=p&&(v===`stream`||v===`response`);if(p&&u.body&&(h||C||d&&E)){let t={};[`status`,`statusText`,`headers`].forEach(e=>{t[e]=u[e]});let n=M.toFiniteNumber(u.headers.get(`content-length`)),[r,i]=h&&bt(n,K(xt(h),!0))||[],a=0;u=new o(Lt(u.body,Bt,t=>{if(C&&(a=t,a>x))throw new L(`maxContentLength size of `+x+` exceeded`,L.ERR_BAD_RESPONSE,e,T);r&&r(t)},()=>{i&&i(),E&&E()}),t)}v||=`text`;let O=await m[M.findKey(m,v)||`text`](u,e);if(C&&!p&&!d){let t;if(O!=null&&(typeof O.byteLength==`number`?t=O.byteLength:typeof O.size==`number`?t=O.size:typeof O==`string`&&(t=typeof r==`function`?new r().encode(O).byteLength:O.length)),typeof t==`number`&&t>x)throw new L(`maxContentLength size of `+x+` exceeded`,L.ERR_BAD_RESPONSE,e,T)}return!d&&E&&E(),await new Promise((t,n)=>{gt(t,n,{data:O,headers:I.from(u.headers),status:u.status,statusText:u.statusText,config:e,request:T})})}catch(t){if(E&&E(),w&&w.aborted&&w.reason instanceof L){let n=w.reason;throw n.config=e,T&&(n.request=T),t!==n&&(n.cause=t),n}throw t&&t.name===`TypeError`&&/Load failed|fetch/i.test(t.message)?Object.assign(new L(`Network Error`,L.ERR_NETWORK,e,T,t&&t.response),{cause:t.cause||t}):L.from(t,t&&t.code,e,T,t&&t.response)}}},Ut=new Map,Wt=e=>{let t=e&&e.env||{},{fetch:n,Request:r,Response:i}=t,a=[r,i,n],o=a.length,s,c,l=Ut;for(;o--;)s=a[o],c=l.get(s),c===void 0&&l.set(s,c=o?new Map:Ht(t)),l=c;return c};Wt();var Gt={http:null,xhr:Mt,fetch:{get:Wt}};M.forEach(Gt,(e,t)=>{if(e){try{Object.defineProperty(e,`name`,{__proto__:null,value:t})}catch{}Object.defineProperty(e,`adapterName`,{__proto__:null,value:t})}});var Kt=e=>`- ${e}`,qt=e=>M.isFunction(e)||e===null||e===!1;function Jt(e,t){e=M.isArray(e)?e:[e];let{length:n}=e,r,i,a={};for(let o=0;o<n;o++){r=e[o];let n;if(i=r,!qt(r)&&(i=Gt[(n=String(r)).toLowerCase()],i===void 0))throw new L(`Unknown adapter '${n}'`);if(i&&(M.isFunction(i)||(i=i.get(t))))break;a[n||`#`+o]=i}if(!i){let e=Object.entries(a).map(([e,t])=>`adapter ${e} `+(t===!1?`is not supported by the environment`:`is not available in the build`));throw new L(`There is no suitable adapter to dispatch the request `+(n?e.length>1?`since :
|
|
4
4
|
`+e.map(Kt).join(`
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import{t as e}from"./rolldown-runtime-wFmyQBCi.js";import{O as t,k as n}from"./agent-server-client-options-FoO1qgAQ.js";import{n as r,r as i}from"./mcp-client-ppbYplKX.js";var a=class{constructor(e){this.host=e.host.replace(/\/$/,``),this.apiKey=e.apiKey,this.client=new t({baseUrl:this.host,apiKey:this.apiKey,timeout:e.timeout||6e4})}async searchEvents(e={}){return(await this.client.get(`/api/bash/bash_events/search`,{params:e})).data}async getEvent(e){return(await this.client.get(`/api/bash/bash_events/${e}`)).data}async getEvents(e){return Promise.all(e.map(async e=>{try{return await this.getEvent(e)}catch(e){if(e instanceof n&&e.status===404)return null;throw e}}))}async startCommand(e,t,n){let r=this.normalizeRequest(e,t,n);return(await this.client.post(`/api/bash/start_bash_command`,r)).data}async executeCommand(e,t,n){let r=this.normalizeRequest(e,t,n);return(await this.client.post(`/api/bash/execute_bash_command`,r,{timeout:((r.timeout||30)+10)*1e3})).data}async clearEvents(){return(await this.client.delete(`/api/bash/bash_events`)).data}close(){this.client.close()}normalizeRequest(e,t,n){return typeof e==`string`?{command:e,...t?{cwd:t}:{},...n===void 0?{}:{timeout:Math.floor(n)}}:{...e,...e.timeout===void 0?{}:{timeout:Math.floor(e.timeout)}}}},o=class{constructor(e){this.host=e.host.replace(/\/$/,``),this.apiKey=e.apiKey,this.client=new t({baseUrl:this.host,apiKey:this.apiKey,timeout:e.timeout||6e4})}async searchSubdirectories(e,t={}){return(await this.client.get(`/api/file/search_subdirs`,{params:{path:e,page_id:t.pageId,limit:t.limit}})).data}async getHome(){return(await this.client.get(`/api/file/home`)).data}async downloadFile(e){return(await this.client.get(`/api/file/download`,{params:{path:e},responseType:`arrayBuffer`})).data}async downloadTextFile(e){return new TextDecoder().decode(await this.downloadFile(e))}async uploadFile(e,t,n){let r=new FormData,i=typeof File>`u`?void 0:File;return i&&e instanceof i?r.append(`file`,e,n||e.name):e instanceof Blob?r.append(`file`,e,n||`blob-file`):r.append(`file`,new Blob([e],{type:`text/plain`}),n||`text-file.txt`),(await this.client.post(`/api/file/upload`,r,{params:{path:t}})).data}async uploadTextFile(e,t,n){return this.uploadFile(e,t,n)}async downloadTrajectory(e){return(await this.client.get(`/api/file/download-trajectory/${encodeURIComponent(e)}`,{responseType:`blob`})).data}close(){this.client.close()}},s=class{constructor(e){this.host=e.host.replace(/\/$/,``),this.apiKey=e.apiKey,this.client=new t({baseUrl:this.host,apiKey:this.apiKey,timeout:e.timeout||6e4})}async getUrl(e={}){return(await this.client.get(`/api/vscode/url`,{params:{...e.baseUrl?{base_url:e.baseUrl}:{},...e.workspaceDir?{workspace_dir:e.workspaceDir}:{}}})).data.url}async getStatus(){return(await this.client.get(`/api/vscode/status`)).data}close(){this.client.close()}},c=class{constructor(e){this.host=e.host.replace(/\/$/,``),this.apiKey=e.apiKey,this.client=new t({baseUrl:this.host,apiKey:this.apiKey,timeout:e.timeout||6e4})}async getSharedConversations(e){return(await this.client.get(`/api/shared-conversations`,{params:{ids:e}})).data}async getSharedConversation(e){return(await this.getSharedConversations([e]))[0]??null}async searchSharedEvents(e){return(await this.client.get(`/api/shared-events/search`,{params:{conversation_id:e.conversationId,limit:e.limit,page_id:e.pageId}})).data}close(){this.client.close()}},l=class{constructor(e){this.host=e.host.replace(/\/$/,``),this.apiKey=e.apiKey,this.client=new t({baseUrl:this.host,apiKey:this.apiKey,timeout:e.timeout||6e4})}async listWorkspaces(){return await this.ensureWorkspacesSupported(),(await this.client.get(`/api/workspaces`)).data}async addWorkspaces(e){return await this.ensureWorkspacesSupported(),(await this.client.post(`/api/workspaces`,{workspaces:e})).data}async deleteWorkspace(e){return await this.ensureWorkspacesSupported(),(await this.client.delete(`/api/workspaces`,{params:{path:e}})).data}async addWorkspaceParents(e){return await this.ensureWorkspacesSupported(),(await this.client.post(`/api/workspaces/parents`,{parents:e})).data}async deleteWorkspaceParent(e){return await this.ensureWorkspacesSupported(),(await this.client.delete(`/api/workspaces/parents`,{params:{path:e}})).data}close(){this.client.close()}async ensureWorkspacesSupported(){await i(this.client,r.workspaces)}},u=e(((e,t)=>{t.exports=function(){throw Error(`ws does not work in the browser. Browser clients must use the native WebSocket object`)}}));if(typeof window<`u`&&window.WebSocket)window.WebSocket;else try{u()}catch{}var d=class{constructor(e,n){this.cachedEvents=[],this.cachedEventIds=new Set,this.client=e instanceof t?e:new t(e),this.conversationId=n}async search(e={}){let t={limit:e.limit??100};return e.page_id&&(t.page_id=e.page_id),e.kind&&(t.kind=e.kind),e.source&&(t.source=e.source),e.body&&(t.body=e.body),e.sort_order&&(t.sort_order=e.sort_order),e.timestamp__gte&&(t.timestamp__gte=e.timestamp__gte),e.timestamp__lt&&(t.timestamp__lt=e.timestamp__lt),(await this.client.get(`/api/conversations/${this.conversationId}/events/search`,{params:t})).data}async count(e={}){let t={};return e.kind&&(t.kind=e.kind),e.source&&(t.source=e.source),e.body&&(t.body=e.body),e.timestamp__gte&&(t.timestamp__gte=e.timestamp__gte),e.timestamp__lt&&(t.timestamp__lt=e.timestamp__lt),(await this.client.get(`/api/conversations/${this.conversationId}/events/count`,{params:t})).data}async getEventById(e){return(await this.client.get(`/api/conversations/${this.conversationId}/events/${e}`)).data}async getEventsById(e){return Promise.all(e.map(async e=>{try{return await this.getEventById(e)}catch(e){if(e instanceof n&&e.status===404)return null;throw e}}))}async addEvent(e){this.cachedEventIds.has(e.id)||(this.cachedEvents.push(e),this.cachedEventIds.add(e.id))}async append(e){await this.addEvent(e)}createDefaultCallback(e){return t=>{this.addEvent(t).catch(t=>{e&&e(t instanceof Error?t:Error(`Error adding event to cache: ${t}`))})}}async length(){return this.cachedEvents.length}async getEvent(e){return this.cachedEvents[e]}async getEvents(e,t){let n=[],r;for(;;){let e={limit:100};r&&(e.page_id=r);let t=(await this.client.get(`/api/conversations/${this.conversationId}/events/search`,{params:e})).data;if(n.push(...t.items),!t.next_page_id)break;r=t.next_page_id}let i=new Set(n.map(e=>e.id)),a=[...n,...this.cachedEvents.filter(e=>!i.has(e.id))];return e===void 0&&t===void 0?a:a.slice(e,t)}async*[Symbol.asyncIterator](){let e=await this.getEvents();for(let t of e)yield t}},f=`__full_state__`,p=class e{constructor(e,t){this.cachedState=null,this.cachedAt=0,this.lock=new m,this.client=e,this.conversationId=t,this._events=new d(e,t)}async getConversationInfo(){return await this.lock.acquire(async()=>{if(this.cachedState!==null&&Date.now()-this.cachedAt<e.CACHE_TTL_MS)return this.cachedState;let t=await this.client.get(`/api/conversations/${this.conversationId}`),n;return n=t.data.full_state?t.data.full_state:t.data,this.cachedState=n,this.cachedAt=Date.now(),n})}async refresh(){return this.cachedState=null,this.getConversationInfo()}async updateStateFromEvent(e){await this.lock.acquire(async()=>{if(e.key===f){this.cachedState===null&&(this.cachedState={});let t=e.value?.full_state??e.value;Object.assign(this.cachedState,t)}else this.cachedState===null&&(this.cachedState={}),this.cachedState[e.key]=e.value;this.cachedAt=Date.now()})}createStateUpdateCallback(e){return t=>{t.kind===`ConversationStateUpdateEvent`&&this.updateStateFromEvent(t).catch(t=>{e&&e(t instanceof Error?t:Error(`Error updating state from event: ${t}`))})}}get events(){return this._events}get id(){return this.conversationId}unwrapState(e){return e.full_state??e}async getExecutionStatus(){let e=await this.getConversationInfo(),t=this.unwrapState(e),n=t.execution_status??t.agent_status;if(n==null)throw Error(`execution_status missing in conversation info: ${JSON.stringify(e)}`);return n}async getAgentStatus(){return this.getExecutionStatus()}async setAgentStatus(e){throw Error(`Setting execution_status on RemoteState has no effect. Remote execution status is managed server-side. Attempted to set: ${e}`)}async getConfirmationPolicy(){let e=await this.getConversationInfo(),t=this.unwrapState(e).confirmation_policy;if(t==null)throw Error(`confirmation_policy missing in conversation info: ${JSON.stringify(e)}`);return t}async getActivatedKnowledgeSkills(){let e=await this.getConversationInfo();return this.unwrapState(e).activated_knowledge_skills||[]}async getAgent(){let e=await this.getConversationInfo(),t=this.unwrapState(e).agent;if(t==null)throw Error(`agent missing in conversation info: ${JSON.stringify(e)}`);return t}async getWorkspace(){let e=await this.getConversationInfo(),t=this.unwrapState(e).workspace;if(t==null)throw Error(`workspace missing in conversation info: ${JSON.stringify(e)}`);return t}async getPersistenceDir(){let e=await this.getConversationInfo(),t=this.unwrapState(e).persistence_dir;if(t==null)throw Error(`persistence_dir missing in conversation info: ${JSON.stringify(e)}`);return t}async modelDump(){let e=await this.getConversationInfo();return this.unwrapState(e)}async modelDumpJson(){let e=await this.modelDump();return JSON.stringify(e)}};p.CACHE_TTL_MS=2e3;var m=class{constructor(){this.locked=!1,this.queue=[]}async acquire(e){return new Promise((t,n)=>{let r=async()=>{try{t(await e())}catch(e){n(e)}finally{this.locked=!1;let e=this.queue.shift();e&&e()}};this.locked?this.queue.push(r):(this.locked=!0,r())})}},h=class{constructor(e){this.host=e.host.replace(/\/$/,``),this.workingDir=e.workingDir,this.apiKey=e.apiKey,this.client=new t({baseUrl:this.host,apiKey:this.apiKey,timeout:6e4}),this.bash=new a({host:this.host,...this.apiKey?{apiKey:this.apiKey}:{}})}async startWorkspaceSession(e){return await this.client.post(`/api/auth/workspace-session`,void 0,{credentials:`include`}),`${this.host}/api/conversations/${e}/workspace/`}async deleteWorkspaceSession(){await this.client.delete(`/api/auth/workspace-session`,{credentials:`include`,acceptableStatusCodes:new Set([204])})}async executeCommand(e,t,n=30){let r={command:e,timeout:Math.floor(n)};t&&(r.cwd=t);let i=(await this.client.post(`/api/bash/execute_bash_command`,r,{timeout:(n+10)*1e3})).data;return{command:e,exit_code:i.exit_code??0,stdout:i.stdout||``,stderr:i.stderr||``,timeout_occurred:!1}}async fileUpload(e,t,n){let r=new FormData,i,a;e instanceof File?(i=e,a=n||e.name):e instanceof Blob?(i=e,a=n||`blob-file`):(i=new Blob([e],{type:`text/plain`}),a=n||`text-file.txt`),r.append(`file`,i,a);let o=(await this.client.request({method:`POST`,url:`/api/file/upload`,params:{path:t},data:r,timeout:6e4})).data;return{success:o.success??!0,source_path:a,destination_path:t,file_size:o.file_size,error:o.error}}async fileDownload(e){let t=await this.client.get(`/api/file/download`,{params:{path:e},timeout:6e4}),n,r;if(typeof t.data==`string`)n=t.data,r=new Blob([t.data]).size;else if(t.data instanceof ArrayBuffer)n=new Blob([t.data]),r=t.data.byteLength;else if(t.data instanceof Blob)n=t.data,r=t.data.size;else{let e=JSON.stringify(t.data);n=e,r=new Blob([e]).size}return{success:!0,source_path:e,content:n,file_size:r}}async gitChanges(e,t={}){let n={path:e};t.ref!==void 0&&(n.ref=t.ref);try{return(await this.client.get(`/api/git/changes`,{params:n})).data}catch(e){throw Error(`Failed to get git changes: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}async gitDiff(e,t={}){let n={path:e};t.ref!==void 0&&(n.ref=t.ref);try{return(await this.client.get(`/api/git/diff`,{params:n})).data}catch(e){throw Error(`Failed to get git diff: ${e instanceof Error?e.message:String(e)}`,{cause:e})}}async uploadText(e,t,n){return this.fileUpload(e,t,n)}async uploadFileObject(e,t){return this.fileUpload(e,t)}async downloadAsText(e){let t=await this.fileDownload(e);if(!t.success)throw Error(t.error||`Download failed`);return typeof t.content==`string`?t.content:t.content instanceof Blob?await t.content.text():``}async downloadAsBlob(e){let t=await this.fileDownload(e);if(!t.success)throw Error(t.error||`Download failed`);return t.content instanceof Blob?t.content:typeof t.content==`string`?new Blob([t.content],{type:`text/plain`}):new Blob}async downloadAndSave(e,t){let n=await this.downloadAsBlob(e),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=t||e.split(`/`).pop()||`download`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)}close(){this.bash.close(),this.client.close()}},g={execute_command:`Execute a bash command in the terminal within a persistent shell session.
|
|
2
|
+
|
|
3
|
+
### Command Execution
|
|
4
|
+
* One command at a time: You can only execute one bash command at a time. If you need to run multiple commands sequentially, use \`&&\` or \`;\` to chain them together.
|
|
5
|
+
* Persistent session: Commands execute in a persistent shell session where environment variables, virtual environments, and working directory persist between commands.
|
|
6
|
+
|
|
7
|
+
### Best Practices
|
|
8
|
+
* Directory verification: Before creating new directories or files, first verify the parent directory exists and is the correct location.
|
|
9
|
+
* Directory management: Try to maintain working directory by using absolute paths and avoiding excessive use of \`cd\`.
|
|
10
|
+
|
|
11
|
+
### Output Handling
|
|
12
|
+
* Output truncation: If the output exceeds a maximum length, it will be truncated before being returned.`,read_file:`Read the contents of a file from the workspace.
|
|
13
|
+
|
|
14
|
+
Custom editing tool for viewing, creating and editing files in plain-text format.
|
|
15
|
+
* If \`path\` is a text file, returns the file contents with line numbers
|
|
16
|
+
* If \`path\` is a directory, lists non-hidden files and directories up to 2 levels deep
|
|
17
|
+
|
|
18
|
+
Best practices:
|
|
19
|
+
* Use this tool to understand the file's contents and context before making edits
|
|
20
|
+
* Verify the directory path is correct when working with files`,write_file:`Write content to a file in the workspace. Creates the file if it does not exist.
|
|
21
|
+
|
|
22
|
+
When making edits:
|
|
23
|
+
* Ensure the edit results in idiomatic, correct code
|
|
24
|
+
* Do not leave the code in a broken state
|
|
25
|
+
* Always use absolute file paths (starting with /)
|
|
26
|
+
|
|
27
|
+
CRITICAL REQUIREMENTS:
|
|
28
|
+
* The content should be the complete file content, not a diff or patch
|
|
29
|
+
* Ensure proper formatting and indentation`,think:`Use the tool to think about something. It will not obtain new information or make any changes to the repository, but just log the thought. Use it when complex reasoning or brainstorming is needed.
|
|
30
|
+
|
|
31
|
+
Common use cases:
|
|
32
|
+
1. When exploring a repository and discovering the source of a bug, call this tool to brainstorm several unique ways of fixing the bug, and assess which change(s) are likely to be simplest and most effective.
|
|
33
|
+
2. After receiving test results, use this tool to brainstorm ways to fix failing tests.
|
|
34
|
+
3. When planning a complex refactoring, use this tool to outline different approaches and their tradeoffs.
|
|
35
|
+
4. When designing a new feature, use this tool to think through architecture decisions and implementation details.
|
|
36
|
+
5. When debugging a complex issue, use this tool to organize your thoughts and hypotheses.
|
|
37
|
+
|
|
38
|
+
The tool simply logs your thought process for better transparency and does not execute any code or make changes.`,finish:`Signals the completion of the current task or conversation.
|
|
39
|
+
|
|
40
|
+
Use this tool when:
|
|
41
|
+
- You have successfully completed the user's requested task
|
|
42
|
+
- You cannot proceed further due to technical limitations or missing information
|
|
43
|
+
|
|
44
|
+
The message should include:
|
|
45
|
+
- A clear summary of actions taken and their results
|
|
46
|
+
- Any next steps for the user
|
|
47
|
+
- Explanation if you're unable to complete the task
|
|
48
|
+
- Any follow-up questions if more information is needed`};g.execute_command,g.read_file,g.write_file,g.think,g.finish;var _;(function(e){e.PRE_TOOL_USE=`PreToolUse`,e.POST_TOOL_USE=`PostToolUse`,e.USER_PROMPT_SUBMIT=`UserPromptSubmit`,e.SESSION_START=`SessionStart`,e.SESSION_END=`SessionEnd`,e.STOP=`Stop`})(_||={});var v;(function(e){e.COMMAND=`command`,e.PROMPT=`prompt`})(v||={});var y;if((function(e){e.ALLOW=`allow`,e.DENY=`deny`})(y||={}),new Set(`|.*+?[]()^$\\`.split(``)),typeof window<`u`&&window.WebSocket)window.WebSocket;else try{u()}catch{}var b;(function(e){e.TIMESTAMP=`TIMESTAMP`,e.TIMESTAMP_DESC=`TIMESTAMP_DESC`})(b||={}),(function(e){e.REVERSE_TIMESTAMP=`TIMESTAMP_DESC`})(b||={});var x;(function(e){e.IDLE=`idle`,e.RUNNING=`running`,e.PAUSED=`paused`,e.WAITING_FOR_CONFIRMATION=`waiting_for_confirmation`,e.FINISHED=`finished`,e.ERROR=`error`,e.STUCK=`stuck`,e.DELETING=`deleting`})(x||={});var S;(function(e){e.CREATED_AT=`CREATED_AT`,e.UPDATED_AT=`UPDATED_AT`,e.CREATED_AT_DESC=`CREATED_AT_DESC`,e.UPDATED_AT_DESC=`UPDATED_AT_DESC`})(S||={});var C={"claude-code":{key:`claude-code`,display_name:`Claude Code`,default_command:[`npx`,`-y`,`@agentclientprotocol/claude-agent-acp`],api_key_env_var:`ANTHROPIC_API_KEY`,base_url_env_var:`ANTHROPIC_BASE_URL`,default_session_mode:`bypassPermissions`,agent_name_patterns:[`claude-agent`],supports_set_session_model:!1,supports_runtime_model_switch:!0,session_meta_key:`claudeCode`,available_models:[{id:`claude-opus-4-7`,label:`Claude Opus 4.7`},{id:`claude-opus-4-6`,label:`Claude Opus 4.6`},{id:`opus[1m]`,label:`Claude Opus (1M)`},{id:`claude-opus-4-5`,label:`Claude Opus 4.5`},{id:`claude-opus-4-1-20250805`,label:`Claude Opus 4.1`},{id:`claude-sonnet-4-6`,label:`Claude Sonnet 4.6`},{id:`sonnet[1m]`,label:`Claude Sonnet (1M)`},{id:`claude-sonnet-4-5`,label:`Claude Sonnet 4.5`},{id:`claude-haiku-4-5`,label:`Claude Haiku 4.5`},{id:`opusplan`,label:`Opus (plan) + Sonnet (execute)`}],default_model:`claude-opus-4-7`},codex:{key:`codex`,display_name:`Codex`,default_command:[`npx`,`-y`,`@zed-industries/codex-acp`],api_key_env_var:`OPENAI_API_KEY`,base_url_env_var:`OPENAI_BASE_URL`,default_session_mode:`full-access`,agent_name_patterns:[`codex-acp`],supports_set_session_model:!0,supports_runtime_model_switch:!0,session_meta_key:null,available_models:[{id:`gpt-5.5/low`,label:`GPT-5.5 (low)`},{id:`gpt-5.5/medium`,label:`GPT-5.5 (medium)`},{id:`gpt-5.5/high`,label:`GPT-5.5 (high)`},{id:`gpt-5.5/xhigh`,label:`GPT-5.5 (xhigh)`},{id:`gpt-5.4/low`,label:`GPT-5.4 (low)`},{id:`gpt-5.4/medium`,label:`GPT-5.4 (medium)`},{id:`gpt-5.4/high`,label:`GPT-5.4 (high)`},{id:`gpt-5.4/xhigh`,label:`GPT-5.4 (xhigh)`},{id:`gpt-5.4-mini/low`,label:`GPT-5.4 Mini (low)`},{id:`gpt-5.4-mini/medium`,label:`GPT-5.4 Mini (medium)`},{id:`gpt-5.4-mini/high`,label:`GPT-5.4 Mini (high)`},{id:`gpt-5.4-mini/xhigh`,label:`GPT-5.4 Mini (xhigh)`},{id:`gpt-5.3-codex/low`,label:`GPT-5.3 Codex (low)`},{id:`gpt-5.3-codex/medium`,label:`GPT-5.3 Codex (medium)`},{id:`gpt-5.3-codex/high`,label:`GPT-5.3 Codex (high)`},{id:`gpt-5.3-codex/xhigh`,label:`GPT-5.3 Codex (xhigh)`},{id:`gpt-5.2/low`,label:`GPT-5.2 (low)`},{id:`gpt-5.2/medium`,label:`GPT-5.2 (medium)`},{id:`gpt-5.2/high`,label:`GPT-5.2 (high)`},{id:`gpt-5.2/xhigh`,label:`GPT-5.2 (xhigh)`}],default_model:`gpt-5.5/medium`},"gemini-cli":{key:`gemini-cli`,display_name:`Gemini CLI`,default_command:[`npx`,`-y`,`@google/gemini-cli`,`--acp`],api_key_env_var:`GEMINI_API_KEY`,base_url_env_var:`GEMINI_BASE_URL`,default_session_mode:`yolo`,agent_name_patterns:[`gemini-cli`],supports_set_session_model:!0,supports_runtime_model_switch:!0,session_meta_key:null,available_models:[{id:`auto-gemini-3`,label:`Auto (Gemini 3)`},{id:`auto-gemini-2.5`,label:`Auto (Gemini 2.5)`},{id:`gemini-3.1-pro-preview`,label:`Gemini 3.1 Pro (preview)`},{id:`gemini-3-flash-preview`,label:`Gemini 3 Flash (preview)`},{id:`gemini-3.1-flash-lite-preview`,label:`Gemini 3.1 Flash Lite (preview)`},{id:`gemini-2.5-pro`,label:`Gemini 2.5 Pro`},{id:`gemini-2.5-flash`,label:`Gemini 2.5 Flash`},{id:`gemini-2.5-flash-lite`,label:`Gemini 2.5 Flash Lite`}],default_model:`auto-gemini-2.5`}};function w(e){return e?C[e]??null:null}var T=[`acp_command`,`acp_args`,`acp_env`,`acp_model`,`acp_session_mode`,`acp_prompt_timeout`,`acp_server`];export{d as a,s as c,h as i,o as l,w as n,l as o,S as r,c as s,T as t,a as u};
|
|
@@ -1288,14 +1288,15 @@ curl -X POST \\
|
|
|
1288
1288
|
5. Do NOT post comments for code that is acceptable — only comment when action is needed
|
|
1289
1289
|
6. Use suggestion syntax for concrete code changes, but only after verifying the resulting code matches your description (see "How Suggestions Actually Work")
|
|
1290
1290
|
7. Keep the review body brief (details go in inline comments)
|
|
1291
|
-
8. If no issues: post a short approval message with no inline comments`},{name:`github-pr-reviewer`,description:`Create an automation that reviews GitHub pull requests when
|
|
1291
|
+
8. If no issues: post a short approval message with no inline comments`},{name:`github-pr-reviewer`,description:`Create an automation that reviews GitHub pull requests when a configurable trigger label is applied. Polls GitHub deterministically, starts one OpenHands review conversation per label event, inspects full repository and PR context, and posts the final review comment back to GitHub.`,triggers:[`/pr-reviewer:setup`],content:`# GitHub PR Reviewer Automation
|
|
1292
1292
|
|
|
1293
|
-
Create a cron automation that
|
|
1294
|
-
|
|
1293
|
+
Create a cron automation that watches a GitHub repository for pull requests
|
|
1294
|
+
with a review trigger label, starts an OpenHands review conversation once per
|
|
1295
|
+
label event, and posts the AI review as a GitHub comment.
|
|
1295
1296
|
|
|
1296
|
-
The automation script is
|
|
1297
|
-
|
|
1298
|
-
|
|
1297
|
+
The automation script is deterministic: PR discovery, label-event tracking,
|
|
1298
|
+
state persistence, stale-result suppression, and GitHub comment posting are
|
|
1299
|
+
handled in Python. The LLM is invoked only for the review itself.
|
|
1299
1300
|
|
|
1300
1301
|
---
|
|
1301
1302
|
|
|
@@ -1303,12 +1304,12 @@ the review text for PRs not yet seen, never for orchestration.
|
|
|
1303
1304
|
|
|
1304
1305
|
### Required secret
|
|
1305
1306
|
|
|
1306
|
-
Verify that the following secret is set in **OpenHands Settings
|
|
1307
|
+
Verify that the following secret is set in **OpenHands Settings -> Secrets**:
|
|
1307
1308
|
|
|
1308
1309
|
| Secret name | Token type | Minimum permissions |
|
|
1309
1310
|
|---|---|---|
|
|
1310
|
-
| \`GITHUB_PERSONAL_ACCESS_TOKEN\` | Classic PAT | \`repo\`
|
|
1311
|
-
| \`GITHUB_PERSONAL_ACCESS_TOKEN\` | Fine-grained PAT | Pull requests: Read and Write |
|
|
1311
|
+
| \`GITHUB_PERSONAL_ACCESS_TOKEN\` | Classic PAT | \`repo\` for private repos or \`public_repo\` for public repos |
|
|
1312
|
+
| \`GITHUB_PERSONAL_ACCESS_TOKEN\` | Fine-grained PAT | Contents: Read, Metadata: Read, Pull requests: Read, Issues: Read and Write |
|
|
1312
1313
|
|
|
1313
1314
|
Check with:
|
|
1314
1315
|
\`\`\`bash
|
|
@@ -1325,16 +1326,16 @@ If the token is missing or invalid, inform the user and stop.
|
|
|
1325
1326
|
|
|
1326
1327
|
Follow these steps in order.
|
|
1327
1328
|
|
|
1328
|
-
### Step 1
|
|
1329
|
+
### Step 1 - Verify \`GITHUB_PERSONAL_ACCESS_TOKEN\`
|
|
1329
1330
|
|
|
1330
1331
|
Run the \`curl\` check above.
|
|
1331
1332
|
|
|
1332
1333
|
- If absent: *"GITHUB_PERSONAL_ACCESS_TOKEN is not set. Please add it in
|
|
1333
|
-
OpenHands Settings
|
|
1334
|
+
OpenHands Settings -> Secrets."* Stop.
|
|
1334
1335
|
- If the API returns \`{"message": "Bad credentials"}\`: tell the user the
|
|
1335
1336
|
token is invalid and ask them to update it. Stop.
|
|
1336
1337
|
|
|
1337
|
-
### Step 2
|
|
1338
|
+
### Step 2 - Collect repository
|
|
1338
1339
|
|
|
1339
1340
|
Ask: *"Which GitHub repository should be monitored?
|
|
1340
1341
|
(Format: \`owner/repo\`, e.g. \`myorg/backend\`)"*
|
|
@@ -1355,26 +1356,38 @@ else:
|
|
|
1355
1356
|
|
|
1356
1357
|
Record \`REPO = "{owner}/{repo}"\`.
|
|
1357
1358
|
|
|
1358
|
-
### Step 3
|
|
1359
|
+
### Step 3 - Collect trigger label
|
|
1360
|
+
|
|
1361
|
+
Ask: *"Which PR label should trigger a review?
|
|
1362
|
+
(Press Enter for the default: \`openhands-review\`.)"*
|
|
1363
|
+
|
|
1364
|
+
Record the answer as \`TRIGGER_LABEL\`. If the label does not exist yet, tell the
|
|
1365
|
+
user that GitHub will still record the event once the label is created and
|
|
1366
|
+
applied to a PR.
|
|
1367
|
+
|
|
1368
|
+
The automation reviews a PR when it sees the latest matching \`labeled\` event for
|
|
1369
|
+
that label. To request another review later, remove and re-apply the label.
|
|
1370
|
+
|
|
1371
|
+
### Step 4 - Collect review tone
|
|
1359
1372
|
|
|
1360
1373
|
Ask: *"What review tone should the reviewer use?
|
|
1361
|
-
1. Thorough (default)
|
|
1362
|
-
2. Concise
|
|
1363
|
-
3. Friendly
|
|
1374
|
+
1. Thorough (default) - comprehensive coverage of correctness, security, tests, style
|
|
1375
|
+
2. Concise - high-signal only, skips minor style feedback
|
|
1376
|
+
3. Friendly - constructive and encouraging
|
|
1364
1377
|
(Press Enter for Thorough, or type your choice or any custom style description)"*
|
|
1365
1378
|
|
|
1366
1379
|
Map the choice to \`REVIEW_TONE\`:
|
|
1367
1380
|
|
|
1368
1381
|
| Answer | \`REVIEW_TONE\` | \`REVIEW_STYLE_INSTRUCTIONS\` |
|
|
1369
|
-
|
|
1382
|
+
|---|---|---|
|
|
1370
1383
|
| 1 / Enter | \`"thorough"\` | \`""\` |
|
|
1371
1384
|
| 2 | \`"concise"\` | \`""\` |
|
|
1372
1385
|
| 3 | \`"friendly"\` | \`""\` |
|
|
1373
|
-
| Custom text
|
|
1386
|
+
| Custom text, e.g. \`strict but kind\` | \`"thorough"\` | the custom text verbatim |
|
|
1374
1387
|
|
|
1375
|
-
### Step
|
|
1388
|
+
### Step 5 - Collect cron schedule
|
|
1376
1389
|
|
|
1377
|
-
Ask: *"How often should the automation poll for
|
|
1390
|
+
Ask: *"How often should the automation poll for labeled PRs?
|
|
1378
1391
|
(Press Enter for the default: every 5 minutes.
|
|
1379
1392
|
Use a cron expression for a different interval, e.g. \`0 * * * *\` = hourly)"*
|
|
1380
1393
|
|
|
@@ -1382,22 +1395,26 @@ Default: \`*/5 * * * *\`.
|
|
|
1382
1395
|
|
|
1383
1396
|
Record as \`CRON_SCHEDULE\`.
|
|
1384
1397
|
|
|
1385
|
-
### Step
|
|
1398
|
+
### Step 6 - Generate the automation script
|
|
1386
1399
|
|
|
1387
|
-
Read \`scripts/main.py\` from this skill's directory. Apply exactly
|
|
1388
|
-
|
|
1400
|
+
Read \`scripts/main.py\` from this skill's directory. Apply exactly five constant
|
|
1401
|
+
substitutions near the top of the file:
|
|
1389
1402
|
|
|
1390
1403
|
| Placeholder | Replace with |
|
|
1391
1404
|
|---|---|
|
|
1392
1405
|
| \`REPO = "owner/repo"\` | \`REPO = "{owner_repo}"\` |
|
|
1406
|
+
| \`TRIGGER_LABEL = "openhands-review"\` | \`TRIGGER_LABEL = "{trigger_label}"\` |
|
|
1393
1407
|
| \`REVIEW_TONE = "thorough"\` | \`REVIEW_TONE = "{review_tone}"\` |
|
|
1394
1408
|
| \`REVIEW_STYLE_INSTRUCTIONS = ""\` | \`REVIEW_STYLE_INSTRUCTIONS = "{style_instructions}"\` |
|
|
1395
1409
|
| \`DEFAULT_OPENHANDS_URL = "http://localhost:8000"\` | leave unchanged unless the user has a preference |
|
|
1396
1410
|
|
|
1397
|
-
|
|
1411
|
+
Use a safe string writer such as \`json.dumps(value)\` when inserting user-provided
|
|
1412
|
+
repository names, labels, or style instructions into Python string literals.
|
|
1413
|
+
|
|
1414
|
+
Write the customized script to a temporary build directory:
|
|
1398
1415
|
\`\`\`bash
|
|
1399
1416
|
mkdir -p /tmp/pr-reviewer-build
|
|
1400
|
-
# write the
|
|
1417
|
+
# write the customized main.py to /tmp/pr-reviewer-build/main.py
|
|
1401
1418
|
\`\`\`
|
|
1402
1419
|
|
|
1403
1420
|
Validate syntax before packaging:
|
|
@@ -1407,7 +1424,7 @@ python3 -m py_compile /tmp/pr-reviewer-build/main.py && echo "Syntax OK"
|
|
|
1407
1424
|
|
|
1408
1425
|
Fix any syntax errors before proceeding.
|
|
1409
1426
|
|
|
1410
|
-
### Step
|
|
1427
|
+
### Step 7 - Package and upload
|
|
1411
1428
|
|
|
1412
1429
|
Determine the Automation backend URL and auth from the \`<RUNTIME_SERVICES>\`
|
|
1413
1430
|
block in your system context:
|
|
@@ -1427,14 +1444,14 @@ TARBALL_PATH=$(curl -s -X POST \\
|
|
|
1427
1444
|
echo "Uploaded: $TARBALL_PATH"
|
|
1428
1445
|
\`\`\`
|
|
1429
1446
|
|
|
1430
|
-
### Step
|
|
1447
|
+
### Step 8 - Register the automation
|
|
1431
1448
|
|
|
1432
1449
|
\`\`\`bash
|
|
1433
1450
|
curl -s -X POST "\${OPENHANDS_HOST}/api/automation/v1" \\
|
|
1434
1451
|
-H "X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY" \\
|
|
1435
1452
|
-H "Content-Type: application/json" \\
|
|
1436
1453
|
-d "{
|
|
1437
|
-
\\"name\\": \\"GitHub PR Reviewer: {owner}/{repo}\\",
|
|
1454
|
+
\\"name\\": \\"GitHub PR Reviewer: {owner}/{repo} label {trigger_label}\\",
|
|
1438
1455
|
\\"trigger\\": {\\"type\\": \\"cron\\", \\"schedule\\": \\"{cron_schedule}\\"},
|
|
1439
1456
|
\\"tarball_path\\": \\"$TARBALL_PATH\\",
|
|
1440
1457
|
\\"entrypoint\\": \\"python3 main.py\\",
|
|
@@ -1444,7 +1461,7 @@ curl -s -X POST "\${OPENHANDS_HOST}/api/automation/v1" \\
|
|
|
1444
1461
|
|
|
1445
1462
|
Record the returned \`id\`.
|
|
1446
1463
|
|
|
1447
|
-
### Step
|
|
1464
|
+
### Step 9 - Confirm
|
|
1448
1465
|
|
|
1449
1466
|
Tell the user:
|
|
1450
1467
|
|
|
@@ -1452,13 +1469,14 @@ Tell the user:
|
|
|
1452
1469
|
>
|
|
1453
1470
|
> - Automation ID: \`{id}\`
|
|
1454
1471
|
> - Repository: \`{owner}/{repo}\`
|
|
1472
|
+
> - Trigger label: \`{trigger_label}\`
|
|
1455
1473
|
> - Review tone: \`{tone}\`
|
|
1456
1474
|
> - Polling schedule: \`{cron_schedule}\`
|
|
1457
|
-
> - State file: \`~/.openhands/workspaces/automation-state/
|
|
1475
|
+
> - State file: \`~/.openhands/workspaces/automation-state/github_pr_reviewer_label_event_{id}.json\`
|
|
1458
1476
|
>
|
|
1459
|
-
>
|
|
1460
|
-
>
|
|
1461
|
-
>
|
|
1477
|
+
> Apply the \`{trigger_label}\` label to a pull request to queue a review. Each
|
|
1478
|
+
> label event is processed once. To request another review, remove and re-apply
|
|
1479
|
+
> the label.
|
|
1462
1480
|
|
|
1463
1481
|
---
|
|
1464
1482
|
|
|
@@ -1466,36 +1484,37 @@ Tell the user:
|
|
|
1466
1484
|
|
|
1467
1485
|
Each cron run executes \`main.py\`, which:
|
|
1468
1486
|
|
|
1469
|
-
1.
|
|
1470
|
-
2.
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
-
|
|
1475
|
-
- Skips
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
- Records the
|
|
1483
|
-
5.
|
|
1484
|
-
-
|
|
1485
|
-
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1487
|
+
1. Loads state from the JSON file (see \`references/state-schema.md\`).
|
|
1488
|
+
2. Resolves and validates \`GITHUB_PERSONAL_ACCESS_TOKEN\` and repository access.
|
|
1489
|
+
3. Lists open PRs, newest-updated first.
|
|
1490
|
+
4. For each open PR carrying \`TRIGGER_LABEL\`:
|
|
1491
|
+
- Refetches current PR metadata to avoid acting on stale list data.
|
|
1492
|
+
- Finds the latest matching GitHub \`labeled\` issue event.
|
|
1493
|
+
- Skips the event if it has already been tracked.
|
|
1494
|
+
- Starts an OpenHands conversation with a review prompt that includes PR
|
|
1495
|
+
metadata, the exact head SHA, label event details, and instructions to
|
|
1496
|
+
clone the repo, inspect PR discussion, review comments, changed files,
|
|
1497
|
+
diff, and surrounding code.
|
|
1498
|
+
- Posts an acknowledgement comment with the label event, head SHA, and
|
|
1499
|
+
conversation link.
|
|
1500
|
+
- Records the label-event review in state with \`status: "active"\`.
|
|
1501
|
+
5. For each active review conversation:
|
|
1502
|
+
- Marks it closed without posting if the PR has closed or merged.
|
|
1503
|
+
- Suppresses stale results if the PR head SHA changed after the review was
|
|
1504
|
+
queued.
|
|
1505
|
+
- When the conversation reaches \`idle\`, \`finished\`, \`error\`, or \`stuck\`,
|
|
1506
|
+
posts the agent's final response as a GitHub comment and marks the review
|
|
1507
|
+
closed.
|
|
1508
|
+
6. Saves state atomically and fires the completion callback.
|
|
1490
1509
|
|
|
1491
1510
|
---
|
|
1492
1511
|
|
|
1493
1512
|
## Additional Resources
|
|
1494
1513
|
|
|
1495
|
-
- **\`references/state-schema.md\`**
|
|
1496
|
-
|
|
1497
|
-
- **\`scripts/main.py\`**
|
|
1498
|
-
|
|
1514
|
+
- **\`references/state-schema.md\`** - State JSON schema, field definitions, and
|
|
1515
|
+
review lifecycle diagram.
|
|
1516
|
+
- **\`scripts/main.py\`** - The complete automation script. Customize the five
|
|
1517
|
+
constants at the top before packaging.
|
|
1499
1518
|
|
|
1500
1519
|
---
|
|
1501
1520
|
|
|
@@ -1503,12 +1522,12 @@ Each cron run executes \`main.py\`, which:
|
|
|
1503
1522
|
|
|
1504
1523
|
| Symptom | Likely cause | Fix |
|
|
1505
1524
|
|---|---|---|
|
|
1506
|
-
| Bot never
|
|
1507
|
-
| "Bad credentials" in run logs | Token expired | Rotate and update
|
|
1525
|
+
| Bot never queues reviews | Trigger label not present or no matching \`labeled\` event | Apply the configured label to the PR |
|
|
1526
|
+
| "Bad credentials" in run logs | Token expired | Rotate and update \`GITHUB_PERSONAL_ACCESS_TOKEN\` |
|
|
1508
1527
|
| 404 on repo access | Repo name wrong or no access | Re-check \`owner/repo\` and token permissions |
|
|
1509
|
-
| Same PR reviewed
|
|
1510
|
-
| Review never
|
|
1511
|
-
|
|
|
1528
|
+
| Same PR not reviewed after new commits | Label event was already processed | Remove and re-apply the trigger label |
|
|
1529
|
+
| Review result never posts | Conversation still running or stuck | Open the conversation link from the acknowledgement comment |
|
|
1530
|
+
| Stale review suppressed | PR head SHA changed while the agent was reviewing | Re-apply the trigger label after the latest commit |`},{name:`github-repo-monitor`,description:`This skill should be used when the user asks to "monitor a GitHub repository", "watch GitHub for issues or PRs", "respond to @OpenHands mentions on GitHub", "set up an OpenHands GitHub integration", "trigger OpenHands from a GitHub comment", or "poll a GitHub repo for a trigger phrase". Guides the user through creating a cron automation that polls a single repository and starts an OpenHands conversation whenever a configurable trigger phrase is detected in an issue or PR comment.`,triggers:[`/github-monitor:poll`],content:`# GitHub Repository Monitor
|
|
1512
1531
|
|
|
1513
1532
|
Create a cron automation that polls a single GitHub repository on a
|
|
1514
1533
|
configurable schedule (default: every minute).
|
|
@@ -5540,9 +5559,12 @@ detected it:
|
|
|
5540
5559
|
3. Posts a reply in the Slack thread with a link to the conversation.
|
|
5541
5560
|
|
|
5542
5561
|
On every subsequent run:
|
|
5543
|
-
-
|
|
5562
|
+
- New Slack thread replies are forwarded only when they contain the trigger
|
|
5563
|
+
phrase, so unrelated conversation in the thread is ignored.
|
|
5544
5564
|
- When the conversation finishes (or errors), the agent's final response is
|
|
5545
5565
|
posted back to the Slack thread.
|
|
5566
|
+
- Completed conversations stay in a short follow-up watch window, allowing
|
|
5567
|
+
triggered Slack replies to continue the same OpenHands conversation.
|
|
5546
5568
|
|
|
5547
5569
|
> **Local mode only.** This automation targets the local OpenHands setup
|
|
5548
5570
|
> (\`dev:automation\` stack). A cloud/webhook-based variant is out of scope here.
|
|
@@ -5752,20 +5774,26 @@ Each cron run executes \`main.py\`, which runs **10 polling iterations** (every
|
|
|
5752
5774
|
- User token + \`search:read\` + > 1 channel → single \`search.messages\` call
|
|
5753
5775
|
(searches for the trigger phrase across all channels).
|
|
5754
5776
|
- Otherwise → one \`conversations.history\` call per channel.
|
|
5755
|
-
4. **Fetches thread replies** -
|
|
5777
|
+
4. **Fetches due thread replies** - polls at most one tracked thread per
|
|
5778
|
+
iteration using per-thread exponential backoff to stay within Slack rate
|
|
5779
|
+
limits.
|
|
5756
5780
|
5. **Processes messages** in chronological order:
|
|
5757
5781
|
- Skips messages already in \`processed_ts\` (dedup across the overlap window).
|
|
5758
5782
|
- Skips bot messages and any \`ts\` in \`bot_message_ts\`.
|
|
5759
|
-
- Reply in a tracked thread
|
|
5760
|
-
|
|
5761
|
-
|
|
5783
|
+
- Reply in a tracked thread whose text contains the trigger phrase → forwards
|
|
5784
|
+
a follow-up request to the existing conversation and resets the follow-up
|
|
5785
|
+
watch window. Replies without the trigger phrase are marked processed and
|
|
5786
|
+
ignored.
|
|
5787
|
+
- Contains trigger phrase outside a tracked conversation → 👀 reaction, create
|
|
5788
|
+
a new conversation, post link.
|
|
5762
5789
|
- Thread replies: agent receives full thread history for context.
|
|
5763
5790
|
- Root messages: agent receives the trigger text only.
|
|
5764
5791
|
6. **Checks conversation statuses** - for each active conversation where
|
|
5765
5792
|
\`time.time() - last_activity > 15 s\`:
|
|
5766
5793
|
- If status is \`idle\`, \`finished\`, \`error\`, or \`stuck\` → fetch the agent's
|
|
5767
5794
|
final response via \`/api/conversations/{id}/agent_final_response\` and post
|
|
5768
|
-
it to the Slack thread. Mark
|
|
5795
|
+
it to the Slack thread. Mark the record \`watching\` for five minutes so
|
|
5796
|
+
triggered follow-up replies can continue the same conversation.
|
|
5769
5797
|
7. **Advances \`last_poll\`** to \`now - 10 s\` (overlap window prevents boundary
|
|
5770
5798
|
races). If a conversation creation failed, pins \`last_poll\` further back to
|
|
5771
5799
|
retry on the next iteration.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./iconBase-
|
|
1
|
+
import{t as e}from"./iconBase-B6CXDDaE.js";function t(t){return e({tag:`svg`,attr:{viewBox:`0 0 512 512`},child:[{tag:`path`,attr:{d:`M503.5 204.6L502.8 202.8L433.1 21.02C431.7 17.45 429.2 14.43 425.9 12.38C423.5 10.83 420.8 9.865 417.9 9.57C415 9.275 412.2 9.653 409.5 10.68C406.8 11.7 404.4 13.34 402.4 15.46C400.5 17.58 399.1 20.13 398.3 22.9L351.3 166.9H160.8L113.7 22.9C112.9 20.13 111.5 17.59 109.6 15.47C107.6 13.35 105.2 11.72 102.5 10.7C99.86 9.675 96.98 9.295 94.12 9.587C91.26 9.878 88.51 10.83 86.08 12.38C82.84 14.43 80.33 17.45 78.92 21.02L9.267 202.8L8.543 204.6C-1.484 230.8-2.72 259.6 5.023 286.6C12.77 313.5 29.07 337.3 51.47 354.2L51.74 354.4L52.33 354.8L158.3 434.3L210.9 474L242.9 498.2C246.6 500.1 251.2 502.5 255.9 502.5C260.6 502.5 265.2 500.1 268.9 498.2L300.9 474L353.5 434.3L460.2 354.4L460.5 354.1C482.9 337.2 499.2 313.5 506.1 286.6C514.7 259.6 513.5 230.8 503.5 204.6z`},child:[]}]})(t)}function n(t){return e({tag:`svg`,attr:{viewBox:`0 0 496 512`},child:[{tag:`path`,attr:{d:`M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z`},child:[]}]})(t)}function r(t){return e({tag:`svg`,attr:{viewBox:`0 0 512 512`},child:[{tag:`path`,attr:{d:`M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z`},child:[]}]})(t)}function i(t){return e({tag:`svg`,attr:{viewBox:`0 0 512 512`},child:[{tag:`path`,attr:{d:`M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z`},child:[]}]})(t)}function a(t){return e({tag:`svg`,attr:{viewBox:`0 0 384 512`},child:[{tag:`path`,attr:{d:`M272 384c9.6-31.9 29.5-59.1 49.2-86.2c0 0 0 0 0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4c0 0 0 0 0 0c19.8 27.1 39.7 54.4 49.2 86.2l160 0zM192 512c44.2 0 80-35.8 80-80l0-16-160 0 0 16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z`},child:[]}]})(t)}function o(t){return e({tag:`svg`,attr:{viewBox:`0 0 512 512`},child:[{tag:`path`,attr:{d:`M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32z`},child:[]}]})(t)}function s(t){return e({tag:`svg`,attr:{viewBox:`0 0 512 512`},child:[{tag:`path`,attr:{d:`M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z`},child:[]}]})(t)}function c(t){return e({tag:`svg`,attr:{viewBox:`0 0 512 512`},child:[{tag:`path`,attr:{d:`M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z`},child:[]}]})(t)}export{n as a,i as c,o as i,c as n,t as o,s as r,a as s,r as t};
|