@xopcai/xopc 0.0.423 → 0.0.425

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/dist/browser-ext/dist/assets/{page-context-BKnEwsOO.js → page-context-b-rB5vJC.js} +1 -1
  2. package/dist/browser-ext/dist/background.js +1 -1
  3. package/dist/browser-ext/dist/sidepanel.html +1 -1
  4. package/dist/browser-ext/dist/sidepanel.js +29 -1
  5. package/dist/browser-ext/manifest.json +1 -1
  6. package/dist/extensions/telegram/xopc.extension.json +1 -1
  7. package/dist/gateway/static/root/assets/{activity-store-DNkXnatd.js → activity-store-CMw8qBuC.js} +1 -1
  8. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DOnHjAY_.js → agent-avatar-dicebear-JI0YWOIm.js} +1 -1
  9. package/dist/gateway/static/root/assets/{agent-avatar-display-C9Lu9LVl.js → agent-avatar-display-YqmwzOSa.js} +2 -2
  10. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-DlvjxWg6.js +1 -0
  11. package/dist/gateway/static/root/assets/{agent-plugin-dialog-sQNbqsGL.js → agent-plugin-dialog-OBueuQSc.js} +1 -1
  12. package/dist/gateway/static/root/assets/{agents-DZ77luyw.js → agents-Cp6_5OOQ.js} +4 -4
  13. package/dist/gateway/static/root/assets/{agents-admin-api-DIm_IHQL.js → agents-admin-api-DLnmdC1h.js} +1 -1
  14. package/dist/gateway/static/root/assets/{api-BUJQiCoX.js → api-Boc-CVh7.js} +1 -1
  15. package/dist/gateway/static/root/assets/{api-By0yX3z1.js → api-bL7sxjAF.js} +1 -1
  16. package/dist/gateway/static/root/assets/{app-management-settings-panel-PPgc1xaD.js → app-management-settings-panel-jIG5i7KE.js} +1 -1
  17. package/dist/gateway/static/root/assets/{appearance-settings-DbI9t4GS.js → appearance-settings-BnaQW9Xd.js} +1 -1
  18. package/dist/gateway/static/root/assets/{apps-page-DIC28vl4.js → apps-page-C2WKUwtN.js} +1 -1
  19. package/dist/gateway/static/root/assets/{archive-plugin-B5ZSQVw2.js → archive-plugin-DjboG3kA.js} +1 -1
  20. package/dist/gateway/static/root/assets/{automation-api-CfjICuJK.js → automation-api-CZqL9l_d.js} +1 -1
  21. package/dist/gateway/static/root/assets/{automation-result-state-DpQSVGNY.js → automation-result-state-DRd-X_Ai.js} +1 -1
  22. package/dist/gateway/static/root/assets/automation-task-card-wbnR5i6N.js +3 -0
  23. package/dist/gateway/static/root/assets/{automations-page-1NCQMSK1.js → automations-page-HyBQIfmn.js} +1 -1
  24. package/dist/gateway/static/root/assets/automations-workspace-D6cTOKr7.js +9 -0
  25. package/dist/gateway/static/root/assets/{binary-plugins-_riZg0hb.js → binary-plugins-Bg8ARZUH.js} +1 -1
  26. package/dist/gateway/static/root/assets/{block-editor-BpYTVDaG.js → block-editor-DKohqFAW.js} +2 -2
  27. package/dist/gateway/static/root/assets/{browser-automation-inputs-DLbHyWE5.js → browser-automation-inputs-YeibTzw4.js} +1 -1
  28. package/dist/gateway/static/root/assets/{browser-automations-page-BfOHr7er.js → browser-automations-page-BWNcbuz2.js} +1 -1
  29. package/dist/gateway/static/root/assets/{browser-control-api-CqjIQdQ4.js → browser-control-api-CDeuxy2x.js} +1 -1
  30. package/dist/gateway/static/root/assets/{browser-settings-page-CqjLefvt.js → browser-settings-page-L0nBjfhG.js} +1 -1
  31. package/dist/gateway/static/root/assets/{capabilities-BQ0bsu6d.js → capabilities-BcQa8c9n.js} +1 -1
  32. package/dist/gateway/static/root/assets/{capabilities-CTu4Y4Gc.js → capabilities-aT-QjNTl.js} +1 -1
  33. package/dist/gateway/static/root/assets/capabilities-page-DlpuHdHi.js +2 -0
  34. package/dist/gateway/static/root/assets/{capabilities-settings-panel-Cq28kvMr.js → capabilities-settings-panel-pvqkN2-2.js} +3 -3
  35. package/dist/gateway/static/root/assets/{channels-BPVkbqBI.js → channels-BUPtawh6.js} +1 -1
  36. package/dist/gateway/static/root/assets/{chat-agents-api-XnegLpGF.js → chat-agents-api-B8JO6Tcj.js} +1 -1
  37. package/dist/gateway/static/root/assets/{chat-chart-block-BJFCFZz2.js → chat-chart-block-DRtuFfF1.js} +1 -1
  38. package/dist/gateway/static/root/assets/chat-page-BP0huA-W.js +72 -0
  39. package/dist/gateway/static/root/assets/{chat-terminal-dock-B9KlHa8j.js → chat-terminal-dock-Dkqq5FSL.js} +1 -1
  40. package/dist/gateway/static/root/assets/{command-palette-api-DW7O6fME.js → command-palette-api-qujvNqkK.js} +1 -1
  41. package/dist/gateway/static/root/assets/{composer-payload-handoff-qheyxoAD.js → composer-payload-handoff-CYIhcczq.js} +1 -1
  42. package/dist/gateway/static/root/assets/{computer-settings-page-KmaJ2UVz.js → computer-settings-page-8q4hRmoo.js} +1 -1
  43. package/dist/gateway/static/root/assets/connected-providers-grid-CKZfhHSD.js +1 -0
  44. package/dist/gateway/static/root/assets/{connector-service-page-BgexZyHR.js → connector-service-page-DQaTI21R.js} +1 -1
  45. package/dist/gateway/static/root/assets/{connectors-api-DEYdFCdS.js → connectors-api-BjypBp2g.js} +1 -1
  46. package/dist/gateway/static/root/assets/connectors-page-Lf1ZzaVn.js +1 -0
  47. package/dist/gateway/static/root/assets/{date-picker-CSuiNiPU.js → date-picker-D_PSHGpe.js} +1 -1
  48. package/dist/gateway/static/root/assets/{dependency-picker-DHFVFI74.js → dependency-picker-UqKVJ9dv.js} +1 -1
  49. package/dist/gateway/static/root/assets/{desktop-pet-DK3tV5PW.js → desktop-pet-1Et9VqkM.js} +1 -1
  50. package/dist/gateway/static/root/assets/{desktop-pet-narrative-CS8qJpNO.js → desktop-pet-narrative-rADKU0FX.js} +1 -1
  51. package/dist/gateway/static/root/assets/{desktop-pet-settings-BKIcBnfQ.js → desktop-pet-settings-0fCGgaG7.js} +1 -1
  52. package/dist/gateway/static/root/assets/{dev-view-store-ZgXvR5Sl.js → dev-view-store-TTj_djD8.js} +1 -1
  53. package/dist/gateway/static/root/assets/device-pairing-wizard-ByEL5lvM.js +1 -0
  54. package/dist/gateway/static/root/assets/{directory-picker-path-field-C4N_kXUX.js → directory-picker-path-field-C07a7wYX.js} +1 -1
  55. package/dist/gateway/static/root/assets/{discussion-annotation-sync-CdbkKHiR.js → discussion-annotation-sync-BFqKm9ky.js} +1 -1
  56. package/dist/gateway/static/root/assets/{extension-debug-page-vdSyb_US.js → extension-debug-page-DFaVlqas.js} +1 -1
  57. package/dist/gateway/static/root/assets/{extension-iframe-host-D4w7-mf1.js → extension-iframe-host-BfzPfXBq.js} +1 -1
  58. package/dist/gateway/static/root/assets/{extension-marketplace-api-BVMU-5FO.js → extension-marketplace-api-ow0K1Y4_.js} +1 -1
  59. package/dist/gateway/static/root/assets/{extension-page-BE7FHMek.js → extension-page-CrDADV5W.js} +1 -1
  60. package/dist/gateway/static/root/assets/{extension-provider-8RM98QmD.js → extension-provider-mnRoa63o.js} +1 -1
  61. package/dist/gateway/static/root/assets/{extension-settings-page--SP1Dy2l.js → extension-settings-page-BLl02GFY.js} +1 -1
  62. package/dist/gateway/static/root/assets/{file-preview-surface-CFFuUQVY.js → file-preview-surface-TGdKqhCf.js} +1 -1
  63. package/dist/gateway/static/root/assets/{gateway-config-swr-i6wzzdws.js → gateway-config-swr-DfPQIHOL.js} +1 -1
  64. package/dist/gateway/static/root/assets/{gateway-realtime-B1CCUrsG.js → gateway-realtime-67vWg_M2.js} +1 -1
  65. package/dist/gateway/static/root/assets/gateway-realtime-store-Bkt1z-xo.js +1 -0
  66. package/dist/gateway/static/root/assets/{gateway-restart-B3Odfu1z.js → gateway-restart-CLtR2wkL.js} +1 -1
  67. package/dist/gateway/static/root/assets/{gateway-settings-QIwB2Ld0.js → gateway-settings-COvC3r-l.js} +1 -1
  68. package/dist/gateway/static/root/assets/{gateway-startup-retry-DBpCoigO.js → gateway-startup-retry-9YQllbw2.js} +1 -1
  69. package/dist/gateway/static/root/assets/{global-defaults-api-GQG-5G20.js → global-defaults-api-DYMRjGvd.js} +1 -1
  70. package/dist/gateway/static/root/assets/{home-page-BsfeSXsZ.js → home-page-k9LFXcVa.js} +2 -2
  71. package/dist/gateway/static/root/assets/{image-generation-api-CaiTrM7V.js → image-generation-api-Dzydfvy8.js} +1 -1
  72. package/dist/gateway/static/root/assets/{imports-page-CLkhwelO.js → imports-page-Csd_YZXZ.js} +1 -1
  73. package/dist/gateway/static/root/assets/index-CpwPxKQ8.css +1 -0
  74. package/dist/gateway/static/root/assets/index-DKW7BeT_.js +11 -0
  75. package/dist/gateway/static/root/assets/{install-connector-dialog-B9YBBGhs.js → install-connector-dialog-CTQAKTPv.js} +1 -1
  76. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DrZQukhN.js → keyboard-shortcuts-settings-B201bMIa.js} +1 -1
  77. package/dist/gateway/static/root/assets/{local-app-workbench-page-CecbOjks.js → local-app-workbench-page-CD_8_gd_.js} +1 -1
  78. package/dist/gateway/static/root/assets/{local-apps-page-CkVtgVlJ.js → local-apps-page-BOwqNH0L.js} +1 -1
  79. package/dist/gateway/static/root/assets/local-session-drafts-DjmK-SM9.js +4 -0
  80. package/dist/gateway/static/root/assets/{locale-store-_-_QzAV0.js → locale-store-Bg_XR36n.js} +1 -1
  81. package/dist/gateway/static/root/assets/{logs-page-Dok7TpJ0.js → logs-page-gw3E9CMQ.js} +1 -1
  82. package/dist/gateway/static/root/assets/{management-settings-CNbeHUKa.js → management-settings-t_Z2mCyw.js} +1 -1
  83. package/dist/gateway/static/root/assets/{markdown-view-CFWJhIqU.js → markdown-view-BUpXJUPv.js} +1 -1
  84. package/dist/gateway/static/root/assets/{media-plugins-BEcCzwnv.js → media-plugins-_shnaEMY.js} +1 -1
  85. package/dist/gateway/static/root/assets/messages-DG4HLOER.js +3 -0
  86. package/dist/gateway/static/root/assets/model-selector-a7PIT1Lk.js +1 -0
  87. package/dist/gateway/static/root/assets/{models-hub-cache-B1dBNhhc.js → models-hub-cache-KOJC3z6Q.js} +1 -1
  88. package/dist/gateway/static/root/assets/note-detail-panel-BsHYUFgk.js +5 -0
  89. package/dist/gateway/static/root/assets/note-image-lightbox-B-bEtjhj.js +1 -0
  90. package/dist/gateway/static/root/assets/{notes-api-ja_AMIh6.js → notes-api-BSmikUKI.js} +1 -1
  91. package/dist/gateway/static/root/assets/{notes-page-_IG1mwIH.js → notes-page-CA0NRL8O.js} +1 -1
  92. package/dist/gateway/static/root/assets/{oauth-api-C0NG7Hgs.js → oauth-api-D2t9HXoC.js} +1 -1
  93. package/dist/gateway/static/root/assets/{oauth-provider-connect-DLQ6Jhjc.js → oauth-provider-connect-DGGGGtcB.js} +1 -1
  94. package/dist/gateway/static/root/assets/{page-context-capture-button-DBlILV5t.js → page-context-capture-button-BH54VO0V.js} +1 -1
  95. package/dist/gateway/static/root/assets/{page-context-draft-CcZSjlMa.js → page-context-draft-BS5y8Cx9.js} +1 -1
  96. package/dist/gateway/static/root/assets/page-header-store-BdZnUh-D.js +1 -0
  97. package/dist/gateway/static/root/assets/{personal-avatar-D3tjI4rK.js → personal-avatar-D8DtpDTa.js} +1 -1
  98. package/dist/gateway/static/root/assets/{personal-page-C1gIYjQo.js → personal-page-KJezmTKP.js} +1 -1
  99. package/dist/gateway/static/root/assets/{personal-settings-panel-Nm03jL4v.js → personal-settings-panel-9uDaNJy5.js} +1 -1
  100. package/dist/gateway/static/root/assets/{phone-dependencies-card-72RGs4eb.js → phone-dependencies-card-DLYrI0C4.js} +1 -1
  101. package/dist/gateway/static/root/assets/{phone-model-picker-CNxK_l_B.js → phone-model-picker-BbA2iI-3.js} +1 -1
  102. package/dist/gateway/static/root/assets/{phone-settings-page-D5PodpGU.js → phone-settings-page-Cg_BPss4.js} +1 -1
  103. package/dist/gateway/static/root/assets/{phone-workspace-store-Ci43KRd6.js → phone-workspace-store-CVDk80Bf.js} +1 -1
  104. package/dist/gateway/static/root/assets/plugin-details-dialog-DgibLkc3.js +1 -0
  105. package/dist/gateway/static/root/assets/{preference-select-fields-CyFvi9Es.js → preference-select-fields-BVoN-lAv.js} +1 -1
  106. package/dist/gateway/static/root/assets/{product-automation-feedback-BRdOheLC.js → product-automation-feedback-DCo90zGh.js} +2 -2
  107. package/dist/gateway/static/root/assets/{product-open-page-CIZj7rh-.js → product-open-page-OWl8IAoY.js} +1 -1
  108. package/dist/gateway/static/root/assets/{product-preview-content-yK-9po5S.js → product-preview-content-Cjas7UNe.js} +1 -1
  109. package/dist/gateway/static/root/assets/{product-preview-modal-CkdKPk-W.js → product-preview-modal-CPWRvBI9.js} +2 -2
  110. package/dist/gateway/static/root/assets/{project-detail-page-D_Kft8au.js → project-detail-page-B_HlZux_.js} +3 -3
  111. package/dist/gateway/static/root/assets/{project-understanding-6raciQr0.js → project-understanding-Ba02SFzB.js} +1 -1
  112. package/dist/gateway/static/root/assets/{projects-page-CNCw6Q5o.js → projects-page-CdfKjp95.js} +1 -1
  113. package/dist/gateway/static/root/assets/{providers-api-DGeFqpPL.js → providers-api-rwQ4LWzr.js} +1 -1
  114. package/dist/gateway/static/root/assets/{recording-upload-rA0Z6W2g.js → recording-upload-BSmvRrZQ.js} +1 -1
  115. package/dist/gateway/static/root/assets/{registry-api-5LqCHY-I.js → registry-api-Vy7LfH6E.js} +1 -1
  116. package/dist/gateway/static/root/assets/{remote-access-hub-DftT6xNt.js → remote-access-hub-UXrnpGev.js} +1 -1
  117. package/dist/gateway/static/root/assets/{resource-unavailable-CqP8gARc.js → resource-unavailable-f9OzSi4W.js} +1 -1
  118. package/dist/gateway/static/root/assets/route-preload-BtObM-co.js +2 -0
  119. package/dist/gateway/static/root/assets/{runtime-tools-api-CUzfEj0z.js → runtime-tools-api-Bt8t37z5.js} +1 -1
  120. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-DU4UXnBm.js +1 -0
  121. package/dist/gateway/static/root/assets/{service-recommendation-list-Bo46zqXR.js → service-recommendation-list-CuYsRcBB.js} +1 -1
  122. package/dist/gateway/static/root/assets/{session-api-CZQ-wpwx.js → session-api-DJI9eSgw.js} +1 -1
  123. package/dist/gateway/static/root/assets/session-manager-CtKgACGl.js +23 -0
  124. package/dist/gateway/static/root/assets/sessions-page-BAsKzRHt.js +1 -0
  125. package/dist/gateway/static/root/assets/settings-advanced-gate-CjAFqg2U.js +1 -0
  126. package/dist/gateway/static/root/assets/{settings-advanced-section-CrqVxpan.js → settings-advanced-section-BxUuF_yi.js} +1 -1
  127. package/dist/gateway/static/root/assets/{settings-mode-store-D4AZlZDq.js → settings-mode-store-CaoRh2gt.js} +1 -1
  128. package/dist/gateway/static/root/assets/{settings-page-header-CoPd_JDb.js → settings-page-header-CyUHrn7c.js} +1 -1
  129. package/dist/gateway/static/root/assets/{settings-page-layout-D39EvFvm.js → settings-page-layout-DGVqXrlp.js} +1 -1
  130. package/dist/gateway/static/root/assets/{settings-page-D-X2rL2k.js → settings-page-qQ8-6dJ_.js} +1 -1
  131. package/dist/gateway/static/root/assets/setup-status-panel-BpaPb625.js +1 -0
  132. package/dist/gateway/static/root/assets/{share-link-dialog-D4oGzmxA.js → share-link-dialog-CQJ6Ykm2.js} +1 -1
  133. package/dist/gateway/static/root/assets/{share-preview-page-CArPpOZz.js → share-preview-page-Cem96FbB.js} +1 -1
  134. package/dist/gateway/static/root/assets/{shares-api-DbJOyf2K.js → shares-api-Dowes16l.js} +1 -1
  135. package/dist/gateway/static/root/assets/shares-settings-DZEkZDR0.js +1 -0
  136. package/dist/gateway/static/root/assets/{skill-api-CQxLO0sy.js → skill-api-D8ZwFEVe.js} +1 -1
  137. package/dist/gateway/static/root/assets/{skill-list-api-BkahlC5N.js → skill-list-api-B4gp00-f.js} +1 -1
  138. package/dist/gateway/static/root/assets/{skill-reload-api-DZQLAkSr.js → skill-reload-api-ClmaaDXo.js} +1 -1
  139. package/dist/gateway/static/root/assets/{skills-page-BBlJMOZU.js → skills-page-CV0X9rvG.js} +1 -1
  140. package/dist/gateway/static/root/assets/{system-settings-panel-b2h_YWsq.js → system-settings-panel-D095uacX.js} +1 -1
  141. package/dist/gateway/static/root/assets/task-detail-page-CY2C4AM2.js +2 -0
  142. package/dist/gateway/static/root/assets/{task-result-evidence-DLnPVj6x.js → task-result-evidence-LUrJlUhb.js} +1 -1
  143. package/dist/gateway/static/root/assets/{terminal-panel-store-Xmw-UfZa.js → terminal-panel-store-BqEDB1Vl.js} +1 -1
  144. package/dist/gateway/static/root/assets/{theme-store-DU_07f3M.js → theme-store-gAcojLgP.js} +1 -1
  145. package/dist/gateway/static/root/assets/tool-friendly-title-o6sxGVUu.js +1 -0
  146. package/dist/gateway/static/root/assets/tracing-settings-page-B1ZRh-Is.js +1 -0
  147. package/dist/gateway/static/root/assets/{tunnel-api-DD2HgB7G.js → tunnel-api-C9u9E3UQ.js} +1 -1
  148. package/dist/gateway/static/root/assets/{understanding-activity-store-CyQMYQhD.js → understanding-activity-store-BTrzsR6_.js} +1 -1
  149. package/dist/gateway/static/root/assets/{understanding-refresh-store-CTgQYLOe.js → understanding-refresh-store-5Qava3jh.js} +1 -1
  150. package/dist/gateway/static/root/assets/{usage-page-BUZLOZLg.js → usage-page-DFMLYKAc.js} +1 -1
  151. package/dist/gateway/static/root/assets/{use-autosave-BqTpwsvF.js → use-autosave-3O-X7x15.js} +1 -1
  152. package/dist/gateway/static/root/assets/{use-composer-attachments-DfP3JrD6.js → use-composer-attachments-BLc4dBfe.js} +1 -1
  153. package/dist/gateway/static/root/assets/{use-file-preview-expanded-D2m6BZLU.js → use-file-preview-expanded-BaOmTXsT.js} +2 -2
  154. package/dist/gateway/static/root/assets/{use-personal-profile-CmLuBSVu.js → use-personal-profile-MusPgljM.js} +1 -1
  155. package/dist/gateway/static/root/assets/{use-workspace-tree-DBvuHcas.js → use-workspace-tree-Ck_U2yTw.js} +1 -1
  156. package/dist/gateway/static/root/assets/user-model-page-Den5Lg-k.js +2 -0
  157. package/dist/gateway/static/root/assets/{voice-api-key-field-DGyL8PYB.js → voice-api-key-field-C5zJApoa.js} +1 -1
  158. package/dist/gateway/static/root/assets/{voice-config-api-CIRG9O8T.js → voice-config-api-DC1bYDt1.js} +1 -1
  159. package/dist/gateway/static/root/assets/{voice-input-shortcut-events-DrVMpqDV.js → voice-input-shortcut-events-0SZjJdVV.js} +1 -1
  160. package/dist/gateway/static/root/assets/{voice-transcribe-api-H8o-xLEf.js → voice-transcribe-api-CxVeANPX.js} +1 -1
  161. package/dist/gateway/static/root/assets/{work-discovery-overlay-CobALTh0.js → work-discovery-overlay-DAQ8McVe.js} +1 -1
  162. package/dist/gateway/static/root/assets/{work-discovery-page-Dxf_Hrwx.js → work-discovery-page-DUQysEyb.js} +1 -1
  163. package/dist/gateway/static/root/assets/{working-directory-picker-modal-E9f8G3se.js → working-directory-picker-modal-BO9qdJyZ.js} +1 -1
  164. package/dist/gateway/static/root/assets/{workspace-api-N7bfM4a1.js → workspace-api-ZrN6yUER.js} +2 -2
  165. package/dist/gateway/static/root/assets/workspace-editor-agent-store-Bo5dwoWP.js +1 -0
  166. package/dist/gateway/static/root/assets/{workspace-file-preview-dialog-BTQfAXNK.js → workspace-file-preview-dialog-Yj_kBWSb.js} +1 -1
  167. package/dist/gateway/static/root/assets/{workspace-open-location-menu-BOGOi-Ck.js → workspace-open-location-menu-yxT7wajO.js} +1 -1
  168. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-Dqfy4Lwy.js → xopc-cloud-account-card-IcH9KDzx.js} +1 -1
  169. package/dist/gateway/static/root/index.html +82 -82
  170. package/dist/package.js +1 -1
  171. package/dist/packages/computer-control-contract/src/index.js +33 -3
  172. package/dist/packages/gateway-contract/src/clarification-questions.js +86 -0
  173. package/dist/packages/gateway-contract/src/clarifications.js +19 -0
  174. package/dist/packages/gateway-contract/src/index.js +1 -0
  175. package/dist/packages/gateway-contract/src/session-input-command.js +3 -0
  176. package/dist/src/agent/agent-manager.js +2 -2
  177. package/dist/src/agent/background-review/run-background-review.js +2 -2
  178. package/dist/src/agent/coding/repository-instructions.js +1 -1
  179. package/dist/src/agent/embedded/index.js +1 -1
  180. package/dist/src/agent/embedded/run-for-session.js +1 -1
  181. package/dist/src/agent/embedded/run-turn.js +67 -7
  182. package/dist/src/agent/embedded/session-tool-result-guard.js +2 -2
  183. package/dist/src/agent/embedded/tool-result-truncation.js +1 -1
  184. package/dist/src/agent/external-tools/cliProvider.js +2 -2
  185. package/dist/src/agent/external-tools/composio-provider.js +2 -2
  186. package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
  187. package/dist/src/agent/inbound/attachment-pipeline.js +1 -1
  188. package/dist/src/agent/memory/compaction.js +1 -1
  189. package/dist/src/agent/memory/context-budget.js +1 -1
  190. package/dist/src/agent/memory/context-recovery.js +1 -1
  191. package/dist/src/agent/memory/user-message-text.js +1 -1
  192. package/dist/src/agent/service/btw-query.js +1 -1
  193. package/dist/src/agent/service/direct-turn-helpers.js +1 -1
  194. package/dist/src/agent/service/process-direct-streaming.js +2 -2
  195. package/dist/src/agent/service.js +1 -1
  196. package/dist/src/agent/skills/index.js +1 -1
  197. package/dist/src/agent/skills/managed-store.js +1 -1
  198. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  199. package/dist/src/agent/source-context/types.d.ts +1 -0
  200. package/dist/src/agent/tool-manuals/computer.d.ts +1 -1
  201. package/dist/src/agent/tool-manuals/computer.js +6 -0
  202. package/dist/src/agent/tools/clarify-tool.js +43 -5
  203. package/dist/src/agent/tools/cli-clarify.js +1 -0
  204. package/dist/src/agent/tools/computer-use-tool.js +18 -5
  205. package/dist/src/agent/tools/dataBatch.js +1 -1
  206. package/dist/src/agent/tools/personal-read-tool.js +1 -1
  207. package/dist/src/agent/tools/personal-task-tool.d.ts +1 -1
  208. package/dist/src/agent/tools/phone-use-tool.js +14 -4
  209. package/dist/src/agent/tools/session-search-tool.js +1 -1
  210. package/dist/src/agent/tools/xopc-use-tool.js +2 -2
  211. package/dist/src/agent-catalog/capabilities.js +2 -2
  212. package/dist/src/agent-catalog/repository.js +1 -1
  213. package/dist/src/automations/api/routes.js +2 -2
  214. package/dist/src/automations/capabilities/drafts.js +1 -1
  215. package/dist/src/automations/capabilities/write.js +1 -1
  216. package/dist/src/automations/configuration-conversation.js +1 -1
  217. package/dist/src/browser/providers/browser-ext-install.js +1 -1
  218. package/dist/src/capabilities/runtime/dispatcher.js +1 -1
  219. package/dist/src/capabilities/runtime/product.js +1 -1
  220. package/dist/src/cli/commands/agent.js +1 -1
  221. package/dist/src/cli/commands/agents.js +1 -1
  222. package/dist/src/cli/commands/backup.js +1 -1
  223. package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
  224. package/dist/src/cli/commands/models.js +2 -2
  225. package/dist/src/cli/commands/onboard/model.js +1 -1
  226. package/dist/src/cli/commands/onboard.js +1 -1
  227. package/dist/src/cli/commands/platform.js +1 -1
  228. package/dist/src/cli/commands/profile.js +1 -1
  229. package/dist/src/cli/commands/tunnel.js +1 -1
  230. package/dist/src/cli/commands/update.js +1 -1
  231. package/dist/src/cli/extension-cli-register.js +1 -1
  232. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  233. package/dist/src/computer/agent-context.d.ts +21 -0
  234. package/dist/src/computer/agent-context.js +107 -0
  235. package/dist/src/computer/broker.d.ts +4 -2
  236. package/dist/src/computer/broker.js +26 -11
  237. package/dist/src/computer/diagnostics.d.ts +63 -9
  238. package/dist/src/computer/diagnostics.js +45 -4
  239. package/dist/src/computer/errors.d.ts +1 -1
  240. package/dist/src/computer/errors.js +4 -0
  241. package/dist/src/computer/evaluation.d.ts +4 -4
  242. package/dist/src/computer/native-timing.d.ts +15 -0
  243. package/dist/src/computer/native-timing.js +49 -0
  244. package/dist/src/computer/program-runtime.d.ts +22 -0
  245. package/dist/src/computer/program-runtime.js +105 -0
  246. package/dist/src/computer/runtime.d.ts +36 -2
  247. package/dist/src/computer/runtime.js +269 -58
  248. package/dist/src/config/agent-profile.js +1 -1
  249. package/dist/src/config/index.js +1 -1
  250. package/dist/src/config/schema.d.ts +18 -0
  251. package/dist/src/connectors/learning-coordinator.js +1 -1
  252. package/dist/src/execution-environments/local-worktree-manager.js +1 -1
  253. package/dist/src/extensions/agent-plugins/skill-catalog.js +1 -1
  254. package/dist/src/extensions/agent-plugins/validation.js +1 -1
  255. package/dist/src/gateway/agents-admin.js +2 -2
  256. package/dist/src/gateway/ephemeral-clarification-waiter.js +1 -0
  257. package/dist/src/gateway/global-defaults-admin.js +2 -2
  258. package/dist/src/gateway/hono/routes/agents.js +1 -1
  259. package/dist/src/gateway/hono/routes/composer-history.js +1 -1
  260. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  261. package/dist/src/gateway/hono/routes/connectors.js +1 -1
  262. package/dist/src/gateway/hono/routes/home.js +1 -1
  263. package/dist/src/gateway/hono/routes/notes.js +2 -2
  264. package/dist/src/gateway/hono/routes/phone-setup.js +1 -1
  265. package/dist/src/gateway/hono/routes/phone.js +31 -6
  266. package/dist/src/gateway/hono/routes/projects.js +2 -2
  267. package/dist/src/gateway/hono/routes/public-gateway.js +2 -1
  268. package/dist/src/gateway/hono/routes/session-command-handler.js +1 -0
  269. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +6 -0
  270. package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
  271. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  272. package/dist/src/gateway/hono/routes/user-model-refresh.js +1 -1
  273. package/dist/src/gateway/image-generation-setup.js +1 -1
  274. package/dist/src/gateway/next-turn-suggestions/snapshot.js +1 -1
  275. package/dist/src/gateway/service/agent-runner.js +8 -3
  276. package/dist/src/gateway/service/config-coordinator.d.ts +6 -0
  277. package/dist/src/gateway/service/run-gateway-agent.js +1 -1
  278. package/dist/src/gateway/service/session-input-coordinator.js +5 -4
  279. package/dist/src/gateway/service.js +7 -7
  280. package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
  281. package/dist/src/home-intelligence/host.js +2 -2
  282. package/dist/src/imports/importService.js +1 -1
  283. package/dist/src/local-apps/service.js +1 -1
  284. package/dist/src/personal-agent/service.js +1 -1
  285. package/dist/src/phone/adb-driver.d.ts +15 -1
  286. package/dist/src/phone/adb-driver.js +104 -41
  287. package/dist/src/phone/assistance.js +3 -0
  288. package/dist/src/phone/autoglm-protocol.d.ts +36 -0
  289. package/dist/src/phone/autoglm-protocol.js +88 -0
  290. package/dist/src/phone/autoglm-upstream-prompt.d.ts +2 -0
  291. package/dist/src/phone/autoglm-upstream-prompt.js +5 -0
  292. package/dist/src/phone/autoglm-upstream.LICENSE +201 -0
  293. package/dist/src/phone/cloud-adb-connection.d.ts +3 -0
  294. package/dist/src/phone/cloud-adb-connection.js +102 -31
  295. package/dist/src/phone/cloud-adb.js +18 -6
  296. package/dist/src/phone/completion-recovery.d.ts +6 -0
  297. package/dist/src/phone/completion-recovery.js +30 -0
  298. package/dist/src/phone/contracts.d.ts +24 -0
  299. package/dist/src/phone/contracts.js +6 -0
  300. package/dist/src/phone/execution-trace.d.ts +51 -0
  301. package/dist/src/phone/execution-trace.js +78 -0
  302. package/dist/src/phone/model-adapter.d.ts +9 -1
  303. package/dist/src/phone/model-adapter.js +132 -61
  304. package/dist/src/phone/model-response.d.ts +5 -0
  305. package/dist/src/phone/model-response.js +118 -0
  306. package/dist/src/phone/runtime.d.ts +11 -1
  307. package/dist/src/phone/runtime.js +177 -40
  308. package/dist/src/phone/text-session.d.ts +14 -0
  309. package/dist/src/phone/text-session.js +39 -0
  310. package/dist/src/phone/ui-dump-binary.d.ts +1 -1
  311. package/dist/src/phone/ui-dump-binary.js +1 -1
  312. package/dist/src/phone/ui-session.d.ts +22 -0
  313. package/dist/src/phone/ui-session.js +191 -0
  314. package/dist/src/process/phone-process.d.ts +1 -0
  315. package/dist/src/process/phone-process.js +11 -1
  316. package/dist/src/routing/agent-session-key.js +1 -1
  317. package/dist/src/runtime-tools/archive.js +1 -1
  318. package/dist/src/session/session-context-for-llm.js +1 -0
  319. package/dist/src/session/session-title.js +1 -1
  320. package/dist/src/storage/sqlite/clarification-wait-repository.js +45 -4
  321. package/dist/src/storage/sqlite/index.js +6 -6
  322. package/dist/src/storage/sqlite/session-creation-repository.js +1 -1
  323. package/dist/src/storage/sqlite/session-repository.js +1 -1
  324. package/dist/src/tasks/capabilities/read.js +2 -2
  325. package/dist/src/tasks/capabilities/write.js +1 -1
  326. package/dist/src/tasks/home-query-service.js +1 -1
  327. package/dist/src/tasks/task-allocation-repository.js +1 -1
  328. package/dist/src/tui/backends/embedded-backend.js +2 -2
  329. package/dist/src/voice/realtime/persona-context.js +1 -1
  330. package/package.json +3 -1
  331. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-L6J-FYQS.js +0 -1
  332. package/dist/gateway/static/root/assets/automation-task-card-BV7hPwN1.js +0 -3
  333. package/dist/gateway/static/root/assets/automations-workspace-CPFYdI8m.js +0 -9
  334. package/dist/gateway/static/root/assets/capabilities-page-ljQTg4T5.js +0 -2
  335. package/dist/gateway/static/root/assets/chat-page-BpvlJdEr.js +0 -72
  336. package/dist/gateway/static/root/assets/connected-providers-grid-BIX82L4N.js +0 -1
  337. package/dist/gateway/static/root/assets/connectors-page-BawS0DUd.js +0 -1
  338. package/dist/gateway/static/root/assets/device-pairing-wizard-ZY_cdq5I.js +0 -1
  339. package/dist/gateway/static/root/assets/gateway-realtime-store-BFCA_TAU.js +0 -1
  340. package/dist/gateway/static/root/assets/index-Dv8mUlNN.css +0 -1
  341. package/dist/gateway/static/root/assets/index-GX_PTIj6.js +0 -11
  342. package/dist/gateway/static/root/assets/local-session-drafts-DVSVgTCK.js +0 -1
  343. package/dist/gateway/static/root/assets/messages-D1u8VsPq.js +0 -3
  344. package/dist/gateway/static/root/assets/model-selector-DKB20MJY.js +0 -1
  345. package/dist/gateway/static/root/assets/note-detail-panel-COp5zpe4.js +0 -5
  346. package/dist/gateway/static/root/assets/note-image-lightbox-DvtEn8dg.js +0 -1
  347. package/dist/gateway/static/root/assets/page-header-store-RgQRaRbH.js +0 -1
  348. package/dist/gateway/static/root/assets/plugin-details-dialog-D_Lkepqt.js +0 -1
  349. package/dist/gateway/static/root/assets/route-preload-Hr12PIMD.js +0 -2
  350. package/dist/gateway/static/root/assets/runtime-impact-DbySfhdp.js +0 -1
  351. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-VIFAEKJi.js +0 -1
  352. package/dist/gateway/static/root/assets/session-manager-DhoRfUGE.js +0 -23
  353. package/dist/gateway/static/root/assets/sessions-page-BISYL6iE.js +0 -1
  354. package/dist/gateway/static/root/assets/settings-advanced-gate-BLnNiubD.js +0 -1
  355. package/dist/gateway/static/root/assets/setup-status-panel-DyzdCgrb.js +0 -1
  356. package/dist/gateway/static/root/assets/shares-settings-BFLomErf.js +0 -1
  357. package/dist/gateway/static/root/assets/task-detail-page-BkvjB6fd.js +0 -2
  358. package/dist/gateway/static/root/assets/tool-friendly-title-DGmi7rCQ.js +0 -1
  359. package/dist/gateway/static/root/assets/tracing-settings-page-CemIMuec.js +0 -1
  360. package/dist/gateway/static/root/assets/user-model-page-BhX_Ahlu.js +0 -2
  361. package/dist/gateway/static/root/assets/workspace-editor-agent-store-Cb4TlnKX.js +0 -1
