@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
|
@@ -8,8 +8,8 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-ChYu
|
|
|
8
8
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-CUNoPTKm.js";
|
|
9
9
|
import { $ as isRich, A as normalizeE164, D as isRecord$1, E as formatTerminalLink, H as isPlainObject, I as shortenHomeInString, J as setVerbose, K as logVerbose, L as shortenHomePath, P as resolveUserPath, Q as colorize, R as sleep$1, S as clampInt, T as escapeRegExp, U as danger, V as truncateUtf16Safe, Y as shouldLogVerbose, Z as warn, _ as matchPluginCommand, a as normalizeAnyChannelId, b as CONFIG_DIR, ct as normalizeLogLevel, d as createPluginRegistry, et as theme, f as normalizePluginHttpPath, g as listPluginCommands, h as getPluginCommandSpecs, l as requireActivePluginRegistry, m as executePluginCommand, n as CHAT_CHANNEL_ORDER, o as normalizeChannelId$1, p as clearPluginCommands, r as DEFAULT_CHAT_CHANNEL, tt as getChildLogger, u as setActivePluginRegistry, ut as resolvePreferredSymiTmpDir, v as createInternalHookEvent, w as ensureDir$3, y as triggerInternalHook, z as sliceUtf16Safe } from "./registry--_pGht6S.js";
|
|
10
10
|
import { n as retryAsync } from "./retry-ilSJqnz9.js";
|
|
11
|
-
import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, At as fetchDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, E as listThreadsDiscord, Et as normalizeChannelSlug, 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 buildChannelKeyCandidates, 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 applyChannelMatchMeta, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-
|
|
12
|
-
import { B as getConfigOverrides, C as resolveIMessageRemoteAttachmentRoots, G as parseConfigPath, H as setConfigOverride, J as isSafeExecutableValue, K as setConfigValueAtPath, R as parseDurationMs, S as resolveIMessageAttachmentRoots, U as unsetConfigOverride, V as resetConfigOverrides, W as getConfigValueAtPath, X as resolveAgentMaxConcurrent, Y as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, Z as VERSION, _ as normalizeTelegramCommandName, a as writeConfigFile, b as isInboundPathAllowed, g as TELEGRAM_COMMAND_NAME_PATTERN, i as resolveConfigSnapshotHash, n as loadConfig, o as validateConfigObjectWithPlugins, q as unsetConfigValueAtPath, r as readConfigFileSnapshot, v as resolveTelegramCustomCommands, w as normalizeScpRemoteHost, z as validateJsonSchemaValue } from "./config-
|
|
11
|
+
import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, At as fetchDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, E as listThreadsDiscord, Et as normalizeChannelSlug, 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 buildChannelKeyCandidates, 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 applyChannelMatchMeta, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-HKy51Hz_.js";
|
|
12
|
+
import { B as getConfigOverrides, C as resolveIMessageRemoteAttachmentRoots, G as parseConfigPath, H as setConfigOverride, J as isSafeExecutableValue, K as setConfigValueAtPath, R as parseDurationMs, S as resolveIMessageAttachmentRoots, U as unsetConfigOverride, V as resetConfigOverrides, W as getConfigValueAtPath, X as resolveAgentMaxConcurrent, Y as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, Z as VERSION, _ as normalizeTelegramCommandName, a as writeConfigFile, b as isInboundPathAllowed, g as TELEGRAM_COMMAND_NAME_PATTERN, i as resolveConfigSnapshotHash, n as loadConfig, o as validateConfigObjectWithPlugins, q as unsetConfigValueAtPath, r as readConfigFileSnapshot, v as resolveTelegramCustomCommands, w as normalizeScpRemoteHost, z as validateJsonSchemaValue } from "./config-DdA6JiyD.js";
|
|
13
13
|
import { a as clearActiveProgressLine, i as defaultRuntime, o as registerActiveProgressLine, r as createNonExitingRuntime, s as unregisterActiveProgressLine, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
|
|
14
14
|
import { i as parseBooleanValue$1, n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
|
|
15
15
|
import { $ as resolveShellEnvFallbackTimeoutMs, A as getSoonestCooldownExpiry, B as resolveSymiAgentDir, C as getCustomProviderApiKey, D as resolveModelAuthMode, E as resolveEnvApiKey, F as dedupeProfileIds, H as withFileLock, I as listProfilesForProvider, J as DEFAULT_CONTEXT_TOKENS, K as normalizeSecretInput, L as markAuthProfileGood, M as markAuthProfileFailure, N as markAuthProfileUsed, P as resolveApiKeyForProfile, R as ensureAuthProfileStore, S as getApiKeyForModel, T as resolveApiKeyForProvider, X as DEFAULT_PROVIDER, Y as DEFAULT_MODEL, Z as getShellPathFromLoginShell, a as isCliProvider, b as OLLAMA_NATIVE_BASE_URL, c as normalizeProviderId, d as resolveDefaultModelForAgent, f as resolveModelRefFromString, i as findNormalizedProviderValue, j as isProfileInCooldown, k as resolveAuthProfileOrder, m as resolveThinkingDefault, n as buildConfiguredAllowlistKeys, o as modelKey, p as resolveSubagentSpawnModelSelection, q as resolveAuthProfileDisplayLabel, r as buildModelAliasIndex, s as normalizeModelRef$2, t as buildAllowedModelSet, u as resolveConfiguredModelRef, w as requireApiKey, x as createOllamaStreamFn, z as resolveAuthStorePathForDisplay } from "./model-selection-DduIg_Yt.js";
|
|
@@ -27,38 +27,38 @@ import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel
|
|
|
27
27
|
import { t as normalizeChatType } from "./chat-type-CEMQNtWX.js";
|
|
28
28
|
import { n as resolveMarkdownTableMode } from "./markdown-tables-Dfaqilz6.js";
|
|
29
29
|
import { t as convertMarkdownTables } from "./tables-DR0NmBeH.js";
|
|
30
|
-
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-
|
|
30
|
+
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-Xy1L54q4.js";
|
|
31
31
|
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-D7Lno-TE.js";
|
|
32
32
|
import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-B7YyMnIi.js";
|
|
33
|
-
import { a as createSlackWebClient, c as validateSlackBlocksArray, i as buildSlackBlocksFallbackText, o as resolveSlackWebClientOptions, s as parseSlackBlocksInput, t as sendMessageSlack } from "./send-
|
|
34
|
-
import { $ as parseTelegramTarget, A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as readChannelAllowFromStore, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as upsertChannelPairingRequest, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, Q as isVoiceCompatibleAudio, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as addChannelAllowFromStoreEntry, X as listPairingChannels, Y as getPairingAdapter, Z as withTelegramApiErrorLogging, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, et as resolveTelegramTargetChatType, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, nt as toLocationContext, o as sendMessageTelegram, p as markdownToTelegramChunks, q as removeChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as formatLocationText, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-
|
|
35
|
-
import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as registerUnhandledRejectionHandler, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as buildRandomTempFilePath } from "./runner-
|
|
33
|
+
import { a as createSlackWebClient, c as validateSlackBlocksArray, i as buildSlackBlocksFallbackText, o as resolveSlackWebClientOptions, s as parseSlackBlocksInput, t as sendMessageSlack } from "./send-DG6c7BpZ.js";
|
|
34
|
+
import { $ as parseTelegramTarget, A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as readChannelAllowFromStore, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as upsertChannelPairingRequest, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, Q as isVoiceCompatibleAudio, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as addChannelAllowFromStoreEntry, X as listPairingChannels, Y as getPairingAdapter, Z as withTelegramApiErrorLogging, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, et as resolveTelegramTargetChatType, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, nt as toLocationContext, o as sendMessageTelegram, p as markdownToTelegramChunks, q as removeChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as formatLocationText, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-Cz_FQ8Ao.js";
|
|
35
|
+
import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as registerUnhandledRejectionHandler, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as buildRandomTempFilePath } from "./runner-BQJ7x06O.js";
|
|
36
36
|
import { a as resolveAckReaction, c as resolveHumanDelayConfig, i as resolveResponsePrefixTemplate, n as createReplyPrefixOptions, o as resolveAgentIdentity, s as resolveEffectiveMessagesConfig } from "./reply-prefix-BHuV5t70.js";
|
|
37
37
|
import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-CWMflosr.js";
|
|
38
38
|
import { c as getSkillsSnapshotVersion, d as resolvePairingPaths, f as createAsyncLock, i as resolveSkillCommandInvocation, l as generatePairingToken, m as writeJsonAtomic, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as readJsonFile, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as pruneExpiredPending } from "./skill-commands-D-rpF3bM.js";
|
|
39
39
|
import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-B1GeRYlu.js";
|
|
40
|
-
import { M as isSecureWebSocketUrl, N as rawDataToString, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
40
|
+
import { M as isSecureWebSocketUrl, N as rawDataToString, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, x as ensureChromeExtensionRelayServer } from "./chrome-BMimuhgP.js";
|
|
41
41
|
import { A as normalizeHyphenSlug, F as resolveChannelGroupRequireMention, I as resolveChannelGroupToolsPolicy, M as normalizeStringEntriesLower, P as resolveChannelGroupPolicy, a as normalizeReasoningLevel, c as normalizeVerboseLevel, d as getChannelDock, f as listChannelDocks, i as normalizeElevatedLevel, j as normalizeStringEntries, k as normalizeAtHashSlug, l as resolveResponseUsageMode, m as normalizeSignalMessagingTarget, n as formatXHighModelHint, o as normalizeThinkLevel, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking } from "./thinking-DCNUIAHY.js";
|
|
42
42
|
import { r as resolveIMessageAccount } from "./accounts-Dtszw3Zn.js";
|
|
43
43
|
import { i as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BToL3HlP.js";
|
|
44
|
-
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, 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 normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-
|
|
45
|
-
import { $ as normalizeToolName, A as isTransientHttpError, At as countToolResults, B as resolveProfile, Bt as resolveChannelResetConfig, C as isContextOverflowError, Ct as deliveryContextKey, D as isRateLimitAssistantError, Dt as normalizeAccountId$3, E as isLikelyContextOverflowError, Et as normalizeSessionDeliveryFields, F as resolveSandboxContext, Ft as normalizeInputProvenance, G as resolveBrowserControlAuth, Gt as resolveFreshSessionTotalTokens, H as resolveExistingPathsWithinRoot, Ht as resolveSessionResetType, I as resolveSandboxRuntimeStatus, It as acquireSessionWriteLock, J as buildPluginToolGroups, Jt as resolveMainSessionKey, K as resolveSandboxConfigForAgent, Kt as canonicalizeMainSessionAlias, L as createBrowserRouteContext, Lt as resolveSessionLockMaxHoldFromTimeout, M as parseImageSizeError, Mt as INPUT_PROVENANCE_KIND_VALUES, N as sanitizeUserFacingText, Nt as applyInputProvenanceToUserMessage, O as isRawApiErrorPayload, Ot as archiveSessionTranscripts, P as ensureSandboxWorkspaceForSession, Pt as hasInterSessionUserProvenance, Q as mergeAlsoAllowPolicy, R as registerBrowserRoutes, Rt as resolveSessionKey, S as isCompactionFailureError, St as deliveryContextFromSession, T as isFailoverErrorMessage, Tt as normalizeDeliveryContext, U as getBridgeAuthForPort, Ut as resolveThreadFlag, V as DEFAULT_UPLOAD_DIR, Vt as resolveSessionResetPolicy, W as ensureBrowserControlAuth, Wt as DEFAULT_RESET_TRIGGERS, X as expandPolicyWithPluginGroups, Xt as resolveGroupSessionKey, Y as collectExplicitAllowlist, Yt as deriveSessionMetaPatch, Z as expandToolGroups, _ as formatRawAssistantErrorForUi, _t as updateLastRoute, a as isMessagingToolDuplicateNormalized, at as ensureSessionHeader, b as isBillingAssistantError, bt as isCacheEnabled, c as extractToolCallsFromAssistant, ct as sanitizeGoogleTurnOrdering, d as isAntigravityClaude, dt as appendAssistantMessageToSessionTranscript, et as resolveToolProfilePolicy, f as isGoogleModelApi, g as formatBillingErrorMessage, gt as recordSessionMetaFromInbound, h as formatAssistantErrorText, ht as readSessionUpdatedAt, it as buildBootstrapContextFiles, j as parseImageDimensionError, jt as extractToolCallNames, k as isTimeoutErrorMessage, kt as capArrayByJsonBytes, l as extractToolResultId, lt as extractDeliveryInfo, m as classifyFailoverReason, mt as loadSessionStore, n as validateGeminiTurns, nt as compileGlobPatterns, o as normalizeTextForComparison, ot as resolveBootstrapMaxChars, p as BILLING_ERROR_USER_MESSAGE, pt as resolveAndPersistSessionFile, q as applyOwnerOnlyToolPolicy, qt as resolveExplicitAgentSessionKey, r as pickFallbackThinkingLevel, rt as matchesAnyGlobPattern, s as sanitizeSessionMessagesImages, st as resolveBootstrapTotalMaxChars, t as validateAnthropicTurns, tt as stripPluginOnlyAllowlist, u as downgradeOpenAIReasoningBlocks, ut as parseSessionThreadInfo, v as getApiErrorPayloadFingerprint, vt as updateSessionStore, w as isFailoverAssistantError, wt as mergeDeliveryContext, x as isCloudCodeAssistFormatError, xt as resolveCacheTtlMs$1, y as isAuthAssistantError, yt as updateSessionStoreEntry, z as resolveBrowserConfig, zt as evaluateSessionFreshness } from "./pi-embedded-helpers-
|
|
44
|
+
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, 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 normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-Bxa1-mj5.js";
|
|
45
|
+
import { $ as normalizeToolName, A as isTransientHttpError, At as countToolResults, B as resolveProfile, Bt as resolveChannelResetConfig, C as isContextOverflowError, Ct as deliveryContextKey, D as isRateLimitAssistantError, Dt as normalizeAccountId$3, E as isLikelyContextOverflowError, Et as normalizeSessionDeliveryFields, F as resolveSandboxContext, Ft as normalizeInputProvenance, G as resolveBrowserControlAuth, Gt as resolveFreshSessionTotalTokens, H as resolveExistingPathsWithinRoot, Ht as resolveSessionResetType, I as resolveSandboxRuntimeStatus, It as acquireSessionWriteLock, J as buildPluginToolGroups, Jt as resolveMainSessionKey, K as resolveSandboxConfigForAgent, Kt as canonicalizeMainSessionAlias, L as createBrowserRouteContext, Lt as resolveSessionLockMaxHoldFromTimeout, M as parseImageSizeError, Mt as INPUT_PROVENANCE_KIND_VALUES, N as sanitizeUserFacingText, Nt as applyInputProvenanceToUserMessage, O as isRawApiErrorPayload, Ot as archiveSessionTranscripts, P as ensureSandboxWorkspaceForSession, Pt as hasInterSessionUserProvenance, Q as mergeAlsoAllowPolicy, R as registerBrowserRoutes, Rt as resolveSessionKey, S as isCompactionFailureError, St as deliveryContextFromSession, T as isFailoverErrorMessage, Tt as normalizeDeliveryContext, U as getBridgeAuthForPort, Ut as resolveThreadFlag, V as DEFAULT_UPLOAD_DIR, Vt as resolveSessionResetPolicy, W as ensureBrowserControlAuth, Wt as DEFAULT_RESET_TRIGGERS, X as expandPolicyWithPluginGroups, Xt as resolveGroupSessionKey, Y as collectExplicitAllowlist, Yt as deriveSessionMetaPatch, Z as expandToolGroups, _ as formatRawAssistantErrorForUi, _t as updateLastRoute, a as isMessagingToolDuplicateNormalized, at as ensureSessionHeader, b as isBillingAssistantError, bt as isCacheEnabled, c as extractToolCallsFromAssistant, ct as sanitizeGoogleTurnOrdering, d as isAntigravityClaude, dt as appendAssistantMessageToSessionTranscript, et as resolveToolProfilePolicy, f as isGoogleModelApi, g as formatBillingErrorMessage, gt as recordSessionMetaFromInbound, h as formatAssistantErrorText, ht as readSessionUpdatedAt, it as buildBootstrapContextFiles, j as parseImageDimensionError, jt as extractToolCallNames, k as isTimeoutErrorMessage, kt as capArrayByJsonBytes, l as extractToolResultId, lt as extractDeliveryInfo, m as classifyFailoverReason, mt as loadSessionStore, n as validateGeminiTurns, nt as compileGlobPatterns, o as normalizeTextForComparison, ot as resolveBootstrapMaxChars, p as BILLING_ERROR_USER_MESSAGE, pt as resolveAndPersistSessionFile, q as applyOwnerOnlyToolPolicy, qt as resolveExplicitAgentSessionKey, r as pickFallbackThinkingLevel, rt as matchesAnyGlobPattern, s as sanitizeSessionMessagesImages, st as resolveBootstrapTotalMaxChars, t as validateAnthropicTurns, tt as stripPluginOnlyAllowlist, u as downgradeOpenAIReasoningBlocks, ut as parseSessionThreadInfo, v as getApiErrorPayloadFingerprint, vt as updateSessionStore, w as isFailoverAssistantError, wt as mergeDeliveryContext, x as isCloudCodeAssistFormatError, xt as resolveCacheTtlMs$1, y as isAuthAssistantError, yt as updateSessionStoreEntry, z as resolveBrowserConfig, zt as evaluateSessionFreshness } from "./pi-embedded-helpers-BPvzgLtj.js";
|
|
46
46
|
import { n as resolveConversationLabel } from "./conversation-label-yNSj43Jt.js";
|
|
47
47
|
import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-A0xdf3yk.js";
|
|
48
48
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-x1D4Vniz.js";
|
|
49
49
|
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-EyuCSUXO.js";
|
|
50
50
|
import { i as saveMediaBuffer, r as getMediaDir } from "./store-Do3t33-c.js";
|
|
51
51
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-D5EzMeL_.js";
|
|
52
|
-
import { S as minimaxUnderstandImage, _ as stripThinkingTagsFromText, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as resolveToolDisplay, x as ensureSymiModelsJson, y as stripReasoningTagsFromText } from "./image-
|
|
52
|
+
import { S as minimaxUnderstandImage, _ as stripThinkingTagsFromText, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as resolveToolDisplay, x as ensureSymiModelsJson, y as stripReasoningTagsFromText } from "./image-aq-JAobP.js";
|
|
53
53
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-LbcEa65a.js";
|
|
54
54
|
import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, v as runTasksWithConcurrency } from "./sqlite-Cq_7Cg4E.js";
|
|
55
55
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Wd5tNeQG.js";
|
|
56
56
|
import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-CJXUXj6F.js";
|
|
57
57
|
import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-C9W8UWBh.js";
|
|
58
|
-
import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-
|
|
58
|
+
import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-C4t6h9-o.js";
|
|
59
59
|
import { t as makeProxyFetch } from "./proxy-MquBDehr.js";
|
|
60
60
|
import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-D3JH_D2N.js";
|
|
61
|
-
import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-
|
|
61
|
+
import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CW_-4klO.js";
|
|
62
62
|
import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-CcR0OJ6f.js";
|
|
63
63
|
import { t as getActiveWebListener } from "./active-listener-BRYwA2Ic.js";
|
|
64
64
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-Bug27PHS.js";
|
|
@@ -15491,7 +15491,7 @@ async function routeReply(params) {
|
|
|
15491
15491
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
15492
15492
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
15493
15493
|
try {
|
|
15494
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
15494
|
+
const { deliverOutboundPayloads } = await import("./deliver-Bxa1-mj5.js").then((n) => n.n);
|
|
15495
15495
|
return {
|
|
15496
15496
|
ok: true,
|
|
15497
15497
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -17965,7 +17965,7 @@ async function describeStickerImage(params) {
|
|
|
17965
17965
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
17966
17966
|
try {
|
|
17967
17967
|
const buffer = await fs$1.readFile(imagePath);
|
|
17968
|
-
const { describeImageWithModel } = await import("./image-
|
|
17968
|
+
const { describeImageWithModel } = await import("./image-aq-JAobP.js").then((n) => n.n);
|
|
17969
17969
|
return (await describeImageWithModel({
|
|
17970
17970
|
buffer,
|
|
17971
17971
|
fileName: "sticker.webp",
|
|
@@ -18376,7 +18376,7 @@ function createWhatsAppLoginTool() {
|
|
|
18376
18376
|
force: Type.Optional(Type.Boolean())
|
|
18377
18377
|
}),
|
|
18378
18378
|
execute: async (_toolCallId, args) => {
|
|
18379
|
-
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-
|
|
18379
|
+
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-D5vJo1fy.js");
|
|
18380
18380
|
if ((args?.action ?? "start") === "wait") {
|
|
18381
18381
|
const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
|
|
18382
18382
|
return {
|
|
@@ -20444,7 +20444,7 @@ async function preflightDiscordMessage(params) {
|
|
|
20444
20444
|
let preflightTranscript;
|
|
20445
20445
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
20446
20446
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
20447
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
20447
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-BacDFPyc.js");
|
|
20448
20448
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
20449
20449
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
20450
20450
|
ctx: {
|
|
@@ -27243,7 +27243,8 @@ const BUILTIN_PROFILES = [
|
|
|
27243
27243
|
top_p: .95,
|
|
27244
27244
|
top_k: 20,
|
|
27245
27245
|
max_tokens: 16384,
|
|
27246
|
-
presence_penalty: 1.5
|
|
27246
|
+
presence_penalty: 1.5,
|
|
27247
|
+
chatTemplateKwargs: { preserve_thinking: true }
|
|
27247
27248
|
},
|
|
27248
27249
|
streaming: {
|
|
27249
27250
|
deltaThrottleMs: 50,
|
|
@@ -28033,6 +28034,8 @@ function createModelAwareStreamFn(opts) {
|
|
|
28033
28034
|
if (typeof mergedParams.repeat_penalty === "number") injections.repeat_penalty = mergedParams.repeat_penalty;
|
|
28034
28035
|
if (typeof mergedParams.presence_penalty === "number") injections.presence_penalty = mergedParams.presence_penalty;
|
|
28035
28036
|
if (typeof mergedParams.frequency_penalty === "number") injections.frequency_penalty = mergedParams.frequency_penalty;
|
|
28037
|
+
const chatTemplateKwargs = mergedParams.chatTemplateKwargs ?? mergedParams.chat_template_kwargs;
|
|
28038
|
+
if (chatTemplateKwargs && typeof chatTemplateKwargs === "object" && !Array.isArray(chatTemplateKwargs)) injections.chat_template_kwargs = chatTemplateKwargs;
|
|
28036
28039
|
const isVllm = isVllmProvider(opts.provider, opts.modelId, opts.config);
|
|
28037
28040
|
const isOpenRouter = opts.provider === "openrouter";
|
|
28038
28041
|
const extraHeaders = {};
|
|
@@ -28640,7 +28643,11 @@ function handleMessageUpdate(ctx, evt) {
|
|
|
28640
28643
|
emitAgentEvent({
|
|
28641
28644
|
runId: ctx.params.runId,
|
|
28642
28645
|
stream: "thinking",
|
|
28643
|
-
data: {
|
|
28646
|
+
data: {
|
|
28647
|
+
phase: evtType,
|
|
28648
|
+
delta: thinkingDelta,
|
|
28649
|
+
content: thinkingContent
|
|
28650
|
+
}
|
|
28644
28651
|
});
|
|
28645
28652
|
if (ctx.state.streamReasoning) {
|
|
28646
28653
|
const partialThinking = extractAssistantThinking(msg);
|
|
@@ -30695,6 +30702,338 @@ Use the message tool with buttons:
|
|
|
30695
30702
|
[{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
|
|
30696
30703
|
</plan_mode>`;
|
|
30697
30704
|
|
|
30705
|
+
//#endregion
|
|
30706
|
+
//#region src/agents/session-transcript-repair.ts
|
|
30707
|
+
function isToolCallBlock(block) {
|
|
30708
|
+
if (!block || typeof block !== "object") return false;
|
|
30709
|
+
const type = block.type;
|
|
30710
|
+
return typeof type === "string" && (type === "toolCall" || type === "toolUse" || type === "functionCall");
|
|
30711
|
+
}
|
|
30712
|
+
function hasToolCallInput(block) {
|
|
30713
|
+
const hasInput = "input" in block ? block.input !== void 0 && block.input !== null : false;
|
|
30714
|
+
const hasArguments = "arguments" in block ? block.arguments !== void 0 && block.arguments !== null : false;
|
|
30715
|
+
return hasInput || hasArguments;
|
|
30716
|
+
}
|
|
30717
|
+
function hasNonEmptyStringField(value) {
|
|
30718
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
30719
|
+
}
|
|
30720
|
+
function hasToolCallId(block) {
|
|
30721
|
+
return hasNonEmptyStringField(block.id);
|
|
30722
|
+
}
|
|
30723
|
+
function hasToolCallName(block) {
|
|
30724
|
+
return hasNonEmptyStringField(block.name);
|
|
30725
|
+
}
|
|
30726
|
+
function makeMissingToolResult(params) {
|
|
30727
|
+
return {
|
|
30728
|
+
role: "toolResult",
|
|
30729
|
+
toolCallId: params.toolCallId,
|
|
30730
|
+
toolName: params.toolName ?? "unknown",
|
|
30731
|
+
content: [{
|
|
30732
|
+
type: "text",
|
|
30733
|
+
text: "[symi] missing tool result in session history; inserted synthetic error result for transcript repair."
|
|
30734
|
+
}],
|
|
30735
|
+
isError: true,
|
|
30736
|
+
timestamp: Date.now()
|
|
30737
|
+
};
|
|
30738
|
+
}
|
|
30739
|
+
/**
|
|
30740
|
+
* True when an assistant message has no tool calls and only empty/whitespace
|
|
30741
|
+
* text or thinking blocks. This happens when a stream fails before any
|
|
30742
|
+
* content arrives — the blank entry is otherwise persisted and produces
|
|
30743
|
+
* consecutive same-role messages, which strict providers (vLLM) reject with
|
|
30744
|
+
* "role must alternate" errors that poison the session for every future turn.
|
|
30745
|
+
*/
|
|
30746
|
+
function isEmptyAssistantMessage(message) {
|
|
30747
|
+
if (!message || typeof message !== "object") return false;
|
|
30748
|
+
const msg = message;
|
|
30749
|
+
if (msg.role !== "assistant") return false;
|
|
30750
|
+
if (!Array.isArray(msg.content) || msg.content.length === 0) return true;
|
|
30751
|
+
for (const block of msg.content) {
|
|
30752
|
+
if (!block || typeof block !== "object") continue;
|
|
30753
|
+
const type = block.type;
|
|
30754
|
+
if (type === "toolCall" || type === "toolUse" || type === "functionCall") return false;
|
|
30755
|
+
if (type === "text") {
|
|
30756
|
+
const text = block.text;
|
|
30757
|
+
if (typeof text === "string" && text.trim().length > 0) return false;
|
|
30758
|
+
continue;
|
|
30759
|
+
}
|
|
30760
|
+
if (type === "thinking") {
|
|
30761
|
+
const thinking = block.thinking;
|
|
30762
|
+
if (typeof thinking === "string" && thinking.trim().length > 0) return false;
|
|
30763
|
+
continue;
|
|
30764
|
+
}
|
|
30765
|
+
return false;
|
|
30766
|
+
}
|
|
30767
|
+
return true;
|
|
30768
|
+
}
|
|
30769
|
+
function stripToolResultDetails(messages) {
|
|
30770
|
+
let touched = false;
|
|
30771
|
+
const out = [];
|
|
30772
|
+
for (const msg of messages) {
|
|
30773
|
+
if (!msg || typeof msg !== "object" || msg.role !== "toolResult") {
|
|
30774
|
+
out.push(msg);
|
|
30775
|
+
continue;
|
|
30776
|
+
}
|
|
30777
|
+
if (!("details" in msg)) {
|
|
30778
|
+
out.push(msg);
|
|
30779
|
+
continue;
|
|
30780
|
+
}
|
|
30781
|
+
const { details: _details, ...rest } = msg;
|
|
30782
|
+
touched = true;
|
|
30783
|
+
out.push(rest);
|
|
30784
|
+
}
|
|
30785
|
+
return touched ? out : messages;
|
|
30786
|
+
}
|
|
30787
|
+
function repairToolCallInputs(messages) {
|
|
30788
|
+
let droppedToolCalls = 0;
|
|
30789
|
+
let droppedAssistantMessages = 0;
|
|
30790
|
+
let changed = false;
|
|
30791
|
+
const out = [];
|
|
30792
|
+
for (const msg of messages) {
|
|
30793
|
+
if (!msg || typeof msg !== "object") {
|
|
30794
|
+
out.push(msg);
|
|
30795
|
+
continue;
|
|
30796
|
+
}
|
|
30797
|
+
if (msg.role !== "assistant" || !Array.isArray(msg.content)) {
|
|
30798
|
+
out.push(msg);
|
|
30799
|
+
continue;
|
|
30800
|
+
}
|
|
30801
|
+
const nextContent = [];
|
|
30802
|
+
let droppedInMessage = 0;
|
|
30803
|
+
for (const block of msg.content) {
|
|
30804
|
+
if (isToolCallBlock(block) && (!hasToolCallInput(block) || !hasToolCallId(block) || !hasToolCallName(block))) {
|
|
30805
|
+
droppedToolCalls += 1;
|
|
30806
|
+
droppedInMessage += 1;
|
|
30807
|
+
changed = true;
|
|
30808
|
+
continue;
|
|
30809
|
+
}
|
|
30810
|
+
nextContent.push(block);
|
|
30811
|
+
}
|
|
30812
|
+
if (droppedInMessage > 0) {
|
|
30813
|
+
if (nextContent.length === 0) {
|
|
30814
|
+
droppedAssistantMessages += 1;
|
|
30815
|
+
changed = true;
|
|
30816
|
+
continue;
|
|
30817
|
+
}
|
|
30818
|
+
out.push({
|
|
30819
|
+
...msg,
|
|
30820
|
+
content: nextContent
|
|
30821
|
+
});
|
|
30822
|
+
continue;
|
|
30823
|
+
}
|
|
30824
|
+
out.push(msg);
|
|
30825
|
+
}
|
|
30826
|
+
return {
|
|
30827
|
+
messages: changed ? out : messages,
|
|
30828
|
+
droppedToolCalls,
|
|
30829
|
+
droppedAssistantMessages
|
|
30830
|
+
};
|
|
30831
|
+
}
|
|
30832
|
+
function sanitizeToolCallInputs(messages) {
|
|
30833
|
+
return repairToolCallInputs(messages).messages;
|
|
30834
|
+
}
|
|
30835
|
+
function sanitizeToolUseResultPairing(messages) {
|
|
30836
|
+
return repairToolUseResultPairing(messages).messages;
|
|
30837
|
+
}
|
|
30838
|
+
function repairToolUseResultPairing(messages) {
|
|
30839
|
+
const out = [];
|
|
30840
|
+
const added = [];
|
|
30841
|
+
const seenToolResultIds = /* @__PURE__ */ new Set();
|
|
30842
|
+
let droppedDuplicateCount = 0;
|
|
30843
|
+
let droppedOrphanCount = 0;
|
|
30844
|
+
let moved = false;
|
|
30845
|
+
let changed = false;
|
|
30846
|
+
const pushToolResult = (msg) => {
|
|
30847
|
+
const id = extractToolResultId(msg);
|
|
30848
|
+
if (id && seenToolResultIds.has(id)) {
|
|
30849
|
+
droppedDuplicateCount += 1;
|
|
30850
|
+
changed = true;
|
|
30851
|
+
return;
|
|
30852
|
+
}
|
|
30853
|
+
if (id) seenToolResultIds.add(id);
|
|
30854
|
+
out.push(msg);
|
|
30855
|
+
};
|
|
30856
|
+
for (let i = 0; i < messages.length; i += 1) {
|
|
30857
|
+
const msg = messages[i];
|
|
30858
|
+
if (!msg || typeof msg !== "object") {
|
|
30859
|
+
out.push(msg);
|
|
30860
|
+
continue;
|
|
30861
|
+
}
|
|
30862
|
+
const role = msg.role;
|
|
30863
|
+
if (role !== "assistant") {
|
|
30864
|
+
if (role !== "toolResult") out.push(msg);
|
|
30865
|
+
else {
|
|
30866
|
+
droppedOrphanCount += 1;
|
|
30867
|
+
changed = true;
|
|
30868
|
+
}
|
|
30869
|
+
continue;
|
|
30870
|
+
}
|
|
30871
|
+
const assistant = msg;
|
|
30872
|
+
const stopReason = assistant.stopReason;
|
|
30873
|
+
if (stopReason === "error" || stopReason === "aborted") {
|
|
30874
|
+
out.push(msg);
|
|
30875
|
+
continue;
|
|
30876
|
+
}
|
|
30877
|
+
const toolCalls = extractToolCallsFromAssistant(assistant);
|
|
30878
|
+
if (toolCalls.length === 0) {
|
|
30879
|
+
out.push(msg);
|
|
30880
|
+
continue;
|
|
30881
|
+
}
|
|
30882
|
+
const toolCallIds = new Set(toolCalls.map((t) => t.id));
|
|
30883
|
+
const spanResultsById = /* @__PURE__ */ new Map();
|
|
30884
|
+
const remainder = [];
|
|
30885
|
+
let j = i + 1;
|
|
30886
|
+
for (; j < messages.length; j += 1) {
|
|
30887
|
+
const next = messages[j];
|
|
30888
|
+
if (!next || typeof next !== "object") {
|
|
30889
|
+
remainder.push(next);
|
|
30890
|
+
continue;
|
|
30891
|
+
}
|
|
30892
|
+
const nextRole = next.role;
|
|
30893
|
+
if (nextRole === "assistant") break;
|
|
30894
|
+
if (nextRole === "toolResult") {
|
|
30895
|
+
const toolResult = next;
|
|
30896
|
+
const id = extractToolResultId(toolResult);
|
|
30897
|
+
if (id && toolCallIds.has(id)) {
|
|
30898
|
+
if (seenToolResultIds.has(id)) {
|
|
30899
|
+
droppedDuplicateCount += 1;
|
|
30900
|
+
changed = true;
|
|
30901
|
+
continue;
|
|
30902
|
+
}
|
|
30903
|
+
if (!spanResultsById.has(id)) spanResultsById.set(id, toolResult);
|
|
30904
|
+
continue;
|
|
30905
|
+
}
|
|
30906
|
+
}
|
|
30907
|
+
if (nextRole !== "toolResult") remainder.push(next);
|
|
30908
|
+
else {
|
|
30909
|
+
droppedOrphanCount += 1;
|
|
30910
|
+
changed = true;
|
|
30911
|
+
}
|
|
30912
|
+
}
|
|
30913
|
+
out.push(msg);
|
|
30914
|
+
if (spanResultsById.size > 0 && remainder.length > 0) {
|
|
30915
|
+
moved = true;
|
|
30916
|
+
changed = true;
|
|
30917
|
+
}
|
|
30918
|
+
for (const call of toolCalls) {
|
|
30919
|
+
const existing = spanResultsById.get(call.id);
|
|
30920
|
+
if (existing) pushToolResult(existing);
|
|
30921
|
+
else {
|
|
30922
|
+
const missing = makeMissingToolResult({
|
|
30923
|
+
toolCallId: call.id,
|
|
30924
|
+
toolName: call.name
|
|
30925
|
+
});
|
|
30926
|
+
added.push(missing);
|
|
30927
|
+
changed = true;
|
|
30928
|
+
pushToolResult(missing);
|
|
30929
|
+
}
|
|
30930
|
+
}
|
|
30931
|
+
for (const rem of remainder) {
|
|
30932
|
+
if (!rem || typeof rem !== "object") {
|
|
30933
|
+
out.push(rem);
|
|
30934
|
+
continue;
|
|
30935
|
+
}
|
|
30936
|
+
out.push(rem);
|
|
30937
|
+
}
|
|
30938
|
+
i = j - 1;
|
|
30939
|
+
}
|
|
30940
|
+
const changedOrMoved = changed || moved;
|
|
30941
|
+
return {
|
|
30942
|
+
messages: changedOrMoved ? out : messages,
|
|
30943
|
+
added,
|
|
30944
|
+
droppedDuplicateCount,
|
|
30945
|
+
droppedOrphanCount,
|
|
30946
|
+
moved: changedOrMoved
|
|
30947
|
+
};
|
|
30948
|
+
}
|
|
30949
|
+
|
|
30950
|
+
//#endregion
|
|
30951
|
+
//#region src/agents/session-empty-prune.ts
|
|
30952
|
+
/**
|
|
30953
|
+
* Pre-run prune of empty assistant entries from a session JSONL file.
|
|
30954
|
+
*
|
|
30955
|
+
* When a stream fails before any content arrives, pi-coding-agent persists
|
|
30956
|
+
* an assistant message with an empty content array. If this repeats (e.g. a
|
|
30957
|
+
* misconfigured provider fails on every retry), the session ends up with
|
|
30958
|
+
* hundreds of consecutive empty assistant entries. vLLM and other strict
|
|
30959
|
+
* providers then reject the request with a role-ordering error — once the
|
|
30960
|
+
* session is in that state, every future turn fails until the user runs /new.
|
|
30961
|
+
*
|
|
30962
|
+
* This helper runs before SessionManager opens the file, reads the JSONL
|
|
30963
|
+
* line-by-line, filters out any line whose `message` is an empty-content
|
|
30964
|
+
* assistant, and rewrites the file atomically if anything was dropped. The
|
|
30965
|
+
* in-memory SessionManager state and the on-disk file stay consistent.
|
|
30966
|
+
*
|
|
30967
|
+
* The append guard in {@link ./session-tool-result-guard.ts} prevents new
|
|
30968
|
+
* empty entries from being written; this helper retroactively cleans files
|
|
30969
|
+
* that were poisoned before the guard existed.
|
|
30970
|
+
*
|
|
30971
|
+
* @module
|
|
30972
|
+
*/
|
|
30973
|
+
async function readSessionFile(sessionFile) {
|
|
30974
|
+
try {
|
|
30975
|
+
return await fs$1.readFile(sessionFile, "utf-8");
|
|
30976
|
+
} catch {
|
|
30977
|
+
return null;
|
|
30978
|
+
}
|
|
30979
|
+
}
|
|
30980
|
+
async function writeAtomically(sessionFile, text) {
|
|
30981
|
+
const dir = path.dirname(sessionFile);
|
|
30982
|
+
const base = path.basename(sessionFile);
|
|
30983
|
+
const tmp = path.join(dir, `.${base}.prune-${process.pid}-${Date.now()}.tmp`);
|
|
30984
|
+
await fs$1.writeFile(tmp, text, "utf-8");
|
|
30985
|
+
await fs$1.rename(tmp, sessionFile);
|
|
30986
|
+
}
|
|
30987
|
+
/**
|
|
30988
|
+
* Remove empty assistant JSONL entries from the session file.
|
|
30989
|
+
*
|
|
30990
|
+
* Parses each line; lines that don't parse are preserved verbatim so we don't
|
|
30991
|
+
* lose unknown data. Only lines that parse into a `{type:"message", message:
|
|
30992
|
+
* <empty-assistant>}` entry are dropped.
|
|
30993
|
+
*/
|
|
30994
|
+
async function pruneEmptyAssistantsFromSessionFile(sessionFile) {
|
|
30995
|
+
const raw = await readSessionFile(sessionFile);
|
|
30996
|
+
if (raw === null || raw.length === 0) return {
|
|
30997
|
+
rewrote: false,
|
|
30998
|
+
pruned: 0,
|
|
30999
|
+
unparsable: 0
|
|
31000
|
+
};
|
|
31001
|
+
const lines = raw.split("\n");
|
|
31002
|
+
const kept = [];
|
|
31003
|
+
let pruned = 0;
|
|
31004
|
+
let unparsable = 0;
|
|
31005
|
+
for (const line of lines) {
|
|
31006
|
+
if (line.length === 0) {
|
|
31007
|
+
kept.push(line);
|
|
31008
|
+
continue;
|
|
31009
|
+
}
|
|
31010
|
+
let parsed = null;
|
|
31011
|
+
try {
|
|
31012
|
+
parsed = JSON.parse(line);
|
|
31013
|
+
} catch {
|
|
31014
|
+
unparsable += 1;
|
|
31015
|
+
kept.push(line);
|
|
31016
|
+
continue;
|
|
31017
|
+
}
|
|
31018
|
+
if (parsed?.type === "message" && isEmptyAssistantMessage(parsed.message)) {
|
|
31019
|
+
pruned += 1;
|
|
31020
|
+
continue;
|
|
31021
|
+
}
|
|
31022
|
+
kept.push(line);
|
|
31023
|
+
}
|
|
31024
|
+
if (pruned === 0) return {
|
|
31025
|
+
rewrote: false,
|
|
31026
|
+
pruned: 0,
|
|
31027
|
+
unparsable
|
|
31028
|
+
};
|
|
31029
|
+
await writeAtomically(sessionFile, kept.join("\n"));
|
|
31030
|
+
return {
|
|
31031
|
+
rewrote: true,
|
|
31032
|
+
pruned,
|
|
31033
|
+
unparsable
|
|
31034
|
+
};
|
|
31035
|
+
}
|
|
31036
|
+
|
|
30698
31037
|
//#endregion
|
|
30699
31038
|
//#region src/agents/session-file-repair.ts
|
|
30700
31039
|
function isSessionHeader(entry) {
|
|
@@ -30968,221 +31307,6 @@ function sessionLikelyHasOversizedToolResults(params) {
|
|
|
30968
31307
|
return false;
|
|
30969
31308
|
}
|
|
30970
31309
|
|
|
30971
|
-
//#endregion
|
|
30972
|
-
//#region src/agents/session-transcript-repair.ts
|
|
30973
|
-
function isToolCallBlock(block) {
|
|
30974
|
-
if (!block || typeof block !== "object") return false;
|
|
30975
|
-
const type = block.type;
|
|
30976
|
-
return typeof type === "string" && (type === "toolCall" || type === "toolUse" || type === "functionCall");
|
|
30977
|
-
}
|
|
30978
|
-
function hasToolCallInput(block) {
|
|
30979
|
-
const hasInput = "input" in block ? block.input !== void 0 && block.input !== null : false;
|
|
30980
|
-
const hasArguments = "arguments" in block ? block.arguments !== void 0 && block.arguments !== null : false;
|
|
30981
|
-
return hasInput || hasArguments;
|
|
30982
|
-
}
|
|
30983
|
-
function hasNonEmptyStringField(value) {
|
|
30984
|
-
return typeof value === "string" && value.trim().length > 0;
|
|
30985
|
-
}
|
|
30986
|
-
function hasToolCallId(block) {
|
|
30987
|
-
return hasNonEmptyStringField(block.id);
|
|
30988
|
-
}
|
|
30989
|
-
function hasToolCallName(block) {
|
|
30990
|
-
return hasNonEmptyStringField(block.name);
|
|
30991
|
-
}
|
|
30992
|
-
function makeMissingToolResult(params) {
|
|
30993
|
-
return {
|
|
30994
|
-
role: "toolResult",
|
|
30995
|
-
toolCallId: params.toolCallId,
|
|
30996
|
-
toolName: params.toolName ?? "unknown",
|
|
30997
|
-
content: [{
|
|
30998
|
-
type: "text",
|
|
30999
|
-
text: "[symi] missing tool result in session history; inserted synthetic error result for transcript repair."
|
|
31000
|
-
}],
|
|
31001
|
-
isError: true,
|
|
31002
|
-
timestamp: Date.now()
|
|
31003
|
-
};
|
|
31004
|
-
}
|
|
31005
|
-
function stripToolResultDetails(messages) {
|
|
31006
|
-
let touched = false;
|
|
31007
|
-
const out = [];
|
|
31008
|
-
for (const msg of messages) {
|
|
31009
|
-
if (!msg || typeof msg !== "object" || msg.role !== "toolResult") {
|
|
31010
|
-
out.push(msg);
|
|
31011
|
-
continue;
|
|
31012
|
-
}
|
|
31013
|
-
if (!("details" in msg)) {
|
|
31014
|
-
out.push(msg);
|
|
31015
|
-
continue;
|
|
31016
|
-
}
|
|
31017
|
-
const { details: _details, ...rest } = msg;
|
|
31018
|
-
touched = true;
|
|
31019
|
-
out.push(rest);
|
|
31020
|
-
}
|
|
31021
|
-
return touched ? out : messages;
|
|
31022
|
-
}
|
|
31023
|
-
function repairToolCallInputs(messages) {
|
|
31024
|
-
let droppedToolCalls = 0;
|
|
31025
|
-
let droppedAssistantMessages = 0;
|
|
31026
|
-
let changed = false;
|
|
31027
|
-
const out = [];
|
|
31028
|
-
for (const msg of messages) {
|
|
31029
|
-
if (!msg || typeof msg !== "object") {
|
|
31030
|
-
out.push(msg);
|
|
31031
|
-
continue;
|
|
31032
|
-
}
|
|
31033
|
-
if (msg.role !== "assistant" || !Array.isArray(msg.content)) {
|
|
31034
|
-
out.push(msg);
|
|
31035
|
-
continue;
|
|
31036
|
-
}
|
|
31037
|
-
const nextContent = [];
|
|
31038
|
-
let droppedInMessage = 0;
|
|
31039
|
-
for (const block of msg.content) {
|
|
31040
|
-
if (isToolCallBlock(block) && (!hasToolCallInput(block) || !hasToolCallId(block) || !hasToolCallName(block))) {
|
|
31041
|
-
droppedToolCalls += 1;
|
|
31042
|
-
droppedInMessage += 1;
|
|
31043
|
-
changed = true;
|
|
31044
|
-
continue;
|
|
31045
|
-
}
|
|
31046
|
-
nextContent.push(block);
|
|
31047
|
-
}
|
|
31048
|
-
if (droppedInMessage > 0) {
|
|
31049
|
-
if (nextContent.length === 0) {
|
|
31050
|
-
droppedAssistantMessages += 1;
|
|
31051
|
-
changed = true;
|
|
31052
|
-
continue;
|
|
31053
|
-
}
|
|
31054
|
-
out.push({
|
|
31055
|
-
...msg,
|
|
31056
|
-
content: nextContent
|
|
31057
|
-
});
|
|
31058
|
-
continue;
|
|
31059
|
-
}
|
|
31060
|
-
out.push(msg);
|
|
31061
|
-
}
|
|
31062
|
-
return {
|
|
31063
|
-
messages: changed ? out : messages,
|
|
31064
|
-
droppedToolCalls,
|
|
31065
|
-
droppedAssistantMessages
|
|
31066
|
-
};
|
|
31067
|
-
}
|
|
31068
|
-
function sanitizeToolCallInputs(messages) {
|
|
31069
|
-
return repairToolCallInputs(messages).messages;
|
|
31070
|
-
}
|
|
31071
|
-
function sanitizeToolUseResultPairing(messages) {
|
|
31072
|
-
return repairToolUseResultPairing(messages).messages;
|
|
31073
|
-
}
|
|
31074
|
-
function repairToolUseResultPairing(messages) {
|
|
31075
|
-
const out = [];
|
|
31076
|
-
const added = [];
|
|
31077
|
-
const seenToolResultIds = /* @__PURE__ */ new Set();
|
|
31078
|
-
let droppedDuplicateCount = 0;
|
|
31079
|
-
let droppedOrphanCount = 0;
|
|
31080
|
-
let moved = false;
|
|
31081
|
-
let changed = false;
|
|
31082
|
-
const pushToolResult = (msg) => {
|
|
31083
|
-
const id = extractToolResultId(msg);
|
|
31084
|
-
if (id && seenToolResultIds.has(id)) {
|
|
31085
|
-
droppedDuplicateCount += 1;
|
|
31086
|
-
changed = true;
|
|
31087
|
-
return;
|
|
31088
|
-
}
|
|
31089
|
-
if (id) seenToolResultIds.add(id);
|
|
31090
|
-
out.push(msg);
|
|
31091
|
-
};
|
|
31092
|
-
for (let i = 0; i < messages.length; i += 1) {
|
|
31093
|
-
const msg = messages[i];
|
|
31094
|
-
if (!msg || typeof msg !== "object") {
|
|
31095
|
-
out.push(msg);
|
|
31096
|
-
continue;
|
|
31097
|
-
}
|
|
31098
|
-
const role = msg.role;
|
|
31099
|
-
if (role !== "assistant") {
|
|
31100
|
-
if (role !== "toolResult") out.push(msg);
|
|
31101
|
-
else {
|
|
31102
|
-
droppedOrphanCount += 1;
|
|
31103
|
-
changed = true;
|
|
31104
|
-
}
|
|
31105
|
-
continue;
|
|
31106
|
-
}
|
|
31107
|
-
const assistant = msg;
|
|
31108
|
-
const stopReason = assistant.stopReason;
|
|
31109
|
-
if (stopReason === "error" || stopReason === "aborted") {
|
|
31110
|
-
out.push(msg);
|
|
31111
|
-
continue;
|
|
31112
|
-
}
|
|
31113
|
-
const toolCalls = extractToolCallsFromAssistant(assistant);
|
|
31114
|
-
if (toolCalls.length === 0) {
|
|
31115
|
-
out.push(msg);
|
|
31116
|
-
continue;
|
|
31117
|
-
}
|
|
31118
|
-
const toolCallIds = new Set(toolCalls.map((t) => t.id));
|
|
31119
|
-
const spanResultsById = /* @__PURE__ */ new Map();
|
|
31120
|
-
const remainder = [];
|
|
31121
|
-
let j = i + 1;
|
|
31122
|
-
for (; j < messages.length; j += 1) {
|
|
31123
|
-
const next = messages[j];
|
|
31124
|
-
if (!next || typeof next !== "object") {
|
|
31125
|
-
remainder.push(next);
|
|
31126
|
-
continue;
|
|
31127
|
-
}
|
|
31128
|
-
const nextRole = next.role;
|
|
31129
|
-
if (nextRole === "assistant") break;
|
|
31130
|
-
if (nextRole === "toolResult") {
|
|
31131
|
-
const toolResult = next;
|
|
31132
|
-
const id = extractToolResultId(toolResult);
|
|
31133
|
-
if (id && toolCallIds.has(id)) {
|
|
31134
|
-
if (seenToolResultIds.has(id)) {
|
|
31135
|
-
droppedDuplicateCount += 1;
|
|
31136
|
-
changed = true;
|
|
31137
|
-
continue;
|
|
31138
|
-
}
|
|
31139
|
-
if (!spanResultsById.has(id)) spanResultsById.set(id, toolResult);
|
|
31140
|
-
continue;
|
|
31141
|
-
}
|
|
31142
|
-
}
|
|
31143
|
-
if (nextRole !== "toolResult") remainder.push(next);
|
|
31144
|
-
else {
|
|
31145
|
-
droppedOrphanCount += 1;
|
|
31146
|
-
changed = true;
|
|
31147
|
-
}
|
|
31148
|
-
}
|
|
31149
|
-
out.push(msg);
|
|
31150
|
-
if (spanResultsById.size > 0 && remainder.length > 0) {
|
|
31151
|
-
moved = true;
|
|
31152
|
-
changed = true;
|
|
31153
|
-
}
|
|
31154
|
-
for (const call of toolCalls) {
|
|
31155
|
-
const existing = spanResultsById.get(call.id);
|
|
31156
|
-
if (existing) pushToolResult(existing);
|
|
31157
|
-
else {
|
|
31158
|
-
const missing = makeMissingToolResult({
|
|
31159
|
-
toolCallId: call.id,
|
|
31160
|
-
toolName: call.name
|
|
31161
|
-
});
|
|
31162
|
-
added.push(missing);
|
|
31163
|
-
changed = true;
|
|
31164
|
-
pushToolResult(missing);
|
|
31165
|
-
}
|
|
31166
|
-
}
|
|
31167
|
-
for (const rem of remainder) {
|
|
31168
|
-
if (!rem || typeof rem !== "object") {
|
|
31169
|
-
out.push(rem);
|
|
31170
|
-
continue;
|
|
31171
|
-
}
|
|
31172
|
-
out.push(rem);
|
|
31173
|
-
}
|
|
31174
|
-
i = j - 1;
|
|
31175
|
-
}
|
|
31176
|
-
const changedOrMoved = changed || moved;
|
|
31177
|
-
return {
|
|
31178
|
-
messages: changedOrMoved ? out : messages,
|
|
31179
|
-
added,
|
|
31180
|
-
droppedDuplicateCount,
|
|
31181
|
-
droppedOrphanCount,
|
|
31182
|
-
moved: changedOrMoved
|
|
31183
|
-
};
|
|
31184
|
-
}
|
|
31185
|
-
|
|
31186
31310
|
//#endregion
|
|
31187
31311
|
//#region src/agents/session-tool-result-guard.ts
|
|
31188
31312
|
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.]";
|
|
@@ -31263,6 +31387,10 @@ function installSessionToolResultGuard(sessionManager, opts) {
|
|
|
31263
31387
|
const guardedAppend = (message) => {
|
|
31264
31388
|
let nextMessage = message;
|
|
31265
31389
|
if (message.role === "assistant") {
|
|
31390
|
+
if (isEmptyAssistantMessage(message)) {
|
|
31391
|
+
if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
|
|
31392
|
+
return;
|
|
31393
|
+
}
|
|
31266
31394
|
const sanitized = sanitizeToolCallInputs([message]);
|
|
31267
31395
|
if (sanitized.length === 0) {
|
|
31268
31396
|
if (allowSyntheticToolResults && pending.size > 0) flushPendingToolResults();
|
|
@@ -33508,6 +33636,38 @@ function getHistoryLimitFromSessionKey(sessionKey, config) {
|
|
|
33508
33636
|
*/
|
|
33509
33637
|
const getDmHistoryLimitFromSessionKey = getHistoryLimitFromSessionKey;
|
|
33510
33638
|
|
|
33639
|
+
//#endregion
|
|
33640
|
+
//#region src/agents/pi-embedded-runner/long-task-prompt.ts
|
|
33641
|
+
const SCRIPT_REL_PATH = "skills/long-task/scripts/detach-task.sh";
|
|
33642
|
+
let cachedScriptPath;
|
|
33643
|
+
async function resolveDetachScriptPath(params) {
|
|
33644
|
+
if (cachedScriptPath !== void 0) return cachedScriptPath;
|
|
33645
|
+
const packageRoot = await resolveSymiPackageRoot({
|
|
33646
|
+
cwd: params.cwd,
|
|
33647
|
+
argv1: params.argv1,
|
|
33648
|
+
moduleUrl: params.moduleUrl
|
|
33649
|
+
});
|
|
33650
|
+
if (!packageRoot) {
|
|
33651
|
+
cachedScriptPath = null;
|
|
33652
|
+
return null;
|
|
33653
|
+
}
|
|
33654
|
+
const candidate = path.join(packageRoot, SCRIPT_REL_PATH);
|
|
33655
|
+
cachedScriptPath = fs.existsSync(candidate) ? candidate : null;
|
|
33656
|
+
return cachedScriptPath;
|
|
33657
|
+
}
|
|
33658
|
+
async function buildLongTaskPromptSuffix(params) {
|
|
33659
|
+
const scriptPath = await resolveDetachScriptPath(params);
|
|
33660
|
+
if (!scriptPath) return "";
|
|
33661
|
+
return "\n\n" + [
|
|
33662
|
+
"LONG-RUNNING TASK PATTERN:",
|
|
33663
|
+
"- 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.",
|
|
33664
|
+
`- 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.`,
|
|
33665
|
+
"- 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.",
|
|
33666
|
+
"- 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>.\"",
|
|
33667
|
+
"- 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."
|
|
33668
|
+
].join("\n");
|
|
33669
|
+
}
|
|
33670
|
+
|
|
33511
33671
|
//#endregion
|
|
33512
33672
|
//#region src/agents/pi-embedded-runner/runs.ts
|
|
33513
33673
|
const ACTIVE_EMBEDDED_RUNS = /* @__PURE__ */ new Map();
|
|
@@ -34570,7 +34730,12 @@ async function runEmbeddedAttempt(params) {
|
|
|
34570
34730
|
const profileModelKey = params.modelId ?? "";
|
|
34571
34731
|
const modelProfile = resolveModelProfile(profileModelKey, params.config?.models?.profiles);
|
|
34572
34732
|
log$7.debug(`[profile] resolved: modelId=${profileModelKey} → profile=${modelProfile.label} validateToolArgs=${modelProfile.filters?.validateToolArgs ?? false}`);
|
|
34573
|
-
const
|
|
34733
|
+
const profilePromptSuffix = modelProfile.promptAdditions.length > 0 ? "\n\n" + modelProfile.promptAdditions.join("\n") : "";
|
|
34734
|
+
const systemPromptText = createSystemPromptOverride(appendPrompt + await buildLongTaskPromptSuffix({
|
|
34735
|
+
argv1: process.argv[1],
|
|
34736
|
+
cwd: process.cwd(),
|
|
34737
|
+
moduleUrl: import.meta.url
|
|
34738
|
+
}) + profilePromptSuffix)();
|
|
34574
34739
|
const sessionLock = await acquireSessionWriteLock({
|
|
34575
34740
|
sessionFile: params.sessionFile,
|
|
34576
34741
|
maxHoldMs: resolveSessionLockMaxHoldFromTimeout({ timeoutMs: params.timeoutMs })
|
|
@@ -34591,6 +34756,8 @@ async function runEmbeddedAttempt(params) {
|
|
|
34591
34756
|
});
|
|
34592
34757
|
const versionCheck = await handleSessionVersion(params.sessionFile);
|
|
34593
34758
|
if (versionCheck.archived) log$7.warn(`session archived: created by ${versionCheck.poisonVersion}, known corruption range → ${versionCheck.archivePath}`);
|
|
34759
|
+
const pruneReport = await pruneEmptyAssistantsFromSessionFile(params.sessionFile);
|
|
34760
|
+
if (pruneReport.rewrote) log$7.warn(`session prune: removed ${pruneReport.pruned} empty assistant entries from ${params.sessionFile}`);
|
|
34594
34761
|
await prewarmSessionFile(params.sessionFile);
|
|
34595
34762
|
sessionManager = guardSessionManager(SessionManager.open(params.sessionFile), {
|
|
34596
34763
|
agentId: sessionAgentId,
|
|
@@ -36377,27 +36544,27 @@ async function runAgentTurn(params) {
|
|
|
36377
36544
|
function createDefaultDeps() {
|
|
36378
36545
|
return {
|
|
36379
36546
|
sendMessageWhatsApp: async (...args) => {
|
|
36380
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
36547
|
+
const { sendMessageWhatsApp } = await import("./web-CJjSOTnI.js");
|
|
36381
36548
|
return await sendMessageWhatsApp(...args);
|
|
36382
36549
|
},
|
|
36383
36550
|
sendMessageTelegram: async (...args) => {
|
|
36384
|
-
const { sendMessageTelegram } = await import("./send-
|
|
36551
|
+
const { sendMessageTelegram } = await import("./send-Cz_FQ8Ao.js").then((n) => n.l);
|
|
36385
36552
|
return await sendMessageTelegram(...args);
|
|
36386
36553
|
},
|
|
36387
36554
|
sendMessageDiscord: async (...args) => {
|
|
36388
|
-
const { sendMessageDiscord } = await import("./send-
|
|
36555
|
+
const { sendMessageDiscord } = await import("./send-HKy51Hz_.js").then((n) => n.t);
|
|
36389
36556
|
return await sendMessageDiscord(...args);
|
|
36390
36557
|
},
|
|
36391
36558
|
sendMessageSlack: async (...args) => {
|
|
36392
|
-
const { sendMessageSlack } = await import("./send-
|
|
36559
|
+
const { sendMessageSlack } = await import("./send-DG6c7BpZ.js").then((n) => n.n);
|
|
36393
36560
|
return await sendMessageSlack(...args);
|
|
36394
36561
|
},
|
|
36395
36562
|
sendMessageSignal: async (...args) => {
|
|
36396
|
-
const { sendMessageSignal } = await import("./send-
|
|
36563
|
+
const { sendMessageSignal } = await import("./send-C4t6h9-o.js").then((n) => n.i);
|
|
36397
36564
|
return await sendMessageSignal(...args);
|
|
36398
36565
|
},
|
|
36399
36566
|
sendMessageIMessage: async (...args) => {
|
|
36400
|
-
const { sendMessageIMessage } = await import("./send-
|
|
36567
|
+
const { sendMessageIMessage } = await import("./send-Xy1L54q4.js").then((n) => n.n);
|
|
36401
36568
|
return await sendMessageIMessage(...args);
|
|
36402
36569
|
}
|
|
36403
36570
|
};
|
|
@@ -46952,7 +47119,7 @@ async function registerSlackMonitorSlashCommands(params) {
|
|
|
46952
47119
|
});
|
|
46953
47120
|
const deliverSlashPayloads = async (replies) => {
|
|
46954
47121
|
const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
|
|
46955
|
-
import("./replies-
|
|
47122
|
+
import("./replies-CW_-4klO.js").then((n) => n.r),
|
|
46956
47123
|
import("./chunk-jvk9axTQ.js").then((n) => n.s),
|
|
46957
47124
|
import("./markdown-tables-Dfaqilz6.js").then((n) => n.t)
|
|
46958
47125
|
]);
|
|
@@ -51658,7 +51825,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
51658
51825
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
51659
51826
|
let preflightTranscript;
|
|
51660
51827
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
51661
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
51828
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-BacDFPyc.js");
|
|
51662
51829
|
preflightTranscript = await transcribeFirstAudio({
|
|
51663
51830
|
ctx: {
|
|
51664
51831
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -53803,23 +53970,23 @@ let webLoginQrPromise = null;
|
|
|
53803
53970
|
let webChannelPromise = null;
|
|
53804
53971
|
let whatsappActionsPromise = null;
|
|
53805
53972
|
function loadWebOutbound() {
|
|
53806
|
-
webOutboundPromise ??= import("./outbound-
|
|
53973
|
+
webOutboundPromise ??= import("./outbound-CD38Hxn9.js").then((n) => n.t);
|
|
53807
53974
|
return webOutboundPromise;
|
|
53808
53975
|
}
|
|
53809
53976
|
function loadWebLogin() {
|
|
53810
|
-
webLoginPromise ??= import("./login-
|
|
53977
|
+
webLoginPromise ??= import("./login-CHgiUvI_.js").then((n) => n.n);
|
|
53811
53978
|
return webLoginPromise;
|
|
53812
53979
|
}
|
|
53813
53980
|
function loadWebLoginQr() {
|
|
53814
|
-
webLoginQrPromise ??= import("./login-qr-
|
|
53981
|
+
webLoginQrPromise ??= import("./login-qr-D5vJo1fy.js");
|
|
53815
53982
|
return webLoginQrPromise;
|
|
53816
53983
|
}
|
|
53817
53984
|
function loadWebChannel() {
|
|
53818
|
-
webChannelPromise ??= import("./web-
|
|
53985
|
+
webChannelPromise ??= import("./web-CJjSOTnI.js");
|
|
53819
53986
|
return webChannelPromise;
|
|
53820
53987
|
}
|
|
53821
53988
|
function loadWhatsAppActions() {
|
|
53822
|
-
whatsappActionsPromise ??= import("./whatsapp-actions-
|
|
53989
|
+
whatsappActionsPromise ??= import("./whatsapp-actions-CZLagx0h.js");
|
|
53823
53990
|
return whatsappActionsPromise;
|
|
53824
53991
|
}
|
|
53825
53992
|
function createPluginRuntime() {
|
|
@@ -78264,7 +78431,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
78264
78431
|
return;
|
|
78265
78432
|
}
|
|
78266
78433
|
try {
|
|
78267
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
78434
|
+
const { deliverOutboundPayloads } = await import("./deliver-Bxa1-mj5.js").then((n) => n.n);
|
|
78268
78435
|
await deliverOutboundPayloads({
|
|
78269
78436
|
cfg: params.cfg,
|
|
78270
78437
|
channel,
|