@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.
- package/dist/browser-ext/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/browser-ext/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/browser-ext/dist/assets/{sidepanel-Ccl0eSa1.css → sidepanel-CQeQB5vW.css} +3 -0
- package/dist/browser-ext/dist/sidepanel.html +1 -1
- package/dist/browser-ext/dist/sidepanel.js +16690 -3
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/gateway/static/root/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/gateway/static/root/assets/{activity-store-CKTm4K1I.js → activity-store-CB2X4Gmu.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-60ztIsyO.js → agent-avatar-dicebear-BSel9yf8.js} +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-DgHMyhuY.js +1 -0
- package/dist/gateway/static/root/assets/{agent-plugin-dialog-D0h_GOzZ.js → agent-plugin-dialog-BosuN4dO.js} +1 -1
- package/dist/gateway/static/root/assets/agents-B-pw5RKI.js +77 -0
- package/dist/gateway/static/root/assets/{agents-admin-api-6aesahV-.js → agents-admin-api-BkULgC6Q.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-D7OQP_Q4.js → app-management-settings-panel-DuOqKkfH.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-CY44NMTV.js → appearance-settings-8JF9rXFr.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-CfrhlDw1.js → apps-page-Cuclpk0A.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-D5ouupwE.js → archive-plugin-De0ND0oA.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-BTyga78U.js → automations-page-D7NwNy2I.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-CSxW4wX0.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-sYO6MAV6.js → binary-plugins-Do535ZGW.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-BdOTO0Yo.css → block-editor-Cvy3D_4T.css} +1 -1
- package/dist/gateway/static/root/assets/block-editor-Dnb7CH_l.js +160 -0
- package/dist/gateway/static/root/assets/{browser-automation-inputs-BmILL059.js → browser-automation-inputs-B9M1RYTm.js} +1 -1
- package/dist/gateway/static/root/assets/browser-automations-page-GBgDe21o.js +3 -0
- package/dist/gateway/static/root/assets/browser-settings-page-B2FXaO3n.js +3 -0
- package/dist/gateway/static/root/assets/{capabilities-DFR31Yhq.js → capabilities-2Do3eKMM.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-BFuas9nS.js → capabilities-XFwwUNU3.js} +1 -1
- package/dist/gateway/static/root/assets/capabilities-page-f2-MquJn.js +2 -0
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-ByLA8WMF.js → capabilities-settings-panel-D9F0mw16.js} +6 -6
- package/dist/gateway/static/root/assets/{capability-header-actions-DBwN3Sxo.js → capability-header-actions-DVRxJPQP.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-hokrjIdA.js → channels-CnDm5T1t.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-BBNBN1KZ.js → chat-terminal-dock-BxSCDbK7.js} +2 -2
- package/dist/gateway/static/root/assets/{computer-settings-page-BWLBPHzl.js → computer-settings-page-DVAB-kQw.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-Bm5JwIw8.js → connector-service-page-D2EeLXei.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-DK9n4hgZ.js +1 -0
- package/dist/gateway/static/root/assets/{date-picker-BhtD9xGl.js → date-picker-Cl9KfFj8.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-BZ7Xnjqt.js → dependency-picker-Ei6aX5WM.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-CFPxAY1g.js → desktop-pet-4Evl4RKX.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-HHN0SYzH.js → desktop-pet-settings-DAD_OWcX.js} +1 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-BA21epMn.js +1 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-DQm9XjdO.js → directory-picker-path-field-B_Zb5nNR.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-BrwNSqhz.js → extension-debug-page-DtHNy4TE.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-CpDc5gDd.js → extension-page-8gWSThWP.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-provider-DF9qV04X.js → extension-provider-nbgU7xBS.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-BLXL1IUp.js → extension-settings-page-CunUbB09.js} +1 -1
- package/dist/gateway/static/root/assets/{fallback-models-JL5hZ0k-.js → fallback-models-BSAfzXby.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-iceAEoJZ.js → gateway-config-swr-D0tBjSgj.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-realtime-DMpsQXjn.js → gateway-realtime-BnHraJ3O.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-BVriF6Zj.js +1 -0
- package/dist/gateway/static/root/assets/gateway-settings-CN-2229W.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-BS6l0_QM.js → gateway-startup-retry-C1DQsIH3.js} +1 -1
- package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-BQJ5YRxv.js → highlighted-body-KQOG7T2V-DktBCtHF.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-CUJcNW3H.js +2 -0
- package/dist/gateway/static/root/assets/{image-generation-api-F2lG3T2E.js → image-generation-api-DodU6GNC.js} +1 -1
- package/dist/gateway/static/root/assets/{imports-page-CsMEvde8.js → imports-page-DQm1MNNC.js} +1 -1
- package/dist/gateway/static/root/assets/index-BPNL54bv.js +260 -0
- package/dist/gateway/static/root/assets/index-yseLAt9D.css +1 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CeYVir-Q.js → keyboard-shortcuts-settings-DaC5YjuJ.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-Chj0R32r.js → local-app-workbench-page-DwQyyo7a.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-sTmfe7AL.js → local-apps-page-CpZhivpf.js} +1 -1
- package/dist/gateway/static/root/assets/{local-session-drafts-DdLyLxCp.js → local-session-drafts-D_tYFy7d.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-AAPVaavy.js → locale-store-uRu_DsWm.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-CpR_hGcR.js → logs-page-Db43nh1M.js} +2 -2
- package/dist/gateway/static/root/assets/{management-settings-B_rVRdFW.js → management-settings-DrKejBEZ.js} +1 -1
- package/dist/gateway/static/root/assets/markdown-view-Ct4sKkUf.css +1 -0
- package/dist/gateway/static/root/assets/markdown-view-DHfQAvZQ.js +324 -0
- package/dist/gateway/static/root/assets/{media-plugins-Op_dDK0E.js → media-plugins-BombFqsX.js} +1 -1
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-C4VzqE9z.js +1 -0
- package/dist/gateway/static/root/assets/messages-DTqbfje6.js +3 -0
- package/dist/gateway/static/root/assets/models-hub-cache-Ct6X5zmB.js +1 -0
- package/dist/gateway/static/root/assets/note-detail-panel-a8NSwmmW.js +5 -0
- package/dist/gateway/static/root/assets/{notes-api-1TYlEpD2.js → notes-api-nqN2wKYc.js} +1 -1
- package/dist/gateway/static/root/assets/notes-page-BKRke43F.js +8 -0
- package/dist/gateway/static/root/assets/{page-context-capture-button-BYqWMp-X.js → page-context-capture-button-DUaMkmxv.js} +1 -1
- package/dist/gateway/static/root/assets/page-tabs-HLrKIjXH.js +1 -0
- package/dist/gateway/static/root/assets/personal-page-BqF-HHw1.js +1 -0
- package/dist/gateway/static/root/assets/{product-open-page-BRBzKP2h.js → product-open-page-GrhtTQIz.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-content-BapT1QoP.js → product-preview-content-zdP7gN0y.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-9Vd_AqDW.js +1 -0
- package/dist/gateway/static/root/assets/{projects-page-BMN9evTF.js → projects-page-DGunhjoM.js} +1 -1
- package/dist/gateway/static/root/assets/{registry-api-BPFXyHk8.js → registry-api-CYqA7bfl.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-BoRsF3Lx.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-api-Cu0MRsAb.js → runtime-tools-api-zzoxjSuR.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CJF3NeTn.js → runtime-tools-settings-panel-W0HDm--J.js} +1 -1
- package/dist/gateway/static/root/assets/{scenes-page-D_BBF04t.js → scenes-page-CYsFOfVJ.js} +2 -2
- package/dist/gateway/static/root/assets/{schema-form-CAmizvOH.js → schema-form-CBxEbBQq.js} +1 -1
- package/dist/gateway/static/root/assets/{send-session-input-G334tGIw.js → send-session-input-BCAF-Ikt.js} +1 -1
- package/dist/gateway/static/root/assets/{session-api-DYl61CUz.js → session-api-CzVTrG8n.js} +1 -1
- package/dist/gateway/static/root/assets/{session-manager-J3r-UiPc.js → session-manager-_yy4bxhT.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-Dthfx_vc.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-O_0Lk38S.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-B635QEij.js → settings-page-CFs-WP_2.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-D2-9fXYL.js +1 -0
- package/dist/gateway/static/root/assets/{share-link-dialog-Bht78zB4.js → share-link-dialog-C47Xgzta.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-epHeT5lh.js → share-preview-page-nJ2FWAEP.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-api-k1DyfoGP.js → shares-api-B0HlMAzi.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-DTb88RHD.js +1 -0
- package/dist/gateway/static/root/assets/{skill-api-CLmxc6fX.js → skill-api-DJ8UBsxq.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-reload-api-DZGoQACj.js → skill-reload-api-CEJx5rPd.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-clfZlVOG.js → skills-page-DjbBOikT.js} +1 -1
- package/dist/gateway/static/root/assets/specialists-4bkS5rZ4.js +1 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-DHjH7-OW.js → system-settings-panel-Dt5GkLhM.js} +1 -1
- package/dist/gateway/static/root/assets/{task-detail-page-BcYnm1sO.js → task-detail-page-88EShcbs.js} +2 -2
- package/dist/gateway/static/root/assets/{task-expandable-content-OTHBryoz.js → task-expandable-content-CF6Bj-Qa.js} +1 -1
- package/dist/gateway/static/root/assets/tasks-DJIeIk9C.js +1 -0
- package/dist/gateway/static/root/assets/{theme-store-C2WOFv9Y.js → theme-store-BUfzeDvL.js} +1 -1
- package/dist/gateway/static/root/assets/{tracing-settings-page-CnPpysvy.js → tracing-settings-page-C2q5B3Kp.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-C3bUe4Nc.js → tunnel-api-JHttXi63.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-Dgl7sh2E.js → usage-page-B3rUa0fW.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-BXZr6Rm9.js → use-autosave-DgbCgsao.js} +1 -1
- package/dist/gateway/static/root/assets/{use-composer-attachments-C7M9p0kf.js → use-composer-attachments-BFP3k6oC.js} +1 -1
- package/dist/gateway/static/root/assets/{use-file-preview-expanded-CleMXYWu.js → use-file-preview-expanded-B1BiTQNS.js} +2 -2
- package/dist/gateway/static/root/assets/user-model-page-Cq1VSsZw.js +2 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-BeF8AHPT.js → voice-api-key-field-4AIkbm9R.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-CBORJPD_.js → voice-config-api-Kw1pYlLN.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-3egLlB1M.js → work-discovery-overlay-BAtG_JHv.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BhYnheW-.js → workflow-run-setup-panel-Cw12NFgx.js} +2 -2
- package/dist/gateway/static/root/assets/{workflows-page-C9dLtlfP.js → workflows-page-kR5ouOuM.js} +3 -3
- package/dist/gateway/static/root/assets/{workspace-api-DdkViIn3.js → workspace-api-Xr3wz8T3.js} +2 -2
- package/dist/gateway/static/root/assets/{xopc-cloud-account-card-4KUvnfnh.js → xopc-cloud-account-card-BTBVKpSg.js} +1 -1
- package/dist/gateway/static/root/index.html +30 -29
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/index.js +4 -0
- package/dist/packages/gateway-contract/src/next-turn-suggestions.js +40 -0
- package/dist/packages/gateway-contract/src/specialists.js +48 -0
- package/dist/packages/gateway-contract/src/task-lifecycle.js +3 -0
- package/dist/packages/gateway-contract/src/tasks.js +41 -10
- package/dist/src/agent/agent-manager.d.ts +6 -0
- package/dist/src/agent/agent-manager.js +7 -3
- package/dist/src/agent/child-agent-factory.d.ts +9 -0
- package/dist/src/agent/child-agent-factory.js +83 -46
- package/dist/src/agent/context/execution-scope.js +1 -1
- package/dist/src/agent/context/project-context.js +1 -1
- package/dist/src/agent/embedded/run-turn.js +11 -0
- package/dist/src/agent/embedded/session-tool-result-guard.js +1 -1
- package/dist/src/agent/orchestration/agent-turn-policy.d.ts +4 -0
- package/dist/src/agent/orchestration/delegation-budget.d.ts +60 -0
- package/dist/src/agent/orchestration/delegation-budget.js +154 -0
- package/dist/src/agent/prompt/response-language.js +1 -1
- package/dist/src/agent/prompt/sections/tooling.js +2 -2
- package/dist/src/agent/service.d.ts +6 -0
- package/dist/src/agent/service.js +4 -1
- package/dist/src/agent/starter-agents.d.ts +2 -0
- package/dist/src/agent/starter-agents.js +114 -5
- package/dist/src/agent/tasks/task-judge-service.js +1 -1
- package/dist/src/agent/tools/delegate-tool.js +17 -3
- package/dist/src/agent/tools/error-pattern-matcher.js +1 -1
- package/dist/src/agent/tools/exec-command.js +3 -1
- package/dist/src/agent/tools/factory.d.ts +7 -0
- package/dist/src/agent/tools/factory.js +21 -2
- package/dist/src/agent/tools/personal-attention-tool.d.ts +2 -0
- package/dist/src/agent/tools/personal-attention-tool.js +51 -17
- package/dist/src/agent/tools/personal-read-tool.js +16 -6
- package/dist/src/agent/tools/personal-request-tool.js +64 -10
- package/dist/src/agent/tools/personal-result-budget.d.ts +2 -0
- package/dist/src/agent/tools/personal-result-budget.js +57 -0
- package/dist/src/agent/tools/personal-task-tool.d.ts +23 -11
- package/dist/src/agent/tools/personal-task-tool.js +394 -69
- package/dist/src/agent/tools/xopc-use-tool.d.ts +2 -0
- package/dist/src/agent/tools/xopc-use-tool.js +22 -9
- package/dist/src/agent-config/resolver.js +4 -0
- package/dist/src/agent-config/schema.d.ts +36 -2
- package/dist/src/agent-config/schema.js +9 -2
- package/dist/src/agent-matching/delegation-service.d.ts +17 -0
- package/dist/src/agent-matching/delegation-service.js +87 -0
- package/dist/src/agent-matching/schema.d.ts +2 -0
- package/dist/src/agent-matching/schema.js +6 -0
- package/dist/src/agent-matching/selection-repository.d.ts +54 -0
- package/dist/src/agent-matching/selection-repository.js +83 -0
- package/dist/src/agent-matching/service.d.ts +85 -0
- package/dist/src/agent-matching/service.js +192 -0
- package/dist/src/automations/capabilities/write.d.ts +6 -2
- package/dist/src/automations/domain/validation.d.ts +12 -4
- package/dist/src/automations/draft/automation-draft-validator.d.ts +3 -1
- package/dist/src/cli/commands/channels.js +1 -1
- package/dist/src/cli/commands/connectors.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +1 -1
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/cli/commands/onboard.js +1 -1
- package/dist/src/extensions/sdk/index.js +1 -1
- package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
- package/dist/src/gateway/agents-admin.d.ts +4 -0
- package/dist/src/gateway/agents-admin.js +5 -2
- package/dist/src/gateway/hono/routes/agents.js +18 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
- package/dist/src/gateway/hono/routes/next-turn-suggestions.d.ts +3 -0
- package/dist/src/gateway/hono/routes/next-turn-suggestions.js +39 -0
- package/dist/src/gateway/hono/routes/personal-agent.js +1 -1
- package/dist/src/gateway/hono/routes/tasks.js +2 -1
- package/dist/src/gateway/next-turn-suggestions/generator.d.ts +3 -0
- package/dist/src/gateway/next-turn-suggestions/generator.js +50 -0
- package/dist/src/gateway/next-turn-suggestions/service.d.ts +23 -0
- package/dist/src/gateway/next-turn-suggestions/service.js +125 -0
- package/dist/src/gateway/next-turn-suggestions/snapshot.d.ts +15 -0
- package/dist/src/gateway/next-turn-suggestions/snapshot.js +67 -0
- package/dist/src/gateway/service/agent-runner.d.ts +2 -0
- package/dist/src/gateway/service/agent-runner.js +13 -1
- package/dist/src/gateway/service/session-input-coordinator.js +1 -1
- package/dist/src/gateway/service.d.ts +1 -0
- package/dist/src/gateway/service.js +18 -4
- package/dist/src/gateway/session-context-summary.js +1 -1
- package/dist/src/personal-agent/capability-service.d.ts +2 -0
- package/dist/src/personal-agent/capability-service.js +29 -16
- package/dist/src/personal-agent/policy.js +2 -7
- package/dist/src/personal-agent/proactivity/service.js +1 -1
- package/dist/src/personal-agent/prompt-context.d.ts +1 -4
- package/dist/src/personal-agent/prompt-context.js +5 -35
- package/dist/src/personal-agent/prompts.js +32 -8
- package/dist/src/personal-agent/reply-composer.js +1 -1
- package/dist/src/personal-agent/request-delivery.js +1 -1
- package/dist/src/personal-agent/request-repository.d.ts +3 -2
- package/dist/src/personal-agent/request-repository.js +4 -4
- package/dist/src/personal-agent/request-service.d.ts +2 -1
- package/dist/src/personal-agent/request-service.js +161 -13
- package/dist/src/personal-agent/specialist-capabilities.js +6 -0
- package/dist/src/personal-agent/task-cancel.d.ts +7 -0
- package/dist/src/personal-agent/task-cancel.js +76 -0
- package/dist/src/session/client-history.js +1 -1
- package/dist/src/session/index.js +1 -1
- package/dist/src/storage/sqlite/migrations/247_agent_selection_records.sql +32 -0
- package/dist/src/storage/sqlite/migrations/248_next_turn_suggestions.sql +20 -0
- package/dist/src/storage/sqlite/migrations/249_task_allocations.sql +17 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/next-turn-suggestion-repository.d.ts +4 -0
- package/dist/src/storage/sqlite/next-turn-suggestion-repository.js +30 -0
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/tasks/capabilities/read.js +1 -1
- package/dist/src/tasks/capabilities/relations.d.ts +38 -2
- package/dist/src/tasks/capabilities/write.d.ts +42 -0
- package/dist/src/tasks/capabilities/write.js +9 -7
- package/dist/src/tasks/index.js +1 -1
- package/dist/src/tasks/task-allocation-repository.d.ts +25 -0
- package/dist/src/tasks/task-allocation-repository.js +82 -0
- package/dist/src/tasks/task-allocation-service.d.ts +39 -0
- package/dist/src/tasks/task-allocation-service.js +310 -0
- package/dist/src/tasks/task-application-service.js +44 -1
- package/dist/src/tasks/task-context-assembler.js +1 -1
- package/dist/src/tasks/task-main-update-delivery.js +2 -0
- package/dist/src/tasks/task-origin-repository.d.ts +2 -1
- package/dist/src/tasks/task-origin-repository.js +9 -5
- package/dist/src/tasks/task-read-model-projector.d.ts +2 -1
- package/dist/src/tasks/task-read-model-projector.js +21 -8
- package/dist/src/tasks/task-result-delivery-service.js +2 -2
- package/dist/src/tasks/task-run-coordinator.js +9 -1
- package/dist/src/tasks/task-run-dispatcher.d.ts +1 -1
- package/dist/src/tasks/task-run-dispatcher.js +5 -4
- package/package.json +6 -5
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CzriaMLA.js +0 -1
- package/dist/gateway/static/root/assets/agents-Dwjb-Pmc.js +0 -66
- package/dist/gateway/static/root/assets/automations-workspace-DGZAGTNe.js +0 -6
- package/dist/gateway/static/root/assets/block-editor-CeytAoXT.js +0 -159
- package/dist/gateway/static/root/assets/browser-automations-page-Ko-r320n.js +0 -3
- package/dist/gateway/static/root/assets/browser-settings-page-DPICvQED.js +0 -3
- package/dist/gateway/static/root/assets/capabilities-page-Crb7Oeay.js +0 -2
- package/dist/gateway/static/root/assets/connectors-page-ok0F1o0p.js +0 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-C00mHAYU.js +0 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-U3lzqE82.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-Bc9HD3uV.js +0 -1
- package/dist/gateway/static/root/assets/home-page-hHgcCF-P.js +0 -2
- package/dist/gateway/static/root/assets/index-BnHaXfFv.css +0 -1
- package/dist/gateway/static/root/assets/index-odJjleQM.js +0 -255
- package/dist/gateway/static/root/assets/markdown-view-ByJbFign.css +0 -1
- package/dist/gateway/static/root/assets/markdown-view-roJ1FcXL.js +0 -66
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-BUSGX-3o.js +0 -1
- package/dist/gateway/static/root/assets/messages-DwOSR5ue.js +0 -3
- package/dist/gateway/static/root/assets/models-hub-cache-BFSZUHQI.js +0 -1
- package/dist/gateway/static/root/assets/note-detail-panel-D2qf-sDw.js +0 -5
- package/dist/gateway/static/root/assets/notes-page-DNvVJasv.js +0 -8
- package/dist/gateway/static/root/assets/page-tabs-BLGO2VIm.js +0 -1
- package/dist/gateway/static/root/assets/personal-page-Bd4xN8C7.js +0 -1
- package/dist/gateway/static/root/assets/project-detail-page-DJC5iE_A.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-sJTykTVP.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-B-wgtLR4.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-CA6YH-tX.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-CUmMrn5b.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-BSQLmRXu.js +0 -1
- package/dist/gateway/static/root/assets/tasks-DwKXgZ-I.js +0 -1
- 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.
|
|
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
|
-
|
|
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:
|
|
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: "
|
|
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(
|
|
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))
|
|
56
|
-
|
|
57
|
-
"
|
|
58
|
-
|
|
59
|
-
|
|
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
|
|
132
|
+
nextOffset: offset + selected.length < Number(result.total ?? rows.length) ? offset + selected.length : void 0,
|
|
123
133
|
excerpts: true
|
|
124
134
|
};
|
|
125
135
|
}
|