@fased/fased 0.1.53 → 0.1.55

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 (179) hide show
  1. package/dist/agents/authenticated-model-catalog.js +27 -0
  2. package/dist/agents/current-model-catalog.js +30 -10
  3. package/dist/agents/model-catalog-normalized.js +1 -0
  4. package/dist/agents/model-catalog-source.js +4 -4
  5. package/dist/agents/model-forward-compat.js +19 -1
  6. package/dist/agents/model-metadata.js +37 -8
  7. package/dist/agents/pi-embedded-runner/agent-messages.js +15 -0
  8. package/dist/agents/pi-embedded-runner/compact.js +2 -1
  9. package/dist/agents/pi-embedded-runner/extra-params.js +25 -0
  10. package/dist/agents/pi-embedded-runner/model.js +2 -7
  11. package/dist/agents/pi-embedded-runner/run/attempt.js +4 -5
  12. package/dist/agents/pi-embedded-runner/utils.js +1 -1
  13. package/dist/brand.js +1 -1
  14. package/dist/build-info.json +3 -3
  15. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  16. package/dist/cli/program/register.agent.js +17 -0
  17. package/dist/cli/providers-cli.js +3 -2
  18. package/dist/commands/agents.commands.models.js +63 -0
  19. package/dist/commands/agents.js +1 -0
  20. package/dist/commands/auth-choice.apply.api-providers.js +3 -8
  21. package/dist/commands/auth-choice.apply.openai.js +13 -7
  22. package/dist/commands/auth-choice.model-check.js +1 -2
  23. package/dist/commands/configure.gateway-auth.js +14 -16
  24. package/dist/commands/model-picker.js +25 -7
  25. package/dist/commands/models/list.registry.js +13 -18
  26. package/dist/commands/onboard-auth.config-core.js +1 -1
  27. package/dist/commands/onboard-auth.config-litellm.js +21 -21
  28. package/dist/commands/onboard-auth.credentials.js +0 -1
  29. package/dist/commands/onboard-auth.js +0 -1
  30. package/dist/commands/openai-codex-model-default.js +26 -4
  31. package/dist/config/defaults.js +1 -1
  32. package/dist/config/zod-schema.agent-defaults.js +4 -2
  33. package/dist/config/zod-schema.agent-runtime.js +4 -2
  34. package/dist/config/zod-schema.core.js +4 -2
  35. package/dist/control-ui/assets/{app-WIDYwhr-.js → app-D2RaTXoV.js} +1788 -1755
  36. package/dist/control-ui/assets/chat-model-ref-BZFblCeY.js +2 -0
  37. package/dist/control-ui/assets/{index-K3ysLeTN.js → index-D2nC6I-9.js} +3 -3
  38. package/dist/control-ui/assets/{providers-rQMhp1fb.js → providers-CyjiG5Jw.js} +4 -4
  39. package/dist/control-ui/index.html +1 -1
  40. package/dist/control-ui/version.json +1 -0
  41. package/dist/cron/isolated-agent/run.js +9 -3
  42. package/dist/cron/normalize.js +10 -0
  43. package/dist/gateway/control-ui.js +2 -0
  44. package/dist/gateway/protocol/schema/agents-models-skills.js +6 -2
  45. package/dist/gateway/protocol/schema/cron.js +7 -0
  46. package/dist/gateway/server-methods/models.js +8 -9
  47. package/dist/gateway/server-model-catalog.js +3 -0
  48. package/dist/infra/update-runner.js +31 -3
  49. package/dist/light-update-status.js +10 -10
  50. package/dist/memory/inventory.js +19 -2
  51. package/dist/plugin-sdk/{accounts-BZrfqJmO.js → accounts-CeRNo5Ae.js} +1 -1
  52. package/dist/plugin-sdk/{actions-7_zTh8zC.js → actions-OMRHtXPj.js} +2 -2
  53. package/dist/plugin-sdk/{active-listener-D8NVRD8J.js → active-listener-BlIkS3iR.js} +1 -1
  54. package/dist/plugin-sdk/{audio-preflight-BrVWUkoP.js → audio-preflight-B2n3a2Tj.js} +26 -26
  55. package/dist/plugin-sdk/{audit-2iRlVyQF.js → audit-Ppg6dR_b.js} +1 -1
  56. package/dist/plugin-sdk/{channel-access-BCf1rJsn.js → channel-access-af8dWWRv.js} +1 -1
  57. package/dist/plugin-sdk/{channel-access-configure-B-Z51Qsd.js → channel-access-configure-B6IAGlE0.js} +1 -1
  58. package/dist/plugin-sdk/channel-plugin-common.d.ts +3 -3
  59. package/dist/plugin-sdk/channel-plugin-common.js +4 -4
  60. package/dist/plugin-sdk/{chunk-BREC9ijl.js → chunk-CD76Byie.js} +1 -1
  61. package/dist/plugin-sdk/{chunk-items-BLRCltGL.js → chunk-items-Bu19zrYH.js} +1 -1
  62. package/dist/plugin-sdk/command-status.d.ts +2 -2
  63. package/dist/plugin-sdk/command-status.js +26 -26
  64. package/dist/plugin-sdk/{commands-registry-D3-bFLsz.js → commands-registry-DgS55tNj.js} +2 -2
  65. package/dist/plugin-sdk/{common-BlqMqEqn.js → common-CWvfeiX0.js} +1 -1
  66. package/dist/plugin-sdk/{config-442EDe7Z.js → config-CYDETqcF.js} +130 -134
  67. package/dist/plugin-sdk/{config-schema-DV0zctd2.js → config-schema-CQ4EVcQG.js} +164 -78
  68. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  69. package/dist/plugin-sdk/discord.d.ts +5 -5
  70. package/dist/plugin-sdk/discord.js +19 -19
  71. package/dist/plugin-sdk/{group-mentions-DLOOve8d.d.ts → group-mentions-BxDgHCgj.d.ts} +1 -1
  72. package/dist/plugin-sdk/{handle-action-pNaP87Dr.js → handle-action-B75UVKxF.js} +13 -13
  73. package/dist/plugin-sdk/{helpers-B994qqVW.js → helpers-BuEwju6y.js} +1 -1
  74. package/dist/plugin-sdk/{image-ops-Doq8nZQw.js → image-ops-C66HPeAZ.js} +1 -1
  75. package/dist/plugin-sdk/index.d.ts +8 -8
  76. package/dist/plugin-sdk/index.js +28 -28
  77. package/dist/plugin-sdk/{login-CK2zTIJA.js → login-Amr2DpKU.js} +3 -3
  78. package/dist/plugin-sdk/{login-qr-u8Mn1mCp.js → login-qr-DMQNEi9m.js} +3 -3
  79. package/dist/plugin-sdk/{manager-CeJNf2bH.js → manager-Bvpq49BI.js} +2 -2
  80. package/dist/plugin-sdk/{markdown-tables-DeZztrY6.js → markdown-tables-DmQ7oXOm.js} +1 -1
  81. package/dist/plugin-sdk/{media-CgUAEfhs.js → media-ByLQbEwJ.js} +2 -2
  82. package/dist/plugin-sdk/{monitor-CEtMJuFX.js → monitor-K_u6daGa.js} +30 -30
  83. package/dist/plugin-sdk/{monitor-D-APtCpn.js → monitor-S_7LrvSj.js} +31 -31
  84. package/dist/plugin-sdk/{openresponses-http-g1Iz0xB2.js → openresponses-http-BrDJUZXR.js} +26 -26
  85. package/dist/plugin-sdk/{optional-runtime-dependency-D0BdXz1C.js → optional-runtime-dependency-CbYjAC2b.js} +1 -1
  86. package/dist/plugin-sdk/{outbound-DXGuFrdx.js → outbound-BuDafBBI.js} +6 -6
  87. package/dist/plugin-sdk/{outbound-attachment-oxhGO33g.js → outbound-attachment-DmZmUqFP.js} +2 -2
  88. package/dist/plugin-sdk/{pairing-message-D3WPVg_j.d.ts → pairing-message-D0-UWGFJ.d.ts} +2 -2
  89. package/dist/plugin-sdk/{pairing-message-C29ixrvn.js → pairing-message-e4D4eBDA.js} +1 -1
  90. package/dist/plugin-sdk/{pairing-store-1kcsOWRs.js → pairing-store-T3IGoGZg.js} +2 -2
  91. package/dist/plugin-sdk/{pi-model-discovery-l-xqaEd0.js → pi-model-discovery-DvAG_Png.js} +1 -1
  92. package/dist/plugin-sdk/{pi-model-discovery-runtime-CibV8F8G.js → pi-model-discovery-runtime-NjkUgjIf.js} +2 -2
  93. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +2 -2
  94. package/dist/plugin-sdk/{pw-ai-9qEBW5-k.js → pw-ai-D7eW43DL.js} +3 -3
  95. package/dist/plugin-sdk/{replies-BX3L8fX7.js → replies-BMIPmEoP.js} +2 -2
  96. package/dist/plugin-sdk/{resolve-outbound-target-D0AK10E7.js → resolve-outbound-target-CXCqUUPV.js} +1 -1
  97. package/dist/plugin-sdk/{resolve-route-UO6XLYH3.js → resolve-route-DJN-SUSt.js} +1 -1
  98. package/dist/plugin-sdk/{retry-policy-C5N8JiHL.js → retry-policy-CY1qY6d7.js} +1 -1
  99. package/dist/plugin-sdk/{runtime-Dnzwux3G.js → runtime-CgOkQe0w.js} +3 -3
  100. package/dist/plugin-sdk/{runtime-dependency-BDDpVKBO.js → runtime-dependency-DvdRNMvs.js} +2 -2
  101. package/dist/plugin-sdk/sat-runtime.d.ts +3 -3
  102. package/dist/plugin-sdk/sat-runtime.js +5 -5
  103. package/dist/plugin-sdk/{send-bcKv8F5E.js → send-2ITqny2W.js} +8 -8
  104. package/dist/plugin-sdk/{send-DGEgo_6f.js → send-BAz22RZr.js} +5 -5
  105. package/dist/plugin-sdk/{send-DcsYRH2f.js → send-BG3RWyil.js} +7 -7
  106. package/dist/plugin-sdk/{send-D5rgCP1r.js → send-Cr-dj6S-.js} +6 -6
  107. package/dist/plugin-sdk/{send-B4XLsTL0.js → send-eTxqFFsw.js} +6 -6
  108. package/dist/plugin-sdk/{session-BoGNOlwv.js → session-C8nJmmVE.js} +2 -2
  109. package/dist/plugin-sdk/{skill-commands-Be8s4TGQ.js → skill-commands-Rm5by9S8.js} +2 -2
  110. package/dist/plugin-sdk/{slack-actions-TNnAXiUx.js → slack-actions-BNIALJTA.js} +11 -11
  111. package/dist/plugin-sdk/{slack-74qForpW.js → slack-xvIVvyEM.js} +38 -38
  112. package/dist/plugin-sdk/slack.d.ts +5 -5
  113. package/dist/plugin-sdk/slack.js +9 -9
  114. package/dist/plugin-sdk/{sticker-cache-CrYayLff.js → sticker-cache-D3oDiu2u.js} +3 -3
  115. package/dist/plugin-sdk/{tables-Ch4js2qy.js → tables-DS5L7lCA.js} +1 -1
  116. package/dist/plugin-sdk/{targets-BGfRUJPE.js → targets-D6lUomJc.js} +1 -1
  117. package/dist/plugin-sdk/{telegram-actions-BGy4AEvF.js → telegram-actions-MSFkDn0m.js} +29 -29
  118. package/dist/plugin-sdk/telegram.d.ts +5 -5
  119. package/dist/plugin-sdk/telegram.js +8 -8
  120. package/dist/plugin-sdk/{thread-bindings.lifecycle-_uQ2EF17.js → thread-bindings.lifecycle-Ry6Vcgw3.js} +3 -3
  121. package/dist/plugin-sdk/{thread-bindings.state-DUg0s_1X.js → thread-bindings.state-C0stmvNk.js} +2 -2
  122. package/dist/plugin-sdk/{tmp-fased-dir-BrbXGSkl.d.ts → tmp-fased-dir-D91GExk4.d.ts} +2 -2
  123. package/dist/plugin-sdk/{types-CBCtqtMn.d.ts → types-BzadOItY.d.ts} +1 -1
  124. package/dist/plugin-sdk/{types-DlKIHIqA.d.ts → types-DKvBJHfH.d.ts} +16 -6
  125. package/dist/plugin-sdk/{types-BJdDoTQF.d.ts → types-DVTIpopt.d.ts} +2 -2
  126. package/dist/plugin-sdk/{types.plugin-CvUiB3Kh.d.ts → types.plugin-BiHPaDTF.d.ts} +2 -1
  127. package/dist/plugin-sdk/{wallet-status-M6aK3abH.js → wallet-status-f0HagNeO.js} +31 -13
  128. package/dist/plugin-sdk/{web-r1KFR44s.js → web-DRNJxHXA.js} +31 -31
  129. package/dist/plugin-sdk/{whatsapp-actions-CID_tqAX.js → whatsapp-actions-BDXZF2R5.js} +13 -13
  130. package/dist/plugin-sdk/{whatsapp-heartbeat-Bk-aZVMa.js → whatsapp-heartbeat-CKgmwCGr.js} +2 -2
  131. package/dist/plugin-sdk/whatsapp.d.ts +5 -5
  132. package/dist/plugin-sdk/whatsapp.js +12 -12
  133. package/dist/plugin-sdk/{wsl-C_STtED7.js → wsl-Biw7Mj39.js} +3 -3
  134. package/dist/providers/huggingface-models.js +0 -30
  135. package/dist/providers/litellm-models.js +1 -1
  136. package/dist/providers/opencode-zen-shared.js +0 -1
  137. package/dist/providers/refresh.js +221 -62
  138. package/dist/providers/registry.js +31 -7
  139. package/dist/providers/runtime-model-catalog.js +181 -0
  140. package/dist/providers/vercel-ai-gateway-models.js +0 -35
  141. package/dist/shared/model-thinking.js +44 -2
  142. package/dist/wizard/onboarding.js +24 -6
  143. package/extensions/acpx/package.json +1 -1
  144. package/extensions/bluebubbles/package.json +1 -1
  145. package/extensions/copilot-proxy/package.json +1 -1
  146. package/extensions/diagnostics-otel/package.json +1 -1
  147. package/extensions/fased-federation/package.json +1 -1
  148. package/extensions/google-gemini-cli-auth/package.json +1 -1
  149. package/extensions/imessage/package.json +1 -1
  150. package/extensions/irc/package.json +1 -1
  151. package/extensions/line/package.json +1 -1
  152. package/extensions/llm-task/package.json +1 -1
  153. package/extensions/lobster/package.json +1 -1
  154. package/extensions/matrix/CHANGELOG.md +12 -0
  155. package/extensions/matrix/package.json +1 -1
  156. package/extensions/mattermost/package.json +1 -1
  157. package/extensions/memory-core/package.json +2 -2
  158. package/extensions/memory-lancedb/package.json +1 -1
  159. package/extensions/minimax-portal-auth/package.json +1 -1
  160. package/extensions/msteams/CHANGELOG.md +12 -0
  161. package/extensions/msteams/package.json +1 -1
  162. package/extensions/nextcloud-talk/package.json +1 -1
  163. package/extensions/nostr/CHANGELOG.md +12 -0
  164. package/extensions/nostr/package.json +1 -1
  165. package/extensions/open-prose/package.json +1 -1
  166. package/extensions/sat-mining/package.json +1 -1
  167. package/extensions/signal/package.json +1 -1
  168. package/extensions/synology-chat/package.json +1 -1
  169. package/extensions/tlon/package.json +1 -1
  170. package/extensions/twitch/CHANGELOG.md +12 -0
  171. package/extensions/twitch/package.json +1 -1
  172. package/extensions/voice-call/CHANGELOG.md +12 -0
  173. package/extensions/voice-call/package.json +1 -1
  174. package/extensions/zalo/CHANGELOG.md +12 -0
  175. package/extensions/zalo/package.json +1 -1
  176. package/extensions/zalouser/CHANGELOG.md +12 -0
  177. package/extensions/zalouser/package.json +1 -1
  178. package/package.json +1 -1
  179. package/dist/control-ui/assets/chat-model-ref-NT82zapt.js +0 -2
