@fased/fased 0.1.66 → 0.1.68

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 (175) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +4 -0
  3. package/config/signer-protocol-v2.json +4 -0
  4. package/dist/brand.js +1 -1
  5. package/dist/build-info.json +3 -3
  6. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  7. package/dist/cli/program/register.wallet.js +33 -2
  8. package/dist/commands/onboard.js +0 -8
  9. package/dist/commands/wallet.js +485 -58
  10. package/dist/control-ui/assets/{app-DYxADzeH.js → app-DyPTS0oM.js} +1526 -1526
  11. package/dist/control-ui/assets/{index-vw_10Zeo.js → index-Cu13yYHr.js} +3 -3
  12. package/dist/control-ui/assets/{wallet-DvStR_AT.js → wallet-ByKBcYhm.js} +272 -188
  13. package/dist/control-ui/index.html +1 -1
  14. package/dist/control-ui/version.json +1 -1
  15. package/dist/gateway/server-http.js +349 -47
  16. package/dist/infra/runtime-guard.js +16 -0
  17. package/dist/plugin-sdk/{actions-DRu135h0.js → actions-B-Vwj64K.js} +3 -3
  18. package/dist/plugin-sdk/{allow-list-DyAxs4yw.js → allow-list-Bf45HfoP.js} +1 -1
  19. package/dist/plugin-sdk/{audio-preflight-BFLoas5R.js → audio-preflight-_FVQjR1r.js} +26 -25
  20. package/dist/plugin-sdk/{audit-C5d2z5U1.js → audit-CUULWG22.js} +1 -1
  21. package/dist/plugin-sdk/{channel-access-configure-DaI5wevh.js → channel-access-configure-BoUsC-Ys.js} +1 -1
  22. package/dist/plugin-sdk/{channel-adapters.discord-BS4S4Svh.js → channel-adapters.discord-DSiR4X2Y.js} +1 -1
  23. package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
  24. package/dist/plugin-sdk/channel-plugin-common.js +1 -1
  25. package/dist/plugin-sdk/{chunk-CyoyqpbG.js → chunk-CBpl-AiQ.js} +1 -1
  26. package/dist/plugin-sdk/{chunk-items-TErs62MC.js → chunk-items-LH4uKSnh.js} +1 -1
  27. package/dist/plugin-sdk/command-status.js +26 -25
  28. package/dist/plugin-sdk/{commands-registry-BfqdEWdF.js → commands-registry-G5KXSi_y.js} +1 -1
  29. package/dist/plugin-sdk/{config-schema-BPnaDBwZ.js → config-schema-DjU_uD-6.js} +192 -94
  30. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  31. package/dist/plugin-sdk/{diagnostic-DLL_zekv.js → diagnostic-sYs6Agr-.js} +1 -1
  32. package/dist/plugin-sdk/{directory-live-CSuYxdwk.js → directory-live-BXMpuYAF.js} +1 -1
  33. package/dist/plugin-sdk/{directory-live-Dw7ZgC9_.js → directory-live-Rn1BzPof.js} +1 -1
  34. package/dist/plugin-sdk/discord.d.ts +4 -4
  35. package/dist/plugin-sdk/discord.js +20 -20
  36. package/dist/plugin-sdk/{draft-stream-controls-BqchW1vi.js → draft-stream-controls-CMNdKSx-.js} +1 -1
  37. package/dist/plugin-sdk/{guilds-CDhRIX57.js → guilds-Dkwl0yHv.js} +1 -1
  38. package/dist/plugin-sdk/{handle-action-hvwapMKg.js → handle-action-CRdM6B-8.js} +15 -15
  39. package/dist/plugin-sdk/index.d.ts +16 -16
  40. package/dist/plugin-sdk/index.js +28 -27
  41. package/dist/plugin-sdk/{login-Ca583Okc.js → login-D7WnK8-P.js} +1 -1
  42. package/dist/plugin-sdk/{login-qr-CGciBSNP.js → login-qr-CRueOKZK.js} +2 -114
  43. package/dist/plugin-sdk/{markdown-tables-DCOXEUfZ.js → markdown-tables-d7GlUs5R.js} +1 -1
  44. package/dist/plugin-sdk/{media-CAdQF5TG.js → media-BAoaxCrt.js} +1 -1
  45. package/dist/plugin-sdk/{monitor-FuBPk-AL.js → monitor-DUMMbG4h.js} +34 -33
  46. package/dist/plugin-sdk/{monitor-sW6dQdX1.js → monitor-DXIM16Hj.js} +44 -43
  47. package/dist/plugin-sdk/{openresponses-http-CVZq0H-P.js → openresponses-http-C8lKwta1.js} +26 -25
  48. package/dist/plugin-sdk/{outbound-attachment-QqTnIhZL.js → outbound-attachment-CyXM3cAv.js} +1 -1
  49. package/dist/plugin-sdk/{outbound-BgVDdHxx.js → outbound-zB6llMGW.js} +6 -6
  50. package/dist/plugin-sdk/{pairing-message-L6L6L2YF.d.ts → pairing-message-mKO92L-M.d.ts} +1 -1
  51. package/dist/plugin-sdk/{pairing-store-BChahgI2.js → pairing-store-B6J2C0vP.js} +1 -1
  52. package/dist/plugin-sdk/{pi-model-discovery-runtime-DxTMz_XF.js → pi-model-discovery-runtime-6JzLw9Gk.js} +1 -1
  53. package/dist/plugin-sdk/{probe-CJb5uR8B.js → probe-BM7Oe40M.js} +2 -2
  54. package/dist/plugin-sdk/{probe-l_whvGLY.js → probe-CMPksimh.js} +1 -1
  55. package/dist/plugin-sdk/{probe-BFroeK3g.js → probe-oVp12D6L.js} +1 -1
  56. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +1 -1
  57. package/dist/plugin-sdk/{pw-ai-natjh3rm.js → pw-ai-DJ_gTc4M.js} +1 -1
  58. package/dist/plugin-sdk/qr-image-B4MlMG4N.js +115 -0
  59. package/dist/plugin-sdk/{replies-ChYo5ZQM.js → replies-CY-V0Zob.js} +3 -3
  60. package/dist/plugin-sdk/{resolve-channels-87LZrFk_.js → resolve-channels-1HtDcMqh.js} +2 -2
  61. package/dist/plugin-sdk/{resolve-channels-_-nV-EK2.js → resolve-channels-CU72Qh2j.js} +1 -1
  62. package/dist/plugin-sdk/{resolve-outbound-target-D-KGgHJZ.js → resolve-outbound-target-nQSBVYz9.js} +2 -2
  63. package/dist/plugin-sdk/{resolve-route-C8tvQm8Z.js → resolve-route-Dufnu2cT.js} +1 -1
  64. package/dist/plugin-sdk/{resolve-users-DN9VQBwv.js → resolve-users-Bk_ss2vC.js} +1 -1
  65. package/dist/plugin-sdk/{resolve-users-V6dHh_2B.js → resolve-users-IevCOk4W.js} +2 -2
  66. package/dist/plugin-sdk/{runtime-2B9_WKoI.js → runtime-CXSQwMaR.js} +1 -1
  67. package/dist/plugin-sdk/{runtime-dependency-DczkvPxn.js → runtime-dependency-nup8niQL.js} +9 -9
  68. package/dist/plugin-sdk/sat-runtime.d.ts +18 -2
  69. package/dist/plugin-sdk/sat-runtime.js +26 -25
  70. package/dist/plugin-sdk/{send-DCO441U7.js → send-BXBS_mRK.js} +8 -8
  71. package/dist/plugin-sdk/{send-CFzGKJXo.js → send-D-HfKQZm.js} +4 -4
  72. package/dist/plugin-sdk/{send-B6KkGKZD.js → send-D1j12ZgX.js} +5 -5
  73. package/dist/plugin-sdk/{send-q9HXrSwK.js → send-DWKm6yay.js} +10 -10
  74. package/dist/plugin-sdk/{send-gDoGA-7e.js → send-Di1Jit3L.js} +7 -7
  75. package/dist/plugin-sdk/{skill-commands-FKEPLS7T.js → skill-commands-iJtvpqgb.js} +2 -2
  76. package/dist/plugin-sdk/{slack-BZISDxDd.js → slack-B-nOOLM0.js} +45 -44
  77. package/dist/plugin-sdk/{slack-actions-DhbMcp8M.js → slack-actions-BzUEszJa.js} +10 -10
  78. package/dist/plugin-sdk/slack.d.ts +4 -4
  79. package/dist/plugin-sdk/slack.js +6 -6
  80. package/dist/plugin-sdk/{sticker-cache-B0aPv6Lg.js → sticker-cache-BLiId8Em.js} +2 -2
  81. package/dist/plugin-sdk/{tables-B3jr0Pvq.js → tables-_1W36GII.js} +2 -2
  82. package/dist/plugin-sdk/{targets-CtSbTxYX.js → targets-DDbNnLnB.js} +2 -2
  83. package/dist/plugin-sdk/{telegram-actions-H3gePEn6.js → telegram-actions-1X9A32Dn.js} +30 -29
  84. package/dist/plugin-sdk/telegram.d.ts +4 -4
  85. package/dist/plugin-sdk/telegram.js +3 -3
  86. package/dist/plugin-sdk/{thread-bindings.lifecycle-QbkNl-m6.js → thread-bindings.lifecycle-Y9T3CQGf.js} +3 -3
  87. package/dist/plugin-sdk/{thread-bindings.state-D9hg_M1c.js → thread-bindings.state-D2oOWDpv.js} +1 -1
  88. package/dist/plugin-sdk/{tmp-fased-dir-d1CmFAnJ.d.ts → tmp-fased-dir-BkpWlGUe.d.ts} +7 -1
  89. package/dist/plugin-sdk/{types-DUjYaWB2.d.ts → types-B-zL9gSv.d.ts} +1 -1
  90. package/dist/plugin-sdk/{types-xWjHXl1z.d.ts → types-DtCOO_hW.d.ts} +1 -1
  91. package/dist/plugin-sdk/{web-JwP9PAZR.js → web-BvjNyYBz.js} +33 -32
  92. package/dist/plugin-sdk/{whatsapp-actions-Bj_rOncr.js → whatsapp-actions-Blu9-eX-.js} +9 -9
  93. package/dist/plugin-sdk/{whatsapp-heartbeat-B1WHkJIg.js → whatsapp-heartbeat-DjmQM7hq.js} +2 -2
  94. package/dist/plugin-sdk/whatsapp.d.ts +9 -9
  95. package/dist/plugin-sdk/whatsapp.js +7 -7
  96. package/dist/plugin-sdk/{wsl-J-HscWxS.js → wsl-CTvIWvZz.js} +1 -1
  97. package/dist/plugin-sdk/{zod-schema.providers-core-CIzCjXH9.d.ts → zod-schema.providers-core-BCDlgtls.d.ts} +63 -63
  98. package/dist/wallet/local-socket-signer-lifecycle.js +29 -1
  99. package/dist/wallet/local-socket-signer-protocol.js +27 -0
  100. package/dist/wallet/providers/local-socket-signer-adapter.js +8 -0
  101. package/dist/wallet/signer-network-admin.js +11 -118
  102. package/dist/wallet/signer-protocol-v2.generated.js +4 -0
  103. package/dist/wallet/solana-assets.js +9 -3
  104. package/dist/wallet/solana-rpc-read-fetch.js +65 -0
  105. package/dist/wallet/wallet-status.js +7 -0
  106. package/dist/web/login-qr.js +1 -1
  107. package/dist/wizard/onboarding.js +61 -61
  108. package/extensions/acpx/package.json +1 -1
  109. package/extensions/bluebubbles/package.json +1 -1
  110. package/extensions/copilot-proxy/package.json +1 -1
  111. package/extensions/diagnostics-otel/package.json +1 -1
  112. package/extensions/fased-federation/package.json +1 -1
  113. package/extensions/google-gemini-cli-auth/package.json +1 -1
  114. package/extensions/imessage/package.json +1 -1
  115. package/extensions/irc/package.json +1 -1
  116. package/extensions/line/package.json +1 -1
  117. package/extensions/llm-task/package.json +1 -1
  118. package/extensions/lobster/package.json +1 -1
  119. package/extensions/matrix/CHANGELOG.md +12 -0
  120. package/extensions/matrix/package.json +1 -1
  121. package/extensions/mattermost/package.json +1 -1
  122. package/extensions/memory-core/package.json +2 -2
  123. package/extensions/memory-lancedb/package.json +1 -1
  124. package/extensions/minimax-portal-auth/package.json +1 -1
  125. package/extensions/msteams/CHANGELOG.md +12 -0
  126. package/extensions/msteams/package.json +1 -1
  127. package/extensions/nextcloud-talk/package.json +1 -1
  128. package/extensions/nostr/CHANGELOG.md +12 -0
  129. package/extensions/nostr/package.json +1 -1
  130. package/extensions/open-prose/package.json +1 -1
  131. package/extensions/sat-mining/package.json +1 -1
  132. package/extensions/signal/package.json +1 -1
  133. package/extensions/synology-chat/package.json +1 -1
  134. package/extensions/tlon/package.json +1 -1
  135. package/extensions/twitch/CHANGELOG.md +12 -0
  136. package/extensions/twitch/package.json +1 -1
  137. package/extensions/voice-call/CHANGELOG.md +12 -0
  138. package/extensions/voice-call/package.json +1 -1
  139. package/extensions/zalo/CHANGELOG.md +12 -0
  140. package/extensions/zalo/package.json +1 -1
  141. package/extensions/zalouser/CHANGELOG.md +12 -0
  142. package/extensions/zalouser/package.json +1 -1
  143. package/fased.mjs +14 -1
  144. package/install.sh +16 -10
  145. package/package.json +6 -1
  146. package/scripts/fased-managed-updater.mjs +10 -2
  147. package/scripts/fased-signer-wallet-import-hosting.sh +78 -0
  148. package/scripts/install-managed-runtime.mjs +10 -7
  149. /package/dist/plugin-sdk/{active-listener-B_NMtgPL.js → active-listener-p9Ooc1qj.js} +0 -0
  150. /package/dist/plugin-sdk/{blocks-input-Bg-8S2pl.js → blocks-input-DiZaqaN7.js} +0 -0
  151. /package/dist/plugin-sdk/{channel-access-CcFRdRPO.js → channel-access-B0aZBSd2.js} +0 -0
  152. /package/dist/plugin-sdk/{channel-activity-DBDMQ3yI.js → channel-activity-F07DjroV.js} +0 -0
  153. /package/dist/plugin-sdk/{channel-core-CFRs8LPy.js → channel-core-DoF4X04L.js} +0 -0
  154. /package/dist/plugin-sdk/{client-pI228AVT.js → client-DLY-kWF_.js} +0 -0
  155. /package/dist/plugin-sdk/{command-poll-backoff-yJU83wEq.js → command-poll-backoff-NAePk3eL.js} +0 -0
  156. /package/dist/plugin-sdk/{date-time-uUevHscU.js → date-time-ChY_tHoG.js} +0 -0
  157. /package/dist/plugin-sdk/{draft-stream-loop-CrOPfV3F.js → draft-stream-loop-DMBwjjd1.js} +0 -0
  158. /package/dist/plugin-sdk/{fetch-BtmoPIlf.js → fetch-B0v6OTUZ.js} +0 -0
  159. /package/dist/plugin-sdk/{filesystem-manager-DoI8IBNF.js → filesystem-manager-BzuIJ9K9.js} +0 -0
  160. /package/dist/plugin-sdk/{gateway-registry-DZDsqicG.js → gateway-registry-Bgl2GFgy.js} +0 -0
  161. /package/dist/plugin-sdk/{inbound-context-DrAcXE0y.js → inbound-context-CQnfFFQ9.js} +0 -0
  162. /package/dist/plugin-sdk/{pi-model-discovery-BX_JLcEJ.js → pi-model-discovery-BHNVyRny.js} +0 -0
  163. /package/dist/plugin-sdk/{polls-DKQXVfJp.js → polls-DXd67TD8.js} +0 -0
  164. /package/dist/plugin-sdk/{proxy-DWpYcsvR.js → proxy-CLRUdShp.js} +0 -0
  165. /package/dist/plugin-sdk/{qmd-manager-CgRaTxUq.js → qmd-manager-B8Vnu0ND.js} +0 -0
  166. /package/dist/plugin-sdk/{render-e7fENCYH.js → render-DrBfVs0u.js} +0 -0
  167. /package/dist/plugin-sdk/{reply-reference-Bqk-7HXE.js → reply-reference-BnAk5Wjb.js} +0 -0
  168. /package/dist/plugin-sdk/{retry-policy-C6SjKjQA.js → retry-policy-CXh1owkc.js} +0 -0
  169. /package/dist/plugin-sdk/{sandbox-paths-Dx2lUqCu.js → sandbox-paths-Bzh1CuZc.js} +0 -0
  170. /package/dist/plugin-sdk/{session-DHD4ZKyG.js → session-iuGR_rdi.js} +0 -0
  171. /package/dist/plugin-sdk/{shared-CBgp_GBw.js → shared-D1AD2Ejn.js} +0 -0
  172. /package/dist/plugin-sdk/{target-errors-Ckufe179.js → target-errors-DfS1sLR9.js} +0 -0
  173. /package/dist/plugin-sdk/{tool-loop-detection-Bp8bPJLs.js → tool-loop-detection-sDZl27w7.js} +0 -0
  174. /package/dist/plugin-sdk/{ui-Be8cLHIS.js → ui-GQDYm_jw.js} +0 -0
  175. /package/dist/plugin-sdk/{with-timeout-ckWB8rTo.js → with-timeout-CVV8tytk.js} +0 -0
