@xopcai/xopc 0.0.433 → 0.0.435

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 (362) hide show
  1. package/README.md +5 -5
  2. package/README.zh-CN.md +5 -5
  3. package/dist/browser-ext/dist/sidepanel.js +11 -0
  4. package/dist/browser-ext/manifest.json +1 -1
  5. package/dist/extensions/telegram/xopc.extension.json +1 -1
  6. package/dist/gateway/static/root/assets/{activity-store-BpYGrRXw.js → activity-store-Cwn_CNwl.js} +1 -1
  7. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DTgOSv6G.js → agent-avatar-dicebear-Cd23LnJJ.js} +1 -1
  8. package/dist/gateway/static/root/assets/{agent-avatar-display-BUH7ljEo.js → agent-avatar-display-ByzM7u9S.js} +2 -2
  9. package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-B_FAikHA.js → agent-defaults-settings-panel-B0i37diS.js} +1 -1
  10. package/dist/gateway/static/root/assets/{agent-plugin-dialog-DPabZaSE.js → agent-plugin-dialog-XN-tZ-Ox.js} +1 -1
  11. package/dist/gateway/static/root/assets/{agents-BAPYP1Ka.js → agents-ZDA1OaLv.js} +3 -3
  12. package/dist/gateway/static/root/assets/{agents-admin-api-CXCAHNPj.js → agents-admin-api-B5lKH_ps.js} +1 -1
  13. package/dist/gateway/static/root/assets/{api-oIK4hYkJ.js → api-B9fZL-V8.js} +1 -1
  14. package/dist/gateway/static/root/assets/{api-DMbimMEi.js → api-Djju8qIR.js} +1 -1
  15. package/dist/gateway/static/root/assets/{app-management-settings-panel-BZ3Fy8ZR.js → app-management-settings-panel-IlyzDPJu.js} +1 -1
  16. package/dist/gateway/static/root/assets/{appearance-settings-DsRTj1by.js → appearance-settings-BxdFGob3.js} +1 -1
  17. package/dist/gateway/static/root/assets/apps-page-CxEKiOTA.js +1 -0
  18. package/dist/gateway/static/root/assets/{archive-plugin-Bg1VTieK.js → archive-plugin-4gEvotPr.js} +1 -1
  19. package/dist/gateway/static/root/assets/{automation-api-CLPsgcQN.js → automation-api-4fVKv9PJ.js} +1 -1
  20. package/dist/gateway/static/root/assets/{automation-result-state-CKVnR4KG.js → automation-result-state-m7PeK2kl.js} +1 -1
  21. package/dist/gateway/static/root/assets/automation-run-list-CJOdy_R2.js +1 -0
  22. package/dist/gateway/static/root/assets/{automation-task-card-D27Mw66U.js → automation-task-card-DZWhCWJa.js} +3 -3
  23. package/dist/gateway/static/root/assets/{automations-page-DGNTJ8lN.js → automations-page-BjbM15eY.js} +1 -1
  24. package/dist/gateway/static/root/assets/automations-workspace-CqurzLYX.js +9 -0
  25. package/dist/gateway/static/root/assets/{binary-plugins-CuwSdCG5.js → binary-plugins-69WyJLNW.js} +1 -1
  26. package/dist/gateway/static/root/assets/{block-editor-Dtl2BG3t.js → block-editor-DUONDIZR.js} +1 -1
  27. package/dist/gateway/static/root/assets/{browser-automation-inputs-uGK086ag.js → browser-automation-inputs-DL4YPCuN.js} +1 -1
  28. package/dist/gateway/static/root/assets/{browser-automations-page-Da_edNNS.js → browser-automations-page-1Aq6XmRs.js} +1 -1
  29. package/dist/gateway/static/root/assets/{browser-control-api-k3OOX3bS.js → browser-control-api-yjru8E7R.js} +1 -1
  30. package/dist/gateway/static/root/assets/{browser-settings-page-C1bSw-Jq.js → browser-settings-page-CvwpT8Um.js} +1 -1
  31. package/dist/gateway/static/root/assets/{capabilities-DlHPLld_.js → capabilities-C7lnwKKm.js} +1 -1
  32. package/dist/gateway/static/root/assets/{capabilities-CoeuLRt6.js → capabilities-DaeQXJT4.js} +1 -1
  33. package/dist/gateway/static/root/assets/capabilities-page-B5avAOUM.js +2 -0
  34. package/dist/gateway/static/root/assets/{capabilities-settings-panel-CtY-bGIi.js → capabilities-settings-panel-_9yCS78i.js} +1 -1
  35. package/dist/gateway/static/root/assets/capability-links-DeO34GIF.js +1 -0
  36. package/dist/gateway/static/root/assets/{channels-Cn1MWBL_.js → channels-CoQb4HOF.js} +1 -1
  37. package/dist/gateway/static/root/assets/{chat-agents-api-BB0biwc7.js → chat-agents-api-BUi_7GRo.js} +1 -1
  38. package/dist/gateway/static/root/assets/{chat-chart-block-QSvjx4w6.js → chat-chart-block-CcVcKsDZ.js} +1 -1
  39. package/dist/gateway/static/root/assets/chat-page--wcFhTjW.js +72 -0
  40. package/dist/gateway/static/root/assets/{chat-terminal-dock-Cd51G9eG.js → chat-terminal-dock-BMXJpPuH.js} +1 -1
  41. package/dist/gateway/static/root/assets/{command-palette-api-CEG10uE-.js → command-palette-api-luUjQPsh.js} +1 -1
  42. package/dist/gateway/static/root/assets/{composer-payload-handoff-Bogdq9Hy.js → composer-payload-handoff-B5XNxNCb.js} +1 -1
  43. package/dist/gateway/static/root/assets/computer-settings-page-CWtdyEJH.js +1 -0
  44. package/dist/gateway/static/root/assets/connected-providers-grid-2idMtk65.js +1 -0
  45. package/dist/gateway/static/root/assets/connection-usage-Cm_McddI.js +1 -0
  46. package/dist/gateway/static/root/assets/connection-usage-guide-Ddh0bfkj.js +1 -0
  47. package/dist/gateway/static/root/assets/{connector-service-page-k2rjyjrp.js → connector-service-page-C3msXaBk.js} +1 -1
  48. package/dist/gateway/static/root/assets/{connectors-api-DtvB9Cjm.js → connectors-api-NcWECWKg.js} +1 -1
  49. package/dist/gateway/static/root/assets/connectors-page-Crb6DILX.js +1 -0
  50. package/dist/gateway/static/root/assets/{date-picker-CAankdQw.js → date-picker-Cfjq1hD_.js} +1 -1
  51. package/dist/gateway/static/root/assets/{desktop-pet-DjM73fir.js → desktop-pet-ChFn9v-3.js} +1 -1
  52. package/dist/gateway/static/root/assets/{desktop-pet-settings-Rmh-GxHl.js → desktop-pet-settings-DvnVIv25.js} +1 -1
  53. package/dist/gateway/static/root/assets/{dev-view-store-BgW2Riyk.js → dev-view-store-DQJ61P5L.js} +1 -1
  54. package/dist/gateway/static/root/assets/{device-pairing-wizard-UdzSpNa5.js → device-pairing-wizard-KxaIL-OX.js} +1 -1
  55. package/dist/gateway/static/root/assets/{directory-picker-path-field-Rkw3f7lG.js → directory-picker-path-field-Drv864uE.js} +1 -1
  56. package/dist/gateway/static/root/assets/{discussion-annotation-sync-Dudoj_Fz.js → discussion-annotation-sync-DfBRkWtw.js} +1 -1
  57. package/dist/gateway/static/root/assets/{extension-debug-page-DxIGAO23.js → extension-debug-page-DAlBIt_R.js} +1 -1
  58. package/dist/gateway/static/root/assets/{extension-iframe-host-63KpX6IP.js → extension-iframe-host-Bds-5kY_.js} +1 -1
  59. package/dist/gateway/static/root/assets/{extension-marketplace-api-yXNUkQDA.js → extension-marketplace-api-CZg8nBwW.js} +1 -1
  60. package/dist/gateway/static/root/assets/{extension-page-C811A_Ww.js → extension-page-ZTw-oucT.js} +1 -1
  61. package/dist/gateway/static/root/assets/{extension-provider-C4jLFIgh.js → extension-provider-NKWfjpdP.js} +1 -1
  62. package/dist/gateway/static/root/assets/{extension-settings-page-WJSw5MT0.js → extension-settings-page-CT7PPt_q.js} +1 -1
  63. package/dist/gateway/static/root/assets/{file-preview-surface-zE9AcaHM.js → file-preview-surface-BcLeaSNe.js} +1 -1
  64. package/dist/gateway/static/root/assets/{gateway-config-swr-D6cc6W6E.js → gateway-config-swr-Cq-ByXL4.js} +1 -1
  65. package/dist/gateway/static/root/assets/{gateway-realtime-BSRNLciy.js → gateway-realtime-DwMd2PCt.js} +1 -1
  66. package/dist/gateway/static/root/assets/gateway-realtime-store-CHrf6-nR.js +1 -0
  67. package/dist/gateway/static/root/assets/{gateway-restart-Unun5hRL.js → gateway-restart-DdiVzbkL.js} +1 -1
  68. package/dist/gateway/static/root/assets/{gateway-settings-DP-DV-e5.js → gateway-settings-1QUdNwrZ.js} +1 -1
  69. package/dist/gateway/static/root/assets/{gateway-startup-retry-C8g666Ja.js → gateway-startup-retry-PMJi5mX4.js} +1 -1
  70. package/dist/gateway/static/root/assets/{global-defaults-api-BObi-1ww.js → global-defaults-api-DgzZh3wX.js} +1 -1
  71. package/dist/gateway/static/root/assets/{home-page-CIcs7Mzy.js → home-page-Chn7YTiD.js} +2 -2
  72. package/dist/gateway/static/root/assets/{image-generation-api-C2SqYNyD.js → image-generation-api-CjVpsckq.js} +1 -1
  73. package/dist/gateway/static/root/assets/{imports-page-C8ezUkOJ.js → imports-page-CJCvZFaQ.js} +1 -1
  74. package/dist/gateway/static/root/assets/index-8xLWo0Tt.js +11 -0
  75. package/dist/gateway/static/root/assets/index-iukJWzxG.css +1 -0
  76. package/dist/gateway/static/root/assets/install-connector-dialog-Bo06Ry3H.js +1 -0
  77. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BRaY4-wA.js → keyboard-shortcuts-settings-BylFJeGu.js} +1 -1
  78. package/dist/gateway/static/root/assets/{local-app-workbench-page-BZtVcjF3.js → local-app-workbench-page-B3MSSFsr.js} +1 -1
  79. package/dist/gateway/static/root/assets/{local-apps-page-MqP4EnJm.js → local-apps-page-BeV86rMJ.js} +1 -1
  80. package/dist/gateway/static/root/assets/{local-session-drafts-DTq9776a.js → local-session-drafts-jgw8UGsO.js} +2 -2
  81. package/dist/gateway/static/root/assets/{locale-store-B6OrWgY1.js → locale-store-CAZaC05J.js} +1 -1
  82. package/dist/gateway/static/root/assets/{logs-page-hkHBjblX.js → logs-page-BMmSsUP5.js} +1 -1
  83. package/dist/gateway/static/root/assets/{management-settings-DoX4eTM3.js → management-settings-Bu7T8ewk.js} +1 -1
  84. package/dist/gateway/static/root/assets/{markdown-view-DrhYZSmg.js → markdown-view-BatP4qeK.js} +1 -1
  85. package/dist/gateway/static/root/assets/{mcp-conversation-setup-page-BEp5E6TD.js → mcp-conversation-setup-page-rROtr0UN.js} +1 -1
  86. package/dist/gateway/static/root/assets/{media-plugins-D987i9Gc.js → media-plugins-88OV72YE.js} +1 -1
  87. package/dist/gateway/static/root/assets/messages-C7fckbyG.js +3 -0
  88. package/dist/gateway/static/root/assets/{model-selector-DXm4NS1_.js → model-selector-raBRBkN_.js} +1 -1
  89. package/dist/gateway/static/root/assets/{models-hub-cache-BLcha5rx.js → models-hub-cache-CzC9y3D0.js} +1 -1
  90. package/dist/gateway/static/root/assets/{note-detail-panel-Cl851ivY.js → note-detail-panel-BvA8Vkbm.js} +3 -3
  91. package/dist/gateway/static/root/assets/note-image-lightbox-D6kUDDd5.js +1 -0
  92. package/dist/gateway/static/root/assets/{notes-api-Ddsf7FVg.js → notes-api-zXpV6UXu.js} +1 -1
  93. package/dist/gateway/static/root/assets/{notes-page-DSwA1MU1.js → notes-page-CjYH9Kle.js} +1 -1
  94. package/dist/gateway/static/root/assets/{oauth-api-CMmu4DzH.js → oauth-api-DmxSaxM1.js} +1 -1
  95. package/dist/gateway/static/root/assets/{oauth-provider-connect-BkhnftBq.js → oauth-provider-connect-D4Gfs-Ba.js} +1 -1
  96. package/dist/gateway/static/root/assets/{page-context-capture-button-urhQBRaN.js → page-context-capture-button-Mig3d0UX.js} +1 -1
  97. package/dist/gateway/static/root/assets/{page-context-draft-BuNUerth.js → page-context-draft-C4IIZaKd.js} +1 -1
  98. package/dist/gateway/static/root/assets/page-header-store-D7G5utVi.js +1 -0
  99. package/dist/gateway/static/root/assets/{personal-avatar-B49ueeZO.js → personal-avatar-DLa-CpaK.js} +1 -1
  100. package/dist/gateway/static/root/assets/{personal-page-f05ceuFn.js → personal-page-BhuT79Wd.js} +1 -1
  101. package/dist/gateway/static/root/assets/{personal-settings-panel-DLQxzPYr.js → personal-settings-panel-XSUkgcr2.js} +1 -1
  102. package/dist/gateway/static/root/assets/phone-dependencies-card-DYwnuVh3.js +1 -0
  103. package/dist/gateway/static/root/assets/phone-model-connection-2F32QTHA.js +1 -0
  104. package/dist/gateway/static/root/assets/phone-model-picker-DCVzIr0s.js +1 -0
  105. package/dist/gateway/static/root/assets/phone-settings-page-DJttE4id.js +1 -0
  106. package/dist/gateway/static/root/assets/{phone-workspace-store-DbqktZbO.js → phone-workspace-store-Dxp-KhFP.js} +1 -1
  107. package/dist/gateway/static/root/assets/plugin-details-dialog-tyjAjFjA.js +1 -0
  108. package/dist/gateway/static/root/assets/{preference-select-fields-BZWqG7pu.js → preference-select-fields-BVP3MhGK.js} +1 -1
  109. package/dist/gateway/static/root/assets/{product-automation-feedback-DDQUsag7.js → product-automation-feedback-DbJvv92z.js} +1 -1
  110. package/dist/gateway/static/root/assets/{product-open-page-BkRP_HmA.js → product-open-page-RImqlhCD.js} +1 -1
  111. package/dist/gateway/static/root/assets/{product-preview-content-o2Y3VNE7.js → product-preview-content-DxSqrKsg.js} +1 -1
  112. package/dist/gateway/static/root/assets/{product-preview-modal-7Ohx-7OR.js → product-preview-modal-Cw8Q8Uom.js} +2 -2
  113. package/dist/gateway/static/root/assets/{project-detail-page-B2RsSHya.js → project-detail-page-CuugOYfe.js} +1 -1
  114. package/dist/gateway/static/root/assets/{project-understanding-BIMouiYX.js → project-understanding-BMKcoUW5.js} +1 -1
  115. package/dist/gateway/static/root/assets/{projects-page-C9R5u3tF.js → projects-page-CFsABLvs.js} +1 -1
  116. package/dist/gateway/static/root/assets/{providers-api-BOCkRZ7X.js → providers-api-CAeXbJNF.js} +1 -1
  117. package/dist/gateway/static/root/assets/{recording-upload-C6muEHEO.js → recording-upload-CfpllTe5.js} +1 -1
  118. package/dist/gateway/static/root/assets/{registry-api-Bl2guMRg.js → registry-api-fLOqFyrz.js} +1 -1
  119. package/dist/gateway/static/root/assets/{remote-access-hub-BceSMbCs.js → remote-access-hub-BvKOxy0L.js} +1 -1
  120. package/dist/gateway/static/root/assets/{resource-unavailable-CUNbPkdj.js → resource-unavailable-D15jzjV_.js} +1 -1
  121. package/dist/gateway/static/root/assets/route-preload-BQapekpy.js +2 -0
  122. package/dist/gateway/static/root/assets/{runtime-tools-api-LopLjgvu.js → runtime-tools-api-D0Nrvuqv.js} +1 -1
  123. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-9HIPerDP.js → runtime-tools-settings-panel-CA27XgL2.js} +1 -1
  124. package/dist/gateway/static/root/assets/{service-recommendation-list-CoMI6MB1.js → service-recommendation-list-B0RoYLVT.js} +1 -1
  125. package/dist/gateway/static/root/assets/session-api-CHRP5Lwf.js +1 -0
  126. package/dist/gateway/static/root/assets/session-channel-icon-D1ktvt1P.js +1 -0
  127. package/dist/gateway/static/root/assets/session-identity-label-BP7OIYth.js +1 -0
  128. package/dist/gateway/static/root/assets/session-manager-DRRWwKE4.js +25 -0
  129. package/dist/gateway/static/root/assets/{sessions-page-BT0GdXdS.js → sessions-page-uJHS3-6F.js} +1 -1
  130. package/dist/gateway/static/root/assets/settings-advanced-gate-CZ4J3Kuy.js +1 -0
  131. package/dist/gateway/static/root/assets/{settings-advanced-section-CEorDLUp.js → settings-advanced-section-D-llwfSj.js} +1 -1
  132. package/dist/gateway/static/root/assets/{settings-mode-store-C2LZqBES.js → settings-mode-store-BspMKc9N.js} +1 -1
  133. package/dist/gateway/static/root/assets/{settings-page-C_Np_6qZ.js → settings-page-CedwaHM0.js} +1 -1
  134. package/dist/gateway/static/root/assets/{settings-page-header-BAN34UQi.js → settings-page-header-LuOJvqNa.js} +1 -1
  135. package/dist/gateway/static/root/assets/{settings-page-layout-B5TVFBV2.js → settings-page-layout-CduQ8w4a.js} +1 -1
  136. package/dist/gateway/static/root/assets/{setup-interaction-page-BYvTJW3_.js → setup-interaction-page-ujpPGl84.js} +1 -1
  137. package/dist/gateway/static/root/assets/{setup-status-panel-UY2dH-sK.js → setup-status-panel-BN2aCJUN.js} +1 -1
  138. package/dist/gateway/static/root/assets/{share-link-dialog-BMcXyzr2.js → share-link-dialog-CTATUaa4.js} +1 -1
  139. package/dist/gateway/static/root/assets/{share-preview-page-UQ6eUM2_.js → share-preview-page-Dq0J3VgS.js} +1 -1
  140. package/dist/gateway/static/root/assets/{shares-api-DOeDN6Tm.js → shares-api-zegE8pSE.js} +1 -1
  141. package/dist/gateway/static/root/assets/{shares-settings-W8XhuAoL.js → shares-settings-DXpvsRXq.js} +1 -1
  142. package/dist/gateway/static/root/assets/{skill-api-Do_c0d9n.js → skill-api-DCL1EN7f.js} +1 -1
  143. package/dist/gateway/static/root/assets/{skill-list-api-DpHaXI2l.js → skill-list-api-Bv0mmHbu.js} +1 -1
  144. package/dist/gateway/static/root/assets/{skill-reload-api-DDRd9IJ2.js → skill-reload-api-DPZbadiO.js} +1 -1
  145. package/dist/gateway/static/root/assets/{skills-page-CaeJVKhO.js → skills-page-DMC7Gaku.js} +1 -1
  146. package/dist/gateway/static/root/assets/{system-settings-panel-DYWlWPJL.js → system-settings-panel-BYFUhlqG.js} +1 -1
  147. package/dist/gateway/static/root/assets/{task-detail-page-De0qD7xw.js → task-detail-page-_Og3plZL.js} +3 -3
  148. package/dist/gateway/static/root/assets/{task-result-evidence-CICR5K1t.js → task-result-evidence-Bxm8-H0B.js} +1 -1
  149. package/dist/gateway/static/root/assets/{terminal-panel-store-BbWUcQe7.js → terminal-panel-store-Djf9l2qZ.js} +1 -1
  150. package/dist/gateway/static/root/assets/{theme-store-TkG5mo0p.js → theme-store-8GFVtotZ.js} +1 -1
  151. package/dist/gateway/static/root/assets/{tracing-settings-page-CYXEy4EG.js → tracing-settings-page-oWW3SBZ4.js} +1 -1
  152. package/dist/gateway/static/root/assets/{tunnel-api-DquDm6U2.js → tunnel-api-D-mEsSGF.js} +1 -1
  153. package/dist/gateway/static/root/assets/{understanding-activity-store-Ot3wZ3oQ.js → understanding-activity-store-CvDjsd0I.js} +1 -1
  154. package/dist/gateway/static/root/assets/{understanding-refresh-store-C5KYFMaC.js → understanding-refresh-store-DzOZJm7A.js} +1 -1
  155. package/dist/gateway/static/root/assets/{usage-page-1xFO4smo.js → usage-page-z-o6Uuev.js} +1 -1
  156. package/dist/gateway/static/root/assets/{use-autosave-HL8XRNR8.js → use-autosave-BVYS8UoK.js} +1 -1
  157. package/dist/gateway/static/root/assets/{use-composer-attachments-XRlQBdNF.js → use-composer-attachments-lecOV2q5.js} +1 -1
  158. package/dist/gateway/static/root/assets/{use-file-preview-expanded-CW956CXS.js → use-file-preview-expanded-nd_CuFsd.js} +2 -2
  159. package/dist/gateway/static/root/assets/{use-personal-profile-202s6tJt.js → use-personal-profile-CQi2ZCxV.js} +1 -1
  160. package/dist/gateway/static/root/assets/{use-workspace-tree-CjydkmH1.js → use-workspace-tree-BiaddkzX.js} +1 -1
  161. package/dist/gateway/static/root/assets/{user-model-page-OGPXx3pe.js → user-model-page-Bks1n0Nj.js} +1 -1
  162. package/dist/gateway/static/root/assets/{voice-api-key-field-CxFu4MEA.js → voice-api-key-field-BbW8NFeZ.js} +1 -1
  163. package/dist/gateway/static/root/assets/{voice-config-api-MHe5Pn-A.js → voice-config-api-jSMzZWWy.js} +1 -1
  164. package/dist/gateway/static/root/assets/{voice-input-shortcut-events-B9xc1oK8.js → voice-input-shortcut-events-_SgYmx7X.js} +1 -1
  165. package/dist/gateway/static/root/assets/{voice-transcribe-api-CVEcB6Pe.js → voice-transcribe-api-BJCfiRFU.js} +1 -1
  166. package/dist/gateway/static/root/assets/{work-discovery-overlay-C-JoAg2D.js → work-discovery-overlay-DSTSNyU7.js} +1 -1
  167. package/dist/gateway/static/root/assets/{work-discovery-page-B5Kx29Ru.js → work-discovery-page-Dd_QJJvb.js} +1 -1
  168. package/dist/gateway/static/root/assets/{working-directory-picker-modal-DGp9cNzH.js → working-directory-picker-modal-q39BUcJ6.js} +1 -1
  169. package/dist/gateway/static/root/assets/{workspace-api-HBXn8pL9.js → workspace-api-Di2OmCvz.js} +2 -2
  170. package/dist/gateway/static/root/assets/workspace-editor-agent-store-B2r9wlix.js +1 -0
  171. package/dist/gateway/static/root/assets/{workspace-file-preview-dialog-3cpwSG2w.js → workspace-file-preview-dialog-BUGNT765.js} +1 -1
  172. package/dist/gateway/static/root/assets/{workspace-open-location-menu-D0VOFvuP.js → workspace-open-location-menu-bMSvmQW7.js} +1 -1
  173. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-BkdW2p3v.js → xopc-cloud-account-card-Bbe19Del.js} +1 -1
  174. package/dist/gateway/static/root/index.html +87 -85
  175. package/dist/package.js +1 -1
  176. package/dist/packages/computer-control-contract/src/index.js +33 -3
  177. package/dist/packages/gateway-contract/src/session-identity.js +2 -1
  178. package/dist/packages/gateway-contract/src/session-input-command.js +19 -2
  179. package/dist/packages/gateway-contract/src/specialists.js +1 -0
  180. package/dist/src/agent/embedded/execution-tool-policy.d.ts +1 -1
  181. package/dist/src/agent/embedded/execution-tool-policy.js +2 -2
  182. package/dist/src/agent/embedded/run-for-session.js +23 -8
  183. package/dist/src/agent/embedded/run-turn.js +30 -7
  184. package/dist/src/agent/embedded/runs.d.ts +2 -2
  185. package/dist/src/agent/embedded/runs.js +4 -4
  186. package/dist/src/agent/embedded/session-runner.js +26 -11
  187. package/dist/src/agent/embedded/tool-search-extension.d.ts +8 -2
  188. package/dist/src/agent/embedded/tool-search-extension.js +122 -30
  189. package/dist/src/agent/external-tools/cliProvider.d.ts +10 -9
  190. package/dist/src/agent/external-tools/cliProvider.js +24 -4
  191. package/dist/src/agent/external-tools/composio-provider.d.ts +3 -3
  192. package/dist/src/agent/external-tools/composio-provider.js +6 -3
  193. package/dist/src/agent/external-tools/discovery.d.ts +47 -0
  194. package/dist/src/agent/external-tools/discovery.js +56 -0
  195. package/dist/src/agent/external-tools/gateway-tools.js +26 -46
  196. package/dist/src/agent/external-tools/index.d.ts +1 -0
  197. package/dist/src/agent/external-tools/index.js +7 -0
  198. package/dist/src/agent/external-tools/personal-request-scope.d.ts +7 -0
  199. package/dist/src/agent/external-tools/personal-request-scope.js +83 -0
  200. package/dist/src/agent/external-tools/read-policy.js +5 -4
  201. package/dist/src/agent/external-tools/service.d.ts +2 -0
  202. package/dist/src/agent/external-tools/service.js +22 -3
  203. package/dist/src/agent/external-tools/tool-registry.d.ts +6 -0
  204. package/dist/src/agent/external-tools/types.d.ts +7 -2
  205. package/dist/src/agent/inbound/turn-dispatcher.d.ts +1 -1
  206. package/dist/src/agent/inbound/turn-dispatcher.js +3 -2
  207. package/dist/src/agent/orchestration/llm-turn-retry.d.ts +1 -1
  208. package/dist/src/agent/orchestration/llm-turn-retry.js +13 -8
  209. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.d.ts +1 -0
  210. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +3 -1
  211. package/dist/src/agent/prompt/sections/tooling.js +1 -1
  212. package/dist/src/agent/tool-manuals/computer.d.ts +1 -1
  213. package/dist/src/agent/tool-manuals/computer.js +6 -4
  214. package/dist/src/agent/tool-manuals/phone.d.ts +1 -1
  215. package/dist/src/agent/tool-manuals/phone.js +4 -4
  216. package/dist/src/agent/tool-manuals/xopc-configuration.d.ts +1 -1
  217. package/dist/src/agent/tool-manuals/xopc-configuration.js +4 -2
  218. package/dist/src/agent/tools/computer-use-tool.js +7 -6
  219. package/dist/src/agent/tools/delegation-policy.js +1 -0
  220. package/dist/src/agent/tools/factory.js +4 -2
  221. package/dist/src/agent/tools/phone-use-tool.js +2 -2
  222. package/dist/src/agent/tools/web.js +22 -3
  223. package/dist/src/agent-matching/service.js +2 -2
  224. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  225. package/dist/src/computer/batch.d.ts +108 -0
  226. package/dist/src/computer/batch.js +125 -0
  227. package/dist/src/computer/broker.d.ts +30 -2
  228. package/dist/src/computer/broker.js +109 -17
  229. package/dist/src/computer/diagnostics.d.ts +5 -1
  230. package/dist/src/computer/diagnostics.js +22 -3
  231. package/dist/src/computer/errors.d.ts +15 -0
  232. package/dist/src/computer/errors.js +59 -3
  233. package/dist/src/computer/model-adapter.d.ts +58 -0
  234. package/dist/src/computer/model-adapter.js +112 -66
  235. package/dist/src/computer/native-errors.d.ts +2 -0
  236. package/dist/src/computer/native-errors.js +13 -0
  237. package/dist/src/computer/program-runtime.d.ts +1 -1
  238. package/dist/src/computer/program-runtime.js +1 -0
  239. package/dist/src/computer/runtime.d.ts +11 -0
  240. package/dist/src/computer/runtime.js +102 -34
  241. package/dist/src/computer/semantic-actions.js +4 -0
  242. package/dist/src/config/schema.d.ts +6 -0
  243. package/dist/src/extensions/agent-plugins/formats.js +2 -1
  244. package/dist/src/extensions/agent-plugins/inventory.d.ts +2 -0
  245. package/dist/src/extensions/agent-plugins/inventory.js +4 -1
  246. package/dist/src/extensions/agent-plugins/validation.d.ts +1 -0
  247. package/dist/src/extensions/agent-plugins/validation.js +2 -1
  248. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  249. package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
  250. package/dist/src/gateway/hono/routes/phone-dependencies.js +26 -5
  251. package/dist/src/gateway/hono/routes/phone-setup.js +42 -16
  252. package/dist/src/gateway/hono/routes/phone.js +22 -7
  253. package/dist/src/gateway/hono/routes/session-command-handler.js +9 -0
  254. package/dist/src/gateway/hono/routes/session-input-control.d.ts +3 -0
  255. package/dist/src/gateway/hono/routes/session-input-control.js +37 -0
  256. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +12 -0
  257. package/dist/src/gateway/hono/routes/session-input-handler.js +22 -0
  258. package/dist/src/gateway/hono/routes/sessions.js +4 -0
  259. package/dist/src/gateway/service/agent-runner.js +5 -4
  260. package/dist/src/gateway/service/config-coordinator.d.ts +6 -0
  261. package/dist/src/gateway/service/session-input-coordinator.d.ts +6 -3
  262. package/dist/src/gateway/service/session-input-coordinator.js +47 -6
  263. package/dist/src/gateway/service.d.ts +1 -0
  264. package/dist/src/gateway/service.js +8 -5
  265. package/dist/src/home-intelligence/host.js +2 -2
  266. package/dist/src/personal-agent/capability-service.js +1 -1
  267. package/dist/src/personal-agent/request-access.d.ts +2 -0
  268. package/dist/src/personal-agent/request-access.js +22 -2
  269. package/dist/src/personal-agent/request-service.js +2 -2
  270. package/dist/src/personal-agent/specialist-capabilities.d.ts +2 -0
  271. package/dist/src/personal-agent/specialist-capabilities.js +9 -3
  272. package/dist/src/phone/adb-driver.d.ts +3 -0
  273. package/dist/src/phone/adb-driver.js +29 -0
  274. package/dist/src/phone/contracts.d.ts +14 -2
  275. package/dist/src/phone/contracts.js +8 -1
  276. package/dist/src/phone/gui-protocol.js +1 -1
  277. package/dist/src/phone/hdc-driver.d.ts +30 -0
  278. package/dist/src/phone/hdc-driver.js +331 -0
  279. package/dist/src/phone/hdc-video-bridge.d.ts +2 -0
  280. package/dist/src/phone/hdc-video-bridge.js +91 -0
  281. package/dist/src/phone/hdc-video-tools.d.ts +15 -0
  282. package/dist/src/phone/hdc-video-tools.js +123 -0
  283. package/dist/src/phone/hdc-video.d.ts +69 -0
  284. package/dist/src/phone/hdc-video.js +350 -0
  285. package/dist/src/phone/interactive-session.js +1 -1
  286. package/dist/src/phone/live-provider.d.ts +6 -0
  287. package/dist/src/phone/live-provider.js +1 -0
  288. package/dist/src/phone/model-adapter.d.ts +3 -0
  289. package/dist/src/phone/model-adapter.js +5 -3
  290. package/dist/src/phone/repository.js +2 -1
  291. package/dist/src/phone/runtime.d.ts +10 -4
  292. package/dist/src/phone/runtime.js +151 -85
  293. package/dist/src/phone/setup/service.d.ts +8 -6
  294. package/dist/src/phone/setup/service.js +33 -16
  295. package/dist/src/platform/client.d.ts +1 -1
  296. package/dist/src/platform/contracts.d.ts +1 -1
  297. package/dist/src/process/phone-process.d.ts +1 -1
  298. package/dist/src/process/phone-process.js +2 -2
  299. package/dist/src/runtime-tools/downloader.d.ts +1 -0
  300. package/dist/src/runtime-tools/downloader.js +8 -4
  301. package/dist/src/runtime-tools/harmony-dependencies.d.ts +24 -0
  302. package/dist/src/runtime-tools/harmony-dependencies.js +272 -0
  303. package/dist/src/runtime-tools/harmony-dependency-catalog.d.ts +4 -0
  304. package/dist/src/runtime-tools/harmony-dependency-catalog.js +54 -0
  305. package/dist/src/runtime-tools/harmony-paths.d.ts +9 -0
  306. package/dist/src/runtime-tools/harmony-paths.js +15 -0
  307. package/dist/src/runtime-tools/hdc-dependency-catalog.d.ts +8 -0
  308. package/dist/src/runtime-tools/hdc-dependency-catalog.js +83 -0
  309. package/dist/src/runtime-tools/hdc-files.d.ts +14 -0
  310. package/dist/src/runtime-tools/hdc-files.js +87 -0
  311. package/dist/src/runtime-tools/phone-dependencies.d.ts +6 -1
  312. package/dist/src/runtime-tools/phone-dependencies.js +20 -2
  313. package/dist/src/runtime-tools/phone-dependency-catalog.d.ts +10 -1
  314. package/dist/src/runtime-tools/phone-dependency-catalog.js +2 -0
  315. package/dist/src/runtime-tools/types.d.ts +1 -1
  316. package/dist/src/storage/sqlite/schema.d.ts +2 -2
  317. package/dist/src/storage/sqlite/schema.js +7 -7
  318. package/dist/src/storage/sqlite/schema.sql +16 -0
  319. package/dist/src/storage/sqlite/session-creation-repository.js +3 -0
  320. package/dist/src/storage/sqlite/session-input-control-repository.d.ts +12 -0
  321. package/dist/src/storage/sqlite/session-input-control-repository.js +83 -0
  322. package/dist/src/storage/sqlite/session-input-repository.d.ts +2 -0
  323. package/dist/src/storage/sqlite/session-input-repository.js +17 -5
  324. package/dist/src/storage/sqlite/session-repository.js +1 -0
  325. package/dist/src/storage/sqlite/session-turn-replace-repository.d.ts +2 -0
  326. package/dist/src/storage/sqlite/session-turn-replace-repository.js +14 -2
  327. package/dist/src/storage/sqlite/upgrades/262_session_input_control.sql +15 -0
  328. package/package.json +2 -2
  329. package/skills/tools/configure-xopc/SKILL.md +2 -2
  330. package/skills/tools/configure-xopc/references/phone/acceptance.md +3 -2
  331. package/skills/tools/configure-xopc/references/phone/dependencies.md +18 -2
  332. package/skills/tools/configure-xopc/references/phone/harmonyos.md +16 -0
  333. package/skills/tools/configure-xopc/references/phone/overview.md +2 -2
  334. package/skills/tools/configure-xopc/references/scene-index.md +2 -2
  335. package/dist/gateway/static/root/assets/apps-page-D-n71lO1.js +0 -1
  336. package/dist/gateway/static/root/assets/automations-workspace-DWDWy-SG.js +0 -9
  337. package/dist/gateway/static/root/assets/capabilities-page-IcwojmJK.js +0 -2
  338. package/dist/gateway/static/root/assets/capability-links-DzQWK1Fh.js +0 -1
  339. package/dist/gateway/static/root/assets/chat-page-CwP4OMdW.js +0 -72
  340. package/dist/gateway/static/root/assets/computer-settings-page-DyAlOzqY.js +0 -1
  341. package/dist/gateway/static/root/assets/connected-providers-grid-D0lXg22c.js +0 -1
  342. package/dist/gateway/static/root/assets/connectors-page-DI_Q0CKz.js +0 -1
  343. package/dist/gateway/static/root/assets/gateway-realtime-store-BFeFfApQ.js +0 -1
  344. package/dist/gateway/static/root/assets/index-Cz-VjTNd.css +0 -1
  345. package/dist/gateway/static/root/assets/index-D1_PUrJf.js +0 -11
  346. package/dist/gateway/static/root/assets/install-connector-dialog-Cn4nRSyt.js +0 -1
  347. package/dist/gateway/static/root/assets/list-tree-B0OMswgM.js +0 -1
  348. package/dist/gateway/static/root/assets/messages-jwdBhfL9.js +0 -3
  349. package/dist/gateway/static/root/assets/note-image-lightbox-DGYRJS03.js +0 -1
  350. package/dist/gateway/static/root/assets/page-header-store-CEn_kPsn.js +0 -1
  351. package/dist/gateway/static/root/assets/phone-dependencies-card-DjmC1Z5j.js +0 -1
  352. package/dist/gateway/static/root/assets/phone-model-connection-BRjHSgYn.js +0 -1
  353. package/dist/gateway/static/root/assets/phone-model-picker-DgIiWLhR.js +0 -1
  354. package/dist/gateway/static/root/assets/phone-settings-page-DCZGCL_z.js +0 -1
  355. package/dist/gateway/static/root/assets/plugin-details-dialog-D4tGKip4.js +0 -1
  356. package/dist/gateway/static/root/assets/route-preload-C1BKDjnu.js +0 -2
  357. package/dist/gateway/static/root/assets/session-api-Bfmlmn9F.js +0 -1
  358. package/dist/gateway/static/root/assets/session-channel-icon-SsY70Z6t.js +0 -1
  359. package/dist/gateway/static/root/assets/session-identity-label-B7sgG1PE.js +0 -1
  360. package/dist/gateway/static/root/assets/session-manager-X4UHOjjO.js +0 -25
  361. package/dist/gateway/static/root/assets/settings-advanced-gate-Dk9c-Z5e.js +0 -1
  362. package/dist/gateway/static/root/assets/workspace-editor-agent-store-msZa42fU.js +0 -1
