@xopcai/xopc 0.0.382 → 0.0.384

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 (396) hide show
  1. package/dist/browser-ext/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  2. package/dist/browser-ext/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  3. package/dist/browser-ext/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  4. package/dist/browser-ext/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  5. package/dist/browser-ext/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  6. package/dist/browser-ext/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  7. package/dist/browser-ext/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  8. package/dist/browser-ext/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  9. package/dist/browser-ext/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  10. package/dist/browser-ext/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  11. package/dist/browser-ext/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  12. package/dist/browser-ext/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  13. package/dist/browser-ext/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  14. package/dist/browser-ext/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  15. package/dist/browser-ext/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  16. package/dist/browser-ext/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  17. package/dist/browser-ext/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  18. package/dist/browser-ext/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  19. package/dist/browser-ext/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  20. package/dist/browser-ext/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  21. package/dist/browser-ext/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  22. package/dist/browser-ext/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  23. package/dist/browser-ext/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  24. package/dist/browser-ext/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  25. package/dist/browser-ext/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  26. package/dist/browser-ext/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  27. package/dist/browser-ext/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  28. package/dist/browser-ext/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  29. package/dist/browser-ext/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  30. package/dist/browser-ext/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  31. package/dist/browser-ext/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  32. package/dist/browser-ext/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  33. package/dist/browser-ext/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  34. package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  35. package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  36. package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  37. package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  38. package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  39. package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  40. package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  41. package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  42. package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  43. package/dist/browser-ext/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  44. package/dist/browser-ext/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  45. package/dist/browser-ext/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  46. package/dist/browser-ext/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  47. package/dist/browser-ext/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  48. package/dist/browser-ext/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  49. package/dist/browser-ext/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  50. package/dist/browser-ext/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  51. package/dist/browser-ext/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  52. package/dist/browser-ext/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  53. package/dist/browser-ext/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  54. package/dist/browser-ext/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  55. package/dist/browser-ext/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  56. package/dist/browser-ext/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  57. package/dist/browser-ext/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  58. package/dist/browser-ext/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  59. package/dist/browser-ext/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  60. package/dist/browser-ext/dist/assets/{sidepanel-Ccl0eSa1.css → sidepanel-CQeQB5vW.css} +3 -0
  61. package/dist/browser-ext/dist/sidepanel.html +1 -1
  62. package/dist/browser-ext/dist/sidepanel.js +16690 -3
  63. package/dist/browser-ext/manifest.json +1 -1
  64. package/dist/extensions/telegram/xopc.extension.json +1 -1
  65. package/dist/gateway/static/root/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  66. package/dist/gateway/static/root/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  67. package/dist/gateway/static/root/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  68. package/dist/gateway/static/root/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  69. package/dist/gateway/static/root/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  70. package/dist/gateway/static/root/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  71. package/dist/gateway/static/root/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  72. package/dist/gateway/static/root/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  73. package/dist/gateway/static/root/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  74. package/dist/gateway/static/root/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  75. package/dist/gateway/static/root/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  76. package/dist/gateway/static/root/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  77. package/dist/gateway/static/root/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  78. package/dist/gateway/static/root/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  79. package/dist/gateway/static/root/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  80. package/dist/gateway/static/root/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  81. package/dist/gateway/static/root/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  82. package/dist/gateway/static/root/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  83. package/dist/gateway/static/root/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  84. package/dist/gateway/static/root/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  85. package/dist/gateway/static/root/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  86. package/dist/gateway/static/root/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  87. package/dist/gateway/static/root/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  88. package/dist/gateway/static/root/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  89. package/dist/gateway/static/root/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  90. package/dist/gateway/static/root/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  91. package/dist/gateway/static/root/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  92. package/dist/gateway/static/root/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  93. package/dist/gateway/static/root/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  94. package/dist/gateway/static/root/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  95. package/dist/gateway/static/root/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  96. package/dist/gateway/static/root/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  97. package/dist/gateway/static/root/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  98. package/dist/gateway/static/root/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  99. package/dist/gateway/static/root/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  100. package/dist/gateway/static/root/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  101. package/dist/gateway/static/root/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  102. package/dist/gateway/static/root/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  103. package/dist/gateway/static/root/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  104. package/dist/gateway/static/root/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  105. package/dist/gateway/static/root/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  106. package/dist/gateway/static/root/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  107. package/dist/gateway/static/root/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  108. package/dist/gateway/static/root/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  109. package/dist/gateway/static/root/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  110. package/dist/gateway/static/root/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  111. package/dist/gateway/static/root/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  112. package/dist/gateway/static/root/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  113. package/dist/gateway/static/root/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  114. package/dist/gateway/static/root/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  115. package/dist/gateway/static/root/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  116. package/dist/gateway/static/root/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  117. package/dist/gateway/static/root/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  118. package/dist/gateway/static/root/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  119. package/dist/gateway/static/root/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  120. package/dist/gateway/static/root/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  121. package/dist/gateway/static/root/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  122. package/dist/gateway/static/root/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  123. package/dist/gateway/static/root/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  124. package/dist/gateway/static/root/assets/{activity-store-CKTm4K1I.js → activity-store-CB2X4Gmu.js} +1 -1
  125. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-60ztIsyO.js → agent-avatar-dicebear-BSel9yf8.js} +1 -1
  126. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-DgHMyhuY.js +1 -0
  127. package/dist/gateway/static/root/assets/{agent-plugin-dialog-D0h_GOzZ.js → agent-plugin-dialog-BosuN4dO.js} +1 -1
  128. package/dist/gateway/static/root/assets/agents-B-pw5RKI.js +77 -0
  129. package/dist/gateway/static/root/assets/{agents-admin-api-6aesahV-.js → agents-admin-api-BkULgC6Q.js} +1 -1
  130. package/dist/gateway/static/root/assets/{app-management-settings-panel-D7OQP_Q4.js → app-management-settings-panel-DuOqKkfH.js} +1 -1
  131. package/dist/gateway/static/root/assets/{appearance-settings-CY44NMTV.js → appearance-settings-8JF9rXFr.js} +1 -1
  132. package/dist/gateway/static/root/assets/{apps-page-CfrhlDw1.js → apps-page-Cuclpk0A.js} +1 -1
  133. package/dist/gateway/static/root/assets/{archive-plugin-D5ouupwE.js → archive-plugin-De0ND0oA.js} +1 -1
  134. package/dist/gateway/static/root/assets/{automations-page-BTyga78U.js → automations-page-D7NwNy2I.js} +1 -1
  135. package/dist/gateway/static/root/assets/automations-workspace-CSxW4wX0.js +6 -0
  136. package/dist/gateway/static/root/assets/{binary-plugins-sYO6MAV6.js → binary-plugins-Do535ZGW.js} +1 -1
  137. package/dist/gateway/static/root/assets/{block-editor-BdOTO0Yo.css → block-editor-Cvy3D_4T.css} +1 -1
  138. package/dist/gateway/static/root/assets/block-editor-Dnb7CH_l.js +160 -0
  139. package/dist/gateway/static/root/assets/{browser-automation-inputs-BmILL059.js → browser-automation-inputs-B9M1RYTm.js} +1 -1
  140. package/dist/gateway/static/root/assets/browser-automations-page-GBgDe21o.js +3 -0
  141. package/dist/gateway/static/root/assets/browser-settings-page-B2FXaO3n.js +3 -0
  142. package/dist/gateway/static/root/assets/{capabilities-DFR31Yhq.js → capabilities-2Do3eKMM.js} +1 -1
  143. package/dist/gateway/static/root/assets/{capabilities-BFuas9nS.js → capabilities-XFwwUNU3.js} +1 -1
  144. package/dist/gateway/static/root/assets/capabilities-page-f2-MquJn.js +2 -0
  145. package/dist/gateway/static/root/assets/{capabilities-settings-panel-ByLA8WMF.js → capabilities-settings-panel-D9F0mw16.js} +6 -6
  146. package/dist/gateway/static/root/assets/{capability-header-actions-DBwN3Sxo.js → capability-header-actions-DVRxJPQP.js} +1 -1
  147. package/dist/gateway/static/root/assets/{channels-hokrjIdA.js → channels-CnDm5T1t.js} +1 -1
  148. package/dist/gateway/static/root/assets/{chat-terminal-dock-BBNBN1KZ.js → chat-terminal-dock-BxSCDbK7.js} +2 -2
  149. package/dist/gateway/static/root/assets/{computer-settings-page-BWLBPHzl.js → computer-settings-page-DVAB-kQw.js} +1 -1
  150. package/dist/gateway/static/root/assets/{connector-service-page-Bm5JwIw8.js → connector-service-page-D2EeLXei.js} +1 -1
  151. package/dist/gateway/static/root/assets/connectors-page-DK9n4hgZ.js +1 -0
  152. package/dist/gateway/static/root/assets/{date-picker-BhtD9xGl.js → date-picker-Cl9KfFj8.js} +1 -1
  153. package/dist/gateway/static/root/assets/{dependency-picker-BZ7Xnjqt.js → dependency-picker-Ei6aX5WM.js} +1 -1
  154. package/dist/gateway/static/root/assets/{desktop-pet-CFPxAY1g.js → desktop-pet-4Evl4RKX.js} +1 -1
  155. package/dist/gateway/static/root/assets/{desktop-pet-settings-HHN0SYzH.js → desktop-pet-settings-DAD_OWcX.js} +1 -1
  156. package/dist/gateway/static/root/assets/device-pairing-wizard-BA21epMn.js +1 -0
  157. package/dist/gateway/static/root/assets/{directory-picker-path-field-DQm9XjdO.js → directory-picker-path-field-B_Zb5nNR.js} +1 -1
  158. package/dist/gateway/static/root/assets/{extension-debug-page-BrwNSqhz.js → extension-debug-page-DtHNy4TE.js} +1 -1
  159. package/dist/gateway/static/root/assets/{extension-page-CpDc5gDd.js → extension-page-8gWSThWP.js} +1 -1
  160. package/dist/gateway/static/root/assets/{extension-provider-DF9qV04X.js → extension-provider-nbgU7xBS.js} +1 -1
  161. package/dist/gateway/static/root/assets/{extension-settings-page-BLXL1IUp.js → extension-settings-page-CunUbB09.js} +1 -1
  162. package/dist/gateway/static/root/assets/{fallback-models-JL5hZ0k-.js → fallback-models-BSAfzXby.js} +1 -1
  163. package/dist/gateway/static/root/assets/{gateway-config-swr-iceAEoJZ.js → gateway-config-swr-D0tBjSgj.js} +1 -1
  164. package/dist/gateway/static/root/assets/{gateway-realtime-DMpsQXjn.js → gateway-realtime-BnHraJ3O.js} +1 -1
  165. package/dist/gateway/static/root/assets/gateway-realtime-store-BVriF6Zj.js +1 -0
  166. package/dist/gateway/static/root/assets/gateway-settings-CN-2229W.js +1 -0
  167. package/dist/gateway/static/root/assets/{gateway-startup-retry-BS6l0_QM.js → gateway-startup-retry-C1DQsIH3.js} +1 -1
  168. package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-BQJ5YRxv.js → highlighted-body-KQOG7T2V-DktBCtHF.js} +1 -1
  169. package/dist/gateway/static/root/assets/home-page-CUJcNW3H.js +2 -0
  170. package/dist/gateway/static/root/assets/{image-generation-api-F2lG3T2E.js → image-generation-api-DodU6GNC.js} +1 -1
  171. package/dist/gateway/static/root/assets/{imports-page-CsMEvde8.js → imports-page-DQm1MNNC.js} +1 -1
  172. package/dist/gateway/static/root/assets/index-BPNL54bv.js +260 -0
  173. package/dist/gateway/static/root/assets/index-yseLAt9D.css +1 -0
  174. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CeYVir-Q.js → keyboard-shortcuts-settings-DaC5YjuJ.js} +1 -1
  175. package/dist/gateway/static/root/assets/{local-app-workbench-page-Chj0R32r.js → local-app-workbench-page-DwQyyo7a.js} +1 -1
  176. package/dist/gateway/static/root/assets/{local-apps-page-sTmfe7AL.js → local-apps-page-CpZhivpf.js} +1 -1
  177. package/dist/gateway/static/root/assets/{local-session-drafts-DdLyLxCp.js → local-session-drafts-D_tYFy7d.js} +1 -1
  178. package/dist/gateway/static/root/assets/{locale-store-AAPVaavy.js → locale-store-uRu_DsWm.js} +1 -1
  179. package/dist/gateway/static/root/assets/{logs-page-CpR_hGcR.js → logs-page-Db43nh1M.js} +2 -2
  180. package/dist/gateway/static/root/assets/{management-settings-B_rVRdFW.js → management-settings-DrKejBEZ.js} +1 -1
  181. package/dist/gateway/static/root/assets/markdown-view-Ct4sKkUf.css +1 -0
  182. package/dist/gateway/static/root/assets/markdown-view-DHfQAvZQ.js +324 -0
  183. package/dist/gateway/static/root/assets/{media-plugins-Op_dDK0E.js → media-plugins-BombFqsX.js} +1 -1
  184. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-C4VzqE9z.js +1 -0
  185. package/dist/gateway/static/root/assets/messages-DTqbfje6.js +3 -0
  186. package/dist/gateway/static/root/assets/models-hub-cache-Ct6X5zmB.js +1 -0
  187. package/dist/gateway/static/root/assets/note-detail-panel-a8NSwmmW.js +5 -0
  188. package/dist/gateway/static/root/assets/{notes-api-1TYlEpD2.js → notes-api-nqN2wKYc.js} +1 -1
  189. package/dist/gateway/static/root/assets/notes-page-BKRke43F.js +8 -0
  190. package/dist/gateway/static/root/assets/{page-context-capture-button-BYqWMp-X.js → page-context-capture-button-DUaMkmxv.js} +1 -1
  191. package/dist/gateway/static/root/assets/page-tabs-HLrKIjXH.js +1 -0
  192. package/dist/gateway/static/root/assets/personal-page-BqF-HHw1.js +1 -0
  193. package/dist/gateway/static/root/assets/{product-open-page-BRBzKP2h.js → product-open-page-GrhtTQIz.js} +1 -1
  194. package/dist/gateway/static/root/assets/{product-preview-content-BapT1QoP.js → product-preview-content-zdP7gN0y.js} +1 -1
  195. package/dist/gateway/static/root/assets/project-detail-page-9Vd_AqDW.js +1 -0
  196. package/dist/gateway/static/root/assets/{projects-page-BMN9evTF.js → projects-page-DGunhjoM.js} +1 -1
  197. package/dist/gateway/static/root/assets/{registry-api-BPFXyHk8.js → registry-api-CYqA7bfl.js} +1 -1
  198. package/dist/gateway/static/root/assets/remote-access-hub-BoRsF3Lx.js +1 -0
  199. package/dist/gateway/static/root/assets/{runtime-tools-api-Cu0MRsAb.js → runtime-tools-api-zzoxjSuR.js} +1 -1
  200. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CJF3NeTn.js → runtime-tools-settings-panel-W0HDm--J.js} +1 -1
  201. package/dist/gateway/static/root/assets/{scenes-page-D_BBF04t.js → scenes-page-CYsFOfVJ.js} +2 -2
  202. package/dist/gateway/static/root/assets/{schema-form-CAmizvOH.js → schema-form-CBxEbBQq.js} +1 -1
  203. package/dist/gateway/static/root/assets/{send-session-input-G334tGIw.js → send-session-input-BCAF-Ikt.js} +1 -1
  204. package/dist/gateway/static/root/assets/{session-api-DYl61CUz.js → session-api-CzVTrG8n.js} +1 -1
  205. package/dist/gateway/static/root/assets/{session-manager-J3r-UiPc.js → session-manager-_yy4bxhT.js} +1 -1
  206. package/dist/gateway/static/root/assets/sessions-page-Dthfx_vc.js +1 -0
  207. package/dist/gateway/static/root/assets/settings-advanced-gate-O_0Lk38S.js +1 -0
  208. package/dist/gateway/static/root/assets/{settings-page-B635QEij.js → settings-page-CFs-WP_2.js} +1 -1
  209. package/dist/gateway/static/root/assets/setup-status-panel-D2-9fXYL.js +1 -0
  210. package/dist/gateway/static/root/assets/{share-link-dialog-Bht78zB4.js → share-link-dialog-C47Xgzta.js} +1 -1
  211. package/dist/gateway/static/root/assets/{share-preview-page-epHeT5lh.js → share-preview-page-nJ2FWAEP.js} +1 -1
  212. package/dist/gateway/static/root/assets/{shares-api-k1DyfoGP.js → shares-api-B0HlMAzi.js} +1 -1
  213. package/dist/gateway/static/root/assets/shares-settings-DTb88RHD.js +1 -0
  214. package/dist/gateway/static/root/assets/{skill-api-CLmxc6fX.js → skill-api-DJ8UBsxq.js} +1 -1
  215. package/dist/gateway/static/root/assets/{skill-reload-api-DZGoQACj.js → skill-reload-api-CEJx5rPd.js} +1 -1
  216. package/dist/gateway/static/root/assets/{skills-page-clfZlVOG.js → skills-page-DjbBOikT.js} +1 -1
  217. package/dist/gateway/static/root/assets/specialists-4bkS5rZ4.js +1 -0
  218. package/dist/gateway/static/root/assets/{system-settings-panel-DHjH7-OW.js → system-settings-panel-Dt5GkLhM.js} +1 -1
  219. package/dist/gateway/static/root/assets/{task-detail-page-BcYnm1sO.js → task-detail-page-88EShcbs.js} +2 -2
  220. package/dist/gateway/static/root/assets/{task-expandable-content-OTHBryoz.js → task-expandable-content-CF6Bj-Qa.js} +1 -1
  221. package/dist/gateway/static/root/assets/tasks-DJIeIk9C.js +1 -0
  222. package/dist/gateway/static/root/assets/{theme-store-C2WOFv9Y.js → theme-store-BUfzeDvL.js} +1 -1
  223. package/dist/gateway/static/root/assets/{tracing-settings-page-CnPpysvy.js → tracing-settings-page-C2q5B3Kp.js} +1 -1
  224. package/dist/gateway/static/root/assets/{tunnel-api-C3bUe4Nc.js → tunnel-api-JHttXi63.js} +1 -1
  225. package/dist/gateway/static/root/assets/{usage-page-Dgl7sh2E.js → usage-page-B3rUa0fW.js} +1 -1
  226. package/dist/gateway/static/root/assets/{use-autosave-BXZr6Rm9.js → use-autosave-DgbCgsao.js} +1 -1
  227. package/dist/gateway/static/root/assets/{use-composer-attachments-C7M9p0kf.js → use-composer-attachments-BFP3k6oC.js} +1 -1
  228. package/dist/gateway/static/root/assets/{use-file-preview-expanded-CleMXYWu.js → use-file-preview-expanded-B1BiTQNS.js} +2 -2
  229. package/dist/gateway/static/root/assets/user-model-page-Cq1VSsZw.js +2 -0
  230. package/dist/gateway/static/root/assets/{voice-api-key-field-BeF8AHPT.js → voice-api-key-field-4AIkbm9R.js} +1 -1
  231. package/dist/gateway/static/root/assets/{voice-config-api-CBORJPD_.js → voice-config-api-Kw1pYlLN.js} +1 -1
  232. package/dist/gateway/static/root/assets/{work-discovery-overlay-3egLlB1M.js → work-discovery-overlay-BAtG_JHv.js} +1 -1
  233. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BhYnheW-.js → workflow-run-setup-panel-Cw12NFgx.js} +2 -2
  234. package/dist/gateway/static/root/assets/{workflows-page-C9dLtlfP.js → workflows-page-kR5ouOuM.js} +3 -3
  235. package/dist/gateway/static/root/assets/{workspace-api-DdkViIn3.js → workspace-api-Xr3wz8T3.js} +2 -2
  236. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-4KUvnfnh.js → xopc-cloud-account-card-BTBVKpSg.js} +1 -1
  237. package/dist/gateway/static/root/index.html +30 -29
  238. package/dist/package.js +1 -1
  239. package/dist/packages/gateway-contract/src/index.js +4 -0
  240. package/dist/packages/gateway-contract/src/next-turn-suggestions.js +40 -0
  241. package/dist/packages/gateway-contract/src/specialists.js +48 -0
  242. package/dist/packages/gateway-contract/src/task-lifecycle.js +3 -0
  243. package/dist/packages/gateway-contract/src/tasks.js +41 -10
  244. package/dist/src/agent/agent-manager.d.ts +6 -0
  245. package/dist/src/agent/agent-manager.js +7 -3
  246. package/dist/src/agent/child-agent-factory.d.ts +9 -0
  247. package/dist/src/agent/child-agent-factory.js +83 -46
  248. package/dist/src/agent/context/execution-scope.js +1 -1
  249. package/dist/src/agent/context/project-context.js +1 -1
  250. package/dist/src/agent/embedded/run-turn.js +11 -0
  251. package/dist/src/agent/embedded/session-tool-result-guard.js +1 -1
  252. package/dist/src/agent/orchestration/agent-turn-policy.d.ts +4 -0
  253. package/dist/src/agent/orchestration/delegation-budget.d.ts +60 -0
  254. package/dist/src/agent/orchestration/delegation-budget.js +154 -0
  255. package/dist/src/agent/prompt/response-language.js +1 -1
  256. package/dist/src/agent/prompt/sections/tooling.js +2 -2
  257. package/dist/src/agent/service.d.ts +6 -0
  258. package/dist/src/agent/service.js +4 -1
  259. package/dist/src/agent/starter-agents.d.ts +2 -0
  260. package/dist/src/agent/starter-agents.js +114 -5
  261. package/dist/src/agent/tasks/task-judge-service.js +1 -1
  262. package/dist/src/agent/tools/delegate-tool.js +17 -3
  263. package/dist/src/agent/tools/error-pattern-matcher.js +1 -1
  264. package/dist/src/agent/tools/exec-command.js +3 -1
  265. package/dist/src/agent/tools/factory.d.ts +7 -0
  266. package/dist/src/agent/tools/factory.js +21 -2
  267. package/dist/src/agent/tools/personal-attention-tool.d.ts +2 -0
  268. package/dist/src/agent/tools/personal-attention-tool.js +51 -17
  269. package/dist/src/agent/tools/personal-read-tool.js +16 -6
  270. package/dist/src/agent/tools/personal-request-tool.js +64 -10
  271. package/dist/src/agent/tools/personal-result-budget.d.ts +2 -0
  272. package/dist/src/agent/tools/personal-result-budget.js +57 -0
  273. package/dist/src/agent/tools/personal-task-tool.d.ts +23 -11
  274. package/dist/src/agent/tools/personal-task-tool.js +394 -69
  275. package/dist/src/agent/tools/xopc-use-tool.d.ts +2 -0
  276. package/dist/src/agent/tools/xopc-use-tool.js +22 -9
  277. package/dist/src/agent-config/resolver.js +4 -0
  278. package/dist/src/agent-config/schema.d.ts +36 -2
  279. package/dist/src/agent-config/schema.js +9 -2
  280. package/dist/src/agent-matching/delegation-service.d.ts +17 -0
  281. package/dist/src/agent-matching/delegation-service.js +87 -0
  282. package/dist/src/agent-matching/schema.d.ts +2 -0
  283. package/dist/src/agent-matching/schema.js +6 -0
  284. package/dist/src/agent-matching/selection-repository.d.ts +54 -0
  285. package/dist/src/agent-matching/selection-repository.js +83 -0
  286. package/dist/src/agent-matching/service.d.ts +85 -0
  287. package/dist/src/agent-matching/service.js +192 -0
  288. package/dist/src/automations/capabilities/write.d.ts +6 -2
  289. package/dist/src/automations/domain/validation.d.ts +12 -4
  290. package/dist/src/automations/draft/automation-draft-validator.d.ts +3 -1
  291. package/dist/src/cli/commands/channels.js +1 -1
  292. package/dist/src/cli/commands/connectors.js +1 -1
  293. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  294. package/dist/src/cli/commands/extension-marketplace.js +1 -1
  295. package/dist/src/cli/commands/models.js +1 -1
  296. package/dist/src/cli/commands/onboard.js +1 -1
  297. package/dist/src/extensions/sdk/index.js +1 -1
  298. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  299. package/dist/src/gateway/agents-admin.d.ts +4 -0
  300. package/dist/src/gateway/agents-admin.js +5 -2
  301. package/dist/src/gateway/hono/routes/agents.js +18 -1
  302. package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
  303. package/dist/src/gateway/hono/routes/next-turn-suggestions.d.ts +3 -0
  304. package/dist/src/gateway/hono/routes/next-turn-suggestions.js +39 -0
  305. package/dist/src/gateway/hono/routes/personal-agent.js +1 -1
  306. package/dist/src/gateway/hono/routes/tasks.js +2 -1
  307. package/dist/src/gateway/next-turn-suggestions/generator.d.ts +3 -0
  308. package/dist/src/gateway/next-turn-suggestions/generator.js +50 -0
  309. package/dist/src/gateway/next-turn-suggestions/service.d.ts +23 -0
  310. package/dist/src/gateway/next-turn-suggestions/service.js +125 -0
  311. package/dist/src/gateway/next-turn-suggestions/snapshot.d.ts +15 -0
  312. package/dist/src/gateway/next-turn-suggestions/snapshot.js +67 -0
  313. package/dist/src/gateway/service/agent-runner.d.ts +2 -0
  314. package/dist/src/gateway/service/agent-runner.js +13 -1
  315. package/dist/src/gateway/service/session-input-coordinator.js +1 -1
  316. package/dist/src/gateway/service.d.ts +1 -0
  317. package/dist/src/gateway/service.js +18 -4
  318. package/dist/src/gateway/session-context-summary.js +1 -1
  319. package/dist/src/personal-agent/capability-service.d.ts +2 -0
  320. package/dist/src/personal-agent/capability-service.js +29 -16
  321. package/dist/src/personal-agent/policy.js +2 -7
  322. package/dist/src/personal-agent/proactivity/service.js +1 -1
  323. package/dist/src/personal-agent/prompt-context.d.ts +1 -4
  324. package/dist/src/personal-agent/prompt-context.js +5 -35
  325. package/dist/src/personal-agent/prompts.js +32 -8
  326. package/dist/src/personal-agent/reply-composer.js +1 -1
  327. package/dist/src/personal-agent/request-delivery.js +1 -1
  328. package/dist/src/personal-agent/request-repository.d.ts +3 -2
  329. package/dist/src/personal-agent/request-repository.js +4 -4
  330. package/dist/src/personal-agent/request-service.d.ts +2 -1
  331. package/dist/src/personal-agent/request-service.js +161 -13
  332. package/dist/src/personal-agent/specialist-capabilities.js +6 -0
  333. package/dist/src/personal-agent/task-cancel.d.ts +7 -0
  334. package/dist/src/personal-agent/task-cancel.js +76 -0
  335. package/dist/src/session/client-history.js +1 -1
  336. package/dist/src/session/index.js +1 -1
  337. package/dist/src/storage/sqlite/migrations/247_agent_selection_records.sql +32 -0
  338. package/dist/src/storage/sqlite/migrations/248_next_turn_suggestions.sql +20 -0
  339. package/dist/src/storage/sqlite/migrations/249_task_allocations.sql +17 -0
  340. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  341. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  342. package/dist/src/storage/sqlite/next-turn-suggestion-repository.d.ts +4 -0
  343. package/dist/src/storage/sqlite/next-turn-suggestion-repository.js +30 -0
  344. package/dist/src/storage/sqlite/schema.js +1 -1
  345. package/dist/src/tasks/capabilities/read.js +1 -1
  346. package/dist/src/tasks/capabilities/relations.d.ts +38 -2
  347. package/dist/src/tasks/capabilities/write.d.ts +42 -0
  348. package/dist/src/tasks/capabilities/write.js +9 -7
  349. package/dist/src/tasks/index.js +1 -1
  350. package/dist/src/tasks/task-allocation-repository.d.ts +25 -0
  351. package/dist/src/tasks/task-allocation-repository.js +82 -0
  352. package/dist/src/tasks/task-allocation-service.d.ts +39 -0
  353. package/dist/src/tasks/task-allocation-service.js +310 -0
  354. package/dist/src/tasks/task-application-service.js +44 -1
  355. package/dist/src/tasks/task-context-assembler.js +1 -1
  356. package/dist/src/tasks/task-main-update-delivery.js +2 -0
  357. package/dist/src/tasks/task-origin-repository.d.ts +2 -1
  358. package/dist/src/tasks/task-origin-repository.js +9 -5
  359. package/dist/src/tasks/task-read-model-projector.d.ts +2 -1
  360. package/dist/src/tasks/task-read-model-projector.js +21 -8
  361. package/dist/src/tasks/task-result-delivery-service.js +2 -2
  362. package/dist/src/tasks/task-run-coordinator.js +9 -1
  363. package/dist/src/tasks/task-run-dispatcher.d.ts +1 -1
  364. package/dist/src/tasks/task-run-dispatcher.js +5 -4
  365. package/package.json +6 -5
  366. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CzriaMLA.js +0 -1
  367. package/dist/gateway/static/root/assets/agents-Dwjb-Pmc.js +0 -66
  368. package/dist/gateway/static/root/assets/automations-workspace-DGZAGTNe.js +0 -6
  369. package/dist/gateway/static/root/assets/block-editor-CeytAoXT.js +0 -159
  370. package/dist/gateway/static/root/assets/browser-automations-page-Ko-r320n.js +0 -3
  371. package/dist/gateway/static/root/assets/browser-settings-page-DPICvQED.js +0 -3
  372. package/dist/gateway/static/root/assets/capabilities-page-Crb7Oeay.js +0 -2
  373. package/dist/gateway/static/root/assets/connectors-page-ok0F1o0p.js +0 -1
  374. package/dist/gateway/static/root/assets/device-pairing-wizard-C00mHAYU.js +0 -1
  375. package/dist/gateway/static/root/assets/gateway-realtime-store-U3lzqE82.js +0 -1
  376. package/dist/gateway/static/root/assets/gateway-settings-Bc9HD3uV.js +0 -1
  377. package/dist/gateway/static/root/assets/home-page-hHgcCF-P.js +0 -2
  378. package/dist/gateway/static/root/assets/index-BnHaXfFv.css +0 -1
  379. package/dist/gateway/static/root/assets/index-odJjleQM.js +0 -255
  380. package/dist/gateway/static/root/assets/markdown-view-ByJbFign.css +0 -1
  381. package/dist/gateway/static/root/assets/markdown-view-roJ1FcXL.js +0 -66
  382. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-BUSGX-3o.js +0 -1
  383. package/dist/gateway/static/root/assets/messages-DwOSR5ue.js +0 -3
  384. package/dist/gateway/static/root/assets/models-hub-cache-BFSZUHQI.js +0 -1
  385. package/dist/gateway/static/root/assets/note-detail-panel-D2qf-sDw.js +0 -5
  386. package/dist/gateway/static/root/assets/notes-page-DNvVJasv.js +0 -8
  387. package/dist/gateway/static/root/assets/page-tabs-BLGO2VIm.js +0 -1
  388. package/dist/gateway/static/root/assets/personal-page-Bd4xN8C7.js +0 -1
  389. package/dist/gateway/static/root/assets/project-detail-page-DJC5iE_A.js +0 -1
  390. package/dist/gateway/static/root/assets/remote-access-hub-sJTykTVP.js +0 -1
  391. package/dist/gateway/static/root/assets/sessions-page-B-wgtLR4.js +0 -1
  392. package/dist/gateway/static/root/assets/settings-advanced-gate-CA6YH-tX.js +0 -1
  393. package/dist/gateway/static/root/assets/setup-status-panel-CUmMrn5b.js +0 -1
  394. package/dist/gateway/static/root/assets/shares-settings-BSQLmRXu.js +0 -1
  395. package/dist/gateway/static/root/assets/tasks-DwKXgZ-I.js +0 -1
  396. package/dist/gateway/static/root/assets/user-model-page-BQBsKpmh.js +0 -2