@@ -1,3 +1,3 @@
1
- import { _ as FasedAgentPluginApi } from "./types-xWjHXl1z.js";
1
+ import { _ as FasedAgentPluginApi } from "./types-DtCOO_hW.js";
2
2
  import { a as listDevicePairing, i as approveDevicePairing, n as resolveTailnetHostWithRunner, r as resolveGatewayBindUrl, t as runPluginCommandWithTimeout } from "./run-command-i_W6EFb1.js";
3
3
  export { type FasedAgentPluginApi, approveDevicePairing, listDevicePairing, resolveGatewayBindUrl, resolveTailnetHostWithRunner, runPluginCommandWithTimeout };
@@ -254,7 +254,7 @@ function startDiagnosticHeartbeat() {
254
254
  waiting: waitingCount,
255
255
  queued: totalQueued
256
256
  });
257
- import("./command-poll-backoff-yJU83wEq.js").then((n) => n.t).then(({ pruneStaleCommandPolls }) => {
257
+ import("./command-poll-backoff-NAePk3eL.js").then((n) => n.t).then(({ pruneStaleCommandPolls }) => {
258
258
  for (const [, state] of diagnosticSessionStates) pruneStaleCommandPolls(state);
259
259
  }).catch((err) => {
260
260
  diag.debug(`command-poll-backoff prune failed: ${formatDiagnosticErrorForLog(err)}`);
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { a as resolveDiscordAccount } from "./accounts-RHZyaB73.js";
3
3
  import { t as normalizeDiscordToken } from "./token-D4-H0ByG.js";
4
- import { _ as fetchDiscord, i as normalizeDiscordSlug } from "./allow-list-DyAxs4yw.js";
4
+ import { _ as fetchDiscord, i as normalizeDiscordSlug } from "./allow-list-Bf45HfoP.js";
5
5
 
6
6
  //#region src/discord/directory-live.ts
7
7
  var directory_live_exports = /* @__PURE__ */ __exportAll({
@@ -1,5 +1,5 @@
1
1
  import { i as resolveSlackAccount } from "./accounts-CuqIKU8X.js";
2
- import { n as createSlackWebClient } from "./client-pI228AVT.js";
2
+ import { n as createSlackWebClient } from "./client-DLY-kWF_.js";
3
3
 
4
4
  //#region src/slack/directory-live.ts
5
5
  function resolveReadToken(params) {
@@ -1,10 +1,10 @@
1
1
  import { n as DEFAULT_ACCOUNT_ID, r as normalizeAccountId } from "./session-key--_1zVBRB.js";
2
2
  import { At as FasedAgentConfig, F as ChannelAccountSnapshot, J as ChannelMessageActionAdapter, it as ChannelStatusIssue, n as ChannelPlugin, on as DiscordAccountConfig, r as ChannelOnboardingAdapter, u as ChannelMessageActionName, ut as getChatChannelMeta } from "./types.plugin-BcSBq42x.js";
3
- import { Bt as resolveDefaultGroupPolicy, Cn as readStringParam, Gt as listSlackDirectoryGroupsFromConfig, Jt as listTelegramDirectoryPeersFromConfig, Kt as listSlackDirectoryPeersFromConfig, Ut as listDiscordDirectoryGroupsFromConfig, Vt as resolveOpenProviderRuntimeGroupPolicy, Wt as listDiscordDirectoryPeersFromConfig, Xt as listWhatsAppDirectoryPeersFromConfig, Yt as listWhatsAppDirectoryGroupsFromConfig, Zt as collectDiscordAuditChannelIds, _ as FasedAgentPluginApi, qt as listTelegramDirectoryGroupsFromConfig, t as PluginRuntime, yn as createActionGate, zt as resolveAllowlistProviderRuntimeGroupPolicy } from "./types-xWjHXl1z.js";
4
- import { D as normalizeE164 } from "./types-DUjYaWB2.js";
5
- import { a as buildChannelConfigSchema, c as emptyPluginConfigSchema, i as setAccountEnabledInConfigSection, n as formatPairingApproveHint, o as applyAccountNameToChannelSection, r as deleteAccountFromConfigSection, s as migrateBaseNameToDefaultAccount, t as PAIRING_APPROVED_MESSAGE } from "./pairing-message-L6L6L2YF.js";
3
+ import { Bt as resolveDefaultGroupPolicy, Cn as readStringParam, Gt as listSlackDirectoryGroupsFromConfig, Jt as listTelegramDirectoryPeersFromConfig, Kt as listSlackDirectoryPeersFromConfig, Ut as listDiscordDirectoryGroupsFromConfig, Vt as resolveOpenProviderRuntimeGroupPolicy, Wt as listDiscordDirectoryPeersFromConfig, Xt as listWhatsAppDirectoryPeersFromConfig, Yt as listWhatsAppDirectoryGroupsFromConfig, Zt as collectDiscordAuditChannelIds, _ as FasedAgentPluginApi, qt as listTelegramDirectoryGroupsFromConfig, t as PluginRuntime, yn as createActionGate, zt as resolveAllowlistProviderRuntimeGroupPolicy } from "./types-DtCOO_hW.js";
4
+ import { D as normalizeE164 } from "./types-B-zL9gSv.js";
5
+ import { a as buildChannelConfigSchema, c as emptyPluginConfigSchema, i as setAccountEnabledInConfigSection, n as formatPairingApproveHint, o as applyAccountNameToChannelSection, r as deleteAccountFromConfigSection, s as migrateBaseNameToDefaultAccount, t as PAIRING_APPROVED_MESSAGE } from "./pairing-message-mKO92L-M.js";
6
6
  import { _ as buildTokenChannelStatusSummary, i as resolveDiscordGroupToolPolicy, r as resolveDiscordGroupRequireMention } from "./group-mentions-q3hUTCt7.js";
7
- import { t as DiscordConfigSchema } from "./zod-schema.providers-core-CIzCjXH9.js";
7
+ import { t as DiscordConfigSchema } from "./zod-schema.providers-core-BCDlgtls.js";
8
8
 
9
9
  //#region src/discord/accounts.d.ts
10
10
  type ResolvedDiscordAccount = {
@@ -1,4 +1,4 @@
1
- import { Ht as resolveDiscordGroupRequireMention, Nn as getChatChannelMeta, Ut as resolveDiscordGroupToolPolicy, _t as listWhatsAppDirectoryPeersFromConfig, dt as listDiscordDirectoryPeersFromConfig, ft as listSlackDirectoryGroupsFromConfig, gt as listWhatsAppDirectoryGroupsFromConfig, ht as listTelegramDirectoryPeersFromConfig, mt as listTelegramDirectoryGroupsFromConfig, pt as listSlackDirectoryPeersFromConfig, ut as listDiscordDirectoryGroupsFromConfig } from "./runtime-2B9_WKoI.js";
1
+ import { Ht as resolveDiscordGroupRequireMention, Nn as getChatChannelMeta, Ut as resolveDiscordGroupToolPolicy, _t as listWhatsAppDirectoryPeersFromConfig, dt as listDiscordDirectoryPeersFromConfig, ft as listSlackDirectoryGroupsFromConfig, gt as listWhatsAppDirectoryGroupsFromConfig, ht as listTelegramDirectoryPeersFromConfig, mt as listTelegramDirectoryGroupsFromConfig, pt as listSlackDirectoryPeersFromConfig, ut as listDiscordDirectoryGroupsFromConfig } from "./runtime-CXSQwMaR.js";
2
2
  import "./subsystem-DBPNbQDQ.js";
3
3
  import "./globals-B_jjtAje.js";
4
4
  import "./paths-BEmvSyOV.js";
@@ -11,7 +11,7 @@ import "./accounts-CuqIKU8X.js";
11
11
  import "./logger-BbFvCoKk.js";
12
12
  import "./exec-DQ8j4Fm3.js";
13
13
  import "./accounts-Brn3-uWN.js";
14
- import { i as normalizeDiscordSlug } from "./allow-list-DyAxs4yw.js";
14
+ import { i as normalizeDiscordSlug } from "./allow-list-Bf45HfoP.js";
15
15
  import "./redact-Bm8vu_ju.js";
16
16
  import "./github-copilot-token-CUK__1s1.js";
17
17
  import "./retry-DstNBhDW.js";
@@ -20,27 +20,27 @@ import { a as deleteAccountFromConfigSection, c as formatPairingApproveHint, n a
20
20
  import "./ssrf-fG4UHKBw.js";
21
21
  import "./fetch-guard-CeG6u6ld.js";
22
22
  import { A as resolveDefaultGroupPolicy, D as formatDocsLink, _ as setAccountGroupPolicyForChannel, a as noteChannelLookupFailure, b as setOnboardingChannelEnabled, d as promptLegacyChannelAllowFrom, g as resolveOnboardingAccountId, h as resolveAccountIdForConfigure, j as resolveOpenProviderRuntimeGroupPolicy, k as resolveAllowlistProviderRuntimeGroupPolicy, l as patchChannelConfigForAccount, m as promptSingleChannelToken, n as applySingleTokenPromptResult, o as noteChannelLookupSummary, s as parseMentionOrPrefixedId, w as buildTokenChannelStatusSummary, y as setLegacyChannelDmPolicyWithAllowFrom } from "./helpers-DMBU4oTo.js";
23
- import "./chunk-CyoyqpbG.js";
23
+ import "./chunk-CBpl-AiQ.js";
24
24
  import "./optional-runtime-dependency-0dznm3ZO.js";
25
25
  import "./image-ops-DQi0n_Tt.js";
26
26
  import { d as readStringParam, n as createActionGate } from "./common-HCcXU-NR.js";
27
27
  import "./path-alias-guards-DjgDArrp.js";
28
28
  import "./fs-safe-g4g7GT02.js";
29
- import "./media-CAdQF5TG.js";
30
- import "./markdown-tables-DCOXEUfZ.js";
31
- import "./fetch-BtmoPIlf.js";
32
- import "./thread-bindings.state-D9hg_M1c.js";
33
- import "./directory-live-CSuYxdwk.js";
34
- import { t as parseDiscordTarget } from "./targets-CtSbTxYX.js";
35
- import "./render-e7fENCYH.js";
36
- import "./tables-B3jr0Pvq.js";
37
- import { i as resolveEnabledConfiguredAccountId, n as asString, t as appendMatchMetadata } from "./shared-CBgp_GBw.js";
38
- import "./channel-core-CFRs8LPy.js";
39
- import "./send-DCO441U7.js";
40
- import "./retry-policy-C6SjKjQA.js";
41
- import { n as collectDiscordAuditChannelIds } from "./audit-C5d2z5U1.js";
42
- import { t as configureChannelAccessWithAllowlist } from "./channel-access-configure-DaI5wevh.js";
43
- import { a as unbindThreadBindingsBySessionKey, n as listThreadBindingsBySessionKey, t as autoBindSpawnedDiscordSubagent } from "./thread-bindings.lifecycle-QbkNl-m6.js";
29
+ import "./media-BAoaxCrt.js";
30
+ import "./markdown-tables-d7GlUs5R.js";
31
+ import "./fetch-B0v6OTUZ.js";
32
+ import "./thread-bindings.state-D2oOWDpv.js";
33
+ import "./directory-live-BXMpuYAF.js";
34
+ import { t as parseDiscordTarget } from "./targets-DDbNnLnB.js";
35
+ import "./render-DrBfVs0u.js";
36
+ import "./tables-_1W36GII.js";
37
+ import { i as resolveEnabledConfiguredAccountId, n as asString, t as appendMatchMetadata } from "./shared-D1AD2Ejn.js";
38
+ import "./channel-core-DoF4X04L.js";
39
+ import "./send-BXBS_mRK.js";
40
+ import "./retry-policy-CXh1owkc.js";
41
+ import { n as collectDiscordAuditChannelIds } from "./audit-CUULWG22.js";
42
+ import { t as configureChannelAccessWithAllowlist } from "./channel-access-configure-BoUsC-Ys.js";
43
+ import { a as unbindThreadBindingsBySessionKey, n as listThreadBindingsBySessionKey, t as autoBindSpawnedDiscordSubagent } from "./thread-bindings.lifecycle-Y9T3CQGf.js";
44
44
 
45
45
  //#region src/channels/plugins/normalize/discord.ts
46
46
  function normalizeDiscordMessagingTarget(raw) {
@@ -145,7 +145,7 @@ async function promptDiscordAllowFrom(params) {
145
145
  parseId,
146
146
  invalidWithoutTokenNote: "Bot token missing; use numeric user ids (or mention form) only.",
147
147
  resolveEntries: async ({ token, entries }) => {
148
- const { resolveDiscordUserAllowlist } = await import("./resolve-users-V6dHh_2B.js").then((n) => n.n);
148
+ const { resolveDiscordUserAllowlist } = await import("./resolve-users-IevCOk4W.js").then((n) => n.n);
149
149
  return resolveDiscordUserAllowlist({
150
150
  token,
151
151
  entries
@@ -273,7 +273,7 @@ const discordOnboardingAdapter = {
273
273
  resolved: false
274
274
  }));
275
275
  if (accountWithTokens.token && entries.length > 0) try {
276
- const { resolveDiscordChannelAllowlist } = await import("./resolve-channels-87LZrFk_.js").then((n) => n.n);
276
+ const { resolveDiscordChannelAllowlist } = await import("./resolve-channels-1HtDcMqh.js").then((n) => n.n);
277
277
  resolved = await resolveDiscordChannelAllowlist({
278
278
  token: accountWithTokens.token,
279
279
  entries
@@ -1,4 +1,4 @@
1
- import { t as createDraftStreamLoop } from "./draft-stream-loop-CrOPfV3F.js";
1
+ import { t as createDraftStreamLoop } from "./draft-stream-loop-DMBwjjd1.js";
2
2
 
3
3
  //#region src/channels/status-reactions.ts
4
4
  const DEFAULT_EMOJIS = {
@@ -1,4 +1,4 @@
1
- import { _ as fetchDiscord, i as normalizeDiscordSlug } from "./allow-list-DyAxs4yw.js";
1
+ import { _ as fetchDiscord, i as normalizeDiscordSlug } from "./allow-list-Bf45HfoP.js";
2
2
 
3
3
  //#region src/discord/guilds.ts
4
4
  async function listGuilds(token, fetcher) {
@@ -1,4 +1,4 @@
1
- import "./runtime-2B9_WKoI.js";
1
+ import "./runtime-CXSQwMaR.js";
2
2
  import "./subsystem-DBPNbQDQ.js";
3
3
  import "./globals-B_jjtAje.js";
4
4
  import "./paths-BEmvSyOV.js";
@@ -10,31 +10,31 @@ import "./accounts-CuqIKU8X.js";
10
10
  import "./logger-BbFvCoKk.js";
11
11
  import "./exec-DQ8j4Fm3.js";
12
12
  import "./accounts-Brn3-uWN.js";
13
- import "./allow-list-DyAxs4yw.js";
13
+ import "./allow-list-Bf45HfoP.js";
14
14
  import "./redact-Bm8vu_ju.js";
15
15
  import "./github-copilot-token-CUK__1s1.js";
16
16
  import "./retry-DstNBhDW.js";
17
17
  import "./paths-CTZ2RS_E.js";
18
18
  import "./ssrf-fG4UHKBw.js";
19
19
  import "./fetch-guard-CeG6u6ld.js";
20
- import "./chunk-CyoyqpbG.js";
20
+ import "./chunk-CBpl-AiQ.js";
21
21
  import "./optional-runtime-dependency-0dznm3ZO.js";
22
22
  import "./image-ops-DQi0n_Tt.js";
23
23
  import { a as jsonResult, c as readReactionParams, d as readStringParam, l as readStringArrayParam, o as parseAvailableTags, s as readNumberParam } from "./common-HCcXU-NR.js";
24
24
  import "./path-alias-guards-DjgDArrp.js";
25
25
  import "./fs-safe-g4g7GT02.js";
26
- import "./media-CAdQF5TG.js";
27
- import "./markdown-tables-DCOXEUfZ.js";
28
- import "./fetch-BtmoPIlf.js";
29
- import { t as assertMediaNotDataUrl } from "./sandbox-paths-Dx2lUqCu.js";
30
- import { i as withNormalizedTimestamp } from "./date-time-uUevHscU.js";
31
- import "./directory-live-CSuYxdwk.js";
32
- import { n as resolveDiscordChannelId } from "./targets-CtSbTxYX.js";
33
- import "./render-e7fENCYH.js";
34
- import "./tables-B3jr0Pvq.js";
35
- import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, D as pinMessageDiscord, E as listThreadsDiscord, 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, P as fetchChannelInfoDiscord, R as kickMemberDiscord, S as deleteMessageDiscord, T as listPinsDiscord, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, a as removeReactionDiscord, et as hasAnyGuildPermissionDiscord, g as sendMessageDiscord, i as removeOwnReactionsDiscord, j as addRoleDiscord, k as searchMessagesDiscord, n as fetchReactionsDiscord, o as sendDiscordComponentMessage, p as readDiscordComponentSpec, q as deleteChannelDiscord, r as reactMessageDiscord, v as sendStickerDiscord, w as fetchMessageDiscord, x as createThreadDiscord, y as sendVoiceMessageDiscord, z as listGuildChannelsDiscord } from "./send-DCO441U7.js";
36
- import "./retry-policy-C6SjKjQA.js";
37
- import { i as getPresence, t as getGateway } from "./gateway-registry-DZDsqicG.js";
26
+ import "./media-BAoaxCrt.js";
27
+ import "./markdown-tables-d7GlUs5R.js";
28
+ import "./fetch-B0v6OTUZ.js";
29
+ import { t as assertMediaNotDataUrl } from "./sandbox-paths-Bzh1CuZc.js";
30
+ import { i as withNormalizedTimestamp } from "./date-time-ChY_tHoG.js";
31
+ import "./directory-live-BXMpuYAF.js";
32
+ import { n as resolveDiscordChannelId } from "./targets-DDbNnLnB.js";
33
+ import "./render-DrBfVs0u.js";
34
+ import "./tables-_1W36GII.js";
35
+ import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, D as pinMessageDiscord, E as listThreadsDiscord, 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, P as fetchChannelInfoDiscord, R as kickMemberDiscord, S as deleteMessageDiscord, T as listPinsDiscord, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, a as removeReactionDiscord, et as hasAnyGuildPermissionDiscord, g as sendMessageDiscord, i as removeOwnReactionsDiscord, j as addRoleDiscord, k as searchMessagesDiscord, n as fetchReactionsDiscord, o as sendDiscordComponentMessage, p as readDiscordComponentSpec, q as deleteChannelDiscord, r as reactMessageDiscord, v as sendStickerDiscord, w as fetchMessageDiscord, x as createThreadDiscord, y as sendVoiceMessageDiscord, z as listGuildChannelsDiscord } from "./send-BXBS_mRK.js";
36
+ import "./retry-policy-CXh1owkc.js";
37
+ import { i as getPresence, t as getGateway } from "./gateway-registry-Bgl2GFgy.js";
38
38
  import { PermissionFlagsBits } from "discord-api-types/v10";
39
39
 
40
40
  //#region src/agents/tools/discord-actions-guild.ts
@@ -1,14 +1,14 @@
1
1
  import { t as ChatType } from "./chat-type-CK5stkc4.js";
2
2
  import { n as DEFAULT_ACCOUNT_ID, r as normalizeAccountId, t as resolveThreadSessionKeys } from "./session-key--_1zVBRB.js";
3
3
  import { $ as ChannelPollContext, $t as MSTeamsReplyStyle, A as ChannelSecurityAdapter, An as SafeBinProfileFixture, At as FasedAgentConfig, B as ChannelCapabilities, C as ChannelLogoutResult, Cn as BlockStreamingCoalesceConfig, Ct as RuntimeEnv, D as ChannelResolveKind, Dn as MarkdownConfig, Dt as resolveIMessageAccount, E as ChannelPairingAdapter, Et as resolveDefaultIMessageAccountId, F as ChannelAccountSnapshot, G as ChannelId, H as ChannelDirectoryEntryKind, I as ChannelAccountState, J as ChannelMessageActionAdapter, K as ChannelLogSink, M as ChannelStatusAdapter, Mn as ReplyPayload, N as BaseProbeResult, Nn as CHANNEL_MESSAGE_ACTION_NAMES, O as ChannelResolveResult, On as MarkdownTableMode, P as BaseTokenResolution, Pt as ModelProviderConfig, Q as ChannelOutboundTargetMode, Qt as MSTeamsConfig, R as ChannelAgentTool, S as ChannelLogoutContext, T as ChannelOutboundContext, Tn as GroupPolicy, Tt as listIMessageAccountIds, U as ChannelGroupContext, V as ChannelDirectoryEntry, W as ChannelHeartbeatDeps, X as ChannelMessagingAdapter, Xt as SignalAccountConfig, Y as ChannelMessageActionContext, Z as ChannelMeta, Zt as MSTeamsChannelConfig, _ as ChannelGatewayContext, a as PromptAccountId, an as GoogleChatGroupConfig, at as ChannelStreamingAdapter, b as ChannelLoginWithQrStartResult, bn as GroupToolPolicyBySenderConfig, ct as ChannelThreadingToolContext, d as ChannelAuthAdapter, dt as OutboundDeliveryResult, en as MSTeamsTeamConfig, et as ChannelPollResult, f as ChannelCommandAdapter, g as ChannelGatewayAdapter, h as ChannelElevatedAdapter, i as ChannelOnboardingDmPolicy, in as GoogleChatDmConfig, it as ChannelStatusIssue, j as ChannelSetupAdapter, jn as GetReplyOptions, k as ChannelResolverAdapter, ln as ChunkMode, lt as ChannelToolSend, m as ChannelDirectoryAdapter, n as ChannelPlugin, nn as GoogleChatActionConfig, nt as ChannelSecurityDmPolicy, o as WizardPrompter, ot as ChannelThreadingAdapter, p as ChannelConfigAdapter, q as ChannelMentionAdapter, r as ChannelOnboardingAdapter, rn as GoogleChatConfig, rt as ChannelSetupInput, s as loadConfig, sn as DmConfig, st as ChannelThreadingContext, t as ChannelConfigSchema, tn as GoogleChatAccountConfig, tt as ChannelSecurityContext, u as ChannelMessageActionName, ut as getChatChannelMeta, v as ChannelGroupAdapter, w as ChannelOutboundAdapter, wn as DmPolicy, wt as ResolvedIMessageAccount, x as ChannelLoginWithQrWaitResult, xn as GroupToolPolicyConfig, y as ChannelHeartbeatAdapter, yn as PollInput, z as ChannelAgentToolFactory } from "./types.plugin-BcSBq42x.js";
4
- import { $ as RealtimeVoiceBridge, $t as extensionForMime, A as ProviderPlugin, At as LineAccountConfig, B as GeneratedVideoAsset, Bt as resolveDefaultGroupPolicy, C as ProviderAuthContext, Cn as readStringParam, Ct as ImageGenerationSourceImage, D as ProviderCatalogContext, Dn as SessionEntry, Dt as normalizeAccountId$1, E as ProviderAuthResult, En as SessionAcpMeta, Et as listLineAccountIds, F as RealtimeTranscriptionProviderPlugin, Ft as formatLocationText, G as VideoGenerationProviderCapabilities, H as VideoGenerationMode, Ht as warnMissingProviderGroupPolicyFallbackOnce, I as RealtimeVoiceProviderPlugin, It as toLocationContext, J as VideoGenerationResolution, K as VideoGenerationProviderConfiguredContext, L as VideoGenerationProviderPlugin, M as ProviderPluginWizard, Mt as LineConfig, N as ProviderPluginWizardModelPicker, Nt as ResolvedLineAccount, O as ProviderCatalogOrder, On as SessionSystemPromptReport, Ot as resolveDefaultLineAccountId, P as ProviderPluginWizardSetup, Pt as NormalizedLocation, Qt as detectMime, Rt as GROUP_POLICY_BLOCKED_LABEL, S as PluginLogger, Sn as readReactionParams, St as ImageGenerationResult, T as ProviderAuthMethod, Tn as SessionAcpIdentity, Tt as ChannelDock, U as VideoGenerationModeCapabilities, V as VideoGenerationIgnoredOverride, Vt as resolveOpenProviderRuntimeGroupPolicy, W as VideoGenerationProvider, X as VideoGenerationSourceAsset, Y as VideoGenerationResult, Z as VideoGenerationTransformCapabilities, _ as FasedAgentPluginApi, _n as createTypingCallbacks, _t as GeneratedImageAsset, a as PluginRuntimeSessionGetParams, an as resolveControlCommandGate, at as RealtimeVoiceProviderId, b as FasedAgentPluginServiceContext, bn as jsonResult, bt as ImageGenerationRequest, c as PluginRuntimeSessionListResult, cn as AckReactionScope, ct as RealtimeVoiceTool, d as PluginRuntimeAdminRpcAuditSink, dn as shouldAckReaction, dt as RealtimeTranscriptionProviderConfiguredContext, en as getFileExtension, et as RealtimeVoiceBridgeCallbacks, f as PluginRuntimeAdminRpcCallContext, fn as shouldAckReactionForWhatsApp, ft as RealtimeTranscriptionProviderId, g as PluginRegistry, gn as ResponsePrefixContext, gt as RealtimeTranscriptionSessionCreateRequest, h as PluginRuntimeAdminRpcInvoker, hn as resolveAckReaction, ht as RealtimeTranscriptionSessionCallbacks, i as PluginRuntimeSessionAuditSink, in as formatInboundFromLabel, it as RealtimeVoiceProviderConfiguredContext, j as ProviderPluginCatalog, jt as LineChannelData, k as ProviderCatalogResult, kt as resolveLineAccount, l as PluginRuntimeSessionStatus, ln as WhatsAppAckReactionMode, lt as RealtimeVoiceToolCallEvent, m as PluginRuntimeAdminRpcInvocation, mn as RoutePeerKind, mt as RealtimeTranscriptionSession, n as RuntimeLogger, nn as loadWebMedia, nt as RealtimeVoiceCloseReason, o as PluginRuntimeSessionHelpers, on as resolveToolsBySender, ot as RealtimeVoiceProviderResolveConfigContext, p as PluginRuntimeAdminRpcHelpers, pn as extractOriginalFilename, pt as RealtimeTranscriptionProviderResolveConfigContext, q as VideoGenerationRequest, r as PluginRuntimeSessionAuditEvent, rn as recordInboundSession, rt as RealtimeVoiceProviderConfig, s as PluginRuntimeSessionListParams, sn as AckReactionGateParams, st as RealtimeVoiceRole, t as PluginRuntime, tn as WebMediaResult, tt as RealtimeVoiceBridgeCreateRequest, u as PluginRuntimeAdminRpcAuditEvent, un as removeAckReactionAfterReply, ut as RealtimeTranscriptionProviderConfig, v as FasedAgentPluginConfigSchema, vn as AnyAgentTool, vt as ImageGenerationProvider, w as ProviderAuthKind, wn as AcpSessionRuntimeOptions, wt as HookEntry, x as ImageGenerationProviderPlugin, xn as readNumberParam, xt as ImageGenerationResolution, y as FasedAgentPluginService, yn as createActionGate, yt as ImageGenerationProviderConfiguredContext, zt as resolveAllowlistProviderRuntimeGroupPolicy } from "./types-xWjHXl1z.js";
5
- import { B as ExecTarget, D as normalizeE164, E as escapeRegExp, F as isBlockedHostname, I as isBlockedHostnameOrIp, L as isPrivateIpAddress, M as LookupFn, N as SsrFBlockedError, O as safeParseJson, P as SsrFPolicy, R as ExecAsk, T as clamp, _ as PushTestParams, a as GatewayClient, c as GatewayRequestHandlerOptions, d as GatewayStartupTraceSnapshot, f as ModelCatalogEntry, g as ErrorShape, h as CommandsListResult, k as sleep, l as GatewayRequestHandlers, o as GatewayRequestContext, p as ModelFeature, s as GatewayRequestHandler, u as RespondFn, z as ExecSecurity } from "./types-DUjYaWB2.js";
4
+ import { $ as RealtimeVoiceBridge, $t as extensionForMime, A as ProviderPlugin, At as LineAccountConfig, B as GeneratedVideoAsset, Bt as resolveDefaultGroupPolicy, C as ProviderAuthContext, Cn as readStringParam, Ct as ImageGenerationSourceImage, D as ProviderCatalogContext, Dn as SessionEntry, Dt as normalizeAccountId$1, E as ProviderAuthResult, En as SessionAcpMeta, Et as listLineAccountIds, F as RealtimeTranscriptionProviderPlugin, Ft as formatLocationText, G as VideoGenerationProviderCapabilities, H as VideoGenerationMode, Ht as warnMissingProviderGroupPolicyFallbackOnce, I as RealtimeVoiceProviderPlugin, It as toLocationContext, J as VideoGenerationResolution, K as VideoGenerationProviderConfiguredContext, L as VideoGenerationProviderPlugin, M as ProviderPluginWizard, Mt as LineConfig, N as ProviderPluginWizardModelPicker, Nt as ResolvedLineAccount, O as ProviderCatalogOrder, On as SessionSystemPromptReport, Ot as resolveDefaultLineAccountId, P as ProviderPluginWizardSetup, Pt as NormalizedLocation, Qt as detectMime, Rt as GROUP_POLICY_BLOCKED_LABEL, S as PluginLogger, Sn as readReactionParams, St as ImageGenerationResult, T as ProviderAuthMethod, Tn as SessionAcpIdentity, Tt as ChannelDock, U as VideoGenerationModeCapabilities, V as VideoGenerationIgnoredOverride, Vt as resolveOpenProviderRuntimeGroupPolicy, W as VideoGenerationProvider, X as VideoGenerationSourceAsset, Y as VideoGenerationResult, Z as VideoGenerationTransformCapabilities, _ as FasedAgentPluginApi, _n as createTypingCallbacks, _t as GeneratedImageAsset, a as PluginRuntimeSessionGetParams, an as resolveControlCommandGate, at as RealtimeVoiceProviderId, b as FasedAgentPluginServiceContext, bn as jsonResult, bt as ImageGenerationRequest, c as PluginRuntimeSessionListResult, cn as AckReactionScope, ct as RealtimeVoiceTool, d as PluginRuntimeAdminRpcAuditSink, dn as shouldAckReaction, dt as RealtimeTranscriptionProviderConfiguredContext, en as getFileExtension, et as RealtimeVoiceBridgeCallbacks, f as PluginRuntimeAdminRpcCallContext, fn as shouldAckReactionForWhatsApp, ft as RealtimeTranscriptionProviderId, g as PluginRegistry, gn as ResponsePrefixContext, gt as RealtimeTranscriptionSessionCreateRequest, h as PluginRuntimeAdminRpcInvoker, hn as resolveAckReaction, ht as RealtimeTranscriptionSessionCallbacks, i as PluginRuntimeSessionAuditSink, in as formatInboundFromLabel, it as RealtimeVoiceProviderConfiguredContext, j as ProviderPluginCatalog, jt as LineChannelData, k as ProviderCatalogResult, kt as resolveLineAccount, l as PluginRuntimeSessionStatus, ln as WhatsAppAckReactionMode, lt as RealtimeVoiceToolCallEvent, m as PluginRuntimeAdminRpcInvocation, mn as RoutePeerKind, mt as RealtimeTranscriptionSession, n as RuntimeLogger, nn as loadWebMedia, nt as RealtimeVoiceCloseReason, o as PluginRuntimeSessionHelpers, on as resolveToolsBySender, ot as RealtimeVoiceProviderResolveConfigContext, p as PluginRuntimeAdminRpcHelpers, pn as extractOriginalFilename, pt as RealtimeTranscriptionProviderResolveConfigContext, q as VideoGenerationRequest, r as PluginRuntimeSessionAuditEvent, rn as recordInboundSession, rt as RealtimeVoiceProviderConfig, s as PluginRuntimeSessionListParams, sn as AckReactionGateParams, st as RealtimeVoiceRole, t as PluginRuntime, tn as WebMediaResult, tt as RealtimeVoiceBridgeCreateRequest, u as PluginRuntimeAdminRpcAuditEvent, un as removeAckReactionAfterReply, ut as RealtimeTranscriptionProviderConfig, v as FasedAgentPluginConfigSchema, vn as AnyAgentTool, vt as ImageGenerationProvider, w as ProviderAuthKind, wn as AcpSessionRuntimeOptions, wt as HookEntry, x as ImageGenerationProviderPlugin, xn as readNumberParam, xt as ImageGenerationResolution, y as FasedAgentPluginService, yn as createActionGate, yt as ImageGenerationProviderConfiguredContext, zt as resolveAllowlistProviderRuntimeGroupPolicy } from "./types-DtCOO_hW.js";
5
+ import { B as ExecTarget, D as normalizeE164, E as escapeRegExp, F as isBlockedHostname, I as isBlockedHostnameOrIp, L as isPrivateIpAddress, M as LookupFn, N as SsrFBlockedError, O as safeParseJson, P as SsrFPolicy, R as ExecAsk, T as clamp, _ as PushTestParams, a as GatewayClient, c as GatewayRequestHandlerOptions, d as GatewayStartupTraceSnapshot, f as ModelCatalogEntry, g as ErrorShape, h as CommandsListResult, k as sleep, l as GatewayRequestHandlers, o as GatewayRequestContext, p as ModelFeature, s as GatewayRequestHandler, u as RespondFn, z as ExecSecurity } from "./types-B-zL9gSv.js";
6
6
  import { a as VerboseLevel, i as ThinkLevel, n as SkillSnapshot, r as ReasoningLevel } from "./types-D0kDG8l0.js";
7
- import { a as buildChannelConfigSchema, c as emptyPluginConfigSchema, i as setAccountEnabledInConfigSection, n as formatPairingApproveHint, o as applyAccountNameToChannelSection, r as deleteAccountFromConfigSection, s as migrateBaseNameToDefaultAccount, t as PAIRING_APPROVED_MESSAGE } from "./pairing-message-L6L6L2YF.js";
7
+ import { a as buildChannelConfigSchema, c as emptyPluginConfigSchema, i as setAccountEnabledInConfigSection, n as formatPairingApproveHint, o as applyAccountNameToChannelSection, r as deleteAccountFromConfigSection, s as migrateBaseNameToDefaultAccount, t as PAIRING_APPROVED_MESSAGE } from "./pairing-message-mKO92L-M.js";
8
8
  import { a as listDevicePairing, i as approveDevicePairing, n as resolveTailnetHostWithRunner, o as rejectDevicePairing, r as resolveGatewayBindUrl, t as runPluginCommandWithTimeout } from "./run-command-i_W6EFb1.js";
9
9
  import { _ as buildTokenChannelStatusSummary, a as resolveGoogleChatGroupRequireMention, c as resolveIMessageGroupToolPolicy, g as buildBaseChannelStatusSummary, h as buildBaseAccountStatusSnapshot, n as resolveBlueBubblesGroupToolPolicy, o as resolveGoogleChatGroupToolPolicy, s as resolveIMessageGroupRequireMention, t as resolveBlueBubblesGroupRequireMention, v as collectStatusIssuesFromLastError, y as createDefaultChannelRuntimeState } from "./group-mentions-q3hUTCt7.js";
10
- import { a as SignalConfigSchema, i as MSTeamsConfigSchema, n as GoogleChatConfigSchema, r as IMessageConfigSchema } from "./zod-schema.providers-core-CIzCjXH9.js";
11
- import { d as FileLockHandle, f as FileLockOptions, m as withFileLock, n as fetchWithSsrFGuard, p as acquireFileLock, r as listAgentIds, s as resolveDefaultAgentId, t as resolvePreferredFasedAgentTmpDir } from "./tmp-fased-dir-d1CmFAnJ.js";
10
+ import { a as SignalConfigSchema, i as MSTeamsConfigSchema, n as GoogleChatConfigSchema, r as IMessageConfigSchema } from "./zod-schema.providers-core-BCDlgtls.js";
11
+ import { d as FileLockHandle, f as FileLockOptions, m as withFileLock, n as fetchWithSsrFGuard, p as acquireFileLock, r as listAgentIds, s as resolveDefaultAgentId, t as resolvePreferredFasedAgentTmpDir } from "./tmp-fased-dir-BkpWlGUe.js";
12
12
  import { ImageContent } from "@mariozechner/pi-ai";
13
13
  import { AgentMessage } from "@mariozechner/pi-agent-core";
14
14
  import * as _sinclair_typebox0 from "@sinclair/typebox";
@@ -221,7 +221,7 @@ declare const BLUEBUBBLES_ACTIONS: {
221
221
  };
222
222
  };
223
223
  declare const BLUEBUBBLES_ACTION_NAMES: (keyof typeof BLUEBUBBLES_ACTIONS)[];
224
- declare const BLUEBUBBLES_GROUP_ACTIONS: Set<"search" | "reactions" | "sticker" | "permissions" | "edit" | "unsend" | "reply" | "sendWithEffect" | "renameGroup" | "setGroupIcon" | "addParticipant" | "removeParticipant" | "leaveGroup" | "sendAttachment" | "send" | "broadcast" | "poll" | "react" | "read" | "delete" | "pin" | "unpin" | "list-pins" | "thread-create" | "thread-list" | "thread-reply" | "sticker-search" | "member-info" | "role-info" | "emoji-list" | "emoji-upload" | "sticker-upload" | "role-add" | "role-remove" | "channel-info" | "channel-list" | "channel-create" | "channel-edit" | "channel-delete" | "channel-move" | "category-create" | "category-edit" | "category-delete" | "topic-create" | "voice-status" | "event-list" | "event-create" | "timeout" | "kick" | "ban" | "set-presence">;
224
+ declare const BLUEBUBBLES_GROUP_ACTIONS: Set<"send" | "broadcast" | "poll" | "react" | "reactions" | "read" | "edit" | "unsend" | "reply" | "sendWithEffect" | "renameGroup" | "setGroupIcon" | "addParticipant" | "removeParticipant" | "leaveGroup" | "sendAttachment" | "delete" | "pin" | "unpin" | "list-pins" | "permissions" | "thread-create" | "thread-list" | "thread-reply" | "search" | "sticker" | "sticker-search" | "member-info" | "role-info" | "emoji-list" | "emoji-upload" | "sticker-upload" | "role-add" | "role-remove" | "channel-info" | "channel-list" | "channel-create" | "channel-edit" | "channel-delete" | "channel-move" | "category-create" | "category-edit" | "category-delete" | "topic-create" | "voice-status" | "event-list" | "event-create" | "timeout" | "kick" | "ban" | "set-presence">;
225
225
  //#endregion
226
226
  //#region src/plugins/http-path.d.ts
227
227
  declare function normalizePluginHttpPath(path?: string | null, fallback?: string | null): string | null;
@@ -302,14 +302,14 @@ declare const DmConfigSchema: z.ZodObject<{
302
302
  historyLimit: z.ZodOptional<z.ZodNumber>;
303
303
  }, z.core.$strict>;
304
304
  declare const GroupPolicySchema: z.ZodEnum<{
305
+ allowlist: "allowlist";
305
306
  open: "open";
306
307
  disabled: "disabled";
307
- allowlist: "allowlist";
308
308
  }>;
309
309
  declare const DmPolicySchema: z.ZodEnum<{
310
+ allowlist: "allowlist";
310
311
  open: "open";
311
312
  disabled: "disabled";
312
- allowlist: "allowlist";
313
313
  pairing: "pairing";
314
314
  }>;
315
315
  declare const BlockStreamingCoalesceSchema: z.ZodObject<{
@@ -339,19 +339,19 @@ declare const ReplyRuntimeConfigSchemaShape: {
339
339
  };
340
340
  declare const MarkdownTableModeSchema: z.ZodEnum<{
341
341
  off: "off";
342
- bullets: "bullets";
343
342
  code: "code";
343
+ bullets: "bullets";
344
344
  }>;
345
345
  declare const MarkdownConfigSchema: z.ZodOptional<z.ZodObject<{
346
346
  tables: z.ZodOptional<z.ZodEnum<{
347
347
  off: "off";
348
- bullets: "bullets";
349
348
  code: "code";
349
+ bullets: "bullets";
350
350
  }>>;
351
351
  }, z.core.$strict>>;
352
352
  declare const TtsProviderSchema: z.ZodEnum<{
353
- elevenlabs: "elevenlabs";
354
353
  openai: "openai";
354
+ elevenlabs: "elevenlabs";
355
355
  edge: "edge";
356
356
  }>;
357
357
  declare const TtsModeSchema: z.ZodEnum<{
@@ -377,8 +377,8 @@ declare const TtsConfigSchema: z.ZodOptional<z.ZodObject<{
377
377
  final: "final";
378
378
  }>>;
379
379
  provider: z.ZodOptional<z.ZodEnum<{
380
- elevenlabs: "elevenlabs";
381
380
  openai: "openai";
381
+ elevenlabs: "elevenlabs";
382
382
  edge: "edge";
383
383
  }>>;
384
384
  summaryModel: z.ZodOptional<z.ZodString>;
@@ -2413,15 +2413,15 @@ declare const LineConfigSchema: z.ZodObject<{
2413
2413
  allowFrom: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
2414
2414
  groupAllowFrom: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
2415
2415
  dmPolicy: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
2416
+ allowlist: "allowlist";
2416
2417
  open: "open";
2417
2418
  disabled: "disabled";
2418
- allowlist: "allowlist";
2419
2419
  pairing: "pairing";
2420
2420
  }>>>;
2421
2421
  groupPolicy: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
2422
+ allowlist: "allowlist";
2422
2423
  open: "open";
2423
2424
  disabled: "disabled";
2424
- allowlist: "allowlist";
2425
2425
  }>>>;
2426
2426
  responsePrefix: z.ZodOptional<z.ZodString>;
2427
2427
  mediaMaxMb: z.ZodOptional<z.ZodNumber>;
@@ -2436,15 +2436,15 @@ declare const LineConfigSchema: z.ZodObject<{
2436
2436
  allowFrom: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
2437
2437
  groupAllowFrom: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
2438
2438
  dmPolicy: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
2439
+ allowlist: "allowlist";
2439
2440
  open: "open";
2440
2441
  disabled: "disabled";
2441
- allowlist: "allowlist";
2442
2442
  pairing: "pairing";
2443
2443
  }>>>;
2444
2444
  groupPolicy: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
2445
+ allowlist: "allowlist";
2445
2446
  open: "open";
2446
2447
  disabled: "disabled";
2447
- allowlist: "allowlist";
2448
2448
  }>>>;
2449
2449
  responsePrefix: z.ZodOptional<z.ZodString>;
2450
2450
  mediaMaxMb: z.ZodOptional<z.ZodNumber>;
@@ -1,5 +1,5 @@
1
- import { $n as resolveFederationHandle, $r as resolveSingleWebhookTargetAsync, Ai as normalizeRealtimeVoiceProviderId, B as logAckFailure, Bi as downloadDashscopeGeneratedVideos, Bn as requestBodyErrorToText, Br as createImageCard, C as resolveEffectiveToolInventory, Ci as resolveEffectiveAllowFromLists, D as runEmbeddedPiAgent, Di as canonicalizeRealtimeVoiceProviderId, E as ACPX_PUSH_TEST_WRAPPER_ID, Ei as evaluateSenderGroupAccess, En as AcpRuntimeError, F as resolveMentionGatingWithBypass, Fi as DEFAULT_VIDEO_GENERATION_DURATION_SECONDS, Fn as RequestBodyLimitError, Fr as hasMarkdownToConvert, Gi as formatAllowlistMatchMeta, Gr as waitForAbortSignal, H as logTypingFailure, Hi as pollDashscopeVideoTaskUntilComplete, Hn as resolveChannelMediaMaxBytes, Hr as createListCard, I as listLineAccountIds, Ii as DEFAULT_VIDEO_GENERATION_TIMEOUT_MS, In as installRequestBodyLimitGuard, Ir as processLineMessage, J as shouldAckReaction, Ji as BLUEBUBBLES_ACTION_NAMES, Jr as createDedupeCache, K as recordInboundSession, Ki as resolveAllowlistMatchSimple, Kr as createLoggerBackedRuntime, L as normalizeAccountId$1, Li as DEFAULT_VIDEO_RESOLUTION_TO_SIZE, Ln as isRequestBodyLimitError, Lr as stripMarkdown, M as issuePairingChallenge, Mi as getRealtimeTranscriptionProvider, N as createTypingCallbacks, Ni as listRealtimeTranscriptionProviders, Nn as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, Oi as getRealtimeVoiceProvider, P as resolveMentionGating, Pi as normalizeRealtimeTranscriptionProviderId, Pn as DEFAULT_WEBHOOK_MAX_BODY_BYTES, Qn as resolveFederationBaseUrl, Qr as resolveSingleWebhookTarget, R as resolveDefaultLineAccountId, Ri as buildDashscopeVideoGenerationInput, Rn as readJsonBodyWithLimit, Rr as createReceiptCard, S as getPublicGatewayIdentity, Si as resolveDmGroupAccessWithLists, T as ACPX_PUSH_TEST_METHOD, Ti as resolveControlCommandGate, Tn as unregisterAcpRuntimeBackend, Ui as resolveVideoGenerationReferenceUrls, Un as runFederationAutoConnectOnce, V as logInboundDrop, Vi as extractDashscopeVideoUrls, Vr as createInfoCard, Wi as registerPluginHttpRoute, Wn as startFederationAutoConnect, Xi as CHANNEL_MESSAGE_ACTION_NAMES, Xn as normalizeHandle, Xr as registerWebhookTarget, Y as shouldAckReactionForWhatsApp, Yi as BLUEBUBBLES_GROUP_ACTIONS, Yn as DEFAULT_FEDERATION_BASE_URL, Zn as resolveAgentPublicOrigin, Zr as rejectNonPostWebhookRequest, _ as getGatewayUpdateStatus, _i as resolveChannelAccountConfigBasePath, a as normalizeIMessageMessagingTarget, ai as buildHostnameAllowlistPolicyFromSuffixAllowlist, b as getStatusSummary, bi as readStoreAllowFromForDmPolicy, ci as createNormalizedOutboundDeliverer, cn as DEFAULT_GROUP_HISTORY_LIMIT, d as mergeAllowlist, di as sendMediaWithLeadingCaption, dn as clearHistoryEntries, ei as resolveWebhookTargets, fi as buildOauthProviderAuthResult, fn as clearHistoryEntriesIfEnabled, g as buildCommandsListResult, gi as chunkTextForOutbound, h as getAcpStatusSnapshot, hi as buildAgentMediaPayload, hn as recordPendingHistoryEntryIfEnabled, i as looksLikeIMessageTargetId, ii as withTempDownloadPath, in as stringEnum, ji as canonicalizeRealtimeTranscriptionProviderId, ki as listRealtimeVoiceProviders, li as formatTextWithAttachmentLinks, m as pushHandlers, mi as fetchWithBearerAuthScopeFallback, mn as recordPendingHistoryEntry, n as collectBlueBubblesStatusIssues, ni as resolveWebhookPath, nt as formatInboundFromLabel, o as imessageOnboardingAdapter, oi as isHttpsUrlAllowedByHostnameSuffixAllowlist, p as summarizeMapping, pi as createScopedPairingAccess, pn as evictOldHistoryKeys, q as removeAckReactionAfterReply, qi as BLUEBUBBLES_ACTIONS, qr as createPersistentDedupe, r as signalOnboardingAdapter, ri as extractToolSend, rn as optionalStringEnum, s as buildMediaPayload, si as normalizeHostnameSuffixAllowlist, t as LineConfigSchema, ti as normalizeWebhookPath, ui as resolveOutboundMediaUrls, un as buildPendingHistoryContextFromMap, v as buildModelCatalogStatus, vi as resolveSenderCommandAuthorization, w as executeAcpxPushTestRequest, wn as registerAcpRuntimeBackend, x as isDangerousNameMatchingEnabled, xi as resolveDmGroupAccessWithCommandGate, y as loadGatewayModelCatalog, yi as DM_GROUP_ACCESS_REASON, z as resolveLineAccount, zi as buildDashscopeVideoGenerationParameters, zn as readRequestBodyWithLimit, zr as createActionCard } from "./config-schema-BPnaDBwZ.js";
2
- import { Bt as resolveBlueBubblesGroupRequireMention, Gt as resolveGoogleChatGroupToolPolicy, Kt as resolveIMessageGroupRequireMention, Nn as getChatChannelMeta, Rt as looksLikeSignalTargetId, Vt as resolveBlueBubblesGroupToolPolicy, Wt as resolveGoogleChatGroupRequireMention, Xn as normalizePluginHttpPath, dn as resolveDefaultSignalAccountId, fn as resolveSignalAccount, hn as resolveIMessageAccount, mn as resolveDefaultIMessageAccountId, pn as listIMessageAccountIds, qt as resolveIMessageGroupToolPolicy, un as listSignalAccountIds, yn as resolveToolsBySender, zt as normalizeSignalMessagingTarget } from "./runtime-2B9_WKoI.js";
1
+ import { $n as resolveFederationHandle, $r as resolveSingleWebhookTargetAsync, Ai as normalizeRealtimeVoiceProviderId, B as logAckFailure, Bi as downloadDashscopeGeneratedVideos, Bn as requestBodyErrorToText, Br as createImageCard, C as resolveEffectiveToolInventory, Ci as resolveEffectiveAllowFromLists, D as runEmbeddedPiAgent, Di as canonicalizeRealtimeVoiceProviderId, E as ACPX_PUSH_TEST_WRAPPER_ID, Ei as evaluateSenderGroupAccess, En as AcpRuntimeError, F as resolveMentionGatingWithBypass, Fi as DEFAULT_VIDEO_GENERATION_DURATION_SECONDS, Fn as RequestBodyLimitError, Fr as hasMarkdownToConvert, Gi as formatAllowlistMatchMeta, Gr as waitForAbortSignal, H as logTypingFailure, Hi as pollDashscopeVideoTaskUntilComplete, Hn as resolveChannelMediaMaxBytes, Hr as createListCard, I as listLineAccountIds, Ii as DEFAULT_VIDEO_GENERATION_TIMEOUT_MS, In as installRequestBodyLimitGuard, Ir as processLineMessage, J as shouldAckReaction, Ji as BLUEBUBBLES_ACTION_NAMES, Jr as createDedupeCache, K as recordInboundSession, Ki as resolveAllowlistMatchSimple, Kr as createLoggerBackedRuntime, L as normalizeAccountId$1, Li as DEFAULT_VIDEO_RESOLUTION_TO_SIZE, Ln as isRequestBodyLimitError, Lr as stripMarkdown, M as issuePairingChallenge, Mi as getRealtimeTranscriptionProvider, N as createTypingCallbacks, Ni as listRealtimeTranscriptionProviders, Nn as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, Oi as getRealtimeVoiceProvider, P as resolveMentionGating, Pi as normalizeRealtimeTranscriptionProviderId, Pn as DEFAULT_WEBHOOK_MAX_BODY_BYTES, Qn as resolveFederationBaseUrl, Qr as resolveSingleWebhookTarget, R as resolveDefaultLineAccountId, Ri as buildDashscopeVideoGenerationInput, Rn as readJsonBodyWithLimit, Rr as createReceiptCard, S as getPublicGatewayIdentity, Si as resolveDmGroupAccessWithLists, T as ACPX_PUSH_TEST_METHOD, Ti as resolveControlCommandGate, Tn as unregisterAcpRuntimeBackend, Ui as resolveVideoGenerationReferenceUrls, Un as runFederationAutoConnectOnce, V as logInboundDrop, Vi as extractDashscopeVideoUrls, Vr as createInfoCard, Wi as registerPluginHttpRoute, Wn as startFederationAutoConnect, Xi as CHANNEL_MESSAGE_ACTION_NAMES, Xn as normalizeHandle, Xr as registerWebhookTarget, Y as shouldAckReactionForWhatsApp, Yi as BLUEBUBBLES_GROUP_ACTIONS, Yn as DEFAULT_FEDERATION_BASE_URL, Zn as resolveAgentPublicOrigin, Zr as rejectNonPostWebhookRequest, _ as getGatewayUpdateStatus, _i as resolveChannelAccountConfigBasePath, a as normalizeIMessageMessagingTarget, ai as buildHostnameAllowlistPolicyFromSuffixAllowlist, b as getStatusSummary, bi as readStoreAllowFromForDmPolicy, ci as createNormalizedOutboundDeliverer, cn as DEFAULT_GROUP_HISTORY_LIMIT, d as mergeAllowlist, di as sendMediaWithLeadingCaption, dn as clearHistoryEntries, ei as resolveWebhookTargets, fi as buildOauthProviderAuthResult, fn as clearHistoryEntriesIfEnabled, g as buildCommandsListResult, gi as chunkTextForOutbound, h as getAcpStatusSnapshot, hi as buildAgentMediaPayload, hn as recordPendingHistoryEntryIfEnabled, i as looksLikeIMessageTargetId, ii as withTempDownloadPath, in as stringEnum, ji as canonicalizeRealtimeTranscriptionProviderId, ki as listRealtimeVoiceProviders, li as formatTextWithAttachmentLinks, m as pushHandlers, mi as fetchWithBearerAuthScopeFallback, mn as recordPendingHistoryEntry, n as collectBlueBubblesStatusIssues, ni as resolveWebhookPath, nt as formatInboundFromLabel, o as imessageOnboardingAdapter, oi as isHttpsUrlAllowedByHostnameSuffixAllowlist, p as summarizeMapping, pi as createScopedPairingAccess, pn as evictOldHistoryKeys, q as removeAckReactionAfterReply, qi as BLUEBUBBLES_ACTIONS, qr as createPersistentDedupe, r as signalOnboardingAdapter, ri as extractToolSend, rn as optionalStringEnum, s as buildMediaPayload, si as normalizeHostnameSuffixAllowlist, t as LineConfigSchema, ti as normalizeWebhookPath, ui as resolveOutboundMediaUrls, un as buildPendingHistoryContextFromMap, v as buildModelCatalogStatus, vi as resolveSenderCommandAuthorization, w as executeAcpxPushTestRequest, wn as registerAcpRuntimeBackend, x as isDangerousNameMatchingEnabled, xi as resolveDmGroupAccessWithCommandGate, y as loadGatewayModelCatalog, yi as DM_GROUP_ACCESS_REASON, z as resolveLineAccount, zi as buildDashscopeVideoGenerationParameters, zn as readRequestBodyWithLimit, zr as createActionCard } from "./config-schema-DjU_uD-6.js";
2
+ import { Bt as resolveBlueBubblesGroupRequireMention, Gt as resolveGoogleChatGroupToolPolicy, Kt as resolveIMessageGroupRequireMention, Nn as getChatChannelMeta, Rt as looksLikeSignalTargetId, Vt as resolveBlueBubblesGroupToolPolicy, Wt as resolveGoogleChatGroupRequireMention, Xn as normalizePluginHttpPath, dn as resolveDefaultSignalAccountId, fn as resolveSignalAccount, hn as resolveIMessageAccount, mn as resolveDefaultIMessageAccountId, pn as listIMessageAccountIds, qt as resolveIMessageGroupToolPolicy, un as listSignalAccountIds, yn as resolveToolsBySender, zt as normalizeSignalMessagingTarget } from "./runtime-CXSQwMaR.js";
3
3
  import { n as stripAnsi } from "./subsystem-DBPNbQDQ.js";
4
4
  import { g as registerLogTransport, w as resolvePreferredFasedAgentTmpDir } from "./globals-B_jjtAje.js";
5
5
  import "./paths-BEmvSyOV.js";
@@ -12,7 +12,7 @@ import "./accounts-CuqIKU8X.js";
12
12
  import "./logger-BbFvCoKk.js";
13
13
  import "./exec-DQ8j4Fm3.js";
14
14
  import "./accounts-Brn3-uWN.js";
15
- import { C as resolveNestedAllowlistDecision, S as resolveChannelEntryMatchWithFallback, b as normalizeChannelSlug, x as resolveChannelEntryMatch, y as buildChannelKeyCandidates } from "./allow-list-DyAxs4yw.js";
15
+ import { C as resolveNestedAllowlistDecision, S as resolveChannelEntryMatchWithFallback, b as normalizeChannelSlug, x as resolveChannelEntryMatch, y as buildChannelKeyCandidates } from "./allow-list-Bf45HfoP.js";
16
16
  import { n as redactSensitiveText } from "./redact-Bm8vu_ju.js";
17
17
  import "./github-copilot-token-CUK__1s1.js";
18
18
  import "./retry-DstNBhDW.js";
@@ -21,16 +21,16 @@ import { a as deleteAccountFromConfigSection, c as formatPairingApproveHint, n a
21
21
  import { a as isBlockedHostnameOrIp, i as isBlockedHostname, o as isPrivateIpAddress, t as SsrFBlockedError } from "./ssrf-fG4UHKBw.js";
22
22
  import { t as fetchWithSsrFGuard } from "./fetch-guard-CeG6u6ld.js";
23
23
  import { n as redactSensitiveUrlLikeString, t as redactSensitiveUrl } from "./redact-sensitive-url-g-ukZjwA.js";
24
- import { d as parseChatTargetPrefixesOrThrow, f as resolveServicePrefixedAllowTarget, g as isNormalizedSenderAllowed, h as isAllowedParsedChatSender, m as formatAllowFromLowercase, p as resolveServicePrefixedTarget, u as parseChatAllowTargetPrefixes } from "./send-CFzGKJXo.js";
24
+ import { d as parseChatTargetPrefixesOrThrow, f as resolveServicePrefixedAllowTarget, g as isNormalizedSenderAllowed, h as isAllowedParsedChatSender, m as formatAllowFromLowercase, p as resolveServicePrefixedTarget, u as parseChatAllowTargetPrefixes } from "./send-D-HfKQZm.js";
25
25
  import { A as resolveDefaultGroupPolicy, C as buildBaseChannelStatusSummary, D as formatDocsLink, E as createDefaultChannelRuntimeState, M as warnMissingProviderGroupPolicyFallbackOnce, O as GROUP_POLICY_BLOCKED_LABEL, S as buildBaseAccountStatusSnapshot, T as collectStatusIssuesFromLastError, j as resolveOpenProviderRuntimeGroupPolicy, k as resolveAllowlistProviderRuntimeGroupPolicy, r as mergeAllowFromEntries, t as addWildcardAllowFrom, u as promptAccountId, w as buildTokenChannelStatusSummary } from "./helpers-DMBU4oTo.js";
26
- import { A as formatLocationText, j as toLocationContext, n as isWSLEnv, r as isWSLSync, t as isWSL2Sync } from "./wsl-J-HscWxS.js";
27
- import { o as readJsonFileWithFallback, s as writeJsonFileAtomically } from "./pairing-store-BChahgI2.js";
28
- import "./chunk-CyoyqpbG.js";
26
+ import { A as formatLocationText, j as toLocationContext, n as isWSLEnv, r as isWSLSync, t as isWSL2Sync } from "./wsl-CTvIWvZz.js";
27
+ import { o as readJsonFileWithFallback, s as writeJsonFileAtomically } from "./pairing-store-B6J2C0vP.js";
28
+ import "./chunk-CBpl-AiQ.js";
29
29
  import { a as listDevicePairing, l as runPluginCommandWithTimeout, n as resolveGatewayBindUrl, o as rejectDevicePairing, r as approveDevicePairing, t as resolveTailnetHostWithRunner } from "./tailscale-status-DwpNdO3Z.js";
30
30
  import { a as resolveAckReaction, n as createReplyPrefixOptions, t as createReplyPrefixContext } from "./reply-prefix-CeVw7Mn2.js";
31
31
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-BbnqfVuu.js";
32
32
  import "./pairing-token-Cs3BRKc0.js";
33
- import { h as onDiagnosticEvent, m as isDiagnosticsEnabled, p as emitDiagnosticEvent } from "./diagnostic-DLL_zekv.js";
33
+ import { h as onDiagnosticEvent, m as isDiagnosticsEnabled, p as emitDiagnosticEvent } from "./diagnostic-sYs6Agr-.js";
34
34
  import "./diagnostic-session-state-DqgfGYqZ.js";
35
35
  import "./optional-runtime-dependency-0dznm3ZO.js";
36
36
  import { c as detectMime, l as extensionForMime, u as getFileExtension } from "./image-ops-DQi0n_Tt.js";
@@ -38,26 +38,27 @@ import "./memory-search-CrFPOeTH.js";
38
38
  import "./manager-BegWxNYX.js";
39
39
  import "./query-expansion-BG3FgzF7.js";
40
40
  import { a as jsonResult, c as readReactionParams, d as readStringParam, n as createActionGate, s as readNumberParam } from "./common-HCcXU-NR.js";
41
- import "./commands-registry-BfqdEWdF.js";
42
- import { X as rawDataToString } from "./runtime-dependency-DczkvPxn.js";
41
+ import "./commands-registry-G5KXSi_y.js";
42
+ import { X as rawDataToString } from "./runtime-dependency-nup8niQL.js";
43
43
  import "./path-alias-guards-DjgDArrp.js";
44
44
  import "./fs-safe-g4g7GT02.js";
45
- import { n as loadWebMedia } from "./media-CAdQF5TG.js";
46
- import "./markdown-tables-DCOXEUfZ.js";
47
- import "./send-B6KkGKZD.js";
48
- import { r as extractOriginalFilename } from "./outbound-attachment-QqTnIhZL.js";
49
- import "./fetch-BtmoPIlf.js";
50
- import "./thread-bindings.state-D9hg_M1c.js";
51
- import "./skill-commands-FKEPLS7T.js";
52
- import "./sandbox-paths-Dx2lUqCu.js";
53
- import "./directory-live-CSuYxdwk.js";
54
- import "./targets-CtSbTxYX.js";
55
- import { n as missingTargetError } from "./target-errors-Ckufe179.js";
56
- import "./pi-model-discovery-BX_JLcEJ.js";
57
- import "./resolve-route-C8tvQm8Z.js";
58
- import "./render-e7fENCYH.js";
59
- import "./tables-B3jr0Pvq.js";
60
- import { t as promptChannelAccessConfig } from "./channel-access-CcFRdRPO.js";
61
- import "./shared-CBgp_GBw.js";
45
+ import "./qr-image-B4MlMG4N.js";
46
+ import { n as loadWebMedia } from "./media-BAoaxCrt.js";
47
+ import "./markdown-tables-d7GlUs5R.js";
48
+ import "./send-D1j12ZgX.js";
49
+ import { r as extractOriginalFilename } from "./outbound-attachment-CyXM3cAv.js";
50
+ import "./fetch-B0v6OTUZ.js";
51
+ import "./thread-bindings.state-D2oOWDpv.js";
52
+ import "./skill-commands-iJtvpqgb.js";
53
+ import "./sandbox-paths-Bzh1CuZc.js";
54
+ import "./directory-live-BXMpuYAF.js";
55
+ import "./targets-DDbNnLnB.js";
56
+ import { n as missingTargetError } from "./target-errors-DfS1sLR9.js";
57
+ import "./pi-model-discovery-BHNVyRny.js";
58
+ import "./resolve-route-Dufnu2cT.js";
59
+ import "./render-DrBfVs0u.js";
60
+ import "./tables-_1W36GII.js";
61
+ import { t as promptChannelAccessConfig } from "./channel-access-B0aZBSd2.js";
62
+ import "./shared-D1AD2Ejn.js";
62
63
 
63
64
  export { ACPX_PUSH_TEST_METHOD, ACPX_PUSH_TEST_WRAPPER_ID, AcpRuntimeError, BLUEBUBBLES_ACTIONS, BLUEBUBBLES_ACTION_NAMES, BLUEBUBBLES_GROUP_ACTIONS, BlockStreamingCoalesceSchema, CHANNEL_MESSAGE_ACTION_NAMES, DEFAULT_ACCOUNT_ID, DEFAULT_FEDERATION_BASE_URL, DEFAULT_GROUP_HISTORY_LIMIT, DEFAULT_VIDEO_GENERATION_DURATION_SECONDS, DEFAULT_VIDEO_GENERATION_TIMEOUT_MS, DEFAULT_VIDEO_RESOLUTION_TO_SIZE, DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, DEFAULT_WEBHOOK_MAX_BODY_BYTES, DM_GROUP_ACCESS_REASON, DmConfigSchema, DmPolicySchema, GROUP_POLICY_BLOCKED_LABEL, GoogleChatConfigSchema, GroupPolicySchema, IMessageConfigSchema, LineConfigSchema, MSTeamsConfigSchema, MarkdownConfigSchema, MarkdownTableModeSchema, PAIRING_APPROVED_MESSAGE, ReplyRuntimeConfigSchemaShape, RequestBodyLimitError, SILENT_REPLY_TOKEN, SignalConfigSchema, SsrFBlockedError, ToolPolicySchema, TtsAutoSchema, TtsConfigSchema, TtsModeSchema, TtsProviderSchema, acquireFileLock, addWildcardAllowFrom, applyAccountNameToChannelSection, approveDevicePairing, buildAgentMediaPayload, buildBaseAccountStatusSnapshot, buildBaseChannelStatusSummary, buildChannelConfigSchema, buildChannelKeyCandidates, buildCommandsListResult, buildDashscopeVideoGenerationInput, buildDashscopeVideoGenerationParameters, buildHostnameAllowlistPolicyFromSuffixAllowlist, buildMediaPayload, buildModelCatalogStatus, buildOauthProviderAuthResult, buildPendingHistoryContextFromMap, buildTokenChannelStatusSummary, canonicalizeRealtimeTranscriptionProviderId, canonicalizeRealtimeVoiceProviderId, chunkTextForOutbound, clamp, clearHistoryEntries, clearHistoryEntriesIfEnabled, collectBlueBubblesStatusIssues, collectStatusIssuesFromLastError, createActionCard, createActionGate, createDedupeCache, createDefaultChannelRuntimeState, createImageCard, createInfoCard, createListCard, createLoggerBackedRuntime, createNormalizedOutboundDeliverer, createPersistentDedupe, createReceiptCard, createReplyPrefixContext, createReplyPrefixOptions, createScopedPairingAccess, createTypingCallbacks, deleteAccountFromConfigSection, detectMime, downloadDashscopeGeneratedVideos, emitDiagnosticEvent, emptyPluginConfigSchema, escapeRegExp, evaluateSenderGroupAccess, evictOldHistoryKeys, executeAcpxPushTestRequest, extensionForMime, extractDashscopeVideoUrls, extractOriginalFilename, extractToolSend, fetchWithBearerAuthScopeFallback, fetchWithSsrFGuard, formatAllowFromLowercase, formatAllowlistMatchMeta, formatDocsLink, formatErrorMessage, formatInboundFromLabel, formatLocationText, formatPairingApproveHint, formatTextWithAttachmentLinks, getAcpStatusSnapshot, getChatChannelMeta, getFileExtension, getGatewayUpdateStatus, getPublicGatewayIdentity, getRealtimeTranscriptionProvider, getRealtimeVoiceProvider, getStatusSummary, hasMarkdownToConvert, imessageOnboardingAdapter, installRequestBodyLimitGuard, isAllowedParsedChatSender, isBlockedHostname, isBlockedHostnameOrIp, isDangerousNameMatchingEnabled, isDiagnosticsEnabled, isHttpsUrlAllowedByHostnameSuffixAllowlist, isNormalizedSenderAllowed, isPrivateIpAddress, isRequestBodyLimitError, isSilentReplyText, isTruthyEnvValue, isWSL2Sync, isWSLEnv, isWSLSync, issuePairingChallenge, jsonResult, listAgentIds, listDevicePairing, listIMessageAccountIds, listLineAccountIds, listRealtimeTranscriptionProviders, listRealtimeVoiceProviders, listSignalAccountIds, loadGatewayModelCatalog, loadWebMedia, logAckFailure, logInboundDrop, logTypingFailure, looksLikeIMessageTargetId, looksLikeSignalTargetId, mergeAllowFromEntries, mergeAllowlist, migrateBaseNameToDefaultAccount, missingTargetError, normalizeAccountId, normalizeAllowFrom, normalizeChannelSlug, normalizeE164, normalizeHandle, normalizeHostnameSuffixAllowlist, normalizeIMessageMessagingTarget, normalizeAccountId$1 as normalizeLineAccountId, normalizePluginHttpPath, normalizeRealtimeTranscriptionProviderId, normalizeRealtimeVoiceProviderId, normalizeSignalMessagingTarget, normalizeWebhookPath, onDiagnosticEvent, optionalStringEnum, parseChatAllowTargetPrefixes, parseChatTargetPrefixesOrThrow, pollDashscopeVideoTaskUntilComplete, processLineMessage, promptAccountId, promptChannelAccessConfig, pushHandlers, rawDataToString, readJsonBodyWithLimit, readJsonFileWithFallback, readNumberParam, readReactionParams, readRequestBodyWithLimit, readStoreAllowFromForDmPolicy, readStringParam, recordInboundSession, recordPendingHistoryEntry, recordPendingHistoryEntryIfEnabled, redactSensitiveText, redactSensitiveUrl, redactSensitiveUrlLikeString, registerAcpRuntimeBackend, registerLogTransport, registerPluginHttpRoute, registerWebhookTarget, rejectDevicePairing, rejectNonPostWebhookRequest, removeAckReactionAfterReply, requestBodyErrorToText, requireOpenAllowFrom, resolveAckReaction, resolveAgentPublicOrigin, resolveAllowlistMatchSimple, resolveAllowlistProviderRuntimeGroupPolicy, resolveBlueBubblesGroupRequireMention, resolveBlueBubblesGroupToolPolicy, resolveChannelAccountConfigBasePath, resolveChannelEntryMatch, resolveChannelEntryMatchWithFallback, resolveChannelMediaMaxBytes, resolveControlCommandGate, resolveDefaultAgentId, resolveDefaultGroupPolicy, resolveDefaultIMessageAccountId, resolveDefaultLineAccountId, resolveDefaultSignalAccountId, resolveDmGroupAccessWithCommandGate, resolveDmGroupAccessWithLists, resolveEffectiveAllowFromLists, resolveEffectiveToolInventory, resolveFederationBaseUrl, resolveFederationHandle, resolveGatewayBindUrl, resolveGoogleChatGroupRequireMention, resolveGoogleChatGroupToolPolicy, resolveIMessageAccount, resolveIMessageGroupRequireMention, resolveIMessageGroupToolPolicy, resolveLineAccount, resolveMentionGating, resolveMentionGatingWithBypass, resolveNestedAllowlistDecision, resolveOpenProviderRuntimeGroupPolicy, resolveOutboundMediaUrls, resolvePreferredFasedAgentTmpDir, resolveSenderCommandAuthorization, resolveServicePrefixedAllowTarget, resolveServicePrefixedTarget, resolveSignalAccount, resolveSingleWebhookTarget, resolveSingleWebhookTargetAsync, resolveTailnetHostWithRunner, resolveThreadSessionKeys, resolveToolsBySender, resolveVideoGenerationReferenceUrls, resolveWebhookPath, resolveWebhookTargets, runEmbeddedPiAgent, runFederationAutoConnectOnce, runPluginCommandWithTimeout, safeParseJson, sendMediaWithLeadingCaption, setAccountEnabledInConfigSection, shouldAckReaction, shouldAckReactionForWhatsApp, signalOnboardingAdapter, sleep, startFederationAutoConnect, stringEnum, stripAnsi, stripMarkdown, summarizeMapping, toLocationContext, unregisterAcpRuntimeBackend, waitForAbortSignal, warnMissingProviderGroupPolicyFallbackOnce, withFileLock, withTempDownloadPath, writeJsonFileAtomically };
@@ -4,7 +4,7 @@ import { c as success, n as info, t as danger } from "./globals-B_jjtAje.js";
4
4
  import { Sa as formatCliCommand, r as loadConfig } from "./config-DlWVeLFB.js";
5
5
  import { r as logInfo } from "./logger-BbFvCoKk.js";
6
6
  import { i as resolveWhatsAppAccount, l as logoutWeb } from "./accounts-Brn3-uWN.js";
7
- import { i as waitForWaConnection, n as formatError, t as createWaSocket } from "./session-DHD4ZKyG.js";
7
+ import { i as waitForWaConnection, n as formatError, t as createWaSocket } from "./session-iuGR_rdi.js";
8
8
  import { DisconnectReason } from "@whiskeysockets/baileys";
9
9
 
10
10
  //#region src/web/login.ts
@@ -10,123 +10,11 @@ import { _ as webAuthExists, i as resolveWhatsAppAccount, l as logoutWeb, p as r
10
10
  import "./redact-Bm8vu_ju.js";
11
11
  import "./github-copilot-token-CUK__1s1.js";
12
12
  import "./retry-DstNBhDW.js";
13
- import { i as waitForWaConnection, n as formatError, r as getStatusCode, t as createWaSocket } from "./session-DHD4ZKyG.js";
13
+ import { t as renderQrPngBase64 } from "./qr-image-B4MlMG4N.js";
14
+ import { i as waitForWaConnection, n as formatError, r as getStatusCode, t as createWaSocket } from "./session-iuGR_rdi.js";
14
15
  import { randomUUID } from "node:crypto";
15
16
  import { DisconnectReason } from "@whiskeysockets/baileys";
16
- import QRCodeModule from "qrcode-terminal/vendor/QRCode/index.js";
17
- import QRErrorCorrectLevelModule from "qrcode-terminal/vendor/QRCode/QRErrorCorrectLevel.js";
18
- import { deflateSync } from "node:zlib";
19
17
 
20
- //#region src/media/png-encode.ts
21
- /**
22
- * Minimal PNG encoder for generating simple RGBA images without native dependencies.
23
- * Used for QR codes, live probes, and other programmatic image generation.
24
- */
25
- const CRC_TABLE = (() => {
26
- const table = new Uint32Array(256);
27
- for (let i = 0; i < 256; i += 1) {
28
- let c = i;
29
- for (let k = 0; k < 8; k += 1) c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1;
30
- table[i] = c >>> 0;
31
- }
32
- return table;
33
- })();
34
- /** Compute CRC32 checksum for a buffer (used in PNG chunk encoding). */
35
- function crc32(buf) {
36
- let crc = 4294967295;
37
- for (let i = 0; i < buf.length; i += 1) crc = CRC_TABLE[(crc ^ buf[i]) & 255] ^ crc >>> 8;
38
- return (crc ^ 4294967295) >>> 0;
39
- }
40
- /** Create a PNG chunk with type, data, and CRC. */
41
- function pngChunk(type, data) {
42
- const typeBuf = Buffer.from(type, "ascii");
43
- const len = Buffer.alloc(4);
44
- len.writeUInt32BE(data.length, 0);
45
- const crc = crc32(Buffer.concat([typeBuf, data]));
46
- const crcBuf = Buffer.alloc(4);
47
- crcBuf.writeUInt32BE(crc, 0);
48
- return Buffer.concat([
49
- len,
50
- typeBuf,
51
- data,
52
- crcBuf
53
- ]);
54
- }
55
- /** Write a pixel to an RGBA buffer. Ignores out-of-bounds writes. */
56
- function fillPixel(buf, x, y, width, r, g, b, a = 255) {
57
- if (x < 0 || y < 0 || x >= width) return;
58
- const idx = (y * width + x) * 4;
59
- if (idx < 0 || idx + 3 >= buf.length) return;
60
- buf[idx] = r;
61
- buf[idx + 1] = g;
62
- buf[idx + 2] = b;
63
- buf[idx + 3] = a;
64
- }
65
- /** Encode an RGBA buffer as a PNG image. */
66
- function encodePngRgba(buffer, width, height) {
67
- const stride = width * 4;
68
- const raw = Buffer.alloc((stride + 1) * height);
69
- for (let row = 0; row < height; row += 1) {
70
- const rawOffset = row * (stride + 1);
71
- raw[rawOffset] = 0;
72
- buffer.copy(raw, rawOffset + 1, row * stride, row * stride + stride);
73
- }
74
- const compressed = deflateSync(raw);
75
- const signature = Buffer.from([
76
- 137,
77
- 80,
78
- 78,
79
- 71,
80
- 13,
81
- 10,
82
- 26,
83
- 10
84
- ]);
85
- const ihdr = Buffer.alloc(13);
86
- ihdr.writeUInt32BE(width, 0);
87
- ihdr.writeUInt32BE(height, 4);
88
- ihdr[8] = 8;
89
- ihdr[9] = 6;
90
- ihdr[10] = 0;
91
- ihdr[11] = 0;
92
- ihdr[12] = 0;
93
- return Buffer.concat([
94
- signature,
95
- pngChunk("IHDR", ihdr),
96
- pngChunk("IDAT", compressed),
97
- pngChunk("IEND", Buffer.alloc(0))
98
- ]);
99
- }
100
-
101
- //#endregion
102
- //#region src/web/qr-image.ts
103
- const QRCode = QRCodeModule;
104
- const QRErrorCorrectLevel = QRErrorCorrectLevelModule;
105
- function createQrMatrix(input) {
106
- const qr = new QRCode(-1, QRErrorCorrectLevel.L);
107
- qr.addData(input);
108
- qr.make();
109
- return qr;
110
- }
111
- async function renderQrPngBase64(input, opts = {}) {
112
- const { scale = 6, marginModules = 4 } = opts;
113
- const qr = createQrMatrix(input);
114
- const modules = qr.getModuleCount();
115
- const size = (modules + marginModules * 2) * scale;
116
- const buf = Buffer.alloc(size * size * 4, 255);
117
- for (let row = 0; row < modules; row += 1) for (let col = 0; col < modules; col += 1) {
118
- if (!qr.isDark(row, col)) continue;
119
- const startX = (col + marginModules) * scale;
120
- const startY = (row + marginModules) * scale;
121
- for (let y = 0; y < scale; y += 1) {
122
- const pixelY = startY + y;
123
- for (let x = 0; x < scale; x += 1) fillPixel(buf, startX + x, pixelY, size, 0, 0, 0, 255);
124
- }
125
- }
126
- return encodePngRgba(buf, size, size).toString("base64");
127
- }
128
-
129
- //#endregion
130
18
  //#region src/web/login-qr.ts
131
19
  const ACTIVE_LOGIN_TTL_MS = 3 * 6e4;
132
20
  const activeLogins = /* @__PURE__ */ new Map();
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { lt as normalizeChannelId } from "./runtime-2B9_WKoI.js";
2
+ import { lt as normalizeChannelId } from "./runtime-CXSQwMaR.js";
3
3
  import { n as resolveAccountEntry } from "./account-helpers-Bdfws46K.js";
4
4
  import { p as normalizeAccountId } from "./session-key-HSJ2KQTc.js";
5
5