@fased/fased 0.1.13 → 0.1.14

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 (301) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +28 -33
  3. package/dist/{agents-DmWSWgPi.js → agents-C-WHRWnS.js} +8 -8
  4. package/dist/{attachment-normalize-B2x8FWZ9.js → attachment-normalize-DQ8t8Fpg.js} +1 -1
  5. package/dist/{attachment-normalize-DaQyD3Gc.js → attachment-normalize-qkVppE3-.js} +1 -1
  6. package/dist/{audio-preflight-CjhAnjuK.js → audio-preflight-2IPkCNvN.js} +1 -1
  7. package/dist/{audio-preflight-DqM048P_.js → audio-preflight-3DGv3sEL.js} +2 -2
  8. package/dist/{audio-preflight-DilYfzh4.js → audio-preflight-Bd38_Rtq.js} +1 -1
  9. package/dist/{audio-preflight-BVQHfg69.js → audio-preflight-LGe174al.js} +2 -2
  10. package/dist/{audio-preflight-BF_inA1H.js → audio-preflight-vshjxbVx.js} +1 -1
  11. package/dist/{audit-BmyHd7Fd.js → audit-DjY5I08B.js} +1 -1
  12. package/dist/{audit-oiJMNMrH.js → audit-x263ATTT.js} +1 -1
  13. package/dist/{auth-Ba9Dk7FX.js → auth-B7xL5wBQ.js} +92 -73
  14. package/dist/{auth-choice-Ba8d4du0.js → auth-choice-DJMbZkdQ.js} +1 -1
  15. package/dist/{auth-choice-DT4p5QVd.js → auth-choice-FgOKdWSF.js} +1 -1
  16. package/dist/{auth-choice-prompt-DVg6LrLV.js → auth-choice-prompt-DpbsOuyY.js} +1 -1
  17. package/dist/{auth-choice-prompt-BLqcFdqp.js → auth-choice-prompt-rlE_GSOw.js} +1 -1
  18. package/dist/build-info.json +3 -3
  19. package/dist/bundled/boot-md/handler.js +1 -1
  20. package/dist/bundled/session-memory/handler.js +1 -1
  21. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  22. package/dist/{channel-web-BjEGLQyO.js → channel-web-Bp0CxbNI.js} +2 -2
  23. package/dist/{channel-web-b3C50Y_N.js → channel-web-D6D54KuR.js} +2 -2
  24. package/dist/{channels-CkoIiZt6.js → channels-C4gSP3Dd.js} +6 -6
  25. package/dist/{channels-C7isH6xy.js → channels-DvysmLPX.js} +6 -6
  26. package/dist/{channels-cli-BtgXre6E.js → channels-cli-BuNVqf2J.js} +5 -5
  27. package/dist/{channels-cli-wTlfSXoS.js → channels-cli-Bz65iM4H.js} +5 -5
  28. package/dist/cli/daemon-cli.js +1 -1
  29. package/dist/{cli-bjzzND1a.js → cli-CY2HaoYp.js} +2 -2
  30. package/dist/{cli-DIm0O_lA.js → cli-DgGwAObY.js} +2 -2
  31. package/dist/{command-registry-L5hzgsO3.js → command-registry-DgzxE6-s.js} +9 -9
  32. package/dist/{completion-cli-BS5owZSW.js → completion-cli-jTE-3aDE.js} +2 -2
  33. package/dist/{completion-cli-Cqcy4193.js → completion-cli-jpzUvb3x.js} +1 -1
  34. package/dist/{config-cli-B6a5ZEoL.js → config-cli-C8LQVFqN.js} +1 -1
  35. package/dist/{config-cli-DqdtNMfz.js → config-cli-Vu0qrkcp.js} +1 -1
  36. package/dist/{configure-DnEK9lvB.js → configure-BTCJ4jyp.js} +12 -12
  37. package/dist/{configure-BwEHGe7O.js → configure-DwuimLR7.js} +12 -12
  38. package/dist/control-ui/assets/app-DXYMrRJ9.js.map +1 -1
  39. package/dist/{cron-cli-BDHDvZT2.js → cron-cli-CnqrBQRR.js} +2 -2
  40. package/dist/{cron-cli-Bwt1DpjZ.js → cron-cli-Komkqy3-.js} +2 -2
  41. package/dist/{daemon-cli-Cb_QJZX8.js → daemon-cli-DO7p9TEM.js} +1 -1
  42. package/dist/{daemon-cli-h2D07h8M.js → daemon-cli-eLgnHj5I.js} +1 -1
  43. package/dist/daemon-cli.js +1 -1
  44. package/dist/{deps-CZFDjC6B.js → deps-Dh2iIgIB.js} +1 -1
  45. package/dist/{deps-CrKSMHlj.js → deps-npMqt3Ka.js} +1 -1
  46. package/dist/entry.js +1 -1
  47. package/dist/extensionAPI.js +1 -1
  48. package/dist/{gateway-cli-a6mdZcvO.js → gateway-cli-CtGAZD_4.js} +27 -27
  49. package/dist/{gateway-cli-lJ8tfi1V.js → gateway-cli-DnPPkDok.js} +27 -27
  50. package/dist/{health-DI0aqVH0.js → health-CI2la9gk.js} +2 -2
  51. package/dist/{health-CKmYZQVl.js → health-WemI1hMs.js} +2 -2
  52. package/dist/{heartbeat-runner-CwEpFUJu.js → heartbeat-runner-DGA7RCWg.js} +1 -1
  53. package/dist/{heartbeat-runner-DDfNvScd.js → heartbeat-runner-DcqI-L2-.js} +1 -1
  54. package/dist/{hooks-cli-C3kkiY3m.js → hooks-cli-BJ-cuVgp.js} +3 -3
  55. package/dist/{hooks-cli-CWaBU3Gm.js → hooks-cli-CKiMdD4M.js} +3 -3
  56. package/dist/index.js +7 -7
  57. package/dist/{ipv4-CNhiSmCD.js → ipv4-86I-Nx-V.js} +2 -2
  58. package/dist/{ipv4-BLRwHChK.js → ipv4-ocsDp87_.js} +2 -2
  59. package/dist/{lifecycle-C5XGWThd.js → lifecycle-C6SWjahT.js} +1 -1
  60. package/dist/{lifecycle-DFB0_xLS.js → lifecycle-DtjQ5ipb.js} +1 -1
  61. package/dist/{list.auth-overview-BIp5q_8N.js → list.auth-overview-Cmhnxus1.js} +1 -1
  62. package/dist/{list.auth-overview-rLzc76Sc.js → list.auth-overview-DrR818-U.js} +1 -1
  63. package/dist/llm-slug-generator.js +1 -1
  64. package/dist/{model-catalog-hjXNofhs.js → model-catalog-QdGjCBzQ.js} +93 -74
  65. package/dist/{models-B0wDRRTB.js → models-B4gY5Zsf.js} +4 -4
  66. package/dist/{models-cli-2VcOiLID.js → models-cli-ZYvMSvJ0.js} +4 -4
  67. package/dist/{models-cli-CKQEE1hy.js → models-cli-hrJ2blXT.js} +5 -5
  68. package/dist/{node-cli-CT41KnaD.js → node-cli-CPmJqYER.js} +2 -2
  69. package/dist/{node-cli-hiCjYjDs.js → node-cli-DniBkXLM.js} +2 -2
  70. package/dist/{onboard-ruUWKVpa.js → onboard-BBW1oF-0.js} +6 -6
  71. package/dist/{onboard-ddaSHBKZ.js → onboard-WQObC6sI.js} +6 -6
  72. package/dist/{onboard-channels-DYKwJPZk.js → onboard-channels-Bwb5RCIS.js} +2 -2
  73. package/dist/{onboard-channels-BBLJ2eG7.js → onboard-channels-DZij_XSU.js} +2 -2
  74. package/dist/{onboard-search-K_gqtpu1.js → onboard-search-Bt2b93cG.js} +5 -5
  75. package/dist/{onboard-search-D8sCkxny.js → onboard-search-C-PWyXkX.js} +5 -5
  76. package/dist/{onboarding-j1hpXVOe.js → onboarding-Cb9j4BOq.js} +7 -7
  77. package/dist/{onboarding-C8WtfnfT.js → onboarding-INDfl2yD.js} +7 -7
  78. package/dist/{openresponses-http-B5LVbUQ-.js → openresponses-http-BHecKser.js} +1 -1
  79. package/dist/{openresponses-http-C983oEVC.js → openresponses-http-C4VkP7IC.js} +1 -1
  80. package/dist/{openresponses-http-c0bMt48o.js → openresponses-http-CGLYAUyM.js} +1 -1
  81. package/dist/{openresponses-http-ngs3P9ek.js → openresponses-http-CVJBsG9z.js} +2 -2
  82. package/dist/{openresponses-http-CUqgCbTX.js → openresponses-http-dny2OhpA.js} +2 -2
  83. package/dist/{parent-default-help-DE5SId9s.js → parent-default-help-CcPiYUar.js} +1 -1
  84. package/dist/{parent-default-help-CoH7zlDh.js → parent-default-help-dowF5JGJ.js} +1 -1
  85. package/dist/{pi-embedded-BvqQUzWN.js → pi-embedded-D-WBZS6e.js} +89 -70
  86. package/dist/{pi-embedded-F3Zt8ed6.js → pi-embedded-IqgbZA5l.js} +89 -70
  87. package/dist/{plugin-registry-C5Ry5FZe.js → plugin-registry-C0b3SJXT.js} +1 -1
  88. package/dist/{plugin-registry-V61y7NBj.js → plugin-registry-C1WE5cad.js} +1 -1
  89. package/dist/plugin-sdk/{active-listener-DMQkC65_.js → active-listener-CiGA0hRS.js} +1 -1
  90. package/dist/plugin-sdk/{audio-preflight-Ba6xe3SP.js → audio-preflight-DVoi6-9R.js} +29 -29
  91. package/dist/plugin-sdk/{audio-preflight-Iwawhfar.js → audio-preflight-Do3tS2Hp.js} +1 -1
  92. package/dist/plugin-sdk/{channel-activity-BcI4xSoe.js → channel-activity-DRcprlRI.js} +1 -1
  93. package/dist/plugin-sdk/{channel-web-ByZK5Ws6.js → channel-web-DvYiNUDj.js} +15 -15
  94. package/dist/plugin-sdk/{chunk-BntoXexQ.js → chunk-CWM4OQ5j.js} +1 -1
  95. package/dist/plugin-sdk/command-status.js +1 -1
  96. package/dist/plugin-sdk/{commands-registry-Deqd0K8M.js → commands-registry-CnlOnVB6.js} +1 -1
  97. package/dist/plugin-sdk/{diagnostic-BnS_JikV.js → diagnostic-BfpYqaMu.js} +1 -1
  98. package/dist/plugin-sdk/{fetch-guard-CTD85vq2.js → fetch-guard-BciVpgwU.js} +1 -1
  99. package/dist/plugin-sdk/{fetch-B42SDHGm.js → fetch-yy6-Kb3T.js} +1 -1
  100. package/dist/plugin-sdk/{filesystem-manager-BX7oNQR8.js → filesystem-manager-B5AL-sCv.js} +3 -3
  101. package/dist/plugin-sdk/{fs-safe-DOPVDJix.js → fs-safe-Ch39tcFn.js} +2 -2
  102. package/dist/plugin-sdk/index.js +34 -34
  103. package/dist/plugin-sdk/{internal-DQx46pKX.js → internal-Bsx2Ck4H.js} +1 -1
  104. package/dist/plugin-sdk/{ir-Bbym3o_S.js → ir-BqSQJB3B.js} +4 -4
  105. package/dist/plugin-sdk/{login-BViGjyGG.js → login-CUkR_AH3.js} +2 -2
  106. package/dist/plugin-sdk/{login-qr-Byua0a3V.js → login-qr-BTjizo_A.js} +2 -2
  107. package/dist/plugin-sdk/{manager-CIggnIJi.js → manager-DQJURMcB.js} +5 -5
  108. package/dist/plugin-sdk/{markdown-tables-DpMWx8Tl.js → markdown-tables-Dvj4VeiJ.js} +1 -1
  109. package/dist/plugin-sdk/{memory-search-DASOKZdc.js → memory-search-BMkuVf7r.js} +1 -1
  110. package/dist/plugin-sdk/{openresponses-http-CGyicTgJ.js → openresponses-http-7e9CqhJi.js} +1 -1
  111. package/dist/plugin-sdk/{openresponses-http-B5rDYW__.js → openresponses-http-CEjbCJ_J.js} +29 -29
  112. package/dist/plugin-sdk/{outbound-C_KKhUy0.js → outbound-Ch3UOB-3.js} +6 -6
  113. package/dist/plugin-sdk/{outbound-attachment-ddz0MwiT.js → outbound-attachment-8pyStMIv.js} +2 -2
  114. package/dist/plugin-sdk/{path-alias-guards-ZLFppfUS.js → path-alias-guards-DmROHvdC.js} +1 -1
  115. package/dist/plugin-sdk/{paths-BjhD4HPg.js → paths-QYyMn2Wi.js} +2 -2
  116. package/dist/plugin-sdk/{pi-model-discovery-CFtZGJhK.js → pi-model-discovery-BGBK5j7O.js} +1 -1
  117. package/dist/plugin-sdk/{pi-model-discovery-runtime-C4xL6SHf.js → pi-model-discovery-runtime-Ds3U-M1x.js} +2 -2
  118. package/dist/plugin-sdk/{pw-ai-8IF0b_Yx.js → pw-ai-qIQtqb0S.js} +4 -4
  119. package/dist/plugin-sdk/{qmd-manager-Cwq6jm3-.js → qmd-manager-DAYkSE5z.js} +4 -4
  120. package/dist/plugin-sdk/{qmd-scope-CSMRsTtS.js → qmd-scope-CDToQJAg.js} +1 -1
  121. package/dist/plugin-sdk/{query-expansion-BxUJl8D1.js → query-expansion-yLS-ifHD.js} +2 -2
  122. package/dist/plugin-sdk/{replies-4ciKRt42.js → replies-DuVEe866.js} +2 -2
  123. package/dist/plugin-sdk/{reply-DQvYSWCp.js → reply-D9WhCAf0.js} +154 -135
  124. package/dist/plugin-sdk/{reply-prefix-D1GlTOVT.js → reply-prefix-DYUukSpx.js} +1 -1
  125. package/dist/plugin-sdk/{resolve-outbound-target-CsbaX39w.js → resolve-outbound-target-DlTadiqm.js} +2 -2
  126. package/dist/plugin-sdk/{resolve-route-y3cyO8Nu.js → resolve-route-CKHCIkIh.js} +1 -1
  127. package/dist/plugin-sdk/{runtime-JZwgwXxK.js → runtime-d_ap8ggn.js} +8 -8
  128. package/dist/plugin-sdk/{send-By-vmNGK.js → send-BYaWimfS.js} +5 -5
  129. package/dist/plugin-sdk/{send-BkZyweGW.js → send-Cvf5nOIr.js} +4 -4
  130. package/dist/plugin-sdk/{send-B7uKkTxV.js → send-DYsMepvi.js} +7 -7
  131. package/dist/plugin-sdk/{send-b2ALvHco.js → send-DtgDCh9h.js} +7 -7
  132. package/dist/plugin-sdk/{send-jXCTO3i_.js → send-XXJCJ2as.js} +5 -5
  133. package/dist/plugin-sdk/{session-B2c1Wmrm.js → session-CZkOY6Ba.js} +1 -1
  134. package/dist/plugin-sdk/{skill-commands-DqGrOYfl.js → skill-commands-BKfUIpx3.js} +5 -5
  135. package/dist/plugin-sdk/src/agents/bash-tools.process.d.ts +2 -2
  136. package/dist/plugin-sdk/src/brand.d.ts +2 -2
  137. package/dist/plugin-sdk/src/channels/thread-bindings-policy.d.ts +21 -0
  138. package/dist/plugin-sdk/{status-KYehxhnn.js → status-BtSfRg0Y.js} +92 -73
  139. package/dist/plugin-sdk/{tables-b0zUZRMn.js → tables-DQEs0bVk.js} +1 -1
  140. package/dist/plugin-sdk/{target-errors-WJdwRuAS.js → target-errors-DpDEAats.js} +2 -2
  141. package/dist/plugin-sdk/{tool-loop-detection-k7zpyjWy.js → tool-loop-detection-D8xgCIc0.js} +1 -1
  142. package/dist/plugin-sdk/{web-CAC5vbc9.js → web-Dn9EjG_7.js} +2 -2
  143. package/dist/plugin-sdk/web-Iu1NvzWV.js +40 -0
  144. package/dist/plugin-sdk/{whatsapp-actions-SkM0ibaJ.js → whatsapp-actions-qiFsmHsr.js} +12 -12
  145. package/dist/{plugins-cli-ChEJuxFs.js → plugins-cli-D1j2v1v3.js} +5 -5
  146. package/dist/{plugins-cli-DwxmXRMv.js → plugins-cli-DK4Jeucz.js} +5 -5
  147. package/dist/{program-BGSx2Vda.js → program-CazmynDS.js} +7 -7
  148. package/dist/{program-context-P_PLH93O.js → program-context-Bd78I73_.js} +24 -24
  149. package/dist/{prompt-select-styled-Cgj-zl4h.js → prompt-select-styled-Bx8l6tgz.js} +4 -4
  150. package/dist/{prompt-select-styled-xJXAqPXi.js → prompt-select-styled-DSFk0AgE.js} +4 -4
  151. package/dist/{register.agent-FTnfAUsz.js → register.agent-B4kjmkkK.js} +9 -9
  152. package/dist/{register.agent-DtHG7NoT.js → register.agent-PlTxuITr.js} +8 -8
  153. package/dist/{register.configure-wr3EEeat.js → register.configure-BvP4DKP8.js} +12 -12
  154. package/dist/{register.configure-hmL6L3g2.js → register.configure-DZPTQvjv.js} +12 -12
  155. package/dist/{register.maintenance-C6oo_ezy.js → register.maintenance-BbuaL-LU.js} +8 -8
  156. package/dist/{register.maintenance-Dy4bRQQG.js → register.maintenance-a-pIClSG.js} +9 -9
  157. package/dist/{register.message-Bf14REw-.js → register.message-DDFPXPWb.js} +3 -3
  158. package/dist/{register.message-BD4Te7tj.js → register.message-DNVRbijg.js} +3 -3
  159. package/dist/{register.onboard-Cu_0muzG.js → register.onboard-B0HUy5PD.js} +14 -14
  160. package/dist/{register.onboard-C0xqP_uC.js → register.onboard-nXq-teMt.js} +14 -14
  161. package/dist/{register.setup-oZxJojNP.js → register.setup-DIhPxsuu.js} +14 -14
  162. package/dist/{register.setup-BiHZP-Bk.js → register.setup-DRj3j2ZO.js} +14 -14
  163. package/dist/{register.status-health-sessions-DpCYTTdC.js → register.status-health-sessions-DTDrlfum.js} +6 -6
  164. package/dist/{register.status-health-sessions-5ekV66OK.js → register.status-health-sessions-vQKRHMLC.js} +6 -6
  165. package/dist/{register.subclis-CDkHAGnh.js → register.subclis-Cy8W7u7O.js} +16 -16
  166. package/dist/{reply-Baz1gE0S.js → reply-CHDxge29.js} +93 -74
  167. package/dist/{run-main-DKRKAwiP.js → run-main-1aaRfq94.js} +14 -14
  168. package/dist/{runtime-helper-grants-tP01ROwZ.js → runtime-helper-grants-0TgQ0lgQ.js} +1 -1
  169. package/dist/{runtime-helper-grants-BLBgnkag.js → runtime-helper-grants-n6XBHo3m.js} +1 -1
  170. package/dist/{sandbox-cli-Bd-8A0tb.js → sandbox-cli-D-2QLS_w.js} +2 -2
  171. package/dist/{sandbox-cli-D47Wa19_.js → sandbox-cli-Ds-oc2Jt.js} +2 -2
  172. package/dist/{security-cli-DNazkft-.js → security-cli-Ck0noj86.js} +3 -3
  173. package/dist/{security-cli-BJY7p7My.js → security-cli-DxJAZsT6.js} +3 -3
  174. package/dist/{server-Bve0fBtZ.js → server-BEwhNHAO.js} +2 -2
  175. package/dist/{server-Bbpijl2X.js → server-D554L3O3.js} +2 -2
  176. package/dist/{server-cron-Dqe6FbgV.js → server-cron-Co8el74q.js} +2 -2
  177. package/dist/{server-cron-BUNwsQ3c.js → server-cron-CuUXpitx.js} +2 -2
  178. package/dist/{server-node-events-ClO3P4gG.js → server-node-events-bzKAOMwM.js} +3 -3
  179. package/dist/{server-node-events-BEZ0jgR6.js → server-node-events-h-xwZu4x.js} +3 -3
  180. package/dist/{status-CNDT0EXd.js → status-Bd25eZ91.js} +4 -4
  181. package/dist/{status-CEc8-_t7.js → status-CjvLj0Ob.js} +1 -1
  182. package/dist/{status-CYNE3C5Y.js → status-DXweKVET.js} +4 -4
  183. package/dist/{status-Doouocs4.js → status-DetSO2U-.js} +1 -1
  184. package/dist/{tui-cli-DGqbmIjb.js → tui-cli-B6IhMpTo.js} +3 -3
  185. package/dist/{tui-cli-BAHVzUig.js → tui-cli-DDu-3YTW.js} +3 -3
  186. package/dist/{tui-DlBfUSia.js → tui-rvBD7CEp.js} +1 -1
  187. package/dist/{tui-Cj2tNzRU.js → tui-sRU4cuDV.js} +1 -1
  188. package/dist/{update-cli-CowwEm1_.js → update-cli-DdBQL9wa.js} +10 -10
  189. package/dist/{update-cli-Dhambp65.js → update-cli-DhiPLbfC.js} +9 -9
  190. package/dist/{update-runner-DItB16kj.js → update-runner-CsJOHUCm.js} +1 -1
  191. package/dist/{update-runner-BYNHsNaj.js → update-runner-DBPk9kKP.js} +1 -1
  192. package/dist/{web-BKQLvqgr.js → web-0D-MfWhQ.js} +2 -2
  193. package/dist/{web-B3fGD9XZ.js → web-B2uPE5Pt.js} +3 -3
  194. package/dist/{web-u2nJ-rqI.js → web-DsACg6Kp.js} +3 -3
  195. package/dist/{web-BLUd2_Lg.js → web-Y8Z075Dl.js} +2 -2
  196. package/dist/{web-search-providers.runtime-mdso7C9-.js → web-search-providers.runtime-C9rYYuJB.js} +1 -1
  197. package/dist/{web-search-providers.runtime-DmhNfMZI.js → web-search-providers.runtime-Dih9pZ-s.js} +1 -1
  198. package/dist/{web-Cv-tDA3u.js → web-uQepjRHJ.js} +2 -2
  199. package/docs/automation/cron-vs-heartbeat.md +8 -8
  200. package/docs/cli/index.md +4 -4
  201. package/docs/concepts/architecture.md +2 -2
  202. package/docs/concepts/features.md +40 -40
  203. package/docs/concepts/model-providers.md +4 -4
  204. package/docs/docs.json +1 -1
  205. package/docs/gateway/authentication.md +2 -2
  206. package/docs/gateway/configuration-reference.md +1 -1
  207. package/docs/gateway/heartbeat.md +1 -0
  208. package/docs/help/faq.md +4 -4
  209. package/docs/help/index.md +4 -4
  210. package/docs/help/testing.md +5 -0
  211. package/docs/images/screenshots/polished/README.md +16 -0
  212. package/docs/images/screenshots/polished/operator-school-001-local-install-profile.png +0 -0
  213. package/docs/images/screenshots/polished/operator-school-002-local-gateway-settings.png +0 -0
  214. package/docs/images/screenshots/polished/operator-school-003-local-dashboard-link.png +0 -0
  215. package/docs/images/screenshots/polished/operator-school-004-hosted-tailscale-start.png +0 -0
  216. package/docs/images/screenshots/polished/operator-school-005-hosted-ssh-check.png +0 -0
  217. package/docs/images/screenshots/polished/operator-school-006-hosted-private-access.png +0 -0
  218. package/docs/images/screenshots/polished/operator-school-007-dashboard-open.png +0 -0
  219. package/docs/images/screenshots/polished/operator-school-008-agent-setup.png +0 -0
  220. package/docs/images/screenshots/polished/operator-school-009-chat-channel-setup.png +0 -0
  221. package/docs/images/screenshots/polished/operator-school-010-model-selection.png +0 -0
  222. package/docs/images/screenshots/polished/operator-school-011-model-provider-sign-in.png +0 -0
  223. package/docs/images/screenshots/polished/operator-school-012-wallet-roles.png +0 -0
  224. package/docs/images/screenshots/polished/operator-school-013-wallet-create.png +0 -0
  225. package/docs/images/screenshots/polished/operator-school-014-wallet-summary.png +0 -0
  226. package/docs/images/screenshots/polished/operator-school-015-wallet-passkey.png +0 -0
  227. package/docs/images/screenshots/polished/operator-school-016-mining-funding.png +0 -0
  228. package/docs/images/screenshots/polished/operator-school-017-mining-commit.png +0 -0
  229. package/docs/images/screenshots/polished/operator-school-018-mining-activity.png +0 -0
  230. package/docs/images/screenshots/polished/operator-school-019-mining-history.png +0 -0
  231. package/docs/images/screenshots/polished/operator-school-020-network-bond.png +0 -0
  232. package/docs/index.md +47 -47
  233. package/docs/install/index.md +1 -1
  234. package/docs/links.md +8 -8
  235. package/docs/platforms/mac/release.md +1 -0
  236. package/docs/plugins/crypto/wallet-autonomous-security.md +1 -1
  237. package/docs/plugins/crypto/wallet-roles-and-policies.md +4 -0
  238. package/docs/reference/vision.md +21 -18
  239. package/docs/security/index.md +9 -8
  240. package/docs/start/agent-wallet-mining-walkthrough.md +84 -5
  241. package/docs/start/bond-operator-economy.md +61 -61
  242. package/docs/start/control-ui-setup.md +23 -23
  243. package/docs/start/fased.md +31 -31
  244. package/docs/start/federation.md +47 -45
  245. package/docs/start/getting-started.md +6 -6
  246. package/docs/start/marketplace-personas-roadmap.md +1 -1
  247. package/docs/start/offers-marketplace.md +87 -87
  248. package/docs/start/onboarding-overview.md +5 -5
  249. package/docs/start/operator-glossary.md +49 -45
  250. package/docs/start/provider-agent-chat-flow.md +17 -14
  251. package/docs/start/setup-matrix.md +13 -12
  252. package/docs/start/wizard-cli-reference.md +2 -0
  253. package/docs/start/wizard.md +5 -5
  254. package/docs/tools/thinking.md +2 -0
  255. package/docs/web/control-ui.md +10 -11
  256. package/docs/web/dashboard.md +8 -8
  257. package/docs/web/index.md +3 -3
  258. package/extensions/acpx/package.json +1 -1
  259. package/extensions/bluebubbles/package.json +1 -1
  260. package/extensions/copilot-proxy/package.json +1 -1
  261. package/extensions/diagnostics-otel/package.json +1 -1
  262. package/extensions/discord/package.json +1 -1
  263. package/extensions/fased-federation/package.json +1 -1
  264. package/extensions/feishu/package.json +1 -1
  265. package/extensions/google-gemini-cli-auth/package.json +1 -1
  266. package/extensions/googlechat/package.json +1 -1
  267. package/extensions/imessage/package.json +1 -1
  268. package/extensions/irc/package.json +1 -1
  269. package/extensions/line/package.json +1 -1
  270. package/extensions/llm-task/package.json +1 -1
  271. package/extensions/lobster/package.json +1 -1
  272. package/extensions/matrix/CHANGELOG.md +6 -0
  273. package/extensions/matrix/package.json +1 -1
  274. package/extensions/mattermost/package.json +1 -1
  275. package/extensions/memory-core/package.json +1 -1
  276. package/extensions/memory-lancedb/package.json +1 -1
  277. package/extensions/minimax-portal-auth/package.json +1 -1
  278. package/extensions/msteams/CHANGELOG.md +6 -0
  279. package/extensions/msteams/package.json +1 -1
  280. package/extensions/nextcloud-talk/package.json +1 -1
  281. package/extensions/nostr/CHANGELOG.md +6 -0
  282. package/extensions/nostr/package.json +1 -1
  283. package/extensions/open-prose/package.json +1 -1
  284. package/extensions/sat-mining/package.json +1 -1
  285. package/extensions/sat-mining/src/live-chaos.ts +3 -2
  286. package/extensions/signal/package.json +1 -1
  287. package/extensions/slack/package.json +1 -1
  288. package/extensions/synology-chat/package.json +1 -1
  289. package/extensions/telegram/package.json +1 -1
  290. package/extensions/tlon/package.json +1 -1
  291. package/extensions/twitch/CHANGELOG.md +6 -0
  292. package/extensions/twitch/package.json +1 -1
  293. package/extensions/voice-call/CHANGELOG.md +6 -0
  294. package/extensions/voice-call/package.json +1 -1
  295. package/extensions/whatsapp/package.json +1 -1
  296. package/extensions/zalo/CHANGELOG.md +6 -0
  297. package/extensions/zalo/package.json +1 -1
  298. package/extensions/zalouser/CHANGELOG.md +6 -0
  299. package/extensions/zalouser/package.json +1 -1
  300. package/package.json +1 -1
  301. package/dist/plugin-sdk/web-Bo3jM7sh.js +0 -40
