@xopcai/xopc 0.0.424 → 0.0.425

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 (234) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/gateway/static/root/assets/{activity-store-AI081rxe.js → activity-store-CMw8qBuC.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DupnTbL7.js → agent-avatar-dicebear-JI0YWOIm.js} +1 -1
  5. package/dist/gateway/static/root/assets/{agent-avatar-display-CmEj6Uqy.js → agent-avatar-display-YqmwzOSa.js} +2 -2
  6. package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-IEV5yKuu.js → agent-defaults-settings-panel-DlvjxWg6.js} +1 -1
  7. package/dist/gateway/static/root/assets/{agent-plugin-dialog-D_njOuFA.js → agent-plugin-dialog-OBueuQSc.js} +1 -1
  8. package/dist/gateway/static/root/assets/{agents-B_yg9nA3.js → agents-Cp6_5OOQ.js} +3 -3
  9. package/dist/gateway/static/root/assets/{agents-admin-api-CUZUolwG.js → agents-admin-api-DLnmdC1h.js} +1 -1
  10. package/dist/gateway/static/root/assets/{api-bpQ7yR10.js → api-Boc-CVh7.js} +1 -1
  11. package/dist/gateway/static/root/assets/{api-CWWEVThO.js → api-bL7sxjAF.js} +1 -1
  12. package/dist/gateway/static/root/assets/{app-management-settings-panel-C0_hxwgg.js → app-management-settings-panel-jIG5i7KE.js} +1 -1
  13. package/dist/gateway/static/root/assets/{appearance-settings-CLh-qnCC.js → appearance-settings-BnaQW9Xd.js} +1 -1
  14. package/dist/gateway/static/root/assets/{apps-page-Bjtm3Rgi.js → apps-page-C2WKUwtN.js} +1 -1
  15. package/dist/gateway/static/root/assets/{archive-plugin-dGnstkhB.js → archive-plugin-DjboG3kA.js} +1 -1
  16. package/dist/gateway/static/root/assets/{automation-api-MB2xCoFF.js → automation-api-CZqL9l_d.js} +1 -1
  17. package/dist/gateway/static/root/assets/{automation-result-state-DJQflY78.js → automation-result-state-DRd-X_Ai.js} +1 -1
  18. package/dist/gateway/static/root/assets/{automation-task-card-DXgBxVE2.js → automation-task-card-wbnR5i6N.js} +1 -1
  19. package/dist/gateway/static/root/assets/{automations-page-D3O7M2FH.js → automations-page-HyBQIfmn.js} +1 -1
  20. package/dist/gateway/static/root/assets/{automations-workspace-Dk3FVWoX.js → automations-workspace-D6cTOKr7.js} +2 -2
  21. package/dist/gateway/static/root/assets/{binary-plugins-BrVJXmYf.js → binary-plugins-Bg8ARZUH.js} +1 -1
  22. package/dist/gateway/static/root/assets/{block-editor-Dok4sfT3.js → block-editor-DKohqFAW.js} +1 -1
  23. package/dist/gateway/static/root/assets/{browser-automation-inputs-PJbT3CxW.js → browser-automation-inputs-YeibTzw4.js} +1 -1
  24. package/dist/gateway/static/root/assets/{browser-automations-page-kkpX1Q7K.js → browser-automations-page-BWNcbuz2.js} +1 -1
  25. package/dist/gateway/static/root/assets/{browser-control-api-Bg4wnkeA.js → browser-control-api-CDeuxy2x.js} +1 -1
  26. package/dist/gateway/static/root/assets/{browser-settings-page-BrgX_Yb2.js → browser-settings-page-L0nBjfhG.js} +1 -1
  27. package/dist/gateway/static/root/assets/{capabilities-Cs6Jt5Gl.js → capabilities-BcQa8c9n.js} +1 -1
  28. package/dist/gateway/static/root/assets/{capabilities-BMaJizw4.js → capabilities-aT-QjNTl.js} +1 -1
  29. package/dist/gateway/static/root/assets/{capabilities-page-D5hvAG6D.js → capabilities-page-DlpuHdHi.js} +2 -2
  30. package/dist/gateway/static/root/assets/{capabilities-settings-panel-BrEvm4IH.js → capabilities-settings-panel-pvqkN2-2.js} +1 -1
  31. package/dist/gateway/static/root/assets/{channels-1jQgGVc9.js → channels-BUPtawh6.js} +1 -1
  32. package/dist/gateway/static/root/assets/{chat-agents-api-BAOWaUJf.js → chat-agents-api-B8JO6Tcj.js} +1 -1
  33. package/dist/gateway/static/root/assets/{chat-chart-block-DeWrb9XR.js → chat-chart-block-DRtuFfF1.js} +1 -1
  34. package/dist/gateway/static/root/assets/{chat-page-CafkCKOj.js → chat-page-BP0huA-W.js} +31 -31
  35. package/dist/gateway/static/root/assets/{chat-terminal-dock-C544n0-R.js → chat-terminal-dock-Dkqq5FSL.js} +1 -1
  36. package/dist/gateway/static/root/assets/{command-palette-api-D9PXzY8b.js → command-palette-api-qujvNqkK.js} +1 -1
  37. package/dist/gateway/static/root/assets/{composer-payload-handoff-CYXfjpem.js → composer-payload-handoff-CYIhcczq.js} +1 -1
  38. package/dist/gateway/static/root/assets/{computer-settings-page-DJmod8-w.js → computer-settings-page-8q4hRmoo.js} +1 -1
  39. package/dist/gateway/static/root/assets/{connected-providers-grid-b46VH4uy.js → connected-providers-grid-CKZfhHSD.js} +1 -1
  40. package/dist/gateway/static/root/assets/{connector-service-page-BqDbTOTp.js → connector-service-page-DQaTI21R.js} +1 -1
  41. package/dist/gateway/static/root/assets/{connectors-api-CwRuUnH4.js → connectors-api-BjypBp2g.js} +1 -1
  42. package/dist/gateway/static/root/assets/{connectors-page-Mq9Bvoax.js → connectors-page-Lf1ZzaVn.js} +1 -1
  43. package/dist/gateway/static/root/assets/{date-picker-DWaT0IC0.js → date-picker-D_PSHGpe.js} +1 -1
  44. package/dist/gateway/static/root/assets/{dependency-picker-DV9XAt6F.js → dependency-picker-UqKVJ9dv.js} +1 -1
  45. package/dist/gateway/static/root/assets/{desktop-pet-Dffq2NxL.js → desktop-pet-1Et9VqkM.js} +1 -1
  46. package/dist/gateway/static/root/assets/{desktop-pet-narrative-CS8qJpNO.js → desktop-pet-narrative-rADKU0FX.js} +1 -1
  47. package/dist/gateway/static/root/assets/{desktop-pet-settings-CrB1ICax.js → desktop-pet-settings-0fCGgaG7.js} +1 -1
  48. package/dist/gateway/static/root/assets/{dev-view-store-liRgSkcT.js → dev-view-store-TTj_djD8.js} +1 -1
  49. package/dist/gateway/static/root/assets/device-pairing-wizard-ByEL5lvM.js +1 -0
  50. package/dist/gateway/static/root/assets/{directory-picker-path-field-EKqQLQrE.js → directory-picker-path-field-C07a7wYX.js} +1 -1
  51. package/dist/gateway/static/root/assets/{discussion-annotation-sync-D-b1X6ro.js → discussion-annotation-sync-BFqKm9ky.js} +1 -1
  52. package/dist/gateway/static/root/assets/{extension-debug-page-wD97GeG0.js → extension-debug-page-DFaVlqas.js} +1 -1
  53. package/dist/gateway/static/root/assets/{extension-iframe-host-B4Q1CjvW.js → extension-iframe-host-BfzPfXBq.js} +1 -1
  54. package/dist/gateway/static/root/assets/{extension-marketplace-api-ak1_K3u8.js → extension-marketplace-api-ow0K1Y4_.js} +1 -1
  55. package/dist/gateway/static/root/assets/{extension-page-DWFI4iIh.js → extension-page-CrDADV5W.js} +1 -1
  56. package/dist/gateway/static/root/assets/{extension-provider-BZwcaU5Y.js → extension-provider-mnRoa63o.js} +1 -1
  57. package/dist/gateway/static/root/assets/{extension-settings-page-cn4KS42C.js → extension-settings-page-BLl02GFY.js} +1 -1
  58. package/dist/gateway/static/root/assets/{file-preview-surface-c3gDD9sM.js → file-preview-surface-TGdKqhCf.js} +1 -1
  59. package/dist/gateway/static/root/assets/{gateway-config-swr-Dmt5JhZU.js → gateway-config-swr-DfPQIHOL.js} +1 -1
  60. package/dist/gateway/static/root/assets/{gateway-realtime-CJtDXQCt.js → gateway-realtime-67vWg_M2.js} +1 -1
  61. package/dist/gateway/static/root/assets/gateway-realtime-store-Bkt1z-xo.js +1 -0
  62. package/dist/gateway/static/root/assets/{gateway-restart-DInvvT5u.js → gateway-restart-CLtR2wkL.js} +1 -1
  63. package/dist/gateway/static/root/assets/{gateway-settings-BZXdv2FE.js → gateway-settings-COvC3r-l.js} +1 -1
  64. package/dist/gateway/static/root/assets/{gateway-startup-retry-s2KcWekp.js → gateway-startup-retry-9YQllbw2.js} +1 -1
  65. package/dist/gateway/static/root/assets/{global-defaults-api-DtnmDd87.js → global-defaults-api-DYMRjGvd.js} +1 -1
  66. package/dist/gateway/static/root/assets/{home-page-CAVjA5rO.js → home-page-k9LFXcVa.js} +2 -2
  67. package/dist/gateway/static/root/assets/{image-generation-api-RQQokgE9.js → image-generation-api-Dzydfvy8.js} +1 -1
  68. package/dist/gateway/static/root/assets/{imports-page-BP_4TubV.js → imports-page-Csd_YZXZ.js} +1 -1
  69. package/dist/gateway/static/root/assets/index-CpwPxKQ8.css +1 -0
  70. package/dist/gateway/static/root/assets/index-DKW7BeT_.js +11 -0
  71. package/dist/gateway/static/root/assets/{install-connector-dialog-BNzNuXJ8.js → install-connector-dialog-CTQAKTPv.js} +1 -1
  72. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DNRQFepg.js → keyboard-shortcuts-settings-B201bMIa.js} +1 -1
  73. package/dist/gateway/static/root/assets/{local-app-workbench-page-CvY5XxbX.js → local-app-workbench-page-CD_8_gd_.js} +1 -1
  74. package/dist/gateway/static/root/assets/{local-apps-page-DfwEvd8G.js → local-apps-page-BOwqNH0L.js} +1 -1
  75. package/dist/gateway/static/root/assets/{local-session-drafts-CuDdIyxR.js → local-session-drafts-DjmK-SM9.js} +1 -1
  76. package/dist/gateway/static/root/assets/{locale-store-TQcz_Vjt.js → locale-store-Bg_XR36n.js} +1 -1
  77. package/dist/gateway/static/root/assets/{logs-page-eq49F1Rt.js → logs-page-gw3E9CMQ.js} +1 -1
  78. package/dist/gateway/static/root/assets/{management-settings-BaYXDMOJ.js → management-settings-t_Z2mCyw.js} +1 -1
  79. package/dist/gateway/static/root/assets/{markdown-view-D4nII6Zv.js → markdown-view-BUpXJUPv.js} +1 -1
  80. package/dist/gateway/static/root/assets/{media-plugins-MvlAY405.js → media-plugins-_shnaEMY.js} +1 -1
  81. package/dist/gateway/static/root/assets/messages-DG4HLOER.js +3 -0
  82. package/dist/gateway/static/root/assets/{model-selector-nsoNHqif.js → model-selector-a7PIT1Lk.js} +1 -1
  83. package/dist/gateway/static/root/assets/{models-hub-cache-CFIazNIF.js → models-hub-cache-KOJC3z6Q.js} +1 -1
  84. package/dist/gateway/static/root/assets/{note-detail-panel-KPzbHiEW.js → note-detail-panel-BsHYUFgk.js} +3 -3
  85. package/dist/gateway/static/root/assets/note-image-lightbox-B-bEtjhj.js +1 -0
  86. package/dist/gateway/static/root/assets/{notes-api-HVxR5bRD.js → notes-api-BSmikUKI.js} +1 -1
  87. package/dist/gateway/static/root/assets/{notes-page-yShJeR3i.js → notes-page-CA0NRL8O.js} +1 -1
  88. package/dist/gateway/static/root/assets/{oauth-api-CfKjRVnb.js → oauth-api-D2t9HXoC.js} +1 -1
  89. package/dist/gateway/static/root/assets/{oauth-provider-connect-D4uqONWr.js → oauth-provider-connect-DGGGGtcB.js} +1 -1
  90. package/dist/gateway/static/root/assets/{page-context-capture-button-B98nlKTc.js → page-context-capture-button-BH54VO0V.js} +1 -1
  91. package/dist/gateway/static/root/assets/{page-context-draft-HcuK45iu.js → page-context-draft-BS5y8Cx9.js} +1 -1
  92. package/dist/gateway/static/root/assets/page-header-store-BdZnUh-D.js +1 -0
  93. package/dist/gateway/static/root/assets/{personal-avatar-_d72UP_d.js → personal-avatar-D8DtpDTa.js} +1 -1
  94. package/dist/gateway/static/root/assets/{personal-page-B19h_3WQ.js → personal-page-KJezmTKP.js} +1 -1
  95. package/dist/gateway/static/root/assets/{personal-settings-panel-CfwtGyue.js → personal-settings-panel-9uDaNJy5.js} +1 -1
  96. package/dist/gateway/static/root/assets/{phone-dependencies-card-D8bqsDk_.js → phone-dependencies-card-DLYrI0C4.js} +1 -1
  97. package/dist/gateway/static/root/assets/{phone-model-picker-CL_Zn6Xd.js → phone-model-picker-BbA2iI-3.js} +1 -1
  98. package/dist/gateway/static/root/assets/{phone-settings-page-C5Jia8eQ.js → phone-settings-page-Cg_BPss4.js} +1 -1
  99. package/dist/gateway/static/root/assets/{phone-workspace-store-FBfrfkYq.js → phone-workspace-store-CVDk80Bf.js} +1 -1
  100. package/dist/gateway/static/root/assets/{plugin-details-dialog-gAq2KPzK.js → plugin-details-dialog-DgibLkc3.js} +1 -1
  101. package/dist/gateway/static/root/assets/{preference-select-fields-Ck8GAX_y.js → preference-select-fields-BVoN-lAv.js} +1 -1
  102. package/dist/gateway/static/root/assets/{product-automation-feedback-BJ9oTnNs.js → product-automation-feedback-DCo90zGh.js} +1 -1
  103. package/dist/gateway/static/root/assets/{product-open-page-Dw9hUdxP.js → product-open-page-OWl8IAoY.js} +1 -1
  104. package/dist/gateway/static/root/assets/{product-preview-content-C0iPzmSm.js → product-preview-content-Cjas7UNe.js} +1 -1
  105. package/dist/gateway/static/root/assets/{product-preview-modal-COFtHoh6.js → product-preview-modal-CPWRvBI9.js} +2 -2
  106. package/dist/gateway/static/root/assets/{project-detail-page-C5Amjah-.js → project-detail-page-B_HlZux_.js} +1 -1
  107. package/dist/gateway/static/root/assets/{project-understanding-DpL9ADQU.js → project-understanding-Ba02SFzB.js} +1 -1
  108. package/dist/gateway/static/root/assets/{projects-page-gGg9nM2t.js → projects-page-CdfKjp95.js} +1 -1
  109. package/dist/gateway/static/root/assets/{providers-api-D6JJRlJb.js → providers-api-rwQ4LWzr.js} +1 -1
  110. package/dist/gateway/static/root/assets/{recording-upload-DxX1xKyt.js → recording-upload-BSmvRrZQ.js} +1 -1
  111. package/dist/gateway/static/root/assets/{registry-api-BfXzBR1D.js → registry-api-Vy7LfH6E.js} +1 -1
  112. package/dist/gateway/static/root/assets/{remote-access-hub-BZA4StwC.js → remote-access-hub-UXrnpGev.js} +1 -1
  113. package/dist/gateway/static/root/assets/{resource-unavailable-X-SIrZYI.js → resource-unavailable-f9OzSi4W.js} +1 -1
  114. package/dist/gateway/static/root/assets/{route-preload-CWRb0UCt.js → route-preload-BtObM-co.js} +2 -2
  115. package/dist/gateway/static/root/assets/{runtime-tools-api-1DjsPyQ5.js → runtime-tools-api-Bt8t37z5.js} +1 -1
  116. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-BnCtyORj.js → runtime-tools-settings-panel-DU4UXnBm.js} +1 -1
  117. package/dist/gateway/static/root/assets/{service-recommendation-list-ChSOfHHh.js → service-recommendation-list-CuYsRcBB.js} +1 -1
  118. package/dist/gateway/static/root/assets/{session-api-rvY5aWw8.js → session-api-DJI9eSgw.js} +1 -1
  119. package/dist/gateway/static/root/assets/session-manager-CtKgACGl.js +23 -0
  120. package/dist/gateway/static/root/assets/{sessions-page-DAS2IUGT.js → sessions-page-BAsKzRHt.js} +1 -1
  121. package/dist/gateway/static/root/assets/settings-advanced-gate-CjAFqg2U.js +1 -0
  122. package/dist/gateway/static/root/assets/{settings-advanced-section-ZKRIuk7h.js → settings-advanced-section-BxUuF_yi.js} +1 -1
  123. package/dist/gateway/static/root/assets/{settings-mode-store-CtJ8pEfm.js → settings-mode-store-CaoRh2gt.js} +1 -1
  124. package/dist/gateway/static/root/assets/{settings-page-header-DuNCn8i-.js → settings-page-header-CyUHrn7c.js} +1 -1
  125. package/dist/gateway/static/root/assets/{settings-page-layout-DeNC8YHJ.js → settings-page-layout-DGVqXrlp.js} +1 -1
  126. package/dist/gateway/static/root/assets/{settings-page-B3pUce-_.js → settings-page-qQ8-6dJ_.js} +1 -1
  127. package/dist/gateway/static/root/assets/{setup-status-panel-Fc3vuz_h.js → setup-status-panel-BpaPb625.js} +1 -1
  128. package/dist/gateway/static/root/assets/{share-link-dialog-B3hwjVAx.js → share-link-dialog-CQJ6Ykm2.js} +1 -1
  129. package/dist/gateway/static/root/assets/{share-preview-page-D_9oFzGS.js → share-preview-page-Cem96FbB.js} +1 -1
  130. package/dist/gateway/static/root/assets/{shares-api-BoUpXmxq.js → shares-api-Dowes16l.js} +1 -1
  131. package/dist/gateway/static/root/assets/{shares-settings-Drfuvepz.js → shares-settings-DZEkZDR0.js} +1 -1
  132. package/dist/gateway/static/root/assets/{skill-api-By2HhJ9O.js → skill-api-D8ZwFEVe.js} +1 -1
  133. package/dist/gateway/static/root/assets/{skill-list-api-TaUCzS8Y.js → skill-list-api-B4gp00-f.js} +1 -1
  134. package/dist/gateway/static/root/assets/{skill-reload-api-CN2fpS1n.js → skill-reload-api-ClmaaDXo.js} +1 -1
  135. package/dist/gateway/static/root/assets/{skills-page-LzGLique.js → skills-page-CV0X9rvG.js} +1 -1
  136. package/dist/gateway/static/root/assets/{system-settings-panel-Cuyg8Ml3.js → system-settings-panel-D095uacX.js} +1 -1
  137. package/dist/gateway/static/root/assets/task-detail-page-CY2C4AM2.js +2 -0
  138. package/dist/gateway/static/root/assets/{task-result-evidence-DDubAU_5.js → task-result-evidence-LUrJlUhb.js} +1 -1
  139. package/dist/gateway/static/root/assets/{terminal-panel-store-BNs75Wdr.js → terminal-panel-store-BqEDB1Vl.js} +1 -1
  140. package/dist/gateway/static/root/assets/{theme-store-DB1ZfBUm.js → theme-store-gAcojLgP.js} +1 -1
  141. package/dist/gateway/static/root/assets/tool-friendly-title-o6sxGVUu.js +1 -0
  142. package/dist/gateway/static/root/assets/{tracing-settings-page-TvtX4Goh.js → tracing-settings-page-B1ZRh-Is.js} +1 -1
  143. package/dist/gateway/static/root/assets/{tunnel-api-COoVEdV9.js → tunnel-api-C9u9E3UQ.js} +1 -1
  144. package/dist/gateway/static/root/assets/{understanding-activity-store-Dr_MLgYe.js → understanding-activity-store-BTrzsR6_.js} +1 -1
  145. package/dist/gateway/static/root/assets/{understanding-refresh-store-DGmLGEqw.js → understanding-refresh-store-5Qava3jh.js} +1 -1
  146. package/dist/gateway/static/root/assets/{usage-page-DP6eb6ed.js → usage-page-DFMLYKAc.js} +1 -1
  147. package/dist/gateway/static/root/assets/{use-autosave-itwjDYUb.js → use-autosave-3O-X7x15.js} +1 -1
  148. package/dist/gateway/static/root/assets/{use-composer-attachments-hjIGlI_2.js → use-composer-attachments-BLc4dBfe.js} +1 -1
  149. package/dist/gateway/static/root/assets/{use-file-preview-expanded-ClLa0g8D.js → use-file-preview-expanded-BaOmTXsT.js} +2 -2
  150. package/dist/gateway/static/root/assets/{use-personal-profile-vhWk6tTU.js → use-personal-profile-MusPgljM.js} +1 -1
  151. package/dist/gateway/static/root/assets/{use-workspace-tree-dfXXjA2-.js → use-workspace-tree-Ck_U2yTw.js} +1 -1
  152. package/dist/gateway/static/root/assets/{user-model-page-D8dswPWd.js → user-model-page-Den5Lg-k.js} +1 -1
  153. package/dist/gateway/static/root/assets/{voice-api-key-field-BIfBySnN.js → voice-api-key-field-C5zJApoa.js} +1 -1
  154. package/dist/gateway/static/root/assets/{voice-config-api-J4o59ICE.js → voice-config-api-DC1bYDt1.js} +1 -1
  155. package/dist/gateway/static/root/assets/{voice-input-shortcut-events-B1mlpUdC.js → voice-input-shortcut-events-0SZjJdVV.js} +1 -1
  156. package/dist/gateway/static/root/assets/{voice-transcribe-api-xxaSOOmq.js → voice-transcribe-api-CxVeANPX.js} +1 -1
  157. package/dist/gateway/static/root/assets/{work-discovery-overlay-DqwT1E5u.js → work-discovery-overlay-DAQ8McVe.js} +1 -1
  158. package/dist/gateway/static/root/assets/{work-discovery-page-BzYQmPLT.js → work-discovery-page-DUQysEyb.js} +1 -1
  159. package/dist/gateway/static/root/assets/{working-directory-picker-modal-D2Zf3GOG.js → working-directory-picker-modal-BO9qdJyZ.js} +1 -1
  160. package/dist/gateway/static/root/assets/{workspace-api-Bnx3eS2M.js → workspace-api-ZrN6yUER.js} +2 -2
  161. package/dist/gateway/static/root/assets/workspace-editor-agent-store-Bo5dwoWP.js +1 -0
  162. package/dist/gateway/static/root/assets/{workspace-file-preview-dialog-D13qHzVr.js → workspace-file-preview-dialog-Yj_kBWSb.js} +1 -1
  163. package/dist/gateway/static/root/assets/{workspace-open-location-menu-Cou-ig1H.js → workspace-open-location-menu-yxT7wajO.js} +1 -1
  164. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-DQGPKxHA.js → xopc-cloud-account-card-IcH9KDzx.js} +1 -1
  165. package/dist/gateway/static/root/index.html +81 -81
  166. package/dist/package.js +1 -1
  167. package/dist/packages/computer-control-contract/src/index.js +33 -3
  168. package/dist/src/agent/embedded/run-turn.js +64 -4
  169. package/dist/src/agent/tool-manuals/computer.d.ts +1 -1
  170. package/dist/src/agent/tool-manuals/computer.js +6 -0
  171. package/dist/src/agent/tools/computer-use-tool.js +18 -5
  172. package/dist/src/agent/tools/phone-use-tool.js +12 -2
  173. package/dist/src/cli/commands/backup.js +1 -1
  174. package/dist/src/computer/agent-context.d.ts +21 -0
  175. package/dist/src/computer/agent-context.js +107 -0
  176. package/dist/src/computer/broker.d.ts +4 -2
  177. package/dist/src/computer/broker.js +26 -11
  178. package/dist/src/computer/diagnostics.d.ts +60 -6
  179. package/dist/src/computer/diagnostics.js +45 -4
  180. package/dist/src/computer/errors.d.ts +1 -1
  181. package/dist/src/computer/errors.js +4 -0
  182. package/dist/src/computer/evaluation.d.ts +2 -2
  183. package/dist/src/computer/native-timing.d.ts +15 -0
  184. package/dist/src/computer/native-timing.js +49 -0
  185. package/dist/src/computer/program-runtime.d.ts +22 -0
  186. package/dist/src/computer/program-runtime.js +105 -0
  187. package/dist/src/computer/runtime.d.ts +36 -2
  188. package/dist/src/computer/runtime.js +269 -58
  189. package/dist/src/config/schema.d.ts +18 -0
  190. package/dist/src/gateway/global-defaults-admin.js +1 -1
  191. package/dist/src/gateway/service/config-coordinator.d.ts +6 -0
  192. package/dist/src/phone/adb-driver.d.ts +15 -1
  193. package/dist/src/phone/adb-driver.js +104 -41
  194. package/dist/src/phone/autoglm-protocol.d.ts +36 -0
  195. package/dist/src/phone/autoglm-protocol.js +88 -0
  196. package/dist/src/phone/autoglm-upstream-prompt.d.ts +2 -0
  197. package/dist/src/phone/autoglm-upstream-prompt.js +5 -0
  198. package/dist/src/phone/autoglm-upstream.LICENSE +201 -0
  199. package/dist/src/phone/cloud-adb-connection.d.ts +3 -0
  200. package/dist/src/phone/cloud-adb-connection.js +102 -31
  201. package/dist/src/phone/cloud-adb.js +18 -6
  202. package/dist/src/phone/completion-recovery.d.ts +6 -0
  203. package/dist/src/phone/completion-recovery.js +30 -0
  204. package/dist/src/phone/contracts.d.ts +20 -0
  205. package/dist/src/phone/contracts.js +6 -0
  206. package/dist/src/phone/execution-trace.d.ts +51 -0
  207. package/dist/src/phone/execution-trace.js +78 -0
  208. package/dist/src/phone/model-adapter.d.ts +9 -1
  209. package/dist/src/phone/model-adapter.js +132 -61
  210. package/dist/src/phone/model-response.d.ts +5 -0
  211. package/dist/src/phone/model-response.js +118 -0
  212. package/dist/src/phone/runtime.d.ts +4 -0
  213. package/dist/src/phone/runtime.js +146 -16
  214. package/dist/src/phone/text-session.d.ts +14 -0
  215. package/dist/src/phone/text-session.js +39 -0
  216. package/dist/src/phone/ui-dump-binary.d.ts +1 -1
  217. package/dist/src/phone/ui-dump-binary.js +1 -1
  218. package/dist/src/phone/ui-session.d.ts +22 -0
  219. package/dist/src/phone/ui-session.js +191 -0
  220. package/dist/src/process/phone-process.d.ts +1 -0
  221. package/dist/src/process/phone-process.js +11 -1
  222. package/package.json +2 -1
  223. package/dist/gateway/static/root/assets/device-pairing-wizard-1du1hfi5.js +0 -1
  224. package/dist/gateway/static/root/assets/gateway-realtime-store-DcsZyYEa.js +0 -1
  225. package/dist/gateway/static/root/assets/index-BS9mjvSL.js +0 -11
  226. package/dist/gateway/static/root/assets/index-pT-m6l6b.css +0 -1
  227. package/dist/gateway/static/root/assets/messages-DaLmc4W1.js +0 -3
  228. package/dist/gateway/static/root/assets/note-image-lightbox-DticJxxh.js +0 -1
  229. package/dist/gateway/static/root/assets/page-header-store-D6SzJ9Ch.js +0 -1
  230. package/dist/gateway/static/root/assets/session-manager-D2rbRfX3.js +0 -23
  231. package/dist/gateway/static/root/assets/settings-advanced-gate-CYDQybNF.js +0 -1
  232. package/dist/gateway/static/root/assets/task-detail-page-6A9337pK.js +0 -2
  233. package/dist/gateway/static/root/assets/tool-friendly-title-DGmi7rCQ.js +0 -1
  234. package/dist/gateway/static/root/assets/workspace-editor-agent-store-COUVwj-p.js +0 -1