@@ -1,10 +1,10 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { $ as mergeSessionEntry, A as deliveryContextKey, An as GATEWAY_CLIENT_IDS, C as recordSessionMetaFromInbound, Cn as isGatewayMessageChannel, D as isCacheEnabled, Dn as normalizeMessageChannel, Dt as getChannelDock, E as updateSessionStoreEntry, En as listDeliverableMessageChannels, F as archiveSessionTranscripts, Fn as normalizeAnyChannelId, Ft as trimMessagingTarget, G as resolveSessionLockMaxHoldFromTimeout, Gn as getPluginCommandSpecs, H as hasInterSessionUserProvenance, Hn as resolveLeastPrivilegeOperatorScopesForMethod, I as capArrayByJsonBytes, In as normalizeChannelId$2, It as isWhatsAppGroupJid, J as resolveChannelResetConfig, Jn as createInternalHookEvent, K as resolveSessionKey$1, Kn as listPluginCommands, L as countToolResults, Ln as logMutatingAdminRpcAudit, Lt as normalizeWhatsAppTarget, M as normalizeDeliveryContext, Mn as GATEWAY_CLIENT_NAMES, N as normalizeSessionDeliveryFields, Nn as getChatChannelMeta, O as resolveCacheTtlMs$1, On as resolveGatewayMessageChannel, Ot as listChannelDocks, P as normalizeAccountId$1, Pn as listChatChannels, Pt as looksLikeHandleOrPhoneTarget, Q as DEFAULT_RESET_TRIGGERS, R as extractToolCallNames, Rn as consumeMutatingAdminRpcBudget, S as readSessionUpdatedAt, Sn as isDeliverableMessageChannel, T as updateSessionStore, Tn as isMarkdownCapableMessageChannel, U as normalizeInputProvenance, Un as clearPluginCommands, V as applyInputProvenanceToUserMessage, Vn as authorizeOperatorScopesForMethod, W as acquireSessionWriteLock, Wn as executePluginCommand, X as resolveSessionResetType, Xn as normalizePluginHttpPath, Y as resolveSessionResetPolicy, Yn as triggerInternalHook, Z as resolveThreadFlag, _ as appendAssistantMessageToSessionTranscript, _n as resolveChannelGroupRequireMention, a as createPluginRegistry, an as resolveTelegramToken, at as resolveMainSessionKey, b as resolveAndPersistSessionFile, bn as resolveGroupSessionKey, bt as parseSlackTarget, c as listAgentsForGateway, ct as listChannelPlugins, d as lookupContextTokens, dn as resolveDefaultSignalAccountId, en as createTelegramActionGate, et as resolveFreshSessionTotalTokens, f as resolveContextTokensForModel, fn as resolveSignalAccount, g as parseSessionThreadInfo, gn as resolveChannelGroupPolicy, h as extractDeliveryInfo, hn as resolveIMessageAccount, i as setActivePluginRegistry, in as resolveTelegramAccount, it as resolveExplicitAgentSessionKey, j as mergeDeliveryContext, jn as GATEWAY_CLIENT_MODES, k as deliveryContextFromSession, kn as resolveMessageChannel, l as loadCombinedSessionStoreForGateway, ln as listEnabledSignalAccounts, lt as normalizeChannelId$1, mn as resolveDefaultIMessageAccountId, n as getActivePluginRegistryKey, nn as listTelegramAccountIds, nt as canonicalizeMainSessionAlias, o as createRuntimeHelpers, on as buildChannelAccountBindings, ot as deriveSessionMetaPatch, p as ensureFasedAgentModelsJson, pn as listIMessageAccountIds, q as evaluateSessionFreshness, qn as matchPluginCommand, r as requireActivePluginRegistry, rt as resolveAgentMainSessionKey, s as classifySessionKey, st as getChannelPlugin, t as getActivePluginRegistry, tn as listEnabledTelegramAccounts, tt as setSessionRuntimeModel, u as resolveSessionModelRef, un as listSignalAccountIds, v as resolveMirroredTranscriptText, vn as resolveChannelGroupToolsPolicy, w as updateLastRoute, wn as isInternalMessageChannel, x as loadSessionStore, xn as INTERNAL_MESSAGE_CHANNEL, y as resolveSessionTranscriptFile, z as parseInlineDirectives$1, zn as ADMIN_SCOPE, zt as normalizeSignalMessagingTarget } from "./runtime-Dnzwux3G.js";
2
+ import { $ as mergeSessionEntry, A as deliveryContextKey, An as GATEWAY_CLIENT_IDS, C as recordSessionMetaFromInbound, Cn as isGatewayMessageChannel, D as isCacheEnabled, Dn as normalizeMessageChannel, Dt as getChannelDock, E as updateSessionStoreEntry, En as listDeliverableMessageChannels, F as archiveSessionTranscripts, Fn as normalizeAnyChannelId, Ft as trimMessagingTarget, G as resolveSessionLockMaxHoldFromTimeout, Gn as getPluginCommandSpecs, H as hasInterSessionUserProvenance, Hn as resolveLeastPrivilegeOperatorScopesForMethod, I as capArrayByJsonBytes, In as normalizeChannelId$2, It as isWhatsAppGroupJid, J as resolveChannelResetConfig, Jn as createInternalHookEvent, K as resolveSessionKey$1, Kn as listPluginCommands, L as countToolResults, Ln as logMutatingAdminRpcAudit, Lt as normalizeWhatsAppTarget, M as normalizeDeliveryContext, Mn as GATEWAY_CLIENT_NAMES, N as normalizeSessionDeliveryFields, Nn as getChatChannelMeta, O as resolveCacheTtlMs$1, On as resolveGatewayMessageChannel, Ot as listChannelDocks, P as normalizeAccountId$1, Pn as listChatChannels, Pt as looksLikeHandleOrPhoneTarget, Q as DEFAULT_RESET_TRIGGERS, R as extractToolCallNames, Rn as consumeMutatingAdminRpcBudget, S as readSessionUpdatedAt, Sn as isDeliverableMessageChannel, T as updateSessionStore, Tn as isMarkdownCapableMessageChannel, U as normalizeInputProvenance, Un as clearPluginCommands, V as applyInputProvenanceToUserMessage, Vn as authorizeOperatorScopesForMethod, W as acquireSessionWriteLock, Wn as executePluginCommand, X as resolveSessionResetType, Xn as normalizePluginHttpPath, Y as resolveSessionResetPolicy, Yn as triggerInternalHook, Z as resolveThreadFlag, _ as appendAssistantMessageToSessionTranscript, _n as resolveChannelGroupRequireMention, a as createPluginRegistry, an as resolveTelegramToken, at as resolveMainSessionKey, b as resolveAndPersistSessionFile, bn as resolveGroupSessionKey, bt as parseSlackTarget, c as listAgentsForGateway, ct as listChannelPlugins, d as lookupContextTokens, dn as resolveDefaultSignalAccountId, en as createTelegramActionGate, et as resolveFreshSessionTotalTokens, f as resolveContextTokensForModel, fn as resolveSignalAccount, g as parseSessionThreadInfo, gn as resolveChannelGroupPolicy, h as extractDeliveryInfo, hn as resolveIMessageAccount, i as setActivePluginRegistry, in as resolveTelegramAccount, it as resolveExplicitAgentSessionKey, j as mergeDeliveryContext, jn as GATEWAY_CLIENT_MODES, k as deliveryContextFromSession, kn as resolveMessageChannel, l as loadCombinedSessionStoreForGateway, ln as listEnabledSignalAccounts, lt as normalizeChannelId$1, mn as resolveDefaultIMessageAccountId, n as getActivePluginRegistryKey, nn as listTelegramAccountIds, nt as canonicalizeMainSessionAlias, o as createRuntimeHelpers, on as buildChannelAccountBindings, ot as deriveSessionMetaPatch, p as ensureFasedAgentModelsJson, pn as listIMessageAccountIds, q as evaluateSessionFreshness, qn as matchPluginCommand, r as requireActivePluginRegistry, rt as resolveAgentMainSessionKey, s as classifySessionKey, st as getChannelPlugin, t as getActivePluginRegistry, tn as listEnabledTelegramAccounts, tt as setSessionRuntimeModel, u as resolveSessionModelRef, un as listSignalAccountIds, v as resolveMirroredTranscriptText, vn as resolveChannelGroupToolsPolicy, w as updateLastRoute, wn as isInternalMessageChannel, x as loadSessionStore, xn as INTERNAL_MESSAGE_CHANNEL, y as resolveSessionTranscriptFile, z as parseInlineDirectives$1, zn as ADMIN_SCOPE, zt as normalizeSignalMessagingTarget } from "./runtime-CgOkQe0w.js";
3
3
  import { a as clearActiveProgressLine, c as CHANNEL_IDS, f as normalizeChatChannelId, i as defaultRuntime, l as CHAT_CHANNEL_ORDER, o as registerActiveProgressLine, r as createNonExitingRuntime, s as unregisterActiveProgressLine, t as createSubsystemLogger } from "./subsystem-DBPNbQDQ.js";
