@xopcai/xopc 0.0.423 → 0.0.424

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 (308) 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-AI081rxe.js} +1 -1
  8. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DOnHjAY_.js → agent-avatar-dicebear-DupnTbL7.js} +1 -1
  9. package/dist/gateway/static/root/assets/{agent-avatar-display-C9Lu9LVl.js → agent-avatar-display-CmEj6Uqy.js} +2 -2
  10. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-IEV5yKuu.js +1 -0
  11. package/dist/gateway/static/root/assets/{agent-plugin-dialog-sQNbqsGL.js → agent-plugin-dialog-D_njOuFA.js} +1 -1
  12. package/dist/gateway/static/root/assets/{agents-DZ77luyw.js → agents-B_yg9nA3.js} +4 -4
  13. package/dist/gateway/static/root/assets/{agents-admin-api-DIm_IHQL.js → agents-admin-api-CUZUolwG.js} +1 -1
  14. package/dist/gateway/static/root/assets/{api-By0yX3z1.js → api-CWWEVThO.js} +1 -1
  15. package/dist/gateway/static/root/assets/{api-BUJQiCoX.js → api-bpQ7yR10.js} +1 -1
  16. package/dist/gateway/static/root/assets/{app-management-settings-panel-PPgc1xaD.js → app-management-settings-panel-C0_hxwgg.js} +1 -1
  17. package/dist/gateway/static/root/assets/{appearance-settings-DbI9t4GS.js → appearance-settings-CLh-qnCC.js} +1 -1
  18. package/dist/gateway/static/root/assets/{apps-page-DIC28vl4.js → apps-page-Bjtm3Rgi.js} +1 -1
  19. package/dist/gateway/static/root/assets/{archive-plugin-B5ZSQVw2.js → archive-plugin-dGnstkhB.js} +1 -1
  20. package/dist/gateway/static/root/assets/{automation-api-CfjICuJK.js → automation-api-MB2xCoFF.js} +1 -1
  21. package/dist/gateway/static/root/assets/{automation-result-state-DpQSVGNY.js → automation-result-state-DJQflY78.js} +1 -1
  22. package/dist/gateway/static/root/assets/automation-task-card-DXgBxVE2.js +3 -0
  23. package/dist/gateway/static/root/assets/{automations-page-1NCQMSK1.js → automations-page-D3O7M2FH.js} +1 -1
  24. package/dist/gateway/static/root/assets/automations-workspace-Dk3FVWoX.js +9 -0
  25. package/dist/gateway/static/root/assets/{binary-plugins-_riZg0hb.js → binary-plugins-BrVJXmYf.js} +1 -1
  26. package/dist/gateway/static/root/assets/{block-editor-BpYTVDaG.js → block-editor-Dok4sfT3.js} +2 -2
  27. package/dist/gateway/static/root/assets/{browser-automation-inputs-DLbHyWE5.js → browser-automation-inputs-PJbT3CxW.js} +1 -1
  28. package/dist/gateway/static/root/assets/{browser-automations-page-BfOHr7er.js → browser-automations-page-kkpX1Q7K.js} +1 -1
  29. package/dist/gateway/static/root/assets/{browser-control-api-CqjIQdQ4.js → browser-control-api-Bg4wnkeA.js} +1 -1
  30. package/dist/gateway/static/root/assets/{browser-settings-page-CqjLefvt.js → browser-settings-page-BrgX_Yb2.js} +1 -1
  31. package/dist/gateway/static/root/assets/{capabilities-CTu4Y4Gc.js → capabilities-BMaJizw4.js} +1 -1
  32. package/dist/gateway/static/root/assets/{capabilities-BQ0bsu6d.js → capabilities-Cs6Jt5Gl.js} +1 -1
  33. package/dist/gateway/static/root/assets/capabilities-page-D5hvAG6D.js +2 -0
  34. package/dist/gateway/static/root/assets/{capabilities-settings-panel-Cq28kvMr.js → capabilities-settings-panel-BrEvm4IH.js} +3 -3
  35. package/dist/gateway/static/root/assets/{channels-BPVkbqBI.js → channels-1jQgGVc9.js} +1 -1
  36. package/dist/gateway/static/root/assets/{chat-agents-api-XnegLpGF.js → chat-agents-api-BAOWaUJf.js} +1 -1
  37. package/dist/gateway/static/root/assets/{chat-chart-block-BJFCFZz2.js → chat-chart-block-DeWrb9XR.js} +1 -1
  38. package/dist/gateway/static/root/assets/{chat-page-BpvlJdEr.js → chat-page-CafkCKOj.js} +30 -30
  39. package/dist/gateway/static/root/assets/{chat-terminal-dock-B9KlHa8j.js → chat-terminal-dock-C544n0-R.js} +1 -1
  40. package/dist/gateway/static/root/assets/{command-palette-api-DW7O6fME.js → command-palette-api-D9PXzY8b.js} +1 -1
  41. package/dist/gateway/static/root/assets/{composer-payload-handoff-qheyxoAD.js → composer-payload-handoff-CYXfjpem.js} +1 -1
  42. package/dist/gateway/static/root/assets/{computer-settings-page-KmaJ2UVz.js → computer-settings-page-DJmod8-w.js} +1 -1
  43. package/dist/gateway/static/root/assets/connected-providers-grid-b46VH4uy.js +1 -0
  44. package/dist/gateway/static/root/assets/{connector-service-page-BgexZyHR.js → connector-service-page-BqDbTOTp.js} +1 -1
  45. package/dist/gateway/static/root/assets/{connectors-api-DEYdFCdS.js → connectors-api-CwRuUnH4.js} +1 -1
  46. package/dist/gateway/static/root/assets/connectors-page-Mq9Bvoax.js +1 -0
  47. package/dist/gateway/static/root/assets/{date-picker-CSuiNiPU.js → date-picker-DWaT0IC0.js} +1 -1
  48. package/dist/gateway/static/root/assets/{dependency-picker-DHFVFI74.js → dependency-picker-DV9XAt6F.js} +1 -1
  49. package/dist/gateway/static/root/assets/{desktop-pet-DK3tV5PW.js → desktop-pet-Dffq2NxL.js} +1 -1
  50. package/dist/gateway/static/root/assets/{desktop-pet-settings-BKIcBnfQ.js → desktop-pet-settings-CrB1ICax.js} +1 -1
  51. package/dist/gateway/static/root/assets/{dev-view-store-ZgXvR5Sl.js → dev-view-store-liRgSkcT.js} +1 -1
  52. package/dist/gateway/static/root/assets/{device-pairing-wizard-ZY_cdq5I.js → device-pairing-wizard-1du1hfi5.js} +1 -1
  53. package/dist/gateway/static/root/assets/{directory-picker-path-field-C4N_kXUX.js → directory-picker-path-field-EKqQLQrE.js} +1 -1
  54. package/dist/gateway/static/root/assets/{discussion-annotation-sync-CdbkKHiR.js → discussion-annotation-sync-D-b1X6ro.js} +1 -1
  55. package/dist/gateway/static/root/assets/{extension-debug-page-vdSyb_US.js → extension-debug-page-wD97GeG0.js} +1 -1
  56. package/dist/gateway/static/root/assets/{extension-iframe-host-D4w7-mf1.js → extension-iframe-host-B4Q1CjvW.js} +1 -1
  57. package/dist/gateway/static/root/assets/{extension-marketplace-api-BVMU-5FO.js → extension-marketplace-api-ak1_K3u8.js} +1 -1
  58. package/dist/gateway/static/root/assets/{extension-page-BE7FHMek.js → extension-page-DWFI4iIh.js} +1 -1
  59. package/dist/gateway/static/root/assets/{extension-provider-8RM98QmD.js → extension-provider-BZwcaU5Y.js} +1 -1
  60. package/dist/gateway/static/root/assets/{extension-settings-page--SP1Dy2l.js → extension-settings-page-cn4KS42C.js} +1 -1
  61. package/dist/gateway/static/root/assets/{file-preview-surface-CFFuUQVY.js → file-preview-surface-c3gDD9sM.js} +1 -1
  62. package/dist/gateway/static/root/assets/{gateway-config-swr-i6wzzdws.js → gateway-config-swr-Dmt5JhZU.js} +1 -1
  63. package/dist/gateway/static/root/assets/{gateway-realtime-B1CCUrsG.js → gateway-realtime-CJtDXQCt.js} +1 -1
  64. package/dist/gateway/static/root/assets/gateway-realtime-store-DcsZyYEa.js +1 -0
  65. package/dist/gateway/static/root/assets/{gateway-restart-B3Odfu1z.js → gateway-restart-DInvvT5u.js} +1 -1
  66. package/dist/gateway/static/root/assets/{gateway-settings-QIwB2Ld0.js → gateway-settings-BZXdv2FE.js} +1 -1
  67. package/dist/gateway/static/root/assets/{gateway-startup-retry-DBpCoigO.js → gateway-startup-retry-s2KcWekp.js} +1 -1
  68. package/dist/gateway/static/root/assets/{global-defaults-api-GQG-5G20.js → global-defaults-api-DtnmDd87.js} +1 -1
  69. package/dist/gateway/static/root/assets/{home-page-BsfeSXsZ.js → home-page-CAVjA5rO.js} +2 -2
  70. package/dist/gateway/static/root/assets/{image-generation-api-CaiTrM7V.js → image-generation-api-RQQokgE9.js} +1 -1
  71. package/dist/gateway/static/root/assets/{imports-page-CLkhwelO.js → imports-page-BP_4TubV.js} +1 -1
  72. package/dist/gateway/static/root/assets/index-BS9mjvSL.js +11 -0
  73. package/dist/gateway/static/root/assets/index-pT-m6l6b.css +1 -0
  74. package/dist/gateway/static/root/assets/{install-connector-dialog-B9YBBGhs.js → install-connector-dialog-BNzNuXJ8.js} +1 -1
  75. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DrZQukhN.js → keyboard-shortcuts-settings-DNRQFepg.js} +1 -1
  76. package/dist/gateway/static/root/assets/{local-app-workbench-page-CecbOjks.js → local-app-workbench-page-CvY5XxbX.js} +1 -1
  77. package/dist/gateway/static/root/assets/{local-apps-page-CkVtgVlJ.js → local-apps-page-DfwEvd8G.js} +1 -1
  78. package/dist/gateway/static/root/assets/local-session-drafts-CuDdIyxR.js +4 -0
  79. package/dist/gateway/static/root/assets/{locale-store-_-_QzAV0.js → locale-store-TQcz_Vjt.js} +1 -1
  80. package/dist/gateway/static/root/assets/{logs-page-Dok7TpJ0.js → logs-page-eq49F1Rt.js} +1 -1
  81. package/dist/gateway/static/root/assets/{management-settings-CNbeHUKa.js → management-settings-BaYXDMOJ.js} +1 -1
  82. package/dist/gateway/static/root/assets/{markdown-view-CFWJhIqU.js → markdown-view-D4nII6Zv.js} +1 -1
  83. package/dist/gateway/static/root/assets/{media-plugins-BEcCzwnv.js → media-plugins-MvlAY405.js} +1 -1
  84. package/dist/gateway/static/root/assets/messages-DaLmc4W1.js +3 -0
  85. package/dist/gateway/static/root/assets/model-selector-nsoNHqif.js +1 -0
  86. package/dist/gateway/static/root/assets/{models-hub-cache-B1dBNhhc.js → models-hub-cache-CFIazNIF.js} +1 -1
  87. package/dist/gateway/static/root/assets/note-detail-panel-KPzbHiEW.js +5 -0
  88. package/dist/gateway/static/root/assets/note-image-lightbox-DticJxxh.js +1 -0
  89. package/dist/gateway/static/root/assets/{notes-api-ja_AMIh6.js → notes-api-HVxR5bRD.js} +1 -1
  90. package/dist/gateway/static/root/assets/{notes-page-_IG1mwIH.js → notes-page-yShJeR3i.js} +1 -1
  91. package/dist/gateway/static/root/assets/{oauth-api-C0NG7Hgs.js → oauth-api-CfKjRVnb.js} +1 -1
  92. package/dist/gateway/static/root/assets/{oauth-provider-connect-DLQ6Jhjc.js → oauth-provider-connect-D4uqONWr.js} +1 -1
  93. package/dist/gateway/static/root/assets/{page-context-capture-button-DBlILV5t.js → page-context-capture-button-B98nlKTc.js} +1 -1
  94. package/dist/gateway/static/root/assets/{page-context-draft-CcZSjlMa.js → page-context-draft-HcuK45iu.js} +1 -1
  95. package/dist/gateway/static/root/assets/page-header-store-D6SzJ9Ch.js +1 -0
  96. package/dist/gateway/static/root/assets/{personal-avatar-D3tjI4rK.js → personal-avatar-_d72UP_d.js} +1 -1
  97. package/dist/gateway/static/root/assets/{personal-page-C1gIYjQo.js → personal-page-B19h_3WQ.js} +1 -1
  98. package/dist/gateway/static/root/assets/{personal-settings-panel-Nm03jL4v.js → personal-settings-panel-CfwtGyue.js} +1 -1
  99. package/dist/gateway/static/root/assets/{phone-dependencies-card-72RGs4eb.js → phone-dependencies-card-D8bqsDk_.js} +1 -1
  100. package/dist/gateway/static/root/assets/{phone-model-picker-CNxK_l_B.js → phone-model-picker-CL_Zn6Xd.js} +1 -1
  101. package/dist/gateway/static/root/assets/{phone-settings-page-D5PodpGU.js → phone-settings-page-C5Jia8eQ.js} +1 -1
  102. package/dist/gateway/static/root/assets/{phone-workspace-store-Ci43KRd6.js → phone-workspace-store-FBfrfkYq.js} +1 -1
  103. package/dist/gateway/static/root/assets/plugin-details-dialog-gAq2KPzK.js +1 -0
  104. package/dist/gateway/static/root/assets/{preference-select-fields-CyFvi9Es.js → preference-select-fields-Ck8GAX_y.js} +1 -1
  105. package/dist/gateway/static/root/assets/{product-automation-feedback-BRdOheLC.js → product-automation-feedback-BJ9oTnNs.js} +2 -2
  106. package/dist/gateway/static/root/assets/{product-open-page-CIZj7rh-.js → product-open-page-Dw9hUdxP.js} +1 -1
  107. package/dist/gateway/static/root/assets/{product-preview-content-yK-9po5S.js → product-preview-content-C0iPzmSm.js} +1 -1
  108. package/dist/gateway/static/root/assets/{product-preview-modal-CkdKPk-W.js → product-preview-modal-COFtHoh6.js} +2 -2
  109. package/dist/gateway/static/root/assets/{project-detail-page-D_Kft8au.js → project-detail-page-C5Amjah-.js} +3 -3
  110. package/dist/gateway/static/root/assets/{project-understanding-6raciQr0.js → project-understanding-DpL9ADQU.js} +1 -1
  111. package/dist/gateway/static/root/assets/{projects-page-CNCw6Q5o.js → projects-page-gGg9nM2t.js} +1 -1
  112. package/dist/gateway/static/root/assets/{providers-api-DGeFqpPL.js → providers-api-D6JJRlJb.js} +1 -1
  113. package/dist/gateway/static/root/assets/{recording-upload-rA0Z6W2g.js → recording-upload-DxX1xKyt.js} +1 -1
  114. package/dist/gateway/static/root/assets/{registry-api-5LqCHY-I.js → registry-api-BfXzBR1D.js} +1 -1
  115. package/dist/gateway/static/root/assets/{remote-access-hub-DftT6xNt.js → remote-access-hub-BZA4StwC.js} +1 -1
  116. package/dist/gateway/static/root/assets/{resource-unavailable-CqP8gARc.js → resource-unavailable-X-SIrZYI.js} +1 -1
  117. package/dist/gateway/static/root/assets/route-preload-CWRb0UCt.js +2 -0
  118. package/dist/gateway/static/root/assets/{runtime-tools-api-CUzfEj0z.js → runtime-tools-api-1DjsPyQ5.js} +1 -1
  119. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-BnCtyORj.js +1 -0
  120. package/dist/gateway/static/root/assets/{service-recommendation-list-Bo46zqXR.js → service-recommendation-list-ChSOfHHh.js} +1 -1
  121. package/dist/gateway/static/root/assets/{session-api-CZQ-wpwx.js → session-api-rvY5aWw8.js} +1 -1
  122. package/dist/gateway/static/root/assets/session-manager-D2rbRfX3.js +23 -0
  123. package/dist/gateway/static/root/assets/sessions-page-DAS2IUGT.js +1 -0
  124. package/dist/gateway/static/root/assets/settings-advanced-gate-CYDQybNF.js +1 -0
  125. package/dist/gateway/static/root/assets/{settings-advanced-section-CrqVxpan.js → settings-advanced-section-ZKRIuk7h.js} +1 -1
  126. package/dist/gateway/static/root/assets/{settings-mode-store-D4AZlZDq.js → settings-mode-store-CtJ8pEfm.js} +1 -1
  127. package/dist/gateway/static/root/assets/{settings-page-D-X2rL2k.js → settings-page-B3pUce-_.js} +1 -1
  128. package/dist/gateway/static/root/assets/{settings-page-header-CoPd_JDb.js → settings-page-header-DuNCn8i-.js} +1 -1
  129. package/dist/gateway/static/root/assets/{settings-page-layout-D39EvFvm.js → settings-page-layout-DeNC8YHJ.js} +1 -1
  130. package/dist/gateway/static/root/assets/setup-status-panel-Fc3vuz_h.js +1 -0
  131. package/dist/gateway/static/root/assets/{share-link-dialog-D4oGzmxA.js → share-link-dialog-B3hwjVAx.js} +1 -1
  132. package/dist/gateway/static/root/assets/{share-preview-page-CArPpOZz.js → share-preview-page-D_9oFzGS.js} +1 -1
  133. package/dist/gateway/static/root/assets/{shares-api-DbJOyf2K.js → shares-api-BoUpXmxq.js} +1 -1
  134. package/dist/gateway/static/root/assets/shares-settings-Drfuvepz.js +1 -0
  135. package/dist/gateway/static/root/assets/{skill-api-CQxLO0sy.js → skill-api-By2HhJ9O.js} +1 -1
  136. package/dist/gateway/static/root/assets/{skill-list-api-BkahlC5N.js → skill-list-api-TaUCzS8Y.js} +1 -1
  137. package/dist/gateway/static/root/assets/{skill-reload-api-DZQLAkSr.js → skill-reload-api-CN2fpS1n.js} +1 -1
  138. package/dist/gateway/static/root/assets/{skills-page-BBlJMOZU.js → skills-page-LzGLique.js} +1 -1
  139. package/dist/gateway/static/root/assets/{system-settings-panel-b2h_YWsq.js → system-settings-panel-Cuyg8Ml3.js} +1 -1
  140. package/dist/gateway/static/root/assets/{task-detail-page-BkvjB6fd.js → task-detail-page-6A9337pK.js} +2 -2
  141. package/dist/gateway/static/root/assets/{task-result-evidence-DLnPVj6x.js → task-result-evidence-DDubAU_5.js} +1 -1
  142. package/dist/gateway/static/root/assets/{terminal-panel-store-Xmw-UfZa.js → terminal-panel-store-BNs75Wdr.js} +1 -1
  143. package/dist/gateway/static/root/assets/{theme-store-DU_07f3M.js → theme-store-DB1ZfBUm.js} +1 -1
  144. package/dist/gateway/static/root/assets/tracing-settings-page-TvtX4Goh.js +1 -0
  145. package/dist/gateway/static/root/assets/{tunnel-api-DD2HgB7G.js → tunnel-api-COoVEdV9.js} +1 -1
  146. package/dist/gateway/static/root/assets/{understanding-activity-store-CyQMYQhD.js → understanding-activity-store-Dr_MLgYe.js} +1 -1
  147. package/dist/gateway/static/root/assets/{understanding-refresh-store-CTgQYLOe.js → understanding-refresh-store-DGmLGEqw.js} +1 -1
  148. package/dist/gateway/static/root/assets/{usage-page-BUZLOZLg.js → usage-page-DP6eb6ed.js} +1 -1
  149. package/dist/gateway/static/root/assets/{use-autosave-BqTpwsvF.js → use-autosave-itwjDYUb.js} +1 -1
  150. package/dist/gateway/static/root/assets/{use-composer-attachments-DfP3JrD6.js → use-composer-attachments-hjIGlI_2.js} +1 -1
  151. package/dist/gateway/static/root/assets/{use-file-preview-expanded-D2m6BZLU.js → use-file-preview-expanded-ClLa0g8D.js} +2 -2
  152. package/dist/gateway/static/root/assets/{use-personal-profile-CmLuBSVu.js → use-personal-profile-vhWk6tTU.js} +1 -1
  153. package/dist/gateway/static/root/assets/{use-workspace-tree-DBvuHcas.js → use-workspace-tree-dfXXjA2-.js} +1 -1
  154. package/dist/gateway/static/root/assets/user-model-page-D8dswPWd.js +2 -0
  155. package/dist/gateway/static/root/assets/{voice-api-key-field-DGyL8PYB.js → voice-api-key-field-BIfBySnN.js} +1 -1
  156. package/dist/gateway/static/root/assets/{voice-config-api-CIRG9O8T.js → voice-config-api-J4o59ICE.js} +1 -1
  157. package/dist/gateway/static/root/assets/{voice-input-shortcut-events-DrVMpqDV.js → voice-input-shortcut-events-B1mlpUdC.js} +1 -1
  158. package/dist/gateway/static/root/assets/{voice-transcribe-api-H8o-xLEf.js → voice-transcribe-api-xxaSOOmq.js} +1 -1
  159. package/dist/gateway/static/root/assets/{work-discovery-overlay-CobALTh0.js → work-discovery-overlay-DqwT1E5u.js} +1 -1
  160. package/dist/gateway/static/root/assets/{work-discovery-page-Dxf_Hrwx.js → work-discovery-page-BzYQmPLT.js} +1 -1
  161. package/dist/gateway/static/root/assets/{working-directory-picker-modal-E9f8G3se.js → working-directory-picker-modal-D2Zf3GOG.js} +1 -1
  162. package/dist/gateway/static/root/assets/{workspace-api-N7bfM4a1.js → workspace-api-Bnx3eS2M.js} +2 -2
  163. package/dist/gateway/static/root/assets/workspace-editor-agent-store-COUVwj-p.js +1 -0
  164. package/dist/gateway/static/root/assets/{workspace-file-preview-dialog-BTQfAXNK.js → workspace-file-preview-dialog-D13qHzVr.js} +1 -1
  165. package/dist/gateway/static/root/assets/{workspace-open-location-menu-BOGOi-Ck.js → workspace-open-location-menu-Cou-ig1H.js} +1 -1
  166. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-Dqfy4Lwy.js → xopc-cloud-account-card-DQGPKxHA.js} +1 -1
  167. package/dist/gateway/static/root/index.html +80 -80
  168. package/dist/package.js +1 -1
  169. package/dist/packages/gateway-contract/src/clarification-questions.js +86 -0
  170. package/dist/packages/gateway-contract/src/clarifications.js +19 -0
  171. package/dist/packages/gateway-contract/src/index.js +1 -0
  172. package/dist/packages/gateway-contract/src/session-input-command.js +3 -0
  173. package/dist/src/agent/agent-manager.js +2 -2
  174. package/dist/src/agent/background-review/run-background-review.js +2 -2
  175. package/dist/src/agent/coding/repository-instructions.js +1 -1
  176. package/dist/src/agent/embedded/index.js +1 -1
  177. package/dist/src/agent/embedded/run-for-session.js +1 -1
  178. package/dist/src/agent/embedded/run-turn.js +3 -3
  179. package/dist/src/agent/embedded/session-tool-result-guard.js +2 -2
  180. package/dist/src/agent/embedded/tool-result-truncation.js +1 -1
  181. package/dist/src/agent/external-tools/cliProvider.js +2 -2
  182. package/dist/src/agent/external-tools/composio-provider.js +2 -2
  183. package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
  184. package/dist/src/agent/inbound/attachment-pipeline.js +1 -1
  185. package/dist/src/agent/memory/compaction.js +1 -1
  186. package/dist/src/agent/memory/context-budget.js +1 -1
  187. package/dist/src/agent/memory/context-recovery.js +1 -1
  188. package/dist/src/agent/memory/user-message-text.js +1 -1
  189. package/dist/src/agent/service/btw-query.js +1 -1
  190. package/dist/src/agent/service/direct-turn-helpers.js +1 -1
  191. package/dist/src/agent/service/process-direct-streaming.js +2 -2
  192. package/dist/src/agent/service.js +1 -1
  193. package/dist/src/agent/skills/index.js +1 -1
  194. package/dist/src/agent/skills/managed-store.js +1 -1
  195. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  196. package/dist/src/agent/source-context/types.d.ts +1 -0
  197. package/dist/src/agent/tools/clarify-tool.js +43 -5
  198. package/dist/src/agent/tools/cli-clarify.js +1 -0
  199. package/dist/src/agent/tools/dataBatch.js +1 -1
  200. package/dist/src/agent/tools/personal-read-tool.js +1 -1
  201. package/dist/src/agent/tools/personal-task-tool.d.ts +1 -1
  202. package/dist/src/agent/tools/phone-use-tool.js +2 -2
  203. package/dist/src/agent/tools/session-search-tool.js +1 -1
  204. package/dist/src/agent/tools/xopc-use-tool.js +2 -2
  205. package/dist/src/agent-catalog/capabilities.js +2 -2
  206. package/dist/src/agent-catalog/repository.js +1 -1
  207. package/dist/src/automations/api/routes.js +2 -2
  208. package/dist/src/automations/capabilities/drafts.js +1 -1
  209. package/dist/src/automations/capabilities/write.js +1 -1
  210. package/dist/src/automations/configuration-conversation.js +1 -1
  211. package/dist/src/browser/providers/browser-ext-install.js +1 -1
  212. package/dist/src/capabilities/runtime/dispatcher.js +1 -1
  213. package/dist/src/capabilities/runtime/product.js +1 -1
  214. package/dist/src/cli/commands/agent.js +1 -1
  215. package/dist/src/cli/commands/agents.js +1 -1
  216. package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
  217. package/dist/src/cli/commands/models.js +2 -2
  218. package/dist/src/cli/commands/onboard/model.js +1 -1
  219. package/dist/src/cli/commands/onboard.js +1 -1
  220. package/dist/src/cli/commands/platform.js +1 -1
  221. package/dist/src/cli/commands/profile.js +1 -1
  222. package/dist/src/cli/commands/tunnel.js +1 -1
  223. package/dist/src/cli/commands/update.js +1 -1
  224. package/dist/src/cli/extension-cli-register.js +1 -1
  225. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  226. package/dist/src/computer/diagnostics.d.ts +3 -3
  227. package/dist/src/computer/evaluation.d.ts +2 -2
  228. package/dist/src/config/agent-profile.js +1 -1
  229. package/dist/src/config/index.js +1 -1
  230. package/dist/src/connectors/learning-coordinator.js +1 -1
  231. package/dist/src/execution-environments/local-worktree-manager.js +1 -1
  232. package/dist/src/extensions/agent-plugins/skill-catalog.js +1 -1
  233. package/dist/src/extensions/agent-plugins/validation.js +1 -1
  234. package/dist/src/gateway/agents-admin.js +2 -2
  235. package/dist/src/gateway/ephemeral-clarification-waiter.js +1 -0
  236. package/dist/src/gateway/global-defaults-admin.js +1 -1
  237. package/dist/src/gateway/hono/routes/agents.js +1 -1
  238. package/dist/src/gateway/hono/routes/composer-history.js +1 -1
  239. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  240. package/dist/src/gateway/hono/routes/connectors.js +1 -1
  241. package/dist/src/gateway/hono/routes/home.js +1 -1
  242. package/dist/src/gateway/hono/routes/notes.js +2 -2
  243. package/dist/src/gateway/hono/routes/phone-setup.js +1 -1
  244. package/dist/src/gateway/hono/routes/phone.js +31 -6
  245. package/dist/src/gateway/hono/routes/projects.js +2 -2
  246. package/dist/src/gateway/hono/routes/public-gateway.js +2 -1
  247. package/dist/src/gateway/hono/routes/session-command-handler.js +1 -0
  248. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +6 -0
  249. package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
  250. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  251. package/dist/src/gateway/hono/routes/user-model-refresh.js +1 -1
  252. package/dist/src/gateway/image-generation-setup.js +1 -1
  253. package/dist/src/gateway/next-turn-suggestions/snapshot.js +1 -1
  254. package/dist/src/gateway/service/agent-runner.js +8 -3
  255. package/dist/src/gateway/service/run-gateway-agent.js +1 -1
  256. package/dist/src/gateway/service/session-input-coordinator.js +5 -4
  257. package/dist/src/gateway/service.js +7 -7
  258. package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
  259. package/dist/src/home-intelligence/host.js +2 -2
  260. package/dist/src/imports/importService.js +1 -1
  261. package/dist/src/local-apps/service.js +1 -1
  262. package/dist/src/personal-agent/service.js +1 -1
  263. package/dist/src/phone/assistance.js +3 -0
  264. package/dist/src/phone/contracts.d.ts +4 -0
  265. package/dist/src/phone/runtime.d.ts +7 -1
  266. package/dist/src/phone/runtime.js +31 -24
  267. package/dist/src/routing/agent-session-key.js +1 -1
  268. package/dist/src/runtime-tools/archive.js +1 -1
  269. package/dist/src/session/session-context-for-llm.js +1 -0
  270. package/dist/src/session/session-title.js +1 -1
  271. package/dist/src/storage/sqlite/clarification-wait-repository.js +45 -4
  272. package/dist/src/storage/sqlite/index.js +6 -6
  273. package/dist/src/storage/sqlite/session-creation-repository.js +1 -1
  274. package/dist/src/storage/sqlite/session-repository.js +1 -1
  275. package/dist/src/tasks/capabilities/read.js +2 -2
  276. package/dist/src/tasks/capabilities/write.js +1 -1
  277. package/dist/src/tasks/home-query-service.js +1 -1
  278. package/dist/src/tasks/task-allocation-repository.js +1 -1
  279. package/dist/src/tui/backends/embedded-backend.js +2 -2
  280. package/dist/src/voice/realtime/persona-context.js +1 -1
  281. package/package.json +2 -1
  282. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-L6J-FYQS.js +0 -1
  283. package/dist/gateway/static/root/assets/automation-task-card-BV7hPwN1.js +0 -3
  284. package/dist/gateway/static/root/assets/automations-workspace-CPFYdI8m.js +0 -9
  285. package/dist/gateway/static/root/assets/capabilities-page-ljQTg4T5.js +0 -2
  286. package/dist/gateway/static/root/assets/connected-providers-grid-BIX82L4N.js +0 -1
  287. package/dist/gateway/static/root/assets/connectors-page-BawS0DUd.js +0 -1
  288. package/dist/gateway/static/root/assets/gateway-realtime-store-BFCA_TAU.js +0 -1
  289. package/dist/gateway/static/root/assets/index-Dv8mUlNN.css +0 -1
  290. package/dist/gateway/static/root/assets/index-GX_PTIj6.js +0 -11
  291. package/dist/gateway/static/root/assets/local-session-drafts-DVSVgTCK.js +0 -1
  292. package/dist/gateway/static/root/assets/messages-D1u8VsPq.js +0 -3
  293. package/dist/gateway/static/root/assets/model-selector-DKB20MJY.js +0 -1
  294. package/dist/gateway/static/root/assets/note-detail-panel-COp5zpe4.js +0 -5
  295. package/dist/gateway/static/root/assets/note-image-lightbox-DvtEn8dg.js +0 -1
  296. package/dist/gateway/static/root/assets/page-header-store-RgQRaRbH.js +0 -1
  297. package/dist/gateway/static/root/assets/plugin-details-dialog-D_Lkepqt.js +0 -1
  298. package/dist/gateway/static/root/assets/route-preload-Hr12PIMD.js +0 -2
  299. package/dist/gateway/static/root/assets/runtime-impact-DbySfhdp.js +0 -1
  300. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-VIFAEKJi.js +0 -1
  301. package/dist/gateway/static/root/assets/session-manager-DhoRfUGE.js +0 -23
  302. package/dist/gateway/static/root/assets/sessions-page-BISYL6iE.js +0 -1
  303. package/dist/gateway/static/root/assets/settings-advanced-gate-BLnNiubD.js +0 -1
  304. package/dist/gateway/static/root/assets/setup-status-panel-DyzdCgrb.js +0 -1
  305. package/dist/gateway/static/root/assets/shares-settings-BFLomErf.js +0 -1
  306. package/dist/gateway/static/root/assets/tracing-settings-page-CemIMuec.js +0 -1
  307. package/dist/gateway/static/root/assets/user-model-page-BhX_Ahlu.js +0 -2
  308. package/dist/gateway/static/root/assets/workspace-editor-agent-store-Cb4TlnKX.js +0 -1
