@symerian/symi 2.6.40 → 2.6.42
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/{acp-cli-Cm65S6FL.js → acp-cli-BLUeUUA5.js} +2 -2
- package/dist/{acp-cli-CArw-nEj.js → acp-cli-CrEIx-c7.js} +2 -2
- package/dist/{agents-BUphGO8B.js → agents-DDRDszOI.js} +7 -7
- package/dist/{agents.config-C5FjRTiH.js → agents.config-BEVb1Pyx.js} +1 -1
- package/dist/{agents.config-bWQyGjxK.js → agents.config-BKCY6F2A.js} +1 -1
- package/dist/{audio-preflight-DEJHmI9r.js → audio-preflight-CIiS5cfP.js} +11 -11
- package/dist/{audio-preflight-BUO1aDLp.js → audio-preflight-COaFw917.js} +5 -5
- package/dist/{audio-preflight-B0alOE_D.js → audio-preflight-DD18zIZd.js} +5 -5
- package/dist/{audio-preflight-EindUWk_.js → audio-preflight-XrlQA8IZ.js} +11 -11
- package/dist/{audit-ChxZ7_3y.js → audit-BjI_Yyr5.js} +5 -5
- package/dist/{audit-B_XnVSC_.js → audit-DB9YkTVX.js} +5 -5
- package/dist/{auth-choice-CScrqcEI.js → auth-choice-BbzReh6k.js} +4 -4
- package/dist/{auth-choice-BZIJ1WP4.js → auth-choice-D2xXwBeN.js} +4 -4
- package/dist/{banner-DdxLX10a.js → banner-DqqRwplt.js} +1 -1
- package/dist/{browser-cli-B8qCOonD.js → browser-cli-Ctn9do4z.js} +3 -3
- package/dist/{browser-cli-d3tBzuZB.js → browser-cli-kDUw45Y0.js} +3 -3
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +13 -13
- package/dist/bundled/session-memory/handler.js +13 -13
- package/dist/{call-CLKMnHOP.js → call-DKi-hnaF.js} +1 -1
- package/dist/{call-Dqx-xSZ7.js → call-DwpGquzW.js} +1 -1
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-CC5ojwB6.js → channel-options-DQcpDVCx.js} +1 -1
- package/dist/{channel-options-BAqgueJ5.js → channel-options-DcazVJQf.js} +1 -1
- package/dist/{channel-web-_jV8VUEw.js → channel-web-u5yMYO4j.js} +7 -7
- package/dist/{channels-cli-GldZ8ajW.js → channels-cli-Bog4Kn3X.js} +29 -29
- package/dist/{channels-cli-1we8fBWm.js → channels-cli-C3iJE8eg.js} +30 -30
- package/dist/{chrome-DJn17LsI.js → chrome-BxwUEWrH.js} +1 -1
- package/dist/{chrome-D07ZncFh.js → chrome-CbA-qnhp.js} +1 -1
- package/dist/{chrome-Cixcv-qk.js → chrome-DAw-AWNi.js} +1 -1
- package/dist/{chrome-DtPv6OzN.js → chrome-DU2ZysN3.js} +1 -1
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-CNO5cyFx.js → cli-QybdZdE7.js} +25 -25
- package/dist/{cli-DZAotBEi.js → cli-eBtEEHLK.js} +26 -26
- package/dist/{command-registry-DZIdLwVe.js → command-registry-BWnZSpbL.js} +11 -11
- package/dist/{completion-cli-BWw06AVN.js → completion-cli-BhJFXaVU.js} +1 -1
- package/dist/{completion-cli-DYgPksHH.js → completion-cli-CUKm7Hb6.js} +2 -2
- package/dist/{config-CyV6zkEL.js → config-B6OxYMgn.js} +6 -1
- package/dist/{config-BwQutavB.js → config-BNTB6qj8.js} +6 -1
- package/dist/{config-jVLwO6DP.js → config-BUTI-mUZ.js} +6 -1
- package/dist/{config-Bjt5P4vW.js → config-Dz95lSBW.js} +6 -1
- package/dist/{config-cli-DNHtgLYH.js → config-cli-B796xZBe.js} +2 -2
- package/dist/{config-cli-BOS84uDD.js → config-cli-CjnQyv45.js} +2 -2
- package/dist/{config-guard-bJv1t515.js → config-guard-B1skCv1C.js} +2 -2
- package/dist/{config-guard-BTGDJDTi.js → config-guard-CEkSg4hl.js} +3 -3
- package/dist/{config-validation-D1EjO6bG.js → config-validation-Cutpn5eO.js} +1 -1
- package/dist/{config-validation-PZAxf4DR.js → config-validation-HDVDlMSV.js} +1 -1
- package/dist/{configure-B7YGhbtM.js → configure-D3wIQ0yI.js} +10 -10
- package/dist/{configure-DZQuTL_V.js → configure-DUqT7Dyn.js} +10 -10
- package/dist/{control-service-B0G5d40m.js → control-service-BYKXzY4f.js} +4 -4
- package/dist/{control-service-BW1BNnC1.js → control-service-rbSHSlcd.js} +4 -4
- package/dist/control-ui/js/app.js +41 -0
- package/dist/{cron-cli-B88WIOK2.js → cron-cli-DCpsXkrw.js} +3 -3
- package/dist/{cron-cli-QxHcrynL.js → cron-cli-QCTdVZuP.js} +3 -3
- package/dist/{daemon-cli-Cy45NZwV.js → daemon-cli-DSDcmWOi.js} +6 -6
- package/dist/{daemon-cli-DK3CCo49.js → daemon-cli-DhJYEAoL.js} +6 -6
- package/dist/daemon-cli.js +6 -1
- package/dist/{daemon-runtime-A-deduW3.js → daemon-runtime-CVFg-ZmT.js} +1 -1
- package/dist/{daemon-runtime-CdKAsAeg.js → daemon-runtime-mE1b-Q48.js} +1 -1
- package/dist/{deliver-BjpaKGTx.js → deliver-B4KZ6-oZ.js} +3 -3
- package/dist/{deliver-BCmoI9iE.js → deliver-Bu0iWeja.js} +3 -3
- package/dist/{deliver-Cm6Yfbzh.js → deliver-C7NePF9Z.js} +2 -2
- package/dist/{deliver-SIVO_ZZm.js → deliver-DtuY4Wgl.js} +2 -2
- package/dist/{devices-cli-f3yJl6-G.js → devices-cli-BNG-fvdl.js} +2 -2
- package/dist/{devices-cli-D6sKbRkk.js → devices-cli-x3jIP4Ih.js} +2 -2
- package/dist/{directory-cli-DDb20Fzl.js → directory-cli-BxnSZZsW.js} +1 -1
- package/dist/{directory-cli-hohI4d8v.js → directory-cli-KgsAVTA0.js} +1 -1
- package/dist/{dns-cli-DIZyU_2d.js → dns-cli-BuVomfxS.js} +1 -1
- package/dist/{dns-cli-C1SXZIAh.js → dns-cli-Cwr92Aiq.js} +1 -1
- package/dist/{doctor-completion-BayL_S0c.js → doctor-completion-D3oUNFQM.js} +1 -1
- package/dist/{doctor-completion-UC-Jc5jn.js → doctor-completion-DBE1IVKj.js} +1 -1
- package/dist/{doctor-config-flow-DLtGtIf_.js → doctor-config-flow-DhAYwhNB.js} +2 -2
- package/dist/{doctor-config-flow-i4XYSFXR.js → doctor-config-flow-iIzSEQxb.js} +2 -2
- package/dist/entry.js +1 -1
- package/dist/{exec-approvals-cli-DpFjEahL.js → exec-approvals-cli-BSgxsdMt.js} +4 -4
- package/dist/{exec-approvals-cli-Cr-mrEfY.js → exec-approvals-cli-CmndFjEA.js} +4 -4
- package/dist/extensionAPI.js +13 -13
- package/dist/{gateway-cli-BFPPqLYw.js → gateway-cli-BguO9yV4.js} +43 -42
- package/dist/{gateway-cli-Cwh2BbPv.js → gateway-cli-Dc1RT_b9.js} +44 -43
- package/dist/{gateway-rpc-CS_pPYyV.js → gateway-rpc-5fREQe9Q.js} +1 -1
- package/dist/{gateway-rpc-Ddqs16S-.js → gateway-rpc-BMdVa3QV.js} +1 -1
- package/dist/{glass-ui-ws-DB9p7t4H.js → glass-ui-ws-D0UYleBF.js} +34 -34
- package/dist/{glass-ui-ws-BfHJCfCz.js → glass-ui-ws-DoIZyE9O.js} +33 -33
- package/dist/{health-Bx6RQ4MZ.js → health-D3w4YMlC.js} +5 -5
- package/dist/{health-CLIwZbJe.js → health-cVvZdeDu.js} +5 -5
- package/dist/{hooks-cli-CF4fT-gm.js → hooks-cli-DZIbjfOA.js} +27 -27
- package/dist/{hooks-cli-BgALdxuB.js → hooks-cli-te5hzOAB.js} +26 -26
- package/dist/{image-DI1dYFo0.js → image-BWmcNF8N.js} +2 -2
- package/dist/{image-BmIvgTV4.js → image-C3ugMkb5.js} +2 -2
- package/dist/{image-KpMaj86B.js → image-C3wYkWyK.js} +2 -2
- package/dist/{image-BrxGAFvc.js → image-lp19FlzF.js} +2 -2
- package/dist/index.js +34 -34
- package/dist/{lifecycle-core-BnlvcthF.js → lifecycle-core-BZ5sOcHT.js} +2 -2
- package/dist/{lifecycle-core-D8iU9ahw.js → lifecycle-core-C4HzGXA1.js} +2 -2
- package/dist/llm-slug-generator.js +13 -13
- package/dist/{login-CayZfsyE.js → login-BkbDSDPc.js} +2 -2
- package/dist/{login-bQWLSSfZ.js → login-BtBwGFrb.js} +2 -2
- package/dist/{login-DPxmcuIe.js → login-CiVdC-o_.js} +2 -2
- package/dist/{login-QU18rIZK.js → login-DODfJ3Dn.js} +2 -2
- package/dist/{login-qr-Bn4BQkWf.js → login-qr-CBRxijIg.js} +2 -2
- package/dist/{login-qr-BB2Zfn7K.js → login-qr-DPxuLEvD.js} +2 -2
- package/dist/{login-qr-CPn2Q7vV.js → login-qr-Dbw5m381.js} +2 -2
- package/dist/{login-qr-l5XwJWk9.js → login-qr-q201Ckfe.js} +2 -2
- package/dist/{logs-cli-COwO0YyZ.js → logs-cli-CfGj-dOg.js} +3 -3
- package/dist/{logs-cli-2z1YdwSX.js → logs-cli-DtlrLf7u.js} +3 -3
- package/dist/{memory-cli-B7GV_Iz_.js → memory-cli-Btzr8gfD.js} +1 -1
- package/dist/{memory-cli-9q0ppQpo.js → memory-cli-DDumUksr.js} +1 -1
- package/dist/{model-catalog-CsKgWlNp.js → model-catalog-8Son0J4O.js} +2 -2
- package/dist/{model-catalog-b9o0TtF7.js → model-catalog-DNvgFPZn.js} +2 -2
- package/dist/{model-picker-DBsP93uq.js → model-picker-CAm2Bftd.js} +2 -2
- package/dist/{model-picker-CRy3nJeT.js → model-picker-Casgrpw3.js} +2 -2
- package/dist/{models-CPIhph0W.js → models-BCfPhQ4m.js} +8 -8
- package/dist/{models-cli-C01GsvW2.js → models-cli-BFAtjNIF.js} +28 -28
- package/dist/{models-cli-CLqS4ENq.js → models-cli-Cj2CwbPw.js} +29 -29
- package/dist/{models-config-Bc8qKqev.js → models-config-Be8DRFkB.js} +1 -1
- package/dist/{models-config-BiIYPWCW.js → models-config-CFFjJPe7.js} +1 -1
- package/dist/{node-cli-BeZKOSYR.js → node-cli-DnfDOh1d.js} +9 -9
- package/dist/{node-cli-74pkmapS.js → node-cli-eHn9-YfJ.js} +9 -9
- package/dist/{nodes-cli-nic1q7eb.js → nodes-cli-Ci3oxw8k.js} +3 -3
- package/dist/{nodes-cli-DJHcnIfL.js → nodes-cli-Ct4M7JOe.js} +3 -3
- package/dist/{onboard-CzncEzdT.js → onboard-BMq8qc1m.js} +7 -7
- package/dist/{onboard-BrxB6sbz.js → onboard-VcdBF5TB.js} +7 -7
- package/dist/{onboard-channels-H11ympjW.js → onboard-channels-B5wgcffj.js} +1 -1
- package/dist/{onboard-channels-BBUPobrz.js → onboard-channels-CiOun4k1.js} +1 -1
- package/dist/{onboard-custom-BFbF4nGV.js → onboard-custom-CQOMQkfS.js} +2 -2
- package/dist/{onboard-custom-Bt-wDMSz.js → onboard-custom-XiomtQr7.js} +2 -2
- package/dist/{onboard-helpers-ChH5EhW2.js → onboard-helpers-BBtPmJEe.js} +2 -2
- package/dist/{onboard-helpers-MnxHJAaB.js → onboard-helpers-DFvWPFhU.js} +2 -2
- package/dist/{onboard-remote-57GHsVPU.js → onboard-remote-BURDxwoE.js} +1 -1
- package/dist/{onboard-remote-BRxgNeoe.js → onboard-remote-D-B4EiOE.js} +1 -1
- package/dist/{onboard-skills-DtcVRCTc.js → onboard-skills-BDCzVjxb.js} +1 -1
- package/dist/{onboard-skills-CLnJpRrp.js → onboard-skills-CbzgBT1W.js} +1 -1
- package/dist/{onboarding-D7hzRo_I.js → onboarding-CGNpTyg2.js} +10 -10
- package/dist/{onboarding-D8p8ii63.js → onboarding-Dp7p6zKa.js} +10 -10
- package/dist/{onboarding.finalize-C-rIKbkf.js → onboarding.finalize-B6DOu8vp.js} +31 -31
- package/dist/{onboarding.finalize-BJUg2rlZ.js → onboarding.finalize-CrsE5P43.js} +33 -33
- package/dist/{onboarding.gateway-config-CTbWQvl6.js → onboarding.gateway-config-B9zGPfCl.js} +4 -4
- package/dist/{onboarding.gateway-config-oxW0bLBK.js → onboarding.gateway-config-DKwJ5bWd.js} +4 -4
- package/dist/{outbound-BodV7hPd.js → outbound-BIOChOHt.js} +1 -1
- package/dist/{outbound-BOqx1b0e.js → outbound-Bt8rj9kO.js} +1 -1
- package/dist/{outbound-BhKz3zWF.js → outbound-DL8bdXlZ.js} +1 -1
- package/dist/{outbound-CG3KehgB.js → outbound-wnv03tb3.js} +1 -1
- package/dist/{pairing-cli-RbEs_EMc.js → pairing-cli-DSM82gJG.js} +1 -1
- package/dist/{pairing-cli-NErE7ajG.js → pairing-cli-HDWwcqjZ.js} +1 -1
- package/dist/{pi-embedded-b2yPH0UQ.js → pi-embedded-DQe8vBwU.js} +415 -248
- package/dist/{pi-embedded-helpers-BDI11Fqj.js → pi-embedded-helpers-BgRcgoC9.js} +5 -5
- package/dist/{pi-embedded-helpers-CeNTB0sV.js → pi-embedded-helpers-BgdB5kvy.js} +1 -1
- package/dist/{pi-embedded-helpers-cgZRM5cz.js → pi-embedded-helpers-DA4liAIZ.js} +1 -1
- package/dist/{pi-embedded-helpers-Bdac0DIf.js → pi-embedded-helpers-Dij3O6ox.js} +5 -5
- package/dist/{pi-tools.policy-BYklnTNc.js → pi-tools.policy-DRWb_Cax.js} +2 -2
- package/dist/{pi-tools.policy-B4NDL7r-.js → pi-tools.policy-DxNwL7Dl.js} +2 -2
- package/dist/{plugin-registry-CzWOGG0k.js → plugin-registry-BzIbwU3K.js} +2 -2
- package/dist/{plugin-registry-29yLAS46.js → plugin-registry-D3TUplW8.js} +2 -2
- package/dist/plugin-sdk/agents/pi-embedded-runner/long-task-prompt.d.ts +5 -0
- package/dist/plugin-sdk/agents/session-empty-prune.d.ts +37 -0
- package/dist/plugin-sdk/agents/session-transcript-repair.d.ts +8 -0
- package/dist/plugin-sdk/{audio-preflight-DSEypXnx.js → audio-preflight-BacDFPyc.js} +5 -5
- package/dist/plugin-sdk/{channel-web-DwLIjUen.js → channel-web-B6m8UOCl.js} +7 -7
- package/dist/plugin-sdk/{chrome-DC-la42T.js → chrome-BMimuhgP.js} +1 -1
- package/dist/plugin-sdk/config/model-profiles.d.ts +7 -0
- package/dist/plugin-sdk/config/zod-schema.core.d.ts +2 -0
- package/dist/plugin-sdk/config/zod-schema.d.ts +1 -0
- package/dist/plugin-sdk/{config-DgwyZd2S.js → config-DdA6JiyD.js} +6 -1
- package/dist/plugin-sdk/{deliver-7pgLdSpM.js → deliver-Bxa1-mj5.js} +2 -2
- package/dist/plugin-sdk/{image-CqMZSk6f.js → image-aq-JAobP.js} +2 -2
- package/dist/plugin-sdk/index.js +17 -17
- package/dist/plugin-sdk/{login-DJzS9QT2.js → login-CHgiUvI_.js} +2 -2
- package/dist/plugin-sdk/{login-qr-DziBjQY5.js → login-qr-D5vJo1fy.js} +2 -2
- package/dist/plugin-sdk/{outbound-DmsEc64Z.js → outbound-CD38Hxn9.js} +1 -1
- package/dist/plugin-sdk/{pi-embedded-helpers-C33OSgwG.js → pi-embedded-helpers-BPvzgLtj.js} +5 -5
- package/dist/plugin-sdk/{pw-ai-MIepjtIO.js → pw-ai-fdBOQzz5.js} +2 -2
- package/dist/plugin-sdk/{replies-Bw1Amxop.js → replies-CW_-4klO.js} +1 -1
- package/dist/plugin-sdk/{reply-BxYNpQRu.js → reply-CGoJQT_s.js} +415 -248
- package/dist/plugin-sdk/{runner-Bh4NdzRK.js → runner-BQJ7x06O.js} +2 -2
- package/dist/plugin-sdk/{send-CENVp2ol.js → send-C4t6h9-o.js} +1 -1
- package/dist/plugin-sdk/{send-Bf62p_ul.js → send-Cz_FQ8Ao.js} +1 -1
- package/dist/plugin-sdk/{send-D5_J2DiV.js → send-DG6c7BpZ.js} +1 -1
- package/dist/plugin-sdk/{send-P1G7c4FN.js → send-HKy51Hz_.js} +1 -1
- package/dist/plugin-sdk/{send-Ddy4p4LW.js → send-Xy1L54q4.js} +1 -1
- package/dist/plugin-sdk/{session-Z4-R_Top.js → session-BUzIlHr9.js} +1 -1
- package/dist/plugin-sdk/{web-DiNM_c37.js → web-CJjSOTnI.js} +17 -17
- package/dist/plugin-sdk/{whatsapp-actions-Bg6DfWkN.js → whatsapp-actions-CZLagx0h.js} +2 -2
- package/dist/{plugins-cli-DZ6arND4.js → plugins-cli-BD1Jb2Ml.js} +27 -27
- package/dist/{plugins-cli-D4bGKnOF.js → plugins-cli-DFyRjAtJ.js} +26 -26
- package/dist/{program-context-iI9_njQv.js → program-context-45vPEw2G.js} +38 -38
- package/dist/{program-DE9DbHYV.js → program-qGm2M9PG.js} +33 -33
- package/dist/{prompt-select-styled-SHa0ZJL9.js → prompt-select-styled-DRIS9jSv.js} +14 -14
- package/dist/{prompt-select-styled-D0ELdY0x.js → prompt-select-styled-DRraJGwA.js} +14 -14
- package/dist/{provider-auth-helpers-BI2k0jlH.js → provider-auth-helpers-BNOWsjW5.js} +2 -2
- package/dist/{provider-auth-helpers-EMBbfX3w.js → provider-auth-helpers-BREVjR7R.js} +2 -2
- package/dist/{push-apns-DcbeaY5y.js → push-apns-CObVeJLC.js} +1 -1
- package/dist/{push-apns-DyeCPAvI.js → push-apns-CYC70eKy.js} +1 -1
- package/dist/{pw-ai-C_7yEh9n.js → pw-ai--LDjnyuN.js} +2 -2
- package/dist/{pw-ai-LB6wkt8h.js → pw-ai-BCSFVeD5.js} +2 -2
- package/dist/{pw-ai-sY1BRRsq.js → pw-ai-BO5cSmwD.js} +2 -2
- package/dist/{pw-ai-C2z2aMEp.js → pw-ai-DQohWnzT.js} +2 -2
- package/dist/{qr-cli-B-NWpxfN.js → qr-cli-CejYwqsj.js} +1 -1
- package/dist/{qr-cli-TaubpmtG.js → qr-cli-XttU2KOR.js} +1 -1
- package/dist/{register.agent-D-1w3KOa.js → register.agent-DRrHvYcz.js} +32 -32
- package/dist/{register.agent-D4o7bi_u.js → register.agent-DzzY8jON.js} +34 -34
- package/dist/{register.configure-BYCEJg1c.js → register.configure-BxtTIFTa.js} +36 -36
- package/dist/{register.configure-BIczNshG.js → register.configure-DlXkwkNR.js} +37 -37
- package/dist/{register.maintenance-Syt4oSuk.js → register.maintenance-CXLXouZV.js} +34 -34
- package/dist/{register.maintenance-k6z5GVrO.js → register.maintenance-LEf8Q_5p.js} +36 -36
- package/dist/{register.message-Bi7QLNId.js → register.message-C4ifV9vG.js} +26 -26
- package/dist/{register.message-BJeeT9xQ.js → register.message-DsPa-xHV.js} +27 -27
- package/dist/{register.onboard-DDbxMjmt.js → register.onboard-CrY4PxLP.js} +32 -32
- package/dist/{register.onboard-B_FeHkL-.js → register.onboard-DLRPa_4B.js} +33 -33
- package/dist/{register.setup-CPi3uss4.js → register.setup-By37g1vN.js} +33 -33
- package/dist/{register.setup-Cpl67hQ6.js → register.setup-fBG_dJfi.js} +32 -32
- package/dist/{register.status-health-sessions-DsY8YuEo.js → register.status-health-sessions-Ckw86-gn.js} +29 -29
- package/dist/{register.status-health-sessions-CHPN3CNt.js → register.status-health-sessions-DG7KGnD0.js} +31 -31
- package/dist/{register.subclis-D5JRuk93.js → register.subclis-C_xKLugM.js} +28 -28
- package/dist/{replies-cMkt1-fW.js → replies-BMqtgBhh.js} +1 -1
- package/dist/{replies-CYuZN9PJ.js → replies-Bo49QlAg.js} +1 -1
- package/dist/{replies-C2sQt_cX.js → replies-CBS0567j.js} +1 -1
- package/dist/{replies-zOTZyd6v.js → replies-CfyMcfoY.js} +1 -1
- package/dist/{reply-D55iMWI5.js → reply-DyjXROKp.js} +426 -259
- package/dist/{routes-ClhmdN8I.js → routes-BAZTZNuQ.js} +3 -3
- package/dist/{routes-DRkO6iuR.js → routes-CMvgBDOg.js} +3 -3
- package/dist/{rpc-DvA01fCj.js → rpc-Co5PQ3IJ.js} +1 -1
- package/dist/{rpc-UsQvUYIP.js → rpc-D0FiEinj.js} +1 -1
- package/dist/{run-main-BWoPODyq.js → run-main-Cg3ecTbO.js} +44 -44
- package/dist/{runner-CtF7EgsD.js → runner-Ct0suQrd.js} +2 -2
- package/dist/{runner-D3aZ5p3H.js → runner-DRv0uCK_.js} +3 -3
- package/dist/{runner-z_tSZGY5.js → runner-Dd2bbNGV.js} +3 -3
- package/dist/{runner-_7xOqQDP.js → runner-cJ3m-bxK.js} +2 -2
- package/dist/{sandbox-rjqN2SHD.js → sandbox-B6N8cV4d.js} +5 -5
- package/dist/{sandbox-DrIHYiE6.js → sandbox-DY75ZyJD.js} +5 -5
- package/dist/{sandbox-cli-QpZpJ6Hq.js → sandbox-cli-BDM_QM_f.js} +6 -6
- package/dist/{sandbox-cli-BiiThMpq.js → sandbox-cli-DwzaNjIJ.js} +6 -6
- package/dist/{security-cli-DxNPZzVB.js → security-cli-CG1uSlRK.js} +9 -9
- package/dist/{security-cli-s_AbIm-b.js → security-cli-D5BWzqEJ.js} +9 -9
- package/dist/{send-C1ptDV-M.js → send-9SapUCg7.js} +1 -1
- package/dist/{send-DV8npIWi.js → send-B3RdXvjC.js} +1 -1
- package/dist/{send-CVSO0ZdD.js → send-B7HhiTdx.js} +1 -1
- package/dist/{send-DryK_KEK.js → send-B986asZ7.js} +1 -1
- package/dist/{send-DNJAa7Q_.js → send-B9EinkUl.js} +1 -1
- package/dist/{send-De1p8sZA.js → send-BNnv8GtF.js} +1 -1
- package/dist/{send-B9pwTYyE.js → send-BhJZ16uV.js} +1 -1
- package/dist/{send-B62vYwo8.js → send-Bm4ULEzh.js} +1 -1
- package/dist/{send-BJNUY-9E.js → send-BzKHnf3b.js} +1 -1
- package/dist/{send-C6jy9sVB.js → send-CC9V8V81.js} +1 -1
- package/dist/{send-DK-Jat_i.js → send-CQVnyJyF.js} +1 -1
- package/dist/{send-Dx7S4jGp.js → send-CZemAajS.js} +1 -1
- package/dist/{send-BTXR3fPR.js → send-DI9Vhnmw.js} +1 -1
- package/dist/{send-BvCit35j.js → send-DLWaX69q.js} +1 -1
- package/dist/{send-qSITFlVc.js → send-DSnJ503J.js} +1 -1
- package/dist/{send-B7MtdeLq.js → send-DVm0du0_.js} +1 -1
- package/dist/{send-D8DhbDGm.js → send-DaBsat3L.js} +1 -1
- package/dist/{send-iIqnmxNc.js → send-DdLJtOjk.js} +1 -1
- package/dist/{send-4MJyhXk5.js → send-DlQtxlG_.js} +1 -1
- package/dist/{send-DiYc3Z2y.js → send-RfIXG6-I.js} +1 -1
- package/dist/{server-context-C3fvq6h5.js → server-context-CCBZN8a0.js} +5 -5
- package/dist/{server-context-CtYkBX0P.js → server-context-DK-T2rBR.js} +5 -5
- package/dist/{server-methods-DY-jApXo.js → server-methods-CW8eFTGD.js} +15 -15
- package/dist/{server-methods-C4oRmj--.js → server-methods-CWcLut3F.js} +16 -16
- package/dist/{server-node-events--9s3cGoR.js → server-node-events-C2h9OPo7.js} +27 -27
- package/dist/{server-node-events-Bw6yFsJP.js → server-node-events-CDB0u8PP.js} +26 -26
- package/dist/{session-XfYb9nxX.js → session-C1cn-CxQ.js} +1 -1
- package/dist/{session-BmC1G2OF.js → session-CUeezgP1.js} +1 -1
- package/dist/{session-3P44Lx9Z.js → session-DsJGtM7g.js} +1 -1
- package/dist/{session-utils-DlQSI-Te.js → session-utils-B8Fif925.js} +3 -3
- package/dist/{session-BUTPdQjj.js → session-v_9AVJhH.js} +1 -1
- package/dist/{sessions-Dxc5UV-H.js → sessions-Cfa6JEB3.js} +1 -1
- package/dist/{sessions-9tWmT3oM.js → sessions-Cpgnq0pA.js} +1 -1
- package/dist/{sessions-BL_hivz0.js → sessions-DfbhRBHR.js} +3 -3
- package/dist/{shared-DEvSdt0I.js → shared-73T9fyuK.js} +1 -1
- package/dist/{shared-DwzDlNQn.js → shared-DdxPzyOH.js} +1 -1
- package/dist/{skills-cli-BHJAAvDv.js → skills-cli-DXkx4vNV.js} +1 -1
- package/dist/{skills-cli-CES7tX87.js → skills-cli-uEA9KXOO.js} +1 -1
- package/dist/{status-DxqgzaIz.js → status-B2Qt-5kL.js} +2 -2
- package/dist/{status-CPQrmN1p.js → status-CMx3GAax.js} +2 -2
- package/dist/{status-DZHTCKq_.js → status-DfPfMVNZ.js} +10 -10
- package/dist/{status-CfCqG5a6.js → status-ZPW5EACm.js} +9 -9
- package/dist/{status.update-BhJp4NkS.js → status.update-C2GN8s9C.js} +1 -1
- package/dist/{status.update-DqXGFKta.js → status.update-CG0ciGaf.js} +1 -1
- package/dist/{subagent-registry-BGKDFTRA.js → subagent-registry-DQHg3jUV.js} +427 -260
- package/dist/{system-cli-BrZGQcZl.js → system-cli-DFZNGx0i.js} +3 -3
- package/dist/{system-cli-CjgIC8rh.js → system-cli-Z7uzO8qd.js} +3 -3
- package/dist/{systemd-hints-B8AHs8Nn.js → systemd-hints-DT6cDIM2.js} +1 -1
- package/dist/{systemd-hints-DUXXob94.js → systemd-hints-xYZbFny_.js} +1 -1
- package/dist/{tui-BktCSga7.js → tui-DjPsMdL6.js} +4 -4
- package/dist/{tui-CAzxJ9EP.js → tui-DrATGNms.js} +4 -4
- package/dist/{tui-cli-AXeYpVcb.js → tui-cli-D19-MCXt.js} +9 -9
- package/dist/{tui-cli-Bz3RdHqe.js → tui-cli-pWD_NrUR.js} +9 -9
- package/dist/{unified-runner-BhGMOS0G.js → unified-runner-DvOFqcrw.js} +200 -33
- package/dist/{update-cli-n_Tkv8N_.js → update-cli-DBasZeVl.js} +39 -39
- package/dist/{update-cli-C8EpxduY.js → update-cli-Df9rh_aN.js} +37 -37
- package/dist/{update-runner-Tk50GxTW.js → update-runner-BRKFzAwV.js} +1 -1
- package/dist/{update-runner-CowTMnrt.js → update-runner-DVa6cMqp.js} +1 -1
- package/dist/{web-Cz8o-Hc9.js → web-CGh5tw__.js} +16 -16
- package/dist/{web-CMLJq-WC.js → web-Cw3bFAiP.js} +16 -16
- package/dist/{web-BIpIz8vD.js → web-Dd05xbUr.js} +29 -29
- package/dist/{web-ONk39lyq.js → web-KiuDkd0x.js} +29 -29
- package/dist/{webhooks-cli-v0rfBwU8.js → webhooks-cli-BRxe4uCg.js} +1 -1
- package/dist/{webhooks-cli-Da8YhVu4.js → webhooks-cli-CsRZl0_H.js} +1 -1
- package/dist/{whatsapp-actions-Cz2qhCrD.js → whatsapp-actions-7YbV2-Fv.js} +2 -2
- package/dist/{whatsapp-actions-Ba3KBpGu.js → whatsapp-actions-BylecqEa.js} +2 -2
- package/dist/{whatsapp-actions-AEeCOVko.js → whatsapp-actions-ChO_shrk.js} +2 -2
- package/dist/{whatsapp-actions-BPn8FtPC.js → whatsapp-actions-mBarFBeS.js} +2 -2
- package/dist/{with-timeout-487M8IgO.js → with-timeout-Cgi3TwWN.js} +1 -1
- package/dist/{with-timeout-BU7MJQDD.js → with-timeout-CtVdu_1U.js} +1 -1
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/learning-loop/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +12 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +12 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +12 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/outlook/package.json +1 -1
- package/extensions/pipeline/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +12 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +12 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +12 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +12 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/skills/long-task/SKILL.md +57 -0
- package/skills/long-task/scripts/detach-task.sh +58 -0
|
@@ -14,29 +14,29 @@ import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discov
|
|
|
14
14
|
import { r as isPathInsideWithRealpath } from "./scan-paths-ppKrtZ9U.js";
|
|
15
15
|
import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-hAdgFdrv.js";
|
|
16
16
|
import { a as safeStatSync, c as applyTestPluginDefaults, d as resolveEnableState, f as resolveMemorySlotDecision, h as isDangerousHostEnvVarName, i as isPathInside, n as loadPluginManifestRegistry, r as discoverSymiPlugins, u as normalizePluginsConfig } from "./manifest-registry-Czr39pxG.js";
|
|
17
|
-
import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-
|
|
17
|
+
import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-BNTB6qj8.js";
|
|
18
18
|
import { Nt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-T3qcxXru.js";
|
|
19
|
-
import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-
|
|
19
|
+
import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-DKi-hnaF.js";
|
|
20
20
|
import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, d as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, p as GATEWAY_CLIENT_IDS, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-C9dERklz.js";
|
|
21
21
|
import { i as normalizeInputProvenance, n as applyInputProvenanceToUserMessage, r as hasInterSessionUserProvenance } from "./input-provenance-D0lNkCf6.js";
|
|
22
|
-
import { A as DEFAULT_RESET_TRIGGERS, B as resolveGroupSessionKey, D as resolveSessionResetPolicy, E as resolveChannelResetConfig, F as resolveMainSessionKey, G as deliveryContextKey, J as normalizeSessionDeliveryFields, K as mergeDeliveryContext, L as deriveSessionMetaPatch, O as resolveSessionResetType, P as resolveExplicitAgentSessionKey, T as evaluateSessionFreshness, U as resolveSessionLockMaxHoldFromTimeout, V as acquireSessionWriteLock, W as deliveryContextFromSession, Y as normalizeAccountId$3, _ as capArrayByJsonBytes, a as resolveAndPersistSessionFile, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as archiveSessionTranscripts, j as resolveFreshSessionTotalTokens, k as resolveThreadFlag, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as normalizeDeliveryContext, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, w as resolveSessionKey } from "./sessions-
|
|
22
|
+
import { A as DEFAULT_RESET_TRIGGERS, B as resolveGroupSessionKey, D as resolveSessionResetPolicy, E as resolveChannelResetConfig, F as resolveMainSessionKey, G as deliveryContextKey, J as normalizeSessionDeliveryFields, K as mergeDeliveryContext, L as deriveSessionMetaPatch, O as resolveSessionResetType, P as resolveExplicitAgentSessionKey, T as evaluateSessionFreshness, U as resolveSessionLockMaxHoldFromTimeout, V as acquireSessionWriteLock, W as deliveryContextFromSession, Y as normalizeAccountId$3, _ as capArrayByJsonBytes, a as resolveAndPersistSessionFile, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as archiveSessionTranscripts, j as resolveFreshSessionTotalTokens, k as resolveThreadFlag, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as normalizeDeliveryContext, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, w as resolveSessionKey } from "./sessions-Cfa6JEB3.js";
|
|
23
23
|
import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-Csntmwwn.js";
|
|
24
24
|
import { _ as listEnabledDiscordAccounts, a as isWhatsAppGroupJid, c as listEnabledTelegramAccounts, d as resolveTelegramToken, f as resolveSlackAccount, g as createDiscordActionGate, h as resolveSlackBotToken, l as listTelegramAccountIds, m as resolveSlackAppToken, n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId$1, s as createTelegramActionGate, t as getChannelPlugin, u as resolveTelegramAccount, v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-CwSlLxM8.js";
|
|
25
25
|
import { a as logWebSelfId, i as getWebAuthAgeMs, m as webAuthExists, n as resolveWhatsAppAccount, o as logoutWeb, u as readWebSelfId } from "./accounts-D9ITgITj.js";
|
|
26
26
|
import { t as normalizeChatType } from "./chat-type-CeFzWU-6.js";
|
|
27
|
-
import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-
|
|
28
|
-
import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-
|
|
29
|
-
import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-
|
|
30
|
-
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-
|
|
27
|
+
import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-B7HhiTdx.js";
|
|
28
|
+
import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-CC9V8V81.js";
|
|
29
|
+
import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-Cgi3TwWN.js";
|
|
30
|
+
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-Bu0iWeja.js";
|
|
31
31
|
import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-Ci8Xsc_Y.js";
|
|
32
32
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CIjIGxEE.js";
|
|
33
33
|
import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-D1eLj5t8.js";
|
|
34
|
-
import { A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as parseTelegramTarget, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-
|
|
34
|
+
import { A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as parseTelegramTarget, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-DlQtxlG_.js";
|
|
35
35
|
import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-CUkaZz2F.js";
|
|
36
|
-
import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-
|
|
37
|
-
import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-
|
|
38
|
-
import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-
|
|
39
|
-
import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-
|
|
36
|
+
import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-DA4liAIZ.js";
|
|
37
|
+
import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-DY75ZyJD.js";
|
|
38
|
+
import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-DAw-AWNi.js";
|
|
39
|
+
import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-DK-T2rBR.js";
|
|
40
40
|
import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-Ba_ROWsq.js";
|
|
41
41
|
import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-OWKu4tXF.js";
|
|
42
42
|
import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-Ixuyn7h8.js";
|
|
@@ -48,9 +48,9 @@ import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveS
|
|
|
48
48
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-D5O01TlD.js";
|
|
49
49
|
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-CVLISeRT.js";
|
|
50
50
|
import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels, u as resolveResponseUsageMode } from "./thinking-8sKPnzpp.js";
|
|
51
|
-
import { t as ensureSymiModelsJson } from "./models-config-
|
|
51
|
+
import { t as ensureSymiModelsJson } from "./models-config-Be8DRFkB.js";
|
|
52
52
|
import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-BUN71nd5.js";
|
|
53
|
-
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-
|
|
53
|
+
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-Btzr8gfD.js";
|
|
54
54
|
import { i as resolveMemorySearchConfig } from "./manager-Vb2F7vQq.js";
|
|
55
55
|
import { g as runTasksWithConcurrency } from "./sqlite-CQGamAhm.js";
|
|
56
56
|
import { n as retryAsync } from "./retry-C4Q_VPOo.js";
|
|
@@ -63,13 +63,13 @@ import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMedia
|
|
|
63
63
|
import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-D-flMHhr.js";
|
|
64
64
|
import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-CkrIpKCc.js";
|
|
65
65
|
import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-D1K_inhv.js";
|
|
66
|
-
import { _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, y as stripReasoningTagsFromText } from "./image-
|
|
66
|
+
import { _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, y as stripReasoningTagsFromText } from "./image-C3wYkWyK.js";
|
|
67
67
|
import { n as resolveToolDisplay } from "./tool-display-CXwOC-qw.js";
|
|
68
68
|
import { n as formatTimeAgo } from "./format-relative-DX-rh76l.js";
|
|
69
69
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-72dOKfLG.js";
|
|
70
|
-
import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-
|
|
71
|
-
import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-
|
|
72
|
-
import { a as loadCombinedSessionStoreForGateway, u as lookupContextTokens } from "./session-utils-
|
|
70
|
+
import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-Dd2bbNGV.js";
|
|
71
|
+
import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-DNvgFPZn.js";
|
|
72
|
+
import { a as loadCombinedSessionStoreForGateway, u as lookupContextTokens } from "./session-utils-B8Fif925.js";
|
|
73
73
|
import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-C8BcwE33.js";
|
|
74
74
|
import { i as readChannelAllowFromStore, l as listPairingChannels, o as removeChannelAllowFromStoreEntry, s as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-vpO8vXVN.js";
|
|
75
75
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-BhFkwlZW.js";
|
|
@@ -83,19 +83,19 @@ import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChan
|
|
|
83
83
|
import { n as normalizePollInput } from "./polls-DXeUmcgz.js";
|
|
84
84
|
import { t as convertMarkdownTables } from "./tables-CXWwq-Md.js";
|
|
85
85
|
import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-CPeVoSXJ.js";
|
|
86
|
-
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-
|
|
86
|
+
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-rbSHSlcd.js";
|
|
87
87
|
import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-CQar2eKe.js";
|
|
88
88
|
import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-BzfEFyPn.js";
|
|
89
|
-
import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-
|
|
90
|
-
import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-
|
|
89
|
+
import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-BhJZ16uV.js";
|
|
90
|
+
import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-DSnJ503J.js";
|
|
91
91
|
import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-CjnIuTqX.js";
|
|
92
92
|
import { t as parseTimeoutMs } from "./parse-timeout-zNJBr1fY.js";
|
|
93
93
|
import { t as makeProxyFetch } from "./proxy-DL3MD6-P.js";
|
|
94
|
-
import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-
|
|
95
|
-
import { r as detectBinary } from "./onboard-helpers-
|
|
94
|
+
import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-Bo49QlAg.js";
|
|
95
|
+
import { r as detectBinary } from "./onboard-helpers-BBtPmJEe.js";
|
|
96
96
|
import { t as resolvePairingIdLabel } from "./pairing-labels-D1HDboV2.js";
|
|
97
97
|
import { t as getActiveWebListener } from "./active-listener-De1JhR4W.js";
|
|
98
|
-
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-
|
|
98
|
+
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-DxNwL7Dl.js";
|
|
99
99
|
import { createRequire } from "node:module";
|
|
100
100
|
import { execFileSync, spawn, spawnSync } from "node:child_process";
|
|
101
101
|
import os, { homedir } from "node:os";
|
|
@@ -20374,7 +20374,7 @@ async function routeReply(params) {
|
|
|
20374
20374
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
20375
20375
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
20376
20376
|
try {
|
|
20377
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
20377
|
+
const { deliverOutboundPayloads } = await import("./deliver-Bu0iWeja.js").then((n) => n.n);
|
|
20378
20378
|
return {
|
|
20379
20379
|
ok: true,
|
|
20380
20380
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -32418,7 +32418,8 @@ const BUILTIN_PROFILES = [
|
|
|
32418
32418
|
top_p: .95,
|
|
32419
32419
|
top_k: 20,
|
|
32420
32420
|
max_tokens: 16384,
|
|
32421
|
-
presence_penalty: 1.5
|
|
32421
|
+
presence_penalty: 1.5,
|
|
32422
|
+
chatTemplateKwargs: { preserve_thinking: true }
|
|
32422
32423
|
},
|
|
32423
32424
|
streaming: {
|
|
32424
32425
|
deltaThrottleMs: 50,
|
|
@@ -33152,6 +33153,8 @@ function createModelAwareStreamFn(opts) {
|
|
|
33152
33153
|
if (typeof mergedParams.repeat_penalty === "number") injections.repeat_penalty = mergedParams.repeat_penalty;
|
|
33153
33154
|
if (typeof mergedParams.presence_penalty === "number") injections.presence_penalty = mergedParams.presence_penalty;
|
|
33154
33155
|
if (typeof mergedParams.frequency_penalty === "number") injections.frequency_penalty = mergedParams.frequency_penalty;
|
|
33156
|
+
const chatTemplateKwargs = mergedParams.chatTemplateKwargs ?? mergedParams.chat_template_kwargs;
|
|
33157
|
+
if (chatTemplateKwargs && typeof chatTemplateKwargs === "object" && !Array.isArray(chatTemplateKwargs)) injections.chat_template_kwargs = chatTemplateKwargs;
|
|
33155
33158
|
const isVllm = isVllmProvider(opts.provider, opts.modelId, opts.config);
|
|
33156
33159
|
const isOpenRouter = opts.provider === "openrouter";
|
|
33157
33160
|
const extraHeaders = {};
|
|
@@ -33982,7 +33985,11 @@ function handleMessageUpdate(ctx, evt) {
|
|
|
33982
33985
|
emitAgentEvent({
|
|
33983
33986
|
runId: ctx.params.runId,
|
|
33984
33987
|
stream: "thinking",
|
|
33985
|
-
data: {
|
|
33988
|
+
data: {
|
|
33989
|
+
phase: evtType,
|
|
33990
|
+
delta: thinkingDelta,
|
|
33991
|
+
content: thinkingContent
|
|
33992
|
+
}
|
|
33986
33993
|
});
|
|
33987
33994
|
if (ctx.state.streamReasoning) {
|
|
33988
33995
|
const partialThinking = extractAssistantThinking(msg);
|
|
@@ -36024,6 +36031,338 @@ Use the message tool with buttons:
|
|
|
36024
36031
|
[{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
|
|
36025
36032
|
</plan_mode>`;
|
|
36026
36033
|
|
|
36034
|
+
//#endregion
|
|
36035
|
+
//#region src/agents/session-transcript-repair.ts
|
|
36036
|
+
function isToolCallBlock(block) {
|
|
36037
|
+
if (!block || typeof block !== "object") return false;
|
|
36038
|
+
const type = block.type;
|
|
36039
|
+
return typeof type === "string" && (type === "toolCall" || type === "toolUse" || type === "functionCall");
|
|
36040
|
+
}
|
|
36041
|
+
function hasToolCallInput(block) {
|
|
36042
|
+
const hasInput = "input" in block ? block.input !== void 0 && block.input !== null : false;
|
|
36043
|
+
const hasArguments = "arguments" in block ? block.arguments !== void 0 && block.arguments !== null : false;
|
|
36044
|
+
return hasInput || hasArguments;
|
|
36045
|
+
}
|
|
36046
|
+
function hasNonEmptyStringField(value) {
|
|
36047
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
36048
|
+
}
|
|
36049
|
+
function hasToolCallId(block) {
|
|
36050
|
+
return hasNonEmptyStringField(block.id);
|
|
36051
|
+
}
|
|
36052
|
+
function hasToolCallName(block) {
|
|
36053
|
+
return hasNonEmptyStringField(block.name);
|
|
36054
|
+
}
|
|
36055
|
+
function makeMissingToolResult(params) {
|
|
36056
|
+
return {
|
|
36057
|
+
role: "toolResult",
|
|
36058
|
+
toolCallId: params.toolCallId,
|
|
36059
|
+
toolName: params.toolName ?? "unknown",
|
|
36060
|
+
content: [{
|
|
36061
|
+
type: "text",
|
|
36062
|
+
text: "[symi] missing tool result in session history; inserted synthetic error result for transcript repair."
|
|
36063
|
+
}],
|
|
36064
|
+
isError: true,
|
|
36065
|
+
timestamp: Date.now()
|
|
36066
|
+
};
|
|
36067
|
+
}
|
|
36068
|
+
/**
|
|
36069
|
+
* True when an assistant message has no tool calls and only empty/whitespace
|
|
36070
|
+
* text or thinking blocks. This happens when a stream fails before any
|
|
36071
|
+
* content arrives — the blank entry is otherwise persisted and produces
|
|
36072
|
+
* consecutive same-role messages, which strict providers (vLLM) reject with
|
|
36073
|
+
* "role must alternate" errors that poison the session for every future turn.
|
|
36074
|
+
*/
|
|
36075
|
+
function isEmptyAssistantMessage(message) {
|
|
36076
|
+
if (!message || typeof message !== "object") return false;
|
|
36077
|
+
const msg = message;
|
|
36078
|
+
if (msg.role !== "assistant") return false;
|
|
36079
|
+
if (!Array.isArray(msg.content) || msg.content.length === 0) return true;
|
|
36080
|
+
for (const block of msg.content) {
|
|
36081
|
+
if (!block || typeof block !== "object") continue;
|
|
36082
|
+
const type = block.type;
|
|
36083
|
+
if (type === "toolCall" || type === "toolUse" || type === "functionCall") return false;
|
|
36084
|
+
if (type === "text") {
|
|
36085
|
+
const text = block.text;
|
|
36086
|
+
if (typeof text === "string" && text.trim().length > 0) return false;
|
|
36087
|
+
continue;
|
|
36088
|
+
}
|
|
36089
|
+
if (type === "thinking") {
|
|
36090
|
+
const thinking = block.thinking;
|
|
36091
|
+
if (typeof thinking === "string" && thinking.trim().length > 0) return false;
|
|
36092
|
+
continue;
|
|
36093
|
+
}
|
|
36094
|
+
return false;
|
|
36095
|
+
}
|
|
36096
|
+
return true;
|
|
36097
|
+
}
|
|
36098
|
+
function stripToolResultDetails(messages) {
|
|
36099
|
+
let touched = false;
|
|
36100
|
+
const out = [];
|
|
36101
|
+
for (const msg of messages) {
|
|
36102
|
+
if (!msg || typeof msg !== "object" || msg.role !== "toolResult") {
|
|
36103
|
+
out.push(msg);
|
|
36104
|
+
continue;
|
|
36105
|
+
}
|
|
36106
|
+
if (!("details" in msg)) {
|
|
36107
|
+
out.push(msg);
|
|
36108
|
+
continue;
|
|
36109
|
+
}
|
|
36110
|
+
const { details: _details, ...rest } = msg;
|
|
36111
|
+
touched = true;
|
|
36112
|
+
out.push(rest);
|
|
36113
|
+
}
|
|
36114
|
+
return touched ? out : messages;
|
|
36115
|
+
}
|
|
36116
|
+
function repairToolCallInputs(messages) {
|
|
36117
|
+
let droppedToolCalls = 0;
|
|
36118
|
+
let droppedAssistantMessages = 0;
|
|
36119
|
+
let changed = false;
|
|
36120
|
+
const out = [];
|
|
36121
|
+
for (const msg of messages) {
|
|
36122
|
+
if (!msg || typeof msg !== "object") {
|
|
36123
|
+
out.push(msg);
|
|
36124
|
+
continue;
|
|
36125
|
+
}
|
|
36126
|
+
if (msg.role !== "assistant" || !Array.isArray(msg.content)) {
|
|
36127
|
+
out.push(msg);
|
|
36128
|
+
continue;
|
|
36129
|
+
}
|
|
36130
|
+
const nextContent = [];
|
|
36131
|
+
let droppedInMessage = 0;
|
|
36132
|
+
for (const block of msg.content) {
|
|
36133
|
+
if (isToolCallBlock(block) && (!hasToolCallInput(block) || !hasToolCallId(block) || !hasToolCallName(block))) {
|
|
36134
|
+
droppedToolCalls += 1;
|
|
36135
|
+
droppedInMessage += 1;
|
|
36136
|
+
changed = true;
|
|
36137
|
+
continue;
|
|
36138
|
+
}
|
|
36139
|
+
nextContent.push(block);
|
|
36140
|
+
}
|
|
36141
|
+
if (droppedInMessage > 0) {
|
|
36142
|
+
if (nextContent.length === 0) {
|
|
36143
|
+
droppedAssistantMessages += 1;
|
|
36144
|
+
changed = true;
|
|
36145
|
+
continue;
|
|
36146
|
+
}
|
|
36147
|
+
out.push({
|
|
36148
|
+
...msg,
|
|
36149
|
+
content: nextContent
|
|
36150
|
+
});
|
|
36151
|
+
continue;
|
|
36152
|
+
}
|
|
36153
|
+
out.push(msg);
|
|
36154
|
+
}
|
|
36155
|
+
return {
|
|
36156
|
+
messages: changed ? out : messages,
|
|
36157
|
+
droppedToolCalls,
|
|
36158
|
+
droppedAssistantMessages
|
|
36159
|
+
};
|
|
36160
|
+
}
|
|
36161
|
+
function sanitizeToolCallInputs(messages) {
|
|
36162
|
+
return repairToolCallInputs(messages).messages;
|
|
36163
|
+
}
|
|
36164
|
+
function sanitizeToolUseResultPairing(messages) {
|
|
36165
|
+
return repairToolUseResultPairing(messages).messages;
|
|
36166
|
+
}
|
|
36167
|
+
function repairToolUseResultPairing(messages) {
|
|
36168
|
+
const out = [];
|
|
36169
|
+
const added = [];
|
|
36170
|
+
const seenToolResultIds = /* @__PURE__ */ new Set();
|
|
36171
|
+
let droppedDuplicateCount = 0;
|
|
36172
|
+
let droppedOrphanCount = 0;
|
|
36173
|
+
let moved = false;
|
|
36174
|
+
let changed = false;
|
|
36175
|
+
const pushToolResult = (msg) => {
|
|
36176
|
+
const id = extractToolResultId(msg);
|
|
36177
|
+
if (id && seenToolResultIds.has(id)) {
|
|
36178
|
+
droppedDuplicateCount += 1;
|
|
36179
|
+
changed = true;
|
|
36180
|
+
return;
|
|
36181
|
+
}
|
|
36182
|
+
if (id) seenToolResultIds.add(id);
|
|
36183
|
+
out.push(msg);
|
|
36184
|
+
};
|
|
36185
|
+
for (let i = 0; i < messages.length; i += 1) {
|
|
36186
|
+
const msg = messages[i];
|
|
36187
|
+
if (!msg || typeof msg !== "object") {
|
|
36188
|
+
out.push(msg);
|
|
36189
|
+
continue;
|
|
36190
|
+
}
|
|
36191
|
+
const role = msg.role;
|
|
36192
|
+
if (role !== "assistant") {
|
|
36193
|
+
if (role !== "toolResult") out.push(msg);
|
|
36194
|
+
else {
|
|
36195
|
+
droppedOrphanCount += 1;
|
|
36196
|
+
changed = true;
|
|
36197
|
+
}
|
|
36198
|
+
continue;
|
|
36199
|
+
}
|
|
36200
|
+
const assistant = msg;
|
|
36201
|
+
const stopReason = assistant.stopReason;
|
|
36202
|
+
if (stopReason === "error" || stopReason === "aborted") {
|
|
36203
|
+
out.push(msg);
|
|
36204
|
+
continue;
|
|
36205
|
+
}
|
|
36206
|
+
const toolCalls = extractToolCallsFromAssistant(assistant);
|
|
36207
|
+
if (toolCalls.length === 0) {
|
|
36208
|
+
out.push(msg);
|
|
36209
|
+
continue;
|
|
36210
|
+
}
|
|
36211
|
+
const toolCallIds = new Set(toolCalls.map((t) => t.id));
|
|
36212
|
+
const spanResultsById = /* @__PURE__ */ new Map();
|
|
36213
|
+
const remainder = [];
|
|
36214
|
+
let j = i + 1;
|
|
36215
|
+
for (; j < messages.length; j += 1) {
|
|
36216
|
+
const next = messages[j];
|
|
36217
|
+
if (!next || typeof next !== "object") {
|
|
36218
|
+
remainder.push(next);
|
|
36219
|
+
continue;
|
|
36220
|
+
}
|
|
36221
|
+
const nextRole = next.role;
|
|
36222
|
+
if (nextRole === "assistant") break;
|
|
36223
|
+
if (nextRole === "toolResult") {
|
|
36224
|
+
const toolResult = next;
|
|
36225
|
+
const id = extractToolResultId(toolResult);
|
|
36226
|
+
if (id && toolCallIds.has(id)) {
|
|
36227
|
+
if (seenToolResultIds.has(id)) {
|
|
36228
|
+
droppedDuplicateCount += 1;
|
|
36229
|
+
changed = true;
|
|
36230
|
+
continue;
|
|
36231
|
+
}
|
|
36232
|
+
if (!spanResultsById.has(id)) spanResultsById.set(id, toolResult);
|
|
36233
|
+
continue;
|
|
36234
|
+
}
|
|
36235
|
+
}
|
|
36236
|
+
if (nextRole !== "toolResult") remainder.push(next);
|
|
36237
|
+
else {
|
|
36238
|
+
droppedOrphanCount += 1;
|
|
36239
|
+
changed = true;
|
|
36240
|
+
}
|
|
36241
|
+
}
|
|
36242
|
+
out.push(msg);
|
|
36243
|
+
if (spanResultsById.size > 0 && remainder.length > 0) {
|
|
36244
|
+
moved = true;
|
|
36245
|
+
changed = true;
|
|
36246
|
+
}
|
|
36247
|
+
for (const call of toolCalls) {
|
|
36248
|
+
const existing = spanResultsById.get(call.id);
|
|
36249
|
+
if (existing) pushToolResult(existing);
|
|
36250
|
+
else {
|
|
36251
|
+
const missing = makeMissingToolResult({
|
|
36252
|
+
toolCallId: call.id,
|
|
36253
|
+
toolName: call.name
|
|
36254
|
+
});
|
|
36255
|
+
added.push(missing);
|
|
36256
|
+
changed = true;
|
|
36257
|
+
pushToolResult(missing);
|
|
36258
|
+
}
|
|
36259
|
+
}
|
|
36260
|
+
for (const rem of remainder) {
|
|
36261
|
+
if (!rem || typeof rem !== "object") {
|
|
36262
|
+
out.push(rem);
|
|
36263
|
+
continue;
|
|
36264
|
+
}
|
|
36265
|
+
out.push(rem);
|
|
36266
|
+
}
|
|
36267
|
+
i = j - 1;
|
|
36268
|
+
}
|
|
36269
|
+
const changedOrMoved = changed || moved;
|
|
36270
|
+
return {
|
|
36271
|
+
messages: changedOrMoved ? out : messages,
|
|
36272
|
+
added,
|
|
36273
|
+
droppedDuplicateCount,
|
|
36274
|
+
droppedOrphanCount,
|
|
36275
|
+
moved: changedOrMoved
|
|
36276
|
+
};
|
|
36277
|
+
}
|
|
36278
|
+
|
|
36279
|
+
//#endregion
|
|
36280
|
+
//#region src/agents/session-empty-prune.ts
|
|
36281
|
+
/**
|
|
36282
|
+
* Pre-run prune of empty assistant entries from a session JSONL file.
|
|
36283
|
+
*
|
|
36284
|
+
* When a stream fails before any content arrives, pi-coding-agent persists
|
|
36285
|
+
* an assistant message with an empty content array. If this repeats (e.g. a
|
|
36286
|
+
* misconfigured provider fails on every retry), the session ends up with
|
|
36287
|
+
* hundreds of consecutive empty assistant entries. vLLM and other strict
|
|
36288
|
+
* providers then reject the request with a role-ordering error — once the
|
|
36289
|
+
* session is in that state, every future turn fails until the user runs /new.
|
|
36290
|
+
*
|
|
36291
|
+
* This helper runs before SessionManager opens the file, reads the JSONL
|
|
36292
|
+
* line-by-line, filters out any line whose `message` is an empty-content
|
|
36293
|
+
* assistant, and rewrites the file atomically if anything was dropped. The
|
|
36294
|
+
* in-memory SessionManager state and the on-disk file stay consistent.
|
|
36295
|
+
*
|
|
36296
|
+
* The append guard in {@link ./session-tool-result-guard.ts} prevents new
|
|
36297
|
+
* empty entries from being written; this helper retroactively cleans files
|
|
36298
|
+
* that were poisoned before the guard existed.
|
|
36299
|
+
*
|
|
36300
|
+
* @module
|
|
36301
|
+
*/
|
|
36302
|
+
async function readSessionFile(sessionFile) {
|
|
36303
|
+
try {
|
|
36304
|
+
return await fs$1.readFile(sessionFile, "utf-8");
|
|
36305
|
+
} catch {
|
|
36306
|
+
return null;
|
|
36307
|
+
}
|
|
36308
|
+
}
|
|
36309
|
+
async function writeAtomically(sessionFile, text) {
|
|
36310
|
+
const dir = path.dirname(sessionFile);
|
|
36311
|
+
const base = path.basename(sessionFile);
|
|
36312
|
+
const tmp = path.join(dir, `.${base}.prune-${process.pid}-${Date.now()}.tmp`);
|
|
36313
|
+
await fs$1.writeFile(tmp, text, "utf-8");
|
|
36314
|
+
await fs$1.rename(tmp, sessionFile);
|
|
36315
|
+
}
|
|
36316
|
+
/**
|
|
36317
|
+
* Remove empty assistant JSONL entries from the session file.
|
|
36318
|
+
*
|
|
36319
|
+
* Parses each line; lines that don't parse are preserved verbatim so we don't
|
|
36320
|
+
* lose unknown data. Only lines that parse into a `{type:"message", message:
|
|
36321
|
+
* <empty-assistant>}` entry are dropped.
|
|
36322
|
+
*/
|
|
36323
|
+
async function pruneEmptyAssistantsFromSessionFile(sessionFile) {
|
|
36324
|
+
const raw = await readSessionFile(sessionFile);
|
|
36325
|
+
if (raw === null || raw.length === 0) return {
|
|
36326
|
+
rewrote: false,
|
|
36327
|
+
pruned: 0,
|
|
36328
|
+
unparsable: 0
|
|
36329
|
+
};
|
|
36330
|
+
const lines = raw.split("\n");
|
|
36331
|
+
const kept = [];
|
|
36332
|
+
let pruned = 0;
|
|
36333
|
+
let unparsable = 0;
|
|
36334
|
+
for (const line of lines) {
|
|
36335
|
+
if (line.length === 0) {
|
|
36336
|
+
kept.push(line);
|
|
36337
|
+
continue;
|
|
36338
|
+
}
|
|
36339
|
+
let parsed = null;
|
|
36340
|
+
try {
|
|
36341
|
+
parsed = JSON.parse(line);
|
|
36342
|
+
} catch {
|
|
36343
|
+
unparsable += 1;
|
|
36344
|
+
kept.push(line);
|
|
36345
|
+
continue;
|
|
36346
|
+
}
|
|
36347
|
+
if (parsed?.type === "message" && isEmptyAssistantMessage(parsed.message)) {
|
|
36348
|
+
pruned += 1;
|
|
36349
|
+
continue;
|
|
36350
|
+
}
|
|
36351
|
+
kept.push(line);
|
|
36352
|
+
}
|
|
36353
|
+
if (pruned === 0) return {
|
|
36354
|
+
rewrote: false,
|
|
36355
|
+
pruned: 0,
|
|
36356
|
+
unparsable
|
|
36357
|
+
};
|
|
36358
|
+
await writeAtomically(sessionFile, kept.join("\n"));
|
|
36359
|
+
return {
|
|
36360
|
+
rewrote: true,
|
|
36361
|
+
pruned,
|
|
36362
|
+
unparsable
|
|
36363
|
+
};
|
|
36364
|
+
}
|
|
36365
|
+
|
|
36027
36366
|
//#endregion
|
|
36028
36367
|
//#region src/agents/session-file-repair.ts
|
|
36029
36368
|
function isSessionHeader(entry) {
|
|
@@ -36297,221 +36636,6 @@ function sessionLikelyHasOversizedToolResults(params) {
|
|
|
36297
36636
|
return false;
|
|
36298
36637
|
}
|
|
36299
36638
|
|
|
36300
|
-
//#endregion
|
|
36301
|
-
//#region src/agents/session-transcript-repair.ts
|
|
36302
|
-
function isToolCallBlock(block) {
|
|
36303
|
-
if (!block || typeof block !== "object") return false;
|
|
36304
|
-
const type = block.type;
|
|
36305
|
-
return typeof type === "string" && (type === "toolCall" || type === "toolUse" || type === "functionCall");
|
|
36306
|
-
}
|
|
36307
|
-
function hasToolCallInput(block) {
|
|
36308
|
-
const hasInput = "input" in block ? block.input !== void 0 && block.input !== null : false;
|
|
36309
|
-
const hasArguments = "arguments" in block ? block.arguments !== void 0 && block.arguments !== null : false;
|
|
36310
|
-
return hasInput || hasArguments;
|
|
36311
|
-
}
|
|
36312
|
-
function hasNonEmptyStringField(value) {
|
|
36313
|
-
return typeof value === "string" && value.trim().length > 0;
|
|
36314
|
-
}
|
|
36315
|
-
function hasToolCallId(block) {
|
|
36316
|
-
return hasNonEmptyStringField(block.id);
|
|
36317
|
-
}
|
|
36318
|
-
function hasToolCallName(block) {
|
|
36319
|
-
return hasNonEmptyStringField(block.name);
|
|
36320
|
-
}
|
|
36321
|
-
function makeMissingToolResult(params) {
|
|
36322
|
-
return {
|
|
36323
|
-
role: "toolResult",
|
|
36324
|
-
toolCallId: params.toolCallId,
|
|
36325
|
-
toolName: params.toolName ?? "unknown",
|
|
36326
|
-
content: [{
|
|
36327
|
-
type: "text",
|
|
36328
|
-
text: "[symi] missing tool result in session history; inserted synthetic error result for transcript repair."
|
|
36329
|
-
}],
|
|
36330
|
-
isError: true,
|
|
36331
|
-
timestamp: Date.now()
|
|
36332
|
-
};
|
|
36333
|
-
}
|
|
36334
|
-
function stripToolResultDetails(messages) {
|
|
36335
|
-
let touched = false;
|
|
36336
|
-
const out = [];
|
|
36337
|
-
for (const msg of messages) {
|
|
36338
|
-
if (!msg || typeof msg !== "object" || msg.role !== "toolResult") {
|
|
36339
|
-
out.push(msg);
|
|
36340
|
-
continue;
|
|
36341
|
-
}
|
|
36342
|
-
if (!("details" in msg)) {
|
|
36343
|
-
out.push(msg);
|
|
36344
|
-
continue;
|
|
36345
|
-
}
|
|
36346
|
-
const { details: _details, ...rest } = msg;
|
|
36347
|
-
touched = true;
|
|
36348
|
-
out.push(rest);
|
|
36349
|
-
}
|
|
36350
|
-
return touched ? out : messages;
|
|
36351
|
-
}
|
|
36352
|
-
function repairToolCallInputs(messages) {
|
|
36353
|
-
let droppedToolCalls = 0;
|
|
36354
|
-
let droppedAssistantMessages = 0;
|
|
36355
|
-
let changed = false;
|
|
36356
|
-
const out = [];
|
|
36357
|
-
for (const msg of messages) {
|
|
36358
|
-
if (!msg || typeof msg !== "object") {
|
|
36359
|
-
out.push(msg);
|
|
36360
|
-
continue;
|
|
36361
|
-
}
|
|
36362
|
-
if (msg.role !== "assistant" || !Array.isArray(msg.content)) {
|
|
36363
|
-
out.push(msg);
|
|
36364
|
-
continue;
|
|
36365
|
-
}
|
|
36366
|
-
const nextContent = [];
|
|
36367
|
-
let droppedInMessage = 0;
|
|
36368
|
-
for (const block of msg.content) {
|
|
36369
|
-
if (isToolCallBlock(block) && (!hasToolCallInput(block) || !hasToolCallId(block) || !hasToolCallName(block))) {
|
|
36370
|
-
droppedToolCalls += 1;
|
|
36371
|
-
droppedInMessage += 1;
|
|
36372
|
-
changed = true;
|
|
36373
|
-
continue;
|
|
36374
|
-
}
|
|
36375
|
-
nextContent.push(block);
|
|
36376
|
-
}
|
|
36377
|
-
if (droppedInMessage > 0) {
|
|
36378
|
-
if (nextContent.length === 0) {
|
|
36379
|
-
droppedAssistantMessages += 1;
|
|
36380
|
-
changed = true;
|
|
36381
|
-
continue;
|
|
36382
|
-
}
|
|
36383
|
-
out.push({
|
|
36384
|
-
...msg,
|
|
36385
|
-
content: nextContent
|
|
36386
|
-
});
|
|
36387
|
-
continue;
|
|
36388
|
-
}
|
|
36389
|
-
out.push(msg);
|
|
36390
|
-
}
|
|
36391
|
-
return {
|
|
36392
|
-
messages: changed ? out : messages,
|
|
36393
|
-
droppedToolCalls,
|
|
36394
|
-
droppedAssistantMessages
|
|
36395
|
-
};
|
|
36396
|
-
}
|
|
36397
|
-
function sanitizeToolCallInputs(messages) {
|
|
36398
|
-
return repairToolCallInputs(messages).messages;
|
|
36399
|
-
}
|
|
36400
|
-
function sanitizeToolUseResultPairing(messages) {
|
|
36401
|
-
return repairToolUseResultPairing(messages).messages;
|
|
36402
|
-
}
|
|
36403
|
-
function repairToolUseResultPairing(messages) {
|
|
36404
|
-
const out = [];
|
|
36405
|
-
const added = [];
|
|
36406
|
-
const seenToolResultIds = /* @__PURE__ */ new Set();
|
|
36407
|
-
let droppedDuplicateCount = 0;
|
|
36408
|
-
let droppedOrphanCount = 0;
|
|
36409
|
-
let moved = false;
|
|
36410
|
-
let changed = false;
|
|
36411
|
-
const pushToolResult = (msg) => {
|
|
36412
|
-
const id = extractToolResultId(msg);
|
|
36413
|
-
if (id && seenToolResultIds.has(id)) {
|
|
36414
|
-
droppedDuplicateCount += 1;
|
|
36415
|
-
changed = true;
|
|
36416
|
-
return;
|
|
36417
|
-
}
|
|
36418
|
-
if (id) seenToolResultIds.add(id);
|
|
36419
|
-
out.push(msg);
|
|
36420
|
-
};
|
|
36421
|
-
for (let i = 0; i < messages.length; i += 1) {
|
|
36422
|
-
const msg = messages[i];
|
|
36423
|
-
if (!msg || typeof msg !== "object") {
|
|
36424
|
-
out.push(msg);
|
|
36425
|
-
continue;
|
|
36426
|
-
}
|
|
36427
|
-
const role = msg.role;
|
|
36428
|
-
if (role !== "assistant") {
|
|
36429
|
-
if (role !== "toolResult") out.push(msg);
|
|
36430
|
-
else {
|
|
36431
|
-
droppedOrphanCount += 1;
|
|
36432
|
-
changed = true;
|
|
36433
|
-
}
|
|
36434
|
-
continue;
|
|
36435
|
-
}
|
|
36436
|
-
const assistant = msg;
|
|
36437
|
-
const stopReason = assistant.stopReason;
|
|
36438
|
-
if (stopReason === "error" || stopReason === "aborted") {
|
|
36439
|
-
out.push(msg);
|
|
36440
|
-
continue;
|
|
36441
|
-
}
|
|
36442
|
-
const toolCalls = extractToolCallsFromAssistant(assistant);
|
|
36443
|
-
if (toolCalls.length === 0) {
|
|
36444
|
-
out.push(msg);
|
|
36445
|
-
continue;
|
|
36446
|
-
}
|
|
36447
|
-
const toolCallIds = new Set(toolCalls.map((t) => t.id));
|
|
36448
|
-
const spanResultsById = /* @__PURE__ */ new Map();
|
|
36449
|
-
const remainder = [];
|
|
36450
|
-
let j = i + 1;
|
|
36451
|
-
for (; j < messages.length; j += 1) {
|
|
36452
|
-
const next = messages[j];
|
|
36453
|
-
if (!next || typeof next !== "object") {
|
|
36454
|
-
remainder.push(next);
|
|
36455
|
-
continue;
|
|
36456
|
-
}
|
|
36457
|
-
const nextRole = next.role;
|
|
36458
|
-
if (nextRole === "assistant") break;
|
|
36459
|
-
if (nextRole === "toolResult") {
|
|
36460
|
-
const toolResult = next;
|
|
36461
|
-
const id = extractToolResultId(toolResult);
|
|
36462
|
-
if (id && toolCallIds.has(id)) {
|
|
36463
|
-
if (seenToolResultIds.has(id)) {
|
|
36464
|
-
droppedDuplicateCount += 1;
|
|
36465
|
-
changed = true;
|
|
36466
|
-
continue;
|
|
36467
|
-
}
|
|
36468
|
-
if (!spanResultsById.has(id)) spanResultsById.set(id, toolResult);
|
|
36469
|
-
continue;
|
|
36470
|
-
}
|
|
36471
|
-
}
|
|
36472
|
-
if (nextRole !== "toolResult") remainder.push(next);
|
|
36473
|
-
else {
|
|
36474
|
-
droppedOrphanCount += 1;
|
|
36475
|
-
changed = true;
|
|
36476
|
-
}
|
|
36477
|
-
}
|
|
36478
|
-
out.push(msg);
|
|
36479
|
-
if (spanResultsById.size > 0 && remainder.length > 0) {
|
|
36480
|
-
moved = true;
|
|
36481
|
-
changed = true;
|
|
36482
|
-
}
|
|
36483
|
-
for (const call of toolCalls) {
|
|
36484
|
-
const existing = spanResultsById.get(call.id);
|
|
36485
|
-
if (existing) pushToolResult(existing);
|
|
36486
|
-
else {
|
|
36487
|
-
const missing = makeMissingToolResult({
|
|
36488
|
-
toolCallId: call.id,
|
|
36489
|
-
toolName: call.name
|
|
36490
|
-
});
|
|
36491
|
-
added.push(missing);
|
|
36492
|
-
changed = true;
|
|
36493
|
-
pushToolResult(missing);
|
|
36494
|
-
}
|
|
36495
|
-
}
|
|
36496
|
-
for (const rem of remainder) {
|
|
36497
|
-
if (!rem || typeof rem !== "object") {
|
|
36498
|
-
out.push(rem);
|
|
36499
|
-
continue;
|
|
36500
|
-
}
|
|
36501
|
-
out.push(rem);
|
|
36502
|
-
}
|
|
36503
|
-
i = j - 1;
|
|
36504
|
-
}
|
|
36505
|
-
const changedOrMoved = changed || moved;
|
|
36506
|
-
return {
|
|
36507
|
-
messages: changedOrMoved ? out : messages,
|
|
36508
|
-
added,
|
|
36509
|
-
droppedDuplicateCount,
|
|
36510
|
-
droppedOrphanCount,
|
|
36511
|
-
moved: changedOrMoved
|
|
36512
|
-
};
|
|
36513
|
-
}
|
|
36514
|
-
|
|
36515
36639
|
//#endregion
|
|
36516
36640
|
//#region src/agents/session-tool-result-guard.ts
|
|
36517
36641
|
const GUARD_TRUNCATION_SUFFIX = "\n\n⚠️ [Content truncated during persistence — original exceeded size limit. Use offset/limit parameters or request specific sections for large content.]";
|
|
@@ -36592,6 +36716,10 @@ function installSessionToolResultGuard(sessionManager, opts) {
|
|
|
36592
36716
|
const guardedAppend = (message) => {
|
|
36593
36717
|
let nextMessage = message;
|
|
36594
36718
|
if (message.role === "assistant") {
|
|
36719
|
+
if (isEmptyAssistantMessage(message)) {
|
|
36720
|
+
if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
|
|
36721
|
+
return;
|
|
36722
|
+
}
|
|
36595
36723
|
const sanitized = sanitizeToolCallInputs([message]);
|
|
36596
36724
|
if (sanitized.length === 0) {
|
|
36597
36725
|
if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
|
|
@@ -38719,6 +38847,38 @@ function getHistoryLimitFromSessionKey(sessionKey, config) {
|
|
|
38719
38847
|
*/
|
|
38720
38848
|
const getDmHistoryLimitFromSessionKey = getHistoryLimitFromSessionKey;
|
|
38721
38849
|
|
|
38850
|
+
//#endregion
|
|
38851
|
+
//#region src/agents/pi-embedded-runner/long-task-prompt.ts
|
|
38852
|
+
const SCRIPT_REL_PATH = "skills/long-task/scripts/detach-task.sh";
|
|
38853
|
+
let cachedScriptPath;
|
|
38854
|
+
async function resolveDetachScriptPath(params) {
|
|
38855
|
+
if (cachedScriptPath !== void 0) return cachedScriptPath;
|
|
38856
|
+
const packageRoot = await resolveSymiPackageRoot({
|
|
38857
|
+
cwd: params.cwd,
|
|
38858
|
+
argv1: params.argv1,
|
|
38859
|
+
moduleUrl: params.moduleUrl
|
|
38860
|
+
});
|
|
38861
|
+
if (!packageRoot) {
|
|
38862
|
+
cachedScriptPath = null;
|
|
38863
|
+
return null;
|
|
38864
|
+
}
|
|
38865
|
+
const candidate = path.join(packageRoot, SCRIPT_REL_PATH);
|
|
38866
|
+
cachedScriptPath = fs.existsSync(candidate) ? candidate : null;
|
|
38867
|
+
return cachedScriptPath;
|
|
38868
|
+
}
|
|
38869
|
+
async function buildLongTaskPromptSuffix(params) {
|
|
38870
|
+
const scriptPath = await resolveDetachScriptPath(params);
|
|
38871
|
+
if (!scriptPath) return "";
|
|
38872
|
+
return "\n\n" + [
|
|
38873
|
+
"LONG-RUNNING TASK PATTERN:",
|
|
38874
|
+
"- For any task that may exceed 15 minutes (deep nmap scans of /24 or larger, full brute-force sweeps, long builds, exhaustive enumeration): detach from the agent turn. Do NOT foreground-block the exec tool for the full duration; the agent turn will hit its timeout and SIGTERM the process mid-run.",
|
|
38875
|
+
`- Detach pattern: exec \`${scriptPath} <task-id> <workdir> <command...>\`. The script spawns under setsid+nohup, writes PID / cmd / started / status / log files in the workdir. Use the agent workspace as the workdir.`,
|
|
38876
|
+
"- Immediately after detaching, respond to the user with: task id, PID, log file path, your ETA estimate, and that a cron monitor has been scheduled.",
|
|
38877
|
+
"- Register a cron monitor using the `cron` tool with action=add. Schedule every 2-3 minutes. Job prompt must include the task-id, PID, log path, and status path so the future turn has enough context. Example job prompt: \"Check if PID <pid> is alive (kill -0). If alive: tail -n 20 <log>, post one-sentence progress update. If not alive: read <status> and tail <log>, post a final summary, then call cron tool with action=remove id=<this-cron-id>.\"",
|
|
38878
|
+
"- When the monitor turn observes status=complete, it MUST call the cron tool with action=remove to clean up its own job. Do not leave stale monitors running."
|
|
38879
|
+
].join("\n");
|
|
38880
|
+
}
|
|
38881
|
+
|
|
38722
38882
|
//#endregion
|
|
38723
38883
|
//#region src/agents/pi-embedded-runner/runs.ts
|
|
38724
38884
|
const ACTIVE_EMBEDDED_RUNS = /* @__PURE__ */ new Map();
|
|
@@ -39772,7 +39932,12 @@ async function runEmbeddedAttempt(params) {
|
|
|
39772
39932
|
const profileModelKey = params.modelId ?? "";
|
|
39773
39933
|
const modelProfile = resolveModelProfile(profileModelKey, params.config?.models?.profiles);
|
|
39774
39934
|
log$5.debug(`[profile] resolved: modelId=${profileModelKey} → profile=${modelProfile.label} validateToolArgs=${modelProfile.filters?.validateToolArgs ?? false}`);
|
|
39775
|
-
const
|
|
39935
|
+
const profilePromptSuffix = modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : "";
|
|
39936
|
+
const systemPromptText = createSystemPromptOverride(appendPrompt + await buildLongTaskPromptSuffix({
|
|
39937
|
+
argv1: process.argv[1],
|
|
39938
|
+
cwd: process.cwd(),
|
|
39939
|
+
moduleUrl: import.meta.url
|
|
39940
|
+
}) + profilePromptSuffix)();
|
|
39776
39941
|
const sessionLock = await acquireSessionWriteLock({
|
|
39777
39942
|
sessionFile: params.sessionFile,
|
|
39778
39943
|
maxHoldMs: resolveSessionLockMaxHoldFromTimeout({ timeoutMs: params.timeoutMs })
|
|
@@ -39793,6 +39958,8 @@ async function runEmbeddedAttempt(params) {
|
|
|
39793
39958
|
});
|
|
39794
39959
|
const versionCheck = await handleSessionVersion(params.sessionFile);
|
|
39795
39960
|
if (versionCheck.archived) log$5.warn(`session archived: created by ${versionCheck.poisonVersion}, known corruption range → ${versionCheck.archivePath}`);
|
|
39961
|
+
const pruneReport = await pruneEmptyAssistantsFromSessionFile(params.sessionFile);
|
|
39962
|
+
if (pruneReport.rewrote) log$5.warn(`session prune: removed ${pruneReport.pruned} empty assistant entries from ${params.sessionFile}`);
|
|
39796
39963
|
await prewarmSessionFile(params.sessionFile);
|
|
39797
39964
|
sessionManager = guardSessionManager(SessionManager.open(params.sessionFile), {
|
|
39798
39965
|
agentId: sessionAgentId,
|
|
@@ -44165,7 +44332,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
44165
44332
|
return;
|
|
44166
44333
|
}
|
|
44167
44334
|
try {
|
|
44168
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
44335
|
+
const { deliverOutboundPayloads } = await import("./deliver-Bu0iWeja.js").then((n) => n.n);
|
|
44169
44336
|
await deliverOutboundPayloads({
|
|
44170
44337
|
cfg: params.cfg,
|
|
44171
44338
|
channel,
|
|
@@ -47619,7 +47786,7 @@ async function describeStickerImage(params) {
|
|
|
47619
47786
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
47620
47787
|
try {
|
|
47621
47788
|
const buffer = await fs$1.readFile(imagePath);
|
|
47622
|
-
const { describeImageWithModel } = await import("./image-
|
|
47789
|
+
const { describeImageWithModel } = await import("./image-C3wYkWyK.js").then((n) => n.n);
|
|
47623
47790
|
return (await describeImageWithModel({
|
|
47624
47791
|
buffer,
|
|
47625
47792
|
fileName: "sticker.webp",
|
|
@@ -48042,7 +48209,7 @@ function createWhatsAppLoginTool() {
|
|
|
48042
48209
|
force: Type.Optional(Type.Boolean())
|
|
48043
48210
|
}),
|
|
48044
48211
|
execute: async (_toolCallId, args) => {
|
|
48045
|
-
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-
|
|
48212
|
+
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DPxuLEvD.js");
|
|
48046
48213
|
if ((args?.action ?? "start") === "wait") {
|
|
48047
48214
|
const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
|
|
48048
48215
|
return {
|
|
@@ -49418,7 +49585,7 @@ async function preflightDiscordMessage(params) {
|
|
|
49418
49585
|
let preflightTranscript;
|
|
49419
49586
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
49420
49587
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
49421
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
49588
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-XrlQA8IZ.js");
|
|
49422
49589
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
49423
49590
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
49424
49591
|
ctx: {
|
|
@@ -53201,27 +53368,27 @@ function isVoiceChannelType(type) {
|
|
|
53201
53368
|
function createDefaultDeps() {
|
|
53202
53369
|
return {
|
|
53203
53370
|
sendMessageWhatsApp: async (...args) => {
|
|
53204
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
53371
|
+
const { sendMessageWhatsApp } = await import("./web-Dd05xbUr.js");
|
|
53205
53372
|
return await sendMessageWhatsApp(...args);
|
|
53206
53373
|
},
|
|
53207
53374
|
sendMessageTelegram: async (...args) => {
|
|
53208
|
-
const { sendMessageTelegram } = await import("./send-
|
|
53375
|
+
const { sendMessageTelegram } = await import("./send-DlQtxlG_.js").then((n) => n.l);
|
|
53209
53376
|
return await sendMessageTelegram(...args);
|
|
53210
53377
|
},
|
|
53211
53378
|
sendMessageDiscord: async (...args) => {
|
|
53212
|
-
const { sendMessageDiscord } = await import("./send-
|
|
53379
|
+
const { sendMessageDiscord } = await import("./send-CC9V8V81.js").then((n) => n.t);
|
|
53213
53380
|
return await sendMessageDiscord(...args);
|
|
53214
53381
|
},
|
|
53215
53382
|
sendMessageSlack: async (...args) => {
|
|
53216
|
-
const { sendMessageSlack } = await import("./send-
|
|
53383
|
+
const { sendMessageSlack } = await import("./send-B7HhiTdx.js").then((n) => n.n);
|
|
53217
53384
|
return await sendMessageSlack(...args);
|
|
53218
53385
|
},
|
|
53219
53386
|
sendMessageSignal: async (...args) => {
|
|
53220
|
-
const { sendMessageSignal } = await import("./send-
|
|
53387
|
+
const { sendMessageSignal } = await import("./send-BhJZ16uV.js").then((n) => n.i);
|
|
53221
53388
|
return await sendMessageSignal(...args);
|
|
53222
53389
|
},
|
|
53223
53390
|
sendMessageIMessage: async (...args) => {
|
|
53224
|
-
const { sendMessageIMessage } = await import("./send-
|
|
53391
|
+
const { sendMessageIMessage } = await import("./send-DSnJ503J.js").then((n) => n.n);
|
|
53225
53392
|
return await sendMessageIMessage(...args);
|
|
53226
53393
|
}
|
|
53227
53394
|
};
|
|
@@ -64076,7 +64243,7 @@ async function registerSlackMonitorSlashCommands(params) {
|
|
|
64076
64243
|
});
|
|
64077
64244
|
const deliverSlashPayloads = async (replies) => {
|
|
64078
64245
|
const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
|
|
64079
|
-
import("./replies-
|
|
64246
|
+
import("./replies-Bo49QlAg.js").then((n) => n.r),
|
|
64080
64247
|
import("./chunk-CQyUJNtc.js").then((n) => n.s),
|
|
64081
64248
|
import("./markdown-tables-D82z_Ahc.js").then((n) => n.t)
|
|
64082
64249
|
]);
|
|
@@ -66349,7 +66516,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
66349
66516
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
66350
66517
|
let preflightTranscript;
|
|
66351
66518
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
66352
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
66519
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-XrlQA8IZ.js");
|
|
66353
66520
|
preflightTranscript = await transcribeFirstAudio({
|
|
66354
66521
|
ctx: {
|
|
66355
66522
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -68503,23 +68670,23 @@ let webLoginQrPromise = null;
|
|
|
68503
68670
|
let webChannelPromise = null;
|
|
68504
68671
|
let whatsappActionsPromise = null;
|
|
68505
68672
|
function loadWebOutbound() {
|
|
68506
|
-
webOutboundPromise ??= import("./outbound-
|
|
68673
|
+
webOutboundPromise ??= import("./outbound-Bt8rj9kO.js").then((n) => n.t);
|
|
68507
68674
|
return webOutboundPromise;
|
|
68508
68675
|
}
|
|
68509
68676
|
function loadWebLogin() {
|
|
68510
|
-
webLoginPromise ??= import("./login-
|
|
68677
|
+
webLoginPromise ??= import("./login-CiVdC-o_.js").then((n) => n.n);
|
|
68511
68678
|
return webLoginPromise;
|
|
68512
68679
|
}
|
|
68513
68680
|
function loadWebLoginQr() {
|
|
68514
|
-
webLoginQrPromise ??= import("./login-qr-
|
|
68681
|
+
webLoginQrPromise ??= import("./login-qr-DPxuLEvD.js");
|
|
68515
68682
|
return webLoginQrPromise;
|
|
68516
68683
|
}
|
|
68517
68684
|
function loadWebChannel() {
|
|
68518
|
-
webChannelPromise ??= import("./web-
|
|
68685
|
+
webChannelPromise ??= import("./web-Dd05xbUr.js");
|
|
68519
68686
|
return webChannelPromise;
|
|
68520
68687
|
}
|
|
68521
68688
|
function loadWhatsAppActions() {
|
|
68522
|
-
whatsappActionsPromise ??= import("./whatsapp-actions-
|
|
68689
|
+
whatsappActionsPromise ??= import("./whatsapp-actions-7YbV2-Fv.js");
|
|
68523
68690
|
return whatsappActionsPromise;
|
|
68524
68691
|
}
|
|
68525
68692
|
function createPluginRuntime() {
|