@@ -1,29 +1,83 @@
1
- import { resolveEffectiveAgentConfig } from "../../agent-config/resolver.js";
2
- import { init_agent_config } from "../../agent-config/index.js";
3
- import { AgentCatalogRepository, init_repository } from "../../agent-catalog/repository.js";
4
- import { resolveEffectiveAgentConfigForAgent } from "../../config/agent-profile.js";
1
+ import { normalizeSpecialistRequirements } from "../../../packages/gateway-contract/src/specialists.js";
2
+ import { appendProductDeliveryText } from "../../../packages/gateway-contract/src/product-delivery.js";
3
+ import { init_src } from "../../../packages/gateway-contract/src/index.js";
4
+ import { getSessionInputState, init_session_input_repository } from "../../storage/sqlite/session-input-repository.js";
5
+ import { TaskRepository, init_task_repository } from "../../tasks/task-repository.js";
6
+ import { getPersonalRequest, init_request_repository } from "../../personal-agent/request-repository.js";
7
+ import { getSessionMetadata } from "../../storage/sqlite/session-read-repository.js";
8
+ import { init_sqlite } from "../../storage/sqlite/index.js";
5
9
  import { isPersonalConversation } from "../../personal-agent/repository.js";
6
- import { getAvailablePersonalAgentTools, personalAgentModelAvailability } from "../../personal-agent/specialist-capabilities.js";
10
+ import { TaskAllocationRepository } from "../../tasks/task-allocation-repository.js";
7
11
  import { TaskOriginRepository } from "../../tasks/task-origin-repository.js";