@@ -0,0 +1,191 @@
1
+ import { PhoneError, init_contracts } from "./contracts.js";
2
+ import { measurePhonePhase } from "./execution-trace.js";
3
+ import { spawnPhoneInteractiveCommand } from "../process/phone-process.js";
4
+ import { runAdb } from "./adb-command.js";
5
+ import { PHONE_UI_DEX } from "./ui-dump-binary.js";
6
+ import { tmpdir } from "node:os";
7
+ import { join } from "node:path";
8
+ import { createHash, randomUUID } from "node:crypto";
9
+ import { mkdtemp, rm, writeFile } from "node:fs/promises";
10
+ //#region src/phone/ui-session.ts
11
+ init_contracts();
12
+ /** One request in flight, bounded framing, no replay after transport or confirmation failure. */
13
+ var PhoneUiSession = class {
14
+ sequence = 0;
15
+ busy = false;
16
+ closed = false;
17
+ closing;
18
+ buffer = "";
19
+ iterator;
20
+ constructor(transport) {
21
+ this.transport = transport;
22
+ this.iterator = transport.readable[Symbol.asyncIterator]();
23
+ }
24
+ close() {
25
+ if (this.closing) return this.closing;
26
+ this.closed = true;
27
+ this.buffer = "";
28
+ this.closing = this.transport.close();
29
+ return this.closing;
30
+ }
31
+ async request(fields, signal) {
32
+ if (this.closed || this.busy) throw new PhoneError("PHONE_UI_UNAVAILABLE", "Phone observer is closed or busy", 409);
33
+ const combined = AbortSignal.any([signal, AbortSignal.timeout(1e4)]);
34
+ combined.throwIfAborted();
35
+ this.busy = true;
36
+ const id = ++this.sequence;
37
+ let reason = "";
38
+ let abort;
39
+ const cancelled = new Promise((_resolve, reject) => {
40
+ abort = () => {
41
+ this.close().catch(() => {});
42
+ reject(new PhoneError("PHONE_UI_UNAVAILABLE", "Phone observer stopped or timed out", 409));
43
+ };
44
+ combined.addEventListener("abort", abort, { once: true });
45
+ });
46
+ try {
47
+ return await Promise.race([cancelled, (async () => {
48
+ await this.transport.write(Buffer.from(`${JSON.stringify({
49
+ ...fields,
50
+ id
51
+ })}\n`));
52
+ const decoder = new TextDecoder("utf-8", { fatal: true });
53
+ while (!this.buffer.includes("\n")) {
54
+ const next = await this.iterator.next();
55
+ if (next.done || this.closed) throw new Error("Observer disconnected");
56
+ this.buffer += decoder.decode(next.value, { stream: true });
57
+ if (Buffer.byteLength(this.buffer) > 2 * 1024 * 1024) throw new Error("Observer response exceeded limit");
58
+ }
59
+ const end = this.buffer.indexOf("\n");
60
+ const response = JSON.parse(this.buffer.slice(0, end));
61
+ this.buffer = this.buffer.slice(end + 1);
62
+ if (response.id !== id || response.ok !== true) {
63
+ if ([
64
+ "no-root",
65
+ "app",
66
+ "focus",
67
+ "target",
68
+ "value",
69
+ "write",
70
+ "identity",
71
+ "confirmation"
72
+ ].includes(response.error)) reason = ` (${response.error})`;
73
+ throw new Error("Observer request unconfirmed");
74
+ }
75
+ return response;
76
+ })()]);
77
+ } catch {
78
+ await this.close().catch(() => {});
79
+ throw new PhoneError(fields.op === "setText" ? "PHONE_TEXT_INPUT_UNCONFIRMED" : "PHONE_UI_UNAVAILABLE", fields.op === "setText" ? `Field input could not be confirmed${reason}. Inspect the field before retrying.` : "Phone observation failed; reconnect before controlling the phone", 409);
80
+ } finally {
81
+ this.busy = false;
82
+ combined.removeEventListener("abort", abort);
83
+ }
84
+ }
85
+ async snapshot(signal) {
86
+ const response = await this.request({ op: "snapshot" }, signal);
87
+ if (typeof response.xml !== "string" || !response.xml.includes("</hierarchy>")) {
88
+ await this.close();
89
+ throw new PhoneError("PHONE_UI_UNAVAILABLE", "Incomplete phone observation", 409);
90
+ }
91
+ return response.xml;
92
+ }
93
+ async replace(app, target, text, signal) {
94
+ await measurePhonePhase("field_transaction", () => this.request({
95
+ op: "setText",
96
+ app,
97
+ resourceId: target.resourceId,
98
+ bounds: target.bounds.join(","),
99
+ before: target.text,
100
+ text
101
+ }, signal));
102
+ }
103
+ };
104
+ async function openLocalPhoneUi(adbPath, serial, signal) {
105
+ const binary = Buffer.from(PHONE_UI_DEX, "base64");
106
+ const hash = createHash("sha256").update(binary).digest("hex");
107
+ const remote = `/data/local/tmp/xopc-ui-${hash}.dex`;
108
+ const args = ["-s", serial];
109
+ const existing = await runAdb(adbPath, [
110
+ ...args,
111
+ "shell",
112
+ "sha256sum",
113
+ remote
114
+ ], signal).catch(() => Buffer.alloc(0));
115
+ signal.throwIfAborted();
116
+ if (existing.toString().trim().split(/\s+/)[0] !== hash) {
117
+ const work = await mkdtemp(join(tmpdir(), "xopc-ui-"));
118
+ const staging = `${remote}.${randomUUID()}.tmp`;
119
+ try {
120
+ await writeFile(join(work, "helper.dex"), binary, { mode: 384 });
121
+ await runAdb(adbPath, [
122
+ ...args,
123
+ "push",
124
+ join(work, "helper.dex"),
125
+ staging
126
+ ], signal);
127
+ await runAdb(adbPath, [
128
+ ...args,
129
+ "shell",
130
+ "chmod",
131
+ "400",
132
+ staging
133
+ ], signal);
134
+ await runAdb(adbPath, [
135
+ ...args,
136
+ "shell",
137
+ "mv",
138
+ "-f",
139
+ staging,
140
+ remote
141
+ ], signal);
142
+ if ((await runAdb(adbPath, [
143
+ ...args,
144
+ "shell",
145
+ "sha256sum",
146
+ remote
147
+ ], signal)).toString().trim().split(/\s+/)[0] !== hash) throw new PhoneError("PHONE_UI_UNAVAILABLE", "Observer verification failed");
148
+ } finally {
149
+ await rm(work, {
150
+ recursive: true,
151
+ force: true
152
+ });
153
+ await runAdb(adbPath, [
154
+ ...args,
155
+ "shell",
156
+ "rm",
157
+ "-f",
158
+ staging
159
+ ], void 0, 3e3).catch(() => {});
160
+ }
161
+ }
162
+ signal.throwIfAborted();
163
+ const child = spawnPhoneInteractiveCommand(adbPath, [
164
+ ...args,
165
+ "shell",
166
+ "-T",
167
+ "env",
168
+ `CLASSPATH=${remote}`,
169
+ "app_process",
170
+ "/",
171
+ "ai.xopc.phone.PhoneUiDump",
172
+ "--resident"
173
+ ]);
174
+ child.on("error", () => {});
175
+ child.stdin.on("error", () => {});
176
+ return new PhoneUiSession({
177
+ readable: child.stdout,
178
+ write: (data) => new Promise((resolve, reject) => child.stdin.write(data, (error) => error ? reject(error) : resolve())),
179
+ close: async () => {
180
+ child.stdin.destroy();
181
+ child.stdout.destroy();
182
+ if (child.exitCode !== null || child.signalCode !== null) return;
183
+ await new Promise((resolve) => {
184
+ child.once("close", resolve);
185
+ child.kill();
186
+ });
187
+ }
188
+ });
189
+ }
190
+ //#endregion
191
+ export { PhoneUiSession, openLocalPhoneUi };
@@ -2,3 +2,4 @@ import { type ChildProcess } from 'node:child_process';
2
2
  export declare function runPhoneCommandBuffer(program: string, args: string[], signal?: AbortSignal, timeoutMs?: number): Promise<Buffer>;
