@symerian/symi 2.9.1 → 2.9.3
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-BNM6b6XY.js → acp-cli-Bc6ZQZ4f.js} +2 -2
- package/dist/{acp-cli-DXsJS3-G.js → acp-cli-Dy9QuDBN.js} +2 -2
- package/dist/{agents-FNeM-byc.js → agents-D6V_7iZL.js} +7 -7
- package/dist/{agents.config-CjML1ogJ.js → agents.config-B-NRTvyi.js} +1 -1
- package/dist/{agents.config-DUYDFbfP.js → agents.config-BeX0kxT3.js} +1 -1
- package/dist/{audio-preflight-CwbuWmdG.js → audio-preflight-8UNY1akA.js} +11 -11
- package/dist/{audio-preflight-SaT5IcVn.js → audio-preflight-By0dnw-T.js} +11 -11
- package/dist/{audio-preflight-DlO0Hw-w.js → audio-preflight-CbyJ_yDs.js} +5 -5
- package/dist/{audio-preflight-CMutcMs5.js → audio-preflight-Dtsvq6Hj.js} +6 -6
- package/dist/{audit-qWCLpveM.js → audit-DGwhL71Q.js} +5 -5
- package/dist/{audit-Ojap-R-Y.js → audit-OPWWS900.js} +5 -5
- package/dist/{auth-choice-BjTiWmH-.js → auth-choice-4lzxjIcf.js} +4 -4
- package/dist/{auth-choice-RQ5keocP.js → auth-choice-BJQjxe_Y.js} +4 -4
- package/dist/{banner-dYiFXA70.js → banner-Q3fjWWy3.js} +1 -1
- package/dist/{browser-cli-BQ9jHIXP.js → browser-cli-CGLTZ9KQ.js} +3 -3
- package/dist/{browser-cli-BW0C5Y8-.js → browser-cli-qpJlsofO.js} +3 -3
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +14 -14
- package/dist/bundled/session-memory/handler.js +14 -14
- package/dist/{call-X_vwo309.js → call-BCTAmPye.js} +1 -1
- package/dist/{call-BZbBLMOq.js → call-BIETyST6.js} +1 -1
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-DqXYA7rM.js → channel-options-CQ0Q0xZr.js} +1 -1
- package/dist/{channel-options-CjZlTumK.js → channel-options-D6U_Dpa2.js} +1 -1
- package/dist/{channel-web-BITaNjFT.js → channel-web-D6aolbVC.js} +7 -7
- package/dist/{channels-cli-C8CesA1x.js → channels-cli-By4y_t51.js} +31 -31
- package/dist/{channels-cli-7cDtM5kW.js → channels-cli-CxuKeNkr.js} +30 -30
- package/dist/{chrome-t-stBgN6.js → chrome-B-hW5hrK.js} +1 -1
- package/dist/{chrome-B1zznUiv.js → chrome-CJHOBnUB.js} +1 -1
- package/dist/{chrome-faqXQ9f1.js → chrome-CO5ZhkcZ.js} +1 -1
- package/dist/{chrome-BFDOGeu3.js → chrome-CtTba9sH.js} +1 -1
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-ZC_92Xyn.js → cli-41r_BAjv.js} +26 -26
- package/dist/{cli-BJ9_X9eE.js → cli-B1gtEojq.js} +27 -27
- package/dist/{command-registry-B1ltIC7z.js → command-registry-FJWuYmEn.js} +11 -11
- package/dist/{completion-cli-KSs4eFcq.js → completion-cli-C20c_vzO.js} +1 -1
- package/dist/{completion-cli-_P0e-rhC.js → completion-cli-DWVW4P54.js} +2 -2
- package/dist/{config-BYCtuYPj.js → config-CitI_jxW.js} +6 -0
- package/dist/{config-CbBZUq-Q.js → config-D7Zr88dI.js} +6 -0
- package/dist/{config-BXMAsmut.js → config-Do4JxgLI.js} +6 -0
- package/dist/{config-DE6JXMtt.js → config-Gfhqs66L.js} +6 -0
- package/dist/{config-cli-DIrPShKH.js → config-cli-CJQ-12f7.js} +2 -2
- package/dist/{config-cli-DjCKp4Pe.js → config-cli-CLXuCFJc.js} +2 -2
- package/dist/{config-guard-BrZXdLQw.js → config-guard-BLcbR_sH.js} +2 -2
- package/dist/{config-guard-DYmSI51f.js → config-guard-CgPPAm7S.js} +3 -3
- package/dist/{config-validation-CNRgc5vc.js → config-validation-B6GnatLw.js} +1 -1
- package/dist/{config-validation-fdYfdAc3.js → config-validation-UMq2H_tR.js} +1 -1
- package/dist/{configure-Ds8SzTEw.js → configure-DrIhqYYW.js} +10 -10
- package/dist/{configure-CsZWO6Nr.js → configure-I99ztt2Y.js} +10 -10
- package/dist/{control-service-DQX3HXS4.js → control-service-BkyH7qkF.js} +4 -4
- package/dist/{control-service-B5HVCnUI.js → control-service-DnNPjFvU.js} +4 -4
- package/dist/{cron-cli-CfSmL43G.js → cron-cli-CcgewYtp.js} +3 -3
- package/dist/{cron-cli-D2L3-4aw.js → cron-cli-DEcQk1bb.js} +3 -3
- package/dist/{daemon-cli-D9_xrFGD.js → daemon-cli-BNZu5unw.js} +6 -6
- package/dist/{daemon-cli-BHwfgmrQ.js → daemon-cli-BiBjGGfw.js} +6 -6
- package/dist/daemon-cli.js +6 -0
- package/dist/{daemon-runtime-BiZG4Kqi.js → daemon-runtime-C-Mwepv_.js} +1 -1
- package/dist/{daemon-runtime-DOqm0LLm.js → daemon-runtime-C86WnKU5.js} +1 -1
- package/dist/{deliver-nBdNxMIr.js → deliver-D5655IkX.js} +2 -2
- package/dist/{deliver-CeNdvQJ3.js → deliver-DaRQn5Ai.js} +3 -3
- package/dist/{deliver-Cqk3zmyW.js → deliver-DrgHcdVo.js} +3 -3
- package/dist/{deliver--ff__Iq0.js → deliver-XYF4JahT.js} +2 -2
- package/dist/{devices-cli-BzyrjuAk.js → devices-cli-Wb4H-vyx.js} +2 -2
- package/dist/{devices-cli-CEvTb9Vr.js → devices-cli-hX2lrsCy.js} +2 -2
- package/dist/{directory-cli-KZHlp_jk.js → directory-cli-CLIYvXkV.js} +1 -1
- package/dist/{directory-cli-Ds7uESrp.js → directory-cli-C_vm-dsr.js} +1 -1
- package/dist/{dns-cli-e8z7wTzi.js → dns-cli-BJuUZ4pr.js} +1 -1
- package/dist/{dns-cli-SNU_PJfw.js → dns-cli-CTCAHPcB.js} +1 -1
- package/dist/{doctor-completion-D4bMStWc.js → doctor-completion-B4pjrehH.js} +1 -1
- package/dist/{doctor-completion-CfGWMYVG.js → doctor-completion-C9A7E6Wb.js} +1 -1
- package/dist/{doctor-config-flow-CJ4__c8U.js → doctor-config-flow-BFHsvL2k.js} +2 -2
- package/dist/{doctor-config-flow-DHXFFSRu.js → doctor-config-flow-l2aPNzHP.js} +2 -2
- package/dist/entry.js +1 -1
- package/dist/{exec-approvals-cli-z9Iy8aWD.js → exec-approvals-cli-BXDSu2Ze.js} +4 -4
- package/dist/{exec-approvals-cli-_AbKrXIH.js → exec-approvals-cli-uAM6-swA.js} +4 -4
- package/dist/extensionAPI.js +16 -16
- package/dist/{gateway-cli-B4ElmhPF.js → gateway-cli-BByLEck3.js} +42 -42
- package/dist/{gateway-cli-CfO9aUt0.js → gateway-cli-cZpbavO4.js} +43 -43
- package/dist/{gateway-rpc-D1S1i5HM.js → gateway-rpc-DMEPdgmc.js} +1 -1
- package/dist/{gateway-rpc-BlWORxUe.js → gateway-rpc-Wa_4MrZb.js} +1 -1
- package/dist/{glass-ui-ws-D1UKJUFI.js → glass-ui-ws-09XXkYnX.js} +35 -35
- package/dist/{glass-ui-ws-Bhu3COgn.js → glass-ui-ws-DUHaC6lE.js} +34 -34
- package/dist/{health-CLRDrjsk.js → health-Bvo3NXZK.js} +5 -5
- package/dist/{health-CCslN1xh.js → health-CYHbTw04.js} +5 -5
- package/dist/{hooks-cli-BrVLhsJ6.js → hooks-cli-BwFW4lKC.js} +27 -27
- package/dist/{hooks-cli-DvLYXNNe.js → hooks-cli-CiFs-0g0.js} +28 -28
- package/dist/{image-D5bsPk2_.js → image-BjyeKf1c.js} +2 -2
- package/dist/{image-CEdTQp1F.js → image-BqpivNGG.js} +2 -2
- package/dist/{image-B6aY1oY3.js → image-GaF72sln.js} +2 -2
- package/dist/{image-Cp6qRPZ2.js → image-dYtWZNKT.js} +2 -2
- package/dist/index.js +35 -35
- package/dist/{lifecycle-core-CcPnnp9c.js → lifecycle-core-BMVHLJi_.js} +2 -2
- package/dist/{lifecycle-core-BUGPz1GT.js → lifecycle-core-HOQrbQ-_.js} +2 -2
- package/dist/llm-slug-generator.js +14 -14
- package/dist/{login-DwBazcKM.js → login-Cd4DTmg6.js} +2 -2
- package/dist/{login-B7OJui4y.js → login-Cv_LYGzG.js} +2 -2
- package/dist/{login-DKeZ-sOf.js → login-D4OYfM0U.js} +2 -2
- package/dist/{login-Cu0fTI3Z.js → login-DqhTprwd.js} +2 -2
- package/dist/{login-qr-BBrzemk7.js → login-qr-CZXIrzvh.js} +2 -2
- package/dist/{login-qr-DyU6qD2X.js → login-qr-DiyxAHpv.js} +2 -2
- package/dist/{login-qr-CtELJan3.js → login-qr-Dq_hs3eJ.js} +2 -2
- package/dist/{login-qr-Ft17VIG6.js → login-qr-Xgw7JPYo.js} +2 -2
- package/dist/{logs-cli-CvgvoxvI.js → logs-cli-DZTxEhiM.js} +3 -3
- package/dist/{logs-cli-Dg6OSEA6.js → logs-cli-Dh-aAqF3.js} +3 -3
- package/dist/{manager-CztTHQhN.js → manager-Bj8GFlcZ.js} +1 -1
- package/dist/{manager-8N1YbbDk.js → manager-BsfrsBPw.js} +1 -1
- package/dist/{manager-OSWCBsL_.js → manager-CB20PmUH.js} +1 -1
- package/dist/{manager-HASZR70T.js → manager-CMB15ft8.js} +1 -1
- package/dist/{memory-cli-BDWdeqta.js → memory-cli-CoTkaEhh.js} +4 -4
- package/dist/{memory-cli-BmWvHCEJ.js → memory-cli-Cuhhh4qN.js} +4 -4
- package/dist/{model-catalog-BhW-vn5v.js → model-catalog-BFJW_s3i.js} +2 -2
- package/dist/{model-catalog-FckJ4pcL.js → model-catalog-DRqmevpR.js} +2 -2
- package/dist/{model-picker-D3ii5sBm.js → model-picker-BT8MumhL.js} +2 -2
- package/dist/{model-picker-DEUeht6L.js → model-picker-DhsG4iZa.js} +2 -2
- package/dist/{models-5C-QKF0q.js → models-CdIe1IJX.js} +8 -8
- package/dist/{models-cli-BqW-Y1GI.js → models-cli-CZcMWBL0.js} +30 -30
- package/dist/{models-cli-B2IebIhR.js → models-cli-o07a-fh5.js} +29 -29
- package/dist/{models-config-DGDMieos.js → models-config-DdK8uWQW.js} +1 -1
- package/dist/{models-config-CHVfeRDR.js → models-config-frWb8fDT.js} +1 -1
- package/dist/{node-cli-hAxte5bw.js → node-cli-DB4Z23h8.js} +9 -9
- package/dist/{node-cli-emEb0aRo.js → node-cli-DcRlL2Np.js} +9 -9
- package/dist/{nodes-cli-DQPQqEYN.js → nodes-cli-B42u9UxB.js} +3 -3
- package/dist/{nodes-cli-yd9KABqj.js → nodes-cli-DQ9YsQmy.js} +3 -3
- package/dist/{onboard-BL7Ei8OA.js → onboard-44op-88v.js} +7 -7
- package/dist/{onboard-o5O2Ipvr.js → onboard-Cjlal6-V.js} +7 -7
- package/dist/{onboard-channels-B-PEQmiI.js → onboard-channels-BseAErC9.js} +1 -1
- package/dist/{onboard-channels-Do0lkLVV.js → onboard-channels-Lt1TlRrb.js} +1 -1
- package/dist/{onboard-custom-BVMtQfB1.js → onboard-custom-7TON2w6b.js} +2 -2
- package/dist/{onboard-custom-CVA34zSg.js → onboard-custom-Bb3xuH0G.js} +2 -2
- package/dist/{onboard-helpers-O6bxf40E.js → onboard-helpers-BiCrYw-N.js} +2 -2
- package/dist/{onboard-helpers-CNFdWQIV.js → onboard-helpers-Ca4KojJF.js} +2 -2
- package/dist/{onboard-remote-QMqQxvh7.js → onboard-remote-B8MQTgX-.js} +1 -1
- package/dist/{onboard-remote-uYveiXQe.js → onboard-remote-IMqgmH78.js} +1 -1
- package/dist/{onboard-skills-CLb94Ag2.js → onboard-skills-BP1P7f-w.js} +1 -1
- package/dist/{onboard-skills-Du3aWSN3.js → onboard-skills-BcvPjVfl.js} +1 -1
- package/dist/{onboarding-B_F_DbjQ.js → onboarding-DODsq7cg.js} +10 -10
- package/dist/{onboarding-3DwQLO4z.js → onboarding-DYJYybkl.js} +10 -10
- package/dist/{onboarding.finalize-BWejCrVi.js → onboarding.finalize-BX-xeFu7.js} +32 -32
- package/dist/{onboarding.finalize-D_G6Tcqi.js → onboarding.finalize-DhhWr8GR.js} +34 -34
- package/dist/{onboarding.gateway-config-D8K7HsWb.js → onboarding.gateway-config-Cp8mV8S9.js} +4 -4
- package/dist/{onboarding.gateway-config-Dixr8mmH.js → onboarding.gateway-config-tmzsyFbT.js} +4 -4
- package/dist/{outbound-CLCy4Nsg.js → outbound-BD7PNRhC.js} +1 -1
- package/dist/{outbound-DVVulk0E.js → outbound-BaF9dF-H.js} +1 -1
- package/dist/{outbound-b9pVFyW7.js → outbound-CDuo0JH3.js} +1 -1
- package/dist/{outbound-DlWjA7jN.js → outbound-CPcVipU-.js} +1 -1
- package/dist/{pairing-cli-Cgj6qx8Z.js → pairing-cli-CfuG75IW.js} +1 -1
- package/dist/{pairing-cli-CchjvjCR.js → pairing-cli-K09J3MIl.js} +1 -1
- package/dist/{pi-embedded-q_tNOp_h.js → pi-embedded-UMBd-Mrj.js} +405 -88
- package/dist/{pi-embedded-helpers-BgpogTwt.js → pi-embedded-helpers-BlL08R8g.js} +1 -1
- package/dist/{pi-embedded-helpers-DrAT2ieP.js → pi-embedded-helpers-CU-kYRrF.js} +5 -5
- package/dist/{pi-embedded-helpers-DK2WpZI8.js → pi-embedded-helpers-CmY04lZ7.js} +1 -1
- package/dist/{pi-embedded-helpers-BPP4adeW.js → pi-embedded-helpers-DuZtk5SK.js} +6 -6
- package/dist/{pi-tools.policy-BE7fB_Cf.js → pi-tools.policy-54ABEJtH.js} +2 -2
- package/dist/{pi-tools.policy-GxaAKOgf.js → pi-tools.policy-BFsWV2pS.js} +2 -2
- package/dist/{plugin-registry-B_KRAoou.js → plugin-registry-Di_isjUm.js} +2 -2
- package/dist/{plugin-registry-CRIH5Sdf.js → plugin-registry-HrZC-Iww.js} +2 -2
- package/dist/plugin-sdk/agents/pi-embedded-runner/system-prompt.d.ts +23 -0
- package/dist/plugin-sdk/agents/skills/triggers.d.ts +12 -0
- package/dist/plugin-sdk/agents/system-prompt-skills-jit.d.ts +28 -0
- package/dist/plugin-sdk/agents/system-prompt.d.ts +17 -0
- package/dist/plugin-sdk/agents/tools/skill-search-tool.d.ts +30 -0
- package/dist/plugin-sdk/{audio-preflight-CwMsvdv8.js → audio-preflight-CoKYDdd4.js} +6 -6
- package/dist/plugin-sdk/{channel-web-CiewzSOW.js → channel-web-CzZZsS3O.js} +7 -7
- package/dist/plugin-sdk/{chrome-Cou8jVJ2.js → chrome-CdjVSHtz.js} +1 -1
- package/dist/plugin-sdk/config/types.skills.d.ts +14 -0
- package/dist/plugin-sdk/config/types.symi.d.ts +7 -0
- package/dist/plugin-sdk/config/zod-schema.d.ts +2 -0
- package/dist/plugin-sdk/{config-DQntj58u.js → config-Cf-PzD3r.js} +6 -0
- package/dist/plugin-sdk/{deliver-OVx3XKTy.js → deliver-hjUeDZ7e.js} +2 -2
- package/dist/plugin-sdk/{image-ChrcMCo_.js → image-CS95I-I5.js} +2 -2
- package/dist/plugin-sdk/index.js +20 -20
- package/dist/plugin-sdk/{login-WuhOM4Dg.js → login-BhLw-aw1.js} +2 -2
- package/dist/plugin-sdk/{login-qr-C87Q7LuN.js → login-qr-B4dxH543.js} +2 -2
- package/dist/plugin-sdk/{manager-Yvm-LGVR.js → manager-BiRYpsW7.js} +1 -1
- package/dist/plugin-sdk/{outbound-T0XdUo-H.js → outbound-D7yJKgEX.js} +1 -1
- package/dist/plugin-sdk/{pi-embedded-helpers-DihvU43r.js → pi-embedded-helpers-6EL59cK1.js} +6 -6
- package/dist/plugin-sdk/{pw-ai-DUQ9kG2D.js → pw-ai-DWcXZkbZ.js} +2 -2
- package/dist/plugin-sdk/{replies-DD0EJRXx.js → replies-B4fizDsZ.js} +1 -1
- package/dist/plugin-sdk/{reply-I6ZFg_UE.js → reply-DYEklKOc.js} +410 -93
- package/dist/plugin-sdk/{runner-IyZnVyIT.js → runner-D9c_MNRa.js} +2 -2
- package/dist/plugin-sdk/{send-Do_qdBr_.js → send-BAzimHH-.js} +1 -1
- package/dist/plugin-sdk/{send-DxXXcQ_o.js → send-BfqyNBU1.js} +1 -1
- package/dist/plugin-sdk/{send-Cxr9NnOd.js → send-CF7BhO8B.js} +1 -1
- package/dist/plugin-sdk/{send-SRQweHTE.js → send-CJIEYVXL.js} +1 -1
- package/dist/plugin-sdk/{send-Dd71o3sZ.js → send-DDpZS9jb.js} +1 -1
- package/dist/plugin-sdk/{session-LEZ8u8RX.js → session-BfTQAyNx.js} +1 -1
- package/dist/plugin-sdk/{skill-commands-DEfqC_kJ.js → skill-commands-C70yD9PL.js} +1 -1
- package/dist/plugin-sdk/{skills-C9DbB-Kp.js → skills-DuQ-xGok.js} +1 -1
- package/dist/plugin-sdk/{synthesis-bQ4DMwsj.js → synthesis-CaDiVumM.js} +16 -16
- package/dist/plugin-sdk/{web-C3YuHiih.js → web-DU4xaLZf.js} +20 -20
- package/dist/plugin-sdk/{whatsapp-actions-ClWxTG5S.js → whatsapp-actions-B_3do0s7.js} +2 -2
- package/dist/{plugins-cli-Co9cRpLe.js → plugins-cli-BlBz4J4q.js} +27 -27
- package/dist/{plugins-cli-MDYiXsRL.js → plugins-cli-CMz1ww6G.js} +28 -28
- package/dist/{program-context-m9C36Cuq.js → program-context-ByWsh-2T.js} +38 -38
- package/dist/{program-BWqVPm5t.js → program-dFZ5CYgD.js} +34 -34
- package/dist/{prompt-select-styled-DzjQVaDM.js → prompt-select-styled-BkwnTGjt.js} +15 -15
- package/dist/{prompt-select-styled-BKJVEVPk.js → prompt-select-styled-nywEyQoQ.js} +15 -15
- package/dist/{provider-auth-helpers-DaTqy1aA.js → provider-auth-helpers-CQ604vQz.js} +2 -2
- package/dist/{provider-auth-helpers-DYJ-0sNe.js → provider-auth-helpers-CgJE4rvP.js} +2 -2
- package/dist/{push-apns-_aeFBwsP.js → push-apns-CQlSAman.js} +1 -1
- package/dist/{push-apns-DdQlLTpV.js → push-apns-CbjqnCIn.js} +1 -1
- package/dist/{pw-ai-DSmC8YuO.js → pw-ai-B8IypzYb.js} +2 -2
- package/dist/{pw-ai-D9ZuX3U6.js → pw-ai-BYRvpqBg.js} +2 -2
- package/dist/{pw-ai-Bpp0J0PM.js → pw-ai-BjfsUmjw.js} +2 -2
- package/dist/{pw-ai-XSTIQILG.js → pw-ai-BwKx4yAQ.js} +2 -2
- package/dist/{qr-cli-DtHLOD1G.js → qr-cli-B7hz3Zj2.js} +1 -1
- package/dist/{qr-cli-Dq9G8FPl.js → qr-cli-Zf3abH3y.js} +1 -1
- package/dist/{register.agent-RNTVF_Nk.js → register.agent-BaLgPcGg.js} +33 -33
- package/dist/{register.agent-Hi0PN67T.js → register.agent-Hw7FS0tf.js} +35 -35
- package/dist/{register.configure-Dp-F_KKy.js → register.configure-BC-jW4EY.js} +37 -37
- package/dist/{register.configure-DE2Fg1dO.js → register.configure-D6bKnyeR.js} +38 -38
- package/dist/{register.maintenance-Bbd-g7nL.js → register.maintenance-7LeID6wA.js} +37 -37
- package/dist/{register.maintenance-QHRRhtsg.js → register.maintenance-DQ73gAH0.js} +35 -35
- package/dist/{register.message-B5uWOXev.js → register.message-D2Ubr7KY.js} +27 -27
- package/dist/{register.message-BvutRi1a.js → register.message-odamuJP5.js} +28 -28
- package/dist/{register.onboard-DRHuoRTm.js → register.onboard-Bv3BjuIZ.js} +33 -33
- package/dist/{register.onboard-CNOh527M.js → register.onboard-DwYvxoBx.js} +34 -34
- package/dist/{register.setup-Cj0oOZqL.js → register.setup-B6ylBd_s.js} +33 -33
- package/dist/{register.setup-D1ePW7dl.js → register.setup-BvNMj7Tn.js} +34 -34
- package/dist/{register.status-health-sessions-DfyO7JaH.js → register.status-health-sessions-Bx0oTY_P.js} +30 -30
- package/dist/{register.status-health-sessions-sf1XzcPo.js → register.status-health-sessions-Cr65vOYW.js} +32 -32
- package/dist/{register.subclis-Do_HdpUT.js → register.subclis-BzbNYOC6.js} +28 -28
- package/dist/{replies-IkylJ7lX.js → replies-A6SltFjk.js} +1 -1
- package/dist/{replies-CPhYC11m.js → replies-CsNZ9ImJ.js} +1 -1
- package/dist/{replies-BxvfG7Oj.js → replies-Dk0cnpHa.js} +1 -1
- package/dist/{replies-BV7oFP7Z.js → replies-Dmo0pSSf.js} +1 -1
- package/dist/{reply-DEub7xci.js → reply-Bymjl4wV.js} +417 -99
- package/dist/{routes-n7RUgOOW.js → routes-B3wAMCSw.js} +3 -3
- package/dist/{routes-Evl8vnTV.js → routes-DH2Da7TP.js} +3 -3
- package/dist/{rpc-3T_LjHn1.js → rpc-BPtq6BO7.js} +1 -1
- package/dist/{rpc-DeJsMHDF.js → rpc-DCB41PXt.js} +1 -1
- package/dist/{run-main-B_ZLo4JR.js → run-main-BAaL6QjO.js} +45 -45
- package/dist/{runner-CiThXXY3.js → runner-CY_8vnxU.js} +3 -3
- package/dist/{runner-B_6xBcPB.js → runner-Dbs3i8HW.js} +2 -2
- package/dist/{runner-CMvsDzah.js → runner-DzNo-GCz.js} +2 -2
- package/dist/{runner-BX-ap4VU.js → runner-Im1oOE3i.js} +3 -3
- package/dist/{sandbox-T9SO3y3b.js → sandbox-BTziorto.js} +5 -5
- package/dist/{sandbox-cli-MZJX1Ht6.js → sandbox-cli-BVpVuidu.js} +6 -6
- package/dist/{sandbox-cli-Bi8lblc6.js → sandbox-cli-rOwF1Yuh.js} +6 -6
- package/dist/{sandbox-BQ5LAIBQ.js → sandbox-wUKYI3zy.js} +5 -5
- package/dist/{security-cli-AZBZs6ww.js → security-cli-Bb4vR6LY.js} +9 -9
- package/dist/{security-cli-txjMZzBx.js → security-cli-Cg7KhJC7.js} +9 -9
- package/dist/{send-CcD9S5so.js → send-8Gw3YmOh.js} +1 -1
- package/dist/{send-BtbWvw2k.js → send-90t8KM2a.js} +1 -1
- package/dist/{send-DlYO3ExM.js → send-9ktd0CBZ.js} +1 -1
- package/dist/{send-C6-rN_Li.js → send-B0szkIfv.js} +1 -1
- package/dist/{send-CyPj_MLV.js → send-B7kMNQ-T.js} +1 -1
- package/dist/{send-DNqcjLyg.js → send-BbZtP8GJ.js} +1 -1
- package/dist/{send-C4IU_tV3.js → send-CQj8FBE3.js} +1 -1
- package/dist/{send-Bi8XhwOZ.js → send-Cxr6CgGf.js} +1 -1
- package/dist/{send-CfejAK2u.js → send-D27q8Oqo.js} +1 -1
- package/dist/{send-CupfdYEg.js → send-D4GfXudZ.js} +1 -1
- package/dist/{send-BPBFuPrC.js → send-D5Siw6wn.js} +1 -1
- package/dist/{send-BUBES34Y.js → send-DanpvmZQ.js} +1 -1
- package/dist/{send-CSkNKYIc.js → send-DbJsN7Lj.js} +1 -1
- package/dist/{send-dohExhb8.js → send-Dj6_LS_W.js} +1 -1
- package/dist/{send-vmIzYMwN.js → send-F2Cpm-SJ.js} +1 -1
- package/dist/{send-BaSqjfd_.js → send-aXMPprv9.js} +1 -1
- package/dist/{send-_CmB6CKB.js → send-depbZ9aA.js} +1 -1
- package/dist/{send-llekTUks.js → send-nRhkxbqX.js} +1 -1
- package/dist/{send-CoSPwGiI.js → send-t_DoGd2Y.js} +1 -1
- package/dist/{send-Dn1Pirhx.js → send-zMHWALCW.js} +1 -1
- package/dist/{server-context-CGMSzPWd.js → server-context-BPuBLXYG.js} +5 -5
- package/dist/{server-context-BkYSrDni.js → server-context-DQIkGNj2.js} +5 -5
- package/dist/{server-methods-C-itThFa.js → server-methods-C4j7W_qQ.js} +17 -17
- package/dist/{server-methods-P-ayY-6k.js → server-methods-Ds4i0Q2F.js} +16 -16
- package/dist/{server-node-events-D5ee96aZ.js → server-node-events-D0gNq3h6.js} +27 -27
- package/dist/{server-node-events-tvNFkev2.js → server-node-events-tbjGwgHF.js} +28 -28
- package/dist/{session-CifmyF9K.js → session-C4odFBc2.js} +1 -1
- package/dist/{session-bvybh7vL.js → session-CTTpxOx1.js} +1 -1
- package/dist/{session-CMploMg7.js → session-Cs58by4_.js} +1 -1
- package/dist/{session-DQimwuIx.js → session-d5_vMl76.js} +1 -1
- package/dist/{session-utils-DQ-t0PxQ.js → session-utils--1xVj2BC.js} +3 -3
- package/dist/{sessions-BIsirZy0.js → sessions-BikjOqQs.js} +3 -3
- package/dist/{sessions-BKn2DFYs.js → sessions-CVWGQEWu.js} +1 -1
- package/dist/{sessions-DCr5nAOw.js → sessions-CpDbQNFu.js} +1 -1
- package/dist/{shared-iaXjUnvo.js → shared-DHpMu95O.js} +1 -1
- package/dist/{shared-F4GNd-mC.js → shared-NCp143fJ.js} +1 -1
- package/dist/{skill-commands-CSF7Poen.js → skill-commands-QmLQo8Tj.js} +1 -1
- package/dist/{skills-XEbTRNYL.js → skills-D0hfZgFz.js} +1 -1
- package/dist/{skills-cli-BX1J5GLJ.js → skills-cli-6wYY0Xes.js} +1 -1
- package/dist/{skills-cli-CZgrqMPo.js → skills-cli-CkTThcTU.js} +1 -1
- package/dist/{status-BlTLrS6h.js → status-BdkVcIDX.js} +2 -2
- package/dist/{status-BqjF9Q9S.js → status-BfNSBvnp.js} +9 -9
- package/dist/{status-CfIkReeE.js → status-CGabcN-L.js} +10 -10
- package/dist/{status-DjvBeoYl.js → status-DpVc9DSG.js} +2 -2
- package/dist/{status.update-C5evp93A.js → status.update-BSaVYFQv.js} +1 -1
- package/dist/{status.update-BZnfRS2e.js → status.update-DoXJrRh6.js} +1 -1
- package/dist/{subagent-registry-DVYhalAo.js → subagent-registry-0D_yjdW5.js} +413 -95
- package/dist/{synthesis-DRXsTePq.js → synthesis-1f-yGtS7.js} +26 -26
- package/dist/{synthesis-y-Ozm8YK.js → synthesis-A2SfvBRN.js} +27 -27
- package/dist/{synthesis-DDQ5zAtf.js → synthesis-Bf2XnlvP.js} +16 -16
- package/dist/{synthesis-DgiYnjmZ.js → synthesis-DFQ_rjEF.js} +14 -14
- package/dist/{system-cli-IeefTiI1.js → system-cli-BmccUOcE.js} +3 -3
- package/dist/{system-cli-hjvWuxnn.js → system-cli-DJIrqTFB.js} +3 -3
- package/dist/{systemd-hints-CW7G2Z_2.js → systemd-hints-BbqPFaZ2.js} +1 -1
- package/dist/{systemd-hints-CcsN2P1C.js → systemd-hints-CfnF9j3s.js} +1 -1
- package/dist/{tui-DulNash-.js → tui-Cc1L4YuN.js} +4 -4
- package/dist/{tui-ByDc_eA-.js → tui-D5we2kr7.js} +4 -4
- package/dist/{tui-cli-cbFjX5ua.js → tui-cli-BHBp8e8w.js} +9 -9
- package/dist/{tui-cli-D--Wucil.js → tui-cli-CmVmkEzr.js} +9 -9
- package/dist/{unified-runner-BRmPenSK.js → unified-runner-j_Vn4K8X.js} +408 -90
- package/dist/{update-cli-5uhTWLns.js → update-cli-B3t4yUU6.js} +38 -38
- package/dist/{update-cli-BfvcUFky.js → update-cli-CWMGbbPM.js} +40 -40
- package/dist/{update-runner-DyENgdTM.js → update-runner-CfzHxbsu.js} +1 -1
- package/dist/{update-runner-22u8HOoq.js → update-runner-UfVHKth_.js} +1 -1
- package/dist/{web-Dbe1DwOE.js → web-BSf9H0_w.js} +17 -17
- package/dist/{web-s9NWpUYH.js → web-DCTvbYTy.js} +30 -30
- package/dist/{web-CqeSgivQ.js → web-DIDhNbES.js} +30 -30
- package/dist/{web-B8GaP73t.js → web-DaChMSyM.js} +19 -19
- package/dist/{webhooks-cli-9lyrT9S-.js → webhooks-cli-BPWIcZ4r.js} +1 -1
- package/dist/{webhooks-cli-C56QoA-d.js → webhooks-cli-DCw-yCzR.js} +1 -1
- package/dist/{whatsapp-actions-Dx8FkbIf.js → whatsapp-actions-B5o7eFIc.js} +2 -2
- package/dist/{whatsapp-actions-D5RBK0Cm.js → whatsapp-actions-CJkCiI_n.js} +2 -2
- package/dist/{whatsapp-actions-BV4mjN5j.js → whatsapp-actions-CkT3dnmD.js} +2 -2
- package/dist/{whatsapp-actions-BngdI8G3.js → whatsapp-actions-DRvUrapa.js} +2 -2
- package/dist/{with-timeout-7gwjaz5c.js → with-timeout-7M4c248g.js} +1 -1
- package/dist/{with-timeout-C1vsg3IF.js → with-timeout-BWETfI9T.js} +1 -1
- package/docs/capabilities.md +153 -0
- 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/1password/SKILL.md +1 -0
- package/skills/apple-notes/SKILL.md +1 -0
- package/skills/apple-reminders/SKILL.md +1 -0
- package/skills/bear-notes/SKILL.md +1 -0
- package/skills/blogwatcher/SKILL.md +1 -0
- package/skills/blucli/SKILL.md +1 -0
- package/skills/bluebubbles/SKILL.md +1 -0
- package/skills/camsnap/SKILL.md +1 -0
- package/skills/canvas/SKILL.md +6 -0
- package/skills/channel-routing/SKILL.md +42 -0
- package/skills/coding-agent/SKILL.md +1 -0
- package/skills/connect-email/SKILL.md +1 -0
- package/skills/discord/SKILL.md +1 -0
- package/skills/document-generation/SKILL.md +64 -0
- package/skills/eightctl/SKILL.md +1 -0
- package/skills/food-order/SKILL.md +1 -0
- package/skills/gemini/SKILL.md +1 -0
- package/skills/gh-issues/SKILL.md +1 -0
- package/skills/gifgrep/SKILL.md +1 -0
- package/skills/github/SKILL.md +1 -0
- package/skills/gog/SKILL.md +1 -0
- package/skills/goplaces/SKILL.md +1 -0
- package/skills/healthcheck/SKILL.md +1 -0
- package/skills/himalaya/SKILL.md +1 -0
- package/skills/imsg/SKILL.md +1 -0
- package/skills/long-task/SKILL.md +1 -0
- package/skills/mcporter/SKILL.md +1 -0
- package/skills/model-usage/SKILL.md +1 -0
- package/skills/nano-banana-pro/SKILL.md +1 -0
- package/skills/nano-pdf/SKILL.md +1 -0
- package/skills/notion/SKILL.md +1 -0
- package/skills/obsidian/SKILL.md +1 -0
- package/skills/openai-image-gen/SKILL.md +1 -0
- package/skills/openai-whisper/SKILL.md +1 -0
- package/skills/openai-whisper-api/SKILL.md +1 -0
- package/skills/openhue/SKILL.md +1 -0
- package/skills/oracle/SKILL.md +1 -0
- package/skills/ordercli/SKILL.md +1 -0
- package/skills/peekaboo/SKILL.md +1 -0
- package/skills/reactions-extensive/SKILL.md +30 -0
- package/skills/reactions-minimal/SKILL.md +31 -0
- package/skills/safe-edit/SKILL.md +51 -0
- package/skills/sag/SKILL.md +1 -0
- package/skills/session-logs/SKILL.md +1 -0
- package/skills/sherpa-onnx-tts/SKILL.md +1 -0
- package/skills/skill-creator/SKILL.md +1 -0
- package/skills/slack/SKILL.md +1 -0
- package/skills/songsee/SKILL.md +1 -0
- package/skills/sonoscli/SKILL.md +1 -0
- package/skills/spotify-player/SKILL.md +1 -0
- package/skills/summarize/SKILL.md +1 -0
- package/skills/symihub/SKILL.md +1 -0
- package/skills/things-mac/SKILL.md +1 -0
- package/skills/tmux/SKILL.md +1 -0
- package/skills/tool-narration/SKILL.md +40 -0
- package/skills/trello/SKILL.md +1 -0
- package/skills/verify-output/SKILL.md +47 -0
- package/skills/video-frames/SKILL.md +1 -0
- package/skills/voice-call/SKILL.md +1 -0
- package/skills/wacli/SKILL.md +1 -0
- package/skills/weather/SKILL.md +1 -0
- package/skills/xurl/SKILL.md +1 -0
|
@@ -11,32 +11,33 @@ import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-po
|
|
|
11
11
|
import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-CnvkCEt-.js";
|
|
12
12
|
import { a as buildModelAliasLines, n as resolveModel } from "./model-yI45t1OQ.js";
|
|
13
13
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-Do3xMEtM.js";
|
|
14
|
+
import { l as parseFrontmatterBlock } from "./frontmatter-B8duUx_6.js";
|
|
14
15
|
import { r as isPathInsideWithRealpath } from "./scan-paths-ppKrtZ9U.js";
|
|
15
16
|
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-D_oCiaQn.js";
|
|
16
17
|
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-D5bnO5uA.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-
|
|
18
|
+
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-Gfhqs66L.js";
|
|
18
19
|
import { Rt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-CJIMV1WD.js";
|
|
19
|
-
import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-
|
|
20
|
+
import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-BCTAmPye.js";
|
|
20
21
|
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
22
|
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-
|
|
23
|
+
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-CpDbQNFu.js";
|
|
23
24
|
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
25
|
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
26
|
import { a as logWebSelfId, i as getWebAuthAgeMs, m as webAuthExists, n as resolveWhatsAppAccount, o as logoutWeb, u as readWebSelfId } from "./accounts-D9ITgITj.js";
|
|
26
27
|
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-
|
|
28
|
+
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-t_DoGd2Y.js";
|
|
29
|
+
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-8Gw3YmOh.js";
|
|
30
|
+
import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-BWETfI9T.js";
|
|
31
|
+
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-DaRQn5Ai.js";
|
|
31
32
|
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
33
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CIjIGxEE.js";
|
|
33
34
|
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-
|
|
35
|
+
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-Cxr6CgGf.js";
|
|
35
36
|
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-
|
|
37
|
+
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-BlL08R8g.js";
|
|
38
|
+
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-BTziorto.js";
|
|
39
|
+
import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-CO5ZhkcZ.js";
|
|
40
|
+
import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-DQIkGNj2.js";
|
|
40
41
|
import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-Ba_ROWsq.js";
|
|
41
42
|
import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-OWKu4tXF.js";
|
|
42
43
|
import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-Ixuyn7h8.js";
|
|
@@ -48,10 +49,10 @@ import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveS
|
|
|
48
49
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-D5O01TlD.js";
|
|
49
50
|
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-CVLISeRT.js";
|
|
50
51
|
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-
|
|
52
|
+
import { t as ensureSymiModelsJson } from "./models-config-frWb8fDT.js";
|
|
52
53
|
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-
|
|
54
|
-
import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-
|
|
54
|
+
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-Cuhhh4qN.js";
|
|
55
|
+
import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-BsfrsBPw.js";
|
|
55
56
|
import { f as runTasksWithConcurrency } from "./internal-C2jxeHS9.js";
|
|
56
57
|
import { n as retryAsync } from "./retry-C4Q_VPOo.js";
|
|
57
58
|
import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-Co0LcWKH.js";
|
|
@@ -63,13 +64,13 @@ import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMedia
|
|
|
63
64
|
import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-BRlF7czi.js";
|
|
64
65
|
import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-Ee-evDmm.js";
|
|
65
66
|
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-CsxsFveo.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-
|
|
67
|
+
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-dYtWZNKT.js";
|
|
67
68
|
import { n as resolveToolDisplay } from "./tool-display-I4rDxv8J.js";
|
|
68
69
|
import { n as formatTimeAgo } from "./format-relative-BDwAggS5.js";
|
|
69
70
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-DZozDZN-.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
|
|
71
|
+
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-CY_8vnxU.js";
|
|
72
|
+
import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-DRqmevpR.js";
|
|
73
|
+
import { a as loadCombinedSessionStoreForGateway, u as lookupContextTokens } from "./session-utils--1xVj2BC.js";
|
|
73
74
|
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-DrX4xCNq.js";
|
|
74
75
|
import { i as readChannelAllowFromStore, l as listPairingChannels, o as removeChannelAllowFromStoreEntry, s as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-B2viSnRj.js";
|
|
75
76
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-Bsts3MRD.js";
|
|
@@ -83,19 +84,19 @@ import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChan
|
|
|
83
84
|
import { n as normalizePollInput } from "./polls-Cm1-n4jF.js";
|
|
84
85
|
import { t as convertMarkdownTables } from "./tables-DL_wkymg.js";
|
|
85
86
|
import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-l9TQg-aP.js";
|
|
86
|
-
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-
|
|
87
|
+
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-DnNPjFvU.js";
|
|
87
88
|
import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-BDqsqTKI.js";
|
|
88
89
|
import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-CmPVNjnf.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-
|
|
90
|
+
import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-DbJsN7Lj.js";
|
|
91
|
+
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-D4GfXudZ.js";
|
|
91
92
|
import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-BFA2RukR.js";
|
|
92
93
|
import { t as parseTimeoutMs } from "./parse-timeout-FUO1ff14.js";
|
|
93
94
|
import { t as makeProxyFetch } from "./proxy-GY5xhMp0.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-
|
|
95
|
+
import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-Dk0cnpHa.js";
|
|
96
|
+
import { r as detectBinary } from "./onboard-helpers-Ca4KojJF.js";
|
|
96
97
|
import { t as resolvePairingIdLabel } from "./pairing-labels-BHx_CdbP.js";
|
|
97
98
|
import { t as getActiveWebListener } from "./active-listener-DEi7sEFa.js";
|
|
98
|
-
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-
|
|
99
|
+
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-BFsWV2pS.js";
|
|
99
100
|
import { createRequire } from "node:module";
|
|
100
101
|
import { execFileSync, spawn, spawnSync } from "node:child_process";
|
|
101
102
|
import os, { homedir } from "node:os";
|
|
@@ -14762,6 +14763,7 @@ function sanitizeForPromptLiteral(value) {
|
|
|
14762
14763
|
//#region src/agents/system-prompt.ts
|
|
14763
14764
|
function buildSkillsSection(params) {
|
|
14764
14765
|
if (params.isMinimal) return [];
|
|
14766
|
+
if (params.dropCatalog) return [];
|
|
14765
14767
|
const trimmed = params.skillsPrompt?.trim();
|
|
14766
14768
|
if (!trimmed) return [];
|
|
14767
14769
|
return [
|
|
@@ -14866,7 +14868,7 @@ function buildVoiceSection(params) {
|
|
|
14866
14868
|
];
|
|
14867
14869
|
}
|
|
14868
14870
|
function buildVerifyYourWorkSection(params) {
|
|
14869
|
-
if (params.isMinimal) return [];
|
|
14871
|
+
if (params.isMinimal || params.compactMode) return [];
|
|
14870
14872
|
const exec = params.execToolName;
|
|
14871
14873
|
const read = params.readToolName;
|
|
14872
14874
|
return [
|
|
@@ -15055,6 +15057,7 @@ function buildAgentSystemPrompt(params) {
|
|
|
15055
15057
|
const promptMode = params.promptMode ?? "full";
|
|
15056
15058
|
const isMinimal = promptMode === "minimal" || promptMode === "none";
|
|
15057
15059
|
const isCoding = promptMode === "coding";
|
|
15060
|
+
const compactMode = params.compactMode === true;
|
|
15058
15061
|
const sandboxContainerWorkspace = params.sandboxInfo?.containerWorkspaceDir?.trim();
|
|
15059
15062
|
const sanitizedWorkspaceDir = sanitizeForPromptLiteral(params.workspaceDir);
|
|
15060
15063
|
const sanitizedSandboxContainerWorkspace = sandboxContainerWorkspace ? sanitizeForPromptLiteral(sandboxContainerWorkspace) : "";
|
|
@@ -15070,7 +15073,8 @@ function buildAgentSystemPrompt(params) {
|
|
|
15070
15073
|
const skillsSection = buildSkillsSection({
|
|
15071
15074
|
skillsPrompt,
|
|
15072
15075
|
isMinimal,
|
|
15073
|
-
readToolName
|
|
15076
|
+
readToolName,
|
|
15077
|
+
dropCatalog: compactMode && (params.skillsDiscoveryMode === "jit" || params.skillsDiscoveryMode === "hybrid")
|
|
15074
15078
|
});
|
|
15075
15079
|
const memorySection = buildMemorySection({
|
|
15076
15080
|
isMinimal,
|
|
@@ -15113,39 +15117,43 @@ function buildAgentSystemPrompt(params) {
|
|
|
15113
15117
|
"If a task is more complex or takes longer, spawn a sub-agent. Completion is push-based: it will auto-announce when done.",
|
|
15114
15118
|
"Do not poll `subagents list` / `sessions_list` in a loop; only check status on-demand (for intervention, debugging, or when explicitly asked).",
|
|
15115
15119
|
"",
|
|
15116
|
-
|
|
15117
|
-
|
|
15118
|
-
|
|
15119
|
-
|
|
15120
|
-
|
|
15121
|
-
|
|
15122
|
-
|
|
15123
|
-
|
|
15124
|
-
|
|
15125
|
-
|
|
15126
|
-
|
|
15127
|
-
|
|
15128
|
-
|
|
15129
|
-
|
|
15120
|
+
...compactMode ? [] : [
|
|
15121
|
+
"## Tool Call Style",
|
|
15122
|
+
"Default: do not narrate routine, low-risk tool calls (just call the tool).",
|
|
15123
|
+
"Narrate only when it helps: multi-step work, complex/challenging problems, sensitive actions (e.g., deletions), or when the user explicitly asks.",
|
|
15124
|
+
"Keep narration brief and value-dense; avoid repeating obvious steps.",
|
|
15125
|
+
"Use plain human language for narration unless in a technical context.",
|
|
15126
|
+
"",
|
|
15127
|
+
"## Edit Tool Best Practices",
|
|
15128
|
+
"When using the edit tool, the oldText must match the file EXACTLY (whitespace, indentation, and all).",
|
|
15129
|
+
"To avoid match failures:",
|
|
15130
|
+
"- Use the SHORTEST unique snippet that identifies the edit location (1-3 lines). Do NOT paste large blocks.",
|
|
15131
|
+
"- ALWAYS read the file first, then copy the exact text from the read output for oldText.",
|
|
15132
|
+
"- If an edit fails with 'Could not find the exact text', re-read the file and retry with the exact text from the fresh read. Do NOT move on or fix a different issue.",
|
|
15133
|
+
"- Prefer lines with distinctive content (function names, unique strings) over generic code (braces, blank lines).",
|
|
15134
|
+
""
|
|
15135
|
+
],
|
|
15130
15136
|
...safetySection,
|
|
15131
|
-
"
|
|
15132
|
-
|
|
15133
|
-
|
|
15134
|
-
|
|
15135
|
-
|
|
15136
|
-
|
|
15137
|
-
|
|
15138
|
-
|
|
15139
|
-
|
|
15137
|
+
...compactMode ? ["For Symi CLI commands, ask the user to run `symi help` and paste the output.", ""] : [
|
|
15138
|
+
"## Symi CLI Quick Reference",
|
|
15139
|
+
"Symi is controlled via subcommands. Do not invent commands.",
|
|
15140
|
+
"To manage the Gateway daemon service (start/stop/restart):",
|
|
15141
|
+
"- symi gateway status",
|
|
15142
|
+
"- symi gateway start",
|
|
15143
|
+
"- symi gateway stop",
|
|
15144
|
+
"- symi gateway restart",
|
|
15145
|
+
"If unsure, ask the user to run `symi help` (or `symi gateway --help`) and paste the output.",
|
|
15146
|
+
""
|
|
15147
|
+
],
|
|
15140
15148
|
...skillsSection,
|
|
15141
15149
|
...memorySection,
|
|
15142
|
-
hasGateway && !isMinimal && !isCoding ? "## Symi Self-Update" : "",
|
|
15143
|
-
hasGateway && !isMinimal && !isCoding ? [
|
|
15150
|
+
hasGateway && !isMinimal && !isCoding && !compactMode ? "## Symi Self-Update" : "",
|
|
15151
|
+
hasGateway && !isMinimal && !isCoding && !compactMode ? [
|
|
15144
15152
|
"Get Updates (self-update) is ONLY allowed when the user explicitly asks for it.",
|
|
15145
15153
|
"Do not run config.apply or update.run unless the user explicitly requests an update or config change; if it's not explicit, ask first.",
|
|
15146
15154
|
"Actions: config.get, config.schema, config.apply (validate + write full config, then restart), update.run (update deps or git, then restart).",
|
|
15147
15155
|
"After restart, Symi pings the last active session automatically."
|
|
15148
|
-
].join("\n") : "",
|
|
15156
|
+
].join("\n") : hasGateway && !isMinimal && !isCoding && compactMode ? "Gateway destructive actions (config.apply, config.patch, update.run) require explicit user authorization via userRequestAcknowledgment — never invoke speculatively." : "",
|
|
15149
15157
|
hasGateway && !isMinimal && !isCoding ? "" : "",
|
|
15150
15158
|
"",
|
|
15151
15159
|
params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal && !isCoding ? "## Model Aliases" : "",
|
|
@@ -15162,7 +15170,8 @@ function buildAgentSystemPrompt(params) {
|
|
|
15162
15170
|
...buildVerifyYourWorkSection({
|
|
15163
15171
|
isMinimal,
|
|
15164
15172
|
execToolName,
|
|
15165
|
-
readToolName
|
|
15173
|
+
readToolName,
|
|
15174
|
+
compactMode
|
|
15166
15175
|
}),
|
|
15167
15176
|
params.sandboxInfo?.enabled ? "## Sandbox" : "",
|
|
15168
15177
|
params.sandboxInfo?.enabled ? [
|
|
@@ -15208,23 +15217,26 @@ function buildAgentSystemPrompt(params) {
|
|
|
15208
15217
|
}
|
|
15209
15218
|
if (params.reactionGuidance) {
|
|
15210
15219
|
const { level, channel } = params.reactionGuidance;
|
|
15211
|
-
|
|
15212
|
-
|
|
15213
|
-
|
|
15214
|
-
|
|
15215
|
-
|
|
15216
|
-
|
|
15217
|
-
|
|
15218
|
-
|
|
15219
|
-
|
|
15220
|
-
"
|
|
15221
|
-
|
|
15222
|
-
|
|
15223
|
-
|
|
15224
|
-
|
|
15225
|
-
|
|
15226
|
-
|
|
15227
|
-
|
|
15220
|
+
if (compactMode) lines.push("## Reactions", `Reactions for ${channel} are in ${level.toUpperCase()} mode — see the reactions-${level} skill (auto-loaded).`, "");
|
|
15221
|
+
else {
|
|
15222
|
+
const guidanceText = level === "minimal" ? [
|
|
15223
|
+
`Reactions are enabled for ${channel} in MINIMAL mode.`,
|
|
15224
|
+
"React ONLY when truly relevant:",
|
|
15225
|
+
"- Acknowledge important user requests or confirmations",
|
|
15226
|
+
"- Express genuine sentiment (humor, appreciation) sparingly",
|
|
15227
|
+
"- Avoid reacting to routine messages or your own replies",
|
|
15228
|
+
"Guideline: at most 1 reaction per 5-10 exchanges."
|
|
15229
|
+
].join("\n") : [
|
|
15230
|
+
`Reactions are enabled for ${channel} in EXTENSIVE mode.`,
|
|
15231
|
+
"Feel free to react liberally:",
|
|
15232
|
+
"- Acknowledge messages with appropriate emojis",
|
|
15233
|
+
"- Express sentiment and personality through reactions",
|
|
15234
|
+
"- React to interesting content, humor, or notable events",
|
|
15235
|
+
"- Use reactions to confirm understanding or agreement",
|
|
15236
|
+
"Guideline: react whenever it feels natural."
|
|
15237
|
+
].join("\n");
|
|
15238
|
+
lines.push("## Reactions", guidanceText, "");
|
|
15239
|
+
}
|
|
15228
15240
|
}
|
|
15229
15241
|
if (reasoningHint) lines.push("## Reasoning Format", reasoningHint, "");
|
|
15230
15242
|
const validContextFiles = (params.contextFiles ?? []).filter((file) => typeof file.path === "string" && file.path.trim().length > 0);
|
|
@@ -20470,7 +20482,7 @@ async function routeReply(params) {
|
|
|
20470
20482
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
20471
20483
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
20472
20484
|
try {
|
|
20473
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
20485
|
+
const { deliverOutboundPayloads } = await import("./deliver-DaRQn5Ai.js").then((n) => n.n);
|
|
20474
20486
|
return {
|
|
20475
20487
|
ok: true,
|
|
20476
20488
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -29482,6 +29494,231 @@ function createSessionsSpawnTool(opts) {
|
|
|
29482
29494
|
};
|
|
29483
29495
|
}
|
|
29484
29496
|
|
|
29497
|
+
//#endregion
|
|
29498
|
+
//#region src/agents/skills/triggers.ts
|
|
29499
|
+
const QUOTE_RE = /^["'`](.*)["'`]$/;
|
|
29500
|
+
const ARRAY_FORM_RE = /^\[(.*)\]$/s;
|
|
29501
|
+
function stripWrappingQuotes(s) {
|
|
29502
|
+
const m = s.trim().match(QUOTE_RE);
|
|
29503
|
+
return m ? m[1] : s.trim();
|
|
29504
|
+
}
|
|
29505
|
+
/** Parse a single trigger value, dropping empty / whitespace-only entries. */
|
|
29506
|
+
function cleanTrigger(raw) {
|
|
29507
|
+
const trimmed = stripWrappingQuotes(raw).toLowerCase();
|
|
29508
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
29509
|
+
}
|
|
29510
|
+
/**
|
|
29511
|
+
* Parse the value of a `triggers:` frontmatter field into a string[].
|
|
29512
|
+
* Accepts both inline-array form `[a, b, "c d"]` and YAML-list form
|
|
29513
|
+
* (multiline with leading hyphens). Returns deduped lowercased trigger
|
|
29514
|
+
* strings, or empty array on unparseable / missing input.
|
|
29515
|
+
*/
|
|
29516
|
+
function parseTriggersValue(raw) {
|
|
29517
|
+
if (typeof raw !== "string") return [];
|
|
29518
|
+
const trimmed = raw.trim();
|
|
29519
|
+
if (!trimmed) return [];
|
|
29520
|
+
const items = [];
|
|
29521
|
+
const arrayMatch = trimmed.match(ARRAY_FORM_RE);
|
|
29522
|
+
if (arrayMatch) {
|
|
29523
|
+
const inner = arrayMatch[1];
|
|
29524
|
+
let buf = "";
|
|
29525
|
+
let inQuote = null;
|
|
29526
|
+
for (const ch of inner) {
|
|
29527
|
+
if (inQuote) {
|
|
29528
|
+
if (ch === inQuote) inQuote = null;
|
|
29529
|
+
else buf += ch;
|
|
29530
|
+
continue;
|
|
29531
|
+
}
|
|
29532
|
+
if (ch === "\"" || ch === "'") {
|
|
29533
|
+
inQuote = ch;
|
|
29534
|
+
continue;
|
|
29535
|
+
}
|
|
29536
|
+
if (ch === ",") {
|
|
29537
|
+
const cleaned = cleanTrigger(buf);
|
|
29538
|
+
if (cleaned) items.push(cleaned);
|
|
29539
|
+
buf = "";
|
|
29540
|
+
continue;
|
|
29541
|
+
}
|
|
29542
|
+
buf += ch;
|
|
29543
|
+
}
|
|
29544
|
+
const cleaned = cleanTrigger(buf);
|
|
29545
|
+
if (cleaned) items.push(cleaned);
|
|
29546
|
+
} else for (const line of trimmed.split("\n")) {
|
|
29547
|
+
const ltrim = line.trimStart();
|
|
29548
|
+
if (ltrim.startsWith("- ")) {
|
|
29549
|
+
const cleaned = cleanTrigger(ltrim.slice(2));
|
|
29550
|
+
if (cleaned) items.push(cleaned);
|
|
29551
|
+
} else if (ltrim && !ltrim.startsWith("#")) {
|
|
29552
|
+
const cleaned = cleanTrigger(ltrim);
|
|
29553
|
+
if (cleaned) items.push(cleaned);
|
|
29554
|
+
}
|
|
29555
|
+
}
|
|
29556
|
+
const seen = /* @__PURE__ */ new Set();
|
|
29557
|
+
const out = [];
|
|
29558
|
+
for (const t of items) if (!seen.has(t)) {
|
|
29559
|
+
seen.add(t);
|
|
29560
|
+
out.push(t);
|
|
29561
|
+
}
|
|
29562
|
+
return out;
|
|
29563
|
+
}
|
|
29564
|
+
/**
|
|
29565
|
+
* Extract triggers from a parsed frontmatter record. Returns empty array
|
|
29566
|
+
* when the field is absent or unparseable.
|
|
29567
|
+
*/
|
|
29568
|
+
function getSkillTriggers(frontmatter) {
|
|
29569
|
+
return parseTriggersValue(frontmatter.triggers);
|
|
29570
|
+
}
|
|
29571
|
+
|
|
29572
|
+
//#endregion
|
|
29573
|
+
//#region src/agents/tools/skill-search-tool.ts
|
|
29574
|
+
const SkillSearchToolSchema = Type.Object({
|
|
29575
|
+
query: Type.String({
|
|
29576
|
+
minLength: 1,
|
|
29577
|
+
description: "Intent description (2-8 words). Match by trigger keywords first, then description text."
|
|
29578
|
+
}),
|
|
29579
|
+
limit: Type.Optional(Type.Number({
|
|
29580
|
+
minimum: 1,
|
|
29581
|
+
maximum: 10,
|
|
29582
|
+
description: "Max results to return (default 5, capped at 10)."
|
|
29583
|
+
}))
|
|
29584
|
+
});
|
|
29585
|
+
const CACHE_TTL_MS = 6e4;
|
|
29586
|
+
const SAFE_NAME_RE = /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/;
|
|
29587
|
+
function loadSkillFromDir(dir, source) {
|
|
29588
|
+
const name = path.basename(dir);
|
|
29589
|
+
if (!SAFE_NAME_RE.test(name)) return null;
|
|
29590
|
+
const file = path.join(dir, "SKILL.md");
|
|
29591
|
+
let raw;
|
|
29592
|
+
try {
|
|
29593
|
+
if (!fs.statSync(file).isFile()) return null;
|
|
29594
|
+
raw = fs.readFileSync(file, "utf8");
|
|
29595
|
+
} catch {
|
|
29596
|
+
return null;
|
|
29597
|
+
}
|
|
29598
|
+
const fm = parseFrontmatterBlock(raw);
|
|
29599
|
+
return {
|
|
29600
|
+
name,
|
|
29601
|
+
description: (fm.description ?? "").trim(),
|
|
29602
|
+
path: file,
|
|
29603
|
+
triggers: getSkillTriggers(fm),
|
|
29604
|
+
source
|
|
29605
|
+
};
|
|
29606
|
+
}
|
|
29607
|
+
function listSkillDirs(root) {
|
|
29608
|
+
const skillsDir = path.join(root, "skills");
|
|
29609
|
+
let entries;
|
|
29610
|
+
try {
|
|
29611
|
+
entries = fs.readdirSync(skillsDir, { withFileTypes: true });
|
|
29612
|
+
} catch {
|
|
29613
|
+
return [];
|
|
29614
|
+
}
|
|
29615
|
+
return entries.filter((e) => e.isDirectory()).map((e) => path.join(skillsDir, e.name));
|
|
29616
|
+
}
|
|
29617
|
+
let cachedPackageRoot$1;
|
|
29618
|
+
const cachePerWorkspace = /* @__PURE__ */ new Map();
|
|
29619
|
+
function getPackageRoot$1() {
|
|
29620
|
+
if (cachedPackageRoot$1 === void 0) cachedPackageRoot$1 = resolveSymiPackageRootSync({});
|
|
29621
|
+
return cachedPackageRoot$1;
|
|
29622
|
+
}
|
|
29623
|
+
function loadAllSkills(workspaceDir) {
|
|
29624
|
+
const cacheKey = workspaceDir ?? "";
|
|
29625
|
+
const now = Date.now();
|
|
29626
|
+
const existing = cachePerWorkspace.get(cacheKey);
|
|
29627
|
+
if (existing && now - existing.loadedAt < CACHE_TTL_MS) return existing.skills;
|
|
29628
|
+
const seen = /* @__PURE__ */ new Map();
|
|
29629
|
+
if (workspaceDir) for (const dir of listSkillDirs(workspaceDir)) {
|
|
29630
|
+
const skill = loadSkillFromDir(dir, "workspace");
|
|
29631
|
+
if (skill && !seen.has(skill.name)) seen.set(skill.name, skill);
|
|
29632
|
+
}
|
|
29633
|
+
const packageRoot = getPackageRoot$1();
|
|
29634
|
+
if (packageRoot) for (const dir of listSkillDirs(packageRoot)) {
|
|
29635
|
+
const skill = loadSkillFromDir(dir, "bundled");
|
|
29636
|
+
if (skill && !seen.has(skill.name)) seen.set(skill.name, skill);
|
|
29637
|
+
}
|
|
29638
|
+
const skills = [...seen.values()];
|
|
29639
|
+
cachePerWorkspace.set(cacheKey, {
|
|
29640
|
+
skills,
|
|
29641
|
+
loadedAt: now
|
|
29642
|
+
});
|
|
29643
|
+
return skills;
|
|
29644
|
+
}
|
|
29645
|
+
const TOKEN_SPLIT_RE = /[^\w/]+/;
|
|
29646
|
+
function tokenizeQuery(raw) {
|
|
29647
|
+
return raw.toLowerCase().split(TOKEN_SPLIT_RE).filter((t) => t.length >= 2);
|
|
29648
|
+
}
|
|
29649
|
+
/**
|
|
29650
|
+
* Score a query against one skill's triggers + description.
|
|
29651
|
+
* - Trigger score: ratio of query tokens that appear in the trigger set.
|
|
29652
|
+
* - FTS score: 0.4 × ratio of query tokens that appear in the description
|
|
29653
|
+
* (case-insensitive substring match).
|
|
29654
|
+
* - Final = max(trigger, fts) so trigger matches always beat descriptions.
|
|
29655
|
+
* - Returns 0 for "no signal at all" (caller should drop these).
|
|
29656
|
+
*/
|
|
29657
|
+
function scoreSkillMatch(skill, queryTokens) {
|
|
29658
|
+
if (queryTokens.length === 0) return 0;
|
|
29659
|
+
const triggerSet = new Set(skill.triggers.map((t) => t.toLowerCase()));
|
|
29660
|
+
const description = skill.description.toLowerCase();
|
|
29661
|
+
let triggerHits = 0;
|
|
29662
|
+
let ftsHits = 0;
|
|
29663
|
+
for (const token of queryTokens) if (triggerSet.has(token)) triggerHits += 1;
|
|
29664
|
+
else if (description.includes(token)) ftsHits += 1;
|
|
29665
|
+
const triggerScore = triggerHits / queryTokens.length;
|
|
29666
|
+
const ftsScore = ftsHits / queryTokens.length * .4;
|
|
29667
|
+
return Math.max(triggerScore, ftsScore);
|
|
29668
|
+
}
|
|
29669
|
+
/**
|
|
29670
|
+
* Pure-function search; exported for testing without going through the
|
|
29671
|
+
* tool execute wrapper.
|
|
29672
|
+
*/
|
|
29673
|
+
function searchSkills(query, limit, workspaceDir) {
|
|
29674
|
+
const tokens = tokenizeQuery(query);
|
|
29675
|
+
if (tokens.length === 0) return [];
|
|
29676
|
+
const all = loadAllSkills(workspaceDir);
|
|
29677
|
+
const scored = [];
|
|
29678
|
+
for (const skill of all) {
|
|
29679
|
+
const score = scoreSkillMatch(skill, tokens);
|
|
29680
|
+
if (score > 0) scored.push({
|
|
29681
|
+
name: skill.name,
|
|
29682
|
+
description: skill.description,
|
|
29683
|
+
path: skill.path,
|
|
29684
|
+
score
|
|
29685
|
+
});
|
|
29686
|
+
}
|
|
29687
|
+
scored.sort((a, b) => b.score - a.score || a.name.localeCompare(b.name));
|
|
29688
|
+
return scored.slice(0, limit);
|
|
29689
|
+
}
|
|
29690
|
+
function createSkillSearchTool(opts) {
|
|
29691
|
+
return {
|
|
29692
|
+
name: "skill_search",
|
|
29693
|
+
label: "skill_search",
|
|
29694
|
+
description: "Find skills relevant to the current task. Returns matching skills with name/description/path; `read` the SKILL.md to apply. Call before non-trivial tool work — search by intent ('connect email', 'long task') not tool name.",
|
|
29695
|
+
parameters: SkillSearchToolSchema,
|
|
29696
|
+
execute: async (_toolCallId, args) => {
|
|
29697
|
+
const params = args;
|
|
29698
|
+
const query = typeof params.query === "string" ? params.query.trim() : "";
|
|
29699
|
+
if (!query) return jsonResult({
|
|
29700
|
+
ok: false,
|
|
29701
|
+
error: "skill_search requires a non-empty `query` string."
|
|
29702
|
+
});
|
|
29703
|
+
const limit = typeof params.limit === "number" && Number.isFinite(params.limit) ? Math.min(10, Math.max(1, Math.floor(params.limit))) : 5;
|
|
29704
|
+
try {
|
|
29705
|
+
return jsonResult({
|
|
29706
|
+
ok: true,
|
|
29707
|
+
query,
|
|
29708
|
+
matches: searchSkills(query, limit, opts?.workspaceDir)
|
|
29709
|
+
});
|
|
29710
|
+
} catch (err) {
|
|
29711
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
29712
|
+
logWarn(`skill_search failed: ${message}`);
|
|
29713
|
+
return jsonResult({
|
|
29714
|
+
ok: false,
|
|
29715
|
+
error: message
|
|
29716
|
+
});
|
|
29717
|
+
}
|
|
29718
|
+
}
|
|
29719
|
+
};
|
|
29720
|
+
}
|
|
29721
|
+
|
|
29485
29722
|
//#endregion
|
|
29486
29723
|
//#region src/agents/tools/subagents-tool.ts
|
|
29487
29724
|
const SUBAGENT_ACTIONS = [
|
|
@@ -31542,6 +31779,7 @@ function createSymiTools(options) {
|
|
|
31542
31779
|
createCronTool({ agentSessionKey: options?.agentSessionKey }),
|
|
31543
31780
|
createTaskListTool({ workspaceDir }),
|
|
31544
31781
|
createTaskCancelTool({ workspaceDir }),
|
|
31782
|
+
createSkillSearchTool({ workspaceDir }),
|
|
31545
31783
|
...messageTool ? [messageTool] : [],
|
|
31546
31784
|
createTtsTool({
|
|
31547
31785
|
agentChannel: options?.agentChannel,
|
|
@@ -39646,6 +39884,71 @@ function buildAutoLoadedSkillsBlock(opts) {
|
|
|
39646
39884
|
].join("\n");
|
|
39647
39885
|
}
|
|
39648
39886
|
|
|
39887
|
+
//#endregion
|
|
39888
|
+
//#region src/agents/system-prompt-skills-jit.ts
|
|
39889
|
+
const MAX_ANCHOR_DESCRIPTION_CHARS = 100;
|
|
39890
|
+
const MAX_AUTO_INJECT_RESULTS = 3;
|
|
39891
|
+
const MAX_AUTO_INJECT_TOTAL_CHARS = 600;
|
|
39892
|
+
/**
|
|
39893
|
+
* Build the anchor list block. Returns "" when no anchor list configured
|
|
39894
|
+
* or in preload mode (anchor list adds value only in jit/hybrid).
|
|
39895
|
+
*/
|
|
39896
|
+
function buildAnchorListBlock(opts) {
|
|
39897
|
+
if (opts.minimalMode) return "";
|
|
39898
|
+
if (opts.discoveryMode !== "jit" && opts.discoveryMode !== "hybrid") return "";
|
|
39899
|
+
const names = (opts.anchorList ?? []).filter((n) => typeof n === "string" && n.trim().length > 0);
|
|
39900
|
+
if (names.length === 0) return "";
|
|
39901
|
+
const lines = [];
|
|
39902
|
+
for (const name of names) {
|
|
39903
|
+
const description = searchSkills(name, 1, opts.workspaceDir)[0]?.description.trim() ?? "";
|
|
39904
|
+
const truncated = description.length > MAX_ANCHOR_DESCRIPTION_CHARS ? `${description.slice(0, MAX_ANCHOR_DESCRIPTION_CHARS - 1)}…` : description;
|
|
39905
|
+
lines.push(truncated ? `- ${name}: ${truncated}` : `- ${name}`);
|
|
39906
|
+
}
|
|
39907
|
+
return [
|
|
39908
|
+
"",
|
|
39909
|
+
"## Anchor Skills",
|
|
39910
|
+
"These skills are always available. Read their SKILL.md via `read` if relevant. For full discovery use the `skill_search` tool.",
|
|
39911
|
+
lines.join("\n"),
|
|
39912
|
+
""
|
|
39913
|
+
].join("\n");
|
|
39914
|
+
}
|
|
39915
|
+
/**
|
|
39916
|
+
* Build the auto-injected matches block based on the user message triggers.
|
|
39917
|
+
* Returns "" when discoveryMode doesn't ask for it, no message available,
|
|
39918
|
+
* no matches found, or in minimal mode.
|
|
39919
|
+
*/
|
|
39920
|
+
function buildAutoInjectBlock(opts) {
|
|
39921
|
+
if (opts.minimalMode) return "";
|
|
39922
|
+
if (opts.discoveryMode !== "jit" && opts.discoveryMode !== "hybrid") return "";
|
|
39923
|
+
const message = (opts.userMessage ?? "").trim();
|
|
39924
|
+
if (!message) return "";
|
|
39925
|
+
const matches = searchSkills(message, MAX_AUTO_INJECT_RESULTS, opts.workspaceDir);
|
|
39926
|
+
if (matches.length === 0) return "";
|
|
39927
|
+
const lines = [];
|
|
39928
|
+
let total = 0;
|
|
39929
|
+
for (const match of matches) {
|
|
39930
|
+
const description = match.description.trim();
|
|
39931
|
+
const truncated = description.length > MAX_ANCHOR_DESCRIPTION_CHARS ? `${description.slice(0, MAX_ANCHOR_DESCRIPTION_CHARS - 1)}…` : description;
|
|
39932
|
+
const skillRef = path.basename(path.dirname(match.path));
|
|
39933
|
+
const line = truncated ? `- ${skillRef}: ${truncated}` : `- ${skillRef}`;
|
|
39934
|
+
if (total + line.length > MAX_AUTO_INJECT_TOTAL_CHARS) break;
|
|
39935
|
+
lines.push(line);
|
|
39936
|
+
total += line.length + 1;
|
|
39937
|
+
}
|
|
39938
|
+
if (lines.length === 0) return "";
|
|
39939
|
+
return [
|
|
39940
|
+
"",
|
|
39941
|
+
"## Possibly Relevant Skills (auto-suggested for this request)",
|
|
39942
|
+
"These skills' triggers matched keywords in your message. Read the SKILL.md if it applies; otherwise ignore and proceed.",
|
|
39943
|
+
lines.join("\n"),
|
|
39944
|
+
""
|
|
39945
|
+
].join("\n");
|
|
39946
|
+
}
|
|
39947
|
+
/** Convenience: build both blocks concatenated. */
|
|
39948
|
+
function buildSkillsJitBlocks(opts) {
|
|
39949
|
+
return `${buildAnchorListBlock(opts)}${buildAutoInjectBlock(opts)}`;
|
|
39950
|
+
}
|
|
39951
|
+
|
|
39649
39952
|
//#endregion
|
|
39650
39953
|
//#region src/agents/pi-embedded-runner/system-prompt.ts
|
|
39651
39954
|
function buildEmbeddedSystemPrompt(params) {
|
|
@@ -39675,16 +39978,23 @@ function buildEmbeddedSystemPrompt(params) {
|
|
|
39675
39978
|
userTime: params.userTime,
|
|
39676
39979
|
userTimeFormat: params.userTimeFormat,
|
|
39677
39980
|
contextFiles: params.contextFiles,
|
|
39678
|
-
memoryCitationsMode: params.memoryCitationsMode
|
|
39981
|
+
memoryCitationsMode: params.memoryCitationsMode,
|
|
39982
|
+
compactMode: params.compactMode,
|
|
39983
|
+
skillsDiscoveryMode: params.skillsDiscoveryMode
|
|
39679
39984
|
});
|
|
39680
39985
|
const promptMode = params.promptMode ?? "full";
|
|
39681
39986
|
const isMinimal = promptMode === "minimal" || promptMode === "none";
|
|
39682
|
-
|
|
39987
|
+
return `${corePrompt}${buildAutoLoadedSkillsBlock({
|
|
39683
39988
|
skillNames: params.autoLoadInlineSkills ?? [],
|
|
39684
39989
|
workspaceDir: params.workspaceDir,
|
|
39685
39990
|
minimalMode: isMinimal
|
|
39686
|
-
})
|
|
39687
|
-
|
|
39991
|
+
})}${buildSkillsJitBlocks({
|
|
39992
|
+
discoveryMode: params.skillsDiscoveryMode,
|
|
39993
|
+
anchorList: params.skillsAnchorList,
|
|
39994
|
+
userMessage: params.currentUserMessage,
|
|
39995
|
+
workspaceDir: params.workspaceDir,
|
|
39996
|
+
minimalMode: isMinimal
|
|
39997
|
+
})}`;
|
|
39688
39998
|
}
|
|
39689
39999
|
function createSystemPromptOverride(systemPrompt) {
|
|
39690
40000
|
const override = systemPrompt.trim();
|
|
@@ -40473,7 +40783,11 @@ async function runEmbeddedAttempt(params) {
|
|
|
40473
40783
|
userTimeFormat,
|
|
40474
40784
|
contextFiles,
|
|
40475
40785
|
memoryCitationsMode: params.config?.memory?.citations,
|
|
40476
|
-
autoLoadInlineSkills: params.config?.skills?.autoLoadInline
|
|
40786
|
+
autoLoadInlineSkills: params.config?.skills?.autoLoadInline,
|
|
40787
|
+
skillsDiscoveryMode: params.config?.skills?.discoveryMode,
|
|
40788
|
+
skillsAnchorList: params.config?.skills?.anchorList,
|
|
40789
|
+
currentUserMessage: params.prompt,
|
|
40790
|
+
compactMode: params.config?.prompt?.compactMode
|
|
40477
40791
|
});
|
|
40478
40792
|
const systemPromptReport = buildSystemPromptReport({
|
|
40479
40793
|
source: "run",
|
|
@@ -44962,7 +45276,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
44962
45276
|
return;
|
|
44963
45277
|
}
|
|
44964
45278
|
try {
|
|
44965
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
45279
|
+
const { deliverOutboundPayloads } = await import("./deliver-DaRQn5Ai.js").then((n) => n.n);
|
|
44966
45280
|
await deliverOutboundPayloads({
|
|
44967
45281
|
cfg: params.cfg,
|
|
44968
45282
|
channel,
|
|
@@ -48416,7 +48730,7 @@ async function describeStickerImage(params) {
|
|
|
48416
48730
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
48417
48731
|
try {
|
|
48418
48732
|
const buffer = await fs$1.readFile(imagePath);
|
|
48419
|
-
const { describeImageWithModel } = await import("./image-
|
|
48733
|
+
const { describeImageWithModel } = await import("./image-dYtWZNKT.js").then((n) => n.n);
|
|
48420
48734
|
return (await describeImageWithModel({
|
|
48421
48735
|
buffer,
|
|
48422
48736
|
fileName: "sticker.webp",
|
|
@@ -48839,7 +49153,7 @@ function createWhatsAppLoginTool() {
|
|
|
48839
49153
|
force: Type.Optional(Type.Boolean())
|
|
48840
49154
|
}),
|
|
48841
49155
|
execute: async (_toolCallId, args) => {
|
|
48842
|
-
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-
|
|
49156
|
+
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-Dq_hs3eJ.js");
|
|
48843
49157
|
if ((args?.action ?? "start") === "wait") {
|
|
48844
49158
|
const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
|
|
48845
49159
|
return {
|
|
@@ -50215,7 +50529,7 @@ async function preflightDiscordMessage(params) {
|
|
|
50215
50529
|
let preflightTranscript;
|
|
50216
50530
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
50217
50531
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
50218
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
50532
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-By0dnw-T.js");
|
|
50219
50533
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
50220
50534
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
50221
50535
|
ctx: {
|
|
@@ -53998,27 +54312,27 @@ function isVoiceChannelType(type) {
|
|
|
53998
54312
|
function createDefaultDeps() {
|
|
53999
54313
|
return {
|
|
54000
54314
|
sendMessageWhatsApp: async (...args) => {
|
|
54001
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
54315
|
+
const { sendMessageWhatsApp } = await import("./web-DCTvbYTy.js");
|
|
54002
54316
|
return await sendMessageWhatsApp(...args);
|
|
54003
54317
|
},
|
|
54004
54318
|
sendMessageTelegram: async (...args) => {
|
|
54005
|
-
const { sendMessageTelegram } = await import("./send-
|
|
54319
|
+
const { sendMessageTelegram } = await import("./send-Cxr6CgGf.js").then((n) => n.l);
|
|
54006
54320
|
return await sendMessageTelegram(...args);
|
|
54007
54321
|
},
|
|
54008
54322
|
sendMessageDiscord: async (...args) => {
|
|
54009
|
-
const { sendMessageDiscord } = await import("./send-
|
|
54323
|
+
const { sendMessageDiscord } = await import("./send-8Gw3YmOh.js").then((n) => n.t);
|
|
54010
54324
|
return await sendMessageDiscord(...args);
|
|
54011
54325
|
},
|
|
54012
54326
|
sendMessageSlack: async (...args) => {
|
|
54013
|
-
const { sendMessageSlack } = await import("./send-
|
|
54327
|
+
const { sendMessageSlack } = await import("./send-t_DoGd2Y.js").then((n) => n.n);
|
|
54014
54328
|
return await sendMessageSlack(...args);
|
|
54015
54329
|
},
|
|
54016
54330
|
sendMessageSignal: async (...args) => {
|
|
54017
|
-
const { sendMessageSignal } = await import("./send-
|
|
54331
|
+
const { sendMessageSignal } = await import("./send-DbJsN7Lj.js").then((n) => n.i);
|
|
54018
54332
|
return await sendMessageSignal(...args);
|
|
54019
54333
|
},
|
|
54020
54334
|
sendMessageIMessage: async (...args) => {
|
|
54021
|
-
const { sendMessageIMessage } = await import("./send-
|
|
54335
|
+
const { sendMessageIMessage } = await import("./send-D4GfXudZ.js").then((n) => n.n);
|
|
54022
54336
|
return await sendMessageIMessage(...args);
|
|
54023
54337
|
}
|
|
54024
54338
|
};
|
|
@@ -64873,7 +65187,7 @@ async function registerSlackMonitorSlashCommands(params) {
|
|
|
64873
65187
|
});
|
|
64874
65188
|
const deliverSlashPayloads = async (replies) => {
|
|
64875
65189
|
const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
|
|
64876
|
-
import("./replies-
|
|
65190
|
+
import("./replies-Dk0cnpHa.js").then((n) => n.r),
|
|
64877
65191
|
import("./chunk-CBaqrC3-.js").then((n) => n.s),
|
|
64878
65192
|
import("./markdown-tables-Xw0UrL4I.js").then((n) => n.t)
|
|
64879
65193
|
]);
|
|
@@ -67146,7 +67460,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
67146
67460
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
67147
67461
|
let preflightTranscript;
|
|
67148
67462
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
67149
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
67463
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-By0dnw-T.js");
|
|
67150
67464
|
preflightTranscript = await transcribeFirstAudio({
|
|
67151
67465
|
ctx: {
|
|
67152
67466
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -69300,23 +69614,23 @@ let webLoginQrPromise = null;
|
|
|
69300
69614
|
let webChannelPromise = null;
|
|
69301
69615
|
let whatsappActionsPromise = null;
|
|
69302
69616
|
function loadWebOutbound() {
|
|
69303
|
-
webOutboundPromise ??= import("./outbound-
|
|
69617
|
+
webOutboundPromise ??= import("./outbound-CDuo0JH3.js").then((n) => n.t);
|
|
69304
69618
|
return webOutboundPromise;
|
|
69305
69619
|
}
|
|
69306
69620
|
function loadWebLogin() {
|
|
69307
|
-
webLoginPromise ??= import("./login-
|
|
69621
|
+
webLoginPromise ??= import("./login-D4OYfM0U.js").then((n) => n.n);
|
|
69308
69622
|
return webLoginPromise;
|
|
69309
69623
|
}
|
|
69310
69624
|
function loadWebLoginQr() {
|
|
69311
|
-
webLoginQrPromise ??= import("./login-qr-
|
|
69625
|
+
webLoginQrPromise ??= import("./login-qr-Dq_hs3eJ.js");
|
|
69312
69626
|
return webLoginQrPromise;
|
|
69313
69627
|
}
|
|
69314
69628
|
function loadWebChannel() {
|
|
69315
|
-
webChannelPromise ??= import("./web-
|
|
69629
|
+
webChannelPromise ??= import("./web-DCTvbYTy.js");
|
|
69316
69630
|
return webChannelPromise;
|
|
69317
69631
|
}
|
|
69318
69632
|
function loadWhatsAppActions() {
|
|
69319
|
-
whatsappActionsPromise ??= import("./whatsapp-actions-
|
|
69633
|
+
whatsappActionsPromise ??= import("./whatsapp-actions-B5o7eFIc.js");
|
|
69320
69634
|
return whatsappActionsPromise;
|
|
69321
69635
|
}
|
|
69322
69636
|
function createPluginRuntime() {
|
|
@@ -71770,7 +72084,11 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
71770
72084
|
userTimeFormat,
|
|
71771
72085
|
contextFiles,
|
|
71772
72086
|
memoryCitationsMode: params.config?.memory?.citations,
|
|
71773
|
-
autoLoadInlineSkills: params.config?.skills?.autoLoadInline
|
|
72087
|
+
autoLoadInlineSkills: params.config?.skills?.autoLoadInline,
|
|
72088
|
+
skillsDiscoveryMode: params.config?.skills?.discoveryMode,
|
|
72089
|
+
skillsAnchorList: params.config?.skills?.anchorList,
|
|
72090
|
+
currentUserMessage: void 0,
|
|
72091
|
+
compactMode: params.config?.prompt?.compactMode
|
|
71774
72092
|
}));
|
|
71775
72093
|
const sessionLock = await acquireSessionWriteLock({
|
|
71776
72094
|
sessionFile: params.sessionFile,
|