12
+ import { boundedPersonalResult } from "./personal-result-budget.js";
13
+ import { TaskApplicationService } from "../../tasks/task-application-service.js";
8
14
  import { createXopcUseTool } from "./xopc-use-tool.js";
15
+ import { getAvailablePersonalAgentTools, personalAgentModelAvailability } from "../../personal-agent/specialist-capabilities.js";
16
+ import { assessSpecialist, matchSpecialists } from "../../agent-matching/service.js";
17
+ import { AgentSelectionRepository, selectionRequestHash } from "../../agent-matching/selection-repository.js";
18
+ import { assertSpecialistEligible, createSelectedTask } from "../../agent-matching/delegation-service.js";
9
19
  import { PERSONAL_WORKER_RESULT_GUIDANCE } from "../../personal-agent/communication.js";
20
+ import { cancelPersonalTask } from "../../personal-agent/task-cancel.js";
10
21
  import { randomUUID } from "node:crypto";
11
22
  import { Type } from "@sinclair/typebox";
12
23
  //#region src/agent/tools/personal-task-tool.ts
13
- init_repository();
14
- init_agent_config();
24
+ init_src();
25
+ init_sqlite();
26
+ init_session_input_repository();
27
+ init_request_repository();
28
+ init_task_repository();
15
29
  const PersonalTaskSchema = Type.Object({
16
30
  command: Type.Union([
31
+ Type.Literal("retry_allocation"),
32
+ Type.Literal("submit"),
17
33
  Type.Literal("agents"),
34
+ Type.Literal("match"),
35
+ Type.Literal("selection"),
18
36
  Type.Literal("create"),
19
37
  Type.Literal("list"),
20
38
  Type.Literal("get"),
21
39
  Type.Literal("instruct"),
22
- Type.Literal("answer")
40
+ Type.Literal("answer"),
41
+ Type.Literal("cancel")
23
42
  ]),
43
+ requirements: Type.Optional(Type.Object({
44
+ version: Type.Optional(Type.Literal(1)),
45
+ summary: Type.String({ maxLength: 300 }),
46
+ domain: Type.Optional(Type.String()),
47
+ taskType: Type.Optional(Type.String()),
48
+ inputKinds: Type.Optional(Type.Array(Type.String())),
49
+ outputKinds: Type.Optional(Type.Array(Type.String())),
50
+ requiredTools: Type.Optional(Type.Array(Type.String())),
51
+ requiredSkills: Type.Optional(Type.Array(Type.String())),
52
+ requestedAgentId: Type.Optional(Type.String({
53
+ minLength: 1,
54
+ description: "Only an executor explicitly named by the human user. Omit this field when the background router should choose; never infer it from the specialist directory."
55
+ }))
56
+ })),
57
+ selectionReason: Type.Optional(Type.String({ maxLength: 500 })),
58
+ selectionSource: Type.Optional(Type.Union([
59
+ Type.Literal("snapshot"),
60
+ Type.Literal("match"),
61
+ Type.Literal("explicit")
62
+ ])),
63
+ previousSelectionId: Type.Optional(Type.String()),
64
+ matchId: Type.Optional(Type.String()),
65
+ requestId: Type.Optional(Type.String()),
66
+ cursor: Type.Optional(Type.String()),
67
+ offset: Type.Optional(Type.Integer({ minimum: 0 })),
68
+ limit: Type.Optional(Type.Integer({
69
+ minimum: 1,
70
+ maximum: 20
71
+ })),
24
72
  title: Type.Optional(Type.String({ description: "Short task title, ideally under 60 characters. Do not put the full instructions here." })),
25
- objective: Type.Optional(Type.String({ description: "One-sentence outcome for a new delegated Task." })),
26
- description: Type.Optional(Type.String({ description: "Full task brief in Markdown: background, specific requests, source material, and delivery expectations." })),
73
+ objective: Type.Optional(Type.String({
74
+ minLength: 1,
75
+ description: "One-sentence outcome for a new delegated Task."
76
+ })),
77
+ description: Type.Optional(Type.String({
78
+ minLength: 1,
79
+ description: "Complete Markdown brief preserving the user request, input references, and delivery expectations. Optional structured fields need not repeat it."
80
+ })),
27
81
  agentId: Type.Optional(Type.String({ description: "Specialist Agent ID. Never use your own ID." })),
28
82
  taskId: Type.Optional(Type.String()),
29
83
  instruction: Type.Optional(Type.String({ description: "The user’s new direction for this delegated Task." })),
@@ -33,22 +87,62 @@ const PersonalTaskSchema = Type.Object({
33
87
  constraints: Type.Optional(Type.Array(Type.String())),
34
88
  requiredSkills: Type.Optional(Type.Array(Type.String({
35
89
  minLength: 1,
36
- description: "Canonical Skill names explicitly requested by the user. Verify through agents before creation."
90
+ description: "Only Skill names explicitly requested by the user. Forward them to the background router for validation; omit otherwise."
37
91
  }))),
38
92
  requiredTools: Type.Optional(Type.Array(Type.String({ description: "Tool names needed for this Task. Use names returned by agents; omit when matching by role or expertise." }))),
39
93
  idempotencyKey: Type.Optional(Type.String())
40
94
  });
41
- var PersonalSkillUnavailableError = class extends Error {};
42
- function resolveRequiredSkills(deps, agentId, requested) {
43
- if (requested.length === 0) return [];
44
- if (!deps.getAgentSkillAvailability) throw new Error("Specialist Skill availability cannot be verified");
45
- const skills = deps.getAgentSkillAvailability(agentId).skills;
46
- return [...new Set(requested.map((name) => name.trim().toLowerCase()))].map((name) => {
47
- const skill = skills.find((item) => item.name.toLowerCase() === name);
48
- if (!skill?.availableForCurrentAgent) throw new PersonalSkillUnavailableError(`Agent ${agentId} cannot use required Skill ${name}: ${skill?.unavailableReason ?? "not-installed"}. Do not substitute the requested Skill without the user’s direction.`);
49
- return skill.name;
50
- });
51
- }
95
+ const PersonalTaskModelSchema = Type.Object({
96
+ ...Type.Omit(PersonalTaskSchema, [
97
+ "agentId",
98
+ "selectionReason",
99
+ "selectionSource",
100
+ "previousSelectionId",
101
+ "matchId",
102
+ "cursor",
103
+ "requiredTools"
104
+ ]).properties,
105
+ requirements: Type.Optional(Type.Omit(PersonalTaskSchema.properties.requirements, ["requiredTools", "requiredSkills"], { additionalProperties: false })),
106
+ command: Type.Union([
107
+ "submit",
108
+ "list",
109
+ "get",
110
+ "instruct",
111
+ "answer",
112
+ "retry_allocation",
113
+ "selection",
114
+ "cancel"
115
+ ].map((command) => Type.Literal(command)))
116
+ }, {
117
+ additionalProperties: false,
118
+ anyOf: [
119
+ {
120
+ properties: { command: { const: "submit" } },
121
+ required: ["objective", "description"]
122
+ },
123
+ { properties: { command: { enum: ["list", "selection"] } } },
124
+ {
125
+ properties: { command: { enum: [
126
+ "get",
127
+ "retry_allocation",
128
+ "cancel"
129
+ ] } },
130
+ required: ["taskId"]
131
+ },
132
+ {
133
+ properties: { command: { const: "instruct" } },
134
+ required: ["taskId", "instruction"]
135
+ },
136
+ {
137
+ properties: { command: { const: "answer" } },
138
+ required: [
139
+ "taskId",
140
+ "instruction",
141
+ "questionId"
142
+ ]
143
+ }
144
+ ]
145
+ });
52
146
  const MAX_PERSONAL_TASK_TITLE = 60;
53
147
  function buildPersonalTaskBrief(input) {
54
148
  const fullObjective = input.objective.trim();
@@ -66,69 +160,203 @@ function buildPersonalTaskBrief(input) {
66
160
  /** A narrow Task surface for the fast personal conversation. */
67
161
  function createPersonalTaskTool(deps) {
68
162
  const productTool = createXopcUseTool(deps);
163
+ const matches = /* @__PURE__ */ new Map();
69
164
  return {
70
165
  name: "personal_task",
71
166
  label: "Personal Task",
72
- description: "Find specialist Agents by role, availableTools, and model.available; delegate work, inspect Tasks, send instructions, or answer worker questions. Choose an Agent whose model.available is true. Before saying you cannot do a request, inspect another Agent. If a candidate fails, retry alternatives within the user’s authorization only when the user has not required a particular Agent or Skill. For explicitly requested Skills, use requiredSkills in agents and create; creation validates availability and includes them in the worker brief. agents can filter by requiredTools or requiredSkills; if none match, inspect unfiltered Agents. Return to the user quickly after creation.",
73
- parameters: PersonalTaskSchema,
167
+ description: "Submit objective and a concise complete description, then return after local persistence. Preserve the user request and source references without inventing an execution plan or extra requirements. Omit optional structured fields when they merely repeat the description. Describe required capabilities in the brief; the background Task Router selects one executor and checks its tools. Do not read input files, select Agents or invent tool names before submit. Set requirements.requestedAgentId only for an executor explicitly named by the user, using their ID or display name; preserve explicitly requested requiredSkills. get/list inspect existing Tasks with limit/offset; cancel stops a Task on explicit user instruction and reports execution stop confirmation; instruct/answer send context; retry_allocation retries selection before execution; selection explains assignment. Status and results return automatically. Preserve idempotencyKey on uncertain retries. Report only confirmed states.",
168
+ parameters: PersonalTaskModelSchema,
74
169
  mutatesWorkspace: true,
75
170
  mutationScope: "external",
76
171
  requiresExclusiveWorkspaceLock: false,
77
172
  finalGuardRelevant: true,
78
- async execute(toolCallId, input, signal) {
173
+ async execute(toolCallId, modelInput, signal) {
174
+ const input = modelInput;
79
175
  const conversationId = deps.getCurrentConversationId?.();
80
176
  const ownAgentId = deps.getCurrentAgentId?.();
81
177
  if (!conversationId || !ownAgentId || !isPersonalConversation(conversationId)) throw new Error("Personal conversation context is unavailable");
82
- if (input.command === "agents") {
83
- const requiredTools = input.requiredTools ?? [];
84
- if (input.requiredSkills?.length && !deps.getAgentSkillAvailability) throw new Error("Specialist Skill availability cannot be verified");
85
- const catalog = new AgentCatalogRepository().snapshot();
86
- const agents = catalog.agents.filter((agent) => agent.enabled !== false && agent.id !== ownAgentId && !agent.id.startsWith("personal-")).map((agent) => {
87
- const config = resolveEffectiveAgentConfig({
88
- defaults: catalog.defaults,
89
- agent
90
- }).config;
91
- const availableTools = getAvailablePersonalAgentTools(config, deps);
92
- let requiredSkills;
93
- try {
94
- requiredSkills = resolveRequiredSkills(deps, agent.id, input.requiredSkills ?? []);
95
- } catch (error) {
96
- if (error instanceof PersonalSkillUnavailableError) return null;
97
- throw error;
178
+ const requirements = normalizeSpecialistRequirements({
179
+ ...input.requirements,
180
+ requestedAgentId: input.requirements?.requestedAgentId?.trim() || void 0,
181
+ version: 1,
182
+ summary: input.requirements?.summary ?? (input.objective?.trim() || "Specialist discovery").slice(0, 300),
183
+ requiredTools: [...input.requirements?.requiredTools ?? [], ...input.requiredTools ?? []],
184
+ requiredSkills: [...input.requirements?.requiredSkills ?? [], ...input.requiredSkills ?? []]
185
+ });
186
+ const context = {
187
+ ownAgentId,
188
+ getConfig: deps.getConfig,
189
+ getAgentSkillAvailability: deps.getAgentSkillAvailability,
190
+ getAgentToolAvailability: deps.getAgentToolAvailability,
191
+ legacyToolPolicyOnly: !input.requirements
192
+ };
193
+ if (input.command === "match" || input.command === "agents") {
194
+ if (input.command === "agents" && requirements.requiredSkills?.length && !deps.getAgentSkillAvailability) throw new Error("Specialist Skill availability cannot be verified");
195
+ const result = matchSpecialists(requirements, context, {
196
+ cursor: input.cursor,
197
+ limit: input.command === "agents" ? 50 : 10
198
+ });
199
+ if (input.command === "agents") {
200
+ let cursor = result.nextCursor;
201
+ while (cursor) {
202
+ const page = matchSpecialists(requirements, context, {
203
+ cursor,
204
+ limit: 50
205
+ });
206
+ result.candidates.push(...page.candidates);
207
+ cursor = page.nextCursor;
98
208
  }
99
- return {
100
- ...requiredSkills.length ? { verifiedSkills: requiredSkills } : {},
101
- id: agent.id,
102
- name: agent.profile?.name ?? agent.id,
103
- description: agent.profile?.description ?? "",
104
- availableTools,
105
- model: personalAgentModelAvailability(config)
106
- };
107
- }).filter((agent) => agent !== null && requiredTools.every((tool) => agent.availableTools.includes(tool)));
209
+ }
210
+ const matchId = input.command === "match" ? randomUUID() : void 0;
211
+ if (matchId) {
212
+ if (matches.size >= 20) matches.delete(matches.keys().next().value);
213
+ matches.set(matchId, {
214
+ conversationId,
215
+ requirements,
216
+ result
217
+ });
218
+ }
219
+ const payload = input.command === "agents" ? result.candidates.filter((agent) => !agent.checks.some((check) => check.condition === "identity" && check.state === "blocked") && (requirements.requiredTools ?? []).every((tool) => agent.availableTools.includes(tool)) && (requirements.requiredSkills?.length ?? 0) === agent.verifiedSkills.length) : {
220
+ ...result,
221
+ matchId
222
+ };
108
223
  return {
109
224
  content: [{
110
225
  type: "text",
111
- text: JSON.stringify(agents)
226
+ text: JSON.stringify(payload)
112
227
  }],
113
228
  details: {}
114
229
  };
115
230
  }
231
+ if (input.command === "selection") {
232
+ if (!(input.taskId ? new TaskOriginRepository().owns(input.taskId, conversationId) : input.requestId ? getPersonalRequest(input.requestId)?.conversationId === conversationId : true)) throw new Error("Task or Request does not belong to this personal conversation");
233
+ const offset = input.offset ?? 0;
234
+ const limit = input.limit ?? 10;
235
+ const rows = new AgentSelectionRepository().list(conversationId, {
236
+ taskId: input.taskId,
237
+ requestId: input.requestId,
238
+ offset,
239
+ limit: limit + 1
240
+ });
241
+ const items = rows.slice(0, limit).map(({ candidates: _candidates, assessment, ...record }) => ({
242
+ ...record,
243
+ executor: {
244
+ id: assessment.id,
245
+ name: assessment.name
246
+ }
247
+ }));
248
+ return {
249
+ content: [{
250
+ type: "text",
251
+ text: JSON.stringify(boundedPersonalResult({
252
+ items,
253
+ offset,
254
+ ...rows.length > limit ? { nextOffset: offset + items.length } : {}
255
+ }))
256
+ }],
257
+ details: {}
258
+ };
259
+ }
260
+ let selectedProductTool = productTool;
261
+ let pendingSelection;
116
262
  let command = input.command;
117
263
  let args = {};
118
- if (command === "create") {
264
+ if (command === "submit") {
265
+ const objective = input.objective?.trim();
266
+ if (!objective || !input.description?.trim()) throw new Error("objective and a complete description are required");
267
+ if (input.agentId) throw new Error("Use requirements.requestedAgentId for an explicitly requested executor");
268
+ const brief = buildPersonalTaskBrief({
269
+ title: input.title,
270
+ objective,
271
+ description: input.description
272
+ });
273
+ const inputId = getSessionInputState(conversationId).activeInputId;
274
+ const submissionKey = input.idempotencyKey?.trim() || selectionRequestHash({
275
+ sourceInput: inputId ?? toolCallId,
276
+ brief,
277
+ requirements,
278
+ expectedOutputs: input.expectedOutputs,
279
+ acceptanceCriteria: input.acceptanceCriteria,
280
+ constraints: input.constraints
281
+ });
282
+ command = "create";
283
+ args = {
284
+ ...brief,
285
+ createMode: "allocate",
286
+ requirements,
287
+ includeConversationContext: false,
288
+ expectedOutputs: input.expectedOutputs ?? [],
289
+ acceptanceCriteria: input.acceptanceCriteria ?? [],
290
+ constraints: input.constraints ?? [],
291
+ idempotencyKey: `personal-submit:${conversationId}:${selectionRequestHash(submissionKey)}`
292
+ };
293
+ if (requirements.requiredSkills?.length) args.body = `${brief.body}\n\nRequired Skills: ${requirements.requiredSkills.join(", ")}. Read and follow these Skills before execution.`;
294
+ } else if (command === "create") {
119
295
  const objective = input.objective?.trim();
120
296
  const agentId = input.agentId?.trim();
121
297
  if (!objective || !agentId) throw new Error("objective and specialist agentId are required");
122
298
  if (agentId === ownAgentId || agentId.startsWith("personal-")) throw new Error("Delegate to a specialist Agent, not a personal Agent");
123
- const specialist = new AgentCatalogRepository().get(agentId);
124
- if (!specialist || specialist.enabled === false || specialist.provisioningState !== "ready") throw new Error(`Specialist Agent is unavailable: ${agentId}`);
125
- const config = resolveEffectiveAgentConfigForAgent(agentId).config;
126
- const model = personalAgentModelAvailability(config);
127
- if (!model.available) throw new Error(`Agent ${agentId} cannot start: ${model.reason}. Find another available Agent.`);
128
- const availableTools = getAvailablePersonalAgentTools(config, deps);
129
- const missingTools = (input.requiredTools ?? []).filter((tool) => !availableTools.includes(tool));
130
- if (missingTools.length > 0) throw new Error(`Agent ${agentId} lacks required tools: ${missingTools.join(", ")}. Find another Agent or approach.`);
131
- const requiredSkills = resolveRequiredSkills(deps, agentId, input.requiredSkills ?? []);
299
+ const key = input.idempotencyKey?.trim() || randomUUID();
300
+ const { requiredTools: _tools, requiredSkills: _skills, requirements: _requirements, ...requestInput } = input;
301
+ const requestHash = selectionRequestHash({
302
+ ...requestInput,
303
+ idempotencyKey: key,
304
+ requirements
305
+ });
306
+ const previous = new AgentSelectionRepository().find(conversationId, key);
307
+ if (previous && previous.requestHash !== requestHash) throw new Error("Idempotency key was reused with different input");
308
+ if (previous?.status === "rejected") assertSpecialistEligible(previous.assessment);
309
+ const matched = input.matchId ? matches.get(input.matchId) : void 0;
310
+ if (!previous && input.matchId && (!matched || matched.conversationId !== conversationId)) throw new Error("Matching snapshot expired; match again");
311
+ if (!previous && matched && (selectionRequestHash(matched.requirements) !== selectionRequestHash(requirements) || !matched.result.candidates.some((candidate) => candidate.id === agentId))) throw new Error("Selection must preserve matched requirements and select a displayed candidate");
312
+ let assessment = previous?.assessment;
313
+ if (!assessment) {
314
+ assessment = assessSpecialist(agentId, requirements, context);
315
+ if (assessment.eligibility !== "eligible" && getSessionMetadata(conversationId)) new AgentSelectionRepository().create({
316
+ conversationId,
317
+ key,
318
+ requestHash,
319
+ requirements,
320
+ assessment,
321
+ source: input.selectionSource ?? "legacy",
322
+ reason: input.selectionReason,
323
+ previousSelectionId: input.previousSelectionId,
324
+ status: "rejected"
325
+ });
326
+ assertSpecialistEligible(assessment);
327
+ }
328
+ const requiredSkills = assessment.verifiedSkills;
329
+ if (!previous) pendingSelection = {
330
+ conversationId,
331
+ key,
332
+ requestHash,
333
+ requirements,
334
+ assessment,
335
+ source: requirements.requestedAgentId ? "explicit" : matched ? "match" : input.selectionSource === "match" ? "snapshot" : input.selectionSource ?? "legacy",
336
+ reason: input.selectionReason,
337
+ previousSelectionId: input.previousSelectionId,
338
+ status: "start_failed"
339
+ };
340
+ selectedProductTool = createXopcUseTool({
341
+ ...deps,
342
+ createTask: (taskInput, actor) => createSelectedTask(taskInput, actor, {
343
+ conversationId,
344
+ requirements,
345
+ context,
346
+ requestHash,
347
+ candidates: matched?.result.candidates.map(({ id, revision, eligibility, checks, matched: tags, missing }) => ({
348
+ id,
349
+ revision,
350
+ eligibility,
351
+ checks,
352
+ matched: tags,
353
+ missing
354
+ })),
355
+ reason: input.selectionReason,
356
+ source: requirements.requestedAgentId ? "explicit" : matched ? "match" : input.selectionSource === "match" ? "snapshot" : input.selectionSource ?? (input.requirements ? "snapshot" : "legacy"),
357
+ previousSelectionId: input.previousSelectionId
358
+ })
359
+ });
132
360
  const brief = buildPersonalTaskBrief({
133
361
  title: input.title,
134
362
  objective,
@@ -143,16 +371,37 @@ function createPersonalTaskTool(deps) {
143
371
  expectedOutputs: input.expectedOutputs ?? [],
144
372
  acceptanceCriteria: input.acceptanceCriteria ?? [],
145
373
  constraints: input.constraints ?? [],
146
- idempotencyKey: input.idempotencyKey?.trim() || randomUUID()
374
+ idempotencyKey: key
147
375
  };
148
376
  } else if (command === "list") {
149
377
  command = "delegated_tasks";
150
- args = { limit: 20 };
378
+ args = {
379
+ limit: input.limit ?? 10,
380
+ offset: input.offset ?? 0
381
+ };
151
382
  } else {
152
383
  const taskId = input.taskId?.trim();
153
384
  if (!taskId) throw new Error("taskId is required");
154
385
  if (!new TaskOriginRepository().owns(taskId, conversationId)) throw new Error("Task does not belong to this personal conversation");
155
- if (command === "instruct" || command === "answer") {
386
+ if (command === "cancel") {
387
+ const result = await cancelPersonalTask(taskId, conversationId, input.idempotencyKey ?? toolCallId);
388
+ deps.dispatchTaskRuns?.();
389
+ return {
390
+ content: [{
391
+ type: "text",
392
+ text: JSON.stringify(result)
393
+ }],
394
+ details: {}
395
+ };
396
+ }
397
+ if (command === "retry_allocation") {
398
+ command = "command";
399
+ args = {
400
+ taskId,
401
+ type: "retry_allocation",
402
+ expectedVersion: new TaskRepository().require(taskId).version
403
+ };
404
+ } else if (command === "instruct" || command === "answer") {
156
405
  const body = input.instruction?.trim();
157
406
  if (!body) throw new Error("instruction is required");
158
407
  if (command === "answer" && !input.questionId?.trim()) throw new Error("questionId is required");
@@ -165,14 +414,90 @@ function createPersonalTaskTool(deps) {
165
414
  };
166
415
  } else args = { taskId };
167
416
  }
168
- return {
169
- content: (await productTool.execute(toolCallId, {
417
+ try {
418
+ const result = await selectedProductTool.execute(toolCallId, {
170
419
  mode: "task",
171
420
  command,
172
421
  args
173
- }, signal, void 0)).content,
174
- details: {}
175
- };
422
+ }, signal, void 0);
423
+ if ((input.command === "answer" || input.command === "instruct") && input.taskId && result.details.result && result.details.result.ok !== false) {
424
+ const allocation = new TaskAllocationRepository().get(input.taskId);
425
+ if (allocation && ["blocked", "failed"].includes(allocation.status)) {
426
+ new TaskApplicationService().execute({
427
+ taskId: input.taskId,
428
+ expectedVersion: new TaskRepository().require(input.taskId).version,
429
+ idempotencyKey: `allocation-answer:${toolCallId}`,
430
+ command: { type: "retry_allocation" },
431
+ actor: {
432
+ kind: "agent",
433
+ id: ownAgentId
434
+ }
435
+ });
436
+ deps.dispatchTaskRuns?.();
437
+ }
438
+ }
439
+ const payload = result.details.result;
440
+ if (payload?.ok === true && input.command === "submit") {
441
+ const task = payload.task;
442
+ const confirmation = {
443
+ ok: true,
444
+ task: {
445
+ id: task.id,
446
+ title: task.title,
447
+ phase: task.phase,
448
+ version: task.version
449
+ },
450
+ operationalState: payload.operationalState,
451
+ allocation: payload.allocation,
452
+ runId: payload.runId
453
+ };
454
+ return {
455
+ content: [{
456
+ type: "text",
457
+ text: appendProductDeliveryText(JSON.stringify(confirmation, null, 2), result.details.delivery)
458
+ }],
459
+ details: {}
460
+ };
461
+ }
462
+ if (payload && input.command === "get") return {
463
+ content: [{
464
+ type: "text",
465
+ text: JSON.stringify(boundedPersonalResult({
466
+ ok: payload.ok,
467
+ task: payload.task,
468
+ allocation: new TaskAllocationRepository().summary(input.taskId),
469
+ operationalState: payload.operationalState,
470
+ attention: payload.attention,
471
+ allowedCommands: payload.allowedCommands
472
+ }))
473
+ }],
474
+ details: {}
475
+ };
476
+ if (payload && input.command === "list") return {
477
+ content: [{
478
+ type: "text",
479
+ text: JSON.stringify(boundedPersonalResult({
480
+ ...payload,
481
+ offset: input.offset ?? 0
482
+ }))
483
+ }],
484
+ details: {}
485
+ };
486
+ return {
487
+ content: result.content,
488
+ details: {}
489
+ };
490
+ } catch (error) {
491
+ if (pendingSelection && !new AgentSelectionRepository().find(conversationId, pendingSelection.key)) {
492
+ const repository = new AgentSelectionRepository();
493
+ const record = repository.create(pendingSelection);
494
+ repository.link(record.id, {
495
+ status: "start_failed",
496
+ reasonCode: "creation_exception"
497
+ });
498
+ }
499
+ throw error;
500
+ }
176
501
  }
177
502
  };
178
503
  }
@@ -8,6 +8,7 @@ import type { NotesService } from '../../notes/index.js';
8
8
  import { type ProjectService } from '../../projects/index.js';
9
9
  import type { LocalAppService } from '../../local-apps/index.js';
10
10
  import type { ChatPreviewService } from '../../chat-previews/index.js';
11
+ import { TaskApplicationService } from '../../tasks/task-application-service.js';
11
12
  declare const XopcUseToolSchema: import("@sinclair/typebox").TObject<{
12
13
  mode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"context">, import("@sinclair/typebox").TLiteral<"scene">, import("@sinclair/typebox").TLiteral<"project">, import("@sinclair/typebox").TLiteral<"automation">, import("@sinclair/typebox").TLiteral<"note">, import("@sinclair/typebox").TLiteral<"task">, import("@sinclair/typebox").TLiteral<"task_run">, import("@sinclair/typebox").TLiteral<"local_app">, import("@sinclair/typebox").TLiteral<"chat_preview">, import("@sinclair/typebox").TLiteral<"agent">, import("@sinclair/typebox").TLiteral<"settings">]>;
13
14
  command: import("@sinclair/typebox").TString;
@@ -35,6 +36,7 @@ export interface XopcUseToolDeps {
35
36
  getLocalAppService?: () => LocalAppService | undefined;
36
37
  getChatPreviewService?: () => ChatPreviewService | undefined;
37
38
  dispatchTaskEvents?: () => void;
39
+ createTask?: TaskApplicationService['create'];
38
40
  dispatchTaskRuns?: () => void;
39
41
  onAgentCatalogMutate?: () => void;
40
42
  }