@xopcai/xopc 0.0.415 → 0.0.417

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 (892) hide show
  1. package/README.md +2 -2
  2. package/README.zh-CN.md +2 -2
  3. package/dist/browser-ext/_locales/en/messages.json +4 -1
  4. package/dist/browser-ext/_locales/zh_CN/messages.json +4 -1
  5. package/dist/browser-ext/dist/assets/{page-context-MuzjMBlJ.js → page-context-BKnEwsOO.js} +2914 -1381
  6. package/dist/browser-ext/dist/background.js +39 -10
  7. package/dist/browser-ext/dist/sidepanel.html +1 -1
  8. package/dist/browser-ext/dist/sidepanel.js +502 -348
  9. package/dist/browser-ext/manifest.json +1 -1
  10. package/dist/extensions/telegram/xopc.extension.json +1 -1
  11. package/dist/gateway/static/root/assets/activity-YogQEteU.js +1 -0
  12. package/dist/gateway/static/root/assets/activity-store-DnqOM8GN.js +1 -0
  13. package/dist/gateway/static/root/assets/agent-avatar-dicebear-1UABT2KS.js +1 -0
  14. package/dist/gateway/static/root/assets/agent-avatar-display-Cy50vjbq.js +2 -0
  15. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-V4NX_cWz.js +1 -0
  16. package/dist/gateway/static/root/assets/agent-display-names-Bje7vfSn.js +1 -0
  17. package/dist/gateway/static/root/assets/agent-plugin-dialog-CQ5LLDMO.js +1 -0
  18. package/dist/gateway/static/root/assets/agents-O7mago-m.js +77 -0
  19. package/dist/gateway/static/root/assets/{agents-admin-api-B1p-ghg9.js → agents-admin-api-CyjykMEh.js} +2 -2
  20. package/dist/gateway/static/root/assets/agents-app-path-ciChvpCS.js +1 -0
  21. package/dist/gateway/static/root/assets/api-C1dxxDZx.js +1 -0
  22. package/dist/gateway/static/root/assets/api-Ddrs70xV.js +1 -0
  23. package/dist/gateway/static/root/assets/app-chrome-BeB4KgOf.js +1 -0
  24. package/dist/gateway/static/root/assets/app-link-CytZ5zkp.js +1 -0
  25. package/dist/gateway/static/root/assets/app-management-settings-panel-C1Zs-eha.js +1 -0
  26. package/dist/gateway/static/root/assets/appearance-settings-lIfGokbz.js +1 -0
  27. package/dist/gateway/static/root/assets/apps-page-CUvtsRYD.js +1 -0
  28. package/dist/gateway/static/root/assets/archive-Dz0hferG.js +1 -0
  29. package/dist/gateway/static/root/assets/{archive-plugin-Ch7wolHE.js → archive-plugin-n5lPr79c.js} +1 -1
  30. package/dist/gateway/static/root/assets/arrow-left-D880xG-P.js +1 -0
  31. package/dist/gateway/static/root/assets/arrow-right-DSSvoX71.js +1 -0
  32. package/dist/gateway/static/root/assets/arrow-up-D5ZtR1QT.js +1 -0
  33. package/dist/gateway/static/root/assets/arrow-up-right-T72JbQ1Q.js +1 -0
  34. package/dist/gateway/static/root/assets/{attachment-preview-renderer-wzIchDSv.js → attachment-preview-renderer-DdOEgexg.js} +3 -3
  35. package/dist/gateway/static/root/assets/{attachment-process-heavy-Db4nTY5N.js → attachment-process-heavy-DGZZ-M85.js} +2 -2
  36. package/dist/gateway/static/root/assets/automation-api-Bld8blNl.js +1 -0
  37. package/dist/gateway/static/root/assets/automation-display-BcfZOQTC.js +2 -0
  38. package/dist/gateway/static/root/assets/{automations-page-DK7AU79v.js → automations-page-oLsNzu_6.js} +1 -1
  39. package/dist/gateway/static/root/assets/automations-workspace-BgtYY2Mm.js +8 -0
  40. package/dist/gateway/static/root/assets/beta-badge-BnzdzIEl.js +1 -0
  41. package/dist/gateway/static/root/assets/{binary-plugins-B4HcHYsC.js → binary-plugins-D9VW7dWP.js} +2 -2
  42. package/dist/gateway/static/root/assets/{block-editor-BQAWEZF-.js → block-editor-C477bTtO.js} +23 -23
  43. package/dist/gateway/static/root/assets/book-open-CCGtrT3R.js +1 -0
  44. package/dist/gateway/static/root/assets/bot-DjLkhyZL.js +1 -0
  45. package/dist/gateway/static/root/assets/box-DvYoGszj.js +1 -0
  46. package/dist/gateway/static/root/assets/braces-Cfmtagno.js +1 -0
  47. package/dist/gateway/static/root/assets/brand-logo-CgT9zQfr.js +1 -0
  48. package/dist/gateway/static/root/assets/briefcase-business-BsoCaI_t.js +1 -0
  49. package/dist/gateway/static/root/assets/browser-BLJWD7WI.js +8 -0
  50. package/dist/gateway/static/root/assets/{browser-automation-inputs-D6AccXaA.js → browser-automation-inputs-CCiYXxmh.js} +1 -1
  51. package/dist/gateway/static/root/assets/browser-automations-page-DIUNY94X.js +3 -0
  52. package/dist/gateway/static/root/assets/browser-control-api-Y3fvmeBk.js +6 -0
  53. package/dist/gateway/static/root/assets/browser-notification-delivery-DmE2FgGc.js +1 -0
  54. package/dist/gateway/static/root/assets/browser-settings-page-DjkGahlz.js +3 -0
  55. package/dist/gateway/static/root/assets/{button-aIC072nz.js → button-CnRSIP6m.js} +1 -1
  56. package/dist/gateway/static/root/assets/calendar-clock-D-quYVPe.js +1 -0
  57. package/dist/gateway/static/root/assets/calendar-days-hw_Y-g-s.js +1 -0
  58. package/dist/gateway/static/root/assets/capabilities-DAyA681v.js +1 -0
  59. package/dist/gateway/static/root/assets/capabilities-DRVXLssH.js +1 -0
  60. package/dist/gateway/static/root/assets/capabilities-page-DFW4Y0x8.js +2 -0
  61. package/dist/gateway/static/root/assets/capabilities-settings-panel-uOHSMQPZ.js +8 -0
  62. package/dist/gateway/static/root/assets/capability-header-actions-CTUCuBlW.js +1 -0
  63. package/dist/gateway/static/root/assets/capability-icon-DVoZxEgW.js +1 -0
  64. package/dist/gateway/static/root/assets/capability-links-DzQWK1Fh.js +1 -0
  65. package/dist/gateway/static/root/assets/channels-D2a69dSt.js +1 -0
  66. package/dist/gateway/static/root/assets/channels-routes-r2g-9DdC.js +1 -0
  67. package/dist/gateway/static/root/assets/chat-agents-api-D5nR_JVe.js +1 -0
  68. package/dist/gateway/static/root/assets/chat-chart-block-K2t333qv.js +2 -0
  69. package/dist/gateway/static/root/assets/chat-page-CG38tCHE.js +71 -0
  70. package/dist/gateway/static/root/assets/chat-page-zQeUaawJ.css +1 -0
  71. package/dist/gateway/static/root/assets/chat-terminal-dock-CkFG6mA3.js +35 -0
  72. package/dist/gateway/static/root/assets/chevron-left-DqFhpbvK.js +1 -0
  73. package/dist/gateway/static/root/assets/chevron-right-BweFrslA.js +1 -0
  74. package/dist/gateway/static/root/assets/chunk-D32TOXHM-DQIy-Baq.js +156 -0
  75. package/dist/gateway/static/root/assets/chunk-KS7C4IRE-CiwuuyV8.js +4 -0
  76. package/dist/gateway/static/root/assets/circle-BoO4YvTx.js +1 -0
  77. package/dist/gateway/static/root/assets/circle-alert-BEjgurr2.js +1 -0
  78. package/dist/gateway/static/root/assets/circle-pause-CN9jYH2s.js +1 -0
  79. package/dist/gateway/static/root/assets/circle-x-DFsCKeya.js +1 -0
  80. package/dist/gateway/static/root/assets/clock-3-DnrAnuyZ.js +1 -0
  81. package/dist/gateway/static/root/assets/cloud-C4-yfnnk.js +1 -0
  82. package/dist/gateway/static/root/assets/cloud-credits-B-nbtkqv.js +1 -0
  83. package/dist/gateway/static/root/assets/code-xml-DJtYhZUF.js +1 -0
  84. package/dist/gateway/static/root/assets/coins-DjP27vUx.js +1 -0
  85. package/dist/gateway/static/root/assets/command-palette-api-Do_66X1B.js +1 -0
  86. package/dist/gateway/static/root/assets/composer-payload-handoff-BU3B-C26.js +1 -0
  87. package/dist/gateway/static/root/assets/computer-settings-page-DBxOcMko.js +1 -0
  88. package/dist/gateway/static/root/assets/confirm-dialog-XGclfBqe.js +1 -0
  89. package/dist/gateway/static/root/assets/connected-providers-grid-Dmnu2zle.js +1 -0
  90. package/dist/gateway/static/root/assets/connector-filters-Cfcx9EA2.js +1 -0
  91. package/dist/gateway/static/root/assets/connector-service-page-rWpnchb3.js +1 -0
  92. package/dist/gateway/static/root/assets/connectors-api-DIBG72k4.js +1 -0
  93. package/dist/gateway/static/root/assets/connectors-page-DT_WrC1y.js +1 -0
  94. package/dist/gateway/static/root/assets/constants-DBtMsXdW.js +1 -0
  95. package/dist/gateway/static/root/assets/copy-text-row-CYIv7RfP.js +1 -0
  96. package/dist/gateway/static/root/assets/cpu-B247669f.js +1 -0
  97. package/dist/gateway/static/root/assets/database-CjjeZfRG.js +1 -0
  98. package/dist/gateway/static/root/assets/date-picker-CE-cZFCU.js +1 -0
  99. package/dist/gateway/static/root/assets/dependency-picker-7SpSfDSg.js +1 -0
  100. package/dist/gateway/static/root/assets/desktop-pet-lorocS9j.js +1 -0
  101. package/dist/gateway/static/root/assets/desktop-pet-narrative-CS8qJpNO.js +1 -0
  102. package/dist/gateway/static/root/assets/desktop-pet-settings-CEcohlZq.js +1 -0
  103. package/dist/gateway/static/root/assets/{desktop-pet-sprite-Bd-aOI7N.js → desktop-pet-sprite-D5YYq2zC.js} +1 -1
  104. package/dist/gateway/static/root/assets/dev-view-store-57HgVuZ6.js +1 -0
  105. package/dist/gateway/static/root/assets/device-pairing-wizard-CLCPuf4R.js +1 -0
  106. package/dist/gateway/static/root/assets/directory-picker-path-field-D4jMhpka.js +1 -0
  107. package/dist/gateway/static/root/assets/discussion-annotation-sync-BKjf9gWe.js +1 -0
  108. package/dist/gateway/static/root/assets/dist-CaUuvp8-.js +1 -0
  109. package/dist/gateway/static/root/assets/dist-DNCdG_qB.js +1 -0
  110. package/dist/gateway/static/root/assets/dist-DfWfZ9iu.js +1 -0
  111. package/dist/gateway/static/root/assets/dist-DusecO_p.js +1 -0
  112. package/dist/gateway/static/root/assets/docx-preview-CnIClbYi.js +20 -0
  113. package/dist/gateway/static/root/assets/earth-BMhZtzcj.js +1 -0
  114. package/dist/gateway/static/root/assets/echarts-runtime-QSmTlXOu.js +18 -0
  115. package/dist/gateway/static/root/assets/electron-env-DHOGevH3.js +1 -0
  116. package/dist/gateway/static/root/assets/extension-debug-page-BsK2LMXQ.js +1 -0
  117. package/dist/gateway/static/root/assets/extension-iframe-host-Dhkk5JV2.js +1 -0
  118. package/dist/gateway/static/root/assets/extension-marketplace-api-CVJPqJOB.js +1 -0
  119. package/dist/gateway/static/root/assets/extension-page-Brps2XDP.js +1 -0
  120. package/dist/gateway/static/root/assets/extension-paths-DvuaZJuy.js +1 -0
  121. package/dist/gateway/static/root/assets/extension-provider-Byrd8Sor.js +1 -0
  122. package/dist/gateway/static/root/assets/extension-settings-page-CHY68DpG.js +1 -0
  123. package/dist/gateway/static/root/assets/file-BqMS_3DT.js +1 -0
  124. package/dist/gateway/static/root/assets/file-archive-DanfQJNe.js +1 -0
  125. package/dist/gateway/static/root/assets/file-preview-surface-BlprUrIs.js +1 -0
  126. package/dist/gateway/static/root/assets/file-text-D12HbeVy.js +1 -0
  127. package/dist/gateway/static/root/assets/file-tree-CFlZnV3Y.js +1 -0
  128. package/dist/gateway/static/root/assets/file-tree-utils-DJs1faGv.js +1 -0
  129. package/dist/gateway/static/root/assets/files-BNL4kkSB.js +1 -0
  130. package/dist/gateway/static/root/assets/floating-ui.dom-seOukHzT.js +1 -0
  131. package/dist/gateway/static/root/assets/folder-CN-pC3XL.js +1 -0
  132. package/dist/gateway/static/root/assets/folder-kanban-CpLlFI1o.js +1 -0
  133. package/dist/gateway/static/root/assets/form-field-width-DJw_jULe.js +1 -0
  134. package/dist/gateway/static/root/assets/{gateway-config-swr-fQKBHBi1.js → gateway-config-swr-BAmUhiP1.js} +1 -1
  135. package/dist/gateway/static/root/assets/gateway-realtime-CsykKL4l.js +1 -0
  136. package/dist/gateway/static/root/assets/gateway-realtime-store-DQqMBruB.js +1 -0
  137. package/dist/gateway/static/root/assets/gateway-restart-Ch128Lrr.js +1 -0
  138. package/dist/gateway/static/root/assets/gateway-settings-BA5-Uuwx.js +1 -0
  139. package/dist/gateway/static/root/assets/{gateway-startup-retry-Cfwxof4k.js → gateway-startup-retry-CtUB3g6N.js} +1 -1
  140. package/dist/gateway/static/root/assets/gauge-C78eD2BA.js +1 -0
  141. package/dist/gateway/static/root/assets/git-branch-Dh9uxTot.js +1 -0
  142. package/dist/gateway/static/root/assets/global-defaults-api-CINf-C6a.js +2 -0
  143. package/dist/gateway/static/root/assets/heart-Cp4rgrqn.js +1 -0
  144. package/dist/gateway/static/root/assets/highlight-code-BH65IIbJ.js +1 -0
  145. package/dist/gateway/static/root/assets/highlighted-body-KQOG7T2V-DKGma5wI.js +1 -0
  146. package/dist/gateway/static/root/assets/history-DXH_9jsE.js +1 -0
  147. package/dist/gateway/static/root/assets/home-page-DaMFBYo1.js +2 -0
  148. package/dist/gateway/static/root/assets/image-Cwyalflz.js +1 -0
  149. package/dist/gateway/static/root/assets/image-generation-api-I_JgLL_m.js +1 -0
  150. package/dist/gateway/static/root/assets/imports-page-BWShtGRQ.js +1 -0
  151. package/dist/gateway/static/root/assets/index-BpCi0TdG.js +11 -0
  152. package/dist/gateway/static/root/assets/index-DY2Y83b9.css +1 -0
  153. package/dist/gateway/static/root/assets/index.module-Cd9ENXfk.js +1 -0
  154. package/dist/gateway/static/root/assets/info-CDrmIZhb.js +1 -0
  155. package/dist/gateway/static/root/assets/install-connector-dialog-DU1Tz7B3.js +1 -0
  156. package/dist/gateway/static/root/assets/interaction-BdhHBbYa.js +1 -0
  157. package/dist/gateway/static/root/assets/is-masked-secret-DOkL5b_X.js +1 -0
  158. package/dist/gateway/static/root/assets/{jszip.min-DT31yWkU.js → jszip.min-Dj17eJqX.js} +1 -1
  159. package/dist/gateway/static/root/assets/key-round-DWbpyU2U.js +1 -0
  160. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-CdM4BQwp.js +1 -0
  161. package/dist/gateway/static/root/assets/languages-zXtNocoy.js +2 -0
  162. package/dist/gateway/static/root/assets/laptop-CI3hBVrl.js +1 -0
  163. package/dist/gateway/static/root/assets/layers-mJW7JJKm.js +1 -0
  164. package/dist/gateway/static/root/assets/layout-grid-CEVZdVFU.js +1 -0
  165. package/dist/gateway/static/root/assets/list-checks-BbsExAoq.js +1 -0
  166. package/dist/gateway/static/root/assets/list-filter-COkzTdOz.js +1 -0
  167. package/dist/gateway/static/root/assets/list-todo-CTVRto8O.js +1 -0
  168. package/dist/gateway/static/root/assets/list-tree-B0OMswgM.js +1 -0
  169. package/dist/gateway/static/root/assets/local-app-workbench-page-qPflPuQD.js +1 -0
  170. package/dist/gateway/static/root/assets/local-apps-Ck6kACsY.js +1 -0
  171. package/dist/gateway/static/root/assets/local-apps-page-CxyRVfjD.js +1 -0
  172. package/dist/gateway/static/root/assets/local-session-drafts-B9ZPwotC.js +1 -0
  173. package/dist/gateway/static/root/assets/{locale-store-B7s2Hb35.js → locale-store-lIXD1FMw.js} +1 -1
  174. package/dist/gateway/static/root/assets/lock-keyhole-DEK5kH0u.js +1 -0
  175. package/dist/gateway/static/root/assets/logs-page-CbY1N-zi.js +2 -0
  176. package/dist/gateway/static/root/assets/loopi-C09I2mNj.css +1 -0
  177. package/dist/gateway/static/root/assets/loopi-CNtmi9FU.js +1 -0
  178. package/dist/gateway/static/root/assets/management-settings-Diy12JfQ.js +1 -0
  179. package/dist/gateway/static/root/assets/{markdown-editor-phTQ0mox.js → markdown-editor-BuuGlcfG.js} +1 -1
  180. package/dist/gateway/static/root/assets/markdown-view-C-DHb3Io.css +1 -0
  181. package/dist/gateway/static/root/assets/markdown-view-CJt-i2Dp.js +324 -0
  182. package/dist/gateway/static/root/assets/{media-plugins-DYQDjCVQ.js → media-plugins-D_bR23mA.js} +1 -1
  183. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-Ur99GwOg.js +1 -0
  184. package/dist/gateway/static/root/assets/mermaid-render-oOellPHt.js +134 -0
  185. package/dist/gateway/static/root/assets/message-circle-Badhj-4D.js +1 -0
  186. package/dist/gateway/static/root/assets/message-square-fVE7Ghj1.js +1 -0
  187. package/dist/gateway/static/root/assets/message-square-plus-XP0tGdlV.js +1 -0
  188. package/dist/gateway/static/root/assets/{messages-BYq0cPbn.js → messages-DRR9N3HC.js} +1 -1
  189. package/dist/gateway/static/root/assets/messages-square-BckAJrEW.js +1 -0
  190. package/dist/gateway/static/root/assets/mic-CuUb7zc-.js +1 -0
  191. package/dist/gateway/static/root/assets/minimize-2-DtOGrlpo.js +1 -0
  192. package/dist/gateway/static/root/assets/mobile-pair-qr-CuIbmw5x.js +1 -0
  193. package/dist/gateway/static/root/assets/model-selector-DCYA_ntf.js +1 -0
  194. package/dist/gateway/static/root/assets/models-hub-cache-za2fWJLg.js +1 -0
  195. package/dist/gateway/static/root/assets/monitor-Af5eAvF7.js +1 -0
  196. package/dist/gateway/static/root/assets/mouse-pointer-2-DZ51Onvj.js +1 -0
  197. package/dist/gateway/static/root/assets/navigation-BkjnOw30.js +1 -0
  198. package/dist/gateway/static/root/assets/network-BUQLY1BV.js +1 -0
  199. package/dist/gateway/static/root/assets/new-session-preferences-gb411vZP.js +1 -0
  200. package/dist/gateway/static/root/assets/note-detail-panel-DBs1yHLy.js +5 -0
  201. package/dist/gateway/static/root/assets/note-image-lightbox-CivkB6LB.js +1 -0
  202. package/dist/gateway/static/root/assets/notes-api-C_458rv5.js +1 -0
  203. package/dist/gateway/static/root/assets/notes-page-DL3c-41a.js +8 -0
  204. package/dist/gateway/static/root/assets/number-input-El7Szeln.js +1 -0
  205. package/dist/gateway/static/root/assets/oauth-api-C3X9FLYw.js +1 -0
  206. package/dist/gateway/static/root/assets/oauth-authorization-window-o6URRos4.js +1 -0
  207. package/dist/gateway/static/root/assets/oauth-provider-connect-H81se_3n.js +1 -0
  208. package/dist/gateway/static/root/assets/package-wATCyihJ.js +1 -0
  209. package/dist/gateway/static/root/assets/page-context-capture-button-BkAlQ7cB.js +1 -0
  210. package/dist/gateway/static/root/assets/page-context-draft-ClLgaOaD.js +1 -0
  211. package/dist/gateway/static/root/assets/page-header-store-DH8K0xii.js +1 -0
  212. package/dist/gateway/static/root/assets/page-tabs-oeTY7z3_.js +1 -0
  213. package/dist/gateway/static/root/assets/panel-left-C8MqSXRZ.js +1 -0
  214. package/dist/gateway/static/root/assets/panel-right-CFGrHTsD.js +1 -0
  215. package/dist/gateway/static/root/assets/paperclip-f1HujQY1.js +1 -0
  216. package/dist/gateway/static/root/assets/pause-DuPxgSxk.js +1 -0
  217. package/dist/gateway/static/root/assets/{pdf-D4PI9qAw.js → pdf-EQHMWEbX.js} +3 -3
  218. package/dist/gateway/static/root/assets/pdf-runtime-JnUAvfIa.js +2 -0
  219. package/dist/gateway/static/root/assets/{pdf.worker.min-B4E34YdZ.js → pdf.worker.min-bpyjgR8v.js} +7 -7
  220. package/dist/gateway/static/root/assets/pencil-DmIY3Oa-.js +1 -0
  221. package/dist/gateway/static/root/assets/personal-avatar-BLtHt8fV.js +1 -0
  222. package/dist/gateway/static/root/assets/personal-avatar-BUCb7OiW.css +1 -0
  223. package/dist/gateway/static/root/assets/personal-page-B5DP3lO-.js +1 -0
  224. package/dist/gateway/static/root/assets/personal-proactivity-DaRnbB1f.js +1 -0
  225. package/dist/gateway/static/root/assets/personal-settings-panel-DjDc5Kaz.js +1 -0
  226. package/dist/gateway/static/root/assets/phone-dependencies-card-DISHarj8.js +1 -0
  227. package/dist/gateway/static/root/assets/phone-model-picker-u8YIQCgo.js +1 -0
  228. package/dist/gateway/static/root/assets/phone-settings-page-el3pT0PD.js +1 -0
  229. package/dist/gateway/static/root/assets/phone-workspace-store-fhnZrgy_.js +1 -0
  230. package/dist/gateway/static/root/assets/pin-off-BMRv-Kxr.js +1 -0
  231. package/dist/gateway/static/root/assets/play-kxZvpBg8.js +1 -0
  232. package/dist/gateway/static/root/assets/plug-DKYPEgkR.js +1 -0
  233. package/dist/gateway/static/root/assets/plug-zap-L8NMe3Sv.js +1 -0
  234. package/dist/gateway/static/root/assets/plugin-details-dialog-CTBs1Jde.js +1 -0
  235. package/dist/gateway/static/root/assets/plus-Q2yW6OE7.js +1 -0
  236. package/dist/gateway/static/root/assets/popover-select-DniHw2dy.js +1 -0
  237. package/dist/gateway/static/root/assets/power-ZI-pBczI.js +1 -0
  238. package/dist/gateway/static/root/assets/power-off-CwwQ7Gp7.js +1 -0
  239. package/dist/gateway/static/root/assets/preference-select-fields-D7oluyHN.js +1 -0
  240. package/dist/gateway/static/root/assets/preload-helper-Czpn1I53.js +1 -0
  241. package/dist/gateway/static/root/assets/preview-open-alternatives-CY_hjK4b.js +1 -0
  242. package/dist/gateway/static/root/assets/product-automation-feedback-DsUSqCOX.js +7 -0
  243. package/dist/gateway/static/root/assets/product-delivery-BU_H84jL.js +1 -0
  244. package/dist/gateway/static/root/assets/product-navigation-Co8pLbDP.js +1 -0
  245. package/dist/gateway/static/root/assets/product-open-page-xn9G4hSI.js +1 -0
  246. package/dist/gateway/static/root/assets/product-preview-content-DcoK-iZe.js +1 -0
  247. package/dist/gateway/static/root/assets/product-preview-modal-Ruw9WSKK.js +2 -0
  248. package/dist/gateway/static/root/assets/project-detail-page-BKvWLiMw.js +7 -0
  249. package/dist/gateway/static/root/assets/project-understanding-BCQr0AZ_.js +1 -0
  250. package/dist/gateway/static/root/assets/projects-page-D4g7bB7X.js +1 -0
  251. package/dist/gateway/static/root/assets/providers-api-CzVkFKFg.js +1 -0
  252. package/dist/gateway/static/root/assets/puzzle-BptcPjKI.js +1 -0
  253. package/dist/gateway/static/root/assets/recording-upload-0jxahBMo.js +1 -0
  254. package/dist/gateway/static/root/assets/refresh-button-bU_0NarN.js +1 -0
  255. package/dist/gateway/static/root/assets/refresh-cw-BRlGaq2w.js +1 -0
  256. package/dist/gateway/static/root/assets/{registry-api-BcfoLEna.js → registry-api-n8TwtJ_j.js} +2 -2
  257. package/dist/gateway/static/root/assets/remote-access-hub-cZpBi4Rk.js +1 -0
  258. package/dist/gateway/static/root/assets/rotate-ccw-JM1TBLpp.js +1 -0
  259. package/dist/gateway/static/root/assets/rotate-cw-LIg3Am9S.js +1 -0
  260. package/dist/gateway/static/root/assets/route-preload-B5UiReO7.js +2 -0
  261. package/dist/gateway/static/root/assets/runtime-health-D2TDFLLq.js +1 -0
  262. package/dist/gateway/static/root/assets/{runtime-tools-api-DesqGCnE.js → runtime-tools-api-D-8KjYK6.js} +1 -1
  263. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-MKlLFuow.js +1 -0
  264. package/dist/gateway/static/root/assets/save-DRDABU--.js +1 -0
  265. package/dist/gateway/static/root/assets/schema-form-v4N4lawq.js +1 -0
  266. package/dist/gateway/static/root/assets/schemas-CCWMleym.js +55 -0
  267. package/dist/gateway/static/root/assets/search-DA7gz22f.js +1 -0
  268. package/dist/gateway/static/root/assets/secret-input-BQvFXqzz.js +1 -0
  269. package/dist/gateway/static/root/assets/secret-input-labels-B5Jl5HqK.js +1 -0
  270. package/dist/gateway/static/root/assets/segmented-styles-Cqb91xsn.js +1 -0
  271. package/dist/gateway/static/root/assets/send-1f1Ntw6E.js +1 -0
  272. package/dist/gateway/static/root/assets/server-BlHCBjiE.js +1 -0
  273. package/dist/gateway/static/root/assets/service-recommendation-list-B1xuVT3N.js +1 -0
  274. package/dist/gateway/static/root/assets/{session-api-DdQnMwkl.js → session-api-CsCoI2im.js} +1 -1
  275. package/dist/gateway/static/root/assets/session-channel-icon-SsY70Z6t.js +1 -0
  276. package/dist/gateway/static/root/assets/session-identity-label-B7sgG1PE.js +1 -0
  277. package/dist/gateway/static/root/assets/session-manager-5l9q0cd5.js +16 -0
  278. package/dist/gateway/static/root/assets/sessions-page-DsLw2aMD.js +1 -0
  279. package/dist/gateway/static/root/assets/settings-2-D-csvaET.js +1 -0
  280. package/dist/gateway/static/root/assets/settings-advanced-gate-B5lQeVNi.js +1 -0
  281. package/dist/gateway/static/root/assets/settings-advanced-section-BqoVSko2.js +1 -0
  282. package/dist/gateway/static/root/assets/settings-form-draft-Dy10ldo8.js +1 -0
  283. package/dist/gateway/static/root/assets/settings-form-section-num14vSv.js +1 -0
  284. package/dist/gateway/static/root/assets/settings-loading-skeleton-BTqvr_Fw.js +1 -0
  285. package/dist/gateway/static/root/assets/settings-mode-store-CBsJ-Qg2.js +1 -0
  286. package/dist/gateway/static/root/assets/settings-page-DROUGyJl.js +1 -0
  287. package/dist/gateway/static/root/assets/settings-page-header-Bv-kQFTm.js +1 -0
  288. package/dist/gateway/static/root/assets/settings-page-layout-DHP6MrrL.js +1 -0
  289. package/dist/gateway/static/root/assets/settings-uiTATseT.js +1 -0
  290. package/dist/gateway/static/root/assets/setup-status-panel-MJE3B_LX.js +1 -0
  291. package/dist/gateway/static/root/assets/share-link-dialog-BJHRQVKC.js +1 -0
  292. package/dist/gateway/static/root/assets/share-preview-page-Bsrv_zOQ.js +2 -0
  293. package/dist/gateway/static/root/assets/shares-api-rtWVHA_d.js +1 -0
  294. package/dist/gateway/static/root/assets/shares-settings-CfIRv4uX.js +1 -0
  295. package/dist/gateway/static/root/assets/shield-B1sI_cxl.js +1 -0
  296. package/dist/gateway/static/root/assets/shield-check-BU58siTV.js +1 -0
  297. package/dist/gateway/static/root/assets/shield-off-2jsucUds.js +1 -0
  298. package/dist/gateway/static/root/assets/side-chat-shortcut-BIw-1TTD.js +1 -0
  299. package/dist/gateway/static/root/assets/skill-api-B_W1K3sv.js +1 -0
  300. package/dist/gateway/static/root/assets/skill-api-utils-C7V4JVXM.js +1 -0
  301. package/dist/gateway/static/root/assets/skill-list-api-BzlKXPsE.js +1 -0
  302. package/dist/gateway/static/root/assets/skill-reload-api-Cff2GgZb.js +1 -0
  303. package/dist/gateway/static/root/assets/skill-wire-pattern-BPpeIcCi.js +1 -0
  304. package/dist/gateway/static/root/assets/skills-page-DtBloYeU.js +2 -0
  305. package/dist/gateway/static/root/assets/sliders-horizontal-DqsYor6I.js +1 -0
  306. package/dist/gateway/static/root/assets/sliding-tab-list-DuQyViqe.js +1 -0
  307. package/dist/gateway/static/root/assets/smartphone-DSSsQFqA.js +1 -0
  308. package/dist/gateway/static/root/assets/{source-workspace-editor-BIvi89Zx.js → source-workspace-editor-kxosllTu.js} +1 -1
  309. package/dist/gateway/static/root/assets/sparkles-DHlfQFAF.js +1 -0
  310. package/dist/gateway/static/root/assets/specialists-xbB3xL9e.js +1 -0
  311. package/dist/gateway/static/root/assets/square-DMK_fB-3.js +1 -0
  312. package/dist/gateway/static/root/assets/square-pen-B8FsvqNu.js +1 -0
  313. package/dist/gateway/static/root/assets/square-terminal-K87bylpZ.js +1 -0
  314. package/dist/gateway/static/root/assets/star-BUWJqJ5c.js +1 -0
  315. package/dist/gateway/static/root/assets/stethoscope-DRqTAtjD.js +1 -0
  316. package/dist/gateway/static/root/assets/sticky-note-fzP7NAJq.js +1 -0
  317. package/dist/gateway/static/root/assets/store-SzD1Jvgm.js +1 -0
  318. package/dist/gateway/static/root/assets/system-settings-panel-BeQeUUMH.js +1 -0
  319. package/dist/gateway/static/root/assets/task-detail-page-Drrv-Hp0.js +2 -0
  320. package/dist/gateway/static/root/assets/task-result-evidence-D1Kyskm_.js +1 -0
  321. package/dist/gateway/static/root/assets/tasks-DRmd6sWt.js +1 -0
  322. package/dist/gateway/static/root/assets/terminal-oKqqZdiG.js +1 -0
  323. package/dist/gateway/static/root/assets/terminal-panel-store-5Fzctajw.js +1 -0
  324. package/dist/gateway/static/root/assets/theme-store-DW45fWYQ.js +1 -0
  325. package/dist/gateway/static/root/assets/timer-rCwGHjuO.js +1 -0
  326. package/dist/gateway/static/root/assets/tool-friendly-title-DGmi7rCQ.js +1 -0
  327. package/dist/gateway/static/root/assets/tracing-settings-page-B12u5D9A.js +1 -0
  328. package/dist/gateway/static/root/assets/trash-2-DusmjVPV.js +1 -0
  329. package/dist/gateway/static/root/assets/triangle-alert-2JXFNNKU.js +1 -0
  330. package/dist/gateway/static/root/assets/tunnel-api-DGO56LQU.js +1 -0
  331. package/dist/gateway/static/root/assets/understanding-activity-store-CTe6TFB0.js +1 -0
  332. package/dist/gateway/static/root/assets/understanding-refresh-store-mE9OKG6q.js +1 -0
  333. package/dist/gateway/static/root/assets/unlink-BEuthaaq.js +1 -0
  334. package/dist/gateway/static/root/assets/upload-rrb46c3c.js +1 -0
  335. package/dist/gateway/static/root/assets/usage-page-Ud2U9UG1.js +1 -0
  336. package/dist/gateway/static/root/assets/use-async-resource-BHFGZCY2.js +1 -0
  337. package/dist/gateway/static/root/assets/use-autosave-Cs2Ga_Y_.js +1 -0
  338. package/dist/gateway/static/root/assets/use-composer-attachments-BCbMj-MN.js +2 -0
  339. package/dist/gateway/static/root/assets/use-directory-picker-C4p7AgWY.js +1 -0
  340. package/dist/gateway/static/root/assets/use-file-preview-expanded-DSpCRXUW.js +2 -0
  341. package/dist/gateway/static/root/assets/use-media-query-ady-FgjK.js +1 -0
  342. package/dist/gateway/static/root/assets/use-personal-profile-BHL2AxWU.js +1 -0
  343. package/dist/gateway/static/root/assets/use-workspace-tree-CnmPZrpx.js +1 -0
  344. package/dist/gateway/static/root/assets/user-model-page-p5iPfnwl.js +2 -0
  345. package/dist/gateway/static/root/assets/user-round-C9jxPhMR.js +1 -0
  346. package/dist/gateway/static/root/assets/{vendor-codemirror-Qdcjid65.js → vendor-codemirror-aCQ0FcJT.js} +8 -8
  347. package/dist/gateway/static/root/assets/{vendor-swr-BIWyz7Rc.js → vendor-swr-CdRzEUwF.js} +1 -1
  348. package/dist/gateway/static/root/assets/video-B6V0GFss.js +1 -0
  349. package/dist/gateway/static/root/assets/voice-api-key-field-3gyc2UV3.js +1 -0
  350. package/dist/gateway/static/root/assets/voice-call-context-BM2A4bLz.js +1 -0
  351. package/dist/gateway/static/root/assets/{voice-config-api-BkUlN7GH.js → voice-config-api-Cda2uBIC.js} +1 -1
  352. package/dist/gateway/static/root/assets/voice-input-shortcut-events-DtYHsPLF.js +1 -0
  353. package/dist/gateway/static/root/assets/voice-transcribe-api-TInEfIYo.js +1 -0
  354. package/dist/gateway/static/root/assets/volume-2-BSJhAY97.js +1 -0
  355. package/dist/gateway/static/root/assets/wand-sparkles-CkSL-3Fy.js +1 -0
  356. package/dist/gateway/static/root/assets/{with-selector-aYPsXwdl.js → with-selector-xonYxPoM.js} +1 -1
  357. package/dist/gateway/static/root/assets/work-discovery-overlay-Dqu5CQCS.js +1 -0
  358. package/dist/gateway/static/root/assets/work-discovery-page-p-8ciZ0i.js +1 -0
  359. package/dist/gateway/static/root/assets/working-directory-picker-modal-DHl2cZY1.js +1 -0
  360. package/dist/gateway/static/root/assets/workspace-api-CtDbI6T7.js +2 -0
  361. package/dist/gateway/static/root/assets/workspace-editor-agent-store-B94Q2nN8.js +1 -0
  362. package/dist/gateway/static/root/assets/workspace-file-preview-dialog-CTIbUfKb.js +1 -0
  363. package/dist/gateway/static/root/assets/workspace-open-location-menu-BwxouqdZ.js +1 -0
  364. package/dist/gateway/static/root/assets/wrench-DFb4r8bH.js +1 -0
  365. package/dist/gateway/static/root/assets/x-B_N4OPjy.js +1 -0
  366. package/dist/gateway/static/root/assets/{xlsx-CKkngM-o.js → xlsx-Cl_0CZaL.js} +11 -11
  367. package/dist/gateway/static/root/assets/xml-_d7dTN2Q.js +3 -0
  368. package/dist/gateway/static/root/assets/xopc-cloud-account-card-CFb-23rS.js +1 -0
  369. package/dist/gateway/static/root/assets/zap-dximCGjy.js +1 -0
  370. package/dist/gateway/static/root/browser-setup-test.html +5 -0
  371. package/dist/gateway/static/root/browser-setup-test.js +7 -0
  372. package/dist/gateway/static/root/index.html +267 -46
  373. package/dist/package.js +1 -1
  374. package/dist/packages/gateway-contract/src/browser-setup.js +6 -0
  375. package/dist/packages/gateway-contract/src/index.js +4 -0
  376. package/dist/packages/gateway-contract/src/phone-setup.js +6 -0
  377. package/dist/packages/realtime-client/src/index.js +1 -0
  378. package/dist/packages/realtime-protocol/src/index.js +1 -0
  379. package/dist/src/activity/emitter.js +1 -2
  380. package/dist/src/activity/service.js +1 -2
  381. package/dist/src/agent/agent-manager.d.ts +5 -0
  382. package/dist/src/agent/agent-manager.js +16 -6
  383. package/dist/src/agent/background-review/run-background-review.js +2 -3
  384. package/dist/src/agent/context/execution-context.js +1 -2
  385. package/dist/src/agent/context/execution-scope.js +1 -2
  386. package/dist/src/agent/context/project-context.js +1 -2
  387. package/dist/src/agent/embedded/agent-profile-context.js +1 -2
  388. package/dist/src/agent/embedded/run-turn.js +2 -4
  389. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +1 -2
  390. package/dist/src/agent/embedded/tool-search-extension.js +14 -1
  391. package/dist/src/agent/external-tools/cliProvider.js +3 -4
  392. package/dist/src/agent/external-tools/composio-provider.js +3 -4
  393. package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
  394. package/dist/src/agent/memory/compaction-promotion.js +1 -2
  395. package/dist/src/agent/orchestration/research-checkpoint.js +26 -31
  396. package/dist/src/agent/prompt/response-language.js +1 -2
  397. package/dist/src/agent/prompt/service-prompt-builder.js +3 -6
  398. package/dist/src/agent/prompt/system-prompt.js +1 -2
  399. package/dist/src/agent/service/direct-turn-helpers.js +1 -2
  400. package/dist/src/agent/service/process-direct-streaming.js +1 -2
  401. package/dist/src/agent/service/webchat-tts.js +1 -2
  402. package/dist/src/agent/service.d.ts +1 -0
  403. package/dist/src/agent/service.js +8 -3
  404. package/dist/src/agent/service.types.d.ts +3 -0
  405. package/dist/src/agent/skills/index.js +1 -1
  406. package/dist/src/agent/skills/managed-store.js +1 -1
  407. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  408. package/dist/src/agent/tool-manuals/computer.d.ts +1 -1
  409. package/dist/src/agent/tool-manuals/computer.js +2 -0
  410. package/dist/src/agent/tool-manuals/phone.d.ts +1 -1
  411. package/dist/src/agent/tool-manuals/phone.js +14 -4
  412. package/dist/src/agent/tool-manuals/xopc-configuration.d.ts +2 -0
  413. package/dist/src/agent/tool-manuals/xopc-configuration.js +29 -0
  414. package/dist/src/agent/tools/browser/tool/browser-use-tool.d.ts +2 -0
  415. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +6 -2
  416. package/dist/src/agent/tools/delegate-tool.js +2 -4
  417. package/dist/src/agent/tools/factory.d.ts +4 -0
  418. package/dist/src/agent/tools/factory.js +23 -9
  419. package/dist/src/agent/tools/personal-read-tool.js +1 -1
  420. package/dist/src/agent/tools/personal-task-tool.js +1 -2
  421. package/dist/src/agent/tools/phone-use-tool.d.ts +2 -0
  422. package/dist/src/agent/tools/phone-use-tool.js +79 -4
  423. package/dist/src/agent/tools/research-checkpoint-tool.js +1 -2
  424. package/dist/src/agent/tools/tool-manual-tool.d.ts +1 -1
  425. package/dist/src/agent/tools/tool-manual-tool.js +3 -1
  426. package/dist/src/agent/tools/toolExposure.js +3 -0
  427. package/dist/src/agent/tools/xopc-use-tool.d.ts +5 -2
  428. package/dist/src/agent/tools/xopc-use-tool.js +47 -6
  429. package/dist/src/agent-catalog/capabilities.js +2 -2
  430. package/dist/src/agent-catalog/repository.js +3 -4
  431. package/dist/src/agent-catalog/test-support.js +1 -2
  432. package/dist/src/agent-matching/selection-repository.js +1 -2
  433. package/dist/src/automations/capabilities/drafts.js +3 -5
  434. package/dist/src/bootstrap/application-state.js +1 -2
  435. package/dist/src/browser/automations/repository.js +1 -2
  436. package/dist/src/browser/drivers/browser-driver.d.ts +2 -2
  437. package/dist/src/browser/drivers/extension-driver.d.ts +2 -2
  438. package/dist/src/browser/drivers/extension-driver.js +6 -3
  439. package/dist/src/browser/native-messaging-host.js +2 -4
  440. package/dist/src/browser/providers/browser-ext-install.js +3 -2
  441. package/dist/src/browser/providers/realtime-extension.js +1 -2
  442. package/dist/src/browser/recordings/service.js +1 -2
  443. package/dist/src/browser/runtime/browser-runtime.d.ts +4 -1
  444. package/dist/src/browser/runtime/browser-runtime.js +29 -17
  445. package/dist/src/browser/setup/repository.d.ts +5 -0
  446. package/dist/src/browser/setup/repository.js +42 -0
  447. package/dist/src/browser/setup/service.d.ts +157 -0
  448. package/dist/src/browser/setup/service.js +433 -0
  449. package/dist/src/browser/setup/types.d.ts +38 -0
  450. package/dist/src/browser/setup/types.js +1 -0
  451. package/dist/src/capabilities/runtime/dispatcher.js +1 -1
  452. package/dist/src/capabilities/runtime/product.js +1 -1
  453. package/dist/src/chat-previews/store.js +1 -2
  454. package/dist/src/cli/commands/agents.js +1 -1
  455. package/dist/src/cli/commands/doctor/checks/automation-integrity.js +1 -2
  456. package/dist/src/cli/commands/doctor/checks/database-relations.js +1 -2
  457. package/dist/src/cli/commands/doctor/checks/database-schema.js +2 -3
  458. package/dist/src/cli/commands/doctor/checks/node-version.js +6 -6
  459. package/dist/src/cli/commands/doctor/checks/session-integrity.js +1 -2
  460. package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
  461. package/dist/src/cli/commands/gateway/shared.js +1 -2
  462. package/dist/src/cli/commands/history.js +1 -2
  463. package/dist/src/cli/commands/models.js +1 -1
  464. package/dist/src/cli/commands/onboard/model.js +1 -1
  465. package/dist/src/cli/commands/project.js +1 -2
  466. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  467. package/dist/src/computer/diagnostics.d.ts +7 -7
  468. package/dist/src/computer/diagnostics.js +8 -2
  469. package/dist/src/computer/errors.js +9 -1
  470. package/dist/src/computer/evaluation.d.ts +4 -4
  471. package/dist/src/computer/keyboard.d.ts +1 -1
  472. package/dist/src/computer/keyboard.js +10 -2
  473. package/dist/src/computer/model-adapter.js +27 -7
  474. package/dist/src/config/agent-profile.js +1 -1
  475. package/dist/src/config/gateway-bind.js +1 -2
  476. package/dist/src/config/schema.d.ts +7 -0
  477. package/dist/src/connectors/cli/lifecycle.js +1 -2
  478. package/dist/src/connectors/composio-managed-events.js +1 -2
  479. package/dist/src/connectors/connected-source-ingestion.js +1 -2
  480. package/dist/src/connectors/connected-source-understanding.js +3 -5
  481. package/dist/src/connectors/content-enrichment.js +1 -2
  482. package/dist/src/connectors/learning-coordinator.js +2 -3
  483. package/dist/src/connectors/runtime-adapter-registry.js +1 -2
  484. package/dist/src/daemon/constants.js +9 -14
  485. package/dist/src/daemon/index.js +1 -4
  486. package/dist/src/daemon/install-plan.js +1 -2
  487. package/dist/src/daemon/launchd.js +1 -2
  488. package/dist/src/daemon/schtasks.js +1 -2
  489. package/dist/src/daemon/service-audit.js +1 -2
  490. package/dist/src/daemon/service.js +1 -2
  491. package/dist/src/daemon/systemd.js +1 -2
  492. package/dist/src/discussions/analyzer.d.ts +3 -3
  493. package/dist/src/endpoint-tools/runtime.js +1 -2
  494. package/dist/src/execution-environments/local-worktree-manager.js +1 -1
  495. package/dist/src/execution-environments/subject.js +1 -2
  496. package/dist/src/extensions/agent-plugins/branding.js +2 -1
  497. package/dist/src/extensions/agent-plugins/cli-authorization.js +2 -1
  498. package/dist/src/extensions/agent-plugins/contained-path.d.ts +1 -0
  499. package/dist/src/extensions/agent-plugins/contained-path.js +29 -0
  500. package/dist/src/extensions/agent-plugins/mcp-adapter.js +2 -1
  501. package/dist/src/extensions/agent-plugins/resources.js +1 -1
  502. package/dist/src/extensions/agent-plugins/skill-catalog.js +3 -2
  503. package/dist/src/extensions/agent-plugins/source-catalog.js +1 -1
  504. package/dist/src/extensions/agent-plugins/store.js +2 -1
  505. package/dist/src/extensions/agent-plugins/validation.d.ts +1 -2
  506. package/dist/src/extensions/agent-plugins/validation.js +3 -26
  507. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  508. package/dist/src/gateway/agents-admin.js +2 -2
  509. package/dist/src/gateway/client-ip.js +1 -2
  510. package/dist/src/gateway/file-space-service.js +1 -2
  511. package/dist/src/gateway/global-defaults-admin.js +1 -1
  512. package/dist/src/gateway/hono/app.js +2 -4
  513. package/dist/src/gateway/hono/middleware/auth.js +3 -6
  514. package/dist/src/gateway/hono/middleware/logger.js +1 -2
  515. package/dist/src/gateway/hono/middleware/public-device-rate-limit.js +1 -2
  516. package/dist/src/gateway/hono/middleware/scopes.js +1 -2
  517. package/dist/src/gateway/hono/middleware/strict-rate-limit.js +1 -2
  518. package/dist/src/gateway/hono/oauth-async.js +1 -2
  519. package/dist/src/gateway/hono/routes/agents.js +1 -1
  520. package/dist/src/gateway/hono/routes/browser-session.js +1 -2
  521. package/dist/src/gateway/hono/routes/browser-setup.d.ts +3 -0
  522. package/dist/src/gateway/hono/routes/browser-setup.js +114 -0
  523. package/dist/src/gateway/hono/routes/browser.d.ts +2 -1
  524. package/dist/src/gateway/hono/routes/browser.js +4 -7
  525. package/dist/src/gateway/hono/routes/cli-connectors.js +1 -2
  526. package/dist/src/gateway/hono/routes/composer-history.js +1 -2
  527. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  528. package/dist/src/gateway/hono/routes/config.js +1 -2
  529. package/dist/src/gateway/hono/routes/connectors.js +9 -11
  530. package/dist/src/gateway/hono/routes/context-sources.js +1 -2
  531. package/dist/src/gateway/hono/routes/device-pairing-approval.js +2 -4
  532. package/dist/src/gateway/hono/routes/device-push.js +1 -2
  533. package/dist/src/gateway/hono/routes/devices.js +4 -8
  534. package/dist/src/gateway/hono/routes/discussions.js +1 -2
  535. package/dist/src/gateway/hono/routes/endpoint-tools.js +1 -2
  536. package/dist/src/gateway/hono/routes/home.js +2 -3
  537. package/dist/src/gateway/hono/routes/interaction-state.js +1 -2
  538. package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
  539. package/dist/src/gateway/hono/routes/memory-learning.js +1 -2
  540. package/dist/src/gateway/hono/routes/notes.js +2 -2
  541. package/dist/src/gateway/hono/routes/personal-agent.js +1 -2
  542. package/dist/src/gateway/hono/routes/phone-dependencies.js +2 -7
  543. package/dist/src/gateway/hono/routes/phone-setup.d.ts +7 -0
  544. package/dist/src/gateway/hono/routes/phone-setup.js +231 -0
  545. package/dist/src/gateway/hono/routes/phone-wireless.d.ts +4 -0
  546. package/dist/src/gateway/hono/routes/phone-wireless.js +63 -0
  547. package/dist/src/gateway/hono/routes/phone.js +119 -28
  548. package/dist/src/gateway/hono/routes/projects.js +3 -4
  549. package/dist/src/gateway/hono/routes/public-gateway.js +4 -3
  550. package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
  551. package/dist/src/gateway/hono/routes/sessions.js +2 -4
  552. package/dist/src/gateway/hono/routes/shares.js +2 -4
  553. package/dist/src/gateway/hono/routes/tasks.js +2 -3
  554. package/dist/src/gateway/hono/routes/user-model-refresh.js +1 -2
  555. package/dist/src/gateway/hono/routes/user-model.js +1 -2
  556. package/dist/src/gateway/host.js +4 -9
  557. package/dist/src/gateway/image-generation-setup.js +1 -1
  558. package/dist/src/gateway/index.js +2 -6
  559. package/dist/src/gateway/listen.js +1 -2
  560. package/dist/src/gateway/next-turn-suggestions/service.js +1 -2
  561. package/dist/src/gateway/next-turn-suggestions/snapshot.js +1 -2
  562. package/dist/src/gateway/provider-model-setup.js +1 -1
  563. package/dist/src/gateway/rate-limit/auth-policy.js +11 -7
  564. package/dist/src/gateway/rate-limit/buckets.js +220 -211
  565. package/dist/src/gateway/rate-limit/env-flags.js +1 -4
  566. package/dist/src/gateway/rate-limit/index.js +4 -13
  567. package/dist/src/gateway/runtime-config.js +2 -4
  568. package/dist/src/gateway/security/audit.js +1 -2
  569. package/dist/src/gateway/security/browser-session.js +1 -2
  570. package/dist/src/gateway/security/device-request-proof.d.ts +1 -2
  571. package/dist/src/gateway/security/device-request-proof.js +2 -4
  572. package/dist/src/gateway/security/gateway-scopes.js +2 -6
  573. package/dist/src/gateway/security/index.js +1 -4
  574. package/dist/src/gateway/security/loopback.js +6 -7
  575. package/dist/src/gateway/service/agent-runner.js +2 -4
  576. package/dist/src/gateway/service/app-context-access.js +1 -2
  577. package/dist/src/gateway/service/config-coordinator.d.ts +4 -0
  578. package/dist/src/gateway/service/run-gateway-agent.js +2 -4
  579. package/dist/src/gateway/service/session-input-coordinator.js +3 -6
  580. package/dist/src/gateway/service.d.ts +5 -0
  581. package/dist/src/gateway/service.js +64 -22
  582. package/dist/src/gateway/session-context-summary.js +2 -4
  583. package/dist/src/gateway/tailscale-auth.js +1 -2
  584. package/dist/src/gateway/ws-security.js +1 -2
  585. package/dist/src/gateway/xopc-cloud-capability-setup.js +8 -2
  586. package/dist/src/home-intelligence/host.js +2 -2
  587. package/dist/src/imports/importService.js +1 -1
  588. package/dist/src/infra/rate-limit/failure-limiter.js +90 -78
  589. package/dist/src/infra/rate-limit/index.js +3 -11
  590. package/dist/src/infra/rate-limit/keyed-store.js +47 -52
  591. package/dist/src/infra/rate-limit/rate-limiter.js +58 -55
  592. package/dist/src/infra/update-restart.js +1 -1
  593. package/dist/src/infra/update-service-refresh.js +1 -2
  594. package/dist/src/knowledge/chunks.js +1 -4
  595. package/dist/src/knowledge/connected-knowledge-pipeline.js +3 -6
  596. package/dist/src/knowledge/ingestion-service.js +1 -2
  597. package/dist/src/knowledge-memory/repository.js +1 -2
  598. package/dist/src/local-apps/service.js +1 -1
  599. package/dist/src/local-apps/store.js +1 -2
  600. package/dist/src/media/session-references.js +1 -2
  601. package/dist/src/memory-learning/forget-capture.js +1 -2
  602. package/dist/src/memory-learning/forgotten-history.js +3 -6
  603. package/dist/src/memory-learning/service.js +1 -2
  604. package/dist/src/memory-learning/source-learning.js +3 -3
  605. package/dist/src/memory-learning/task-receipts.js +1 -2
  606. package/dist/src/memory-learning/work-candidate.d.ts +29 -0
  607. package/dist/src/memory-learning/work-candidate.js +31 -0
  608. package/dist/src/memory-learning/work-capture.d.ts +2 -29
  609. package/dist/src/memory-learning/work-capture.js +2 -30
  610. package/dist/src/memory-maintenance/service.js +1 -2
  611. package/dist/src/notes/agent-context.js +1 -2
  612. package/dist/src/notes/attachment-ref.js +4 -8
  613. package/dist/src/notes/note-attachment-sync.js +1 -2
  614. package/dist/src/notes/note-index-meta.js +7 -14
  615. package/dist/src/notes/note-markdown.js +7 -13
  616. package/dist/src/notes/service.js +3 -6
  617. package/dist/src/notes/store.js +2 -4
  618. package/dist/src/notifications/clarification.js +1 -2
  619. package/dist/src/notifications/service.js +1 -2
  620. package/dist/src/personal-agent/proactivity/repository.js +1 -2
  621. package/dist/src/personal-agent/proactivity/service.js +1 -2
  622. package/dist/src/personal-agent/prompt-context.js +1 -2
  623. package/dist/src/personal-agent/reply-composer.js +4 -5
  624. package/dist/src/personal-agent/repository.js +1 -2
  625. package/dist/src/personal-agent/request-delivery.js +1 -2
  626. package/dist/src/personal-agent/result-extraction.js +71 -71
  627. package/dist/src/personal-agent/service.js +2 -3
  628. package/dist/src/phone/adb-command.d.ts +1 -0
  629. package/dist/src/phone/adb-command.js +12 -0
  630. package/dist/src/phone/adb-driver.d.ts +6 -2
  631. package/dist/src/phone/adb-driver.js +45 -21
  632. package/dist/src/phone/cloud-adb-connection.d.ts +34 -0
  633. package/dist/src/phone/cloud-adb-connection.js +324 -0
  634. package/dist/src/phone/cloud-adb-writable.d.ts +3 -0
  635. package/dist/src/phone/cloud-adb-writable.js +21 -0
  636. package/dist/src/phone/cloud-adb.d.ts +3 -32
  637. package/dist/src/phone/cloud-adb.js +3 -259
  638. package/dist/src/phone/cloud-key-permissions.d.ts +2 -0
  639. package/dist/src/phone/cloud-key-permissions.js +66 -0
  640. package/dist/src/phone/cloud-phones.js +2 -1
  641. package/dist/src/phone/cloud-scrcpy.d.ts +1 -1
  642. package/dist/src/phone/cloud-scrcpy.js +3 -2
  643. package/dist/src/phone/contracts.d.ts +197 -1
  644. package/dist/src/phone/contracts.js +55 -6
  645. package/dist/src/phone/foreground.d.ts +1 -0
  646. package/dist/src/phone/foreground.js +18 -0
  647. package/dist/src/phone/live-state.d.ts +2 -0
  648. package/dist/src/phone/live-state.js +5 -0
  649. package/dist/src/phone/model-adapter.d.ts +65 -4
  650. package/dist/src/phone/model-adapter.js +157 -48
  651. package/dist/src/phone/numeric-entry.d.ts +31 -0
  652. package/dist/src/phone/numeric-entry.js +126 -0
  653. package/dist/src/phone/planning.d.ts +27 -0
  654. package/dist/src/phone/planning.js +79 -0
  655. package/dist/src/phone/recovery.d.ts +37 -0
  656. package/dist/src/phone/recovery.js +81 -0
  657. package/dist/src/phone/reliability.d.ts +2 -2
  658. package/dist/src/phone/reliability.js +19 -6
  659. package/dist/src/phone/repository.d.ts +4 -1
  660. package/dist/src/phone/repository.js +12 -1
  661. package/dist/src/phone/runtime.d.ts +79 -3
  662. package/dist/src/phone/runtime.js +861 -93
  663. package/dist/src/phone/scrcpy.js +3 -2
  664. package/dist/src/phone/semantic-controls.d.ts +13 -0
  665. package/dist/src/phone/semantic-controls.js +76 -0
  666. package/dist/src/phone/setup/service.d.ts +101 -0
  667. package/dist/src/phone/setup/service.js +296 -0
  668. package/dist/src/phone/task-feedback.d.ts +4 -0
  669. package/dist/src/phone/task-feedback.js +47 -0
  670. package/dist/src/phone/ui-dump-binary.d.ts +1 -0
  671. package/dist/src/phone/ui-dump-binary.js +4 -0
  672. package/dist/src/phone/wireless.d.ts +80 -0
  673. package/dist/src/phone/wireless.js +244 -0
  674. package/dist/src/projects/capabilities/write.js +1 -2
  675. package/dist/src/projects/project-service.js +1 -2
  676. package/dist/src/projects/workspace.js +1 -2
  677. package/dist/src/providers/presentation.js +2 -2
  678. package/dist/src/providers/xopc-cloud-model-source.js +6 -2
  679. package/dist/src/realtime/runtime.d.ts +3 -0
  680. package/dist/src/realtime/runtime.js +16 -3
  681. package/dist/src/remote-access/exposure-guards.js +1 -2
  682. package/dist/src/runtime-tools/archive.js +1 -1
  683. package/dist/src/runtime-tools/catalog.d.ts +1 -1
  684. package/dist/src/runtime-tools/catalog.js +2 -2
  685. package/dist/src/session/config-store.js +1 -2
  686. package/dist/src/session/init-session-turn.js +1 -2
  687. package/dist/src/session/resolve-session.js +1 -2
  688. package/dist/src/session/store.js +2 -4
  689. package/dist/src/share/share-rate-limit.js +1 -2
  690. package/dist/src/share/share-url.js +1 -2
  691. package/dist/src/share/site-share-router.js +1 -2
  692. package/dist/src/storage/sqlite/activity-repository.js +2 -6
  693. package/dist/src/storage/sqlite/browser-tab-binding-repository.js +2 -6
  694. package/dist/src/storage/sqlite/clarification-wait-repository.js +9 -14
  695. package/dist/src/storage/sqlite/collaboration-rule-repository.js +3 -8
  696. package/dist/src/storage/sqlite/composer-input-history-repository.js +3 -8
  697. package/dist/src/storage/sqlite/config-repository.js +5 -9
  698. package/dist/src/storage/sqlite/connector-learning-repository.js +2 -6
  699. package/dist/src/storage/sqlite/connector-sync-policy-repository.js +2 -6
  700. package/dist/src/storage/sqlite/context-evidence-repository.js +3 -8
  701. package/dist/src/storage/sqlite/context-extraction-repository.js +3 -8
  702. package/dist/src/storage/sqlite/device-access-repository.js +16 -23
  703. package/dist/src/storage/sqlite/device-pairing-approval.js +2 -6
  704. package/dist/src/storage/sqlite/device-pairing-repository.js +5 -10
  705. package/dist/src/storage/sqlite/endpoint-principal-repository.js +2 -6
  706. package/dist/src/storage/sqlite/endpoint-session-binding-repository.js +2 -6
  707. package/dist/src/storage/sqlite/endpoint-tool-invocation-repository.js +2 -6
  708. package/dist/src/storage/sqlite/gateway-identity-repository.js +2 -6
  709. package/dist/src/storage/sqlite/home-attention-repository.js +2 -6
  710. package/dist/src/storage/sqlite/index.js +40 -72
  711. package/dist/src/storage/sqlite/interaction-state-repository.js +4 -10
  712. package/dist/src/storage/sqlite/knowledge-repository.js +3 -8
  713. package/dist/src/storage/sqlite/note-agent-context-repository.js +2 -6
  714. package/dist/src/storage/sqlite/notes-repository.js +4 -9
  715. package/dist/src/storage/sqlite/research-checkpoint-repository.js +3 -8
  716. package/dist/src/storage/sqlite/schema.d.ts +2 -2
  717. package/dist/src/storage/sqlite/schema.js +7 -7
  718. package/dist/src/storage/sqlite/schema.sql +10 -0
  719. package/dist/src/storage/sqlite/session-creation-repository.js +2 -4
  720. package/dist/src/storage/sqlite/session-task-plan-repository.js +9 -14
  721. package/dist/src/storage/sqlite/session-turn-replace-repository.js +5 -9
  722. package/dist/src/storage/sqlite/sidebar-layout-repository.js +9 -14
  723. package/dist/src/storage/sqlite/transcript-repository.js +6 -10
  724. package/dist/src/storage/sqlite/upgrades/260_browser_setup.sql +9 -0
  725. package/dist/src/storage/sqlite/user-people-repository.js +3 -8
  726. package/dist/src/storage/sqlite/user-trust-repository.js +4 -9
  727. package/dist/src/tasks/capabilities/read.js +2 -2
  728. package/dist/src/tasks/capabilities/write.js +1 -1
  729. package/dist/src/tasks/execution-context.js +1 -2
  730. package/dist/src/tasks/home-query-service.js +1 -2
  731. package/dist/src/tasks/task-allocation-repository.js +1 -2
  732. package/dist/src/tasks/task-context-assembler.js +1 -2
  733. package/dist/src/tasks/task-handoff.js +2 -4
  734. package/dist/src/tasks/task-instruction-sequence.d.ts +1 -0
  735. package/dist/src/tasks/task-instruction-sequence.js +7 -0
  736. package/dist/src/tasks/task-language.js +1 -2
  737. package/dist/src/tasks/task-research-result.d.ts +1 -2
  738. package/dist/src/tasks/task-research-result.js +1 -3
  739. package/dist/src/tasks/task-result-delivery-repository.js +1 -1
  740. package/dist/src/tasks/task-result-delivery-service.js +3 -3
  741. package/dist/src/tasks/task-run-coordinator.js +3 -3
  742. package/dist/src/tasks/task-run-dispatcher.js +1 -2
  743. package/dist/src/tasks/task-value-metrics-service.js +1 -2
  744. package/dist/src/tui/backends/embedded-backend.js +2 -3
  745. package/dist/src/tui/tui-commands.js +1 -2
  746. package/dist/src/tunnel/registration-proof.js +1 -2
  747. package/dist/src/tunnel/tunnel-rate-limit.js +1 -2
  748. package/dist/src/user-context/access-policy.js +1 -2
  749. package/dist/src/user-context/domain.js +13 -18
  750. package/dist/src/user-context/extraction/registry.js +1 -2
  751. package/dist/src/user-context/interaction-state.js +1 -4
  752. package/dist/src/user-context/relationship-continuity.js +1 -2
  753. package/dist/src/user-context/sources/consent-repository.js +1 -2
  754. package/dist/src/user-context/sources/index.js +1 -1
  755. package/dist/src/user-context/trust-policy.js +8 -13
  756. package/dist/src/user-model/action-rule-suggestions.js +1 -2
  757. package/dist/src/user-model/bootstrap.js +1 -2
  758. package/dist/src/user-model/capture/executor.js +2 -4
  759. package/dist/src/user-model/capture/semantic.d.ts +1 -1
  760. package/dist/src/user-model/capture/semantic.js +1 -1
  761. package/dist/src/user-model/domain.js +30 -35
  762. package/dist/src/user-model/goals.js +1 -2
  763. package/dist/src/user-model/index.js +1 -4
  764. package/dist/src/user-model/observation-repository.js +1 -2
  765. package/dist/src/user-model/repository.js +1 -2
  766. package/dist/src/user-model/usage-policy.js +1 -2
  767. package/dist/src/voice/realtime/memory-context.js +1 -2
  768. package/dist/src/voice/realtime/persona-context.js +1 -1
  769. package/dist/src/work-discovery/service.js +4 -6
  770. package/package.json +8 -8
  771. package/skills/tools/configure-xopc/SKILL.md +54 -0
  772. package/skills/tools/configure-xopc/references/browser/acceptance.md +32 -0
  773. package/skills/tools/configure-xopc/references/browser/chrome-extension.md +23 -0
  774. package/skills/tools/configure-xopc/references/browser/overview.md +19 -0
  775. package/skills/tools/configure-xopc/references/browser/permissions.md +23 -0
  776. package/skills/tools/configure-xopc/references/browser/troubleshooting.md +24 -0
  777. package/skills/tools/configure-xopc/references/phone/acceptance.md +27 -0
  778. package/skills/tools/configure-xopc/references/phone/aliyun.md +29 -0
  779. package/skills/tools/configure-xopc/references/phone/dependencies.md +18 -0
  780. package/skills/tools/configure-xopc/references/phone/local.md +19 -0
  781. package/skills/tools/configure-xopc/references/phone/models.md +21 -0
  782. package/skills/tools/configure-xopc/references/phone/overview.md +25 -0
  783. package/skills/tools/configure-xopc/references/phone/troubleshooting.md +27 -0
  784. package/skills/tools/configure-xopc/references/scene-index.md +12 -0
  785. package/dist/gateway/static/root/assets/agent-avatar-dicebear-CJFwitU2.js +0 -1
  786. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-DclyJr1N.js +0 -1
  787. package/dist/gateway/static/root/assets/agents-jhErNtzi.js +0 -77
  788. package/dist/gateway/static/root/assets/app-management-settings-panel-DgwqNi5i.js +0 -1
  789. package/dist/gateway/static/root/assets/appearance-settings-C0wJfFyz.js +0 -1
  790. package/dist/gateway/static/root/assets/apps-page-C0LcnI4h.js +0 -1
  791. package/dist/gateway/static/root/assets/automation-display-BFN7zWBg.js +0 -2
  792. package/dist/gateway/static/root/assets/automations-workspace-CBxiV34x.js +0 -8
  793. package/dist/gateway/static/root/assets/browser-automations-page-vJIrTxdi.js +0 -3
  794. package/dist/gateway/static/root/assets/browser-settings-page-in5Roh_E.js +0 -3
  795. package/dist/gateway/static/root/assets/capabilities-BlxF36t-.js +0 -1
  796. package/dist/gateway/static/root/assets/capabilities-page-CiGx8wpQ.js +0 -2
  797. package/dist/gateway/static/root/assets/capabilities-settings-panel-a8kqjzQu.js +0 -8
  798. package/dist/gateway/static/root/assets/capability-header-actions-D4Yq35fD.js +0 -1
  799. package/dist/gateway/static/root/assets/channels-C_CxcjKT.js +0 -1
  800. package/dist/gateway/static/root/assets/chat-terminal-dock-zdMySdMm.js +0 -36
  801. package/dist/gateway/static/root/assets/chunk-KS7C4IRE-BvcCCgTW.js +0 -4
  802. package/dist/gateway/static/root/assets/cloud-credits-BMYMiiNn.js +0 -1
  803. package/dist/gateway/static/root/assets/computer-settings-page-C5Z6Jr0p.js +0 -1
  804. package/dist/gateway/static/root/assets/connector-service-page-Cxus0qrZ.js +0 -1
  805. package/dist/gateway/static/root/assets/connectors-page-DCBO2CxK.js +0 -1
  806. package/dist/gateway/static/root/assets/constants-DeXt1mV-.js +0 -1
  807. package/dist/gateway/static/root/assets/date-picker-DuyyD6jz.js +0 -1
  808. package/dist/gateway/static/root/assets/dependency-picker-BZN72rrk.js +0 -1
  809. package/dist/gateway/static/root/assets/desktop-pet-BtvTIDCi.js +0 -1
  810. package/dist/gateway/static/root/assets/desktop-pet-settings-BcyP7Z6v.js +0 -1
  811. package/dist/gateway/static/root/assets/device-pairing-wizard-Ctbgr50F.js +0 -1
  812. package/dist/gateway/static/root/assets/directory-picker-path-field-DOusKz-O.js +0 -1
  813. package/dist/gateway/static/root/assets/dist-C3DSFZCi.js +0 -1
  814. package/dist/gateway/static/root/assets/dist-CI_fqRk-.js +0 -1
  815. package/dist/gateway/static/root/assets/docx-preview-CajIk2FR.js +0 -20
  816. package/dist/gateway/static/root/assets/echarts-runtime-tcHc9TOS.js +0 -18
  817. package/dist/gateway/static/root/assets/electron-env-Dit0bHgy.js +0 -1
  818. package/dist/gateway/static/root/assets/extension-debug-page-Bt4FwsFu.js +0 -1
  819. package/dist/gateway/static/root/assets/extension-page-0vsxX3FB.js +0 -1
  820. package/dist/gateway/static/root/assets/extension-settings-page-5Pt5_ELc.js +0 -1
  821. package/dist/gateway/static/root/assets/files-Bw4SBGdM.js +0 -1
  822. package/dist/gateway/static/root/assets/floating-ui.dom-B7uQOZZW.js +0 -1
  823. package/dist/gateway/static/root/assets/gateway-realtime-DkWCHVzI.js +0 -1
  824. package/dist/gateway/static/root/assets/gateway-realtime-store-Bx9KCID-.js +0 -1
  825. package/dist/gateway/static/root/assets/gateway-settings-BsVOcmV5.js +0 -1
  826. package/dist/gateway/static/root/assets/highlight-code-C8eS9949.js +0 -1
  827. package/dist/gateway/static/root/assets/highlighted-body-KQOG7T2V-Cbk7eMlg.js +0 -1
  828. package/dist/gateway/static/root/assets/home-page-BZDZnmyc.js +0 -2
  829. package/dist/gateway/static/root/assets/image-generation-api-CAS8QVla.js +0 -1
  830. package/dist/gateway/static/root/assets/imports-page-BCLBYzV1.js +0 -1
  831. package/dist/gateway/static/root/assets/index-Bys6njTY.js +0 -710
  832. package/dist/gateway/static/root/assets/index-Vsf0bj5e.css +0 -1
  833. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-CM_kt5XN.js +0 -1
  834. package/dist/gateway/static/root/assets/languages-byq_L2Ae.js +0 -2
  835. package/dist/gateway/static/root/assets/local-app-workbench-page-Dk87jtcc.js +0 -1
  836. package/dist/gateway/static/root/assets/local-apps-page-BTSOChhk.js +0 -1
  837. package/dist/gateway/static/root/assets/local-apps-yys1VChX.js +0 -1
  838. package/dist/gateway/static/root/assets/local-session-drafts-iGX_6O0O.js +0 -1
  839. package/dist/gateway/static/root/assets/logs-page-D3gVdm8S.js +0 -2
  840. package/dist/gateway/static/root/assets/management-settings-BQNYFE4J.js +0 -1
  841. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-ChweJKTv.js +0 -1
  842. package/dist/gateway/static/root/assets/note-detail-panel-CYKwUCte.js +0 -5
  843. package/dist/gateway/static/root/assets/note-image-lightbox-BTSZb9ZT.js +0 -1
  844. package/dist/gateway/static/root/assets/notes-page-CJ5nhWfL.js +0 -8
  845. package/dist/gateway/static/root/assets/number-input-DDeqHK-G.js +0 -1
  846. package/dist/gateway/static/root/assets/page-context-capture-button-DVn_dU83.js +0 -1
  847. package/dist/gateway/static/root/assets/pdf-runtime-DU_sMPjG.js +0 -2
  848. package/dist/gateway/static/root/assets/personal-page-DcW14lqn.js +0 -1
  849. package/dist/gateway/static/root/assets/personal-proactivity-BJcZ3Yhi.js +0 -1
  850. package/dist/gateway/static/root/assets/personal-settings-panel-C16Iqe7X.js +0 -1
  851. package/dist/gateway/static/root/assets/phone-dependencies-card-D3l9uPFM.js +0 -1
  852. package/dist/gateway/static/root/assets/phone-model-picker-DOv38vBn.js +0 -1
  853. package/dist/gateway/static/root/assets/phone-settings-page-DUHp1q_9.js +0 -1
  854. package/dist/gateway/static/root/assets/plugin-details-dialog-BpfgDlVa.js +0 -1
  855. package/dist/gateway/static/root/assets/popover-select-DGKUpVsz.js +0 -1
  856. package/dist/gateway/static/root/assets/preload-helper-zJ_50EbN.js +0 -1
  857. package/dist/gateway/static/root/assets/preview-open-alternatives-RlHk76TI.js +0 -1
  858. package/dist/gateway/static/root/assets/product-delivery-BqNm-8S5.js +0 -1
  859. package/dist/gateway/static/root/assets/product-open-page-Dh-HqLrE.js +0 -1
  860. package/dist/gateway/static/root/assets/product-preview-content-c3K-4DWc.js +0 -1
  861. package/dist/gateway/static/root/assets/project-detail-page-GD8TxKad.js +0 -7
  862. package/dist/gateway/static/root/assets/projects-page-B8HAt9sD.js +0 -1
  863. package/dist/gateway/static/root/assets/remote-access-hub-D3el7lHK.js +0 -1
  864. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-Dbskk6RG.js +0 -1
  865. package/dist/gateway/static/root/assets/schema-form-CXO1B1k4.js +0 -1
  866. package/dist/gateway/static/root/assets/schemas-CObaziC7.js +0 -64
  867. package/dist/gateway/static/root/assets/session-manager-CA1NkTR_.js +0 -16
  868. package/dist/gateway/static/root/assets/sessions-page-07liaSHH.js +0 -1
  869. package/dist/gateway/static/root/assets/settings-advanced-gate-BGjU8rfN.js +0 -1
  870. package/dist/gateway/static/root/assets/settings-form-section-BQxKmbbJ.js +0 -1
  871. package/dist/gateway/static/root/assets/settings-page-DvVMpKiA.js +0 -1
  872. package/dist/gateway/static/root/assets/settings-page-header-CYpuTXUW.js +0 -1
  873. package/dist/gateway/static/root/assets/settings-page-layout-B20AfmFG.js +0 -1
  874. package/dist/gateway/static/root/assets/setup-status-panel-DKo_VTx-.js +0 -1
  875. package/dist/gateway/static/root/assets/share-preview-page-XgZk8Oa1.js +0 -2
  876. package/dist/gateway/static/root/assets/shares-settings-BODFqK8k.js +0 -1
  877. package/dist/gateway/static/root/assets/skill-api-CV-WT2hj.js +0 -1
  878. package/dist/gateway/static/root/assets/skill-reload-api-Ce6OUk2C.js +0 -1
  879. package/dist/gateway/static/root/assets/skills-page-B7ehOIML.js +0 -2
  880. package/dist/gateway/static/root/assets/specialists-4bkS5rZ4.js +0 -1
  881. package/dist/gateway/static/root/assets/system-settings-panel-CxJkZRT4.js +0 -1
  882. package/dist/gateway/static/root/assets/task-detail-page-CxRR0QuW.js +0 -2
  883. package/dist/gateway/static/root/assets/task-result-evidence-D-gGKNX9.js +0 -1
  884. package/dist/gateway/static/root/assets/tasks-TVRjEggr.js +0 -1
  885. package/dist/gateway/static/root/assets/tracing-settings-page-CQw3G-FB.js +0 -1
  886. package/dist/gateway/static/root/assets/tunnel-api-B2HnCi0U.js +0 -1
  887. package/dist/gateway/static/root/assets/usage-page-uUEkO38r.js +0 -1
  888. package/dist/gateway/static/root/assets/use-autosave-Dc0nwUpX.js +0 -1
  889. package/dist/gateway/static/root/assets/user-model-page-ICUutbKL.js +0 -2
  890. package/dist/gateway/static/root/assets/voice-api-key-field-BSWXZkGa.js +0 -1
  891. package/dist/gateway/static/root/assets/work-discovery-overlay-H3cdwq3l.js +0 -1
  892. package/dist/gateway/static/root/assets/xopc-cloud-account-card-CvT_W6YS.js +0 -1