@@ -4,10 +4,10 @@ import { getSqliteDatabase, init_transaction, runSqliteWriteTransaction } from "
4
4
  import { init_session_instance_repository, readCurrentTranscriptId } from "../../storage/sqlite/session-instance-repository.js";
5
5
  import { SessionInstanceChangedError, cancelQueuedSessionInput, claimNextSessionInput, findSessionInput, findSessionInputByRunId, finishSessionInputRun, getSessionInputById, getSessionInputState, init_session_input_repository, insertSessionInput, mutateQueuedSessionInput, recoverSessionInputState, setSessionInputStatus } from "../../storage/sqlite/session-input-repository.js";
6
6
  import { TaskRunRepository, init_task_run_repository } from "../../tasks/task-run-repository.js";
7
- import { consumeClarificationResume, getActiveClarification, supersedeActiveClarification } from "../../storage/sqlite/clarification-wait-repository.js";
8
- import { replaceLatestSessionTurnAndQueueInput, validateLatestSessionTurnTarget } from "../../storage/sqlite/session-turn-replace-repository.js";
9
7
  import { cancelConnectionObjective, consumeConnectionResume, getActiveConnectionWait, getConnectionWait, hasPendingConnectionMessages, init_connection_wait_repository, interruptedConnectionMessage, publishConnectionWait, reconcileConnectionWaits } from "../../storage/sqlite/connection-wait-repository.js";