4
4
  import { S as normalizeLogLevel, d as isRich, f as theme, i as logVerbose, l as warn, o as setVerbose, p as getChildLogger, s as shouldLogVerbose, t as danger, u as colorize, w as resolvePreferredFasedAgentTmpDir } from "./globals-B_jjtAje.js";
5
5
  import { c as expandHomePrefix, i as resolveGatewayPort, s as resolveStateDir, t as STATE_DIR, u as resolveRequiredHomeDir } from "./paths-BEmvSyOV.js";
6
6
  import { C as isPlainObject, S as truncateUtf16Safe, _ as shortenHomeInString, b as sliceUtf16Safe, c as isRecord$3, d as normalizeE164, h as resolveUserPath, o as escapeRegExp, r as clampInt, t as CONFIG_DIR, v as shortenHomePath, y as sleep } from "./utils-CYk9EKoq.js";
7
- import { $ as resetConfigOverrides, $n as lookupProviderManifestModelCapability, $t as resolveSubagentSpawnModelSelection, An as ensureAuthProfileStore, At as isSafeExecutableValue, B as MODEL_APIS, Bn as loadPluginManifestRegistry, Bt as buildModelAliasIndex, C as resolveIMessageAttachmentRoots, Cn as markAuthProfileUsed, Cr as sanitizeHostExecEnv, Ct as unwrapKnownDispatchWrapperInvocation, Dn as listProfilesForProvider, Dr as isTruthyEnvValue, Dt as normalizeSafeBinProfileFixtures, En as dedupeProfileIds, Er as resolveCliName, Et as SAFE_BIN_PROFILES, Fn as withFileLock, G as isAvatarDataUrl, Gn as isPrivateNetworkBaseUrl, Gt as normalizeModelRef$1, H as parseDurationMs, Hn as isPathInside, It as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, J as isSupportedLocalAvatarExtension, Jn as coerceSecretRef, Jt as resolveConfiguredModelRef, K as isAvatarHttpUrl, Kn as normalizeSecretInput, Kt as normalizeProviderId, Mn as resolveFasedAgentAgentDir, Mr as resolveEffectiveEnableState, Nr as resolveMemorySlotDecision, On as listProvidersWithStoredCredentials, Or as parseBooleanValue$1, Ot as resolveSafeBinProfiles, Q as getConfigOverrides, Qn as listProviderBrandManifests, Qt as resolveReasoningDefault, Rn as findNormalizedProviderValue$1, Rt as buildAllowedModelSet, S as mergeInboundPathRoots, Sn as markAuthProfileFailure, Sr as isDangerousHostInheritedEnvVarName, St as isShellWrapperExecutable, T as normalizeScpRemoteHost, Tn as resolveApiKeyForProfile, Tr as formatCliCommand, Tt as splitShellArgs, Un as safeStatSync, Ut as isCliProvider, V as getBlockedNetworkModeReason, Vn as discoverFasedAgentPlugins, Vt as findNormalizedProviderValue, W as AVATAR_MAX_BYTES, Wn as resolveAuthProfileDisplayLabel, Wt as modelKey, Xn as isOpenAISignInRuntimeModelSupported, Yn as splitTrailingAuthProfile, Yt as resolveDefaultModelForAgent, Z as validateJsonSchemaValue, Zn as isStandardProviderCatalogEntry, Zt as resolveModelRefFromString, _n as normalizeProviderCatalogRows, _r as extractArchive, _t as matchAllowlist, a as readConfigFileSnapshotForWrite, an as getApiKeyForModel, ar as supportsXHighThinking, at as unsetConfigValueAtPath, b as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, bn as getSoonestCooldownExpiry, br as isDangerousHostEnvOverrideVarName, bt as extractShellWrapperInlineCommand, c as validateConfigObjectWithPlugins, cn as resolveApiKeyForProvider, cr as DEFAULT_PROVIDER, ct as isTrustedSafeBinPath, dn as CURRENT_MODEL_PROVIDER_CATALOG, dr as getPackageManifestMetadata, dt as validateSafeBinArgv, en as resolveThinkingDefault, er as formatThinkingLevels, et as setConfigOverride, fn as listCurrentModelCatalogRows, ft as analyzeShellCommand, gn as normalizeModelCatalogProviderId, gt as DEFAULT_SAFE_BINS, hn as normalizeModelCatalogModelId, ht as splitCommandChain, i as readConfigFileSnapshot, ir as resolveModelThinkingCapability, it as setConfigValueAtPath, jn as resolveAuthStorePathForDisplay, jr as normalizePluginsConfig, kn as markAuthProfileGood, kr as applyTestPluginDefaults, kt as applyMergePatch, ln as resolveEnvApiKey, lr as VERSION, lt as listWritableExplicitTrustedSafeBinDirs, mn as mergeModelCatalogRowsByAuthority, mr as formatErrorMessage, mt as isWindowsPlatform, n as loadConfig, nt as getConfigValueAtPath, o as resolveConfigSnapshotHash, on as getCustomProviderApiKey, or as DEFAULT_CONTEXT_TOKENS, ot as ensurePluginAllowlisted, pn as buildModelCatalogMergeKey, pr as extractErrorCode, pt as buildEnforcedShellCommand, q as isPathWithinRoot, r as parseConfigJson5, rr as normalizeThinkLevel, rt as parseConfigPath, s as writeConfigFile, sn as requireApiKey, sr as DEFAULT_MODEL, st as getTrustedSafeBinDirs, t as createConfigIO, tn as normalizeGoogleModelId, tr as formatXHighModelHint, tt as unsetConfigOverride, un as resolveModelAuthMode, ut as normalizeTrustedSafeBinDirs, vr as getShellPathFromLoginShell, vt as resolveAllowlistCandidatePath, w as resolveIMessageRemoteAttachmentRoots, wn as resolveProfilesUnavailableReason, wr as resolveOwnerDisplaySetting, wt as unwrapKnownShellMultiplexerInvocation, x as isInboundPathAllowed, xn as isProfileInCooldown, xt as isDispatchWrapperExecutable, yn as resolveAuthProfileOrder, yr as resolveShellEnvFallbackTimeoutMs, yt as resolveCommandResolutionFromArgv, zn as normalizeProviderId$1, zt as buildConfiguredAllowlistKeys } from "./config-442EDe7Z.js";
7
+ import { $ as resetConfigOverrides, $t as resolveSubagentSpawnModelSelection, An as markAuthProfileGood, Ar as resolveCliName, At as isSafeExecutableValue, B as MODEL_APIS, Bn as normalizeProviderId$1, Bt as buildModelAliasIndex, C as resolveIMessageAttachmentRoots, Cn as markAuthProfileFailure, Cr as resolveShellEnvFallbackTimeoutMs, Ct as unwrapKnownDispatchWrapperInvocation, Dn as dedupeProfileIds, Dr as sanitizeHostExecEnv, Dt as normalizeSafeBinProfileFixtures, En as resolveApiKeyForProfile, Er as isDangerousHostInheritedEnvVarName, Et as SAFE_BIN_PROFILES, Fr as normalizePluginsConfig, G as isAvatarDataUrl, Gn as resolveAuthProfileDisplayLabel, Gt as normalizeModelRef$1, H as parseDurationMs, Hn as discoverFasedAgentPlugins, In as withFileLock, Ir as resolveEffectiveEnableState, It as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, J as isSupportedLocalAvatarExtension, Jt as resolveConfiguredModelRef, K as isAvatarHttpUrl, Kn as isPrivateNetworkBaseUrl, Kt as normalizeProviderId, Lr as resolveMemorySlotDecision, Mn as resolveAuthStorePathForDisplay, Mr as parseBooleanValue$1, Nn as resolveFasedAgentAgentDir, Nr as applyTestPluginDefaults, On as listProfilesForProvider, Or as resolveOwnerDisplaySetting, Ot as resolveSafeBinProfiles, Q as getConfigOverrides, Qn as isOpenAISignInCatalogModel, Qt as resolveReasoningDefault, Rt as buildAllowedModelSet, S as mergeInboundPathRoots, Sn as isProfileInCooldown, Sr as getShellPathFromLoginShell, St as isShellWrapperExecutable, T as normalizeScpRemoteHost, Tn as resolveProfilesUnavailableReason, Tt as splitShellArgs, Un as isPathInside, Ut as isCliProvider, V as getBlockedNetworkModeReason, Vn as loadPluginManifestRegistry, Vt as findNormalizedProviderValue, W as AVATAR_MAX_BYTES, Wn as safeStatSync, Wt as modelKey, Xn as splitTrailingAuthProfile, Yn as coerceSecretRef, Yt as resolveDefaultModelForAgent, Z as validateJsonSchemaValue, Zn as getProviderBrandManifestForRoute, Zt as resolveModelRefFromString, _n as normalizeModelCatalogProviderId, _r as extractErrorCode, _t as matchAllowlist, a as readConfigFileSnapshotForWrite, an as getApiKeyForModel, ar as formatXHighModelHint, at as unsetConfigValueAtPath, b as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, bn as resolveAuthProfileOrder, bt as extractShellWrapperInlineCommand, c as validateConfigObjectWithPlugins, cn as resolveApiKeyForProvider, cr as resolveModelThinkingCapability, ct as isTrustedSafeBinPath, dn as CURRENT_MODEL_PROVIDER_CATALOG, dr as DEFAULT_MODEL, dt as validateSafeBinArgv, en as resolveThinkingDefault, er as isStandardProviderCatalogEntry, et as setConfigOverride, fr as DEFAULT_PROVIDER, ft as analyzeShellCommand, gn as normalizeModelCatalogModelId, gt as DEFAULT_SAFE_BINS, hn as mergeModelCatalogRowsByAuthority, hr as getPackageManifestMetadata, ht as splitCommandChain, i as readConfigFileSnapshot, ir as formatThinkingLevels, it as setConfigValueAtPath, jn as ensureAuthProfileStore, jr as isTruthyEnvValue, kn as listProvidersWithStoredCredentials, kr as formatCliCommand, kt as applyMergePatch, ln as resolveEnvApiKey, lr as supportsXHighThinking, lt as listWritableExplicitTrustedSafeBinDirs, mn as buildModelCatalogMergeKey, mt as isWindowsPlatform, n as loadConfig, nr as lookupProviderManifestModelCapability, nt as getConfigValueAtPath, o as resolveConfigSnapshotHash, on as getCustomProviderApiKey, ot as ensurePluginAllowlisted, pn as listCurrentModelCatalogRows, pr as VERSION, pt as buildEnforcedShellCommand, q as isPathWithinRoot, qn as normalizeSecretInput, r as parseConfigJson5, rr as providerModelRecommendationRank, rt as parseConfigPath, s as writeConfigFile, sn as requireApiKey, sr as normalizeThinkLevel, st as getTrustedSafeBinDirs, t as createConfigIO, tn as normalizeGoogleModelId, tr as listProviderBrandManifests, tt as unsetConfigOverride, un as resolveModelAuthMode, ur as DEFAULT_CONTEXT_TOKENS, ut as normalizeTrustedSafeBinDirs, vn as normalizeProviderCatalogRows, vr as formatErrorMessage, vt as resolveAllowlistCandidatePath, w as resolveIMessageRemoteAttachmentRoots, wn as markAuthProfileUsed, wr as isDangerousHostEnvOverrideVarName, wt as unwrapKnownShellMultiplexerInvocation, x as isInboundPathAllowed, xn as getSoonestCooldownExpiry, xr as extractArchive, xt as isDispatchWrapperExecutable, yt as resolveCommandResolutionFromArgv, zn as findNormalizedProviderValue$1, zt as buildConfiguredAllowlistKeys } from "./config-CYDETqcF.js";
8
8
  import { A as openBoundaryFileSync, C as ensureAgentWorkspace, D as resolveFasedAgentPackageRootSync, E as resolveFasedAgentPackageRoot, G as normalizeHyphenSlug, H as resolveAgentModelPrimaryValue, K as normalizeStringEntries, P as resolvePathViaExistingAncestorSync, S as DEFAULT_USER_FILENAME, T as loadWorkspaceBootstrapFiles, U as toAgentModelListLike, V as resolveAgentModelFallbackValues, W as normalizeAtHashSlug, _ as DEFAULT_BOOTSTRAP_FILENAME, a as resolveAgentDir, b as DEFAULT_SOUL_FILENAME, c as resolveAgentSkillsFilter, d as resolveEffectiveModelFallbacks, f as resolveRunModelFallbacksOverride, g as DEFAULT_AGENT_WORKSPACE_DIR, h as DEFAULT_AGENTS_FILENAME, i as resolveAgentConfig, k as openBoundaryFile, l as resolveAgentWorkspaceDir, m as resolveSessionAgentIds, n as listAgentEntries, p as resolveSessionAgentId, q as normalizeStringEntriesLower, r as listAgentIds, s as resolveAgentModelFallbacksOverride, t as hasConfiguredModelFallbacks, u as resolveDefaultAgentId, v as DEFAULT_HEARTBEAT_FILENAME, w as filterBootstrapFilesForSession, x as DEFAULT_TOOLS_FILENAME, y as DEFAULT_IDENTITY_FILENAME } from "./agent-scope-BbgPlhtw.js";