@@ -1,52 +1,52 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { $ as resolveFreshSessionTotalTokens, $a as resolveAgentSkillsFilter, $c as getChildLogger, $n as resolveConfiguredModelRef, $o as resolveSignalAccount, $r as formatThinkingLevels, $s as applyTestPluginDefaults, $t as AVATAR_MAX_BYTES, A as mergeDeliveryContext, Ac as sliceUtf16Safe, An as unwrapKnownDispatchWrapperInvocation, Ar as dedupeProfileIds, As as isAcpSessionKey, At as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, B as applyInputProvenanceToUserMessage, Ba as listEnabledTelegramAccounts, Bc as clearActiveProgressLine, Bi as parseSlackTarget, Bn as resolveSlackNativeStreaming, Bo as isTruthyEnvValue, Br as normalizeProviderId$2, Bs as isInternalMessageChannel, C as updateLastRoute, Ca as resolveWhatsAppAccount, Ci as isDangerousHostInheritedEnvVarName, Cn as DEFAULT_SAFE_BINS, Co as logError, Cr as getSoonestCooldownExpiry, Cs as sanitizeAgentId, D as resolveCacheTtlMs$1, Da as logWebSelfId, Dc as shortenHomeInString, Di as getChannelPlugin, Dn as extractShellWrapperInlineCommand, Do as openBoundaryFileSync, Dr as resolveProfilesUnavailableReason, Ds as isBlockedObjectKey, Dt as TELEGRAM_COMMAND_NAME_PATTERN, E as isCacheEnabled, Ea as getWebAuthAgeMs, Ei as deriveSessionMetaPatch, En as resolveCommandResolutionFromArgv, Eo as openBoundaryFile, Er as markAuthProfileUsed, Es as normalizeOptionalAccountId, F as capArrayByJsonBytes, Fc as triggerInternalHook, Fn as resolveSafeBinProfiles, Fr as resolveAuthStorePathForDisplay, Fs as resolveAccountEntry, Ft as normalizeScpRemoteHost, G as resolveSessionKey$1, Ga as buildChannelAccountBindings, Gc as logVerbose, Gn as buildAllowedModelSet, Gr as resolveAuthProfileDisplayLabel, Gs as resolveMessageChannel, H as normalizeInputProvenance, Hc as unregisterActiveProgressLine, Hr as discoverFasedAgentPlugins, Hs as listDeliverableMessageChannels, I as countToolResults, Ia as webAuthExists, Ic as createSubsystemLogger, In as applyMergePatch, Ir as resolveFasedAgentAgentDir, Is as resolveGroupSessionKey, J as resolveSessionResetPolicy, Ja as listAgentEntries, Ji as listChannelDocks, Jn as findNormalizedProviderValue$1, Jo as resolveSlackAppToken, Jr as assertSecretInputResolved, Js as GATEWAY_CLIENT_NAMES, K as evaluateSessionFreshness, Kc as setVerbose, Kn as buildConfiguredAllowlistKeys, Ko as resolveSlackAccount, Kr as isPrivateNetworkBaseUrl, Ks as GATEWAY_CLIENT_IDS, L as extractToolCallNames, La as formatCliCommand, Ln as isSafeExecutableValue, Lo as resolveAgentModelFallbackValues, Ls as INTERNAL_MESSAGE_CHANNEL, M as normalizeSessionDeliveryFields, Ma as readWebSelfId, Mc as truncateUtf16Safe, Mn as splitShellArgs, Mr as listProvidersWithStoredCredentials, Ms as isSubagentSessionKey, Mt as mergeInboundPathRoots, N as normalizeAccountId$3, Nc as isPlainObject, Nn as SAFE_BIN_PROFILES, Nr as markAuthProfileGood, Ns as parseAgentSessionKey, Nt as resolveIMessageAttachmentRoots, O as deliveryContextFromSession, Oa as logoutWeb, Oc as shortenHomePath, Oi as listChannelPlugins, On as isDispatchWrapperExecutable, Or as resolveApiKeyForProfile, Os as deriveSessionChatType, Ot as normalizeTelegramCommandName, P as archiveSessionTranscripts, Pc as createInternalHookEvent, Pn as normalizeSafeBinProfileFixtures, Pr as ensureAuthProfileStore, Ps as resolveThreadParentSessionKey, Pt as resolveIMessageRemoteAttachmentRoots, Q as mergeSessionEntry, Qa as resolveAgentModelFallbacksOverride, Qc as theme, Qn as normalizeProviderId$1, Qr as lookupProviderManifestModelCapability, Qs as normalizeStringEntriesLower, Qt as parseDurationMs, R as parseInlineDirectives$1, Ra as resolveCliName, Rc as createNonExitingRuntime, Rn as mapStreamingModeToSlackLegacyDraftStreamMode, Ro as resolveAgentModelPrimaryValue, Rr as withFileLock, Rs as isDeliverableMessageChannel, S as recordSessionMetaFromInbound, Sn as splitCommandChain, So as logDebug, Sr as resolveAuthProfileOrder, Ss as resolveThreadSessionKeys, T as updateSessionStoreEntry, Tc as resolveUserPath, Ti as resolveOwnerDisplaySetting, Tn as resolveAllowlistCandidatePath, To as logWarn, Tr as markAuthProfileFailure, Ts as normalizeAccountId$2, U as acquireSessionWriteLock, Ua as resolveTelegramAccount, Uc as danger, Un as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, Ur as isPathInside, Us as normalizeMessageChannel, V as hasInterSessionUserProvenance, Va as listTelegramAccountIds, Vc as registerActiveProgressLine, Vi as resolveSlackChannelId, Vn as resolveSlackStreamingMode, Vo as parseBooleanValue$1, Vr as loadPluginManifestRegistry, Vs as isMarkdownCapableMessageChannel, W as resolveSessionLockMaxHoldFromTimeout, Wa as resolveTelegramToken, Wn as resolveAgentMaxConcurrent, Wr as safeStatSync, Ws as resolveGatewayMessageChannel, X as resolveThreadFlag, Xa as resolveAgentConfig, Xc as colorize, Xn as modelKey, Xo as listEnabledSignalAccounts, Xr as splitTrailingAuthProfile, Xs as normalizeHyphenSlug, Xt as MODEL_APIS, Y as resolveSessionResetType, Ya as listAgentIds, Yc as warn, Yn as isCliProvider, Yo as resolveSlackBotToken, Yr as coerceSecretRef, Ys as normalizeAtHashSlug, Z as DEFAULT_RESET_TRIGGERS, Za as resolveAgentDir, Zc as isRich, Zn as normalizeModelRef$2, Zr as isOpenAISignInRuntimeModelSupported, Zs as normalizeStringEntries, Zt as getBlockedNetworkModeReason, _ as resolveAndPersistSessionFile, _c as formatTerminalLink, _i as compileSafeRegex, _n as normalizeTrustedSafeBinDirs, _o as resolveFasedAgentPackageRoot, _r as mergeModelCatalogRowsByAuthority, _t as writeConfigFile, a as createPluginRegistry, aa as normalizeSignalMessagingTarget, ac as resolveLeastPrivilegeOperatorScopesForMethod, ai as DEFAULT_CONTEXT_TOKENS, al as listChatChannels, an as getConfigOverrides, ao as resolveSessionAgentIds, ar as normalizeGoogleModelId, as as listEnabledDiscordAccounts, at as resolveSessionTranscriptsDirForAgent, b as loadSessionStore, ba as hasAnyWhatsAppAuth, bi as resolveShellEnvFallbackTimeoutMs, bn as buildEnforcedShellCommand, bo as runExec, br as normalizeProviderCatalogRows, bs as normalizeMainKey, c as lookupContextTokens, cc as getPluginCommandSpecs, ci as VERSION, cl as CHANNEL_IDS, cn as unsetConfigOverride, co as DEFAULT_BOOTSTRAP_FILENAME, cr as requireApiKey, cs as normalizeDiscordToken, ct as resolveAgentMainSessionKey, dc as CONFIG_DIR, di as extractErrorCode, dl as normalizePluginHttpPath, dn as setConfigValueAtPath, do as DEFAULT_SOUL_FILENAME, dr as resolveModelAuthMode, ds as resolveChannelGroupToolsPolicy, dt as createConfigIO, ec as normalizePluginsConfig, ei as formatXHighModelHint, en as isAvatarDataUrl, eo as resolveAgentWorkspaceDir, er as resolveDefaultModelForAgent, et as setSessionRuntimeModel, f as extractDeliveryInfo, fi as formatErrorMessage, fn as unsetConfigValueAtPath, fo as DEFAULT_TOOLS_FILENAME, fr as CURRENT_MODEL_PROVIDER_CATALOG, ft as loadConfig, g as resolveSessionTranscriptFile, gc as escapeRegExp, gi as redactToolDetail, gn as listWritableExplicitTrustedSafeBinDirs, go as loadWorkspaceBootstrapFiles, gr as buildModelCatalogMergeKey, gt as resolveConfigSnapshotHash, h as resolveMirroredTranscriptText, hc as ensureDir$3, hi as redactSensitiveText, hn as isTrustedSafeBinPath, ho as filterBootstrapFilesForSession, hr as retryAsync, hs as buildAgentMainSessionKey, ht as readConfigFileSnapshotForWrite, i as setActivePluginRegistry, ic as CLI_DEFAULT_OPERATOR_SCOPES, ii as supportsXHighThinking, il as getChatChannelMeta, in as validateJsonSchemaValue, io as resolveSessionAgentId, ir as resolveThinkingDefault, it as resolveSessionTranscriptPath, j as normalizeDeliveryContext, jn as unwrapKnownShellMultiplexerInvocation, jo as resolvePathViaExistingAncestorSync, jr as listProfilesForProvider, js as isCronSessionKey, jt as isInboundPathAllowed, k as deliveryContextKey, kc as sleep$1, ki as normalizeChannelId$1, kn as isShellWrapperExecutable, kr as runTasksWithConcurrency, ks as getSubagentDepth, kt as resolveTelegramCustomCommands, l as resolveContextTokensForModel, lc as listPluginCommands, li as getPackageManifestMetadata, ll as CHAT_CHANNEL_ORDER, ln as getConfigValueAtPath, lo as DEFAULT_HEARTBEAT_FILENAME, lr as resolveApiKeyForProvider, ls as resolveChannelGroupPolicy, lt as resolveExplicitAgentSessionKey, m as appendAssistantMessageToSessionTranscript, mn as getTrustedSafeBinDirs, mo as ensureAgentWorkspace, mt as readConfigFileSnapshot, n as getActivePluginRegistryKey, na as isWhatsAppGroupJid, nc as resolveMemorySlotDecision, ni as normalizeThinkLevel, nl as normalizeLogLevel, nn as isPathWithinRoot, no as resolveEffectiveModelFallbacks, nr as resolveReasoningDefault, ns as resolveIMessageAccount, nt as resolveSessionFilePath, o as createRuntimeHelpers, oc as clearPluginCommands, oi as DEFAULT_MODEL, ol as normalizeAnyChannelId, on as resetConfigOverrides, oo as DEFAULT_AGENTS_FILENAME, or as getApiKeyForModel, ot as resolveStorePath, p as parseSessionThreadInfo, pc as clampInt, pi as formatUncaughtError, pn as ensurePluginAllowlisted, po as DEFAULT_USER_FILENAME, pr as listCurrentModelCatalogRows, ps as DEFAULT_AGENT_ID, pt as parseConfigJson5, q as resolveChannelResetConfig, qa as hasConfiguredModelFallbacks, qc as shouldLogVerbose, qi as getChannelDock, qn as buildModelAliasIndex, qr as normalizeSecretInput, qs as GATEWAY_CLIENT_MODES, r as requireActivePluginRegistry, ra as normalizeWhatsAppTarget, rc as ADMIN_SCOPE, ri as resolveModelThinkingCapability, rl as resolvePreferredFasedAgentTmpDir, rn as isSupportedLocalAvatarExtension, ro as resolveRunModelFallbacksOverride, rr as resolveSubagentSpawnModelSelection, rs as createDiscordActionGate, rt as resolveSessionFilePathOptions, s as loadCombinedSessionStoreForGateway, sc as executePluginCommand, si as DEFAULT_PROVIDER, sl as normalizeChannelId$2, sn as setConfigOverride, so as DEFAULT_AGENT_WORKSPACE_DIR, sr as getCustomProviderApiKey, ss as resolveDiscordAccount, st as canonicalizeMainSessionAlias, t as getActivePluginRegistry, tc as resolveEffectiveEnableState, tn as isAvatarHttpUrl, to as resolveDefaultAgentId, tr as resolveModelRefFromString, tt as resolveDefaultSessionStorePath, u as ensureFasedAgentModelsJson, uc as matchPluginCommand, ul as normalizeChatChannelId, un as parseConfigPath, uo as DEFAULT_IDENTITY_FILENAME, ur as resolveEnvApiKey, us as resolveChannelGroupRequireMention, ut as resolveMainSessionKey, v as emitSessionTranscriptUpdate, vc as isRecord$3, vn as validateSafeBinArgv, vo as resolveFasedAgentPackageRootSync, vr as normalizeModelCatalogModelId, vs as classifySessionKeyShape, vt as validateConfigObjectWithPlugins, w as updateSessionStore, wi as sanitizeHostExecEnv, wn as matchAllowlist, wo as logInfo, wr as isProfileInCooldown, ws as DEFAULT_ACCOUNT_ID, x as readSessionUpdatedAt, xc as normalizeE164, xi as isDangerousHostEnvOverrideVarName, xn as isWindowsPlatform, xo as spawnWithFallback, xs as resolveAgentIdFromSessionKey, yi as getShellPathFromLoginShell, yn as analyzeShellCommand, yo as runCommandWithTimeout, yr as normalizeModelCatalogProviderId, ys as normalizeAgentId, z as INPUT_PROVENANCE_KIND_VALUES, za as createTelegramActionGate, zc as defaultRuntime, zn as resolveDiscordPreviewStreamMode, zo as toAgentModelListLike, zr as findNormalizedProviderValue, zs as isGatewayMessageChannel } from "./runtime-JZwgwXxK.js";
2
+ import { $ as resolveFreshSessionTotalTokens, $a as resolveAgentSkillsFilter, $c as getChildLogger, $n as resolveConfiguredModelRef, $o as resolveSignalAccount, $r as formatThinkingLevels, $s as applyTestPluginDefaults, $t as AVATAR_MAX_BYTES, A as mergeDeliveryContext, Ac as sliceUtf16Safe, An as unwrapKnownDispatchWrapperInvocation, Ar as dedupeProfileIds, As as isAcpSessionKey, At as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, B as applyInputProvenanceToUserMessage, Ba as listEnabledTelegramAccounts, Bc as clearActiveProgressLine, Bi as parseSlackTarget, Bn as resolveSlackNativeStreaming, Bo as isTruthyEnvValue, Br as normalizeProviderId$2, Bs as isInternalMessageChannel, C as updateLastRoute, Ca as resolveWhatsAppAccount, Ci as isDangerousHostInheritedEnvVarName, Cn as DEFAULT_SAFE_BINS, Co as logError, Cr as getSoonestCooldownExpiry, Cs as sanitizeAgentId, D as resolveCacheTtlMs$1, Da as logWebSelfId, Dc as shortenHomeInString, Di as getChannelPlugin, Dn as extractShellWrapperInlineCommand, Do as openBoundaryFileSync, Dr as resolveProfilesUnavailableReason, Ds as isBlockedObjectKey, Dt as TELEGRAM_COMMAND_NAME_PATTERN, E as isCacheEnabled, Ea as getWebAuthAgeMs, Ei as deriveSessionMetaPatch, En as resolveCommandResolutionFromArgv, Eo as openBoundaryFile, Er as markAuthProfileUsed, Es as normalizeOptionalAccountId, F as capArrayByJsonBytes, Fc as triggerInternalHook, Fn as resolveSafeBinProfiles, Fr as resolveAuthStorePathForDisplay, Fs as resolveAccountEntry, Ft as normalizeScpRemoteHost, G as resolveSessionKey$1, Ga as buildChannelAccountBindings, Gc as logVerbose, Gn as buildAllowedModelSet, Gr as resolveAuthProfileDisplayLabel, Gs as resolveMessageChannel, H as normalizeInputProvenance, Hc as unregisterActiveProgressLine, Hr as discoverFasedAgentPlugins, Hs as listDeliverableMessageChannels, I as countToolResults, Ia as webAuthExists, Ic as createSubsystemLogger, In as applyMergePatch, Ir as resolveFasedAgentAgentDir, Is as resolveGroupSessionKey, J as resolveSessionResetPolicy, Ja as listAgentEntries, Ji as listChannelDocks, Jn as findNormalizedProviderValue$1, Jo as resolveSlackAppToken, Jr as assertSecretInputResolved, Js as GATEWAY_CLIENT_NAMES, K as evaluateSessionFreshness, Kc as setVerbose, Kn as buildConfiguredAllowlistKeys, Ko as resolveSlackAccount, Kr as isPrivateNetworkBaseUrl, Ks as GATEWAY_CLIENT_IDS, L as extractToolCallNames, La as formatCliCommand, Ln as isSafeExecutableValue, Lo as resolveAgentModelFallbackValues, Ls as INTERNAL_MESSAGE_CHANNEL, M as normalizeSessionDeliveryFields, Ma as readWebSelfId, Mc as truncateUtf16Safe, Mn as splitShellArgs, Mr as listProvidersWithStoredCredentials, Ms as isSubagentSessionKey, Mt as mergeInboundPathRoots, N as normalizeAccountId$3, Nc as isPlainObject, Nn as SAFE_BIN_PROFILES, Nr as markAuthProfileGood, Ns as parseAgentSessionKey, Nt as resolveIMessageAttachmentRoots, O as deliveryContextFromSession, Oa as logoutWeb, Oc as shortenHomePath, Oi as listChannelPlugins, On as isDispatchWrapperExecutable, Or as resolveApiKeyForProfile, Os as deriveSessionChatType, Ot as normalizeTelegramCommandName, P as archiveSessionTranscripts, Pc as createInternalHookEvent, Pn as normalizeSafeBinProfileFixtures, Pr as ensureAuthProfileStore, Ps as resolveThreadParentSessionKey, Pt as resolveIMessageRemoteAttachmentRoots, Q as mergeSessionEntry, Qa as resolveAgentModelFallbacksOverride, Qc as theme, Qn as normalizeProviderId$1, Qr as lookupProviderManifestModelCapability, Qs as normalizeStringEntriesLower, Qt as parseDurationMs, R as parseInlineDirectives$1, Ra as resolveCliName, Rc as createNonExitingRuntime, Rn as mapStreamingModeToSlackLegacyDraftStreamMode, Ro as resolveAgentModelPrimaryValue, Rr as withFileLock, Rs as isDeliverableMessageChannel, S as recordSessionMetaFromInbound, Sn as splitCommandChain, So as logDebug, Sr as resolveAuthProfileOrder, Ss as resolveThreadSessionKeys, T as updateSessionStoreEntry, Tc as resolveUserPath, Ti as resolveOwnerDisplaySetting, Tn as resolveAllowlistCandidatePath, To as logWarn, Tr as markAuthProfileFailure, Ts as normalizeAccountId$2, U as acquireSessionWriteLock, Ua as resolveTelegramAccount, Uc as danger, Un as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, Ur as isPathInside, Us as normalizeMessageChannel, V as hasInterSessionUserProvenance, Va as listTelegramAccountIds, Vc as registerActiveProgressLine, Vi as resolveSlackChannelId, Vn as resolveSlackStreamingMode, Vo as parseBooleanValue$1, Vr as loadPluginManifestRegistry, Vs as isMarkdownCapableMessageChannel, W as resolveSessionLockMaxHoldFromTimeout, Wa as resolveTelegramToken, Wn as resolveAgentMaxConcurrent, Wr as safeStatSync, Ws as resolveGatewayMessageChannel, X as resolveThreadFlag, Xa as resolveAgentConfig, Xc as colorize, Xn as modelKey, Xo as listEnabledSignalAccounts, Xr as splitTrailingAuthProfile, Xs as normalizeHyphenSlug, Xt as MODEL_APIS, Y as resolveSessionResetType, Ya as listAgentIds, Yc as warn, Yn as isCliProvider, Yo as resolveSlackBotToken, Yr as coerceSecretRef, Ys as normalizeAtHashSlug, Z as DEFAULT_RESET_TRIGGERS, Za as resolveAgentDir, Zc as isRich, Zn as normalizeModelRef$2, Zr as isOpenAISignInRuntimeModelSupported, Zs as normalizeStringEntries, Zt as getBlockedNetworkModeReason, _ as resolveAndPersistSessionFile, _c as formatTerminalLink, _i as compileSafeRegex, _n as normalizeTrustedSafeBinDirs, _o as resolveFasedAgentPackageRoot, _r as mergeModelCatalogRowsByAuthority, _t as writeConfigFile, a as createPluginRegistry, aa as normalizeSignalMessagingTarget, ac as resolveLeastPrivilegeOperatorScopesForMethod, ai as DEFAULT_CONTEXT_TOKENS, al as listChatChannels, an as getConfigOverrides, ao as resolveSessionAgentIds, ar as normalizeGoogleModelId, as as listEnabledDiscordAccounts, at as resolveSessionTranscriptsDirForAgent, b as loadSessionStore, ba as hasAnyWhatsAppAuth, bi as resolveShellEnvFallbackTimeoutMs, bn as buildEnforcedShellCommand, bo as runExec, br as normalizeProviderCatalogRows, bs as normalizeMainKey, c as lookupContextTokens, cc as getPluginCommandSpecs, ci as VERSION, cl as CHANNEL_IDS, cn as unsetConfigOverride, co as DEFAULT_BOOTSTRAP_FILENAME, cr as requireApiKey, cs as normalizeDiscordToken, ct as resolveAgentMainSessionKey, dc as CONFIG_DIR, di as extractErrorCode, dl as normalizePluginHttpPath, dn as setConfigValueAtPath, do as DEFAULT_SOUL_FILENAME, dr as resolveModelAuthMode, ds as resolveChannelGroupToolsPolicy, dt as createConfigIO, ec as normalizePluginsConfig, ei as formatXHighModelHint, en as isAvatarDataUrl, eo as resolveAgentWorkspaceDir, er as resolveDefaultModelForAgent, et as setSessionRuntimeModel, f as extractDeliveryInfo, fi as formatErrorMessage, fn as unsetConfigValueAtPath, fo as DEFAULT_TOOLS_FILENAME, fr as CURRENT_MODEL_PROVIDER_CATALOG, ft as loadConfig, g as resolveSessionTranscriptFile, gc as escapeRegExp, gi as redactToolDetail, gn as listWritableExplicitTrustedSafeBinDirs, go as loadWorkspaceBootstrapFiles, gr as buildModelCatalogMergeKey, gt as resolveConfigSnapshotHash, h as resolveMirroredTranscriptText, hc as ensureDir$3, hi as redactSensitiveText, hn as isTrustedSafeBinPath, ho as filterBootstrapFilesForSession, hr as retryAsync, hs as buildAgentMainSessionKey, ht as readConfigFileSnapshotForWrite, i as setActivePluginRegistry, ic as CLI_DEFAULT_OPERATOR_SCOPES, ii as supportsXHighThinking, il as getChatChannelMeta, in as validateJsonSchemaValue, io as resolveSessionAgentId, ir as resolveThinkingDefault, it as resolveSessionTranscriptPath, j as normalizeDeliveryContext, jn as unwrapKnownShellMultiplexerInvocation, jo as resolvePathViaExistingAncestorSync, jr as listProfilesForProvider, js as isCronSessionKey, jt as isInboundPathAllowed, k as deliveryContextKey, kc as sleep$1, ki as normalizeChannelId$1, kn as isShellWrapperExecutable, kr as runTasksWithConcurrency, ks as getSubagentDepth, kt as resolveTelegramCustomCommands, l as resolveContextTokensForModel, lc as listPluginCommands, li as getPackageManifestMetadata, ll as CHAT_CHANNEL_ORDER, ln as getConfigValueAtPath, lo as DEFAULT_HEARTBEAT_FILENAME, lr as resolveApiKeyForProvider, ls as resolveChannelGroupPolicy, lt as resolveExplicitAgentSessionKey, m as appendAssistantMessageToSessionTranscript, mn as getTrustedSafeBinDirs, mo as ensureAgentWorkspace, mt as readConfigFileSnapshot, n as getActivePluginRegistryKey, na as isWhatsAppGroupJid, nc as resolveMemorySlotDecision, ni as normalizeThinkLevel, nl as normalizeLogLevel, nn as isPathWithinRoot, no as resolveEffectiveModelFallbacks, nr as resolveReasoningDefault, ns as resolveIMessageAccount, nt as resolveSessionFilePath, o as createRuntimeHelpers, oc as clearPluginCommands, oi as DEFAULT_MODEL, ol as normalizeAnyChannelId, on as resetConfigOverrides, oo as DEFAULT_AGENTS_FILENAME, or as getApiKeyForModel, ot as resolveStorePath, p as parseSessionThreadInfo, pc as clampInt, pi as formatUncaughtError, pn as ensurePluginAllowlisted, po as DEFAULT_USER_FILENAME, pr as listCurrentModelCatalogRows, ps as DEFAULT_AGENT_ID, pt as parseConfigJson5, q as resolveChannelResetConfig, qa as hasConfiguredModelFallbacks, qc as shouldLogVerbose, qi as getChannelDock, qn as buildModelAliasIndex, qr as normalizeSecretInput, qs as GATEWAY_CLIENT_MODES, r as requireActivePluginRegistry, ra as normalizeWhatsAppTarget, rc as ADMIN_SCOPE, ri as resolveModelThinkingCapability, rl as resolvePreferredFasedAgentTmpDir, rn as isSupportedLocalAvatarExtension, ro as resolveRunModelFallbacksOverride, rr as resolveSubagentSpawnModelSelection, rs as createDiscordActionGate, rt as resolveSessionFilePathOptions, s as loadCombinedSessionStoreForGateway, sc as executePluginCommand, si as DEFAULT_PROVIDER, sl as normalizeChannelId$2, sn as setConfigOverride, so as DEFAULT_AGENT_WORKSPACE_DIR, sr as getCustomProviderApiKey, ss as resolveDiscordAccount, st as canonicalizeMainSessionAlias, t as getActivePluginRegistry, tc as resolveEffectiveEnableState, tn as isAvatarHttpUrl, to as resolveDefaultAgentId, tr as resolveModelRefFromString, tt as resolveDefaultSessionStorePath, u as ensureFasedAgentModelsJson, uc as matchPluginCommand, ul as normalizeChatChannelId, un as parseConfigPath, uo as DEFAULT_IDENTITY_FILENAME, ur as resolveEnvApiKey, us as resolveChannelGroupRequireMention, ut as resolveMainSessionKey, v as emitSessionTranscriptUpdate, vc as isRecord$3, vn as validateSafeBinArgv, vo as resolveFasedAgentPackageRootSync, vr as normalizeModelCatalogModelId, vs as classifySessionKeyShape, vt as validateConfigObjectWithPlugins, w as updateSessionStore, wi as sanitizeHostExecEnv, wn as matchAllowlist, wo as logInfo, wr as isProfileInCooldown, ws as DEFAULT_ACCOUNT_ID, x as readSessionUpdatedAt, xc as normalizeE164, xi as isDangerousHostEnvOverrideVarName, xn as isWindowsPlatform, xo as spawnWithFallback, xs as resolveAgentIdFromSessionKey, yi as getShellPathFromLoginShell, yn as analyzeShellCommand, yo as runCommandWithTimeout, yr as normalizeModelCatalogProviderId, ys as normalizeAgentId, z as INPUT_PROVENANCE_KIND_VALUES, za as createTelegramActionGate, zc as defaultRuntime, zn as resolveDiscordPreviewStreamMode, zo as toAgentModelListLike, zr as findNormalizedProviderValue, zs as isGatewayMessageChannel } from "./runtime-d_ap8ggn.js";
3
3
  import { a as saveJsonFile, f as resolveStateDir, h as resolveRequiredHomeDir, i as loadJsonFile, l as resolveGatewayPort, o as STATE_DIR, p as expandHomePrefix, s as resolveConfigPath } from "./github-copilot-token-CVC_19vl.js";
