@symerian/symi 2.3.0 → 2.3.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.
Files changed (169) hide show
  1. package/dist/{agents-B0pTMEwy.js → agents-b1LWBQC2.js} +4 -4
  2. package/dist/{agents.config-_b7ghdyb.js → agents.config-BImdIqjf.js} +1 -1
  3. package/dist/{agents.config-CdNbu8M5.js → agents.config-CH52CAyr.js} +1 -1
  4. package/dist/{audio-preflight-BkIfnmpi.js → audio-preflight-BsfqyC31.js} +4 -4
  5. package/dist/{auth-choice-Bx2Ly3cQ.js → auth-choice-DX1GLTBf.js} +1 -1
  6. package/dist/{auth-choice-EFFQA4ii.js → auth-choice-DcA3lQQX.js} +1 -1
  7. package/dist/{banner-B3eic4uq.js → banner-C9OgeI9S.js} +1 -1
  8. package/dist/build-info.json +3 -3
  9. package/dist/bundled/boot-md/handler.js +6 -6
  10. package/dist/bundled/session-memory/handler.js +6 -6
  11. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  12. package/dist/{channel-options-75aPoFR-.js → channel-options-CKHMtbhF.js} +1 -1
  13. package/dist/{channel-options-CiowWU_F.js → channel-options-CUlWJdG7.js} +1 -1
  14. package/dist/{channel-web-B3e8z6ws.js → channel-web-DNGWTM8I.js} +1 -1
  15. package/dist/{channels-cli-DZM3aIdY.js → channels-cli-C7Q3h_ZW.js} +4 -4
  16. package/dist/{channels-cli-BDAVsmSm.js → channels-cli-D3n-xoKD.js} +4 -4
  17. package/dist/{chrome-CxSAp8x3.js → chrome-w3SLcQJF.js} +7 -7
  18. package/dist/{cli-BRwovkQi.js → cli-9nGKXD05.js} +1 -1
  19. package/dist/{cli-D9SQsNnH.js → cli-Bf6Le7bx.js} +1 -1
  20. package/dist/{command-registry-BOI6nYdi.js → command-registry-C6H5FwOm.js} +9 -9
  21. package/dist/{completion-cli-NNzoK79d.js → completion-cli-Cuqh9oMX.js} +1 -1
  22. package/dist/{completion-cli-83vpWmfU.js → completion-cli-DJNeDB6-.js} +2 -2
  23. package/dist/{config-cli-DEAh6EN8.js → config-cli-BG7fqSG5.js} +1 -1
  24. package/dist/{config-cli-MLtPektI.js → config-cli-BZARhhJb.js} +1 -1
  25. package/dist/{configure-vl7Z4vWj.js → configure-1q8nqdUB.js} +3 -3
  26. package/dist/{configure-BdfU-OWp.js → configure-CXMeenDU.js} +3 -3
  27. package/dist/{deliver-BA7ZN3iM.js → deliver-BmPK91JP.js} +1 -1
  28. package/dist/{doctor-completion-OyrrKhcY.js → doctor-completion-DE0ljh_m.js} +1 -1
  29. package/dist/{doctor-completion-Ds-_m1_I.js → doctor-completion-MHRUVcxM.js} +1 -1
  30. package/dist/entry.js +1 -1
  31. package/dist/extensionAPI.js +1 -1
  32. package/dist/{gateway-cli-DfFSqETj.js → gateway-cli-A_kepvEA.js} +9 -9
  33. package/dist/{gateway-cli-Coue82yW.js → gateway-cli-BL_vVTU2.js} +9 -9
  34. package/dist/{glass-ui-ws-Dkh8KQKx.js → glass-ui-ws-CWG8XziA.js} +7 -7
  35. package/dist/{glass-ui-ws-D0Y3Ftjr.js → glass-ui-ws-Drv5ICqE.js} +7 -7
  36. package/dist/{health-B1LT2TG3.js → health-B71iKlbh.js} +1 -1
  37. package/dist/{health-BL_zFcJ8.js → health-BTXjJASN.js} +1 -1
  38. package/dist/{hooks-cli-CI7p--JB.js → hooks-cli-D8Sc2Ha-.js} +2 -2
  39. package/dist/{hooks-cli-BoE1T7F1.js → hooks-cli-R6NcEG6h.js} +2 -2
  40. package/dist/{image-BGmVDkkw.js → image-rZ4x9VS9.js} +1 -1
  41. package/dist/index.js +6 -6
  42. package/dist/llm-slug-generator.js +6 -6
  43. package/dist/{models-DSx-ohwA.js → models-CNdluTFK.js} +2 -2
  44. package/dist/{models-cli-Dm_3bpun.js → models-cli-CN2aEEwr.js} +3 -3
  45. package/dist/{models-cli-B-mDqwNv.js → models-cli-dZewIFFK.js} +2 -2
  46. package/dist/{onboard-u4HyeN9s.js → onboard-DoPuzIkY.js} +2 -2
  47. package/dist/{onboard-channels-CixaQo6p.js → onboard-channels-BrmH9pSy.js} +1 -1
  48. package/dist/{onboard-channels-BUz8JSpV.js → onboard-channels-C-e8WBT5.js} +1 -1
  49. package/dist/{onboard-CPRPPhos.js → onboard-jMdLiAFB.js} +2 -2
  50. package/dist/{onboarding-DVnX6G65.js → onboarding-C4tCCVuf.js} +3 -3
  51. package/dist/{onboarding-HeYKKCUg.js → onboarding-Dahfev0C.js} +3 -3
  52. package/dist/{onboarding.finalize-BJD7ST55.js → onboarding.finalize-B-jArghw.js} +6 -6
  53. package/dist/{onboarding.finalize-CyfJOd_0.js → onboarding.finalize-C-UcCZwc.js} +5 -5
  54. package/dist/{pi-embedded-Du1crlEA.js → pi-embedded-Cox_hxBz.js} +229 -161
  55. package/dist/{pi-embedded-helpers-DEEaCvEp.js → pi-embedded-helpers-B2z46qeM.js} +4 -4
  56. package/dist/{pi-embedded-Dbwt0RDE.js → pi-embedded-u1nTVeVL.js} +243 -175
  57. package/dist/{plugin-registry-BHTWmVtf.js → plugin-registry-BUjhiC8S.js} +1 -1
  58. package/dist/{plugin-registry-B3_VvP9Z.js → plugin-registry-DB6m_jhG.js} +1 -1
  59. package/dist/plugin-sdk/{accounts-BToL3HlP.js → accounts-BtaOa4z_.js} +1 -1
  60. package/dist/plugin-sdk/{accounts-D9zGZU5t.js → accounts-Ddm33hQm.js} +3 -3
  61. package/dist/plugin-sdk/{accounts-Dtszw3Zn.js → accounts-s-AdhXVR.js} +1 -1
  62. package/dist/plugin-sdk/{active-listener-bEk__wbB.js → active-listener-BXYeALs0.js} +1 -1
  63. package/dist/plugin-sdk/{agent-scope-C3gMMKCU.js → agent-scope-CYYpcO9W.js} +2 -2
  64. package/dist/plugin-sdk/{api-key-rotation-CVBMpnPc.js → api-key-rotation-D_sMvI5W.js} +1 -1
  65. package/dist/plugin-sdk/{audio-preflight-DoQQKlxa.js → audio-preflight-VpItkiy3.js} +24 -24
  66. package/dist/plugin-sdk/{bindings-BbwoUGPx.js → bindings-C7hRtgYW.js} +2 -2
  67. package/dist/plugin-sdk/{channel-activity-Ji7f0gqq.js → channel-activity-DoC1xtDu.js} +1 -1
  68. package/dist/plugin-sdk/{channel-web-pXiGDTMm.js → channel-web-DBJ2f-u5.js} +22 -22
  69. package/dist/plugin-sdk/{chrome-C7c_0I5M.js → chrome-B7RdxmJ0.js} +3 -3
  70. package/dist/plugin-sdk/{chunk-jvk9axTQ.js → chunk-Dw2XBYXv.js} +1 -1
  71. package/dist/plugin-sdk/{command-format-DSdvQ_M5.js → command-format-GKSevep4.js} +1 -1
  72. package/dist/plugin-sdk/{commands-registry-CQFbmUMs.js → commands-registry-COIaslGl.js} +4 -4
  73. package/dist/plugin-sdk/{config-DDkdiUOR.js → config-KlTNfkFF.js} +9 -9
  74. package/dist/plugin-sdk/{deliver-BUns_L9e.js → deliver-BiGlXG5k.js} +10 -10
  75. package/dist/plugin-sdk/{diagnostic-mFf4i4G9.js → diagnostic-05pm5Rxi.js} +1 -1
  76. package/dist/plugin-sdk/{image-BOYy0Ump.js → image-CLOPx7yW.js} +4 -4
  77. package/dist/plugin-sdk/{image-ops-Bnp6LXEx.js → image-ops-BlQR__MN.js} +1 -1
  78. package/dist/plugin-sdk/index.js +53 -53
  79. package/dist/plugin-sdk/{ir-Fb3qpcis.js → ir-BJ6BHE5b.js} +4 -4
  80. package/dist/plugin-sdk/{local-roots-Ckk1QfzI.js → local-roots-BHLNSI8U.js} +3 -3
  81. package/dist/plugin-sdk/{login-Bh3DZPam.js → login-DQMXuxOk.js} +7 -7
  82. package/dist/plugin-sdk/{login-qr-DbR7odSr.js → login-qr-BjVZSoCi.js} +9 -9
  83. package/dist/plugin-sdk/{manager-DckktAQ3.js → manager-CBSBFuFz.js} +8 -8
  84. package/dist/plugin-sdk/{manifest-registry-B3ugY9-f.js → manifest-registry-CPnHl_K3.js} +1 -1
  85. package/dist/plugin-sdk/{markdown-tables-Dfaqilz6.js → markdown-tables-BoYFajMu.js} +1 -1
  86. package/dist/plugin-sdk/{message-channel-BdI5Ra9S.js → message-channel-COTAJzHd.js} +1 -1
  87. package/dist/plugin-sdk/{model-selection-OpU8HN50.js → model-selection-CsbEfrS0.js} +4 -4
  88. package/dist/plugin-sdk/{outbound-rF6G8Xpr.js → outbound-B0e8KdaR.js} +7 -7
  89. package/dist/plugin-sdk/{outbound-attachment-DnVQfTG2.js → outbound-attachment-CnslKL38.js} +2 -2
  90. package/dist/plugin-sdk/{pi-auth-json-CJk8t14T.js → pi-auth-json-qWi7ZIYV.js} +5 -5
  91. package/dist/plugin-sdk/{pi-embedded-helpers-BveUP4hk.js → pi-embedded-helpers-CW630epe.js} +17 -17
  92. package/dist/plugin-sdk/{plugins-BbAvhC25.js → plugins-BNByVCIH.js} +4 -4
  93. package/dist/plugin-sdk/{pw-ai-DjGUsee-.js → pw-ai-CnbPIPY9.js} +8 -8
  94. package/dist/plugin-sdk/{qmd-manager-mjKcdwVr.js → qmd-manager-CH0XbIHf.js} +4 -4
  95. package/dist/plugin-sdk/{registry--_pGht6S.js → registry-D0xTnUWt.js} +2 -2
  96. package/dist/plugin-sdk/{replies-fI39rPGa.js → replies-LLcQL3w6.js} +3 -3
  97. package/dist/plugin-sdk/{reply-ClH0tnJf.js → reply-8bK0BH5o.js} +305 -237
  98. package/dist/plugin-sdk/{reply-prefix-BHuV5t70.js → reply-prefix-uxfMZW4p.js} +1 -1
  99. package/dist/plugin-sdk/{resolve-outbound-target-BkCUbYGV.js → resolve-outbound-target-BiyAyTWz.js} +2 -2
  100. package/dist/plugin-sdk/{resolve-route-D3JH_D2N.js → resolve-route-B3CCBumQ.js} +3 -3
  101. package/dist/plugin-sdk/{retry-ilSJqnz9.js → retry-CwQ_iIj8.js} +1 -1
  102. package/dist/plugin-sdk/{runner-BVqnEfNe.js → runner-CGBT7tgF.js} +9 -9
  103. package/dist/plugin-sdk/{send-BtANzsAo.js → send-B2CEnVLL.js} +6 -6
  104. package/dist/plugin-sdk/{send-BHbXh8Ly.js → send-C5h_YxNb.js} +7 -7
  105. package/dist/plugin-sdk/{send-D6LMZJ_h.js → send-CRsR8-vO.js} +10 -10
  106. package/dist/plugin-sdk/{send-Bxdu6ZZy.js → send-CjOBB3Vo.js} +10 -10
  107. package/dist/plugin-sdk/{send-BMfJIhCk.js → send-pYqe432l.js} +6 -6
  108. package/dist/plugin-sdk/{session-kI0tzViQ.js → session-BsOrxiMj.js} +4 -4
  109. package/dist/plugin-sdk/{skill-commands-DCNXVERE.js → skill-commands-ff_01_r3.js} +5 -5
  110. package/dist/plugin-sdk/{skills-B1GeRYlu.js → skills-_yTP47Cd.js} +7 -7
  111. package/dist/plugin-sdk/{sqlite-Cq_7Cg4E.js → sqlite-CxAR5ttJ.js} +1 -1
  112. package/dist/plugin-sdk/{store-Do3t33-c.js → store-BdrNabcU.js} +2 -2
  113. package/dist/plugin-sdk/{subsystem-Coz2AgU8.js → subsystem-B2uDN3TV.js} +1 -1
  114. package/dist/plugin-sdk/{tables-DR0NmBeH.js → tables-DNwXwNFa.js} +1 -1
  115. package/dist/plugin-sdk/{target-errors-B7YyMnIi.js → target-errors-Paro1BjP.js} +2 -2
  116. package/dist/plugin-sdk/{thinking-DCNUIAHY.js → thinking-CXqf7WTe.js} +5 -5
  117. package/dist/plugin-sdk/{tokens-CWMflosr.js → tokens-bC3UVmVH.js} +1 -1
  118. package/dist/plugin-sdk/{tool-images-D7Lno-TE.js → tool-images-HJ2sfZDV.js} +2 -2
  119. package/dist/plugin-sdk/{tool-loop-detection-edmW8ZiF.js → tool-loop-detection-BVA6fax-.js} +2 -2
  120. package/dist/plugin-sdk/web-C-5ZChok.js +65 -0
  121. package/dist/plugin-sdk/{whatsapp-actions-CcBzDuL-.js → whatsapp-actions-DfseosPO.js} +21 -21
  122. package/dist/{plugins-cli-CiJ3j55S.js → plugins-cli-BuFYsQIf.js} +2 -2
  123. package/dist/{plugins-cli-Dm1uy7by.js → plugins-cli-DZhaDtma.js} +2 -2
  124. package/dist/{program-CH2ZAXFK.js → program-DlXflM2j.js} +7 -7
  125. package/dist/{program-context-BHdXKRCG.js → program-context-CgOHSNfJ.js} +17 -17
  126. package/dist/{prompt-select-styled-D8-TYiCU.js → prompt-select-styled-BM24eNt6.js} +4 -4
  127. package/dist/{prompt-select-styled-YbkZmrxn.js → prompt-select-styled-VDp7sLVS.js} +4 -4
  128. package/dist/{provider-auth-helpers-BvwbMhtC.js → provider-auth-helpers-DPc2nJjU.js} +1 -1
  129. package/dist/{provider-auth-helpers-BXnJRRuA.js → provider-auth-helpers-DqyK6Uuv.js} +1 -1
  130. package/dist/{push-apns-CtNHq-T0.js → push-apns-BP1VrPYl.js} +1 -1
  131. package/dist/{push-apns-BKDV4tcx.js → push-apns-DmCBSfsH.js} +1 -1
  132. package/dist/{pw-ai-DhwRiS06.js → pw-ai-PiQUncix.js} +1 -1
  133. package/dist/{register.agent-BUq96Y9v.js → register.agent-CFngezQc.js} +5 -5
  134. package/dist/{register.agent-BKI5-fHH.js → register.agent-MXEw1cDP.js} +6 -6
  135. package/dist/{register.configure-wxLUAVNm.js → register.configure-Dye2lrEX.js} +6 -6
  136. package/dist/{register.configure-D5lE614j.js → register.configure-yuP_CFyL.js} +6 -6
  137. package/dist/{register.maintenance-C7McOGSl.js → register.maintenance-CmGslWRY.js} +7 -7
  138. package/dist/{register.maintenance-CBkeGPZ5.js → register.maintenance-CmsjyCHR.js} +8 -8
  139. package/dist/{register.message-COdTYFse.js → register.message-BqeA08JG.js} +2 -2
  140. package/dist/{register.message-CI-7hMop.js → register.message-COWiw927.js} +2 -2
  141. package/dist/{register.onboard-BB0BR6ER.js → register.onboard-Bi5HeqKP.js} +4 -4
  142. package/dist/{register.onboard-Cvq4D9PO.js → register.onboard-GL4FQKKt.js} +4 -4
  143. package/dist/{register.setup-BYdcj7kG.js → register.setup-CwdX8TGJ.js} +4 -4
  144. package/dist/{register.setup-BFsDqWth.js → register.setup-DE8B6eLm.js} +4 -4
  145. package/dist/{register.status-health-sessions-Z5xGFCb6.js → register.status-health-sessions-CDZ7zo1L.js} +3 -3
  146. package/dist/{register.status-health-sessions-CLTBPceP.js → register.status-health-sessions-DD5niftr.js} +3 -3
  147. package/dist/{register.subclis-DbjFcioS.js → register.subclis-Cn7QTC_-.js} +9 -9
  148. package/dist/{reply-Dlka9TPn.js → reply-BU9TUp_K.js} +229 -161
  149. package/dist/{run-main-CZKS1Km-.js → run-main-B6YILTPp.js} +14 -14
  150. package/dist/{runner-B_KP4voe.js → runner-CCSMfQee.js} +1 -1
  151. package/dist/{server-methods-Dl2xnUeP.js → server-methods-BTiR6t8F.js} +7 -7
  152. package/dist/{server-methods-060ibtki.js → server-methods-DFsGxi3M.js} +7 -7
  153. package/dist/{server-node-events-CxdmKBmm.js → server-node-events-BNDR2xkm.js} +2 -2
  154. package/dist/{server-node-events-BaVEbs-L.js → server-node-events-DEifFVMC.js} +2 -2
  155. package/dist/{status-DFFFYwyN.js → status-BlSxFEeo.js} +1 -1
  156. package/dist/{status-B161_hoB.js → status-ChsVYdUd.js} +2 -2
  157. package/dist/{status-DqWKFOGN.js → status-D6EakoGU.js} +2 -2
  158. package/dist/{status-V0eZ4bzN.js → status-DwZBYK_G.js} +1 -1
  159. package/dist/{subagent-registry-DLH72QgE.js → subagent-registry-XIFSKsi7.js} +229 -161
  160. package/dist/{update-cli-t1GIk6uw.js → update-cli-C4Hrx6N-.js} +8 -8
  161. package/dist/{update-cli-BHNHad5c.js → update-cli-CXfz9C2E.js} +7 -7
  162. package/dist/{update-runner-CDG0-jLB.js → update-runner-BWHG84zP.js} +1 -1
  163. package/dist/{update-runner-Ciq1c0YL.js → update-runner-C6_7IzDb.js} +1 -1
  164. package/dist/{web-FaXjM6fP.js → web-Bpy6uQ4f.js} +1 -1
  165. package/dist/{web-CWhHll12.js → web-C1iHUvKH.js} +2 -2
  166. package/dist/{web-B_JQgMeX.js → web-CB8bYQpw.js} +6 -6
  167. package/dist/{web-BkvYOXO1.js → web-DPXq2-or.js} +1 -1
  168. package/package.json +1 -1
  169. package/dist/plugin-sdk/web-D-2D6z4H.js +0 -65