@@ -1,11 +1,13 @@
1
1
  import { getXopcDatabase, init_connection } from "./connection.js";
2
2
  import { init_transaction, runSqliteWriteTransaction } from "./transaction.js";
3
+ import { authorizeSessionInput, init_session_input_control_repository, readSessionInputControl } from "./session-input-control-repository.js";
3
4
  import { buildSessionContextForLlm, buildSessionDisplayMessages, init_session_context_for_llm } from "../../session/session-context-for-llm.js";
4
5
  import { estimateTokensFromMessages, init_row_mappers, transcriptEntryRowToStoredRow } from "./row-mappers.js";
5
6
  import { randomUUID } from "node:crypto";
6
7
  //#region src/storage/sqlite/session-turn-replace-repository.ts
7
8
  init_session_context_for_llm();
8
9
  init_row_mappers();
10
+ init_session_input_control_repository();
9
11
  init_connection();
10
12
  init_transaction();
11
13
  function isUserRow(row) {
@@ -65,10 +67,16 @@ function replaceLatestSessionTurnAndQueueInput(input) {
65
67
  db.prepare(`INSERT INTO session_input_runtime(conversation_id, revision, updated_at_ms)
66
68
  VALUES (?, 0, ?) ON CONFLICT(conversation_id) DO NOTHING`).run(input.conversationId, Date.now());
67
69
  const runtime = db.prepare(`SELECT active_run_id FROM session_input_runtime WHERE conversation_id = ?`).get(input.conversationId);
70
+ const control = readSessionInputControl(input.conversationId);
71
+ if (input.expectedTranscriptId && session.transcript_id !== input.expectedTranscriptId) return {
72
+ ok: false,
73
+ code: "TARGET_NOT_FOUND"
74
+ };
68
75
  const pending = db.prepare(`SELECT 1 AS found FROM session_inputs
69
- WHERE conversation_id = ? AND status IN ('queued', 'running', 'injecting', 'interrupted')
76
+ WHERE conversation_id = ? AND status IN ('running', 'injecting', 'interrupted')
70
77
  LIMIT 1`).get(input.conversationId);
71
- if (runtime?.active_run_id || pending) return {
78
+ const queued = !control.paused && db.prepare("SELECT 1 FROM session_inputs WHERE conversation_id = ? AND status = 'queued' LIMIT 1").get(input.conversationId);
79
+ if (runtime?.active_run_id || pending || queued || control.phase === "stopping") return {
72
80
  ok: false,
73
81
  code: "SESSION_BUSY"
74
82
  };
@@ -95,6 +103,10 @@ function replaceLatestSessionTurnAndQueueInput(input) {
95
103
  const maxPosition = db.prepare(`SELECT COALESCE(MAX(position), 0) AS value FROM session_inputs
96
104
  WHERE conversation_id = ? AND status IN ('queued', 'running', 'injecting', 'interrupted')`).get(input.conversationId);
97
105
  const inputId = randomUUID();
106
+ if (control.paused) {
107
+ authorizeSessionInput(input.conversationId, inputId, input.controlVersion, true);
108
+ db.prepare("UPDATE session_input_control SET review_required = 1 WHERE conversation_id = ?").run(input.conversationId);
109
+ }
98
110
  db.prepare(`INSERT INTO session_inputs(id, conversation_id, client_message_id,
99
111
  requested_delivery, effective_delivery, status, content, attachments_json,
100
112
  context_refs_json, context_snapshots_json, thinking, origin_json, position,
@@ -0,0 +1,15 @@
1
+ CREATE TABLE session_input_control (
2
+ conversation_id TEXT PRIMARY KEY REFERENCES sessions(conversation_id) ON DELETE CASCADE,
3
+ paused INTEGER NOT NULL DEFAULT 0,
4
+ version INTEGER NOT NULL DEFAULT 0,
5
+ stop_run_id TEXT,
6
+ permitted_input_id TEXT,
7
+ review_required INTEGER NOT NULL DEFAULT 0
8
+ );
9
+ CREATE TABLE session_input_control_operations (
10
+ conversation_id TEXT NOT NULL REFERENCES sessions(conversation_id) ON DELETE CASCADE,
11
+ operation_id TEXT NOT NULL,
12
+ request_json TEXT NOT NULL,
13
+ run_id TEXT,
14
+ PRIMARY KEY (conversation_id, operation_id)
15
+ );
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@xopcai/xopc",
3
- "version": "0.0.433",
4
- "description": "Local-first personal AI with Ada, task delegation, files, projects and automations. Use cloud or local models.",
3
+ "version": "0.0.435",
4
+ "description": "An open-source AI assistant for work and everyday life. Remembers context and helps you get things done. Local-first, on a computer you choose.",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
7
7
  "types": "dist/src/index.d.ts",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: configure-xopc
3
- description: Guide xopc App configuration, connection, repair, and verification, including Browser Use, Phone Use, local Android, and Alibaba Cloud phones. Use for App setup requests or missing capability recovery.
3
+ description: Guide xopc App configuration, connection, repair, and verification, including Browser Use, Phone Use, local Android, HarmonyOS, and Alibaba Cloud phones. Use for App setup requests or missing capability recovery.
4
4
  metadata:
5
5
  i18n:
6
6
  en:
@@ -41,7 +41,7 @@ Keep the user-facing explanation focused on one next action; avoid
41
41
  exposing setup IDs, internal state keys, or narrating every document/tool read.
42
42
 
43
43
  Read [the scene index](references/scene-index.md) when the target is unclear. For Browser Use,
44
- read [Browser overview](references/browser/overview.md) directly. For Phone Use / Android / 云手机,
44
+ read [Browser overview](references/browser/overview.md) directly. For Phone Use / Android / HarmonyOS / 鸿蒙 / 云手机,
45
45
  read [Phone overview](references/phone/overview.md) directly. Load only the selected branch;
46
46
  read matching troubleshooting guidance on failure and acceptance guidance before testing.
47
47
  Other configuration areas currently use their existing settings; do not invent setup tools.
@@ -6,8 +6,9 @@ non-stale attempt is approved. Otherwise
6
6
  explain the remaining owner action. Read tool_manual phone_use; discover that exact tool only
7
7
  if not already declared. Use only the attempt's selected device, goal, completion and budget.
8
8
 
9
- 1. phone_use open {deviceId:<attempt.deviceId>,mode:"control",appPackage:"com.android.settings"}.
10
- The host opens About phone using Android’s standard Settings intent, avoiding stale subpages.
9
+ 1. phone_use open {deviceId:<attempt.deviceId>,mode:"control",appPackage:<attempt.completion.appPackage>}.
10
+ HarmonyOS uses com.huawei.hmos.settings and the real model opens About phone to read HarmonyOS version.
11
+ For Android, the host opens About phone using Android’s standard Settings intent, avoiding stale subpages.
11
12
  The real model must still navigate to Android version details and produce changed native UI evidence.
12
13
  2. observe. If login, password, verification code or sensitive business screen appears, stop
13
14
  and ask the user to prepare an appropriate screen; do not type into it.
@@ -1,8 +1,8 @@
1
1
  # Phone dependencies
2
2
 
3
3
  Inspect readiness dependencies before asking the user to install anything. Use phone_setup install_dependency
4
- {setupId,kind:"adb"|"scrcpy",expectedRevision,repair?:true} for missing or damaged dependencies.
5
- The product downloads pinned official assets with checksum/version validation and verifies them. Installation
4
+ {setupId,kind:"adb"|"scrcpy"|"hdc"|"java"|"hoscrcpy"|"harmonyos",expectedRevision,repair?:true} for missing or damaged dependencies.
5
+ The product downloads pinned assets with checksum/version validation and verifies them. Explain readiness.distribution and the download size before installation. Installation
6
6
  happens on the Gateway host, not necessarily the computer displaying this chat.
7
7
 
8
8
  Local USB/emulator connections require compatible Android Platform Tools (ADB). A cloud
@@ -16,3 +16,19 @@ that policy and use existing/runtime controls; do not shell-install around it. D
16
16
  use a configured proxy or verified offline bundle in Runtime Tools. Do not replace system
17
17
  ADB keys, kill the shared ADB server, install APKs, switch IMEs, disable security protections,
18
18
  or claim the dependency is ready until a fresh host check passes.
19
+
20
+ For USB HarmonyOS choose source harmonyos. kind harmonyos installs all missing HDC, Java and
21
+ HOScrcpy components in one bounded action and rechecks each before continuing. HDC provides
22
+ screenshots and basic actions; Java 17+ (including javac) and compatible HOScrcpy add live video.
23
+ No DevEco Studio is needed. Installations live in xopc user storage and do not modify system PATH
24
+ or JAVA_HOME. HDC 3.2.0c is obtained as two host-specific raw files from the pinned third-party hdw2 2.3.10
25
+ distribution (about 6 MB), with a fixed size and SHA-256 for each file. Only HDC and its USB
26
+ library are downloaded. Do not fetch an SDK, an npm archive, other platforms or run npm scripts.
27
+ Both CDN candidates serve the same pinned bytes; failure never falls back to a full SDK. Java uses pinned Amazon Corretto.
28
+ HOScrcpy uses the verified 1.0.18-beta SDK from third-party @nszzj/dsh-hos-scrcpy 3.0.2; its
29
+ provenance and notices are retained. Do not describe that archive as an official Huawei download.
30
+ A partial failure preserves completed components; retry installs only missing ones. Offline bundles
31
+ must use the exact catalog filenames and SHA-256. For HDC supply both raw files from its files
32
+ list (flat cache filenames), not the former SDK archive. Dependency readiness proves host
33
+ preparation only; no phone is accessed by detection/installation. Native video still needs device
34
+ compatibility verification after the user connects and authorizes the intended phone.
@@ -0,0 +1,16 @@
1
+ # HarmonyOS USB setup
2
+
3
+ Choose source harmonyos. Inspect dependencies and explain distribution and download size;
4
+ use install_dependency {setupId,kind:"harmonyos",expectedRevision} to install missing host tools
5
+ without DevEco Studio. Existing healthy components are reused. Recheck after a failed operation;
6
+ completed components remain installed. See dependencies.md for sources, proxy and offline bundles.
7
+
8
+ Ask the user to connect and unlock the intended phone on the Gateway computer, enable USB debugging
9
+ and accept the device authorization. Inspect localDiscovery; only register a discovered online serial
10
+ with register_local {setupId,serial,expectedRevision,name?}. Registration keeps an existing device's
11
+ policy and grants new phones access to HarmonyOS Settings only. Do not widen app access.
12
+
13
+ A ready dependency is not proof of a connected phone or working video. Explain screenshot/model
14
+ sharing and the Settings-only test, then follow acceptance.md if the user wants verification.
15
+ Typing remains manual and gestures execute on release. Do not access the phone merely to install
16
+ or detect dependencies, especially when the user needs to keep using it.
@@ -5,10 +5,10 @@ inspect and start. Carry out missing configuration through tools; use ordinary c
5
5
  for guidance, choices, progress and results. For human-only work link the exact host interactionPath to the bounded secure product modal.
6
6
  Reuse healthy registrations, model configuration and the user's prior device/source choices.
7
7
 
8
- Use source {setupId,source:"local"|"aliyun",expectedRevision} after identifying the desired
8
+ Use source {setupId,source:"local"|"aliyun"|"harmonyos",expectedRevision} after identifying the desired
9
9
  route. Ask only if it is unclear. Use configure {setupId,enabled:true,expectedRevision} when
10
10
  Phone Use is disabled. This does not enable a denied Agent tool or widen device app access.
11
- Read models.md for a missing model, dependencies.md for missing software, then local.md or
11
+ Read models.md for a missing model, dependencies.md for missing software, then local.md, harmonyos.md or
12
12
  aliyun.md for the selected route. scrcpy is optional for basic screenshot/navigation testing.
13
13
 
14
14
  The Phone action model is separate from chat. A registered/enabled device is not yet a proven
@@ -2,8 +2,8 @@
2
2
 
3
3
  - Browser / Chrome / browser extension / 浏览器 / 浏览器控制: read browser/overview.md.
4
4
  The complete guided path currently supports the local Chrome extension.
5
- - Phone / Android / USB / ADB / 云手机 / 手机控制: read phone/overview.md.
6
- Supports local Android and Alibaba Cloud ADB; purchase stays in the official console.
5
+ - Phone / Android / HarmonyOS / 鸿蒙 / USB / ADB / 云手机 / 手机控制: read phone/overview.md.
6
+ Supports local Android, USB HarmonyOS and Alibaba Cloud ADB; purchase stays in the official console.
7
7
  - Computer, models, voice, channels and other settings: explain that their unified
8
8
  setup scene is not available yet. Use the existing product settings/manuals and their real
9
9
  diagnostics. Never claim these areas are supported by browser_setup.
@@ -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{l as i,m as a,t as o,u as s}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{l as c,n as l}from"./locale-store-B6OrWgY1.js";import{t as u}from"./messages-jwdBhfL9.js";import{a as d,i as f,o as p,r as m,s as h,t as g}from"./dist-BGTk37IG.js";import{t as _}from"./arrow-left-D880xG-P.js";import{t as v}from"./box-DvYoGszj.js";import{n as y,t as b}from"./extension-paths-DvuaZJuy.js";import{t as x}from"./ellipsis-0k4rZLoy.js";import{t as S}from"./external-link-DjqjBmc3.js";import{t as C}from"./loader-circle-CifKLtgG.js";import{t as w}from"./markdown-view-DrhYZSmg.js";import{t as T}from"./package-wATCyihJ.js";import{t as E}from"./plus-Q2yW6OE7.js";import{t as D}from"./settings-uiTATseT.js";import{t as O}from"./shield-check-BU58siTV.js";import{t as k}from"./trash-2-DusmjVPV.js";import{t as A}from"./triangle-alert-2JXFNNKU.js";import{t as j}from"./x-B_N4OPjy.js";import{t as M}from"./cn-0WouolD0.js";import{t as N}from"./skeleton-BI5TyibZ.js";import{i as P,o as F,r as I,s as L}from"./extension-provider-C4jLFIgh.js";import{a as R,i as z}from"./vendor-swr-CdRzEUwF.js";import{o as B}from"./gateway-realtime-BSRNLciy.js";import{t as V}from"./button-Cc4hUNTt.js";import{n as H}from"./interaction-BdhHBbYa.js";import{t as ee}from"./page-tabs-oeTY7z3_.js";import{t as U}from"./page-header-store-CEn_kPsn.js";import{r as W}from"./settings-form-draft-Dy10ldo8.js";import{l as G,m as te,o as K,r as q,t as ne}from"./dist-ZrL34Ps4.js";import{r as re,t as ie}from"./agent-plugin-dialog-DPabZaSE.js";import{n as J,t as Y}from"./capability-links-DzQWK1Fh.js";import{t as X}from"./capability-icon-DVoZxEgW.js";import{a as Z,i as ae,n as oe,r as se,t as ce}from"./extension-marketplace-api-yXNUkQDA.js";import{n as le,t as ue}from"./capability-header-actions-BxMYfQ8y.js";import{n as de,r as fe,t as pe}from"./plugin-presentation-CO5BFDGW.js";var me=n(),he=`grid auto-rows-fr grid-cols-[repeat(auto-fill,minmax(min(100%,18rem),1fr))] items-stretch gap-4`,ge=`relative h-full min-w-0 rounded-xl border border-edge bg-surface-panel p-4 transition-colors hover:border-edge-strong hover:bg-surface-hover/30`,_e=`absolute inset-0 cursor-pointer rounded-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent`,Q=e(t(),1);function ve(e){return e===`builtin`||e===`user`?e:`marketplace`}var $=r();function ye(e,t){let n=e.find(e=>e.id===t||e.pluginId===t||e.provenance?.packageName===t);return n?n.source===`bundled`?`bundled`:`user`:`absent`}var be={debounced:``,detailPkg:null,quickInstallPkg:null,rowBusy:null,actionError:null,restartHint:null};function xe({className:e,query:t}){let n=s(),r=i(),a=l(e=>e.language),o=u(a).extensionsPage,d=c(e=>!!e.conversationId),f=I(),{mutate:p}=R(),[m,h]=(0,Q.useReducer)(W,be),{debounced:g,detailPkg:_,quickInstallPkg:v,rowBusy:b,actionError:x,restartHint:S}=m,w=d?`marketplace-${g}`:null;(0,Q.useEffect)(()=>{let e=window.setTimeout(()=>h({type:`patch`,patch:{debounced:t.trim()}}),300);return()=>window.clearTimeout(e)},[t]);let{data:E,isLoading:D,error:O}=z(w,()=>ce(g),{revalidateOnFocus:!1}),A=(0,Q.useCallback)(()=>{p(`gateway-extensions-list`),B()},[p]),j=(0,Q.useCallback)(async(e,t)=>{h({type:`patch`,patch:{actionError:null,restartHint:null,rowBusy:e}});try{let n=await se({name:e,overwrite:t});A(),n.requiresGatewayRestart&&h({type:`patch`,patch:{restartHint:o.marketplaceRestartHint}})}catch(e){throw h({type:`patch`,patch:{actionError:e instanceof Error?e.message:o.marketplaceInstallFailed}}),e}finally{h({type:`patch`,patch:{rowBusy:null}})}},[o.marketplaceInstallFailed,o.marketplaceRestartHint,A]),P=(0,Q.useCallback)(async e=>{h({type:`patch`,patch:{actionError:null,restartHint:null,rowBusy:e}});try{let t=await Z(e);A(),t.requiresGatewayRestart&&h({type:`patch`,patch:{restartHint:o.marketplaceRestartHint}})}catch(e){throw h({type:`patch`,patch:{actionError:e instanceof Error?e.message:o.marketplaceUninstallFailed}}),e}finally{h({type:`patch`,patch:{rowBusy:null}})}},[o.marketplaceRestartHint,o.marketplaceUninstallFailed,A]),F=E??[];return(0,$.jsxs)(`div`,{className:M(`flex flex-col gap-4`,e),children:[O?(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:O instanceof Error?O.message:o.marketplaceLoadFailed}):null,x?(0,$.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:x}):null,S?(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:S}):null,D&&!E?(0,$.jsx)(`ul`,{className:he,"aria-label":o.marketplaceLoading,children:[0,1,2,3,4,5].map(e=>(0,$.jsxs)(`li`,{className:`rounded-xl border border-edge bg-surface-panel p-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,$.jsx)(N,{className:`size-10 shrink-0 rounded-xl`}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-2`,children:[(0,$.jsx)(N,{className:`h-5 w-full`}),(0,$.jsx)(N,{className:`h-3 w-2/3`})]}),(0,$.jsx)(N,{className:`h-9 w-16 shrink-0 rounded-lg`})]}),(0,$.jsxs)(`div`,{className:`mt-4 space-y-2`,children:[(0,$.jsx)(N,{className:`h-4 w-full`}),(0,$.jsx)(N,{className:`h-4 w-full`}),(0,$.jsx)(N,{className:`h-4 w-2/3`})]})]},e))}):(0,$.jsx)(`ul`,{className:he,children:F.length===0?(0,$.jsx)(`li`,{className:`col-span-full text-sm text-fg-muted`,children:o.marketplaceEmpty}):F.map(e=>{let t=ye(f,e.id),i=b===e.id,s=f.find(t=>t.pluginId===e.id||t.provenance?.packageName===e.id),c=e.localizations?.[a.startsWith(`zh`)?`zh-CN`:`en`],l=c?.displayName??e.name,u=c?.description??e.description;return(0,$.jsxs)(`li`,{className:ge,children:[(0,$.jsx)(`button`,{type:`button`,"aria-label":`${l}, ${o.marketplaceDetailTitle}`,onClick:()=>s?.pluginId?n(Y(s.pluginId,`installed`,!1,r.pathname+r.search)):h({type:`patch`,patch:{detailPkg:e.id}}),className:_e}),(0,$.jsxs)(`div`,{className:`pointer-events-none relative flex items-start gap-3`,children:[(0,$.jsx)(X,{iconUrl:e.branding?.iconUrl,fallback:T}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start gap-1.5`,children:[(0,$.jsx)(`h3`,{className:`line-clamp-2 break-words font-semibold leading-snug text-fg`,title:l,children:l}),e.verified?(0,$.jsx)(y,{className:`mt-0.5 size-3.5 shrink-0 text-emerald-600 dark:text-emerald-400`,strokeWidth:1.75,"aria-label":`Verified`}):null]}),(0,$.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-fg-subtle`,children:[e.version?(0,$.jsxs)(`span`,{children:[`v`,e.version]}):null,t===`user`?(0,$.jsx)(`span`,{className:s&&fe(s)?`text-amber-700 dark:text-amber-400`:`text-fg-muted`,children:s&&fe(s)?a.startsWith(`zh`)?`需要授权`:`Authorization required`:o.marketplaceInstalled}):null]})]}),(0,$.jsx)(`div`,{role:`group`,className:`pointer-events-auto relative z-10 flex max-w-[45%] shrink-0 items-start`,children:t===`bundled`?(0,$.jsx)(`span`,{className:`rounded-md bg-surface-hover px-2 py-1 text-[11px] font-medium text-fg-muted`,children:o.marketplaceBuiltin}):t===`user`?(0,$.jsx)($.Fragment,{children:e.packageType===`plugin`?(0,$.jsx)(`button`,{type:`button`,onClick:()=>s?.pluginId&&pe(s)?n(J(l,a.startsWith(`zh`))):s?.pluginId?n(Y(s.pluginId,`installed`,fe(s),r.pathname+r.search)):h({type:`patch`,patch:{detailPkg:e.id,quickInstallPkg:null}}),className:M(`inline-flex items-center justify-center rounded-lg border border-edge px-3 py-2 text-xs font-medium text-fg`,`transition-colors active:scale-[0.98] active:bg-surface-hover/80`,`hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`),children:s&&fe(s)?a.startsWith(`zh`)?`去授权`:`Connect account`:s&&pe(s)?a.startsWith(`zh`)?`开始使用`:`Start using`:a.startsWith(`zh`)?`管理插件`:`Manage plugin`}):(0,$.jsxs)(`button`,{type:`button`,disabled:i,onClick:()=>{window.confirm(o.marketplaceUninstallConfirm)&&P(e.id).catch(()=>{})},className:M(`inline-flex items-center justify-center gap-1.5 rounded-lg border border-edge px-3 py-2 text-xs font-medium text-fg`,`transition-colors active:scale-[0.98] active:bg-surface-hover/80`,`hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,`disabled:pointer-events-none disabled:opacity-50`),children:[i?(0,$.jsx)(C,{className:`size-3.5 animate-spin`,"aria-hidden":!0}):(0,$.jsx)(k,{className:`size-3.5`,strokeWidth:2,"aria-hidden":!0}),o.marketplaceUninstall]})}):(0,$.jsx)(`button`,{type:`button`,onClick:()=>h({type:`patch`,patch:(e.packageType,{detailPkg:e.id,quickInstallPkg:null})}),className:M(`inline-flex min-w-16 items-center justify-center rounded-lg border border-edge px-3 py-2 text-xs font-medium text-fg`,`transition-[transform,background-color] active:scale-[0.98]`,`hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`),children:e.packageType===`plugin`?a.startsWith(`zh`)?`安装`:`Install`:o.marketplaceReview})})]}),u?(0,$.jsx)(`p`,{className:`pointer-events-none relative mt-3 line-clamp-3 text-sm leading-relaxed text-fg-muted`,children:u}):null,(e.categories?.length??0)>0?(0,$.jsx)(`div`,{className:`pointer-events-none relative mt-3 flex flex-wrap gap-1.5`,children:e.categories?.map(e=>(0,$.jsx)(`span`,{className:`max-w-full truncate rounded-md border border-edge px-2 py-0.5 text-xs text-fg-muted`,children:e},e))}):null]},e.id)})}),_?(0,$.jsx)(Se,{packageName:_,autoInstall:v===_,copy:o,extensions:f,onClose:()=>h({type:`patch`,patch:{detailPkg:null,quickInstallPkg:null}}),onInstall:j,onUninstall:P}):null]})}function Se(e){let t=(0,me.c)(99),{packageName:n,autoInstall:r,copy:i,extensions:a,onClose:s,onInstall:u,onUninstall:f}=e,[v,y]=(0,Q.useState)(!1),b=l(Oe),[x,S]=(0,Q.useState)(!1),T=c(De)?`ext-mp-detail-${n}`:null,E;t[0]===n?E=t[1]:(E=async()=>oe(n),t[0]=n,t[1]=E);let D;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(D={revalidateOnFocus:!1},t[2]=D):D=t[2];let{data:P,error:F,isLoading:I}=z(T,E,D),L;t[3]!==a||t[4]!==n?(L=ye(a,n),t[3]=a,t[4]=n,t[5]=L):L=t[5];let R=L,B=R===`user`,V=P?.manifest?.permissions,H,ee,U,W,G,te,K,q,ne,J,Y,X;if(t[6]!==r||t[7]!==i||t[8]!==P||t[9]!==F||t[10]!==a||t[11]!==R||t[12]!==I||t[13]!==b||t[14]!==s||t[15]!==n||t[16]!==V||t[17]!==x){te=Symbol.for(`react.early_return_sentinel`);bb0:{let e=V&&typeof V==`object`&&!Array.isArray(V)?Object.entries(V):[],o;t[30]!==i||t[31]!==P?(o=P?.readme?.trim()||(P?.description?.trim()?`### ${P.name}\n\n${P.description}`:`*${i.marketplaceNoReadme}*`),t[30]=i,t[31]=P,t[32]=o):o=t[32];let c=o;if(P?.format===`agent-plugin`){let e;if(t[33]!==P||t[34]!==a||t[35]!==n){let r;t[37]!==P||t[38]!==n?(r=e=>e.provenance?.packageName===n||e.pluginId===P.manifest?.name,t[37]=P,t[38]=n,t[39]=r):r=t[39],e=a.find(r),t[33]=P,t[34]=a,t[35]=n,t[36]=e}else e=t[36];let i=`store:${n}`,o;t[40]!==r||t[41]!==P||t[42]!==s||t[43]!==e||t[44]!==i?(o=(0,$.jsx)(ie,{extension:e,initialSource:i,marketplace:P,autoInstall:r,onClose:s}),t[40]=r,t[41]=P,t[42]=s,t[43]=e,t[44]=i,t[45]=o):o=t[45],te=o;break bb0}U=g,W=!0,t[46]===s?G=t[47]:(G=e=>!e&&s(),t[46]=s,t[47]=G),ee=p,t[48]===Symbol.for(`react.memo_cache_sentinel`)?(X=(0,$.jsx)(d,{className:`xopc-dialog-overlay fixed inset-0 z-[130] bg-scrim`}),t[48]=X):X=t[48],H=m,ne=`xopc-dialog-content fixed left-1/2 top-1/2 z-[131] flex h-[min(44rem,calc(100vh-1.5rem))] 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`,J=Ee;let l;t[49]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,$.jsx)(_,{className:`size-5`}),t[49]=l):l=t[49];let u;t[50]!==i.detailBack||t[51]!==s?(u=(0,$.jsx)(`button`,{type:`button`,onClick:s,className:`inline-flex size-9 items-center justify-center rounded-lg text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,"aria-label":i.detailBack,children:l}),t[50]=i.detailBack,t[51]=s,t[52]=u):u=t[52];let f;t[53]===i.marketplaceDetailTitle?f=t[54]:(f=(0,$.jsx)(h,{className:`min-w-0 flex-1 truncate text-center text-sm font-semibold text-fg`,children:i.marketplaceDetailTitle}),t[53]=i.marketplaceDetailTitle,t[54]=f);let v;t[55]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,$.jsx)(j,{className:`size-5`}),t[55]=v):v=t[55];let y;t[56]!==i.detailClose||t[57]!==s?(y=(0,$.jsx)(`button`,{type:`button`,onClick:s,className:`inline-flex size-9 items-center justify-center rounded-lg text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,"aria-label":i.detailClose,children:v}),t[56]=i.detailClose,t[57]=s,t[58]=y):y=t[58],t[59]!==u||t[60]!==f||t[61]!==y?(Y=(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3`,children:[u,f,y]}),t[59]=u,t[60]=f,t[61]=y,t[62]=Y):Y=t[62],K=`min-h-0 flex-1 overflow-y-auto p-5`,q=I&&!P?(0,$.jsxs)(`div`,{className:`space-y-4`,"aria-label":i.marketplaceLoading,children:[(0,$.jsx)(N,{className:`h-6 w-48`}),(0,$.jsx)(N,{className:`h-4 w-28`}),(0,$.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,$.jsx)(N,{className:`h-12`}),(0,$.jsx)(N,{className:`h-12`})]}),(0,$.jsx)(N,{className:`h-28 w-full`}),(0,$.jsx)(N,{className:`h-36 w-full`})]}):F?(0,$.jsxs)(`div`,{className:`rounded-lg border border-red-300/70 bg-red-50 p-4 text-sm dark:border-red-900 dark:bg-red-950/30`,children:[(0,$.jsx)(`p`,{className:`font-medium text-red-700 dark:text-red-300`,children:i.marketplaceDetailLoadFailed}),(0,$.jsx)(`p`,{className:`mt-1 break-words text-red-600 dark:text-red-400`,children:F instanceof Error?F.message:i.marketplaceLoadFailed})]}):P?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`h3`,{className:`text-lg font-semibold text-fg`,children:P.name}),(0,$.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:(0,$.jsx)(`code`,{className:`rounded bg-surface-panel px-1 py-0.5`,children:P.id})}),(0,$.jsxs)(`dl`,{className:`mt-3 grid gap-2 text-xs text-fg-muted sm:grid-cols-2`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`dt`,{className:`font-medium text-fg`,children:i.marketplaceAuthor}),(0,$.jsx)(`dd`,{children:P.author.username})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`dt`,{className:`font-medium text-fg`,children:i.marketplaceVersion}),(0,$.jsx)(`dd`,{children:P.latestVersion.version})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`dt`,{className:`font-medium text-fg`,children:i.marketplaceDownloads}),(0,$.jsx)(`dd`,{children:P.downloads})]})]}),(0,$.jsx)(re,{data:P,zh:b===`zh`}),R===`bundled`?null:(0,$.jsxs)(`section`,{className:`mt-5 space-y-3 rounded-lg border border-edge bg-surface-base p-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-start gap-2.5`,children:[P.installability.available?(0,$.jsx)(O,{className:`mt-0.5 size-5 shrink-0 text-emerald-600 dark:text-emerald-400`,"aria-hidden":!0}):(0,$.jsx)(A,{className:`mt-0.5 size-5 shrink-0 text-amber-600 dark:text-amber-400`,"aria-hidden":!0}),(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h4`,{className:`text-sm font-semibold text-fg`,children:P.installability.available?i.marketplaceRiskTitle:i.marketplaceUnavailableTitle}),(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-relaxed text-fg-muted`,children:P.installability.available?i.marketplaceCodeRisk:P.installability.reason??i.marketplaceUnavailableBody})]})]}),P.installability.available?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`dl`,{className:`grid gap-2 text-xs text-fg-muted sm:grid-cols-2`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`dt`,{className:`font-medium text-fg`,children:i.marketplaceIntegrity}),(0,$.jsx)(`dd`,{children:i.marketplaceIntegrityVerified})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`dt`,{className:`font-medium text-fg`,children:i.marketplaceDependencies}),(0,$.jsx)(`dd`,{children:P.packageSummary?.dependencyCount??0})]})]}),(0,$.jsxs)(`div`,{className:`text-xs text-fg-muted`,children:[(0,$.jsx)(`p`,{className:`font-medium text-fg`,children:i.marketplacePermissions}),e.length>0?(0,$.jsx)(`ul`,{className:`mt-1 space-y-1`,children:e.map(Te)}):(0,$.jsx)(`p`,{className:`mt-1`,children:i.marketplacePermissionsNone})]}),(P.packageSummary?.lifecycleScripts.length??0)>0?(0,$.jsxs)(`p`,{className:`text-xs leading-relaxed text-amber-700 dark:text-amber-300`,children:[i.marketplaceLifecycleScripts,`: `,P.packageSummary?.lifecycleScripts.join(`, `)]}):null,(0,$.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2 text-sm text-fg`,children:[(0,$.jsx)(`input`,{type:`checkbox`,checked:x,onChange:e=>S(e.target.checked),className:`mt-0.5 size-4 rounded border-edge accent-[var(--color-accent)]`}),(0,$.jsx)(`span`,{children:i.marketplaceRiskConfirm})]})]}):null]}),P.readme?.trim()?(0,$.jsx)(`h4`,{className:`mb-2 mt-6 text-sm font-semibold text-fg`,children:i.marketplaceDetailReadmeHeading}):null,(0,$.jsx)(`div`,{className:`markdown-content min-w-0 break-words text-sm`,children:(0,$.jsx)(w,{content:c})})]}):null}t[6]=r,t[7]=i,t[8]=P,t[9]=F,t[10]=a,t[11]=R,t[12]=I,t[13]=b,t[14]=s,t[15]=n,t[16]=V,t[17]=x,t[18]=H,t[19]=ee,t[20]=U,t[21]=W,t[22]=G,t[23]=te,t[24]=K,t[25]=q,t[26]=ne,t[27]=J,t[28]=Y,t[29]=X}else H=t[18],ee=t[19],U=t[20],W=t[21],G=t[22],te=t[23],K=t[24],q=t[25],ne=t[26],J=t[27],Y=t[28],X=t[29];if(te!==Symbol.for(`react.early_return_sentinel`))return te;let Z;t[63]!==K||t[64]!==q?(Z=(0,$.jsx)(`div`,{className:K,children:q}),t[63]=K,t[64]=q,t[65]=Z):Z=t[65];let ae;t[66]!==v||t[67]!==i.marketplaceBuiltinGoBuiltin||t[68]!==i.marketplaceBuiltinManageHint||t[69]!==i.marketplaceInstall||t[70]!==i.marketplaceReinstall||t[71]!==i.marketplaceReinstallConfirm||t[72]!==i.marketplaceUninstall||t[73]!==i.marketplaceUninstallConfirm||t[74]!==P||t[75]!==R||t[76]!==s||t[77]!==u||t[78]!==f||t[79]!==n||t[80]!==x||t[81]!==B?(ae=P?(0,$.jsx)(`div`,{className:`flex shrink-0 flex-wrap items-center justify-end gap-2 border-t border-edge-subtle px-5 py-4`,children:R===`bundled`?(0,$.jsxs)(`div`,{className:`flex w-full flex-col items-stretch gap-2`,children:[(0,$.jsx)(`p`,{className:`text-sm leading-relaxed text-fg-muted`,children:i.marketplaceBuiltinManageHint}),(0,$.jsx)(o,{to:`/capabilities/extensions?tab=builtin`,onClick:s,className:`inline-flex w-fit items-center justify-center rounded-lg border border-edge px-3 py-2 text-sm font-medium text-fg hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:i.marketplaceBuiltinGoBuiltin})]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`button`,{type:`button`,disabled:v||!P.installability.available||!x,onClick:()=>{B&&!window.confirm(i.marketplaceReinstallConfirm)||(y(!0),u(n,B).catch(we).finally(()=>y(!1)))},className:M(`inline-flex items-center justify-center gap-1.5 rounded-lg px-3 py-2 text-sm font-medium`,`bg-accent text-on-accent shadow-surface hover:bg-accent-hover`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel`,`disabled:pointer-events-none disabled:opacity-50`),children:[v?(0,$.jsx)(C,{className:`size-4 animate-spin`,"aria-hidden":!0}):null,B?i.marketplaceReinstall:i.marketplaceInstall]}),B?(0,$.jsxs)(`button`,{type:`button`,disabled:v,onClick:()=>{window.confirm(i.marketplaceUninstallConfirm)&&(y(!0),f(n).then(()=>s()).catch(Ce).finally(()=>y(!1)))},className:M(`inline-flex items-center justify-center gap-1.5 rounded-lg border border-edge px-3 py-2 text-sm font-medium text-fg`,`hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,`disabled:pointer-events-none disabled:opacity-50`),children:[(0,$.jsx)(k,{className:`size-4 shrink-0`,"aria-hidden":!0}),i.marketplaceUninstall]}):null]})}):null,t[66]=v,t[67]=i.marketplaceBuiltinGoBuiltin,t[68]=i.marketplaceBuiltinManageHint,t[69]=i.marketplaceInstall,t[70]=i.marketplaceReinstall,t[71]=i.marketplaceReinstallConfirm,t[72]=i.marketplaceUninstall,t[73]=i.marketplaceUninstallConfirm,t[74]=P,t[75]=R,t[76]=s,t[77]=u,t[78]=f,t[79]=n,t[80]=x,t[81]=B,t[82]=ae):ae=t[82];let se;t[83]!==H||t[84]!==Z||t[85]!==ae||t[86]!==ne||t[87]!==J||t[88]!==Y?(se=(0,$.jsxs)(H,{className:ne,onOpenAutoFocus:J,children:[Y,Z,ae]}),t[83]=H,t[84]=Z,t[85]=ae,t[86]=ne,t[87]=J,t[88]=Y,t[89]=se):se=t[89];let ce;t[90]!==ee||t[91]!==se||t[92]!==X?(ce=(0,$.jsxs)(ee,{children:[X,se]}),t[90]=ee,t[91]=se,t[92]=X,t[93]=ce):ce=t[93];let le;return t[94]!==U||t[95]!==W||t[96]!==G||t[97]!==ce?(le=(0,$.jsx)(U,{defaultOpen:W,onOpenChange:G,children:ce}),t[94]=U,t[95]=W,t[96]=G,t[97]=ce,t[98]=le):le=t[98],le}function Ce(){}function we(){}function Te(e){let[t,n]=e;return(0,$.jsxs)(`li`,{className:`break-words`,children:[(0,$.jsx)(`code`,{children:t}),`: `,Array.isArray(n)?n.join(`, `):String(n)]},t)}function Ee(e){return e.preventDefault()}function De(e){return!!e.conversationId}function Oe(e){return e.language}function ke({embedded:e=!1,onHeaderActionChange:t}){let n=s(),r=i(),c=l(e=>e.language),d=u(c),f=U(e=>e.setPageHeader),p=U(e=>e.clearPageHeader),m=I(),h=P(),[g,_]=a(),y=ve(g.get(`tab`)??(m.some(e=>e.source!==`bundled`)?`user`:null)),b=(0,Q.useRef)(!1),S=g.get(`q`)??``,[C,w]=(0,Q.useState)(y),[T,D]=(0,Q.useState)(S),[O,k]=(0,Q.useState)(null),[A,j]=(0,Q.useState)(!1),N=g.toString(),F=(0,Q.useRef)(N);if(F.current!==N){F.current=N;let e=ve(g.get(`tab`)),t=g.get(`q`)??``;w(t=>t===e?t:e),D(e=>e===t?e:t)}(0,Q.useEffect)(()=>{_(e=>{let t=new URLSearchParams(e),n=T.trim();return n?t.set(`q`,n):t.delete(`q`),C===`marketplace`?t.delete(`tab`):t.set(`tab`,C),t.toString()===e.toString()?e:t},{replace:!0})},[C,T,_]);let L=(0,Q.useMemo)(()=>m.filter(e=>e.source===`bundled`),[m]),R=(0,Q.useMemo)(()=>m.filter(e=>e.source!==`bundled`),[m]);(0,Q.useEffect)(()=>{h||b.current||(b.current=!0,!g.has(`tab`)&&R.length&&w(`user`))},[h,g,R.length]);let z=C===`builtin`?L:R,B=(0,Q.useMemo)(()=>{let e=T.trim().toLowerCase(),t=z;return e&&(t=t.filter(t=>(t.name??``).toLowerCase().includes(e)||t.id.toLowerCase().includes(e)||(t.description??``).toLowerCase().includes(e))),t.toSorted((e,t)=>e.hasUi===t.hasUi?(e.name||e.id).localeCompare(t.name||t.id,c):e.hasUi?-1:1)},[z,T,c]);(0,Q.useEffect)(()=>{k(e=>{if(!e)return e;let t=m.find(t=>t.id===e.id);return t?Ae(e)===Ae(t)&&e.active===t.active&&JSON.stringify(e)===JSON.stringify(t)?e:t:null})},[m]);let W=(0,Q.useMemo)(()=>({searchLabel:C===`marketplace`?d.extensionsPage.marketplaceSearchPlaceholder:d.extensionsPage.searchPlaceholder,search:(0,$.jsx)(le,{value:T,onChange:D,placeholder:C===`marketplace`?d.extensionsPage.marketplaceSearchPlaceholder:d.extensionsPage.searchPlaceholder}),overflow:(0,$.jsxs)(G,{children:[(0,$.jsx)(te,{asChild:!0,children:(0,$.jsx)(V,{variant:`secondary`,className:`size-9 shrink-0 p-0`,"aria-label":d.capabilitiesHub.moreActions,title:d.capabilitiesHub.moreActions,children:(0,$.jsx)(x,{className:`size-4`,"aria-hidden":!0})})}),(0,$.jsx)(K,{children:(0,$.jsxs)(ne,{align:`end`,sideOffset:6,className:`z-50 min-w-48 rounded-xl border border-edge bg-surface-overlay p-1 shadow-popover`,children:[(0,$.jsxs)(q,{className:M(`touch-target flex cursor-pointer items-center gap-2 rounded-lg px-3 py-2 text-sm text-fg outline-none data-[highlighted]:bg-surface-hover`,H.transition),onSelect:()=>j(!0),children:[(0,$.jsx)(E,{className:`size-4 text-fg-muted`,"aria-hidden":!0}),c.startsWith(`zh`)?`安装插件`:`Install plugin`]}),(0,$.jsx)(q,{asChild:!0,children:(0,$.jsxs)(o,{to:`/local-apps`,className:M(`touch-target flex cursor-pointer items-center gap-2 rounded-lg px-3 py-2 text-sm text-fg outline-none data-[highlighted]:bg-surface-hover`,H.transition),children:[(0,$.jsx)(v,{className:`size-4 text-fg-muted`,"aria-hidden":!0}),d.extensionsPage.openLocalApps]})})]})})]}),primary:(0,$.jsx)(V,{asChild:!0,variant:`primary`,className:`h-9 shrink-0`,children:(0,$.jsxs)(o,{to:`/local-apps/new`,"aria-label":d.extensionsPage.createLocalApp,children:[(0,$.jsx)(E,{className:`size-4`,"aria-hidden":!0}),(0,$.jsx)(`span`,{className:`hidden sm:inline`,children:d.extensionsPage.createLocalApp})]})})}),[c,d.capabilitiesHub.moreActions,d.extensionsPage,C,T]);(0,Q.useLayoutEffect)(()=>e?(t?.(W),()=>t?.(null)):(f({startExtra:null,main:(0,$.jsx)(`div`,{className:`min-w-0`,children:(0,$.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:d.extensionsPage.title})}),end:(0,$.jsx)(ue,{contribution:W})}),()=>p()),[p,e,W,d.extensionsPage.title,t,f]);let re=[{id:`user`,label:d.extensionsPage.tabUser,count:h?void 0:R.length},{id:`marketplace`,label:d.extensionsPage.tabMarketplace},{id:`builtin`,label:d.extensionsPage.tabBuiltin,count:h?void 0:L.length}];return(0,$.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col bg-surface-panel`,children:[(0,$.jsxs)(`div`,{className:M(`mx-auto w-full max-w-7xl px-4 sm:px-6 lg:px-8`,`pb-7 pt-3 lg:pb-9 lg:pt-4`),children:[(0,$.jsx)(`div`,{className:`mb-6 border-b border-edge-subtle pb-3`,children:(0,$.jsx)(ee,{items:re,activeTab:C,onChange:w,ariaLabel:d.extensionsPage.extensionsNavAria,tabIdPrefix:`extensions-tab`,panelIdPrefix:`extensions-panel`,className:`flex-wrap`})}),C===`marketplace`?(0,$.jsx)(xe,{query:T}):h?(0,$.jsx)(Le,{}):C===`builtin`&&L.length===0?(0,$.jsx)(ze,{message:d.extensionsPage.emptyBuiltin}):C===`user`&&R.length===0?(0,$.jsx)(ze,{message:d.extensionsPage.emptyUser}):B.length===0?(0,$.jsx)(`p`,{className:`px-3 py-14 text-center text-sm text-fg-muted sm:px-5 xl:px-6`,children:d.extensionsPage.noSearchResults}):(0,$.jsx)(`div`,{className:he,children:B.map(e=>(0,$.jsx)(Ne,{extension:e,copy:d.extensionsPage,onOpen:()=>e.pluginId?n(Y(e.pluginId,`installed`,!1,r.pathname+r.search)):k(e)},e.id))})]}),O?O.format===`agent-plugin`?(0,$.jsx)(ie,{extension:O,onClose:()=>k(null)},O.id):(0,$.jsx)(Fe,{extension:O,copy:d.extensionsPage,onClose:()=>k(null)},O.id):null,A?(0,$.jsx)(ie,{onClose:()=>j(!1)}):null]})}function Ae(e){return e.activationEligible??e.active}function je(e,t){return e.source===`bundled`?t.providerBundled:e.source===`global`?t.providerGlobal:e.source===`workspace`?t.providerWorkspace:t.providerOther}function Me(e,t){let n=Ae(e);return n&&e.active?t.runStateLive:n&&!e.active?t.runStatePendingOn:!n&&e.active?t.runStatePendingOff:t.runStateOff}function Ne(e){let t=(0,me.c)(56),{extension:n,copy:r,onOpen:a}=e,o=l(Pe),c,u;t[0]!==n||t[1]!==o?(u=o.startsWith(`zh`),c=de(n,u),t[0]=n,t[1]=o,t[2]=c,t[3]=u):(c=t[2],u=t[3]);let d=c,f;t[4]===n?f=t[5]:(f=fe(n),t[4]=n,t[5]=f);let p=f,m=n.localizations?.[u?`zh-CN`:`en`]?.description??n.description,h=s(),g=i(),_;t[6]===n?_=t[7]:(_=!!n.pluginId&&pe(n),t[6]=n,t[7]=_);let b=_,x=p?u?`去授权`:`Connect account`:b?u?`开始使用`:`Start using`:u?`管理插件`:`Manage plugin`,S;t[8]!==b||t[9]!==n.pluginId||t[10]!==g||t[11]!==d||t[12]!==h||t[13]!==p||t[14]!==a||t[15]!==u?(S=()=>{b?h(J(d,u)):p&&n.pluginId?h(Y(n.pluginId,`installed`,!0,g.pathname+g.search)):a()},t[8]=b,t[9]=n.pluginId,t[10]=g,t[11]=d,t[12]=h,t[13]=p,t[14]=a,t[15]=u,t[16]=S):S=t[16];let C=S,w=`${d}, ${r.marketplaceDetailTitle}`,T;t[17]!==a||t[18]!==w?(T=(0,$.jsx)(`button`,{type:`button`,"aria-label":w,onClick:a,className:_e}),t[17]=a,t[18]=w,t[19]=T):T=t[19];let E=n.branding?.iconUrl,D;t[20]===E?D=t[21]:(D=(0,$.jsx)(X,{iconUrl:E,fallback:v}),t[20]=E,t[21]=D);let O;t[22]===d?O=t[23]:(O=(0,$.jsx)(`h2`,{className:`line-clamp-2 break-words font-semibold leading-snug text-fg`,title:d,children:d}),t[22]=d,t[23]=O);let k;t[24]===n.provenance?.publisherVerification?k=t[25]:(k=n.provenance?.publisherVerification===`verified`?(0,$.jsx)(y,{className:`mt-0.5 size-3.5 shrink-0 text-emerald-600 dark:text-emerald-400`,strokeWidth:1.75,"aria-label":`Verified`}):null,t[24]=n.provenance?.publisherVerification,t[25]=k);let A;t[26]!==O||t[27]!==k?(A=(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start gap-1.5`,children:[O,k]}),t[26]=O,t[27]=k,t[28]=A):A=t[28];let j;t[29]===n.version?j=t[30]:(j=n.version?(0,$.jsxs)(`span`,{children:[`v`,n.version]}):null,t[29]=n.version,t[30]=j);let M=p?`text-amber-700 dark:text-amber-400`:`text-fg-muted`,N=p?u?`需要授权`:`Authorization required`:Ae(n)?r.statusEnabled:r.runStateOff,P;t[31]!==M||t[32]!==N?(P=(0,$.jsx)(`span`,{className:M,children:N}),t[31]=M,t[32]=N,t[33]=P):P=t[33];let F;t[34]!==j||t[35]!==P?(F=(0,$.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-fg-subtle`,children:[j,P]}),t[34]=j,t[35]=P,t[36]=F):F=t[36];let I;t[37]!==A||t[38]!==F?(I=(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[A,F]}),t[37]=A,t[38]=F,t[39]=I):I=t[39];let L;t[40]!==x||t[41]!==C?(L=(0,$.jsx)(`div`,{className:`pointer-events-auto relative z-10 flex max-w-[45%] shrink-0 items-start`,children:(0,$.jsx)(`button`,{type:`button`,onClick:C,className:`inline-flex items-center justify-center rounded-lg border border-edge px-3 py-2 text-xs font-medium text-fg transition-colors hover:bg-surface-hover active:scale-[0.98] active:bg-surface-hover/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:x})}),t[40]=x,t[41]=C,t[42]=L):L=t[42];let R;t[43]!==I||t[44]!==L||t[45]!==D?(R=(0,$.jsxs)(`div`,{className:`pointer-events-none relative flex items-start gap-3`,children:[D,I,L]}),t[43]=I,t[44]=L,t[45]=D,t[46]=R):R=t[46];let z;t[47]!==r.cardNoDescription||t[48]!==m?(z=m?.trim()||r.cardNoDescription,t[47]=r.cardNoDescription,t[48]=m,t[49]=z):z=t[49];let B;t[50]===z?B=t[51]:(B=(0,$.jsx)(`p`,{className:`pointer-events-none relative mt-3 line-clamp-3 text-sm leading-relaxed text-fg-muted`,children:z}),t[50]=z,t[51]=B);let V;return t[52]!==R||t[53]!==B||t[54]!==T?(V=(0,$.jsxs)(`article`,{className:ge,children:[T,R,B]}),t[52]=R,t[53]=B,t[54]=T,t[55]=V):V=t[55],V}function Pe(e){return e.language}function Fe({extension:e,copy:t,onClose:n}){let{mutate:r}=R(),[i,a]=(0,Q.useState)(null),[s,c]=(0,Q.useState)(null),[l,u]=(0,Q.useState)(!1),v=e.activationEligible===!0,y=(0,Q.useCallback)(async()=>{c(null),u(!1),a(`toggle`);try{let{requiresGatewayRestart:t}=await ae({extensionId:e.id,enabled:!v});await r(`gateway-extensions-list`),B(),u(t)}catch(e){c(e instanceof Error?e.message:t.extensionToggleFailed)}finally{a(null)}},[v,t.extensionToggleFailed,e.id,r]),x=(0,Q.useCallback)(async()=>{if(!(e.source===`bundled`||!window.confirm(t.extensionUninstallConfirm))){c(null),u(!1),a(`uninstall`);try{await Z(e.id),await r(`gateway-extensions-list`),B(),n()}catch(e){c(e instanceof Error?e.message:t.marketplaceUninstallFailed),a(null)}}},[t.extensionUninstallConfirm,t.marketplaceUninstallFailed,e.id,e.source,r,n]),w=e.ui?.contributions?.pages??[],T=e.ui?.contributions?.settingsPanels??[],E=e.ui?.contributions?.chatWidgets??[],O=w.find(e=>e.showInNav)??w[0],A=T[0],N=O?b(e.id,O):null,P=A?`/settings/ext/${e.id}/${A.id}`:e.hasConfigSchema||F(e)?`/settings/ext/${e.id}`:null;return(0,$.jsx)(g,{defaultOpen:!0,onOpenChange:e=>!e&&n(),children:(0,$.jsxs)(p,{children:[(0,$.jsx)(d,{className:`xopc-dialog-overlay fixed inset-0 z-[130] bg-scrim`}),(0,$.jsxs)(m,{className:`xopc-dialog-content fixed left-1/2 top-1/2 z-[131] flex max-h-[min(90vh,44rem)] 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`,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3`,children:[(0,$.jsx)(`button`,{type:`button`,onClick:n,className:`inline-flex size-9 items-center justify-center rounded-lg text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,"aria-label":t.detailBack,children:(0,$.jsx)(_,{className:`size-5`})}),(0,$.jsx)(h,{className:`min-w-0 flex-1 truncate text-center text-sm font-semibold text-fg`,children:t.detailTitle}),(0,$.jsxs)(f,{className:`sr-only`,children:[e.name,` (`,e.id,`)`]}),(0,$.jsx)(`button`,{type:`button`,onClick:n,className:`inline-flex size-9 items-center justify-center rounded-lg text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,"aria-label":t.detailClose,children:(0,$.jsx)(j,{className:`size-5`})})]}),(0,$.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-5`,children:[(0,$.jsxs)(`div`,{className:`flex flex-wrap items-start gap-4`,children:[(0,$.jsx)(`div`,{className:`flex size-16 shrink-0 items-center justify-center rounded-2xl bg-accent-soft text-xl font-semibold text-accent-fg`,"aria-hidden":!0,children:(e.name||e.id).charAt(0).toUpperCase()}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`h3`,{className:`text-lg font-semibold text-fg`,children:e.name}),(0,$.jsxs)(`p`,{className:`mt-0.5 text-sm text-fg-muted`,children:[t.detailProviderPrefix,` `,je(e,t)]}),e.version?(0,$.jsxs)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:[`v`,e.version]}):null]})]}),(0,$.jsx)(`p`,{className:`mt-5 text-sm leading-relaxed text-fg`,children:e.description?.trim()||t.detailNoDescription}),e.hasUi?null:(0,$.jsx)(`p`,{className:`mt-3 text-xs text-fg-muted`,children:t.backendOnlyHint}),(0,$.jsx)(`p`,{className:`mt-2 text-xs text-fg-muted`,children:Me(e,t)}),e.source===`bundled`?(0,$.jsx)(`p`,{className:`mt-4 rounded-lg bg-surface-hover/40 px-3 py-2 text-xs text-fg-muted shadow-surface dark:bg-surface-hover/20`,children:t.builtinConfigHint}):null,(0,$.jsxs)(`div`,{className:`mt-3 rounded-lg bg-surface-hover/40 p-3 shadow-surface dark:bg-surface-hover/20`,children:[(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:t.builtinRuntimeToggle}),(0,$.jsx)(V,{type:`button`,variant:`secondary`,disabled:i!==null,onClick:()=>void y(),className:`shrink-0 py-1.5 text-xs`,children:i===`toggle`?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(C,{className:`mr-1.5 size-3.5 shrink-0 animate-spin`,"aria-hidden":!0}),t.builtinToggleBusy]}):v?t.builtinToggleDisable:t.builtinToggleEnable})]}),s?(0,$.jsx)(`p`,{className:`mt-2 text-xs text-rose-600 dark:text-rose-400`,children:s}):null,l?(0,$.jsx)(`p`,{className:`mt-2 text-xs text-fg-muted`,children:t.builtinToggleRestartHint}):null,e.source===`bundled`?null:(0,$.jsx)(`div`,{className:`mt-3 flex justify-end border-t border-edge-subtle pt-3`,children:(0,$.jsxs)(V,{type:`button`,variant:`ghost`,disabled:i!==null,onClick:()=>void x(),className:`text-danger hover:bg-danger-soft hover:text-danger`,children:[i===`uninstall`?(0,$.jsx)(C,{className:`size-3.5 animate-spin`,"aria-hidden":!0}):(0,$.jsx)(k,{className:`size-3.5`,"aria-hidden":!0}),t.marketplaceUninstall]})})]}),e.hasUi&&(w.length>0||T.length>0||E.length>0)?(0,$.jsxs)(`section`,{className:`mt-8`,children:[(0,$.jsx)(`h4`,{className:`mb-3 text-sm font-semibold text-fg`,children:t.detailSectionFeatures}),(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,$.jsx)(Ie,{template:t.badgePages,count:w.length,hidden:w.length===0}),(0,$.jsx)(Ie,{template:t.badgeSettings,count:T.length,hidden:T.length===0}),(0,$.jsx)(Ie,{template:t.badgeWidgets,count:E.length,hidden:E.length===0})]})]}):null,L(e)&&(N||P)?(0,$.jsxs)(`div`,{className:`mt-6 flex flex-wrap gap-2 border-t border-edge-subtle pt-4`,children:[N?(0,$.jsxs)(o,{to:N,onClick:n,className:M(`inline-flex items-center gap-1.5 rounded-lg border border-edge px-3 py-2 text-sm font-medium text-fg`,`hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`),children:[(0,$.jsx)(S,{className:`size-4 shrink-0 opacity-80`,"aria-hidden":!0}),t.open]}):null,P?(0,$.jsxs)(o,{to:P,onClick:n,className:M(`inline-flex items-center gap-1.5 rounded-lg border border-edge px-3 py-2 text-sm font-medium text-fg`,`hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`),children:[(0,$.jsx)(D,{className:`size-4 shrink-0 opacity-80`,"aria-hidden":!0}),t.openSettings]}):null]}):null,(0,$.jsx)(`p`,{className:`mt-6 text-[11px] leading-relaxed text-fg-muted`,children:t.restartNote})]})]})]})})}function Ie(e){let t=(0,me.c)(6),{template:n,count:r,hidden:i}=e;if(i||r===0)return null;let a;if(t[0]!==r||t[1]!==n){let e;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=/\{\{count\}\}/g,t[3]=e):e=t[3],a=n.replace(e,String(r)),t[0]=r,t[1]=n,t[2]=a}else a=t[2];let o;return t[4]===a?o=t[5]:(o=(0,$.jsx)(`span`,{className:`inline-flex items-center rounded-md bg-surface-hover px-2 py-0.5 text-[11px] font-medium text-fg-muted`,children:a}),t[4]=a,t[5]=o),o}function Le(){let e=(0,me.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(`div`,{className:he,"aria-busy":`true`,children:Array.from({length:6},Re)}),e[0]=t):t=e[0],t}function Re(e,t){return(0,$.jsx)(N,{className:`h-32 rounded-xl`},t)}function ze(e){let t=(0,me.c)(2),{message:n}=e,r;return t[0]===n?r=t[1]:(r=(0,$.jsx)(`div`,{className:`flex min-h-[min(40vh,16rem)] flex-col items-center justify-center rounded-xl border border-edge-subtle bg-surface-base px-4 py-12 text-center shadow-surface`,children:(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:n})}),t[0]=n,t[1]=r),r}export{ke as ExtensionsPage};