4
4
  import { n as resolveConversationLabel, r as normalizeChatType } from "./conversation-label-DEoJ9tbZ.js";
5
- import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, kt as resolveChannelEntryMatchWithFallback, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-B7uKkTxV.js";
5
+ import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, kt as resolveChannelEntryMatchWithFallback, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-DYsMepvi.js";
6
6
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-BD-UJHcc.js";
7
- import { t as fetchWithSsrFGuard } from "./fetch-guard-CTD85vq2.js";
7
+ import { t as fetchWithSsrFGuard } from "./fetch-guard-BciVpgwU.js";
8
8
  import { a as isBlockedHostnameOrIp, c as normalizeHostname, t as SsrFBlockedError } from "./ssrf-DHglwD1p.js";
9
9
  import { n as redactSensitiveUrlLikeString, t as redactSensitiveUrl } from "./redact-sensitive-url-C_6JDrWW.js";
10
- 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-jXCTO3i_.js";
11
- import { A as buildTypingThreadParams, B as resolveTelegramStreamMode, C as buildGroupLabel, D as buildTelegramGroupPeerId, E as buildTelegramGroupFrom, F as normalizeForwardedContext, G as resolveSenderAllowMatch, H as isSenderAllowed$1, I as resolveTelegramForumThreadId, J as parseTelegramTarget, K as isVoiceCompatibleAudio, L as resolveTelegramGroupAllowFromContext, M as expandTextLinks, N as extractTelegramLocation, O as buildTelegramParentPeer, P as hasBotMention, R as resolveTelegramMediaPlaceholder, S as withTelegramApiErrorLogging, T as buildSenderName, U as normalizeAllowFrom$2, V as resolveTelegramThreadSpec, W as normalizeDmAllowFromWithStore$1, X as formatLocationText, Y as resolveTelegramTargetChatType, Z as toLocationContext, _ as markdownToTelegramHtml, a as reactMessageTelegram, at as upsertChannelPairingRequest, b as resolveTelegramFetch, c as sendStickerTelegram, ct as getPairingAdapter, d as loadCronStore, dt as isSenderIdAllowed, f as resolveCronStorePath, ft as mergeDmAllowFromSources, g as markdownToTelegramChunks, h as isRecoverableTelegramNetworkError, i as editMessageTelegram, it as removeChannelAllowFromStoreEntry, j as describeReplyTarget, k as buildTelegramThreadParams, lt as listPairingChannels, m as wasSentByBot, n as createForumTopicTelegram, nt as readChannelAllowFromStore, o as sendMessageTelegram, ot as readJsonFileWithFallback, p as saveCronStore, pt as resolveGroupAllowFromSources, r as deleteMessageTelegram, s as sendPollTelegram, st as writeJsonFileAtomically, t as buildInlineKeyboard, tt as addChannelAllowFromStoreEntry, u as resolveTelegramVoiceSend, ut as firstDefined$2, v as renderTelegramHtmlText, w as buildSenderLabel, x as splitTelegramCaption, y as wrapFileReferencesInHtml, z as resolveTelegramReplyId } from "./send-b2ALvHco.js";
12
- 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, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-BntoXexQ.js";
13
- import { E as mediaKindFromMime, S as kindFromMime, _ as extensionForMime, a as loadWebMedia, b as isAudioFileName, c as getDefaultMediaLocalRoots, d as readResponseWithLimit, f as IMAGE_REDUCE_QUALITY_STEPS, g as detectMime, h as resizeToJpeg, i as getDefaultLocalRoots, l as MediaFetchError, m as getImageMetadata, p as buildImageResizeSideGrid, s as getAgentScopedMediaLocalRoots, u as fetchRemoteMedia, v as getFileExtension, w as MAX_IMAGE_BYTES, x as isGifMedia, y as imageMimeFromFormat } from "./ir-Bbym3o_S.js";
14
- import { _ as sanitizeToolResultImages, a as createActionGate, b as estimateBase64DecodedBytes, c as jsonResult, d as readReactionParams, f as readStringArrayParam, g as sanitizeImageBlocks, h as sanitizeContentBlocksImages, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam, v as resolveImageSanitizationLimits, y as canonicalizeBase64 } from "./target-errors-WJdwRuAS.js";
15
- import { a as createSlackWebClient, c as SILENT_REPLY_TOKEN, d as parseSlackBlocksInput, f as validateSlackBlocksArray, i as buildSlackBlocksFallbackText, l as isSilentReplyPrefixText, o as resolveSlackWebClientOptions, s as HEARTBEAT_TOKEN, t as sendMessageSlack, u as isSilentReplyText } from "./send-BkZyweGW.js";
16
- import { a as resolveAckReaction, c as resolveHumanDelayConfig, i as resolveResponsePrefixTemplate, n as createReplyPrefixOptions, o as resolveAgentIdentity, s as resolveEffectiveMessagesConfig } from "./reply-prefix-D1GlTOVT.js";
17
- import { C as rejectPendingPairingRequest, D as readJsonFile$1, E as createAsyncLock, O as writeJsonAtomic, S as safeEqualSecret, T as resolvePairingPaths, _ as assertSandboxPath, b as resolveSandboxedMediaSource, c as getSkillsSnapshotVersion, d as resolveSkillsPromptForRun, f as syncSkillsToWorkspace, g as assertMediaNotDataUrl, 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, v as resolveSandboxInputPath, w as pruneExpiredPending, x as generatePairingToken, y as resolveSandboxPath } from "./skill-commands-DqGrOYfl.js";
18
- import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-B42SDHGm.js";
19
- import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-BnS_JikV.js";
20
- import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-ZLFppfUS.js";
21
- import { a as writeFileWithinRoot, n as openFileWithinRoot, r as readFileWithinRoot, t as SafeOpenError } from "./fs-safe-DOPVDJix.js";
22
- import { a as saveMediaBuffer, i as getMediaDir, n as ensureMediaDir } from "./outbound-attachment-ddz0MwiT.js";
23
- import { B as DEFAULT_FASED_BROWSER_PROFILE_NAME, C as assertBrowserNavigationAllowed, D as fetchJson$1, E as appendCdpPath, F as DEFAULT_AI_SNAPSHOT_MAX_CHARS, G as resolveClientIp, H as isLoopbackHost, I as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, K as resolveForwardedClientIp, L as DEFAULT_BROWSER_EVALUATE_ENABLED, M as stopChromeExtensionRelayServer, N as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, O as fetchOk, P as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, R as DEFAULT_FASED_BROWSER_COLOR, S as InvalidBrowserNavigationUrlError, T as withBrowserNavigationPolicy, U as isSecureWebSocketUrl, V as isLoopbackAddress, W as isTrustedProxyAddress, _ as captureScreenshot, b as normalizeCdpWsUrl, c as normalizeBrowserFormField, d as isChromeReachable, f as launchFasedAgentChrome, g as resolveLsofCommandSync, h as resolveBrowserExecutableForPlatform, i as resolveExistingPathsWithinRoot, j as ensureChromeExtensionRelayServer, m as stopFasedAgentChrome, n as DEFAULT_TRACE_DIR, o as resolveWritablePathWithinRoot, p as resolveFasedAgentUserDataDir, q as rawDataToString, r as DEFAULT_UPLOAD_DIR, t as DEFAULT_DOWNLOAD_DIR, u as isChromeCdpReady, v as createTargetViaCdp, w as assertBrowserNavigationResultAllowed, x as snapshotAria, z as DEFAULT_FASED_BROWSER_ENABLED } from "./paths-BjhD4HPg.js";
24
- import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-BcI4xSoe.js";
10
+ 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-XXJCJ2as.js";
11
+ import { A as buildTypingThreadParams, B as resolveTelegramStreamMode, C as buildGroupLabel, D as buildTelegramGroupPeerId, E as buildTelegramGroupFrom, F as normalizeForwardedContext, G as resolveSenderAllowMatch, H as isSenderAllowed$1, I as resolveTelegramForumThreadId, J as parseTelegramTarget, K as isVoiceCompatibleAudio, L as resolveTelegramGroupAllowFromContext, M as expandTextLinks, N as extractTelegramLocation, O as buildTelegramParentPeer, P as hasBotMention, R as resolveTelegramMediaPlaceholder, S as withTelegramApiErrorLogging, T as buildSenderName, U as normalizeAllowFrom$2, V as resolveTelegramThreadSpec, W as normalizeDmAllowFromWithStore$1, X as formatLocationText, Y as resolveTelegramTargetChatType, Z as toLocationContext, _ as markdownToTelegramHtml, a as reactMessageTelegram, at as upsertChannelPairingRequest, b as resolveTelegramFetch, c as sendStickerTelegram, ct as getPairingAdapter, d as loadCronStore, dt as isSenderIdAllowed, f as resolveCronStorePath, ft as mergeDmAllowFromSources, g as markdownToTelegramChunks, h as isRecoverableTelegramNetworkError, i as editMessageTelegram, it as removeChannelAllowFromStoreEntry, j as describeReplyTarget, k as buildTelegramThreadParams, lt as listPairingChannels, m as wasSentByBot, n as createForumTopicTelegram, nt as readChannelAllowFromStore, o as sendMessageTelegram, ot as readJsonFileWithFallback, p as saveCronStore, pt as resolveGroupAllowFromSources, r as deleteMessageTelegram, s as sendPollTelegram, st as writeJsonFileAtomically, t as buildInlineKeyboard, tt as addChannelAllowFromStoreEntry, u as resolveTelegramVoiceSend, ut as firstDefined$2, v as renderTelegramHtmlText, w as buildSenderLabel, x as splitTelegramCaption, y as wrapFileReferencesInHtml, z as resolveTelegramReplyId } from "./send-DtgDCh9h.js";
12
+ 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, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-CWM4OQ5j.js";
13
+ import { E as mediaKindFromMime, S as kindFromMime, _ as extensionForMime, a as loadWebMedia, b as isAudioFileName, c as getDefaultMediaLocalRoots, d as readResponseWithLimit, f as IMAGE_REDUCE_QUALITY_STEPS, g as detectMime, h as resizeToJpeg, i as getDefaultLocalRoots, l as MediaFetchError, m as getImageMetadata, p as buildImageResizeSideGrid, s as getAgentScopedMediaLocalRoots, u as fetchRemoteMedia, v as getFileExtension, w as MAX_IMAGE_BYTES, x as isGifMedia, y as imageMimeFromFormat } from "./ir-BqSQJB3B.js";
14
+ import { _ as sanitizeToolResultImages, a as createActionGate, b as estimateBase64DecodedBytes, c as jsonResult, d as readReactionParams, f as readStringArrayParam, g as sanitizeImageBlocks, h as sanitizeContentBlocksImages, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam, v as resolveImageSanitizationLimits, y as canonicalizeBase64 } from "./target-errors-DpDEAats.js";
15
+ import { a as createSlackWebClient, c as SILENT_REPLY_TOKEN, d as parseSlackBlocksInput, f as validateSlackBlocksArray, i as buildSlackBlocksFallbackText, l as isSilentReplyPrefixText, o as resolveSlackWebClientOptions, s as HEARTBEAT_TOKEN, t as sendMessageSlack, u as isSilentReplyText } from "./send-Cvf5nOIr.js";
16
+ import { a as resolveAckReaction, c as resolveHumanDelayConfig, i as resolveResponsePrefixTemplate, n as createReplyPrefixOptions, o as resolveAgentIdentity, s as resolveEffectiveMessagesConfig } from "./reply-prefix-DYUukSpx.js";
17
+ import { C as rejectPendingPairingRequest, D as readJsonFile$1, E as createAsyncLock, O as writeJsonAtomic, S as safeEqualSecret, T as resolvePairingPaths, _ as assertSandboxPath, b as resolveSandboxedMediaSource, c as getSkillsSnapshotVersion, d as resolveSkillsPromptForRun, f as syncSkillsToWorkspace, g as assertMediaNotDataUrl, 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, v as resolveSandboxInputPath, w as pruneExpiredPending, x as generatePairingToken, y as resolveSandboxPath } from "./skill-commands-BKfUIpx3.js";
18
+ import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-yy6-Kb3T.js";
19
+ import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-BfpYqaMu.js";
20
+ import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-DmROHvdC.js";
21
+ import { a as writeFileWithinRoot, n as openFileWithinRoot, r as readFileWithinRoot, t as SafeOpenError } from "./fs-safe-Ch39tcFn.js";
22
+ import { a as saveMediaBuffer, i as getMediaDir, n as ensureMediaDir } from "./outbound-attachment-8pyStMIv.js";
23
+ import { B as DEFAULT_FASED_BROWSER_PROFILE_NAME, C as assertBrowserNavigationAllowed, D as fetchJson$1, E as appendCdpPath, F as DEFAULT_AI_SNAPSHOT_MAX_CHARS, G as resolveClientIp, H as isLoopbackHost, I as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, K as resolveForwardedClientIp, L as DEFAULT_BROWSER_EVALUATE_ENABLED, M as stopChromeExtensionRelayServer, N as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, O as fetchOk, P as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, R as DEFAULT_FASED_BROWSER_COLOR, S as InvalidBrowserNavigationUrlError, T as withBrowserNavigationPolicy, U as isSecureWebSocketUrl, V as isLoopbackAddress, W as isTrustedProxyAddress, _ as captureScreenshot, b as normalizeCdpWsUrl, c as normalizeBrowserFormField, d as isChromeReachable, f as launchFasedAgentChrome, g as resolveLsofCommandSync, h as resolveBrowserExecutableForPlatform, i as resolveExistingPathsWithinRoot, j as ensureChromeExtensionRelayServer, m as stopFasedAgentChrome, n as DEFAULT_TRACE_DIR, o as resolveWritablePathWithinRoot, p as resolveFasedAgentUserDataDir, q as rawDataToString, r as DEFAULT_UPLOAD_DIR, t as DEFAULT_DOWNLOAD_DIR, u as isChromeCdpReady, v as createTargetViaCdp, w as assertBrowserNavigationResultAllowed, x as snapshotAria, z as DEFAULT_FASED_BROWSER_ENABLED } from "./paths-QYyMn2Wi.js";
24
+ import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-DRcprlRI.js";
25
25
  import { n as normalizePollInput } from "./polls-Bqxnqm99.js";