@@ -0,0 +1,191 @@
1
+ import { PhoneError, init_contracts } from "./contracts.js";
2
+ import { measurePhonePhase } from "./execution-trace.js";
3
+ import { spawnPhoneInteractiveCommand } from "../process/phone-process.js";
4
+ import { runAdb } from "./adb-command.js";
5
+ import { PHONE_UI_DEX } from "./ui-dump-binary.js";
6
+ import { tmpdir } from "node:os";
7
+ import { join } from "node:path";
8
+ import { createHash, randomUUID } from "node:crypto";
9
+ import { mkdtemp, rm, writeFile } from "node:fs/promises";
10
+ //#region src/phone/ui-session.ts
11
+ init_contracts();
12
+ /** One request in flight, bounded framing, no replay after transport or confirmation failure. */
13
+ var PhoneUiSession = class {
14
+ sequence = 0;
15
+ busy = false;
16
+ closed = false;
17
+ closing;
18
+ buffer = "";
19
+ iterator;
20
+ constructor(transport) {
21
+ this.transport = transport;
22
+ this.iterator = transport.readable[Symbol.asyncIterator]();
23
+ }
24
+ close() {
25
+ if (this.closing) return this.closing;
26
+ this.closed = true;
27
+ this.buffer = "";
28
+ this.closing = this.transport.close();
29
+ return this.closing;
30
+ }
31
+ async request(fields, signal) {
32
+ if (this.closed || this.busy) throw new PhoneError("PHONE_UI_UNAVAILABLE", "Phone observer is closed or busy", 409);
33
+ const combined = AbortSignal.any([signal, AbortSignal.timeout(1e4)]);
34
+ combined.throwIfAborted();
35
+ this.busy = true;
36
+ const id = ++this.sequence;
37
+ let reason = "";
38
+ let abort;
39
+ const cancelled = new Promise((_resolve, reject) => {
40
+ abort = () => {
41
+ this.close().catch(() => {});
42
+ reject(new PhoneError("PHONE_UI_UNAVAILABLE", "Phone observer stopped or timed out", 409));
43
+ };
44
+ combined.addEventListener("abort", abort, { once: true });
45
+ });
46
+ try {
47
+ return await Promise.race([cancelled, (async () => {
48
+ await this.transport.write(Buffer.from(`${JSON.stringify({
49
+ ...fields,
50
+ id
51
+ })}\n`));
52
+ const decoder = new TextDecoder("utf-8", { fatal: true });
53
+ while (!this.buffer.includes("\n")) {
54
+ const next = await this.iterator.next();
55
+ if (next.done || this.closed) throw new Error("Observer disconnected");
56
+ this.buffer += decoder.decode(next.value, { stream: true });
57
+ if (Buffer.byteLength(this.buffer) > 2 * 1024 * 1024) throw new Error("Observer response exceeded limit");
58
+ }
59
+ const end = this.buffer.indexOf("\n");
60
+ const response = JSON.parse(this.buffer.slice(0, end));
61
+ this.buffer = this.buffer.slice(end + 1);
62
+ if (response.id !== id || response.ok !== true) {
63
+ if ([
64
+ "no-root",
65
+ "app",
66
+ "focus",
67
+ "target",
68
+ "value",
69
+ "write",
70
+ "identity",
71
+ "confirmation"
72
+ ].includes(response.error)) reason = ` (${response.error})`;
73
+ throw new Error("Observer request unconfirmed");
74
+ }
75
+ return response;
76
+ })()]);
77
+ } catch {
78
+ await this.close().catch(() => {});
79
+ throw new PhoneError(fields.op === "setText" ? "PHONE_TEXT_INPUT_UNCONFIRMED" : "PHONE_UI_UNAVAILABLE", fields.op === "setText" ? `Field input could not be confirmed${reason}. Inspect the field before retrying.` : "Phone observation failed; reconnect before controlling the phone", 409);
80
+ } finally {
81
+ this.busy = false;
82
+ combined.removeEventListener("abort", abort);
83
+ }
84
+ }
85
+ async snapshot(signal) {
86
+ const response = await this.request({ op: "snapshot" }, signal);
87
+ if (typeof response.xml !== "string" || !response.xml.includes("</hierarchy>")) {
88
+ await this.close();
89
+ throw new PhoneError("PHONE_UI_UNAVAILABLE", "Incomplete phone observation", 409);
90
+ }
91
+ return response.xml;
92
+ }
93
+ async replace(app, target, text, signal) {
94
+ await measurePhonePhase("field_transaction", () => this.request({
95
+ op: "setText",
96
+ app,
97
+ resourceId: target.resourceId,
98
+ bounds: target.bounds.join(","),
99
+ before: target.text,
100
+ text
101
+ }, signal));
102
+ }
103
+ };
104
+ async function openLocalPhoneUi(adbPath, serial, signal) {
105
+ const binary = Buffer.from(PHONE_UI_DEX, "base64");
106
+ const hash = createHash("sha256").update(binary).digest("hex");
107
+ const remote = `/data/local/tmp/xopc-ui-${hash}.dex`;
108
+ const args = ["-s", serial];
109
+ const existing = await runAdb(adbPath, [
110
+ ...args,
111
+ "shell",
112
+ "sha256sum",
113
+ remote
114
+ ], signal).catch(() => Buffer.alloc(0));
115
+ signal.throwIfAborted();
116
+ if (existing.toString().trim().split(/\s+/)[0] !== hash) {
117
+ const work = await mkdtemp(join(tmpdir(), "xopc-ui-"));
118
+ const staging = `${remote}.${randomUUID()}.tmp`;
119
+ try {
120
+ await writeFile(join(work, "helper.dex"), binary, { mode: 384 });
121
+ await runAdb(adbPath, [
122
+ ...args,
123
+ "push",
124
+ join(work, "helper.dex"),
125
+ staging
126
+ ], signal);
127
+ await runAdb(adbPath, [
128
+ ...args,
129
+ "shell",
130
+ "chmod",
131
+ "400",
132
+ staging
133
+ ], signal);
134
+ await runAdb(adbPath, [
135
+ ...args,
136
+ "shell",
137
+ "mv",
138
+ "-f",
139
+ staging,
140
+ remote
141
+ ], signal);
142
+ if ((await runAdb(adbPath, [
143
+ ...args,
144
+ "shell",
145
+ "sha256sum",
146
+ remote
147
+ ], signal)).toString().trim().split(/\s+/)[0] !== hash) throw new PhoneError("PHONE_UI_UNAVAILABLE", "Observer verification failed");
148
+ } finally {
149
+ await rm(work, {
150
+ recursive: true,
151
+ force: true
152
+ });
153
+ await runAdb(adbPath, [
154
+ ...args,
155
+ "shell",
156
+ "rm",
157
+ "-f",
158
+ staging
159
+ ], void 0, 3e3).catch(() => {});
160
+ }
161
+ }
162
+ signal.throwIfAborted();
163
+ const child = spawnPhoneInteractiveCommand(adbPath, [
164
+ ...args,
165
+ "shell",
166
+ "-T",
167
+ "env",
168
+ `CLASSPATH=${remote}`,
169
+ "app_process",
170
+ "/",
171
+ "ai.xopc.phone.PhoneUiDump",
172
+ "--resident"
173
+ ]);
174
+ child.on("error", () => {});
175
+ child.stdin.on("error", () => {});
176
+ return new PhoneUiSession({
177
+ readable: child.stdout,
178
+ write: (data) => new Promise((resolve, reject) => child.stdin.write(data, (error) => error ? reject(error) : resolve())),
179
+ close: async () => {
180
+ child.stdin.destroy();
181
+ child.stdout.destroy();
182
+ if (child.exitCode !== null || child.signalCode !== null) return;
183
+ await new Promise((resolve) => {
184
+ child.once("close", resolve);
185
+ child.kill();
186
+ });
187
+ }
188
+ });
189
+ }
190
+ //#endregion
191
+ export { PhoneUiSession, openLocalPhoneUi };
@@ -2,3 +2,4 @@ import { type ChildProcess } from 'node:child_process';
2
2
  export declare function runPhoneCommandBuffer(program: string, args: string[], signal?: AbortSignal, timeoutMs?: number): Promise<Buffer>;