@@ -1 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./chunk-KS7C4IRE-BvcCCgTW.js";import{t as a}from"./app-window-DXFNqt_0.js";import{n as o,r as s}from"./popover-select-DGKUpVsz.js";import{t as c}from"./cn-0WouolD0.js";import{a as l,i as u,n as d}from"./locale-store-B7s2Hb35.js";import{i as f}from"./vendor-swr-BIWyz7Rc.js";import{t as p}from"./button-aIC072nz.js";import{t as m}from"./skeleton-BI5TyibZ.js";import{Al as h,Bc as g,Dn as _,Gl as v,Hc as y,Ic as b,Il as x,It as S,Jc as C,Lc as w,On as T,Rc as E,Vc as D,Yd as ee,bl as O,ia as k,rd as A,zc as j}from"./index-Bys6njTY.js";import{n as M,t as N}from"./settings-page-header-CYpuTXUW.js";import{a as P,c as F,i as I,l as L,n as R,o as te,r as z,s as B,u as V}from"./phone-model-picker-DOv38vBn.js";import{t as H}from"./phone-dependencies-card-D3l9uPFM.js";var ne=n(),U=e(t(),1),W=r();function G({zh:e,onAdded:t}){let[n,r]=(0,U.useState)(e?`阿里云手机`:`Alibaba Cloud Phone`),[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(),[c,l]=(0,U.useState)(),[u,d]=(0,U.useState)(!1),[f,m]=(0,U.useState)(!1),[h,g]=(0,U.useState)(``),_=(0,U.useRef)(void 0),v=(0,U.useRef)(!0),y=()=>{let e=_.current;_.current=void 0,l(void 0),e&&V(`/cloud/aliyun/tests/${e}`,void 0,`DELETE`).catch(()=>{})};(0,U.useEffect)(()=>(v.current=!0,()=>{v.current=!1,_.current&&V(`/cloud/aliyun/tests/${_.current}`,void 0,`DELETE`).catch(()=>{})}),[]);let b=async()=>{if(o){y(),m(!0),g(``);try{if(o.size>16384)throw Error(e?`私钥文件不能超过 16 KB`:`Private key must be at most 16 KB`);let t=await V(`/cloud/aliyun/test`,{endpoint:i.trim(),privateKey:await o.text()});if(!v.current){V(`/cloud/aliyun/tests/${t.token}`,void 0,`DELETE`).catch(()=>{});return}_.current=t.token,l(t)}catch(e){v.current&&g(String(e instanceof Error?e.message:e))}finally{v.current&&m(!1)}}},x=async()=>{if(c){m(!0),g(``);try{await V(`/cloud/aliyun/add`,{token:c.token,name:n.trim(),makeDefault:u}),_.current=void 0,t()}catch(e){v.current&&g(String(e instanceof Error?e.message:e))}finally{v.current&&m(!1)}}},S=`mt-2 w-full rounded-xl border border-edge bg-surface-inset px-3 py-2 text-sm text-fg`;return(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsx)(`p`,{className:`text-sm text-fg-muted`,children:e?`在阿里云控制台绑定密钥对并创建 ADB 连接,复制公网或 Gateway 可访问的内网地址。无需云账号 AccessKey。`:`Bind a key pair and create an ADB connection in the Alibaba console. Use an address reachable from the Gateway. No cloud account AccessKey is needed.`}),(0,W.jsxs)(`label`,{className:`block text-sm`,children:[e?`手机名称`:`Phone name`,(0,W.jsx)(`input`,{className:S,value:n,maxLength:100,disabled:f,onChange:e=>r(e.target.value)})]}),(0,W.jsxs)(`label`,{className:`block text-sm`,children:[e?`ADB 地址`:`ADB address`,(0,W.jsx)(`input`,{className:S,placeholder:`203.0.113.10:10001`,value:i,disabled:f,autoComplete:`off`,onChange:e=>{y(),a(e.target.value)}})]}),(0,W.jsxs)(`label`,{className:`block text-sm`,children:[e?`私钥文件(adbkey)`:`Private key file (adbkey)`,(0,W.jsx)(`input`,{className:S,type:`file`,disabled:f,onChange:e=>{y(),s(e.target.files?.[0])}})]}),(0,W.jsx)(`p`,{className:`text-xs text-fg-muted`,children:e?`私钥仅提交到当前 Gateway,添加后保存在 Gateway 凭据目录,不会替换电脑现有 ADB 密钥。`:`The key is sent only to this Gateway and saved in its credentials directory after adding. Existing host ADB keys stay unchanged.`}),(0,W.jsx)(p,{disabled:f||!i.trim()||!o,onClick:()=>void b(),children:f?e?`处理中…`:`Working…`:e?`测试连接`:`Test connection`}),h&&(0,W.jsx)(`p`,{role:`alert`,className:`break-words text-sm text-danger`,children:h}),c&&(0,W.jsxs)(`div`,{className:`space-y-3 rounded-xl border border-edge p-4`,children:[(0,W.jsxs)(`p`,{role:`status`,className:`text-sm`,children:[e?`连接成功`:`Connected`,` · `,c.model,` · Android `,c.androidVersion]}),(0,W.jsx)(`img`,{src:c.screenshot,alt:e?`云手机当前画面`:`Current cloud phone screen`,className:`mx-auto max-h-64 rounded-lg object-contain`}),(0,W.jsx)(`p`,{className:`text-xs text-fg-muted`,children:e?`添加后可在聊天中使用实时视频、接管操作和交还 Agent;视频不可用时使用截图。测试结果有效期为 10 分钟。默认只允许系统设置,添加后可在「管理」中调整。`:`After adding, use live video, takeover and Agent handback in chat, with snapshots when video is unavailable. Test expires after 10 minutes. Settings is the initial allowed app; adjust it in Manage.`}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:u,disabled:f,onChange:e=>d(e.target.checked)}),e?`设为默认手机`:`Set as default phone`]}),(0,W.jsx)(p,{variant:`primary`,disabled:f||!n.trim()||c.expiresAt<=Date.now(),onClick:()=>void x(),children:e?`添加手机`:`Add phone`})]}),(0,W.jsx)(`p`,{className:`text-xs text-fg-muted`,children:e?`移除连接只删除 xopc 的连接与私钥,不会销毁云手机,也不会关闭阿里云侧的 ADB 端口。`:`Removing a connection deletes its xopc credentials. It does not destroy the cloud phone or close its cloud ADB endpoint.`})]})}var K=[{id:`local-adb`,available:!0,name:[`Gateway 电脑上的手机 / 模拟器`,`Phone or emulator on the Gateway host`],description:[`通过 USB 或已配对的无线 ADB 连接。`,`Connect over USB or previously paired wireless ADB.`]},{id:`remote-connector`,available:!1,name:[`通过本地连接器连接`,`Local connector`],description:[`Gateway 在服务器上,手机连接在你的电脑上。`,`Connect a phone on your computer to a remote Gateway.`]},{id:`aliyun`,available:!0,name:[`阿里云手机`,`Alibaba Cloud Phone`],description:[`填写 ADB 地址并上传私钥,连接已有云手机。`,`Connect an existing cloud phone with its ADB address and private key.`]},{id:`tencent`,available:!1,name:[`腾讯云手机`,`Tencent Cloud Phone`],description:[`连接云账号,选择地域和已有实例。`,`Connect an account, then choose a region and existing instance.`]}];function re(e){let t=(0,ne.c)(48),{zh:n,onClose:r,onSelect:i,onAdded:a}=e,[o,s]=(0,U.useState)(),c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c={refreshInterval:3e3},t[0]=c):c=t[0];let l=f(o===`local-adb`?`phone-devices`:null,te,c),u;t[1]===o?u=t[2]:(u=K.find(e=>e.id===o),t[1]=o,t[2]=u);let d=u,h=+!n,_;t[3]===n?_=t[4]:(_=n?{device:`已连接,可添加`,unauthorized:`等待手机授权:解锁手机,点击「允许 USB 调试」`,offline:`设备离线:重新连接数据线或无线调试`,recovery:`恢复模式:请先启动 Android 系统`,sideload:`请退出刷机模式并启动 Android 系统`}:{device:`Connected · Ready to add`,unauthorized:`Unlock the phone and allow USB debugging`,offline:`Offline · Reconnect USB or wireless debugging`,recovery:`Boot Android before connecting`,sideload:`Exit sideload mode and boot Android`},t[3]=n,t[4]=_);let v=_,S;t[5]===l.data?.discovery?S=t[6]:(S=l.data?.discovery??[],t[5]=l.data?.discovery,t[6]=S);let T=S,O;t[7]===r?O=t[8]:(O=e=>{e||r()},t[7]=r,t[8]=O);let k;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,W.jsx)(g,{className:`fixed inset-0 z-[80] bg-black/40`}),t[9]=k):k=t[9];let A;t[10]!==o||t[11]!==n?(A=o&&(0,W.jsx)(p,{variant:`ghost`,"aria-label":n?`返回连接方式`:`Back to connection methods`,onClick:()=>s(void 0),children:(0,W.jsx)(ee,{className:`size-4`})}),t[10]=o,t[11]=n,t[12]=A):A=t[12];let M=n?`添加手机`:`Add phone`,N;t[13]===M?N=t[14]:(N=(0,W.jsx)(y,{className:`text-base font-semibold`,children:M}),t[13]=M,t[14]=N);let P=d?d.name[h]:n?`选择手机连接在哪里。手机模型在添加设备后独立配置。`:`Choose where the phone connects. Phone models are configured separately.`,F;t[15]===P?F=t[16]:(F=(0,W.jsx)(j,{className:`mt-1 text-sm text-fg-muted`,children:P}),t[15]=P,t[16]=F);let I;t[17]!==F||t[18]!==N?(I=(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[N,F]}),t[17]=F,t[18]=N,t[19]=I):I=t[19];let L=n?`关闭添加手机`:`Close add phone`,R;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(R=(0,W.jsx)(C,{className:`size-4`}),t[20]=R):R=t[20];let z;t[21]===L?z=t[22]:(z=(0,W.jsx)(w,{asChild:!0,children:(0,W.jsx)(p,{variant:`ghost`,"aria-label":L,children:R})}),t[21]=L,t[22]=z);let B;t[23]!==I||t[24]!==z||t[25]!==A?(B=(0,W.jsxs)(`header`,{className:`flex shrink-0 items-start gap-3 border-b border-edge p-5`,children:[A,I,z]}),t[23]=I,t[24]=z,t[25]=A,t[26]=B):B=t[26];let V;t[27]!==l||t[28]!==T||t[29]!==h||t[30]!==o||t[31]!==a||t[32]!==r||t[33]!==i||t[34]!==v||t[35]!==n?(V=o?o===`aliyun`?(0,W.jsx)(G,{zh:n,onAdded:()=>{a?.(),r()}}):o===`local-adb`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`p`,{className:`rounded-xl bg-surface-inset p-3 text-sm`,children:n?`连接位置:Gateway 所在电脑。若 Gateway 在服务器上,浏览器无法访问你电脑的 USB 手机。`:`Connection location: the Gateway host. A remote Gateway cannot access your browser computer’s USB phone.`}),(0,W.jsxs)(`ol`,{className:`list-decimal space-y-2 pl-5 text-sm text-fg-muted`,children:[(0,W.jsx)(`li`,{children:n?`手机开启开发者选项和 USB 调试;模拟器直接启动即可。`:`Enable developer options and USB debugging, or start an emulator.`}),(0,W.jsx)(`li`,{children:n?`用数据线连接 Gateway 电脑,在手机上允许 USB 调试。`:`Connect to the Gateway host with a data cable, then allow USB debugging on the phone.`}),(0,W.jsx)(`li`,{children:n?`等待下方显示设备,选择后确认名称和应用范围。`:`Select a discovered device below, then confirm its name and app access.`})]}),(0,W.jsxs)(`details`,{className:`text-sm`,children:[(0,W.jsx)(`summary`,{className:`cursor-pointer text-fg-muted`,children:n?`使用无线连接或安装连接工具`:`Wireless connection or connection tools`}),(0,W.jsx)(`p`,{className:`mt-2 text-xs leading-relaxed text-fg-muted`,children:n?`当前支持发现已连接到 Gateway ADB 的无线设备。界面内无线配对尚未实现。ADB 可在手机控制页的「手机依赖状态」中手动安装,或使用 Gateway 电脑上已有的 Platform Tools;无需安装完整 Android Studio。`:`Previously connected wireless ADB devices are supported. In-app wireless pairing is not implemented yet. Install ADB from Phone dependencies or use existing Platform Tools on the Gateway host.`}),(0,W.jsx)(`a`,{href:`https://developer.android.com/tools/adb`,target:`_blank`,rel:`noopener noreferrer`,className:`mt-2 inline-block text-xs text-accent-fg hover:underline`,children:n?`查看 Android 官方连接指引`:`Android connection guide`})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,W.jsx)(`h3`,{className:`text-sm font-medium`,children:n?`发现的设备`:`Discovered devices`}),(0,W.jsxs)(p,{disabled:l.isValidating,onClick:()=>{l.mutate()},children:[(0,W.jsx)(x,{className:`size-4`}),n?`刷新`:`Refresh`]})]}),!l.data&&!l.error?(0,W.jsx)(m,{className:`h-24 w-full rounded-xl`}):null,(l.error||l.data?.diagnostic)&&(0,W.jsxs)(`p`,{role:`alert`,className:`text-sm text-danger`,children:[n?`无法检测设备,请检查 Gateway 电脑的 ADB 安装与连接。`:`Unable to detect devices. Check ADB on the Gateway host.`,(0,W.jsx)(`span`,{className:`mt-1 block break-all text-xs`,children:l.data?.diagnostic??String(l.error)})]}),T.map(e=>{let t=l.data?.devices.some(t=>t.serial===e.serial);return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-xl border border-edge p-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`p`,{className:`text-sm font-medium`,children:e.name}),(0,W.jsx)(`p`,{className:`mt-1 break-all text-xs text-fg-muted`,children:e.serial}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:v[e.state]??e.state})]}),(0,W.jsx)(p,{disabled:t||e.state!==`device`,onClick:()=>i(e),children:t?n?`已添加`:`Added`:n?`选择设备`:`Choose device`})]},e.serial)}),l.data&&!T.length&&(0,W.jsx)(`p`,{role:`status`,className:`text-sm text-fg-muted`,children:n?`尚未发现设备。请检查数据线、手机调试授权,或启动模拟器。`:`No devices found. Check the cable and debugging authorization, or start an emulator.`})]}):(0,W.jsxs)(`div`,{className:`space-y-4 rounded-xl border border-edge bg-surface-base p-4`,children:[(0,W.jsx)(`h3`,{className:`text-sm font-medium`,children:n?`此接入方式暂未支持`:`This connection method is not available yet`}),(0,W.jsx)(`p`,{className:`text-sm text-fg-muted`,children:o===`remote-connector`?n?`后续可通过本地连接器将电脑上的手机接入远程 Gateway。当前请将手机连接到 Gateway 所在电脑。`:`A future local connector will connect your phone to a remote Gateway. For now, connect it to the Gateway host.`:n?`云手机适配器接入后,可配置云账号、选择地域和已有实例,再验证连接并添加。当前尚不能连接云实例,不会要求填写云密钥。`:`Once the cloud adapter is available, connect an account, select a region and existing instance, then verify and add it. Cloud connections are not supported yet.`}),(0,W.jsx)(`p`,{className:`text-xs text-fg-muted`,children:n?`添加已有实例与购买、创建、销毁实例分开处理。`:`Adding existing instances is separate from purchasing, creating or destroying them.`})]}):K.map(e=>(0,W.jsxs)(`button`,{className:`block min-h-20 w-full rounded-xl border border-edge bg-surface-base p-4 text-left hover:bg-surface-hover focus-visible:outline-2 focus-visible:outline-accent`,onClick:()=>s(e.id),children:[(0,W.jsxs)(`span`,{className:`flex flex-wrap items-center justify-between gap-2 text-sm font-medium`,children:[e.name[h],!e.available&&(0,W.jsx)(`span`,{className:`text-xs font-normal text-fg-muted`,children:n?`暂未支持`:`Not available yet`})]}),(0,W.jsx)(`span`,{className:`mt-2 block text-xs text-fg-muted`,children:e.description[h]})]},e.id)),t[27]=l,t[28]=T,t[29]=h,t[30]=o,t[31]=a,t[32]=r,t[33]=i,t[34]=v,t[35]=n,t[36]=V):V=t[36];let H;t[37]===V?H=t[38]:(H=(0,W.jsx)(`div`,{className:`min-h-0 flex-1 space-y-4 overflow-y-auto p-5`,children:V}),t[37]=V,t[38]=H);let re=n?`取消`:`Cancel`,q;t[39]===re?q=t[40]:(q=(0,W.jsx)(`footer`,{className:`flex shrink-0 justify-end border-t border-edge p-4`,children:(0,W.jsx)(w,{asChild:!0,children:(0,W.jsx)(p,{children:re})})}),t[39]=re,t[40]=q);let J;t[41]!==B||t[42]!==H||t[43]!==q?(J=(0,W.jsxs)(D,{children:[k,(0,W.jsxs)(E,{className:`fixed left-1/2 top-1/2 z-[81] flex h-[min(42rem,90dvh)] w-[min(38rem,calc(100vw-2rem))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-overlay text-fg`,children:[B,H,q]})]}),t[41]=B,t[42]=H,t[43]=q,t[44]=J):J=t[44];let Y;return t[45]!==J||t[46]!==O?(Y=(0,W.jsx)(b,{open:!0,onOpenChange:O,children:J}),t[45]=J,t[46]=O,t[47]=Y):Y=t[47],Y}function q({device:e,sessionId:t,zh:n,onClose:r}){let[i,a]=(0,U.useState)(0),[o,s]=(0,U.useState)(),[c,d]=(0,U.useState)(``),[f,h]=(0,U.useState)(!0);return(0,U.useEffect)(()=>{let r=new AbortController,i=!0,a;return h(!0),d(``),s(void 0),(async()=>{try{let o;if(t){let e=await l(u(`/api/phone/sessions/${t}/screen`),{signal:r.signal});if(!e.ok)throw Error(n?`当前无法查看屏幕,请暂停任务后重试`:`Screen unavailable. Pause the task and retry.`);o=await e.blob()}else o=await F(e.id,r.signal);if(!i)return;a=URL.createObjectURL(o),s(a)}catch(e){i&&d(e instanceof Error?e.message:String(e))}finally{i&&h(!1)}})(),()=>{i=!1,r.abort(),a&&URL.revokeObjectURL(a)}},[e.id,t,i,n]),(0,W.jsx)(b,{open:!0,onOpenChange:e=>{e||r()},children:(0,W.jsxs)(D,{children:[(0,W.jsx)(g,{className:`fixed inset-0 z-[80] bg-black/40`}),(0,W.jsxs)(E,{className:`fixed left-1/2 top-1/2 z-[81] flex h-[min(48rem,90dvh)] w-[min(30rem,calc(100vw-2rem))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-overlay text-fg`,children:[(0,W.jsxs)(`div`,{className:`flex shrink-0 items-start justify-between gap-3 border-b border-edge p-4`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(y,{className:`text-base font-semibold`,children:n?`手机屏幕`:`Phone screen`}),(0,W.jsxs)(j,{className:`mt-1 truncate text-sm text-fg-muted`,children:[e.name,` · `,n?`仅查看`:`View only`]})]}),(0,W.jsx)(w,{asChild:!0,children:(0,W.jsx)(p,{variant:`ghost`,"aria-label":n?`关闭预览`:`Close preview`,children:(0,W.jsx)(C,{className:`size-4`})})})]}),(0,W.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center overflow-hidden bg-surface-inset p-3`,"aria-busy":f,children:f?(0,W.jsx)(m,{className:`h-full w-full rounded-lg`}):c?(0,W.jsx)(`p`,{role:`alert`,className:`max-h-full overflow-y-auto break-words p-4 text-sm text-danger`,children:c}):o?(0,W.jsx)(`img`,{src:o,alt:n?`授权手机的当前屏幕截图`:`Current screenshot of the authorized phone`,className:`h-full w-full object-contain`}):null}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-3 border-t border-edge p-4`,children:[(0,W.jsx)(`p`,{className:`text-xs text-fg-muted`,children:n?`临时截图,不保存到聊天或附件库。`:`Temporary screenshot; not saved to chat or attachments.`}),(0,W.jsxs)(p,{disabled:f,onClick:()=>a(e=>e+1),children:[(0,W.jsx)(x,{className:`size-4`}),n?`刷新画面`:`Refresh screen`]})]})]})]})})}function J(e){let t=(0,ne.c)(29),{deviceId:n,serial:r,mode:i,selected:o,onModeChange:s,onSelectedChange:l,disabled:u,zh:d}=e,g=(0,U.useId)(),[_,v]=(0,U.useState)(``),y;t[0]!==n||t[1]!==i||t[2]!==r?(y=i===`selected`?[`phone-applications`,n??r]:null,t[0]=n,t[1]=i,t[2]=r,t[3]=y):y=t[3];let b;t[4]!==n||t[5]!==r?(b=()=>P(n,r),t[4]=n,t[5]=r,t[6]=b):b=t[6];let S;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(S={revalidateOnFocus:!1,shouldRetryOnError:!1},t[7]=S):S=t[7];let C=f(y,b,S),w;if(t[8]!==C||t[9]!==u||t[10]!==g||t[11]!==i||t[12]!==s||t[13]!==l||t[14]!==_||t[15]!==o||t[16]!==d){let e=_.trim().toLocaleLowerCase(),n=C.data?.filter(t=>`${t.label} ${t.packageName}`.toLocaleLowerCase().includes(e))??[],r=C.data,f=r?o.filter(e=>!r.some(t=>t.packageName===e)):[],y;t[18]!==l||t[19]!==o?(y=e=>l(o.includes(e)?o.filter(t=>t!==e):[...o,e]),t[18]=l,t[19]=o,t[20]=y):y=t[20];let b=y,S=d?`应用权限`:`Application access`,T;t[21]===S?T=t[22]:(T=(0,W.jsx)(`legend`,{className:`mb-2 text-sm font-medium`,children:S}),t[21]=S,t[22]=T);let E;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(E=[`all`,`selected`],t[23]=E):E=t[23];let D;t[24]!==g||t[25]!==i||t[26]!==s||t[27]!==d?(D=(0,W.jsx)(`div`,{className:`grid gap-2`,children:E.map(e=>(0,W.jsxs)(`label`,{className:c(`flex min-h-14 cursor-pointer items-start gap-3 rounded-xl border p-3`,i===e?`border-accent/50 bg-accent-soft`:`border-edge bg-surface-base`),children:[(0,W.jsx)(`input`,{type:`radio`,name:g,value:e,checked:i===e,onChange:()=>s(e),className:`mt-1 size-4 shrink-0 accent-accent`}),(0,W.jsxs)(`span`,{className:`min-w-0`,children:[(0,W.jsx)(`span`,{className:`block text-sm font-medium`,children:e===`all`?d?`允许所有应用`:`Allow all apps`:d?`仅允许所选应用`:`Only selected apps`}),(0,W.jsx)(`span`,{className:`mt-0.5 block text-xs leading-relaxed text-fg-muted`,children:e===`all`?d?`可在手机上的应用间切换,无需逐个配置。`:`Switch between apps on this phone without individual setup.`:d?`从手机上已安装的应用中选择。`:`Choose from applications installed on the phone.`})]})]},e))}),t[24]=g,t[25]=i,t[26]=s,t[27]=d,t[28]=D):D=t[28],w=(0,W.jsxs)(`fieldset`,{disabled:u,className:`space-y-3`,children:[T,D,i===`selected`?(0,W.jsxs)(`div`,{className:`space-y-2`,"aria-label":d?`选择手机应用`:`Choose phone applications`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(`p`,{role:`status`,className:`text-xs text-fg-muted`,children:d?`已选择 ${o.length} 个应用`:`${o.length} apps selected`}),(0,W.jsxs)(p,{variant:`ghost`,className:`gap-1 px-2 py-1 text-xs`,"aria-label":d?`刷新应用列表`:`Refresh applications`,disabled:u||C.isValidating,onClick:()=>{C.mutate()},children:[(0,W.jsx)(x,{className:c(`size-3.5`,C.isValidating&&`animate-spin motion-reduce:animate-none`),"aria-hidden":!0}),d?`刷新`:`Refresh`]})]}),(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(h,{className:`pointer-events-none absolute left-3 top-3 size-4 text-fg-muted`,"aria-hidden":!0}),(0,W.jsx)(`input`,{type:`search`,"aria-label":d?`搜索手机应用`:`Search phone applications`,placeholder:d?`搜索应用`:`Search apps`,value:_,onChange:e=>v(e.target.value),className:`min-h-10 w-full rounded-lg border border-edge bg-surface-base py-2 pl-9 pr-3 text-sm focus-visible:outline-2 focus-visible:outline-accent`})]}),C.error?(0,W.jsxs)(`div`,{role:`alert`,className:`rounded-lg bg-surface-inset p-3 text-sm text-fg-muted`,children:[d?`暂时无法读取应用,请确认手机已连接后重试。之前的选择会保留。`:`Unable to read apps. Check the phone connection and retry. Previous selections are preserved.`,(0,W.jsx)(p,{variant:`ghost`,className:`ml-1 text-accent`,onClick:()=>{C.mutate()},children:d?`重试`:`Retry`})]}):null,!C.data&&!C.error?(0,W.jsxs)(`div`,{"aria-busy":`true`,className:`space-y-2 rounded-lg border border-edge p-3`,children:[(0,W.jsx)(m,{className:`h-10 w-full`}),(0,W.jsx)(m,{className:`h-10 w-full`}),(0,W.jsx)(m,{className:`h-10 w-full`})]}):C.data?(0,W.jsxs)(`div`,{className:`max-h-56 overflow-y-auto overscroll-contain rounded-lg border border-edge bg-surface-base`,"aria-label":d?`可选应用`:`Available applications`,children:[n.map(e=>(0,W.jsxs)(`label`,{className:`flex min-h-12 cursor-pointer items-center gap-3 px-3 py-2 hover:bg-surface-hover`,children:[(0,W.jsx)(a,{className:`size-5 shrink-0 text-fg-muted`,"aria-hidden":!0}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`span`,{className:`block truncate text-sm`,title:e.label,children:e.label}),e.label!==e.packageName&&C.data.some(t=>t.packageName!==e.packageName&&t.label===e.label)?(0,W.jsx)(`span`,{className:`block truncate text-xs text-fg-muted`,children:e.packageName}):null]}),(0,W.jsx)(`input`,{type:`checkbox`,"aria-label":e.label,checked:o.includes(e.packageName),onChange:()=>b(e.packageName),className:`size-4 shrink-0 accent-accent`})]},e.packageName)),n.length?null:(0,W.jsx)(`p`,{className:`p-4 text-center text-sm text-fg-muted`,children:e?d?`没有找到匹配的应用`:`No matching applications`:d?`这台手机上没有可打开的应用`:`No launchable applications on this phone`})]}):null,f.length?(0,W.jsxs)(`div`,{className:`space-y-1 text-xs text-fg-muted`,children:[(0,W.jsx)(`p`,{children:d?`以下原有选择未在手机上找到,可取消选择。`:`These previous selections are no longer available. You may deselect them.`}),f.map(e=>(0,W.jsxs)(`label`,{className:`flex min-h-9 items-center gap-2`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:!0,onChange:()=>b(e),className:`accent-accent`}),(0,W.jsx)(`span`,{className:`break-all`,children:e})]},e))]}):null,o.length?null:(0,W.jsx)(`p`,{className:`text-xs text-fg-muted`,children:d?`至少选择一个应用后保存。`:`Choose at least one application before saving.`})]}):null]}),t[8]=C,t[9]=u,t[10]=g,t[11]=i,t[12]=s,t[13]=l,t[14]=_,t[15]=o,t[16]=d,t[17]=w}else w=t[17];return w}function Y({deviceId:e,value:t,onChange:n,disabled:r,zh:i}){let[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(``);async function l(){o(!0),c(``);try{let t=await V(`/devices/${e}/input-status`);c(t.unicode===`available`?i?`中文输入通道已就绪,具体应用仍需允许粘贴。`:`Unicode input is ready. The app must allow pasting.`:t.unicode===`setup_required`?i?`请在手机依赖中安装或修复 scrcpy server,再重试检测。无需安装手机输入法。`:`Install or repair scrcpy server under phone dependencies, then retry. No phone keyboard installation is needed.`:i?`这台手机暂不支持自动中文输入,请接管后使用手机自带键盘。`:`Automatic Unicode input is unavailable. Take over and use the phone keyboard.`)}catch{c(i?`暂时无法检测,请确认手机连接后重试。`:`Unable to check. Reconnect the phone and retry.`)}finally{o(!1)}}return(0,W.jsxs)(`div`,{className:`space-y-2 rounded-xl border border-edge bg-surface-base p-3`,children:[(0,W.jsxs)(`label`,{className:`flex min-h-9 cursor-pointer items-center justify-between gap-3 text-sm font-medium`,children:[i?`允许自动输入文字`:`Allow automatic text input`,(0,W.jsx)(`input`,{type:`checkbox`,checked:t===`auto`,disabled:r,onChange:e=>n(e.target.checked?`auto`:`manual`),className:`size-4 accent-accent`})]}),(0,W.jsx)(`p`,{className:`text-xs leading-relaxed text-fg-muted`,children:t===`auto`?i?`中文和 Emoji 通过手机剪贴板粘贴,不安装或切换输入法。输入内容可能留在手机剪贴板;不会读取或同步原有剪贴板。`:`Chinese and emoji use the phone clipboard without installing or switching keyboards. Supplied text may remain there; existing clipboard contents are never read or synced.`:i?`Agent 会在需要输入时暂停。请接管手机,使用手机自带键盘输入,完成后交还 Agent。`:`The Agent pauses when text is needed. Take over, type with the phone keyboard, then hand back to the Agent.`}),e?(0,W.jsx)(p,{variant:`ghost`,className:`min-h-9 px-2 text-xs text-accent`,disabled:r||a,onClick:()=>void l(),children:a?i?`正在检测…`:`Checking…`:i?`检测中文输入能力`:`Check Unicode input`}):null,s?(0,W.jsx)(`p`,{role:`status`,className:`text-xs leading-relaxed text-fg-muted`,children:s}):null]})}function ie({value:e,zh:t,disabled:n,onSave:r,onSelect:a}){let o=f(`phone-models`,B),s=f(`phone-provider-meta`,S),[c,l]=(0,U.useState)(e),[u,d]=(0,U.useState)(!1),[m,h]=(0,U.useState)(``),[g,_]=(0,U.useState)(!1);(0,U.useEffect)(()=>{l(e)},[e]);let v=o.data?.models.find(e=>e.id===c),y=c.split(`/`)[0],b=s.data?.find(e=>e.id===y)?.name??y,x=!c||!!v?.configured,C=async()=>{if(!(u||!x)){d(!0),h(``),_(!1);try{await r(c),_(!0)}catch(e){h(e instanceof Error?e.message:String(e))}finally{d(!1)}}};return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-start`,children:[(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,W.jsx)(R,{value:c,onChange:e=>{l(e),a?.(e),_(!1),h(``)},zh:t,disabled:n||u})}),(0,W.jsx)(p,{variant:`primary`,disabled:n||u||!o.data||!x||c===e,onClick:()=>{C()},children:u?t?`保存中…`:`Saving…`:t?`保存`:`Save`})]}),c&&o.data?(0,W.jsx)(`p`,{className:`text-xs text-fg-muted`,children:v?.mock?t?`本地模拟测试,无需 API Key。`:`Local mock testing. No API key required.`:v?`${t?`服务商`:`Provider`}:${b} · ${v.configured?t?`凭据已配置`:`Credentials configured`:t?`请先配置凭据`:`Configure credentials first`}`:t?`当前模型不可用,请重新选择。`:`This model is unavailable. Choose another model.`}):null,(0,W.jsxs)(`p`,{className:`text-xs text-fg-muted`,children:[t?`仅显示支持手机操作的模型。`:`Only Phone Use models are listed.`,(0,W.jsx)(i,{to:`/settings/capabilities/models`,className:`ml-1 text-accent-fg hover:underline`,children:t?`前往模型管理添加或配置`:`Add or configure in Models`})]}),m&&(0,W.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:m}),g&&(0,W.jsx)(`p`,{role:`status`,className:`text-xs text-fg-muted`,children:t?`手机模型已保存`:`Phone model saved`})]})}var ae=`w-full rounded-lg border border-edge bg-surface-base px-3 py-2.5 text-sm text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,oe=`space-y-4 rounded-2xl border border-edge bg-surface-panel p-4 sm:p-5`;function se({device:e,serial:t,name:n,onSave:r,onClose:i,zh:a}){let[o,s]=(0,U.useState)(e?.name??n),[c,l]=(0,U.useState)(e?.appAccess??(e?.allowedApps.length?`selected`:`all`)),[u,d]=(0,U.useState)(e?.allowedApps??[]),[f,m]=(0,U.useState)(e?.textInput??`auto`),[h,_]=(0,U.useState)(e?.enabled??!0),[v,x]=(0,U.useState)(!1),[S,T]=(0,U.useState)(``),ee=async()=>{x(!0),T(``);try{let n={name:o,appAccess:c,allowedApps:c===`all`?[]:u,textInput:f,enabled:h};await V(e?`/devices/${e.id}`:`/devices`,e?n:{...n,serial:t},e?`PATCH`:`POST`),await r(),i()}catch(e){T(e instanceof Error?e.message:String(e))}finally{x(!1)}};return(0,W.jsx)(b,{open:!0,onOpenChange:e=>{!e&&!v&&i()},children:(0,W.jsxs)(D,{children:[(0,W.jsx)(g,{className:`fixed inset-0 z-[80] bg-black/40`}),(0,W.jsxs)(E,{className:`fixed left-1/2 top-1/2 z-[81] flex h-[min(44rem,90dvh)] w-[min(34rem,calc(100vw-2rem))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-overlay p-5 text-fg`,children:[(0,W.jsxs)(`div`,{className:`flex shrink-0 items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(y,{className:`text-base font-semibold`,children:e?a?`管理手机`:`Manage phone`:a?`添加手机`:`Add phone`}),(0,W.jsx)(j,{className:`mt-1 text-sm text-fg-muted`,children:a?`设备连接在 Gateway 所在电脑。修改权限会停止当前控制。`:`This phone connects to the Gateway host. Changing access stops active control.`})]}),(0,W.jsx)(w,{asChild:!0,children:(0,W.jsx)(p,{variant:`ghost`,disabled:v,"aria-label":a?`关闭`:`Close`,children:(0,W.jsx)(C,{className:`size-4`})})})]}),(0,W.jsxs)(`form`,{className:`mt-5 flex min-h-0 flex-1 flex-col`,onSubmit:e=>{e.preventDefault(),ee()},children:[(0,W.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-4 overflow-y-auto pr-1`,children:[(0,W.jsxs)(`label`,{className:`block space-y-1.5 text-sm`,children:[a?`名称`:`Name`,(0,W.jsx)(`input`,{className:ae,value:o,maxLength:100,required:!0,onChange:e=>s(e.target.value)})]}),(0,W.jsxs)(`p`,{className:`break-all text-xs text-fg-muted`,children:[`ADB: `,t]}),(0,W.jsx)(`p`,{className:`text-xs text-fg-muted`,children:a?`已启用 phone_use 工具的 Agent 可使用这台手机。`:`Agents with the phone_use tool can use this phone.`}),(0,W.jsx)(J,{deviceId:e?.id,serial:t,mode:c,selected:u,onModeChange:l,onSelectedChange:d,zh:a,disabled:v}),(0,W.jsx)(Y,{deviceId:e?.id,value:f,onChange:m,disabled:v,zh:a}),(0,W.jsxs)(`label`,{className:`flex min-h-11 cursor-pointer items-center gap-3 text-sm`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:h,onChange:e=>_(e.target.checked)}),a?`允许访问这台手机`:`Enable access to this phone`]}),S&&(0,W.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:S})]}),(0,W.jsxs)(`div`,{className:`mt-4 flex shrink-0 justify-end gap-2 border-t border-edge pt-4`,children:[(0,W.jsx)(p,{type:`button`,disabled:v,onClick:i,children:a?`取消`:`Cancel`}),(0,W.jsx)(p,{type:`submit`,variant:`primary`,disabled:v||!o.trim()||c===`selected`&&!u.length,children:v?a?`保存中…`:`Saving…`:a?`保存手机`:`Save phone`})]})]})]})]})})}function ce(){let e=d(e=>e.language)===`zh`,t=f(`phone-settings`,L),n=f(`phone-devices`,te,{refreshInterval:15e3}),r=f(`settings-agent-defaults`,_),i=r.data?.defaults.models.phoneUse?.primary??``,[a,c]=(0,U.useState)(i);(0,U.useEffect)(()=>{c(i)},[i]);let[l,u]=(0,U.useState)(!1),[h,g]=(0,U.useState)(``),[y,b]=(0,U.useState)(``),[S,C]=(0,U.useState)(!1),[w,E]=(0,U.useState)(),[D,ee]=(0,U.useState)(``),[j,P]=(0,U.useState)(``),[F,R]=(0,U.useState)(``),[B,ne]=(0,U.useState)(()=>sessionStorage.getItem(`phone-settings-session`)??``),G=f(B?[`phone-session`,B]:null,()=>V(`/sessions/${B}`),{refreshInterval:1500}),[K,J]=(0,U.useState)(),[Y,ce]=(0,U.useState)({}),X=G.data,Z=X?.status===`running`,le=D||n.data?.defaultDeviceId||``,Q=i===I,$=async(e,t)=>{u(!0),g(``),b(``);try{await e(),t&&b(t)}catch(e){g(e instanceof Error?e.message:String(e))}finally{u(!1)}},ue=async e=>{let t=await _(),n={...t.defaults.models};e?n.phoneUse={primary:e,fallbacks:[]}:delete n.phoneUse;let i=await T({...t.defaults,models:n},{scope:`models`,expectedModels:t.defaults.models});await r.mutate(i,!1),c(e)},de=()=>$(async()=>{B&&X&&![`closed`,`cancelled`,`failed`,`outcome_unknown`].includes(X.status)&&await V(`/sessions/${B}/execute`,{op:`close`});let e=await V(`/sessions`,{deviceId:le,mode:`control`,...Q?{appPackage:`com.android.settings`}:{}});ne(e.id),sessionStorage.setItem(`phone-settings-session`,e.id),await V(`/sessions/${e.id}/execute`,Q?{op:`run`,scenario:`settings-about`,goal:z,maxActions:8}:{op:`run`,goal:j,...F?{expectText:F}:{},maxActions:6})}),fe=e=>$(async()=>{await V(`/sessions/${B}/execute`,{op:e}),await G.mutate()}),pe=async t=>{ce(n=>({...n,[t.id]:{pending:!0,text:e?`正在诊断…`:`Checking…`}}));try{let n=await V(`/devices/${t.id}/diagnostics`,{}),r=e?{device:`已连接`,disconnected:`未连接`,unauthorized:`未授权调试`,offline:`离线`}:{device:`Connected`,disconnected:`Disconnected`,unauthorized:`Debugging not authorized`,offline:`Offline`};ce(i=>({...i,[t.id]:{pending:!1,text:`${e?`诊断结果`:`Diagnostics`}:${r[n.state]??n.state}`}}))}catch(e){ce(n=>({...n,[t.id]:{pending:!1,error:!0,text:e instanceof Error?e.message:String(e)}}))}},me=e?{ready:`就绪`,running:`执行中`,paused:`已暂停`,needs_user:`等待人工处理`,completed:`执行结束`,cancelled:`已停止`,closed:`已关闭`,failed:`执行失败`,outcome_unknown:`结果待核查`}:{},he=!!(n.data?.devices.length&&n.data.devices.every(e=>e.connection));return(0,W.jsxs)(M,{gap:`gap-7`,children:[(0,W.jsx)(N,{title:(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[e?`手机控制`:`Phone Use`,(0,W.jsx)(k,{})]}),subtitle:e?`连接 Android 手机或模拟器,配置独立的手机操作模型。`:`Connect an Android phone or emulator and choose a dedicated phone model.`}),h&&(0,W.jsx)(`p`,{role:`alert`,className:`rounded-xl bg-danger-soft p-3 text-sm text-danger`,children:h}),y&&(0,W.jsx)(`p`,{role:`status`,className:`text-sm text-fg-muted`,children:y}),t.error&&(0,W.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:String(t.error)}),(0,W.jsxs)(`section`,{className:oe,"aria-label":e?`手机控制设置`:`Phone control settings`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold`,children:e?`启用手机控制`:`Enable Phone Use`}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:e?`执行位置:Gateway 所在电脑。远程浏览器不会连接你本机的 USB。`:`Runs on the Gateway host. A remote browser cannot access your local USB devices.`})]}),t.data?(0,W.jsx)(`input`,{type:`checkbox`,role:`switch`,"aria-checked":t.data.config.enabled,"aria-label":e?`启用手机控制`:`Enable Phone Use`,className:`size-5 shrink-0 accent-accent`,checked:t.data.config.enabled,disabled:l||Z,onChange:e=>{let n=e.target.checked;$(async()=>{await V(`/settings`,{...t.data.config,enabled:n},`PATCH`),await t.mutate()})}}):(0,W.jsx)(m,{className:`h-8 w-12`})]}),t.data&&(0,W.jsxs)(`details`,{className:`text-sm`,children:[(0,W.jsx)(`summary`,{className:`cursor-pointer text-fg-muted`,children:e?`执行限制`:`Execution limits`}),(0,W.jsxs)(`p`,{className:`mt-2 text-xs text-fg-muted`,children:[e?`每次小目标最多 12 步、${t.data.config.maxOperationDurationMs/1e3} 秒活跃执行时间;会话限制`:`Each goal: up to 12 actions / ${t.data.config.maxOperationDurationMs/1e3} active seconds. Session limits`,`: `,t.data.config.maxActionsPerSession,` `,e?`动作`:`actions`,` · `,t.data.config.maxModelRequests,` `,e?`模型请求`:`model requests`]})]})]}),(0,W.jsxs)(`section`,{"aria-label":e?`手机模型配置`:`Phone model configuration`,className:oe,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold`,children:e?`手机操作模型`:`Phone model`}),!r.data&&!r.error?(0,W.jsx)(m,{className:`h-44 w-full`}):(0,W.jsx)(ie,{value:i,onSelect:c,onSave:ue,zh:e,disabled:l||Z||!r.data}),r.error&&(0,W.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:String(r.error)}),(0,W.jsx)(`p`,{className:`text-xs leading-relaxed text-fg-muted`,children:e?`手机截图会发送给所选模型;页面摘要可能进入聊天模型。`:`Phone screenshots go to the selected model; page summaries may reach the chat model.`}),(0,W.jsx)(`div`,{className:`flex flex-wrap items-center gap-3`,children:(0,W.jsx)(p,{disabled:l||!a,onClick:()=>{$(async()=>{let t=await V(`/models/diagnostics`,{modelRef:a});b(t.mock?e?`模拟适配器可用;此测试不验证真实模型。`:`Mock adapter ready; this does not validate a real model.`:t.groundingVerified?e?`模型连接、动作协议和测试图定位通过;未操作真实手机。`:`Connection, protocol and test-image grounding passed. No phone was operated.`:e?`动作协议有效,但测试图定位未通过。`:`Protocol valid, but test-image grounding did not pass.`)})},children:e?`测试模型连接`:`Test model connection`})})]}),(0,W.jsx)(H,{cloudOnly:he,onChanged:()=>{n.mutate(),t.mutate()}}),(0,W.jsxs)(`section`,{className:`space-y-3`,"aria-label":e?`手机管理`:`Phone management`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold`,children:e?`手机管理`:`Phones`}),(0,W.jsx)(p,{disabled:l,onClick:()=>C(!0),children:e?`添加手机`:`Add phone`}),(0,W.jsxs)(p,{disabled:l||n.isValidating,onClick:()=>{$(()=>n.mutate())},children:[(0,W.jsx)(x,{className:`size-4`}),e?`刷新设备`:`Refresh devices`]})]}),!n.data&&!n.error?(0,W.jsx)(m,{className:`h-32 w-full rounded-xl`}):(0,W.jsxs)(`div`,{className:oe,children:[(n.error||!he&&n.data?.diagnostic)&&(0,W.jsxs)(`p`,{role:`alert`,className:`text-sm text-danger`,children:[n.data?.diagnostic??String(n.error),` · `,e?`检查 Gateway 电脑的 Android SDK 与 ADB。`:`Check Android SDK and ADB on the Gateway host.`]}),n.data?.devices.map(t=>(0,W.jsxs)(`div`,{className:`space-y-3 border-b border-edge-subtle pb-4 last:border-b-0 last:pb-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,W.jsx)(O,{className:`mt-0.5 size-5 shrink-0 text-fg-muted`}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsxs)(`p`,{className:`break-words text-sm font-medium`,children:[t.name,t.id===n.data?.defaultDeviceId&&(0,W.jsx)(`span`,{className:`ml-2 text-xs text-fg-muted`,children:e?`默认`:`Default`})]}),(0,W.jsxs)(`p`,{className:`mt-1 break-all text-xs text-fg-muted`,children:[t.connection?`${e?`阿里云`:`Alibaba Cloud`} · ADB · `:``,t.serial,` · `,t.enabled?t.connection?e?`已配置 · 按需连接`:`Configured · Connects on demand`:n.data?.discovery.find(e=>e.serial===t.serial)?.state??(e?`离线`:`Disconnected`):e?`已禁用`:`Disabled`]})]})]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(p,{disabled:l,onClick:()=>E({device:t,serial:t.serial,name:t.name}),children:e?`管理`:`Manage`}),(0,W.jsx)(p,{disabled:l||Z,onClick:()=>{J(t)},children:e?`查看屏幕`:`View screen`}),(0,W.jsx)(p,{disabled:l||Y[t.id]?.pending,onClick:()=>{pe(t)},children:t.connection?e?`连接诊断`:`Connect & diagnose`:e?`诊断`:`Diagnose`}),t.id!==n.data?.defaultDeviceId&&(0,W.jsx)(p,{disabled:l,onClick:()=>{$(async()=>{await V(`/devices/${t.id}/default`,{}),await n.mutate()})},children:e?`设为默认`:`Set default`}),(0,W.jsx)(p,{variant:`ghost`,disabled:l,onClick:()=>{$(async()=>{await V(`/devices/${t.id}`,void 0,`DELETE`),await n.mutate()})},children:e?`移除连接`:`Remove connection`})]}),(0,W.jsx)(`p`,{role:`status`,"aria-live":`polite`,title:Y[t.id]?.text,className:`h-5 truncate text-xs leading-5 ${Y[t.id]?.error?`text-danger`:`text-fg-muted`}`,children:Y[t.id]?.text})]},t.id)),n.data?.discovery.filter(e=>!n.data?.devices.some(t=>t.serial===e.serial)).map(t=>(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-sm`,children:t.name}),(0,W.jsxs)(`p`,{className:`text-xs text-fg-muted`,children:[t.emulator?e?`Android 模拟器`:`Android emulator`:`Android`,` · `,t.state]})]}),(0,W.jsx)(p,{disabled:l||t.state!==`device`,onClick:()=>E({serial:t.serial,name:t.name}),children:e?`添加手机`:`Add phone`})]},t.serial)),!n.data?.devices.length&&!n.data?.discovery.length&&(0,W.jsx)(`p`,{className:`py-3 text-sm text-fg-muted`,children:e?`尚未发现设备。先启动 Android 模拟器,或通过 USB 连接手机并允许调试。`:`No devices found. Start an Android emulator, or connect a phone over USB and authorize debugging.`})]})]}),(0,W.jsxs)(`section`,{className:oe,"aria-label":e?`手机试运行`:`Phone test run`,children:[(0,W.jsxs)(`h2`,{className:`flex items-center gap-2 text-sm font-semibold`,children:[(0,W.jsx)(A,{className:`size-4`}),e?`试运行`:`Test run`]}),(0,W.jsxs)(o,{"aria-label":e?`测试手机`:`Test phone`,value:le,disabled:l||Z,onChange:e=>ee(e.target.value),children:[(0,W.jsx)(s,{value:``,children:e?`选择手机`:`Choose phone`}),n.data?.devices.filter(e=>e.enabled).map(e=>(0,W.jsx)(s,{value:e.id,children:e.name},e.id))]}),Q?(0,W.jsx)(`p`,{className:`text-sm text-fg-muted`,children:e?`固定测试:打开系统设置,进入关于手机,并通过界面文字验证结果。这是模拟模型,不是 AI 推理。`:`Fixed test: open Settings, navigate to About phone and verify native UI evidence. This is a scripted mock, not AI inference.`}):(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`label`,{className:`block space-y-1.5 text-sm`,children:[e?`本次授权的小目标`:`Authorized goal`,(0,W.jsx)(`textarea`,{className:ae,value:j,maxLength:2e3,onChange:e=>P(e.target.value)})]}),(0,W.jsxs)(`label`,{className:`block space-y-1.5 text-sm`,children:[e?`完成时应显示的文字(可选)`:`Expected completion text (optional)`,(0,W.jsx)(`input`,{className:ae,value:F,maxLength:200,onChange:e=>R(e.target.value)})]}),(0,W.jsx)(`p`,{className:`text-xs text-fg-muted`,children:e?`先手动打开允许的应用。模型说完成只表示执行结束,只有匹配界面证据才会显示验证通过。`:`First open an allowed app manually. A model completion claim remains unverified until native UI evidence matches.`})]}),(0,W.jsxs)(p,{variant:`primary`,disabled:l||Z||!t.data?.config.enabled||!i||a!==i||!le||!Q&&!j.trim(),onClick:()=>{de()},children:[(0,W.jsx)(v,{className:`size-4`}),Q?e?`运行模拟测试`:`Run mock test`:e?`开始试运行`:`Start test run`]}),G.error&&(0,W.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:String(G.error)}),X&&(0,W.jsxs)(`div`,{className:`space-y-3 rounded-xl border border-edge bg-surface-inset p-4`,"aria-live":`polite`,children:[(0,W.jsxs)(`p`,{className:`text-sm font-medium`,children:[X.deviceName,` · `,me[X.status]??X.status]}),(0,W.jsxs)(`p`,{className:`text-xs text-fg-muted`,children:[X.actions,` `,e?`动作`:`actions`,` · `,X.modelRequests,` `,e?`模型请求`:`model requests`,` · `,X.verified?e?`界面条件已验证`:`UI condition verified`:e?`尚未验证完成`:`Completion unverified`]}),X.message&&(0,W.jsx)(`p`,{className:`text-sm text-fg-muted`,children:X.message}),(X.errorCode||X.stopReason)&&(0,W.jsx)(`p`,{className:`break-all text-xs text-fg-muted`,children:X.errorCode??X.stopReason}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(p,{disabled:l||!Z,onClick:()=>{fe(`pause`)},children:e?`暂停`:`Pause`}),(0,W.jsx)(p,{disabled:l||![`paused`,`needs_user`].includes(X.status),onClick:()=>{fe(`resume`)},children:e?`恢复`:`Resume`}),(0,W.jsx)(p,{disabled:l||[`closed`,`cancelled`].includes(X.status),onClick:()=>{fe(`cancel`)},children:e?`停止`:`Stop`}),(0,W.jsx)(p,{disabled:l,onClick:()=>{fe(`close`)},children:e?`释放手机`:`Release phone`}),X.status===`ready`&&(0,W.jsx)(p,{disabled:l,onClick:()=>{$(async()=>{await V(`/sessions/${B}/execute`,Q?{op:`run`,scenario:`settings-about`,goal:`Open Android Settings and inspect About phone`,maxActions:8}:{op:`run`,goal:j,...F?{expectText:F}:{}}),await G.mutate()})},children:e?`继续当前目标`:`Continue goal`})]}),X.facts?.length?(0,W.jsxs)(`details`,{children:[(0,W.jsx)(`summary`,{className:`cursor-pointer text-xs text-fg-muted`,children:e?`本次观察到的界面文字`:`Observed UI text`}),(0,W.jsx)(`ul`,{className:`mt-2 max-h-52 space-y-1 overflow-auto text-xs text-fg-muted`,children:X.facts.map((e,t)=>(0,W.jsx)(`li`,{className:`break-words`,children:e},t))})]}):null]})]}),K&&(0,W.jsx)(q,{device:K,sessionId:X?.deviceId===K.id&&![`closed`,`cancelled`,`failed`,`outcome_unknown`].includes(X.status)?B:void 0,zh:e,onClose:()=>J(void 0)}),S&&(0,W.jsx)(re,{onAdded:()=>{n.mutate()},zh:e,onClose:()=>C(!1),onSelect:e=>{C(!1),E({serial:e.serial,name:e.name})}}),w&&t.data&&(0,W.jsx)(se,{...w,zh:e,onSave:async()=>{await n.mutate()},onClose:()=>E(void 0)})]})}export{ce as PhoneSettingsPage};
@@ -1 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./chunk-KS7C4IRE-BvcCCgTW.js";import{i as ee,n as a,o}from"./locale-store-B7s2Hb35.js";import{a as s,i as te}from"./vendor-swr-BIWyz7Rc.js";import{t as c}from"./button-aIC072nz.js";import{t as l}from"./skeleton-BI5TyibZ.js";import{Bc as u,F as d,Hc as f,I as p,Ic as ne,Jc as re,Lc as m,P as h,Rc as ie,Vc as ae,nu as oe,z as se,zc as ce}from"./index-Bys6njTY.js";import{n as g,t as le}from"./plugin-presentation-CO5BFDGW.js";var _=n(),v=e(t(),1),y=r();function b(e){let t=(0,_.c)(61),{pluginId:n,initialConnect:r,onClose:b}=e,S=r===void 0?!1:r,C=a(x).startsWith(`zh`),{mutate:w}=s(),[ue,T]=(0,v.useState)(!1),E=(0,v.useRef)(document.activeElement instanceof HTMLElement?document.activeElement:null),D;t[0]===n?D=t[1]:(D=async()=>{let e=await o(ee(`/api/extensions/agent-plugins/${encodeURIComponent(n)}`));if(!e.ok)throw Error(e.error??`Plugin not found`);return e.payload},t[0]=n,t[1]=D);let O;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(O={revalidateOnFocus:!0},t[2]=O):O=t[2];let{data:k,error:A,mutate:j}=te(`plugin-details:${n}`,D,O),M=k?g(k,C):C?`插件详情`:`Plugin details`,N=k?.localizations?.[C?`zh-CN`:`en`]?.description??k?.description;if(ue&&k){let e;t[3]!==j||t[4]!==T?(e=()=>{T(!1),j()},t[3]=j,t[4]=T,t[5]=e):e=t[5];let n;return t[6]!==k||t[7]!==b||t[8]!==e?(n=(0,y.jsx)(h,{extension:k,onUninstalled:b,onClose:e}),t[6]=k,t[7]=b,t[8]=e,t[9]=n):n=t[9],n}let P;t[10]===b?P=t[11]:(P=e=>{e||b()},t[10]=b,t[11]=P);let F;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,y.jsx)(u,{className:`xopc-dialog-overlay fixed inset-0 z-[130] bg-scrim`}),t[12]=F):F=t[12];let I;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(I=e=>{E.current?.isConnected&&(e.preventDefault(),E.current.focus({preventScroll:!0}))},t[13]=I):I=t[13];let L=k?.branding?.iconUrl,R;t[14]===L?R=t[15]:(R=(0,y.jsx)(d,{iconUrl:L,fallback:oe}),t[14]=L,t[15]=R);let z;t[16]===M?z=t[17]:(z=(0,y.jsx)(f,{className:`truncate text-base font-semibold text-fg`,children:M}),t[16]=M,t[17]=z);let B;t[18]===k?B=t[19]:(B=k?(0,y.jsxs)(`p`,{className:`mt-0.5 truncate text-xs text-fg-muted`,children:[k.version,` · `,k.name]}):null,t[18]=k,t[19]=B);let V;t[20]!==B||t[21]!==z?(V=(0,y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[z,B]}),t[20]=B,t[21]=z,t[22]=V):V=t[22];let H=C?`关闭插件详情`:`Close plugin details`,U;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,y.jsx)(re,{className:`size-5`,"aria-hidden":!0}),t[23]=U):U=t[23];let W;t[24]===H?W=t[25]:(W=(0,y.jsx)(m,{asChild:!0,children:(0,y.jsx)(c,{variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":H,children:U})}),t[24]=H,t[25]=W);let G;t[26]!==V||t[27]!==W||t[28]!==R?(G=(0,y.jsxs)(`header`,{className:`flex shrink-0 items-center gap-3 border-b border-edge px-5 py-4`,children:[R,V,W]}),t[26]=V,t[27]=W,t[28]=R,t[29]=G):G=t[29];let K=C?`查看插件能力、管理账号连接与授权。关闭后返回原来的列表。`:`View plugin capabilities and manage account connections. Close to return to the list.`,q;t[30]===K?q=t[31]:(q=(0,y.jsx)(ce,{className:`sr-only`,children:K}),t[30]=K,t[31]=q);let J;t[32]!==k||t[33]!==N||t[34]!==A||t[35]!==S||t[36]!==w||t[37]!==b||t[38]!==n||t[39]!==j||t[40]!==C?(J=(0,y.jsx)(`div`,{className:`min-h-0 flex-1 space-y-5 overflow-y-auto p-5`,children:A?(0,y.jsx)(`p`,{role:`alert`,className:`text-sm text-fg-muted`,children:String(A)}):k?(0,y.jsxs)(y.Fragment,{children:[N?(0,y.jsx)(`p`,{className:`text-sm leading-relaxed text-fg-muted`,children:N}):null,(0,y.jsx)(p,{initialConnect:S,extension:k,zh:C,onChanged:async()=>{await j(),await w(`gateway-extensions-list`)}},n),k.components?.skills.length?(0,y.jsxs)(`section`,{className:`space-y-3 border-t border-edge pt-5`,children:[(0,y.jsx)(`h3`,{className:`text-sm font-medium`,children:C?`技能(${k.components.skills.length})`:`Skills (${k.components.skills.length})`}),(0,y.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:k.components.skills.map(e=>(0,y.jsx)(i,{onClick:b,to:`/capabilities/skills?${new URLSearchParams({tab:`installed`,source:`plugin`,q:k.dialect===`portable`?e.name:`${n}.${e.name}`})}`,className:`max-w-full break-words rounded-lg border border-edge px-3 py-2 text-sm text-accent hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:e.name},e.name))})]}):null]}):(0,y.jsxs)(`div`,{className:`space-y-4`,"aria-busy":`true`,children:[(0,y.jsx)(l,{className:`h-14 w-full`}),(0,y.jsx)(l,{className:`h-28 w-full`}),(0,y.jsx)(l,{className:`h-40 w-full`})]})}),t[32]=k,t[33]=N,t[34]=A,t[35]=S,t[36]=w,t[37]=b,t[38]=n,t[39]=j,t[40]=C,t[41]=J):J=t[41];let Y;t[42]!==k||t[43]!==T||t[44]!==C?(Y=k?(0,y.jsx)(c,{variant:`ghost`,onClick:()=>T(!0),children:C?`管理插件`:`Manage plugin`}):(0,y.jsx)(`span`,{}),t[42]=k,t[43]=T,t[44]=C,t[45]=Y):Y=t[45];let X;t[46]!==k||t[47]!==M||t[48]!==C?(X=k&&le(k)?(0,y.jsx)(c,{asChild:!0,children:(0,y.jsx)(i,{to:se(M,C),children:C?`开始使用`:`Start using`})}):(0,y.jsx)(m,{asChild:!0,children:(0,y.jsx)(c,{variant:`secondary`,children:C?`完成`:`Done`})}),t[46]=k,t[47]=M,t[48]=C,t[49]=X):X=t[49];let Z;t[50]!==Y||t[51]!==X?(Z=(0,y.jsxs)(`footer`,{className:`flex shrink-0 flex-wrap items-center justify-between gap-3 border-t border-edge px-5 py-4`,children:[Y,X]}),t[50]=Y,t[51]=X,t[52]=Z):Z=t[52];let Q;t[53]!==G||t[54]!==q||t[55]!==J||t[56]!==Z?(Q=(0,y.jsxs)(ae,{children:[F,(0,y.jsxs)(ie,{onCloseAutoFocus:I,className:`xopc-dialog-content fixed left-1/2 top-1/2 z-[131] flex h-[min(38rem,calc(100dvh-2rem))] w-[min(42rem,calc(100vw-1.5rem))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-xl border border-edge bg-surface-overlay shadow-popover`,children:[G,q,J,Z]})]}),t[53]=G,t[54]=q,t[55]=J,t[56]=Z,t[57]=Q):Q=t[57];let $;return t[58]!==Q||t[59]!==P?($=(0,y.jsx)(ne,{open:!0,onOpenChange:P,children:Q}),t[58]=Q,t[59]=P,t[60]=$):$=t[60],$}function x(e){return e.language}export{b as PluginDetailsDialog};
@@ -1 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./createLucideIcon-DPHK1VkS.js";import{t as a}from"./check-DUBLcKHA.js";import{t as o}from"./cn-0WouolD0.js";import{t as s}from"./skeleton-BI5TyibZ.js";import{a as c,i as l,o as u,s as d}from"./dist-C3DSFZCi.js";import{a as f,s as p,t as m}from"./settings-shell-dialog-layer-BU3UuiJr.js";var h=i(`chevrons-up-down`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]),g=e(t(),1),_=n();function v(e,t=!1){if(!t)return m;switch(e){case`modal`:return f;case`page`:return p;default:return`z-50`}}var y=r(),b=(0,g.createContext)({layer:`default`,portalContainer:null});function x(e,t){return e===`modal`||t===`modal`?`modal`:e===`page`||t===`page`?`page`:`default`}function S(e){let t=(0,_.c)(9),{layer:n,portalContainer:r,children:i}=e,a=(0,g.useContext)(b),o;t[0]!==n||t[1]!==a.layer?(o=x(a.layer,n),t[0]=n,t[1]=a.layer,t[2]=o):o=t[2];let s=o,c=r??a.portalContainer,l;t[3]!==s||t[4]!==c?(l={layer:s,portalContainer:c},t[3]=s,t[4]=c,t[5]=l):l=t[5];let u;return t[6]!==i||t[7]!==l?(u=(0,y.jsx)(b.Provider,{value:l,children:i}),t[6]=i,t[7]=l,t[8]=u):u=t[8],u}function C(){return(0,g.useContext)(b).layer}function w(){return(0,g.useContext)(b).portalContainer}function T(e){let t=(0,_.c)(3),n=w(),r;return t[0]!==n||t[1]!==e?(r=e?.closest(`[role="dialog"]`)??n,t[0]=n,t[1]=e,t[2]=r):r=t[2],r}function E(e){let t=(0,_.c)(14),{options:n,values:r,multiple:i,onChange:a,ariaLabel:s}=e,c=i===void 0?!1:i,l=(0,g.useId)(),u;if(t[0]!==c||t[1]!==l||t[2]!==a||t[3]!==n||t[4]!==r){let e;t[6]!==c||t[7]!==l||t[8]!==a||t[9]!==r?(e=e=>(0,y.jsxs)(`label`,{className:o(`touch-target flex min-h-10 min-w-0 items-center gap-3 rounded-md px-2 py-2 text-sm text-fg has-focus-visible:ring-2 has-focus-visible:ring-accent`,e.disabled?`cursor-not-allowed opacity-50`:`cursor-pointer hover:bg-surface-hover`),children:[(0,y.jsx)(`input`,{type:c?`checkbox`:`radio`,name:l,value:e.value,checked:r.includes(e.value),disabled:e.disabled,className:`shrink-0 accent-accent`,onChange:t=>a(c?t.target.checked?[...r,e.value]:r.filter(t=>t!==e.value):[e.value])}),e.icon,(0,y.jsx)(`span`,{className:`min-w-0 flex-1 break-words`,children:e.label})]},e.value),t[6]=c,t[7]=l,t[8]=a,t[9]=r,t[10]=e):e=t[10],u=n.map(e),t[0]=c,t[1]=l,t[2]=a,t[3]=n,t[4]=r,t[5]=u}else u=t[5];let d;return t[11]!==s||t[12]!==u?(d=(0,y.jsx)(`fieldset`,{"aria-label":s,className:`min-w-0 space-y-0.5`,children:u}),t[11]=s,t[12]=u,t[13]=d):d=t[13],d}var D=`flex max-h-[min(20rem,var(--radix-popover-content-available-height))] flex-col overflow-hidden`,O=`min-h-0 flex-1 overflow-y-auto overscroll-y-contain touch-pan-y [scrollbar-gutter:stable]`;function k({value:e,options:t,placeholder:n,allowEmpty:r=!0,emptyLabel:i=n,emptyDisabled:f=!1,disabledValues:p,disabled:m,id:_,ariaLabel:b,ariaLabelledBy:x,title:S,triggerClassName:w,triggerIcon:E,contentClassName:k,side:A=`bottom`,align:j=`start`,onChange:M,searchPlaceholder:N,searchValue:P,onSearchChange:F,loading:I=!1,statusMessage:L,selectedLabel:R}){let[z,B]=(0,g.useState)(!1),[V,H]=(0,g.useState)(null),U=C(),W=T(V),G=v(U,W!==null),K=t.find(t=>t.value===e),q=R??K?.label??(e?`${e} · unavailable`:n),J;return(0,y.jsxs)(u,{open:z,onOpenChange:B,children:[(0,y.jsx)(d,{asChild:!0,children:(0,y.jsxs)(`button`,{ref:H,id:_,type:`button`,"aria-label":b,"aria-labelledby":x,title:S,disabled:m,className:o(`touch-target box-border flex h-10 w-full min-w-0 items-center justify-between gap-2 rounded-lg border border-edge bg-surface-inset px-3 text-left text-sm font-normal text-fg`,`hover:border-edge-strong focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,m&&`cursor-not-allowed opacity-50 hover:border-edge`,w),children:[E,(0,y.jsx)(`span`,{className:o(`min-w-0 truncate`,!e&&`text-fg-subtle`),children:q}),(0,y.jsx)(h,{className:`size-4 shrink-0 text-fg-subtle`,"aria-hidden":`true`})]})}),(0,y.jsx)(c,{container:W??void 0,children:(0,y.jsxs)(l,{side:A,align:j,sideOffset:4,collisionPadding:8,className:o(G,D,`w-[var(--radix-popover-trigger-width)] min-w-[16rem] rounded-lg border border-edge bg-surface-overlay p-1 shadow-popover outline-none`,k),children:[N?(0,y.jsx)(`input`,{type:`search`,"aria-label":N,placeholder:N,value:P,onChange:e=>F?.(e.target.value),className:`mb-1 w-full shrink-0 rounded-md bg-surface-base px-3 py-2 text-base text-fg placeholder:text-fg-subtle sm:text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`}):null,(0,y.jsxs)(`div`,{"data-select-scroll-region":!0,className:o(O,`max-h-64`),children:[r?(0,y.jsxs)(`button`,{type:`button`,disabled:f,className:o(`touch-target flex h-9 w-full items-center gap-2 rounded-md px-2 text-left text-sm text-fg hover:bg-surface-hover`,e===``&&`bg-surface-active font-medium`,f&&`cursor-not-allowed opacity-45 hover:bg-transparent`),onClick:()=>{f||(M(``),B(!1))},children:[(0,y.jsx)(a,{className:o(`size-4 shrink-0`,e!==``&&`invisible`),"aria-hidden":`true`}),(0,y.jsx)(`span`,{className:`min-w-0 truncate text-fg-subtle`,children:i})]}):null,I?(0,y.jsx)(`div`,{className:`space-y-2 p-2`,"aria-busy":`true`,children:[0,1,2].map(e=>(0,y.jsx)(s,{className:`h-8 w-full`},e))}):null,L&&!I?(0,y.jsx)(`p`,{role:`status`,className:`px-3 py-2 text-xs text-fg-muted`,children:L}):null,(I?[]:t).map(t=>{let n=t.disabled===!0||p?.has(t.value)===!0&&t.value!==e,r=t.group&&t.group!==J;return J=t.group,(0,y.jsxs)(g.Fragment,{children:[r?(0,y.jsx)(`div`,{className:`px-2 pb-1 pt-2 text-[11px] font-semibold uppercase tracking-wide text-fg-subtle`,children:t.group}):null,(0,y.jsxs)(`button`,{type:`button`,disabled:n,className:o(`touch-target flex h-9 w-full items-center gap-2 rounded-md px-2 text-left text-sm text-fg hover:bg-surface-hover`,t.value===e&&`bg-surface-active font-medium`,n&&`cursor-not-allowed opacity-45 hover:bg-transparent`),onClick:()=>{n||(M(t.value),B(!1))},children:[t.icon??(0,y.jsx)(a,{className:o(`size-4 shrink-0`,t.value!==e&&`invisible`),"aria-hidden":`true`}),(0,y.jsx)(`span`,{className:`min-w-0 truncate`,children:t.label}),t.icon?(0,y.jsx)(a,{className:o(`ml-auto size-4 shrink-0`,t.value!==e&&`invisible`),"aria-hidden":!0}):null]})]},`${t.group??``}:${t.value}`)})]})]})})]})}function A(e){return typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(A).join(``):(0,g.isValidElement)(e)?A(e.props.children):``}function j(e,t){let n=[];return g.Children.forEach(e,e=>{if(!(0,g.isValidElement)(e))return;if(e.type===g.Fragment){n.push(...j(e.props.children,t));return}if(e.type===N){let t=e.props;n.push(...j(t.children,A(t.label)));return}if(e.type!==M)return;let r=e.props,i=A(r.children).trim(),a=r.value==null?i:String(r.value);n.push({value:a,label:i,disabled:r.disabled,group:t})}),n}function M(e){return null}function N(e){return null}function P(e){if(!e)return;let t=e.split(/\s+/).filter(Boolean).filter(e=>{let t=e.includes(`:`)?e.slice(e.lastIndexOf(`:`)+1):e;return t===`block`||t===`inline-block`||t===`inline-flex`||t===`flex`||t===`flex-1`||t===`flex-auto`||t===`flex-initial`||t===`flex-none`||t===`grow`||t===`shrink`||t===`min-w-0`||t===`min-h-0`||t.startsWith(`w-`)||t.startsWith(`min-w-`)||t.startsWith(`max-w-`)||t.startsWith(`basis-`)||t.startsWith(`grow-`)||t.startsWith(`shrink-`)||t.startsWith(`self-`)||t.startsWith(`order-`)||t.startsWith(`col-`)||t.startsWith(`row-`)});return t.length===0?void 0:t.join(` `)}function F(e){let t=(0,_.c)(66),n,r,i,a,s,c,l,u,d,f,p,m;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],s=t[5],c=t[6],l=t[7],u=t[8],d=t[9],f=t[10],p=t[11],m=t[12]):({align:n,children:r,className:i,contentClassName:a,disabled:s,id:c,onChange:l,placeholder:u,side:f,triggerClassName:p,value:m,...d}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=s,t[6]=c,t[7]=l,t[8]=u,t[9]=d,t[10]=f,t[11]=p,t[12]=m);let h=(0,g.useId)(),v=m==null?``:String(m),b,x,S,C,w,T,E,D,O,A;if(t[13]!==r||t[14]!==i||t[15]!==s||t[16]!==h||t[17]!==c||t[18]!==u||t[19]!==d.name||t[20]!==v){let e=j(r);C=e.find(L),x=C!==void 0,S=C?.label||u||``,D=s||void 0,t[31]===i?O=t[32]:(O=P(i),t[31]=i,t[32]=O),A=d.name,b=k,w=c??h,T=v,E=e.filter(I),t[13]=r,t[14]=i,t[15]=s,t[16]=h,t[17]=c,t[18]=u,t[19]=d.name,t[20]=v,t[21]=b,t[22]=x,t[23]=S,t[24]=C,t[25]=w,t[26]=T,t[27]=E,t[28]=D,t[29]=O,t[30]=A}else b=t[21],x=t[22],S=t[23],C=t[24],w=t[25],T=t[26],E=t[27],D=t[28],O=t[29],A=t[30];let M=u??S,N=C?.disabled===!0,F=d[`aria-label`],R=d[`aria-labelledby`],z=d.title,B;t[33]!==i||t[34]!==p?(B=o(i,p),t[33]=i,t[34]=p,t[35]=B):B=t[35];let V;t[36]===l?V=t[37]:(V=e=>l?.({target:{value:e},currentTarget:{value:e}}),t[36]=l,t[37]=V);let H;t[38]!==b||t[39]!==n||t[40]!==x||t[41]!==a||t[42]!==s||t[43]!==S||t[44]!==d.title||t[45]!==f||t[46]!==w||t[47]!==R||t[48]!==B||t[49]!==V||t[50]!==T||t[51]!==E||t[52]!==M||t[53]!==N||t[54]!==F?(H=(0,y.jsx)(b,{id:w,value:T,options:E,placeholder:M,allowEmpty:x,emptyLabel:S,emptyDisabled:N,disabled:s,ariaLabel:F,ariaLabelledBy:R,title:z,side:f,align:n,triggerClassName:B,contentClassName:a,onChange:V}),t[38]=b,t[39]=n,t[40]=x,t[41]=a,t[42]=s,t[43]=S,t[44]=d.title,t[45]=f,t[46]=w,t[47]=R,t[48]=B,t[49]=V,t[50]=T,t[51]=E,t[52]=M,t[53]=N,t[54]=F,t[55]=H):H=t[55];let U;t[56]!==s||t[57]!==d.name||t[58]!==v?(U=(0,y.jsx)(`input`,{name:d.name,value:v,readOnly:!0,hidden:!0,disabled:s}),t[56]=s,t[57]=d.name,t[58]=v,t[59]=U):U=t[59];let W;return t[60]!==H||t[61]!==U||t[62]!==D||t[63]!==O||t[64]!==A?(W=(0,y.jsxs)(`div`,{"aria-disabled":D,className:O,"data-select-name":A,children:[H,U]}),t[60]=H,t[61]=U,t[62]=D,t[63]=O,t[64]=A,t[65]=W):W=t[65],W}function I(e){return e.value!==``}function L(e){return e.value===``}export{D as a,T as c,h as d,E as i,C as l,F as n,O as o,M as r,S as s,k as t,v as u};
@@ -1 +0,0 @@
1
- var e=`modulepreload`,t=function(e){return`/`+e},n={},r=function(r,i,a){let o=Promise.resolve();if(i&&i.length>0){let r=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}o=l(i.map(i=>{if(i=t(i,a),i in n)return;n[i]=!0;let o=i.endsWith(`.css`),s=o?`[rel="stylesheet"]`:``;if(a)for(let e=r.length-1;e>=0;e--){let t=r[e];if(t.href===i&&(!o||t.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${i}"]${s}`))return;let l=document.createElement(`link`);if(l.rel=o?`stylesheet`:e,o||(l.as=`script`),l.crossOrigin=``,l.href=i,c&&l.setAttribute(`nonce`,c),document.head.appendChild(l),o)return new Promise((e,t)=>{l.addEventListener(`load`,e),l.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(e=>{for(let t of e||[])t.status===`rejected`&&s(t.reason);return r().catch(s)})};export{r as t};
@@ -1 +0,0 @@
1
- import{n as e,t}from"./vendor-react-BOUWij0V.js";import{t as n}from"./download-Dk-ZjtO6.js";import{t as r}from"./external-link-DjqjBmc3.js";import{t as i}from"./cn-0WouolD0.js";import{n as a}from"./electron-env-Dit0bHgy.js";import{As as o}from"./index-Bys6njTY.js";var s=e(),c=t();function l(e){let t=(0,s.c)(31),{message:l,downloadLabel:u,onDownload:d,openSystemLabel:f,onOpenWithSystemApp:p,chooseAppLabel:m,onChooseOpenWithApp:h,canOpenWithSystemApp:g,canChooseOpenWithApp:_}=e,v=g===void 0?!0:g,y=_===void 0?!0:_,b;t[0]!==v||t[1]!==p||t[2]!==f?(b=a()&&v&&typeof p==`function`&&typeof f==`string`&&f.length>0,t[0]=v,t[1]=p,t[2]=f,t[3]=b):b=t[3];let x=b,S;t[4]!==y||t[5]!==m||t[6]!==h?(S=a()&&y&&typeof h==`function`&&typeof m==`string`&&m.length>0,t[4]=y,t[5]=m,t[6]=h,t[7]=S):S=t[7];let C=S,w;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(w=i(`flex flex-col gap-2 rounded-lg border border-edge-subtle bg-surface-hover/60 p-3 sm:flex-row sm:items-center sm:justify-between dark:border-edge`),t[8]=w):w=t[8];let T;t[9]===l?T=t[10]:(T=(0,c.jsx)(`p`,{className:`min-w-0 text-xs leading-relaxed text-fg-muted`,children:l}),t[9]=l,t[10]=T);let E;t[11]!==p||t[12]!==f||t[13]!==x?(E=x?(0,c.jsxs)(`button`,{type:`button`,className:i(`inline-flex items-center gap-1.5 rounded-md border border-edge bg-surface-panel px-3 py-1.5 text-xs font-medium text-fg shadow-sm dark:border-edge`,o.transition,o.press,o.focusRingPanel),onClick:()=>void p?.(),children:[(0,c.jsx)(r,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),f]}):null,t[11]=p,t[12]=f,t[13]=x,t[14]=E):E=t[14];let D;t[15]!==m||t[16]!==h||t[17]!==C?(D=C?(0,c.jsxs)(`button`,{type:`button`,className:i(`inline-flex items-center gap-1.5 rounded-md border border-edge bg-surface-panel px-3 py-1.5 text-xs font-medium text-fg shadow-sm dark:border-edge`,o.transition,o.press,o.focusRingPanel),onClick:()=>void h?.(),children:[(0,c.jsx)(r,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),m]}):null,t[15]=m,t[16]=h,t[17]=C,t[18]=D):D=t[18];let O;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(O=i(`inline-flex items-center gap-1.5 rounded-md border border-accent bg-accent px-3 py-1.5 text-xs font-medium text-on-accent shadow-sm`,o.transition,o.press,o.focusRingPanel),t[19]=O):O=t[19];let k;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,c.jsx)(n,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),t[20]=k):k=t[20];let A;t[21]!==u||t[22]!==d?(A=(0,c.jsxs)(`button`,{type:`button`,className:O,onClick:d,children:[k,u]}),t[21]=u,t[22]=d,t[23]=A):A=t[23];let j;t[24]!==A||t[25]!==E||t[26]!==D?(j=(0,c.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center gap-2`,children:[E,D,A]}),t[24]=A,t[25]=E,t[26]=D,t[27]=j):j=t[27];let M;return t[28]!==j||t[29]!==T?(M=(0,c.jsxs)(`div`,{className:w,children:[T,j]}),t[28]=j,t[29]=T,t[30]=M):M=t[30],M}export{l as t};
@@ -1 +0,0 @@
1
- import{a as e,f as t,i as n,l as r,p as i,r as a,s as o,t as s,u as c}from"./schemas-CObaziC7.js";import{r as l}from"./local-apps-yys1VChX.js";var u=256*1024,d=`xopc-chat-preview`,f=i().regex(/^[a-f0-9]{64}$/),p=t({markup:i().max(128*1024),styles:i().max(128*1024).default(``),script:i().max(128*1024).default(``)}).refine(e=>e.markup.length+e.styles.length+e.script.length<=u,`Preview source exceeds the 256 KiB limit`).refine(e=>!/<\/?(?:html|head|body|script|style)\b/i.test(e.markup),`Preview markup must be an HTML fragment; put CSS and JavaScript in their dedicated fields`);t({id:i().uuid(),conversationId:i().uuid(),title:i().trim().min(1).max(120),preferredHeight:r().int().min(240).max(720),latestRevision:f,createdAt:r().int().nonnegative(),updatedAt:r().int().nonnegative()}),p.extend({previewId:i().uuid(),sourceHash:f,createdAt:r().int().nonnegative()}),p.extend({title:i().trim().min(1).max(120),preferredHeight:r().int().min(240).max(720).default(480)}),p.extend({baseRevision:f,title:i().trim().min(1).max(120).optional(),preferredHeight:r().int().min(240).max(720).optional()});var m=t({kind:s([`script_error`,`unhandled_rejection`]),message:i().trim().min(1).max(500),filename:i().max(500).optional(),line:r().int().nonnegative().optional(),column:r().int().nonnegative().optional()});t({sourceHash:f,diagnostics:a(m).min(1).max(20),locale:s([`en`,`zh`]).default(`en`)}),t({previewId:i().uuid(),sourceHash:f,prompt:i().min(1)});var h=t({source:o(d),version:o(1),channel:i().uuid()}),g=e(`type`,[h.extend({type:o(`ready`)}),h.extend({type:o(`resize`),height:r().finite().min(120).max(2e3)}),h.extend({type:o(`error`),diagnostic:m})]),_=s([`task`,`project`,`note`,`automation`,`local_app`,`chat_preview`,`file`,`session`,`settings`]),v=s([`open`,`preview`,`edit`,`continue_in_chat`,`fix`,`run`,`pause`,`resume`,`share`,`reveal`,`configure`]),y=c({kind:_,id:i().min(1),title:i().min(1),summary:i().optional(),status:i().optional(),revision:i().optional(),projectId:i().optional(),capabilities:a(v).default([])}),b=s([`created`,`updated`,`opened`,`started`,`completed`,`failed`]),x=e(`kind`,[c({kind:o(`table`),items:a(y).max(50),truncated:n()}),c({kind:o(`diff`),title:i().max(2e3),truncated:n(),edits:a(c({from:r().int().nonnegative(),to:r().int().nonnegative(),text:i().max(16e3)}).refine(e=>e.to>=e.from,`Invalid replacement range`)).max(20).refine(e=>e.reduce((e,t)=>e+t.text.length,0)<=16e3,`Replacement text exceeds preview limit`)}),c({kind:o(`inline_app`),reference:y.refine(e=>e.kind===`local_app`,`Inline app must reference a local app`),snapshot:t({sourceHash:l}),preferredHeight:r().int().min(240).max(720).default(480)}).refine(e=>!e.reference.revision||e.reference.revision===e.snapshot.sourceHash,{message:`Inline app reference revision must match its snapshot`,path:[`reference`,`revision`]}),c({kind:o(`inline_preview`),reference:y.refine(e=>e.kind===`chat_preview`,`Inline preview must reference a chat preview`),sourceHash:f,preferredHeight:r().int().min(240).max(720).default(480)}).refine(e=>!e.reference.revision||e.reference.revision===e.sourceHash,{message:`Inline preview reference revision must match its source`,path:[`reference`,`revision`]})]),S=c({version:o(2),operation:b,primary:y.optional(),related:a(y).optional(),presentation:x.optional()});function C(e){let t=S.safeParse(e);return t.success?t.data:null}var w=`xopc-product-delivery:`;function T(e){let t=e.split(/\s+/).find(e=>e.startsWith(w));if(!t)return null;try{return C(JSON.parse(decodeURIComponent(t.slice(22))))}catch{return null}}function E(e){let t=encodeURIComponent(e.id);switch(e.kind){case`task`:return`/tasks/${t}`;case`project`:return`/projects/${t}`;case`note`:return`/notes/${t}`;case`automation`:return`/automations?automation=${t}`;case`local_app`:return`/local-apps/${t}`;case`chat_preview`:return null;case`session`:return`/chat/${t}`;case`settings`:return`/settings/${e.id.replace(/^\/+/,``).split(`/`).map(encodeURIComponent).join(`/`)}`;case`file`:return null}}function D(e){return e.kind===`local_app`?`/open?${new URLSearchParams({kind:e.kind,id:e.id}).toString()}`:E(e)}function O(e){try{let t=new URL(e);if(t.protocol!==`xopc:`||t.hostname!==`open`)return null;let n=_.safeParse(t.searchParams.get(`kind`)),r=t.searchParams.get(`id`)?.trim()||(n.success&&n.data===`session`?t.searchParams.get(`key`)?.trim():void 0);return n.success&&r?{kind:n.data,id:r}:null}catch{return null}}export{E as a,D as i,T as n,d as o,O as r,g as s,C as t};
@@ -1 +0,0 @@
1
- import{n as e,t}from"./vendor-react-BOUWij0V.js";import{l as n,r,t as i}from"./chunk-KS7C4IRE-BvcCCgTW.js";import{n as a}from"./locale-store-B7s2Hb35.js";import{a as o,r as s}from"./product-delivery-BqNm-8S5.js";import{i as c}from"./vendor-swr-BIWyz7Rc.js";import{t as l}from"./skeleton-BI5TyibZ.js";import{kr as u}from"./index-Bys6njTY.js";import{t as d}from"./open-route-MyZ2sB9C.js";var f=e(),p=t();function m(){let e=(0,f.c)(14),t=n(),i=a(h)===`zh`,m=s(`xopc://open${t.search}`),_=m?.kind===`local_app`?m.id:null,{data:v,error:y}=c(_?[`local-app-open`,_]:null,()=>u(_));if(!m){let t=i?`这个打开链接无效。`:`This open link is invalid.`,n;return e[0]!==t||e[1]!==i?(n=(0,p.jsx)(g,{message:t,zh:i}),e[0]=t,e[1]=i,e[2]=n):n=e[2],n}if(m.kind!==`local_app`){let t=o({...m,title:m.id,capabilities:[`open`]}),n;return e[3]!==t||e[4]!==i?(n=t?(0,p.jsx)(r,{to:t,replace:!0}):(0,p.jsx)(g,{message:i?`这个内容无法在应用中打开。`:`This content cannot be opened in the app.`,zh:i}),e[3]=t,e[4]=i,e[5]=n):n=e[5],n}if(y){let t=typeof y==`object`&&y&&`status`in y&&y.status===404?i?`找不到这个应用,它可能已被删除。`:`This app was not found and may have been deleted.`:y instanceof Error?y.message:i?`无法打开这个应用。`:`Unable to open this app.`,n;return e[6]!==t||e[7]!==i?(n=(0,p.jsx)(g,{message:t,zh:i}),e[6]=t,e[7]=i,e[8]=n):n=e[8],n}if(v){let t;e[9]===v?t=e[10]:(t=d(v),e[9]=v,e[10]=t);let n;return e[11]===t?n=e[12]:(n=(0,p.jsx)(r,{to:t,replace:!0}),e[11]=t,e[12]=n),n}let b;return e[13]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,p.jsxs)(`div`,{className:`flex w-full flex-col gap-4 px-3 py-6 sm:px-5 xl:px-6`,"aria-busy":!0,children:[(0,p.jsx)(l,{className:`h-6 w-48`}),(0,p.jsx)(l,{className:`h-32 rounded-xl`})]}),e[13]=b):b=e[13],b}function h(e){return e.language}function g(e){let t=(0,f.c)(7),{message:n,zh:r}=e,a;t[0]===n?a=t[1]:(a=(0,p.jsx)(`p`,{children:n}),t[0]=n,t[1]=a);let o=r?`查看应用`:`View apps`,s;t[2]===o?s=t[3]:(s=(0,p.jsx)(i,{className:`mt-3 inline-flex font-medium text-accent hover:underline`,to:`/local-apps`,children:o}),t[2]=o,t[3]=s);let c;return t[4]!==a||t[5]!==s?(c=(0,p.jsxs)(`div`,{className:`m-6 rounded-xl border border-danger/30 bg-danger-soft p-4 text-sm text-danger`,role:`alert`,children:[a,s]}),t[4]=a,t[5]=s,t[6]=c):c=t[6],c}export{m as ProductOpenPage};
@@ -1 +0,0 @@
1
- import{n as e,t}from"./vendor-react-BOUWij0V.js";import{t as n}from"./chunk-KS7C4IRE-BvcCCgTW.js";import{t as r}from"./messages-BYq0cPbn.js";import{i,l as a,n as o}from"./locale-store-B7s2Hb35.js";import{i as s}from"./vendor-swr-BIWyz7Rc.js";import{En as c,c as l,jr as u,ka as d,kr as f,lc as p}from"./index-Bys6njTY.js";import{i as m}from"./automation-display-BFN7zWBg.js";import{t as h}from"./open-route-MyZ2sB9C.js";var g=e(),_=t();async function v(e){switch(e.kind){case`project`:return{kind:e.kind,value:await d(e.id)};case`automation`:{let[t,n]=await Promise.all([l.list(),l.runs(5,e.id)]);return{kind:e.kind,value:t.automations.find(t=>t.id===e.id),runs:n.runs}}case`local_app`:{let t=await f(e.id),n=e.sourceHash?await u(e.id,e.sourceHash):void 0;return{kind:e.kind,value:t,previewUrl:n?.previewUrl||t.draftPreviewUrl}}}}var y={pending:[`等待中`,`Pending`],planned:[`计划中`,`Planned`],active:[`进行中`,`Active`],paused:[`已暂停`,`Paused`],completed:[`已完成`,`Completed`],cancelled:[`已取消`,`Cancelled`],archived:[`已归档`,`Archived`],queued:[`排队中`,`Queued`],running:[`运行中`,`Running`],succeeded:[`成功`,`Succeeded`],failed:[`失败`,`Failed`],timeout:[`超时`,`Timed out`],cancelling:[`取消中`,`Cancelling`],unknown:[`尚未评估`,`Not assessed`],on_track:[`进展正常`,`On track`],at_risk:[`存在风险`,`At risk`],off_track:[`偏离计划`,`Off track`]};function b(e){let t=(0,g.c)(95),{target:l}=e,u=a(T),d=o(w),f=d===`zh`,p=r(d),b;t[0]===f?b=t[1]:(b=e=>y[e]?.[+!f]||e,t[0]=f,t[1]=b);let E=b,D;t[2]!==l.href||t[3]!==u?(D=[`chat-product-preview`,l.href,u],t[2]=l.href,t[3]=u,t[4]=D):D=t[4];let O;t[5]===l?O=t[6]:(O=()=>v(l),t[5]=l,t[6]=O);let k;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(k={shouldRetryOnError:!1,refreshInterval:C},t[7]=k):k=t[7];let{data:A,error:j,isLoading:M}=s(D,O,k);if(M){let e;return t[8]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,_.jsx)(c,{}),t[8]=e):e=t[8],e}if(j){let e=f?`无法加载内容,它可能已删除或暂时不可用。`:`Unable to load this content. It may have been deleted or be temporarily unavailable.`,n;return t[9]===e?n=t[10]:(n=(0,_.jsx)(`p`,{role:`alert`,className:`text-sm text-fg-muted`,children:e}),t[9]=e,t[10]=n),n}if(!A?.value){let e=f?`内容不存在或已删除。`:`This content is unavailable or has been deleted.`,n;return t[11]===e?n=t[12]:(n=(0,_.jsx)(`p`,{className:`text-sm text-fg-muted`,children:e}),t[11]=e,t[12]=n),n}let N=S;if(A.kind===`project`){let e=A.value,n;t[13]===e.name?n=t[14]:(n=(0,_.jsx)(`h2`,{className:`break-words text-lg font-semibold text-fg`,children:e.name}),t[13]=e.name,t[14]=n);let r;t[15]!==e.status||t[16]!==E?(r=E(e.status),t[15]=e.status,t[16]=E,t[17]=r):r=t[17];let i;t[18]!==e.health||t[19]!==E?(i=E(e.health),t[18]=e.health,t[19]=E,t[20]=i):i=t[20];let a;t[21]!==r||t[22]!==i?(a=(0,_.jsxs)(`p`,{className:`text-sm text-fg-muted`,children:[r,` · `,i]}),t[21]=r,t[22]=i,t[23]=a):a=t[23];let o;t[24]!==N||t[25]!==e.description?(o=N(e.description),t[24]=N,t[25]=e.description,t[26]=o):o=t[26];let s;t[27]!==N||t[28]!==e.brief?(s=N(e.brief),t[27]=N,t[28]=e.brief,t[29]=s):s=t[29];let c;t[30]!==N||t[31]!==e.outcome?(c=N(e.outcome),t[30]=N,t[31]=e.outcome,t[32]=c):c=t[32];let l;t[33]!==s||t[34]!==c||t[35]!==n||t[36]!==a||t[37]!==o?(l=(0,_.jsxs)(`div`,{className:`space-y-3`,children:[n,a,o,s,c]}),t[33]=s,t[34]=c,t[35]=n,t[36]=a,t[37]=o,t[38]=l):l=t[38];let u;t[39]!==e.successCriteria||t[40]!==f?(u=e.successCriteria?.length>0&&(0,_.jsxs)(`section`,{className:`space-y-3`,children:[(0,_.jsx)(`h3`,{className:`font-medium text-fg`,children:f?`完成标准`:`Success criteria`}),(0,_.jsx)(`ul`,{className:`list-disc space-y-2 pl-5 text-sm text-fg`,children:e.successCriteria.map(x)})]}),t[39]=e.successCriteria,t[40]=f,t[41]=u):u=t[41];let d;t[42]!==e.milestones||t[43]!==E||t[44]!==f?(d=e.milestones?.length>0&&(0,_.jsxs)(`section`,{className:`space-y-3`,children:[(0,_.jsx)(`h3`,{className:`font-medium text-fg`,children:f?`里程碑`:`Milestones`}),e.milestones.slice(0,8).map(e=>(0,_.jsxs)(`p`,{className:`text-sm text-fg-muted`,children:[e.title,` · `,E(e.status)]},e.id))]}),t[42]=e.milestones,t[43]=E,t[44]=f,t[45]=d):d=t[45];let p;t[46]!==N||t[47]!==e.recentUpdates||t[48]!==f?(p=e.recentUpdates?.[0]&&(0,_.jsxs)(`section`,{className:`space-y-3`,children:[(0,_.jsx)(`h3`,{className:`font-medium text-fg`,children:f?`最近进展`:`Latest update`}),N(e.recentUpdates[0].summary)]}),t[46]=N,t[47]=e.recentUpdates,t[48]=f,t[49]=p):p=t[49];let m;return t[50]!==l||t[51]!==u||t[52]!==d||t[53]!==p?(m=(0,_.jsxs)(`div`,{className:`space-y-6`,children:[l,u,d,p]}),t[50]=l,t[51]=u,t[52]=d,t[53]=p,t[54]=m):m=t[54],m}if(A.kind===`automation`){let e=A.value,n=e.action.kind===`agent`?e.action.instruction:void 0,r;t[55]===e.name?r=t[56]:(r=(0,_.jsx)(`h2`,{className:`break-words text-lg font-semibold text-fg`,children:e.name}),t[55]=e.name,t[56]=r);let i;t[57]!==e.description||t[58]!==N?(i=N(e.description),t[57]=e.description,t[58]=N,t[59]=i):i=t[59];let a;t[60]!==n||t[61]!==N?(a=N(n),t[60]=n,t[61]=N,t[62]=a):a=t[62];let o;t[63]!==e.state.nextRunAtMs||t[64]!==f?(o=e.state.nextRunAtMs&&(0,_.jsxs)(`p`,{className:`text-sm text-fg-muted`,children:[f?`下次运行`:`Next run`,` · `,new Date(e.state.nextRunAtMs).toLocaleString(f?`zh-CN`:`en-US`)]}),t[63]=e.state.nextRunAtMs,t[64]=f,t[65]=o):o=t[65];let s;t[66]===e.state.lastError?s=t[67]:(s=e.state.lastError&&(0,_.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:e.state.lastError}),t[66]=e.state.lastError,t[67]=s);let c=f?`最近运行`:`Recent runs`,l;t[68]===c?l=t[69]:(l=(0,_.jsx)(`h3`,{className:`font-medium text-fg`,children:c}),t[68]=c,t[69]=l);let u;t[70]!==A.runs||t[71]!==N||t[72]!==E||t[73]!==f?(u=A.runs.length?A.runs.map(e=>(0,_.jsxs)(`div`,{className:`space-y-2 rounded-lg border border-edge p-3`,children:[(0,_.jsxs)(`p`,{className:`text-sm text-fg-muted`,children:[E(e.status),` · `,new Date(e.createdAtMs).toLocaleString(f?`zh-CN`:`en-US`)]}),N(e.summary),e.error&&(0,_.jsx)(`p`,{className:`text-sm text-danger`,children:e.error})]},e.id)):(0,_.jsx)(`p`,{className:`text-sm text-fg-muted`,children:f?`暂无运行记录。`:`No runs yet.`}),t[70]=A.runs,t[71]=N,t[72]=E,t[73]=f,t[74]=u):u=t[74];let h;return t[75]!==l||t[76]!==u?(h=(0,_.jsxs)(`section`,{className:`space-y-3`,children:[l,u]}),t[75]=l,t[76]=u,t[77]=h):h=t[77],(0,_.jsxs)(`div`,{className:`space-y-6`,children:[(0,_.jsxs)(`div`,{className:`space-y-3`,children:[r,(0,_.jsxs)(`p`,{className:`text-sm text-fg-muted`,children:[e.enabled?f?`已启用`:`Enabled`:f?`已停用`:`Disabled`,` · `,m(e.trigger,p.automations,p.cron,d)]}),i,a,o,s]}),h]})}let P=A.value,F;t[78]===P.name?F=t[79]:(F=(0,_.jsx)(`h2`,{className:`break-words text-lg font-semibold text-fg`,children:P.name}),t[78]=P.name,t[79]=F);let I=P.description||P.idea,L;t[80]!==N||t[81]!==I?(L=N(I),t[80]=N,t[81]=I,t[82]=L):L=t[82];let R;t[83]!==P.name||t[84]!==A.previewUrl||t[85]!==f?(R=A.previewUrl&&(0,_.jsx)(`iframe`,{title:f?`${P.name} 交互预览`:`${P.name} interactive preview`,src:i(A.previewUrl),sandbox:`allow-scripts allow-forms`,className:`h-[min(30rem,55dvh)] w-full rounded-lg border border-edge bg-white`}),t[83]=P.name,t[84]=A.previewUrl,t[85]=f,t[86]=R):R=t[86];let z;t[87]!==P||t[88]!==f?(z=P.installationState===`installed`&&P.enabled&&P.status===`installed`&&(0,_.jsx)(n,{to:h(P),className:`inline-flex rounded-lg bg-accent px-3 py-2 text-sm text-white focus-visible:ring-2 focus-visible:ring-accent`,children:f?`使用应用`:`Use app`}),t[87]=P,t[88]=f,t[89]=z):z=t[89];let B;return t[90]!==F||t[91]!==L||t[92]!==R||t[93]!==z?(B=(0,_.jsxs)(`div`,{className:`space-y-5`,children:[F,L,R,z]}),t[90]=F,t[91]=L,t[92]=R,t[93]=z,t[94]=B):B=t[94],B}function x(e,t){return(0,_.jsx)(`li`,{children:e},t)}function S(e){return e?.trim()?(0,_.jsx)(p,{content:e,mermaidActions:!1}):null}function C(e){return e?.kind===`automation`&&e.value?.state.runningRunId?3e3:0}function w(e){return e.language}function T(e){return e.conversationId}export{b as default};