26
- import { n as resolveMarkdownTableMode } from "./markdown-tables-DpMWx8Tl.js";
27
- import { t as convertMarkdownTables } from "./tables-b0zUZRMn.js";
28
- import { C as normalizeUsageDisplay, S as normalizeReasoningLevel, T as resolveResponseUsageMode, _ as isNativeCommandsExplicitlyDisabled, a as listChatCommands, b as resolveNativeSkillsEnabled, c as listNativeCommandSpecsForConfig, d as parseCommandArgs, f as resolveCommandArgChoices, g as isCommandFlagEnabled, h as shouldHandleTextCommands, i as isCommandEnabled, l as maybeResolveTextAlias, m as serializeCommandArgs, o as listChatCommandsForConfig, p as resolveCommandArgMenu, r as findCommandByNativeName, s as listNativeCommandSpecs, t as buildCommandTextFromArgs, u as normalizeCommandBody, v as isRestartEnabled, w as normalizeVerboseLevel, x as normalizeElevatedLevel, y as resolveNativeCommandsEnabled } from "./commands-registry-Deqd0K8M.js";
26
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-Dvj4VeiJ.js";
27
+ import { t as convertMarkdownTables } from "./tables-DQEs0bVk.js";
28
+ import { C as normalizeUsageDisplay, S as normalizeReasoningLevel, T as resolveResponseUsageMode, _ as isNativeCommandsExplicitlyDisabled, a as listChatCommands, b as resolveNativeSkillsEnabled, c as listNativeCommandSpecsForConfig, d as parseCommandArgs, f as resolveCommandArgChoices, g as isCommandFlagEnabled, h as shouldHandleTextCommands, i as isCommandEnabled, l as maybeResolveTextAlias, m as serializeCommandArgs, o as listChatCommandsForConfig, p as resolveCommandArgMenu, r as findCommandByNativeName, s as listNativeCommandSpecs, t as buildCommandTextFromArgs, u as normalizeCommandBody, v as isRestartEnabled, w as normalizeVerboseLevel, x as normalizeElevatedLevel, y as resolveNativeCommandsEnabled } from "./commands-registry-CnlOnVB6.js";
29
29
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-BfsNSQia.js";
30
- import { i as discoverModels, r as discoverAuthStorage } from "./pi-model-discovery-CFtZGJhK.js";
31
- 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-By-vmNGK.js";
30
+ import { i as discoverModels, r as discoverAuthStorage } from "./pi-model-discovery-BGBK5j7O.js";
31
+ 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-BYaWimfS.js";
32
32
  import { n as generateSecureUuid, t as generateSecureToken } from "./secure-random-DvsQZtss.js";
