@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
@@ -12,8 +12,32 @@ function denyTools(names) {
12
12
  return Object.fromEntries(names.map((name) => [name, { mode: "deny" }]));
13
13
  }
14
14
  const STARTER_AGENTS = [
15
+ {
16
+ id: "task-router",
17
+ purpose: "task_dispatcher",
18
+ toolAllowlist: [],
19
+ profile: {
20
+ name: "Task Router",
21
+ description: "Selects one suitable specialist for a delegated task.",
22
+ instructions: "Compare the task brief with candidate expertise, examples, limitations and verified execution conditions. Select only a displayed eligible candidate. Preserve requested Agents, Skills and task boundaries. Return the requested structured decision."
23
+ },
24
+ profileFiles: {}
25
+ },
15
26
  {
16
27
  id: "main",
28
+ specialistProfile: {
29
+ version: 1,
30
+ domains: ["general"],
31
+ taskTypes: ["general_assistance"],
32
+ inputKinds: ["text"],
33
+ outputKinds: ["answer"],
34
+ specialties: ["General assistance"],
35
+ examples: [{
36
+ "request": "Summarize the supplied notes",
37
+ "deliverable": "A concise answer grounded in the notes"
38
+ }],
39
+ limitations: []
40
+ },
17
41
  profile: {
18
42
  name: "Smart Assistant",
19
43
  description: "General-purpose personal assistant.",
@@ -28,6 +52,19 @@ const STARTER_AGENTS = [
28
52
  },
29
53
  {
30
54
  id: "conductor",
55
+ specialistProfile: {
56
+ version: 1,
57
+ domains: ["coordination"],
58
+ taskTypes: ["task_planning"],
59
+ inputKinds: ["text"],
60
+ outputKinds: ["plan"],
61
+ specialties: ["Task planning and coordination"],
62
+ examples: [{
63
+ "request": "Plan delivery across several specialists",
64
+ "deliverable": "A task plan with deliverables and acceptance criteria"
65
+ }],
66
+ limitations: []
67
+ },
31
68
  toolAllowlist: [
32
69
  "xopc_use",
33
70
  "tool_manual",
@@ -40,10 +77,6 @@ const STARTER_AGENTS = [
40
77
  "grep",
41
78
  "read_file"
42
79
  ],
43
- skills: {
44
- mode: "replace",
45
- include: []
46
- },
47
80
  profile: {
48
81
  name: "Conductor",
49
82
  description: "User-facing coordination Agent for task planning, delegation, progress, verification, and reporting to the user.",
@@ -65,6 +98,23 @@ const STARTER_AGENTS = [
65
98
  },
66
99
  {
67
100
  id: "coder",
101
+ specialistProfile: {
102
+ version: 1,
103
+ domains: ["software"],
104
+ taskTypes: [
105
+ "bug_fix",
106
+ "implementation",
107
+ "code_review"
108
+ ],
109
+ inputKinds: ["repository"],
110
+ outputKinds: ["code_patch"],
111
+ specialties: ["Software implementation, debugging and code review"],
112
+ examples: [{
113
+ "request": "Fix a failing repository test",
114
+ "deliverable": "A focused code patch with verification results"
115
+ }],
116
+ limitations: []
117
+ },
68
118
  tools: denyTools([]),
69
119
  profile: {
70
120
  name: "Coding Expert",
@@ -80,6 +130,19 @@ const STARTER_AGENTS = [
80
130
  },
81
131
  {
82
132
  id: "writer",
133
+ specialistProfile: {
134
+ version: 1,
135
+ domains: ["writing"],
136
+ taskTypes: ["writing", "editing"],
137
+ inputKinds: ["text"],
138
+ outputKinds: ["document"],
139
+ specialties: ["Audience-aware writing and editing"],
140
+ examples: [{
141
+ "request": "Rewrite an announcement for customers",
142
+ "deliverable": "An audience-aware document draft"
143
+ }],
144
+ limitations: []
145
+ },
83
146
  tools: denyTools([]),
84
147
  profile: {
85
148
  name: "Writing Assistant",
@@ -95,6 +158,19 @@ const STARTER_AGENTS = [
95
158
  },
96
159
  {
97
160
  id: "researcher",
161
+ specialistProfile: {
162
+ version: 1,
163
+ domains: ["research"],
164
+ taskTypes: ["research"],
165
+ inputKinds: ["text", "web_page"],
166
+ outputKinds: ["report"],
167
+ specialties: ["Source comparison and fact synthesis"],
168
+ examples: [{
169
+ "request": "Compare evidence about a current topic",
170
+ "deliverable": "A dated report with primary source links"
171
+ }],
172
+ limitations: []
173
+ },
98
174
  tools: denyTools([]),
99
175
  profile: {
100
176
  name: "Research Assistant",
@@ -110,6 +186,23 @@ const STARTER_AGENTS = [
110
186
  },
111
187
  {
112
188
  id: "data-analyst",
189
+ specialistProfile: {
190
+ version: 1,
191
+ domains: ["data"],
192
+ taskTypes: ["data_analysis", "data_cleaning"],
193
+ inputKinds: ["csv", "spreadsheet"],
194
+ outputKinds: [
195
+ "report",
196
+ "chart",
197
+ "script"
198
+ ],
199
+ specialties: ["Reproducible data analysis"],
200
+ examples: [{
201
+ "request": "Analyze monthly sales from a CSV",
202
+ "deliverable": "A reproducible report and charts"
203
+ }],
204
+ limitations: []
205
+ },
113
206
  tools: denyTools([]),
114
207
  profile: {
115
208
  name: "Data Analyst",
@@ -125,6 +218,19 @@ const STARTER_AGENTS = [
125
218
  },
126
219
  {
127
220
  id: "creative",
221
+ specialistProfile: {
222
+ version: 1,
223
+ domains: ["design"],
224
+ taskTypes: ["image_generation"],
225
+ inputKinds: ["text", "image"],
226
+ outputKinds: ["image", "design_brief"],
227
+ specialties: ["Visual direction and creative assets"],
228
+ examples: [{
229
+ "request": "Create a campaign visual",
230
+ "deliverable": "An image asset matching the creative brief"
231
+ }],
232
+ limitations: []
233
+ },
128
234
  tools: denyTools([]),
129
235
  profile: {
130
236
  name: "Creative Assistant",
@@ -159,10 +265,11 @@ function ensureStarterAgentsInitialized() {
159
265
  const existing = repository.get(starter.id);
160
266
  if (existing) {
161
267
  const current = existing.provisioningState === "ready" ? existing : repository.markProvisioned(starter.id);
162
- if (starter.toolAllowlist && current.toolAllowlist === void 0 || starter.skills && current.skills === void 0) {
268
+ if (starter.toolAllowlist && current.toolAllowlist === void 0 || starter.skills && current.skills === void 0 || starter.specialistProfile && current.specialistProfile === void 0) {
163
269
  const { revision, provisioningState: _state, provisioningError: _error, createdAt: _created, updatedAt: _updated, deletedAt: _deleted, ...entry } = current;
164
270
  repository.update(starter.id, revision, {
165
271
  ...entry,
272
+ ...starter.specialistProfile && entry.specialistProfile === void 0 ? { specialistProfile: starter.specialistProfile } : {},
166
273
  ...starter.toolAllowlist && entry.toolAllowlist === void 0 ? { toolAllowlist: starter.toolAllowlist } : {},
167
274
  ...starter.skills && entry.skills === void 0 ? { skills: starter.skills } : {}
168
275
  });
@@ -173,6 +280,8 @@ function ensureStarterAgentsInitialized() {
173
280
  repository.create({
174
281
  id: starter.id,
175
282
  enabled: true,
283
+ ...starter.purpose ? { purpose: starter.purpose } : {},
284
+ ...starter.specialistProfile ? { specialistProfile: starter.specialistProfile } : {},
176
285
  ...starter.profile ? { profile: starter.profile } : {},
177
286
  ...starter.tools ? { tools: starter.tools } : {},
178
287
  ...starter.toolAllowlist ? { toolAllowlist: starter.toolAllowlist } : {},
@@ -7,8 +7,8 @@ import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
7
7
  import { getApiKey, init_providers, resolveModel } from "../../providers/index.js";
8
8
  import { completeWithResolvedCredentials } from "../../providers/model-call.js";
9
9
  import { extractAssistantText, getAssistantMessageErrorReason, stripCodeFences } from "../../providers/model-response.js";
10
- import { TaskConversationRepository } from "../../tasks/task-conversation-repository.js";
11
10
  import { resolveTaskLocale } from "../../tasks/task-language.js";
11
+ import { TaskConversationRepository } from "../../tasks/task-conversation-repository.js";
12
12
  import { readWorkspaceRevision } from "../coding/workspace-revision.js";
13
13
  import { buildResponseLanguageSection } from "../prompt/sections/response-language.js";
14
14
  import { resolveResponseLanguageForSession } from "../prompt/response-language.js";
@@ -2,6 +2,7 @@ import { readWorkspaceRevision } from "../coding/workspace-revision.js";
2
2
  import { EXTERNAL_TOOL_NAMES } from "../external-tools/gateway-tools.js";
3
3
  import "../external-tools/index.js";
4
4
  import { getDelegationScope } from "../orchestration/delegation-scope.js";
5
+ import { DELEGATION_BUDGETS } from "../orchestration/delegation-budget.js";
5
6
  import { createDelegateChildHandle } from "../child-agent-factory.js";
6
7
  import { runGit } from "../../execution-environments/git.js";
7
8
  import { LocalWorktreeManager } from "../../execution-environments/local-worktree-manager.js";
@@ -42,7 +43,8 @@ const DelegateTaskSchema = Type.Object({
42
43
  maxIterations: Type.Optional(Type.Integer({
43
44
  minimum: 1,
44
45
  maximum: 60
45
- }))
46
+ })),
47
+ budgetTier: Type.Optional(Type.Union(Object.keys(DELEGATION_BUDGETS).map((tier) => Type.Literal(tier)), { description: "light: 15 calls/50k cumulative tokens/2 min; standard (default): 30/100k/5 min; deep: 60/200k/10 min. maxIterations overrides the call limit only. Approaching limits reserves one tool-free handoff. Cloud Credit limits still apply." }))
46
48
  });
47
49
  function delegateToolNames(mode, requested) {
48
50
  return resolveDelegationTools(Object.keys(DELEGATION_TOOL_CAPABILITIES), mode, requested).granted;
@@ -52,7 +54,7 @@ function createDelegateTool(deps) {
52
54
  name: "delegate_task",
53
55
  label: "Delegate task",
54
56
  parameters: DelegateTaskSchema,
55
- description: "Delegate a bounded task with a fresh context; supply relevant facts and constraints in context. Default research inherits the parent's local, web, knowledge, skill and approved external read tools. read/inspect/review are local read-only. toolset and capabilities only narrow parent access; custom requires explicit capabilities. Browser interaction is opt-in. implement requires a project and clean Git workspace and returns changes in a separate worktree for review. No nested delegation, external writes, installation or background jobs. Up to 60 tool calls, 100k tokens and five minutes. Reports rejected tools and their reasons.",
57
+ description: "Delegate a bounded task with a fresh context; supply relevant facts and constraints in context. Default research inherits the parent's local, web, knowledge, skill and approved external read tools. read/inspect/review are local read-only. toolset and capabilities only narrow parent access; custom requires explicit capabilities. Browser interaction is opt-in. implement requires a project and clean Git workspace and returns changes in a separate worktree for review. No nested delegation, external writes, installation or background jobs. budgetTier selects light, standard (default), or deep; token budgets sum all model requests, not context size. Reports stop reason, budget usage, partial handoff and rejected tools.",
56
58
  supportsParallel: false,
57
59
  idempotent: false,
58
60
  async execute(_id, input, signal) {
@@ -72,6 +74,7 @@ function createDelegateTool(deps) {
72
74
  }],
73
75
  details: {
74
76
  status: "failed",
77
+ stopReason: "parent_policy",
75
78
  mode,
76
79
  grantedTools: tools,
77
80
  rejectedTools: access.rejected
@@ -99,7 +102,8 @@ function createDelegateTool(deps) {
99
102
  context: input.context,
100
103
  requesterConversationId: parentConversationId,
101
104
  allowedToolNames: tools,
102
- maxIterations: input.maxIterations ?? 30,
105
+ budgetTier: input.budgetTier,
106
+ maxIterations: input.maxIterations ?? DELEGATION_BUDGETS[input.budgetTier ?? "standard"].maxToolCalls,
103
107
  model,
104
108
  bus: deps.bus,
105
109
  getConfig: deps.getConfig,
@@ -144,6 +148,12 @@ function createDelegateTool(deps) {
144
148
  type: "text",
145
149
  text: [
146
150
  result.summary,
151
+ `Budget (${result.budget.tier}): ${JSON.stringify({
152
+ stopReason: result.stopReason,
153
+ usage: result.budget.usage,
154
+ limits: result.budget.limits,
155
+ handoffRequested: result.handoff.requested
156
+ })}`,
147
157
  stale ? "Workspace changed or could not be fingerprinted; review findings require revalidation." : "",
148
158
  access.rejected.length ? `Rejected tools: ${JSON.stringify(access.rejected)}` : "",
149
159
  environmentId ? `Changes retained in ${workspace} (environment ${environmentId}). Review and integrate from this workspace, then verify the parent workspace again.` : "",
@@ -159,6 +169,9 @@ function createDelegateTool(deps) {
159
169
  iterations: result.toolIterations,
160
170
  revision: currentRevision,
161
171
  reviewedRevision: revision,
172
+ stopReason: result.stopReason,
173
+ budget: result.budget,
174
+ handoff: result.handoff,
162
175
  ...result.verification ? { childVerification: result.verification } : {},
163
176
  ...environmentId ? {
164
177
  environmentId,
@@ -175,6 +188,7 @@ function createDelegateTool(deps) {
175
188
  }],
176
189
  details: {
177
190
  status: signal?.aborted ? "cancelled" : "failed",
191
+ stopReason: signal?.aborted ? "cancelled" : "runtime_error",
178
192
  mode,
179
193
  grantedTools: tools,
180
194
  rejectedTools: access.rejected,
@@ -45,7 +45,7 @@ const DEFAULT_CONFIG = {
45
45
  {
46
46
  name: "timeout",
47
47
  description: "Command execution timed out",
48
- regex: /timeout|timed out|execution time exceeded/i,
48
+ regex: /\btimeout(?:error|exception)?\b|timed out|execution time exceeded|\betimedout\b/i,
49
49
  suggestion: "Command took too long. Consider optimizing the command, breaking into smaller tasks, or increasing timeout.",
50
50
  autoRetry: true,
51
51
  maxRetries: 1,
@@ -7,7 +7,7 @@ import { Type } from "@sinclair/typebox";
7
7
  //#region src/agent/tools/exec-command.ts
8
8
  const DEFAULT_MAX_OUTPUT_CHARS = 5e4;
9
9
  const ExecCommandSchema = Type.Object({
10
- cmd: Type.String({ description: "Shell command to execute." }),
10
+ cmd: Type.String({ description: "Command for the default platform shell: /bin/sh on Unix and in Docker; cmd.exe on Windows hosts. Use portable syntax, or invoke an installed shell explicitly for shell-specific features." }),
11
11
  cwd: Type.Optional(Type.String({ description: "Working directory. Relative paths are resolved under the agent workspace." })),
12
12
  timeoutMs: Type.Optional(Type.Number({ description: "Command timeout in milliseconds. Defaults to 1800000 (30m) and is capped at 14400000 (4h)." })),
13
13
  maxOutputChars: Type.Optional(Type.Number({ description: "Maximum characters returned to the model. UI streaming still receives output deltas." })),
@@ -28,6 +28,7 @@ function commandFailureHint(details) {
28
28
  if (details.status === "success" || details.status === "running") return void 0;
29
29
  if (details.status === "cancelled") return "The command was cancelled. Inspect its partial output before deciding whether to restart.";
30
30
  if (details.status === "timed_out") return "The command timed out. Re-run a narrower command, increase timeoutMs if the long run is expected, or inspect partial output before retrying.";
31
+ if (details.exitCode !== 0 && /(?:\/bin\/sh|\bsh:).*syntax error|bad substitution/i.test(details.stderr)) return "The default shell rejected the syntax. Use portable POSIX sh commands or invoke an installed bash explicitly for Bash-only features such as process substitution. Inspect stderr, fix the command, then rerun it.";
31
32
  if (details.exitCode !== 0 && details.stderr.trim()) return "The command failed. Inspect stderr first, fix the underlying issue, then re-run the narrowest relevant verification command.";
32
33
  if (details.exitCode !== 0 && details.stdout.trim()) return "The command failed. Inspect stdout for the failure location, then re-run the narrowest relevant verification command.";
33
34
  return "The command failed without output. Verify the command, cwd, and required dependencies before retrying.";
@@ -54,6 +55,7 @@ function createExecCommandTool(workspaceCwd, options) {
54
55
  name: "exec_command",
55
56
  description: [
56
57
  "Run shell commands for code inspection, builds, tests, type checks, and verification.",
58
+ "Unix and Docker use /bin/sh, not your interactive shell. Do not use Bash process substitution <(...) or other Bash-only syntax unless invoking an installed bash explicitly. Prefer separate portable commands or a script file. Windows hosts use cmd.exe.",
57
59
  "Use apply_patch for file edits; do not edit files by shell redirection unless explicitly necessary.",
58
60
  "Relative cwd values resolve under the current agent workspace.",
59
61
  "When the command creates final user-facing files, declare all final paths in outputs so they are persisted with this command."
@@ -48,6 +48,7 @@ export interface ToolFactoryDeps {
48
48
  getMemoryManager?: () => MemoryManager;
49
49
  /** Skill runtime for the current workspace/session. */
50
50
  getSkillManager?: () => SkillManager;
51
+ getAgentToolAvailability?: PersonalTaskToolDeps['getAgentToolAvailability'];
51
52
  getAgentSkillAvailability?: PersonalTaskToolDeps['getAgentSkillAvailability'];
52
53
  /** Session store for `session_search`. */
53
54
  getSessionStore?: () => SessionStore;
@@ -111,6 +112,12 @@ export interface CreateCoreToolsOptions {
111
112
  }
112
113
  export declare class AgentToolsFactory {
113
114
  private deps;
115
+ getAgentToolAvailability(candidateId: string, name: string): {
116
+ condition: string;
117
+ state: "blocked" | "verified";
118
+ reasonCode: string;
119
+ detail: string;
120
+ };
114
121
  private browserRuntime;
115
122
  /** Cached readiness probe keyed by the active driver configuration. */
116
123
  private browserReadinessCache;
@@ -11,9 +11,9 @@ import { init_sqlite } from "../../storage/sqlite/index.js";
11
11
  import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
12
12
  import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
13
13
  import { resolveEffectiveAgentConfigForAgent, resolveEffectiveAgentConfigForSession } from "../../config/agent-profile.js";
14
+ import { LOCAL_READ_MAX_CHARS } from "./local-read-budget.js";
14
15
  import { createPersonalAttentionTool } from "./personal-attention-tool.js";
15
16
  import { markCodemodeCoreRead } from "./codemode-permissions.js";
16
- import { LOCAL_READ_MAX_CHARS } from "./local-read-budget.js";
17
17
  import { PERSONAL_TOOL_DESCRIPTIONS } from "../../personal-agent/policy.js";
18
18
  import { PERSONAL_REQUEST_TOOL_IDS, filterExecutionTools, resolveExecutionToolPolicy } from "../embedded/execution-tool-policy.js";
19
19
  import "../../../packages/browser-control-contract/src/index.js";
@@ -100,6 +100,24 @@ const CLARIFY_SUPPORTED_CHANNELS = new Set([
100
100
  "cli"
101
101
  ]);
102
102
  var AgentToolsFactory = class AgentToolsFactory {
103
+ getAgentToolAvailability(candidateId, name) {
104
+ const candidate = resolveEffectiveAgentConfigForAgent(candidateId).config;
105
+ const denied = new Set(Object.entries(candidate.tools).filter(([, policy]) => policy.mode === "deny").map(([tool]) => tool));
106
+ const registered = this.createAllTools({
107
+ agentId: candidateId,
108
+ workspace: candidate.workspace,
109
+ conversationId: "",
110
+ disabledTools: denied,
111
+ toolAllowlist: candidate.toolAllowlist
112
+ }).some((tool) => tool.name === name);
113
+ const activatable = this.getLazyCapabilityToolNames().includes(name);
114
+ return {
115
+ condition: `tool:${name}`,
116
+ state: registered || activatable ? "verified" : "blocked",
117
+ reasonCode: registered ? "tool_registered" : activatable ? "tool_activatable" : "tool_not_registered",
118
+ detail: candidate.tools[name]?.mode === "ask" ? "Runtime approval is still required" : "Registration checked; execution environment is checked by the tool"
119
+ };
120
+ }
103
121
  browserRuntime = null;
104
122
  /** Cached readiness probe keyed by the active driver configuration. */
105
123
  browserReadinessCache = null;
@@ -296,6 +314,7 @@ var AgentToolsFactory = class AgentToolsFactory {
296
314
  const grep = createGrepTool(workspace);
297
315
  const find = createFindTool(workspace);
298
316
  const productToolDeps = {
317
+ getAgentToolAvailability: this.deps.getAgentToolAvailability ?? ((candidateId, name) => this.getAgentToolAvailability(candidateId, name)),
299
318
  getAgentSkillAvailability: this.deps.getAgentSkillAvailability,
300
319
  getWorkspace: () => this.deps.workspace,
301
320
  getConfig: () => this.deps.getConfig?.(),
@@ -616,7 +635,7 @@ var AgentToolsFactory = class AgentToolsFactory {
616
635
  allowHostGit: () => getCommandIsolation()?.mode !== "docker"
617
636
  }));
618
637
  }
619
- const selected = filterToolsByDisabledSet(core.map(markCodemodeCoreRead), disabled).filter((tool) => (!allowed || allowed.has(tool.name)) && !(personalToolsConfigured && tool.name === "clarify")).map((tool) => personalToolsConfigured && PERSONAL_TOOL_DESCRIPTIONS[tool.name] ? {
638
+ const selected = filterToolsByDisabledSet(core.map(markCodemodeCoreRead), disabled).filter((tool) => (!allowed || allowed.has(tool.name)) && !(personalToolsConfigured && tool.name === "clarify")).map((tool) => personalToolsConfigured && !tool.name.startsWith("personal_") && PERSONAL_TOOL_DESCRIPTIONS[tool.name] ? {
620
639
  ...tool,
621
640
  description: PERSONAL_TOOL_DESCRIPTIONS[tool.name]
622
641
  } : tool);
@@ -2,6 +2,8 @@ import type { AgentTool } from '@earendil-works/pi-agent-core';
2
2
  import type { Config } from '../../config/schema.js';
3
3
  declare const schema: import("@sinclair/typebox").TObject<{
4
4
  command: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"list">, import("@sinclair/typebox").TLiteral<"follow">, import("@sinclair/typebox").TLiteral<"pause">, import("@sinclair/typebox").TLiteral<"end">, import("@sinclair/typebox").TLiteral<"resume">, import("@sinclair/typebox").TLiteral<"settings">, import("@sinclair/typebox").TLiteral<"interests">, import("@sinclair/typebox").TLiteral<"feedback">, import("@sinclair/typebox").TLiteral<"rollback">]>;
5
+ offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
6
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
5
7
  id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
6
8
  subject: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
7
9
  summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
@@ -2,6 +2,7 @@ import { getSqliteDatabase, init_transaction } from "../../storage/sqlite/transa
2
2
  import { init_session_instance_repository, readCurrentTranscriptId } from "../../storage/sqlite/session-instance-repository.js";
3
3
  import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
4
4
  import { getPersonalAgentByConversation } from "../../personal-agent/repository.js";
5
+ import { boundedPersonalResult } from "./personal-result-budget.js";
5
6
  import { parseLocalCheckTime } from "../../personal-agent/proactivity/follow-up-request.js";
6
7
  import { applyThreadFeedback, getAttention, getProactivitySettings, listAttention, listInterestCandidates, patchAttention, patchProactivitySettings, rollbackStrategy, saveAttention, strategyState, userText } from "../../personal-agent/proactivity/repository.js";
7
8
  import { Type } from "@sinclair/typebox";
@@ -20,6 +21,11 @@ const schema = Type.Object({
20
21
  Type.Literal("feedback"),
21
22
  Type.Literal("rollback")
22
23
  ]),
24
+ offset: Type.Optional(Type.Integer({ minimum: 0 })),
25
+ limit: Type.Optional(Type.Integer({
26
+ minimum: 1,
27
+ maximum: 20
28
+ })),
23
29
  id: Type.Optional(Type.String()),
24
30
  subject: Type.Optional(Type.String({ maxLength: 160 })),
25
31
  summary: Type.Optional(Type.String({ maxLength: 1600 })),
@@ -39,6 +45,35 @@ const schema = Type.Object({
39
45
  ])),
40
46
  preparation: Type.Optional(Type.Union([Type.Literal("brief"), Type.Literal("thorough")])),
41
47
  versionId: Type.Optional(Type.String({ description: "Latest strategy version ID returned by list; required for rollback." }))
48
+ }, {
49
+ additionalProperties: false,
50
+ anyOf: [
51
+ { properties: { command: { enum: [
52
+ "list",
53
+ "settings",
54
+ "interests"
55
+ ] } } },
56
+ {
57
+ properties: { command: { const: "follow" } },
58
+ required: ["subject"]
59
+ },
60
+ {
61
+ properties: { command: { enum: [
62
+ "pause",
63
+ "end",
64
+ "resume"
65
+ ] } },
66
+ required: ["id"]
67
+ },
68
+ {
69
+ properties: { command: { const: "feedback" } },
70
+ required: ["id", "feedback"]
71
+ },
72
+ {
73
+ properties: { command: { const: "rollback" } },
74
+ required: ["id", "versionId"]
75
+ }
76
+ ]
42
77
  });
43
78
  function createPersonalAttentionTool(deps) {
44
79
  return {
@@ -59,30 +94,29 @@ function createPersonalAttentionTool(deps) {
59
94
  }],
60
95
  details: {}
61
96
  };
62
- if (input.command === "interests") {
63
- if (!resolveUserContextSessionAccess(config, conversationId).userModel) throw new Error("Interest access is unavailable");
97
+ if (input.command === "interests" || input.command === "list") {
98
+ if (input.command === "interests" && !resolveUserContextSessionAccess(config, conversationId).userModel) throw new Error("Interest access is unavailable");
99
+ const rows = input.command === "interests" ? listInterestCandidates(conversationId) : listAttention(conversationId).map((thread) => ({
100
+ id: thread.id,
101
+ subject: thread.subject,
102
+ status: thread.status,
103
+ nextCheckAt: thread.next_check_at,
104
+ revision: thread.revision,
105
+ strategy: strategyState(thread.id)
106
+ }));
107
+ const offset = input.offset ?? 0;
64
108
  return {
65
109
  content: [{
66
110
  type: "text",
67
- text: JSON.stringify(listInterestCandidates(conversationId))
111
+ text: JSON.stringify(boundedPersonalResult({
112
+ items: rows.slice(offset, offset + (input.limit ?? 10)),
113
+ total: rows.length,
114
+ offset
115
+ }))
68
116
  }],
69
117
  details: {}
70
118
  };
71
119
  }
72
- if (input.command === "list") return {
73
- content: [{
74
- type: "text",
75
- text: JSON.stringify(listAttention(conversationId).map((thread) => ({
76
- id: thread.id,
77
- subject: thread.subject,
78
- status: thread.status,
79
- nextCheckAt: thread.next_check_at,
80
- revision: thread.revision,
81
- strategy: strategyState(thread.id)
82
- })))
83
- }],
84
- details: {}
85
- };
86
120
  const db = getSqliteDatabase();
87
121
  const transcriptId = readCurrentTranscriptId(db, conversationId);
88
122
  const source = db.prepare("SELECT entry_id,payload_json FROM transcript_entries WHERE transcript_id = ? AND role = 'user' ORDER BY seq DESC LIMIT 1").get(transcriptId);
@@ -20,6 +20,12 @@ const schema = Type.Object({
20
20
  minimum: 1,
21
21
  maximum: 10
22
22
  }))
23
+ }, {
24
+ additionalProperties: false,
25
+ anyOf: [{ properties: { command: { const: "list" } } }, {
26
+ properties: { command: { const: "get" } },
27
+ required: ["id"]
28
+ }]
23
29
  });
24
30
  const fields = [
25
31
  "id",
@@ -52,11 +58,15 @@ function compact(value, textLimit) {
52
58
  result[key] = entry.slice(0, textLimit);
53
59
  if (entry.length > textLimit) truncatedFields.push(key);
54
60
  } else if (typeof entry === "number" || typeof entry === "boolean" || entry === null) result[key] = entry;
55
- else if (entry && typeof entry === "object" && !Array.isArray(entry)) result[key] = Object.fromEntries(Object.entries(entry).slice(0, 12).filter(([, item]) => [
56
- "string",
57
- "number",
58
- "boolean"
59
- ].includes(typeof item) || item === null).map(([field, item]) => [field, typeof item === "string" ? item.slice(0, 200) : item]));
61
+ else if (entry && typeof entry === "object" && !Array.isArray(entry)) {
62
+ const nested = Object.entries(entry);
63
+ if (nested.length > 12 || nested.some(([, item]) => typeof item === "string" && item.length > 200 || item !== null && typeof item === "object")) truncatedFields.push(key);
64
+ result[key] = Object.fromEntries(nested.slice(0, 12).filter(([, item]) => [
65
+ "string",
66
+ "number",
67
+ "boolean"
68
+ ].includes(typeof item) || item === null).map(([field, item]) => [field, typeof item === "string" ? item.slice(0, 200) : item]));
69
+ } else if (Array.isArray(entry)) truncatedFields.push(key);
60
70
  }
61
71
  if (truncatedFields.length) result.truncatedFields = truncatedFields;
62
72
  return result;
@@ -119,7 +129,7 @@ function createPersonalReadTool(deps) {
119
129
  items: selected.map((row) => compact(row, 200)),
120
130
  offset,
121
131
  total: result.total ?? rows.length,
122
- nextOffset: selected.length === limit ? offset + selected.length : void 0,
132
+ nextOffset: offset + selected.length < Number(result.total ?? rows.length) ? offset + selected.length : void 0,
123
133
  excerpts: true
124
134
  };
125
135
  }