@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.
Files changed (403) hide show
  1. package/README.md +5 -5
  2. package/README.zh-CN.md +5 -5
  3. package/dist/browser-ext/dist/sidepanel.js +11 -0
  4. package/dist/browser-ext/manifest.json +1 -1
  5. package/dist/extensions/telegram/xopc.extension.json +1 -1
  6. package/dist/gateway/static/root/assets/{activity-store-BpYGrRXw.js → activity-store-Cwn_CNwl.js} +1 -1
  7. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DTgOSv6G.js → agent-avatar-dicebear-Cd23LnJJ.js} +1 -1
  8. package/dist/gateway/static/root/assets/{agent-avatar-display-BUH7ljEo.js → agent-avatar-display-ByzM7u9S.js} +2 -2
  9. package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-B_FAikHA.js → agent-defaults-settings-panel-B0i37diS.js} +1 -1
  10. package/dist/gateway/static/root/assets/{agent-plugin-dialog-DPabZaSE.js → agent-plugin-dialog-XN-tZ-Ox.js} +1 -1
  11. package/dist/gateway/static/root/assets/{agents-BAPYP1Ka.js → agents-ZDA1OaLv.js} +3 -3
  12. package/dist/gateway/static/root/assets/{agents-admin-api-CXCAHNPj.js → agents-admin-api-B5lKH_ps.js} +1 -1
  13. package/dist/gateway/static/root/assets/{api-oIK4hYkJ.js → api-B9fZL-V8.js} +1 -1
  14. package/dist/gateway/static/root/assets/{api-DMbimMEi.js → api-Djju8qIR.js} +1 -1
  15. package/dist/gateway/static/root/assets/{app-management-settings-panel-BZ3Fy8ZR.js → app-management-settings-panel-IlyzDPJu.js} +1 -1
  16. package/dist/gateway/static/root/assets/{appearance-settings-DsRTj1by.js → appearance-settings-BxdFGob3.js} +1 -1
  17. package/dist/gateway/static/root/assets/apps-page-CxEKiOTA.js +1 -0
  18. package/dist/gateway/static/root/assets/{archive-plugin-Bg1VTieK.js → archive-plugin-4gEvotPr.js} +1 -1
  19. package/dist/gateway/static/root/assets/{automation-api-CLPsgcQN.js → automation-api-4fVKv9PJ.js} +1 -1
  20. package/dist/gateway/static/root/assets/{automation-result-state-CKVnR4KG.js → automation-result-state-m7PeK2kl.js} +1 -1
  21. package/dist/gateway/static/root/assets/automation-run-list-CJOdy_R2.js +1 -0
  22. package/dist/gateway/static/root/assets/{automation-task-card-D27Mw66U.js → automation-task-card-DZWhCWJa.js} +3 -3
  23. package/dist/gateway/static/root/assets/{automations-page-DGNTJ8lN.js → automations-page-CmxICTM4.js} +1 -1
  24. package/dist/gateway/static/root/assets/automations-workspace-R6YNDdAO.js +9 -0
  25. package/dist/gateway/static/root/assets/{binary-plugins-CuwSdCG5.js → binary-plugins-69WyJLNW.js} +1 -1
  26. package/dist/gateway/static/root/assets/{block-editor-Dtl2BG3t.js → block-editor-DUONDIZR.js} +1 -1
  27. package/dist/gateway/static/root/assets/{browser-automation-inputs-uGK086ag.js → browser-automation-inputs-DL4YPCuN.js} +1 -1
  28. package/dist/gateway/static/root/assets/{browser-automations-page-Da_edNNS.js → browser-automations-page-1Aq6XmRs.js} +1 -1
  29. package/dist/gateway/static/root/assets/{browser-control-api-k3OOX3bS.js → browser-control-api-yjru8E7R.js} +1 -1
  30. package/dist/gateway/static/root/assets/{browser-settings-page-C1bSw-Jq.js → browser-settings-page-CvwpT8Um.js} +1 -1
  31. package/dist/gateway/static/root/assets/{capabilities-DlHPLld_.js → capabilities-C7lnwKKm.js} +1 -1
  32. package/dist/gateway/static/root/assets/{capabilities-CoeuLRt6.js → capabilities-DaeQXJT4.js} +1 -1
  33. package/dist/gateway/static/root/assets/capabilities-page-B5avAOUM.js +2 -0
  34. package/dist/gateway/static/root/assets/{capabilities-settings-panel-CtY-bGIi.js → capabilities-settings-panel-_9yCS78i.js} +1 -1
  35. package/dist/gateway/static/root/assets/capability-links-DeO34GIF.js +1 -0
  36. package/dist/gateway/static/root/assets/{channels-Cn1MWBL_.js → channels-CoQb4HOF.js} +1 -1
  37. package/dist/gateway/static/root/assets/{chat-agents-api-BB0biwc7.js → chat-agents-api-BUi_7GRo.js} +1 -1
  38. package/dist/gateway/static/root/assets/{chat-chart-block-QSvjx4w6.js → chat-chart-block-CcVcKsDZ.js} +1 -1
  39. package/dist/gateway/static/root/assets/chat-page-BJ8PlDjZ.js +72 -0
  40. package/dist/gateway/static/root/assets/{chat-terminal-dock-Cd51G9eG.js → chat-terminal-dock-BMXJpPuH.js} +1 -1
  41. package/dist/gateway/static/root/assets/{command-palette-api-CEG10uE-.js → command-palette-api-luUjQPsh.js} +1 -1
  42. package/dist/gateway/static/root/assets/{composer-payload-handoff-Bogdq9Hy.js → composer-payload-handoff-B5XNxNCb.js} +1 -1
  43. package/dist/gateway/static/root/assets/computer-settings-page-CWtdyEJH.js +1 -0
  44. package/dist/gateway/static/root/assets/connected-providers-grid-2idMtk65.js +1 -0
  45. package/dist/gateway/static/root/assets/connection-usage-Cm_McddI.js +1 -0
  46. package/dist/gateway/static/root/assets/connection-usage-guide-Ddh0bfkj.js +1 -0
  47. package/dist/gateway/static/root/assets/{connector-service-page-k2rjyjrp.js → connector-service-page-C3msXaBk.js} +1 -1
  48. package/dist/gateway/static/root/assets/{connectors-api-DtvB9Cjm.js → connectors-api-NcWECWKg.js} +1 -1
  49. package/dist/gateway/static/root/assets/connectors-page-Crb6DILX.js +1 -0
  50. package/dist/gateway/static/root/assets/{date-picker-CAankdQw.js → date-picker-Cfjq1hD_.js} +1 -1
  51. package/dist/gateway/static/root/assets/{desktop-pet-DjM73fir.js → desktop-pet-ChFn9v-3.js} +1 -1
  52. package/dist/gateway/static/root/assets/{desktop-pet-settings-Rmh-GxHl.js → desktop-pet-settings-DvnVIv25.js} +1 -1
  53. package/dist/gateway/static/root/assets/{dev-view-store-BgW2Riyk.js → dev-view-store-DQJ61P5L.js} +1 -1
  54. package/dist/gateway/static/root/assets/{device-pairing-wizard-UdzSpNa5.js → device-pairing-wizard-KxaIL-OX.js} +1 -1
  55. package/dist/gateway/static/root/assets/{directory-picker-path-field-Rkw3f7lG.js → directory-picker-path-field-Drv864uE.js} +1 -1
  56. package/dist/gateway/static/root/assets/{discussion-annotation-sync-Dudoj_Fz.js → discussion-annotation-sync-DfBRkWtw.js} +1 -1
  57. package/dist/gateway/static/root/assets/{extension-debug-page-DxIGAO23.js → extension-debug-page-DAlBIt_R.js} +1 -1
  58. package/dist/gateway/static/root/assets/{extension-iframe-host-63KpX6IP.js → extension-iframe-host-Bds-5kY_.js} +1 -1
  59. package/dist/gateway/static/root/assets/{extension-marketplace-api-yXNUkQDA.js → extension-marketplace-api-CZg8nBwW.js} +1 -1
  60. package/dist/gateway/static/root/assets/{extension-page-C811A_Ww.js → extension-page-ZTw-oucT.js} +1 -1
  61. package/dist/gateway/static/root/assets/{extension-provider-C4jLFIgh.js → extension-provider-NKWfjpdP.js} +1 -1
  62. package/dist/gateway/static/root/assets/{extension-settings-page-WJSw5MT0.js → extension-settings-page-CT7PPt_q.js} +1 -1
  63. package/dist/gateway/static/root/assets/{file-preview-surface-zE9AcaHM.js → file-preview-surface-BcLeaSNe.js} +1 -1
  64. package/dist/gateway/static/root/assets/{gateway-config-swr-D6cc6W6E.js → gateway-config-swr-Cq-ByXL4.js} +1 -1
  65. package/dist/gateway/static/root/assets/{gateway-realtime-BSRNLciy.js → gateway-realtime-DwMd2PCt.js} +1 -1
  66. package/dist/gateway/static/root/assets/gateway-realtime-store-CHrf6-nR.js +1 -0
  67. package/dist/gateway/static/root/assets/{gateway-restart-Unun5hRL.js → gateway-restart-DdiVzbkL.js} +1 -1
  68. package/dist/gateway/static/root/assets/{gateway-settings-DP-DV-e5.js → gateway-settings-1QUdNwrZ.js} +1 -1
  69. package/dist/gateway/static/root/assets/{gateway-startup-retry-C8g666Ja.js → gateway-startup-retry-PMJi5mX4.js} +1 -1
  70. package/dist/gateway/static/root/assets/{global-defaults-api-BObi-1ww.js → global-defaults-api-DgzZh3wX.js} +1 -1
  71. package/dist/gateway/static/root/assets/{home-page-CIcs7Mzy.js → home-page-Chn7YTiD.js} +2 -2
  72. package/dist/gateway/static/root/assets/{image-generation-api-C2SqYNyD.js → image-generation-api-CjVpsckq.js} +1 -1
  73. package/dist/gateway/static/root/assets/{imports-page-C8ezUkOJ.js → imports-page-CJCvZFaQ.js} +1 -1
  74. package/dist/gateway/static/root/assets/index-DWQ4LbBn.js +11 -0
  75. package/dist/gateway/static/root/assets/index-iukJWzxG.css +1 -0
  76. package/dist/gateway/static/root/assets/install-connector-dialog-Bo06Ry3H.js +1 -0
  77. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BRaY4-wA.js → keyboard-shortcuts-settings-BylFJeGu.js} +1 -1
  78. package/dist/gateway/static/root/assets/{local-app-workbench-page-BZtVcjF3.js → local-app-workbench-page-B3MSSFsr.js} +1 -1
  79. package/dist/gateway/static/root/assets/{local-apps-page-MqP4EnJm.js → local-apps-page-BeV86rMJ.js} +1 -1
  80. package/dist/gateway/static/root/assets/{local-session-drafts-DTq9776a.js → local-session-drafts-jgw8UGsO.js} +2 -2
  81. package/dist/gateway/static/root/assets/{locale-store-B6OrWgY1.js → locale-store-CAZaC05J.js} +1 -1
  82. package/dist/gateway/static/root/assets/{logs-page-hkHBjblX.js → logs-page-BMmSsUP5.js} +1 -1
  83. package/dist/gateway/static/root/assets/{management-settings-DoX4eTM3.js → management-settings-Bu7T8ewk.js} +1 -1
  84. package/dist/gateway/static/root/assets/{markdown-view-DrhYZSmg.js → markdown-view-BatP4qeK.js} +1 -1
  85. package/dist/gateway/static/root/assets/{mcp-conversation-setup-page-BEp5E6TD.js → mcp-conversation-setup-page-rROtr0UN.js} +1 -1
  86. package/dist/gateway/static/root/assets/{media-plugins-D987i9Gc.js → media-plugins-88OV72YE.js} +1 -1
  87. package/dist/gateway/static/root/assets/messages-C7fckbyG.js +3 -0
  88. package/dist/gateway/static/root/assets/{model-selector-DXm4NS1_.js → model-selector-raBRBkN_.js} +1 -1
  89. package/dist/gateway/static/root/assets/{models-hub-cache-BLcha5rx.js → models-hub-cache-CzC9y3D0.js} +1 -1
  90. package/dist/gateway/static/root/assets/{note-detail-panel-Cl851ivY.js → note-detail-panel-BvA8Vkbm.js} +3 -3
  91. package/dist/gateway/static/root/assets/note-image-lightbox-D6kUDDd5.js +1 -0
  92. package/dist/gateway/static/root/assets/{notes-api-Ddsf7FVg.js → notes-api-zXpV6UXu.js} +1 -1
  93. package/dist/gateway/static/root/assets/{notes-page-DSwA1MU1.js → notes-page-CjYH9Kle.js} +1 -1
  94. package/dist/gateway/static/root/assets/{oauth-api-CMmu4DzH.js → oauth-api-DmxSaxM1.js} +1 -1
  95. package/dist/gateway/static/root/assets/{oauth-provider-connect-BkhnftBq.js → oauth-provider-connect-D4Gfs-Ba.js} +1 -1
  96. package/dist/gateway/static/root/assets/{page-context-capture-button-urhQBRaN.js → page-context-capture-button-Mig3d0UX.js} +1 -1
  97. package/dist/gateway/static/root/assets/{page-context-draft-BuNUerth.js → page-context-draft-C4IIZaKd.js} +1 -1
  98. package/dist/gateway/static/root/assets/page-header-store-D7G5utVi.js +1 -0
  99. package/dist/gateway/static/root/assets/{personal-avatar-B49ueeZO.js → personal-avatar-DLa-CpaK.js} +1 -1
  100. package/dist/gateway/static/root/assets/{personal-page-f05ceuFn.js → personal-page-l9_vYfdJ.js} +1 -1
  101. package/dist/gateway/static/root/assets/{personal-settings-panel-DLQxzPYr.js → personal-settings-panel-XSUkgcr2.js} +1 -1
  102. package/dist/gateway/static/root/assets/phone-dependencies-card-DYwnuVh3.js +1 -0
  103. package/dist/gateway/static/root/assets/phone-model-connection-2F32QTHA.js +1 -0
  104. package/dist/gateway/static/root/assets/phone-model-picker-DCVzIr0s.js +1 -0
  105. package/dist/gateway/static/root/assets/phone-settings-page-DJttE4id.js +1 -0
  106. package/dist/gateway/static/root/assets/{phone-workspace-store-DbqktZbO.js → phone-workspace-store-Dxp-KhFP.js} +1 -1
  107. package/dist/gateway/static/root/assets/plugin-details-dialog-tyjAjFjA.js +1 -0
  108. package/dist/gateway/static/root/assets/{preference-select-fields-BZWqG7pu.js → preference-select-fields-BVP3MhGK.js} +1 -1
  109. package/dist/gateway/static/root/assets/{product-automation-feedback-DDQUsag7.js → product-automation-feedback-DbJvv92z.js} +1 -1
  110. package/dist/gateway/static/root/assets/{product-open-page-BkRP_HmA.js → product-open-page-RImqlhCD.js} +1 -1
  111. package/dist/gateway/static/root/assets/{product-preview-content-o2Y3VNE7.js → product-preview-content-DxSqrKsg.js} +1 -1
  112. package/dist/gateway/static/root/assets/{product-preview-modal-7Ohx-7OR.js → product-preview-modal-Cw8Q8Uom.js} +2 -2
  113. package/dist/gateway/static/root/assets/{project-detail-page-B2RsSHya.js → project-detail-page-BbyV8EiG.js} +1 -1
  114. package/dist/gateway/static/root/assets/{project-understanding-BIMouiYX.js → project-understanding-BMKcoUW5.js} +1 -1
  115. package/dist/gateway/static/root/assets/{projects-page-C9R5u3tF.js → projects-page-CFsABLvs.js} +1 -1
  116. package/dist/gateway/static/root/assets/{providers-api-BOCkRZ7X.js → providers-api-CAeXbJNF.js} +1 -1
  117. package/dist/gateway/static/root/assets/{recording-upload-C6muEHEO.js → recording-upload-CfpllTe5.js} +1 -1
  118. package/dist/gateway/static/root/assets/{registry-api-Bl2guMRg.js → registry-api-fLOqFyrz.js} +1 -1
  119. package/dist/gateway/static/root/assets/{remote-access-hub-BceSMbCs.js → remote-access-hub-BvKOxy0L.js} +1 -1
  120. package/dist/gateway/static/root/assets/{resource-unavailable-CUNbPkdj.js → resource-unavailable-D15jzjV_.js} +1 -1
  121. package/dist/gateway/static/root/assets/route-preload-BWpw9qxc.js +2 -0
  122. package/dist/gateway/static/root/assets/{runtime-tools-api-LopLjgvu.js → runtime-tools-api-D0Nrvuqv.js} +1 -1
  123. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-9HIPerDP.js → runtime-tools-settings-panel-CA27XgL2.js} +1 -1
  124. package/dist/gateway/static/root/assets/{service-recommendation-list-CoMI6MB1.js → service-recommendation-list-B0RoYLVT.js} +1 -1
  125. package/dist/gateway/static/root/assets/session-api-CHRP5Lwf.js +1 -0
  126. package/dist/gateway/static/root/assets/session-channel-icon-D1ktvt1P.js +1 -0
  127. package/dist/gateway/static/root/assets/session-identity-label-BP7OIYth.js +1 -0
  128. package/dist/gateway/static/root/assets/session-manager-DRRWwKE4.js +25 -0
  129. package/dist/gateway/static/root/assets/{sessions-page-BT0GdXdS.js → sessions-page-uJHS3-6F.js} +1 -1
  130. package/dist/gateway/static/root/assets/settings-advanced-gate-CZ4J3Kuy.js +1 -0
  131. package/dist/gateway/static/root/assets/{settings-advanced-section-CEorDLUp.js → settings-advanced-section-D-llwfSj.js} +1 -1
  132. package/dist/gateway/static/root/assets/{settings-mode-store-C2LZqBES.js → settings-mode-store-BspMKc9N.js} +1 -1
  133. package/dist/gateway/static/root/assets/{settings-page-C_Np_6qZ.js → settings-page-XJXcnE1_.js} +1 -1
  134. package/dist/gateway/static/root/assets/{settings-page-header-BAN34UQi.js → settings-page-header-LuOJvqNa.js} +1 -1
  135. package/dist/gateway/static/root/assets/{settings-page-layout-B5TVFBV2.js → settings-page-layout-CduQ8w4a.js} +1 -1
  136. package/dist/gateway/static/root/assets/{setup-interaction-page-BYvTJW3_.js → setup-interaction-page-ujpPGl84.js} +1 -1
  137. package/dist/gateway/static/root/assets/{setup-status-panel-UY2dH-sK.js → setup-status-panel-BN2aCJUN.js} +1 -1
  138. package/dist/gateway/static/root/assets/{share-link-dialog-BMcXyzr2.js → share-link-dialog-CTATUaa4.js} +1 -1
  139. package/dist/gateway/static/root/assets/{share-preview-page-UQ6eUM2_.js → share-preview-page-Dq0J3VgS.js} +1 -1
  140. package/dist/gateway/static/root/assets/{shares-api-DOeDN6Tm.js → shares-api-zegE8pSE.js} +1 -1
  141. package/dist/gateway/static/root/assets/{shares-settings-W8XhuAoL.js → shares-settings-DXpvsRXq.js} +1 -1
  142. package/dist/gateway/static/root/assets/{skill-api-Do_c0d9n.js → skill-api-DCL1EN7f.js} +1 -1
  143. package/dist/gateway/static/root/assets/{skill-list-api-DpHaXI2l.js → skill-list-api-Bv0mmHbu.js} +1 -1
  144. package/dist/gateway/static/root/assets/{skill-reload-api-DDRd9IJ2.js → skill-reload-api-DPZbadiO.js} +1 -1
  145. package/dist/gateway/static/root/assets/{skills-page-CaeJVKhO.js → skills-page-DMC7Gaku.js} +1 -1
  146. package/dist/gateway/static/root/assets/{system-settings-panel-DYWlWPJL.js → system-settings-panel-BYFUhlqG.js} +1 -1
  147. package/dist/gateway/static/root/assets/{task-detail-page-De0qD7xw.js → task-detail-page-DvX9JoEd.js} +3 -3
  148. package/dist/gateway/static/root/assets/{task-result-evidence-CICR5K1t.js → task-result-evidence-Bxm8-H0B.js} +1 -1
  149. package/dist/gateway/static/root/assets/{terminal-panel-store-BbWUcQe7.js → terminal-panel-store-Djf9l2qZ.js} +1 -1
  150. package/dist/gateway/static/root/assets/{theme-store-TkG5mo0p.js → theme-store-8GFVtotZ.js} +1 -1
  151. package/dist/gateway/static/root/assets/{tracing-settings-page-CYXEy4EG.js → tracing-settings-page-oWW3SBZ4.js} +1 -1
  152. package/dist/gateway/static/root/assets/{tunnel-api-DquDm6U2.js → tunnel-api-D-mEsSGF.js} +1 -1
  153. package/dist/gateway/static/root/assets/{understanding-activity-store-Ot3wZ3oQ.js → understanding-activity-store-CvDjsd0I.js} +1 -1
  154. package/dist/gateway/static/root/assets/{understanding-refresh-store-C5KYFMaC.js → understanding-refresh-store-DzOZJm7A.js} +1 -1
  155. package/dist/gateway/static/root/assets/{usage-page-1xFO4smo.js → usage-page-z-o6Uuev.js} +1 -1
  156. package/dist/gateway/static/root/assets/{use-autosave-HL8XRNR8.js → use-autosave-BVYS8UoK.js} +1 -1
  157. package/dist/gateway/static/root/assets/{use-composer-attachments-XRlQBdNF.js → use-composer-attachments-lecOV2q5.js} +1 -1
  158. package/dist/gateway/static/root/assets/{use-file-preview-expanded-CW956CXS.js → use-file-preview-expanded-nd_CuFsd.js} +2 -2
  159. package/dist/gateway/static/root/assets/{use-personal-profile-202s6tJt.js → use-personal-profile-CQi2ZCxV.js} +1 -1
  160. package/dist/gateway/static/root/assets/{use-workspace-tree-CjydkmH1.js → use-workspace-tree-BiaddkzX.js} +1 -1
  161. package/dist/gateway/static/root/assets/{user-model-page-OGPXx3pe.js → user-model-page-Bks1n0Nj.js} +1 -1
  162. package/dist/gateway/static/root/assets/{voice-api-key-field-CxFu4MEA.js → voice-api-key-field-BbW8NFeZ.js} +1 -1
  163. package/dist/gateway/static/root/assets/{voice-config-api-MHe5Pn-A.js → voice-config-api-jSMzZWWy.js} +1 -1
  164. package/dist/gateway/static/root/assets/{voice-input-shortcut-events-B9xc1oK8.js → voice-input-shortcut-events-_SgYmx7X.js} +1 -1
  165. package/dist/gateway/static/root/assets/{voice-transcribe-api-CVEcB6Pe.js → voice-transcribe-api-BJCfiRFU.js} +1 -1
  166. package/dist/gateway/static/root/assets/{work-discovery-overlay-C-JoAg2D.js → work-discovery-overlay-DSTSNyU7.js} +1 -1
  167. package/dist/gateway/static/root/assets/{work-discovery-page-B5Kx29Ru.js → work-discovery-page-Dd_QJJvb.js} +1 -1
  168. package/dist/gateway/static/root/assets/{working-directory-picker-modal-DGp9cNzH.js → working-directory-picker-modal-q39BUcJ6.js} +1 -1
  169. package/dist/gateway/static/root/assets/{workspace-api-HBXn8pL9.js → workspace-api-Di2OmCvz.js} +2 -2
  170. package/dist/gateway/static/root/assets/workspace-editor-agent-store-B2r9wlix.js +1 -0
  171. package/dist/gateway/static/root/assets/{workspace-file-preview-dialog-3cpwSG2w.js → workspace-file-preview-dialog-BUGNT765.js} +1 -1
  172. package/dist/gateway/static/root/assets/{workspace-open-location-menu-D0VOFvuP.js → workspace-open-location-menu-bMSvmQW7.js} +1 -1
  173. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-BkdW2p3v.js → xopc-cloud-account-card-Bbe19Del.js} +1 -1
  174. package/dist/gateway/static/root/index.html +87 -85
  175. package/dist/package.js +1 -1
  176. package/dist/packages/computer-control-contract/src/index.js +33 -3
  177. package/dist/packages/gateway-contract/src/session-identity.js +2 -1
  178. package/dist/packages/gateway-contract/src/session-input-command.js +19 -2
  179. package/dist/packages/gateway-contract/src/specialists.js +1 -0
  180. package/dist/src/agent/agent-manager.js +1 -1
  181. package/dist/src/agent/background-review/run-background-review.js +1 -1
  182. package/dist/src/agent/embedded/execution-tool-policy.d.ts +1 -1
  183. package/dist/src/agent/embedded/execution-tool-policy.js +2 -2
  184. package/dist/src/agent/embedded/run-for-session.js +23 -8
  185. package/dist/src/agent/embedded/run-turn.js +30 -7
  186. package/dist/src/agent/embedded/runs.d.ts +2 -2
  187. package/dist/src/agent/embedded/runs.js +4 -4
  188. package/dist/src/agent/embedded/session-runner.js +26 -11
  189. package/dist/src/agent/embedded/tool-search-extension.d.ts +8 -2
  190. package/dist/src/agent/embedded/tool-search-extension.js +122 -30
  191. package/dist/src/agent/external-tools/cliProvider.d.ts +10 -9
  192. package/dist/src/agent/external-tools/cliProvider.js +26 -6
  193. package/dist/src/agent/external-tools/composio-provider.d.ts +3 -3
  194. package/dist/src/agent/external-tools/composio-provider.js +8 -5
  195. package/dist/src/agent/external-tools/discovery.d.ts +47 -0
  196. package/dist/src/agent/external-tools/discovery.js +56 -0
  197. package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
  198. package/dist/src/agent/external-tools/gateway-tools.js +26 -46
  199. package/dist/src/agent/external-tools/index.d.ts +1 -0
  200. package/dist/src/agent/external-tools/index.js +7 -0
  201. package/dist/src/agent/external-tools/personal-request-scope.d.ts +7 -0
  202. package/dist/src/agent/external-tools/personal-request-scope.js +83 -0
  203. package/dist/src/agent/external-tools/read-policy.js +5 -4
  204. package/dist/src/agent/external-tools/service.d.ts +2 -0
  205. package/dist/src/agent/external-tools/service.js +22 -3
  206. package/dist/src/agent/external-tools/tool-registry.d.ts +6 -0
  207. package/dist/src/agent/external-tools/types.d.ts +7 -2
  208. package/dist/src/agent/inbound/turn-dispatcher.d.ts +1 -1
  209. package/dist/src/agent/inbound/turn-dispatcher.js +3 -2
  210. package/dist/src/agent/orchestration/llm-turn-retry.d.ts +1 -1
  211. package/dist/src/agent/orchestration/llm-turn-retry.js +13 -8
  212. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.d.ts +1 -0
  213. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +3 -1
  214. package/dist/src/agent/prompt/sections/tooling.js +1 -1
  215. package/dist/src/agent/service.js +1 -1
  216. package/dist/src/agent/skills/index.js +1 -1
  217. package/dist/src/agent/skills/managed-store.js +1 -1
  218. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  219. package/dist/src/agent/tool-manuals/computer.d.ts +1 -1
  220. package/dist/src/agent/tool-manuals/computer.js +6 -4
  221. package/dist/src/agent/tool-manuals/phone.d.ts +1 -1
  222. package/dist/src/agent/tool-manuals/phone.js +4 -4
  223. package/dist/src/agent/tool-manuals/xopc-configuration.d.ts +1 -1
  224. package/dist/src/agent/tool-manuals/xopc-configuration.js +4 -2
  225. package/dist/src/agent/tools/computer-use-tool.js +7 -6
  226. package/dist/src/agent/tools/delegation-policy.js +1 -0
  227. package/dist/src/agent/tools/factory.js +4 -2
  228. package/dist/src/agent/tools/personal-read-tool.js +1 -1
  229. package/dist/src/agent/tools/phone-use-tool.js +2 -2
  230. package/dist/src/agent/tools/web.js +22 -3
  231. package/dist/src/agent/tools/xopc-use-tool.js +2 -2
  232. package/dist/src/agent-catalog/capabilities.js +2 -2
  233. package/dist/src/agent-catalog/repository.js +1 -1
  234. package/dist/src/agent-matching/service.js +2 -2
  235. package/dist/src/automations/api/routes.js +2 -2
  236. package/dist/src/automations/capabilities/drafts.js +1 -1
  237. package/dist/src/automations/capabilities/write.js +1 -1
  238. package/dist/src/automations/configuration-conversation.js +1 -1
  239. package/dist/src/browser/providers/browser-ext-install.js +1 -1
  240. package/dist/src/capabilities/runtime/dispatcher.js +1 -1
  241. package/dist/src/capabilities/runtime/product.js +1 -1
  242. package/dist/src/cli/commands/agents.js +1 -1
  243. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  244. package/dist/src/cli/commands/models.js +1 -1
  245. package/dist/src/cli/commands/onboard/model.js +1 -1
  246. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  247. package/dist/src/computer/batch.d.ts +108 -0
  248. package/dist/src/computer/batch.js +125 -0
  249. package/dist/src/computer/broker.d.ts +28 -2
  250. package/dist/src/computer/broker.js +95 -17
  251. package/dist/src/computer/diagnostics.d.ts +5 -1
  252. package/dist/src/computer/diagnostics.js +22 -3
  253. package/dist/src/computer/errors.d.ts +15 -0
  254. package/dist/src/computer/errors.js +59 -3
  255. package/dist/src/computer/model-adapter.d.ts +58 -0
  256. package/dist/src/computer/model-adapter.js +112 -66
  257. package/dist/src/computer/native-errors.d.ts +2 -0
  258. package/dist/src/computer/native-errors.js +13 -0
  259. package/dist/src/computer/program-runtime.d.ts +1 -1
  260. package/dist/src/computer/program-runtime.js +1 -0
  261. package/dist/src/computer/runtime.d.ts +11 -0
  262. package/dist/src/computer/runtime.js +102 -34
  263. package/dist/src/computer/semantic-actions.js +4 -0
  264. package/dist/src/config/agent-profile.js +1 -1
  265. package/dist/src/config/schema.d.ts +6 -0
  266. package/dist/src/execution-environments/local-worktree-manager.js +1 -1
  267. package/dist/src/extensions/agent-plugins/formats.js +2 -1
  268. package/dist/src/extensions/agent-plugins/inventory.d.ts +2 -0
  269. package/dist/src/extensions/agent-plugins/inventory.js +4 -1
  270. package/dist/src/extensions/agent-plugins/skill-catalog.js +1 -1
  271. package/dist/src/extensions/agent-plugins/validation.d.ts +1 -0
  272. package/dist/src/extensions/agent-plugins/validation.js +3 -2
  273. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  274. package/dist/src/gateway/agents-admin.js +1 -1
  275. package/dist/src/gateway/global-defaults-admin.js +1 -1
  276. package/dist/src/gateway/hono/routes/agents.js +1 -1
  277. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  278. package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
  279. package/dist/src/gateway/hono/routes/notes.js +2 -2
  280. package/dist/src/gateway/hono/routes/phone-dependencies.js +26 -5
  281. package/dist/src/gateway/hono/routes/phone-setup.js +43 -17
  282. package/dist/src/gateway/hono/routes/phone.js +22 -7
  283. package/dist/src/gateway/hono/routes/projects.js +2 -2
  284. package/dist/src/gateway/hono/routes/session-command-handler.js +9 -0
  285. package/dist/src/gateway/hono/routes/session-input-control.d.ts +3 -0
  286. package/dist/src/gateway/hono/routes/session-input-control.js +37 -0
  287. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +12 -0
  288. package/dist/src/gateway/hono/routes/session-input-handler.js +23 -1
  289. package/dist/src/gateway/hono/routes/sessions.js +4 -0
  290. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  291. package/dist/src/gateway/image-generation-setup.js +1 -1
  292. package/dist/src/gateway/service/agent-runner.js +5 -4
  293. package/dist/src/gateway/service/config-coordinator.d.ts +6 -0
  294. package/dist/src/gateway/service/session-input-coordinator.d.ts +6 -3
  295. package/dist/src/gateway/service/session-input-coordinator.js +47 -6
  296. package/dist/src/gateway/service.d.ts +1 -0
  297. package/dist/src/gateway/service.js +4 -1
  298. package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
  299. package/dist/src/imports/importService.js +1 -1
  300. package/dist/src/local-apps/service.js +1 -1
  301. package/dist/src/personal-agent/capability-service.js +1 -1
  302. package/dist/src/personal-agent/request-access.d.ts +2 -0
  303. package/dist/src/personal-agent/request-access.js +22 -2
  304. package/dist/src/personal-agent/request-service.js +2 -2
  305. package/dist/src/personal-agent/service.js +1 -1
  306. package/dist/src/personal-agent/specialist-capabilities.d.ts +2 -0
  307. package/dist/src/personal-agent/specialist-capabilities.js +9 -3
  308. package/dist/src/phone/adb-driver.d.ts +3 -0
  309. package/dist/src/phone/adb-driver.js +29 -0
  310. package/dist/src/phone/contracts.d.ts +14 -2
  311. package/dist/src/phone/contracts.js +8 -1
  312. package/dist/src/phone/gui-protocol.js +1 -1
  313. package/dist/src/phone/hdc-driver.d.ts +30 -0
  314. package/dist/src/phone/hdc-driver.js +331 -0
  315. package/dist/src/phone/hdc-video-bridge.d.ts +2 -0
  316. package/dist/src/phone/hdc-video-bridge.js +91 -0
  317. package/dist/src/phone/hdc-video-tools.d.ts +15 -0
  318. package/dist/src/phone/hdc-video-tools.js +123 -0
  319. package/dist/src/phone/hdc-video.d.ts +69 -0
  320. package/dist/src/phone/hdc-video.js +350 -0
  321. package/dist/src/phone/interactive-session.js +1 -1
  322. package/dist/src/phone/live-provider.d.ts +6 -0
  323. package/dist/src/phone/live-provider.js +1 -0
  324. package/dist/src/phone/model-adapter.d.ts +3 -0
  325. package/dist/src/phone/model-adapter.js +5 -3
  326. package/dist/src/phone/repository.js +2 -1
  327. package/dist/src/phone/runtime.d.ts +10 -4
  328. package/dist/src/phone/runtime.js +151 -85
  329. package/dist/src/phone/setup/service.d.ts +8 -6
  330. package/dist/src/phone/setup/service.js +33 -16
  331. package/dist/src/platform/client.d.ts +1 -1
  332. package/dist/src/platform/contracts.d.ts +1 -1
  333. package/dist/src/process/phone-process.d.ts +1 -1
  334. package/dist/src/process/phone-process.js +2 -2
  335. package/dist/src/runtime-tools/archive.js +1 -1
  336. package/dist/src/runtime-tools/downloader.d.ts +1 -0
  337. package/dist/src/runtime-tools/downloader.js +8 -4
  338. package/dist/src/runtime-tools/harmony-dependencies.d.ts +24 -0
  339. package/dist/src/runtime-tools/harmony-dependencies.js +272 -0
  340. package/dist/src/runtime-tools/harmony-dependency-catalog.d.ts +4 -0
  341. package/dist/src/runtime-tools/harmony-dependency-catalog.js +54 -0
  342. package/dist/src/runtime-tools/harmony-paths.d.ts +9 -0
  343. package/dist/src/runtime-tools/harmony-paths.js +15 -0
  344. package/dist/src/runtime-tools/hdc-dependency-catalog.d.ts +8 -0
  345. package/dist/src/runtime-tools/hdc-dependency-catalog.js +83 -0
  346. package/dist/src/runtime-tools/hdc-files.d.ts +14 -0
  347. package/dist/src/runtime-tools/hdc-files.js +87 -0
  348. package/dist/src/runtime-tools/phone-dependencies.d.ts +6 -1
  349. package/dist/src/runtime-tools/phone-dependencies.js +20 -2
  350. package/dist/src/runtime-tools/phone-dependency-catalog.d.ts +10 -1
  351. package/dist/src/runtime-tools/phone-dependency-catalog.js +2 -0
  352. package/dist/src/runtime-tools/types.d.ts +1 -1
  353. package/dist/src/storage/sqlite/schema.d.ts +2 -2
  354. package/dist/src/storage/sqlite/schema.js +7 -7
  355. package/dist/src/storage/sqlite/schema.sql +16 -0
  356. package/dist/src/storage/sqlite/session-creation-repository.js +3 -0
  357. package/dist/src/storage/sqlite/session-input-control-repository.d.ts +12 -0
  358. package/dist/src/storage/sqlite/session-input-control-repository.js +83 -0
  359. package/dist/src/storage/sqlite/session-input-repository.d.ts +2 -0
  360. package/dist/src/storage/sqlite/session-input-repository.js +17 -5
  361. package/dist/src/storage/sqlite/session-repository.js +1 -0
  362. package/dist/src/storage/sqlite/session-turn-replace-repository.d.ts +2 -0
  363. package/dist/src/storage/sqlite/session-turn-replace-repository.js +14 -2
  364. package/dist/src/storage/sqlite/upgrades/262_session_input_control.sql +15 -0
  365. package/dist/src/tasks/capabilities/read.js +2 -2
  366. package/dist/src/tasks/capabilities/write.js +1 -1
  367. package/dist/src/tui/backends/embedded-backend.js +1 -1
  368. package/dist/src/voice/realtime/persona-context.js +1 -1
  369. package/package.json +2 -2
  370. package/skills/tools/configure-xopc/SKILL.md +2 -2
  371. package/skills/tools/configure-xopc/references/phone/acceptance.md +3 -2
  372. package/skills/tools/configure-xopc/references/phone/dependencies.md +18 -2
  373. package/skills/tools/configure-xopc/references/phone/harmonyos.md +16 -0
  374. package/skills/tools/configure-xopc/references/phone/overview.md +2 -2
  375. package/skills/tools/configure-xopc/references/scene-index.md +2 -2
  376. package/dist/gateway/static/root/assets/apps-page-D-n71lO1.js +0 -1
  377. package/dist/gateway/static/root/assets/automations-workspace-DWDWy-SG.js +0 -9
  378. package/dist/gateway/static/root/assets/capabilities-page-IcwojmJK.js +0 -2
  379. package/dist/gateway/static/root/assets/capability-links-DzQWK1Fh.js +0 -1
  380. package/dist/gateway/static/root/assets/chat-page-CwP4OMdW.js +0 -72
  381. package/dist/gateway/static/root/assets/computer-settings-page-DyAlOzqY.js +0 -1
  382. package/dist/gateway/static/root/assets/connected-providers-grid-D0lXg22c.js +0 -1
  383. package/dist/gateway/static/root/assets/connectors-page-DI_Q0CKz.js +0 -1
  384. package/dist/gateway/static/root/assets/gateway-realtime-store-BFeFfApQ.js +0 -1
  385. package/dist/gateway/static/root/assets/index-Cz-VjTNd.css +0 -1
  386. package/dist/gateway/static/root/assets/index-D1_PUrJf.js +0 -11
  387. package/dist/gateway/static/root/assets/install-connector-dialog-Cn4nRSyt.js +0 -1
  388. package/dist/gateway/static/root/assets/list-tree-B0OMswgM.js +0 -1
  389. package/dist/gateway/static/root/assets/messages-jwdBhfL9.js +0 -3
  390. package/dist/gateway/static/root/assets/note-image-lightbox-DGYRJS03.js +0 -1
  391. package/dist/gateway/static/root/assets/page-header-store-CEn_kPsn.js +0 -1
  392. package/dist/gateway/static/root/assets/phone-dependencies-card-DjmC1Z5j.js +0 -1
  393. package/dist/gateway/static/root/assets/phone-model-connection-BRjHSgYn.js +0 -1
  394. package/dist/gateway/static/root/assets/phone-model-picker-DgIiWLhR.js +0 -1
  395. package/dist/gateway/static/root/assets/phone-settings-page-DCZGCL_z.js +0 -1
  396. package/dist/gateway/static/root/assets/plugin-details-dialog-D4tGKip4.js +0 -1
  397. package/dist/gateway/static/root/assets/route-preload-C1BKDjnu.js +0 -2
  398. package/dist/gateway/static/root/assets/session-api-Bfmlmn9F.js +0 -1
  399. package/dist/gateway/static/root/assets/session-channel-icon-SsY70Z6t.js +0 -1
  400. package/dist/gateway/static/root/assets/session-identity-label-B7sgG1PE.js +0 -1
  401. package/dist/gateway/static/root/assets/session-manager-X4UHOjjO.js +0 -25
  402. package/dist/gateway/static/root/assets/settings-advanced-gate-Dk9c-Z5e.js +0 -1
  403. 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 (this.session !== s || s.controller.signal.aborted || this.expired(s) || !this.host.isVisible()) throw new Error("COMPUTER_GRANT_REVOKED");
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.stop();
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 >= this.config.maxActionsPerSession) throw new Error("COMPUTER_ACTION_BUDGET");
283
- if ((e.action.kind === "drag" ? [e.action.from, e.action.to] : "point" in e.action && e.action.point ? [e.action.point] : []).some((point) => point.x >= observed.imageWidth || point.y >= observed.imageHeight)) throw new Error("COMPUTER_COORDINATE_OUTSIDE_WINDOW");
284
- if (e.action.kind === "typeText" && !e.action.point && !observed.focusedEditableRef) throw new Error("COMPUTER_EDITABLE_TARGET_REQUIRED");
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(() => {}).finally(() => this.host.onStateChange?.());
302
- return this.result(s);
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" && receipt.dispatch === "completed") this.count("completedInputs");
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 "COMPUTER_CONTROL_PAUSED":
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">;