@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
@@ -81,7 +81,7 @@ const entries = [
81
81
  description: "Run, inspect, and query the WebSocket Gateway",
82
82
  hasSubcommands: true,
83
83
  register: async (program) => {
84
- (await import("./gateway-cli-lJ8tfi1V.js")).registerGatewayCli(program);
84
+ (await import("./gateway-cli-DnPPkDok.js")).registerGatewayCli(program);
85
85
  }
86
86
  },
87
87
  {
@@ -113,7 +113,7 @@ const entries = [
113
113
  description: "Gateway service (legacy alias)",
114
114
  hasSubcommands: true,
115
115
  register: async (program) => {
116
- (await import("./daemon-cli-Cb_QJZX8.js").then((n) => n.t)).registerDaemonCli(program);
116
+ (await import("./daemon-cli-DO7p9TEM.js").then((n) => n.t)).registerDaemonCli(program);
117
117
  }
118
118
  },
119
119
  {
@@ -137,7 +137,7 @@ const entries = [
137
137
  description: "Discover, scan, and configure models",
138
138
  hasSubcommands: true,
139
139
  register: async (program) => {
140
- (await import("./models-cli-CKQEE1hy.js")).registerModelsCli(program);
140
+ (await import("./models-cli-hrJ2blXT.js")).registerModelsCli(program);
141
141
  }
142
142
  },
143
143
  {
@@ -177,7 +177,7 @@ const entries = [
177
177
  description: "Run and manage the headless node host service",
178
178
  hasSubcommands: true,
179
179
  register: async (program) => {
180
- (await import("./node-cli-hiCjYjDs.js")).registerNodeCli(program);
180
+ (await import("./node-cli-DniBkXLM.js")).registerNodeCli(program);
181
181
  }
182
182
  },
183
183
  {
@@ -185,7 +185,7 @@ const entries = [
185
185
  description: "Manage sandbox containers for agent isolation",
186
186
  hasSubcommands: true,
187
187
  register: async (program) => {
188
- (await import("./sandbox-cli-Bd-8A0tb.js")).registerSandboxCli(program);
188
+ (await import("./sandbox-cli-D-2QLS_w.js")).registerSandboxCli(program);
189
189
  }
190
190
  },
191
191
  {
@@ -193,7 +193,7 @@ const entries = [
193
193
  description: "Open a terminal UI connected to the Gateway",
194
194
  hasSubcommands: false,
195
195
  register: async (program) => {
196
- (await import("./tui-cli-DGqbmIjb.js")).registerTuiCli(program);
196
+ (await import("./tui-cli-B6IhMpTo.js")).registerTuiCli(program);
197
197
  }
198
198
  },
199
199
  {
@@ -201,7 +201,7 @@ const entries = [
201
201
  description: "Manage scheduled Agent tasks",
202
202
  hasSubcommands: true,
203
203
  register: async (program) => {
204
- (await import("./cron-cli-Bwt1DpjZ.js")).registerTaskCli(program);
204
+ (await import("./cron-cli-Komkqy3-.js")).registerTaskCli(program);
205
205
  }
206
206
  },
207
207
  {
@@ -209,7 +209,7 @@ const entries = [
209
209
  description: "Manage scheduled Agent tasks (compatibility alias)",
210
210
  hasSubcommands: true,
211
211
  register: async (program) => {
212
- (await import("./cron-cli-Bwt1DpjZ.js")).registerCronCli(program, {
212
+ (await import("./cron-cli-Komkqy3-.js")).registerCronCli(program, {
213
213
  commandName: "cron",
214
214
  description: "Manage scheduled Agent tasks (compatibility alias)",
215
215
  docsPath: "/cli/task",
@@ -238,7 +238,7 @@ const entries = [
238
238
  description: "Manage internal agent hooks",
239
239
  hasSubcommands: true,
240
240
  register: async (program) => {
241
- (await import("./hooks-cli-CWaBU3Gm.js")).registerHooksCli(program);
241
+ (await import("./hooks-cli-CKiMdD4M.js")).registerHooksCli(program);
242
242
  }
243
243
  },
244
244
  {
@@ -262,7 +262,7 @@ const entries = [
262
262
  description: "Secure DM pairing (approve inbound requests)",
263
263
  hasSubcommands: true,
264
264
  register: async (program) => {
265
- const { registerPluginCliCommands } = await import("./cli-DIm0O_lA.js");
265
+ const { registerPluginCliCommands } = await import("./cli-DgGwAObY.js");
266
266
  registerPluginCliCommands(program, await loadConfig());
267
267
  (await import("./pairing-cli-D-LmJ1KL.js")).registerPairingCli(program);
268
268
  }
@@ -272,8 +272,8 @@ const entries = [
272
272
  description: "Manage FasedAgent plugins and extensions",
273
273
  hasSubcommands: true,
274
274
  register: async (program) => {
275
- (await import("./plugins-cli-ChEJuxFs.js")).registerPluginsCli(program);
276
- const { registerPluginCliCommands } = await import("./cli-DIm0O_lA.js");
275
+ (await import("./plugins-cli-D1j2v1v3.js")).registerPluginsCli(program);
276
+ const { registerPluginCliCommands } = await import("./cli-DgGwAObY.js");
277
277
  registerPluginCliCommands(program, await loadConfig());
278
278
  }
279
279
  },
@@ -282,7 +282,7 @@ const entries = [
282
282
  description: "Manage connected chat channels (Telegram, Discord, etc.)",
283
283
  hasSubcommands: true,
284
284
  register: async (program) => {
285
- (await import("./channels-cli-wTlfSXoS.js")).registerChannelsCli(program);
285
+ (await import("./channels-cli-Bz65iM4H.js")).registerChannelsCli(program);
286
286
  }
287
287
  },
288
288
  {
@@ -298,7 +298,7 @@ const entries = [
298
298
  description: "Security tools and local config audits",
299
299
  hasSubcommands: true,
300
300
  register: async (program) => {
301
- (await import("./security-cli-BJY7p7My.js")).registerSecurityCli(program);
301
+ (await import("./security-cli-DxJAZsT6.js")).registerSecurityCli(program);
302
302
  }
303
303
  },
304
304
  {
@@ -322,7 +322,7 @@ const entries = [
322
322
  description: "Update FasedAgent and inspect update channel status",
323
323
  hasSubcommands: true,
324
324
  register: async (program) => {
325
- (await import("./update-cli-CowwEm1_.js")).registerUpdateCli(program);
325
+ (await import("./update-cli-DdBQL9wa.js")).registerUpdateCli(program);
326
326
  }
327
327
  },
328
328
  {
@@ -330,7 +330,7 @@ const entries = [
330
330
  description: "Generate shell completion script",
331
331
  hasSubcommands: false,
332
332
  register: async (program) => {
333
- (await import("./completion-cli-BS5owZSW.js").then((n) => n.n)).registerCompletionCli(program);
333
+ (await import("./completion-cli-jTE-3aDE.js").then((n) => n.n)).registerCompletionCli(program);
334
334
  }
335
335
  }
336
336
  ];
@@ -45,7 +45,7 @@ import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-IJlrLW
45
45
  import { n as generateSecureUuid, t as generateSecureToken } from "./secure-random-CQlKt4_X.js";
46
46
  import { i as failDelivery, r as enqueueDelivery, t as ackDelivery } from "./delivery-queue-rYTO6uCE.js";
47
47
  import { n as resolveFunctionModuleExport, t as importFileModule } from "./module-loader-DvWEurIH.js";
48
- import { i as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-CZFDjC6B.js";
48
+ import { i as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-Dh2iIgIB.js";
49
49
  import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-C3SmVHtE.js";
50
50
  import { t as resolveMemorySearchConfig } from "./memory-search-BB8Uk47d.js";
51
51
  import { i as executeWithApiKeyRotation, n as parseGeminiAuth, r as collectProviderApiKeysForExecution } from "./manager-Bc5KCs6B.js";
@@ -24778,14 +24778,14 @@ function resolveOutboundChannelPlugin(params) {
24778
24778
 
24779
24779
  //#endregion
24780
24780
  //#region src/infra/outbound/session-context.ts
24781
- function normalizeOptionalString$2(value) {
24781
+ function normalizeOptionalString$3(value) {
24782
24782
  if (typeof value !== "string") return;
24783
24783
  const trimmed = value.trim();
24784
24784
  return trimmed.length > 0 ? trimmed : void 0;
24785
24785
  }
24786
24786
  function buildOutboundSessionContext(params) {
24787
- const key = normalizeOptionalString$2(params.sessionKey);
24788
- const explicitAgentId = normalizeOptionalString$2(params.agentId);
24787
+ const key = normalizeOptionalString$3(params.sessionKey);
24788
+ const explicitAgentId = normalizeOptionalString$3(params.agentId);
24789
24789
  const derivedAgentId = key ? resolveSessionAgentId({
24790
24790
  sessionKey: key,
24791
24791
  config: params.cfg
@@ -41351,7 +41351,7 @@ async function loadProviderUsageSummary(opts = {}) {
41351
41351
 
41352
41352
  //#endregion
41353
41353
  //#region src/sessions/model-overrides.ts
41354
- function normalizeOptionalString$1(value) {
41354
+ function normalizeOptionalString$2(value) {
41355
41355
  return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
41356
41356
  }
41357
41357
  function applyModelOverrideToSessionEntry(params) {
@@ -41391,8 +41391,8 @@ function applyModelOverrideToSessionEntry(params) {
41391
41391
  updated = true;
41392
41392
  }
41393
41393
  }
41394
- const runtimeModel = normalizeOptionalString$1(entry.model) ?? "";
41395
- const runtimeProvider = normalizeOptionalString$1(entry.modelProvider) ?? "";
41394
+ const runtimeModel = normalizeOptionalString$2(entry.model) ?? "";
41395
+ const runtimeProvider = normalizeOptionalString$2(entry.modelProvider) ?? "";
41396
41396
  const runtimePresent = runtimeModel.length > 0 || runtimeProvider.length > 0;
41397
41397
  const runtimeAligned = runtimeModel === selection.model && (runtimeProvider.length === 0 || runtimeProvider === selection.provider);
41398
41398
  if (runtimePresent && (selectionUpdated || !runtimeAligned)) {
@@ -43162,14 +43162,42 @@ function resolveThreadBindingFarewellText(params) {
43162
43162
  return prefixSystemMessage(DEFAULT_THREAD_BINDING_FAREWELL_TEXT);
43163
43163
  }
43164
43164
 
43165
+ //#endregion
43166
+ //#region src/infra/outbound/conversation-id.ts
43167
+ function normalizeConversationId(value) {
43168
+ if (typeof value !== "string") return;
43169
+ return value.trim() || void 0;
43170
+ }
43171
+ function resolveConversationIdFromTargets(params) {
43172
+ const threadId = params.threadId != null ? normalizeConversationId(String(params.threadId)) : void 0;
43173
+ if (threadId) return threadId;
43174
+ for (const rawTarget of params.targets) {
43175
+ const target = normalizeConversationId(rawTarget);
43176
+ if (!target) continue;
43177
+ if (target.startsWith("channel:")) {
43178
+ const channelId = normalizeConversationId(target.slice(8));
43179
+ if (channelId) return channelId;
43180
+ continue;
43181
+ }
43182
+ const mentionMatch = target.match(/^<#(\d+)>$/);
43183
+ if (mentionMatch?.[1]) return mentionMatch[1];
43184
+ if (/^\d{6,}$/.test(target)) return target;
43185
+ }
43186
+ }
43187
+
43165
43188
  //#endregion
43166
43189
  //#region src/channels/thread-bindings-policy.ts
43167
43190
  const DISCORD_THREAD_BINDING_CHANNEL = "discord";
43191
+ const TELEGRAM_THREAD_BINDING_CHANNEL = "telegram";
43192
+ const LINE_THREAD_BINDING_CHANNEL = "line";
43168
43193
  const DEFAULT_THREAD_BINDING_IDLE_HOURS$1 = 24;
43169
43194
  const DEFAULT_THREAD_BINDING_MAX_AGE_HOURS$1 = 0;
43170
43195
  function normalizeChannelId(value) {
43171
43196
  return String(value ?? "").trim().toLowerCase();
43172
43197
  }
43198
+ function normalizeOptionalString$1(value) {
43199
+ return typeof value === "string" && value.trim() ? value.trim() : void 0;
43200
+ }
43173
43201
  function normalizeBoolean$1(value) {
43174
43202
  if (typeof value !== "boolean") return;
43175
43203
  return value;
@@ -43215,6 +43243,50 @@ function resolveThreadBindingSpawnPolicy(params) {
43215
43243
  spawnEnabled: normalizeBoolean$1(account?.[spawnFlagKey]) ?? normalizeBoolean$1(root?.[spawnFlagKey]) ?? channel !== DISCORD_THREAD_BINDING_CHANNEL
43216
43244
  };
43217
43245
  }
43246
+ function stripKnownTargetPrefix(value) {
43247
+ const typed = value.match(/^[a-z0-9_-]+:(user|group|room|channel):(.+)$/i);
43248
+ if (typed?.[2]) return typed[2];
43249
+ const colon = value.indexOf(":");
43250
+ return colon > 0 ? value.slice(colon + 1) : value;
43251
+ }
43252
+ function resolveThreadBindingConversationRef(params) {
43253
+ const channel = normalizeChannelId(params.channel);
43254
+ const threadId = params.threadId != null ? String(params.threadId).trim() : "";
43255
+ const groupId = params.groupId != null ? String(params.groupId).trim() : "";
43256
+ const to = normalizeOptionalString$1(params.to);
43257
+ if (channel === TELEGRAM_THREAD_BINDING_CHANNEL) {
43258
+ if (groupId && threadId) return {
43259
+ conversationId: `${groupId}:topic:${threadId}`,
43260
+ parentConversationId: groupId
43261
+ };
43262
+ if (to) {
43263
+ const topic = stripKnownTargetPrefix(to).match(/^(.+):topic:([^:]+)$/);
43264
+ if (topic?.[1] && topic[2]) return {
43265
+ conversationId: `${topic[1]}:topic:${topic[2]}`,
43266
+ parentConversationId: topic[1]
43267
+ };
43268
+ }
43269
+ }
43270
+ if (channel === LINE_THREAD_BINDING_CHANNEL && to) return { conversationId: stripKnownTargetPrefix(to) };
43271
+ if (to?.startsWith("room:")) return { conversationId: to.slice(5) };
43272
+ const resolved = resolveConversationIdFromTargets({
43273
+ threadId,
43274
+ targets: [to]
43275
+ });
43276
+ return resolved ? { conversationId: resolved } : null;
43277
+ }
43278
+ function resolveThreadBindingPlacement(params) {
43279
+ const channel = normalizeChannelId(params.channel);
43280
+ if (channel === TELEGRAM_THREAD_BINDING_CHANNEL || channel === LINE_THREAD_BINDING_CHANNEL) return params.placements.includes("current") ? "current" : "child";
43281
+ return params.placements.includes("child") ? "child" : "current";
43282
+ }
43283
+ function resolveThreadBindingDeliveryTo(params) {
43284
+ const channel = normalizeChannelId(params.channel);
43285
+ const boundConversationId = normalizeOptionalString$1(params.boundConversationId);
43286
+ if (boundConversationId && params.placement === "child") return `channel:${boundConversationId}`;
43287
+ if (boundConversationId && params.placement === "current" && channel === LINE_THREAD_BINDING_CHANNEL) return boundConversationId;
43288
+ return normalizeOptionalString$1(params.requesterTo) || (params.deliveryThreadId ? `channel:${params.deliveryThreadId}` : void 0);
43289
+ }
43218
43290
  function resolveThreadBindingIdleTimeoutMsForChannel(params) {
43219
43291
  const channel = normalizeChannelId(params.channel);
43220
43292
  const accountId = normalizeAccountId$3(params.accountId);
@@ -43251,29 +43323,6 @@ function formatThreadBindingSpawnDisabledError(params) {
43251
43323
  return `Thread-bound ${params.kind} spawns are disabled for ${params.channel}.`;
43252
43324
  }
43253
43325
 
43254
- //#endregion
43255
- //#region src/infra/outbound/conversation-id.ts
43256
- function normalizeConversationId(value) {
43257
- if (typeof value !== "string") return;
43258
- return value.trim() || void 0;
43259
- }
43260
- function resolveConversationIdFromTargets(params) {
43261
- const threadId = params.threadId != null ? normalizeConversationId(String(params.threadId)) : void 0;
43262
- if (threadId) return threadId;
43263
- for (const rawTarget of params.targets) {
43264
- const target = normalizeConversationId(rawTarget);
43265
- if (!target) continue;
43266
- if (target.startsWith("channel:")) {
43267
- const channelId = normalizeConversationId(target.slice(8));
43268
- if (channelId) return channelId;
43269
- continue;
43270
- }
43271
- const mentionMatch = target.match(/^<#(\d+)>$/);
43272
- if (mentionMatch?.[1]) return mentionMatch[1];
43273
- if (/^\d{6,}$/.test(target)) return target;
43274
- }
43275
- }
43276
-
43277
43326
  //#endregion
43278
43327
  //#region src/tasks/task-executor.ts
43279
43328
  function compactRecord$1(value) {
@@ -43923,42 +43972,6 @@ function resolveAcpSpawnChannelAccountId(params) {
43923
43972
  const channels = params.cfg.channels;
43924
43973
  return normalizeOptionalString(channels?.[channel]?.defaultAccount) ?? "default";
43925
43974
  }
43926
- function stripKnownTargetPrefix(value) {
43927
- const typed = value.match(/^[a-z0-9_-]+:(user|group|room|channel):(.+)$/i);
43928
- if (typed?.[2]) return typed[2];
43929
- const colon = value.indexOf(":");
43930
- return colon > 0 ? value.slice(colon + 1) : value;
43931
- }
43932
- function resolveConversationRefForThreadBinding(params) {
43933
- const channel = normalizeOptionalLowercaseString(params.channel);
43934
- const threadId = params.threadId != null ? String(params.threadId).trim() : "";
43935
- const groupId = params.groupId != null ? String(params.groupId).trim() : "";
43936
- const to = normalizeOptionalString(params.to);
43937
- if (channel === "telegram") {
43938
- if (groupId && threadId) return {
43939
- conversationId: `${groupId}:topic:${threadId}`,
43940
- parentConversationId: groupId
43941
- };
43942
- if (to) {
43943
- const topic = stripKnownTargetPrefix(to).match(/^(.+):topic:([^:]+)$/);
43944
- if (topic?.[1] && topic[2]) return {
43945
- conversationId: `${topic[1]}:topic:${topic[2]}`,
43946
- parentConversationId: topic[1]
43947
- };
43948
- }
43949
- }
43950
- if (channel === "line" && to) return { conversationId: stripKnownTargetPrefix(to) };
43951
- if (to?.startsWith("room:")) return { conversationId: to.slice(5) };
43952
- const resolved = resolveConversationIdFromTargets({
43953
- threadId,
43954
- targets: [to]
43955
- });
43956
- return resolved ? { conversationId: resolved } : null;
43957
- }
43958
- function resolveBindingPlacement(params) {
43959
- if (params.channel === "telegram" || params.channel === "line") return params.placements.includes("current") ? "current" : "child";
43960
- return params.placements.includes("child") ? "child" : "current";
43961
- }
43962
43975
  function isHeartbeatEnabledForSessionAgent(params) {
43963
43976
  if (!areHeartbeatsEnabled()) return false;
43964
43977
  const requesterAgentId = parseAgentSessionKey(params.sessionKey)?.agentId;
@@ -44052,7 +44065,7 @@ function prepareAcpThreadBinding(params) {
44052
44065
  ok: false,
44053
44066
  error: `Thread bindings are unavailable for ${policy.channel}.`
44054
44067
  };
44055
- const placement = resolveBindingPlacement({
44068
+ const placement = resolveThreadBindingPlacement({
44056
44069
  channel: policy.channel,
44057
44070
  placements: capabilities.placements
44058
44071
  });
@@ -44060,7 +44073,7 @@ function prepareAcpThreadBinding(params) {
44060
44073
  ok: false,
44061
44074
  error: `Thread bindings do not support ${placement} placement for ${policy.channel}.`
44062
44075
  };
44063
- const conversationRef = resolveConversationRefForThreadBinding({
44076
+ const conversationRef = resolveThreadBindingConversationRef({
44064
44077
  channel: policy.channel,
44065
44078
  to: params.to,
44066
44079
  threadId: params.threadId,
@@ -44284,7 +44297,13 @@ async function spawnAcpDirect(params, ctx) {
44284
44297
  const fallbackThreadId = fallbackThreadIdRaw != null ? String(fallbackThreadIdRaw).trim() || void 0 : void 0;
44285
44298
  const bindingPlacement = preparedBinding?.placement;
44286
44299
  const deliveryThreadId = bindingPlacement === "child" ? boundThreadId ?? fallbackThreadId : fallbackThreadId;
44287
- const inferredDeliveryTo = boundThreadId && bindingPlacement === "child" ? `channel:${boundThreadId}` : boundThreadId && bindingPlacement === "current" && preparedBinding?.channel === "line" ? boundThreadId : requesterOrigin?.to?.trim() || (deliveryThreadId ? `channel:${deliveryThreadId}` : void 0);
44300
+ const inferredDeliveryTo = resolveThreadBindingDeliveryTo({
44301
+ channel: preparedBinding?.channel,
44302
+ placement: bindingPlacement,
44303
+ boundConversationId: boundThreadId,
44304
+ requesterTo: requesterOrigin?.to,
44305
+ deliveryThreadId
44306
+ });
44288
44307
  const hasDeliveryTarget = Boolean(requestThreadBinding && !streamToParent && requesterOrigin?.channel && inferredDeliveryTo);
44289
44308
  const childIdem = crypto.randomUUID();
44290
44309
  let childRunId = childIdem;
@@ -76695,7 +76714,7 @@ async function preflightDiscordMessage(params) {
76695
76714
  let preflightTranscript;
76696
76715
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
76697
76716
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
76698
- const { transcribeFirstAudio } = await import("./audio-preflight-DqM048P_.js");
76717
+ const { transcribeFirstAudio } = await import("./audio-preflight-3DGv3sEL.js");
76699
76718
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
76700
76719
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
76701
76720
  ctx: {
@@ -84931,7 +84950,7 @@ async function waitForTransportReady(params) {
84931
84950
  //#endregion
84932
84951
  //#region src/brand.ts
84933
84952
  const FASED_AGENT_NAME = "Fased Agent";
84934
- const FASED_PRODUCT_VERSION = "0.1.13";
84953
+ const FASED_PRODUCT_VERSION = "0.1.14";
84935
84954
  const FASED_DISPLAY_VERSION = `v${FASED_PRODUCT_VERSION}`;
84936
84955
  function formatFasedDisplayLine() {
84937
84956
  return `${FASED_AGENT_NAME} ${FASED_DISPLAY_VERSION}`;
@@ -95799,7 +95818,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, replyMedia =
95799
95818
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
95800
95819
  let preflightTranscript;
95801
95820
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
95802
- const { transcribeFirstAudio } = await import("./audio-preflight-DqM048P_.js");
95821
+ const { transcribeFirstAudio } = await import("./audio-preflight-3DGv3sEL.js");
95803
95822
  preflightTranscript = await transcribeFirstAudio({
95804
95823
  ctx: {
95805
95824
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -98434,7 +98453,7 @@ function loadWebLoginQr() {
98434
98453
  return webLoginQrPromise;
98435
98454
  }
98436
98455
  function loadWebChannel() {
98437
- webChannelPromise ??= import("./web-B3fGD9XZ.js");
98456
+ webChannelPromise ??= import("./web-B2uPE5Pt.js");
98438
98457
  return webChannelPromise;
98439
98458
  }
98440
98459
  function loadWhatsAppActions() {
@@ -111075,7 +111094,7 @@ function createGatewayHttpServer(opts) {
111075
111094
  if (await handlePluginRequest(req, res)) return;
111076
111095
  }
111077
111096
  if (openResponsesEnabled) {
111078
- const { handleOpenResponsesHttpRequest } = await import("./openresponses-http-CUqgCbTX.js");
111097
+ const { handleOpenResponsesHttpRequest } = await import("./openresponses-http-dny2OhpA.js");
111079
111098
  if (await handleOpenResponsesHttpRequest(req, res, {
111080
111099
  auth: resolvedAuth,
111081
111100
  config: openResponsesConfig,
@@ -2,7 +2,7 @@ import { Pl as loadDotEnv, Yc as VERSION, hu as enableConsoleCapture, ka as asse
2
2
  import "./agent-paths-DUHGyU1s.js";
3
3
  import "./send-4Bz1g7es.js";
4
4
  import "./send-CaE81xJg.js";
5
- import { I as emitCliBanner, Tn as installUnhandledRejectionHandler } from "./model-catalog-hjXNofhs.js";
5
+ import { I as emitCliBanner, Tn as installUnhandledRejectionHandler } from "./model-catalog-QdGjCBzQ.js";
6
6
  import "./github-copilot-token-A9DiaCB0.js";
7
7
  import { A as defaultRuntime, At as getVerboseFlag, Dt as getFlagValue, Et as getCommandPath, Mt as hasHelpOrVersion, Ot as getPositiveIntFlagValue, S as formatUncaughtError, jt as hasFlag, kt as getPrimaryCommand, wt as normalizeWindowsArgv } from "./entry.js";
8
8
  import "./reply-prefix-pEk10qm3.js";
@@ -45,7 +45,7 @@ import "./send-2z6EXr8o.js";
45
45
  import "./outbound-attachment-DRoNYAVt.js";
46
46
  import "./fetch-DzdLpVxl.js";
47
47
  import "./delivery-queue-DeoUHXGD.js";
48
- import "./deps-CrKSMHlj.js";
48
+ import "./deps-npMqt3Ka.js";
49
49
  import "./frontmatter-Cye-a9g3.js";
50
50
  import "./skills-60AaRTYw.js";
51
51
  import "./skills-remote-DWll8gbf.js";
@@ -75,7 +75,7 @@ import "./replies-DsgeX36e.js";
75
75
  import "./prompt-style-CWdNyu_Q.js";
76
76
  import "./pairing-labels-BWWnectb.js";
77
77
  import { t as ensureFasedAgentCliOnPath } from "./path-env-B45QVWi1.js";
78
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-C5Ry5FZe.js";
78
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-C0b3SJXT.js";
79
79
  import "./note-BJ63b2KP.js";
80
80
  import "./doctor-config-flow-ptFUW-zh.js";
81
81
  import { n as ensureConfigReady } from "./config-guard-DkURzPcr.js";
@@ -91,7 +91,7 @@ const routeHealth = {
91
91
  const verbose = getVerboseFlag(argv, { includeDebug: true });
92
92
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
93
93
  if (timeoutMs === null) return false;
94
- const { healthCommand } = await import("./health-DI0aqVH0.js").then((n) => n.a);
94
+ const { healthCommand } = await import("./health-CI2la9gk.js").then((n) => n.a);
95
95
  await healthCommand({
96
96
  json,
97
97
  timeoutMs,
@@ -112,7 +112,7 @@ const routeStatus = {
112
112
  const verbose = getVerboseFlag(argv, { includeDebug: true });
113
113
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
114
114
  if (timeoutMs === null) return false;
115
- const { statusCommand } = await import("./status-CNDT0EXd.js").then((n) => n.t);
115
+ const { statusCommand } = await import("./status-Bd25eZ91.js").then((n) => n.t);
116
116
  await statusCommand({
117
117
  json,
118
118
  deep,
@@ -151,7 +151,7 @@ const routeAgentsList = {
151
151
  run: async (argv) => {
152
152
  const json = hasFlag(argv, "--json");
153
153
  const bindings = hasFlag(argv, "--bindings");
154
- const { agentsListCommand } = await import("./agents-DmWSWgPi.js");
154
+ const { agentsListCommand } = await import("./agents-C-WHRWnS.js");
155
155
  await agentsListCommand({
156
156
  json,
157
157
  bindings
@@ -243,7 +243,7 @@ const routes = [
243
243
  const pathArg = getCommandPositionals(argv)[2];
244
244
  if (!pathArg) return false;
245
245
  const json = hasFlag(argv, "--json");
246
- const { runConfigGet } = await import("./config-cli-DqdtNMfz.js");
246
+ const { runConfigGet } = await import("./config-cli-Vu0qrkcp.js");
247
247
  await runConfigGet({
248
248
  path: pathArg,
249
249
  json
@@ -256,7 +256,7 @@ const routes = [
256
256
  run: async (argv) => {
257
257
  const pathArg = getCommandPositionals(argv)[2];
258
258
  if (!pathArg) return false;
259
- const { runConfigUnset } = await import("./config-cli-DqdtNMfz.js");
259
+ const { runConfigUnset } = await import("./config-cli-Vu0qrkcp.js");
260
260
  await runConfigUnset({ path: pathArg });
261
261
  return true;
262
262
  }
@@ -270,7 +270,7 @@ const routes = [
270
270
  const local = hasFlag(argv, "--local");
271
271
  const json = hasFlag(argv, "--json");
272
272
  const plain = hasFlag(argv, "--plain");
273
- const { modelsListCommand } = await import("./models-B0wDRRTB.js");
273
+ const { modelsListCommand } = await import("./models-B4gY5Zsf.js");
274
274
  await modelsListCommand({
275
275
  all,
276
276
  local,
@@ -301,7 +301,7 @@ const routes = [
301
301
  const plain = hasFlag(argv, "--plain");
302
302
  const check = hasFlag(argv, "--check");
303
303
  const probe = hasFlag(argv, "--probe");
304
- const { modelsStatusCommand } = await import("./models-B0wDRRTB.js");
304
+ const { modelsStatusCommand } = await import("./models-B4gY5Zsf.js");
305
305
  await modelsStatusCommand({
306
306
  json,
307
307
  plain,
@@ -384,7 +384,7 @@ async function runCli(argv = process$1.argv) {
384
384
  assertSupportedRuntime();
385
385
  if (await tryRouteCli(normalizedArgv)) return;
386
386
  enableConsoleCapture();
387
- const { buildProgram } = await import("./program-BGSx2Vda.js");
387
+ const { buildProgram } = await import("./program-CazmynDS.js");
388
388
  const program = buildProgram();
389
389
  installUnhandledRejectionHandler();
390
390
  process$1.on("uncaughtException", (error) => {
@@ -397,10 +397,10 @@ async function runCli(argv = process$1.argv) {
397
397
  const { getProgramContext } = await import("./program-context-CDFrVtWb.js").then((n) => n.n);
398
398
  const ctx = getProgramContext(program);
399
399
  if (ctx) {
400
- const { registerCoreCliByName } = await import("./command-registry-L5hzgsO3.js").then((n) => n.t);
400
+ const { registerCoreCliByName } = await import("./command-registry-DgzxE6-s.js").then((n) => n.t);
401
401
  await registerCoreCliByName(program, ctx, primary, parseArgv);
402
402
  }
403
- const { registerSubCliByName } = await import("./register.subclis-CDkHAGnh.js").then((n) => n.a);
403
+ const { registerSubCliByName } = await import("./register.subclis-Cy8W7u7O.js").then((n) => n.a);
404
404
  await registerSubCliByName(program, primary);
405
405
  }
406
406
  if (!shouldSkipPluginCommandRegistration({
@@ -408,7 +408,7 @@ async function runCli(argv = process$1.argv) {
408
408
  primary,
409
409
  hasBuiltinPrimary: primary !== null && program.commands.some((command) => command.name() === primary)
410
410
  })) {
411
- const { registerPluginCliCommands } = await import("./cli-DIm0O_lA.js");
411
+ const { registerPluginCliCommands } = await import("./cli-DgGwAObY.js");
412
412
  const { loadConfig } = await import("./env-DZf2YiRU.js").then((n) => n.qt);
413
413
  registerPluginCliCommands(program, loadConfig());
414
414
  }
@@ -1,7 +1,7 @@
1
1
  import { Af as PLUGIN_ADMIN_RPC_ACTION_METHODS, Lf as resolvePluginAdminRpcActionGrant, Mf as isPluginRuntimeSessionReadAllowed, Oa as loadPluginManifestRegistry, Pf as normalizePluginsConfig, Rf as resolvePluginAdminRpcActionSourceKeys, Xt as loadConfig, ll as validateRegistryNpmSpec } from "./env-DZf2YiRU.js";
2
2
  import { d as listChannelPluginCatalogEntries } from "./dangerous-name-matching-BzIhUdwr.js";
3
3
  import { i as resolveBundledPluginSources } from "./update-BFS9LfuW.js";
4
- import { n as buildPluginLifecycleReport } from "./lifecycle-DFB0_xLS.js";
4
+ import { n as buildPluginLifecycleReport } from "./lifecycle-DtjQ5ipb.js";
5
5
  import path from "node:path";
6
6
 
7
7
  //#region src/plugins/marketplace-update-review.ts
@@ -1,7 +1,7 @@
1
1
  import { Df as resolvePluginAdminRpcActionGrant, Dn as loadConfig, Of as resolvePluginAdminRpcActionSourceKeys, Sf as isPluginRuntimeSessionReadAllowed, Vl as validateRegistryNpmSpec, ao as loadPluginManifestRegistry, bf as PLUGIN_ADMIN_RPC_ACTION_METHODS, wf as normalizePluginsConfig } from "./agent-scope-803djwZu.js";
2
2
  import { c as listChannelPluginCatalogEntries } from "./dangerous-name-matching-CL8XwIRq.js";
3
3
  import { i as resolveBundledPluginSources } from "./update-C74iG43c.js";
4
- import { n as buildPluginLifecycleReport } from "./lifecycle-C5XGWThd.js";
4
+ import { n as buildPluginLifecycleReport } from "./lifecycle-C6SWjahT.js";
5
5
  import path from "node:path";
6
6
 
7
7
  //#region src/plugins/marketplace-update-review.ts
@@ -2,7 +2,7 @@ import { Cu as formatCliCommand, Gt as resolveMainSessionKey, Ru as resolveAgent
2
2
  import { B as colorize, H as theme, V as isRich } from "./agent-paths-DUHGyU1s.js";
3
3
  import "./send-4Bz1g7es.js";
4
4
  import "./send-CaE81xJg.js";
5
- import { An as listSandboxBrowsers, Eo as resolveSandboxConfigForAgent, Mn as removeSandboxBrowserContainer, Nn as removeSandboxContainer, Oo as resolveSandboxToolPolicyForAgent, jn as listSandboxContainers } from "./model-catalog-hjXNofhs.js";
5
+ import { An as listSandboxBrowsers, Eo as resolveSandboxConfigForAgent, Mn as removeSandboxBrowserContainer, Nn as removeSandboxContainer, Oo as resolveSandboxToolPolicyForAgent, jn as listSandboxContainers } from "./model-catalog-QdGjCBzQ.js";
6
6
  import "./github-copilot-token-A9DiaCB0.js";
7
7
  import { A as defaultRuntime, H as normalizeMainKey, L as buildAgentMainSessionKey, U as resolveAgentIdFromSessionKey, V as normalizeAgentId, it as parseAgentSessionKey, v as resolveStorePath } from "./entry.js";
8
8
  import "./reply-prefix-pEk10qm3.js";
@@ -45,7 +45,7 @@ import "./send-2z6EXr8o.js";
45
45
  import "./outbound-attachment-DRoNYAVt.js";
46
46
  import "./fetch-DzdLpVxl.js";
47
47
  import "./delivery-queue-DeoUHXGD.js";
48
- import "./deps-CrKSMHlj.js";
48
+ import "./deps-npMqt3Ka.js";
49
49
  import "./frontmatter-Cye-a9g3.js";
50
50
  import "./skills-60AaRTYw.js";
51
51
  import "./skills-remote-DWll8gbf.js";
@@ -2,7 +2,7 @@ import "./paths-C9FmTW1x.js";
2
2
  import { H as isRich, U as theme, V as colorize } from "./agent-paths-BySKyq9I.js";
3
3
  import { Dn as loadConfig, Et as loadSessionStore, Sn as resolveMainSessionKey, V as normalizeAnyChannelId, bn as resolveAgentMainSessionKey, dd as formatCliCommand, ef as INTERNAL_MESSAGE_CHANNEL, i as resolveAgentConfig } from "./agent-scope-803djwZu.js";
4
4
  import "./commands-registry-Dha8b_oq.js";
5
- import { $ as listSandboxContainers, Q as listSandboxBrowsers, et as removeSandboxBrowserContainer, is as resolveSandboxConfigForAgent, os as resolveSandboxToolPolicyForAgent, tt as removeSandboxContainer } from "./reply-Baz1gE0S.js";
5
+ import { $ as listSandboxContainers, Q as listSandboxBrowsers, et as removeSandboxBrowserContainer, is as resolveSandboxConfigForAgent, os as resolveSandboxToolPolicyForAgent, tt as removeSandboxContainer } from "./reply-CHDxge29.js";
6
6
  import { c as normalizeMainKey, l as resolveAgentIdFromSessionKey, r as buildAgentMainSessionKey, s as normalizeAgentId, w as parseAgentSessionKey } from "./session-key-LmCHAJTQ.js";
7
7
  import { d as defaultRuntime } from "./errors-Dx3S3Nrp.js";
8
8
  import "./send-DgEYF-rw.js";
@@ -38,7 +38,7 @@ import "./ssrf-Blf4NrHS.js";
38
38
  import "./outbound-attachment-BIDEXM1m.js";
39
39
  import "./fetch-IJlrLWag.js";
40
40
  import "./delivery-queue-rYTO6uCE.js";
41
- import "./deps-CZFDjC6B.js";
41
+ import "./deps-Dh2iIgIB.js";
42
42
  import "./memory-C3SmVHtE.js";
43
43
  import "./memory-search-BB8Uk47d.js";
44
44
  import "./manager-Bc5KCs6B.js";
@@ -2,7 +2,7 @@ import { _ as resolveStateDir, h as resolveOAuthDir, o as resolveConfigPath } fr
2
2
  import { H as isRich, T as shortenHomePath, U as theme, w as shortenHomeInString } from "./agent-paths-BySKyq9I.js";
3
3
  import { Dn as loadConfig, En as createConfigIO, Na as createIcaclsResetCommand, Pa as formatIcaclsResetCommand, d as resolveDefaultAgentId, dd as formatCliCommand, eu as runExec } from "./agent-scope-803djwZu.js";
4
4
  import "./commands-registry-Dha8b_oq.js";
5
- import "./reply-Baz1gE0S.js";
5
+ import "./reply-CHDxge29.js";
6
6
  import { m as DEFAULT_ACCOUNT_ID, s as normalizeAgentId } from "./session-key-LmCHAJTQ.js";
7
7
  import { d as defaultRuntime } from "./errors-Dx3S3Nrp.js";
8
8
  import "./send-DgEYF-rw.js";
@@ -38,7 +38,7 @@ import "./ssrf-Blf4NrHS.js";
38
38
  import "./outbound-attachment-BIDEXM1m.js";
39
39
  import "./fetch-IJlrLWag.js";
40
40
  import "./delivery-queue-rYTO6uCE.js";
41
- import "./deps-CZFDjC6B.js";
41
+ import "./deps-Dh2iIgIB.js";
42
42
  import "./memory-C3SmVHtE.js";
43
43
  import "./memory-search-BB8Uk47d.js";
44
44
  import "./manager-Bc5KCs6B.js";
@@ -77,7 +77,7 @@ import "./skills-remote-CGXeYe3d.js";
77
77
  import "./skill-commands-BTvs1diZ.js";
78
78
  import "./prompt-style-Db5iJoaI.js";
79
79
  import "./pairing-labels-DuozKBa1.js";
80
- import { n as collectIncludePathsRecursive, t as runSecurityAudit } from "./audit-oiJMNMrH.js";
80
+ import { n as collectIncludePathsRecursive, t as runSecurityAudit } from "./audit-x263ATTT.js";
81
81
  import path from "node:path";
82
82
  import fs from "node:fs/promises";
83
83
 
@@ -2,7 +2,7 @@ import { Cu as formatCliCommand, Gu as resolveDefaultAgentId, Xt as loadConfig,
2
2
  import { C as shortenHomeInString, H as theme, V as isRich, w as shortenHomePath } from "./agent-paths-DUHGyU1s.js";
3
3
  import "./send-4Bz1g7es.js";
4
4
  import "./send-CaE81xJg.js";
5
- import "./model-catalog-hjXNofhs.js";
5
+ import "./model-catalog-QdGjCBzQ.js";
6
6
  import "./github-copilot-token-A9DiaCB0.js";
7
7
  import { A as defaultRuntime, Ct as resolveStateDir, J as DEFAULT_ACCOUNT_ID, V as normalizeAgentId, ft as resolveConfigPath, xt as resolveOAuthDir } from "./entry.js";
8
8
  import "./reply-prefix-pEk10qm3.js";
@@ -45,7 +45,7 @@ import "./send-2z6EXr8o.js";
45
45
  import "./outbound-attachment-DRoNYAVt.js";
46
46
  import "./fetch-DzdLpVxl.js";
47
47
  import "./delivery-queue-DeoUHXGD.js";
48
- import "./deps-CrKSMHlj.js";
48
+ import "./deps-npMqt3Ka.js";
49
49
  import "./frontmatter-Cye-a9g3.js";
50
50
  import "./skills-60AaRTYw.js";
51
51
  import "./skills-remote-DWll8gbf.js";
@@ -74,7 +74,7 @@ import "./progress-BhMUiH4f.js";
74
74
  import "./replies-DsgeX36e.js";
75
75
  import "./prompt-style-CWdNyu_Q.js";
76
76
  import "./pairing-labels-BWWnectb.js";
77
- import { n as collectIncludePathsRecursive, t as runSecurityAudit } from "./audit-BmyHd7Fd.js";
77
+ import { n as collectIncludePathsRecursive, t as runSecurityAudit } from "./audit-DjY5I08B.js";
78
78
  import path from "node:path";
79
79
  import fs from "node:fs/promises";
80
80