3
3
  export declare function runPhoneCommandText(program: string, args: string[], signal: AbortSignal): Promise<string>;
4
4
  export declare function spawnPhoneCommand(program: string, args: string[]): ChildProcess;
5
+ export declare function spawnPhoneInteractiveCommand(program: string, args: string[]): import("node:child_process").ChildProcessByStdio<import("node:stream").Writable, import("node:stream").Readable, null>;
@@ -34,5 +34,15 @@ function spawnPhoneCommand(program, args) {
34
34
  windowsHide: true
35
35
  });
36
36
  }
37
+ function spawnPhoneInteractiveCommand(program, args) {
38
+ return spawn(program, args, {
39
+ stdio: [
40
+ "pipe",
41
+ "pipe",
42
+ "ignore"
43
+ ],
44
+ windowsHide: true
45
+ });
46
+ }
37
47
  //#endregion
38
- export { runPhoneCommandBuffer, runPhoneCommandText, spawnPhoneCommand };
48
+ export { runPhoneCommandBuffer, runPhoneCommandText, spawnPhoneCommand, spawnPhoneInteractiveCommand };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xopcai/xopc",
3
- "version": "0.0.424",
3
+ "version": "0.0.425",
4
4
  "description": "Local-first personal AI with Ada, task delegation, files, projects and automations. Use cloud or local models.",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -230,6 +230,7 @@