9
9
  import { t as normalizeChatType } from "./chat-type-C0osVllE.js";
10
10
  import { n as resolveAccountEntry } from "./account-helpers-Bdfws46K.js";
@@ -13,7 +13,7 @@ import { a as resolveDiscordAccount, r as listEnabledDiscordAccounts, t as creat
13
13
  import { i as resolveSlackAccount } from "./accounts-CuqIKU8X.js";
14
14
  import { i as logWarn, n as logError, r as logInfo, t as logDebug } from "./logger-BbFvCoKk.js";
15
15
  import { n as runExec, r as spawnWithFallback, t as runCommandWithTimeout } from "./exec-DQ8j4Fm3.js";
16
- import { _ as webAuthExists, c as logWebSelfId, i as resolveWhatsAppAccount, l as logoutWeb, p as readWebSelfId, s as getWebAuthAgeMs, t as hasAnyWhatsAppAuth } from "./accounts-BZrfqJmO.js";
16
+ import { _ as webAuthExists, c as logWebSelfId, i as resolveWhatsAppAccount, l as logoutWeb, p as readWebSelfId, s as getWebAuthAgeMs, t as hasAnyWhatsAppAuth } from "./accounts-CeRNo5Ae.js";
17
17
  import { S as resolveChannelEntryMatchWithFallback, b as normalizeChannelSlug, y as buildChannelKeyCandidates } from "./allow-list-BYeKk0Sy.js";
18
18
  import { n as redactSensitiveText, r as redactToolDetail, t as getDefaultRedactPatterns } from "./redact-Bm8vu_ju.js";
19
19
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-CUK__1s1.js";
@@ -21,17 +21,17 @@ import { t as runTasksWithConcurrency } from "./run-with-concurrency-BsDJWzgM.js
21
21
  import { n as retryAsync } from "./retry-DstNBhDW.js";
22
22
  import { a as resolveSessionTranscriptPath, c as resolveSessionTranscriptsDirForAgent, i as resolveSessionFilePathOptions, l as resolveStorePath, n as resolveDefaultSessionStorePath, r as resolveSessionFilePath } from "./paths-CTZ2RS_E.js";
23
23
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-BJQWUdmU.js";
24
- import { l as resolveChannelDefaultAccountId } from "./pairing-message-C29ixrvn.js";
24
+ import { l as resolveChannelDefaultAccountId } from "./pairing-message-e4D4eBDA.js";
25
25
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-l_6RdoMw.js";
26
26
  import { t as normalizeRequestInitHeadersForFetch } from "./fetch-headers-my7hgV2G.js";
27
27
  import { a as isBlockedHostnameOrIp, t as SsrFBlockedError } from "./ssrf-BZG8Ztod.js";
28
28
  import { t as fetchWithSsrFGuard } from "./fetch-guard-BuYrl6q2.js";
29
29
  import { n as redactSensitiveUrlLikeString, t as redactSensitiveUrl } from "./redact-sensitive-url-dPvnFFsK.js";
30
- import { a as formatIMessageChatTarget, c as normalizeIMessageHandle, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, l as parseIMessageTarget, o as formatIMessageTargetForLog, r as createIMessageRpcClient, s as isAllowedIMessageSender, t as sendMessageIMessage } from "./send-D5rgCP1r.js";
31
- import { A as resolveDefaultGroupPolicy, D as formatDocsLink, M as warnMissingProviderGroupPolicyFallbackOnce, b as setOnboardingChannelEnabled, c as parseOnboardingEntriesAllowingWildcard, f as promptParsedAllowFromForScopedChannel, h as resolveAccountIdForConfigure, j as resolveOpenProviderRuntimeGroupPolicy, k as resolveAllowlistProviderRuntimeGroupPolicy, l as patchChannelConfigForAccount, v as setChannelDmPolicyWithAllowFrom } from "./helpers-B994qqVW.js";
32
- import { A as resolveCronStorePath, D as formatLocationText, F as isSenderIdAllowed, I as mergeDmAllowFromSources, L as resolveGroupAllowFromSources, N as isVoiceCompatibleAudio, O as toLocationContext, P as firstDefined, c as buildTelegramGroupPeerId, j as saveCronStore, k as loadCronStore } from "./wsl-C_STtED7.js";
33
- import { a as upsertChannelPairingRequest, c as getPairingAdapter, i as removeChannelAllowFromStoreEntry, l as listPairingChannels, n as readChannelAllowFromStore, o as readJsonFileWithFallback, s as writeJsonFileAtomically, t as addChannelAllowFromStoreEntry } from "./pairing-store-1kcsOWRs.js";
34
- import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph, o as chunkTextWithMode, p as chunkTextByBreakResolver, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-BREC9ijl.js";
30
+ import { a as formatIMessageChatTarget, c as normalizeIMessageHandle, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, l as parseIMessageTarget, o as formatIMessageTargetForLog, r as createIMessageRpcClient, s as isAllowedIMessageSender, t as sendMessageIMessage } from "./send-Cr-dj6S-.js";
31
+ import { A as resolveDefaultGroupPolicy, D as formatDocsLink, M as warnMissingProviderGroupPolicyFallbackOnce, b as setOnboardingChannelEnabled, c as parseOnboardingEntriesAllowingWildcard, f as promptParsedAllowFromForScopedChannel, h as resolveAccountIdForConfigure, j as resolveOpenProviderRuntimeGroupPolicy, k as resolveAllowlistProviderRuntimeGroupPolicy, l as patchChannelConfigForAccount, v as setChannelDmPolicyWithAllowFrom } from "./helpers-BuEwju6y.js";
32
+ import { A as resolveCronStorePath, D as formatLocationText, F as isSenderIdAllowed, I as mergeDmAllowFromSources, L as resolveGroupAllowFromSources, N as isVoiceCompatibleAudio, O as toLocationContext, P as firstDefined, c as buildTelegramGroupPeerId, j as saveCronStore, k as loadCronStore } from "./wsl-Biw7Mj39.js";
33
+ import { a as upsertChannelPairingRequest, c as getPairingAdapter, i as removeChannelAllowFromStoreEntry, l as listPairingChannels, n as readChannelAllowFromStore, o as readJsonFileWithFallback, s as writeJsonFileAtomically, t as addChannelAllowFromStoreEntry } from "./pairing-store-T3IGoGZg.js";
34
+ import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph, o as chunkTextWithMode, p as chunkTextByBreakResolver, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-CD76Byie.js";
35
35
  import { c as resolveHumanDelayConfig, i as resolveResponsePrefixTemplate, n as createReplyPrefixOptions, o as resolveAgentIdentity, s as resolveEffectiveMessagesConfig } from "./reply-prefix-Bqzm6DC1.js";
36
36
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN, r as isSilentReplyPrefixText, t as HEARTBEAT_TOKEN } from "./tokens-BvtlOzVP.js";
37
37
  import { n as safeEqualSecret, o as createAsyncLock, s as readJsonFile$1 } from "./pairing-token-N_6Jbt1L.js";
