@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
|
@@ -3,7 +3,7 @@ import { g as resolveStateDir, r as STATE_DIR, u as resolveGatewayPort, y as res
|
|
|
3
3
|
import { B as theme, C as sleep$1, D as isPlainObject, E as truncateUtf16Safe, F as shouldLogVerbose, J as normalizeLogLevel, L as warn, M as logVerbose, O as danger, S as shortenHomePath, V as getChildLogger, X as resolvePreferredSymiTmpDir, d as isRecord$1, i as clampInt, l as escapeRegExp, m as normalizeE164, t as CONFIG_DIR, w as sliceUtf16Safe, x as shortenHomeInString, y as resolveUserPath } from "./utils-B-0b9bGM.js";
|
|
4
4
|
import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels, u as resolveResponseUsageMode } from "./thinking-EAliFiVK.js";
|
|
5
5
|
import { C as resolveThreadParentSessionKey, S as parseAgentSessionKey, _ as getSubagentDepth, b as isCronSessionKey, c as normalizeMainKey, d as sanitizeAgentId, h as normalizeAccountId$2, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, o as classifySessionKeyShape, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, u as resolveThreadSessionKeys, v as isAcpSessionKey, x as isSubagentSessionKey, y as isCronRunSessionKey } from "./session-key-DCt45XZa.js";
|
|
6
|
-
import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
|
|
6
|
+
import { n as resolveSymiPackageRootSync, t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
|
|
7
7
|
import { C as createInternalHookEvent, T as triggerInternalHook, _ as clearPluginCommands, b as listPluginCommands, c as normalizeAnyChannelId, f as requireActivePluginRegistry, g as normalizePluginHttpPath, h as createPluginRegistry, l as normalizeChannelId, n as CHAT_CHANNEL_ORDER, p as setActivePluginRegistry, r as DEFAULT_CHAT_CHANNEL, v as executePluginCommand, x as matchPluginCommand, y as getPluginCommandSpecs } from "./registry-Cja8eT7G.js";
|
|
8
8
|
import { d as createNonExitingRuntime, f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
|
|
9
9
|
import { a as logError, i as logDebug, n as runExec, o as logInfo, r as spawnWithFallback, s as logWarn, t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
|
|
@@ -14,34 +14,35 @@ import { t as formatCliCommand } from "./command-format-COaS-S7B.js";
|
|
|
14
14
|
import { t as parseBooleanValue$1 } from "./boolean-BsqeuxE6.js";
|
|
15
15
|
import { t as isTruthyEnvValue } from "./env-DPCHYPeH.js";
|
|
16
16
|
import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, d as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, p as GATEWAY_CLIENT_IDS, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-aT-I_DTX.js";
|
|
17
|
-
import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, 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 createDiscordClient, 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 resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-
|
|
18
|
-
import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-
|
|
17
|
+
import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, 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 createDiscordClient, 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 resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-BbZtP8GJ.js";
|
|
18
|
+
import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-CitI_jxW.js";
|
|
19
19
|
import { a as safeStatSync, c as applyTestPluginDefaults, d as resolveEnableState, f as resolveMemorySlotDecision, h as isDangerousHostEnvVarName, i as isPathInside, n as loadPluginManifestRegistry, r as discoverSymiPlugins, u as normalizePluginsConfig } from "./manifest-registry-BDSRH8nU.js";
|
|
20
20
|
import { a as isPathInsideWithRealpath } from "./legacy-names-Be3msDZo.js";
|
|
21
21
|
import { t as normalizeChatType } from "./chat-type-DyovJwCt.js";
|
|
22
22
|
import { n as resolveConversationLabel } from "./conversation-label-Bn5j3lUT.js";
|
|
23
23
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-CmmmT8IP.js";
|
|
24
|
-
import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-
|
|
25
|
-
import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-
|
|
26
|
-
import { t as ensureSymiModelsJson } from "./models-config-
|
|
24
|
+
import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-Im1oOE3i.js";
|
|
25
|
+
import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-GaF72sln.js";
|
|
26
|
+
import { t as ensureSymiModelsJson } from "./models-config-DdK8uWQW.js";
|
|
27
27
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-4uUnLc3n.js";
|
|
28
|
-
import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-
|
|
29
|
-
import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-
|
|
30
|
-
import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-
|
|
31
|
-
import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-
|
|
28
|
+
import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-CmY04lZ7.js";
|
|
29
|
+
import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-wUKYI3zy.js";
|
|
30
|
+
import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-CtTba9sH.js";
|
|
31
|
+
import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-BPuBLXYG.js";
|
|
32
|
+
import { l as parseFrontmatterBlock } from "./frontmatter-DWQhtOo7.js";
|
|
32
33
|
import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-BG8FpqDp.js";
|
|
33
34
|
import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BF3TeRH2.js";
|
|
34
35
|
import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-BBm9fwuG.js";
|
|
35
36
|
import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BCYMnxkM.js";
|
|
36
37
|
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-1OJMSAUX.js";
|
|
37
38
|
import { n as getMediaDir, r as saveMediaBuffer } from "./store-r1DJSDq-.js";
|
|
38
|
-
import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-
|
|
39
|
+
import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-CVWGQEWu.js";
|
|
39
40
|
import { a as resolveChannelGroupRequireMention, c as normalizeHyphenSlug, i as resolveChannelGroupPolicy, l as normalizeStringEntries, n as listChannelDocks, r as normalizeSignalMessagingTarget, s as normalizeAtHashSlug, t as getChannelDock, u as normalizeStringEntriesLower } from "./dock-BhS32F6E.js";
|
|
40
41
|
import { _ as listEnabledDiscordAccounts, a as isWhatsAppGroupJid, c as listEnabledTelegramAccounts, d as resolveTelegramToken, f as resolveSlackAccount, g as createDiscordActionGate, h as resolveSlackBotToken, l as listTelegramAccountIds, m as resolveSlackAppToken, n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId$1, s as createTelegramActionGate, t as getChannelPlugin, u as resolveTelegramAccount, v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-DKDeQZF0.js";
|
|
41
42
|
import { a as logWebSelfId, i as getWebAuthAgeMs, m as webAuthExists, n as resolveWhatsAppAccount, o as logoutWeb, u as readWebSelfId } from "./accounts-DDuIpcln.js";
|
|
42
43
|
import { t as resolveIMessageAccount } from "./accounts-bK-Yqdwx.js";
|
|
43
44
|
import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-DyJN4_vR.js";
|
|
44
|
-
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-
|
|
45
|
+
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-nRhkxbqX.js";
|
|
45
46
|
import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, t as resolveDefaultSessionStorePath } from "./paths-CyhzMxFA.js";
|
|
46
47
|
import { i as normalizeInputProvenance, n as applyInputProvenanceToUserMessage, r as hasInterSessionUserProvenance } from "./input-provenance-BzbXHcaD.js";
|
|
47
48
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-DdnTeoR1.js";
|
|
@@ -51,17 +52,17 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-Db3d
|
|
|
51
52
|
import { t as fetchWithSsrFGuard } from "./fetch-guard-DOPkVbh3.js";
|
|
52
53
|
import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, t as getAgentScopedMediaLocalRoots } from "./local-roots-aAFLQGkY.js";
|
|
53
54
|
import { m as runTasksWithConcurrency } from "./internal-iXV867Nr.js";
|
|
54
|
-
import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-
|
|
55
|
+
import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-BFJW_s3i.js";
|
|
55
56
|
import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-BuceUQDl.js";
|
|
56
|
-
import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-
|
|
57
|
-
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-
|
|
57
|
+
import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-7M4c248g.js";
|
|
58
|
+
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-DrgHcdVo.js";
|
|
58
59
|
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-JkjuvDGH.js";
|
|
59
60
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CUslJyKP.js";
|
|
60
|
-
import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-
|
|
61
|
+
import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-aXMPprv9.js";
|
|
61
62
|
import { a as buildModelAliasLines, n as resolveModel } from "./model-ECsJuJew.js";
|
|
62
63
|
import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CE2YmmsD.js";
|
|
63
|
-
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-
|
|
64
|
-
import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-
|
|
64
|
+
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-BKNnDIdx.js";
|
|
65
|
+
import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-B_2KzUSI.js";
|
|
65
66
|
import { n as retryAsync } from "./retry-BoS4e4X_.js";
|
|
66
67
|
import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-C9e6dMU_.js";
|
|
67
68
|
import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-DIi9uyC6.js";
|
|
@@ -70,23 +71,23 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-jTXFdH5R.js";
|
|
|
70
71
|
import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-vWB85AXk.js";
|
|
71
72
|
import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-D_uByLpw.js";
|
|
72
73
|
import { Rt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-pd8kwOFJ.js";
|
|
73
|
-
import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-
|
|
74
|
+
import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-BIETyST6.js";
|
|
74
75
|
import { n as formatTimeAgo } from "./format-relative-CviDPm2s.js";
|
|
75
76
|
import { n as normalizePollInput } from "./polls-DZoQqmds.js";
|
|
76
77
|
import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-CoTZV03i.js";
|
|
77
78
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-BECUf3wn.js";
|
|
78
79
|
import { t as convertMarkdownTables } from "./tables-C3TR-LvH.js";
|
|
79
|
-
import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-
|
|
80
|
+
import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-D5Siw6wn.js";
|
|
80
81
|
import { i as readChannelAllowFromStore, l as listPairingChannels, o as removeChannelAllowFromStoreEntry, s as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-iAT1if6k.js";
|
|
81
82
|
import { t as makeProxyFetch } from "./proxy-mdETjik4.js";
|
|
82
83
|
import { i as formatDurationSeconds, r as formatDurationPrecise, t as formatDurationCompact$1 } from "./format-duration-DeLiQNNv.js";
|
|
83
84
|
import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-FCaqxoqg.js";
|
|
84
|
-
import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-
|
|
85
|
+
import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CsNZ9ImJ.js";
|
|
85
86
|
import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-Bz5sreu5.js";
|
|
86
87
|
import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-C87_fedd.js";
|
|
87
88
|
import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary, s as deriveSessionTotalTokens } from "./session-cost-usage-RPrhIvZF.js";
|
|
88
|
-
import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-
|
|
89
|
-
import { r as detectBinary } from "./onboard-helpers-
|
|
89
|
+
import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-DanpvmZQ.js";
|
|
90
|
+
import { r as detectBinary } from "./onboard-helpers-BiCrYw-N.js";
|
|
90
91
|
import { t as resolvePairingIdLabel } from "./pairing-labels-CTL1gXZb.js";
|
|
91
92
|
import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format-D4P4IiJ6.js";
|
|
92
93
|
import { t as getActiveWebListener } from "./active-listener-Cif6x8mY.js";
|
|
@@ -94,8 +95,8 @@ import { _ as getTrustedSafeBinDirs, b as buildSafeShellCommand, d as resolveExe
|
|
|
94
95
|
import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-BZS89z6C.js";
|
|
95
96
|
import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-D3rffA64.js";
|
|
96
97
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-CjL9F9WT.js";
|
|
97
|
-
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-
|
|
98
|
-
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-
|
|
98
|
+
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-54ABEJtH.js";
|
|
99
|
+
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-BkyH7qkF.js";
|
|
99
100
|
import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-CZ1Rrj7O.js";
|
|
100
101
|
import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-DF8wPn-_.js";
|
|
101
102
|
import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-9fIQGtZy.js";
|
|
@@ -10502,7 +10503,7 @@ async function routeReply(params) {
|
|
|
10502
10503
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
10503
10504
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
10504
10505
|
try {
|
|
10505
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
10506
|
+
const { deliverOutboundPayloads } = await import("./deliver-DrgHcdVo.js").then((n) => n.n);
|
|
10506
10507
|
return {
|
|
10507
10508
|
ok: true,
|
|
10508
10509
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -13052,7 +13053,7 @@ async function describeStickerImage(params) {
|
|
|
13052
13053
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
13053
13054
|
try {
|
|
13054
13055
|
const buffer = await fs$1.readFile(imagePath);
|
|
13055
|
-
const { describeImageWithModel } = await import("./image-
|
|
13056
|
+
const { describeImageWithModel } = await import("./image-GaF72sln.js").then((n) => n.n);
|
|
13056
13057
|
return (await describeImageWithModel({
|
|
13057
13058
|
buffer,
|
|
13058
13059
|
fileName: "sticker.webp",
|
|
@@ -13475,7 +13476,7 @@ function createWhatsAppLoginTool() {
|
|
|
13475
13476
|
force: Type.Optional(Type.Boolean())
|
|
13476
13477
|
}),
|
|
13477
13478
|
execute: async (_toolCallId, args) => {
|
|
13478
|
-
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-
|
|
13479
|
+
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-Xgw7JPYo.js");
|
|
13479
13480
|
if ((args?.action ?? "start") === "wait") {
|
|
13480
13481
|
const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
|
|
13481
13482
|
return {
|
|
@@ -15691,7 +15692,7 @@ async function preflightDiscordMessage(params) {
|
|
|
15691
15692
|
let preflightTranscript;
|
|
15692
15693
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
15693
15694
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
15694
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
15695
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-8UNY1akA.js");
|
|
15695
15696
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
15696
15697
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
15697
15698
|
ctx: {
|
|
@@ -22469,6 +22470,38 @@ async function runWithImageModelFallback(params) {
|
|
|
22469
22470
|
//#endregion
|
|
22470
22471
|
//#region src/config/model-profiles-builtin.ts
|
|
22471
22472
|
/**
|
|
22473
|
+
* Shared safety + output-style additions applied to most built-in profiles
|
|
22474
|
+
* and the Generic fallback. These rules came from a long history of
|
|
22475
|
+
* model-specific bugs (verification-monologue padding, "I have addressed"
|
|
22476
|
+
* preambles, post-answer assessment lists). Keeping them in one place
|
|
22477
|
+
* means a new profile inherits sane defaults instead of starting empty.
|
|
22478
|
+
*
|
|
22479
|
+
* Stage 2.4 of the prompt-reduction plan: rules that ALL profiles need
|
|
22480
|
+
* live here; profile-specific rules (control-token stripping, tool-arg
|
|
22481
|
+
* cleanup, reasoning hints) live in their own per-profile additions.
|
|
22482
|
+
*
|
|
22483
|
+
* Exported so resolve-model-profile.ts can apply the same additions to
|
|
22484
|
+
* the Generic fallback profile — no model resolves to "Generic" without
|
|
22485
|
+
* inheriting the safety/style rules.
|
|
22486
|
+
*/
|
|
22487
|
+
const SAFETY_AND_STYLE_ADDITIONS = [
|
|
22488
|
+
"CRITICAL OUTPUT RULES:",
|
|
22489
|
+
"- Your response ends when you have delivered the answer. Do not append anything after.",
|
|
22490
|
+
"- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
|
|
22491
|
+
"- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
|
|
22492
|
+
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
22493
|
+
"- If you need to verify your work, do so before writing your response, not after.",
|
|
22494
|
+
"- Send brief progress updates on long tasks so the user knows you are active."
|
|
22495
|
+
];
|
|
22496
|
+
/** Hint for native-reasoning models (Nemotron, Qwen 3.5/3.6) to keep
|
|
22497
|
+
* planning internal. Not applied to Gemma/Ollama because those models
|
|
22498
|
+
* don't have structured thinking and the rule confuses them. */
|
|
22499
|
+
const REASONING_DISCIPLINE_ADDITION = "- Keep planning and reasoning internal. Only speak when you have a result or need user input.";
|
|
22500
|
+
/** Hint for models that leak Gemma-style control tokens (Gemma family,
|
|
22501
|
+
* Ollama hosting any uncensored open model). Forces tool-arg cleanup and
|
|
22502
|
+
* forbids leaking turn markers in user-visible text. */
|
|
22503
|
+
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."];
|
|
22504
|
+
/**
|
|
22472
22505
|
* Built-in model profiles. Ordered from most-specific to least-specific so
|
|
22473
22506
|
* that `resolveModelProfile` can return the first match.
|
|
22474
22507
|
*
|
|
@@ -22502,17 +22535,7 @@ const BUILTIN_PROFILES = [
|
|
|
22502
22535
|
hasStructuredThinking: false,
|
|
22503
22536
|
validateToolArgs: true
|
|
22504
22537
|
},
|
|
22505
|
-
promptAdditions: [
|
|
22506
|
-
"CRITICAL OUTPUT RULES:",
|
|
22507
|
-
"- Your response ends when you have delivered the answer. Do not append anything after.",
|
|
22508
|
-
"- Do not output raw control tokens, channel tags, or turn markers.",
|
|
22509
|
-
"- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
|
|
22510
|
-
"- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
|
|
22511
|
-
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
22512
|
-
"- If you need to verify your work, do so before writing your response, not after.",
|
|
22513
|
-
"- Send brief progress updates on long tasks so the user knows you are active.",
|
|
22514
|
-
"- 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."
|
|
22515
|
-
],
|
|
22538
|
+
promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, ...CONTROL_TOKEN_ADDITIONS],
|
|
22516
22539
|
ui: {
|
|
22517
22540
|
badge: "Local",
|
|
22518
22541
|
watchdogMs: 9e5,
|
|
@@ -22539,16 +22562,7 @@ const BUILTIN_PROFILES = [
|
|
|
22539
22562
|
hasStructuredThinking: true,
|
|
22540
22563
|
validateToolArgs: false
|
|
22541
22564
|
},
|
|
22542
|
-
promptAdditions: [
|
|
22543
|
-
"CRITICAL OUTPUT RULES:",
|
|
22544
|
-
"- Your response ends when you have delivered the answer. Do not append anything after.",
|
|
22545
|
-
"- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
|
|
22546
|
-
"- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
|
|
22547
|
-
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
22548
|
-
"- If you need to verify your work, do so before writing your response, not after.",
|
|
22549
|
-
"- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
|
|
22550
|
-
"- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
|
|
22551
|
-
],
|
|
22565
|
+
promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
|
|
22552
22566
|
ui: {
|
|
22553
22567
|
badge: "Local",
|
|
22554
22568
|
watchdogMs: 9e5,
|
|
@@ -22574,7 +22588,7 @@ const BUILTIN_PROFILES = [
|
|
|
22574
22588
|
hasStructuredThinking: true,
|
|
22575
22589
|
validateToolArgs: false
|
|
22576
22590
|
},
|
|
22577
|
-
promptAdditions: [],
|
|
22591
|
+
promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS],
|
|
22578
22592
|
ui: {
|
|
22579
22593
|
badge: "API",
|
|
22580
22594
|
watchdogMs: 3e5,
|
|
@@ -22607,15 +22621,7 @@ const BUILTIN_PROFILES = [
|
|
|
22607
22621
|
hasStructuredThinking: true,
|
|
22608
22622
|
validateToolArgs: false
|
|
22609
22623
|
},
|
|
22610
|
-
promptAdditions: [
|
|
22611
|
-
"CRITICAL OUTPUT RULES:",
|
|
22612
|
-
"- Your response ends when you have delivered the answer. Do not append anything after.",
|
|
22613
|
-
"- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
|
|
22614
|
-
"- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
|
|
22615
|
-
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
22616
|
-
"- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
|
|
22617
|
-
"- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
|
|
22618
|
-
],
|
|
22624
|
+
promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
|
|
22619
22625
|
ui: {
|
|
22620
22626
|
badge: "Spider",
|
|
22621
22627
|
watchdogMs: 9e5,
|
|
@@ -22648,16 +22654,7 @@ const BUILTIN_PROFILES = [
|
|
|
22648
22654
|
hasStructuredThinking: false,
|
|
22649
22655
|
validateToolArgs: true
|
|
22650
22656
|
},
|
|
22651
|
-
promptAdditions: [
|
|
22652
|
-
"CRITICAL OUTPUT RULES:",
|
|
22653
|
-
"- Your response ends when you have delivered the answer. Do not append anything after.",
|
|
22654
|
-
"- Do not output raw control tokens, channel tags, or turn markers.",
|
|
22655
|
-
"- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
|
|
22656
|
-
"- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
|
|
22657
|
-
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
22658
|
-
"- Send brief progress updates on long tasks so the user knows you are active.",
|
|
22659
|
-
"- 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."
|
|
22660
|
-
],
|
|
22657
|
+
promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, ...CONTROL_TOKEN_ADDITIONS],
|
|
22661
22658
|
ui: {
|
|
22662
22659
|
badge: "Spider",
|
|
22663
22660
|
watchdogMs: 6e5,
|
|
@@ -22689,16 +22686,7 @@ const BUILTIN_PROFILES = [
|
|
|
22689
22686
|
hasStructuredThinking: true,
|
|
22690
22687
|
validateToolArgs: false
|
|
22691
22688
|
},
|
|
22692
|
-
promptAdditions: [
|
|
22693
|
-
"CRITICAL OUTPUT RULES:",
|
|
22694
|
-
"- Your response ends when you have delivered the answer. Do not append anything after.",
|
|
22695
|
-
"- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
|
|
22696
|
-
"- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
|
|
22697
|
-
"- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
|
|
22698
|
-
"- If you need to verify your work, do so before writing your response, not after.",
|
|
22699
|
-
"- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
|
|
22700
|
-
"- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
|
|
22701
|
-
],
|
|
22689
|
+
promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
|
|
22702
22690
|
ui: {
|
|
22703
22691
|
badge: "CoreWeave",
|
|
22704
22692
|
watchdogMs: 9e5,
|
|
@@ -22709,7 +22697,15 @@ const BUILTIN_PROFILES = [
|
|
|
22709
22697
|
|
|
22710
22698
|
//#endregion
|
|
22711
22699
|
//#region src/config/resolve-model-profile.ts
|
|
22712
|
-
/**
|
|
22700
|
+
/**
|
|
22701
|
+
* Default profile returned when no match is found.
|
|
22702
|
+
*
|
|
22703
|
+
* Stage 2.4 of the prompt-reduction plan: the Generic fallback now ships
|
|
22704
|
+
* the same safety+style additions as every named profile, so newly-added
|
|
22705
|
+
* models without a profile entry inherit sane defaults instead of
|
|
22706
|
+
* starting empty (which would silently regress safety rules until someone
|
|
22707
|
+
* notices and adds a profile).
|
|
22708
|
+
*/
|
|
22713
22709
|
const FALLBACK_PROFILE = {
|
|
22714
22710
|
match: "*",
|
|
22715
22711
|
label: "Generic",
|
|
@@ -22728,7 +22724,7 @@ const FALLBACK_PROFILE = {
|
|
|
22728
22724
|
hasStructuredThinking: false,
|
|
22729
22725
|
validateToolArgs: false
|
|
22730
22726
|
},
|
|
22731
|
-
promptAdditions: [],
|
|
22727
|
+
promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS],
|
|
22732
22728
|
ui: {
|
|
22733
22729
|
watchdogMs: 3e5,
|
|
22734
22730
|
armWatchdogOnSend: true
|
|
@@ -29225,6 +29221,376 @@ async function prepareSessionManagerForRun(params) {
|
|
|
29225
29221
|
}
|
|
29226
29222
|
}
|
|
29227
29223
|
|
|
29224
|
+
//#endregion
|
|
29225
|
+
//#region src/agents/system-prompt-skills-autoload.ts
|
|
29226
|
+
const FRONTMATTER_RE = /^---\s*\n[\s\S]*?\n---\s*\n?/;
|
|
29227
|
+
let cachedPackageRoot$1;
|
|
29228
|
+
function getPackageRoot$1() {
|
|
29229
|
+
if (cachedPackageRoot$1 === void 0) cachedPackageRoot$1 = resolveSymiPackageRootSync({});
|
|
29230
|
+
return cachedPackageRoot$1;
|
|
29231
|
+
}
|
|
29232
|
+
function safeSkillName(name) {
|
|
29233
|
+
return /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/.test(name);
|
|
29234
|
+
}
|
|
29235
|
+
function tryLoadSkill(skillName, root) {
|
|
29236
|
+
const skillPath = path.join(root, "skills", skillName, "SKILL.md");
|
|
29237
|
+
try {
|
|
29238
|
+
if (!fs.statSync(skillPath).isFile()) return null;
|
|
29239
|
+
} catch {
|
|
29240
|
+
return null;
|
|
29241
|
+
}
|
|
29242
|
+
try {
|
|
29243
|
+
return fs.readFileSync(skillPath, "utf8");
|
|
29244
|
+
} catch {
|
|
29245
|
+
return null;
|
|
29246
|
+
}
|
|
29247
|
+
}
|
|
29248
|
+
function stripFrontmatter(body) {
|
|
29249
|
+
return body.replace(FRONTMATTER_RE, "").trimStart();
|
|
29250
|
+
}
|
|
29251
|
+
/**
|
|
29252
|
+
* Resolves and loads each named skill. Returns the inlinable Markdown block,
|
|
29253
|
+
* or empty string when no skills loaded / minimal mode / no names supplied.
|
|
29254
|
+
*/
|
|
29255
|
+
function buildAutoLoadedSkillsBlock(opts) {
|
|
29256
|
+
if (opts.minimalMode) return "";
|
|
29257
|
+
const names = opts.skillNames.filter((n) => typeof n === "string" && n.trim().length > 0);
|
|
29258
|
+
if (names.length === 0) return "";
|
|
29259
|
+
const packageRoot = getPackageRoot$1();
|
|
29260
|
+
const loaded = [];
|
|
29261
|
+
for (const rawName of names) {
|
|
29262
|
+
const name = rawName.trim();
|
|
29263
|
+
if (!safeSkillName(name)) {
|
|
29264
|
+
logWarn(`autoLoadInline: skipping invalid skill name '${rawName}'`);
|
|
29265
|
+
continue;
|
|
29266
|
+
}
|
|
29267
|
+
let body = null;
|
|
29268
|
+
let source = "bundled";
|
|
29269
|
+
if (opts.workspaceDir) {
|
|
29270
|
+
body = tryLoadSkill(name, opts.workspaceDir);
|
|
29271
|
+
source = "workspace";
|
|
29272
|
+
}
|
|
29273
|
+
if (body === null && packageRoot) {
|
|
29274
|
+
body = tryLoadSkill(name, packageRoot);
|
|
29275
|
+
source = "bundled";
|
|
29276
|
+
}
|
|
29277
|
+
if (body === null) {
|
|
29278
|
+
logWarn(`autoLoadInline: skill '${name}' not found in workspace or bundled skills`);
|
|
29279
|
+
continue;
|
|
29280
|
+
}
|
|
29281
|
+
const stripped = stripFrontmatter(body).trim();
|
|
29282
|
+
if (!stripped) {
|
|
29283
|
+
logWarn(`autoLoadInline: skill '${name}' has empty body after frontmatter strip; skipping`);
|
|
29284
|
+
continue;
|
|
29285
|
+
}
|
|
29286
|
+
loaded.push({
|
|
29287
|
+
name,
|
|
29288
|
+
body: stripped,
|
|
29289
|
+
source
|
|
29290
|
+
});
|
|
29291
|
+
}
|
|
29292
|
+
if (loaded.length === 0) return "";
|
|
29293
|
+
return [
|
|
29294
|
+
"",
|
|
29295
|
+
"---",
|
|
29296
|
+
"",
|
|
29297
|
+
"## Auto-loaded Skills",
|
|
29298
|
+
"",
|
|
29299
|
+
loaded.map((skill) => `<!-- auto-loaded: ${skill.name} (${skill.source}) -->\n${skill.body}`).join("\n\n---\n\n"),
|
|
29300
|
+
""
|
|
29301
|
+
].join("\n");
|
|
29302
|
+
}
|
|
29303
|
+
|
|
29304
|
+
//#endregion
|
|
29305
|
+
//#region src/agents/skills/triggers.ts
|
|
29306
|
+
const QUOTE_RE = /^["'`](.*)["'`]$/;
|
|
29307
|
+
const ARRAY_FORM_RE = /^\[(.*)\]$/s;
|
|
29308
|
+
function stripWrappingQuotes(s) {
|
|
29309
|
+
const m = s.trim().match(QUOTE_RE);
|
|
29310
|
+
return m ? m[1] : s.trim();
|
|
29311
|
+
}
|
|
29312
|
+
/** Parse a single trigger value, dropping empty / whitespace-only entries. */
|
|
29313
|
+
function cleanTrigger(raw) {
|
|
29314
|
+
const trimmed = stripWrappingQuotes(raw).toLowerCase();
|
|
29315
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
29316
|
+
}
|
|
29317
|
+
/**
|
|
29318
|
+
* Parse the value of a `triggers:` frontmatter field into a string[].
|
|
29319
|
+
* Accepts both inline-array form `[a, b, "c d"]` and YAML-list form
|
|
29320
|
+
* (multiline with leading hyphens). Returns deduped lowercased trigger
|
|
29321
|
+
* strings, or empty array on unparseable / missing input.
|
|
29322
|
+
*/
|
|
29323
|
+
function parseTriggersValue(raw) {
|
|
29324
|
+
if (typeof raw !== "string") return [];
|
|
29325
|
+
const trimmed = raw.trim();
|
|
29326
|
+
if (!trimmed) return [];
|
|
29327
|
+
const items = [];
|
|
29328
|
+
const arrayMatch = trimmed.match(ARRAY_FORM_RE);
|
|
29329
|
+
if (arrayMatch) {
|
|
29330
|
+
const inner = arrayMatch[1];
|
|
29331
|
+
let buf = "";
|
|
29332
|
+
let inQuote = null;
|
|
29333
|
+
for (const ch of inner) {
|
|
29334
|
+
if (inQuote) {
|
|
29335
|
+
if (ch === inQuote) inQuote = null;
|
|
29336
|
+
else buf += ch;
|
|
29337
|
+
continue;
|
|
29338
|
+
}
|
|
29339
|
+
if (ch === "\"" || ch === "'") {
|
|
29340
|
+
inQuote = ch;
|
|
29341
|
+
continue;
|
|
29342
|
+
}
|
|
29343
|
+
if (ch === ",") {
|
|
29344
|
+
const cleaned = cleanTrigger(buf);
|
|
29345
|
+
if (cleaned) items.push(cleaned);
|
|
29346
|
+
buf = "";
|
|
29347
|
+
continue;
|
|
29348
|
+
}
|
|
29349
|
+
buf += ch;
|
|
29350
|
+
}
|
|
29351
|
+
const cleaned = cleanTrigger(buf);
|
|
29352
|
+
if (cleaned) items.push(cleaned);
|
|
29353
|
+
} else for (const line of trimmed.split("\n")) {
|
|
29354
|
+
const ltrim = line.trimStart();
|
|
29355
|
+
if (ltrim.startsWith("- ")) {
|
|
29356
|
+
const cleaned = cleanTrigger(ltrim.slice(2));
|
|
29357
|
+
if (cleaned) items.push(cleaned);
|
|
29358
|
+
} else if (ltrim && !ltrim.startsWith("#")) {
|
|
29359
|
+
const cleaned = cleanTrigger(ltrim);
|
|
29360
|
+
if (cleaned) items.push(cleaned);
|
|
29361
|
+
}
|
|
29362
|
+
}
|
|
29363
|
+
const seen = /* @__PURE__ */ new Set();
|
|
29364
|
+
const out = [];
|
|
29365
|
+
for (const t of items) if (!seen.has(t)) {
|
|
29366
|
+
seen.add(t);
|
|
29367
|
+
out.push(t);
|
|
29368
|
+
}
|
|
29369
|
+
return out;
|
|
29370
|
+
}
|
|
29371
|
+
/**
|
|
29372
|
+
* Extract triggers from a parsed frontmatter record. Returns empty array
|
|
29373
|
+
* when the field is absent or unparseable.
|
|
29374
|
+
*/
|
|
29375
|
+
function getSkillTriggers(frontmatter) {
|
|
29376
|
+
return parseTriggersValue(frontmatter.triggers);
|
|
29377
|
+
}
|
|
29378
|
+
|
|
29379
|
+
//#endregion
|
|
29380
|
+
//#region src/agents/tools/skill-search-tool.ts
|
|
29381
|
+
const SkillSearchToolSchema = Type.Object({
|
|
29382
|
+
query: Type.String({
|
|
29383
|
+
minLength: 1,
|
|
29384
|
+
description: "Intent description (2-8 words). Match by trigger keywords first, then description text."
|
|
29385
|
+
}),
|
|
29386
|
+
limit: Type.Optional(Type.Number({
|
|
29387
|
+
minimum: 1,
|
|
29388
|
+
maximum: 10,
|
|
29389
|
+
description: "Max results to return (default 5, capped at 10)."
|
|
29390
|
+
}))
|
|
29391
|
+
});
|
|
29392
|
+
const CACHE_TTL_MS = 6e4;
|
|
29393
|
+
const SAFE_NAME_RE = /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/;
|
|
29394
|
+
function loadSkillFromDir(dir, source) {
|
|
29395
|
+
const name = path.basename(dir);
|
|
29396
|
+
if (!SAFE_NAME_RE.test(name)) return null;
|
|
29397
|
+
const file = path.join(dir, "SKILL.md");
|
|
29398
|
+
let raw;
|
|
29399
|
+
try {
|
|
29400
|
+
if (!fs.statSync(file).isFile()) return null;
|
|
29401
|
+
raw = fs.readFileSync(file, "utf8");
|
|
29402
|
+
} catch {
|
|
29403
|
+
return null;
|
|
29404
|
+
}
|
|
29405
|
+
const fm = parseFrontmatterBlock(raw);
|
|
29406
|
+
return {
|
|
29407
|
+
name,
|
|
29408
|
+
description: (fm.description ?? "").trim(),
|
|
29409
|
+
path: file,
|
|
29410
|
+
triggers: getSkillTriggers(fm),
|
|
29411
|
+
source
|
|
29412
|
+
};
|
|
29413
|
+
}
|
|
29414
|
+
function listSkillDirs(root) {
|
|
29415
|
+
const skillsDir = path.join(root, "skills");
|
|
29416
|
+
let entries;
|
|
29417
|
+
try {
|
|
29418
|
+
entries = fs.readdirSync(skillsDir, { withFileTypes: true });
|
|
29419
|
+
} catch {
|
|
29420
|
+
return [];
|
|
29421
|
+
}
|
|
29422
|
+
return entries.filter((e) => e.isDirectory()).map((e) => path.join(skillsDir, e.name));
|
|
29423
|
+
}
|
|
29424
|
+
let cachedPackageRoot;
|
|
29425
|
+
const cachePerWorkspace = /* @__PURE__ */ new Map();
|
|
29426
|
+
function getPackageRoot() {
|
|
29427
|
+
if (cachedPackageRoot === void 0) cachedPackageRoot = resolveSymiPackageRootSync({});
|
|
29428
|
+
return cachedPackageRoot;
|
|
29429
|
+
}
|
|
29430
|
+
function loadAllSkills(workspaceDir) {
|
|
29431
|
+
const cacheKey = workspaceDir ?? "";
|
|
29432
|
+
const now = Date.now();
|
|
29433
|
+
const existing = cachePerWorkspace.get(cacheKey);
|
|
29434
|
+
if (existing && now - existing.loadedAt < CACHE_TTL_MS) return existing.skills;
|
|
29435
|
+
const seen = /* @__PURE__ */ new Map();
|
|
29436
|
+
if (workspaceDir) for (const dir of listSkillDirs(workspaceDir)) {
|
|
29437
|
+
const skill = loadSkillFromDir(dir, "workspace");
|
|
29438
|
+
if (skill && !seen.has(skill.name)) seen.set(skill.name, skill);
|
|
29439
|
+
}
|
|
29440
|
+
const packageRoot = getPackageRoot();
|
|
29441
|
+
if (packageRoot) for (const dir of listSkillDirs(packageRoot)) {
|
|
29442
|
+
const skill = loadSkillFromDir(dir, "bundled");
|
|
29443
|
+
if (skill && !seen.has(skill.name)) seen.set(skill.name, skill);
|
|
29444
|
+
}
|
|
29445
|
+
const skills = [...seen.values()];
|
|
29446
|
+
cachePerWorkspace.set(cacheKey, {
|
|
29447
|
+
skills,
|
|
29448
|
+
loadedAt: now
|
|
29449
|
+
});
|
|
29450
|
+
return skills;
|
|
29451
|
+
}
|
|
29452
|
+
const TOKEN_SPLIT_RE = /[^\w/]+/;
|
|
29453
|
+
function tokenizeQuery(raw) {
|
|
29454
|
+
return raw.toLowerCase().split(TOKEN_SPLIT_RE).filter((t) => t.length >= 2);
|
|
29455
|
+
}
|
|
29456
|
+
/**
|
|
29457
|
+
* Score a query against one skill's triggers + description.
|
|
29458
|
+
* - Trigger score: ratio of query tokens that appear in the trigger set.
|
|
29459
|
+
* - FTS score: 0.4 × ratio of query tokens that appear in the description
|
|
29460
|
+
* (case-insensitive substring match).
|
|
29461
|
+
* - Final = max(trigger, fts) so trigger matches always beat descriptions.
|
|
29462
|
+
* - Returns 0 for "no signal at all" (caller should drop these).
|
|
29463
|
+
*/
|
|
29464
|
+
function scoreSkillMatch(skill, queryTokens) {
|
|
29465
|
+
if (queryTokens.length === 0) return 0;
|
|
29466
|
+
const triggerSet = new Set(skill.triggers.map((t) => t.toLowerCase()));
|
|
29467
|
+
const description = skill.description.toLowerCase();
|
|
29468
|
+
let triggerHits = 0;
|
|
29469
|
+
let ftsHits = 0;
|
|
29470
|
+
for (const token of queryTokens) if (triggerSet.has(token)) triggerHits += 1;
|
|
29471
|
+
else if (description.includes(token)) ftsHits += 1;
|
|
29472
|
+
const triggerScore = triggerHits / queryTokens.length;
|
|
29473
|
+
const ftsScore = ftsHits / queryTokens.length * .4;
|
|
29474
|
+
return Math.max(triggerScore, ftsScore);
|
|
29475
|
+
}
|
|
29476
|
+
/**
|
|
29477
|
+
* Pure-function search; exported for testing without going through the
|
|
29478
|
+
* tool execute wrapper.
|
|
29479
|
+
*/
|
|
29480
|
+
function searchSkills(query, limit, workspaceDir) {
|
|
29481
|
+
const tokens = tokenizeQuery(query);
|
|
29482
|
+
if (tokens.length === 0) return [];
|
|
29483
|
+
const all = loadAllSkills(workspaceDir);
|
|
29484
|
+
const scored = [];
|
|
29485
|
+
for (const skill of all) {
|
|
29486
|
+
const score = scoreSkillMatch(skill, tokens);
|
|
29487
|
+
if (score > 0) scored.push({
|
|
29488
|
+
name: skill.name,
|
|
29489
|
+
description: skill.description,
|
|
29490
|
+
path: skill.path,
|
|
29491
|
+
score
|
|
29492
|
+
});
|
|
29493
|
+
}
|
|
29494
|
+
scored.sort((a, b) => b.score - a.score || a.name.localeCompare(b.name));
|
|
29495
|
+
return scored.slice(0, limit);
|
|
29496
|
+
}
|
|
29497
|
+
function createSkillSearchTool(opts) {
|
|
29498
|
+
return {
|
|
29499
|
+
name: "skill_search",
|
|
29500
|
+
label: "skill_search",
|
|
29501
|
+
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.",
|
|
29502
|
+
parameters: SkillSearchToolSchema,
|
|
29503
|
+
execute: async (_toolCallId, args) => {
|
|
29504
|
+
const params = args;
|
|
29505
|
+
const query = typeof params.query === "string" ? params.query.trim() : "";
|
|
29506
|
+
if (!query) return jsonResult({
|
|
29507
|
+
ok: false,
|
|
29508
|
+
error: "skill_search requires a non-empty `query` string."
|
|
29509
|
+
});
|
|
29510
|
+
const limit = typeof params.limit === "number" && Number.isFinite(params.limit) ? Math.min(10, Math.max(1, Math.floor(params.limit))) : 5;
|
|
29511
|
+
try {
|
|
29512
|
+
return jsonResult({
|
|
29513
|
+
ok: true,
|
|
29514
|
+
query,
|
|
29515
|
+
matches: searchSkills(query, limit, opts?.workspaceDir)
|
|
29516
|
+
});
|
|
29517
|
+
} catch (err) {
|
|
29518
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
29519
|
+
logWarn(`skill_search failed: ${message}`);
|
|
29520
|
+
return jsonResult({
|
|
29521
|
+
ok: false,
|
|
29522
|
+
error: message
|
|
29523
|
+
});
|
|
29524
|
+
}
|
|
29525
|
+
}
|
|
29526
|
+
};
|
|
29527
|
+
}
|
|
29528
|
+
|
|
29529
|
+
//#endregion
|
|
29530
|
+
//#region src/agents/system-prompt-skills-jit.ts
|
|
29531
|
+
const MAX_ANCHOR_DESCRIPTION_CHARS = 100;
|
|
29532
|
+
const MAX_AUTO_INJECT_RESULTS = 3;
|
|
29533
|
+
const MAX_AUTO_INJECT_TOTAL_CHARS = 600;
|
|
29534
|
+
/**
|
|
29535
|
+
* Build the anchor list block. Returns "" when no anchor list configured
|
|
29536
|
+
* or in preload mode (anchor list adds value only in jit/hybrid).
|
|
29537
|
+
*/
|
|
29538
|
+
function buildAnchorListBlock(opts) {
|
|
29539
|
+
if (opts.minimalMode) return "";
|
|
29540
|
+
if (opts.discoveryMode !== "jit" && opts.discoveryMode !== "hybrid") return "";
|
|
29541
|
+
const names = (opts.anchorList ?? []).filter((n) => typeof n === "string" && n.trim().length > 0);
|
|
29542
|
+
if (names.length === 0) return "";
|
|
29543
|
+
const lines = [];
|
|
29544
|
+
for (const name of names) {
|
|
29545
|
+
const description = searchSkills(name, 1, opts.workspaceDir)[0]?.description.trim() ?? "";
|
|
29546
|
+
const truncated = description.length > MAX_ANCHOR_DESCRIPTION_CHARS ? `${description.slice(0, MAX_ANCHOR_DESCRIPTION_CHARS - 1)}…` : description;
|
|
29547
|
+
lines.push(truncated ? `- ${name}: ${truncated}` : `- ${name}`);
|
|
29548
|
+
}
|
|
29549
|
+
return [
|
|
29550
|
+
"",
|
|
29551
|
+
"## Anchor Skills",
|
|
29552
|
+
"These skills are always available. Read their SKILL.md via `read` if relevant. For full discovery use the `skill_search` tool.",
|
|
29553
|
+
lines.join("\n"),
|
|
29554
|
+
""
|
|
29555
|
+
].join("\n");
|
|
29556
|
+
}
|
|
29557
|
+
/**
|
|
29558
|
+
* Build the auto-injected matches block based on the user message triggers.
|
|
29559
|
+
* Returns "" when discoveryMode doesn't ask for it, no message available,
|
|
29560
|
+
* no matches found, or in minimal mode.
|
|
29561
|
+
*/
|
|
29562
|
+
function buildAutoInjectBlock(opts) {
|
|
29563
|
+
if (opts.minimalMode) return "";
|
|
29564
|
+
if (opts.discoveryMode !== "jit" && opts.discoveryMode !== "hybrid") return "";
|
|
29565
|
+
const message = (opts.userMessage ?? "").trim();
|
|
29566
|
+
if (!message) return "";
|
|
29567
|
+
const matches = searchSkills(message, MAX_AUTO_INJECT_RESULTS, opts.workspaceDir);
|
|
29568
|
+
if (matches.length === 0) return "";
|
|
29569
|
+
const lines = [];
|
|
29570
|
+
let total = 0;
|
|
29571
|
+
for (const match of matches) {
|
|
29572
|
+
const description = match.description.trim();
|
|
29573
|
+
const truncated = description.length > MAX_ANCHOR_DESCRIPTION_CHARS ? `${description.slice(0, MAX_ANCHOR_DESCRIPTION_CHARS - 1)}…` : description;
|
|
29574
|
+
const skillRef = path.basename(path.dirname(match.path));
|
|
29575
|
+
const line = truncated ? `- ${skillRef}: ${truncated}` : `- ${skillRef}`;
|
|
29576
|
+
if (total + line.length > MAX_AUTO_INJECT_TOTAL_CHARS) break;
|
|
29577
|
+
lines.push(line);
|
|
29578
|
+
total += line.length + 1;
|
|
29579
|
+
}
|
|
29580
|
+
if (lines.length === 0) return "";
|
|
29581
|
+
return [
|
|
29582
|
+
"",
|
|
29583
|
+
"## Possibly Relevant Skills (auto-suggested for this request)",
|
|
29584
|
+
"These skills' triggers matched keywords in your message. Read the SKILL.md if it applies; otherwise ignore and proceed.",
|
|
29585
|
+
lines.join("\n"),
|
|
29586
|
+
""
|
|
29587
|
+
].join("\n");
|
|
29588
|
+
}
|
|
29589
|
+
/** Convenience: build both blocks concatenated. */
|
|
29590
|
+
function buildSkillsJitBlocks(opts) {
|
|
29591
|
+
return `${buildAnchorListBlock(opts)}${buildAutoInjectBlock(opts)}`;
|
|
29592
|
+
}
|
|
29593
|
+
|
|
29228
29594
|
//#endregion
|
|
29229
29595
|
//#region src/agents/tool-summaries.ts
|
|
29230
29596
|
function buildToolSummaryMap(tools) {
|
|
@@ -29240,7 +29606,7 @@ function buildToolSummaryMap(tools) {
|
|
|
29240
29606
|
//#endregion
|
|
29241
29607
|
//#region src/agents/pi-embedded-runner/system-prompt.ts
|
|
29242
29608
|
function buildEmbeddedSystemPrompt(params) {
|
|
29243
|
-
|
|
29609
|
+
const corePrompt = buildAgentSystemPrompt({
|
|
29244
29610
|
workspaceDir: params.workspaceDir,
|
|
29245
29611
|
defaultThinkLevel: params.defaultThinkLevel,
|
|
29246
29612
|
reasoningLevel: params.reasoningLevel,
|
|
@@ -29268,6 +29634,19 @@ function buildEmbeddedSystemPrompt(params) {
|
|
|
29268
29634
|
contextFiles: params.contextFiles,
|
|
29269
29635
|
memoryCitationsMode: params.memoryCitationsMode
|
|
29270
29636
|
});
|
|
29637
|
+
const promptMode = params.promptMode ?? "full";
|
|
29638
|
+
const isMinimal = promptMode === "minimal" || promptMode === "none";
|
|
29639
|
+
return `${corePrompt}${buildAutoLoadedSkillsBlock({
|
|
29640
|
+
skillNames: params.autoLoadInlineSkills ?? [],
|
|
29641
|
+
workspaceDir: params.workspaceDir,
|
|
29642
|
+
minimalMode: isMinimal
|
|
29643
|
+
})}${buildSkillsJitBlocks({
|
|
29644
|
+
discoveryMode: params.skillsDiscoveryMode,
|
|
29645
|
+
anchorList: params.skillsAnchorList,
|
|
29646
|
+
userMessage: params.currentUserMessage,
|
|
29647
|
+
workspaceDir: params.workspaceDir,
|
|
29648
|
+
minimalMode: isMinimal
|
|
29649
|
+
})}`;
|
|
29271
29650
|
}
|
|
29272
29651
|
function createSystemPromptOverride(systemPrompt) {
|
|
29273
29652
|
const override = systemPrompt.trim();
|
|
@@ -30055,7 +30434,11 @@ async function runEmbeddedAttempt(params) {
|
|
|
30055
30434
|
userTime,
|
|
30056
30435
|
userTimeFormat,
|
|
30057
30436
|
contextFiles,
|
|
30058
|
-
memoryCitationsMode: params.config?.memory?.citations
|
|
30437
|
+
memoryCitationsMode: params.config?.memory?.citations,
|
|
30438
|
+
autoLoadInlineSkills: params.config?.skills?.autoLoadInline,
|
|
30439
|
+
skillsDiscoveryMode: params.config?.skills?.discoveryMode,
|
|
30440
|
+
skillsAnchorList: params.config?.skills?.anchorList,
|
|
30441
|
+
currentUserMessage: params.prompt
|
|
30059
30442
|
});
|
|
30060
30443
|
const systemPromptReport = buildSystemPromptReport({
|
|
30061
30444
|
source: "run",
|
|
@@ -31935,27 +32318,27 @@ async function runAgentTurn(params) {
|
|
|
31935
32318
|
function createDefaultDeps() {
|
|
31936
32319
|
return {
|
|
31937
32320
|
sendMessageWhatsApp: async (...args) => {
|
|
31938
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
32321
|
+
const { sendMessageWhatsApp } = await import("./web-C-E-O8iP.js");
|
|
31939
32322
|
return await sendMessageWhatsApp(...args);
|
|
31940
32323
|
},
|
|
31941
32324
|
sendMessageTelegram: async (...args) => {
|
|
31942
|
-
const { sendMessageTelegram } = await import("./send-
|
|
32325
|
+
const { sendMessageTelegram } = await import("./send-aXMPprv9.js").then((n) => n.l);
|
|
31943
32326
|
return await sendMessageTelegram(...args);
|
|
31944
32327
|
},
|
|
31945
32328
|
sendMessageDiscord: async (...args) => {
|
|
31946
|
-
const { sendMessageDiscord } = await import("./send-
|
|
32329
|
+
const { sendMessageDiscord } = await import("./send-BbZtP8GJ.js").then((n) => n.t);
|
|
31947
32330
|
return await sendMessageDiscord(...args);
|
|
31948
32331
|
},
|
|
31949
32332
|
sendMessageSlack: async (...args) => {
|
|
31950
|
-
const { sendMessageSlack } = await import("./send-
|
|
32333
|
+
const { sendMessageSlack } = await import("./send-nRhkxbqX.js").then((n) => n.n);
|
|
31951
32334
|
return await sendMessageSlack(...args);
|
|
31952
32335
|
},
|
|
31953
32336
|
sendMessageSignal: async (...args) => {
|
|
31954
|
-
const { sendMessageSignal } = await import("./send-
|
|
32337
|
+
const { sendMessageSignal } = await import("./send-D5Siw6wn.js").then((n) => n.i);
|
|
31955
32338
|
return await sendMessageSignal(...args);
|
|
31956
32339
|
},
|
|
31957
32340
|
sendMessageIMessage: async (...args) => {
|
|
31958
|
-
const { sendMessageIMessage } = await import("./send-
|
|
32341
|
+
const { sendMessageIMessage } = await import("./send-DanpvmZQ.js").then((n) => n.n);
|
|
31959
32342
|
return await sendMessageIMessage(...args);
|
|
31960
32343
|
}
|
|
31961
32344
|
};
|
|
@@ -43506,7 +43889,7 @@ async function registerSlackMonitorSlashCommands(params) {
|
|
|
43506
43889
|
});
|
|
43507
43890
|
const deliverSlashPayloads = async (replies) => {
|
|
43508
43891
|
const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
|
|
43509
|
-
import("./replies-
|
|
43892
|
+
import("./replies-CsNZ9ImJ.js").then((n) => n.r),
|
|
43510
43893
|
import("./chunk-DIi9uyC6.js").then((n) => n.s),
|
|
43511
43894
|
import("./markdown-tables-kCfKPOgH.js").then((n) => n.t)
|
|
43512
43895
|
]);
|
|
@@ -48200,7 +48583,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
48200
48583
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
48201
48584
|
let preflightTranscript;
|
|
48202
48585
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
48203
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
48586
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-8UNY1akA.js");
|
|
48204
48587
|
preflightTranscript = await transcribeFirstAudio({
|
|
48205
48588
|
ctx: {
|
|
48206
48589
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -50354,23 +50737,23 @@ let webLoginQrPromise = null;
|
|
|
50354
50737
|
let webChannelPromise = null;
|
|
50355
50738
|
let whatsappActionsPromise = null;
|
|
50356
50739
|
function loadWebOutbound() {
|
|
50357
|
-
webOutboundPromise ??= import("./outbound-
|
|
50740
|
+
webOutboundPromise ??= import("./outbound-CPcVipU-.js").then((n) => n.t);
|
|
50358
50741
|
return webOutboundPromise;
|
|
50359
50742
|
}
|
|
50360
50743
|
function loadWebLogin() {
|
|
50361
|
-
webLoginPromise ??= import("./login-
|
|
50744
|
+
webLoginPromise ??= import("./login-Cd4DTmg6.js").then((n) => n.n);
|
|
50362
50745
|
return webLoginPromise;
|
|
50363
50746
|
}
|
|
50364
50747
|
function loadWebLoginQr() {
|
|
50365
|
-
webLoginQrPromise ??= import("./login-qr-
|
|
50748
|
+
webLoginQrPromise ??= import("./login-qr-Xgw7JPYo.js");
|
|
50366
50749
|
return webLoginQrPromise;
|
|
50367
50750
|
}
|
|
50368
50751
|
function loadWebChannel() {
|
|
50369
|
-
webChannelPromise ??= import("./web-
|
|
50752
|
+
webChannelPromise ??= import("./web-C-E-O8iP.js");
|
|
50370
50753
|
return webChannelPromise;
|
|
50371
50754
|
}
|
|
50372
50755
|
function loadWhatsAppActions() {
|
|
50373
|
-
whatsappActionsPromise ??= import("./whatsapp-actions-
|
|
50756
|
+
whatsappActionsPromise ??= import("./whatsapp-actions-CJkCiI_n.js");
|
|
50374
50757
|
return whatsappActionsPromise;
|
|
50375
50758
|
}
|
|
50376
50759
|
function createPluginRuntime() {
|
|
@@ -54470,6 +54853,22 @@ function wrapToolParamNormalization(tool, requiredParamGroups) {
|
|
|
54470
54853
|
}
|
|
54471
54854
|
};
|
|
54472
54855
|
}
|
|
54856
|
+
/**
|
|
54857
|
+
* Override a tool's description while preserving execute, parameters, and
|
|
54858
|
+
* other properties. Used by Stage 2.5 of the prompt-reduction plan to move
|
|
54859
|
+
* usage docs from the system prompt into tool descriptions where they
|
|
54860
|
+
* belong contextually.
|
|
54861
|
+
*
|
|
54862
|
+
* The replacement description should include the upstream's tool-purpose
|
|
54863
|
+
* sentence so models that only read the description (without the prompt
|
|
54864
|
+
* section) still have the same baseline understanding.
|
|
54865
|
+
*/
|
|
54866
|
+
function wrapToolWithDescriptionOverride(tool, description) {
|
|
54867
|
+
return {
|
|
54868
|
+
...tool,
|
|
54869
|
+
description
|
|
54870
|
+
};
|
|
54871
|
+
}
|
|
54473
54872
|
function wrapToolWorkspaceRootGuard(tool, root) {
|
|
54474
54873
|
return {
|
|
54475
54874
|
...tool,
|
|
@@ -65125,6 +65524,7 @@ function createSymiTools(options) {
|
|
|
65125
65524
|
createCronTool({ agentSessionKey: options?.agentSessionKey }),
|
|
65126
65525
|
createTaskListTool({ workspaceDir }),
|
|
65127
65526
|
createTaskCancelTool({ workspaceDir }),
|
|
65527
|
+
createSkillSearchTool({ workspaceDir }),
|
|
65128
65528
|
...messageTool ? [messageTool] : [],
|
|
65129
65529
|
createTtsTool({
|
|
65130
65530
|
agentChannel: options?.agentChannel,
|
|
@@ -65320,6 +65720,26 @@ function resolveToolLoopDetectionConfig(params) {
|
|
|
65320
65720
|
}
|
|
65321
65721
|
};
|
|
65322
65722
|
}
|
|
65723
|
+
/**
|
|
65724
|
+
* Edit tool description. Replaces the upstream's terse one-liner with
|
|
65725
|
+
* usage notes migrated from the system prompt's "Edit Tool Best Practices"
|
|
65726
|
+
* section in Stage 2.5 of the prompt-reduction plan. Co-locating these
|
|
65727
|
+
* notes with the tool means they ship only when edit is in palette, and
|
|
65728
|
+
* the system prompt section can be deleted in Stage 4 without losing the
|
|
65729
|
+
* guidance.
|
|
65730
|
+
*
|
|
65731
|
+
* Combined with the read-before-edit guard (Stage 1.3) and the model's
|
|
65732
|
+
* own discipline, this should kill the hallucinated-oldText failure class
|
|
65733
|
+
* for any well-intentioned model.
|
|
65734
|
+
*/
|
|
65735
|
+
const EDIT_TOOL_DESCRIPTION = [
|
|
65736
|
+
"Edit a file by replacing exact text. The oldText must match the file EXACTLY (whitespace, indentation, and all).",
|
|
65737
|
+
"Best practices to avoid match failures:",
|
|
65738
|
+
"- Use the SHORTEST unique snippet that identifies the edit location (1-3 lines). Do NOT paste large blocks.",
|
|
65739
|
+
"- 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.",
|
|
65740
|
+
"- 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.",
|
|
65741
|
+
"- Prefer lines with distinctive content (function names, unique strings) over generic code (braces, blank lines)."
|
|
65742
|
+
].join(" ");
|
|
65323
65743
|
function createSymiCodingTools(options) {
|
|
65324
65744
|
const execToolName = "exec";
|
|
65325
65745
|
const sandbox = options?.sandbox?.enabled ? options.sandbox : void 0;
|
|
@@ -65408,7 +65828,7 @@ function createSymiCodingTools(options) {
|
|
|
65408
65828
|
}
|
|
65409
65829
|
if (tool.name === "edit") {
|
|
65410
65830
|
if (sandboxRoot) return [];
|
|
65411
|
-
const guarded = wrapEditToolWithGuard(wrapToolParamNormalization(createEditTool(workspaceRoot), CLAUDE_PARAM_GROUPS.edit), readEditTracker);
|
|
65831
|
+
const guarded = wrapEditToolWithGuard(wrapToolWithDescriptionOverride(wrapToolParamNormalization(createEditTool(workspaceRoot), CLAUDE_PARAM_GROUPS.edit), EDIT_TOOL_DESCRIPTION), readEditTracker);
|
|
65412
65832
|
return [workspaceOnly ? wrapToolWorkspaceRootGuard(guarded, workspaceRoot) : guarded];
|
|
65413
65833
|
}
|
|
65414
65834
|
return [tool];
|
|
@@ -65829,7 +66249,11 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
65829
66249
|
userTime,
|
|
65830
66250
|
userTimeFormat,
|
|
65831
66251
|
contextFiles,
|
|
65832
|
-
memoryCitationsMode: params.config?.memory?.citations
|
|
66252
|
+
memoryCitationsMode: params.config?.memory?.citations,
|
|
66253
|
+
autoLoadInlineSkills: params.config?.skills?.autoLoadInline,
|
|
66254
|
+
skillsDiscoveryMode: params.config?.skills?.discoveryMode,
|
|
66255
|
+
skillsAnchorList: params.config?.skills?.anchorList,
|
|
66256
|
+
currentUserMessage: void 0
|
|
65833
66257
|
}));
|
|
65834
66258
|
const sessionLock = await acquireSessionWriteLock({
|
|
65835
66259
|
sessionFile: params.sessionFile,
|
|
@@ -73505,7 +73929,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
73505
73929
|
return;
|
|
73506
73930
|
}
|
|
73507
73931
|
try {
|
|
73508
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
73932
|
+
const { deliverOutboundPayloads } = await import("./deliver-DrgHcdVo.js").then((n) => n.n);
|
|
73509
73933
|
await deliverOutboundPayloads({
|
|
73510
73934
|
cfg: params.cfg,
|
|
73511
73935
|
channel,
|