3
3
  export declare function runPhoneCommandText(program: string, args: string[], signal: AbortSignal): Promise<string>;
4
4
  export declare function spawnPhoneCommand(program: string, args: string[]): ChildProcess;
5
+ export declare function spawnPhoneInteractiveCommand(program: string, args: string[]): import("node:child_process").ChildProcessByStdio<import("node:stream").Writable, import("node:stream").Readable, null>;
@@ -34,5 +34,15 @@ function spawnPhoneCommand(program, args) {
34
34
  windowsHide: true
35
35
  });
36
36
  }
37
+ function spawnPhoneInteractiveCommand(program, args) {
38
+ return spawn(program, args, {
39
+ stdio: [
40
+ "pipe",
41
+ "pipe",
42
+ "ignore"
43
+ ],
44
+ windowsHide: true
45
+ });
46
+ }
37
47
  //#endregion
38
- export { runPhoneCommandBuffer, runPhoneCommandText, spawnPhoneCommand };
48
+ export { runPhoneCommandBuffer, runPhoneCommandText, spawnPhoneCommand, spawnPhoneInteractiveCommand };
@@ -1,9 +1,9 @@
1
1
  import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
2
  import { validateConversationId } from "../../packages/gateway-contract/src/conversation-identity.js";
3
3
  import { init_src } from "../../packages/gateway-contract/src/index.js";
