@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,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { Xa as resolveAgentConfig } from "./runtime-JZwgwXxK.js";
2
+ import { Xa as resolveAgentConfig } from "./runtime-d_ap8ggn.js";
3
3
 
4
4
  //#region src/agents/identity.ts
5
5
  const DEFAULT_ACK_REACTION = "👀";
@@ -1,5 +1,5 @@
1
- import { na as isWhatsAppGroupJid, ra as normalizeWhatsAppTarget } from "./runtime-JZwgwXxK.js";
2
- import { n as missingTargetError } from "./target-errors-WJdwRuAS.js";
1
+ import { na as isWhatsAppGroupJid, ra as normalizeWhatsAppTarget } from "./runtime-d_ap8ggn.js";
2
+ import { n as missingTargetError } from "./target-errors-DpDEAats.js";
3
3
 
4
4
  //#region src/whatsapp/resolve-outbound-target.ts
5
5
  function resolveWhatsAppOutboundTarget(params) {
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { Cs as sanitizeAgentId, Ka as listBindings, So as logDebug, Ts as normalizeAccountId, gs as buildAgentPeerSessionKey, hs as buildAgentMainSessionKey, ms as DEFAULT_MAIN_KEY, ps as DEFAULT_AGENT_ID, qc as shouldLogVerbose, to as resolveDefaultAgentId, ws as DEFAULT_ACCOUNT_ID, ys as normalizeAgentId } from "./runtime-JZwgwXxK.js";
2
+ import { Cs as sanitizeAgentId, Ka as listBindings, So as logDebug, Ts as normalizeAccountId, gs as buildAgentPeerSessionKey, hs as buildAgentMainSessionKey, ms as DEFAULT_MAIN_KEY, ps as DEFAULT_AGENT_ID, qc as shouldLogVerbose, to as resolveDefaultAgentId, ws as DEFAULT_ACCOUNT_ID, ys as normalizeAgentId } from "./runtime-d_ap8ggn.js";
3
3
  import { r as normalizeChatType } from "./conversation-label-DEoJ9tbZ.js";
4
4
 
5
5
  //#region src/routing/resolve-route.ts
@@ -7,7 +7,7 @@ import chalk, { Chalk } from "chalk";
7
7
  import fs, { constants } from "node:fs";
8
8
  import { Logger } from "tslog";
9
9
  import os from "node:os";
10
- import JSON5 from "json5";
10
+ import json5 from "json5";
11
11
  import util, { isDeepStrictEqual, promisify } from "node:util";
12
12
  import fs$1 from "node:fs/promises";
13
13
  import { execFile, execFileSync, spawn } from "node:child_process";
@@ -278,7 +278,7 @@ function readLoggingConfig() {
278
278
  try {
279
279
  if (!fs.existsSync(configPath)) return;
280
280
  const raw = fs.readFileSync(configPath, "utf-8");
281
- const logging = JSON5.parse(raw)?.logging;
281
+ const logging = json5.parse(raw)?.logging;
282
282
  if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
283
283
  return logging;
284
284
  } catch {
@@ -8101,7 +8101,7 @@ function loadPluginManifest(rootDir) {
8101
8101
  }
8102
8102
  let raw;
8103
8103
  try {
8104
- raw = JSON5.parse(fs.readFileSync(opened.fd, "utf-8"));
8104
+ raw = json5.parse(fs.readFileSync(opened.fd, "utf-8"));
8105
8105
  } catch (err) {
8106
8106
  return {
8107
8107
  ok: false,
@@ -20857,7 +20857,7 @@ const defaultResolver = {
20857
20857
  resolvedPath,
20858
20858
  rootRealDir
20859
20859
  }),
20860
- parseJson: (raw) => JSON5.parse(raw)
20860
+ parseJson: (raw) => json5.parse(raw)
20861
20861
  };
20862
20862
  /**
20863
20863
  * Resolves all $include directives in a parsed config object.
@@ -29123,7 +29123,7 @@ function resolveConfigPathForDeps(deps) {
29123
29123
  function normalizeDeps(overrides = {}) {
29124
29124
  return {
29125
29125
  fs: overrides.fs ?? fs,
29126
- json5: overrides.json5 ?? JSON5,
29126
+ json5: overrides.json5 ?? json5,
29127
29127
  env: overrides.env ?? process.env,
29128
29128
  homedir: overrides.homedir ?? (() => resolveRequiredHomeDir(overrides.env ?? process.env, os.homedir)),
29129
29129
  configPath: overrides.configPath ?? "",
@@ -29134,11 +29134,11 @@ function maybeLoadDotEnvForConfig(env) {
29134
29134
  if (env !== process.env) return;
29135
29135
  loadDotEnv({ quiet: true });
29136
29136
  }
29137
- function parseConfigJson5(raw, json5 = JSON5) {
29137
+ function parseConfigJson5(raw, json5$1 = json5) {
29138
29138
  try {
29139
29139
  return {
29140
29140
  ok: true,
29141
- parsed: json5.parse(raw)
29141
+ parsed: json5$1.parse(raw)
29142
29142
  };
29143
29143
  } catch (err) {
29144
29144
  return {
@@ -32400,7 +32400,7 @@ async function loadContextCache() {
32400
32400
  await ensureFasedModelsJson(cfg);
32401
32401
  } catch {}
32402
32402
  try {
32403
- const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-runtime-C4xL6SHf.js");
32403
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-runtime-Ds3U-M1x.js");
32404
32404
  const agentDir = resolveFasedAgentDir();
32405
32405
  const modelRegistry = discoverModels(discoverAuthStorage(agentDir), agentDir);
32406
32406
  applyDiscoveredContextWindows({
@@ -1,10 +1,10 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { $o as resolveSignalAccount, ft as loadConfig } from "./runtime-JZwgwXxK.js";
2
+ import { $o as resolveSignalAccount, ft as loadConfig } from "./runtime-d_ap8ggn.js";
3
3
  import { n as fetchWithTimeout } from "./fetch-timeout-BD-UJHcc.js";
4
- import { E as mediaKindFromMime, n as markdownToIR, t as chunkMarkdownIR } from "./ir-Bbym3o_S.js";
5
- import { t as resolveFetch } from "./fetch-B42SDHGm.js";
6
- import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-ddz0MwiT.js";
7
- import { n as resolveMarkdownTableMode } from "./markdown-tables-DpMWx8Tl.js";
4
+ import { E as mediaKindFromMime, n as markdownToIR, t as chunkMarkdownIR } from "./ir-BqSQJB3B.js";
5
+ import { t as resolveFetch } from "./fetch-yy6-Kb3T.js";
6
+ import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-8pyStMIv.js";
7
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-Dvj4VeiJ.js";
8
8
  import { n as generateSecureUuid } from "./secure-random-DvsQZtss.js";
9
9
 
10
10
  //#region src/signal/format.ts
@@ -1,8 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { Bi as parseSlackTarget, Gc as logVerbose, Ko as resolveSlackAccount, Yo as resolveSlackBotToken, ft as loadConfig, gc as escapeRegExp } from "./runtime-JZwgwXxK.js";
3
- import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit } from "./chunk-BntoXexQ.js";
4
- import { a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR } from "./ir-Bbym3o_S.js";
5
- import { n as resolveMarkdownTableMode } from "./markdown-tables-DpMWx8Tl.js";
2
+ import { Bi as parseSlackTarget, Gc as logVerbose, Ko as resolveSlackAccount, Yo as resolveSlackBotToken, ft as loadConfig, gc as escapeRegExp } from "./runtime-d_ap8ggn.js";
3
+ import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit } from "./chunk-CWM4OQ5j.js";
4
+ import { a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR } from "./ir-BqSQJB3B.js";
5
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-Dvj4VeiJ.js";
6
6
  import { t as renderMarkdownWithMarkers } from "./render-DzUFCfck.js";
7
7
  import { WebClient } from "@slack/web-api";
8
8
 
@@ -1,12 +1,12 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { Gi as parseTargetPrefixes, Hi as buildMessagingTarget, Ki as requireTargetKind, Ui as ensureTargetId, Wi as parseTargetMention, cs as normalizeDiscordToken, ft as loadConfig, hr as retryAsync, mr as resolveRetryConfig, rl as resolvePreferredFasedAgentTmpDir, ss as resolveDiscordAccount } from "./runtime-JZwgwXxK.js";
3
- import { c as resolveChunkMode, i as chunkMarkdownTextWithMode } from "./chunk-BntoXexQ.js";
4
- import { T as maxBytesForKind, _ as extensionForMime, a as loadWebMedia, o as loadWebMediaRaw } from "./ir-Bbym3o_S.js";
5
- import { t as resolveFetch } from "./fetch-B42SDHGm.js";
6
- import { n as recordChannelActivity, r as createDiscordRetryRunner } from "./channel-activity-BcI4xSoe.js";
2
+ import { Gi as parseTargetPrefixes, Hi as buildMessagingTarget, Ki as requireTargetKind, Ui as ensureTargetId, Wi as parseTargetMention, cs as normalizeDiscordToken, ft as loadConfig, hr as retryAsync, mr as resolveRetryConfig, rl as resolvePreferredFasedAgentTmpDir, ss as resolveDiscordAccount } from "./runtime-d_ap8ggn.js";
3
+ import { c as resolveChunkMode, i as chunkMarkdownTextWithMode } from "./chunk-CWM4OQ5j.js";
4
+ import { T as maxBytesForKind, _ as extensionForMime, a as loadWebMedia, o as loadWebMediaRaw } from "./ir-BqSQJB3B.js";
5
+ import { t as resolveFetch } from "./fetch-yy6-Kb3T.js";
6
+ import { n as recordChannelActivity, r as createDiscordRetryRunner } from "./channel-activity-DRcprlRI.js";
7
7
  import { n as normalizePollInput, t as normalizePollDurationHours } from "./polls-Bqxnqm99.js";
8
- import { n as resolveMarkdownTableMode } from "./markdown-tables-DpMWx8Tl.js";
9
- import { t as convertMarkdownTables } from "./tables-b0zUZRMn.js";
8
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-Dvj4VeiJ.js";
9
+ import { t as convertMarkdownTables } from "./tables-DQEs0bVk.js";
10
10
  import path from "node:path";
11
11
  import { promisify } from "node:util";
12
12
  import fs from "node:fs/promises";
@@ -1,17 +1,17 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { Bo as isTruthyEnvValue, Di as getChannelPlugin, Ec as safeParseJson, Gc as logVerbose, Hn as resolveTelegramPreviewStreamMode, Ic as createSubsystemLogger, Oi as listChannelPlugins, Rr as withFileLock$1, Ts as normalizeAccountId, Ua as resolveTelegramAccount, Uc as danger, _t as writeConfigFile, dc as CONFIG_DIR, di as extractErrorCode, fi as formatErrorMessage, ft as loadConfig, hi as redactSensitiveText, ht as readConfigFileSnapshotForWrite, pi as formatUncaughtError, ws as DEFAULT_ACCOUNT_ID } from "./runtime-JZwgwXxK.js";
2
+ import { Bo as isTruthyEnvValue, Di as getChannelPlugin, Ec as safeParseJson, Gc as logVerbose, Hn as resolveTelegramPreviewStreamMode, Ic as createSubsystemLogger, Oi as listChannelPlugins, Rr as withFileLock$1, Ts as normalizeAccountId, Ua as resolveTelegramAccount, Uc as danger, _t as writeConfigFile, dc as CONFIG_DIR, di as extractErrorCode, fi as formatErrorMessage, ft as loadConfig, hi as redactSensitiveText, ht as readConfigFileSnapshotForWrite, pi as formatUncaughtError, ws as DEFAULT_ACCOUNT_ID } from "./runtime-d_ap8ggn.js";
3
3
  import { f as resolveStateDir, h as resolveRequiredHomeDir, p as expandHomePrefix, u as resolveOAuthDir } from "./github-copilot-token-CVC_19vl.js";
4
- import { C as normalizeMimeType, E as mediaKindFromMime, a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR, v as getFileExtension, x as isGifMedia } from "./ir-Bbym3o_S.js";
5
- import { t as resolveFetch } from "./fetch-B42SDHGm.js";
6
- import { i as createTelegramRetryRunner, n as recordChannelActivity } from "./channel-activity-BcI4xSoe.js";
4
+ import { C as normalizeMimeType, E as mediaKindFromMime, a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR, v as getFileExtension, x as isGifMedia } from "./ir-BqSQJB3B.js";
5
+ import { t as resolveFetch } from "./fetch-yy6-Kb3T.js";
6
+ import { i as createTelegramRetryRunner, n as recordChannelActivity } from "./channel-activity-DRcprlRI.js";
7
7
  import { n as normalizePollInput } from "./polls-Bqxnqm99.js";
8
- import { n as resolveMarkdownTableMode } from "./markdown-tables-DpMWx8Tl.js";
8
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-Dvj4VeiJ.js";
9
9
  import { t as renderMarkdownWithMarkers } from "./render-DzUFCfck.js";
10
10
  import { t as makeProxyFetch } from "./proxy-BiW7MtYh.js";
11
11
  import path from "node:path";
12
12
  import fs, { readFileSync } from "node:fs";
13
13
  import os from "node:os";
14
- import JSON5 from "json5";
14
+ import json5 from "json5";
15
15
  import fs$1 from "node:fs/promises";
16
16
  import crypto from "node:crypto";
17
17
  import process$1 from "node:process";
@@ -1554,7 +1554,7 @@ async function loadCronStore(storePath) {
1554
1554
  const raw = await fs.promises.readFile(storePath, "utf-8");
1555
1555
  let parsed;
1556
1556
  try {
1557
- parsed = JSON5.parse(raw);
1557
+ parsed = json5.parse(raw);
1558
1558
  } catch (err) {
1559
1559
  throw new Error(`Failed to parse cron store at ${storePath}: ${String(err)}`, { cause: err });
1560
1560
  }
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { Tc as resolveUserPath, ft as loadConfig, ns as resolveIMessageAccount, xc as normalizeE164 } from "./runtime-JZwgwXxK.js";
3
- import { E as mediaKindFromMime } from "./ir-Bbym3o_S.js";
4
- import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-ddz0MwiT.js";
5
- import { n as resolveMarkdownTableMode } from "./markdown-tables-DpMWx8Tl.js";
6
- import { t as convertMarkdownTables } from "./tables-b0zUZRMn.js";
2
+ import { Tc as resolveUserPath, ft as loadConfig, ns as resolveIMessageAccount, xc as normalizeE164 } from "./runtime-d_ap8ggn.js";
3
+ import { E as mediaKindFromMime } from "./ir-BqSQJB3B.js";
4
+ import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-8pyStMIv.js";
5
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-Dvj4VeiJ.js";
6
+ import { t as convertMarkdownTables } from "./tables-DQEs0bVk.js";
7
7
  import { spawn } from "node:child_process";
8
8
  import { createInterface } from "node:readline";
9
9
 
@@ -1,4 +1,4 @@
1
- import { $c as getChildLogger, Fa as resolveWebCredsPath, Jc as success, La as formatCliCommand, Na as resolveDefaultWebAuthDir, Pa as resolveWebCredsBackupPath, Tc as resolveUserPath, Uc as danger, ci as VERSION, hc as ensureDir, hi as redactSensitiveText, ja as readCredsJsonRaw, ka as maybeRestoreCredsFromBackup, tl as toPinoLikeLogger } from "./runtime-JZwgwXxK.js";
1
+ import { $c as getChildLogger, Fa as resolveWebCredsPath, Jc as success, La as formatCliCommand, Na as resolveDefaultWebAuthDir, Pa as resolveWebCredsBackupPath, Tc as resolveUserPath, Uc as danger, ci as VERSION, hc as ensureDir, hi as redactSensitiveText, ja as readCredsJsonRaw, ka as maybeRestoreCredsFromBackup, tl as toPinoLikeLogger } from "./runtime-d_ap8ggn.js";
2
2
  import { n as redactSensitiveUrlLikeString } from "./redact-sensitive-url-C_6JDrWW.js";
3
3
  import fs from "node:fs";
4
4
  import { randomUUID } from "node:crypto";
@@ -1,12 +1,12 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { Fo as resolveEffectiveAgentSkillFilter, Ic as createSubsystemLogger, Io as normalizeSkillFilter, No as isPathInside, Si as isDangerousHostEnvVarName, Tc as resolveUserPath, Vo as parseBooleanValue, Vr as loadPluginManifestRegistry, Ya as listAgentIds, Zs as normalizeStringEntries, dc as CONFIG_DIR, ec as normalizePluginsConfig, eo as resolveAgentWorkspaceDir, nc as resolveMemorySlotDecision, rl as resolvePreferredFasedAgentTmpDir, tc as resolveEffectiveEnableState, ui as MANIFEST_KEY, vo as resolveFasedAgentPackageRootSync } from "./runtime-JZwgwXxK.js";
2
+ import { Fo as resolveEffectiveAgentSkillFilter, Ic as createSubsystemLogger, Io as normalizeSkillFilter, No as isPathInside, Si as isDangerousHostEnvVarName, Tc as resolveUserPath, Vo as parseBooleanValue, Vr as loadPluginManifestRegistry, Ya as listAgentIds, Zs as normalizeStringEntries, dc as CONFIG_DIR, ec as normalizePluginsConfig, eo as resolveAgentWorkspaceDir, nc as resolveMemorySlotDecision, rl as resolvePreferredFasedAgentTmpDir, tc as resolveEffectiveEnableState, ui as MANIFEST_KEY, vo as resolveFasedAgentPackageRootSync } from "./runtime-d_ap8ggn.js";
3
3
  import { f as resolveStateDir } from "./github-copilot-token-CVC_19vl.js";
4
- import { n as assertNoPathAliasEscape } from "./path-alias-guards-ZLFppfUS.js";
5
- import { a as listChatCommands } from "./commands-registry-Deqd0K8M.js";
4
+ import { n as assertNoPathAliasEscape } from "./path-alias-guards-DmROHvdC.js";
5
+ import { a as listChatCommands } from "./commands-registry-CnlOnVB6.js";
6
6
  import path from "node:path";
7
7
  import fs from "node:fs";
8
8
  import os from "node:os";
9
- import JSON5 from "json5";
9
+ import json5 from "json5";
10
10
  import fs$1 from "node:fs/promises";
11
11
  import { URL, fileURLToPath } from "node:url";
12
12
  import { createHash, randomBytes, randomUUID, timingSafeEqual } from "node:crypto";
@@ -370,7 +370,7 @@ function resolveFasedAgentManifestBlock(params) {
370
370
  const raw = getFrontmatterString(params.frontmatter, params.key ?? "metadata");
371
371
  if (!raw) return;
372
372
  try {
373
- const parsed = JSON5.parse(raw);
373
+ const parsed = json5.parse(raw);
374
374
  if (!parsed || typeof parsed !== "object") return;
375
375
  const candidate = parsed[MANIFEST_KEY];
376
376
  if (candidate && typeof candidate === "object") return candidate;
@@ -7,5 +7,5 @@ export type ProcessToolDefaults = {
7
7
  export declare function describeProcessTool(params?: {
8
8
  hasCronTool?: boolean;
9
9
  }): string;
10
- export declare function createProcessTool(defaults?: ProcessToolDefaults): AgentToolWithMeta<any, unknown>;
11
- export declare const processTool: AgentToolWithMeta<any, unknown>;
10
+ export declare function createProcessTool(defaults?: ProcessToolDefaults): AgentToolWithMeta<any>;
11
+ export declare const processTool: AgentToolWithMeta<any>;
@@ -1,6 +1,6 @@
1
1
  export declare const FASED_BRAND_NAME = "Fased";
2
2
  export declare const FASED_AGENT_NAME = "Fased Agent";
3
3
  export declare const FASED_CONTROL_NAME = "Fased Control";
4
- export declare const FASED_PRODUCT_VERSION = "0.1.13";
5
- export declare const FASED_DISPLAY_VERSION = "v0.1.13";
4
+ export declare const FASED_PRODUCT_VERSION = "0.1.14";
5
+ export declare const FASED_DISPLAY_VERSION = "v0.1.14";
6
6
  export declare function formatFasedDisplayLine(): string;
@@ -1,4 +1,5 @@
1
1
  import type { FasedAgentConfig } from "../config/config.js";
2
+ import type { SessionBindingPlacement } from "../infra/outbound/session-binding-service.js";
2
3
  export declare const DISCORD_THREAD_BINDING_CHANNEL = "discord";
3
4
  export type ThreadBindingSpawnKind = "subagent" | "acp";
4
5
  export type ThreadBindingSpawnPolicy = {
@@ -25,6 +26,26 @@ export declare function resolveThreadBindingSpawnPolicy(params: {
25
26
  accountId?: string;
26
27
  kind: ThreadBindingSpawnKind;
27
28
  }): ThreadBindingSpawnPolicy;
29
+ export declare function resolveThreadBindingConversationRef(params: {
30
+ channel?: string;
31
+ to?: string;
32
+ threadId?: string | number;
33
+ groupId?: string | number;
34
+ }): {
35
+ conversationId: string;
36
+ parentConversationId?: string;
37
+ } | null;
38
+ export declare function resolveThreadBindingPlacement(params: {
39
+ channel: string;
40
+ placements: SessionBindingPlacement[];
41
+ }): SessionBindingPlacement;
42
+ export declare function resolveThreadBindingDeliveryTo(params: {
43
+ channel?: string;
44
+ placement?: SessionBindingPlacement;
45
+ boundConversationId?: string;
46
+ requesterTo?: string;
47
+ deliveryThreadId?: string;
48
+ }): string | undefined;
28
49
  export declare function resolveThreadBindingIdleTimeoutMsForChannel(params: {
29
50
  cfg: FasedAgentConfig;
30
51
  channel: string;
@@ -17007,7 +17007,7 @@ function createOutboundSendDepsFromCliSource(deps) {
17007
17007
  function createDefaultDeps() {
17008
17008
  return {
17009
17009
  sendMessageWhatsApp: async (...args) => {
17010
- const { sendMessageWhatsApp } = await import("./web-CAC5vbc9.js");
17010
+ const { sendMessageWhatsApp } = await import("./web-Dn9EjG_7.js");
17011
17011
  return await sendMessageWhatsApp(...args);
17012
17012
  },
17013
17013
  sendMessageTelegram: async (...args) => {
@@ -28340,14 +28340,14 @@ async function resolveMessageChannelSelection(params) {
28340
28340
 
28341
28341
  //#endregion
28342
28342
  //#region src/infra/outbound/session-context.ts
28343
- function normalizeOptionalString$2(value) {
28343
+ function normalizeOptionalString$3(value) {
28344
28344
  if (typeof value !== "string") return;
28345
28345
  const trimmed = value.trim();
28346
28346
  return trimmed.length > 0 ? trimmed : void 0;
28347
28347
  }
28348
28348
  function buildOutboundSessionContext(params) {
28349
- const key = normalizeOptionalString$2(params.sessionKey);
28350
- const explicitAgentId = normalizeOptionalString$2(params.agentId);
28349
+ const key = normalizeOptionalString$3(params.sessionKey);
28350
+ const explicitAgentId = normalizeOptionalString$3(params.agentId);
28351
28351
  const derivedAgentId = key ? resolveSessionAgentId({
28352
28352
  sessionKey: key,
28353
28353
  config: params.cfg
@@ -46498,7 +46498,7 @@ async function loadProviderUsageSummary(opts = {}) {
46498
46498
 
46499
46499
  //#endregion
46500
46500
  //#region src/sessions/model-overrides.ts
46501
- function normalizeOptionalString$1(value) {
46501
+ function normalizeOptionalString$2(value) {
46502
46502
  return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
46503
46503
  }
46504
46504
  function applyModelOverrideToSessionEntry(params) {
@@ -46538,8 +46538,8 @@ function applyModelOverrideToSessionEntry(params) {
46538
46538
  updated = true;
46539
46539
  }
46540
46540
  }
46541
- const runtimeModel = normalizeOptionalString$1(entry.model) ?? "";
46542
- const runtimeProvider = normalizeOptionalString$1(entry.modelProvider) ?? "";
46541
+ const runtimeModel = normalizeOptionalString$2(entry.model) ?? "";
46542
+ const runtimeProvider = normalizeOptionalString$2(entry.modelProvider) ?? "";
46543
46543
  const runtimePresent = runtimeModel.length > 0 || runtimeProvider.length > 0;
46544
46544
  const runtimeAligned = runtimeModel === selection.model && (runtimeProvider.length === 0 || runtimeProvider === selection.provider);
46545
46545
  if (runtimePresent && (selectionUpdated || !runtimeAligned)) {
@@ -48292,14 +48292,42 @@ function resolveThreadBindingFarewellText(params) {
48292
48292
  return prefixSystemMessage(DEFAULT_THREAD_BINDING_FAREWELL_TEXT);
48293
48293
  }
48294
48294
 
48295
+ //#endregion
48296
+ //#region src/infra/outbound/conversation-id.ts
48297
+ function normalizeConversationId(value) {
48298
+ if (typeof value !== "string") return;
48299
+ return value.trim() || void 0;
48300
+ }
48301
+ function resolveConversationIdFromTargets(params) {
48302
+ const threadId = params.threadId != null ? normalizeConversationId(String(params.threadId)) : void 0;
48303
+ if (threadId) return threadId;
48304
+ for (const rawTarget of params.targets) {
48305
+ const target = normalizeConversationId(rawTarget);
48306
+ if (!target) continue;
48307
+ if (target.startsWith("channel:")) {
48308
+ const channelId = normalizeConversationId(target.slice(8));
48309
+ if (channelId) return channelId;
48310
+ continue;
48311
+ }
48312
+ const mentionMatch = target.match(/^<#(\d+)>$/);
48313
+ if (mentionMatch?.[1]) return mentionMatch[1];
48314
+ if (/^\d{6,}$/.test(target)) return target;
48315
+ }
48316
+ }
48317
+
48295
48318
  //#endregion
48296
48319
  //#region src/channels/thread-bindings-policy.ts
48297
48320
  const DISCORD_THREAD_BINDING_CHANNEL = "discord";
48321
+ const TELEGRAM_THREAD_BINDING_CHANNEL = "telegram";
48322
+ const LINE_THREAD_BINDING_CHANNEL = "line";
48298
48323
  const DEFAULT_THREAD_BINDING_IDLE_HOURS$1 = 24;
48299
48324
  const DEFAULT_THREAD_BINDING_MAX_AGE_HOURS$1 = 0;
48300
48325
  function normalizeChannelId(value) {
48301
48326
  return String(value ?? "").trim().toLowerCase();
48302
48327
  }
48328
+ function normalizeOptionalString$1(value) {
48329
+ return typeof value === "string" && value.trim() ? value.trim() : void 0;
48330
+ }
48303
48331
  function normalizeBoolean$1(value) {
48304
48332
  if (typeof value !== "boolean") return;
48305
48333
  return value;
@@ -48345,6 +48373,50 @@ function resolveThreadBindingSpawnPolicy(params) {
48345
48373
  spawnEnabled: normalizeBoolean$1(account?.[spawnFlagKey]) ?? normalizeBoolean$1(root?.[spawnFlagKey]) ?? channel !== DISCORD_THREAD_BINDING_CHANNEL
48346
48374
  };
48347
48375
  }
48376
+ function stripKnownTargetPrefix(value) {
48377
+ const typed = value.match(/^[a-z0-9_-]+:(user|group|room|channel):(.+)$/i);
48378
+ if (typed?.[2]) return typed[2];
48379
+ const colon = value.indexOf(":");
48380
+ return colon > 0 ? value.slice(colon + 1) : value;
48381
+ }
48382
+ function resolveThreadBindingConversationRef(params) {
48383
+ const channel = normalizeChannelId(params.channel);
48384
+ const threadId = params.threadId != null ? String(params.threadId).trim() : "";
48385
+ const groupId = params.groupId != null ? String(params.groupId).trim() : "";
48386
+ const to = normalizeOptionalString$1(params.to);
48387
+ if (channel === TELEGRAM_THREAD_BINDING_CHANNEL) {
48388
+ if (groupId && threadId) return {
48389
+ conversationId: `${groupId}:topic:${threadId}`,
48390
+ parentConversationId: groupId
48391
+ };
48392
+ if (to) {
48393
+ const topic = stripKnownTargetPrefix(to).match(/^(.+):topic:([^:]+)$/);
48394
+ if (topic?.[1] && topic[2]) return {
48395
+ conversationId: `${topic[1]}:topic:${topic[2]}`,
48396
+ parentConversationId: topic[1]
48397
+ };
48398
+ }
48399
+ }
48400
+ if (channel === LINE_THREAD_BINDING_CHANNEL && to) return { conversationId: stripKnownTargetPrefix(to) };
48401
+ if (to?.startsWith("room:")) return { conversationId: to.slice(5) };
48402
+ const resolved = resolveConversationIdFromTargets({
48403
+ threadId,
48404
+ targets: [to]
48405
+ });
48406
+ return resolved ? { conversationId: resolved } : null;
48407
+ }
48408
+ function resolveThreadBindingPlacement(params) {
48409
+ const channel = normalizeChannelId(params.channel);
48410
+ if (channel === TELEGRAM_THREAD_BINDING_CHANNEL || channel === LINE_THREAD_BINDING_CHANNEL) return params.placements.includes("current") ? "current" : "child";
48411
+ return params.placements.includes("child") ? "child" : "current";
48412
+ }
48413
+ function resolveThreadBindingDeliveryTo(params) {
48414
+ const channel = normalizeChannelId(params.channel);
48415
+ const boundConversationId = normalizeOptionalString$1(params.boundConversationId);
48416
+ if (boundConversationId && params.placement === "child") return `channel:${boundConversationId}`;
48417
+ if (boundConversationId && params.placement === "current" && channel === LINE_THREAD_BINDING_CHANNEL) return boundConversationId;
48418
+ return normalizeOptionalString$1(params.requesterTo) || (params.deliveryThreadId ? `channel:${params.deliveryThreadId}` : void 0);
48419
+ }
48348
48420
  function resolveThreadBindingIdleTimeoutMsForChannel(params) {
48349
48421
  const channel = normalizeChannelId(params.channel);
48350
48422
  const accountId = normalizeAccountId$2(params.accountId);
@@ -48381,29 +48453,6 @@ function formatThreadBindingSpawnDisabledError(params) {
48381
48453
  return `Thread-bound ${params.kind} spawns are disabled for ${params.channel}.`;
48382
48454
  }
48383
48455
 
48384
- //#endregion
48385
- //#region src/infra/outbound/conversation-id.ts
48386
- function normalizeConversationId(value) {
48387
- if (typeof value !== "string") return;
48388
- return value.trim() || void 0;
48389
- }
48390
- function resolveConversationIdFromTargets(params) {
48391
- const threadId = params.threadId != null ? normalizeConversationId(String(params.threadId)) : void 0;
48392
- if (threadId) return threadId;
48393
- for (const rawTarget of params.targets) {
48394
- const target = normalizeConversationId(rawTarget);
48395
- if (!target) continue;
48396
- if (target.startsWith("channel:")) {
48397
- const channelId = normalizeConversationId(target.slice(8));
48398
- if (channelId) return channelId;
48399
- continue;
48400
- }
48401
- const mentionMatch = target.match(/^<#(\d+)>$/);
48402
- if (mentionMatch?.[1]) return mentionMatch[1];
48403
- if (/^\d{6,}$/.test(target)) return target;
48404
- }
48405
- }
48406
-
48407
48456
  //#endregion
48408
48457
  //#region src/tasks/task-executor.ts
48409
48458
  function compactRecord$1(value) {
@@ -49032,42 +49081,6 @@ function resolveAcpSpawnChannelAccountId(params) {
49032
49081
  const channels = params.cfg.channels;
49033
49082
  return normalizeOptionalString(channels?.[channel]?.defaultAccount) ?? "default";
49034
49083
  }
49035
- function stripKnownTargetPrefix(value) {
49036
- const typed = value.match(/^[a-z0-9_-]+:(user|group|room|channel):(.+)$/i);
49037
- if (typed?.[2]) return typed[2];
49038
- const colon = value.indexOf(":");
49039
- return colon > 0 ? value.slice(colon + 1) : value;
49040
- }
49041
- function resolveConversationRefForThreadBinding(params) {
49042
- const channel = normalizeOptionalLowercaseString(params.channel);
49043
- const threadId = params.threadId != null ? String(params.threadId).trim() : "";
49044
- const groupId = params.groupId != null ? String(params.groupId).trim() : "";
49045
- const to = normalizeOptionalString(params.to);
49046
- if (channel === "telegram") {
49047
- if (groupId && threadId) return {
49048
- conversationId: `${groupId}:topic:${threadId}`,
49049
- parentConversationId: groupId
49050
- };
49051
- if (to) {
49052
- const topic = stripKnownTargetPrefix(to).match(/^(.+):topic:([^:]+)$/);
49053
- if (topic?.[1] && topic[2]) return {
49054
- conversationId: `${topic[1]}:topic:${topic[2]}`,
49055
- parentConversationId: topic[1]
49056
- };
49057
- }
49058
- }
49059
- if (channel === "line" && to) return { conversationId: stripKnownTargetPrefix(to) };
49060
- if (to?.startsWith("room:")) return { conversationId: to.slice(5) };
49061
- const resolved = resolveConversationIdFromTargets({
49062
- threadId,
49063
- targets: [to]
49064
- });
49065
- return resolved ? { conversationId: resolved } : null;
49066
- }
49067
- function resolveBindingPlacement(params) {
49068
- if (params.channel === "telegram" || params.channel === "line") return params.placements.includes("current") ? "current" : "child";
49069
- return params.placements.includes("child") ? "child" : "current";
49070
- }
49071
49084
  function isHeartbeatEnabledForSessionAgent(params) {
49072
49085
  if (!areHeartbeatsEnabled()) return false;
49073
49086
  const requesterAgentId = parseAgentSessionKey(params.sessionKey)?.agentId;
@@ -49161,7 +49174,7 @@ function prepareAcpThreadBinding(params) {
49161
49174
  ok: false,
49162
49175
  error: `Thread bindings are unavailable for ${policy.channel}.`
49163
49176
  };
49164
- const placement = resolveBindingPlacement({
49177
+ const placement = resolveThreadBindingPlacement({
49165
49178
  channel: policy.channel,
49166
49179
  placements: capabilities.placements
49167
49180
  });
@@ -49169,7 +49182,7 @@ function prepareAcpThreadBinding(params) {
49169
49182
  ok: false,
49170
49183
  error: `Thread bindings do not support ${placement} placement for ${policy.channel}.`
49171
49184
  };
49172
- const conversationRef = resolveConversationRefForThreadBinding({
49185
+ const conversationRef = resolveThreadBindingConversationRef({
49173
49186
  channel: policy.channel,
49174
49187
  to: params.to,
49175
49188
  threadId: params.threadId,
@@ -49393,7 +49406,13 @@ async function spawnAcpDirect(params, ctx) {
49393
49406
  const fallbackThreadId = fallbackThreadIdRaw != null ? String(fallbackThreadIdRaw).trim() || void 0 : void 0;
49394
49407
  const bindingPlacement = preparedBinding?.placement;
49395
49408
  const deliveryThreadId = bindingPlacement === "child" ? boundThreadId ?? fallbackThreadId : fallbackThreadId;
49396
- const inferredDeliveryTo = boundThreadId && bindingPlacement === "child" ? `channel:${boundThreadId}` : boundThreadId && bindingPlacement === "current" && preparedBinding?.channel === "line" ? boundThreadId : requesterOrigin?.to?.trim() || (deliveryThreadId ? `channel:${deliveryThreadId}` : void 0);
49409
+ const inferredDeliveryTo = resolveThreadBindingDeliveryTo({
49410
+ channel: preparedBinding?.channel,
49411
+ placement: bindingPlacement,
49412
+ boundConversationId: boundThreadId,
49413
+ requesterTo: requesterOrigin?.to,
49414
+ deliveryThreadId
49415
+ });
49397
49416
  const hasDeliveryTarget = Boolean(requestThreadBinding && !streamToParent && requesterOrigin?.channel && inferredDeliveryTo);
49398
49417
  const childIdem = crypto.randomUUID();
49399
49418
  let childRunId = childIdem;
@@ -101665,7 +101684,7 @@ async function preflightDiscordMessage(params) {
101665
101684
  let preflightTranscript;
101666
101685
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
101667
101686
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
101668
- const { transcribeFirstAudio } = await import("./audio-preflight-Iwawhfar.js");
101687
+ const { transcribeFirstAudio } = await import("./audio-preflight-Do3tS2Hp.js");
101669
101688
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
101670
101689
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
101671
101690
  ctx: {
@@ -108962,7 +108981,7 @@ async function waitForTransportReady(params) {
108962
108981
 
108963
108982
  //#endregion
108964
108983
  //#region src/brand.ts
108965
- const FASED_PRODUCT_VERSION = "0.1.13";
108984
+ const FASED_PRODUCT_VERSION = "0.1.14";
108966
108985
  const FASED_DISPLAY_VERSION = `v${FASED_PRODUCT_VERSION}`;
108967
108986
 
108968
108987
  //#endregion
@@ -118585,7 +118604,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, replyMedia =
118585
118604
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
118586
118605
  let preflightTranscript;
118587
118606
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
118588
- const { transcribeFirstAudio } = await import("./audio-preflight-Iwawhfar.js");
118607
+ const { transcribeFirstAudio } = await import("./audio-preflight-Do3tS2Hp.js");
118589
118608
  preflightTranscript = await transcribeFirstAudio({
118590
118609
  ctx: {
118591
118610
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -121211,7 +121230,7 @@ function loadWebLoginQr() {
121211
121230
  return webLoginQrPromise;
121212
121231
  }
121213
121232
  function loadWebChannel() {
121214
- webChannelPromise ??= import("./web-CAC5vbc9.js");
121233
+ webChannelPromise ??= import("./web-Dn9EjG_7.js");
121215
121234
  return webChannelPromise;
121216
121235
  }
121217
121236
  function loadWhatsAppActions() {
@@ -1,4 +1,4 @@
1
- import { r as markdownToIRWithMeta } from "./ir-Bbym3o_S.js";
1
+ import { r as markdownToIRWithMeta } from "./ir-BqSQJB3B.js";
2
2
  import { t as renderMarkdownWithMarkers } from "./render-DzUFCfck.js";
3
3
 
4
4
  //#region src/markdown/tables.ts
@@ -1,5 +1,5 @@
1
- import { Ic as createSubsystemLogger } from "./runtime-JZwgwXxK.js";
2
- import { f as IMAGE_REDUCE_QUALITY_STEPS, g as detectMime, h as resizeToJpeg, m as getImageMetadata, p as buildImageResizeSideGrid } from "./ir-Bbym3o_S.js";
1
+ import { Ic as createSubsystemLogger } from "./runtime-d_ap8ggn.js";
2
+ import { f as IMAGE_REDUCE_QUALITY_STEPS, g as detectMime, h as resizeToJpeg, m as getImageMetadata, p as buildImageResizeSideGrid } from "./ir-BqSQJB3B.js";
3
3
  import fs from "node:fs/promises";
4
4
 
5
5
  //#region src/media/base64.ts
@@ -1,4 +1,4 @@
1
- import { Ic as createSubsystemLogger, Nc as isPlainObject } from "./runtime-JZwgwXxK.js";
1
+ import { Ic as createSubsystemLogger, Nc as isPlainObject } from "./runtime-d_ap8ggn.js";
2
2
  import "./github-copilot-token-CVC_19vl.js";
3
3
  import { createHash } from "node:crypto";
4
4
 
@@ -2,7 +2,7 @@ import { $a as normalizeAgentId, $r as resolveStorePath, Di as formatCliCommand,
2
2
  import "./github-copilot-token-BMocqO3v.js";
3
3
  import "./send-DosQY55H.js";
4
4
  import "./send-CMiz71vT.js";
5
- import { $ as normalizeGroupActivation, D as resolveEnvelopeFormatOptions, E as formatInboundEnvelope, G as hasControlCommand, J as normalizeMentionText, K as shouldComputeCommandAuthorized, O as createDedupeCache, S as dispatchReplyWithBufferedBlockDispatcher, T as resolveInboundDebounceMs, Y as registerUnhandledRejectionHandler, _ as warnMissingProviderGroupPolicyFallbackOnce, b as resolveDmGroupAccessWithLists, c as computeBackoff, d as resolveMentionGating, et as parseActivationCommand, f as DEFAULT_GROUP_HISTORY_LIMIT, g as resolveOpenProviderRuntimeGroupPolicy, h as resolveDefaultGroupPolicy, k as getReplyFromConfig, l as sleepWithAbort, m as recordPendingHistoryEntryIfEnabled, nt as enqueueSystemEvent, p as buildHistoryContextFromEntries, q as buildMentionRegexes, tt as formatDurationPrecise, u as buildPairingReply, v as readStoreAllowFromForDmPolicy, w as createInboundDebouncer, x as shouldAckReactionForWhatsApp, y as resolveDmGroupAccessWithCommandGate } from "./status-KYehxhnn.js";
5
+ import { $ as normalizeGroupActivation, D as resolveEnvelopeFormatOptions, E as formatInboundEnvelope, G as hasControlCommand, J as normalizeMentionText, K as shouldComputeCommandAuthorized, O as createDedupeCache, S as dispatchReplyWithBufferedBlockDispatcher, T as resolveInboundDebounceMs, Y as registerUnhandledRejectionHandler, _ as warnMissingProviderGroupPolicyFallbackOnce, b as resolveDmGroupAccessWithLists, c as computeBackoff, d as resolveMentionGating, et as parseActivationCommand, f as DEFAULT_GROUP_HISTORY_LIMIT, g as resolveOpenProviderRuntimeGroupPolicy, h as resolveDefaultGroupPolicy, k as getReplyFromConfig, l as sleepWithAbort, m as recordPendingHistoryEntryIfEnabled, nt as enqueueSystemEvent, p as buildHistoryContextFromEntries, q as buildMentionRegexes, tt as formatDurationPrecise, u as buildPairingReply, v as readStoreAllowFromForDmPolicy, w as createInboundDebouncer, x as shouldAckReactionForWhatsApp, y as resolveDmGroupAccessWithCommandGate } from "./status-BtSfRg0Y.js";
6
6
  import "./paths-DJJjUXem.js";
7
7
  import "./ssrf-CZsNT0Hn.js";
8
8
  import { n as redactSensitiveUrlLikeString } from "./redact-sensitive-url-C_6JDrWW.js";
@@ -916,7 +916,7 @@ async function monitorWebInbox(options) {
916
916
  ev.removeListener("messages.upsert", messagesUpsertHandler);
917
917
  ev.removeListener("connection.update", connectionUpdateHandler);
918
918
  }
919
- sock.ws?.close();
919
+ await sock.ws?.close();
920
920
  } catch (err) {
921
921
  logVerbose(`Socket close failed: ${formatError(err)}`);
922
922
  }