@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
@@ -1,72 +1,72 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { _ as isCronSessionKey, b as resolveThreadParentSessionKey, c as normalizeMainKey, d as sanitizeAgentId, f as DEFAULT_ACCOUNT_ID, g as isAcpSessionKey, h as getSubagentDepth, l as resolveAgentIdFromSessionKey, o as classifySessionKeyShape, p as normalizeAccountId$2, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, u as resolveThreadSessionKeys, v as isSubagentSessionKey, y as parseAgentSessionKey } from "./session-key-C_0eELjb.js";
3
- import { c as logoutWeb, f as readWebSelfId, g as webAuthExists, o as getWebAuthAgeMs, r as resolveWhatsAppAccount, s as logWebSelfId } from "./accounts-D9zGZU5t.js";
3
+ import { c as logoutWeb, f as readWebSelfId, g as webAuthExists, o as getWebAuthAgeMs, r as resolveWhatsAppAccount, s as logWebSelfId } from "./accounts-Ddm33hQm.js";
4
4
  import { c as expandHomePrefix, i as resolveGatewayPort, n as resolveConfigPath, s as resolveStateDir, t as STATE_DIR, u as resolveRequiredHomeDir } from "./paths-DR2yt_mP.js";
5
5
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-D9X2phUj.js";
6
- import { A as resolveSlackBotToken, C as resolveTelegramToken, D as resolveSlackAccount, F as resolveDiscordAccount, I as normalizeDiscordToken, N as listEnabledDiscordAccounts, S as resolveTelegramAccount, _ as normalizeWhatsAppTarget, b as listTelegramAccountIds, g as isWhatsAppGroupJid, h as resolveSlackChannelId, j as createDiscordActionGate, k as resolveSlackAppToken, m as parseSlackTarget, n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin, v as createTelegramActionGate, y as listEnabledTelegramAccounts } from "./plugins-BbAvhC25.js";
6
+ import { A as resolveSlackBotToken, C as resolveTelegramToken, D as resolveSlackAccount, F as resolveDiscordAccount, I as normalizeDiscordToken, N as listEnabledDiscordAccounts, S as resolveTelegramAccount, _ as normalizeWhatsAppTarget, b as listTelegramAccountIds, g as isWhatsAppGroupJid, h as resolveSlackChannelId, j as createDiscordActionGate, k as resolveSlackAppToken, m as parseSlackTarget, n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin, v as createTelegramActionGate, y as listEnabledTelegramAccounts } from "./plugins-BNByVCIH.js";
7
7
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-ChYuW7LE.js";
8
8
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-CUNoPTKm.js";
9
- import { $ as isRich, A as normalizeE164, D as isRecord$1, E as formatTerminalLink, H as isPlainObject, I as shortenHomeInString, J as setVerbose, K as logVerbose, L as shortenHomePath, P as resolveUserPath, Q as colorize, R as sleep$1, S as clampInt, T as escapeRegExp, U as danger, V as truncateUtf16Safe, Y as shouldLogVerbose, Z as warn, _ as matchPluginCommand, a as normalizeAnyChannelId, b as CONFIG_DIR, ct as normalizeLogLevel, d as createPluginRegistry, et as theme, f as normalizePluginHttpPath, g as listPluginCommands, h as getPluginCommandSpecs, l as requireActivePluginRegistry, m as executePluginCommand, n as CHAT_CHANNEL_ORDER, o as normalizeChannelId$1, p as clearPluginCommands, r as DEFAULT_CHAT_CHANNEL, tt as getChildLogger, u as setActivePluginRegistry, ut as resolvePreferredSymiTmpDir, v as createInternalHookEvent, w as ensureDir$3, y as triggerInternalHook, z as sliceUtf16Safe } from "./registry--_pGht6S.js";
10
- import { n as retryAsync } from "./retry-ilSJqnz9.js";
11
- import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, At as fetchDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, E as listThreadsDiscord, Et as normalizeChannelSlug, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as buildChannelKeyCandidates, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as applyChannelMatchMeta, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-Bxdu6ZZy.js";
12
- import { B as getConfigOverrides, C as resolveIMessageRemoteAttachmentRoots, G as parseConfigPath, H as setConfigOverride, J as isSafeExecutableValue, K as setConfigValueAtPath, R as parseDurationMs, S as resolveIMessageAttachmentRoots, U as unsetConfigOverride, V as resetConfigOverrides, W as getConfigValueAtPath, X as resolveAgentMaxConcurrent, Y as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, Z as VERSION, _ as normalizeTelegramCommandName, a as writeConfigFile, b as isInboundPathAllowed, g as TELEGRAM_COMMAND_NAME_PATTERN, i as resolveConfigSnapshotHash, n as loadConfig, o as validateConfigObjectWithPlugins, q as unsetConfigValueAtPath, r as readConfigFileSnapshot, v as resolveTelegramCustomCommands, w as normalizeScpRemoteHost, z as validateJsonSchemaValue } from "./config-DDkdiUOR.js";
13
- import { a as clearActiveProgressLine, i as defaultRuntime, o as registerActiveProgressLine, r as createNonExitingRuntime, s as unregisterActiveProgressLine, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
14
- import { i as parseBooleanValue$1, n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
15
- import { A as getSoonestCooldownExpiry, B as resolveSymiAgentDir, C as getCustomProviderApiKey, D as resolveModelAuthMode, E as resolveEnvApiKey, F as dedupeProfileIds, G as normalizeSecretInput, H as withFileLock, I as listProfilesForProvider, J as DEFAULT_MODEL, K as resolveAuthProfileDisplayLabel, L as markAuthProfileGood, M as markAuthProfileFailure, N as markAuthProfileUsed, P as resolveApiKeyForProfile, Q as resolveShellEnvFallbackTimeoutMs, R as ensureAuthProfileStore, S as getApiKeyForModel, T as resolveApiKeyForProvider, X as getShellPathFromLoginShell, Y as DEFAULT_PROVIDER, a as isCliProvider, b as OLLAMA_NATIVE_BASE_URL, c as normalizeProviderId, d as resolveDefaultModelForAgent, f as resolveModelRefFromString, i as findNormalizedProviderValue, j as isProfileInCooldown, k as resolveAuthProfileOrder, m as resolveThinkingDefault, n as buildConfiguredAllowlistKeys, o as modelKey, p as resolveSubagentSpawnModelSelection, q as DEFAULT_CONTEXT_TOKENS, r as buildModelAliasIndex, s as normalizeModelRef$2, t as buildAllowedModelSet, u as resolveConfiguredModelRef, w as requireApiKey, x as createOllamaStreamFn, z as resolveAuthStorePathForDisplay } from "./model-selection-OpU8HN50.js";
16
- import { A as logInfo, C as resolveSymiPackageRoot, D as spawnWithFallback, E as runExec, O as logDebug, S as loadWorkspaceBootstrapFiles, T as runCommandWithTimeout, a as resolveAgentModelPrimary, b as ensureAgentWorkspace, c as resolveDefaultAgentId, d as resolveSessionAgentIds, h as DEFAULT_IDENTITY_FILENAME, i as resolveAgentModelFallbacksOverride, j as logWarn, k as logError, l as resolveEffectiveModelFallbacks, m as DEFAULT_BOOTSTRAP_FILENAME, n as resolveAgentConfig, o as resolveAgentSkillsFilter, p as DEFAULT_AGENT_WORKSPACE_DIR, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentId, x as filterBootstrapFilesForSession } from "./agent-scope-C3gMMKCU.js";
17
- import { c as normalizePluginsConfig, f as isPathInsideWithRealpath, i as safeStatSync, l as resolveEnableState, n as discoverSymiPlugins, p as isDangerousHostEnvVarName, r as isPathInside, s as applyTestPluginDefaults, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-B3ugY9-f.js";
9
+ import { $ as isRich, A as normalizeE164, D as isRecord$1, E as formatTerminalLink, H as isPlainObject, I as shortenHomeInString, J as setVerbose, K as logVerbose, L as shortenHomePath, P as resolveUserPath, Q as colorize, R as sleep$1, S as clampInt, T as escapeRegExp, U as danger, V as truncateUtf16Safe, Y as shouldLogVerbose, Z as warn, _ as matchPluginCommand, a as normalizeAnyChannelId, b as CONFIG_DIR, ct as normalizeLogLevel, d as createPluginRegistry, et as theme, f as normalizePluginHttpPath, g as listPluginCommands, h as getPluginCommandSpecs, l as requireActivePluginRegistry, m as executePluginCommand, n as CHAT_CHANNEL_ORDER, o as normalizeChannelId$1, p as clearPluginCommands, r as DEFAULT_CHAT_CHANNEL, tt as getChildLogger, u as setActivePluginRegistry, ut as resolvePreferredSymiTmpDir, v as createInternalHookEvent, w as ensureDir$3, y as triggerInternalHook, z as sliceUtf16Safe } from "./registry-D0xTnUWt.js";
10
+ import { n as retryAsync } from "./retry-CwQ_iIj8.js";
11
+ import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, At as fetchDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, E as listThreadsDiscord, Et as normalizeChannelSlug, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as buildChannelKeyCandidates, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as applyChannelMatchMeta, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-CjOBB3Vo.js";
12
+ import { B as getConfigOverrides, C as resolveIMessageRemoteAttachmentRoots, G as parseConfigPath, H as setConfigOverride, J as isSafeExecutableValue, K as setConfigValueAtPath, R as parseDurationMs, S as resolveIMessageAttachmentRoots, U as unsetConfigOverride, V as resetConfigOverrides, W as getConfigValueAtPath, X as resolveAgentMaxConcurrent, Y as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, Z as VERSION, _ as normalizeTelegramCommandName, a as writeConfigFile, b as isInboundPathAllowed, g as TELEGRAM_COMMAND_NAME_PATTERN, i as resolveConfigSnapshotHash, n as loadConfig, o as validateConfigObjectWithPlugins, q as unsetConfigValueAtPath, r as readConfigFileSnapshot, v as resolveTelegramCustomCommands, w as normalizeScpRemoteHost, z as validateJsonSchemaValue } from "./config-KlTNfkFF.js";
13
+ import { a as clearActiveProgressLine, i as defaultRuntime, o as registerActiveProgressLine, r as createNonExitingRuntime, s as unregisterActiveProgressLine, t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
14
+ import { i as parseBooleanValue$1, n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-GKSevep4.js";
15
+ import { A as getSoonestCooldownExpiry, B as resolveSymiAgentDir, C as getCustomProviderApiKey, D as resolveModelAuthMode, E as resolveEnvApiKey, F as dedupeProfileIds, G as normalizeSecretInput, H as withFileLock, I as listProfilesForProvider, J as DEFAULT_MODEL, K as resolveAuthProfileDisplayLabel, L as markAuthProfileGood, M as markAuthProfileFailure, N as markAuthProfileUsed, P as resolveApiKeyForProfile, Q as resolveShellEnvFallbackTimeoutMs, R as ensureAuthProfileStore, S as getApiKeyForModel, T as resolveApiKeyForProvider, X as getShellPathFromLoginShell, Y as DEFAULT_PROVIDER, a as isCliProvider, b as OLLAMA_NATIVE_BASE_URL, c as normalizeProviderId, d as resolveDefaultModelForAgent, f as resolveModelRefFromString, i as findNormalizedProviderValue, j as isProfileInCooldown, k as resolveAuthProfileOrder, m as resolveThinkingDefault, n as buildConfiguredAllowlistKeys, o as modelKey, p as resolveSubagentSpawnModelSelection, q as DEFAULT_CONTEXT_TOKENS, r as buildModelAliasIndex, s as normalizeModelRef$2, t as buildAllowedModelSet, u as resolveConfiguredModelRef, w as requireApiKey, x as createOllamaStreamFn, z as resolveAuthStorePathForDisplay } from "./model-selection-CsbEfrS0.js";
16
+ import { A as logInfo, C as resolveSymiPackageRoot, D as spawnWithFallback, E as runExec, O as logDebug, S as loadWorkspaceBootstrapFiles, T as runCommandWithTimeout, a as resolveAgentModelPrimary, b as ensureAgentWorkspace, c as resolveDefaultAgentId, d as resolveSessionAgentIds, h as DEFAULT_IDENTITY_FILENAME, i as resolveAgentModelFallbacksOverride, j as logWarn, k as logError, l as resolveEffectiveModelFallbacks, m as DEFAULT_BOOTSTRAP_FILENAME, n as resolveAgentConfig, o as resolveAgentSkillsFilter, p as DEFAULT_AGENT_WORKSPACE_DIR, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentId, x as filterBootstrapFilesForSession } from "./agent-scope-CYYpcO9W.js";
17
+ import { c as normalizePluginsConfig, f as isPathInsideWithRealpath, i as safeStatSync, l as resolveEnableState, n as discoverSymiPlugins, p as isDangerousHostEnvVarName, r as isPathInside, s as applyTestPluginDefaults, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-CPnHl_K3.js";
18
18
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-Bv8oZiTO.js";
19
- import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-Ji7f0gqq.js";
19
+ import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-DoC1xtDu.js";
20
20
  import { n as normalizePollInput } from "./polls-3WJMd-G-.js";
21
- 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-Bnp6LXEx.js";
21
+ 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-BlQR__MN.js";
22
22
  import { a as isBlockedHostnameOrIp, c as normalizeHostname, t as SsrFBlockedError } from "./ssrf-DKZ8eBrk.js";
23
- import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-Ckk1QfzI.js";
24
- import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-Fb3qpcis.js";
25
- import { a as chunkText, c as resolveChunkMode, d as findFenceSpanAt, f as isSafeFenceBreak, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, p as parseFenceSpans, r as chunkMarkdownText, t as chunkByNewline } from "./chunk-jvk9axTQ.js";
26
- 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-BdI5Ra9S.js";
23
+ import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-BHLNSI8U.js";
24
+ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-BJ6BHE5b.js";
25
+ import { a as chunkText, c as resolveChunkMode, d as findFenceSpanAt, f as isSafeFenceBreak, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, p as parseFenceSpans, r as chunkMarkdownText, t as chunkByNewline } from "./chunk-Dw2XBYXv.js";
26
+ 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-COTAJzHd.js";
27
27
  import { t as normalizeChatType } from "./chat-type-CEMQNtWX.js";
28
- import { n as resolveMarkdownTableMode } from "./markdown-tables-Dfaqilz6.js";
29
- import { t as convertMarkdownTables } from "./tables-DR0NmBeH.js";
30
- import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-BHbXh8Ly.js";
31
- import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-D7Lno-TE.js";
32
- import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-B7YyMnIi.js";
33
- import { a as createSlackWebClient, c as validateSlackBlocksArray, i as buildSlackBlocksFallbackText, o as resolveSlackWebClientOptions, s as parseSlackBlocksInput, t as sendMessageSlack } from "./send-BtANzsAo.js";
34
- import { $ as parseTelegramTarget, A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as readChannelAllowFromStore, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as upsertChannelPairingRequest, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, Q as isVoiceCompatibleAudio, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as addChannelAllowFromStoreEntry, X as listPairingChannels, Y as getPairingAdapter, Z as withTelegramApiErrorLogging, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, et as resolveTelegramTargetChatType, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, nt as toLocationContext, o as sendMessageTelegram, p as markdownToTelegramChunks, q as removeChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as formatLocationText, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-D6LMZJ_h.js";
35
- import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as registerUnhandledRejectionHandler, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as buildRandomTempFilePath } from "./runner-BVqnEfNe.js";
36
- import { a as resolveAckReaction, c as resolveHumanDelayConfig, i as resolveResponsePrefixTemplate, n as createReplyPrefixOptions, o as resolveAgentIdentity, s as resolveEffectiveMessagesConfig } from "./reply-prefix-BHuV5t70.js";
37
- import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-CWMflosr.js";
38
- import { c as getSkillsSnapshotVersion, d as resolvePairingPaths, f as createAsyncLock, i as resolveSkillCommandInvocation, l as generatePairingToken, m as writeJsonAtomic, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as readJsonFile, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as pruneExpiredPending } from "./skill-commands-DCNXVERE.js";
39
- import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-B1GeRYlu.js";
40
- import { M as isSecureWebSocketUrl, N as rawDataToString, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, x as ensureChromeExtensionRelayServer } from "./chrome-C7c_0I5M.js";
41
- import { A as normalizeHyphenSlug, F as resolveChannelGroupRequireMention, I as resolveChannelGroupToolsPolicy, M as normalizeStringEntriesLower, P as resolveChannelGroupPolicy, a as normalizeReasoningLevel, c as normalizeVerboseLevel, d as getChannelDock, f as listChannelDocks, i as normalizeElevatedLevel, j as normalizeStringEntries, k as normalizeAtHashSlug, l as resolveResponseUsageMode, m as normalizeSignalMessagingTarget, n as formatXHighModelHint, o as normalizeThinkLevel, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking } from "./thinking-DCNUIAHY.js";
42
- import { r as resolveIMessageAccount } from "./accounts-Dtszw3Zn.js";
43
- import { i as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BToL3HlP.js";
44
- import { C as getGlobalHookRunner, S as throwIfAborted, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as splitMediaFromOutput, 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 parseReplyDirectives, w as initializeGlobalHookRunner, x as parseInlineDirectives$1, y as MEDIA_TOKEN_RE } from "./deliver-BUns_L9e.js";
45
- import { $ as normalizeToolName, A as isTransientHttpError, At as countToolResults, B as resolveProfile, Bt as resolveChannelResetConfig, C as isContextOverflowError, Ct as deliveryContextKey, D as isRateLimitAssistantError, Dt as normalizeAccountId$3, E as isLikelyContextOverflowError, Et as normalizeSessionDeliveryFields, F as resolveSandboxContext, Ft as normalizeInputProvenance, G as resolveBrowserControlAuth, Gt as resolveFreshSessionTotalTokens, H as resolveExistingPathsWithinRoot, Ht as resolveSessionResetType, I as resolveSandboxRuntimeStatus, It as acquireSessionWriteLock, J as buildPluginToolGroups, Jt as resolveMainSessionKey, K as resolveSandboxConfigForAgent, Kt as canonicalizeMainSessionAlias, L as createBrowserRouteContext, Lt as resolveSessionLockMaxHoldFromTimeout, M as parseImageSizeError, Mt as INPUT_PROVENANCE_KIND_VALUES, N as sanitizeUserFacingText, Nt as applyInputProvenanceToUserMessage, O as isRawApiErrorPayload, Ot as archiveSessionTranscripts, P as ensureSandboxWorkspaceForSession, Pt as hasInterSessionUserProvenance, Q as mergeAlsoAllowPolicy, R as registerBrowserRoutes, Rt as resolveSessionKey, S as isCompactionFailureError, St as deliveryContextFromSession, T as isFailoverErrorMessage, Tt as normalizeDeliveryContext, U as getBridgeAuthForPort, Ut as resolveThreadFlag, V as DEFAULT_UPLOAD_DIR, Vt as resolveSessionResetPolicy, W as ensureBrowserControlAuth, Wt as DEFAULT_RESET_TRIGGERS, X as expandPolicyWithPluginGroups, Xt as resolveGroupSessionKey, Y as collectExplicitAllowlist, Yt as deriveSessionMetaPatch, Z as expandToolGroups, _ as formatRawAssistantErrorForUi, _t as updateLastRoute, a as isMessagingToolDuplicateNormalized, at as ensureSessionHeader, b as isBillingAssistantError, bt as isCacheEnabled, c as extractToolCallsFromAssistant, ct as sanitizeGoogleTurnOrdering, d as isAntigravityClaude, dt as appendAssistantMessageToSessionTranscript, et as resolveToolProfilePolicy, f as isGoogleModelApi, g as formatBillingErrorMessage, gt as recordSessionMetaFromInbound, h as formatAssistantErrorText, ht as readSessionUpdatedAt, it as buildBootstrapContextFiles, j as parseImageDimensionError, jt as extractToolCallNames, k as isTimeoutErrorMessage, kt as capArrayByJsonBytes, l as extractToolResultId, lt as extractDeliveryInfo, m as classifyFailoverReason, mt as loadSessionStore, n as validateGeminiTurns, nt as compileGlobPatterns, o as normalizeTextForComparison, ot as resolveBootstrapMaxChars, p as BILLING_ERROR_USER_MESSAGE, pt as resolveAndPersistSessionFile, q as applyOwnerOnlyToolPolicy, qt as resolveExplicitAgentSessionKey, r as pickFallbackThinkingLevel, rt as matchesAnyGlobPattern, s as sanitizeSessionMessagesImages, st as resolveBootstrapTotalMaxChars, t as validateAnthropicTurns, tt as stripPluginOnlyAllowlist, u as downgradeOpenAIReasoningBlocks, ut as parseSessionThreadInfo, v as getApiErrorPayloadFingerprint, vt as updateSessionStore, w as isFailoverAssistantError, wt as mergeDeliveryContext, x as isCloudCodeAssistFormatError, xt as resolveCacheTtlMs$1, y as isAuthAssistantError, yt as updateSessionStoreEntry, z as resolveBrowserConfig, zt as evaluateSessionFreshness } from "./pi-embedded-helpers-BveUP4hk.js";
28
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-BoYFajMu.js";
29
+ import { t as convertMarkdownTables } from "./tables-DNwXwNFa.js";
30
+ import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-C5h_YxNb.js";
31
+ import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-HJ2sfZDV.js";
32
+ import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-Paro1BjP.js";
33
+ import { a as createSlackWebClient, c as validateSlackBlocksArray, i as buildSlackBlocksFallbackText, o as resolveSlackWebClientOptions, s as parseSlackBlocksInput, t as sendMessageSlack } from "./send-B2CEnVLL.js";
34
+ import { $ as parseTelegramTarget, A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as readChannelAllowFromStore, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as upsertChannelPairingRequest, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, Q as isVoiceCompatibleAudio, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as addChannelAllowFromStoreEntry, X as listPairingChannels, Y as getPairingAdapter, Z as withTelegramApiErrorLogging, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, et as resolveTelegramTargetChatType, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, nt as toLocationContext, o as sendMessageTelegram, p as markdownToTelegramChunks, q as removeChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as formatLocationText, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-CRsR8-vO.js";
35
+ import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as registerUnhandledRejectionHandler, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as buildRandomTempFilePath } from "./runner-CGBT7tgF.js";
36
+ import { a as resolveAckReaction, c as resolveHumanDelayConfig, i as resolveResponsePrefixTemplate, n as createReplyPrefixOptions, o as resolveAgentIdentity, s as resolveEffectiveMessagesConfig } from "./reply-prefix-uxfMZW4p.js";
37
+ import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-bC3UVmVH.js";
38
+ import { c as getSkillsSnapshotVersion, d as resolvePairingPaths, f as createAsyncLock, i as resolveSkillCommandInvocation, l as generatePairingToken, m as writeJsonAtomic, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as readJsonFile, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as pruneExpiredPending } from "./skill-commands-ff_01_r3.js";
39
+ import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-_yTP47Cd.js";
40
+ import { M as isSecureWebSocketUrl, N as rawDataToString, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, x as ensureChromeExtensionRelayServer } from "./chrome-B7RdxmJ0.js";
41
+ import { A as normalizeHyphenSlug, F as resolveChannelGroupRequireMention, I as resolveChannelGroupToolsPolicy, M as normalizeStringEntriesLower, P as resolveChannelGroupPolicy, a as normalizeReasoningLevel, c as normalizeVerboseLevel, d as getChannelDock, f as listChannelDocks, i as normalizeElevatedLevel, j as normalizeStringEntries, k as normalizeAtHashSlug, l as resolveResponseUsageMode, m as normalizeSignalMessagingTarget, n as formatXHighModelHint, o as normalizeThinkLevel, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking } from "./thinking-CXqf7WTe.js";
42
+ import { r as resolveIMessageAccount } from "./accounts-s-AdhXVR.js";
43
+ import { i as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BtaOa4z_.js";
44
+ import { C as getGlobalHookRunner, S as throwIfAborted, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as splitMediaFromOutput, 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 parseReplyDirectives, w as initializeGlobalHookRunner, x as parseInlineDirectives$1, y as MEDIA_TOKEN_RE } from "./deliver-BiGlXG5k.js";
45
+ import { $ as normalizeToolName, A as isTransientHttpError, At as countToolResults, B as resolveProfile, Bt as resolveChannelResetConfig, C as isContextOverflowError, Ct as deliveryContextKey, D as isRateLimitAssistantError, Dt as normalizeAccountId$3, E as isLikelyContextOverflowError, Et as normalizeSessionDeliveryFields, F as resolveSandboxContext, Ft as normalizeInputProvenance, G as resolveBrowserControlAuth, Gt as resolveFreshSessionTotalTokens, H as resolveExistingPathsWithinRoot, Ht as resolveSessionResetType, I as resolveSandboxRuntimeStatus, It as acquireSessionWriteLock, J as buildPluginToolGroups, Jt as resolveMainSessionKey, K as resolveSandboxConfigForAgent, Kt as canonicalizeMainSessionAlias, L as createBrowserRouteContext, Lt as resolveSessionLockMaxHoldFromTimeout, M as parseImageSizeError, Mt as INPUT_PROVENANCE_KIND_VALUES, N as sanitizeUserFacingText, Nt as applyInputProvenanceToUserMessage, O as isRawApiErrorPayload, Ot as archiveSessionTranscripts, P as ensureSandboxWorkspaceForSession, Pt as hasInterSessionUserProvenance, Q as mergeAlsoAllowPolicy, R as registerBrowserRoutes, Rt as resolveSessionKey, S as isCompactionFailureError, St as deliveryContextFromSession, T as isFailoverErrorMessage, Tt as normalizeDeliveryContext, U as getBridgeAuthForPort, Ut as resolveThreadFlag, V as DEFAULT_UPLOAD_DIR, Vt as resolveSessionResetPolicy, W as ensureBrowserControlAuth, Wt as DEFAULT_RESET_TRIGGERS, X as expandPolicyWithPluginGroups, Xt as resolveGroupSessionKey, Y as collectExplicitAllowlist, Yt as deriveSessionMetaPatch, Z as expandToolGroups, _ as formatRawAssistantErrorForUi, _t as updateLastRoute, a as isMessagingToolDuplicateNormalized, at as ensureSessionHeader, b as isBillingAssistantError, bt as isCacheEnabled, c as extractToolCallsFromAssistant, ct as sanitizeGoogleTurnOrdering, d as isAntigravityClaude, dt as appendAssistantMessageToSessionTranscript, et as resolveToolProfilePolicy, f as isGoogleModelApi, g as formatBillingErrorMessage, gt as recordSessionMetaFromInbound, h as formatAssistantErrorText, ht as readSessionUpdatedAt, it as buildBootstrapContextFiles, j as parseImageDimensionError, jt as extractToolCallNames, k as isTimeoutErrorMessage, kt as capArrayByJsonBytes, l as extractToolResultId, lt as extractDeliveryInfo, m as classifyFailoverReason, mt as loadSessionStore, n as validateGeminiTurns, nt as compileGlobPatterns, o as normalizeTextForComparison, ot as resolveBootstrapMaxChars, p as BILLING_ERROR_USER_MESSAGE, pt as resolveAndPersistSessionFile, q as applyOwnerOnlyToolPolicy, qt as resolveExplicitAgentSessionKey, r as pickFallbackThinkingLevel, rt as matchesAnyGlobPattern, s as sanitizeSessionMessagesImages, st as resolveBootstrapTotalMaxChars, t as validateAnthropicTurns, tt as stripPluginOnlyAllowlist, u as downgradeOpenAIReasoningBlocks, ut as parseSessionThreadInfo, v as getApiErrorPayloadFingerprint, vt as updateSessionStore, w as isFailoverAssistantError, wt as mergeDeliveryContext, x as isCloudCodeAssistFormatError, xt as resolveCacheTtlMs$1, y as isAuthAssistantError, yt as updateSessionStoreEntry, z as resolveBrowserConfig, zt as evaluateSessionFreshness } from "./pi-embedded-helpers-CW630epe.js";
46
46
  import { n as resolveConversationLabel } from "./conversation-label-yNSj43Jt.js";
47
47
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-A0xdf3yk.js";
48
48
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-x1D4Vniz.js";
49
- 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-mFf4i4G9.js";
50
- import { i as saveMediaBuffer, r as getMediaDir } from "./store-Do3t33-c.js";
49
+ import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-05pm5Rxi.js";
50
+ import { i as saveMediaBuffer, r as getMediaDir } from "./store-BdrNabcU.js";
51
51
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-D5EzMeL_.js";
52
- import { S as minimaxUnderstandImage, _ as stripThinkingTagsFromText, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as resolveToolDisplay, x as ensureSymiModelsJson, y as stripReasoningTagsFromText } from "./image-BOYy0Ump.js";
52
+ import { S as minimaxUnderstandImage, _ as stripThinkingTagsFromText, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as resolveToolDisplay, x as ensureSymiModelsJson, y as stripReasoningTagsFromText } from "./image-CLOPx7yW.js";
53
53
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-LbcEa65a.js";
54
- import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, v as runTasksWithConcurrency } from "./sqlite-Cq_7Cg4E.js";
54
+ import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, v as runTasksWithConcurrency } from "./sqlite-CxAR5ttJ.js";
55
55
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Wd5tNeQG.js";
56
- import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-DckktAQ3.js";
57
- import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-CQFbmUMs.js";
58
- import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-BMfJIhCk.js";
56
+ import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-CBSBFuFz.js";
57
+ import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-COIaslGl.js";
58
+ import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-pYqe432l.js";
59
59
  import { t as makeProxyFetch } from "./proxy-MquBDehr.js";
60
- import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-D3JH_D2N.js";
61
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-fI39rPGa.js";
62
- import { t as getActiveWebListener } from "./active-listener-bEk__wbB.js";
60
+ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-B3CCBumQ.js";
61
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-LLcQL3w6.js";
62
+ import { t as getActiveWebListener } from "./active-listener-BXYeALs0.js";
63
63
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-CBq0jVRw.js";
64
64
  import { createRequire } from "node:module";
65
65
  import fs, { existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
66
66
  import * as path$1 from "node:path";
67
67
  import path from "node:path";
68
68
  import os, { homedir } from "node:os";
69
- import json5 from "json5";
69
+ import JSON5 from "json5";
70
70
  import { ApplicationCommandOptionType, ButtonStyle, ChannelType, PermissionFlagsBits, Routes, StickerFormatType } from "discord-api-types/v10";
71
71
  import { Button, ChannelSelectMenu, ChannelType as ChannelType$1, Client, Command, CommandWithSubcommands, Container, MentionableSelectMenu, MessageCreateListener, MessageReactionAddListener, MessageReactionRemoveListener, MessageType, Modal, PresenceUpdateListener, ReadyListener, RoleSelectMenu, Row, Separator, StringSelectMenu, TextDisplay, UserSelectMenu, serializePayload } from "@buape/carbon";
72
72
  import crypto, { X509Certificate, createHash, createHmac, randomBytes, randomUUID } from "node:crypto";
@@ -7792,7 +7792,7 @@ async function createModelSelectionState(params) {
7792
7792
  }
7793
7793
  }
7794
7794
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
7795
- const { ensureAuthProfileStore } = await import("./model-selection-OpU8HN50.js").then((n) => n.O);
7795
+ const { ensureAuthProfileStore } = await import("./model-selection-CsbEfrS0.js").then((n) => n.O);
7796
7796
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
7797
7797
  const providerKey = normalizeProviderId(provider);
7798
7798
  if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -11544,7 +11544,7 @@ async function getMemorySearchManager(params) {
11544
11544
  if (cached) return { manager: cached };
11545
11545
  }
11546
11546
  try {
11547
- const { QmdMemoryManager } = await import("./qmd-manager-mjKcdwVr.js");
11547
+ const { QmdMemoryManager } = await import("./qmd-manager-CH0XbIHf.js");
11548
11548
  const primary = await QmdMemoryManager.create({
11549
11549
  cfg: params.cfg,
11550
11550
  agentId: params.agentId,
@@ -11556,7 +11556,7 @@ async function getMemorySearchManager(params) {
11556
11556
  const wrapper = new FallbackMemoryManager({
11557
11557
  primary,
11558
11558
  fallbackFactory: async () => {
11559
- const { MemoryIndexManager } = await import("./manager-DckktAQ3.js").then((n) => n.t);
11559
+ const { MemoryIndexManager } = await import("./manager-CBSBFuFz.js").then((n) => n.t);
11560
11560
  return await MemoryIndexManager.get(params);
11561
11561
  }
11562
11562
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -11569,7 +11569,7 @@ async function getMemorySearchManager(params) {
11569
11569
  }
11570
11570
  }
11571
11571
  try {
11572
- const { MemoryIndexManager } = await import("./manager-DckktAQ3.js").then((n) => n.t);
11572
+ const { MemoryIndexManager } = await import("./manager-CBSBFuFz.js").then((n) => n.t);
11573
11573
  return { manager: await MemoryIndexManager.get(params) };
11574
11574
  } catch (err) {
11575
11575
  return {
@@ -12628,7 +12628,7 @@ function normalizeSessionKey(value) {
12628
12628
  function readSessionStore(storePath) {
12629
12629
  try {
12630
12630
  const raw = fs.readFileSync(storePath, "utf-8");
12631
- const parsed = json5.parse(raw);
12631
+ const parsed = JSON5.parse(raw);
12632
12632
  if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) return parsed;
12633
12633
  } catch {}
12634
12634
  return {};
@@ -15485,7 +15485,7 @@ async function routeReply(params) {
15485
15485
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
15486
15486
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
15487
15487
  try {
15488
- const { deliverOutboundPayloads } = await import("./deliver-BUns_L9e.js").then((n) => n.n);
15488
+ const { deliverOutboundPayloads } = await import("./deliver-BiGlXG5k.js").then((n) => n.n);
15489
15489
  return {
15490
15490
  ok: true,
15491
15491
  messageId: (await deliverOutboundPayloads({
@@ -17959,7 +17959,7 @@ async function describeStickerImage(params) {
17959
17959
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
17960
17960
  try {
17961
17961
  const buffer = await fs$1.readFile(imagePath);
17962
- const { describeImageWithModel } = await import("./image-BOYy0Ump.js").then((n) => n.n);
17962
+ const { describeImageWithModel } = await import("./image-CLOPx7yW.js").then((n) => n.n);
17963
17963
  return (await describeImageWithModel({
17964
17964
  buffer,
17965
17965
  fileName: "sticker.webp",
@@ -18370,7 +18370,7 @@ function createWhatsAppLoginTool() {
18370
18370
  force: Type.Optional(Type.Boolean())
18371
18371
  }),
18372
18372
  execute: async (_toolCallId, args) => {
18373
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DbR7odSr.js");
18373
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-BjVZSoCi.js");
18374
18374
  if ((args?.action ?? "start") === "wait") {
18375
18375
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
18376
18376
  return {
@@ -20438,7 +20438,7 @@ async function preflightDiscordMessage(params) {
20438
20438
  let preflightTranscript;
20439
20439
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
20440
20440
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
20441
- const { transcribeFirstAudio } = await import("./audio-preflight-DoQQKlxa.js");
20441
+ const { transcribeFirstAudio } = await import("./audio-preflight-VpItkiy3.js");
20442
20442
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
20443
20443
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
20444
20444
  ctx: {
@@ -27119,27 +27119,27 @@ async function runWithImageModelFallback(params) {
27119
27119
  function createDefaultDeps() {
27120
27120
  return {
27121
27121
  sendMessageWhatsApp: async (...args) => {
27122
- const { sendMessageWhatsApp } = await import("./web-D-2D6z4H.js");
27122
+ const { sendMessageWhatsApp } = await import("./web-C-5ZChok.js");
27123
27123
  return await sendMessageWhatsApp(...args);
27124
27124
  },
27125
27125
  sendMessageTelegram: async (...args) => {
27126
- const { sendMessageTelegram } = await import("./send-D6LMZJ_h.js").then((n) => n.l);
27126
+ const { sendMessageTelegram } = await import("./send-CRsR8-vO.js").then((n) => n.l);
27127
27127
  return await sendMessageTelegram(...args);
27128
27128
  },
27129
27129
  sendMessageDiscord: async (...args) => {
27130
- const { sendMessageDiscord } = await import("./send-Bxdu6ZZy.js").then((n) => n.t);
27130
+ const { sendMessageDiscord } = await import("./send-CjOBB3Vo.js").then((n) => n.t);
27131
27131
  return await sendMessageDiscord(...args);
27132
27132
  },
27133
27133
  sendMessageSlack: async (...args) => {
27134
- const { sendMessageSlack } = await import("./send-BtANzsAo.js").then((n) => n.n);
27134
+ const { sendMessageSlack } = await import("./send-B2CEnVLL.js").then((n) => n.n);
27135
27135
  return await sendMessageSlack(...args);
27136
27136
  },
27137
27137
  sendMessageSignal: async (...args) => {
27138
- const { sendMessageSignal } = await import("./send-BMfJIhCk.js").then((n) => n.i);
27138
+ const { sendMessageSignal } = await import("./send-pYqe432l.js").then((n) => n.i);
27139
27139
  return await sendMessageSignal(...args);
27140
27140
  },
27141
27141
  sendMessageIMessage: async (...args) => {
27142
- const { sendMessageIMessage } = await import("./send-BHbXh8Ly.js").then((n) => n.n);
27142
+ const { sendMessageIMessage } = await import("./send-C5h_YxNb.js").then((n) => n.n);
27143
27143
  return await sendMessageIMessage(...args);
27144
27144
  }
27145
27145
  };
@@ -37349,7 +37349,7 @@ function readSlackExternalArgMenuToken(raw) {
37349
37349
  }
37350
37350
  let commandsRegistry;
37351
37351
  async function getCommandsRegistry() {
37352
- if (!commandsRegistry) commandsRegistry = await import("./commands-registry-CQFbmUMs.js").then((n) => n.n);
37352
+ if (!commandsRegistry) commandsRegistry = await import("./commands-registry-COIaslGl.js").then((n) => n.n);
37353
37353
  return commandsRegistry;
37354
37354
  }
37355
37355
  function encodeSlackCommandArgValue(parts) {
@@ -37691,11 +37691,11 @@ async function registerSlackMonitorSlashCommands(params) {
37691
37691
  const channelName = channelInfo?.name;
37692
37692
  const roomLabel = channelName ? `#${channelName}` : `#${command.channel_id}`;
37693
37693
  const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
37694
- import("./resolve-route-D3JH_D2N.js").then((n) => n.r),
37694
+ import("./resolve-route-B3CCBumQ.js").then((n) => n.r),
37695
37695
  import("./inbound-context-D5EzMeL_.js").then((n) => n.n),
37696
37696
  Promise.resolve().then(() => provider_dispatcher_exports)
37697
37697
  ]);
37698
- const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-yNSj43Jt.js").then((n) => n.t), import("./reply-prefix-BHuV5t70.js").then((n) => n.r)]);
37698
+ const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-yNSj43Jt.js").then((n) => n.t), import("./reply-prefix-uxfMZW4p.js").then((n) => n.r)]);
37699
37699
  const route = resolveAgentRoute({
37700
37700
  cfg,
37701
37701
  channel: "slack",
@@ -37752,9 +37752,9 @@ async function registerSlackMonitorSlashCommands(params) {
37752
37752
  });
37753
37753
  const deliverSlashPayloads = async (replies) => {
37754
37754
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
37755
- import("./replies-fI39rPGa.js").then((n) => n.r),
37756
- import("./chunk-jvk9axTQ.js").then((n) => n.s),
37757
- import("./markdown-tables-Dfaqilz6.js").then((n) => n.t)
37755
+ import("./replies-LLcQL3w6.js").then((n) => n.r),
37756
+ import("./chunk-Dw2XBYXv.js").then((n) => n.s),
37757
+ import("./markdown-tables-BoYFajMu.js").then((n) => n.t)
37758
37758
  ]);
37759
37759
  await deliverSlackSlashReplies({
37760
37760
  replies,
@@ -37807,7 +37807,7 @@ async function registerSlackMonitorSlashCommands(params) {
37807
37807
  let nativeCommands = [];
37808
37808
  if (nativeEnabled) {
37809
37809
  reg = await getCommandsRegistry();
37810
- const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-DCNXVERE.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
37810
+ const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-ff_01_r3.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
37811
37811
  nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
37812
37812
  skillCommands,
37813
37813
  provider: "slack"
@@ -42588,7 +42588,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
42588
42588
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
42589
42589
  let preflightTranscript;
42590
42590
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
42591
- const { transcribeFirstAudio } = await import("./audio-preflight-DoQQKlxa.js");
42591
+ const { transcribeFirstAudio } = await import("./audio-preflight-VpItkiy3.js");
42592
42592
  preflightTranscript = await transcribeFirstAudio({
42593
42593
  ctx: {
42594
42594
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -44733,23 +44733,23 @@ let webLoginQrPromise = null;
44733
44733
  let webChannelPromise = null;
44734
44734
  let whatsappActionsPromise = null;
44735
44735
  function loadWebOutbound() {
44736
- webOutboundPromise ??= import("./outbound-rF6G8Xpr.js").then((n) => n.t);
44736
+ webOutboundPromise ??= import("./outbound-B0e8KdaR.js").then((n) => n.t);
44737
44737
  return webOutboundPromise;
44738
44738
  }
44739
44739
  function loadWebLogin() {
44740
- webLoginPromise ??= import("./login-Bh3DZPam.js").then((n) => n.n);
44740
+ webLoginPromise ??= import("./login-DQMXuxOk.js").then((n) => n.n);
44741
44741
  return webLoginPromise;
44742
44742
  }
44743
44743
  function loadWebLoginQr() {
44744
- webLoginQrPromise ??= import("./login-qr-DbR7odSr.js");
44744
+ webLoginQrPromise ??= import("./login-qr-BjVZSoCi.js");
44745
44745
  return webLoginQrPromise;
44746
44746
  }
44747
44747
  function loadWebChannel() {
44748
- webChannelPromise ??= import("./web-D-2D6z4H.js");
44748
+ webChannelPromise ??= import("./web-C-5ZChok.js");
44749
44749
  return webChannelPromise;
44750
44750
  }
44751
44751
  function loadWhatsAppActions() {
44752
- whatsappActionsPromise ??= import("./whatsapp-actions-CcBzDuL-.js");
44752
+ whatsappActionsPromise ??= import("./whatsapp-actions-DfseosPO.js");
44753
44753
  return whatsappActionsPromise;
44754
44754
  }
44755
44755
  function createPluginRuntime() {
@@ -50041,7 +50041,7 @@ async function recordLoopOutcome(args) {
50041
50041
  if (!args.ctx?.sessionKey) return;
50042
50042
  try {
50043
50043
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-Wd5tNeQG.js").then((n) => n.n);
50044
- const { recordToolCallOutcome } = await import("./tool-loop-detection-edmW8ZiF.js");
50044
+ const { recordToolCallOutcome } = await import("./tool-loop-detection-BVA6fax-.js");
50045
50045
  recordToolCallOutcome(getDiagnosticSessionState({
50046
50046
  sessionKey: args.ctx.sessionKey,
50047
50047
  sessionId: args.ctx?.agentId
@@ -50062,8 +50062,8 @@ async function runBeforeToolCallHook(args) {
50062
50062
  const params = args.params;
50063
50063
  if (args.ctx?.sessionKey) {
50064
50064
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-Wd5tNeQG.js").then((n) => n.n);
50065
- const { logToolLoopAction } = await import("./diagnostic-mFf4i4G9.js").then((n) => n.n);
50066
- const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-edmW8ZiF.js");
50065
+ const { logToolLoopAction } = await import("./diagnostic-05pm5Rxi.js").then((n) => n.n);
50066
+ const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-BVA6fax-.js");
50067
50067
  const sessionState = getDiagnosticSessionState({
50068
50068
  sessionKey: args.ctx.sessionKey,
50069
50069
  sessionId: args.ctx?.agentId
@@ -64197,6 +64197,162 @@ async function compactEmbeddedPiSession(params) {
64197
64197
  return enqueueCommandInLane(sessionLane, () => enqueueGlobal(async () => compactEmbeddedPiSessionDirect(params)));
64198
64198
  }
64199
64199
 
64200
+ //#endregion
64201
+ //#region src/config/model-profiles-builtin.ts
64202
+ /**
64203
+ * Built-in model profiles. Ordered from most-specific to least-specific so
64204
+ * that `resolveModelProfile` can return the first match.
64205
+ *
64206
+ * Order matters: "ollama/" must precede "gemma" because model IDs like
64207
+ * "ollama/gemma4:31b-128k" contain both substrings.
64208
+ */
64209
+ const BUILTIN_PROFILES = [
64210
+ {
64211
+ match: ["ollama/"],
64212
+ label: "Ollama Local",
64213
+ params: {
64214
+ temperature: 1,
64215
+ top_p: .95,
64216
+ top_k: 64,
64217
+ max_tokens: 4096,
64218
+ stop: ["<end_of_turn>", "<eos>"]
64219
+ },
64220
+ streaming: {
64221
+ deltaThrottleMs: 50,
64222
+ flushOnFinal: true,
64223
+ chunkPattern: "burst"
64224
+ },
64225
+ filters: {
64226
+ stripPatterns: [
64227
+ "<\\|channel>\\w*",
64228
+ "<channel\\|>",
64229
+ "<start_of_turn>(?:model|user)?",
64230
+ "<end_of_turn>"
64231
+ ],
64232
+ suppressMonologue: true,
64233
+ hasStructuredThinking: false
64234
+ },
64235
+ promptAdditions: ["You are running locally via Ollama. Do not output raw control tokens or internal monologue. Send brief progress updates on long tasks."],
64236
+ ui: {
64237
+ badge: "Local",
64238
+ watchdogMs: 9e5,
64239
+ armWatchdogOnSend: true
64240
+ }
64241
+ },
64242
+ {
64243
+ match: ["anthropic/", "claude-"],
64244
+ label: "Claude",
64245
+ params: {
64246
+ temperature: 1,
64247
+ top_p: 1,
64248
+ max_tokens: 8192
64249
+ },
64250
+ streaming: {
64251
+ deltaThrottleMs: 150,
64252
+ flushOnFinal: false,
64253
+ chunkPattern: "token"
64254
+ },
64255
+ filters: {
64256
+ stripPatterns: [],
64257
+ suppressMonologue: false,
64258
+ hasStructuredThinking: true
64259
+ },
64260
+ promptAdditions: [],
64261
+ ui: {
64262
+ badge: "API",
64263
+ watchdogMs: 3e5,
64264
+ armWatchdogOnSend: false
64265
+ }
64266
+ },
64267
+ {
64268
+ match: ["gemma", "redsand/"],
64269
+ label: "Gemma 4",
64270
+ params: {
64271
+ temperature: 1,
64272
+ top_p: .95,
64273
+ top_k: 64,
64274
+ max_tokens: 4096,
64275
+ stop: ["<end_of_turn>", "<eos>"]
64276
+ },
64277
+ streaming: {
64278
+ deltaThrottleMs: 50,
64279
+ flushOnFinal: true,
64280
+ chunkPattern: "burst"
64281
+ },
64282
+ filters: {
64283
+ stripPatterns: [
64284
+ "<\\|channel>\\w*",
64285
+ "<channel\\|>",
64286
+ "<start_of_turn>(?:model|user)?",
64287
+ "<end_of_turn>",
64288
+ "<\\|(?:fim_prefix|fim_suffix|fim_middle)\\|>",
64289
+ "^\\s*<bos>\\s*"
64290
+ ],
64291
+ suppressMonologue: true,
64292
+ hasStructuredThinking: false
64293
+ },
64294
+ promptAdditions: [
64295
+ "You are running as Gemma 4 via vLLM. Important behavioral rules:",
64296
+ "- Never output raw control tokens, channel tags, or turn markers in your responses.",
64297
+ "- Never display internal status checks, plans, or self-assessments. Your visible output should only be conversational responses and final results.",
64298
+ "- When working on multi-step tasks, send a brief one-line status update every 30-60 seconds so the user knows you are active.",
64299
+ "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
64300
+ "- Do not use <|channel>thought or similar syntax. If you need to reason, do so silently."
64301
+ ],
64302
+ ui: {
64303
+ badge: "CoreWeave",
64304
+ watchdogMs: 6e5,
64305
+ armWatchdogOnSend: true
64306
+ }
64307
+ }
64308
+ ];
64309
+
64310
+ //#endregion
64311
+ //#region src/config/resolve-model-profile.ts
64312
+ /** Default profile returned when no match is found. */
64313
+ const FALLBACK_PROFILE = {
64314
+ match: "*",
64315
+ label: "Generic",
64316
+ params: {
64317
+ temperature: 1,
64318
+ max_tokens: 4096
64319
+ },
64320
+ streaming: {
64321
+ deltaThrottleMs: 150,
64322
+ flushOnFinal: true,
64323
+ chunkPattern: "burst"
64324
+ },
64325
+ filters: {
64326
+ stripPatterns: [],
64327
+ suppressMonologue: false,
64328
+ hasStructuredThinking: false
64329
+ },
64330
+ promptAdditions: [],
64331
+ ui: {
64332
+ watchdogMs: 3e5,
64333
+ armWatchdogOnSend: true
64334
+ }
64335
+ };
64336
+ /**
64337
+ * Resolve the active model profile for a given model ID.
64338
+ *
64339
+ * Resolution order:
64340
+ * 1. User-defined profiles (from `models.profiles` in symi.json)
64341
+ * 2. Built-in profiles ({@link BUILTIN_PROFILES})
64342
+ * 3. Fallback "Generic" profile
64343
+ *
64344
+ * Matching is case-insensitive prefix/substring against the model ID.
64345
+ */
64346
+ function resolveModelProfile(modelId, userProfiles) {
64347
+ const id = modelId.toLowerCase();
64348
+ const allProfiles = [...userProfiles ?? [], ...BUILTIN_PROFILES];
64349
+ for (const profile of allProfiles) {
64350
+ const patterns = Array.isArray(profile.match) ? profile.match : [profile.match];
64351
+ for (const pattern of patterns) if (id.startsWith(pattern.toLowerCase()) || id.includes(pattern.toLowerCase())) return profile;
64352
+ }
64353
+ return FALLBACK_PROFILE;
64354
+ }
64355
+
64200
64356
  //#endregion
64201
64357
  //#region src/agents/pi-embedded-runner/extra-params.ts
64202
64358
  const OPENROUTER_APP_HEADERS = {
@@ -64216,7 +64372,9 @@ const OPENAI_RESPONSES_PROVIDERS = new Set(["openai"]);
64216
64372
  function resolveExtraParams(params) {
64217
64373
  const modelKey = `${params.provider}/${params.modelId}`;
64218
64374
  const modelConfig = params.cfg?.agents?.defaults?.models?.[modelKey];
64219
- return modelConfig?.params ? { ...modelConfig.params } : void 0;
64375
+ if (modelConfig?.params) return { ...modelConfig.params };
64376
+ const profile = resolveModelProfile(modelKey, params.cfg?.models?.profiles);
64377
+ if (profile.params && Object.keys(profile.params).length > 0) return { ...profile.params };
64220
64378
  }
64221
64379
  /**
64222
64380
  * Resolve cacheRetention from extraParams, supporting both new `cacheRetention`
@@ -64246,16 +64404,40 @@ function createStreamFnWithExtraParams(baseStreamFn, extraParams, provider) {
64246
64404
  if (typeof extraParams.top_p === "number") streamParams.top_p = extraParams.top_p;
64247
64405
  if (typeof extraParams.top_k === "number") streamParams.top_k = extraParams.top_k;
64248
64406
  if (typeof extraParams.repeat_penalty === "number") streamParams.repeat_penalty = extraParams.repeat_penalty;
64407
+ if (Array.isArray(extraParams.stop) && extraParams.stop.length > 0) streamParams.stop = extraParams.stop;
64249
64408
  if (extraParams.chat_template_kwargs && typeof extraParams.chat_template_kwargs === "object") streamParams.chat_template_kwargs = extraParams.chat_template_kwargs;
64250
64409
  const cacheRetention = resolveCacheRetention(extraParams, provider);
64251
64410
  if (cacheRetention) streamParams.cacheRetention = cacheRetention;
64252
64411
  if (Object.keys(streamParams).length === 0) return;
64253
64412
  log$2.debug(`creating streamFn wrapper with params: ${JSON.stringify(streamParams)}`);
64413
+ const sp = streamParams;
64414
+ const payloadOverrides = {};
64415
+ if (Array.isArray(sp.stop) && sp.stop.length > 0) payloadOverrides.stop = sp.stop;
64416
+ if (typeof sp.top_p === "number") payloadOverrides.top_p = sp.top_p;
64417
+ if (typeof sp.top_k === "number") payloadOverrides.top_k = sp.top_k;
64418
+ if (typeof sp.repeat_penalty === "number") payloadOverrides.repeat_penalty = sp.repeat_penalty;
64419
+ const hasPayloadOverrides = Object.keys(payloadOverrides).length > 0;
64254
64420
  const underlying = baseStreamFn ?? streamSimple;
64255
- const wrappedStreamFn = (model, context, options) => underlying(model, context, {
64256
- ...streamParams,
64257
- ...options
64258
- });
64421
+ const wrappedStreamFn = (model, context, options) => {
64422
+ if (hasPayloadOverrides) {
64423
+ const originalOnPayload = options?.onPayload;
64424
+ return underlying(model, context, {
64425
+ ...streamParams,
64426
+ ...options,
64427
+ onPayload: (payload) => {
64428
+ if (payload && typeof payload === "object") {
64429
+ const p = payload;
64430
+ for (const [key, value] of Object.entries(payloadOverrides)) if (p[key] === void 0) p[key] = value;
64431
+ }
64432
+ originalOnPayload?.(payload);
64433
+ }
64434
+ });
64435
+ }
64436
+ return underlying(model, context, {
64437
+ ...streamParams,
64438
+ ...options
64439
+ });
64440
+ };
64259
64441
  return wrappedStreamFn;
64260
64442
  }
64261
64443
  function isDirectOpenAIBaseUrl(baseUrl) {
@@ -64374,6 +64556,42 @@ function createZaiToolStreamWrapper(baseStreamFn, enabled) {
64374
64556
  });
64375
64557
  };
64376
64558
  }
64559
+ const GEMMA_STOP_SEQUENCES = ["<end_of_turn>", "<eos>"];
64560
+ const VLLM_GEMMA_HINTS = ["gemma", "redsand"];
64561
+ function isVllmOrGemmaProvider(provider, modelId, cfg) {
64562
+ const lower = `${provider}/${modelId}`.toLowerCase();
64563
+ if (VLLM_GEMMA_HINTS.some((h) => lower.includes(h))) return true;
64564
+ const baseUrl = ((cfg?.models?.providers?.[provider])?.baseUrl ?? "").toLowerCase();
64565
+ return baseUrl.includes("coreweave") || baseUrl.includes("vllm");
64566
+ }
64567
+ /**
64568
+ * Wrap the stream function to fix vLLM/Gemma compat issues via onPayload:
64569
+ * 1. Replace `max_completion_tokens` with `max_tokens` (vLLM ignores the former)
64570
+ * 2. Inject Gemma stop sequences if none are set
64571
+ * 3. Remove unsupported fields (store, stream_options.include_usage on older vLLM)
64572
+ */
64573
+ function createVllmCompatWrapper(baseStreamFn, extraParams) {
64574
+ const underlying = baseStreamFn ?? streamSimple;
64575
+ const configuredStop = Array.isArray(extraParams.stop) ? extraParams.stop : GEMMA_STOP_SEQUENCES;
64576
+ return (model, context, options) => {
64577
+ const originalOnPayload = options?.onPayload;
64578
+ return underlying(model, context, {
64579
+ ...options,
64580
+ onPayload: (payload) => {
64581
+ if (payload && typeof payload === "object") {
64582
+ const p = payload;
64583
+ if (p.max_completion_tokens && !p.max_tokens) {
64584
+ p.max_tokens = p.max_completion_tokens;
64585
+ delete p.max_completion_tokens;
64586
+ }
64587
+ if (!p.stop && configuredStop.length > 0) p.stop = configuredStop;
64588
+ delete p.store;
64589
+ }
64590
+ originalOnPayload?.(payload);
64591
+ }
64592
+ });
64593
+ };
64594
+ }
64377
64595
  /**
64378
64596
  * Apply extra params (like temperature) to an agent's streamFn.
64379
64597
  * Also adds OpenRouter app attribution headers when using the OpenRouter provider.
@@ -64408,161 +64626,11 @@ function applyExtraParamsToAgent(agent, cfg, provider, modelId, extraParamsOverr
64408
64626
  agent.streamFn = createZaiToolStreamWrapper(agent.streamFn, true);
64409
64627
  }
64410
64628
  }
64411
- agent.streamFn = createOpenAIResponsesStoreWrapper(agent.streamFn);
64412
- }
64413
-
64414
- //#endregion
64415
- //#region src/config/model-profiles-builtin.ts
64416
- /**
64417
- * Built-in model profiles. Ordered from most-specific to least-specific so
64418
- * that `resolveModelProfile` can return the first match.
64419
- *
64420
- * Order matters: "ollama/" must precede "gemma" because model IDs like
64421
- * "ollama/gemma4:31b-128k" contain both substrings.
64422
- */
64423
- const BUILTIN_PROFILES = [
64424
- {
64425
- match: ["ollama/"],
64426
- label: "Ollama Local",
64427
- params: {
64428
- temperature: 1,
64429
- top_p: .95,
64430
- top_k: 64,
64431
- max_tokens: 4096
64432
- },
64433
- streaming: {
64434
- deltaThrottleMs: 50,
64435
- flushOnFinal: true,
64436
- chunkPattern: "burst"
64437
- },
64438
- filters: {
64439
- stripPatterns: [
64440
- "<\\|channel>\\w*",
64441
- "<channel\\|>",
64442
- "<start_of_turn>(?:model|user)?",
64443
- "<end_of_turn>"
64444
- ],
64445
- suppressMonologue: true,
64446
- hasStructuredThinking: false
64447
- },
64448
- promptAdditions: ["You are running locally via Ollama. Do not output raw control tokens or internal monologue. Send brief progress updates on long tasks."],
64449
- ui: {
64450
- badge: "Local",
64451
- watchdogMs: 9e5,
64452
- armWatchdogOnSend: true
64453
- }
64454
- },
64455
- {
64456
- match: ["anthropic/", "claude-"],
64457
- label: "Claude",
64458
- params: {
64459
- temperature: 1,
64460
- top_p: 1,
64461
- max_tokens: 8192
64462
- },
64463
- streaming: {
64464
- deltaThrottleMs: 150,
64465
- flushOnFinal: false,
64466
- chunkPattern: "token"
64467
- },
64468
- filters: {
64469
- stripPatterns: [],
64470
- suppressMonologue: false,
64471
- hasStructuredThinking: true
64472
- },
64473
- promptAdditions: [],
64474
- ui: {
64475
- badge: "API",
64476
- watchdogMs: 3e5,
64477
- armWatchdogOnSend: false
64478
- }
64479
- },
64480
- {
64481
- match: ["gemma", "redsand/"],
64482
- label: "Gemma 4",
64483
- params: {
64484
- temperature: 1,
64485
- top_p: .95,
64486
- top_k: 64,
64487
- max_tokens: 8192
64488
- },
64489
- streaming: {
64490
- deltaThrottleMs: 50,
64491
- flushOnFinal: true,
64492
- chunkPattern: "burst"
64493
- },
64494
- filters: {
64495
- stripPatterns: [
64496
- "<\\|channel>\\w*",
64497
- "<channel\\|>",
64498
- "<start_of_turn>(?:model|user)?",
64499
- "<end_of_turn>",
64500
- "<\\|(?:fim_prefix|fim_suffix|fim_middle)\\|>",
64501
- "^\\s*<bos>\\s*"
64502
- ],
64503
- suppressMonologue: true,
64504
- hasStructuredThinking: false
64505
- },
64506
- promptAdditions: [
64507
- "You are running as Gemma 4 via vLLM. Important behavioral rules:",
64508
- "- Never output raw control tokens, channel tags, or turn markers in your responses.",
64509
- "- Never display internal status checks, plans, or self-assessments. Your visible output should only be conversational responses and final results.",
64510
- "- When working on multi-step tasks, send a brief one-line status update every 30-60 seconds so the user knows you are active.",
64511
- "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
64512
- "- Do not use <|channel>thought or similar syntax. If you need to reason, do so silently."
64513
- ],
64514
- ui: {
64515
- badge: "CoreWeave",
64516
- watchdogMs: 6e5,
64517
- armWatchdogOnSend: true
64518
- }
64519
- }
64520
- ];
64521
-
64522
- //#endregion
64523
- //#region src/config/resolve-model-profile.ts
64524
- /** Default profile returned when no match is found. */
64525
- const FALLBACK_PROFILE = {
64526
- match: "*",
64527
- label: "Generic",
64528
- params: {
64529
- temperature: 1,
64530
- max_tokens: 4096
64531
- },
64532
- streaming: {
64533
- deltaThrottleMs: 150,
64534
- flushOnFinal: true,
64535
- chunkPattern: "burst"
64536
- },
64537
- filters: {
64538
- stripPatterns: [],
64539
- suppressMonologue: false,
64540
- hasStructuredThinking: false
64541
- },
64542
- promptAdditions: [],
64543
- ui: {
64544
- watchdogMs: 3e5,
64545
- armWatchdogOnSend: true
64629
+ if (isVllmOrGemmaProvider(provider, modelId, cfg)) {
64630
+ log$2.debug(`applying vLLM/Gemma compat wrapper for ${provider}/${modelId}`);
64631
+ agent.streamFn = createVllmCompatWrapper(agent.streamFn, merged);
64546
64632
  }
64547
- };
64548
- /**
64549
- * Resolve the active model profile for a given model ID.
64550
- *
64551
- * Resolution order:
64552
- * 1. User-defined profiles (from `models.profiles` in symi.json)
64553
- * 2. Built-in profiles ({@link BUILTIN_PROFILES})
64554
- * 3. Fallback "Generic" profile
64555
- *
64556
- * Matching is case-insensitive prefix/substring against the model ID.
64557
- */
64558
- function resolveModelProfile(modelId, userProfiles) {
64559
- const id = modelId.toLowerCase();
64560
- const allProfiles = [...userProfiles ?? [], ...BUILTIN_PROFILES];
64561
- for (const profile of allProfiles) {
64562
- const patterns = Array.isArray(profile.match) ? profile.match : [profile.match];
64563
- for (const pattern of patterns) if (id.startsWith(pattern.toLowerCase()) || id.includes(pattern.toLowerCase())) return profile;
64564
- }
64565
- return FALLBACK_PROFILE;
64633
+ agent.streamFn = createOpenAIResponsesStoreWrapper(agent.streamFn);
64566
64634
  }
64567
64635
 
64568
64636
  //#endregion
@@ -77186,7 +77254,7 @@ async function deliverSessionMaintenanceWarning(params) {
77186
77254
  return;
77187
77255
  }
77188
77256
  try {
77189
- const { deliverOutboundPayloads } = await import("./deliver-BUns_L9e.js").then((n) => n.n);
77257
+ const { deliverOutboundPayloads } = await import("./deliver-BiGlXG5k.js").then((n) => n.n);
77190
77258
  await deliverOutboundPayloads({
77191
77259
  cfg: params.cfg,
77192
77260
  channel,