33
- import { t as resolveMemorySearchConfig } from "./memory-search-DASOKZdc.js";
34
- import { i as executeWithApiKeyRotation, n as parseGeminiAuth, r as collectProviderApiKeysForExecution } from "./manager-CIggnIJi.js";
35
- import { c as normalizeExtraMemoryPaths, s as listMemoryFiles } from "./internal-DQx46pKX.js";
36
- import { i as resolveQmdScopeDenial } from "./qmd-scope-CSMRsTtS.js";
33
+ import { t as resolveMemorySearchConfig } from "./memory-search-BMkuVf7r.js";
34
+ import { i as executeWithApiKeyRotation, n as parseGeminiAuth, r as collectProviderApiKeysForExecution } from "./manager-DQJURMcB.js";
35
+ import { c as normalizeExtraMemoryPaths, s as listMemoryFiles } from "./internal-Bsx2Ck4H.js";
36
+ import { i as resolveQmdScopeDenial } from "./qmd-scope-CDToQJAg.js";
37
37
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-DLuYVc4W.js";
38
38
  import { t as redactIdentifier } from "./redact-identifier-BpQRFqut.js";
39
39
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-DzU3t_M4.js";
40
- import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-y3cyO8Nu.js";
40
+ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-CKHCIkIh.js";
41
41
  import { t as makeProxyFetch } from "./proxy-BiW7MtYh.js";