4
+ import { init_string_coerce, normalizeLowercaseStringOrEmpty } from "../utils/string-coerce.js";
4
5
  import { DEFAULT_ACCOUNT_ID, init_account_id, normalizeAccountId, normalizeOptionalAccountId } from "./account-id.js";
5
6
  import { init_conversation_repository, requireConversation, resolveRoutedConversation } from "../storage/sqlite/conversation-repository.js";
6
- import { init_string_coerce, normalizeLowercaseStringOrEmpty } from "../utils/string-coerce.js";
7
7
  //#region src/routing/agent-session-key.ts
8
8
  function normalizeMainKey(value) {
9
9
  return normalizeLowercaseStringOrEmpty(value) || "main";
@@ -1,8 +1,8 @@
1
1
  import { RuntimeError } from "./errors.js";
2
2
  import { isAbsolute, join, posix, relative, resolve } from "node:path";
3
3
  import { spawn } from "node:child_process";
4
- import { lstat, mkdir, readdir, readlink, rename, rm, stat } from "node:fs/promises";
5
4
  import AdmZip from "adm-zip";
5
+ import { lstat, mkdir, readdir, readlink, rename, rm, stat } from "node:fs/promises";
6
6
  //#region src/runtime-tools/archive.ts
7
7
  const MAX_ARCHIVE_ENTRIES = 5e4;
8
8
  const MAX_TAR_OUTPUT_BYTES = 16 * 1024 * 1024;
@@ -298,6 +298,7 @@ function buildSessionContextForLlm(rows) {
298
298
  continue;
299
299
  }
300
300
  if (isTranscriptCustomMessageEntry(r)) {
301
+ if (r.customType === "clarification_answers") continue;
301
302
  if (r.customType === "task_allocation_status" && isRoutineTaskAllocationStatus(r.details)) continue;
302
303
  if (r.customType === "personal_request_status" || r.customType === "connection_control_status") continue;
303
304
  if (r.customType === "personal_proactive_message") {
@@ -1,12 +1,12 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
+ import { readAgentMessageContent } from "../agent/memory/agent-message-access.js";
3
4
  import { getConversationRouting } from "../storage/sqlite/conversation-repository.js";
4
5
  import { isCronConversationId } from "../routing/agent-session-key.js";
5
6
  import { init_session_key } from "../routing/session-key.js";
6
7
  import { init_providers, resolveModel } from "../providers/index.js";
7
8
  import { completeWithResolvedCredentials } from "../providers/model-call.js";
8
9
  import { stripRuntimeContextFromUserMessage } from "./user-message-display.js";
9
- import { readAgentMessageContent } from "../agent/memory/agent-message-access.js";
10
10
  //#region src/session/session-title.ts
11
11
  init_session_key();
12
12
  init_providers();
@@ -5,6 +5,8 @@ import { init_src } from "../../../packages/gateway-contract/src/index.js";
5
5
  import { init_session_instance_repository, readCurrentTranscriptId } from "./session-instance-repository.js";
6
6
  import { bumpSessionInputRevision, getSessionInputById, getSessionInputState, init_session_input_repository, insertSessionInput } from "./session-input-repository.js";
7
7
  import { TaskRunRepository, init_task_run_repository } from "../../tasks/task-run-repository.js";
8
+ import { appendTranscriptEntry } from "./transcript-repository.js";
9
+ import { estimateTextTokens } from "../../agent/memory/context-budget.js";
8
10
  import { randomUUID } from "node:crypto";
9
11
  //#region src/storage/sqlite/clarification-wait-repository.ts
10
12
  init_src();
@@ -16,7 +18,8 @@ init_transaction();
16
18
  const APPROVAL_TTL_MS = 10 * 6e4;
17
19
  const STALE_CONTEXT_MS = 1440 * 6e4;
18
20
  function rowToWait(row) {
19
- return JSON.parse(row.data_json);
21
+ const wait = JSON.parse(row.data_json);
22
+ return wait.schemaVersion === 2 ? normalizeClarificationQuestion(wait) : wait;
20
23
  }
21
24
  function getRow(id) {
22
25
  return getSqliteDatabase().prepare(`SELECT id, conversation_id, transcript_id, status, version, data_json
@@ -176,6 +179,8 @@ function createClarificationWait(input) {
176
179
  kind: input.kind,
177
180
  status: "open",
178
181
  question: input.question.trim(),
182
+ schemaVersion: input.schemaVersion,
183
+ questions: input.questions,
179
184
  interactionMode: input.interactionMode,
180
185
  choiceDetails: input.choiceDetails,
181
186
  recommendedChoiceId: input.recommendedChoiceId,
@@ -232,10 +237,12 @@ function resolveClarification(input) {
232
237
  let normalized;
233
238
  try {
234
239
  if (input.action === "answer") normalized = normalizeClarificationSubmission(wait, {
240
+ schemaVersion: input.schemaVersion,
241
+ answers: input.answers,
235
242
  response: input.response,
236
243
  decision: input.decision
237
244
  });
238
- else if (input.response !== void 0 || input.decision !== void 0) return {
245
+ else if (input.response !== void 0 || input.decision !== void 0 || input.answers !== void 0) return {
239
246
  ok: false,
240
247
  code: "INVALID"
241
248
  };
@@ -245,13 +252,28 @@ function resolveClarification(input) {
245
252
  code: "INVALID"
246
253
  };
247
254
  }
255
+ if (wait.schemaVersion === 2 && normalized && estimateTextTokens(normalized.answer) > 2e3) return {
256
+ ok: false,
257
+ code: "INVALID"
258
+ };
259
+ if (wait.schemaVersion === 2 !== (input.schemaVersion === 2)) return {
260
+ ok: false,
261
+ code: "INVALID"
262
+ };
263
+ const responseIdentity = JSON.stringify({
264
+ schemaVersion: wait.schemaVersion ?? 1,
265
+ action: input.action,
266
+ answers: normalized?.answers,
267
+ response: normalized?.response,
268
+ decision: normalized?.decision
269
+ });
248
270
  if (input.action === "agent_decide" && wait.kind === "approval") return {
249
271
  ok: false,
250
272
  code: "INVALID"
251
273
  };
252
274
  const resolution = input.action === "answer" ? "answered" : input.action === "agent_decide" ? "agent_decide" : "cancelled";
253
275
  if (wait.responseIdempotencyKey === input.idempotencyKey) {
254
- if (wait.resolution !== resolution || normalized && wait.answer !== normalized.answer) return {
276
+ if (wait.resolution !== resolution || (wait.schemaVersion === 2 ? wait.responseIdentity !== responseIdentity : normalized && wait.answer !== normalized.answer)) return {
255
277
  ok: false,
256
278
  code: "CONFLICT",
257
279
  clarification: wait
@@ -279,6 +301,7 @@ function resolveClarification(input) {
279
301
  status: "cancelled",
280
302
  resolution,
281
303
  responseIdempotencyKey: input.idempotencyKey,
304
+ responseIdentity,
282
305
  resolvedAt: now,
283
306
  updatedAt: now
284
307
  }, wait.version);
@@ -298,10 +321,14 @@ function resolveClarification(input) {
298
321
  };
299
322
  }
300
323
  const answer = input.action === "agent_decide" ? "Use your best judgment and continue without additional user input." : normalized.answer;
324
+ const resumeInputId = randomUUID();
301
325
  const queued = writeWait({
302
326
  ...wait,
303
327
  status: "queued",
304
328
  response: normalized?.response,
329
+ answers: normalized?.answers,
330
+ responseIdentity,
331
+ resumeInputId,
305
332
  decision: normalized?.decision,
306
333
  answer,
307
334
  resolution,
@@ -324,7 +351,7 @@ function resolveClarification(input) {
324
351
  ].filter(Boolean).join("\n");
325
352
  const origin = getSessionInputById(wait.conversationId, wait.originInputId);
326
353
  insertSessionInput({
327
- id: randomUUID(),
354
+ id: resumeInputId,
328
355
  conversationId: wait.conversationId,
329
356
  expectedTranscriptId: wait.transcriptId,
330
357
  clientMessageId: input.idempotencyKey,
@@ -347,6 +374,20 @@ function resolveClarification(input) {
347
374
  source: "internal"
348
375
  }
349
376
  });
377
+ if (wait.schemaVersion === 2) appendTranscriptEntry(wait.conversationId, {
378
+ role: "custom",
379
+ customType: "clarification_answers",
380
+ display: true,
381
+ content: answer,
382
+ details: {
383
+ waitId: wait.id,
384
+ schemaVersion: 2,
385
+ questions: wait.questions,
386
+ answers: normalized?.answers,
387
+ resolution
388
+ },
389
+ timestamp: now
390
+ }, { transcriptId: wait.transcriptId });
350
391
  return {
351
392
  ok: true,
352
393
  clarification: queued,
@@ -15,9 +15,14 @@ import { createCollaborationRule, getCollaborationRule, listCollaborationRules,
15
15
  import { createContextEvidence } from "./context-evidence-repository.js";
16
16
  import { getUserPeopleIndexState, getUserPerson, listUserPeople, mergeUserPeople, replaceUserPeopleIndex, summarizeUserPeople, updateUserPerson } from "./user-people-repository.js";
17
17
  import { cancelQueuedSessionInput, claimNextSessionInput, findSessionInput, finishSessionInputRun, getSessionInputById, getSessionInputState, init_session_input_repository, insertSessionInput, listActiveSessionInputExecutions, listActiveSessionInputRuns, listTaskUpdateRunIds, listTaskUpdateTriggers, mutateQueuedSessionInput, recoverSessionInputState, setSessionInputStatus } from "./session-input-repository.js";
18
- import { consumeClarificationApproval, consumeClarificationResume, createClarificationWait, getActiveClarification, getClarification, getClarificationResumeInput, getClarificationSnapshot, isClarificationSuspended, resolveClarification, supersedeActiveClarification } from "./clarification-wait-repository.js";
19
18
  import { buildDefaultSessionMetadata, init_session_metadata } from "./session-metadata.js";
20
19
  import { buildGlobalSessionStats, classifyStoredRow, estimateTokensFromMessages, extractFtsContent, init_row_mappers, metadataToSessionInsert, sessionConfigRowToConfig, sessionRowToMetadata, transcriptEntryRowToStoredRow } from "./row-mappers.js";
20
+ import { getConnectorAccount, init_connector_account_repository, listConnectorAccounts, reconcileConnectorAccount, refreshConnectorAccountCurrent } from "./connector-account-repository.js";
21
+ import { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, consumeConnectorApproval, createConnectorApproval, decideConnectorApproval, deleteConnectorConnection, deleteConnectorInstallation, getCachedConnectorCatalogEntry, getConnectorApproval, getConnectorConnection, getConnectorInstallation, init_connector_repository, listCachedConnectorCatalogEntries, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation } from "./connector-repository.js";
22
+ import { getSessionMetadata } from "./session-read-repository.js";
23
+ import { deleteSessionRecord, ensureSessionRecord, findConversationIdByTranscriptId, getCurrentTranscriptId, getGlobalSessionStats, incrementSessionStatsOnAppend, init_session_repository, listSessionMetadata, listSessionsByAgent, patchSessionMetadata, resetSessionRecord, resolveSessionAgentId, updateSessionStats } from "./session-repository.js";
24
+ import { appendCompactionBoundaryIfUnchanged, appendMediaToAssistantTranscriptEntry, appendTranscriptEntry, findLatestAssistantTranscriptEntryId, listCompactionBoundaries, loadCompactionSourceSnapshot, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, paginateTranscriptMessages, replaceTranscriptRows, restoreBeforeCompactionBoundary, searchSessionTranscript } from "./transcript-repository.js";
25
+ import { consumeClarificationApproval, consumeClarificationResume, createClarificationWait, getActiveClarification, getClarification, getClarificationResumeInput, getClarificationSnapshot, isClarificationSuspended, resolveClarification, supersedeActiveClarification } from "./clarification-wait-repository.js";
21
26
  import { replaceLatestSessionTurnAndQueueInput, validateLatestSessionTurnTarget } from "./session-turn-replace-repository.js";
22
27
  import { acknowledgeHomeAttention, isHomeAttentionAcknowledged } from "./home-attention-repository.js";
23
28
  import { claimNextConnectorLearningJob, enqueueConnectorLearningJob, listConnectorLearningJobs, recoverStaleConnectorLearningJobs, setConnectorLearningPaused, updateConnectorLearningJob } from "./connector-learning-repository.js";
@@ -25,13 +30,8 @@ import { COMPOSER_INPUT_HISTORY_LIMIT, appendComposerInputHistory, clearComposer
25
30
  import { bindEndpointPrincipal, createEndpointPrincipal, getEndpointPrincipal, listEndpointPrincipals, revokeEndpointPrincipal, touchEndpointPrincipal } from "./endpoint-principal-repository.js";
26
31
  import { finishEndpointToolInvocationAudit, listEndpointToolInvocationAuditPage, startEndpointToolInvocationAudit } from "./endpoint-tool-invocation-repository.js";
27
32
  import { getInteractionState, setInteractionState, updateInteractionStateFromMessage } from "./interaction-state-repository.js";
28
- import { getConnectorAccount, init_connector_account_repository, listConnectorAccounts, reconcileConnectorAccount, refreshConnectorAccountCurrent } from "./connector-account-repository.js";
29
- import { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, consumeConnectorApproval, createConnectorApproval, decideConnectorApproval, deleteConnectorConnection, deleteConnectorInstallation, getCachedConnectorCatalogEntry, getConnectorApproval, getConnectorConnection, getConnectorInstallation, init_connector_repository, listCachedConnectorCatalogEntries, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation } from "./connector-repository.js";
30
- import { getSessionMetadata } from "./session-read-repository.js";
31
- import { deleteSessionRecord, ensureSessionRecord, findConversationIdByTranscriptId, getCurrentTranscriptId, getGlobalSessionStats, incrementSessionStatsOnAppend, init_session_repository, listSessionMetadata, listSessionsByAgent, patchSessionMetadata, resetSessionRecord, resolveSessionAgentId, updateSessionStats } from "./session-repository.js";
32
33
  import { getSessionTaskPlan, setSessionTaskPlan } from "./session-task-plan-repository.js";
33
34
  import { SidebarLayoutConflictError, getSidebarLayout, replaceSidebarLayout, sortBySidebarLayout } from "./sidebar-layout-repository.js";
34
- import { appendCompactionBoundaryIfUnchanged, appendMediaToAssistantTranscriptEntry, appendTranscriptEntry, findLatestAssistantTranscriptEntryId, listCompactionBoundaries, loadCompactionSourceSnapshot, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, paginateTranscriptMessages, replaceTranscriptRows, restoreBeforeCompactionBoundary, searchSessionTranscript } from "./transcript-repository.js";
35
35
  import { deleteNoteRecord, getNoteRecord, listNoteRecords, upsertNoteRecord } from "./notes-repository.js";
36
36
  import { deleteNoteAgentContextRecord, getNoteAgentContextRecord, upsertNoteAgentContextRecord } from "./note-agent-context-repository.js";
37
37
  import { claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, countKnowledgeSourceItems, deleteKnowledgeSourceItems, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, pruneBoundedKnowledgeSourceItems, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems } from "./knowledge-repository.js";
@@ -2,10 +2,10 @@ import { getSqliteDatabase, init_transaction, runSqliteWriteTransaction } from "
2
2
  import { sessionCommandIdentity } from "../../../packages/gateway-contract/src/session-input-command.js";
3
3
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
4
4
  import { init_session_input_repository, insertSessionInput } from "./session-input-repository.js";
5
- import { supersedeActiveClarification } from "./clarification-wait-repository.js";
6
5
  import { cancelConnectionObjective, init_connection_wait_repository } from "./connection-wait-repository.js";
7
6
  import { getSessionMetadata } from "./session-read-repository.js";
8
7
  import { init_session_repository } from "./session-repository.js";
8
+ import { supersedeActiveClarification } from "./clarification-wait-repository.js";
9
9
  import { setSessionConfig } from "./config-repository.js";
10
10
  import { createConversation, init_conversation_repository } from "./conversation-repository.js";
11
11
  import { createHash, randomUUID } from "node:crypto";
@@ -3,10 +3,10 @@ import { getSqliteDatabase, init_transaction, runSqliteWriteTransaction } from "
3
3
  import { validateConversationId, validateTranscriptId } from "../../../packages/gateway-contract/src/conversation-identity.js";
4
4
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
5
5
  import { init_session_instance_repository, readCurrentTranscriptId } from "./session-instance-repository.js";
6
- import { TaskRunRepository, init_task_run_repository } from "../../tasks/task-run-repository.js";
7
6
  import { buildDefaultSessionMetadata, init_session_metadata } from "./session-metadata.js";
8
7
  import { init_timestamps, optionalTimestampToMs } from "./timestamps.js";
9
8
  import { buildGlobalSessionStats, init_row_mappers, metadataToSessionInsert, sessionRowToMetadata } from "./row-mappers.js";
9
+ import { TaskRunRepository, init_task_run_repository } from "../../tasks/task-run-repository.js";
10
10
  import { cancelConnectionObjective, init_connection_wait_repository } from "./connection-wait-repository.js";
11
11
  import { init_changes, notifyUserContextChange } from "../../user-context/changes.js";
12
12
  import { SESSION_PURPOSE_SQL, SESSION_SOURCE_SQL, init_session_identity_sql } from "./session-identity-sql.js";
@@ -2,10 +2,10 @@ import { ProductReadContracts } from "../../../packages/gateway-contract/src/cap
2
2
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
3
3
  import { TaskRepository, init_task_repository } from "../task-repository.js";
4
4
  import { TaskRunRepository, init_task_run_repository } from "../task-run-repository.js";
5
- import { CapabilityError } from "../../capabilities/runtime/errors.js";
6
- import { defineReadCapability } from "../../capabilities/runtime/dispatcher.js";
7
5
  import { TaskReadModelProjector } from "../task-read-model-projector.js";
8
6
  import { TaskConversationRepository } from "../task-conversation-repository.js";
7
+ import { CapabilityError } from "../../capabilities/runtime/errors.js";
8
+ import { defineReadCapability } from "../../capabilities/runtime/dispatcher.js";
9
9
  import { TaskContextRepository } from "../task-context-repository.js";
10
10
  import { TaskDependencyService } from "../task-dependency-service.js";
11
11
  import { TaskCriterionReviewRepository } from "../task-criterion-review-repository.js";
@@ -2,9 +2,9 @@ import { TaskCommandRequestSchema, TaskCreateRequestSchema, TaskDetailResponseSc
2
2
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
3
3
  import { TaskRepository, init_task_repository } from "../task-repository.js";
4
4
  import { TaskRunRepository, init_task_run_repository } from "../task-run-repository.js";
5
+ import { resolveTaskLocale } from "../task-language.js";
5
6
  import { CapabilityError } from "../../capabilities/runtime/errors.js";
6
7
  import { defineAtomicCapability } from "../../capabilities/runtime/dispatcher.js";
7
- import { resolveTaskLocale } from "../task-language.js";
8
8
  import { resolveProjectAgentId } from "../../projects/project-agent.js";
9
9
  import { resolveResponseLanguageForSession } from "../../agent/prompt/response-language.js";
10
10
  import { TaskApplicationService } from "../task-application-service.js";
@@ -1,7 +1,7 @@
1
1
  import { TaskRepository, init_task_repository } from "./task-repository.js";
2
2
  import { TaskRunRepository, init_task_run_repository } from "./task-run-repository.js";
3
- import { isHomeAttentionAcknowledged } from "../storage/sqlite/home-attention-repository.js";
4
3
  import { listConnectorApprovals } from "../storage/sqlite/connector-repository.js";
4
+ import { isHomeAttentionAcknowledged } from "../storage/sqlite/home-attention-repository.js";
5
5
  import "../storage/sqlite/index.js";
6
6
  import { TaskReadModelProjector } from "./task-read-model-projector.js";
7
7
  import "../automations/domain/defaults.js";
@@ -1,6 +1,6 @@
1
1
  import { afterSqliteCommit, getSqliteDatabase, init_transaction, runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
2
- import { enqueueTaskChangedEvent, init_task_change_events } from "./task-change-events.js";
3
2
  import { init_task_allocation_status, isRoutineTaskAllocationStatus } from "../session/task-allocation-status.js";
3
+ import { enqueueTaskChangedEvent, init_task_change_events } from "./task-change-events.js";
4
4
  import { appendTranscriptEntry } from "../storage/sqlite/transcript-repository.js";
5
5
  import { emitSessionTranscriptUpdate } from "../session/transcript-events.js";
6
6
  import { resolveTaskLocale } from "./task-language.js";
@@ -5,12 +5,11 @@ import { openXopcDatabase } from "../../storage/sqlite/connection.js";
5
5
  import { canonicalSessionCommand, sessionInputCommandSchema } from "../../../packages/gateway-contract/src/session-input-command.js";
6
6
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
7
7
  import { cancelQueuedSessionInput, claimNextSessionInput, finishSessionInputRun, getSessionInputById, getSessionInputState, init_session_input_repository, setSessionInputStatus } from "../../storage/sqlite/session-input-repository.js";
8
- import { appendComposerInputHistory, listComposerInputHistory } from "../../storage/sqlite/composer-input-history-repository.js";
9
8
  import { getSessionMetadata } from "../../storage/sqlite/session-read-repository.js";
9
+ import { appendComposerInputHistory, listComposerInputHistory } from "../../storage/sqlite/composer-input-history-repository.js";
10
10
  import "../../storage/sqlite/index.js";
11
11
  import { normalizeAgentId } from "../../agent-catalog/id.js";
12
12
  import { init_agent_scope, listAgentEntries } from "../../agent/agent-scope.js";
13
- import { AgentCatalogService } from "../../agent-catalog/service.js";
14
13
  import { init_paths } from "../../config/paths.js";
15
14
  import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
16
15
  import { resolveEffectiveAgentProfile } from "../../config/agent-profile.js";
@@ -23,6 +22,7 @@ import { buildSessionTimeline } from "../../session/transcript-outline.js";
23
22
  import { transcriptRowsToClientHistory } from "../../session/client-history.js";
24
23
  import { createCreateShareTool, isShareToolAvailable } from "../../agent/tools/create-share-tool.js";
25
24
  import { evictEmbeddedSessionRunner } from "../../agent/embedded/session-runner.js";
25
+ import { AgentCatalogService } from "../../agent-catalog/service.js";
26
26
  import { SessionIndex } from "../../session/manager.js";
27
27
  import "../../session/index.js";
28
28
  import { parseModelRef } from "../../agent/models/selection.js";
@@ -1,6 +1,6 @@
1
1
  import { init_agent_scope, resolveAgentProfileDir } from "../../agent/agent-scope.js";
2
- import { DEFAULT_SOUL_FILENAME } from "../../agent/context/workspace.js";
3
2
  import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
3
+ import { DEFAULT_SOUL_FILENAME } from "../../agent/context/workspace.js";
4
4
  import { loadProfileBootstrapFiles } from "../../agent/bootstrap/load-bootstrap-files.js";
5
5
  import { join } from "node:path";
6
6
  import { statSync } from "node:fs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xopcai/xopc",
3
- "version": "0.0.423",
3
+ "version": "0.0.425",
4
4
  "description": "Local-first personal AI with Ada, task delegation, files, projects and automations. Use cloud or local models.",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -230,6 +230,8 @@
230
230
  "test:plugins:store:e2e": "cross-env XOPC_LOG_LEVEL=fatal tsx scripts/verify-store-plugin-e2e.mts",
231
231
  "test:plugins:fixtures": "tsx scripts/build-store-plugin-lab.mts",
232
232
  "test:plugins:browser": "cross-env XOPC_LOG_LEVEL=fatal tsx scripts/verify-plugin-setup-browser.mts",
233
+ "test:web:activity:e2e": "pnpm run build:node && pnpm run build:web && tsx scripts/verify-assistant-activity-browser.mts",
234
+ "test:web:clarification:e2e": "pnpm run build:node && pnpm run build:web && tsx scripts/verify-clarification-browser.mts",
233
235
  "test:web:onboarding-visual": "node scripts/test-onboarding-visual.mjs",
234
236
  "test:web:onboarding-visual:update": "node scripts/test-onboarding-visual.mjs --update",
235
237
  "test:quick-understanding": "XOPC_LOG_LEVEL=fatal vitest run src/work-discovery/__tests__/evaluation.test.ts src/user-context/sources/__tests__/activity-clustering.test.ts src/knowledge/__tests__/quick-understanding.e2e.test.ts src/connectors/__tests__/content-enrichment.test.ts src/connectors/__tests__/connected-source-ingestion.test.ts",
@@ -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{m as i}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{l as a,n as o}from"./locale-store-_-_QzAV0.js";import{t as s}from"./circle-check-C23XjkUj.js";import{t as c}from"./gauge-C78eD2BA.js";import{t as l}from"./list-checks-BbsExAoq.js";import{t as ee}from"./puzzle-BptcPjKI.js";import{t as te}from"./search-DA7gz22f.js";import{t as u}from"./shield-check-BU58siTV.js";import{t as d}from"./sliders-horizontal-DqsYor6I.js";import{t as ne}from"./cn-0WouolD0.js";import{i as f}from"./vendor-swr-CdRzEUwF.js";import{t as re}from"./button-CnRSIP6m.js";import{t as p}from"./skeleton-BI5TyibZ.js";import{n as m,r as h}from"./cloud-credits-B-nbtkqv.js";import{t as g}from"./electron-env-DHOGevH3.js";import{t as ie}from"./sliding-tab-list-DuQyViqe.js";import{t as _}from"./skill-list-api-BkahlC5N.js";import{n as v}from"./settings-mode-store-D4AZlZDq.js";import{n as ae,t as y}from"./global-defaults-api-GQG-5G20.js";import{t as oe}from"./settings-advanced-section-CrqVxpan.js";import{t as b}from"./number-input-El7Szeln.js";import{n as se,t as x}from"./settings-page-header-CoPd_JDb.js";import"./settings-page-layout-D39EvFvm.js";import{n as S,t as C}from"./use-autosave-BqTpwsvF.js";var ce=n(),w=e(t(),1),T=r(),E=`w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg outline-none focus:border-accent focus:ring-2 focus:ring-accent/15`;function D(e){let t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:void 0}function le({draft:e,setDraft:t,zh:n}){let[r,i]=(0,w.useState)(()=>e.runtime.cloudCreditLimitPerRunMicro?m(e.runtime.cloudCreditLimitPerRunMicro):``),[a,o]=(0,w.useState)(!1);return(0,T.jsxs)(`label`,{className:`block text-xs font-medium text-fg-muted`,children:[n?`每次运行的 Cloud 消费上限(Credits)`:`Cloud spend limit per run (Credits)`,(0,T.jsx)(`input`,{type:`text`,inputMode:`decimal`,value:r,"aria-invalid":a,placeholder:n?`不设置额外上限`:`No additional limit`,className:`${E} mt-2`,onChange:n=>{let r=n.target.value;i(r);try{let n=r===``?void 0:h(r);if(n===`0`||n&&n.length>15)throw Error(`Invalid limit`);o(!1),t({...e,runtime:{...e.runtime,cloudCreditLimitPerRunMicro:n}})}catch{o(!0)}},onBlur:()=>{a&&i(e.runtime.cloudCreditLimitPerRunMicro?m(e.runtime.cloudCreditLimitPerRunMicro):``),o(!1)}}),(0,T.jsx)(`span`,{className:`mt-2 block font-normal ${a?`text-danger`:`text-fg-subtle`}`,children:a?n?`请输入大于零、最多四位小数的 Credits。无效输入不会保存。`:`Enter positive Credits with up to four decimals. Invalid input is not saved.`:n?`模型、图片和文件语音调用共享上限;不支持实时语音或 Cloud 电脑控制,不包含运行前后的后台调用。达到上限后停止,调整后需手动继续。`:`Shared by model, image and file audio calls during a run. Does not support realtime voice or Cloud computer use; excludes background calls outside the run. Stops at the limit; continue manually after adjusting it.`})]})}function O(e){let t=(0,ce.c)(104),{draft:n,setDraft:r,zh:i}=e,a=i?`费用控制`:`Spending control`,o;t[0]===a?o=t[1]:(o=(0,T.jsx)(`h2`,{className:`mb-4 text-base font-semibold text-fg`,children:a}),t[0]=a,t[1]=o);let s;t[2]!==n||t[3]!==r||t[4]!==i?(s=(0,T.jsx)(le,{draft:n,setDraft:r,zh:i}),t[2]=n,t[3]=r,t[4]=i,t[5]=s):s=t[5];let c;t[6]!==o||t[7]!==s?(c=(0,T.jsxs)(`section`,{className:`rounded-xl bg-surface-hover/20 p-5`,children:[o,s]}),t[6]=o,t[7]=s,t[8]=c):c=t[8];let l=i?`执行与缓存策略`:`Execution and cache policy`,ee=i?`轮数:${n.runtime.maxTurns??`默认`} · 超时:${n.runtime.timeoutMs??`默认`} · 缓存:${n.runtime.promptCache?.mode??`默认`} · Codemode:${n.runtime.codemode?.enabled?`开启`:`关闭`}`:`Turns: ${n.runtime.maxTurns??`default`} · Timeout: ${n.runtime.timeoutMs??`default`} · Cache: ${n.runtime.promptCache?.mode??`default`} · Codemode: ${n.runtime.codemode?.enabled?`on`:`off`}`,te=n.runtime.codemode?.enabled??!1,u;t[9]!==n||t[10]!==r?(u=e=>r({...n,runtime:{...n.runtime,codemode:{...n.runtime.codemode,enabled:e.target.checked}}}),t[9]=n,t[10]=r,t[11]=u):u=t[11];let d;t[12]!==te||t[13]!==u?(d=(0,T.jsx)(`input`,{type:`checkbox`,checked:te,onChange:u,className:`mt-1 size-4 accent-[var(--color-accent)]`}),t[12]=te,t[13]=u,t[14]=d):d=t[14];let ne=i?`Codemode 读取试点`:`Codemode read pilot`,f;t[15]===ne?f=t[16]:(f=(0,T.jsx)(`span`,{className:`block text-base font-semibold text-fg`,children:ne}),t[15]=ne,t[16]=f);let p=i?`允许智能体用脚本组合已授权的读取工具。默认关闭,保留普通工具调用。`:`Let agents combine authorized reads in scripts. Off by default; ordinary tool calls stay available.`,m;t[17]===p?m=t[18]:(m=(0,T.jsx)(`span`,{className:`mt-1 block text-sm text-fg-muted`,children:p}),t[17]=p,t[18]=m);let h;t[19]!==f||t[20]!==m?(h=(0,T.jsxs)(`span`,{children:[f,m]}),t[19]=f,t[20]=m,t[21]=h):h=t[21];let g;t[22]!==h||t[23]!==d?(g=(0,T.jsx)(`section`,{className:`rounded-xl bg-surface-hover/20 p-5`,children:(0,T.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3`,children:[d,h]})}),t[22]=h,t[23]=d,t[24]=g):g=t[24];let _=i?`执行限制`:`Execution limits`,v;t[25]===_?v=t[26]:(v=(0,T.jsx)(`h2`,{className:`text-base font-semibold text-fg`,children:_}),t[25]=_,t[26]=v);let ae=i?`为所有智能体设置安全上限;留空时使用系统默认值。`:`Set safe upper bounds for every agent. Empty fields use system defaults.`,y;t[27]===ae?y=t[28]:(y=(0,T.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:ae}),t[27]=ae,t[28]=y);let se=i?`每次运行最多轮数`:`Maximum turns per run`,x=n.runtime.maxTurns??``,S=i?`系统默认`:`System default`,C;t[29]!==n||t[30]!==r?(C=e=>r({...n,runtime:{...n.runtime,maxTurns:D(e.target.value)}}),t[29]=n,t[30]=r,t[31]=C):C=t[31];let w;t[32]!==x||t[33]!==S||t[34]!==C?(w=(0,T.jsx)(b,{allowEmpty:!0,type:`number`,min:1,value:x,placeholder:S,onChange:C,className:`${E} mt-2`}),t[32]=x,t[33]=S,t[34]=C,t[35]=w):w=t[35];let O;t[36]!==se||t[37]!==w?(O=(0,T.jsxs)(`label`,{className:`block text-xs font-medium text-fg-muted`,children:[se,w]}),t[36]=se,t[37]=w,t[38]=O):O=t[38];let k=i?`单轮超时(毫秒)`:`Turn timeout (ms)`,ue=n.runtime.timeoutMs??``,de=i?`系统默认`:`System default`,A;t[39]!==n||t[40]!==r?(A=e=>r({...n,runtime:{...n.runtime,timeoutMs:D(e.target.value)}}),t[39]=n,t[40]=r,t[41]=A):A=t[41];let j;t[42]!==ue||t[43]!==de||t[44]!==A?(j=(0,T.jsx)(b,{allowEmpty:!0,type:`number`,min:1,value:ue,placeholder:de,onChange:A,className:`${E} mt-2`}),t[42]=ue,t[43]=de,t[44]=A,t[45]=j):j=t[45];let M;t[46]!==k||t[47]!==j?(M=(0,T.jsxs)(`label`,{className:`block text-xs font-medium text-fg-muted`,children:[k,j]}),t[46]=k,t[47]=j,t[48]=M):M=t[48];let fe=i?`每轮最多工具失败次数`:`Maximum tool failures per turn`,N=n.runtime.maxToolFailuresPerTurn??``,P=i?`系统默认`:`System default`,F;t[49]!==n||t[50]!==r?(F=e=>r({...n,runtime:{...n.runtime,maxToolFailuresPerTurn:D(e.target.value)}}),t[49]=n,t[50]=r,t[51]=F):F=t[51];let I;t[52]!==N||t[53]!==P||t[54]!==F?(I=(0,T.jsx)(b,{allowEmpty:!0,type:`number`,min:1,value:N,placeholder:P,onChange:F,className:`${E} mt-2`}),t[52]=N,t[53]=P,t[54]=F,t[55]=I):I=t[55];let L;t[56]!==fe||t[57]!==I?(L=(0,T.jsxs)(`label`,{className:`block text-xs font-medium text-fg-muted`,children:[fe,I]}),t[56]=fe,t[57]=I,t[58]=L):L=t[58];let R;t[59]!==O||t[60]!==M||t[61]!==L?(R=(0,T.jsxs)(`div`,{className:`mt-5 grid gap-4 md:grid-cols-3`,children:[O,M,L]}),t[59]=O,t[60]=M,t[61]=L,t[62]=R):R=t[62];let z;t[63]!==v||t[64]!==y||t[65]!==R?(z=(0,T.jsxs)(`section`,{className:`rounded-xl bg-surface-hover/20 p-5`,children:[v,y,R]}),t[63]=v,t[64]=y,t[65]=R,t[66]=z):z=t[66];let B=i?`提示词缓存`:`Prompt cache`,V;t[67]===B?V=t[68]:(V=(0,T.jsx)(`h2`,{className:`text-base font-semibold text-fg`,children:B}),t[67]=B,t[68]=V);let H=i?`复用稳定的上下文以降低响应延迟和模型费用。`:`Reuse stable context to reduce latency and model cost.`,U;t[69]===H?U=t[70]:(U=(0,T.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:H}),t[69]=H,t[70]=U);let W=i?`缓存模式`:`Cache mode`,G;t[71]===W?G=t[72]:(G=(0,T.jsx)(`span`,{children:W}),t[71]=W,t[72]=G);let K=i?`缓存模式`:`Cache mode`,q;t[73]===Symbol.for(`react.memo_cache_sentinel`)?(q=[`auto`,`off`],t[73]=q):q=t[73];let J;t[74]!==n||t[75]!==r||t[76]!==i?(J=q.map(e=>(0,T.jsx)(re,{"aria-pressed":n.runtime.promptCache?.mode===e,variant:n.runtime.promptCache?.mode===e?`secondary`:`ghost`,className:`flex-1 py-1.5 text-xs`,onClick:()=>r({...n,runtime:{...n.runtime,promptCache:{mode:e,lifetime:n.runtime.promptCache?.lifetime??`short`}}}),children:e===`auto`?i?`自动`:`Automatic`:i?`关闭`:`Off`},e)),t[74]=n,t[75]=r,t[76]=i,t[77]=J):J=t[77];let Y;t[78]!==K||t[79]!==J?(Y=(0,T.jsx)(ie,{className:`mt-1.5 flex rounded-lg bg-surface-panel p-1`,role:`group`,"aria-label":K,children:J}),t[78]=K,t[79]=J,t[80]=Y):Y=t[80];let X;t[81]!==G||t[82]!==Y?(X=(0,T.jsxs)(`div`,{className:`text-xs font-medium text-fg-muted`,children:[G,Y]}),t[81]=G,t[82]=Y,t[83]=X):X=t[83];let pe;t[84]!==n||t[85]!==r||t[86]!==i?(pe=n.runtime.promptCache?.mode===`auto`?(0,T.jsxs)(`div`,{className:`text-xs font-medium text-fg-muted`,children:[(0,T.jsx)(`span`,{children:i?`缓存周期`:`Cache lifetime`}),(0,T.jsx)(ie,{className:`mt-1.5 flex rounded-lg bg-surface-panel p-1`,role:`group`,"aria-label":i?`缓存周期`:`Cache lifetime`,children:[`short`,`long`].map(e=>(0,T.jsx)(re,{"aria-pressed":n.runtime.promptCache?.lifetime===e,variant:n.runtime.promptCache?.lifetime===e?`secondary`:`ghost`,className:`flex-1 py-1.5 text-xs`,onClick:()=>r({...n,runtime:{...n.runtime,promptCache:{mode:`auto`,lifetime:e}}}),children:e===`short`?i?`短期`:`Short`:i?`长期`:`Long`},e))})]}):null,t[84]=n,t[85]=r,t[86]=i,t[87]=pe):pe=t[87];let Z;t[88]!==X||t[89]!==pe?(Z=(0,T.jsxs)(`div`,{className:`mt-5 grid gap-4 sm:grid-cols-2`,children:[X,pe]}),t[88]=X,t[89]=pe,t[90]=Z):Z=t[90];let Q;t[91]!==V||t[92]!==U||t[93]!==Z?(Q=(0,T.jsxs)(`section`,{className:`rounded-xl bg-surface-hover/20 p-5`,children:[V,U,Z]}),t[91]=V,t[92]=U,t[93]=Z,t[94]=Q):Q=t[94];let $;t[95]!==g||t[96]!==z||t[97]!==l||t[98]!==Q||t[99]!==ee?($=(0,T.jsxs)(oe,{title:l,summary:ee,children:[g,z,Q]}),t[95]=g,t[96]=z,t[97]=l,t[98]=Q,t[99]=ee,t[100]=$):$=t[100];let me;return t[101]!==c||t[102]!==$?(me=(0,T.jsxs)(`div`,{className:`space-y-5`,children:[c,$]}),t[101]=c,t[102]=$,t[103]=me):me=t[103],me}function k(e){return[...new Set(e)].sort()}var ue=[{id:`core`,names:[`doc-coauthoring`,`define-task`,`find-skills`,`summarize`],en:`Core`,zh:`核心`},{id:`office`,names:[`doc-coauthoring`,`define-task`,`find-skills`,`summarize`,`docx`,`pdf`,`pptx`,`xlsx`],en:`Office`,zh:`办公成果`},{id:`local-app`,names:[`doc-coauthoring`,`define-task`,`find-skills`,`summarize`,`build-xopc-local-app`,`frontend-design`,`theme-factory`],en:`Local App`,zh:`本地应用`},{id:`developer`,names:[`doc-coauthoring`,`define-task`,`find-skills`,`summarize`,`diagnose`,`github`,`tdd`,`webapp-testing`],en:`Developer`,zh:`开发者`},{id:`desktop-pet`,names:[`doc-coauthoring`,`define-task`,`find-skills`,`summarize`,`hatch-pet`],en:`Desktop Pet`,zh:`桌面宠物`}];function de(e){let t=(0,ce.c)(115),{draft:n,setDraft:r,zh:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a={revalidateOnFocus:!1},t[0]=a):a=t[0];let{data:o,error:c,isLoading:ee}=f(`agent-defaults-skills-catalog`,_,a),[u,d]=(0,w.useState)(``),re=n.skills.mode===`selected`?n.skills.include:n.skills.exclude;o?.catalog;let p;if(t[1]!==re||t[2]!==o?.catalog||t[3]!==u){let e=[...o?.catalog??[]],n=new Set(e.map(N));for(let t of re)n.has(t)||e.push({name:t,description:``,enabled:!0});let r=u.trim().toLowerCase();p=e.filter(e=>!r||`${e.name} ${e.description}`.toLowerCase().includes(r)).sort(fe),t[1]=re,t[2]=o?.catalog,t[3]=u,t[4]=p}else p=t[4];let m=p,h;t[5]!==n.skills.exclude||t[6]!==n.skills.include||t[7]!==n.skills.mode?(h=e=>n.skills.mode===`selected`?n.skills.include.includes(e):!n.skills.exclude.includes(e),t[5]=n.skills.exclude,t[6]=n.skills.include,t[7]=n.skills.mode,t[8]=h):h=t[8];let g=h,ie;t[9]!==n||t[10]!==r?(ie=e=>{if(n.skills.mode===`selected`){let t=n.skills.include.includes(e)?n.skills.include.filter(t=>t!==e):k([...n.skills.include,e]);r({...n,skills:{mode:`selected`,include:t}});return}let t=n.skills.exclude.includes(e)?n.skills.exclude.filter(t=>t!==e):k([...n.skills.exclude,e]);r({...n,skills:{mode:`all-enabled`,exclude:t}})},t[9]=n,t[10]=r,t[11]=ie):ie=t[11];let v=ie,ae;t[12]===o?.catalog?ae=t[13]:(ae=o?.catalog??[],t[12]=o?.catalog,t[13]=ae);let y;if(t[14]!==g||t[15]!==ae){let e;t[17]===g?e=t[18]:(e=e=>e.enabled&&g(e.name),t[17]=g,t[18]=e),y=ae.filter(e),t[14]=g,t[15]=ae,t[16]=y}else y=t[16];let oe=y.length,b;t[19]!==o?.catalog||t[20]!==n||t[21]!==r?(b=e=>{let t=new Set((o?.catalog??[]).filter(M).map(j));r({...n,skills:{mode:`selected`,include:k(e.filter(e=>t.has(e)))}})},t[19]=o?.catalog,t[20]=n,t[21]=r,t[22]=b):b=t[22];let se=b,x=i?`技能策略`:`Skill policy`,S;t[23]===x?S=t[24]:(S=(0,T.jsx)(`h2`,{className:`text-base font-semibold text-fg`,children:x}),t[23]=x,t[24]=S);let C=i?`决定所有智能体默认可以使用哪些技能。`:`Choose which skills every agent can discover and use by default.`,E;t[25]===C?E=t[26]:(E=(0,T.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:C}),t[25]=C,t[26]=E);let D;t[27]!==n||t[28]!==r?(D=()=>r({...n,skills:{mode:`all-enabled`,exclude:[]}}),t[27]=n,t[28]=r,t[29]=D):D=t[29];let le=n.skills.mode===`all-enabled`?`bg-accent-soft shadow-surface`:`hover:bg-surface-hover`,O;t[30]===le?O=t[31]:(O=ne(`flex items-start gap-3 rounded-xl bg-surface-base/55 p-4 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,le),t[30]=le,t[31]=O);let de;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(de=(0,T.jsx)(s,{className:`mt-0.5 size-5 shrink-0 text-accent`}),t[32]=de):de=t[32];let P=i?`使用所有已启用技能`:`Use every enabled skill`,F;t[33]===P?F=t[34]:(F=(0,T.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:P}),t[33]=P,t[34]=F);let I=i?`适合需要完整目录的高级智能体;新增技能会自动加入。`:`For advanced agents that need the full catalog; newly enabled skills are added automatically.`,L;t[35]===I?L=t[36]:(L=(0,T.jsx)(`span`,{className:`mt-1 block text-xs leading-5 text-fg-muted`,children:I}),t[35]=I,t[36]=L);let R;t[37]!==F||t[38]!==L?(R=(0,T.jsxs)(`span`,{children:[F,L]}),t[37]=F,t[38]=L,t[39]=R):R=t[39];let z;t[40]!==D||t[41]!==O||t[42]!==R?(z=(0,T.jsxs)(`button`,{type:`button`,onClick:D,className:O,children:[de,R]}),t[40]=D,t[41]=O,t[42]=R,t[43]=z):z=t[43];let B;t[44]!==n||t[45]!==r?(B=()=>r({...n,skills:{mode:`selected`,include:[]}}),t[44]=n,t[45]=r,t[46]=B):B=t[46];let V=n.skills.mode===`selected`?`bg-accent-soft shadow-surface`:`hover:bg-surface-hover`,H;t[47]===V?H=t[48]:(H=ne(`flex items-start gap-3 rounded-xl bg-surface-base/55 p-4 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,V),t[47]=V,t[48]=H);let U;t[49]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,T.jsx)(l,{className:`mt-0.5 size-5 shrink-0 text-accent`}),t[49]=U):U=t[49];let W=i?`只使用选中的技能`:`Use selected skills only`,G;t[50]===W?G=t[51]:(G=(0,T.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:W}),t[50]=W,t[51]=G);let K=i?`适合严格受控的环境;新增技能不会自动加入。`:`For tightly controlled environments; new skills are not added automatically.`,q;t[52]===K?q=t[53]:(q=(0,T.jsx)(`span`,{className:`mt-1 block text-xs leading-5 text-fg-muted`,children:K}),t[52]=K,t[53]=q);let J;t[54]!==G||t[55]!==q?(J=(0,T.jsxs)(`span`,{children:[G,q]}),t[54]=G,t[55]=q,t[56]=J):J=t[56];let Y;t[57]!==B||t[58]!==H||t[59]!==J?(Y=(0,T.jsxs)(`button`,{type:`button`,onClick:B,className:H,children:[U,J]}),t[57]=B,t[58]=H,t[59]=J,t[60]=Y):Y=t[60];let X;t[61]!==z||t[62]!==Y?(X=(0,T.jsxs)(`div`,{className:`mt-5 grid gap-3 sm:grid-cols-2`,children:[z,Y]}),t[61]=z,t[62]=Y,t[63]=X):X=t[63];let pe=i?`能力组合(会替换当前选择)`:`Capability packs (replaces the current selection)`,Z;t[64]===pe?Z=t[65]:(Z=(0,T.jsx)(`p`,{className:`text-xs font-medium text-fg-muted`,children:pe}),t[64]=pe,t[65]=Z);let Q;t[66]!==se||t[67]!==o||t[68]!==i?(Q=ue.map(e=>(0,T.jsx)(`button`,{type:`button`,onClick:()=>se(e.names),disabled:!o,className:`rounded-lg border border-edge bg-surface-panel px-3 py-1.5 text-xs font-medium text-fg transition-colors hover:bg-surface-hover disabled:cursor-not-allowed disabled:opacity-50`,children:i?e.zh:e.en},e.id)),t[66]=se,t[67]=o,t[68]=i,t[69]=Q):Q=t[69];let $;t[70]===Q?$=t[71]:($=(0,T.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:Q}),t[70]=Q,t[71]=$);let me;t[72]!==Z||t[73]!==$?(me=(0,T.jsxs)(`div`,{className:`mt-4`,children:[Z,$]}),t[72]=Z,t[73]=$,t[74]=me):me=t[74];let he;t[75]!==E||t[76]!==X||t[77]!==me||t[78]!==S?(he=(0,T.jsxs)(`section`,{className:`rounded-xl bg-surface-hover/20 p-5`,children:[S,E,X,me]}),t[75]=E,t[76]=X,t[77]=me,t[78]=S,t[79]=he):he=t[79];let ge=n.skills.mode===`selected`?i?`选择可用技能`:`Select available skills`:i?`管理例外`:`Manage exceptions`,_e;t[80]===ge?_e=t[81]:(_e=(0,T.jsx)(`h2`,{className:`text-base font-semibold text-fg`,children:ge}),t[80]=ge,t[81]=_e);let ve=i?`当前默认可用 ${oe} 个技能。`:`${oe} skills are available by default.`,ye;t[82]===ve?ye=t[83]:(ye=(0,T.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:ve}),t[82]=ve,t[83]=ye);let be;t[84]!==_e||t[85]!==ye?(be=(0,T.jsxs)(`div`,{children:[_e,ye]}),t[84]=_e,t[85]=ye,t[86]=be):be=t[86];let xe=i?`搜索技能`:`Search skills`,Se;t[87]===xe?Se=t[88]:(Se=(0,T.jsx)(`span`,{className:`sr-only`,children:xe}),t[87]=xe,t[88]=Se);let Ce;t[89]===Symbol.for(`react.memo_cache_sentinel`)?(Ce=(0,T.jsx)(te,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`}),t[89]=Ce):Ce=t[89];let we;t[90]===Symbol.for(`react.memo_cache_sentinel`)?(we=e=>d(e.target.value),t[90]=we):we=t[90];let Te=i?`搜索技能`:`Search skills`,Ee;t[91]!==u||t[92]!==Te?(Ee=(0,T.jsx)(`input`,{type:`search`,value:u,onChange:we,placeholder:Te,className:`w-full rounded-lg border border-edge bg-surface-panel py-2 pl-9 pr-3 text-sm text-fg outline-none focus:border-accent`}),t[91]=u,t[92]=Te,t[93]=Ee):Ee=t[93];let De;t[94]!==Se||t[95]!==Ee?(De=(0,T.jsxs)(`label`,{className:`relative block w-full sm:w-72`,children:[Se,Ce,Ee]}),t[94]=Se,t[95]=Ee,t[96]=De):De=t[96];let Oe;t[97]!==be||t[98]!==De?(Oe=(0,T.jsxs)(`div`,{className:`flex flex-wrap items-end justify-between gap-3`,children:[be,De]}),t[97]=be,t[98]=De,t[99]=Oe):Oe=t[99];let ke;t[100]===c?ke=t[101]:(ke=c?(0,T.jsx)(`p`,{className:`mt-4 rounded-lg bg-red-500/10 px-3 py-2 text-sm text-red-600`,children:c instanceof Error?c.message:String(c)}):null,t[100]=c,t[101]=ke);let Ae;t[102]!==g||t[103]!==ee||t[104]!==m||t[105]!==v||t[106]!==i?(Ae=ee?(0,T.jsx)(`div`,{className:`mt-4 space-y-2`,children:[0,1,2,3].map(A)}):(0,T.jsxs)(`div`,{className:`mt-4 flex max-h-[32rem] flex-col gap-1 overflow-y-auto rounded-xl bg-surface-base/45 p-1 [&>label]:rounded-lg [&>label]:bg-surface-panel/55`,children:[m.map(e=>{let t=g(e.name);return(0,T.jsxs)(`label`,{className:ne(`flex cursor-pointer items-start gap-3 px-4 py-3 hover:bg-surface-hover/60`,!e.enabled&&`cursor-not-allowed opacity-55`),children:[(0,T.jsx)(`input`,{type:`checkbox`,checked:t,disabled:!e.enabled,onChange:()=>v(e.name),className:`mt-0.5 size-4 rounded border-edge accent-[var(--color-accent)]`}),(0,T.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,T.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,T.jsx)(`span`,{className:`text-sm font-medium text-fg`,children:e.name}),e.enabled?null:(0,T.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2 py-0.5 text-[10px] text-fg-muted`,children:i?`全局未启用`:`Disabled globally`})]}),e.description?(0,T.jsx)(`span`,{className:`mt-1 block line-clamp-2 text-xs leading-5 text-fg-muted`,children:e.description}):null]})]},e.name)}),m.length===0?(0,T.jsx)(`p`,{className:`px-4 py-8 text-center text-sm text-fg-muted`,children:i?`没有匹配的技能。`:`No matching skills.`}):null]}),t[102]=g,t[103]=ee,t[104]=m,t[105]=v,t[106]=i,t[107]=Ae):Ae=t[107];let je;t[108]!==Oe||t[109]!==ke||t[110]!==Ae?(je=(0,T.jsxs)(`section`,{className:`rounded-xl bg-surface-hover/20 p-5`,children:[Oe,ke,Ae]}),t[108]=Oe,t[109]=ke,t[110]=Ae,t[111]=je):je=t[111];let Me;return t[112]!==he||t[113]!==je?(Me=(0,T.jsxs)(`div`,{className:`space-y-5`,children:[he,je]}),t[112]=he,t[113]=je,t[114]=Me):Me=t[114],Me}function A(e){return(0,T.jsx)(p,{className:`h-14 rounded-xl`},e)}function j(e){return e.name}function M(e){return e.enabled}function fe(e,t){return e.name.localeCompare(t.name)}function N(e){return e.name}var P={read:[`read_file`,`read`,`list_directory`,`search_files`,`web_search`,`web_fetch`,`read_task`],files:[`apply_patch`,`write_file`,`edit_file`],execute:[`exec_command`,`execute_code`,`write_stdin`],devices:[`browser_use`,`computer_use`,`phone_use`],external:[`send_message`,`send_media`,`publish_artifact`,`publish_task_result`]};function F(e){return Object.entries(P).find(([,t])=>t.includes(e))?.[0]??`other`}function I(e,t){let n={read:[`读取与查找资料`,`Read and find information`],files:[`修改文件`,`Change files`],execute:[`运行命令与代码`,`Run commands and code`],devices:[`操作网页与设备`,`Control browsers and devices`],external:[`发送与发布内容`,`Send and publish content`],other:[`其他与组合工具`,`Other and compound tools`]};return(n[e]??n.other)[+!t]}function L(e){let t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:void 0}function R(e){let t=(0,ce.c)(94),{draft:n,setDraft:r,builtinTools:i,zh:a}=e,o=v(),[s,c]=(0,w.useState)(``),[l,ee]=(0,w.useState)(`all`),[u,f]=(0,w.useState)(),p;t[0]===i?p=t[1]:(p=new Map(i.map(H)),t[0]=i,t[1]=p);let m=p,h;t[2]!==i||t[3]!==n.tools?(h=[...new Set([...i.map(V),...Object.keys(n.tools)])].filter(B).sort(z),t[2]=i,t[3]=n.tools,t[4]=h):h=t[4];let g=h,_;if(t[5]!==g||t[6]!==n.tools){let e;t[8]===n.tools?e=t[9]:(e=e=>(n.tools[e]?.mode??`allow`)===`allow`,t[8]=n.tools,t[9]=e),_=g.filter(e),t[5]=g,t[6]=n.tools,t[7]=_}else _=t[7];let ae=_.length,y;if(t[10]!==g||t[11]!==n.tools){let e;t[13]===n.tools?e=t[14]:(e=e=>n.tools[e]?.mode===`ask`,t[13]=n.tools,t[14]=e),y=g.filter(e),t[10]=g,t[11]=n.tools,t[12]=y}else y=t[12];let se=y.length,x;if(t[15]!==g||t[16]!==n.tools){let e;t[18]===n.tools?e=t[19]:(e=e=>n.tools[e]?.mode===`deny`,t[18]=n.tools,t[19]=e),x=g.filter(e),t[15]=g,t[16]=n.tools,t[17]=x}else x=t[17];let S;t[20]!==_.length||t[21]!==y.length||t[22]!==x.length?(S={allow:ae,ask:se,deny:x.length},t[20]=_.length,t[21]=y.length,t[22]=x.length,t[23]=S):S=t[23];let C=S,E;if(t[24]!==g||t[25]!==m||t[26]!==n.tools||t[27]!==l||t[28]!==s){let e=s.trim().toLowerCase();E=g.filter(t=>{let r=n.tools[t]?.mode??`allow`,i=m.get(t),a=`${t} ${i?.en??``} ${i?.zh??``}`.toLowerCase();return(!e||a.includes(e))&&(l===`all`||r===l)}),t[24]=g,t[25]=m,t[26]=n.tools,t[27]=l,t[28]=s,t[29]=E}else E=t[29];let D=E,le;t[30]!==n||t[31]!==r?(le=(e,t)=>{let i=n.tools[e]??{mode:`allow`};r({...n,tools:{...n.tools,[e]:{...i,...t}}})},t[30]=n,t[31]=r,t[32]=le):le=t[32];let O=le,k=a?`全部 ${g.length}`:`All ${g.length}`,ue;t[33]===k?ue=t[34]:(ue={id:`all`,label:k},t[33]=k,t[34]=ue);let de=a?`允许 ${C.allow}`:`Allow ${C.allow}`,A;t[35]===de?A=t[36]:(A={id:`allow`,label:de},t[35]=de,t[36]=A);let j=a?`询问 ${C.ask}`:`Ask ${C.ask}`,M;t[37]===j?M=t[38]:(M={id:`ask`,label:j},t[37]=j,t[38]=M);let fe=a?`禁用 ${C.deny}`:`Deny ${C.deny}`,N;t[39]===fe?N=t[40]:(N={id:`deny`,label:fe},t[39]=fe,t[40]=N);let P;t[41]!==ue||t[42]!==A||t[43]!==M||t[44]!==N?(P=[ue,A,M,N],t[41]=ue,t[42]=A,t[43]=M,t[44]=N,t[45]=P):P=t[45];let R=P,U=a?`默认工具权限`:`Default tool permissions`,W;t[46]===U?W=t[47]:(W=(0,T.jsx)(`h2`,{className:`text-base font-semibold text-fg`,children:U}),t[46]=U,t[47]=W);let G=a?`允许:直接执行;询问:执行前确认;禁用:智能体无法使用。分组只解释用途;命令、组合工具的实际读写与外部影响取决于调用内容,请逐项核对。`:`Allow runs directly, Ask requires confirmation, and Deny makes the tool unavailable.`,K;t[48]===G?K=t[49]:(K=(0,T.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:G}),t[48]=G,t[49]=K);let q;t[50]!==W||t[51]!==K?(q=(0,T.jsxs)(`div`,{children:[W,K]}),t[50]=W,t[51]=K,t[52]=q):q=t[52];let J=a?`工具筛选`:`Tool filter`,Y;t[53]!==l||t[54]!==R?(Y=R.map(e=>(0,T.jsx)(`button`,{"aria-pressed":l===e.id,type:`button`,onClick:()=>ee(e.id),className:ne(`rounded-lg px-3 py-1.5 text-xs font-medium`,l===e.id?`bg-surface-base text-fg shadow-surface`:`text-fg-muted hover:text-fg`),children:e.label},e.id)),t[53]=l,t[54]=R,t[55]=Y):Y=t[55];let X;t[56]!==J||t[57]!==Y?(X=(0,T.jsx)(ie,{className:`flex flex-wrap gap-1 rounded-xl bg-surface-panel p-1`,role:`group`,"aria-label":J,indicatorClassName:`rounded-lg bg-surface-base shadow-surface`,children:Y}),t[56]=J,t[57]=Y,t[58]=X):X=t[58];let pe=a?`搜索工具`:`Search tools`,Z;t[59]===pe?Z=t[60]:(Z=(0,T.jsx)(`span`,{className:`sr-only`,children:pe}),t[59]=pe,t[60]=Z);let Q;t[61]===Symbol.for(`react.memo_cache_sentinel`)?(Q=(0,T.jsx)(te,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`}),t[61]=Q):Q=t[61];let $;t[62]===Symbol.for(`react.memo_cache_sentinel`)?($=e=>c(e.target.value),t[62]=$):$=t[62];let me=a?`搜索工具`:`Search tools`,he;t[63]!==s||t[64]!==me?(he=(0,T.jsx)(`input`,{type:`search`,value:s,onChange:$,placeholder:me,className:`w-full rounded-lg border border-edge bg-surface-panel py-2 pl-9 pr-3 text-sm text-fg outline-none focus:border-accent`}),t[63]=s,t[64]=me,t[65]=he):he=t[65];let ge;t[66]!==Z||t[67]!==he?(ge=(0,T.jsxs)(`label`,{className:`relative block w-full sm:w-72`,children:[Z,Q,he]}),t[66]=Z,t[67]=he,t[68]=ge):ge=t[68];let _e;t[69]!==X||t[70]!==ge?(_e=(0,T.jsxs)(`div`,{className:`mt-5 flex flex-wrap items-center justify-between gap-3`,children:[X,ge]}),t[69]=X,t[70]=ge,t[71]=_e):_e=t[71];let ve=a?`工具调用限制`:`Tool call limits`,ye=a?`每个工具的调用次数和超时限制继续生效;授权可在下方直接修改。`:`Call and timeout limits remain active; edit permissions below.`,be;t[72]!==ve||t[73]!==ye?(be=(0,T.jsx)(oe,{title:ve,summary:ye,children:null}),t[72]=ve,t[73]=ye,t[74]=be):be=t[74];let xe;t[75]!==m||t[76]!==n.tools||t[77]!==u||t[78]!==o||t[79]!==O||t[80]!==D||t[81]!==a?(xe=D.map((e,t)=>{let r=n.tools[e]??{mode:`allow`},i=m.get(e),s=u===e;return(0,T.jsxs)(`div`,{className:`px-4 py-3`,children:[t===0||F(D[t-1])!==F(e)?(0,T.jsx)(`h3`,{className:`mb-3 border-b border-edge pb-2 text-sm font-semibold text-fg`,children:I(F(e),a)}):null,(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,T.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,T.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:(a?i?.zh:i?.en)||e}),(0,T.jsx)(`code`,{className:`text-xs text-fg-muted`,children:e})]}),(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(ie,{className:`flex rounded-lg bg-surface-base p-1`,role:`group`,"aria-label":e,indicatorClassName:`rounded-md bg-accent`,children:[`allow`,`ask`,`deny`].map(t=>(0,T.jsx)(`button`,{"aria-pressed":r.mode===t,type:`button`,onClick:()=>O(e,{mode:t}),className:ne(`rounded-md px-2.5 py-1 text-xs font-medium capitalize`,r.mode===t?`bg-accent text-on-accent`:`text-fg-muted hover:text-fg`),children:t===`allow`?a?`允许`:`Allow`:t===`ask`?a?`询问`:`Ask`:a?`禁用`:`Deny`},t))}),o?(0,T.jsx)(re,{variant:`ghost`,className:`px-2 py-1`,"aria-label":a?`${e} 调用限制`:`${e} call limits`,onClick:()=>f(s?void 0:e),children:(0,T.jsx)(d,{className:`size-4`})}):null]})]}),s&&o?(0,T.jsxs)(`div`,{className:`mt-3 grid gap-3 rounded-lg bg-surface-base p-3 sm:grid-cols-2`,children:[(0,T.jsxs)(`label`,{className:`block text-xs font-medium text-fg-muted`,children:[a?`每轮最多调用次数`:`Maximum calls per turn`,(0,T.jsx)(b,{allowEmpty:!0,type:`number`,min:1,value:r.maxCallsPerTurn??``,placeholder:a?`不限制`:`Unlimited`,onChange:t=>O(e,{maxCallsPerTurn:L(t.target.value)}),className:`mt-2 w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg outline-none focus:border-accent`})]}),(0,T.jsxs)(`label`,{className:`block text-xs font-medium text-fg-muted`,children:[a?`单次超时(毫秒)`:`Call timeout (ms)`,(0,T.jsx)(b,{allowEmpty:!0,type:`number`,min:1,value:r.timeoutMs??``,placeholder:a?`使用系统默认值`:`Use system default`,onChange:t=>O(e,{timeoutMs:L(t.target.value)}),className:`mt-2 w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg outline-none focus:border-accent`})]})]}):null]},e)}),t[75]=m,t[76]=n.tools,t[77]=u,t[78]=o,t[79]=O,t[80]=D,t[81]=a,t[82]=xe):xe=t[82];let Se;t[83]!==D.length||t[84]!==a?(Se=D.length===0?(0,T.jsx)(`p`,{className:`px-4 py-10 text-center text-sm text-fg-muted`,children:a?`没有匹配的工具。`:`No matching tools.`}):null,t[83]=D.length,t[84]=a,t[85]=Se):Se=t[85];let Ce;t[86]!==xe||t[87]!==Se?(Ce=(0,T.jsxs)(`div`,{className:`mt-4 flex max-h-[38rem] flex-col gap-1 overflow-y-auto rounded-xl bg-surface-base/45 p-1 [&>*]:rounded-lg [&>*]:bg-surface-panel/55`,children:[xe,Se]}),t[86]=xe,t[87]=Se,t[88]=Ce):Ce=t[88];let we;return t[89]!==q||t[90]!==_e||t[91]!==be||t[92]!==Ce?(we=(0,T.jsxs)(`section`,{className:`rounded-xl bg-surface-hover/20 p-5`,children:[q,_e,be,Ce]}),t[89]=q,t[90]=_e,t[91]=be,t[92]=Ce,t[93]=we):we=t[93],we}function z(e,t){return[`read`,`files`,`execute`,`external`,`devices`,`other`].indexOf(F(e))-[`read`,`files`,`execute`,`external`,`devices`,`other`].indexOf(F(t))||e.localeCompare(t)}function B(e){return e!==`computer_use`||g()}function V(e){return e.id}function H(e){return[e.id,e.description]}function U(){let e=(0,ce.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsxs)(se,{gap:`gap-5`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,T.jsxs)(`div`,{className:`space-y-2`,children:[(0,T.jsx)(p,{className:`h-7 w-56`}),(0,T.jsx)(p,{className:`h-4 w-96 max-w-full`})]}),(0,T.jsx)(p,{className:`h-9 w-28`})]}),(0,T.jsx)(p,{className:`h-20 rounded-2xl`}),(0,T.jsx)(p,{className:`h-12 rounded-xl`}),(0,T.jsx)(p,{className:`h-72 rounded-2xl`})]}),e[0]=t):t=e[0],t}function W(e){let t=(0,ce.c)(65),{initial:n,builtinTools:r,zh:a}=e,[o,s]=i(),l;t[0]===o?l=t[1]:(l=o.get(`panel`),t[0]=o,t[1]=l);let te=l,d=te===`skills`||te===`tools`||te===`runtime`?te:`skills`,f;t[2]!==o||t[3]!==s?(f=e=>{let t=new URLSearchParams(o);t.set(`panel`,e),s(t,{replace:!0})},t[2]=o,t[3]=s,t[4]=f):f=t[4];let p=f,m;t[5]===n?m=t[6]:(m=()=>structuredClone(n),t[5]=n,t[6]=m);let[h,g]=(0,w.useState)(m),_;t[7]===n?_=t[8]:(_=()=>structuredClone(n),t[7]=n,t[8]=_);let[v,oe]=(0,w.useState)(_),b;t[9]===h?b=t[10]:(b=JSON.stringify(h),t[9]=h,t[10]=b);let E;t[11]===v?E=t[12]:(E=JSON.stringify(v),t[11]=v,t[12]=E);let D=b!==E,le=a?`技能`:`Skills`,k;t[13]===le?k=t[14]:(k={id:`skills`,label:le,icon:ee},t[13]=le,t[14]=k);let ue=a?`工具`:`Tools`,A;t[15]===ue?A=t[16]:(A={id:`tools`,label:ue,icon:u},t[15]=ue,t[16]=A);let j=a?`运行`:`Runtime`,M;t[17]===j?M=t[18]:(M={id:`runtime`,label:j,icon:c},t[17]=j,t[18]=M);let fe;t[19]!==A||t[20]!==M||t[21]!==k?(fe=[k,A,M],t[19]=A,t[20]=M,t[21]=k,t[22]=fe):fe=t[22];let N=fe,P;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(P=async e=>{let t=structuredClone(e),n=await y(),r=await ae({...t,models:n.defaults.models},{scope:`agent`}),i=structuredClone(r.defaults);g(e=>JSON.stringify(e)===JSON.stringify(t)?i:e),oe(structuredClone(i))},t[23]=P):P=t[23];let F=P,I;t[24]!==D||t[25]!==h?(I={value:h,dirty:D,onSave:F,delayMs:0},t[24]=D,t[25]=h,t[26]=I):I=t[26];let L=C(I),z=L.onBlurCapture,B=a?`智能体设置`:`Agent settings`,V;t[27]!==L.error||t[28]!==L.status?(V=(0,T.jsx)(S,{status:L.status,error:L.error}),t[27]=L.error,t[28]=L.status,t[29]=V):V=t[29];let H;t[30]!==B||t[31]!==V?(H=(0,T.jsx)(x,{title:B,actions:V}),t[30]=B,t[31]=V,t[32]=H):H=t[32];let U;t[33]!==L.error||t[34]!==L.retry||t[35]!==a?(U=L.error?(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 rounded-xl bg-red-500/10 px-3 py-2 text-sm text-red-600`,children:[(0,T.jsx)(`span`,{children:L.error}),(0,T.jsx)(re,{type:`button`,variant:`ghost`,className:`h-8 text-red-600`,onClick:L.retry,children:a?`重试`:`Retry`})]}):null,t[33]=L.error,t[34]=L.retry,t[35]=a,t[36]=U):U=t[36];let W=a?`默认配置分区`:`Default configuration sections`,G;t[37]!==d||t[38]!==p||t[39]!==N?(G=N.map(e=>{let{id:t,label:n,icon:r}=e;return(0,T.jsxs)(`button`,{type:`button`,"aria-pressed":d===t,onClick:()=>p(t),className:ne(`flex min-w-0 items-center justify-center gap-2 rounded-lg px-3 py-2.5 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,d===t?`bg-surface-base text-fg shadow-surface`:`text-fg-muted hover:bg-surface-hover hover:text-fg`),children:[(0,T.jsx)(r,{className:ne(`size-4 shrink-0`,d===t?`text-accent`:`text-fg-subtle`)}),(0,T.jsx)(`span`,{className:`text-sm font-medium`,children:n})]},t)}),t[37]=d,t[38]=p,t[39]=N,t[40]=G):G=t[40];let K;t[41]!==W||t[42]!==G?(K=(0,T.jsx)(ie,{as:`nav`,className:`grid grid-cols-3 gap-1 rounded-xl bg-surface-hover/20 p-1`,"aria-label":W,indicatorClassName:`rounded-lg bg-surface-base shadow-surface`,children:G}),t[41]=W,t[42]=G,t[43]=K):K=t[43];let q;t[44]!==d||t[45]!==h||t[46]!==a?(q=d===`skills`?(0,T.jsx)(de,{draft:h,setDraft:g,zh:a}):null,t[44]=d,t[45]=h,t[46]=a,t[47]=q):q=t[47];let J;t[48]!==d||t[49]!==r||t[50]!==h||t[51]!==a?(J=d===`tools`?(0,T.jsx)(R,{draft:h,setDraft:g,builtinTools:r,zh:a}):null,t[48]=d,t[49]=r,t[50]=h,t[51]=a,t[52]=J):J=t[52];let Y;t[53]!==d||t[54]!==h||t[55]!==a?(Y=d===`runtime`?(0,T.jsx)(O,{draft:h,setDraft:g,zh:a}):null,t[53]=d,t[54]=h,t[55]=a,t[56]=Y):Y=t[56];let X;return t[57]!==L.onBlurCapture||t[58]!==H||t[59]!==U||t[60]!==K||t[61]!==q||t[62]!==J||t[63]!==Y?(X=(0,T.jsxs)(se,{gap:`gap-5`,onBlurCapture:z,children:[H,U,K,q,J,Y]}),t[57]=L.onBlurCapture,t[58]=H,t[59]=U,t[60]=K,t[61]=q,t[62]=J,t[63]=Y,t[64]=X):X=t[64],X}function G(){let e=(0,ce.c)(17),t=a(q),n=o(K)===`zh`,{data:r,error:i,isLoading:s,mutate:c}=f(t?`settings-agent-defaults`:null,y);if(!t){let t=n?`需要本机服务令牌。`:`Local service token required.`,r;return e[0]===t?r=e[1]:(r=(0,T.jsx)(se,{children:(0,T.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t})}),e[0]=t,e[1]=r),r}if(i&&!r){let t=String(i),r;e[2]===t?r=e[3]:(r=(0,T.jsx)(`p`,{className:`rounded-xl bg-red-500/10 px-3 py-2 text-sm text-red-600`,children:t}),e[2]=t,e[3]=r);let a;e[4]===c?a=e[5]:(a=()=>void c(),e[4]=c,e[5]=a);let o=n?`重试`:`Retry`,s;e[6]!==a||e[7]!==o?(s=(0,T.jsx)(re,{onClick:a,children:o}),e[6]=a,e[7]=o,e[8]=s):s=e[8];let l;return e[9]!==r||e[10]!==s?(l=(0,T.jsxs)(se,{children:[r,s]}),e[9]=r,e[10]=s,e[11]=l):l=e[11],l}if(s||!r){let t;return e[12]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(U,{}),e[12]=t):t=e[12],t}let l;return e[13]!==r.builtinTools||e[14]!==r.defaults||e[15]!==n?(l=(0,T.jsx)(W,{initial:r.defaults,builtinTools:r.builtinTools,zh:n}),e[13]=r.builtinTools,e[14]=r.defaults,e[15]=n,e[16]=l):l=e[16],l}function K(e){return e.language}function q(e){return e.conversationId}export{G as AgentDefaultsSettingsPanel};