@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
@@ -1,4 +1,4 @@
1
- import { type ComputerAction, type ComputerCommand, type ComputerModelBinding, type ComputerObservation, type ComputerReceipt, type ComputerTarget, type ComputerApp, type ComputerWindow } from '@xopcai/computer-control-contract';
1
+ import { type ComputerAction, type ComputerCommand, type ComputerModelBinding, type ComputerObservation, type ComputerReceipt, type ComputerTarget, type ComputerApp, type ComputerWindow, type ComputerInputTiming } from '@xopcai/computer-control-contract';
2
2
  import { type ComputerConfig } from './config.js';
3
3
  import type { ComputerNativeTiming } from './diagnostics.js';
4
4
  export interface DriverObservation {
@@ -24,6 +24,7 @@ export interface ComputerDriver {
24
24
  }): Promise<ComputerTarget>;
25
25
  observe(target: ComputerTarget, signal: AbortSignal): Promise<DriverObservation>;
26
26
  perform(target: ComputerTarget, action: ComputerAction, signal: AbortSignal): Promise<void>;
27
+ getLastInputTiming?(): ComputerInputTiming | undefined;
27
28
  /** Must finish only after no further input can be dispatched. */
28
29
  stop(): Promise<void>;
29
30
  }
@@ -69,6 +70,7 @@ export declare class ComputerBroker {
69
70
  private readonly driver;
70
71
  private readonly host;
71
72
  private readonly now;
73
+ private readonly durationNow;
72
74
  readonly epoch: `${string}-${string}-${string}-${string}-${string}`;
73
75
  private session?;
74
76
  private busy;
@@ -77,7 +79,7 @@ export declare class ComputerBroker {
77
79
  private readonly apps;
78
80
  private readonly config;
79
81
  private readonly timer;
80
- constructor(driver: ComputerDriver, host: ComputerBrokerHost, config?: Partial<ComputerConfig>, now?: () => number);
82
+ constructor(driver: ComputerDriver, host: ComputerBrokerHost, config?: Partial<ComputerConfig>, now?: () => number, durationNow?: () => number);
81
83
  private expired;
82
84
  private result;
83
85
  private active;
@@ -4,6 +4,7 @@ import { ComputerConfigSchema, init_config } from "./config.js";
4
4
  import { ActionEnvelopeSchema, ComputerCommandSchema, init_src } from "../../packages/computer-control-contract/src/index.js";
5
5
  import { ComputerTargetError } from "./errors.js";
6
6
  import { createHash, randomUUID } from "node:crypto";
7
+ import { setTimeout } from "node:timers/promises";
7
8
  //#region src/computer/broker.ts
8
9
  init_src();
9
10
  init_config();
@@ -19,10 +20,11 @@ var ComputerBroker = class {
19
20
  apps = /* @__PURE__ */ new Map();
20
21
  config;
21
22
  timer;
22
- constructor(driver, host, config = {}, now = Date.now) {
23
+ constructor(driver, host, config = {}, now = Date.now, durationNow = now === Date.now ? () => performance.now() : now) {
23
24
  this.driver = driver;
24
25
  this.host = host;
25
26
  this.now = now;
27
+ this.durationNow = durationNow;
26
28
  this.config = ComputerConfigSchema.parse(config);
27
29
  this.timer = setInterval(() => {
28
30
  const s = this.session;
@@ -306,9 +308,12 @@ var ComputerBroker = class {
306
308
  return this.result(s);
307
309
  }
308
310
  }
309
- const precheckStarted = this.now();
311
+ const precheckStarted = this.durationNow();
310
312
  let matched = false;
313
+ let precheckSamples = 0;
311
314
  for (let sample = 0; sample < 4; sample++) {
315
+ precheckSamples++;
316
+ if (sample) await setTimeout(100, void 0, { signal: s.controller.signal });
312
317
  let current;
313
318
  try {
314
319
  current = await this.driver.observe(s.target, s.controller.signal);
@@ -337,9 +342,10 @@ var ComputerBroker = class {
337
342
  };
338
343
  }
339
344
  const nativeMs = {
340
- precheckMs: Math.max(0, this.now() - precheckStarted),
345
+ precheckMs: Math.max(0, Math.round(this.durationNow() - precheckStarted)),
341
346
  inputMs: 0,
342
- postObserveMs: 0
347
+ postObserveMs: 0,
348
+ precheckSamples
343
349
  };
344
350
  const receipt = {
345
351
  actionId: e.actionId,
@@ -355,15 +361,23 @@ var ComputerBroker = class {
355
361
  s.pending = void 0;
356
362
  s.status = "running";
357
363
  try {
358
- const inputStarted = this.now();
359
- await this.driver.perform(s.target, e.action, s.controller.signal);
360
- nativeMs.inputMs = Math.max(0, this.now() - inputStarted);
364
+ const inputStarted = this.durationNow();
365
+ try {
366
+ await this.driver.perform(s.target, e.action, s.controller.signal);
367
+ } finally {
368
+ nativeMs.inputMs = Math.max(0, Math.round(this.durationNow() - inputStarted));
369
+ nativeMs.inputDetail = this.driver.getLastInputTiming?.();
370
+ }
361
371
  this.active(s);
362
372
  receipt.dispatch = "completed";
363
373
  s.status = "ready";
364
- const observationStarted = this.now();
365
- const after = await this.observe(s);
366
- nativeMs.postObserveMs = Math.max(0, this.now() - observationStarted);
374
+ const observationStarted = this.durationNow();
375
+ let after;
376
+ try {
377
+ after = await this.observe(s);
378
+ } finally {
379
+ nativeMs.postObserveMs = Math.max(0, Math.round(this.durationNow() - observationStarted));
380
+ }
367
381
  receipt.verification = after.observation ? "visual" : "none";
368
382
  return {
369
383
  ...after,
@@ -383,7 +397,8 @@ var ComputerBroker = class {
383
397
  });
384
398
  return {
385
399
  ...this.result(s),
386
- receipt
400
+ receipt,
401
+ nativeMs
387
402
  };
388
403
  }
389
404
  }
@@ -1,12 +1,12 @@
1
1
  import { z } from 'zod';
2
- import type { ComputerAction, ComputerObservation, ComputerReceipt } from '@xopcai/computer-control-contract';
2
+ import { type ComputerAction, type ComputerObservation, type ComputerReceipt } from '@xopcai/computer-control-contract';
3
3
  import type { ComputerVerification } from './task-state.js';
4
4
  export declare const ComputerFailurePhaseSchema: z.ZodEnum<{
5
5
  open: "open";
6
6
  executor: "executor";
7
7
  model: "model";
8
- observe: "observe";
9
8
  dispatch: "dispatch";
9
+ observe: "observe";
10
10
  release: "release";
11
11
  frame_upload: "frame_upload";
12
12
  oracle: "oracle";
@@ -15,8 +15,8 @@ export type ComputerFailurePhase = z.infer<typeof ComputerFailurePhaseSchema>;
15
15
  export declare const ComputerFailureCategorySchema: z.ZodEnum<{
16
16
  permission: "permission";
17
17
  target: "target";
18
- cancelled: "cancelled";
19
18
  unknown: "unknown";
19
+ cancelled: "cancelled";
20
20
  model: "model";
21
21
  observation: "observation";
22
22
  budget: "budget";
@@ -29,8 +29,8 @@ export declare const ComputerFailureSchema: z.ZodObject<{
29
29
  category: z.ZodEnum<{
30
30
  permission: "permission";
31
31
  target: "target";
32
- cancelled: "cancelled";
33
32
  unknown: "unknown";
33
+ cancelled: "cancelled";
34
34
  model: "model";
35
35
  observation: "observation";
36
36
  budget: "budget";
@@ -43,8 +43,8 @@ export declare const ComputerFailureSchema: z.ZodObject<{
43
43
  open: "open";
44
44
  executor: "executor";
45
45
  model: "model";
46
- observe: "observe";
47
46
  dispatch: "dispatch";
47
+ observe: "observe";
48
48
  release: "release";
49
49
  frame_upload: "frame_upload";
50
50
  oracle: "oracle";
@@ -86,6 +86,19 @@ export declare const ComputerNativeTimingSchema: z.ZodObject<{
86
86
  precheckMs: z.ZodNumber;
87
87
  inputMs: z.ZodNumber;
88
88
  postObserveMs: z.ZodNumber;
89
+ inputDetail: z.ZodOptional<z.ZodObject<{
90
+ wallMs: z.ZodNumber;
91
+ identityCheckMs: z.ZodNumber;
92
+ actionValidationMs: z.ZodNumber;
93
+ windowsInputGuardMs: z.ZodNullable<z.ZodNumber>;
94
+ sdkCallMs: z.ZodNumber;
95
+ resultValidationMs: z.ZodNumber;
96
+ renderGraceMs: z.ZodNumber;
97
+ unattributedMs: z.ZodNumber;
98
+ sdkCalls: z.ZodNumber;
99
+ completed: z.ZodBoolean;
100
+ }, z.core.$strict>>;
101
+ precheckSamples: z.ZodOptional<z.ZodNumber>;
89
102
  }, z.core.$strict>;
90
103
  export type ComputerNativeTiming = z.infer<typeof ComputerNativeTimingSchema>;
91
104
  export declare const ComputerSessionReportSchema: z.ZodObject<{
@@ -125,8 +138,8 @@ export declare const ComputerSessionReportSchema: z.ZodObject<{
125
138
  category: z.ZodEnum<{
126
139
  permission: "permission";
127
140
  target: "target";
128
- cancelled: "cancelled";
129
141
  unknown: "unknown";
142
+ cancelled: "cancelled";
130
143
  model: "model";
131
144
  observation: "observation";
132
145
  budget: "budget";
@@ -139,8 +152,8 @@ export declare const ComputerSessionReportSchema: z.ZodObject<{
139
152
  open: "open";
140
153
  executor: "executor";
141
154
  model: "model";
142
- observe: "observe";
143
155
  dispatch: "dispatch";
156
+ observe: "observe";
144
157
  release: "release";
145
158
  frame_upload: "frame_upload";
146
159
  oracle: "oracle";
@@ -175,6 +188,45 @@ export declare const ComputerSessionReportSchema: z.ZodObject<{
175
188
  free_pool_unavailable: "free_pool_unavailable";
176
189
  }>>;
177
190
  }, z.core.$strict>>;
191
+ timings: z.ZodOptional<z.ZodArray<z.ZodObject<{
192
+ actionId: z.ZodString;
193
+ nativeMs: z.ZodOptional<z.ZodObject<{
194
+ precheckMs: z.ZodNumber;
195
+ inputMs: z.ZodNumber;
196
+ postObserveMs: z.ZodNumber;
197
+ inputDetail: z.ZodOptional<z.ZodObject<{
198
+ wallMs: z.ZodNumber;
199
+ identityCheckMs: z.ZodNumber;
200
+ actionValidationMs: z.ZodNumber;
201
+ windowsInputGuardMs: z.ZodNullable<z.ZodNumber>;
202
+ sdkCallMs: z.ZodNumber;
203
+ resultValidationMs: z.ZodNumber;
204
+ renderGraceMs: z.ZodNumber;
205
+ unattributedMs: z.ZodNumber;
206
+ sdkCalls: z.ZodNumber;
207
+ completed: z.ZodBoolean;
208
+ }, z.core.$strict>>;
209
+ precheckSamples: z.ZodOptional<z.ZodNumber>;
210
+ }, z.core.$strict>>;
211
+ kind: z.ZodOptional<z.ZodEnum<{
212
+ wait: "wait";
213
+ typeText: "typeText";
214
+ activate: "activate";
215
+ showMenu: "showMenu";
216
+ click: "click";
217
+ drag: "drag";
218
+ setValue: "setValue";
219
+ pressKeys: "pressKeys";
220
+ scroll: "scroll";
221
+ }>>;
222
+ transport: z.ZodOptional<z.ZodObject<{
223
+ brokerWallMs: z.ZodNumber;
224
+ frameUploadMs: z.ZodNullable<z.ZodNumber>;
225
+ commandWallMs: z.ZodNumber;
226
+ }, z.core.$strict>>;
227
+ endpointRoundTripMs: z.ZodNumber;
228
+ }, z.core.$strict>>>;
229
+ timingsTruncated: z.ZodOptional<z.ZodBoolean>;
178
230
  recentActions: z.ZodArray<z.ZodObject<{
179
231
  kind: z.ZodEnum<{
180
232
  wait: "wait";
@@ -210,20 +262,22 @@ export type ComputerSessionReport = z.infer<typeof ComputerSessionReportSchema>;
210
262
  /** A bounded metadata-only companion to task history; it never retains action arguments or pixels. */
211
263
  export declare class ComputerSessionDiagnostics {
212
264
  private readonly now;
265
+ private readonly durationNow;
213
266
  private readonly data;
214
267
  private readonly receipts;
215
268
  private pending?;
216
269
  private endedAt?;
217
270
  phase: ComputerFailurePhase;
218
- constructor(now?: () => number);
271
+ constructor(now?: () => number, durationNow?: () => number);
219
272
  bind(sessionId: string): void;
220
273
  count(key: keyof ComputerSessionReport['counters']): void;
274
+ timing(value: NonNullable<ComputerSessionReport['timings']>[number]): void;
221
275
  measure<T>(phase: keyof ComputerSessionReport['phaseMs'], fn: () => Promise<T>): Promise<T>;
222
276
  propose(id: string, kind: ComputerAction['kind']): void;
223
277
  discard(): void;
224
278
  record(receipt: ComputerReceipt, before?: ComputerObservation, after?: ComputerObservation, verification?: ComputerVerification): void;
225
279
  verify(verification?: ComputerVerification): void;
226
- fail(error: unknown, phase?: "open" | "executor" | "model" | "observe" | "dispatch" | "release" | "frame_upload" | "oracle", dispatch?: ComputerFailure['dispatch'], aborted?: boolean): void;
280
+ fail(error: unknown, phase?: "open" | "executor" | "model" | "dispatch" | "observe" | "release" | "frame_upload" | "oracle", dispatch?: ComputerFailure['dispatch'], aborted?: boolean): void;
227
281
  finish(released: boolean): void;
228
282
  snapshot(): ComputerSessionReport;
229
283
  }
@@ -1,7 +1,9 @@
1
+ import { ComputerInputTimingSchema, ComputerTransportTimingSchema, init_src } from "../../packages/computer-control-contract/src/index.js";
1
2
  import { ComputerDiagnosticSchema, computerDiagnostic } from "./errors.js";
2
3
  import { randomUUID } from "node:crypto";
3
4
  import { z } from "zod";
4
5
  //#region src/computer/diagnostics.ts
6
+ init_src();
5
7
  const ComputerFailurePhaseSchema = z.enum([
6
8
  "open",
7
9
  "observe",
@@ -42,6 +44,15 @@ const ComputerFailureSchema = z.object({
42
44
  serviceErrorCode: ComputerDiagnosticSchema.shape.serviceErrorCode
43
45
  }).strict();
44
46
  const categories = Object.create(null);
47
+ for (const code of [
48
+ "AGENT_MODEL_REQUIRED",
49
+ "AGENT_MODEL_CHANGED",
50
+ "PLANNER_MISMATCH"
51
+ ]) categories[`COMPUTER_${code}`] = "model";
52
+ for (const code of ["PROGRAM_BUDGET", "PROGRAM_STORE_LIMIT"]) categories[`COMPUTER_${code}`] = "budget";
53
+ categories.COMPUTER_PROGRAM_POLICY_REFUSED = "permission";
54
+ categories.COMPUTER_PROGRAM_FAILED = "harness";
55
+ categories.COMPUTER_PROGRAM_UNAWAITED_CALL = "harness";
45
56
  for (const [category, codes] of Object.entries({
46
57
  permission: [
47
58
  "DISABLED",
@@ -196,7 +207,9 @@ const Count = z.number().int().nonnegative();
196
207
  const ComputerNativeTimingSchema = z.object({
197
208
  precheckMs: Count,
198
209
  inputMs: Count,
199
- postObserveMs: Count
210
+ postObserveMs: Count,
211
+ inputDetail: ComputerInputTimingSchema.optional(),
212
+ precheckSamples: Count.optional()
200
213
  }).strict();
201
214
  const CountersSchema = z.object({
202
215
  observations: Count,
@@ -233,6 +246,24 @@ const ComputerSessionReportSchema = z.object({
233
246
  release: Count
234
247
  }).strict(),
235
248
  failure: ComputerFailureSchema.optional(),
249
+ timings: z.array(z.object({
250
+ actionId: z.string().max(200),
251
+ nativeMs: ComputerNativeTimingSchema.optional(),
252
+ kind: z.enum([
253
+ "activate",
254
+ "showMenu",
255
+ "click",
256
+ "drag",
257
+ "setValue",
258
+ "typeText",
259
+ "pressKeys",
260
+ "scroll",
261
+ "wait"
262
+ ]).optional(),
263
+ transport: ComputerTransportTimingSchema.optional(),
264
+ endpointRoundTripMs: z.number().finite().nonnegative()
265
+ }).strict()).max(256).optional(),
266
+ timingsTruncated: z.boolean().optional(),
236
267
  recentActions: z.array(z.object({
237
268
  kind: z.enum([
238
269
  "activate",
@@ -271,8 +302,9 @@ var ComputerSessionDiagnostics = class {
271
302
  pending;
272
303
  endedAt;
273
304
  phase = "open";
274
- constructor(now = Date.now) {
305
+ constructor(now = Date.now, durationNow = now === Date.now ? () => performance.now() : now) {
275
306
  this.now = now;
307
+ this.durationNow = durationNow;
276
308
  this.data = {
277
309
  version: 1,
278
310
  reportId: randomUUID(),
@@ -310,13 +342,22 @@ var ComputerSessionDiagnostics = class {
310
342
  count(key) {
311
343
  this.data.counters[key]++;
312
344
  }
345
+ timing(value) {
346
+ const timings = this.data.timings ??= [];
347
+ if (timings.some((item) => item.actionId === value.actionId)) return;
348
+ if (timings.length === 256) {
349
+ this.data.timingsTruncated = true;
350
+ return;
351
+ }
352
+ timings.push(value);
353
+ }
313
354
  async measure(phase, fn) {
314
355
  this.phase = phase;
315
- const start = this.now();
356
+ const start = this.durationNow();
316
357
  try {
317
358
  return await fn();
318
359
  } finally {
319
- this.data.phaseMs[phase] += Math.max(0, Math.round(this.now() - start));
360
+ this.data.phaseMs[phase] += Math.max(0, Math.round(this.durationNow() - start));
320
361
  }
321
362
  }
322
363
  propose(id, kind) {
@@ -4,8 +4,8 @@ export declare const ComputerDiagnosticSchema: z.ZodObject<{
4
4
  errorCode: z.ZodString;
5
5
  phase: z.ZodEnum<{
6
6
  model: "model";
7
- observe: "observe";
8
7
  dispatch: "dispatch";
8
+ observe: "observe";
9
9
  frame_upload: "frame_upload";
10
10
  }>;
11
11
  diagnosticId: z.ZodUUID;
@@ -54,6 +54,10 @@ var ComputerTargetError = class extends Error {
54
54
  };
55
55
  /** Recovery instructions are deterministic; never replay an input with unknown delivery. */
56
56
  function computerRecovery(code) {
57
+ if (code === "COMPUTER_AGENT_MODEL_REQUIRED") return "Direct UI programs require an active visual main-model turn. Select a visual model and open with planner:agent; do not change models inside an active desktop session.";
58
+ if (code === "COMPUTER_AGENT_MODEL_CHANGED" || code === "COMPUTER_PLANNER_MISMATCH") return "The requested UI planner does not match the active session. Close and confirm release before opening the requested mode with the current main model.";
59
+ if (code === "COMPUTER_PROGRAM_UNAWAITED_CALL") return "The program ended with an unawaited UI call. Earlier inputs may already have completed. Control was released. Reopen and observe current state before performing only the remaining authorized actions; never replay the script. Await every ui.* call, including emitScreenshot. observe({visual:true}) already attaches the screenshot.";
60
+ if (code.startsWith("COMPUTER_PROGRAM_")) return "The UI program stopped. Inspect completed receipts and the report before continuing with a new program for only the remaining work. Never replay the entire script or bypass a policy refusal.";
57
61
  if (code === "COMPUTER_RECEIPT_MISMATCH") return "The receipt could not be matched to the dispatched action, so its outcome is uncertain. Inspect the application locally; never automatically retry or replay the input. Wait for confirmed release before switching tools.";
58
62
  if (code === "COMPUTER_FLOW_NOT_FOUND" || code === "COMPUTER_FLOW_TARGET_MISMATCH") return "The saved flow is unavailable or belongs to another application/device. Do not replay it or switch targets automatically. List flows and inspect the authorized target before planning again.";
59
63
  if (code === "COMPUTER_FLOW_NOT_VERIFIED" || code === "COMPUTER_FLOW_SAVE_FAILED") return "Control was released. No reusable flow was confirmed saved. Saving requires verified native navigation, non-sensitive labels and working local storage; never repeat desktop input merely to save a flow.";
@@ -50,8 +50,8 @@ export declare const ComputerEvaluationRunSchema: z.ZodObject<{
50
50
  category: z.ZodEnum<{
51
51
  permission: "permission";
52
52
  target: "target";
53
- cancelled: "cancelled";
54
53
  unknown: "unknown";
54
+ cancelled: "cancelled";
55
55
  model: "model";
56
56
  observation: "observation";
57
57
  budget: "budget";
@@ -64,8 +64,8 @@ export declare const ComputerEvaluationRunSchema: z.ZodObject<{
64
64
  open: "open";
65
65
  executor: "executor";
66
66
  model: "model";
67
- observe: "observe";
68
67
  dispatch: "dispatch";
68
+ observe: "observe";
69
69
  release: "release";
70
70
  frame_upload: "frame_upload";
71
71
  oracle: "oracle";
@@ -106,8 +106,8 @@ export declare function isAutonomousComputerSuccess(run: ComputerEvaluationRun):
106
106
  /** Export measured runtime values only; an executor must supply independent safety and oracle evidence. */
107
107
  export declare function computerReportMeasurements(report: ComputerSessionReport): {
108
108
  failure?: {
109
- category: "permission" | "target" | "cancelled" | "unknown" | "model" | "observation" | "budget" | "transport" | "native" | "no_progress" | "harness";
110
- phase: "open" | "executor" | "model" | "observe" | "dispatch" | "release" | "frame_upload" | "oracle";
109
+ category: "permission" | "target" | "unknown" | "cancelled" | "model" | "observation" | "budget" | "transport" | "native" | "no_progress" | "harness";
110
+ phase: "open" | "executor" | "model" | "dispatch" | "observe" | "release" | "frame_upload" | "oracle";
111
111
  errorCode: string;
112
112
  dispatch: "unknown" | "completed" | "started" | "notStarted";
113
113
  diagnosticId?: string;
@@ -0,0 +1,15 @@
1
+ import type { ComputerInputTiming } from '@xopcai/computer-control-contract';
2
+ type Stage = 'identityCheckMs' | 'actionValidationMs' | 'windowsInputGuardMs' | 'sdkCallMs' | 'resultValidationMs' | 'renderGraceMs';
3
+ /** Monotonic, non-overlapping input stages. SDK time includes the native RPC. */
4
+ export declare class ComputerInputTimer {
5
+ private readonly windows;
6
+ private readonly now;
7
+ private readonly startedAt;
8
+ private readonly stages;
9
+ private sdkCalls;
10
+ constructor(windows: boolean, now?: () => number);
11
+ measure<T>(stage: Stage, operation: () => T | Promise<T>): Promise<T>;
12
+ measureSync<T>(stage: Stage, operation: () => T): T;
13
+ finish(completed: boolean): ComputerInputTiming;
14
+ }
15
+ export {};
@@ -0,0 +1,49 @@
1
+ //#region src/computer/native-timing.ts
2
+ /** Monotonic, non-overlapping input stages. SDK time includes the native RPC. */
3
+ var ComputerInputTimer = class {
4
+ startedAt;
5
+ stages = {
6
+ identityCheckMs: 0,
7
+ actionValidationMs: 0,
8
+ windowsInputGuardMs: 0,
9
+ sdkCallMs: 0,
10
+ resultValidationMs: 0,
11
+ renderGraceMs: 0
12
+ };
13
+ sdkCalls = 0;
14
+ constructor(windows, now = () => performance.now()) {
15
+ this.windows = windows;
16
+ this.now = now;
17
+ this.startedAt = now();
18
+ }
19
+ async measure(stage, operation) {
20
+ const start = this.now();
21
+ if (stage === "sdkCallMs") this.sdkCalls++;
22
+ try {
23
+ return await operation();
24
+ } finally {
25
+ this.stages[stage] += Math.max(0, this.now() - start);
26
+ }
27
+ }
28
+ measureSync(stage, operation) {
29
+ const start = this.now();
30
+ try {
31
+ return operation();
32
+ } finally {
33
+ this.stages[stage] += Math.max(0, this.now() - start);
34
+ }
35
+ }
36
+ finish(completed) {
37
+ const wallMs = Math.max(0, this.now() - this.startedAt);
38
+ return {
39
+ wallMs,
40
+ ...this.stages,
41
+ windowsInputGuardMs: this.windows ? this.stages.windowsInputGuardMs : null,
42
+ unattributedMs: Math.max(0, wallMs - Object.values(this.stages).reduce((a, b) => a + b, 0)),
43
+ sdkCalls: this.sdkCalls,
44
+ completed
45
+ };
46
+ }
47
+ };
48
+ //#endregion
49
+ export { ComputerInputTimer };
@@ -0,0 +1,22 @@
1
+ export type ComputerProgramMethod = 'observe' | 'resolve' | 'act' | 'waitFor' | 'verify' | 'emitScreenshot';
2
+ export type ComputerProgramHost = (method: ComputerProgramMethod, args: unknown, signal: AbortSignal) => Promise<unknown>;
3
+ /** UI-only capability table; no general tool discovery, disk store, or output spill. */
4
+ export declare function executeComputerProgram(code: string, host: ComputerProgramHost, store: Record<string, unknown>, signal: AbortSignal, timeoutMs?: number): Promise<{
5
+ status: "program_error";
6
+ output: string;
7
+ errorCode: string;
8
+ scriptError: string;
9
+ scriptErrorMessage?: undefined;
10
+ } | {
11
+ status: "program_error";
12
+ output: string;
13
+ errorCode: string;
14
+ scriptError: import("@earendil-works/pi-codemode").CodemodeErrorKind;
15
+ scriptErrorMessage: string;
16
+ } | {
17
+ status: "program_completed";
18
+ output: string;
19
+ errorCode?: undefined;
20
+ scriptError?: undefined;
21
+ scriptErrorMessage?: undefined;
22
+ }>;
@@ -0,0 +1,105 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { z } from "zod";
3
+ import { CodemodeSandbox } from "@earendil-works/pi-codemode";
4
+ //#region src/computer/program-runtime.ts
5
+ let workerUrl;
6
+ function computerWorkerUrl() {
7
+ if (workerUrl) return workerUrl;
8
+ const bundled = new URL("./codemode-worker.js", import.meta.url);
9
+ const source = existsSync(bundled) ? bundled : new URL("./bundle/chunks/codemode-worker.js", import.meta.resolve("@earendil-works/pi-coding-agent"));
10
+ workerUrl = new URL(`data:text/javascript;base64,${readFileSync(source).toString("base64")}`);
11
+ return workerUrl;
12
+ }
13
+ /** UI-only capability table; no general tool discovery, disk store, or output spill. */
14
+ async function executeComputerProgram(code, host, store, signal, timeoutMs = 12e4) {
15
+ if (Buffer.byteLength(code) > 64 * 1024) throw new Error("COMPUTER_INPUT_LIMIT");
16
+ let busy = false;
17
+ let calls = 0;
18
+ let ended = false;
19
+ let hostErrorCode;
20
+ let cancelledHostCall = false;
21
+ const lifetime = new AbortController();
22
+ const combined = AbortSignal.any([signal, lifetime.signal]);
23
+ const inFlight = /* @__PURE__ */ new Set();
24
+ const sandbox = new CodemodeSandbox({
25
+ timeoutMs,
26
+ memoryLimitBytes: 64 * 1024 * 1024,
27
+ workerUrl: computerWorkerUrl(),
28
+ globals: [
29
+ "observe",
30
+ "resolve",
31
+ "act",
32
+ "waitFor",
33
+ "verify",
34
+ "emitScreenshot"
35
+ ].map((method) => ({
36
+ name: `ui.${method}`,
37
+ async execute(args, context) {
38
+ if (ended || ++calls > 64) {
39
+ lifetime.abort();
40
+ throw new Error("COMPUTER_PROGRAM_BUDGET");
41
+ }
42
+ if (busy) {
43
+ lifetime.abort();
44
+ throw new Error("COMPUTER_BUSY");
45
+ }
46
+ busy = true;
47
+ const operation = host(method, args, AbortSignal.any([combined, context.signal]));
48
+ inFlight.add(operation);
49
+ try {
50
+ return await operation;
51
+ } catch (error) {
52
+ if (error instanceof Error && /^COMPUTER_[A-Z_0-9]{1,80}$/.test(error.message)) hostErrorCode = error.message;
53
+ lifetime.abort();
54
+ throw error;
55
+ } finally {
56
+ cancelledHostCall ||= context.signal.aborted || combined.aborted;
57
+ inFlight.delete(operation);
58
+ busy = false;
59
+ }
60
+ }
61
+ }))
62
+ });
63
+ try {
64
+ const result = await sandbox.execute(code, {
65
+ store,
66
+ signal: combined
67
+ });
68
+ const unawaited = inFlight.size > 0;
69
+ ended = true;
70
+ lifetime.abort();
71
+ await Promise.allSettled([...inFlight]);
72
+ const text = result.output.filter((item) => item.type === "text").map((item) => item.text).join("\n").slice(0, 16e3);
73
+ if (unawaited || cancelledHostCall || hostErrorCode) return {
74
+ status: "program_error",
75
+ output: text,
76
+ errorCode: hostErrorCode ?? "COMPUTER_PROGRAM_UNAWAITED_CALL",
77
+ scriptError: "aborted"
78
+ };
79
+ if (result.ok === false) return {
80
+ status: "program_error",
81
+ output: text,
82
+ errorCode: hostErrorCode ?? "COMPUTER_PROGRAM_FAILED",
83
+ scriptError: result.error.kind,
84
+ scriptErrorMessage: result.error.message.slice(0, 1e3)
85
+ };
86
+ const next = { ...store };
87
+ for (const key of result.storeWrites.delete) delete next[key];
88
+ Object.assign(next, result.storeWrites.set);
89
+ if (Object.keys(next).length > 64 || Buffer.byteLength(JSON.stringify(next)) > 64 * 1024) throw new Error("COMPUTER_PROGRAM_STORE_LIMIT");
90
+ z.record(z.string(), z.json()).parse(next);
91
+ for (const key of Object.keys(store)) delete store[key];
92
+ Object.assign(store, next);
93
+ return {
94
+ status: "program_completed",
95
+ output: text
96
+ };
97
+ } finally {
98
+ ended = true;
99
+ lifetime.abort();
100
+ await sandbox.close();
101
+ await Promise.allSettled([...inFlight]);
102
+ }
103
+ }
104
+ //#endregion
105
+ export { executeComputerProgram };