@symerian/symi 2.9.0 → 2.9.2
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-Bav1bRj2.js → acp-cli-Bc6ZQZ4f.js} +2 -2
- package/dist/{acp-cli-BTu3_kZ1.js → acp-cli-Dy9QuDBN.js} +2 -2
- package/dist/{agents-CvNeiuSB.js → agents-DTl30WoB.js} +7 -7
- package/dist/{agents.config-BCgY5FjE.js → agents.config-CO8F9mkD.js} +1 -1
- package/dist/{agents.config-Ct64cGQ8.js → agents.config-CZ3GFxPg.js} +1 -1
- package/dist/{audio-preflight-C2EgDXSo.js → audio-preflight-8UNY1akA.js} +11 -11
- package/dist/{audio-preflight-1dv3T5Zx.js → audio-preflight-By0dnw-T.js} +11 -11
- package/dist/{audio-preflight-Cb-T0r6e.js → audio-preflight-DQR2Ivi-.js} +5 -5
- package/dist/{audio-preflight-C6vpFnOG.js → audio-preflight-Dtsvq6Hj.js} +6 -6
- package/dist/{audit-CuKP86d_.js → audit-DGwhL71Q.js} +5 -5
- package/dist/{audit-C9nq99IR.js → audit-OPWWS900.js} +5 -5
- package/dist/{auth-choice-DmMyKZX4.js → auth-choice-BYDGn7lJ.js} +4 -4
- package/dist/{auth-choice-ChFU9OCF.js → auth-choice-BoOyy-ZT.js} +4 -4
- package/dist/{banner-Bf46tqiY.js → banner-D4MiyUnv.js} +1 -1
- package/dist/{browser-cli-ClgQ-C8E.js → browser-cli-CGLTZ9KQ.js} +3 -3
- package/dist/{browser-cli-DuPPIcuV.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-M4YyUnwu.js → call-BCTAmPye.js} +1 -1
- package/dist/{call-DYfKEdwh.js → call-BIETyST6.js} +1 -1
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-Bqc2VCgt.js → channel-options-B6qP-vR-.js} +1 -1
- package/dist/{channel-options-D4a0ZJ72.js → channel-options-BiSSYYQC.js} +1 -1
- package/dist/{channel-web-YNC2xS5K.js → channel-web-DP97EUhx.js} +7 -7
- package/dist/{channels-cli-BFJcNLbB.js → channels-cli-6LNvJQPb.js} +30 -30
- package/dist/{channels-cli-h3GnmmM9.js → channels-cli-CE_A3Hai.js} +31 -31
- package/dist/{chrome-B14NNyfm.js → chrome-B-hW5hrK.js} +1 -1
- package/dist/{chrome-ROtrXlNs.js → chrome-BaMQiegP.js} +1 -1
- package/dist/{chrome-D2ohnA09.js → chrome-CO5ZhkcZ.js} +1 -1
- package/dist/{chrome-BJvuH-NZ.js → chrome-CtTba9sH.js} +1 -1
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-BX54CAM7.js → cli-D4j_JTug.js} +27 -27
- package/dist/{cli-BpQlSGVs.js → cli-DwQ3mqhI.js} +26 -26
- package/dist/{command-registry-BiRjJ2Sy.js → command-registry-b62Qpsi2.js} +11 -11
- package/dist/{completion-cli-BYXofVqv.js → completion-cli-DUT2XYgK.js} +2 -2
- package/dist/{completion-cli-C8K5J1ld.js → completion-cli-RQyC3L-t.js} +1 -1
- package/dist/{config-PXAJCHa5.js → config-CitI_jxW.js} +8 -0
- package/dist/{config-BAVNLbja.js → config-D7Zr88dI.js} +8 -0
- package/dist/{config-BkZ9HOKT.js → config-Do4JxgLI.js} +8 -0
- package/dist/{config-DXt3pc08.js → config-Gfhqs66L.js} +8 -0
- package/dist/{config-cli-BPPD3xqE.js → config-cli-Di8VOhbp.js} +2 -2
- package/dist/{config-cli-Deoo6r2K.js → config-cli-H52N8rp1.js} +2 -2
- package/dist/{config-guard-BvqCjFPk.js → config-guard-BLcbR_sH.js} +2 -2
- package/dist/{config-guard-CaP-V3tf.js → config-guard-CgPPAm7S.js} +3 -3
- package/dist/{config-validation-B6Fa3VmF.js → config-validation-B6GnatLw.js} +1 -1
- package/dist/{config-validation-EmHZVnuz.js → config-validation-UMq2H_tR.js} +1 -1
- package/dist/{configure-D4f0P3bH.js → configure-BF9crM5K.js} +10 -10
- package/dist/{configure-BKHxUAAh.js → configure-DQxuawe-.js} +10 -10
- package/dist/{control-service-C0pRqIFv.js → control-service-BkyH7qkF.js} +4 -4
- package/dist/{control-service-Bujr5pk7.js → control-service-DnNPjFvU.js} +4 -4
- package/dist/{cron-cli-C8-Gv5dd.js → cron-cli-CcgewYtp.js} +3 -3
- package/dist/{cron-cli-BEdmHCWZ.js → cron-cli-DEcQk1bb.js} +3 -3
- package/dist/{daemon-cli-D6wyb9bo.js → daemon-cli-BNZu5unw.js} +6 -6
- package/dist/{daemon-cli-BFoJGCHZ.js → daemon-cli-BiBjGGfw.js} +6 -6
- package/dist/daemon-cli.js +8 -0
- package/dist/{daemon-runtime-Cp7obV7Q.js → daemon-runtime-C-Mwepv_.js} +1 -1
- package/dist/{daemon-runtime-D_elkkFW.js → daemon-runtime-C86WnKU5.js} +1 -1
- package/dist/{deliver-Bdk_R0pQ.js → deliver-DaRQn5Ai.js} +3 -3
- package/dist/{deliver-D7BQXt0l.js → deliver-DrgHcdVo.js} +3 -3
- package/dist/{deliver-B0OUq6RP.js → deliver-Dx39g9ey.js} +2 -2
- package/dist/{deliver-D0bWiRCg.js → deliver-XYF4JahT.js} +2 -2
- package/dist/{devices-cli-CHt4I-7e.js → devices-cli-Wb4H-vyx.js} +2 -2
- package/dist/{devices-cli-BXc6DPkC.js → devices-cli-hX2lrsCy.js} +2 -2
- package/dist/{directory-cli-CQTzAhw1.js → directory-cli-CLIYvXkV.js} +1 -1
- package/dist/{directory-cli-DRWJsAT6.js → directory-cli-C_vm-dsr.js} +1 -1
- package/dist/{dns-cli-BBVIay6Z.js → dns-cli-BJuUZ4pr.js} +1 -1
- package/dist/{dns-cli-BCKPibb8.js → dns-cli-CTCAHPcB.js} +1 -1
- package/dist/{doctor-completion-gMWymNcA.js → doctor-completion-BKXQ50ee.js} +1 -1
- package/dist/{doctor-completion-woDYSVtY.js → doctor-completion-BS2JEeZy.js} +1 -1
- package/dist/{doctor-config-flow-BCMxS2lf.js → doctor-config-flow-BFHsvL2k.js} +2 -2
- package/dist/{doctor-config-flow-B2dVxbL7.js → doctor-config-flow-l2aPNzHP.js} +2 -2
- package/dist/entry.js +1 -1
- package/dist/{exec-approvals-cli-BBKVrFTj.js → exec-approvals-cli-BXDSu2Ze.js} +4 -4
- package/dist/{exec-approvals-cli-CKRDAo17.js → exec-approvals-cli-uAM6-swA.js} +4 -4
- package/dist/extensionAPI.js +16 -16
- package/dist/{gateway-cli-DsnkTUOp.js → gateway-cli-Do9KUPqe.js} +42 -42
- package/dist/{gateway-cli-Bnh42-56.js → gateway-cli-moPf-zP5.js} +43 -43
- package/dist/{gateway-rpc-BEfosIsg.js → gateway-rpc-DMEPdgmc.js} +1 -1
- package/dist/{gateway-rpc-DZrB7Sl_.js → gateway-rpc-Wa_4MrZb.js} +1 -1
- package/dist/{glass-ui-ws-0Y0KsBvU.js → glass-ui-ws-D53pvIov.js} +35 -35
- package/dist/{glass-ui-ws-uj3DRmL8.js → glass-ui-ws-Dfro-3R8.js} +34 -34
- package/dist/{health-Dl2WRoTa.js → health-BQGRC0xh.js} +5 -5
- package/dist/{health-CcV5nKIK.js → health-CV741PBg.js} +5 -5
- package/dist/{hooks-cli-CTcHtm_0.js → hooks-cli-CG-PDY2U.js} +28 -28
- package/dist/{hooks-cli-DEJe3dUH.js → hooks-cli-CWXGIL9L.js} +27 -27
- package/dist/{image-MNvheU8U.js → image-BjyeKf1c.js} +2 -2
- package/dist/{image-BuVL0jHI.js → image-C-JvPPpM.js} +2 -2
- package/dist/{image-6RZuWKy5.js → image-GaF72sln.js} +2 -2
- package/dist/{image-CnEFsKgw.js → image-dYtWZNKT.js} +2 -2
- package/dist/index.js +35 -35
- package/dist/{lifecycle-core-Uucs6Wz6.js → lifecycle-core-BMVHLJi_.js} +2 -2
- package/dist/{lifecycle-core-v3lT0Ymo.js → lifecycle-core-HOQrbQ-_.js} +2 -2
- package/dist/llm-slug-generator.js +14 -14
- package/dist/{login-F4pbdnF5.js → login-Cd4DTmg6.js} +2 -2
- package/dist/{login-EYdkb0dH.js → login-Cv_LYGzG.js} +2 -2
- package/dist/{login-C7EdfiAr.js → login-D4OYfM0U.js} +2 -2
- package/dist/{login-D4rZWBXe.js → login-DqhTprwd.js} +2 -2
- package/dist/{login-qr-Apnag5S6.js → login-qr-CZXIrzvh.js} +2 -2
- package/dist/{login-qr-DdAVHOEC.js → login-qr-DiyxAHpv.js} +2 -2
- package/dist/{login-qr-BElXRp6T.js → login-qr-Dq_hs3eJ.js} +2 -2
- package/dist/{login-qr-DML5LgsI.js → login-qr-Xgw7JPYo.js} +2 -2
- package/dist/{logs-cli-N5jQvJTm.js → logs-cli-DZTxEhiM.js} +3 -3
- package/dist/{logs-cli-CsHpYc2M.js → logs-cli-Dh-aAqF3.js} +3 -3
- package/dist/{manager-9Mni2AA9.js → manager-B_2KzUSI.js} +1 -1
- package/dist/{manager-CjW8kPVc.js → manager-Bc-MeMho.js} +1 -1
- package/dist/{manager-C-H0XXJq.js → manager-CLPHK-qG.js} +1 -1
- package/dist/{manager-QPF0UtOC.js → manager-yrUe0KOT.js} +1 -1
- package/dist/{memory-cli-OW9XfyYu.js → memory-cli-3RSIw4no.js} +4 -4
- package/dist/{memory-cli-BTByRgM0.js → memory-cli-BKNnDIdx.js} +4 -4
- package/dist/{model-catalog-D7k3dDQq.js → model-catalog-BFJW_s3i.js} +2 -2
- package/dist/{model-catalog-BuYrTTBn.js → model-catalog-DRqmevpR.js} +2 -2
- package/dist/{model-picker-BNWV-jU4.js → model-picker-BT8MumhL.js} +2 -2
- package/dist/{model-picker-n7beL1F5.js → model-picker-DhsG4iZa.js} +2 -2
- package/dist/{models-Q1jV8ArL.js → models-D_C2JFPw.js} +8 -8
- package/dist/{models-cli-Cy6H1sFq.js → models-cli-DQE60EtL.js} +30 -30
- package/dist/{models-cli-pfVmmgpv.js → models-cli-j2O4e1Lu.js} +29 -29
- package/dist/{models-config-B91ShhoT.js → models-config-DdK8uWQW.js} +1 -1
- package/dist/{models-config-J1x_DaPn.js → models-config-frWb8fDT.js} +1 -1
- package/dist/{node-cli-CwnTjFkG.js → node-cli-DB4Z23h8.js} +9 -9
- package/dist/{node-cli-BD4E-Y8a.js → node-cli-DcRlL2Np.js} +9 -9
- package/dist/{nodes-cli-Dv0NXhCO.js → nodes-cli-B42u9UxB.js} +3 -3
- package/dist/{nodes-cli-DUD8_q_Q.js → nodes-cli-DQ9YsQmy.js} +3 -3
- package/dist/{onboard-CvpyaUQd.js → onboard-Ckw89oRF.js} +7 -7
- package/dist/{onboard-EL8foMiP.js → onboard-DUIZfWqa.js} +7 -7
- package/dist/{onboard-channels-BRoSUijQ.js → onboard-channels-B8Ouc5sR.js} +1 -1
- package/dist/{onboard-channels-Bupbm6zh.js → onboard-channels-Oa9IlsGt.js} +1 -1
- package/dist/{onboard-custom-Dk9cL3Uu.js → onboard-custom-7TON2w6b.js} +2 -2
- package/dist/{onboard-custom-CJGSIPt3.js → onboard-custom-Bb3xuH0G.js} +2 -2
- package/dist/{onboard-helpers-CBxazphs.js → onboard-helpers-BiCrYw-N.js} +2 -2
- package/dist/{onboard-helpers-DWDNKmkJ.js → onboard-helpers-Ca4KojJF.js} +2 -2
- package/dist/{onboard-remote-cZrkePlK.js → onboard-remote-B8MQTgX-.js} +1 -1
- package/dist/{onboard-remote-DoIKLWXA.js → onboard-remote-IMqgmH78.js} +1 -1
- package/dist/{onboard-skills-BjGYTueQ.js → onboard-skills-BP1P7f-w.js} +1 -1
- package/dist/{onboard-skills-zauvnEui.js → onboard-skills-BcvPjVfl.js} +1 -1
- package/dist/{onboarding-Ch8WSJ3j.js → onboarding-Cjh-Y8ha.js} +10 -10
- package/dist/{onboarding-Dg5ydWSh.js → onboarding-JFWHlqAb.js} +10 -10
- package/dist/{onboarding.finalize-Bo8-8TtH.js → onboarding.finalize-CkGLgiEA.js} +32 -32
- package/dist/{onboarding.finalize-CCTaCp2s.js → onboarding.finalize-spzEoVkm.js} +34 -34
- package/dist/{onboarding.gateway-config-Dg12RcXA.js → onboarding.gateway-config-Cp8mV8S9.js} +4 -4
- package/dist/{onboarding.gateway-config-uIRsaxMy.js → onboarding.gateway-config-tmzsyFbT.js} +4 -4
- package/dist/{outbound-mG1crIsY.js → outbound-BD7PNRhC.js} +1 -1
- package/dist/{outbound-Zmd7UyQH.js → outbound-BaF9dF-H.js} +1 -1
- package/dist/{outbound-CW8eNbCh.js → outbound-CDuo0JH3.js} +1 -1
- package/dist/{outbound-B5OgOn1h.js → outbound-CPcVipU-.js} +1 -1
- package/dist/{pairing-cli-Cl4t3cDV.js → pairing-cli-CfuG75IW.js} +1 -1
- package/dist/{pairing-cli-7X1qlhzF.js → pairing-cli-K09J3MIl.js} +1 -1
- package/dist/{pi-embedded-Bl3YkBkI.js → pi-embedded-D6Zi01El.js} +517 -94
- package/dist/{pi-embedded-helpers-D1_Sab0M.js → pi-embedded-helpers-B1P8lkqj.js} +5 -5
- package/dist/{pi-embedded-helpers-YD1JQ5xV.js → pi-embedded-helpers-BlL08R8g.js} +1 -1
- package/dist/{pi-embedded-helpers-DHAJW99p.js → pi-embedded-helpers-CmY04lZ7.js} +1 -1
- package/dist/{pi-embedded-helpers-TcYQOZAY.js → pi-embedded-helpers-DuZtk5SK.js} +6 -6
- package/dist/{pi-tools.policy-Bx5zp45n.js → pi-tools.policy-54ABEJtH.js} +2 -2
- package/dist/{pi-tools.policy-o0ytjRqu.js → pi-tools.policy-BFsWV2pS.js} +2 -2
- package/dist/{plugin-registry-BVYZLxmo.js → plugin-registry-CYglC746.js} +2 -2
- package/dist/{plugin-registry-Bn9Mj8mP.js → plugin-registry-zGF6HUkQ.js} +2 -2
- package/dist/plugin-sdk/agents/pi-embedded-runner/system-prompt.d.ts +21 -0
- package/dist/plugin-sdk/agents/pi-tools.read.d.ts +11 -0
- package/dist/plugin-sdk/agents/skills/triggers.d.ts +12 -0
- package/dist/plugin-sdk/agents/system-prompt-skills-autoload.d.ts +21 -0
- package/dist/plugin-sdk/agents/system-prompt-skills-jit.d.ts +28 -0
- package/dist/plugin-sdk/agents/tools/skill-search-tool.d.ts +30 -0
- package/dist/plugin-sdk/{audio-preflight-DucGa8w7.js → audio-preflight-CoKYDdd4.js} +6 -6
- package/dist/plugin-sdk/{channel-web-BhqGIC7q.js → channel-web-eeGSjU9N.js} +7 -7
- package/dist/plugin-sdk/{chrome-D9kN9org.js → chrome-CdjVSHtz.js} +1 -1
- package/dist/plugin-sdk/config/model-profiles-builtin.d.ts +16 -0
- package/dist/plugin-sdk/config/resolve-model-profile.d.ts +9 -1
- package/dist/plugin-sdk/config/types.skills.d.ts +22 -0
- package/dist/plugin-sdk/config/zod-schema.d.ts +6 -0
- package/dist/plugin-sdk/{config-BzupW6LN.js → config-Cf-PzD3r.js} +8 -0
- package/dist/plugin-sdk/{deliver-CKgFosI5.js → deliver-hjUeDZ7e.js} +2 -2
- package/dist/plugin-sdk/{image-DFyINnvE.js → image-CS95I-I5.js} +2 -2
- package/dist/plugin-sdk/index.js +20 -20
- package/dist/plugin-sdk/{login-K1YB_7-t.js → login-BhLw-aw1.js} +2 -2
- package/dist/plugin-sdk/{login-qr-lMl_OqDj.js → login-qr-B4dxH543.js} +2 -2
- package/dist/plugin-sdk/{manager-DdOb0Em2.js → manager-DZ5-lr4s.js} +1 -1
- package/dist/plugin-sdk/{outbound-DW3cqlQW.js → outbound-D7yJKgEX.js} +1 -1
- package/dist/plugin-sdk/{pi-embedded-helpers-BL7ZRhGv.js → pi-embedded-helpers-6EL59cK1.js} +6 -6
- package/dist/plugin-sdk/{pw-ai-B3T0mTHr.js → pw-ai-DWcXZkbZ.js} +2 -2
- package/dist/plugin-sdk/{replies-BR2TPTVW.js → replies-B4fizDsZ.js} +1 -1
- package/dist/plugin-sdk/{reply-Cjjf4VYT.js → reply-BRGoceel.js} +517 -94
- package/dist/plugin-sdk/{runner-BhifC1J_.js → runner-D9c_MNRa.js} +2 -2
- package/dist/plugin-sdk/{send-DLO_yV5_.js → send-BAzimHH-.js} +1 -1
- package/dist/plugin-sdk/{send-CGhw9mO3.js → send-BfqyNBU1.js} +1 -1
- package/dist/plugin-sdk/{send-ZhAe1nXO.js → send-CF7BhO8B.js} +1 -1
- package/dist/plugin-sdk/{send-jsofmTfJ.js → send-CJIEYVXL.js} +1 -1
- package/dist/plugin-sdk/{send-BP5pSPaZ.js → send-DDpZS9jb.js} +1 -1
- package/dist/plugin-sdk/{session-BfyK_04G.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-CZ8BYNXP.js → synthesis-DVsG2Tbp.js} +16 -16
- package/dist/plugin-sdk/{web-B8upqMUo.js → web-7u3fdT2S.js} +20 -20
- package/dist/plugin-sdk/{whatsapp-actions-eTefsWhW.js → whatsapp-actions-B_3do0s7.js} +2 -2
- package/dist/{plugins-cli-CYOQh2DM.js → plugins-cli-CLb_0vH6.js} +27 -27
- package/dist/{plugins-cli-3h1N5N8n.js → plugins-cli-ndIGvW38.js} +28 -28
- package/dist/{program-D3_xE9BL.js → program-BovNsUAh.js} +34 -34
- package/dist/{program-context-COwsYCbf.js → program-context-mFSRQPMm.js} +38 -38
- package/dist/{prompt-select-styled-rKPBDv7n.js → prompt-select-styled-DlKhnnDV.js} +15 -15
- package/dist/{prompt-select-styled-D88AWCeM.js → prompt-select-styled-vhI0kQYd.js} +15 -15
- package/dist/{provider-auth-helpers-rff7s_gC.js → provider-auth-helpers-DXlKD0hY.js} +2 -2
- package/dist/{provider-auth-helpers-CyZyVx-V.js → provider-auth-helpers-U0t5YhCn.js} +2 -2
- package/dist/{push-apns-BNzgqUl3.js → push-apns-hN0N3Wcu.js} +1 -1
- package/dist/{push-apns-d9qKGKPe.js → push-apns-rDsc17-c.js} +1 -1
- package/dist/{pw-ai-D9fCYPe7.js → pw-ai-B8IypzYb.js} +2 -2
- package/dist/{pw-ai-DYZonrPL.js → pw-ai-BYRvpqBg.js} +2 -2
- package/dist/{pw-ai-DWkC5eGA.js → pw-ai-BlWK9Tr3.js} +2 -2
- package/dist/{pw-ai-40Jf9QIb.js → pw-ai-BwKx4yAQ.js} +2 -2
- package/dist/{qr-cli-6eVyM6ek.js → qr-cli-B7hz3Zj2.js} +1 -1
- package/dist/{qr-cli-CCWM_3Nb.js → qr-cli-Zf3abH3y.js} +1 -1
- package/dist/{register.agent-D_MON8p-.js → register.agent-B1liWWB3.js} +35 -35
- package/dist/{register.agent-BjaqQA02.js → register.agent-Cyij2g-g.js} +33 -33
- package/dist/{register.configure-BWkkQhpH.js → register.configure-CoYKlH75.js} +37 -37
- package/dist/{register.configure-UJi9sfNv.js → register.configure-keWh1w1p.js} +38 -38
- package/dist/{register.maintenance-ChskcWGz.js → register.maintenance-CsA9QQRE.js} +37 -37
- package/dist/{register.maintenance-DJptz3DR.js → register.maintenance-CvY-Yar9.js} +35 -35
- package/dist/{register.message-CiadI_oS.js → register.message-D7815_7Y.js} +28 -28
- package/dist/{register.message-BDTsiyrW.js → register.message-DltuBwIg.js} +27 -27
- package/dist/{register.onboard-KR_-4TLY.js → register.onboard-CY50To_-.js} +33 -33
- package/dist/{register.onboard-BflOE1jy.js → register.onboard-FcZymlrx.js} +34 -34
- package/dist/{register.setup-Cl0sD25T.js → register.setup-8dkIizGs.js} +34 -34
- package/dist/{register.setup-W-oNfOp0.js → register.setup-X011Evir.js} +33 -33
- package/dist/{register.status-health-sessions-CCQs235z.js → register.status-health-sessions-DRkIaw1q.js} +32 -32
- package/dist/{register.status-health-sessions-CT_SmmOH.js → register.status-health-sessions-u9ZbWWea.js} +30 -30
- package/dist/{register.subclis-ByZAz4st.js → register.subclis-vTS3UwIU.js} +28 -28
- package/dist/{replies-CUWXgyx2.js → replies-A6SltFjk.js} +1 -1
- package/dist/{replies-CZH45dMt.js → replies-CsNZ9ImJ.js} +1 -1
- package/dist/{replies-Sxbew659.js → replies-Dk0cnpHa.js} +1 -1
- package/dist/{replies-D0NFBbd-.js → replies-Dmo0pSSf.js} +1 -1
- package/dist/{reply-CgyjcoxC.js → reply-Dx9DWIO2.js} +524 -100
- package/dist/{routes-c86p9MPH.js → routes-B3wAMCSw.js} +3 -3
- package/dist/{routes-wmFRpLa9.js → routes-DH2Da7TP.js} +3 -3
- package/dist/{rpc-BKlQ97aZ.js → rpc-BPtq6BO7.js} +1 -1
- package/dist/{rpc-DC4ol5Xa.js → rpc-DCB41PXt.js} +1 -1
- package/dist/{run-main-xmWpjZL9.js → run-main-BQKf71Kt.js} +45 -45
- package/dist/{runner-ecX1WzDt.js → runner-C4opGXAA.js} +2 -2
- package/dist/{runner-Cbz8g76d.js → runner-CY_8vnxU.js} +3 -3
- package/dist/{runner-DFuAePEr.js → runner-Dbs3i8HW.js} +2 -2
- package/dist/{runner-BBYms6g4.js → runner-Im1oOE3i.js} +3 -3
- package/dist/{sandbox-WWVXeHlA.js → sandbox-BTziorto.js} +5 -5
- package/dist/{sandbox-cli-momxce7H.js → sandbox-cli-BVpVuidu.js} +6 -6
- package/dist/{sandbox-cli-BtGgnGrs.js → sandbox-cli-rOwF1Yuh.js} +6 -6
- package/dist/{sandbox-CCHQuSja.js → sandbox-wUKYI3zy.js} +5 -5
- package/dist/{security-cli-BfiJ3e0Y.js → security-cli-Bb4vR6LY.js} +9 -9
- package/dist/{security-cli-CIB7kqEk.js → security-cli-Cg7KhJC7.js} +9 -9
- package/dist/{send-BaFD3lZ7.js → send-8Gw3YmOh.js} +1 -1
- package/dist/{send-Bb4it0te.js → send-90t8KM2a.js} +1 -1
- package/dist/{send-C0QjmPaf.js → send-9ktd0CBZ.js} +1 -1
- package/dist/{send-Iocbaltq.js → send-B0szkIfv.js} +1 -1
- package/dist/{send-BKo1T3HF.js → send-B7kMNQ-T.js} +1 -1
- package/dist/{send-COVVt64P.js → send-BbZtP8GJ.js} +1 -1
- package/dist/{send-DFtnbzqy.js → send-CQj8FBE3.js} +1 -1
- package/dist/{send-Dz656vcm.js → send-Cxr6CgGf.js} +1 -1
- package/dist/{send-DLVrnezL.js → send-D27q8Oqo.js} +1 -1
- package/dist/{send-9sVK0zP4.js → send-D4GfXudZ.js} +1 -1
- package/dist/{send-DvbOiJ-I.js → send-D5Siw6wn.js} +1 -1
- package/dist/{send-SF7x1UHb.js → send-DanpvmZQ.js} +1 -1
- package/dist/{send-5GrSqB6v.js → send-DbJsN7Lj.js} +1 -1
- package/dist/{send-DGbBPbV0.js → send-Dj6_LS_W.js} +1 -1
- package/dist/{send-BaBv1rAU.js → send-F2Cpm-SJ.js} +1 -1
- package/dist/{send-DpMnSIi5.js → send-aXMPprv9.js} +1 -1
- package/dist/{send-B5kAnKqP.js → send-depbZ9aA.js} +1 -1
- package/dist/{send-BqOhAhRS.js → send-nRhkxbqX.js} +1 -1
- package/dist/{send-CJJuN-Fg.js → send-t_DoGd2Y.js} +1 -1
- package/dist/{send-Cpk3Ti6-.js → send-zMHWALCW.js} +1 -1
- package/dist/{server-context-DefCxQsB.js → server-context-BPuBLXYG.js} +5 -5
- package/dist/{server-context-C66bI8ZM.js → server-context-DQIkGNj2.js} +5 -5
- package/dist/{server-methods-DDpCXuOU.js → server-methods-1TzYth88.js} +17 -17
- package/dist/{server-methods-CBn954AO.js → server-methods-DeIwhdBv.js} +16 -16
- package/dist/{server-node-events-BBEMSKVE.js → server-node-events-CFMtnBFU.js} +28 -28
- package/dist/{server-node-events-BUEZ3py9.js → server-node-events-DF_ks0oa.js} +27 -27
- package/dist/{session-BTeY6Gn2.js → session-C4odFBc2.js} +1 -1
- package/dist/{session-BpaF8fzk.js → session-CTTpxOx1.js} +1 -1
- package/dist/{session-mFiujXaP.js → session-Cs58by4_.js} +1 -1
- package/dist/{session-BtL_LuWh.js → session-d5_vMl76.js} +1 -1
- package/dist/{session-utils-DaBIs243.js → session-utils--1xVj2BC.js} +3 -3
- package/dist/{sessions-B2KSRtKQ.js → sessions-BikjOqQs.js} +3 -3
- package/dist/{sessions-BeYHj0gr.js → sessions-CVWGQEWu.js} +1 -1
- package/dist/{sessions-BPD85pWA.js → sessions-CpDbQNFu.js} +1 -1
- package/dist/{shared-C9vLT1Vj.js → shared-DHpMu95O.js} +1 -1
- package/dist/{shared-PtB96PLH.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-dTks7st0.js → skills-cli-6wYY0Xes.js} +1 -1
- package/dist/{skills-cli-DiND94Um.js → skills-cli-CkTThcTU.js} +1 -1
- package/dist/{status-BjMiGq0n.js → status-CvElSWg2.js} +2 -2
- package/dist/{status-PfvX-BjO.js → status-CwZgLSfx.js} +10 -10
- package/dist/{status-CpvzoCOC.js → status-DEQAH4oA.js} +2 -2
- package/dist/{status-CG5iHUJ6.js → status-vO4-v0vI.js} +9 -9
- package/dist/{status.update-8HXdAdwz.js → status.update-BSaVYFQv.js} +1 -1
- package/dist/{status.update-B5zI1_Id.js → status.update-DoXJrRh6.js} +1 -1
- package/dist/{subagent-registry-D0IYimMO.js → subagent-registry-K1lQH7iR.js} +525 -101
- package/dist/{synthesis-D55QrjAJ.js → synthesis-AYqn8_O8.js} +27 -27
- package/dist/{synthesis-CBwKBuLy.js → synthesis-CZhOC8n4.js} +14 -14
- package/dist/{synthesis-BVZ5RJLg.js → synthesis-DazoL-DI.js} +26 -26
- package/dist/{synthesis-itgrzpuj.js → synthesis-DhxkkJq7.js} +16 -16
- package/dist/{system-cli-BERSpUjO.js → system-cli-BmccUOcE.js} +3 -3
- package/dist/{system-cli-C61hzNPk.js → system-cli-DJIrqTFB.js} +3 -3
- package/dist/{systemd-hints-Ct8ebNeC.js → systemd-hints-BbqPFaZ2.js} +1 -1
- package/dist/{systemd-hints-vhJS1sOh.js → systemd-hints-CfnF9j3s.js} +1 -1
- package/dist/{tui-Dg_cvgVP.js → tui-Cc1L4YuN.js} +4 -4
- package/dist/{tui-CI_zqapL.js → tui-D5we2kr7.js} +4 -4
- package/dist/{tui-cli-BD1cbShC.js → tui-cli-BHBp8e8w.js} +9 -9
- package/dist/{tui-cli-DtBW_VCL.js → tui-cli-CmVmkEzr.js} +9 -9
- package/dist/{unified-runner-BhnvjB1J.js → unified-runner-CavADnkK.js} +515 -91
- package/dist/{update-cli-CL1_LPBS.js → update-cli-DPf2vrJK.js} +40 -40
- package/dist/{update-cli-D3K4mhrr.js → update-cli-DmxFKAmJ.js} +38 -38
- package/dist/{update-runner-Bmq67eos.js → update-runner-D4UIv_1p.js} +1 -1
- package/dist/{update-runner-DMucmRlv.js → update-runner-XU-jPEg_.js} +1 -1
- package/dist/{web-B0lZdBBl.js → web-BBbVbRTg.js} +30 -30
- package/dist/{web-DCO_YCRw.js → web-BJIv_6uQ.js} +17 -17
- package/dist/{web-DmgQtLx3.js → web-C-E-O8iP.js} +30 -30
- package/dist/{web-C1HPdY_D.js → web-CIj8erCe.js} +19 -19
- package/dist/{webhooks-cli-BEk3Xj9r.js → webhooks-cli-BPWIcZ4r.js} +1 -1
- package/dist/{webhooks-cli-B7WTF3ao.js → webhooks-cli-DCw-yCzR.js} +1 -1
- package/dist/{whatsapp-actions-BUZuNBin.js → whatsapp-actions-B5o7eFIc.js} +2 -2
- package/dist/{whatsapp-actions-DEn0NRir.js → whatsapp-actions-CJkCiI_n.js} +2 -2
- package/dist/{whatsapp-actions-uEcDLORc.js → whatsapp-actions-CkT3dnmD.js} +2 -2
- package/dist/{whatsapp-actions-DmVpLXmh.js → whatsapp-actions-DRvUrapa.js} +2 -2
- package/dist/{with-timeout-DwriPEWn.js → with-timeout-7M4c248g.js} +1 -1
- package/dist/{with-timeout-BuIx7QnX.js → with-timeout-BWETfI9T.js} +1 -1
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/learning-loop/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +12 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +12 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +12 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/outlook/package.json +1 -1
- package/extensions/pipeline/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +12 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +12 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +12 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +12 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/skills/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/coding-agent/SKILL.md +1 -0
- package/skills/connect-email/SKILL.md +1 -0
- package/skills/discord/SKILL.md +1 -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/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/trello/SKILL.md +1 -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
|
@@ -4,16 +4,17 @@ import { _ as isCronSessionKey, b as resolveThreadParentSessionKey, c as normali
|
|
|
4
4
|
import { $ as warn, B as sleep$1, D as escapeRegExp, E as ensureDir$3, G as danger, I as resolveUserPath, J as logVerbose, M as normalizeE164, O as formatTerminalLink, R as shortenHomeInString, S as CONFIG_DIR, U as truncateUtf16Safe, V as sliceUtf16Safe, W as isPlainObject, X as setVerbose, Z as shouldLogVerbose, _ as matchPluginCommand, a as normalizeAnyChannelId, d as createPluginRegistry, dt as resolvePreferredSymiTmpDir, et as colorize, f as normalizePluginHttpPath, g as listPluginCommands, h as getPluginCommandSpecs, k as isRecord$1, l as requireActivePluginRegistry, lt as normalizeLogLevel, m as executePluginCommand, n as CHAT_CHANNEL_ORDER, nt as theme, o as normalizeChannelId, p as clearPluginCommands, r as DEFAULT_CHAT_CHANNEL, rt as getChildLogger, tt as isRich, u as setActivePluginRegistry, v as createInternalHookEvent, w as clampInt, x as triggerInternalHook, z as shortenHomePath } from "./registry-DYq1AYOv.js";
|
|
5
5
|
import { a as resolveAgentModelPrimary, c as resolveDefaultAgentId, d as resolveSessionAgentIds, i as resolveAgentModelFallbacksOverride, l as resolveEffectiveModelFallbacks, n as resolveAgentConfig, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentId } from "./agent-scope-CpEJ0B88.js";
|
|
6
6
|
import { a as registerActiveProgressLine, i as clearActiveProgressLine, n as createNonExitingRuntime, o as unregisterActiveProgressLine, r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
|
|
7
|
-
import { S as logWarn, _ as runExec, b as logError, f as loadWorkspaceBootstrapFiles, g as runCommandWithTimeout, i as DEFAULT_IDENTITY_FILENAME, l as ensureAgentWorkspace, m as resolveSymiPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as spawnWithFallback, x as logInfo, y as logDebug } from "./workspace-DscDraUb.js";
|
|
7
|
+
import { S as logWarn, _ as runExec, b as logError, f as loadWorkspaceBootstrapFiles, g as runCommandWithTimeout, h as resolveSymiPackageRootSync, i as DEFAULT_IDENTITY_FILENAME, l as ensureAgentWorkspace, m as resolveSymiPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as spawnWithFallback, x as logInfo, y as logDebug } from "./workspace-DscDraUb.js";
|
|
8
8
|
import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-CbQV9WEg.js";
|
|
9
9
|
import { $ as resolveAuthProfileDisplayLabel, B as resolveApiKeyForProvider, C as normalizeProviderId, D as resolveModelRefFromString, E as resolveDefaultModelForAgent, F as OLLAMA_NATIVE_BASE_URL, G as getShellPathFromLoginShell, H as resolveModelAuthMode, I as createOllamaStreamFn, L as getApiKeyForModel, O as resolveSubagentSpawnModelSelection, Q as DEFAULT_PROVIDER, R as getCustomProviderApiKey, S as normalizeModelRef$2, T as resolveConfiguredModelRef, V as resolveEnvApiKey, W as normalizeSecretInput, X as DEFAULT_CONTEXT_TOKENS, Z as DEFAULT_MODEL, _ as buildConfiguredAllowlistKeys, a as markAuthProfileFailure, b as isCliProvider, c as dedupeProfileIds, d as ensureAuthProfileStore, et as resolveSymiAgentDir, f as resolveAuthStorePathForDisplay, g as buildAllowedModelSet, i as isProfileInCooldown, k as resolveThinkingDefault, l as listProfilesForProvider, n as resolveAuthProfileOrder, o as markAuthProfileUsed, p as withFileLock, q as resolveShellEnvFallbackTimeoutMs, r as getSoonestCooldownExpiry, s as resolveApiKeyForProfile, u as markAuthProfileGood, v as buildModelAliasIndex, x as modelKey, y as findNormalizedProviderValue, z as requireApiKey } from "./auth-profiles-C2vj6htZ.js";
|
|
10
10
|
import { n as formatCliCommand, r as resolveCliName, t as isTruthyEnvValue } from "./env-BDXYbTKj.js";
|
|
11
11
|
import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-cCYzSU9h.js";
|
|
12
12
|
import { t as parseBooleanValue$1 } from "./boolean-CE7i9tBR.js";
|
|
13
|
-
import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-
|
|
14
|
-
import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-
|
|
13
|
+
import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-B1P8lkqj.js";
|
|
14
|
+
import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-Do4JxgLI.js";
|
|
15
15
|
import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverSymiPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-CBCGTsIb.js";
|
|
16
|
-
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
16
|
+
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-BaMQiegP.js";
|
|
17
|
+
import { l as parseFrontmatterBlock } from "./frontmatter-CTR5f_Ez.js";
|
|
17
18
|
import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-CXxrn_e2.js";
|
|
18
19
|
import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-XIsvXeC-.js";
|
|
19
20
|
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-C7CauEK8.js";
|
|
@@ -27,20 +28,20 @@ import { _ as resolveDiscordAccount, a as normalizeWhatsAppTarget, c as listTele
|
|
|
27
28
|
import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, p as webAuthExists, r as getWebAuthAgeMs, t as resolveWhatsAppAccount } from "./accounts-BRw8yhIW.js";
|
|
28
29
|
import { t as resolveIMessageAccount } from "./accounts-3dCrO3oZ.js";
|
|
29
30
|
import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BuZxOb3B.js";
|
|
30
|
-
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-
|
|
31
|
-
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-
|
|
31
|
+
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-B7kMNQ-T.js";
|
|
32
|
+
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-9ktd0CBZ.js";
|
|
32
33
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-BBh3Gsrx.js";
|
|
33
34
|
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-SqqWIT22.js";
|
|
34
|
-
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-
|
|
35
|
+
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-Dx39g9ey.js";
|
|
35
36
|
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-BUcR3Meg.js";
|
|
36
37
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Zw87xFym.js";
|
|
37
|
-
import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, 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, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-
|
|
38
|
+
import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, 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, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-C-JvPPpM.js";
|
|
38
39
|
import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-RXOlh8ar.js";
|
|
39
40
|
import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-W0JzCJJM.js";
|
|
40
|
-
import { $ as isVoiceCompatibleAudio, 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 readChannelAllowFromStore, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as listPairingChannels, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, X as upsertChannelPairingRequest, Y as removeChannelAllowFromStoreEntry, Z as getPairingAdapter, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as parseTelegramTarget, 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 addChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as resolveTelegramTargetChatType, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-
|
|
41
|
+
import { $ as isVoiceCompatibleAudio, 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 readChannelAllowFromStore, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as listPairingChannels, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, X as upsertChannelPairingRequest, Y as removeChannelAllowFromStoreEntry, Z as getPairingAdapter, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as parseTelegramTarget, 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 addChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as resolveTelegramTargetChatType, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-90t8KM2a.js";
|
|
41
42
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-CuZX_Q4t.js";
|
|
42
43
|
import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CvEIl6_d.js";
|
|
43
|
-
import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-
|
|
44
|
+
import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-Bc-MeMho.js";
|
|
44
45
|
import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-DjnxpF_K.js";
|
|
45
46
|
import { n as retryAsync } from "./retry-B-y5suGA.js";
|
|
46
47
|
import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-DeJTztcq.js";
|
|
@@ -50,7 +51,7 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-CVCB
|
|
|
50
51
|
import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-ClipCZ9s.js";
|
|
51
52
|
import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-7tMVY7D_.js";
|
|
52
53
|
import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-DxbSTLNQ.js";
|
|
53
|
-
import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-
|
|
54
|
+
import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-C4opGXAA.js";
|
|
54
55
|
import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-DG2lcozb.js";
|
|
55
56
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-DZQU0r3y.js";
|
|
56
57
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-ClslA6GS.js";
|
|
@@ -58,11 +59,11 @@ import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-po
|
|
|
58
59
|
import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-D8QD7GoV.js";
|
|
59
60
|
import { n as normalizePollInput } from "./polls-Kt7OzYCK.js";
|
|
60
61
|
import { t as convertMarkdownTables } from "./tables-DoG-pFrf.js";
|
|
61
|
-
import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-
|
|
62
|
-
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-
|
|
62
|
+
import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-zMHWALCW.js";
|
|
63
|
+
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-CQj8FBE3.js";
|
|
63
64
|
import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-Jy5dFY67.js";
|
|
64
65
|
import { t as makeProxyFetch } from "./proxy-d9fklNTC.js";
|
|
65
|
-
import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-
|
|
66
|
+
import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-A6SltFjk.js";
|
|
66
67
|
import { t as getActiveWebListener } from "./active-listener-BVZOh2T1.js";
|
|
67
68
|
import { createRequire } from "node:module";
|
|
68
69
|
import * as path$1 from "node:path";
|
|
@@ -105,6 +106,38 @@ import { apiThrottler } from "@grammyjs/transformer-throttler";
|
|
|
105
106
|
|
|
106
107
|
//#region src/config/model-profiles-builtin.ts
|
|
107
108
|
/**
|
|
109
|
+
* Shared safety + output-style additions applied to most built-in profiles
|
|
110
|
+
* and the Generic fallback. These rules came from a long history of
|
|
111
|
+
* model-specific bugs (verification-monologue padding, "I have addressed"
|
|
112
|
+
* preambles, post-answer assessment lists). Keeping them in one place
|
|
113
|
+
* means a new profile inherits sane defaults instead of starting empty.
|
|
114
|
+
*
|
|
115
|
+
* Stage 2.4 of the prompt-reduction plan: rules that ALL profiles need
|
|
116
|
+
* live here; profile-specific rules (control-token stripping, tool-arg
|
|
117
|
+
* cleanup, reasoning hints) live in their own per-profile additions.
|
|
118
|
+
*
|
|
119
|
+
* Exported so resolve-model-profile.ts can apply the same additions to
|
|
120
|
+
* the Generic fallback profile — no model resolves to "Generic" without
|
|
121
|
+
* inheriting the safety/style rules.
|
|
122
|
+
*/
|
|
123
|
+
const SAFETY_AND_STYLE_ADDITIONS = [
|
|
124
|
+
"CRITICAL OUTPUT RULES:",
|
|
125
|
+
"- Your response ends when you have delivered the answer. Do not append anything after.",
|
|
126
|
+
"- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
|
|
127
|
+
"- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
|
|
128
|
+
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
129
|
+
"- If you need to verify your work, do so before writing your response, not after.",
|
|
130
|
+
"- Send brief progress updates on long tasks so the user knows you are active."
|
|
131
|
+
];
|
|
132
|
+
/** Hint for native-reasoning models (Nemotron, Qwen 3.5/3.6) to keep
|
|
133
|
+
* planning internal. Not applied to Gemma/Ollama because those models
|
|
134
|
+
* don't have structured thinking and the rule confuses them. */
|
|
135
|
+
const REASONING_DISCIPLINE_ADDITION = "- Keep planning and reasoning internal. Only speak when you have a result or need user input.";
|
|
136
|
+
/** Hint for models that leak Gemma-style control tokens (Gemma family,
|
|
137
|
+
* Ollama hosting any uncensored open model). Forces tool-arg cleanup and
|
|
138
|
+
* forbids leaking turn markers in user-visible text. */
|
|
139
|
+
const CONTROL_TOKEN_ADDITIONS = ["- Do not output raw control tokens, channel tags, or turn markers.", "- When calling tools, provide arguments as clean values only. Never include <|, |>, or XML-like tags in tool argument values. For exec/bash commands, provide only valid shell syntax."];
|
|
140
|
+
/**
|
|
108
141
|
* Built-in model profiles. Ordered from most-specific to least-specific so
|
|
109
142
|
* that `resolveModelProfile` can return the first match.
|
|
110
143
|
*
|
|
@@ -138,17 +171,7 @@ const BUILTIN_PROFILES = [
|
|
|
138
171
|
hasStructuredThinking: false,
|
|
139
172
|
validateToolArgs: true
|
|
140
173
|
},
|
|
141
|
-
promptAdditions: [
|
|
142
|
-
"CRITICAL OUTPUT RULES:",
|
|
143
|
-
"- Your response ends when you have delivered the answer. Do not append anything after.",
|
|
144
|
-
"- Do not output raw control tokens, channel tags, or turn markers.",
|
|
145
|
-
"- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
|
|
146
|
-
"- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
|
|
147
|
-
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
148
|
-
"- If you need to verify your work, do so before writing your response, not after.",
|
|
149
|
-
"- Send brief progress updates on long tasks so the user knows you are active.",
|
|
150
|
-
"- When calling tools, provide arguments as clean values only. Never include <|, |>, or XML-like tags in tool argument values. For exec/bash commands, provide only valid shell syntax."
|
|
151
|
-
],
|
|
174
|
+
promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, ...CONTROL_TOKEN_ADDITIONS],
|
|
152
175
|
ui: {
|
|
153
176
|
badge: "Local",
|
|
154
177
|
watchdogMs: 9e5,
|
|
@@ -175,16 +198,7 @@ const BUILTIN_PROFILES = [
|
|
|
175
198
|
hasStructuredThinking: true,
|
|
176
199
|
validateToolArgs: false
|
|
177
200
|
},
|
|
178
|
-
promptAdditions: [
|
|
179
|
-
"CRITICAL OUTPUT RULES:",
|
|
180
|
-
"- Your response ends when you have delivered the answer. Do not append anything after.",
|
|
181
|
-
"- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
|
|
182
|
-
"- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
|
|
183
|
-
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
184
|
-
"- If you need to verify your work, do so before writing your response, not after.",
|
|
185
|
-
"- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
|
|
186
|
-
"- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
|
|
187
|
-
],
|
|
201
|
+
promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
|
|
188
202
|
ui: {
|
|
189
203
|
badge: "Local",
|
|
190
204
|
watchdogMs: 9e5,
|
|
@@ -210,7 +224,7 @@ const BUILTIN_PROFILES = [
|
|
|
210
224
|
hasStructuredThinking: true,
|
|
211
225
|
validateToolArgs: false
|
|
212
226
|
},
|
|
213
|
-
promptAdditions: [],
|
|
227
|
+
promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS],
|
|
214
228
|
ui: {
|
|
215
229
|
badge: "API",
|
|
216
230
|
watchdogMs: 3e5,
|
|
@@ -243,15 +257,7 @@ const BUILTIN_PROFILES = [
|
|
|
243
257
|
hasStructuredThinking: true,
|
|
244
258
|
validateToolArgs: false
|
|
245
259
|
},
|
|
246
|
-
promptAdditions: [
|
|
247
|
-
"CRITICAL OUTPUT RULES:",
|
|
248
|
-
"- Your response ends when you have delivered the answer. Do not append anything after.",
|
|
249
|
-
"- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
|
|
250
|
-
"- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
|
|
251
|
-
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
252
|
-
"- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
|
|
253
|
-
"- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
|
|
254
|
-
],
|
|
260
|
+
promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
|
|
255
261
|
ui: {
|
|
256
262
|
badge: "Spider",
|
|
257
263
|
watchdogMs: 9e5,
|
|
@@ -284,16 +290,7 @@ const BUILTIN_PROFILES = [
|
|
|
284
290
|
hasStructuredThinking: false,
|
|
285
291
|
validateToolArgs: true
|
|
286
292
|
},
|
|
287
|
-
promptAdditions: [
|
|
288
|
-
"CRITICAL OUTPUT RULES:",
|
|
289
|
-
"- Your response ends when you have delivered the answer. Do not append anything after.",
|
|
290
|
-
"- Do not output raw control tokens, channel tags, or turn markers.",
|
|
291
|
-
"- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
|
|
292
|
-
"- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
|
|
293
|
-
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
294
|
-
"- Send brief progress updates on long tasks so the user knows you are active.",
|
|
295
|
-
"- When calling tools, provide arguments as clean values only. Never include <|, |>, or XML-like tags in tool argument values. For exec/bash commands, provide only valid shell syntax."
|
|
296
|
-
],
|
|
293
|
+
promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, ...CONTROL_TOKEN_ADDITIONS],
|
|
297
294
|
ui: {
|
|
298
295
|
badge: "Spider",
|
|
299
296
|
watchdogMs: 6e5,
|
|
@@ -325,16 +322,7 @@ const BUILTIN_PROFILES = [
|
|
|
325
322
|
hasStructuredThinking: true,
|
|
326
323
|
validateToolArgs: false
|
|
327
324
|
},
|
|
328
|
-
promptAdditions: [
|
|
329
|
-
"CRITICAL OUTPUT RULES:",
|
|
330
|
-
"- Your response ends when you have delivered the answer. Do not append anything after.",
|
|
331
|
-
"- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
|
|
332
|
-
"- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
|
|
333
|
-
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
334
|
-
"- If you need to verify your work, do so before writing your response, not after.",
|
|
335
|
-
"- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
|
|
336
|
-
"- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
|
|
337
|
-
],
|
|
325
|
+
promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
|
|
338
326
|
ui: {
|
|
339
327
|
badge: "CoreWeave",
|
|
340
328
|
watchdogMs: 9e5,
|
|
@@ -345,7 +333,15 @@ const BUILTIN_PROFILES = [
|
|
|
345
333
|
|
|
346
334
|
//#endregion
|
|
347
335
|
//#region src/config/resolve-model-profile.ts
|
|
348
|
-
/**
|
|
336
|
+
/**
|
|
337
|
+
* Default profile returned when no match is found.
|
|
338
|
+
*
|
|
339
|
+
* Stage 2.4 of the prompt-reduction plan: the Generic fallback now ships
|
|
340
|
+
* the same safety+style additions as every named profile, so newly-added
|
|
341
|
+
* models without a profile entry inherit sane defaults instead of
|
|
342
|
+
* starting empty (which would silently regress safety rules until someone
|
|
343
|
+
* notices and adds a profile).
|
|
344
|
+
*/
|
|
349
345
|
const FALLBACK_PROFILE = {
|
|
350
346
|
match: "*",
|
|
351
347
|
label: "Generic",
|
|
@@ -364,7 +360,7 @@ const FALLBACK_PROFILE = {
|
|
|
364
360
|
hasStructuredThinking: false,
|
|
365
361
|
validateToolArgs: false
|
|
366
362
|
},
|
|
367
|
-
promptAdditions: [],
|
|
363
|
+
promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS],
|
|
368
364
|
ui: {
|
|
369
365
|
watchdogMs: 3e5,
|
|
370
366
|
armWatchdogOnSend: true
|
|
@@ -4340,7 +4336,7 @@ async function getMemorySearchManager(params) {
|
|
|
4340
4336
|
const wrapper = new FallbackMemoryManager({
|
|
4341
4337
|
primary,
|
|
4342
4338
|
fallbackFactory: async () => {
|
|
4343
|
-
const { MemoryIndexManager } = await import("./manager-
|
|
4339
|
+
const { MemoryIndexManager } = await import("./manager-Bc-MeMho.js").then((n) => n.n);
|
|
4344
4340
|
return await MemoryIndexManager.get(params);
|
|
4345
4341
|
}
|
|
4346
4342
|
}, () => QMD_MANAGER_CACHE.delete(cacheKey));
|
|
@@ -4353,7 +4349,7 @@ async function getMemorySearchManager(params) {
|
|
|
4353
4349
|
}
|
|
4354
4350
|
}
|
|
4355
4351
|
try {
|
|
4356
|
-
const { MemoryIndexManager } = await import("./manager-
|
|
4352
|
+
const { MemoryIndexManager } = await import("./manager-Bc-MeMho.js").then((n) => n.n);
|
|
4357
4353
|
return { manager: await MemoryIndexManager.get(params) };
|
|
4358
4354
|
} catch (err) {
|
|
4359
4355
|
return {
|
|
@@ -6447,6 +6443,376 @@ function buildEmbeddedSandboxInfo(sandbox, execElevated) {
|
|
|
6447
6443
|
};
|
|
6448
6444
|
}
|
|
6449
6445
|
|
|
6446
|
+
//#endregion
|
|
6447
|
+
//#region src/agents/system-prompt-skills-autoload.ts
|
|
6448
|
+
const FRONTMATTER_RE = /^---\s*\n[\s\S]*?\n---\s*\n?/;
|
|
6449
|
+
let cachedPackageRoot$1;
|
|
6450
|
+
function getPackageRoot$1() {
|
|
6451
|
+
if (cachedPackageRoot$1 === void 0) cachedPackageRoot$1 = resolveSymiPackageRootSync({});
|
|
6452
|
+
return cachedPackageRoot$1;
|
|
6453
|
+
}
|
|
6454
|
+
function safeSkillName(name) {
|
|
6455
|
+
return /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/.test(name);
|
|
6456
|
+
}
|
|
6457
|
+
function tryLoadSkill(skillName, root) {
|
|
6458
|
+
const skillPath = path.join(root, "skills", skillName, "SKILL.md");
|
|
6459
|
+
try {
|
|
6460
|
+
if (!fs.statSync(skillPath).isFile()) return null;
|
|
6461
|
+
} catch {
|
|
6462
|
+
return null;
|
|
6463
|
+
}
|
|
6464
|
+
try {
|
|
6465
|
+
return fs.readFileSync(skillPath, "utf8");
|
|
6466
|
+
} catch {
|
|
6467
|
+
return null;
|
|
6468
|
+
}
|
|
6469
|
+
}
|
|
6470
|
+
function stripFrontmatter(body) {
|
|
6471
|
+
return body.replace(FRONTMATTER_RE, "").trimStart();
|
|
6472
|
+
}
|
|
6473
|
+
/**
|
|
6474
|
+
* Resolves and loads each named skill. Returns the inlinable Markdown block,
|
|
6475
|
+
* or empty string when no skills loaded / minimal mode / no names supplied.
|
|
6476
|
+
*/
|
|
6477
|
+
function buildAutoLoadedSkillsBlock(opts) {
|
|
6478
|
+
if (opts.minimalMode) return "";
|
|
6479
|
+
const names = opts.skillNames.filter((n) => typeof n === "string" && n.trim().length > 0);
|
|
6480
|
+
if (names.length === 0) return "";
|
|
6481
|
+
const packageRoot = getPackageRoot$1();
|
|
6482
|
+
const loaded = [];
|
|
6483
|
+
for (const rawName of names) {
|
|
6484
|
+
const name = rawName.trim();
|
|
6485
|
+
if (!safeSkillName(name)) {
|
|
6486
|
+
logWarn(`autoLoadInline: skipping invalid skill name '${rawName}'`);
|
|
6487
|
+
continue;
|
|
6488
|
+
}
|
|
6489
|
+
let body = null;
|
|
6490
|
+
let source = "bundled";
|
|
6491
|
+
if (opts.workspaceDir) {
|
|
6492
|
+
body = tryLoadSkill(name, opts.workspaceDir);
|
|
6493
|
+
source = "workspace";
|
|
6494
|
+
}
|
|
6495
|
+
if (body === null && packageRoot) {
|
|
6496
|
+
body = tryLoadSkill(name, packageRoot);
|
|
6497
|
+
source = "bundled";
|
|
6498
|
+
}
|
|
6499
|
+
if (body === null) {
|
|
6500
|
+
logWarn(`autoLoadInline: skill '${name}' not found in workspace or bundled skills`);
|
|
6501
|
+
continue;
|
|
6502
|
+
}
|
|
6503
|
+
const stripped = stripFrontmatter(body).trim();
|
|
6504
|
+
if (!stripped) {
|
|
6505
|
+
logWarn(`autoLoadInline: skill '${name}' has empty body after frontmatter strip; skipping`);
|
|
6506
|
+
continue;
|
|
6507
|
+
}
|
|
6508
|
+
loaded.push({
|
|
6509
|
+
name,
|
|
6510
|
+
body: stripped,
|
|
6511
|
+
source
|
|
6512
|
+
});
|
|
6513
|
+
}
|
|
6514
|
+
if (loaded.length === 0) return "";
|
|
6515
|
+
return [
|
|
6516
|
+
"",
|
|
6517
|
+
"---",
|
|
6518
|
+
"",
|
|
6519
|
+
"## Auto-loaded Skills",
|
|
6520
|
+
"",
|
|
6521
|
+
loaded.map((skill) => `<!-- auto-loaded: ${skill.name} (${skill.source}) -->\n${skill.body}`).join("\n\n---\n\n"),
|
|
6522
|
+
""
|
|
6523
|
+
].join("\n");
|
|
6524
|
+
}
|
|
6525
|
+
|
|
6526
|
+
//#endregion
|
|
6527
|
+
//#region src/agents/skills/triggers.ts
|
|
6528
|
+
const QUOTE_RE = /^["'`](.*)["'`]$/;
|
|
6529
|
+
const ARRAY_FORM_RE = /^\[(.*)\]$/s;
|
|
6530
|
+
function stripWrappingQuotes(s) {
|
|
6531
|
+
const m = s.trim().match(QUOTE_RE);
|
|
6532
|
+
return m ? m[1] : s.trim();
|
|
6533
|
+
}
|
|
6534
|
+
/** Parse a single trigger value, dropping empty / whitespace-only entries. */
|
|
6535
|
+
function cleanTrigger(raw) {
|
|
6536
|
+
const trimmed = stripWrappingQuotes(raw).toLowerCase();
|
|
6537
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
6538
|
+
}
|
|
6539
|
+
/**
|
|
6540
|
+
* Parse the value of a `triggers:` frontmatter field into a string[].
|
|
6541
|
+
* Accepts both inline-array form `[a, b, "c d"]` and YAML-list form
|
|
6542
|
+
* (multiline with leading hyphens). Returns deduped lowercased trigger
|
|
6543
|
+
* strings, or empty array on unparseable / missing input.
|
|
6544
|
+
*/
|
|
6545
|
+
function parseTriggersValue(raw) {
|
|
6546
|
+
if (typeof raw !== "string") return [];
|
|
6547
|
+
const trimmed = raw.trim();
|
|
6548
|
+
if (!trimmed) return [];
|
|
6549
|
+
const items = [];
|
|
6550
|
+
const arrayMatch = trimmed.match(ARRAY_FORM_RE);
|
|
6551
|
+
if (arrayMatch) {
|
|
6552
|
+
const inner = arrayMatch[1];
|
|
6553
|
+
let buf = "";
|
|
6554
|
+
let inQuote = null;
|
|
6555
|
+
for (const ch of inner) {
|
|
6556
|
+
if (inQuote) {
|
|
6557
|
+
if (ch === inQuote) inQuote = null;
|
|
6558
|
+
else buf += ch;
|
|
6559
|
+
continue;
|
|
6560
|
+
}
|
|
6561
|
+
if (ch === "\"" || ch === "'") {
|
|
6562
|
+
inQuote = ch;
|
|
6563
|
+
continue;
|
|
6564
|
+
}
|
|
6565
|
+
if (ch === ",") {
|
|
6566
|
+
const cleaned = cleanTrigger(buf);
|
|
6567
|
+
if (cleaned) items.push(cleaned);
|
|
6568
|
+
buf = "";
|
|
6569
|
+
continue;
|
|
6570
|
+
}
|
|
6571
|
+
buf += ch;
|
|
6572
|
+
}
|
|
6573
|
+
const cleaned = cleanTrigger(buf);
|
|
6574
|
+
if (cleaned) items.push(cleaned);
|
|
6575
|
+
} else for (const line of trimmed.split("\n")) {
|
|
6576
|
+
const ltrim = line.trimStart();
|
|
6577
|
+
if (ltrim.startsWith("- ")) {
|
|
6578
|
+
const cleaned = cleanTrigger(ltrim.slice(2));
|
|
6579
|
+
if (cleaned) items.push(cleaned);
|
|
6580
|
+
} else if (ltrim && !ltrim.startsWith("#")) {
|
|
6581
|
+
const cleaned = cleanTrigger(ltrim);
|
|
6582
|
+
if (cleaned) items.push(cleaned);
|
|
6583
|
+
}
|
|
6584
|
+
}
|
|
6585
|
+
const seen = /* @__PURE__ */ new Set();
|
|
6586
|
+
const out = [];
|
|
6587
|
+
for (const t of items) if (!seen.has(t)) {
|
|
6588
|
+
seen.add(t);
|
|
6589
|
+
out.push(t);
|
|
6590
|
+
}
|
|
6591
|
+
return out;
|
|
6592
|
+
}
|
|
6593
|
+
/**
|
|
6594
|
+
* Extract triggers from a parsed frontmatter record. Returns empty array
|
|
6595
|
+
* when the field is absent or unparseable.
|
|
6596
|
+
*/
|
|
6597
|
+
function getSkillTriggers(frontmatter) {
|
|
6598
|
+
return parseTriggersValue(frontmatter.triggers);
|
|
6599
|
+
}
|
|
6600
|
+
|
|
6601
|
+
//#endregion
|
|
6602
|
+
//#region src/agents/tools/skill-search-tool.ts
|
|
6603
|
+
const SkillSearchToolSchema = Type.Object({
|
|
6604
|
+
query: Type.String({
|
|
6605
|
+
minLength: 1,
|
|
6606
|
+
description: "Intent description (2-8 words). Match by trigger keywords first, then description text."
|
|
6607
|
+
}),
|
|
6608
|
+
limit: Type.Optional(Type.Number({
|
|
6609
|
+
minimum: 1,
|
|
6610
|
+
maximum: 10,
|
|
6611
|
+
description: "Max results to return (default 5, capped at 10)."
|
|
6612
|
+
}))
|
|
6613
|
+
});
|
|
6614
|
+
const CACHE_TTL_MS = 6e4;
|
|
6615
|
+
const SAFE_NAME_RE = /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/;
|
|
6616
|
+
function loadSkillFromDir(dir, source) {
|
|
6617
|
+
const name = path.basename(dir);
|
|
6618
|
+
if (!SAFE_NAME_RE.test(name)) return null;
|
|
6619
|
+
const file = path.join(dir, "SKILL.md");
|
|
6620
|
+
let raw;
|
|
6621
|
+
try {
|
|
6622
|
+
if (!fs.statSync(file).isFile()) return null;
|
|
6623
|
+
raw = fs.readFileSync(file, "utf8");
|
|
6624
|
+
} catch {
|
|
6625
|
+
return null;
|
|
6626
|
+
}
|
|
6627
|
+
const fm = parseFrontmatterBlock(raw);
|
|
6628
|
+
return {
|
|
6629
|
+
name,
|
|
6630
|
+
description: (fm.description ?? "").trim(),
|
|
6631
|
+
path: file,
|
|
6632
|
+
triggers: getSkillTriggers(fm),
|
|
6633
|
+
source
|
|
6634
|
+
};
|
|
6635
|
+
}
|
|
6636
|
+
function listSkillDirs(root) {
|
|
6637
|
+
const skillsDir = path.join(root, "skills");
|
|
6638
|
+
let entries;
|
|
6639
|
+
try {
|
|
6640
|
+
entries = fs.readdirSync(skillsDir, { withFileTypes: true });
|
|
6641
|
+
} catch {
|
|
6642
|
+
return [];
|
|
6643
|
+
}
|
|
6644
|
+
return entries.filter((e) => e.isDirectory()).map((e) => path.join(skillsDir, e.name));
|
|
6645
|
+
}
|
|
6646
|
+
let cachedPackageRoot;
|
|
6647
|
+
const cachePerWorkspace = /* @__PURE__ */ new Map();
|
|
6648
|
+
function getPackageRoot() {
|
|
6649
|
+
if (cachedPackageRoot === void 0) cachedPackageRoot = resolveSymiPackageRootSync({});
|
|
6650
|
+
return cachedPackageRoot;
|
|
6651
|
+
}
|
|
6652
|
+
function loadAllSkills(workspaceDir) {
|
|
6653
|
+
const cacheKey = workspaceDir ?? "";
|
|
6654
|
+
const now = Date.now();
|
|
6655
|
+
const existing = cachePerWorkspace.get(cacheKey);
|
|
6656
|
+
if (existing && now - existing.loadedAt < CACHE_TTL_MS) return existing.skills;
|
|
6657
|
+
const seen = /* @__PURE__ */ new Map();
|
|
6658
|
+
if (workspaceDir) for (const dir of listSkillDirs(workspaceDir)) {
|
|
6659
|
+
const skill = loadSkillFromDir(dir, "workspace");
|
|
6660
|
+
if (skill && !seen.has(skill.name)) seen.set(skill.name, skill);
|
|
6661
|
+
}
|
|
6662
|
+
const packageRoot = getPackageRoot();
|
|
6663
|
+
if (packageRoot) for (const dir of listSkillDirs(packageRoot)) {
|
|
6664
|
+
const skill = loadSkillFromDir(dir, "bundled");
|
|
6665
|
+
if (skill && !seen.has(skill.name)) seen.set(skill.name, skill);
|
|
6666
|
+
}
|
|
6667
|
+
const skills = [...seen.values()];
|
|
6668
|
+
cachePerWorkspace.set(cacheKey, {
|
|
6669
|
+
skills,
|
|
6670
|
+
loadedAt: now
|
|
6671
|
+
});
|
|
6672
|
+
return skills;
|
|
6673
|
+
}
|
|
6674
|
+
const TOKEN_SPLIT_RE = /[^\w/]+/;
|
|
6675
|
+
function tokenizeQuery(raw) {
|
|
6676
|
+
return raw.toLowerCase().split(TOKEN_SPLIT_RE).filter((t) => t.length >= 2);
|
|
6677
|
+
}
|
|
6678
|
+
/**
|
|
6679
|
+
* Score a query against one skill's triggers + description.
|
|
6680
|
+
* - Trigger score: ratio of query tokens that appear in the trigger set.
|
|
6681
|
+
* - FTS score: 0.4 × ratio of query tokens that appear in the description
|
|
6682
|
+
* (case-insensitive substring match).
|
|
6683
|
+
* - Final = max(trigger, fts) so trigger matches always beat descriptions.
|
|
6684
|
+
* - Returns 0 for "no signal at all" (caller should drop these).
|
|
6685
|
+
*/
|
|
6686
|
+
function scoreSkillMatch(skill, queryTokens) {
|
|
6687
|
+
if (queryTokens.length === 0) return 0;
|
|
6688
|
+
const triggerSet = new Set(skill.triggers.map((t) => t.toLowerCase()));
|
|
6689
|
+
const description = skill.description.toLowerCase();
|
|
6690
|
+
let triggerHits = 0;
|
|
6691
|
+
let ftsHits = 0;
|
|
6692
|
+
for (const token of queryTokens) if (triggerSet.has(token)) triggerHits += 1;
|
|
6693
|
+
else if (description.includes(token)) ftsHits += 1;
|
|
6694
|
+
const triggerScore = triggerHits / queryTokens.length;
|
|
6695
|
+
const ftsScore = ftsHits / queryTokens.length * .4;
|
|
6696
|
+
return Math.max(triggerScore, ftsScore);
|
|
6697
|
+
}
|
|
6698
|
+
/**
|
|
6699
|
+
* Pure-function search; exported for testing without going through the
|
|
6700
|
+
* tool execute wrapper.
|
|
6701
|
+
*/
|
|
6702
|
+
function searchSkills(query, limit, workspaceDir) {
|
|
6703
|
+
const tokens = tokenizeQuery(query);
|
|
6704
|
+
if (tokens.length === 0) return [];
|
|
6705
|
+
const all = loadAllSkills(workspaceDir);
|
|
6706
|
+
const scored = [];
|
|
6707
|
+
for (const skill of all) {
|
|
6708
|
+
const score = scoreSkillMatch(skill, tokens);
|
|
6709
|
+
if (score > 0) scored.push({
|
|
6710
|
+
name: skill.name,
|
|
6711
|
+
description: skill.description,
|
|
6712
|
+
path: skill.path,
|
|
6713
|
+
score
|
|
6714
|
+
});
|
|
6715
|
+
}
|
|
6716
|
+
scored.sort((a, b) => b.score - a.score || a.name.localeCompare(b.name));
|
|
6717
|
+
return scored.slice(0, limit);
|
|
6718
|
+
}
|
|
6719
|
+
function createSkillSearchTool(opts) {
|
|
6720
|
+
return {
|
|
6721
|
+
name: "skill_search",
|
|
6722
|
+
label: "skill_search",
|
|
6723
|
+
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.",
|
|
6724
|
+
parameters: SkillSearchToolSchema,
|
|
6725
|
+
execute: async (_toolCallId, args) => {
|
|
6726
|
+
const params = args;
|
|
6727
|
+
const query = typeof params.query === "string" ? params.query.trim() : "";
|
|
6728
|
+
if (!query) return jsonResult({
|
|
6729
|
+
ok: false,
|
|
6730
|
+
error: "skill_search requires a non-empty `query` string."
|
|
6731
|
+
});
|
|
6732
|
+
const limit = typeof params.limit === "number" && Number.isFinite(params.limit) ? Math.min(10, Math.max(1, Math.floor(params.limit))) : 5;
|
|
6733
|
+
try {
|
|
6734
|
+
return jsonResult({
|
|
6735
|
+
ok: true,
|
|
6736
|
+
query,
|
|
6737
|
+
matches: searchSkills(query, limit, opts?.workspaceDir)
|
|
6738
|
+
});
|
|
6739
|
+
} catch (err) {
|
|
6740
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
6741
|
+
logWarn(`skill_search failed: ${message}`);
|
|
6742
|
+
return jsonResult({
|
|
6743
|
+
ok: false,
|
|
6744
|
+
error: message
|
|
6745
|
+
});
|
|
6746
|
+
}
|
|
6747
|
+
}
|
|
6748
|
+
};
|
|
6749
|
+
}
|
|
6750
|
+
|
|
6751
|
+
//#endregion
|
|
6752
|
+
//#region src/agents/system-prompt-skills-jit.ts
|
|
6753
|
+
const MAX_ANCHOR_DESCRIPTION_CHARS = 100;
|
|
6754
|
+
const MAX_AUTO_INJECT_RESULTS = 3;
|
|
6755
|
+
const MAX_AUTO_INJECT_TOTAL_CHARS = 600;
|
|
6756
|
+
/**
|
|
6757
|
+
* Build the anchor list block. Returns "" when no anchor list configured
|
|
6758
|
+
* or in preload mode (anchor list adds value only in jit/hybrid).
|
|
6759
|
+
*/
|
|
6760
|
+
function buildAnchorListBlock(opts) {
|
|
6761
|
+
if (opts.minimalMode) return "";
|
|
6762
|
+
if (opts.discoveryMode !== "jit" && opts.discoveryMode !== "hybrid") return "";
|
|
6763
|
+
const names = (opts.anchorList ?? []).filter((n) => typeof n === "string" && n.trim().length > 0);
|
|
6764
|
+
if (names.length === 0) return "";
|
|
6765
|
+
const lines = [];
|
|
6766
|
+
for (const name of names) {
|
|
6767
|
+
const description = searchSkills(name, 1, opts.workspaceDir)[0]?.description.trim() ?? "";
|
|
6768
|
+
const truncated = description.length > MAX_ANCHOR_DESCRIPTION_CHARS ? `${description.slice(0, MAX_ANCHOR_DESCRIPTION_CHARS - 1)}…` : description;
|
|
6769
|
+
lines.push(truncated ? `- ${name}: ${truncated}` : `- ${name}`);
|
|
6770
|
+
}
|
|
6771
|
+
return [
|
|
6772
|
+
"",
|
|
6773
|
+
"## Anchor Skills",
|
|
6774
|
+
"These skills are always available. Read their SKILL.md via `read` if relevant. For full discovery use the `skill_search` tool.",
|
|
6775
|
+
lines.join("\n"),
|
|
6776
|
+
""
|
|
6777
|
+
].join("\n");
|
|
6778
|
+
}
|
|
6779
|
+
/**
|
|
6780
|
+
* Build the auto-injected matches block based on the user message triggers.
|
|
6781
|
+
* Returns "" when discoveryMode doesn't ask for it, no message available,
|
|
6782
|
+
* no matches found, or in minimal mode.
|
|
6783
|
+
*/
|
|
6784
|
+
function buildAutoInjectBlock(opts) {
|
|
6785
|
+
if (opts.minimalMode) return "";
|
|
6786
|
+
if (opts.discoveryMode !== "jit" && opts.discoveryMode !== "hybrid") return "";
|
|
6787
|
+
const message = (opts.userMessage ?? "").trim();
|
|
6788
|
+
if (!message) return "";
|
|
6789
|
+
const matches = searchSkills(message, MAX_AUTO_INJECT_RESULTS, opts.workspaceDir);
|
|
6790
|
+
if (matches.length === 0) return "";
|
|
6791
|
+
const lines = [];
|
|
6792
|
+
let total = 0;
|
|
6793
|
+
for (const match of matches) {
|
|
6794
|
+
const description = match.description.trim();
|
|
6795
|
+
const truncated = description.length > MAX_ANCHOR_DESCRIPTION_CHARS ? `${description.slice(0, MAX_ANCHOR_DESCRIPTION_CHARS - 1)}…` : description;
|
|
6796
|
+
const skillRef = path.basename(path.dirname(match.path));
|
|
6797
|
+
const line = truncated ? `- ${skillRef}: ${truncated}` : `- ${skillRef}`;
|
|
6798
|
+
if (total + line.length > MAX_AUTO_INJECT_TOTAL_CHARS) break;
|
|
6799
|
+
lines.push(line);
|
|
6800
|
+
total += line.length + 1;
|
|
6801
|
+
}
|
|
6802
|
+
if (lines.length === 0) return "";
|
|
6803
|
+
return [
|
|
6804
|
+
"",
|
|
6805
|
+
"## Possibly Relevant Skills (auto-suggested for this request)",
|
|
6806
|
+
"These skills' triggers matched keywords in your message. Read the SKILL.md if it applies; otherwise ignore and proceed.",
|
|
6807
|
+
lines.join("\n"),
|
|
6808
|
+
""
|
|
6809
|
+
].join("\n");
|
|
6810
|
+
}
|
|
6811
|
+
/** Convenience: build both blocks concatenated. */
|
|
6812
|
+
function buildSkillsJitBlocks(opts) {
|
|
6813
|
+
return `${buildAnchorListBlock(opts)}${buildAutoInjectBlock(opts)}`;
|
|
6814
|
+
}
|
|
6815
|
+
|
|
6450
6816
|
//#endregion
|
|
6451
6817
|
//#region src/agents/system-prompt.ts
|
|
6452
6818
|
function buildSkillsSection(params) {
|
|
@@ -6963,7 +7329,7 @@ function buildToolSummaryMap(tools) {
|
|
|
6963
7329
|
//#endregion
|
|
6964
7330
|
//#region src/agents/pi-embedded-runner/system-prompt.ts
|
|
6965
7331
|
function buildEmbeddedSystemPrompt(params) {
|
|
6966
|
-
|
|
7332
|
+
const corePrompt = buildAgentSystemPrompt({
|
|
6967
7333
|
workspaceDir: params.workspaceDir,
|
|
6968
7334
|
defaultThinkLevel: params.defaultThinkLevel,
|
|
6969
7335
|
reasoningLevel: params.reasoningLevel,
|
|
@@ -6991,6 +7357,19 @@ function buildEmbeddedSystemPrompt(params) {
|
|
|
6991
7357
|
contextFiles: params.contextFiles,
|
|
6992
7358
|
memoryCitationsMode: params.memoryCitationsMode
|
|
6993
7359
|
});
|
|
7360
|
+
const promptMode = params.promptMode ?? "full";
|
|
7361
|
+
const isMinimal = promptMode === "minimal" || promptMode === "none";
|
|
7362
|
+
return `${corePrompt}${buildAutoLoadedSkillsBlock({
|
|
7363
|
+
skillNames: params.autoLoadInlineSkills ?? [],
|
|
7364
|
+
workspaceDir: params.workspaceDir,
|
|
7365
|
+
minimalMode: isMinimal
|
|
7366
|
+
})}${buildSkillsJitBlocks({
|
|
7367
|
+
discoveryMode: params.skillsDiscoveryMode,
|
|
7368
|
+
anchorList: params.skillsAnchorList,
|
|
7369
|
+
userMessage: params.currentUserMessage,
|
|
7370
|
+
workspaceDir: params.workspaceDir,
|
|
7371
|
+
minimalMode: isMinimal
|
|
7372
|
+
})}`;
|
|
6994
7373
|
}
|
|
6995
7374
|
function createSystemPromptOverride(systemPrompt) {
|
|
6996
7375
|
const override = systemPrompt.trim();
|
|
@@ -10443,7 +10822,7 @@ async function routeReply(params) {
|
|
|
10443
10822
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
10444
10823
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
10445
10824
|
try {
|
|
10446
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
10825
|
+
const { deliverOutboundPayloads } = await import("./deliver-Dx39g9ey.js").then((n) => n.n);
|
|
10447
10826
|
return {
|
|
10448
10827
|
ok: true,
|
|
10449
10828
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -40457,6 +40836,7 @@ function createSymiTools(options) {
|
|
|
40457
40836
|
createCronTool({ agentSessionKey: options?.agentSessionKey }),
|
|
40458
40837
|
createTaskListTool({ workspaceDir }),
|
|
40459
40838
|
createTaskCancelTool({ workspaceDir }),
|
|
40839
|
+
createSkillSearchTool({ workspaceDir }),
|
|
40460
40840
|
...messageTool ? [messageTool] : [],
|
|
40461
40841
|
createTtsTool({
|
|
40462
40842
|
agentChannel: options?.agentChannel,
|
|
@@ -44236,7 +44616,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
44236
44616
|
return;
|
|
44237
44617
|
}
|
|
44238
44618
|
try {
|
|
44239
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
44619
|
+
const { deliverOutboundPayloads } = await import("./deliver-Dx39g9ey.js").then((n) => n.n);
|
|
44240
44620
|
await deliverOutboundPayloads({
|
|
44241
44621
|
cfg: params.cfg,
|
|
44242
44622
|
channel,
|
|
@@ -47682,7 +48062,7 @@ async function describeStickerImage(params) {
|
|
|
47682
48062
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
47683
48063
|
try {
|
|
47684
48064
|
const buffer = await fs$1.readFile(imagePath);
|
|
47685
|
-
const { describeImageWithModel } = await import("./image-
|
|
48065
|
+
const { describeImageWithModel } = await import("./image-C-JvPPpM.js").then((n) => n.n);
|
|
47686
48066
|
return (await describeImageWithModel({
|
|
47687
48067
|
buffer,
|
|
47688
48068
|
fileName: "sticker.webp",
|
|
@@ -48105,7 +48485,7 @@ function createWhatsAppLoginTool() {
|
|
|
48105
48485
|
force: Type.Optional(Type.Boolean())
|
|
48106
48486
|
}),
|
|
48107
48487
|
execute: async (_toolCallId, args) => {
|
|
48108
|
-
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-
|
|
48488
|
+
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DiyxAHpv.js");
|
|
48109
48489
|
if ((args?.action ?? "start") === "wait") {
|
|
48110
48490
|
const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
|
|
48111
48491
|
return {
|
|
@@ -50431,7 +50811,7 @@ async function preflightDiscordMessage(params) {
|
|
|
50431
50811
|
let preflightTranscript;
|
|
50432
50812
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
50433
50813
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
50434
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
50814
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-DQR2Ivi-.js");
|
|
50435
50815
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
50436
50816
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
50437
50817
|
ctx: {
|
|
@@ -54437,27 +54817,27 @@ function isVoiceChannelType(type) {
|
|
|
54437
54817
|
function createDefaultDeps() {
|
|
54438
54818
|
return {
|
|
54439
54819
|
sendMessageWhatsApp: async (...args) => {
|
|
54440
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
54820
|
+
const { sendMessageWhatsApp } = await import("./web-BJIv_6uQ.js");
|
|
54441
54821
|
return await sendMessageWhatsApp(...args);
|
|
54442
54822
|
},
|
|
54443
54823
|
sendMessageTelegram: async (...args) => {
|
|
54444
|
-
const { sendMessageTelegram } = await import("./send-
|
|
54824
|
+
const { sendMessageTelegram } = await import("./send-90t8KM2a.js").then((n) => n.l);
|
|
54445
54825
|
return await sendMessageTelegram(...args);
|
|
54446
54826
|
},
|
|
54447
54827
|
sendMessageDiscord: async (...args) => {
|
|
54448
|
-
const { sendMessageDiscord } = await import("./send-
|
|
54828
|
+
const { sendMessageDiscord } = await import("./send-9ktd0CBZ.js").then((n) => n.t);
|
|
54449
54829
|
return await sendMessageDiscord(...args);
|
|
54450
54830
|
},
|
|
54451
54831
|
sendMessageSlack: async (...args) => {
|
|
54452
|
-
const { sendMessageSlack } = await import("./send-
|
|
54832
|
+
const { sendMessageSlack } = await import("./send-B7kMNQ-T.js").then((n) => n.n);
|
|
54453
54833
|
return await sendMessageSlack(...args);
|
|
54454
54834
|
},
|
|
54455
54835
|
sendMessageSignal: async (...args) => {
|
|
54456
|
-
const { sendMessageSignal } = await import("./send-
|
|
54836
|
+
const { sendMessageSignal } = await import("./send-zMHWALCW.js").then((n) => n.i);
|
|
54457
54837
|
return await sendMessageSignal(...args);
|
|
54458
54838
|
},
|
|
54459
54839
|
sendMessageIMessage: async (...args) => {
|
|
54460
|
-
const { sendMessageIMessage } = await import("./send-
|
|
54840
|
+
const { sendMessageIMessage } = await import("./send-CQj8FBE3.js").then((n) => n.n);
|
|
54461
54841
|
return await sendMessageIMessage(...args);
|
|
54462
54842
|
}
|
|
54463
54843
|
};
|
|
@@ -65287,7 +65667,7 @@ async function registerSlackMonitorSlashCommands(params) {
|
|
|
65287
65667
|
});
|
|
65288
65668
|
const deliverSlashPayloads = async (replies) => {
|
|
65289
65669
|
const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
|
|
65290
|
-
import("./replies-
|
|
65670
|
+
import("./replies-A6SltFjk.js").then((n) => n.r),
|
|
65291
65671
|
import("./chunk-BRe1o4Af.js").then((n) => n.s),
|
|
65292
65672
|
import("./markdown-tables-x2Xe2UXh.js").then((n) => n.t)
|
|
65293
65673
|
]);
|
|
@@ -67560,7 +67940,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
67560
67940
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
67561
67941
|
let preflightTranscript;
|
|
67562
67942
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
67563
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
67943
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-DQR2Ivi-.js");
|
|
67564
67944
|
preflightTranscript = await transcribeFirstAudio({
|
|
67565
67945
|
ctx: {
|
|
67566
67946
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -69705,23 +70085,23 @@ let webLoginQrPromise = null;
|
|
|
69705
70085
|
let webChannelPromise = null;
|
|
69706
70086
|
let whatsappActionsPromise = null;
|
|
69707
70087
|
function loadWebOutbound() {
|
|
69708
|
-
webOutboundPromise ??= import("./outbound-
|
|
70088
|
+
webOutboundPromise ??= import("./outbound-BaF9dF-H.js").then((n) => n.t);
|
|
69709
70089
|
return webOutboundPromise;
|
|
69710
70090
|
}
|
|
69711
70091
|
function loadWebLogin() {
|
|
69712
|
-
webLoginPromise ??= import("./login-
|
|
70092
|
+
webLoginPromise ??= import("./login-DqhTprwd.js").then((n) => n.n);
|
|
69713
70093
|
return webLoginPromise;
|
|
69714
70094
|
}
|
|
69715
70095
|
function loadWebLoginQr() {
|
|
69716
|
-
webLoginQrPromise ??= import("./login-qr-
|
|
70096
|
+
webLoginQrPromise ??= import("./login-qr-DiyxAHpv.js");
|
|
69717
70097
|
return webLoginQrPromise;
|
|
69718
70098
|
}
|
|
69719
70099
|
function loadWebChannel() {
|
|
69720
|
-
webChannelPromise ??= import("./web-
|
|
70100
|
+
webChannelPromise ??= import("./web-BJIv_6uQ.js");
|
|
69721
70101
|
return webChannelPromise;
|
|
69722
70102
|
}
|
|
69723
70103
|
function loadWhatsAppActions() {
|
|
69724
|
-
whatsappActionsPromise ??= import("./whatsapp-actions-
|
|
70104
|
+
whatsappActionsPromise ??= import("./whatsapp-actions-DRvUrapa.js");
|
|
69725
70105
|
return whatsappActionsPromise;
|
|
69726
70106
|
}
|
|
69727
70107
|
function createPluginRuntime() {
|
|
@@ -71596,6 +71976,22 @@ function wrapToolParamNormalization(tool, requiredParamGroups) {
|
|
|
71596
71976
|
}
|
|
71597
71977
|
};
|
|
71598
71978
|
}
|
|
71979
|
+
/**
|
|
71980
|
+
* Override a tool's description while preserving execute, parameters, and
|
|
71981
|
+
* other properties. Used by Stage 2.5 of the prompt-reduction plan to move
|
|
71982
|
+
* usage docs from the system prompt into tool descriptions where they
|
|
71983
|
+
* belong contextually.
|
|
71984
|
+
*
|
|
71985
|
+
* The replacement description should include the upstream's tool-purpose
|
|
71986
|
+
* sentence so models that only read the description (without the prompt
|
|
71987
|
+
* section) still have the same baseline understanding.
|
|
71988
|
+
*/
|
|
71989
|
+
function wrapToolWithDescriptionOverride(tool, description) {
|
|
71990
|
+
return {
|
|
71991
|
+
...tool,
|
|
71992
|
+
description
|
|
71993
|
+
};
|
|
71994
|
+
}
|
|
71599
71995
|
function wrapToolWorkspaceRootGuard(tool, root) {
|
|
71600
71996
|
return {
|
|
71601
71997
|
...tool,
|
|
@@ -71836,6 +72232,26 @@ function resolveToolLoopDetectionConfig(params) {
|
|
|
71836
72232
|
}
|
|
71837
72233
|
};
|
|
71838
72234
|
}
|
|
72235
|
+
/**
|
|
72236
|
+
* Edit tool description. Replaces the upstream's terse one-liner with
|
|
72237
|
+
* usage notes migrated from the system prompt's "Edit Tool Best Practices"
|
|
72238
|
+
* section in Stage 2.5 of the prompt-reduction plan. Co-locating these
|
|
72239
|
+
* notes with the tool means they ship only when edit is in palette, and
|
|
72240
|
+
* the system prompt section can be deleted in Stage 4 without losing the
|
|
72241
|
+
* guidance.
|
|
72242
|
+
*
|
|
72243
|
+
* Combined with the read-before-edit guard (Stage 1.3) and the model's
|
|
72244
|
+
* own discipline, this should kill the hallucinated-oldText failure class
|
|
72245
|
+
* for any well-intentioned model.
|
|
72246
|
+
*/
|
|
72247
|
+
const EDIT_TOOL_DESCRIPTION = [
|
|
72248
|
+
"Edit a file by replacing exact text. The oldText must match the file EXACTLY (whitespace, indentation, and all).",
|
|
72249
|
+
"Best practices to avoid match failures:",
|
|
72250
|
+
"- Use the SHORTEST unique snippet that identifies the edit location (1-3 lines). Do NOT paste large blocks.",
|
|
72251
|
+
"- ALWAYS read the file first, then copy the exact text from the read output for oldText. The read-before-edit guard refuses edits to unread files.",
|
|
72252
|
+
"- 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 skip to a different issue.",
|
|
72253
|
+
"- Prefer lines with distinctive content (function names, unique strings) over generic code (braces, blank lines)."
|
|
72254
|
+
].join(" ");
|
|
71839
72255
|
function createSymiCodingTools(options) {
|
|
71840
72256
|
const execToolName = "exec";
|
|
71841
72257
|
const sandbox = options?.sandbox?.enabled ? options.sandbox : void 0;
|
|
@@ -71924,7 +72340,7 @@ function createSymiCodingTools(options) {
|
|
|
71924
72340
|
}
|
|
71925
72341
|
if (tool.name === "edit") {
|
|
71926
72342
|
if (sandboxRoot) return [];
|
|
71927
|
-
const guarded = wrapEditToolWithGuard(wrapToolParamNormalization(createEditTool(workspaceRoot), CLAUDE_PARAM_GROUPS.edit), readEditTracker);
|
|
72343
|
+
const guarded = wrapEditToolWithGuard(wrapToolWithDescriptionOverride(wrapToolParamNormalization(createEditTool(workspaceRoot), CLAUDE_PARAM_GROUPS.edit), EDIT_TOOL_DESCRIPTION), readEditTracker);
|
|
71928
72344
|
return [workspaceOnly ? wrapToolWorkspaceRootGuard(guarded, workspaceRoot) : guarded];
|
|
71929
72345
|
}
|
|
71930
72346
|
return [tool];
|
|
@@ -73687,7 +74103,11 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
73687
74103
|
userTime,
|
|
73688
74104
|
userTimeFormat,
|
|
73689
74105
|
contextFiles,
|
|
73690
|
-
memoryCitationsMode: params.config?.memory?.citations
|
|
74106
|
+
memoryCitationsMode: params.config?.memory?.citations,
|
|
74107
|
+
autoLoadInlineSkills: params.config?.skills?.autoLoadInline,
|
|
74108
|
+
skillsDiscoveryMode: params.config?.skills?.discoveryMode,
|
|
74109
|
+
skillsAnchorList: params.config?.skills?.anchorList,
|
|
74110
|
+
currentUserMessage: void 0
|
|
73691
74111
|
}));
|
|
73692
74112
|
const sessionLock = await acquireSessionWriteLock({
|
|
73693
74113
|
sessionFile: params.sessionFile,
|
|
@@ -77877,7 +78297,11 @@ async function runEmbeddedAttempt(params) {
|
|
|
77877
78297
|
userTime,
|
|
77878
78298
|
userTimeFormat,
|
|
77879
78299
|
contextFiles,
|
|
77880
|
-
memoryCitationsMode: params.config?.memory?.citations
|
|
78300
|
+
memoryCitationsMode: params.config?.memory?.citations,
|
|
78301
|
+
autoLoadInlineSkills: params.config?.skills?.autoLoadInline,
|
|
78302
|
+
skillsDiscoveryMode: params.config?.skills?.discoveryMode,
|
|
78303
|
+
skillsAnchorList: params.config?.skills?.anchorList,
|
|
78304
|
+
currentUserMessage: params.prompt
|
|
77881
78305
|
});
|
|
77882
78306
|
const systemPromptReport = buildSystemPromptReport({
|
|
77883
78307
|
source: "run",
|