@openhands/agent-canvas 1.0.0-rc.9 → 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-Dzb4nxxB.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-wXLeJYeM.js → agent-server-client-options-FoO1qgAQ.js} +1 -1
- package/build/assets/agent-server-conversation-service.api-D6Cmbnhd.js +5 -0
- package/build/assets/{agent-settings-Blipgztd.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-Cujm1lCj.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-Da0G6Lwv.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-BYCLWP3d.js → extensions-hub-CkyDPXvn.js} +1 -1
- package/build/assets/{extensions-navigation-3FLKfb6g.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-CMZknx1e.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-D6EtdLBs.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-DKu3CNkH.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-YkOp7QXt.js → planner-tab-jkyaGiRc.js} +1 -1
- package/build/assets/plus-BTCK8WtR.js +1 -0
- package/build/assets/{profiles-client-BjUo3q05.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-WxaZcjRD.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-Skzza9sx.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-BLfmrKRl.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-BekRAssb.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-CgraS-wA.js → skills-client-DsqwQEwj.js} +1 -1
- package/build/assets/{skills-plugins-rIza_fUf.js → skills-plugins-bkwxItAw.js} +1 -1
- package/build/assets/{skills-settings-Dvl7gpEx.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-BFypysgZ.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-BkohEtaN.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-DITv5qV7.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-CSm3kgqy.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-LObNBU3M.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-ykMjd_NG.js → use-settings-nav-items-CLIW2p2n.js} +2 -2
- package/build/assets/{use-skills-_unimM2d.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-C9P88zSo.js → use-tracking-Dph_dRlL.js} +1 -1
- package/build/assets/{use-user-conversation-2jZZ-MLA.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-EUkt_CkZ.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 -2
- 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/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-B2OSC-qe.js +0 -1
- package/build/assets/add-backend-modal-lG8XDYjr.js +0 -1
- package/build/assets/agent-server-adapter-BPpZcLOE.js +0 -5
- package/build/assets/agent-server-conversation-service.api-C4Fc9Jnp.js +0 -1
- package/build/assets/api-key-entry-screen-BarZU9nr.js +0 -1
- package/build/assets/app-settings-CofRfixq.js +0 -1
- package/build/assets/automation-detail-BV4Cn0O8.js +0 -1
- package/build/assets/automations-list-BaJ61q7P.js +0 -1
- package/build/assets/backend-form-modal-B3BCZDPq.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-DzRpAQr4.js +0 -1
- package/build/assets/check-BhnsMsWy.js +0 -1
- package/build/assets/condenser-settings-Bo07FAEi.js +0 -1
- package/build/assets/context-CI9FqkUp.js +0 -1
- package/build/assets/conversation-DDdRyW4z.js +0 -19
- package/build/assets/conversation-panel-Dww2uJOd.js +0 -1
- package/build/assets/conversation-rGQV1Eym.js +0 -1
- package/build/assets/conversation-service.api-ByRiRU1e.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-CpA_JKLY.js +0 -1
- package/build/assets/entry.client-DUpefbBp.js +0 -2
- package/build/assets/files-tab-CBUPwSV1.js +0 -1
- package/build/assets/files-tab-store-DSKUhziI.js +0 -1
- package/build/assets/home-BDCL0Psk.js +0 -1
- package/build/assets/index-redirect-BQ_55qN6.js +0 -1
- package/build/assets/install-server-modal-CWZhBKwH.js +0 -1
- package/build/assets/lesson-plan-y520IDs6.js +0 -3
- package/build/assets/llm-not-configured-banner-CJyURBCm.js +0 -27
- package/build/assets/llm-settings-BW6yW2Go.js +0 -1
- package/build/assets/llm-settings-CiY22Wzi.js +0 -1
- package/build/assets/loader-circle-1XB9nbwF.js +0 -1
- package/build/assets/manage-backends-modal-v5POMal5.js +0 -1
- package/build/assets/manifest-eccb7f46.js +0 -1
- package/build/assets/markdown-renderer-z446oW0Z.js +0 -2
- package/build/assets/mcp-DgPFZ_Dv.js +0 -9
- package/build/assets/mcp-settings-redirect-l3Zbmc0F.js +0 -1
- package/build/assets/messages-Dq6AQ8mp.js +0 -41
- package/build/assets/model-selector-CdZs21EZ.js +0 -1
- package/build/assets/onboarding-Cdwu8QIy.js +0 -1
- package/build/assets/option-service.api-CdYnKVsu.js +0 -1
- package/build/assets/organization-service.api-CzMvXIQT.js +0 -1
- package/build/assets/plus-DKUID4kd.js +0 -1
- package/build/assets/providers-CbpQft-X.js +0 -1
- package/build/assets/proxy-Bx3NeKeo.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-CiNoOVrb.js +0 -2
- package/build/assets/root-layout-DUw-s9LS.js +0 -2
- package/build/assets/sdk-section-page-DPBwwLle.js +0 -1
- package/build/assets/sdk-settings-schema-Big50zDH.js +0 -1
- package/build/assets/secrets-settings-DmpsTC9V.js +0 -1
- package/build/assets/settings-ChsRtIJQ.js +0 -1
- package/build/assets/settings-modal-Cth7Zb-I.js +0 -1
- package/build/assets/settings-service.api-CcpckquT.js +0 -1
- package/build/assets/shared-conversation-Y0C8zqdr.js +0 -1
- package/build/assets/sidebar-mobile-menu-toggle-BvcBXvLY.js +0 -1
- package/build/assets/suspense-Bqb0V0q1.js +0 -1
- package/build/assets/telemetry-CAWBJ_rB.js +0 -2
- package/build/assets/use-acp-credential-form-Dj7Jkhgp.js +0 -1
- package/build/assets/use-agent-settings-schema-Lf_lBAky.js +0 -1
- package/build/assets/use-config-DVU9HaPf.js +0 -1
- package/build/assets/use-create-conversation-CJUAOf1q.js +0 -1
- package/build/assets/use-handle-plan-click-BdcdMWbv.js +0 -1
- package/build/assets/use-is-authed-B8eLO-Xq.js +0 -1
- package/build/assets/use-llm-profiles-BBTR-OsK.js +0 -1
- package/build/assets/use-runtime-is-ready-BOQpqCvp.js +0 -1
- package/build/assets/use-save-settings-7_MLft-Y.js +0 -1
- package/build/assets/use-settings-CNsxccvQ.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-DQE89epK.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
|
@@ -12,35 +12,23 @@ var e = {
|
|
|
12
12
|
"code"
|
|
13
13
|
],
|
|
14
14
|
popularityRank: 100,
|
|
15
|
-
installHint: "Requires Docker because the legacy npm package was deprecated upstream.",
|
|
16
15
|
kind: "mcp",
|
|
17
16
|
defaultConnectionOptionId: "api",
|
|
18
17
|
connectionOptions: [{
|
|
19
18
|
id: "api",
|
|
20
19
|
provider: "mcp",
|
|
21
20
|
transport: {
|
|
22
|
-
kind: "
|
|
23
|
-
|
|
24
|
-
command: "docker",
|
|
25
|
-
args: [
|
|
26
|
-
"run",
|
|
27
|
-
"-i",
|
|
28
|
-
"--rm",
|
|
29
|
-
"-e",
|
|
30
|
-
"GITHUB_PERSONAL_ACCESS_TOKEN",
|
|
31
|
-
"ghcr.io/github/github-mcp-server"
|
|
32
|
-
],
|
|
33
|
-
envFields: [{
|
|
34
|
-
key: "GITHUB_PERSONAL_ACCESS_TOKEN",
|
|
35
|
-
label: "Personal access token",
|
|
36
|
-
type: "password",
|
|
37
|
-
placeholder: "github_pat_...",
|
|
38
|
-
required: !0,
|
|
39
|
-
helperText: "Classic or fine-grained personal access token from GitHub settings.",
|
|
40
|
-
helperLink: "https://github.com/settings/tokens"
|
|
41
|
-
}]
|
|
21
|
+
kind: "shttp",
|
|
22
|
+
url: "https://api.githubcopilot.com/mcp/"
|
|
42
23
|
},
|
|
43
|
-
auth: {
|
|
24
|
+
auth: {
|
|
25
|
+
strategy: "api_key",
|
|
26
|
+
credentialLabel: "Personal access token",
|
|
27
|
+
credentialPlaceholder: "github_pat_...",
|
|
28
|
+
credentialHelp: "Classic or fine-grained personal access token from GitHub settings.",
|
|
29
|
+
credentialSecretName: "GITHUB_PERSONAL_ACCESS_TOKEN",
|
|
30
|
+
saveCredentialAsSecretByDefault: !0
|
|
31
|
+
}
|
|
44
32
|
}]
|
|
45
33
|
};
|
|
46
34
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/github.json"],"sourcesContent":["{\n \"id\": \"github\",\n \"name\": \"GitHub\",\n \"description\": \"Search code, manage issues and pull requests, and inspect repos via the GitHub API.\",\n \"docsUrl\": \"https://github.com/github/github-mcp-server\",\n \"iconBg\": \"var(--oh-surface)\",\n \"keywords\": [\n \"git\",\n \"pr\",\n \"repo\",\n \"issues\",\n \"code\"\n ],\n \"popularityRank\": 100,\n \"
|
|
1
|
+
{"version":3,"file":"github.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/github.json"],"sourcesContent":["{\n \"id\": \"github\",\n \"name\": \"GitHub\",\n \"description\": \"Search code, manage issues and pull requests, and inspect repos via the GitHub API.\",\n \"docsUrl\": \"https://github.com/github/github-mcp-server\",\n \"iconBg\": \"var(--oh-surface)\",\n \"keywords\": [\n \"git\",\n \"pr\",\n \"repo\",\n \"issues\",\n \"code\"\n ],\n \"popularityRank\": 100,\n \"kind\": \"mcp\",\n \"defaultConnectionOptionId\": \"api\",\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"shttp\",\n \"url\": \"https://api.githubcopilot.com/mcp/\"\n },\n \"auth\": {\n \"strategy\": \"api_key\",\n \"credentialLabel\": \"Personal access token\",\n \"credentialPlaceholder\": \"github_pat_...\",\n \"credentialHelp\": \"Classic or fine-grained personal access token from GitHub settings.\",\n \"credentialSecretName\": \"GITHUB_PERSONAL_ACCESS_TOKEN\",\n \"saveCredentialAsSecretByDefault\": true\n }\n }\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -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.
|