42
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-4ciKRt42.js";
43
- import { t as getActiveWebListener } from "./active-listener-DMQkC65_.js";
42
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-DuVEe866.js";
43
+ import { t as getActiveWebListener } from "./active-listener-CiGA0hRS.js";
44
44
  import { createRequire } from "node:module";
45
45
  import * as path$1 from "node:path";
46
46
  import path, { isAbsolute, posix } from "node:path";
47
47
  import fs, { constants, existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
48
48
  import os, { homedir } from "node:os";
49
- import JSON5 from "json5";
49
+ import json5 from "json5";
50
50
  import { inspect, isDeepStrictEqual, promisify } from "node:util";
51
51
  import * as fs$2 from "node:fs/promises";
52
52
  import fs$1, { appendFile, mkdir, mkdtemp, rm } from "node:fs/promises";
@@ -4078,7 +4078,7 @@ async function resolveDiscordUserAllowlist(params) {
4078
4078
 
4079
4079
  //#endregion
4080
4080
  //#region src/brand.ts
4081
- const FASED_PRODUCT_VERSION = "0.1.13";
4081
+ const FASED_PRODUCT_VERSION = "0.1.14";
4082
4082
  const FASED_DISPLAY_VERSION = `v${FASED_PRODUCT_VERSION}`;
4083
4083
 
4084
4084
  //#endregion
@@ -20549,27 +20549,27 @@ function createOutboundSendDepsFromCliSource(deps) {
20549
20549
  function createDefaultDeps() {
20550
20550
  return {
20551
20551
  sendMessageWhatsApp: async (...args) => {
20552
- const { sendMessageWhatsApp } = await import("./web-Bo3jM7sh.js");
20552
+ const { sendMessageWhatsApp } = await import("./web-Iu1NvzWV.js");
20553
20553
  return await sendMessageWhatsApp(...args);
20554
20554
  },
20555
20555
  sendMessageTelegram: async (...args) => {
20556
- const { sendMessageTelegram } = await import("./send-b2ALvHco.js").then((n) => n.l);
20556
+ const { sendMessageTelegram } = await import("./send-DtgDCh9h.js").then((n) => n.l);
20557
20557
  return await sendMessageTelegram(...args);
20558
20558
  },
20559
20559
  sendMessageDiscord: async (...args) => {
20560
- const { sendMessageDiscord } = await import("./send-B7uKkTxV.js").then((n) => n.t);
20560
+ const { sendMessageDiscord } = await import("./send-DYsMepvi.js").then((n) => n.t);
20561
20561
  return await sendMessageDiscord(...args);
20562
20562
  },
20563
20563
  sendMessageSlack: async (...args) => {
20564
- const { sendMessageSlack } = await import("./send-BkZyweGW.js").then((n) => n.n);
20564
+ const { sendMessageSlack } = await import("./send-Cvf5nOIr.js").then((n) => n.n);
20565
20565
  return await sendMessageSlack(...args);
20566
20566
  },
20567
20567
  sendMessageSignal: async (...args) => {
20568
- const { sendMessageSignal } = await import("./send-By-vmNGK.js").then((n) => n.i);
20568
+ const { sendMessageSignal } = await import("./send-BYaWimfS.js").then((n) => n.i);
20569
20569
  return await sendMessageSignal(...args);
20570
20570
  },
20571
20571
  sendMessageIMessage: async (...args) => {
20572
- const { sendMessageIMessage } = await import("./send-jXCTO3i_.js").then((n) => n.n);
20572
+ const { sendMessageIMessage } = await import("./send-XXJCJ2as.js").then((n) => n.n);
20573
20573
  return await sendMessageIMessage(...args);
20574
20574
  }
20575
20575
  };
@@ -22544,7 +22544,7 @@ async function getMemorySearchManager(params) {
22544
22544
  if (cached) return { manager: cached };
22545
22545
  }
22546
22546
  try {
22547
- const { QmdMemoryManager } = await import("./qmd-manager-Cwq6jm3-.js");
22547
+ const { QmdMemoryManager } = await import("./qmd-manager-DAYkSE5z.js");
22548
22548
  const primary = await QmdMemoryManager.create({
22549
22549
  cfg: params.cfg,
22550
22550
  agentId: params.agentId,
@@ -22556,7 +22556,7 @@ async function getMemorySearchManager(params) {
22556
22556
  const wrapper = new FallbackMemoryManager({
22557
22557
  primary,
22558
22558
  fallbackFactory: async () => {
22559
- const { MemoryIndexManager } = await import("./manager-CIggnIJi.js").then((n) => n.t);
22559
+ const { MemoryIndexManager } = await import("./manager-DQJURMcB.js").then((n) => n.t);
22560
22560
  return await MemoryIndexManager.get(params);
22561
22561
  }
22562
22562
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -22569,12 +22569,12 @@ async function getMemorySearchManager(params) {
22569
22569
  }
22570
22570
  }
22571
22571
  try {
22572
- const { MemoryIndexManager } = await import("./manager-CIggnIJi.js").then((n) => n.t);
22572
+ const { MemoryIndexManager } = await import("./manager-DQJURMcB.js").then((n) => n.t);
22573
22573
  return { manager: await MemoryIndexManager.get(params) };
22574
22574
  } catch (err) {
22575
22575
  const message = err instanceof Error ? err.message : String(err);
22576
22576
  if (isNodeSqliteUnavailable(message)) {
22577
- const { FilesystemMemorySearchManager } = await import("./filesystem-manager-BX7oNQR8.js");
22577
+ const { FilesystemMemorySearchManager } = await import("./filesystem-manager-B5AL-sCv.js");
22578
22578
  const manager = await FilesystemMemorySearchManager.create({
22579
22579
  cfg: params.cfg,
22580
22580
  agentId: params.agentId,
@@ -31497,14 +31497,14 @@ async function resolveMessageChannelSelection(params) {
31497
31497
 
31498
31498
  //#endregion
31499
31499
  //#region src/infra/outbound/session-context.ts
31500
- function normalizeOptionalString$2(value) {
31500
+ function normalizeOptionalString$3(value) {
31501
31501
  if (typeof value !== "string") return;
31502
31502
  const trimmed = value.trim();
31503
31503
  return trimmed.length > 0 ? trimmed : void 0;
31504
31504
  }
31505
31505
  function buildOutboundSessionContext(params) {
31506
- const key = normalizeOptionalString$2(params.sessionKey);
31507
- const explicitAgentId = normalizeOptionalString$2(params.agentId);
31506
+ const key = normalizeOptionalString$3(params.sessionKey);
31507
+ const explicitAgentId = normalizeOptionalString$3(params.agentId);
31508
31508
  const derivedAgentId = key ? resolveSessionAgentId({
31509
31509
  sessionKey: key,
31510
31510
  config: params.cfg
@@ -34159,7 +34159,7 @@ function isModuleNotFoundError(err) {
34159
34159
  }
34160
34160
  async function loadPwAiModule(mode) {
34161
34161
  try {
34162
- return await import("./pw-ai-8IF0b_Yx.js");
34162
+ return await import("./pw-ai-qIQtqb0S.js");
34163
34163
  } catch (err) {
34164
34164
  if (mode === "soft") return null;
34165
34165
  if (isModuleNotFoundError(err)) return null;
@@ -34553,11 +34553,11 @@ function createProfileContext(opts, profile) {
34553
34553
  const userDataDir = resolveFasedAgentUserDataDir(profile.name);
34554
34554
  const profileState = getProfileState();
34555
34555
  if (await isHttpReachable(300) && !profileState.running) try {
34556
- await (await import("./pw-ai-8IF0b_Yx.js")).closePlaywrightBrowserConnection();
34556
+ await (await import("./pw-ai-qIQtqb0S.js")).closePlaywrightBrowserConnection();
34557
34557
  } catch {}
34558
34558
  if (profileState.running) await stopRunningBrowser();
34559
34559
  try {
34560
- await (await import("./pw-ai-8IF0b_Yx.js")).closePlaywrightBrowserConnection();
34560
+ await (await import("./pw-ai-qIQtqb0S.js")).closePlaywrightBrowserConnection();
34561
34561
  } catch {}
34562
34562
  if (!fs.existsSync(userDataDir)) return {
34563
34563
  moved: false,
@@ -47919,7 +47919,7 @@ async function loadProviderUsageSummary(opts = {}) {
47919
47919
 
47920
47920
  //#endregion
47921
47921
  //#region src/sessions/model-overrides.ts
47922
- function normalizeOptionalString$1(value) {
47922
+ function normalizeOptionalString$2(value) {
47923
47923
  return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
47924
47924
  }
47925
47925
  function applyModelOverrideToSessionEntry(params) {
@@ -47959,8 +47959,8 @@ function applyModelOverrideToSessionEntry(params) {
47959
47959
  updated = true;
47960
47960
  }
47961
47961
  }
47962
- const runtimeModel = normalizeOptionalString$1(entry.model) ?? "";
47963
- const runtimeProvider = normalizeOptionalString$1(entry.modelProvider) ?? "";
47962
+ const runtimeModel = normalizeOptionalString$2(entry.model) ?? "";
47963
+ const runtimeProvider = normalizeOptionalString$2(entry.modelProvider) ?? "";
47964
47964
  const runtimePresent = runtimeModel.length > 0 || runtimeProvider.length > 0;
47965
47965
  const runtimeAligned = runtimeModel === selection.model && (runtimeProvider.length === 0 || runtimeProvider === selection.provider);
47966
47966
  if (runtimePresent && (selectionUpdated || !runtimeAligned)) {
@@ -49495,14 +49495,42 @@ function resolveAcpThreadSessionDetailLines(params) {
49495
49495
  return lines;
49496
49496
  }
49497
49497
 
49498
+ //#endregion
49499
+ //#region src/infra/outbound/conversation-id.ts
49500
+ function normalizeConversationId(value) {
49501
+ if (typeof value !== "string") return;
49502
+ return value.trim() || void 0;
49503
+ }
49504
+ function resolveConversationIdFromTargets(params) {
49505
+ const threadId = params.threadId != null ? normalizeConversationId(String(params.threadId)) : void 0;
49506
+ if (threadId) return threadId;
49507
+ for (const rawTarget of params.targets) {
49508
+ const target = normalizeConversationId(rawTarget);
49509
+ if (!target) continue;
49510
+ if (target.startsWith("channel:")) {
49511
+ const channelId = normalizeConversationId(target.slice(8));
49512
+ if (channelId) return channelId;
49513
+ continue;
49514
+ }
49515
+ const mentionMatch = target.match(/^<#(\d+)>$/);
49516
+ if (mentionMatch?.[1]) return mentionMatch[1];
49517
+ if (/^\d{6,}$/.test(target)) return target;
49518
+ }
49519
+ }
49520
+
49498
49521
  //#endregion
49499
49522
  //#region src/channels/thread-bindings-policy.ts
49500
49523
  const DISCORD_THREAD_BINDING_CHANNEL = "discord";
49524
+ const TELEGRAM_THREAD_BINDING_CHANNEL = "telegram";
49525
+ const LINE_THREAD_BINDING_CHANNEL = "line";
49501
49526
  const DEFAULT_THREAD_BINDING_IDLE_HOURS$1 = 24;
49502
49527
  const DEFAULT_THREAD_BINDING_MAX_AGE_HOURS$1 = 0;
49503
49528
  function normalizeChannelId(value) {
49504
49529
  return String(value ?? "").trim().toLowerCase();
49505
49530
  }
49531
+ function normalizeOptionalString$1(value) {
49532
+ return typeof value === "string" && value.trim() ? value.trim() : void 0;
49533
+ }
49506
49534
  function normalizeBoolean$1(value) {
49507
49535
  if (typeof value !== "boolean") return;
49508
49536
  return value;
@@ -49548,6 +49576,50 @@ function resolveThreadBindingSpawnPolicy(params) {
49548
49576
  spawnEnabled: normalizeBoolean$1(account?.[spawnFlagKey]) ?? normalizeBoolean$1(root?.[spawnFlagKey]) ?? channel !== DISCORD_THREAD_BINDING_CHANNEL
49549
49577
  };
49550
49578
  }
49579
+ function stripKnownTargetPrefix(value) {
49580
+ const typed = value.match(/^[a-z0-9_-]+:(user|group|room|channel):(.+)$/i);
49581
+ if (typed?.[2]) return typed[2];
49582
+ const colon = value.indexOf(":");
49583
+ return colon > 0 ? value.slice(colon + 1) : value;
49584
+ }
49585
+ function resolveThreadBindingConversationRef(params) {
49586
+ const channel = normalizeChannelId(params.channel);
49587
+ const threadId = params.threadId != null ? String(params.threadId).trim() : "";
49588
+ const groupId = params.groupId != null ? String(params.groupId).trim() : "";
49589
+ const to = normalizeOptionalString$1(params.to);
49590
+ if (channel === TELEGRAM_THREAD_BINDING_CHANNEL) {
49591
+ if (groupId && threadId) return {
49592
+ conversationId: `${groupId}:topic:${threadId}`,
49593
+ parentConversationId: groupId
49594
+ };
49595
+ if (to) {
49596
+ const topic = stripKnownTargetPrefix(to).match(/^(.+):topic:([^:]+)$/);
49597
+ if (topic?.[1] && topic[2]) return {
49598
+ conversationId: `${topic[1]}:topic:${topic[2]}`,
49599
+ parentConversationId: topic[1]
49600
+ };
49601
+ }
49602
+ }
49603
+ if (channel === LINE_THREAD_BINDING_CHANNEL && to) return { conversationId: stripKnownTargetPrefix(to) };
49604
+ if (to?.startsWith("room:")) return { conversationId: to.slice(5) };
49605
+ const resolved = resolveConversationIdFromTargets({
49606
+ threadId,
49607
+ targets: [to]
49608
+ });
49609
+ return resolved ? { conversationId: resolved } : null;
49610
+ }
49611
+ function resolveThreadBindingPlacement(params) {
49612
+ const channel = normalizeChannelId(params.channel);
49613
+ if (channel === TELEGRAM_THREAD_BINDING_CHANNEL || channel === LINE_THREAD_BINDING_CHANNEL) return params.placements.includes("current") ? "current" : "child";
49614
+ return params.placements.includes("child") ? "child" : "current";
49615
+ }
49616
+ function resolveThreadBindingDeliveryTo(params) {
49617
+ const channel = normalizeChannelId(params.channel);
49618
+ const boundConversationId = normalizeOptionalString$1(params.boundConversationId);
49619
+ if (boundConversationId && params.placement === "child") return `channel:${boundConversationId}`;
49620
+ if (boundConversationId && params.placement === "current" && channel === LINE_THREAD_BINDING_CHANNEL) return boundConversationId;
49621
+ return normalizeOptionalString$1(params.requesterTo) || (params.deliveryThreadId ? `channel:${params.deliveryThreadId}` : void 0);
49622
+ }
49551
49623
  function resolveThreadBindingIdleTimeoutMsForChannel(params) {
49552
49624
  const channel = normalizeChannelId(params.channel);
49553
49625
  const accountId = normalizeAccountId$2(params.accountId);
@@ -49584,29 +49656,6 @@ function formatThreadBindingSpawnDisabledError(params) {
49584
49656
  return `Thread-bound ${params.kind} spawns are disabled for ${params.channel}.`;
49585
49657
  }
49586
49658
 
49587
- //#endregion
49588
- //#region src/infra/outbound/conversation-id.ts
49589
- function normalizeConversationId(value) {
49590
- if (typeof value !== "string") return;
49591
- return value.trim() || void 0;
49592
- }
49593
- function resolveConversationIdFromTargets(params) {
49594
- const threadId = params.threadId != null ? normalizeConversationId(String(params.threadId)) : void 0;
49595
- if (threadId) return threadId;
49596
- for (const rawTarget of params.targets) {
49597
- const target = normalizeConversationId(rawTarget);
49598
- if (!target) continue;
49599
- if (target.startsWith("channel:")) {
49600
- const channelId = normalizeConversationId(target.slice(8));
49601
- if (channelId) return channelId;
49602
- continue;
49603
- }
49604
- const mentionMatch = target.match(/^<#(\d+)>$/);
49605
- if (mentionMatch?.[1]) return mentionMatch[1];
49606
- if (/^\d{6,}$/.test(target)) return target;
49607
- }
49608
- }
49609
-
49610
49659
  //#endregion
49611
49660
  //#region src/tasks/task-executor.ts
49612
49661
  function compactRecord$1(value) {
@@ -50235,42 +50284,6 @@ function resolveAcpSpawnChannelAccountId(params) {
50235
50284
  const channels = params.cfg.channels;
50236
50285
  return normalizeOptionalString(channels?.[channel]?.defaultAccount) ?? "default";
50237
50286
  }
50238
- function stripKnownTargetPrefix(value) {
50239
- const typed = value.match(/^[a-z0-9_-]+:(user|group|room|channel):(.+)$/i);
50240
- if (typed?.[2]) return typed[2];
50241
- const colon = value.indexOf(":");
50242
- return colon > 0 ? value.slice(colon + 1) : value;
50243
- }
50244
- function resolveConversationRefForThreadBinding(params) {
50245
- const channel = normalizeOptionalLowercaseString(params.channel);
50246
- const threadId = params.threadId != null ? String(params.threadId).trim() : "";
50247
- const groupId = params.groupId != null ? String(params.groupId).trim() : "";
50248
- const to = normalizeOptionalString(params.to);
50249
- if (channel === "telegram") {
50250
- if (groupId && threadId) return {
50251
- conversationId: `${groupId}:topic:${threadId}`,
50252
- parentConversationId: groupId
50253
- };
50254
- if (to) {
50255
- const topic = stripKnownTargetPrefix(to).match(/^(.+):topic:([^:]+)$/);
50256
- if (topic?.[1] && topic[2]) return {
50257
- conversationId: `${topic[1]}:topic:${topic[2]}`,
50258
- parentConversationId: topic[1]
50259
- };
50260
- }
50261
- }
50262
- if (channel === "line" && to) return { conversationId: stripKnownTargetPrefix(to) };
50263
- if (to?.startsWith("room:")) return { conversationId: to.slice(5) };
50264
- const resolved = resolveConversationIdFromTargets({
50265
- threadId,
50266
- targets: [to]
50267
- });
50268
- return resolved ? { conversationId: resolved } : null;
50269
- }
50270
- function resolveBindingPlacement(params) {
50271
- if (params.channel === "telegram" || params.channel === "line") return params.placements.includes("current") ? "current" : "child";
50272
- return params.placements.includes("child") ? "child" : "current";
50273
- }
50274
50287
  function isHeartbeatEnabledForSessionAgent(params) {
50275
50288
  if (!areHeartbeatsEnabled()) return false;
50276
50289
  const requesterAgentId = parseAgentSessionKey(params.sessionKey)?.agentId;
@@ -50364,7 +50377,7 @@ function prepareAcpThreadBinding(params) {
50364
50377
  ok: false,
50365
50378
  error: `Thread bindings are unavailable for ${policy.channel}.`
50366
50379
  };
50367
- const placement = resolveBindingPlacement({
50380
+ const placement = resolveThreadBindingPlacement({
50368
50381
  channel: policy.channel,
50369
50382
  placements: capabilities.placements
50370
50383
  });
@@ -50372,7 +50385,7 @@ function prepareAcpThreadBinding(params) {
50372
50385
  ok: false,
50373
50386
  error: `Thread bindings do not support ${placement} placement for ${policy.channel}.`
50374
50387
  };
50375
- const conversationRef = resolveConversationRefForThreadBinding({
50388
+ const conversationRef = resolveThreadBindingConversationRef({
50376
50389
  channel: policy.channel,
50377
50390
  to: params.to,
50378
50391
  threadId: params.threadId,
@@ -50596,7 +50609,13 @@ async function spawnAcpDirect(params, ctx) {
50596
50609
  const fallbackThreadId = fallbackThreadIdRaw != null ? String(fallbackThreadIdRaw).trim() || void 0 : void 0;
50597
50610
  const bindingPlacement = preparedBinding?.placement;
50598
50611
  const deliveryThreadId = bindingPlacement === "child" ? boundThreadId ?? fallbackThreadId : fallbackThreadId;
50599
- const inferredDeliveryTo = boundThreadId && bindingPlacement === "child" ? `channel:${boundThreadId}` : boundThreadId && bindingPlacement === "current" && preparedBinding?.channel === "line" ? boundThreadId : requesterOrigin?.to?.trim() || (deliveryThreadId ? `channel:${deliveryThreadId}` : void 0);
50612
+ const inferredDeliveryTo = resolveThreadBindingDeliveryTo({
50613
+ channel: preparedBinding?.channel,
50614
+ placement: bindingPlacement,
50615
+ boundConversationId: boundThreadId,
50616
+ requesterTo: requesterOrigin?.to,
50617
+ deliveryThreadId
50618
+ });
50600
50619
  const hasDeliveryTarget = Boolean(requestThreadBinding && !streamToParent && requesterOrigin?.channel && inferredDeliveryTo);
50601
50620
  const childIdem = crypto.randomUUID();
50602
50621
  let childRunId = childIdem;
@@ -50996,7 +51015,7 @@ function normalizeSessionKey(value) {
50996
51015
  function readSessionStore(storePath) {
50997
51016
  try {
50998
51017
  const raw = fs.readFileSync(storePath, "utf-8");
50999
- const parsed = JSON5.parse(raw);
51018
+ const parsed = json5.parse(raw);
51000
51019
  if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) return parsed;
51001
51020
  } catch {}
51002
51021
  return {};
@@ -58700,7 +58719,7 @@ async function recordLoopOutcome(args) {
58700
58719
  if (!args.ctx?.sessionKey) return;
58701
58720
  try {
58702
58721
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-DLuYVc4W.js").then((n) => n.n);
58703
- const { recordToolCallOutcome } = await import("./tool-loop-detection-k7zpyjWy.js");
58722
+ const { recordToolCallOutcome } = await import("./tool-loop-detection-D8xgCIc0.js");
58704
58723
  recordToolCallOutcome(getDiagnosticSessionState({
58705
58724
  sessionKey: args.ctx.sessionKey,
58706
58725
  sessionId: args.ctx?.agentId
@@ -58721,8 +58740,8 @@ async function runBeforeToolCallHook(args) {
58721
58740
  const params = args.params;
58722
58741
  if (args.ctx?.sessionKey) {
58723
58742
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-DLuYVc4W.js").then((n) => n.n);
58724
- const { logToolLoopAction } = await import("./diagnostic-BnS_JikV.js").then((n) => n.n);
58725
- const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-k7zpyjWy.js");
58743
+ const { logToolLoopAction } = await import("./diagnostic-BfpYqaMu.js").then((n) => n.n);
58744
+ const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-D8xgCIc0.js");
58726
58745
  const sessionState = getDiagnosticSessionState({
58727
58746
  sessionKey: args.ctx.sessionKey,
58728
58747
  sessionId: args.ctx?.agentId
@@ -79398,7 +79417,7 @@ function createWhatsAppLoginTool() {
79398
79417
  force: Type.Optional(Type.Boolean())
79399
79418
  }),
79400
79419
  execute: async (_toolCallId, args) => {
79401
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-Byua0a3V.js");
79420
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-BTjizo_A.js");
79402
79421
  if ((args?.action ?? "start") === "wait") {
79403
79422
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
79404
79423
  return {
@@ -82818,7 +82837,7 @@ async function preflightDiscordMessage(params) {
82818
82837
  let preflightTranscript;
82819
82838
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
82820
82839
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
82821
- const { transcribeFirstAudio } = await import("./audio-preflight-Ba6xe3SP.js");
82840
+ const { transcribeFirstAudio } = await import("./audio-preflight-DVoi6-9R.js");
82822
82841
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
82823
82842
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
82824
82843
  ctx: {
@@ -84560,7 +84579,7 @@ async function createModelSelectionState(params) {
84560
84579
  }
84561
84580
  }
84562
84581
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
84563
- const { ensureAuthProfileStore } = await import("./runtime-JZwgwXxK.js").then((n) => n.xr);
84582
+ const { ensureAuthProfileStore } = await import("./runtime-d_ap8ggn.js").then((n) => n.xr);
84564
84583
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
84565
84584
  const providerKey = normalizeProviderId$1(provider);
84566
84585
  if (!profile || normalizeProviderId$1(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -97012,7 +97031,7 @@ function readSlackExternalArgMenuToken(raw) {
97012
97031
  }
97013
97032
  let commandsRegistry;
97014
97033
  async function getCommandsRegistry() {
97015
- if (!commandsRegistry) commandsRegistry = await import("./commands-registry-Deqd0K8M.js").then((n) => n.n);
97034
+ if (!commandsRegistry) commandsRegistry = await import("./commands-registry-CnlOnVB6.js").then((n) => n.n);
97016
97035
  return commandsRegistry;
97017
97036
  }
97018
97037
  function encodeSlackCommandArgValue(parts) {
@@ -97336,14 +97355,14 @@ async function registerSlackMonitorSlashCommands(params) {
97336
97355
  const channelName = channelInfo?.name;
97337
97356
  const roomLabel = channelName ? `#${channelName}` : `#${command.channel_id}`;
97338
97357
  const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
97339
- import("./resolve-route-y3cyO8Nu.js").then((n) => n.r),
97358
+ import("./resolve-route-CKHCIkIh.js").then((n) => n.r),
97340
97359
  import("./inbound-context-BfsNSQia.js").then((n) => n.n),
97341
97360
  Promise.resolve().then(() => provider_dispatcher_exports)
97342
97361
  ]);
97343
97362
  const [{ resolveConversationLabel }, { createReplyPrefixOptions }, { recordSessionMetaFromInbound, resolveStorePath }] = await Promise.all([
97344
97363
  import("./conversation-label-DEoJ9tbZ.js").then((n) => n.t),
97345
- import("./reply-prefix-D1GlTOVT.js").then((n) => n.r),
97346
- import("./runtime-JZwgwXxK.js").then((n) => n.d)
97364
+ import("./reply-prefix-DYUukSpx.js").then((n) => n.r),
97365
+ import("./runtime-d_ap8ggn.js").then((n) => n.d)
97347
97366
  ]);
97348
97367
  const route = resolveAgentRoute({
97349
97368
  cfg,
@@ -97411,9 +97430,9 @@ async function registerSlackMonitorSlashCommands(params) {
97411
97430
  });
97412
97431
  const deliverSlashPayloads = async (replies) => {
97413
97432
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
97414
- import("./replies-4ciKRt42.js").then((n) => n.r),
97415
- import("./chunk-BntoXexQ.js").then((n) => n.s),
97416
- import("./markdown-tables-DpMWx8Tl.js").then((n) => n.t)
97433
+ import("./replies-DuVEe866.js").then((n) => n.r),
97434
+ import("./chunk-CWM4OQ5j.js").then((n) => n.s),
97435
+ import("./markdown-tables-Dvj4VeiJ.js").then((n) => n.t)
97417
97436
  ]);
97418
97437
  await deliverSlackSlashReplies({
97419
97438
  replies,
@@ -97466,7 +97485,7 @@ async function registerSlackMonitorSlashCommands(params) {
97466
97485
  let nativeCommands = [];
97467
97486
  if (nativeEnabled) {
97468
97487
  reg = await getCommandsRegistry();
97469
- const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-DqGrOYfl.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
97488
+ const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-BKfUIpx3.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
97470
97489
  nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
97471
97490
  skillCommands,
97472
97491
  provider: "slack"
@@ -100647,7 +100666,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, replyMedia =
100647
100666
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
100648
100667
  let preflightTranscript;
100649
100668
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
100650
- const { transcribeFirstAudio } = await import("./audio-preflight-Ba6xe3SP.js");
100669
+ const { transcribeFirstAudio } = await import("./audio-preflight-DVoi6-9R.js");
100651
100670
  preflightTranscript = await transcribeFirstAudio({
100652
100671
  ctx: {
100653
100672
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -103261,23 +103280,23 @@ let webLoginQrPromise = null;
103261
103280
  let webChannelPromise = null;
103262
103281
  let whatsappActionsPromise = null;
103263
103282
  function loadWebOutbound() {
103264
- webOutboundPromise ??= import("./outbound-C_KKhUy0.js").then((n) => n.t);
103283
+ webOutboundPromise ??= import("./outbound-Ch3UOB-3.js").then((n) => n.t);
103265
103284
  return webOutboundPromise;
103266
103285
  }
103267
103286
  function loadWebLogin() {
103268
- webLoginPromise ??= import("./login-BViGjyGG.js").then((n) => n.n);
103287
+ webLoginPromise ??= import("./login-CUkR_AH3.js").then((n) => n.n);
103269
103288
  return webLoginPromise;
103270
103289
  }
103271
103290
  function loadWebLoginQr() {
103272
- webLoginQrPromise ??= import("./login-qr-Byua0a3V.js");
103291
+ webLoginQrPromise ??= import("./login-qr-BTjizo_A.js");
103273
103292
  return webLoginQrPromise;
103274
103293
  }
103275
103294
  function loadWebChannel() {
103276
- webChannelPromise ??= import("./web-Bo3jM7sh.js");
103295
+ webChannelPromise ??= import("./web-Iu1NvzWV.js");
103277
103296
  return webChannelPromise;
103278
103297
  }
103279
103298
  function loadWhatsAppActions() {
103280
- whatsappActionsPromise ??= import("./whatsapp-actions-SkM0ibaJ.js");
103299
+ whatsappActionsPromise ??= import("./whatsapp-actions-qiFsmHsr.js");
103281
103300
  return whatsappActionsPromise;
103282
103301
  }
103283
103302
  function createPluginRuntime(options = {}) {
@@ -105196,7 +105215,7 @@ const log$5 = createSubsystemLogger("model-catalog");
105196
105215
  let modelCatalogPromise = null;
105197
105216
  let hasLoggedModelCatalogError = false;
105198
105217
  let hasLoggedProviderCatalogError = false;
105199
- const defaultImportPiSdk = () => import("./pi-model-discovery-CFtZGJhK.js").then((n) => n.a);
105218
+ const defaultImportPiSdk = () => import("./pi-model-discovery-BGBK5j7O.js").then((n) => n.a);
105200
105219
  let importPiSdk = defaultImportPiSdk;
105201
105220
  const CODEX_PROVIDER = "openai-codex";
105202
105221
  const OPENAI_PROVIDER = "openai";