@@ -13,7 +13,7 @@ import { t as parseBooleanValue$1 } from "./boolean-B8-BqKGQ.js";
13
13
  import { n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-UKHV-j0K.js";
14
14
  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-CHEOWVc8.js";
15
15
  import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-DwKJK3sM.js";
16
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-BA7ZN3iM.js";
16
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-BmPK91JP.js";
17
17
  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-C3nsWaw3.js";
18
18
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Bxo4UHOL.js";
19
19
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-ChTFYj8Q.js";
@@ -23,10 +23,10 @@ import { A as normalizeProviderId, C as buildAllowedModelSet, D as isCliProvider
23
23
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-DJqsJ2-r.js";
24
24
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DaNAekda.js";
25
25
  import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-DbsRltF2.js";
26
- import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-DEEaCvEp.js";
26
+ import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-B2z46qeM.js";
27
27
  import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-eEaJddXj.js";
28
28
  import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverSymiPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-CneMHk0N.js";
29
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-CxSAp8x3.js";
29
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-w3SLcQJF.js";
30
30
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-o5WVqM4V.js";
31
31
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BoQgnc8X.js";
32
32
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BTMDZjHT.js";
@@ -37,7 +37,7 @@ import { t as resolveIMessageAccount } from "./accounts-CJR8j_Kq.js";
37
37
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-Cb87-LzP.js";
38
38
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-DDYvbmRV.js";
39
39
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-DBCfXdli.js";
40
- import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-BGmVDkkw.js";
40
+ import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-rZ4x9VS9.js";
41
41
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CtL0omgM.js";
42
42
  import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-BoLr3xR_.js";
43
43
  import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-6H6Zw1cs.js";
@@ -51,7 +51,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-CbFUkv_T.js";
51
51
  import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-VSmULp-g.js";
52
52
  import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-D610IKhm.js";
53
53
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-BlHX0H3E.js";
54
- import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-B_KP4voe.js";
54
+ import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-CCSMfQee.js";
55
55
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-Bso4i15F.js";
56
56
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-Bup9wS1y.js";
57
57
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-C9-gaquj.js";
@@ -81,7 +81,7 @@ import { EdgeTTS } from "node-edge-tts";
81
81
  import AjvPkg from "ajv";
82
82
  import { createServer } from "node:http";
83
83
  import { ProxyAgent, fetch as fetch$1 } from "undici";
84
- import WebSocket, { WebSocket as WebSocket$1 } from "ws";
84
+ import WebSocket$1, { WebSocket } from "ws";
85
85
  import { Buffer as Buffer$1 } from "node:buffer";
86
86
  import { createJiti } from "jiti";
87
87
  import { Type } from "@sinclair/typebox";
@@ -5716,7 +5716,7 @@ var GatewayClient = class {
5716
5716
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
5717
5717
  });
5718
5718
  }