@@ -40,39 +40,39 @@ import { a as logMessageProcessed, i as logLaneEnqueue, m as isDiagnosticsEnable
40
40
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-HO94DMou.js";
41
41
  import { t as redactIdentifier } from "./redact-identifier-Q3tkvxhm.js";
42
42
  import { i as resolveTelegramTargetChatType, r as parseTelegramTarget } from "./targets-BDvvnlph.js";
43
- import { t as importOptionalRuntimeDependency } from "./optional-runtime-dependency-D0BdXz1C.js";
44
- import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, m as kindFromMime, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS, u as getFileExtension, v as mediaKindFromMime } from "./image-ops-Doq8nZQw.js";
45
- import { $ as fetchSolanaRpc, A as enforceWalletDailyCap, At as resolveModel$3, B as resolveWalletUserRole, C as resolveFederationHandle, Ct as SESSION_LABEL_MAX_LENGTH, E as resolveScopedRpcUrlForWallet, H as assertValidSolanaAddress, I as upsertWalletPolicyConfig, J as resolveWalletRuntimeConfig, K as ensureWalletStateDir, L as validateWalletTxPolicy, N as resolveWalletRecurringTransferPolicy, P as resolveWalletRoleForId, Q as fetchSolanaNativeBalanceViaRpc, R as readWalletProviderRegistry, S as resolveFederationBaseUrl, St as errorShape, T as createWalletProviderAdapter, X as fetchSolanaFungibleMetadataViaRpc, Y as SOLANA_ASSET_CONSTANTS, Z as fetchSolanaMintInfoViaRpc, _ as validateSolanaSwapIntentPolicy, a as listTaskRecords, bt as validatePushTestParams, c as buildWalletProviderCapabilityMatrix, ct as callGateway, d as appendWalletAuditEntry, dt as randomIdempotencyKey, et as fetchSolanaTokenBalanceViaRpc, f as SOLANA_NATIVE_MINT, ft as resolveGatewayCredentialsFromConfig, g as validateSolanaSwapInputBalance, gt as publicKeyRawBase64UrlFromPem, h as inspectAndValidateSolanaSwapOrder, ht as loadOrCreateDeviceIdentity, i as createTaskRecord, it as findGitRoot, j as isWalletToolAllowed, jt as buildModelAliasLines, k as applyWalletPolicyConfig, l as providerSupportsChainOperation, lt as callGatewayLeastPrivilege, m as fetchJupiterSwapOrder, n as createOrExecuteWalletSend, nt as buildAttestation, o as markTaskTerminal, p as executeSolanaSwapApprovalPayload, pt as trimToUndefined$2, r as createWalletSendApprovalRequest, rt as resolveCommitHash, s as updateTaskRecord, tt as fetchSolanaWalletAssetsViaRpc, u as simulateWalletPolicy, ut as callGatewayScoped, v as inspectSerializedSolanaSwapTransaction, x as resolveAgentPublicOrigin, xt as ErrorCodes, yt as formatValidationErrors, z as resolveWalletSelection } from "./wallet-status-M6aK3abH.js";
46
- import { i as discoverModels, r as discoverAuthStorage } from "./pi-model-discovery-l-xqaEd0.js";
47
- import { A as fetchJson$1, B as DEFAULT_BROWSER_EVALUATE_ENABLED, C as normalizeCdpWsUrl, D as assertBrowserNavigationResultAllowed, E as assertBrowserNavigationAllowed, F as stopChromeExtensionRelayServer, H as DEFAULT_FASED_BROWSER_ENABLED, I as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, L as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, O as withBrowserNavigationPolicy, P as ensureChromeExtensionRelayServer, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as InvalidBrowserNavigationUrlError, U as DEFAULT_FASED_BROWSER_PROFILE_NAME, V as DEFAULT_FASED_BROWSER_COLOR, _ as stopFasedAgentChrome, a as DEFAULT_TRACE_DIR, b as captureScreenshot, d as normalizeBrowserFormField, g as resolveFasedAgentUserDataDir, h as launchFasedAgentChrome, i as DEFAULT_DOWNLOAD_DIR, j as fetchOk, k as appendCdpPath, l as resolveWritablePathWithinRoot, m as isChromeReachable, o as DEFAULT_UPLOAD_DIR, p as isChromeCdpReady, r as loadReadability, s as resolveExistingPathsWithinRoot, t as loadLinkedom, v as resolveBrowserExecutableForPlatform, w as snapshotAria, x as createTargetViaCdp, y as resolveLsofCommandSync, z as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME } from "./runtime-dependency-BDDpVKBO.js";
43
+ import { t as importOptionalRuntimeDependency } from "./optional-runtime-dependency-CbYjAC2b.js";
44
+ import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, m as kindFromMime, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS, u as getFileExtension, v as mediaKindFromMime } from "./image-ops-C66HPeAZ.js";
45
+ import { $ as fetchSolanaRpc, A as enforceWalletDailyCap, At as resolveModel$3, B as resolveWalletUserRole, C as resolveFederationHandle, Ct as SESSION_LABEL_MAX_LENGTH, E as resolveScopedRpcUrlForWallet, H as assertValidSolanaAddress, I as upsertWalletPolicyConfig, J as resolveWalletRuntimeConfig, K as ensureWalletStateDir, L as validateWalletTxPolicy, N as resolveWalletRecurringTransferPolicy, P as resolveWalletRoleForId, Q as fetchSolanaNativeBalanceViaRpc, R as readWalletProviderRegistry, S as resolveFederationBaseUrl, St as errorShape, T as createWalletProviderAdapter, X as fetchSolanaFungibleMetadataViaRpc, Y as SOLANA_ASSET_CONSTANTS, Z as fetchSolanaMintInfoViaRpc, _ as validateSolanaSwapIntentPolicy, a as listTaskRecords, bt as validatePushTestParams, c as buildWalletProviderCapabilityMatrix, ct as callGateway, d as appendWalletAuditEntry, dt as randomIdempotencyKey, et as fetchSolanaTokenBalanceViaRpc, f as SOLANA_NATIVE_MINT, ft as resolveGatewayCredentialsFromConfig, g as validateSolanaSwapInputBalance, gt as publicKeyRawBase64UrlFromPem, h as inspectAndValidateSolanaSwapOrder, ht as loadOrCreateDeviceIdentity, i as createTaskRecord, it as findGitRoot, j as isWalletToolAllowed, jt as buildModelAliasLines, k as applyWalletPolicyConfig, l as providerSupportsChainOperation, lt as callGatewayLeastPrivilege, m as fetchJupiterSwapOrder, n as createOrExecuteWalletSend, nt as buildAttestation, o as markTaskTerminal, p as executeSolanaSwapApprovalPayload, pt as trimToUndefined$2, r as createWalletSendApprovalRequest, rt as resolveCommitHash, s as updateTaskRecord, tt as fetchSolanaWalletAssetsViaRpc, u as simulateWalletPolicy, ut as callGatewayScoped, v as inspectSerializedSolanaSwapTransaction, x as resolveAgentPublicOrigin, xt as ErrorCodes, yt as formatValidationErrors, z as resolveWalletSelection } from "./wallet-status-f0HagNeO.js";
46
+ import { i as discoverModels, r as discoverAuthStorage } from "./pi-model-discovery-DvAG_Png.js";
47
+ import { A as fetchJson$1, B as DEFAULT_BROWSER_EVALUATE_ENABLED, C as normalizeCdpWsUrl, D as assertBrowserNavigationResultAllowed, E as assertBrowserNavigationAllowed, F as stopChromeExtensionRelayServer, H as DEFAULT_FASED_BROWSER_ENABLED, I as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, L as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, O as withBrowserNavigationPolicy, P as ensureChromeExtensionRelayServer, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as InvalidBrowserNavigationUrlError, U as DEFAULT_FASED_BROWSER_PROFILE_NAME, V as DEFAULT_FASED_BROWSER_COLOR, _ as stopFasedAgentChrome, a as DEFAULT_TRACE_DIR, b as captureScreenshot, d as normalizeBrowserFormField, g as resolveFasedAgentUserDataDir, h as launchFasedAgentChrome, i as DEFAULT_DOWNLOAD_DIR, j as fetchOk, k as appendCdpPath, l as resolveWritablePathWithinRoot, m as isChromeReachable, o as DEFAULT_UPLOAD_DIR, p as isChromeCdpReady, r as loadReadability, s as resolveExistingPathsWithinRoot, t as loadLinkedom, v as resolveBrowserExecutableForPlatform, w as snapshotAria, x as createTargetViaCdp, y as resolveLsofCommandSync, z as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME } from "./runtime-dependency-DvdRNMvs.js";
48
48
  import { a as isTrustedProxyAddress, n as isLoopbackAddress, o as resolveClientIp, r as isLoopbackHost, s as resolveForwardedClientIp } from "./ws-CocpWGhl.js";
49
49
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-Dg3gU-MA.js";
50
50
  import { a as writeFileWithinRoot, n as openFileWithinRoot, r as readFileWithinRoot, t as SafeOpenError } from "./fs-safe-BG-VzVkL.js";
