@xopcai/xopc 0.0.433 → 0.0.434
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 +5 -5
- package/README.zh-CN.md +5 -5
- package/dist/browser-ext/dist/sidepanel.js +11 -0
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{activity-store-BpYGrRXw.js → activity-store-Cwn_CNwl.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DTgOSv6G.js → agent-avatar-dicebear-Cd23LnJJ.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-display-BUH7ljEo.js → agent-avatar-display-ByzM7u9S.js} +2 -2
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-B_FAikHA.js → agent-defaults-settings-panel-B0i37diS.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-plugin-dialog-DPabZaSE.js → agent-plugin-dialog-XN-tZ-Ox.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-BAPYP1Ka.js → agents-ZDA1OaLv.js} +3 -3
- package/dist/gateway/static/root/assets/{agents-admin-api-CXCAHNPj.js → agents-admin-api-B5lKH_ps.js} +1 -1
- package/dist/gateway/static/root/assets/{api-oIK4hYkJ.js → api-B9fZL-V8.js} +1 -1
- package/dist/gateway/static/root/assets/{api-DMbimMEi.js → api-Djju8qIR.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-BZ3Fy8ZR.js → app-management-settings-panel-IlyzDPJu.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-DsRTj1by.js → appearance-settings-BxdFGob3.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-CxEKiOTA.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-Bg1VTieK.js → archive-plugin-4gEvotPr.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-api-CLPsgcQN.js → automation-api-4fVKv9PJ.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-result-state-CKVnR4KG.js → automation-result-state-m7PeK2kl.js} +1 -1
- package/dist/gateway/static/root/assets/automation-run-list-CJOdy_R2.js +1 -0
- package/dist/gateway/static/root/assets/{automation-task-card-D27Mw66U.js → automation-task-card-DZWhCWJa.js} +3 -3
- package/dist/gateway/static/root/assets/{automations-page-DGNTJ8lN.js → automations-page-CmxICTM4.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-R6YNDdAO.js +9 -0
- package/dist/gateway/static/root/assets/{binary-plugins-CuwSdCG5.js → binary-plugins-69WyJLNW.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-Dtl2BG3t.js → block-editor-DUONDIZR.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automation-inputs-uGK086ag.js → browser-automation-inputs-DL4YPCuN.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-Da_edNNS.js → browser-automations-page-1Aq6XmRs.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-control-api-k3OOX3bS.js → browser-control-api-yjru8E7R.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-C1bSw-Jq.js → browser-settings-page-CvwpT8Um.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-DlHPLld_.js → capabilities-C7lnwKKm.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-CoeuLRt6.js → capabilities-DaeQXJT4.js} +1 -1
- package/dist/gateway/static/root/assets/capabilities-page-B5avAOUM.js +2 -0
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-CtY-bGIi.js → capabilities-settings-panel-_9yCS78i.js} +1 -1
- package/dist/gateway/static/root/assets/capability-links-DeO34GIF.js +1 -0
- package/dist/gateway/static/root/assets/{channels-Cn1MWBL_.js → channels-CoQb4HOF.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-agents-api-BB0biwc7.js → chat-agents-api-BUi_7GRo.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-chart-block-QSvjx4w6.js → chat-chart-block-CcVcKsDZ.js} +1 -1
- package/dist/gateway/static/root/assets/chat-page-BJ8PlDjZ.js +72 -0
- package/dist/gateway/static/root/assets/{chat-terminal-dock-Cd51G9eG.js → chat-terminal-dock-BMXJpPuH.js} +1 -1
- package/dist/gateway/static/root/assets/{command-palette-api-CEG10uE-.js → command-palette-api-luUjQPsh.js} +1 -1
- package/dist/gateway/static/root/assets/{composer-payload-handoff-Bogdq9Hy.js → composer-payload-handoff-B5XNxNCb.js} +1 -1
- package/dist/gateway/static/root/assets/computer-settings-page-CWtdyEJH.js +1 -0
- package/dist/gateway/static/root/assets/connected-providers-grid-2idMtk65.js +1 -0
- package/dist/gateway/static/root/assets/connection-usage-Cm_McddI.js +1 -0
- package/dist/gateway/static/root/assets/connection-usage-guide-Ddh0bfkj.js +1 -0
- package/dist/gateway/static/root/assets/{connector-service-page-k2rjyjrp.js → connector-service-page-C3msXaBk.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-api-DtvB9Cjm.js → connectors-api-NcWECWKg.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-Crb6DILX.js +1 -0
- package/dist/gateway/static/root/assets/{date-picker-CAankdQw.js → date-picker-Cfjq1hD_.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-DjM73fir.js → desktop-pet-ChFn9v-3.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-Rmh-GxHl.js → desktop-pet-settings-DvnVIv25.js} +1 -1
- package/dist/gateway/static/root/assets/{dev-view-store-BgW2Riyk.js → dev-view-store-DQJ61P5L.js} +1 -1
- package/dist/gateway/static/root/assets/{device-pairing-wizard-UdzSpNa5.js → device-pairing-wizard-KxaIL-OX.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-Rkw3f7lG.js → directory-picker-path-field-Drv864uE.js} +1 -1
- package/dist/gateway/static/root/assets/{discussion-annotation-sync-Dudoj_Fz.js → discussion-annotation-sync-DfBRkWtw.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-DxIGAO23.js → extension-debug-page-DAlBIt_R.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-iframe-host-63KpX6IP.js → extension-iframe-host-Bds-5kY_.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-marketplace-api-yXNUkQDA.js → extension-marketplace-api-CZg8nBwW.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-C811A_Ww.js → extension-page-ZTw-oucT.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-provider-C4jLFIgh.js → extension-provider-NKWfjpdP.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-WJSw5MT0.js → extension-settings-page-CT7PPt_q.js} +1 -1
- package/dist/gateway/static/root/assets/{file-preview-surface-zE9AcaHM.js → file-preview-surface-BcLeaSNe.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-D6cc6W6E.js → gateway-config-swr-Cq-ByXL4.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-realtime-BSRNLciy.js → gateway-realtime-DwMd2PCt.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-CHrf6-nR.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-restart-Unun5hRL.js → gateway-restart-DdiVzbkL.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-DP-DV-e5.js → gateway-settings-1QUdNwrZ.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-C8g666Ja.js → gateway-startup-retry-PMJi5mX4.js} +1 -1
- package/dist/gateway/static/root/assets/{global-defaults-api-BObi-1ww.js → global-defaults-api-DgzZh3wX.js} +1 -1
- package/dist/gateway/static/root/assets/{home-page-CIcs7Mzy.js → home-page-Chn7YTiD.js} +2 -2
- package/dist/gateway/static/root/assets/{image-generation-api-C2SqYNyD.js → image-generation-api-CjVpsckq.js} +1 -1
- package/dist/gateway/static/root/assets/{imports-page-C8ezUkOJ.js → imports-page-CJCvZFaQ.js} +1 -1
- package/dist/gateway/static/root/assets/index-DWQ4LbBn.js +11 -0
- package/dist/gateway/static/root/assets/index-iukJWzxG.css +1 -0
- package/dist/gateway/static/root/assets/install-connector-dialog-Bo06Ry3H.js +1 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BRaY4-wA.js → keyboard-shortcuts-settings-BylFJeGu.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-BZtVcjF3.js → local-app-workbench-page-B3MSSFsr.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-MqP4EnJm.js → local-apps-page-BeV86rMJ.js} +1 -1
- package/dist/gateway/static/root/assets/{local-session-drafts-DTq9776a.js → local-session-drafts-jgw8UGsO.js} +2 -2
- package/dist/gateway/static/root/assets/{locale-store-B6OrWgY1.js → locale-store-CAZaC05J.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-hkHBjblX.js → logs-page-BMmSsUP5.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-DoX4eTM3.js → management-settings-Bu7T8ewk.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-DrhYZSmg.js → markdown-view-BatP4qeK.js} +1 -1
- package/dist/gateway/static/root/assets/{mcp-conversation-setup-page-BEp5E6TD.js → mcp-conversation-setup-page-rROtr0UN.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-D987i9Gc.js → media-plugins-88OV72YE.js} +1 -1
- package/dist/gateway/static/root/assets/messages-C7fckbyG.js +3 -0
- package/dist/gateway/static/root/assets/{model-selector-DXm4NS1_.js → model-selector-raBRBkN_.js} +1 -1
- package/dist/gateway/static/root/assets/{models-hub-cache-BLcha5rx.js → models-hub-cache-CzC9y3D0.js} +1 -1
- package/dist/gateway/static/root/assets/{note-detail-panel-Cl851ivY.js → note-detail-panel-BvA8Vkbm.js} +3 -3
- package/dist/gateway/static/root/assets/note-image-lightbox-D6kUDDd5.js +1 -0
- package/dist/gateway/static/root/assets/{notes-api-Ddsf7FVg.js → notes-api-zXpV6UXu.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-DSwA1MU1.js → notes-page-CjYH9Kle.js} +1 -1
- package/dist/gateway/static/root/assets/{oauth-api-CMmu4DzH.js → oauth-api-DmxSaxM1.js} +1 -1
- package/dist/gateway/static/root/assets/{oauth-provider-connect-BkhnftBq.js → oauth-provider-connect-D4Gfs-Ba.js} +1 -1
- package/dist/gateway/static/root/assets/{page-context-capture-button-urhQBRaN.js → page-context-capture-button-Mig3d0UX.js} +1 -1
- package/dist/gateway/static/root/assets/{page-context-draft-BuNUerth.js → page-context-draft-C4IIZaKd.js} +1 -1
- package/dist/gateway/static/root/assets/page-header-store-D7G5utVi.js +1 -0
- package/dist/gateway/static/root/assets/{personal-avatar-B49ueeZO.js → personal-avatar-DLa-CpaK.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-page-f05ceuFn.js → personal-page-l9_vYfdJ.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-settings-panel-DLQxzPYr.js → personal-settings-panel-XSUkgcr2.js} +1 -1
- package/dist/gateway/static/root/assets/phone-dependencies-card-DYwnuVh3.js +1 -0
- package/dist/gateway/static/root/assets/phone-model-connection-2F32QTHA.js +1 -0
- package/dist/gateway/static/root/assets/phone-model-picker-DCVzIr0s.js +1 -0
- package/dist/gateway/static/root/assets/phone-settings-page-DJttE4id.js +1 -0
- package/dist/gateway/static/root/assets/{phone-workspace-store-DbqktZbO.js → phone-workspace-store-Dxp-KhFP.js} +1 -1
- package/dist/gateway/static/root/assets/plugin-details-dialog-tyjAjFjA.js +1 -0
- package/dist/gateway/static/root/assets/{preference-select-fields-BZWqG7pu.js → preference-select-fields-BVP3MhGK.js} +1 -1
- package/dist/gateway/static/root/assets/{product-automation-feedback-DDQUsag7.js → product-automation-feedback-DbJvv92z.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-BkRP_HmA.js → product-open-page-RImqlhCD.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-content-o2Y3VNE7.js → product-preview-content-DxSqrKsg.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-modal-7Ohx-7OR.js → product-preview-modal-Cw8Q8Uom.js} +2 -2
- package/dist/gateway/static/root/assets/{project-detail-page-B2RsSHya.js → project-detail-page-BbyV8EiG.js} +1 -1
- package/dist/gateway/static/root/assets/{project-understanding-BIMouiYX.js → project-understanding-BMKcoUW5.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-C9R5u3tF.js → projects-page-CFsABLvs.js} +1 -1
- package/dist/gateway/static/root/assets/{providers-api-BOCkRZ7X.js → providers-api-CAeXbJNF.js} +1 -1
- package/dist/gateway/static/root/assets/{recording-upload-C6muEHEO.js → recording-upload-CfpllTe5.js} +1 -1
- package/dist/gateway/static/root/assets/{registry-api-Bl2guMRg.js → registry-api-fLOqFyrz.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-BceSMbCs.js → remote-access-hub-BvKOxy0L.js} +1 -1
- package/dist/gateway/static/root/assets/{resource-unavailable-CUNbPkdj.js → resource-unavailable-D15jzjV_.js} +1 -1
- package/dist/gateway/static/root/assets/route-preload-BWpw9qxc.js +2 -0
- package/dist/gateway/static/root/assets/{runtime-tools-api-LopLjgvu.js → runtime-tools-api-D0Nrvuqv.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-9HIPerDP.js → runtime-tools-settings-panel-CA27XgL2.js} +1 -1
- package/dist/gateway/static/root/assets/{service-recommendation-list-CoMI6MB1.js → service-recommendation-list-B0RoYLVT.js} +1 -1
- package/dist/gateway/static/root/assets/session-api-CHRP5Lwf.js +1 -0
- package/dist/gateway/static/root/assets/session-channel-icon-D1ktvt1P.js +1 -0
- package/dist/gateway/static/root/assets/session-identity-label-BP7OIYth.js +1 -0
- package/dist/gateway/static/root/assets/session-manager-DRRWwKE4.js +25 -0
- package/dist/gateway/static/root/assets/{sessions-page-BT0GdXdS.js → sessions-page-uJHS3-6F.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-CZ4J3Kuy.js +1 -0
- package/dist/gateway/static/root/assets/{settings-advanced-section-CEorDLUp.js → settings-advanced-section-D-llwfSj.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-mode-store-C2LZqBES.js → settings-mode-store-BspMKc9N.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-C_Np_6qZ.js → settings-page-XJXcnE1_.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-header-BAN34UQi.js → settings-page-header-LuOJvqNa.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-B5TVFBV2.js → settings-page-layout-CduQ8w4a.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-interaction-page-BYvTJW3_.js → setup-interaction-page-ujpPGl84.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-UY2dH-sK.js → setup-status-panel-BN2aCJUN.js} +1 -1
- package/dist/gateway/static/root/assets/{share-link-dialog-BMcXyzr2.js → share-link-dialog-CTATUaa4.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-UQ6eUM2_.js → share-preview-page-Dq0J3VgS.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-api-DOeDN6Tm.js → shares-api-zegE8pSE.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-W8XhuAoL.js → shares-settings-DXpvsRXq.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-api-Do_c0d9n.js → skill-api-DCL1EN7f.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-list-api-DpHaXI2l.js → skill-list-api-Bv0mmHbu.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-reload-api-DDRd9IJ2.js → skill-reload-api-DPZbadiO.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-CaeJVKhO.js → skills-page-DMC7Gaku.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-DYWlWPJL.js → system-settings-panel-BYFUhlqG.js} +1 -1
- package/dist/gateway/static/root/assets/{task-detail-page-De0qD7xw.js → task-detail-page-DvX9JoEd.js} +3 -3
- package/dist/gateway/static/root/assets/{task-result-evidence-CICR5K1t.js → task-result-evidence-Bxm8-H0B.js} +1 -1
- package/dist/gateway/static/root/assets/{terminal-panel-store-BbWUcQe7.js → terminal-panel-store-Djf9l2qZ.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-TkG5mo0p.js → theme-store-8GFVtotZ.js} +1 -1
- package/dist/gateway/static/root/assets/{tracing-settings-page-CYXEy4EG.js → tracing-settings-page-oWW3SBZ4.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-DquDm6U2.js → tunnel-api-D-mEsSGF.js} +1 -1
- package/dist/gateway/static/root/assets/{understanding-activity-store-Ot3wZ3oQ.js → understanding-activity-store-CvDjsd0I.js} +1 -1
- package/dist/gateway/static/root/assets/{understanding-refresh-store-C5KYFMaC.js → understanding-refresh-store-DzOZJm7A.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-1xFO4smo.js → usage-page-z-o6Uuev.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-HL8XRNR8.js → use-autosave-BVYS8UoK.js} +1 -1
- package/dist/gateway/static/root/assets/{use-composer-attachments-XRlQBdNF.js → use-composer-attachments-lecOV2q5.js} +1 -1
- package/dist/gateway/static/root/assets/{use-file-preview-expanded-CW956CXS.js → use-file-preview-expanded-nd_CuFsd.js} +2 -2
- package/dist/gateway/static/root/assets/{use-personal-profile-202s6tJt.js → use-personal-profile-CQi2ZCxV.js} +1 -1
- package/dist/gateway/static/root/assets/{use-workspace-tree-CjydkmH1.js → use-workspace-tree-BiaddkzX.js} +1 -1
- package/dist/gateway/static/root/assets/{user-model-page-OGPXx3pe.js → user-model-page-Bks1n0Nj.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-CxFu4MEA.js → voice-api-key-field-BbW8NFeZ.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-MHe5Pn-A.js → voice-config-api-jSMzZWWy.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-input-shortcut-events-B9xc1oK8.js → voice-input-shortcut-events-_SgYmx7X.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-transcribe-api-CVEcB6Pe.js → voice-transcribe-api-BJCfiRFU.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-C-JoAg2D.js → work-discovery-overlay-DSTSNyU7.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-page-B5Kx29Ru.js → work-discovery-page-Dd_QJJvb.js} +1 -1
- package/dist/gateway/static/root/assets/{working-directory-picker-modal-DGp9cNzH.js → working-directory-picker-modal-q39BUcJ6.js} +1 -1
- package/dist/gateway/static/root/assets/{workspace-api-HBXn8pL9.js → workspace-api-Di2OmCvz.js} +2 -2
- package/dist/gateway/static/root/assets/workspace-editor-agent-store-B2r9wlix.js +1 -0
- package/dist/gateway/static/root/assets/{workspace-file-preview-dialog-3cpwSG2w.js → workspace-file-preview-dialog-BUGNT765.js} +1 -1
- package/dist/gateway/static/root/assets/{workspace-open-location-menu-D0VOFvuP.js → workspace-open-location-menu-bMSvmQW7.js} +1 -1
- package/dist/gateway/static/root/assets/{xopc-cloud-account-card-BkdW2p3v.js → xopc-cloud-account-card-Bbe19Del.js} +1 -1
- package/dist/gateway/static/root/index.html +87 -85
- package/dist/package.js +1 -1
- package/dist/packages/computer-control-contract/src/index.js +33 -3
- package/dist/packages/gateway-contract/src/session-identity.js +2 -1
- package/dist/packages/gateway-contract/src/session-input-command.js +19 -2
- package/dist/packages/gateway-contract/src/specialists.js +1 -0
- package/dist/src/agent/agent-manager.js +1 -1
- package/dist/src/agent/background-review/run-background-review.js +1 -1
- package/dist/src/agent/embedded/execution-tool-policy.d.ts +1 -1
- package/dist/src/agent/embedded/execution-tool-policy.js +2 -2
- package/dist/src/agent/embedded/run-for-session.js +23 -8
- package/dist/src/agent/embedded/run-turn.js +30 -7
- package/dist/src/agent/embedded/runs.d.ts +2 -2
- package/dist/src/agent/embedded/runs.js +4 -4
- package/dist/src/agent/embedded/session-runner.js +26 -11
- package/dist/src/agent/embedded/tool-search-extension.d.ts +8 -2
- package/dist/src/agent/embedded/tool-search-extension.js +122 -30
- package/dist/src/agent/external-tools/cliProvider.d.ts +10 -9
- package/dist/src/agent/external-tools/cliProvider.js +26 -6
- package/dist/src/agent/external-tools/composio-provider.d.ts +3 -3
- package/dist/src/agent/external-tools/composio-provider.js +8 -5
- package/dist/src/agent/external-tools/discovery.d.ts +47 -0
- package/dist/src/agent/external-tools/discovery.js +56 -0
- package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
- package/dist/src/agent/external-tools/gateway-tools.js +26 -46
- package/dist/src/agent/external-tools/index.d.ts +1 -0
- package/dist/src/agent/external-tools/index.js +7 -0
- package/dist/src/agent/external-tools/personal-request-scope.d.ts +7 -0
- package/dist/src/agent/external-tools/personal-request-scope.js +83 -0
- package/dist/src/agent/external-tools/read-policy.js +5 -4
- package/dist/src/agent/external-tools/service.d.ts +2 -0
- package/dist/src/agent/external-tools/service.js +22 -3
- package/dist/src/agent/external-tools/tool-registry.d.ts +6 -0
- package/dist/src/agent/external-tools/types.d.ts +7 -2
- package/dist/src/agent/inbound/turn-dispatcher.d.ts +1 -1
- package/dist/src/agent/inbound/turn-dispatcher.js +3 -2
- package/dist/src/agent/orchestration/llm-turn-retry.d.ts +1 -1
- package/dist/src/agent/orchestration/llm-turn-retry.js +13 -8
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.d.ts +1 -0
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +3 -1
- package/dist/src/agent/prompt/sections/tooling.js +1 -1
- package/dist/src/agent/service.js +1 -1
- package/dist/src/agent/skills/index.js +1 -1
- package/dist/src/agent/skills/managed-store.js +1 -1
- package/dist/src/agent/skills/skill-manage-ops.js +1 -1
- package/dist/src/agent/tool-manuals/computer.d.ts +1 -1
- package/dist/src/agent/tool-manuals/computer.js +6 -4
- package/dist/src/agent/tool-manuals/phone.d.ts +1 -1
- package/dist/src/agent/tool-manuals/phone.js +4 -4
- package/dist/src/agent/tool-manuals/xopc-configuration.d.ts +1 -1
- package/dist/src/agent/tool-manuals/xopc-configuration.js +4 -2
- package/dist/src/agent/tools/computer-use-tool.js +7 -6
- package/dist/src/agent/tools/delegation-policy.js +1 -0
- package/dist/src/agent/tools/factory.js +4 -2
- package/dist/src/agent/tools/personal-read-tool.js +1 -1
- package/dist/src/agent/tools/phone-use-tool.js +2 -2
- package/dist/src/agent/tools/web.js +22 -3
- package/dist/src/agent/tools/xopc-use-tool.js +2 -2
- package/dist/src/agent-catalog/capabilities.js +2 -2
- package/dist/src/agent-catalog/repository.js +1 -1
- package/dist/src/agent-matching/service.js +2 -2
- package/dist/src/automations/api/routes.js +2 -2
- package/dist/src/automations/capabilities/drafts.js +1 -1
- package/dist/src/automations/capabilities/write.js +1 -1
- package/dist/src/automations/configuration-conversation.js +1 -1
- package/dist/src/browser/providers/browser-ext-install.js +1 -1
- package/dist/src/capabilities/runtime/dispatcher.js +1 -1
- package/dist/src/capabilities/runtime/product.js +1 -1
- package/dist/src/cli/commands/agents.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/cli/commands/onboard/model.js +1 -1
- package/dist/src/cli/utils/init-workspace-core.js +1 -1
- package/dist/src/computer/batch.d.ts +108 -0
- package/dist/src/computer/batch.js +125 -0
- package/dist/src/computer/broker.d.ts +28 -2
- package/dist/src/computer/broker.js +95 -17
- package/dist/src/computer/diagnostics.d.ts +5 -1
- package/dist/src/computer/diagnostics.js +22 -3
- package/dist/src/computer/errors.d.ts +15 -0
- package/dist/src/computer/errors.js +59 -3
- package/dist/src/computer/model-adapter.d.ts +58 -0
- package/dist/src/computer/model-adapter.js +112 -66
- package/dist/src/computer/native-errors.d.ts +2 -0
- package/dist/src/computer/native-errors.js +13 -0
- package/dist/src/computer/program-runtime.d.ts +1 -1
- package/dist/src/computer/program-runtime.js +1 -0
- package/dist/src/computer/runtime.d.ts +11 -0
- package/dist/src/computer/runtime.js +102 -34
- package/dist/src/computer/semantic-actions.js +4 -0
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/config/schema.d.ts +6 -0
- package/dist/src/execution-environments/local-worktree-manager.js +1 -1
- package/dist/src/extensions/agent-plugins/formats.js +2 -1
- package/dist/src/extensions/agent-plugins/inventory.d.ts +2 -0
- package/dist/src/extensions/agent-plugins/inventory.js +4 -1
- package/dist/src/extensions/agent-plugins/skill-catalog.js +1 -1
- package/dist/src/extensions/agent-plugins/validation.d.ts +1 -0
- package/dist/src/extensions/agent-plugins/validation.js +3 -2
- package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/global-defaults-admin.js +1 -1
- package/dist/src/gateway/hono/routes/agents.js +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
- package/dist/src/gateway/hono/routes/notes.js +2 -2
- package/dist/src/gateway/hono/routes/phone-dependencies.js +26 -5
- package/dist/src/gateway/hono/routes/phone-setup.js +43 -17
- package/dist/src/gateway/hono/routes/phone.js +22 -7
- package/dist/src/gateway/hono/routes/projects.js +2 -2
- package/dist/src/gateway/hono/routes/session-command-handler.js +9 -0
- package/dist/src/gateway/hono/routes/session-input-control.d.ts +3 -0
- package/dist/src/gateway/hono/routes/session-input-control.js +37 -0
- package/dist/src/gateway/hono/routes/session-input-handler.d.ts +12 -0
- package/dist/src/gateway/hono/routes/session-input-handler.js +23 -1
- package/dist/src/gateway/hono/routes/sessions.js +4 -0
- package/dist/src/gateway/hono/routes/tasks.js +1 -1
- package/dist/src/gateway/image-generation-setup.js +1 -1
- package/dist/src/gateway/service/agent-runner.js +5 -4
- package/dist/src/gateway/service/config-coordinator.d.ts +6 -0
- package/dist/src/gateway/service/session-input-coordinator.d.ts +6 -3
- package/dist/src/gateway/service/session-input-coordinator.js +47 -6
- package/dist/src/gateway/service.d.ts +1 -0
- package/dist/src/gateway/service.js +4 -1
- package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
- package/dist/src/imports/importService.js +1 -1
- package/dist/src/local-apps/service.js +1 -1
- package/dist/src/personal-agent/capability-service.js +1 -1
- package/dist/src/personal-agent/request-access.d.ts +2 -0
- package/dist/src/personal-agent/request-access.js +22 -2
- package/dist/src/personal-agent/request-service.js +2 -2
- package/dist/src/personal-agent/service.js +1 -1
- package/dist/src/personal-agent/specialist-capabilities.d.ts +2 -0
- package/dist/src/personal-agent/specialist-capabilities.js +9 -3
- package/dist/src/phone/adb-driver.d.ts +3 -0
- package/dist/src/phone/adb-driver.js +29 -0
- package/dist/src/phone/contracts.d.ts +14 -2
- package/dist/src/phone/contracts.js +8 -1
- package/dist/src/phone/gui-protocol.js +1 -1
- package/dist/src/phone/hdc-driver.d.ts +30 -0
- package/dist/src/phone/hdc-driver.js +331 -0
- package/dist/src/phone/hdc-video-bridge.d.ts +2 -0
- package/dist/src/phone/hdc-video-bridge.js +91 -0
- package/dist/src/phone/hdc-video-tools.d.ts +15 -0
- package/dist/src/phone/hdc-video-tools.js +123 -0
- package/dist/src/phone/hdc-video.d.ts +69 -0
- package/dist/src/phone/hdc-video.js +350 -0
- package/dist/src/phone/interactive-session.js +1 -1
- package/dist/src/phone/live-provider.d.ts +6 -0
- package/dist/src/phone/live-provider.js +1 -0
- package/dist/src/phone/model-adapter.d.ts +3 -0
- package/dist/src/phone/model-adapter.js +5 -3
- package/dist/src/phone/repository.js +2 -1
- package/dist/src/phone/runtime.d.ts +10 -4
- package/dist/src/phone/runtime.js +151 -85
- package/dist/src/phone/setup/service.d.ts +8 -6
- package/dist/src/phone/setup/service.js +33 -16
- package/dist/src/platform/client.d.ts +1 -1
- package/dist/src/platform/contracts.d.ts +1 -1
- package/dist/src/process/phone-process.d.ts +1 -1
- package/dist/src/process/phone-process.js +2 -2
- package/dist/src/runtime-tools/archive.js +1 -1
- package/dist/src/runtime-tools/downloader.d.ts +1 -0
- package/dist/src/runtime-tools/downloader.js +8 -4
- package/dist/src/runtime-tools/harmony-dependencies.d.ts +24 -0
- package/dist/src/runtime-tools/harmony-dependencies.js +272 -0
- package/dist/src/runtime-tools/harmony-dependency-catalog.d.ts +4 -0
- package/dist/src/runtime-tools/harmony-dependency-catalog.js +54 -0
- package/dist/src/runtime-tools/harmony-paths.d.ts +9 -0
- package/dist/src/runtime-tools/harmony-paths.js +15 -0
- package/dist/src/runtime-tools/hdc-dependency-catalog.d.ts +8 -0
- package/dist/src/runtime-tools/hdc-dependency-catalog.js +83 -0
- package/dist/src/runtime-tools/hdc-files.d.ts +14 -0
- package/dist/src/runtime-tools/hdc-files.js +87 -0
- package/dist/src/runtime-tools/phone-dependencies.d.ts +6 -1
- package/dist/src/runtime-tools/phone-dependencies.js +20 -2
- package/dist/src/runtime-tools/phone-dependency-catalog.d.ts +10 -1
- package/dist/src/runtime-tools/phone-dependency-catalog.js +2 -0
- package/dist/src/runtime-tools/types.d.ts +1 -1
- package/dist/src/storage/sqlite/schema.d.ts +2 -2
- package/dist/src/storage/sqlite/schema.js +7 -7
- package/dist/src/storage/sqlite/schema.sql +16 -0
- package/dist/src/storage/sqlite/session-creation-repository.js +3 -0
- package/dist/src/storage/sqlite/session-input-control-repository.d.ts +12 -0
- package/dist/src/storage/sqlite/session-input-control-repository.js +83 -0
- package/dist/src/storage/sqlite/session-input-repository.d.ts +2 -0
- package/dist/src/storage/sqlite/session-input-repository.js +17 -5
- package/dist/src/storage/sqlite/session-repository.js +1 -0
- package/dist/src/storage/sqlite/session-turn-replace-repository.d.ts +2 -0
- package/dist/src/storage/sqlite/session-turn-replace-repository.js +14 -2
- package/dist/src/storage/sqlite/upgrades/262_session_input_control.sql +15 -0
- package/dist/src/tasks/capabilities/read.js +2 -2
- package/dist/src/tasks/capabilities/write.js +1 -1
- package/dist/src/tui/backends/embedded-backend.js +1 -1
- package/dist/src/voice/realtime/persona-context.js +1 -1
- package/package.json +2 -2
- package/skills/tools/configure-xopc/SKILL.md +2 -2
- package/skills/tools/configure-xopc/references/phone/acceptance.md +3 -2
- package/skills/tools/configure-xopc/references/phone/dependencies.md +18 -2
- package/skills/tools/configure-xopc/references/phone/harmonyos.md +16 -0
- package/skills/tools/configure-xopc/references/phone/overview.md +2 -2
- package/skills/tools/configure-xopc/references/scene-index.md +2 -2
- package/dist/gateway/static/root/assets/apps-page-D-n71lO1.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-DWDWy-SG.js +0 -9
- package/dist/gateway/static/root/assets/capabilities-page-IcwojmJK.js +0 -2
- package/dist/gateway/static/root/assets/capability-links-DzQWK1Fh.js +0 -1
- package/dist/gateway/static/root/assets/chat-page-CwP4OMdW.js +0 -72
- package/dist/gateway/static/root/assets/computer-settings-page-DyAlOzqY.js +0 -1
- package/dist/gateway/static/root/assets/connected-providers-grid-D0lXg22c.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-DI_Q0CKz.js +0 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-BFeFfApQ.js +0 -1
- package/dist/gateway/static/root/assets/index-Cz-VjTNd.css +0 -1
- package/dist/gateway/static/root/assets/index-D1_PUrJf.js +0 -11
- package/dist/gateway/static/root/assets/install-connector-dialog-Cn4nRSyt.js +0 -1
- package/dist/gateway/static/root/assets/list-tree-B0OMswgM.js +0 -1
- package/dist/gateway/static/root/assets/messages-jwdBhfL9.js +0 -3
- package/dist/gateway/static/root/assets/note-image-lightbox-DGYRJS03.js +0 -1
- package/dist/gateway/static/root/assets/page-header-store-CEn_kPsn.js +0 -1
- package/dist/gateway/static/root/assets/phone-dependencies-card-DjmC1Z5j.js +0 -1
- package/dist/gateway/static/root/assets/phone-model-connection-BRjHSgYn.js +0 -1
- package/dist/gateway/static/root/assets/phone-model-picker-DgIiWLhR.js +0 -1
- package/dist/gateway/static/root/assets/phone-settings-page-DCZGCL_z.js +0 -1
- package/dist/gateway/static/root/assets/plugin-details-dialog-D4tGKip4.js +0 -1
- package/dist/gateway/static/root/assets/route-preload-C1BKDjnu.js +0 -2
- package/dist/gateway/static/root/assets/session-api-Bfmlmn9F.js +0 -1
- package/dist/gateway/static/root/assets/session-channel-icon-SsY70Z6t.js +0 -1
- package/dist/gateway/static/root/assets/session-identity-label-B7sgG1PE.js +0 -1
- package/dist/gateway/static/root/assets/session-manager-X4UHOjjO.js +0 -25
- package/dist/gateway/static/root/assets/settings-advanced-gate-Dk9c-Z5e.js +0 -1
- package/dist/gateway/static/root/assets/workspace-editor-agent-store-msZa42fU.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { ComputerConfigSchema, init_config } from "./config.js";
|
|
4
|
-
import { ActionEnvelopeSchema, ComputerCommandSchema, init_src } from "../../packages/computer-control-contract/src/index.js";
|
|
4
|
+
import { ActionEnvelopeSchema, ComputerCommandSchema, computerActionInputCount, computerActionInputs, init_src } from "../../packages/computer-control-contract/src/index.js";
|
|
5
5
|
import { ComputerTargetError } from "./errors.js";
|
|
6
6
|
import { createHash, randomUUID } from "node:crypto";
|
|
7
7
|
import { setTimeout } from "node:timers/promises";
|
|
@@ -28,7 +28,7 @@ var ComputerBroker = class {
|
|
|
28
28
|
this.config = ComputerConfigSchema.parse(config);
|
|
29
29
|
this.timer = setInterval(() => {
|
|
30
30
|
const s = this.session;
|
|
31
|
-
if (s && s.status !== "stopped" && (this.expired(s) || !this.host.isVisible())) this.stop().catch(() => {});
|
|
31
|
+
if (s && s.status !== "stopped" && (this.expired(s) || !this.host.isVisible())) this.stop(!this.host.isVisible() ? "COMPUTER_LOCAL_UI_REQUIRED" : void 0).catch(() => {});
|
|
32
32
|
}, 1e3);
|
|
33
33
|
this.timer.unref?.();
|
|
34
34
|
}
|
|
@@ -47,7 +47,11 @@ var ComputerBroker = class {
|
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
active(s) {
|
|
50
|
-
if (
|
|
50
|
+
if (!this.host.isVisible()) {
|
|
51
|
+
s.errorCode ??= "COMPUTER_LOCAL_UI_REQUIRED";
|
|
52
|
+
throw new Error("COMPUTER_LOCAL_UI_REQUIRED");
|
|
53
|
+
}
|
|
54
|
+
if (this.session !== s || s.controller.signal.aborted || this.expired(s)) throw new Error("COMPUTER_GRANT_REVOKED");
|
|
51
55
|
}
|
|
52
56
|
/** Settings-only app catalog. It never returns window contents or task-bound refs. */
|
|
53
57
|
async listAppsForSettings() {
|
|
@@ -70,10 +74,15 @@ var ComputerBroker = class {
|
|
|
70
74
|
const s = this.session;
|
|
71
75
|
if (!s || s.id !== command.sessionId || s.owner !== command.owner) throw new Error("COMPUTER_SESSION_NOT_FOUND");
|
|
72
76
|
if (command.op === "release") {
|
|
73
|
-
await this.stop();
|
|
77
|
+
await this.stop(void 0, !this.busy && s.status === "ready");
|
|
74
78
|
return this.result(s);
|
|
75
79
|
}
|
|
76
80
|
if (command.op === "status") return this.result(s);
|
|
81
|
+
if (command.op === "settle") {
|
|
82
|
+
const decision = s.status === "pending_authorization" ? s.preparation : s.pending?.decision;
|
|
83
|
+
if (decision) await this.awaitDecision(s, decision);
|
|
84
|
+
return this.result(s);
|
|
85
|
+
}
|
|
77
86
|
this.active(s);
|
|
78
87
|
if (this.busy || s.status !== "ready" && s.status !== "pending_action") throw new Error("COMPUTER_NOT_READY");
|
|
79
88
|
this.busy = true;
|
|
@@ -128,7 +137,8 @@ var ComputerBroker = class {
|
|
|
128
137
|
};
|
|
129
138
|
} finally {
|
|
130
139
|
try {
|
|
131
|
-
if (!this.session || this.session.status === "stopped") await this.driver.
|
|
140
|
+
if (!this.session || this.session.status === "stopped") if (!controller.signal.aborted && this.driver.idle) await this.driver.idle();
|
|
141
|
+
else await this.driver.stop();
|
|
132
142
|
} finally {
|
|
133
143
|
this.discovery = void 0;
|
|
134
144
|
this.busy = false;
|
|
@@ -166,7 +176,7 @@ var ComputerBroker = class {
|
|
|
166
176
|
actions: 0
|
|
167
177
|
};
|
|
168
178
|
this.session = s;
|
|
169
|
-
this.host.requestApproval({
|
|
179
|
+
const preparation = this.host.requestApproval({
|
|
170
180
|
kind: "session",
|
|
171
181
|
id: s.id,
|
|
172
182
|
appId: s.appId,
|
|
@@ -194,8 +204,23 @@ var ComputerBroker = class {
|
|
|
194
204
|
if (error instanceof ComputerTargetError) s.windows = error.windows;
|
|
195
205
|
return this.stop().catch(() => {});
|
|
196
206
|
}).finally(() => this.host.onStateChange?.());
|
|
207
|
+
s.preparation = preparation;
|
|
208
|
+
if (!this.host.deferApproval) await this.awaitDecision(s, preparation);
|
|
197
209
|
return this.result(s);
|
|
198
210
|
}
|
|
211
|
+
async awaitDecision(s, decision) {
|
|
212
|
+
if (s.controller.signal.aborted) return;
|
|
213
|
+
let abort;
|
|
214
|
+
const cancelled = new Promise((resolve) => {
|
|
215
|
+
abort = () => resolve(void 0);
|
|
216
|
+
s.controller.signal.addEventListener("abort", abort, { once: true });
|
|
217
|
+
});
|
|
218
|
+
try {
|
|
219
|
+
return await Promise.race([decision, cancelled]);
|
|
220
|
+
} finally {
|
|
221
|
+
s.controller.signal.removeEventListener("abort", abort);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
199
224
|
async observe(s) {
|
|
200
225
|
let frame;
|
|
201
226
|
try {
|
|
@@ -255,6 +280,7 @@ var ComputerBroker = class {
|
|
|
255
280
|
};
|
|
256
281
|
} catch (error) {
|
|
257
282
|
frame?.image.fill(0);
|
|
283
|
+
s.errorCode ??= error instanceof Error && /^COMPUTER_[A-Z_0-9]+$/.test(error.message) ? error.message : "COMPUTER_OBSERVE_FAILED";
|
|
258
284
|
await this.stop().catch(() => {
|
|
259
285
|
log.warn({
|
|
260
286
|
sessionId: s.id,
|
|
@@ -279,9 +305,10 @@ var ComputerBroker = class {
|
|
|
279
305
|
}
|
|
280
306
|
const observed = s.observation;
|
|
281
307
|
if (!observed || e.observationId !== observed.id || this.now() - observed.capturedAt > 12e4) throw new Error("COMPUTER_STALE_OBSERVATION");
|
|
282
|
-
if (s.actions
|
|
283
|
-
|
|
284
|
-
if (
|
|
308
|
+
if (s.actions + computerActionInputCount(e.action) > this.config.maxActionsPerSession) throw new Error("COMPUTER_ACTION_BUDGET");
|
|
309
|
+
const inputs = computerActionInputs(e.action);
|
|
310
|
+
if (inputs.flatMap((action) => action.kind === "drag" ? [action.from, action.to] : "point" in action && action.point ? [action.point] : []).some((point) => point.x >= observed.imageWidth || point.y >= observed.imageHeight)) throw new Error("COMPUTER_COORDINATE_OUTSIDE_WINDOW");
|
|
311
|
+
if (inputs.some((action) => action.kind === "typeText" && !action.point && !observed.focusedEditableRef)) throw new Error("COMPUTER_EDITABLE_TARGET_REQUIRED");
|
|
285
312
|
this.driver.validateAction?.(e.action);
|
|
286
313
|
if (e.action.kind !== "wait") {
|
|
287
314
|
if (!s.pending) {
|
|
@@ -290,7 +317,7 @@ var ComputerBroker = class {
|
|
|
290
317
|
digest
|
|
291
318
|
};
|
|
292
319
|
s.status = "pending_action";
|
|
293
|
-
this.host.requestApproval({
|
|
320
|
+
const decision = this.host.requestApproval({
|
|
294
321
|
kind: "action",
|
|
295
322
|
id: e.actionId,
|
|
296
323
|
target: observed.target,
|
|
@@ -298,8 +325,15 @@ var ComputerBroker = class {
|
|
|
298
325
|
}, s.controller.signal).then((approved) => {
|
|
299
326
|
this.active(s);
|
|
300
327
|
if (s.pending?.digest === digest) s.pending.approved = approved;
|
|
301
|
-
}).catch(() => {
|
|
302
|
-
|
|
328
|
+
}).catch(async (error) => {
|
|
329
|
+
if (this.session !== s) return;
|
|
330
|
+
s.errorCode ??= error instanceof Error && /^COMPUTER_[A-Z_0-9]+$/.test(error.message) ? error.message : "COMPUTER_APP_NOT_AUTHORIZED";
|
|
331
|
+
await this.stop();
|
|
332
|
+
}).finally(() => this.host.onStateChange?.());
|
|
333
|
+
s.pending.decision = decision;
|
|
334
|
+
if (this.host.deferApproval) return this.result(s);
|
|
335
|
+
await this.awaitDecision(s, decision);
|
|
336
|
+
if (s.controller.signal.aborted) return this.result(s);
|
|
303
337
|
}
|
|
304
338
|
if (s.pending.digest !== digest) throw new Error("COMPUTER_DIFFERENT_ACTION_PENDING");
|
|
305
339
|
if (s.pending.approved === void 0) return this.result(s);
|
|
@@ -318,6 +352,7 @@ var ComputerBroker = class {
|
|
|
318
352
|
try {
|
|
319
353
|
current = await this.driver.observe(s.target, s.controller.signal);
|
|
320
354
|
} catch (error) {
|
|
355
|
+
s.errorCode ??= error instanceof Error && /^COMPUTER_[A-Z_0-9]+$/.test(error.message) ? error.message : "COMPUTER_OBSERVE_FAILED";
|
|
321
356
|
await this.stop().catch(() => {});
|
|
322
357
|
throw error;
|
|
323
358
|
}
|
|
@@ -347,8 +382,16 @@ var ComputerBroker = class {
|
|
|
347
382
|
postObserveMs: 0,
|
|
348
383
|
precheckSamples
|
|
349
384
|
};
|
|
385
|
+
const grouped = e.action.kind === "activateSequence" || e.action.kind === "batch";
|
|
350
386
|
const receipt = {
|
|
351
387
|
actionId: e.actionId,
|
|
388
|
+
...grouped ? {
|
|
389
|
+
inputCount: inputs.length,
|
|
390
|
+
steps: inputs.map((_, index) => ({
|
|
391
|
+
index,
|
|
392
|
+
dispatch: "notStarted"
|
|
393
|
+
}))
|
|
394
|
+
} : {},
|
|
352
395
|
dispatch: "started",
|
|
353
396
|
outcome: "unknown",
|
|
354
397
|
verification: "none"
|
|
@@ -357,19 +400,28 @@ var ComputerBroker = class {
|
|
|
357
400
|
digest,
|
|
358
401
|
receipt
|
|
359
402
|
});
|
|
360
|
-
s.actions
|
|
403
|
+
s.actions += computerActionInputCount(e.action);
|
|
361
404
|
s.pending = void 0;
|
|
362
405
|
s.status = "running";
|
|
363
406
|
try {
|
|
364
407
|
const inputStarted = this.durationNow();
|
|
365
408
|
try {
|
|
366
|
-
await this.driver.perform(s.target, e.action, s.controller.signal)
|
|
409
|
+
if (grouped) await this.driver.perform(s.target, e.action, s.controller.signal, (index, dispatch) => {
|
|
410
|
+
if (dispatch === "started") {
|
|
411
|
+
this.active(s);
|
|
412
|
+
if (e.deadlineAt <= this.now()) throw new Error("COMPUTER_STALE_ACTION");
|
|
413
|
+
}
|
|
414
|
+
if (!receipt.steps?.[index]) throw new Error("COMPUTER_RECEIPT_MISMATCH");
|
|
415
|
+
receipt.steps[index].dispatch = dispatch;
|
|
416
|
+
});
|
|
417
|
+
else await this.driver.perform(s.target, e.action, s.controller.signal);
|
|
367
418
|
} finally {
|
|
368
419
|
nativeMs.inputMs = Math.max(0, Math.round(this.durationNow() - inputStarted));
|
|
369
420
|
nativeMs.inputDetail = this.driver.getLastInputTiming?.();
|
|
370
421
|
}
|
|
371
422
|
this.active(s);
|
|
372
423
|
receipt.dispatch = "completed";
|
|
424
|
+
for (const step of receipt.steps ?? []) step.dispatch = "completed";
|
|
373
425
|
s.status = "ready";
|
|
374
426
|
const observationStarted = this.durationNow();
|
|
375
427
|
let after;
|
|
@@ -402,17 +454,18 @@ var ComputerBroker = class {
|
|
|
402
454
|
};
|
|
403
455
|
}
|
|
404
456
|
}
|
|
405
|
-
stop() {
|
|
457
|
+
stop(errorCode, retainDriver = false) {
|
|
406
458
|
this.discovery?.controller.abort();
|
|
407
459
|
const s = this.session;
|
|
408
460
|
if (s && s.status !== "stopped") {
|
|
461
|
+
s.errorCode ??= errorCode;
|
|
409
462
|
s.generation++;
|
|
410
463
|
s.status = "stopped";
|
|
411
464
|
s.pending = void 0;
|
|
412
465
|
s.observation = void 0;
|
|
413
466
|
s.controller.abort();
|
|
414
467
|
}
|
|
415
|
-
if (!this.stopping) this.stopping = this.driver.stop().finally(() => {
|
|
468
|
+
if (!this.stopping) this.stopping = (retainDriver && this.driver.idle ? this.driver.idle() : this.driver.stop()).finally(() => {
|
|
416
469
|
this.stopping = void 0;
|
|
417
470
|
this.host.onStateChange?.();
|
|
418
471
|
});
|
|
@@ -422,12 +475,37 @@ var ComputerBroker = class {
|
|
|
422
475
|
if (this.session?.id === command.sessionId && this.session.owner === command.owner || this.discovery?.id === command.sessionId && this.discovery.owner === command.owner) await this.stop();
|
|
423
476
|
}
|
|
424
477
|
snapshot() {
|
|
478
|
+
const preparation = this.session?.status === "pending_authorization" ? this.driver.getPreparationState?.() : void 0;
|
|
425
479
|
return this.session ? {
|
|
426
480
|
status: this.session.status,
|
|
427
481
|
errorCode: this.session.errorCode,
|
|
428
|
-
appId: this.session.appId
|
|
482
|
+
appId: this.session.appId,
|
|
483
|
+
dispatch: [...this.session.receipts.values()].at(-1)?.receipt.dispatch ?? "notStarted",
|
|
484
|
+
...preparation ? { preparation } : {}
|
|
429
485
|
} : { status: "idle" };
|
|
430
486
|
}
|
|
487
|
+
previewAuthority() {
|
|
488
|
+
const s = this.session;
|
|
489
|
+
if (!s || s.status === "stopped" || s.controller.signal.aborted || this.expired(s) || !this.host.isVisible()) return;
|
|
490
|
+
return {
|
|
491
|
+
conversationId: s.owner,
|
|
492
|
+
..."runId" in s.model ? { runId: s.model.runId } : {},
|
|
493
|
+
computerSessionId: s.id,
|
|
494
|
+
brokerEpoch: this.epoch,
|
|
495
|
+
appName: this.apps.get(s.appRef)?.name ?? s.appId,
|
|
496
|
+
status: s.status,
|
|
497
|
+
target: s.target ? { ...s.target } : void 0,
|
|
498
|
+
signal: s.controller.signal
|
|
499
|
+
};
|
|
500
|
+
}
|
|
501
|
+
async validatePreview(authority) {
|
|
502
|
+
const current = this.previewAuthority();
|
|
503
|
+
if (!current?.target || !authority.target || current.computerSessionId !== authority.computerSessionId || current.brokerEpoch !== authority.brokerEpoch || current.target.windowId !== authority.target.windowId || current.target.processIdentity !== authority.target.processIdentity || current.target.appId !== authority.target.appId) throw new Error("COMPUTER_PREVIEW_REVOKED");
|
|
504
|
+
if (!this.driver.validatePreviewTarget) throw new Error("COMPUTER_PREVIEW_UNSUPPORTED");
|
|
505
|
+
await this.driver.validatePreviewTarget(current.target, current.signal);
|
|
506
|
+
current.signal.throwIfAborted();
|
|
507
|
+
if (this.previewAuthority()?.computerSessionId !== current.computerSessionId) throw new Error("COMPUTER_PREVIEW_REVOKED");
|
|
508
|
+
}
|
|
431
509
|
async dispose() {
|
|
432
510
|
clearInterval(this.timer);
|
|
433
511
|
await this.stop();
|
|
@@ -211,6 +211,7 @@ export declare const ComputerSessionReportSchema: z.ZodObject<{
|
|
|
211
211
|
kind: z.ZodOptional<z.ZodEnum<{
|
|
212
212
|
wait: "wait";
|
|
213
213
|
typeText: "typeText";
|
|
214
|
+
batch: "batch";
|
|
214
215
|
activate: "activate";
|
|
215
216
|
showMenu: "showMenu";
|
|
216
217
|
click: "click";
|
|
@@ -218,6 +219,7 @@ export declare const ComputerSessionReportSchema: z.ZodObject<{
|
|
|
218
219
|
setValue: "setValue";
|
|
219
220
|
pressKeys: "pressKeys";
|
|
220
221
|
scroll: "scroll";
|
|
222
|
+
activateSequence: "activateSequence";
|
|
221
223
|
}>>;
|
|
222
224
|
transport: z.ZodOptional<z.ZodObject<{
|
|
223
225
|
brokerWallMs: z.ZodNumber;
|
|
@@ -231,6 +233,7 @@ export declare const ComputerSessionReportSchema: z.ZodObject<{
|
|
|
231
233
|
kind: z.ZodEnum<{
|
|
232
234
|
wait: "wait";
|
|
233
235
|
typeText: "typeText";
|
|
236
|
+
batch: "batch";
|
|
234
237
|
activate: "activate";
|
|
235
238
|
showMenu: "showMenu";
|
|
236
239
|
click: "click";
|
|
@@ -238,6 +241,7 @@ export declare const ComputerSessionReportSchema: z.ZodObject<{
|
|
|
238
241
|
setValue: "setValue";
|
|
239
242
|
pressKeys: "pressKeys";
|
|
240
243
|
scroll: "scroll";
|
|
244
|
+
activateSequence: "activateSequence";
|
|
241
245
|
}>;
|
|
242
246
|
dispatch: z.ZodEnum<{
|
|
243
247
|
unknown: "unknown";
|
|
@@ -273,7 +277,7 @@ export declare class ComputerSessionDiagnostics {
|
|
|
273
277
|
count(key: keyof ComputerSessionReport['counters']): void;
|
|
274
278
|
timing(value: NonNullable<ComputerSessionReport['timings']>[number]): void;
|
|
275
279
|
measure<T>(phase: keyof ComputerSessionReport['phaseMs'], fn: () => Promise<T>): Promise<T>;
|
|
276
|
-
propose(id: string, kind: ComputerAction['kind']): void;
|
|
280
|
+
propose(id: string, kind: ComputerAction['kind'], inputCount?: number): void;
|
|
277
281
|
discard(): void;
|
|
278
282
|
record(receipt: ComputerReceipt, before?: ComputerObservation, after?: ComputerObservation, verification?: ComputerVerification): void;
|
|
279
283
|
verify(verification?: ComputerVerification): void;
|
|
@@ -44,6 +44,11 @@ const ComputerFailureSchema = z.object({
|
|
|
44
44
|
serviceErrorCode: ComputerDiagnosticSchema.shape.serviceErrorCode
|
|
45
45
|
}).strict();
|
|
46
46
|
const categories = Object.create(null);
|
|
47
|
+
for (const code of [
|
|
48
|
+
"NATIVE_BATCH_FAILED",
|
|
49
|
+
"NATIVE_BATCH_REFUSED",
|
|
50
|
+
"DRIVER_INVALID_BATCH_RESULT"
|
|
51
|
+
]) categories[`COMPUTER_${code}`] = "native";
|
|
47
52
|
for (const code of [
|
|
48
53
|
"AGENT_MODEL_REQUIRED",
|
|
49
54
|
"AGENT_MODEL_CHANGED",
|
|
@@ -74,9 +79,13 @@ for (const [category, codes] of Object.entries({
|
|
|
74
79
|
target: [
|
|
75
80
|
"APP_NOT_FOUND",
|
|
76
81
|
"APP_NOT_RUNNING",
|
|
82
|
+
"APP_PREPARATION_REFUSED",
|
|
83
|
+
"APP_ID_INVALID",
|
|
77
84
|
"APP_REF_EXPIRED",
|
|
78
85
|
"APP_INSTANCE_AMBIGUOUS",
|
|
79
86
|
"WINDOW_REQUIRED",
|
|
87
|
+
"WINDOW_HIDDEN",
|
|
88
|
+
"WINDOW_READY_TIMEOUT",
|
|
80
89
|
"WINDOW_OTHER_SPACE",
|
|
81
90
|
"WINDOW_AMBIGUOUS",
|
|
82
91
|
"WINDOW_CHANGED",
|
|
@@ -102,6 +111,7 @@ for (const [category, codes] of Object.entries({
|
|
|
102
111
|
"UI_UNSTABLE",
|
|
103
112
|
"FRAME_REQUIRED",
|
|
104
113
|
"CAPTURE_REQUIRED",
|
|
114
|
+
"CAPTURE_UNAVAILABLE",
|
|
105
115
|
"CAPTURE_TARGET_MISMATCH",
|
|
106
116
|
"FRAME_HANDOFF_FAILED",
|
|
107
117
|
"UNEXPECTED_FRAME",
|
|
@@ -138,6 +148,8 @@ for (const [category, codes] of Object.entries({
|
|
|
138
148
|
"DIFFERENT_ACTION_PENDING"
|
|
139
149
|
],
|
|
140
150
|
native: [
|
|
151
|
+
"BACKGROUND_INPUT_UNSUPPORTED",
|
|
152
|
+
"INPUT_REFUSED",
|
|
141
153
|
"NATIVE_SETUP_FAILED",
|
|
142
154
|
"NATIVE_ACTION_FAILED",
|
|
143
155
|
"POST_ACTION_OBSERVATION_FAILED",
|
|
@@ -251,6 +263,8 @@ const ComputerSessionReportSchema = z.object({
|
|
|
251
263
|
nativeMs: ComputerNativeTimingSchema.optional(),
|
|
252
264
|
kind: z.enum([
|
|
253
265
|
"activate",
|
|
266
|
+
"activateSequence",
|
|
267
|
+
"batch",
|
|
254
268
|
"showMenu",
|
|
255
269
|
"click",
|
|
256
270
|
"drag",
|
|
@@ -267,6 +281,8 @@ const ComputerSessionReportSchema = z.object({
|
|
|
267
281
|
recentActions: z.array(z.object({
|
|
268
282
|
kind: z.enum([
|
|
269
283
|
"activate",
|
|
284
|
+
"activateSequence",
|
|
285
|
+
"batch",
|
|
270
286
|
"showMenu",
|
|
271
287
|
"click",
|
|
272
288
|
"drag",
|
|
@@ -360,12 +376,12 @@ var ComputerSessionDiagnostics = class {
|
|
|
360
376
|
this.data.phaseMs[phase] += Math.max(0, Math.round(this.durationNow() - start));
|
|
361
377
|
}
|
|
362
378
|
}
|
|
363
|
-
propose(id, kind) {
|
|
379
|
+
propose(id, kind, inputCount = 1) {
|
|
364
380
|
this.pending = {
|
|
365
381
|
id,
|
|
366
382
|
kind
|
|
367
383
|
};
|
|
368
|
-
if (kind !== "wait") this.count("proposedInputs");
|
|
384
|
+
if (kind !== "wait") for (let i = 0; i < inputCount; i++) this.count("proposedInputs");
|
|
369
385
|
}
|
|
370
386
|
discard() {
|
|
371
387
|
this.pending = void 0;
|
|
@@ -376,7 +392,10 @@ var ComputerSessionDiagnostics = class {
|
|
|
376
392
|
this.receipts.add(receipt.actionId);
|
|
377
393
|
const kind = this.pending.kind;
|
|
378
394
|
const unchanged = kind !== "wait" && receipt.dispatch === "completed" && !!after && before?.stateDigest === after.stateDigest;
|
|
379
|
-
if (kind !== "wait"
|
|
395
|
+
if (kind !== "wait") {
|
|
396
|
+
const completed = receipt.steps?.filter((step) => step.dispatch === "completed").length ?? (receipt.dispatch === "completed" ? receipt.inputCount ?? 1 : 0);
|
|
397
|
+
for (let i = 0; i < completed; i++) this.count("completedInputs");
|
|
398
|
+
}
|
|
380
399
|
if (receipt.dispatch === "unknown" || receipt.dispatch === "started") this.count("unknownDispatches");
|
|
381
400
|
if (unchanged) this.count("unchangedInputs");
|
|
382
401
|
this.verify(verification);
|
|
@@ -40,5 +40,20 @@ export declare class ComputerTargetError extends Error {
|
|
|
40
40
|
readonly windows: ComputerWindow[];
|
|
41
41
|
constructor(code: string, windows?: ComputerWindow[]);
|
|
42
42
|
}
|
|
43
|
+
export declare const ComputerRecoverySchema: z.ZodObject<{
|
|
44
|
+
action: z.ZodEnum<{
|
|
45
|
+
wait_and_observe: "wait_and_observe";
|
|
46
|
+
show_target_window: "show_target_window";
|
|
47
|
+
move_to_same_desktop: "move_to_same_desktop";
|
|
48
|
+
show_xopc_window: "show_xopc_window";
|
|
49
|
+
check_capture_permission: "check_capture_permission";
|
|
50
|
+
manual_input: "manual_input";
|
|
51
|
+
reselect_window: "reselect_window";
|
|
52
|
+
inspect_result: "inspect_result";
|
|
53
|
+
}>;
|
|
54
|
+
automaticRetryAllowed: z.ZodBoolean;
|
|
55
|
+
}, z.core.$strict>;
|
|
56
|
+
/** Derived locally, so older desktop transports need no new reply fields. */
|
|
57
|
+
export declare function computerRecoveryDirective(code: string, dispatch?: 'notStarted' | 'started' | 'completed' | 'unknown'): z.infer<typeof ComputerRecoverySchema>;
|
|
43
58
|
/** Recovery instructions are deterministic; never replay an input with unknown delivery. */
|
|
44
59
|
export declare function computerRecovery(code: string): string;
|
|
@@ -52,6 +52,51 @@ var ComputerTargetError = class extends Error {
|
|
|
52
52
|
this.windows = windows;
|
|
53
53
|
}
|
|
54
54
|
};
|
|
55
|
+
const ComputerRecoverySchema = z.object({
|
|
56
|
+
action: z.enum([
|
|
57
|
+
"wait_and_observe",
|
|
58
|
+
"show_target_window",
|
|
59
|
+
"move_to_same_desktop",
|
|
60
|
+
"show_xopc_window",
|
|
61
|
+
"check_capture_permission",
|
|
62
|
+
"manual_input",
|
|
63
|
+
"reselect_window",
|
|
64
|
+
"inspect_result"
|
|
65
|
+
]),
|
|
66
|
+
automaticRetryAllowed: z.boolean()
|
|
67
|
+
}).strict();
|
|
68
|
+
/** Derived locally, so older desktop transports need no new reply fields. */
|
|
69
|
+
function computerRecoveryDirective(code, dispatch = "notStarted") {
|
|
70
|
+
if (dispatch === "unknown" || dispatch === "started") return {
|
|
71
|
+
action: "inspect_result",
|
|
72
|
+
automaticRetryAllowed: false
|
|
73
|
+
};
|
|
74
|
+
if (/^COMPUTER_DRIVER_(CLICK|TYPE_TEXT|SET_VALUE|PRESS_KEY|HOTKEY|KEY|SCROLL|DRAG)_REFUSED$/.test(code)) return {
|
|
75
|
+
action: "manual_input",
|
|
76
|
+
automaticRetryAllowed: false
|
|
77
|
+
};
|
|
78
|
+
const actions = {
|
|
79
|
+
COMPUTER_WINDOW_HIDDEN: "show_target_window",
|
|
80
|
+
COMPUTER_WINDOW_READY_TIMEOUT: "show_target_window",
|
|
81
|
+
COMPUTER_WINDOW_REQUIRED: "show_target_window",
|
|
82
|
+
COMPUTER_WINDOW_OTHER_SPACE: "move_to_same_desktop",
|
|
83
|
+
COMPUTER_DRIVER_BRING_TO_FRONT_REFUSED: "show_target_window",
|
|
84
|
+
COMPUTER_APP_PREPARATION_REFUSED: "show_target_window",
|
|
85
|
+
COMPUTER_APP_ID_INVALID: "inspect_result",
|
|
86
|
+
COMPUTER_LOCAL_UI_REQUIRED: "show_xopc_window",
|
|
87
|
+
COMPUTER_CAPTURE_UNAVAILABLE: "wait_and_observe",
|
|
88
|
+
COMPUTER_CAPTURE_REQUIRED: "wait_and_observe",
|
|
89
|
+
COMPUTER_OS_PERMISSION_REQUIRED: "check_capture_permission",
|
|
90
|
+
COMPUTER_BACKGROUND_INPUT_UNSUPPORTED: "manual_input",
|
|
91
|
+
COMPUTER_INPUT_REFUSED: "manual_input",
|
|
92
|
+
COMPUTER_WINDOW_CHANGED: "reselect_window",
|
|
93
|
+
COMPUTER_CAPTURE_TARGET_MISMATCH: "reselect_window"
|
|
94
|
+
};
|
|
95
|
+
return {
|
|
96
|
+
action: Object.hasOwn(actions, code) ? actions[code] : "inspect_result",
|
|
97
|
+
automaticRetryAllowed: false
|
|
98
|
+
};
|
|
99
|
+
}
|
|
55
100
|
/** Recovery instructions are deterministic; never replay an input with unknown delivery. */
|
|
56
101
|
function computerRecovery(code) {
|
|
57
102
|
if (code === "COMPUTER_AGENT_MODEL_REQUIRED") return "Direct UI programs require an active visual main-model turn. Select a visual model and open with planner:agent; do not change models inside an active desktop session.";
|
|
@@ -63,6 +108,18 @@ function computerRecovery(code) {
|
|
|
63
108
|
if (code === "COMPUTER_FLOW_NOT_VERIFIED" || code === "COMPUTER_FLOW_SAVE_FAILED") return "Control was released. No reusable flow was confirmed saved. Saving requires verified native navigation, non-sensitive labels and working local storage; never repeat desktop input merely to save a flow.";
|
|
64
109
|
if (code.startsWith("COMPUTER_FRAME_UPLOAD_")) return "Screenshot upload to the Gateway failed. No automatic retry. Report the diagnosticId and HTTP status; do not change model providers or bypass desktop controls.";
|
|
65
110
|
switch (code) {
|
|
111
|
+
case "COMPUTER_NATIVE_BATCH_FAILED":
|
|
112
|
+
case "COMPUTER_DRIVER_INVALID_BATCH_RESULT": return "The native batch stopped or its reply could not be validated. Inspect per-input receipts and the current window after releasing control. Completed or unknown inputs must never be replayed; do not retry the batch through scalar calls.";
|
|
113
|
+
case "COMPUTER_NATIVE_BATCH_REFUSED": return "The native driver rejected the batch before any input. Inspect the exact target, native capability and batch arguments; do not bypass this refusal through scalar calls.";
|
|
114
|
+
case "COMPUTER_WINDOW_HIDDEN": return "The selected window is hidden or minimized. If restoration is already authorized, open with prepare=true after release; otherwise ask the user to show it. Keyboard focus is not required. Never replay prior inputs.";
|
|
115
|
+
case "COMPUTER_WINDOW_READY_TIMEOUT": return "Automatic application preparation did not produce a verified ready window within five seconds. No task input was sent during preparation. Report the preparation failure and inspect local diagnostics. Resume only after a relevant application or desktop state change; do not repeat activation unchanged or bypass the window checks.";
|
|
116
|
+
case "COMPUTER_APP_PREPARATION_REFUSED": return "The desktop host could not complete the authorized system application-open request. No task input was sent. Inspect application availability and local host state before retrying; do not replace the request with paths, URLs or arbitrary command arguments.";
|
|
117
|
+
case "COMPUTER_APP_ID_INVALID": return "The application identity is not a valid native bundle identifier. Discover the intended application again and use its issued appRef; do not ask the user to supply a bundle id or substitute a path or URL.";
|
|
118
|
+
case "COMPUTER_CAPTURE_UNAVAILABLE":
|
|
119
|
+
case "COMPUTER_CAPTURE_REQUIRED": return "The selected window could not provide a usable screenshot after bounded capture attempts. This does not establish missing permissions or another desktop. Inspect its visibility and the action receipt; a completed input must not be replayed. Reopen and observe after a local state change.";
|
|
120
|
+
case "COMPUTER_CAPTURE_TARGET_MISMATCH": return "The captured native window does not match the selected target. Control is stopped. Select the intended window again; do not reuse refs, coordinates or replay prior inputs.";
|
|
121
|
+
case "COMPUTER_BACKGROUND_INPUT_UNSUPPORTED": return "The native driver explicitly reports that this input cannot be delivered in the background. Complete this step manually; do not switch to foreground/global injection or replay it.";
|
|
122
|
+
case "COMPUTER_INPUT_REFUSED": return "The application refused this input without an established cause. Inspect the receipt and actual result; do not infer that foreground focus will fix it or automatically replay input.";
|
|
66
123
|
case "COMPUTER_WINDOWS_TEXT_INPUT_UNVERIFIED":
|
|
67
124
|
case "COMPUTER_WINDOWS_KEY_INPUT_UNVERIFIED": return "This Windows control cannot be certified for safe input. Ask the user to enter text manually. Do not substitute key presses, paste, shell commands, coordinates or another tool to bypass this refusal.";
|
|
68
125
|
case "COMPUTER_WINDOWS_KEY_TARGET_REQUIRED": return "Keyboard input requires one verified non-password control focused inside the authorized window. Observe or focus the intended safe control before a new proposal; never send keys to another window or bypass the refusal with global input.";
|
|
@@ -103,11 +160,10 @@ function computerRecovery(code) {
|
|
|
103
160
|
case "COMPUTER_READ_ONLY": return "This session is read-only. Do not retry an action or reopen in control mode without user authorization.";
|
|
104
161
|
case "COMPUTER_DEVICE_BUSY":
|
|
105
162
|
case "COMPUTER_BUSY": return "Another desktop operation is active. Wait for it to finish; do not stop another task.";
|
|
106
|
-
case "
|
|
107
|
-
case "COMPUTER_LOCAL_UI_REQUIRED": return "Ask the user to resume desktop control locally. Do not automatically resume or bypass this stop.";
|
|
163
|
+
case "COMPUTER_LOCAL_UI_REQUIRED": return "Ask the user to show the xopc desktop window before starting a new desktop task.";
|
|
108
164
|
case "COMPUTER_OS_PERMISSION_REQUIRED": return "Check local desktop access. On macOS, review Accessibility and Screen Recording. On Windows, use the signed-in interactive desktop and inspect the driver diagnostic; do not request macOS permissions or automatically elevate privileges.";
|
|
109
165
|
default: return "Do not repeat the same call without a state change. Report this error; never bypass desktop restrictions with shell or other tools.";
|
|
110
166
|
}
|
|
111
167
|
}
|
|
112
168
|
//#endregion
|
|
113
|
-
export { ComputerDiagnosticSchema, ComputerOperationError, ComputerTargetError, computerDiagnostic, computerRecovery };
|
|
169
|
+
export { ComputerDiagnosticSchema, ComputerOperationError, ComputerRecoverySchema, ComputerTargetError, computerDiagnostic, computerRecovery, computerRecoveryDirective };
|
|
@@ -56,6 +56,64 @@ export declare const ComputerProposalSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
|
|
|
56
56
|
}, z.core.$strict>, z.ZodObject<{
|
|
57
57
|
kind: z.ZodLiteral<"wait">;
|
|
58
58
|
durationMs: z.ZodNumber;
|
|
59
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
60
|
+
kind: z.ZodLiteral<"activateSequence">;
|
|
61
|
+
refs: z.ZodArray<z.ZodString>;
|
|
62
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
63
|
+
kind: z.ZodLiteral<"batch">;
|
|
64
|
+
actions: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
65
|
+
kind: z.ZodLiteral<"activate">;
|
|
66
|
+
ref: z.ZodString;
|
|
67
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
68
|
+
kind: z.ZodLiteral<"showMenu">;
|
|
69
|
+
ref: z.ZodString;
|
|
70
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
71
|
+
kind: z.ZodLiteral<"click">;
|
|
72
|
+
point: z.ZodObject<{
|
|
73
|
+
x: z.ZodNumber;
|
|
74
|
+
y: z.ZodNumber;
|
|
75
|
+
}, z.core.$strict>;
|
|
76
|
+
button: z.ZodEnum<{
|
|
77
|
+
left: "left";
|
|
78
|
+
right: "right";
|
|
79
|
+
}>;
|
|
80
|
+
count: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>]>;
|
|
81
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
82
|
+
kind: z.ZodLiteral<"drag">;
|
|
83
|
+
from: z.ZodObject<{
|
|
84
|
+
x: z.ZodNumber;
|
|
85
|
+
y: z.ZodNumber;
|
|
86
|
+
}, z.core.$strict>;
|
|
87
|
+
to: z.ZodObject<{
|
|
88
|
+
x: z.ZodNumber;
|
|
89
|
+
y: z.ZodNumber;
|
|
90
|
+
}, z.core.$strict>;
|
|
91
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
92
|
+
kind: z.ZodLiteral<"setValue">;
|
|
93
|
+
ref: z.ZodString;
|
|
94
|
+
text: z.ZodString;
|
|
95
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
96
|
+
kind: z.ZodLiteral<"typeText">;
|
|
97
|
+
text: z.ZodString;
|
|
98
|
+
point: z.ZodOptional<z.ZodObject<{
|
|
99
|
+
x: z.ZodNumber;
|
|
100
|
+
y: z.ZodNumber;
|
|
101
|
+
}, z.core.$strict>>;
|
|
102
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
103
|
+
kind: z.ZodLiteral<"pressKeys">;
|
|
104
|
+
keys: z.ZodArray<z.ZodString>;
|
|
105
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
106
|
+
kind: z.ZodLiteral<"scroll">;
|
|
107
|
+
point: z.ZodObject<{
|
|
108
|
+
x: z.ZodNumber;
|
|
109
|
+
y: z.ZodNumber;
|
|
110
|
+
}, z.core.$strict>;
|
|
111
|
+
deltaX: z.ZodNumber;
|
|
112
|
+
deltaY: z.ZodNumber;
|
|
113
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
114
|
+
kind: z.ZodLiteral<"wait">;
|
|
115
|
+
durationMs: z.ZodNumber;
|
|
116
|
+
}, z.core.$strict>], "kind">>;
|
|
59
117
|
}, z.core.$strict>], "kind">;
|
|
60
118
|
}, z.core.$strict>, z.ZodObject<{
|
|
61
119
|
kind: z.ZodLiteral<"finished">;
|