10
8
  import { appendTranscriptEntry } from "../../storage/sqlite/transcript-repository.js";
9
+ import { consumeClarificationResume, getActiveClarification, supersedeActiveClarification } from "../../storage/sqlite/clarification-wait-repository.js";
10
+ import { replaceLatestSessionTurnAndQueueInput, validateLatestSessionTurnTarget } from "../../storage/sqlite/session-turn-replace-repository.js";
11
11
  import "../../storage/sqlite/index.js";
12
12
  import { emitSessionTranscriptUpdate } from "../../session/transcript-events.js";
13
13
  import { consumePhoneAssistance, finishPhoneAssistance, phoneAssistance, queuePhoneAssistance, reconcilePhoneAssistance } from "../../phone/assistance.js";
@@ -50,9 +50,10 @@ function connectionInputPayload(wait, control) {
50
50
  };
51
51
  }
52
52
  function sameAppContext(input, existing) {
53
- const identity = (sources) => sources?.filter((source) => source.kind === "app_context").map((source) => ({
53
+ const identity = (sources) => sources?.filter((source) => source.kind === "app_context" || source.kind === "device_context").map((source) => ({
54
54
  snapshot: source.appContext,
55
- principal: source.appContextGrant?.principal.principalId
55
+ principal: source.appContextGrant?.principal.principalId,
56
+ interactionCapabilities: source.interactionCapabilities
56
57
  })) ?? [];
57
58
  return isDeepStrictEqual(input.origin, existing.origin) && isDeepStrictEqual(identity(input.sourceContexts), identity(existing.contextSnapshots));
58
59
  }
@@ -85,8 +85,8 @@ import { registerClarificationChannelRuntime } from "./clarify-runtime.js";
85
85
  import { ChannelManager } from "../channels/manager.js";
86
86
  import { ChatPreviewService } from "../chat-previews/service.js";
87
87
  import "../chat-previews/index.js";
88
- import "../config/index.js";
89
88
  import { configureGatewayHttpProxy } from "../infra/http-proxy-env.js";
89
+ import "../config/index.js";
90
90
  import { ManagedComposioEventPoller } from "../connectors/composio-managed-events.js";
91
91
  import { startConnectedKnowledgeCoordinator } from "../knowledge/coordinator.js";
92
92
  import "../knowledge/index.js";
@@ -94,18 +94,14 @@ import { PersonalReplyComposer } from "../personal-agent/reply-composer.js";
94
94
  import { ConnectionRecoveryService } from "../connectors/connection-recovery-service.js";
95
95
  import { startConnectorLearningCoordinator } from "../connectors/learning-coordinator.js";
96
96
  import { startConnectorSupervisor } from "../connectors/supervisor.js";
97
- import { EndpointToolRuntime } from "../endpoint-tools/runtime.js";
98
- import "../endpoint-tools/index.js";
99
97
  import { DiscussionService } from "../discussions/service.js";
100
98
  import { DiscussionOrganizer } from "../discussions/organizer.js";
101
99
  import { DiscussionLiveWorker } from "../discussions/live-worker.js";
102
100
  import { DiscussionOrganizerWorker } from "../discussions/organizer-worker.js";
103
101
  import { DiscussionSealer } from "../discussions/sealer.js";
104
102
  import "../discussions/index.js";
105
- import { HomeCapabilityPreflightService } from "../home-intelligence/capability-preflight.js";
106
- import { HomeAdviceGenerator } from "../home-intelligence/generator.js";
107
- import { HomeIntelligenceHost } from "../home-intelligence/host.js";
108
- import { HomeSnapshotBuilder } from "../home-intelligence/snapshot.js";
103
+ import { EndpointToolRuntime } from "../endpoint-tools/runtime.js";
104
+ import "../endpoint-tools/index.js";
109
105
  import { assertGatewayAuthConfigured, extractToken, resolveGatewayAuth, validateToken } from "./auth.js";
110
106
  import { prepareAutomationAgentSession } from "./automation-agent-session.js";
111
107
  import { deliverAutomationCompletion } from "./automation-completion-delivery.js";
@@ -167,6 +163,10 @@ import { TaskMainUpdateDecisionService } from "../tasks/task-main-update-decisio
167
163
  import { selectTaskMainUpdateAttempt, submitAndConfirmTaskMainUpdate } from "../tasks/task-main-update-input.js";
168
164
  import { checkAppContextAccess, prepareAppContext } from "./service/app-context-access.js";
169
165
  import { applyAutomaticVoiceLanguage, inferProductLanguageFromEnvironment, initializeVoiceDefaults } from "../voice/language-profile.js";
166
+ import { HomeAdviceGenerator } from "../home-intelligence/generator.js";
167
+ import { HomeIntelligenceHost } from "../home-intelligence/host.js";
168
+ import { HomeSnapshotBuilder } from "../home-intelligence/snapshot.js";
169
+ import { HomeCapabilityPreflightService } from "../home-intelligence/capability-preflight.js";
170
170
  import crypto from "node:crypto";
171
171
  //#region src/gateway/service.ts
172
172
  init_session_repository();
@@ -1,7 +1,6 @@
1
1
  import "../agent-config/schema.js";
2
2
  import { init_agent_config } from "../agent-config/index.js";
3
3
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
4
- import { AgentCatalogService } from "../agent-catalog/service.js";
5
4
  import { ConfigSchema, init_schema } from "../config/schema.js";
6
5
  import { init_model_policy, isComputerModel, isDedicatedComputerProfile } from "../computer/model-policy.js";
7
6
  import { voiceSupportsMode } from "../../packages/realtime-protocol/src/voice-catalog.js";
@@ -9,6 +8,7 @@ import { init_voice } from "../../packages/realtime-protocol/src/voice.js";
9
8
  import { getModelCatalogStore, init_model_catalog_store } from "../providers/model-catalog-store.js";
10
9
  import { phoneModelProfile } from "../phone/model-adapter.js";
11
10
  import { compareCatalogModels } from "../providers/model-catalog-ranking.js";
11
+ import { AgentCatalogService } from "../agent-catalog/service.js";
12
12
  import { prepareUpdateGlobalDefaults } from "./global-defaults-admin.js";
13
13
  //#region src/gateway/xopc-cloud-capability-setup.ts
14
14
  init_voice();
@@ -1,10 +1,10 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
+ import { HomeAdviceBudgetExceededError, isHomeProseLocalized } from "./generator.js";
3
4
  import { homePatternKey } from "./strategy.js";
5
+ import { HomeAdvicePolicy } from "./policy.js";
4
6
  import { HomeIntelligenceRepository } from "./repository.js";
5
7
  import { HomeOpportunityApplicationService } from "./application-service.js";
6
- import { HomeAdvicePolicy } from "./policy.js";
7
- import { HomeAdviceBudgetExceededError, isHomeProseLocalized } from "./generator.js";
8
8
  import { buildHomeOpportunityNotification } from "./notification.js";
9
9
  import { createHash } from "node:crypto";
10
10
  //#region src/home-intelligence/host.ts
@@ -11,8 +11,8 @@ import { scanLocal } from "./scanner.js";
11
11
  import { dirname, join } from "node:path";
12
12
  import { existsSync, lstatSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
13
13
  import { randomUUID } from "node:crypto";
14
- import yaml from "js-yaml";
15
14
  import lockfile from "proper-lockfile";
15
+ import yaml from "js-yaml";
16
16
  //#region src/imports/importService.ts
17
17
  init_write_file_atomic();
18
18
  init_logger();
@@ -5,9 +5,9 @@ import { init_logger } from "../utils/logger.js";
5
5
  import { afterSqliteCommit, init_transaction, runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
6
6
  import { ExtensionCapabilityBindingsSchema, extensionCapabilityPermissions } from "../../packages/gateway-contract/src/extension-capabilities.js";
7
7
  import { init_src } from "../../packages/gateway-contract/src/index.js";
8
- import { CapabilityError } from "../capabilities/runtime/errors.js";
9
8
  import { init_paths, resolveExtensionsDir } from "../config/paths.js";
10
9
  import { slugifyProjectName } from "../projects/project-store.js";
10
+ import { CapabilityError } from "../capabilities/runtime/errors.js";
11
11
  import { LocalAppStore } from "./store.js";
12
12
  import { DomainOutboxDispatcher } from "../infra/domain-outbox-dispatcher.js";
13
13
  import { validateLocalAppCapabilityContracts } from "./capabilities/contracts.js";
@@ -2,13 +2,13 @@ import { getSessionMetadata } from "../storage/sqlite/session-read-repository.js
2
2
  import { init_session_repository, patchSessionMetadata } from "../storage/sqlite/session-repository.js";
3
3
  import { setSessionConfig } from "../storage/sqlite/config-repository.js";
4
4
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
5
- import { AgentCatalogService } from "../agent-catalog/service.js";
6
5
  import { createConversation, init_conversation_repository } from "../storage/sqlite/conversation-repository.js";
7
6
  import { getAvailableModels, init_providers } from "../providers/index.js";
8
7
  import { getPersonalAgent, personalAgentId } from "./repository.js";
9
8
  import { PERSONAL_MAIN_TOOL_IDS, PERSONAL_READ_TOOL_ALIASES } from "./policy.js";
10
9
  import { getModelThinking } from "../providers/model-thinking.js";
11
10
  import { personalInstructions } from "./prompts.js";
11
+ import { AgentCatalogService } from "../agent-catalog/service.js";
12
12
  import { completePersonalOnboarding } from "./onboarding.js";
13
13
  import { z } from "zod";
14
14
  //#region src/personal-agent/service.ts
@@ -251,6 +251,9 @@ function phoneAssistanceReport(wait) {
251
251
  return {
252
252
  ...wait.checkpoint.report,
253
253
  assistanceId: wait.id,
254
+ assistanceVersion: wait.version,
255
+ transcriptId: wait.transcriptId,
256
+ hasPendingTask: true,
254
257
  reconnectRequired: true,
255
258
  mock: false,
256
259
  mode: "control",
@@ -376,6 +376,10 @@ export type PhoneReading = {
376
376
  };
377
377
  export type PhoneReport = {
378
378
  assistanceId?: string;
379
+ assistanceVersion?: number;
380
+ transcriptId?: string;
381
+ revision?: number;
382
+ hasPendingTask?: boolean;
379
383
  reconnectRequired?: boolean;
380
384
  sessionId: string;
381
385
  deviceId: string;
@@ -92,6 +92,10 @@ export declare class PhoneRuntime {
92
92
  report: {
93
93
  nextExecutionMode: "collaborative" | "direct";
94
94
  assistanceId?: string;
95
+ assistanceVersion?: number;
96
+ transcriptId?: string;
97
+ revision?: number;
98
+ hasPendingTask?: boolean;
95
99
  reconnectRequired?: boolean;
96
100
  sessionId: string;
97
101
  deviceId: string;
@@ -159,7 +163,9 @@ export declare class PhoneRuntime {
159
163
  };
160
164
  liveVideo(owner: string, id: string, context: ExecutionContext): Promise<PhoneInteractiveSession>;
161
165
  private openLiveVideo;
162
- disconnectVideo(owner: string, id: string, client: string, epoch?: number): Promise<void>;
166
+ disconnectVideo(owner: string, id: string, _client: string, _epoch?: number): Promise<void>;
167
+ private clearExpiredHuman;
168
+ private expireHuman;
163
169
  liveFrame(owner: string, id: string, context: ExecutionContext, signal: AbortSignal): Promise<{
164
170
  frame: Buffer<ArrayBuffer>;
165
171
  height: number;
@@ -330,6 +330,8 @@ var PhoneRuntime = class {
330
330
  modelRequests: session.report.modelRequests - session.segmentUsage.modelRequests,
331
331
  activeDurationMs: session.segmentUsage.activeDurationMs + (session.budget?.elapsedMs ?? 0)
332
332
  }, session.report.feedback);
333
+ session.report.revision = (session.report.revision ?? 0) + 1;
334
+ session.report.hasPendingTask = Boolean(session.taskPending);
333
335
  session.report.updatedAt = Date.now();
334
336
  if (session.report.task) updatePhoneCheckpoint(session.report.owner, this.checkpoint(session));
335
337
  this.repository.report(session.report);
@@ -1665,15 +1667,7 @@ var PhoneRuntime = class {
1665
1667
  this.stopDevice(session.device.id);
1666
1668
  continue;
1667
1669
  }
1668
- if (session.human && Date.now() > (session.humanExpiresAt ?? 0)) {
1669
- session.human = void 0;
1670
- session.report.controlOwner = "none";
1671
- session.report.controlEpoch++;
1672
- session.report.status = "paused";
1673
- session.report.stopReason = "control_disconnected";
1674
- this.publish(session);
1675
- session.stream?.revoke().catch(() => this.stop(session.report.owner, "cancel"));
1676
- }
1670
+ if (session.human && Date.now() > (session.humanExpiresAt ?? 0)) this.expireHuman(session).catch(() => this.stop(session.report.owner, "cancel"));
1677
1671
  if (Date.now() - session.viewedAt > 3e4) session.frames.clear();
1678
1672
  } catch {
1679
1673
  session.frames.clear();
@@ -1776,28 +1770,39 @@ var PhoneRuntime = class {
1776
1770
  throw error;
1777
1771
  }
1778
1772
  }
1779
- async disconnectVideo(owner, id, client, epoch) {
1773
+ async disconnectVideo(owner, id, _client, _epoch) {
1780
1774
  const session = this.sessions.get(owner);
1781
1775
  if (!session || session.report.sessionId !== id) return;
1782
- if (session.human === client && (epoch === void 0 || session.report.controlEpoch === epoch)) {
1783
- session.human = void 0;
1784
- session.report.controlOwner = "none";
1785
- session.report.controlEpoch++;
1786
- session.report.status = "paused";
1787
- session.report.stopReason = "control_disconnected";
1788
- this.publish(session);
1789
- try {
1790
- await session.stream?.revoke();
1791
- } catch {
1792
- await this.stop(owner, "cancel");
1793
- }
1794
- }
1795
1776
  if (session.stream?.viewerCount === 0) {
1796
1777
  const stream = session.stream;
1797
1778
  session.stream = void 0;
1798
1779
  await stream.close();
1799
1780
  }
1800
1781
  }
1782
+ async clearExpiredHuman(session) {
1783
+ if (!session.human || Date.now() <= (session.humanExpiresAt ?? 0)) return;
1784
+ session.human = void 0;
1785
+ session.report.controlOwner = "none";
1786
+ session.report.controlEpoch++;
1787
+ session.report.status = "paused";
1788
+ session.report.stopReason = "control_disconnected";
1789
+ session.report.handoff = "acquiring";
1790
+ this.publish(session);
1791
+ try {
1792
+ await session.stream?.revoke();
1793
+ } catch (error) {
1794
+ await this.stop(session.report.owner, "cancel");
1795
+ throw error;
1796
+ } finally {
1797
+ session.report.handoff = "idle";
1798
+ this.publish(session);
1799
+ }
1800
+ }
1801
+ expireHuman(session) {
1802
+ const work = session.commands.catch(() => {}).then(() => this.clearExpiredHuman(session));
1803
+ session.commands = work.catch(() => {});
1804
+ return work;
1805
+ }
1801
1806
  async liveFrame(owner, id, context, signal) {
1802
1807
  const session = this.liveSession(owner, id, context);
1803
1808
  if (terminal.has(session.report.status)) {
@@ -1857,6 +1862,7 @@ var PhoneRuntime = class {
1857
1862
  if (terminal.has(session.report.status)) throw new PhoneError("PHONE_OPEN_REQUIRED", "Phone session ended", 409);
1858
1863
  this.guard(session, context, input.op === "handback");
1859
1864
  if (session.switching) throw new PhoneError("PHONE_SESSION_BUSY", "Phone execution mode is changing", 409);
1865
+ await this.clearExpiredHuman(session);
1860
1866
  if (input.epoch !== session.report.controlEpoch) throw new PhoneError("PHONE_CONTROL_CHANGED", "Control changed. Refresh before trying again.", 409);
1861
1867
  if (session.human && session.human !== client) throw new PhoneError("PHONE_CONTROL_BUSY", "Another browser window controls this phone", 409);
1862
1868
  if (input.op === "cancel") {
@@ -1992,7 +1998,8 @@ var PhoneRuntime = class {
1992
1998
  if (!session) throw new PhoneError("PHONE_OPEN_REQUIRED", "Reconnect the phone before continuing", 409);
1993
1999
  this.guard(session, context);
1994
2000
  if (session.report.controlOwner === "agent" && session.report.status === "ready") return;
1995
- await this.liveControl(owner, session.report.sessionId, context, session.human ?? `phone-user:${owner}`, {
2001
+ if (session.human) throw new PhoneError("PHONE_CONTROL_BUSY", "Another client is operating the phone. End manual control before continuing.", 409);
2002
+ await this.liveControl(owner, session.report.sessionId, context, `phone-user:${owner}`, {
1996
2003
  op: "handback",
1997
2004
  epoch: session.report.controlEpoch,
1998
2005
  operationId: randomUUID()
@@ -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.424",
4
4
  "description": "Local-first personal AI with Ada, task delegation, files, projects and automations. Use cloud or local models.",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -230,6 +230,7 @@
230
230
  "test:plugins:store:e2e": "cross-env XOPC_LOG_LEVEL=fatal tsx scripts/verify-store-plugin-e2e.mts",
231
231
  "test:plugins:fixtures": "tsx scripts/build-store-plugin-lab.mts",
232
232
  "test:plugins:browser": "cross-env XOPC_LOG_LEVEL=fatal tsx scripts/verify-plugin-setup-browser.mts",
233
+ "test:web:clarification:e2e": "pnpm run build:node && pnpm run build:web && tsx scripts/verify-clarification-browser.mts",
233
234
  "test:web:onboarding-visual": "node scripts/test-onboarding-visual.mjs",
234
235
  "test:web:onboarding-visual:update": "node scripts/test-onboarding-visual.mjs --update",
235
236
  "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",