51
- import { n as resolveMarkdownTableMode } from "./markdown-tables-DeZztrY6.js";
52
- import { a as fetchRemoteMedia, d as getDefaultMediaLocalRoots, i as MediaFetchError, n as loadWebMedia, o as readResponseWithLimit, t as getDefaultLocalRoots, u as getAgentScopedMediaLocalRoots } from "./media-CgUAEfhs.js";
53
- import { a as resolveSignalRpcContext, c as streamSignalEvents, l as markdownToSignalTextChunks, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-B4XLsTL0.js";
54
- import { a as saveMediaBuffer, i as getMediaDir, n as ensureMediaDir } from "./outbound-attachment-oxhGO33g.js";
51
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-DmQ7oXOm.js";
52
+ import { a as fetchRemoteMedia, d as getDefaultMediaLocalRoots, i as MediaFetchError, n as loadWebMedia, o as readResponseWithLimit, t as getDefaultLocalRoots, u as getAgentScopedMediaLocalRoots } from "./media-ByLQbEwJ.js";
53
+ import { a as resolveSignalRpcContext, c as streamSignalEvents, l as markdownToSignalTextChunks, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-eTxqFFsw.js";
54
+ import { a as saveMediaBuffer, i as getMediaDir, n as ensureMediaDir } from "./outbound-attachment-DmZmUqFP.js";
55
55
  import { t as resolveFetch } from "./fetch-Cu-ahkie.js";
56
- import { B as isSessionBindingError, C as resolveThreadBindingMaxAgeMs$1, F as resolveThreadBindingIntroText, G as resolveSessionStorePathForAcp, I as resolveThreadBindingThreadName, K as upsertAcpSessionMeta, L as SYSTEM_MARK, N as formatThreadBindingDurationLabel, R as prefixSystemMessage, S as resolveThreadBindingMaxAgeExpiresAt, U as listAcpSessionEntries, W as readAcpSessionEntry, b as resolveThreadBindingIdleTimeoutMs$1, c as getThreadBindingManager, x as resolveThreadBindingInactivityExpiresAt, z as getSessionBindingService } from "./thread-bindings.state-DUg0s_1X.js";
56
+ import { B as isSessionBindingError, C as resolveThreadBindingMaxAgeMs$1, F as resolveThreadBindingIntroText, G as resolveSessionStorePathForAcp, I as resolveThreadBindingThreadName, K as upsertAcpSessionMeta, L as SYSTEM_MARK, N as formatThreadBindingDurationLabel, R as prefixSystemMessage, S as resolveThreadBindingMaxAgeExpiresAt, U as listAcpSessionEntries, W as readAcpSessionEntry, b as resolveThreadBindingIdleTimeoutMs$1, c as getThreadBindingManager, x as resolveThreadBindingInactivityExpiresAt, z as getSessionBindingService } from "./thread-bindings.state-C0stmvNk.js";
57
57
  import { t as resolveMemorySearchConfig } from "./memory-search-C3C0bD2H.js";
58
- import { i as executeWithApiKeyRotation, n as parseGeminiAuth, r as collectProviderApiKeysForExecution } from "./manager-CeJNf2bH.js";
58
+ import { i as executeWithApiKeyRotation, n as parseGeminiAuth, r as collectProviderApiKeysForExecution } from "./manager-Bvpq49BI.js";
59
59
  import { c as normalizeExtraMemoryPaths, s as listMemoryFiles } from "./internal-qo16nNU1.js";
60
60
  import { i as resolveQmdScopeDenial } from "./qmd-scope-D1sSG_Rx.js";
61
- import { _ as estimateBase64DecodedBytes, a as jsonResult, d as readStringParam, f as sanitizeContentBlocksImages, g as canonicalizeBase64, h as resolveImageSanitizationLimits, i as imageResultFromFile, l as readStringArrayParam, m as sanitizeToolResultImages, n as createActionGate, p as sanitizeImageBlocks, r as imageResult, s as readNumberParam, u as readStringOrNumberParam } from "./common-BlqMqEqn.js";
62
- import { S as isCommandFlagEnabled, _ as normalizeElevatedLevel, a as listChatCommands, b as normalizeVerboseLevel, g as shouldHandleTextCommands, i as isCommandEnabled, l as maybeResolveTextAlias, m as resolveNativeCommandName, o as listChatCommandsForConfig, u as normalizeCommandBody, v as normalizeReasoningLevel, w as isRestartEnabled, x as resolveResponseUsageMode, y as normalizeUsageDisplay } from "./commands-registry-D3-bFLsz.js";
63
- import { c as getSkillsSnapshotVersion, d as resolveSkillsPromptForRun, f as syncSkillsToWorkspace, h as sanitizeEnvVars, i as resolveSkillCommandInvocation, l as buildWorkspaceSkillSnapshot, m as applySkillEnvOverridesFromSnapshot, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as applySkillEnvOverrides, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as loadWorkspaceSkillEntries } from "./skill-commands-Be8s4TGQ.js";
61
+ import { _ as estimateBase64DecodedBytes, a as jsonResult, d as readStringParam, f as sanitizeContentBlocksImages, g as canonicalizeBase64, h as resolveImageSanitizationLimits, i as imageResultFromFile, l as readStringArrayParam, m as sanitizeToolResultImages, n as createActionGate, p as sanitizeImageBlocks, r as imageResult, s as readNumberParam, u as readStringOrNumberParam } from "./common-CWvfeiX0.js";
62
+ import { S as isCommandFlagEnabled, _ as normalizeElevatedLevel, a as listChatCommands, b as normalizeVerboseLevel, g as shouldHandleTextCommands, i as isCommandEnabled, l as maybeResolveTextAlias, m as resolveNativeCommandName, o as listChatCommandsForConfig, u as normalizeCommandBody, v as normalizeReasoningLevel, w as isRestartEnabled, x as resolveResponseUsageMode, y as normalizeUsageDisplay } from "./commands-registry-DgS55tNj.js";
63
+ import { c as getSkillsSnapshotVersion, d as resolveSkillsPromptForRun, f as syncSkillsToWorkspace, h as sanitizeEnvVars, i as resolveSkillCommandInvocation, l as buildWorkspaceSkillSnapshot, m as applySkillEnvOverridesFromSnapshot, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as applySkillEnvOverrides, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as loadWorkspaceSkillEntries } from "./skill-commands-Rm5by9S8.js";
64
64
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-BFnIdcqI.js";
65
- import { t as parseDiscordTarget } from "./targets-BGfRUJPE.js";
65
+ import { t as parseDiscordTarget } from "./targets-D6lUomJc.js";
66
66
  import { a as resolveSandboxedMediaSource, i as resolveSandboxPath, n as assertSandboxPath, r as resolveSandboxInputPath, t as assertMediaNotDataUrl } from "./sandbox-paths-lj7_EVuA.js";
67
67
  import { n as normalizePollInput } from "./polls-DQrR-qT3.js";
68
68
  import { n as missingTargetError, r as unknownTargetError, t as ambiguousTargetError } from "./target-errors-C_SVKoEv.js";
69
69
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-NAePk3eL.js";
70
70
  import { n as resolveUserTimeFormat, r as resolveUserTimezone, t as formatUserTime } from "./date-time-CE3Uer3C.js";
71
- import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-UO6XLYH3.js";
72
- import { t as convertMarkdownTables } from "./tables-Ch4js2qy.js";
71
+ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-DJN-SUSt.js";
72
+ import { t as convertMarkdownTables } from "./tables-DS5L7lCA.js";
73
73
  import { n as recordChannelActivity, t as getChannelActivity } from "./channel-activity-Cg1xRoc2.js";
74
74
  import { t as withTimeout$3 } from "./with-timeout-BYrRAYFV.js";
75
- import { t as getActiveWebListener } from "./active-listener-D8NVRD8J.js";
75
+ import { t as getActiveWebListener } from "./active-listener-BlIkS3iR.js";
76
76
  import { n as asString$4, r as collectIssuesForEnabledAccounts } from "./shared-clhhbWN3.js";
77
77
  import { createRequire } from "node:module";
78
78
  import * as path$1 from "node:path";
@@ -9642,27 +9642,27 @@ function createOutboundSendDepsFromCliSource(deps) {
9642
9642
  function createDefaultDeps() {
9643
9643
  return {
9644
9644
  sendMessageWhatsApp: async (...args) => {
9645
- const { sendMessageWhatsApp } = await import("./web-r1KFR44s.js");
9645
+ const { sendMessageWhatsApp } = await import("./web-DRNJxHXA.js");
9646
9646
  return await sendMessageWhatsApp(...args);
9647
9647
  },
9648
9648
  sendMessageTelegram: async (...args) => {
9649
- const { sendMessageTelegram } = await import("./send-DcsYRH2f.js").then((n) => n.c);
9649
+ const { sendMessageTelegram } = await import("./send-BG3RWyil.js").then((n) => n.c);
9650
9650
  return await sendMessageTelegram(...args);
9651
9651
  },
9652
9652
  sendMessageDiscord: async (...args) => {
9653
- const { sendMessageDiscord } = await import("./send-bcKv8F5E.js").then((n) => n.t);
9653
+ const { sendMessageDiscord } = await import("./send-2ITqny2W.js").then((n) => n.t);
9654
9654
  return await sendMessageDiscord(...args);
9655
9655
  },
9656
9656
  sendMessageSlack: async (...args) => {
9657
- const { sendMessageSlack } = await import("./send-DGEgo_6f.js").then((n) => n.n);
9657
+ const { sendMessageSlack } = await import("./send-BAz22RZr.js").then((n) => n.n);
9658
9658
  return await sendMessageSlack(...args);
9659
9659
  },
9660
9660
  sendMessageSignal: async (...args) => {
9661
- const { sendMessageSignal } = await import("./send-B4XLsTL0.js").then((n) => n.i);
9661
+ const { sendMessageSignal } = await import("./send-eTxqFFsw.js").then((n) => n.i);
9662
9662
  return await sendMessageSignal(...args);
9663
9663
  },
9664
9664
  sendMessageIMessage: async (...args) => {
9665
- const { sendMessageIMessage } = await import("./send-D5rgCP1r.js").then((n) => n.n);
9665
+ const { sendMessageIMessage } = await import("./send-Cr-dj6S-.js").then((n) => n.n);
9666
9666
  return await sendMessageIMessage(...args);
9667
9667
  }
9668
9668
  };
@@ -11728,7 +11728,7 @@ async function getMemorySearchManager(params) {
11728
11728
  const wrapper = new FallbackMemoryManager({
11729
11729
  primary,
11730
11730
  fallbackFactory: async () => {
11731
- const { MemoryIndexManager } = await import("./manager-CeJNf2bH.js").then((n) => n.t);
11731
+ const { MemoryIndexManager } = await import("./manager-Bvpq49BI.js").then((n) => n.t);
11732
11732
  return await MemoryIndexManager.get(params);
11733
11733
  }
11734
11734
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -11741,7 +11741,7 @@ async function getMemorySearchManager(params) {
11741
11741
  }
11742
11742
  }
11743
11743
  try {
11744
- const { MemoryIndexManager } = await import("./manager-CeJNf2bH.js").then((n) => n.t);
11744
+ const { MemoryIndexManager } = await import("./manager-Bvpq49BI.js").then((n) => n.t);
11745
11745
  return { manager: await MemoryIndexManager.get(params) };
11746
11746
  } catch (err) {
11747
11747
  const message = err instanceof Error ? err.message : String(err);
@@ -21808,6 +21808,14 @@ function coerceExecutionPolicy(policy) {
21808
21808
  "none"
21809
21809
  ]);
21810
21810
  if (mode) modelPolicy.mode = mode;
21811
+ const role = coerceEnum(policy.modelPolicy.role, [
21812
+ "cheapCheck",
21813
+ "strong",
21814
+ "escalation",
21815
+ "coding",
21816
+ "summarizer"
21817
+ ]);
21818
+ if (role) modelPolicy.role = role;
21811
21819
  for (const field of [
21812
21820
  "model",
21813
21821
  "thinking",
@@ -43029,7 +43037,7 @@ function isModuleNotFoundError(err) {
43029
43037
  }
43030
43038
  async function loadPwAiModule(mode) {
43031
43039
  try {
43032
- return await import("./pw-ai-9qEBW5-k.js");
43040
+ return await import("./pw-ai-D7eW43DL.js");
43033
43041
  } catch (err) {
43034
43042
  if (mode === "soft") return null;
43035
43043
  if (isModuleNotFoundError(err)) return null;
@@ -43423,11 +43431,11 @@ function createProfileContext(opts, profile) {
43423
43431
  const userDataDir = resolveFasedAgentUserDataDir(profile.name);
43424
43432
  const profileState = getProfileState();
43425
43433
  if (await isHttpReachable(300) && !profileState.running) try {
43426
- await (await import("./pw-ai-9qEBW5-k.js")).closePlaywrightBrowserConnection();
43434
+ await (await import("./pw-ai-D7eW43DL.js")).closePlaywrightBrowserConnection();
43427
43435
  } catch {}
43428
43436
  if (profileState.running) await stopRunningBrowser();
43429
43437
  try {
43430
- await (await import("./pw-ai-9qEBW5-k.js")).closePlaywrightBrowserConnection();
43438
+ await (await import("./pw-ai-D7eW43DL.js")).closePlaywrightBrowserConnection();
43431
43439
  } catch {}
43432
43440
  if (!fs.existsSync(userDataDir)) return {
43433
43441
  moved: false,
@@ -63618,7 +63626,7 @@ const handleSessionCommand = async (params, allowTextCommands) => {
63618
63626
  reply: { text: resolveSessionCommandUsage() }
63619
63627
  };
63620
63628
  }
63621
- const { setThreadBindingIdleTimeoutBySessionKey, setThreadBindingMaxAgeBySessionKey } = await import("./thread-bindings.lifecycle-_uQ2EF17.js").then((n) => n.i);
63629
+ const { setThreadBindingIdleTimeoutBySessionKey, setThreadBindingMaxAgeBySessionKey } = await import("./thread-bindings.lifecycle-Ry6Vcgw3.js").then((n) => n.i);
63622
63630
  const updatedBindings = action === SESSION_ACTION_IDLE ? setThreadBindingIdleTimeoutBySessionKey({
63623
63631
  targetSessionKey: binding.targetSessionKey,
63624
63632
  accountId,
@@ -64844,7 +64852,7 @@ async function createModelSelectionState(params) {
64844
64852
  }
64845
64853
  }
64846
64854
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
64847
- const { ensureAuthProfileStore } = await import("./config-442EDe7Z.js").then((n) => n.vn);
64855
+ const { ensureAuthProfileStore } = await import("./config-CYDETqcF.js").then((n) => n.yn);
64848
64856
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
64849
64857
  const providerKey = normalizeProviderId(provider);
64850
64858
  if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -73787,7 +73795,7 @@ const discordMessageActions = {
73787
73795
  return null;
73788
73796
  },
73789
73797
  handleAction: async ({ action, params, cfg, accountId, requesterSenderId, toolContext, mediaLocalRoots }) => {
73790
- const { handleDiscordMessageAction } = await import("./handle-action-pNaP87Dr.js");
73798
+ const { handleDiscordMessageAction } = await import("./handle-action-B75UVKxF.js");
73791
73799
  return await handleDiscordMessageAction({
73792
73800
  action,
73793
73801
  params,
@@ -74024,7 +74032,7 @@ const signalMessageActions = {
74024
74032
  //#region src/channels/plugins/actions/telegram.ts
74025
74033
  const providerId = "telegram";
74026
74034
  async function loadTelegramActionHandler() {
74027
- const { handleTelegramAction } = await import("./telegram-actions-BGy4AEvF.js");
74035
+ const { handleTelegramAction } = await import("./telegram-actions-MSFkDn0m.js");
74028
74036
  return handleTelegramAction;
74029
74037
  }
74030
74038
  function readTelegramSendParams(params) {
@@ -74194,7 +74202,7 @@ function createWhatsAppLoginTool() {
74194
74202
  force: Type.Optional(Type.Boolean())
74195
74203
  }),
74196
74204
  execute: async (_toolCallId, args) => {
74197
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-u8Mn1mCp.js");
74205
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DMQNEi9m.js");
74198
74206
  if ((args?.action ?? "start") === "wait") {
74199
74207
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
74200
74208
  return {
@@ -74293,6 +74301,10 @@ async function buildMemoryInventory(params) {
74293
74301
  const memoryDir = path.join(workspaceDir, "memory");
74294
74302
  const hookConfig = resolveHookConfig(cfg, "session-memory");
74295
74303
  const activePlugin = resolveActiveMemoryPlugin(cfg, providerStatus);
74304
+ const providerCustom = providerStatus?.custom;
74305
+ const searchMode = typeof providerCustom?.searchMode === "string" ? providerCustom.searchMode : void 0;
74306
+ const semanticReason = typeof providerCustom?.providerUnavailableReason === "string" ? providerCustom.providerUnavailableReason : providerStatus?.vector?.loadError;
74307
+ const semanticState = !providerStatus?.vector?.enabled ? "disabled" : providerStatus.vector.available === true ? "ready" : searchMode === "fts-only" && providerStatus.provider === "none" ? "not-configured" : "unavailable";
74296
74308
  const workspaceStatus = await summarizePath(workspaceDir, roots);
74297
74309
  const memoryRootSpecs = [
74298
74310
  {
@@ -74353,6 +74365,11 @@ async function buildMemoryInventory(params) {
74353
74365
  ...providerStatus?.fts ? { fts: providerStatus.fts } : {},
74354
74366
  ...providerStatus?.vector ? { vector: providerStatus.vector } : {},
74355
74367
  ...providerStatus?.fallback ? { fallback: providerStatus.fallback } : {},
74368
+ ...searchMode ? { searchMode } : {},
74369
+ ...providerStatus ? { semantic: {
74370
+ state: semanticState,
74371
+ ...semanticReason ? { reason: semanticReason } : {}
74372
+ } } : {},
74356
74373
  ...providerStatus?.dbPath ? { db: await summarizePath(providerStatus.dbPath, roots) } : {},
74357
74374
  ...providerStatus?.sources ? { sources: providerStatus.sources } : {},
74358
74375
  ...providerStatus?.sourceCounts ? { sourceCounts: providerStatus.sourceCounts } : {},
@@ -74414,11 +74431,17 @@ function validateMemoryInventory(inventory) {
74414
74431
  area: "backend",
74415
74432
  message: "The memory index is stale and needs a rebuild before recall is current."
74416
74433
  });
74417
- if (inventory.backend.vector?.enabled && inventory.backend.vector.available !== true) push({
74434
+ if (inventory.backend.semantic?.state === "unavailable") push({
74418
74435
  severity: "warn",
74419
74436
  code: "backend.semantic.unavailable",
74420
74437
  area: "backend",
74421
- message: inventory.backend.vector.loadError ?? "Semantic recall is configured but vector search is not available."
74438
+ message: inventory.backend.semantic.reason ?? "Semantic recall is configured but vector search is not available."
74439
+ });
74440
+ if (inventory.backend.semantic?.state === "not-configured") push({
74441
+ severity: "info",
74442
+ code: "backend.semantic.not-configured",
74443
+ area: "backend",
74444
+ message: "Keyword recall is available. Configure an embedding provider to add semantic recall."
74422
74445
  });
74423
74446
  if (inventory.backend.configured !== inventory.backend.active && inventory.backend.active) push({
74424
74447
  severity: "warn",
@@ -76505,7 +76528,7 @@ function buildPairingReply(params) {
76505
76528
 
76506
76529
  //#endregion
76507
76530
  //#region src/brand.ts
76508
- const FASED_PRODUCT_VERSION = "0.1.53";
76531
+ const FASED_PRODUCT_VERSION = "0.1.55";
76509
76532
  const FASED_DISPLAY_VERSION = `v${FASED_PRODUCT_VERSION}`;
76510
76533
 
76511
76534
  //#endregion
@@ -80384,7 +80407,7 @@ const handleWhatsAppActionLazy = async (...args) => {
80384
80407
  return handleWhatsAppAction(...args);
80385
80408
  };
80386
80409
  const auditDiscordChannelPermissionsLazy = async (...args) => {
80387
- const { auditDiscordChannelPermissions } = await import("./audit-2iRlVyQF.js").then((n) => n.t);
80410
+ const { auditDiscordChannelPermissions } = await import("./audit-Ppg6dR_b.js").then((n) => n.t);
80388
80411
  return auditDiscordChannelPermissions(...args);
80389
80412
  };
80390
80413
  const listDiscordDirectoryGroupsLiveLazy = async (...args) => {
@@ -80408,15 +80431,15 @@ const resolveDiscordUserAllowlistLazy = async (...args) => {
80408
80431
  return resolveDiscordUserAllowlist(...args);
80409
80432
  };
80410
80433
  const sendMessageDiscordLazy = async (...args) => {
80411
- const { sendMessageDiscord } = await import("./send-bcKv8F5E.js").then((n) => n.t);
80434
+ const { sendMessageDiscord } = await import("./send-2ITqny2W.js").then((n) => n.t);
80412
80435
  return sendMessageDiscord(...args);
80413
80436
  };
80414
80437
  const sendPollDiscordLazy = async (...args) => {
80415
- const { sendPollDiscord } = await import("./send-bcKv8F5E.js").then((n) => n.t);
80438
+ const { sendPollDiscord } = await import("./send-2ITqny2W.js").then((n) => n.t);
80416
80439
  return sendPollDiscord(...args);
80417
80440
  };
80418
80441
  const monitorDiscordProviderLazy = async (...args) => {
80419
- const { monitorDiscordProvider } = await import("./monitor-D-APtCpn.js");
80442
+ const { monitorDiscordProvider } = await import("./monitor-S_7LrvSj.js");
80420
80443
  return monitorDiscordProvider(...args);
80421
80444
  };
80422
80445
  const listSlackDirectoryGroupsLiveLazy = async (...args) => {
@@ -80440,15 +80463,15 @@ const resolveSlackUserAllowlistLazy = async (...args) => {
80440
80463
  return resolveSlackUserAllowlist(...args);
80441
80464
  };
80442
80465
  const sendMessageSlackLazy = async (...args) => {
80443
- const { sendMessageSlack } = await import("./send-DGEgo_6f.js").then((n) => n.n);
80466
+ const { sendMessageSlack } = await import("./send-BAz22RZr.js").then((n) => n.n);
80444
80467
  return sendMessageSlack(...args);
80445
80468
  };
80446
80469
  const monitorSlackProviderLazy = async (...args) => {
80447
- const { monitorSlackProvider } = await import("./slack-74qForpW.js");
80470
+ const { monitorSlackProvider } = await import("./slack-xvIVvyEM.js");
80448
80471
  return monitorSlackProvider(...args);
80449
80472
  };
80450
80473
  const handleSlackActionLazy = async (...args) => {
80451
- const { handleSlackAction } = await import("./slack-actions-TNnAXiUx.js");
80474
+ const { handleSlackAction } = await import("./slack-actions-BNIALJTA.js");
80452
80475
  return handleSlackAction(...args);
80453
80476
  };
80454
80477
  const probeTelegramLazy = async (...args) => {
@@ -80456,15 +80479,15 @@ const probeTelegramLazy = async (...args) => {
80456
80479
  return probeTelegram(...args);
80457
80480
  };
80458
80481
  const sendMessageTelegramLazy = async (...args) => {
80459
- const { sendMessageTelegram } = await import("./send-DcsYRH2f.js").then((n) => n.c);
80482
+ const { sendMessageTelegram } = await import("./send-BG3RWyil.js").then((n) => n.c);
80460
80483
  return sendMessageTelegram(...args);
80461
80484
  };
80462
80485
  const sendPollTelegramLazy = async (...args) => {
80463
- const { sendPollTelegram } = await import("./send-DcsYRH2f.js").then((n) => n.c);
80486
+ const { sendPollTelegram } = await import("./send-BG3RWyil.js").then((n) => n.c);
80464
80487
  return sendPollTelegram(...args);
80465
80488
  };
80466
80489
  const monitorTelegramProviderLazy = async (...args) => {
80467
- const { monitorTelegramProvider } = await import("./monitor-CEtMJuFX.js");
80490
+ const { monitorTelegramProvider } = await import("./monitor-K_u6daGa.js");
80468
80491
  return monitorTelegramProvider(...args);
80469
80492
  };
80470
80493
  let webOutboundPromise = null;
@@ -80473,23 +80496,23 @@ let webLoginQrPromise = null;
80473
80496
  let webChannelPromise = null;
80474
80497
  let whatsappActionsPromise = null;
80475
80498
  function loadWebOutbound() {
80476
- webOutboundPromise ??= import("./outbound-DXGuFrdx.js").then((n) => n.t);
80499
+ webOutboundPromise ??= import("./outbound-BuDafBBI.js").then((n) => n.t);
80477
80500
  return webOutboundPromise;
80478
80501
  }
80479
80502
  function loadWebLogin() {
80480
- webLoginPromise ??= import("./login-CK2zTIJA.js").then((n) => n.n);
80503
+ webLoginPromise ??= import("./login-Amr2DpKU.js").then((n) => n.n);
80481
80504
  return webLoginPromise;
80482
80505
  }
80483
80506
  function loadWebLoginQr() {
80484
- webLoginQrPromise ??= import("./login-qr-u8Mn1mCp.js");
80507
+ webLoginQrPromise ??= import("./login-qr-DMQNEi9m.js");
80485
80508
  return webLoginQrPromise;
80486
80509
  }
80487
80510
  function loadWebChannel() {
80488
- webChannelPromise ??= import("./web-r1KFR44s.js");
80511
+ webChannelPromise ??= import("./web-DRNJxHXA.js");
80489
80512
  return webChannelPromise;
80490
80513
  }
80491
80514
  function loadWhatsAppActions() {
80492
- whatsappActionsPromise ??= import("./whatsapp-actions-CID_tqAX.js");
80515
+ whatsappActionsPromise ??= import("./whatsapp-actions-BDXZF2R5.js");
80493
80516
  return whatsappActionsPromise;
80494
80517
  }
80495
80518
  function createPluginRuntime(options = {}) {
@@ -83719,6 +83742,16 @@ function lookupRefreshedModelCapability(provider, model) {
83719
83742
 
83720
83743
  //#endregion
83721
83744
  //#region src/agents/model-metadata.ts
83745
+ function availabilitySourceForCatalogSource(source) {
83746
+ switch (source) {
83747
+ case "provider-api": return "provider-api";
83748
+ case "runtime": return "runtime-catalog";
83749
+ case "configured": return "configured";
83750
+ case "provider-index": return "provider-plugin";
83751
+ case "manifest": return "curated-recommendation";
83752
+ default: return "reviewed-catalog";
83753
+ }
83754
+ }
83722
83755
  const TOOL_CAPABLE_APIS = new Set([
83723
83756
  "anthropic-messages",
83724
83757
  "github-copilot",
@@ -83737,13 +83770,19 @@ const JSON_CAPABLE_APIS = new Set([
83737
83770
  const LOCAL_DYNAMIC_PROVIDERS = new Set([
83738
83771
  "ollama",
83739
83772
  "lmstudio",
83740
- "vllm"
83773
+ "vllm",
83774
+ "litellm"
83741
83775
  ]);
83776
+ const CURATED_CATALOG_REVIEWED_AT = "2026-07-12T00:00:00.000Z";
83742
83777
  function resolveProviderConfig$1(cfg, provider) {
83743
83778
  return cfg?.models?.providers?.[provider];
83744
83779
  }
83745
83780
  function resolveAuthMode(params) {
83746
83781
  if (params.providerConfig?.auth) return params.providerConfig.auth;
83782
+ const providerRoute = params.provider.trim().toLowerCase();
83783
+ const method = getProviderBrandManifestForRoute(providerRoute)?.methods.find((entry) => entry.route.trim().toLowerCase() === providerRoute || entry.statusRoute?.trim().toLowerCase() === providerRoute || entry.configProviderId?.trim().toLowerCase() === providerRoute);
83784
+ if (method?.kind === "oauth" || method?.kind === "device") return "oauth";
83785
+ if (method?.kind === "token") return "token";
83747
83786
  return "api-key";
83748
83787
  }
83749
83788
  function addFeature(features, feature, enabled) {
@@ -83757,18 +83796,19 @@ function deriveModelMetadata(params) {
83757
83796
  const api = params.model.api ?? providerConfig?.api;
83758
83797
  const refreshed = lookupRefreshedModelCapability(provider, modelId);
83759
83798
  const manifestCapabilities = lookupProviderManifestModelCapability(provider, modelId);
83760
- const input = refreshed?.input ?? params.model.input ?? ["text"];
83799
+ const input = params.model.input ?? refreshed?.input ?? ["text"];
83761
83800
  const capabilities = manifestCapabilities || params.model.capabilities || refreshed?.capabilities ? {
83801
+ ...refreshed?.capabilities,
83762
83802
  ...manifestCapabilities,
83763
- ...params.model.capabilities,
83764
- ...refreshed?.capabilities
83803
+ ...params.model.capabilities
83765
83804
  } : void 0;
83766
- const capabilityConfidence = capabilities || refreshed || manifestCapabilities ? "declared" : "unknown";
83767
- const shouldInferApiCapabilities = !(LOCAL_DYNAMIC_PROVIDERS.has(provider) && capabilityConfidence === "unknown");
83805
+ const capabilitySource = params.capabilitySource ?? (params.model.capabilities ? params.model.catalogSource === "configured" ? "configured" : "runtime" : refreshed ? refreshed.source === "catalog" || refreshed.source === "provider-api" ? "provider-api" : "official-docs" : manifestCapabilities ? "official-docs" : api && !LOCAL_DYNAMIC_PROVIDERS.has(provider) ? "inferred" : "unknown");
83806
+ const capabilityConfidence = capabilitySource === "provider-api" || capabilitySource === "official-docs" ? "verified" : capabilitySource === "runtime" || capabilitySource === "configured" ? "declared" : capabilitySource === "inferred" ? "inferred" : "unknown";
83807
+ const shouldInferApiCapabilities = !LOCAL_DYNAMIC_PROVIDERS.has(provider);
83768
83808
  const thinking = resolveModelThinkingCapability({
83769
83809
  provider,
83770
83810
  model: modelId,
83771
- reasoning: refreshed?.reasoning ?? params.model.reasoning,
83811
+ reasoning: params.model.reasoning ?? refreshed?.reasoning,
83772
83812
  capabilities
83773
83813
  });
83774
83814
  const features = [];
@@ -83787,6 +83827,7 @@ function deriveModelMetadata(params) {
83787
83827
  label: params.model.name?.trim() || modelId,
83788
83828
  contextWindow: typeof refreshed?.contextWindow === "number" && refreshed.contextWindow > 0 ? refreshed.contextWindow : typeof params.model.contextWindow === "number" && params.model.contextWindow > 0 ? params.model.contextWindow : void 0,
83789
83829
  maxTokens: typeof refreshed?.maxTokens === "number" && refreshed.maxTokens > 0 ? refreshed.maxTokens : typeof params.model.maxTokens === "number" && params.model.maxTokens > 0 ? params.model.maxTokens : void 0,
83830
+ ...typeof api === "string" && api.trim() ? { apiRoute: api.trim() } : {},
83790
83831
  features,
83791
83832
  ...thinking ? {
83792
83833
  thinkingLevels: thinking.thinkingLevels,
@@ -83796,6 +83837,11 @@ function deriveModelMetadata(params) {
83796
83837
  } : {},
83797
83838
  streaming: capabilities?.streaming !== false,
83798
83839
  capabilityConfidence,
83840
+ capabilitySource,
83841
+ ...params.capabilityRetrievedAt ?? refreshed?.refreshedAt ?? (capabilitySource === "official-docs" ? CURATED_CATALOG_REVIEWED_AT : void 0) ? { capabilityRetrievedAt: params.capabilityRetrievedAt ?? refreshed?.refreshedAt ?? CURATED_CATALOG_REVIEWED_AT } : {},
83842
+ retrievedAt: refreshed?.refreshedAt ?? CURATED_CATALOG_REVIEWED_AT,
83843
+ availabilitySource: availabilitySourceForCatalogSource(params.model.catalogSource),
83844
+ authRoute: provider,
83799
83845
  authMode: resolveAuthMode({
83800
83846
  provider,
83801
83847
  providerConfig
@@ -83803,6 +83849,7 @@ function deriveModelMetadata(params) {
83803
83849
  privateNetwork,
83804
83850
  privateNetworkAllowed: privateNetwork ? providerConfig?.request?.allowPrivateNetwork === true : false,
83805
83851
  ...params.recommended ? { recommended: true } : {},
83852
+ ...providerModelRecommendationRank(provider, modelId) ? { recommendationRank: providerModelRecommendationRank(provider, modelId) } : {},
83806
83853
  ...params.default ? { default: true } : {}
83807
83854
  };
83808
83855
  }
@@ -83828,7 +83875,7 @@ function normalizeApi(value) {
83828
83875
  }
83829
83876
  function isSupportedRuntimeCatalogModel(provider, id) {
83830
83877
  if (provider !== "openai-codex") return true;
83831
- return isOpenAISignInRuntimeModelSupported(id);
83878
+ return isOpenAISignInCatalogModel(id);
83832
83879
  }
83833
83880
  function configuredProviderCatalogRows(cfg) {
83834
83881
  return Object.entries(cfg.models?.providers ?? {}).flatMap(([provider, providerConfig]) => normalizeProviderCatalogRows({
@@ -83899,8 +83946,7 @@ function providerConfigForRow(cfg, row) {
83899
83946
  }
83900
83947
  function buildFasedModelCatalogRows(params) {
83901
83948
  const discoveredRows = mergeModelCatalogRowsByAuthority([
83902
- ...listCurrentModelCatalogRows(),
83903
- ...providerPluginCatalogRows(params.providerPluginProviders),
83949
+ ...[...listCurrentModelCatalogRows(), ...providerPluginCatalogRows(params.providerPluginProviders)].filter((row) => isSupportedRuntimeCatalogModel(row.provider, row.id)),
83904
83950
  ...runtimeCatalogRows({
83905
83951
  models: params.runtimeModels ?? [],
83906
83952
  onEntryError: params.onRuntimeEntryError
@@ -84039,7 +84085,7 @@ const log$8 = createSubsystemLogger("model-catalog");
84039
84085
  let modelCatalogPromise = null;
84040
84086
  let hasLoggedModelCatalogError = false;
84041
84087
  let hasLoggedProviderCatalogError = false;
84042
- const defaultImportPiSdk = () => import("./pi-model-discovery-l-xqaEd0.js").then((n) => n.a);
84088
+ const defaultImportPiSdk = () => import("./pi-model-discovery-DvAG_Png.js").then((n) => n.a);
84043
84089
  let importPiSdk = defaultImportPiSdk;
84044
84090
  const CODEX_PROVIDER = "openai-codex";
84045
84091
  const OPENAI_PROVIDER = "openai";
@@ -89773,6 +89819,20 @@ function resolveTranscriptPolicy(params) {
89773
89819
  };
89774
89820
  }
89775
89821
 
89822
+ //#endregion
89823
+ //#region src/agents/pi-embedded-runner/agent-messages.ts
89824
+ function replaceAgentMessages(agent, messages) {
89825
+ if (agent.state) {
89826
+ agent.state.messages = messages;
89827
+ return;
89828
+ }
89829
+ if (typeof agent.replaceMessages === "function") {
89830
+ agent.replaceMessages(messages);
89831
+ return;
89832
+ }
89833
+ throw new Error("Agent runtime does not expose mutable message state");
89834
+ }
89835
+
89776
89836
  //#endregion
89777
89837
  //#region src/agents/pi-embedded-runner/compaction-safety-timeout.ts
89778
89838
  const EMBEDDED_COMPACTION_TIMEOUT_MS = 3e5;
@@ -90837,7 +90897,7 @@ function dropThinkingBlocks(messages) {
90837
90897
  //#region src/agents/pi-embedded-runner/utils.ts
90838
90898
  function mapThinkingLevel(level) {
90839
90899
  if (!level) return "off";
90840
- return level;
90900
+ return level === "max" ? "xhigh" : level;
90841
90901
  }
90842
90902
  function describeUnknownError(error) {
90843
90903
  if (error instanceof Error) return error.message;
@@ -91881,7 +91941,7 @@ async function compactEmbeddedPiSessionDirect(params) {
91881
91941
  const preCompactionMessages = [...session.messages];
91882
91942
  const truncated = limitHistoryTurns(validated, getDmHistoryLimitFromSessionKey(params.sessionKey, params.config));
91883
91943
  const limited = transcriptPolicy.repairToolUseResultPairing ? sanitizeToolUseResultPairing(truncated) : truncated;
91884
- if (limited.length > 0) session.agent.replaceMessages(limited);
91944
+ if (limited.length > 0) replaceAgentMessages(session.agent, limited);
91885
91945
  const hookRunner = getGlobalHookRunner();
91886
91946
  const hookCtx = {
91887
91947
  agentId: params.sessionKey?.split(":")[0] ?? "main",
@@ -92179,6 +92239,28 @@ function createOpenAIResponsesContextManagementWrapper(baseStreamFn, extraParams
92179
92239
  });
92180
92240
  };
92181
92241
  }
92242
+ function createOpenAIReasoningEffortWrapper(baseStreamFn, reasoningEffort) {
92243
+ const underlying = baseStreamFn ?? streamSimple;
92244
+ return (model, context, options) => {
92245
+ const supportsReasoningEffort = model.api === "openai-codex-responses" || model.api === "openai-responses" && model.provider === "openai" && (model.baseUrl === void 0 || isDirectOpenAIBaseUrl(model.baseUrl));
92246
+ if (!reasoningEffort || !supportsReasoningEffort) return underlying(model, context, options);
92247
+ const originalOnPayload = options?.onPayload;
92248
+ return underlying(model, context, {
92249
+ ...options,
92250
+ onPayload: (payload) => {
92251
+ if (payload && typeof payload === "object") {
92252
+ const payloadObj = payload;
92253
+ const reasoning = payloadObj.reasoning;
92254
+ payloadObj.reasoning = {
92255
+ ...reasoning && typeof reasoning === "object" ? reasoning : {},
92256
+ effort: reasoningEffort === "off" ? "none" : reasoningEffort
92257
+ };
92258
+ }
92259
+ originalOnPayload?.(payload);
92260
+ }
92261
+ });
92262
+ };
92263
+ }
92182
92264
  function createCodexDefaultTransportWrapper(baseStreamFn) {
92183
92265
  const underlying = baseStreamFn ?? streamSimple;
92184
92266
  return (model, context, options) => underlying(model, context, {
@@ -92564,6 +92646,7 @@ function applyExtraParamsToAgent(agent, cfg, provider, modelId, extraParamsOverr
92564
92646
  }
92565
92647
  agent.streamFn = createGoogleThinkingPayloadWrapper(agent.streamFn, thinkingLevel);
92566
92648
  agent.streamFn = createOpenAIResponsesContextManagementWrapper(agent.streamFn, merged);
92649
+ agent.streamFn = createOpenAIReasoningEffortWrapper(agent.streamFn, thinkingLevel);
92567
92650
  }
92568
92651
 
92569
92652
  //#endregion
@@ -96632,7 +96715,6 @@ async function runEmbeddedAttempt(params) {
96632
96715
  modelApi: params.model.api,
96633
96716
  workspaceDir: params.workspaceDir
96634
96717
  });
96635
- activeSession.agent.streamFn = streamSimple;
96636
96718
  applyExtraParamsToAgent(activeSession.agent, params.config, params.provider, params.modelId, params.streamParams, params.thinkLevel, sessionAgentId);
96637
96719
  if (cacheTrace) {
96638
96720
  cacheTrace.recordStage("session:loaded", {
@@ -96693,7 +96775,7 @@ async function runEmbeddedAttempt(params) {
96693
96775
  const truncated = params.omitPriorMessages ? [] : limitHistoryTurns(validated, getDmHistoryLimitFromSessionKey(params.sessionKey, params.config));
96694
96776
  const limited = transcriptPolicy.repairToolUseResultPairing ? sanitizeToolUseResultPairing(truncated) : truncated;
96695
96777
  cacheTrace?.recordStage("session:limited", { messages: limited });
96696
- if (params.omitPriorMessages || limited.length > 0) activeSession.agent.replaceMessages(limited);
96778
+ if (params.omitPriorMessages || limited.length > 0) replaceAgentMessages(activeSession.agent, limited);
96697
96779
  } catch (err) {
96698
96780
  await flushPendingToolResultsAfterIdle({
96699
96781
  agent: activeSession?.agent,
@@ -96855,11 +96937,11 @@ async function runEmbeddedAttempt(params) {
96855
96937
  if (leafEntry.parentId) sessionManager.branch(leafEntry.parentId);
96856
96938
  else sessionManager.resetLeaf();
96857
96939
  const sessionContext = sessionManager.buildSessionContext();
96858
- activeSession.agent.replaceMessages(sessionContext.messages);
96940
+ replaceAgentMessages(activeSession.agent, sessionContext.messages);
96859
96941
  log$5.warn(`Removed orphaned user message to prevent consecutive user turns. runId=${params.runId} sessionId=${params.sessionId}`);
96860
96942
  }
96861
96943
  try {
96862
- if (pruneProcessedHistoryImages(activeSession.messages)) activeSession.agent.replaceMessages(activeSession.messages);
96944
+ if (pruneProcessedHistoryImages(activeSession.messages)) replaceAgentMessages(activeSession.agent, activeSession.messages);
96863
96945
  const imageResult = await detectAndLoadPromptImages({
96864
96946
  prompt: effectivePrompt,
96865
96947
  workspaceDir: effectiveWorkspace,
@@ -99636,6 +99718,10 @@ function formatUpdateOneLiner(update, opts = {}) {
99636
99718
  return `Update: ${parts.join(" · ")}`;
99637
99719
  }
99638
99720
 
99721
+ //#endregion
99722
+ //#region src/providers/runtime-model-catalog.ts
99723
+ const DISCOVERY_TTL_MS = 5 * 6e4;
99724
+
99639
99725
  //#endregion
99640
99726
  //#region src/gateway/server-model-catalog.ts
99641
99727
  function createGatewayModelCatalogCache() {