230
230
  "test:plugins:store:e2e": "cross-env XOPC_LOG_LEVEL=fatal tsx scripts/verify-store-plugin-e2e.mts",
231
231
  "test:plugins:fixtures": "tsx scripts/build-store-plugin-lab.mts",
232
232
  "test:plugins:browser": "cross-env XOPC_LOG_LEVEL=fatal tsx scripts/verify-plugin-setup-browser.mts",
233
+ "test:web:activity:e2e": "pnpm run build:node && pnpm run build:web && tsx scripts/verify-assistant-activity-browser.mts",
233
234
  "test:web:clarification:e2e": "pnpm run build:node && pnpm run build:web && tsx scripts/verify-clarification-browser.mts",
234
235
  "test:web:onboarding-visual": "node scripts/test-onboarding-visual.mjs",
235
236
  "test:web:onboarding-visual:update": "node scripts/test-onboarding-visual.mjs --update",
@@ -1 +0,0 @@
1
- import{i as e,n as t}from"./rolldown-runtime-aKtaBQYM.js";import{a as n,n as r,t as i}from"./vendor-react-BOUWij0V.js";import{u as a}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{n as o}from"./locale-store-TQcz_Vjt.js";import{t as s}from"./messages-DaLmc4W1.js";import{t as c}from"./chevron-right-BweFrslA.js";import{t as l}from"./circle-check-C23XjkUj.js";import{t as u}from"./clock-3-DnrAnuyZ.js";import{t as d}from"./download-Dk-ZjtO6.js";import{t as f}from"./external-link-DjqjBmc3.js";import{t as p}from"./laptop-CI3hBVrl.js";import{t as m}from"./panel-right-CFGrHTsD.js";import{t as h}from"./smartphone-DSSsQFqA.js";import{t as g}from"./x-B_N4OPjy.js";import{t as _}from"./cn-0WouolD0.js";import{t as v}from"./button-CnRSIP6m.js";import{t as y}from"./skeleton-BI5TyibZ.js";import{a as b,i as ee,o as x,r as S,s as C,t as w}from"./dist-DfWfZ9iu.js";import{i as T,o as E}from"./settings-shell-dialog-layer-BU3UuiJr.js";import{i as D}from"./vendor-swr-CdRzEUwF.js";import{n as O}from"./app-link-1j40sJ-z.js";import{t as k}from"./use-async-resource-BHFGZCY2.js";import{t as A}from"./copy-text-row-CYIv7RfP.js";import{a as j,n as M,r as N}from"./oauth-api-CfKjRVnb.js";import{n as P,r as F,t as I}from"./oauth-authorization-window-o6URRos4.js";import{_ as L,a as te,b as ne,d as re,f as R,g as ie,h as ae,i as z,l as B,m as oe,n as V,p as se,r as H,s as ce,t as U,u as W,v as le,y as ue}from"./tunnel-api-COoVEdV9.js";import{t as de}from"./mobile-pair-qr-CuIbmw5x.js";var G=r(),K=e(n(),1),q=i();function fe(){let e=s(o(e=>e.language)),t=e.endpointToolsSettings.deviceAccess.flow,n=e.tunnelSettings,{data:r,error:i,mutate:a}=D(`tunnel-status`,V,{refreshInterval:1500}),[c,l]=(0,K.useState)(!1),[u,d]=(0,K.useState)(!1),[p,m]=(0,K.useState)(!0),[h,g]=(0,K.useState)(`idle`),[_,b]=(0,K.useState)(null),[ee,x]=(0,K.useState)(``),[S,C]=(0,K.useState)(``),w=(0,K.useRef)(!0);(0,K.useEffect)(()=>(w.current=!0,()=>{w.current=!1}),[]),(0,K.useEffect)(()=>{r?.state===`connected`&&(b(null),x(``))},[r?.state]);let T=_?_===`registration-rejected`:r?.state===`error`&&R(Error(r.lastError??``)),E=_?_===`recovery-rejected`:r?.state===`error`&&re(Error(r.lastError??``)),k=async()=>{if(!r)return;if(r.consentRequired&&!c){d(!0);return}let e=T||!r.registrationSecret?.configured,t=e?F():null,n,i=!1;b(null),x(``);try{if(r.consentRequired&&await te(),e){g(`provisioning`),T&&await H({registrationSecret:null});let e=!1;try{await z()}catch(t){if(!W(t))throw t;e=!0}if(e){g(`authorizing`);let e=sessionStorage.getItem(`device-pairing-oauth`),r=e?JSON.parse(e):null;n=r&&r.expiresAt>Date.now()?r.sessionId:(await j(`xopc-tunnel`)).sessionId,sessionStorage.setItem(`device-pairing-oauth`,JSON.stringify({sessionId:n,expiresAt:r&&r.expiresAt>Date.now()?r.expiresAt:Date.now()+5*6e4}));let a=``,o=Date.now()+5*6e4,s=!1;for(;w.current&&Date.now()<o;){let e=await N(n);if(e.authUrl&&e.authUrl!==a&&(a=e.authUrl,await P(a,t)||C(a)),e.status===`completed`){s=!0,i=!0;break}if(e.status===`failed`||e.status===`cancelled`)throw Error(`Authorization cancelled`);await new Promise(e=>setTimeout(e,1e3))}if(!w.current)return;if(!s)throw Error(`Authorization expired`);await z()}await a()}if(!w.current)return;g(`starting`),await ce(E?{recoverActiveLease:!0}:void 0),p&&await H({autoStart:!0}),await a(),i=!0}catch(e){i=!0,w.current&&(b(B(e)===`tunnel_key_limit_reached`?`key-limit`:R(e)?`registration-rejected`:re(e)?`recovery-rejected`:`failed`),x(e instanceof Error?e.message:``))}finally{I(t),i&&(sessionStorage.removeItem(`device-pairing-oauth`),n&&M(n).catch(()=>{})),w.current&&(g(`idle`),C(``))}};if(!r&&!i)return(0,q.jsxs)(`div`,{className:`space-y-5`,children:[(0,q.jsx)(y,{className:`h-5 w-4/5`}),(0,q.jsx)(y,{className:`h-24 w-full`})]});let A=h===`provisioning`||h===`starting`||r?.state===`connecting`||r?.state===`reconnecting`,L=h===`idle`&&!A&&(_||i||r?.state===`error`),ne=ee||(i instanceof Error?i.message:``)||(r?.state===`error`?r.lastError:``);return(0,q.jsxs)(`div`,{className:`flex flex-col`,children:[(0,q.jsx)(`p`,{className:`text-sm leading-relaxed text-fg-muted`,children:A?t.preparingHint:h===`authorizing`?t.authorizing:t.enableHint}),S&&h===`authorizing`?(0,q.jsx)(`a`,{href:S,target:`_blank`,rel:`noopener noreferrer`,className:`mt-4 inline-flex min-h-11 items-center text-sm text-accent`,children:t.openAuthorization}):null,A?(0,q.jsxs)(`div`,{className:`mt-8 space-y-3`,"aria-label":t.preparing,children:[(0,q.jsx)(y,{className:`h-2 w-full`}),(0,q.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t.preparing})]}):null,(u||r?.consentRequired)&&h===`idle`?(0,q.jsxs)(`div`,{className:`mt-6 space-y-4`,children:[(0,q.jsxs)(`details`,{open:u,className:`text-sm text-fg-muted`,children:[(0,q.jsx)(`summary`,{className:`cursor-pointer py-2`,children:t.details}),(0,q.jsx)(`p`,{className:`mt-2`,children:n.consentIntro}),(0,q.jsx)(`ul`,{className:`mt-3 list-disc space-y-2 pl-5`,children:[n.consentBullet1,n.consentBullet2,n.consentBullet3].map(e=>(0,q.jsx)(`li`,{children:e},e))})]}),(0,q.jsxs)(`label`,{className:`flex items-start gap-3 text-sm text-fg`,children:[(0,q.jsx)(`input`,{type:`checkbox`,checked:c,onChange:e=>l(e.target.checked),className:`mt-1 size-4 accent-accent`}),n.consentCheckbox]})]}):null,L&&_===`key-limit`?(0,q.jsxs)(`div`,{role:`alert`,className:`mt-4 rounded-lg border border-warning/30 bg-warning/5 p-4`,children:[(0,q.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:t.routeKeyLimitTitle}),(0,q.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:t.routeKeyLimitHint}),(0,q.jsxs)(v,{variant:`secondary`,className:`mt-3`,onClick:()=>void O(U),children:[t.manageTunnelKeys,(0,q.jsx)(f,{className:`size-3`})]})]}):L?(0,q.jsxs)(`div`,{role:`alert`,className:`mt-4 text-sm text-danger`,children:[(0,q.jsx)(`p`,{children:i&&!r?t.readinessFailed:T?t.routeAuthorizationRequired:E?t.routeRecoveryRequired:t.routeSetupFailed}),ne?(0,q.jsxs)(`details`,{className:`mt-2 text-xs text-fg-muted`,children:[(0,q.jsx)(`summary`,{className:`cursor-pointer py-2`,children:t.details}),(0,q.jsx)(`p`,{className:`break-words whitespace-pre-wrap`,children:ne})]}):null]}):null,(0,q.jsxs)(`label`,{className:`my-5 flex items-center gap-3 text-sm text-fg-muted`,children:[(0,q.jsx)(`input`,{type:`checkbox`,checked:p,disabled:h!==`idle`,onChange:e=>m(e.target.checked),className:`size-4 accent-accent`}),t.autoStart]}),i&&!r?(0,q.jsx)(v,{className:`w-full`,variant:`primary`,onClick:()=>void a().catch(()=>{}),children:t.retry}):(0,q.jsx)(v,{className:`w-full`,variant:`primary`,disabled:!r||h!==`idle`||A||u&&!c,onClick:()=>void k(),children:h===`authorizing`?t.authorizing:A?t.preparing:T?t.authorize:E?t.recoverRoute:L?t.retry:t.enable})]})}var J=t({DevicePairingWizard:()=>Y});function Y(e){let t=(0,G.c)(16),{open:n,onOpenChange:r,onPaired:i,targetKind:o}=e,s=a(),[c,l]=(0,K.useState)(o),u,d;t[0]===o?(u=t[1],d=t[2]):(u=()=>{l(o)},d=[o],t[0]=o,t[1]=u,t[2]=d),(0,K.useEffect)(u,d);let f;t[3]!==r||t[4]!==o?(f=e=>{e||l(o),r(e)},t[3]=r,t[4]=o,t[5]=f):f=t[5];let p=f,m;t[6]!==p||t[7]!==s||t[8]!==i||t[9]!==n||t[10]!==c?(m=n?c?(0,q.jsx)(me,{targetKind:c,onClose:()=>p(!1),onPaired:i}):(0,q.jsx)(Z,{onChoose:l,onChooseLocalBrowser:()=>{p(!1),s(`/settings/agent-browser?driver=extension`)},onClose:()=>p(!1)}):null,t[6]=p,t[7]=s,t[8]=i,t[9]=n,t[10]=c,t[11]=m):m=t[11];let h;return t[12]!==p||t[13]!==n||t[14]!==m?(h=(0,q.jsx)(w,{open:n,onOpenChange:p,children:m}),t[12]=p,t[13]=n,t[14]=m,t[15]=h):h=t[15],h}function X(e){let t=(0,G.c)(14),{icon:n,title:r,hint:i,onClick:a}=e,o;t[0]===n?o=t[1]:(o=(0,q.jsx)(`span`,{className:`flex size-10 shrink-0 items-center justify-center rounded-xl bg-accent-soft text-accent-fg`,children:(0,q.jsx)(n,{className:`size-5`,"aria-hidden":`true`})}),t[0]=n,t[1]=o);let s;t[2]===r?s=t[3]:(s=(0,q.jsx)(`span`,{className:`block text-sm font-semibold text-fg`,children:r}),t[2]=r,t[3]=s);let l;t[4]===i?l=t[5]:(l=(0,q.jsx)(`span`,{className:`mt-0.5 block text-xs leading-5 text-fg-muted`,children:i}),t[4]=i,t[5]=l);let u;t[6]!==s||t[7]!==l?(u=(0,q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[s,l]}),t[6]=s,t[7]=l,t[8]=u):u=t[8];let d;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,q.jsx)(c,{className:`size-4 shrink-0 text-fg-disabled transition-transform group-hover:translate-x-0.5 group-hover:text-fg-muted`,"aria-hidden":`true`}),t[9]=d):d=t[9];let f;return t[10]!==a||t[11]!==o||t[12]!==u?(f=(0,q.jsxs)(`button`,{type:`button`,className:`group flex min-h-18 w-full cursor-pointer items-center gap-4 rounded-xl border border-edge bg-surface-panel px-4 py-3.5 text-left shadow-surface transition-[background-color,border-color,box-shadow,transform] hover:border-edge-strong hover:bg-surface-active hover:shadow-elevated active:translate-y-px active:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel motion-reduce:active:translate-y-0`,onClick:a,children:[o,u,d]}),t[10]=a,t[11]=o,t[12]=u,t[13]=f):f=t[13],f}function Z(e){let t=(0,G.c)(40),{onChoose:n,onChooseLocalBrowser:r,onClose:i}=e,a=o(pe),c;t[0]===a?c=t[1]:(c=s(a),t[0]=a,t[1]=c);let l=c.endpointToolsSettings.deviceAccess,u;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,q.jsx)(b,{className:_(`xopc-dialog-overlay fixed inset-0 bg-scrim backdrop-blur-[1px]`,E)}),t[2]=u):u=t[2];let d;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(d=_(`xopc-dialog-content fixed left-1/2 top-1/2 flex h-[min(28rem,calc(100dvh-2rem))] w-[min(40rem,calc(100vw-2rem))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-xl border border-edge bg-surface-overlay`,T),t[3]=d):d=t[3];let f;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,q.jsx)(`span`,{className:`text-lg font-semibold tracking-tight text-fg`,children:`xopc`}),t[4]=f):f=t[4];let v;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,q.jsx)(g,{className:`size-4`}),t[5]=v):v=t[5];let y;t[6]!==l.cancel||t[7]!==i?(y=(0,q.jsxs)(`header`,{className:`flex shrink-0 items-center justify-between border-b border-edge-subtle px-6 py-3`,children:[f,(0,q.jsx)(`button`,{type:`button`,className:`flex size-10 items-center justify-center rounded-lg text-fg-muted hover:bg-surface-hover`,"aria-label":l.cancel,onClick:i,children:v})]}),t[6]=l.cancel,t[7]=i,t[8]=y):y=t[8];let w;t[9]===l.chooseTitle?w=t[10]:(w=(0,q.jsx)(C,{className:`text-lg font-semibold tracking-tight text-fg sm:text-xl`,children:l.chooseTitle}),t[9]=l.chooseTitle,t[10]=w);let D;t[11]===l.chooseHint?D=t[12]:(D=(0,q.jsx)(ee,{className:`mt-1.5 text-sm leading-6 text-fg-muted`,children:l.chooseHint}),t[11]=l.chooseHint,t[12]=D);let O;t[13]!==l.localBrowserHint||t[14]!==l.localBrowserTitle||t[15]!==r?(O=(0,q.jsx)(X,{icon:p,title:l.localBrowserTitle,hint:l.localBrowserHint,onClick:r}),t[13]=l.localBrowserHint,t[14]=l.localBrowserTitle,t[15]=r,t[16]=O):O=t[16];let k;t[17]===n?k=t[18]:(k=()=>n(`mobile`),t[17]=n,t[18]=k);let A;t[19]!==l.mobileHint||t[20]!==l.mobileTitle||t[21]!==k?(A=(0,q.jsx)(X,{icon:h,title:l.mobileTitle,hint:l.mobileHint,onClick:k}),t[19]=l.mobileHint,t[20]=l.mobileTitle,t[21]=k,t[22]=A):A=t[22];let j;t[23]===n?j=t[24]:(j=()=>n(`browser`),t[23]=n,t[24]=j);let M;t[25]!==l.remoteBrowserHint||t[26]!==l.remoteBrowserTitle||t[27]!==j?(M=(0,q.jsx)(X,{icon:m,title:l.remoteBrowserTitle,hint:l.remoteBrowserHint,onClick:j}),t[25]=l.remoteBrowserHint,t[26]=l.remoteBrowserTitle,t[27]=j,t[28]=M):M=t[28];let N;t[29]!==A||t[30]!==M||t[31]!==O?(N=(0,q.jsxs)(`div`,{className:`mt-5 flex flex-col gap-2.5`,children:[O,A,M]}),t[29]=A,t[30]=M,t[31]=O,t[32]=N):N=t[32];let P;t[33]!==N||t[34]!==w||t[35]!==D?(P=(0,q.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-5 py-6 sm:px-8`,children:[w,D,N]}),t[33]=N,t[34]=w,t[35]=D,t[36]=P):P=t[36];let F;return t[37]!==P||t[38]!==y?(F=(0,q.jsxs)(x,{children:[u,(0,q.jsxs)(S,{className:d,children:[y,P]})]}),t[37]=P,t[38]=y,t[39]=F):F=t[39],F}function pe(e){return e.language}function me({targetKind:e,onClose:t,onPaired:n}){let r=o(e=>e.language),i=s(r),a=i.endpointToolsSettings.deviceAccess,p=a.flow,[m,h]=(0,K.useState)(!1),w=D(m?`device-pairing-readiness`:null,L,{refreshInterval:1500}),[j,M]=(0,K.useState)(),[N,P]=(0,K.useState)(null),[F,I]=(0,K.useState)(!1),[te,re]=(0,K.useState)(Date.now()),[R,z]=(0,K.useState)(null),B=(0,K.useRef)(!0),V=(0,K.useRef)(null),H=(0,K.useRef)(!1),ce=(0,K.useRef)(!1),U=D(j?[`device-pairing-setup`,j.id]:null,()=>le(j.id),{refreshInterval:1500}),W=U.data?.request,G=W?.status===`completed`,J=G&&W.connectedAt!==void 0,Y=D(J&&window.electronAPI?.system?`system-behavior`:null,()=>window.electronAPI.system.getBehavior()),X=j?.targetKind===`mobile`?j.universalLink:``,Z=k(()=>de(X),[X],{enabled:!!X,initial:null,errorData:null}),pe=r===`zh`?`https://xopc.ai/zh#download`:`https://xopc.ai/en#download`,me=r===`zh`?`https://xopcai.github.io/xopc/zh/browser-extension`:`https://xopcai.github.io/xopc/browser-extension`,he=k(()=>de(pe),[pe],{enabled:!m&&e===`mobile`,initial:null,errorData:null});(0,K.useEffect)(()=>{B.current=!0;let e=setInterval(()=>re(Date.now()),1e3);return()=>{B.current=!1,clearInterval(e),V.current&&se(V.current).catch(()=>{})}},[]);let ge=(0,K.useCallback)(async()=>{if(!H.current){H.current=!0,I(!0),P(null);try{V.current&&await se(V.current),V.current=null,M(void 0);let t=await oe(e);if(t.kind===`ready`){if(!B.current){await se(t.setup.id);return}V.current=t.setup.id,M(t.setup)}else await w.mutate()}catch{B.current&&P(`create`)}finally{H.current=!1,B.current&&I(!1)}}},[w,e]);(0,K.useEffect)(()=>{w.data?.ready&&!j&&N!==`create`&&!H.current&&ge()},[w.data,j,N,ge]),(0,K.useEffect)(()=>{J&&!ce.current&&(ce.current=!0,n?.())},[J,n]);let _e=async e=>{if(W){I(!0),P(null);try{await ae(W,e),await U.mutate()}catch{P(`decision`),await U.mutate()}finally{B.current&&I(!1)}}},ve=(0,K.useRef)(0);(0,K.useEffect)(()=>{U.data&&(ve.current=U.data.serverTime-Date.now())},[U.data]);let Q=te+ve.current,ye=j&&Q>=j.expiresAt&&!W,be=W&&[`expired`,`rejected`,`cancelled`].includes(W.status),xe=j?j.expiresAt-Q<6e4:!1,Se=j?xe?`${Math.max(0,Math.ceil((j.expiresAt-Q)/1e3))}s`:p.valid:``,$=e===`mobile`?{connect:a.mobileScan,connectHint:a.mobileScanHint,allowTitle:a.mobileAllowTitle,success:a.mobileSuccess,successHint:a.mobileSuccessHint}:{connect:a.browserConnect,connectHint:a.browserConnectHint,allowTitle:a.browserAllowTitle,success:a.browserSuccess,successHint:a.browserSuccessHint},Ce=e===`mobile`?a.mobilePrepareTitle:a.browserPrepareTitle,we=e===`mobile`?a.mobilePrepareHint:a.browserPrepareHint,Te=m?J?$.success:W?.status===`pending`?$.allowTitle:G||W?.status===`approved`?p.waiting:j?$.connect:p.title:Ce,Ee=N===`create`?p.createFailed:N===`decision`?p.decisionFailed:N===`background`?p.backgroundFailed:N===`download`?a.browserDownloadFailed:null,De=async()=>{I(!0),P(null);try{await ie()}catch{P(`download`)}finally{B.current&&I(!1)}};return(0,q.jsxs)(x,{children:[(0,q.jsx)(b,{className:_(`xopc-dialog-overlay fixed inset-0 bg-scrim backdrop-blur-[1px]`,E)}),(0,q.jsxs)(S,{className:_(`xopc-dialog-content fixed left-1/2 top-1/2 flex h-[min(600px,calc(100dvh-48px))] w-[min(560px,calc(100vw-32px))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-xl border border-edge bg-surface-overlay`,T),children:[(0,q.jsxs)(`header`,{className:`flex shrink-0 items-center justify-between border-b border-edge-subtle px-6 py-3`,children:[(0,q.jsx)(`span`,{className:`text-lg font-semibold tracking-tight text-fg`,children:`xopc`}),(0,q.jsx)(`button`,{type:`button`,className:`flex size-10 items-center justify-center rounded-lg text-fg-muted hover:bg-surface-hover`,"aria-label":p.cancel,onClick:t,children:(0,q.jsx)(g,{className:`size-4`})})]}),(0,q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto px-8 py-7`,children:[J?(0,q.jsx)(l,{className:`mb-5 size-7 text-success`}):null,(0,q.jsx)(C,{className:`text-xl font-semibold tracking-tight text-fg`,children:Te}),(0,q.jsx)(ee,{className:`mt-2 text-sm leading-relaxed text-fg-muted`,children:m?J?$.successHint:G?p.waitingForDevice:W?W.displayName:j?$.connectHint:p.intro:we}),Ee?(0,q.jsx)(`p`,{role:`alert`,className:`mt-4 text-sm text-danger`,children:Ee}):null,m&&w.error?(0,q.jsx)(`p`,{role:`alert`,className:`mt-4 text-sm text-danger`,children:p.readinessFailed}):null,m&&U.error?(0,q.jsx)(`p`,{role:`status`,className:`mt-4 text-sm text-warning`,children:p.statusUnavailable}):null,m?w.data?J?(0,q.jsxs)(q.Fragment,{children:[Y.data?(0,q.jsxs)(`label`,{className:`mt-8 flex items-center justify-between gap-4 border-y border-edge-subtle py-5 text-sm text-fg`,children:[a.background,(0,q.jsx)(`input`,{type:`checkbox`,role:`switch`,"aria-checked":Y.data.runInBackground??!1,disabled:!Y.data.backgroundSupported,checked:Y.data.runInBackground??!1,className:`size-5 accent-accent`,onChange:e=>{window.electronAPI.system.setBehavior({runInBackground:e.target.checked}).then(e=>Y.mutate(e.behavior)).catch(()=>P(`background`))}})]}):null,(0,q.jsx)(`p`,{className:`mt-4 text-xs text-fg-muted`,children:a.sleep})]}):be||ye?(0,q.jsxs)(`div`,{className:`mt-10 space-y-5`,children:[(0,q.jsx)(`p`,{className:`text-sm text-fg-muted`,children:ye||W?.status===`expired`?p.expired:p.declined}),(0,q.jsx)(v,{variant:`primary`,onClick:()=>void ge(),disabled:F,children:p.refresh})]}):W?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`p`,{className:`mt-2 text-xs text-fg-muted`,children:p.scope}),(0,q.jsxs)(`p`,{className:`mt-10 font-mono text-4xl tracking-[0.16em] text-fg`,"aria-live":`polite`,children:[W.confirmationCode.slice(0,3),` `,W.confirmationCode.slice(3)]}),(0,q.jsx)(`p`,{className:`mt-3 text-xs text-fg-muted`,children:p.compare}),(0,q.jsxs)(`details`,{className:`mt-6 text-xs text-fg-muted`,children:[(0,q.jsx)(`summary`,{className:`cursor-pointer py-2`,children:p.access}),(0,q.jsx)(`p`,{children:p.accessHint})]})]}):j?.targetKind===`mobile`?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`my-6 flex flex-col items-center`,children:[(0,q.jsx)(`div`,{className:`rounded-[1.75rem] border border-edge bg-surface-hover/55 p-2.5 shadow-surface`,children:(0,q.jsx)(`div`,{className:`rounded-[1.25rem] bg-white p-2 shadow-sm ring-1 ring-black/5`,children:Z.data?(0,q.jsx)(`img`,{src:Z.data,alt:a.qrAlt,width:240,height:240,className:`size-[240px] max-w-full rounded-xl bg-white`}):Z.error?null:(0,q.jsx)(y,{className:`size-[240px] rounded-xl`})})}),Z.error?null:(0,q.jsxs)(`p`,{className:_(`mt-4 inline-flex min-h-8 items-center gap-1.5 rounded-full px-3 text-xs font-medium`,xe?`bg-warning-soft text-warning`:`bg-surface-hover text-fg-muted`),"aria-live":`polite`,children:[(0,q.jsx)(u,{className:`size-3.5`,"aria-hidden":`true`}),Se]})]}),Z.error?(0,q.jsx)(`p`,{role:`status`,className:`text-center text-sm text-warning`,children:p.qrFailed}):null,Z.error?(0,q.jsx)(`div`,{className:`mt-5`,children:(0,q.jsx)(A,{text:j.universalLink,labels:{copy:a.copy,copied:a.copied,copyFailed:i.clipboard.copyFailed}})}):(0,q.jsxs)(`details`,{className:`group mx-auto mt-1 w-full max-w-sm rounded-xl border border-edge bg-surface-panel text-xs text-fg-muted`,children:[(0,q.jsxs)(`summary`,{className:`flex min-h-11 cursor-pointer list-none items-center justify-between gap-3 rounded-xl px-3.5 transition-colors hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent [&::-webkit-details-marker]:hidden`,children:[(0,q.jsx)(`span`,{children:p.fallback}),(0,q.jsx)(c,{className:`size-3.5 shrink-0 transition-transform group-open:rotate-90`,"aria-hidden":`true`})]}),(0,q.jsx)(`div`,{className:`border-t border-edge-subtle p-3`,children:(0,q.jsx)(A,{text:j.universalLink,labels:{copy:a.copy,copied:a.copied,copyFailed:i.clipboard.copyFailed}})})]})]}):j?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`ol`,{className:`mt-7 space-y-2 text-sm leading-6 text-fg-muted`,children:[(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`span`,{className:`mr-2 text-fg-subtle`,children:`1.`}),a.browserConnectStep1]}),(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`span`,{className:`mr-2 text-fg-subtle`,children:`2.`}),a.browserConnectStep2]}),(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`span`,{className:`mr-2 text-fg-subtle`,children:`3.`}),a.browserConnectStep3]})]}),(0,q.jsx)(`div`,{className:`mt-6`,children:(0,q.jsx)(A,{text:j.browserInvitation,labels:{copy:a.copy,copied:a.copied,copyFailed:i.clipboard.copyFailed}})}),(0,q.jsx)(`p`,{className:`mt-3 text-center text-xs text-fg-muted`,children:j.expiresAt-Q<6e4?`${Math.max(0,Math.ceil((j.expiresAt-Q)/1e3))}s`:p.valid})]}):w.data.ready?(0,q.jsx)(`div`,{className:`mt-8`,children:(0,q.jsx)(y,{className:`mx-auto size-[216px]`})}):(0,q.jsxs)(`div`,{className:`mt-6 flex flex-1 flex-col`,children:[R===`tailscale`?(0,q.jsx)(ne,{embedded:!0}):R===`https`?(0,q.jsx)(ue,{}):R===`choices`?(0,q.jsxs)(`div`,{className:`space-y-3`,children:[(0,q.jsx)(v,{variant:`secondary`,className:`w-full`,onClick:()=>z(`tailscale`),children:a.useTailscale}),(0,q.jsx)(v,{variant:`secondary`,className:`w-full`,onClick:()=>z(`https`),children:a.useOwnHttps})]}):(0,q.jsx)(fe,{}),(0,q.jsx)(v,{variant:`ghost`,className:`mt-3 w-full`,onClick:()=>z(R?null:`choices`),children:R?p.back:p.existing})]}):(0,q.jsxs)(`div`,{className:`mt-8 space-y-4`,children:[(0,q.jsx)(y,{className:`h-5 w-3/4`}),(0,q.jsx)(y,{className:`h-40 w-full`})]}):e===`mobile`?(0,q.jsxs)(`div`,{className:`mt-7 flex flex-col items-center`,children:[he.data?(0,q.jsx)(`img`,{src:he.data,alt:a.mobileDownloadQrAlt,width:144,height:144,className:`size-36 rounded-lg bg-white`}):(0,q.jsx)(y,{className:`size-36`}),(0,q.jsxs)(v,{variant:`secondary`,className:`mt-5 w-full`,onClick:()=>void O(pe),children:[(0,q.jsx)(f,{className:`size-4`}),a.mobileDownload]}),(0,q.jsx)(`p`,{className:`mt-3 text-center text-xs leading-5 text-fg-muted`,children:a.mobileDownloadHint})]}):(0,q.jsxs)(`div`,{className:`mt-7`,children:[(0,q.jsxs)(v,{variant:`secondary`,className:`w-full`,disabled:F,onClick:()=>void De(),children:[(0,q.jsx)(d,{className:`size-4`}),a.browserDownload]}),(0,q.jsxs)(`ol`,{className:`mt-5 space-y-3 text-sm leading-6 text-fg-muted`,children:[(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`span`,{className:`mr-2 text-fg-subtle`,children:`1.`}),a.browserInstallStep1]}),(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`span`,{className:`mr-2 text-fg-subtle`,children:`2.`}),a.browserInstallStep2]}),(0,q.jsxs)(`li`,{children:[(0,q.jsx)(`span`,{className:`mr-2 text-fg-subtle`,children:`3.`}),a.browserInstallStep3]})]}),(0,q.jsxs)(`button`,{type:`button`,className:`mt-5 inline-flex items-center gap-1 text-xs text-accent hover:underline`,onClick:()=>void O(me),children:[a.browserInstallHelp,(0,q.jsx)(f,{className:`size-3`})]})]})]}),!m||w.error||J||W?.status===`pending`||N===`create`||N===`decision`?(0,q.jsx)(`footer`,{className:`shrink-0 px-8 pb-6`,children:m?J?(0,q.jsx)(v,{className:`w-full`,variant:`primary`,onClick:t,children:p.done}):W?.status===`pending`?(0,q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,q.jsx)(v,{className:`w-full`,variant:`primary`,disabled:F,onClick:()=>void _e(`approve`),children:p.allow}),(0,q.jsx)(v,{className:`w-full`,variant:`ghost`,disabled:F,onClick:()=>void _e(`reject`),children:p.cancel})]}):w.error?(0,q.jsx)(v,{className:`w-full`,variant:`primary`,onClick:()=>void w.mutate(),children:p.retry}):(0,q.jsx)(v,{className:`w-full`,variant:`primary`,disabled:F,onClick:()=>void ge(),children:p.retry}):(0,q.jsx)(v,{className:`w-full`,variant:`primary`,onClick:()=>{P(null),h(!0)},children:e===`mobile`?a.mobileReady:a.browserReady})}):null]})]})}export{J as n,Y as t};
@@ -1 +0,0 @@
1
- import{p as e}from"./locale-store-TQcz_Vjt.js";var t=e(()=>({connectionState:`idle`,error:null}));function n(e){t.setState(e)}export{t as n,n as t};