5719
- this.ws = new WebSocket$1(url, wsOptions);
5719
+ this.ws = new WebSocket(url, wsOptions);
5720
5720
  this.ws.on("open", () => {
5721
5721
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
5722
5722
  const tlsError = this.validateTlsFingerprint();
@@ -5935,7 +5935,7 @@ var GatewayClient = class {
5935
5935
  return null;
5936
5936
  }
5937
5937
  async request(method, params, opts) {
5938
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
5938
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
5939
5939
  const id = randomUUID();
5940
5940
  const frame = {
5941
5941
  type: "req",
@@ -7201,7 +7201,7 @@ async function routeReply(params) {
7201
7201
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7202
7202
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7203
7203
  try {
7204
- const { deliverOutboundPayloads } = await import("./deliver-BA7ZN3iM.js").then((n) => n.n);
7204
+ const { deliverOutboundPayloads } = await import("./deliver-BmPK91JP.js").then((n) => n.n);
7205
7205
  return {
7206
7206
  ok: true,
7207
7207
  messageId: (await deliverOutboundPayloads({
@@ -41675,7 +41675,7 @@ async function deliverSessionMaintenanceWarning(params) {
41675
41675
  return;
41676
41676
  }
41677
41677
  try {
41678
- const { deliverOutboundPayloads } = await import("./deliver-BA7ZN3iM.js").then((n) => n.n);
41678
+ const { deliverOutboundPayloads } = await import("./deliver-BmPK91JP.js").then((n) => n.n);
41679
41679
  await deliverOutboundPayloads({
41680
41680
  cfg: params.cfg,
41681
41681
  channel,
@@ -45121,7 +45121,7 @@ async function describeStickerImage(params) {
45121
45121
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
45122
45122
  try {
45123
45123
  const buffer = await fs.readFile(imagePath);
45124
- const { describeImageWithModel } = await import("./image-BGmVDkkw.js").then((n) => n.n);
45124
+ const { describeImageWithModel } = await import("./image-rZ4x9VS9.js").then((n) => n.n);
45125
45125
  return (await describeImageWithModel({
45126
45126
  buffer,
45127
45127
  fileName: "sticker.webp",
@@ -47783,7 +47783,7 @@ async function preflightDiscordMessage(params) {
47783
47783
  let preflightTranscript;
47784
47784
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
47785
47785
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
47786
- const { transcribeFirstAudio } = await import("./audio-preflight-BkIfnmpi.js");
47786
+ const { transcribeFirstAudio } = await import("./audio-preflight-BsfqyC31.js");
47787
47787
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
47788
47788
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
47789
47789
  ctx: {
@@ -51789,7 +51789,7 @@ function isVoiceChannelType(type) {
51789
51789
  function createDefaultDeps() {
51790
51790
  return {
51791
51791
  sendMessageWhatsApp: async (...args) => {
51792
- const { sendMessageWhatsApp } = await import("./web-B_JQgMeX.js");
51792
+ const { sendMessageWhatsApp } = await import("./web-CB8bYQpw.js");
51793
51793
  return await sendMessageWhatsApp(...args);
51794
51794
  },
51795
51795
  sendMessageTelegram: async (...args) => {
@@ -54696,7 +54696,7 @@ function createDiscordGatewayPlugin(params) {
54696
54696
  super(options);
54697
54697
  }
54698
54698
  createWebSocket(url) {
54699
- return new WebSocket(url, { agent });
54699
+ return new WebSocket$1(url, { agent });
54700
54700
  }
54701
54701
  }
54702
54702
  return new ProxyGatewayPlugin();
@@ -64914,7 +64914,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
64914
64914
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
64915
64915
  let preflightTranscript;
64916
64916
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
64917
- const { transcribeFirstAudio } = await import("./audio-preflight-BkIfnmpi.js");
64917
+ const { transcribeFirstAudio } = await import("./audio-preflight-BsfqyC31.js");
64918
64918
  preflightTranscript = await transcribeFirstAudio({
64919
64919
  ctx: {
64920
64920
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -67071,7 +67071,7 @@ function loadWebLoginQr() {
67071
67071
  return webLoginQrPromise;
67072
67072
  }
67073
67073
  function loadWebChannel() {
67074
- webChannelPromise ??= import("./web-B_JQgMeX.js");
67074
+ webChannelPromise ??= import("./web-CB8bYQpw.js");
67075
67075
  return webChannelPromise;
67076
67076
  }
67077
67077
  function loadWhatsAppActions() {
@@ -72588,6 +72588,162 @@ async function compactEmbeddedPiSession(params) {
72588
72588
  return enqueueCommandInLane(sessionLane, () => enqueueGlobal(async () => compactEmbeddedPiSessionDirect(params)));
72589
72589
  }
72590
72590
 
72591
+ //#endregion
72592
+ //#region src/config/model-profiles-builtin.ts
72593
+ /**
72594
+ * Built-in model profiles. Ordered from most-specific to least-specific so
72595
+ * that `resolveModelProfile` can return the first match.
72596
+ *
72597
+ * Order matters: "ollama/" must precede "gemma" because model IDs like
72598
+ * "ollama/gemma4:31b-128k" contain both substrings.
72599
+ */
72600
+ const BUILTIN_PROFILES = [
72601
+ {
72602
+ match: ["ollama/"],
72603
+ label: "Ollama Local",
72604
+ params: {
72605
+ temperature: 1,
72606
+ top_p: .95,
72607
+ top_k: 64,
72608
+ max_tokens: 4096,
72609
+ stop: ["<end_of_turn>", "<eos>"]
72610
+ },
72611
+ streaming: {
72612
+ deltaThrottleMs: 50,
72613
+ flushOnFinal: true,
72614
+ chunkPattern: "burst"
72615
+ },
72616
+ filters: {
72617
+ stripPatterns: [
72618
+ "<\\|channel>\\w*",
72619
+ "<channel\\|>",
72620
+ "<start_of_turn>(?:model|user)?",
72621
+ "<end_of_turn>"
72622
+ ],
72623
+ suppressMonologue: true,
72624
+ hasStructuredThinking: false
72625
+ },
72626
+ promptAdditions: ["You are running locally via Ollama. Do not output raw control tokens or internal monologue. Send brief progress updates on long tasks."],
72627
+ ui: {
72628
+ badge: "Local",
72629
+ watchdogMs: 9e5,
72630
+ armWatchdogOnSend: true
72631
+ }
72632
+ },
72633
+ {
72634
+ match: ["anthropic/", "claude-"],
72635
+ label: "Claude",
72636
+ params: {
72637
+ temperature: 1,
72638
+ top_p: 1,
72639
+ max_tokens: 8192
72640
+ },
72641
+ streaming: {
72642
+ deltaThrottleMs: 150,
72643
+ flushOnFinal: false,
72644
+ chunkPattern: "token"
72645
+ },
72646
+ filters: {
72647
+ stripPatterns: [],
72648
+ suppressMonologue: false,
72649
+ hasStructuredThinking: true
72650
+ },
72651
+ promptAdditions: [],
72652
+ ui: {
72653
+ badge: "API",
72654
+ watchdogMs: 3e5,
72655
+ armWatchdogOnSend: false
72656
+ }
72657
+ },
72658
+ {
72659
+ match: ["gemma", "redsand/"],
72660
+ label: "Gemma 4",
72661
+ params: {
72662
+ temperature: 1,
72663
+ top_p: .95,
72664
+ top_k: 64,
72665
+ max_tokens: 4096,
72666
+ stop: ["<end_of_turn>", "<eos>"]
72667
+ },
72668
+ streaming: {
72669
+ deltaThrottleMs: 50,
72670
+ flushOnFinal: true,
72671
+ chunkPattern: "burst"
72672
+ },
72673
+ filters: {
72674
+ stripPatterns: [
72675
+ "<\\|channel>\\w*",
72676
+ "<channel\\|>",
72677
+ "<start_of_turn>(?:model|user)?",
72678
+ "<end_of_turn>",
72679
+ "<\\|(?:fim_prefix|fim_suffix|fim_middle)\\|>",
72680
+ "^\\s*<bos>\\s*"
72681
+ ],
72682
+ suppressMonologue: true,
72683
+ hasStructuredThinking: false
72684
+ },
72685
+ promptAdditions: [
72686
+ "You are running as Gemma 4 via vLLM. Important behavioral rules:",
72687
+ "- Never output raw control tokens, channel tags, or turn markers in your responses.",
72688
+ "- Never display internal status checks, plans, or self-assessments. Your visible output should only be conversational responses and final results.",
72689
+ "- When working on multi-step tasks, send a brief one-line status update every 30-60 seconds so the user knows you are active.",
72690
+ "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
72691
+ "- Do not use <|channel>thought or similar syntax. If you need to reason, do so silently."
72692
+ ],
72693
+ ui: {
72694
+ badge: "CoreWeave",
72695
+ watchdogMs: 6e5,
72696
+ armWatchdogOnSend: true
72697
+ }
72698
+ }
72699
+ ];
72700
+
72701
+ //#endregion
72702
+ //#region src/config/resolve-model-profile.ts
72703
+ /** Default profile returned when no match is found. */
72704
+ const FALLBACK_PROFILE = {
72705
+ match: "*",
72706
+ label: "Generic",
72707
+ params: {
72708
+ temperature: 1,
72709
+ max_tokens: 4096
72710
+ },
72711
+ streaming: {
72712
+ deltaThrottleMs: 150,
72713
+ flushOnFinal: true,
72714
+ chunkPattern: "burst"
72715
+ },
72716
+ filters: {
72717
+ stripPatterns: [],
72718
+ suppressMonologue: false,
72719
+ hasStructuredThinking: false
72720
+ },
72721
+ promptAdditions: [],
72722
+ ui: {
72723
+ watchdogMs: 3e5,
72724
+ armWatchdogOnSend: true
72725
+ }
72726
+ };
72727
+ /**
72728
+ * Resolve the active model profile for a given model ID.
72729
+ *
72730
+ * Resolution order:
72731
+ * 1. User-defined profiles (from `models.profiles` in symi.json)
72732
+ * 2. Built-in profiles ({@link BUILTIN_PROFILES})
72733
+ * 3. Fallback "Generic" profile
72734
+ *
72735
+ * Matching is case-insensitive prefix/substring against the model ID.
72736
+ */
72737
+ function resolveModelProfile(modelId, userProfiles) {
72738
+ const id = modelId.toLowerCase();
72739
+ const allProfiles = [...userProfiles ?? [], ...BUILTIN_PROFILES];
72740
+ for (const profile of allProfiles) {
72741
+ const patterns = Array.isArray(profile.match) ? profile.match : [profile.match];
72742
+ for (const pattern of patterns) if (id.startsWith(pattern.toLowerCase()) || id.includes(pattern.toLowerCase())) return profile;
72743
+ }
72744
+ return FALLBACK_PROFILE;
72745
+ }
72746
+
72591
72747
  //#endregion
72592
72748
  //#region src/agents/pi-embedded-runner/extra-params.ts
72593
72749
  const OPENROUTER_APP_HEADERS = {
@@ -72607,7 +72763,9 @@ const OPENAI_RESPONSES_PROVIDERS = new Set(["openai"]);
72607
72763
  function resolveExtraParams(params) {
72608
72764
  const modelKey = `${params.provider}/${params.modelId}`;
72609
72765
  const modelConfig = params.cfg?.agents?.defaults?.models?.[modelKey];
72610
- return modelConfig?.params ? { ...modelConfig.params } : void 0;
72766
+ if (modelConfig?.params) return { ...modelConfig.params };
72767
+ const profile = resolveModelProfile(modelKey, params.cfg?.models?.profiles);
72768
+ if (profile.params && Object.keys(profile.params).length > 0) return { ...profile.params };
72611
72769
  }
72612
72770
  /**
72613
72771
  * Resolve cacheRetention from extraParams, supporting both new `cacheRetention`
@@ -72637,16 +72795,40 @@ function createStreamFnWithExtraParams(baseStreamFn, extraParams, provider) {
72637
72795
  if (typeof extraParams.top_p === "number") streamParams.top_p = extraParams.top_p;
72638
72796
  if (typeof extraParams.top_k === "number") streamParams.top_k = extraParams.top_k;
72639
72797
  if (typeof extraParams.repeat_penalty === "number") streamParams.repeat_penalty = extraParams.repeat_penalty;
72798
+ if (Array.isArray(extraParams.stop) && extraParams.stop.length > 0) streamParams.stop = extraParams.stop;
72640
72799
  if (extraParams.chat_template_kwargs && typeof extraParams.chat_template_kwargs === "object") streamParams.chat_template_kwargs = extraParams.chat_template_kwargs;
72641
72800
  const cacheRetention = resolveCacheRetention(extraParams, provider);
72642
72801
  if (cacheRetention) streamParams.cacheRetention = cacheRetention;
72643
72802
  if (Object.keys(streamParams).length === 0) return;
72644
72803
  log$2.debug(`creating streamFn wrapper with params: ${JSON.stringify(streamParams)}`);
72804
+ const sp = streamParams;
72805
+ const payloadOverrides = {};
72806
+ if (Array.isArray(sp.stop) && sp.stop.length > 0) payloadOverrides.stop = sp.stop;
72807
+ if (typeof sp.top_p === "number") payloadOverrides.top_p = sp.top_p;
72808
+ if (typeof sp.top_k === "number") payloadOverrides.top_k = sp.top_k;
72809
+ if (typeof sp.repeat_penalty === "number") payloadOverrides.repeat_penalty = sp.repeat_penalty;
72810
+ const hasPayloadOverrides = Object.keys(payloadOverrides).length > 0;
72645
72811
  const underlying = baseStreamFn ?? streamSimple;
72646
- const wrappedStreamFn = (model, context, options) => underlying(model, context, {
72647
- ...streamParams,
72648
- ...options
72649
- });
72812
+ const wrappedStreamFn = (model, context, options) => {
72813
+ if (hasPayloadOverrides) {
72814
+ const originalOnPayload = options?.onPayload;
72815
+ return underlying(model, context, {
72816
+ ...streamParams,
72817
+ ...options,
72818
+ onPayload: (payload) => {
72819
+ if (payload && typeof payload === "object") {
72820
+ const p = payload;
72821
+ for (const [key, value] of Object.entries(payloadOverrides)) if (p[key] === void 0) p[key] = value;
72822
+ }
72823
+ originalOnPayload?.(payload);
72824
+ }
72825
+ });
72826
+ }
72827
+ return underlying(model, context, {
72828
+ ...streamParams,
72829
+ ...options
72830
+ });
72831
+ };
72650
72832
  return wrappedStreamFn;
72651
72833
  }
72652
72834
  function isDirectOpenAIBaseUrl(baseUrl) {
@@ -72765,6 +72947,42 @@ function createZaiToolStreamWrapper(baseStreamFn, enabled) {
72765
72947
  });
72766
72948
  };
72767
72949
  }
72950
+ const GEMMA_STOP_SEQUENCES = ["<end_of_turn>", "<eos>"];
72951
+ const VLLM_GEMMA_HINTS = ["gemma", "redsand"];
72952
+ function isVllmOrGemmaProvider(provider, modelId, cfg) {
72953
+ const lower = `${provider}/${modelId}`.toLowerCase();
72954
+ if (VLLM_GEMMA_HINTS.some((h) => lower.includes(h))) return true;
72955
+ const baseUrl = ((cfg?.models?.providers?.[provider])?.baseUrl ?? "").toLowerCase();
72956
+ return baseUrl.includes("coreweave") || baseUrl.includes("vllm");
72957
+ }
72958
+ /**
72959
+ * Wrap the stream function to fix vLLM/Gemma compat issues via onPayload:
72960
+ * 1. Replace `max_completion_tokens` with `max_tokens` (vLLM ignores the former)
72961
+ * 2. Inject Gemma stop sequences if none are set
72962
+ * 3. Remove unsupported fields (store, stream_options.include_usage on older vLLM)
72963
+ */
72964
+ function createVllmCompatWrapper(baseStreamFn, extraParams) {
72965
+ const underlying = baseStreamFn ?? streamSimple;
72966
+ const configuredStop = Array.isArray(extraParams.stop) ? extraParams.stop : GEMMA_STOP_SEQUENCES;
72967
+ return (model, context, options) => {
72968
+ const originalOnPayload = options?.onPayload;
72969
+ return underlying(model, context, {
72970
+ ...options,
72971
+ onPayload: (payload) => {
72972
+ if (payload && typeof payload === "object") {
72973
+ const p = payload;
72974
+ if (p.max_completion_tokens && !p.max_tokens) {
72975
+ p.max_tokens = p.max_completion_tokens;
72976
+ delete p.max_completion_tokens;
72977
+ }
72978
+ if (!p.stop && configuredStop.length > 0) p.stop = configuredStop;
72979
+ delete p.store;
72980
+ }
72981
+ originalOnPayload?.(payload);
72982
+ }
72983
+ });
72984
+ };
72985
+ }
72768
72986
  /**
72769
72987
  * Apply extra params (like temperature) to an agent's streamFn.
72770
72988
  * Also adds OpenRouter app attribution headers when using the OpenRouter provider.
@@ -72799,161 +73017,11 @@ function applyExtraParamsToAgent(agent, cfg, provider, modelId, extraParamsOverr
72799
73017
  agent.streamFn = createZaiToolStreamWrapper(agent.streamFn, true);
72800
73018
  }
72801
73019
  }
72802
- agent.streamFn = createOpenAIResponsesStoreWrapper(agent.streamFn);
72803
- }
72804
-
72805
- //#endregion
72806
- //#region src/config/model-profiles-builtin.ts
72807
- /**
72808
- * Built-in model profiles. Ordered from most-specific to least-specific so
72809
- * that `resolveModelProfile` can return the first match.
72810
- *
72811
- * Order matters: "ollama/" must precede "gemma" because model IDs like
72812
- * "ollama/gemma4:31b-128k" contain both substrings.
72813
- */
72814
- const BUILTIN_PROFILES = [
72815
- {
72816
- match: ["ollama/"],
72817
- label: "Ollama Local",
72818
- params: {
72819
- temperature: 1,
72820
- top_p: .95,
72821
- top_k: 64,
72822
- max_tokens: 4096
72823
- },
72824
- streaming: {
72825
- deltaThrottleMs: 50,
72826
- flushOnFinal: true,
72827
- chunkPattern: "burst"
72828
- },
72829
- filters: {
72830
- stripPatterns: [
72831
- "<\\|channel>\\w*",
72832
- "<channel\\|>",
72833
- "<start_of_turn>(?:model|user)?",
72834
- "<end_of_turn>"
72835
- ],
72836
- suppressMonologue: true,
72837
- hasStructuredThinking: false
72838
- },
72839
- promptAdditions: ["You are running locally via Ollama. Do not output raw control tokens or internal monologue. Send brief progress updates on long tasks."],
72840
- ui: {
72841
- badge: "Local",
72842
- watchdogMs: 9e5,
72843
- armWatchdogOnSend: true
72844
- }
72845
- },
72846
- {
72847
- match: ["anthropic/", "claude-"],
72848
- label: "Claude",
72849
- params: {
72850
- temperature: 1,
72851
- top_p: 1,
72852
- max_tokens: 8192
72853
- },
72854
- streaming: {
72855
- deltaThrottleMs: 150,
72856
- flushOnFinal: false,
72857
- chunkPattern: "token"
72858
- },
72859
- filters: {
72860
- stripPatterns: [],
72861
- suppressMonologue: false,
72862
- hasStructuredThinking: true
72863
- },
72864
- promptAdditions: [],
72865
- ui: {
72866
- badge: "API",
72867
- watchdogMs: 3e5,
72868
- armWatchdogOnSend: false
72869
- }
72870
- },
72871
- {
72872
- match: ["gemma", "redsand/"],
72873
- label: "Gemma 4",
72874
- params: {
72875
- temperature: 1,
72876
- top_p: .95,
72877
- top_k: 64,
72878
- max_tokens: 8192
72879
- },
72880
- streaming: {
72881
- deltaThrottleMs: 50,
72882
- flushOnFinal: true,
72883
- chunkPattern: "burst"
72884
- },
72885
- filters: {
72886
- stripPatterns: [
72887
- "<\\|channel>\\w*",
72888
- "<channel\\|>",
72889
- "<start_of_turn>(?:model|user)?",
72890
- "<end_of_turn>",
72891
- "<\\|(?:fim_prefix|fim_suffix|fim_middle)\\|>",
72892
- "^\\s*<bos>\\s*"
72893
- ],
72894
- suppressMonologue: true,
72895
- hasStructuredThinking: false
72896
- },
72897
- promptAdditions: [
72898
- "You are running as Gemma 4 via vLLM. Important behavioral rules:",
72899
- "- Never output raw control tokens, channel tags, or turn markers in your responses.",
72900
- "- Never display internal status checks, plans, or self-assessments. Your visible output should only be conversational responses and final results.",
72901
- "- When working on multi-step tasks, send a brief one-line status update every 30-60 seconds so the user knows you are active.",
72902
- "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
72903
- "- Do not use <|channel>thought or similar syntax. If you need to reason, do so silently."
72904
- ],
72905
- ui: {
72906
- badge: "CoreWeave",
72907
- watchdogMs: 6e5,
72908
- armWatchdogOnSend: true
72909
- }
72910
- }
72911
- ];
72912
-
72913
- //#endregion
72914
- //#region src/config/resolve-model-profile.ts
72915
- /** Default profile returned when no match is found. */
72916
- const FALLBACK_PROFILE = {
72917
- match: "*",
72918
- label: "Generic",
72919
- params: {
72920
- temperature: 1,
72921
- max_tokens: 4096
72922
- },
72923
- streaming: {
72924
- deltaThrottleMs: 150,
72925
- flushOnFinal: true,
72926
- chunkPattern: "burst"
72927
- },
72928
- filters: {
72929
- stripPatterns: [],
72930
- suppressMonologue: false,
72931
- hasStructuredThinking: false
72932
- },
72933
- promptAdditions: [],
72934
- ui: {
72935
- watchdogMs: 3e5,
72936
- armWatchdogOnSend: true
73020
+ if (isVllmOrGemmaProvider(provider, modelId, cfg)) {
73021
+ log$2.debug(`applying vLLM/Gemma compat wrapper for ${provider}/${modelId}`);
73022
+ agent.streamFn = createVllmCompatWrapper(agent.streamFn, merged);
72937
73023
  }
72938
- };
72939
- /**
72940
- * Resolve the active model profile for a given model ID.
72941
- *
72942
- * Resolution order:
72943
- * 1. User-defined profiles (from `models.profiles` in symi.json)
72944
- * 2. Built-in profiles ({@link BUILTIN_PROFILES})
72945
- * 3. Fallback "Generic" profile
72946
- *
72947
- * Matching is case-insensitive prefix/substring against the model ID.
72948
- */
72949
- function resolveModelProfile(modelId, userProfiles) {
72950
- const id = modelId.toLowerCase();
72951
- const allProfiles = [...userProfiles ?? [], ...BUILTIN_PROFILES];
72952
- for (const profile of allProfiles) {
72953
- const patterns = Array.isArray(profile.match) ? profile.match : [profile.match];
72954
- for (const pattern of patterns) if (id.startsWith(pattern.toLowerCase()) || id.includes(pattern.toLowerCase())) return profile;
72955
- }
72956
- return FALLBACK_PROFILE;
73024
+ agent.streamFn = createOpenAIResponsesStoreWrapper(agent.streamFn);
72957
73025
  }
72958
73026
 
72959
73027
  //#endregion
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { _t as loadSymiPlugins } from "./reply-Dlka9TPn.js";
2
+ import { _t as loadSymiPlugins } from "./reply-BU9TUp_K.js";
3
3
  import { d as getActivePluginRegistry } from "./registry-Cja8eT7G.js";
4
4
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
5
5
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-CgUHAtCo.js";
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { M as getActivePluginRegistry, o as createSubsystemLogger } from "./entry.js";
3
3
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
4
4
  import { i as loadConfig } from "./config-DHBLS1Hl.js";
5
- import { y as loadSymiPlugins } from "./subagent-registry-DLH72QgE.js";
5
+ import { y as loadSymiPlugins } from "./subagent-registry-XIFSKsi7.js";
6
6
 
7
7
  //#region src/cli/plugin-registry.ts
8
8
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -1,5 +1,5 @@
1
1
  import { p as normalizeAccountId } from "./session-key-C_0eELjb.js";
2
- import { _ as createAccountListHelpers } from "./accounts-D9zGZU5t.js";
2
+ import { _ as createAccountListHelpers } from "./accounts-Ddm33hQm.js";
3
3
 
4
4
  //#region src/signal/accounts.ts
5
5
  const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("signal");
@@ -1,8 +1,8 @@
1
1
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-C_0eELjb.js";
2
2
  import { a as resolveOAuthDir } from "./paths-DR2yt_mP.js";
3
- import { P as resolveUserPath, W as info, X as success, k as jidToE164, tt as getChildLogger } from "./registry--_pGht6S.js";
4
- import { i as defaultRuntime } from "./subsystem-Coz2AgU8.js";
5
- import { t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
3
+ import { P as resolveUserPath, W as info, X as success, k as jidToE164, tt as getChildLogger } from "./registry-D0xTnUWt.js";
4
+ import { i as defaultRuntime } from "./subsystem-B2uDN3TV.js";
5
+ import { t as formatCliCommand } from "./command-format-GKSevep4.js";
6
6
  import fs from "node:fs";
7
7
  import path from "node:path";
8
8
  import fs$1 from "node:fs/promises";
@@ -1,5 +1,5 @@
1
1
  import { p as normalizeAccountId } from "./session-key-C_0eELjb.js";
2
- import { _ as createAccountListHelpers } from "./accounts-D9zGZU5t.js";
2
+ import { _ as createAccountListHelpers } from "./accounts-Ddm33hQm.js";
3
3
 
4
4
  //#region src/imessage/accounts.ts
5
5
  const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("imessage");
@@ -1,5 +1,5 @@
1
1
  import { f as DEFAULT_ACCOUNT_ID } from "./session-key-C_0eELjb.js";
2
- import { t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
2
+ import { t as formatCliCommand } from "./command-format-GKSevep4.js";
3
3
 
4
4
  //#region src/web/active-listener.ts
5
5
  const listeners = /* @__PURE__ */ new Map();
@@ -1,7 +1,7 @@
1
1
  import { _ as isCronSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, v as isSubagentSessionKey, y as parseAgentSessionKey } from "./session-key-C_0eELjb.js";
2
2
  import { s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-DR2yt_mP.js";
3
- import { P as resolveUserPath, U as danger, W as info, Y as shouldLogVerbose, Z as warn, j as pathExists, nt as getLogger, q as logVerboseConsole } from "./registry--_pGht6S.js";
4
- import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
3
+ import { P as resolveUserPath, U as danger, W as info, Y as shouldLogVerbose, Z as warn, j as pathExists, nt as getLogger, q as logVerboseConsole } from "./registry-D0xTnUWt.js";
4
+ import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
5
5
  import fs from "node:fs";
6
6
  import path from "node:path";
7
7
  import os from "node:os";
@@ -1,4 +1,4 @@
1
- import { c as normalizeProviderId } from "./model-selection-OpU8HN50.js";
1
+ import { c as normalizeProviderId } from "./model-selection-CsbEfrS0.js";
2
2
  import { n as formatErrorMessage } from "./errors-Bv8oZiTO.js";
3
3
 
4
4
  //#region src/infra/gemini-auth.ts