@fased/fased 0.1.18 → 0.1.20

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 (228) hide show
  1. package/dist/{agents-B6Phr7_f.js → agents-ChQhgSlb.js} +11 -11
  2. package/dist/{attachment-normalize-CzEnjLNz.js → attachment-normalize-Cr8RzfVf.js} +1 -1
  3. package/dist/{attachment-normalize-Cw5usv34.js → attachment-normalize-DB19KLbl.js} +1 -1
  4. package/dist/{audio-preflight-Bb2vNNbg.js → audio-preflight-BLGP3XdB.js} +1 -1
  5. package/dist/{audio-preflight-CE7uXO4r.js → audio-preflight-BmW52Ycp.js} +1 -1
  6. package/dist/{audio-preflight-DdTXlJCN.js → audio-preflight-CHhcmiXJ.js} +3 -3
  7. package/dist/{audio-preflight-BneukbKN.js → audio-preflight-DAevycUR.js} +2 -2
  8. package/dist/{audio-preflight-DLDBtl4e.js → audio-preflight-DVwcDm03.js} +3 -3
  9. package/dist/{audit-xX6RNayR.js → audit-C5YXYuIL.js} +1 -1
  10. package/dist/{audit-B2R6WwpA.js → audit-DPnCY1UL.js} +1 -1
  11. package/dist/{auth-DtTjcdsn.js → auth-BbQxXxtt.js} +5 -5
  12. package/dist/{auth-choice-DEux81xn.js → auth-choice-D8Q1fQwa.js} +2 -2
  13. package/dist/{auth-choice-DSs5l1Mv.js → auth-choice-DRyuJ7OL.js} +2 -2
  14. package/dist/{auth-choice-prompt-D8d4kRYT.js → auth-choice-prompt-Bs_OE3ai.js} +1 -1
  15. package/dist/{auth-choice-prompt-Dhl403zz.js → auth-choice-prompt-EOHB6Adp.js} +1 -1
  16. package/dist/build-info.json +3 -3
  17. package/dist/bundled/boot-md/handler.js +1 -1
  18. package/dist/bundled/session-memory/handler.js +1 -1
  19. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  20. package/dist/{channel-web-DRJ_lg4d.js → channel-web-BYwefJub.js} +1 -1
  21. package/dist/{channel-web-B_R-iuZ6.js → channel-web-Do7PfpgZ.js} +1 -1
  22. package/dist/{channels-D9lINC_R.js → channels-Ca02RvCt.js} +9 -9
  23. package/dist/{channels-B-7M3uYr.js → channels-DrEj3b4G.js} +9 -9
  24. package/dist/{channels-cli-BNR8Ueih.js → channels-cli-CCa-scQg.js} +6 -6
  25. package/dist/{channels-cli-CZZGaHdW.js → channels-cli-b6IPejdy.js} +6 -6
  26. package/dist/{clack-prompter-D2fuSvy3.js → clack-prompter-DhFjwbXA.js} +110 -40
  27. package/dist/{clack-prompter-DsooqWFU.js → clack-prompter-Q_PN4iLX.js} +110 -40
  28. package/dist/cli/daemon-cli.js +1 -1
  29. package/dist/{cli-DDzZu95y.js → cli-DXIWIIJj.js} +3 -3
  30. package/dist/{cli-PJTbyT76.js → cli-eje5udQT.js} +3 -3
  31. package/dist/{command-registry-DH2g-1VS.js → command-registry-Bs12xiCA.js} +9 -9
  32. package/dist/{completion-cli-cirX46xi.js → completion-cli-Btcmy2ZS.js} +2 -2
  33. package/dist/{completion-cli-Cszwcu14.js → completion-cli-RlpZaXwm.js} +1 -1
  34. package/dist/{config-cli-wGaTNazO.js → config-cli-CTo8yFw1.js} +1 -1
  35. package/dist/{config-cli-D-JctiSJ.js → config-cli-D-FqgnuJ.js} +1 -1
  36. package/dist/{config-guard-C74yuV1t.js → config-guard-D6r7usdP.js} +2 -2
  37. package/dist/{config-guard-ComvK070.js → config-guard-DnCSSIeP.js} +1 -1
  38. package/dist/{configure-BZPWTrYa.js → configure-CLTc56jo.js} +16 -16
  39. package/dist/{configure-B3qdEOin.js → configure-D0-Sq2kW.js} +16 -16
  40. package/dist/control-ui/assets/app-DXYMrRJ9.js.map +1 -1
  41. package/dist/{cron-cli-B_Y1xWzG.js → cron-cli-BstCBSyn.js} +2 -2
  42. package/dist/{cron-cli-DV_fO2Av.js → cron-cli-pA06wiEq.js} +2 -2
  43. package/dist/{daemon-cli-DwEfnmS3.js → daemon-cli-DiuXEPjO.js} +1 -1
  44. package/dist/{daemon-cli-D99T8qck.js → daemon-cli-cyqRsnTF.js} +1 -1
  45. package/dist/daemon-cli.js +1 -1
  46. package/dist/{deps-DXHMO1Yj.js → deps-BKAIBkcE.js} +1 -1
  47. package/dist/{deps-5vuaH16V.js → deps-BWo3ls9h.js} +1 -1
  48. package/dist/{doctor-config-flow-4WutpMTV.js → doctor-config-flow-B-I0osH5.js} +1 -1
  49. package/dist/{doctor-config-flow-Cd9O0xNE.js → doctor-config-flow-Ceaz-Gkk.js} +1 -1
  50. package/dist/entry.js +1 -1
  51. package/dist/extensionAPI.js +2 -2
  52. package/dist/{gateway-cli-DxttS--5.js → gateway-cli-BbSS1Nxd.js} +28 -28
  53. package/dist/{gateway-cli-DnTW-Vqh.js → gateway-cli-izDCXWNN.js} +28 -28
  54. package/dist/{health-CK5_7SB-.js → health-DW5NMpNI.js} +2 -2
  55. package/dist/{health-DkKBhl0x.js → health-kF4U3o3b.js} +2 -2
  56. package/dist/{heartbeat-runner-C_SzC_tK.js → heartbeat-runner-BnDruNG2.js} +1 -1
  57. package/dist/{heartbeat-runner-B9_owa4e.js → heartbeat-runner-CJP5uO8S.js} +1 -1
  58. package/dist/{hooks-cli-CF1H42-g.js → hooks-cli-CSFuSiA5.js} +4 -4
  59. package/dist/{hooks-cli-DsUN2nCy.js → hooks-cli-U5qCBqJm.js} +4 -4
  60. package/dist/index.js +9 -9
  61. package/dist/{ipv4-oR6PCFkE.js → ipv4-B42xQEbV.js} +2 -2
  62. package/dist/{ipv4-hmcj6CY1.js → ipv4-DSDJ9Fn2.js} +2 -2
  63. package/dist/{lifecycle-DkQi8XHs.js → lifecycle-Bbry4K-O.js} +1 -1
  64. package/dist/{lifecycle-BtrqlzIp.js → lifecycle-BiNcSCVf.js} +1 -1
  65. package/dist/{list.auth-overview-DqpchDrO.js → list.auth-overview-ByYcn7Ct.js} +1 -1
  66. package/dist/{list.auth-overview-DtfRUx-B.js → list.auth-overview-Di-jSuQF.js} +1 -1
  67. package/dist/llm-slug-generator.js +1 -1
  68. package/dist/{model-catalog--SvucuO6.js → model-catalog-ex4Cpln_.js} +12 -8
  69. package/dist/{models-zXXNWbCe.js → models-BonzQ9Rv.js} +7 -7
  70. package/dist/{models-cli-8b2o7ZBO.js → models-cli-Cc0fVKLR.js} +7 -7
  71. package/dist/{models-cli-DwXIxRSn.js → models-cli-DZ05AYqI.js} +8 -8
  72. package/dist/{node-cli-D55JvlGv.js → node-cli-CKXvITsL.js} +3 -3
  73. package/dist/{node-cli-Dmiet_CN.js → node-cli-Dfl7X414.js} +3 -3
  74. package/dist/{note-DrwZGnSu.js → note-DwkETqd-.js} +2 -0
  75. package/dist/{note-CLUeye9D.js → note-rV2vspIo.js} +2 -0
  76. package/dist/{onboard-CqUH0CNb.js → onboard-BDK2o_5B.js} +8 -8
  77. package/dist/{onboard-BMckmyvg.js → onboard-CpJeEn67.js} +8 -8
  78. package/dist/{onboard-channels-CWZUEiko.js → onboard-channels-CDXretWe.js} +2 -2
  79. package/dist/{onboard-channels-Di1MifgF.js → onboard-channels-ZnUGKi2j.js} +2 -2
  80. package/dist/{onboard-search-CLhDai7x.js → onboard-search-BIltnW27.js} +6 -6
  81. package/dist/{onboard-search-WWi4blgc.js → onboard-search-HgNX3hct.js} +6 -6
  82. package/dist/{onboarding-DsCvgeVW.js → onboarding-Bgx1tJnU.js} +128 -65
  83. package/dist/{onboarding-D4OTdWQp.js → onboarding-CBlXOasA.js} +128 -65
  84. package/dist/{openresponses-http-CFQL8cSe.js → openresponses-http-5S3xc2MZ.js} +1 -1
  85. package/dist/{openresponses-http-qcMe4CnQ.js → openresponses-http-BBNbIRzc.js} +2 -2
  86. package/dist/{openresponses-http-DVyWivMq.js → openresponses-http-BTpFUwym.js} +1 -1
  87. package/dist/{openresponses-http-D6Ttjnvd.js → openresponses-http-COAxhJal.js} +3 -3
  88. package/dist/{openresponses-http-BdrytBTu.js → openresponses-http-o273A5SH.js} +3 -3
  89. package/dist/{parent-default-help-ClCr80XR.js → parent-default-help-BwE33-U1.js} +1 -1
  90. package/dist/{parent-default-help-D_UWzDsy.js → parent-default-help-DzWAx_GB.js} +1 -1
  91. package/dist/{paths-DuymR5Rg.js → paths-Bzz-O3FX.js} +9 -9
  92. package/dist/{pi-embedded-IQzv6URS.js → pi-embedded-Bnuo5tPq.js} +5 -5
  93. package/dist/{pi-embedded-BS0sTNPV.js → pi-embedded-CeuBUTjd.js} +14 -14
  94. package/dist/{plugin-registry-DfiokqgQ.js → plugin-registry-D2IeEq2N.js} +1 -1
  95. package/dist/{plugin-registry-C6ytAnfA.js → plugin-registry-DjTXh-9g.js} +1 -1
  96. package/dist/plugin-sdk/{audio-preflight-Cyb1e94b.js → audio-preflight-CVWduuEO.js} +1 -1
  97. package/dist/plugin-sdk/{audio-preflight-CWTDcoUz.js → audio-preflight-CdPkTmJX.js} +1 -1
  98. package/dist/plugin-sdk/channel-plugin-common.js +1 -1
  99. package/dist/plugin-sdk/{channel-web-CcGhVHhJ.js → channel-web-oM8gCehY.js} +1 -1
  100. package/dist/plugin-sdk/command-status.js +1 -1
  101. package/dist/plugin-sdk/index.js +2 -2
  102. package/dist/plugin-sdk/{openresponses-http-BsP7r5IA.js → openresponses-http-C_9IfZXZ.js} +1 -1
  103. package/dist/plugin-sdk/{openresponses-http-C7iy26fS.js → openresponses-http-_SiZJaK2.js} +1 -1
  104. package/dist/plugin-sdk/{pi-model-discovery-runtime-FgSYY3zE.js → pi-model-discovery-runtime-BWcaNxzp.js} +1 -1
  105. package/dist/plugin-sdk/{registry-DyRgZdL8.js → registry-DXXOSq_V.js} +8 -8
  106. package/dist/plugin-sdk/{reply-K26zHCJ7.js → reply-e-9_IdAa.js} +5 -5
  107. package/dist/plugin-sdk/src/brand.d.ts +2 -2
  108. package/dist/plugin-sdk/{status-DUXaf75C.js → status-D_fsW8e3.js} +5 -5
  109. package/dist/plugin-sdk/{web-BnHwbjCb.js → web-BL2TuPTi.js} +1 -1
  110. package/dist/plugin-sdk/{web-BZ-KI_i-.js → web-CaVSiRWI.js} +2 -2
  111. package/dist/{plugins-cli-1wRgk_1k.js → plugins-cli-BMV70lmj.js} +6 -6
  112. package/dist/{plugins-cli-CHCNHfO2.js → plugins-cli-Bf0I1xYR.js} +6 -6
  113. package/dist/{program-BmRPzUoU.js → program-CZzXG3p4.js} +9 -9
  114. package/dist/{program-context-CRYL81pY.js → program-context-CaLlkx1k.js} +25 -25
  115. package/dist/{prompt-select-styled-BzqepcY0.js → prompt-select-styled-Cj_SHqRt.js} +8 -8
  116. package/dist/{prompt-select-styled-Ixt2Vxqr.js → prompt-select-styled-DVwrrZSb.js} +8 -8
  117. package/dist/{prompt-style-Wxki8rmI.js → prompt-style-CWAacuMq.js} +1 -2
  118. package/dist/{prompt-style-DxKPs6E0.js → prompt-style-Rmj3c-Ir.js} +1 -2
  119. package/dist/{providers-cli-DBG7T-38.js → providers-cli-BWZUM8kN.js} +3 -3
  120. package/dist/{providers-cli-DsUpaNkE.js → providers-cli-Dwb_MRo-.js} +3 -3
  121. package/dist/{pw-ai-BWWVm40d.js → pw-ai-D6eWnTeA.js} +1 -1
  122. package/dist/{register.agent-pKJfY4ij.js → register.agent-C-bHdMXU.js} +12 -12
  123. package/dist/{register.agent-D5MjI275.js → register.agent-D0ZpgSNd.js} +11 -11
  124. package/dist/{register.configure-DUqD_hkp.js → register.configure-B0PTAyow.js} +16 -16
  125. package/dist/{register.configure-BtdBEnbT.js → register.configure-B51e7-qt.js} +16 -16
  126. package/dist/{register.maintenance-Bu9WP0d1.js → register.maintenance-B3cXfhM1.js} +12 -12
  127. package/dist/{register.maintenance-CN_vDSkN.js → register.maintenance-BrmIl5VW.js} +13 -13
  128. package/dist/{register.message-Jpj57foO.js → register.message-Dzs1vNKG.js} +4 -4
  129. package/dist/{register.message-Bmx5XWhU.js → register.message-EKaGgJ9I.js} +4 -4
  130. package/dist/{register.onboard-BBdUy5X-.js → register.onboard-BFPT0Hh1.js} +18 -18
  131. package/dist/{register.onboard-BaIUg7j4.js → register.onboard-DmFrOBs4.js} +18 -18
  132. package/dist/{register.setup-CGKrDEMc.js → register.setup-5M8f6DaB.js} +18 -18
  133. package/dist/{register.setup-CxPYg9dc.js → register.setup-B0beU4w3.js} +18 -18
  134. package/dist/{register.status-health-sessions-Dyyxnfsc.js → register.status-health-sessions-9GJwT82K.js} +7 -7
  135. package/dist/{register.status-health-sessions-C0Tc0YCk.js → register.status-health-sessions-CEIpWahs.js} +7 -7
  136. package/dist/{register.subclis-D76pTHAo.js → register.subclis-C3yGp0vO.js} +17 -17
  137. package/dist/{reply-C-KlztgC.js → reply-B034LmuD.js} +12 -8
  138. package/dist/{run-main-REepjMTK.js → run-main-DYdI5qyZ.js} +18 -18
  139. package/dist/{runtime-helper-grants-vtmIYIZm.js → runtime-helper-grants-9-0EfflU.js} +1 -1
  140. package/dist/{runtime-helper-grants-BQPMglLl.js → runtime-helper-grants-BB9I81Ny.js} +1 -1
  141. package/dist/{sandbox-cli-Cj9M5dH_.js → sandbox-cli-Bl9Lyv-l.js} +3 -3
  142. package/dist/{sandbox-cli-DNh-ozSE.js → sandbox-cli-CAh9nzL6.js} +3 -3
  143. package/dist/{security-cli-B74QtPBv.js → security-cli-Bt7g6fbK.js} +4 -4
  144. package/dist/{security-cli--nwf-QKL.js → security-cli-lQy0YwCb.js} +4 -4
  145. package/dist/{server-CPLhmiQ1.js → server-BKrGeOGh.js} +3 -3
  146. package/dist/{server-CdnHL3HN.js → server-CES-5PaV.js} +3 -3
  147. package/dist/{server-cron-Bga__DzU.js → server-cron-D3WgivDk.js} +2 -2
  148. package/dist/{server-cron-9rZPNOCw.js → server-cron-q6O09WWT.js} +2 -2
  149. package/dist/{server-node-events-NE3EvW3K.js → server-node-events-DE5oWSSB.js} +4 -4
  150. package/dist/{server-node-events-CYM7X9Ka.js → server-node-events-Df_2uVcT.js} +4 -4
  151. package/dist/{status-DNSq7M4m.js → status-CdI_oSZ4.js} +1 -1
  152. package/dist/{status-Cbvyhx9d.js → status-CqIzNbBd.js} +1 -1
  153. package/dist/{status-DX0Q8QQg.js → status-DrXKyHMz.js} +4 -4
  154. package/dist/{status-DfxoXWmn.js → status-ne0p_x1W.js} +4 -4
  155. package/dist/{systemd-linger-9E60sw1j.js → systemd-linger-BTw_D-6k.js} +1 -1
  156. package/dist/{systemd-linger-BYFLOJbt.js → systemd-linger-BlmGMvvA.js} +1 -1
  157. package/dist/{tui-BTgZ8oh1.js → tui-CF9NTWgo.js} +1 -1
  158. package/dist/{tui-DCimzH-j.js → tui-CLXEsHbW.js} +1 -1
  159. package/dist/{tui-cli-DJ8WiWCz.js → tui-cli-Bo8T0iEO.js} +4 -4
  160. package/dist/{tui-cli-BzoEecpB.js → tui-cli-DIHJPDjw.js} +4 -4
  161. package/dist/{update-cli-vLZ2i1bC.js → update-cli-RA5GdCSl.js} +13 -13
  162. package/dist/{update-cli-DLE13jlu.js → update-cli-pAvK-b3V.js} +14 -14
  163. package/dist/{update-runner-DA8lIKi7.js → update-runner-CUbpiOBD.js} +1 -1
  164. package/dist/{update-runner-YRzVDxMy.js → update-runner-kVl9uX8I.js} +1 -1
  165. package/dist/{web-CdUefYwV.js → web-BSGV69pb.js} +4 -4
  166. package/dist/{web-D7U7yJI6.js → web-CFtLg8L6.js} +2 -2
  167. package/dist/{web-BqBwrpRI.js → web-CRHqblTb.js} +4 -4
  168. package/dist/{web-gqp_WLnj.js → web-D7NnzaWN.js} +1 -1
  169. package/dist/{web-DgtV30_7.js → web-R6Wrr8ru.js} +1 -1
  170. package/dist/{web-search-providers.runtime-Dr2M7_ZH.js → web-search-providers.runtime-BQw2Sxko.js} +1 -1
  171. package/dist/{web-search-providers.runtime-JauoxBKh.js → web-search-providers.runtime-E9CDTKMh.js} +1 -1
  172. package/docs/gateway/tailscale.md +44 -0
  173. package/docs/images/screenshots/local/chat-ui-1.png +0 -0
  174. package/docs/images/screenshots/local/final-ui-1.png +0 -0
  175. package/docs/images/screenshots/local/local-ui-1.png +0 -0
  176. package/docs/images/screenshots/local/local-ui-2.png +0 -0
  177. package/docs/images/screenshots/local/model-ui-1.png +0 -0
  178. package/docs/images/screenshots/local/wallet-ui-2.png +0 -0
  179. package/docs/install/index.md +26 -5
  180. package/docs/install/installer.md +11 -11
  181. package/docs/install/node.md +9 -0
  182. package/docs/install/vps.md +27 -7
  183. package/docs/security/baseline-checklist.md +7 -2
  184. package/docs/start/agent-wallet-mining-walkthrough.md +17 -1
  185. package/extensions/acpx/package.json +1 -1
  186. package/extensions/bluebubbles/package.json +1 -1
  187. package/extensions/copilot-proxy/package.json +1 -1
  188. package/extensions/diagnostics-otel/package.json +1 -1
  189. package/extensions/discord/package.json +1 -1
  190. package/extensions/fased-federation/package.json +1 -1
  191. package/extensions/feishu/package.json +1 -1
  192. package/extensions/google-gemini-cli-auth/package.json +1 -1
  193. package/extensions/googlechat/package.json +1 -1
  194. package/extensions/imessage/package.json +1 -1
  195. package/extensions/irc/package.json +1 -1
  196. package/extensions/line/package.json +1 -1
  197. package/extensions/llm-task/package.json +1 -1
  198. package/extensions/lobster/package.json +1 -1
  199. package/extensions/matrix/CHANGELOG.md +12 -0
  200. package/extensions/matrix/package.json +1 -1
  201. package/extensions/mattermost/package.json +1 -1
  202. package/extensions/memory-core/package.json +1 -1
  203. package/extensions/memory-lancedb/package.json +1 -1
  204. package/extensions/minimax-portal-auth/package.json +1 -1
  205. package/extensions/msteams/CHANGELOG.md +12 -0
  206. package/extensions/msteams/package.json +1 -1
  207. package/extensions/nextcloud-talk/package.json +1 -1
  208. package/extensions/nostr/CHANGELOG.md +12 -0
  209. package/extensions/nostr/package.json +1 -1
  210. package/extensions/open-prose/package.json +1 -1
  211. package/extensions/sat-mining/package.json +1 -1
  212. package/extensions/signal/package.json +1 -1
  213. package/extensions/slack/package.json +1 -1
  214. package/extensions/synology-chat/package.json +1 -1
  215. package/extensions/telegram/package.json +1 -1
  216. package/extensions/tlon/package.json +1 -1
  217. package/extensions/twitch/CHANGELOG.md +12 -0
  218. package/extensions/twitch/package.json +1 -1
  219. package/extensions/voice-call/CHANGELOG.md +12 -0
  220. package/extensions/voice-call/package.json +1 -1
  221. package/extensions/whatsapp/package.json +1 -1
  222. package/extensions/zalo/CHANGELOG.md +12 -0
  223. package/extensions/zalo/package.json +1 -1
  224. package/extensions/zalouser/CHANGELOG.md +12 -0
  225. package/extensions/zalouser/package.json +1 -1
  226. package/package.json +1 -1
  227. package/scripts/start-managed.sh +2 -2
  228. package/docs/images/screenshots/local/wallet-ui-1.png +0 -0
@@ -2,7 +2,7 @@ import { D as pruneLegacyStoreKeys, E as loadSessionEntry, Kl as normalizeChanne
2
2
  import "./agent-paths-BI1hx-tF.js";
3
3
  import "./send-D7X0_iFp.js";
4
4
  import "./send-BFEd4vCM.js";
5
- import { Ea as deliverOutboundPayloads, Li as agentCommand, Wi as resolveOutboundTarget, er as enqueueSystemEvent, na as buildOutboundSessionContext, qi as createOutboundSendDeps, ur as requestHeartbeatNow } from "./model-catalog--SvucuO6.js";
5
+ import { Ea as deliverOutboundPayloads, Li as agentCommand, Wi as resolveOutboundTarget, er as enqueueSystemEvent, na as buildOutboundSessionContext, qi as createOutboundSendDeps, ur as requestHeartbeatNow } from "./model-catalog-ex4Cpln_.js";
6
6
  import "./github-copilot-token-A9DiaCB0.js";
7
7
  import { A as defaultRuntime, H as normalizeMainKey } from "./entry.js";
8
8
  import "./reply-prefix-TUhpEtvr.js";
@@ -45,7 +45,7 @@ import "./send-C-su1wPZ.js";
45
45
  import "./outbound-attachment-Bh4FmcYg.js";
46
46
  import "./fetch-BVvWzHT_.js";
47
47
  import "./delivery-queue-55Cityuq.js";
48
- import "./deps-5vuaH16V.js";
48
+ import "./deps-BWo3ls9h.js";
49
49
  import "./frontmatter-D2UNJikU.js";
50
50
  import "./skills-Dis31awJ.js";
51
51
  import "./skills-remote-CIAB0AXm.js";
@@ -73,9 +73,9 @@ import "./cli-utils-XevKf-tr.js";
73
73
  import "./help-format-B2DRdx98.js";
74
74
  import "./progress-DkVYFLij.js";
75
75
  import "./replies-FXlmpJVO.js";
76
- import "./prompt-style-DxKPs6E0.js";
76
+ import "./prompt-style-Rmj3c-Ir.js";
77
77
  import "./pairing-labels-BCM1S2e_.js";
78
- import { a as registerApnsToken, l as formatForLog, n as parseMessageWithAttachments, t as normalizeRpcAttachmentsToChatAttachments } from "./attachment-normalize-Cw5usv34.js";
78
+ import { a as registerApnsToken, l as formatForLog, n as parseMessageWithAttachments, t as normalizeRpcAttachmentsToChatAttachments } from "./attachment-normalize-DB19KLbl.js";
79
79
  import { randomUUID } from "node:crypto";
80
80
 
81
81
  //#region src/gateway/server-node-events.ts
@@ -1,5 +1,5 @@
1
1
  import { A as resolveDefaultAgentWorkspaceDir, Dn as loadConfig, F as createSubsystemLogger, d as resolveDefaultAgentId, u as resolveAgentWorkspaceDir } from "./agent-scope-DHrLr5OF.js";
2
- import { Nt as loadFasedAgentPlugins, la as createPluginLoaderLogger } from "./reply-C-KlztgC.js";
2
+ import { Nt as loadFasedAgentPlugins, la as createPluginLoaderLogger } from "./reply-B034LmuD.js";
3
3
 
4
4
  //#region src/plugins/status.ts
5
5
  const log = createSubsystemLogger("plugins");
@@ -1,5 +1,5 @@
1
1
  import { Gu as resolveDefaultAgentId, Wu as resolveAgentWorkspaceDir, Xt as loadConfig, a as createSubsystemLogger, ud as resolveDefaultAgentWorkspaceDir } from "./env-C77feXxI.js";
2
- import { Oi as createPluginLoaderLogger, c as loadFasedAgentPlugins } from "./model-catalog--SvucuO6.js";
2
+ import { Oi as createPluginLoaderLogger, c as loadFasedAgentPlugins } from "./model-catalog-ex4Cpln_.js";
3
3
 
4
4
  //#region src/plugins/status.ts
5
5
  const log = createSubsystemLogger("plugins");
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { A as resolveSessionModelRef, Bt as resolveFreshSessionTotalTokens, C as listAgentsForGateway, Cu as formatCliCommand, Gl as listChannelPlugins, Gt as resolveMainSessionKey, L as resolveContextTokensForModel, Qt as readConfigFileSnapshot, Rr as resolveConfiguredModelRef, Wu as resolveAgentWorkspaceDir, X as loadSessionStore, Xt as loadConfig, Yc as VERSION, fd as resolveFasedAgentPackageRoot, hd as runExec, x as classifySessionKey } from "./env-C77feXxI.js";
3
3
  import { H as theme, V as isRich, j as info } from "./agent-paths-BI1hx-tF.js";
4
- import { E as resolveControlUiLinks, Gr as summarizeRestartSentinel, Jt as buildChannelSummary, Ri as resolveStrictAgenticRuntimeMode, So as getTailnetHostname, Wa as normalizeControlUiBasePath, Wr as readRestartSentinel, Xt as formatChannelAllowFrom, Yt as buildChannelAccountSnapshot, _r as loadProviderUsageSummary, rr as peekSystemEvents, vr as formatUsageReportLines, wo as readTailscaleStatusJson } from "./model-catalog--SvucuO6.js";
4
+ import { E as resolveControlUiLinks, Gr as summarizeRestartSentinel, Jt as buildChannelSummary, Ri as resolveStrictAgenticRuntimeMode, So as getTailnetHostname, Wa as normalizeControlUiBasePath, Wr as readRestartSentinel, Xt as formatChannelAllowFrom, Yt as buildChannelAccountSnapshot, _r as loadProviderUsageSummary, rr as peekSystemEvents, vr as formatUsageReportLines, wo as readTailscaleStatusJson } from "./model-catalog-ex4Cpln_.js";
5
5
  import { n as DEFAULT_MODEL, r as DEFAULT_PROVIDER, t as DEFAULT_CONTEXT_TOKENS } from "./defaults-BDW-7D7s.js";
6
6
  import { gt as resolveGatewayPort, it as parseAgentSessionKey, v as resolveStorePath } from "./entry.js";
7
7
  import { t as getMemorySearchManager } from "./memory-2keYbXkc.js";
@@ -18,9 +18,9 @@ import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./servi
18
18
  import { t as formatRuntimeStatusWithDetails } from "./runtime-status-Ol8emLbF.js";
19
19
  import { t as readLastGatewayErrorLine } from "./diagnostics-CqDqfqR_.js";
20
20
  import { t as renderTable } from "./table-C0Mj2A8W.js";
21
- import { o as probeGateway, r as resolveGatewayProbeAuth$1, t as runSecurityAudit } from "./audit-xX6RNayR.js";
22
- import { t as formatHealthChannelLines, u as getLastGatewayStartupTraceSnapshot } from "./health-CK5_7SB-.js";
23
- import { t as resolveHeartbeatSummaryForAgent } from "./heartbeat-runner-C_SzC_tK.js";
21
+ import { o as probeGateway, r as resolveGatewayProbeAuth$1, t as runSecurityAudit } from "./audit-C5YXYuIL.js";
22
+ import { t as formatHealthChannelLines, u as getLastGatewayStartupTraceSnapshot } from "./health-DW5NMpNI.js";
23
+ import { t as resolveHeartbeatSummaryForAgent } from "./heartbeat-runner-BnDruNG2.js";
24
24
  import { d as formatUpdateChannelLabel, h as resolveEffectiveUpdateChannel, i as formatGitInstallLabel, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-B8tvVfAm.js";
25
25
  import { t as resolveNodeService } from "./node-service-Bst0DpMM.js";
26
26
  import { t as collectChannelStatusIssues } from "./channels-status-issues-BSIStb_F.js";
@@ -1,7 +1,7 @@
1
1
  import { u as resolveGatewayPort } from "./paths-C9FmTW1x.js";
2
2
  import { H as isRich, M as info, U as theme } from "./agent-paths-DmOVZE7g.js";
3
3
  import { $ as listAgentsForGateway, Dn as loadConfig, Et as loadSessionStore, Nu as listChannelPlugins, Sn as resolveMainSessionKey, Z as classifySessionKey, _n as resolveFreshSessionTotalTokens, bl as VERSION, dd as formatCliCommand, eu as runExec, hi as resolveConfiguredModelRef, kn as readConfigFileSnapshot, ot as resolveSessionModelRef, po as resolveFasedAgentPackageRoot, pt as resolveContextTokensForModel, u as resolveAgentWorkspaceDir } from "./agent-scope-DHrLr5OF.js";
4
- import { $o as getTailnetHostname, B as buildChannelAccountSnapshot, Br as loadProviderUsageSummary, Qt as resolveControlUiLinks, V as formatChannelAllowFrom, Vr as formatUsageReportLines, gt as resolveStrictAgenticRuntimeMode, hi as summarizeRestartSentinel, mi as readRestartSentinel, ra as peekSystemEvents, ts as readTailscaleStatusJson, xo as normalizeControlUiBasePath, z as buildChannelSummary } from "./reply-C-KlztgC.js";
4
+ import { $o as getTailnetHostname, B as buildChannelAccountSnapshot, Br as loadProviderUsageSummary, Qt as resolveControlUiLinks, V as formatChannelAllowFrom, Vr as formatUsageReportLines, gt as resolveStrictAgenticRuntimeMode, hi as summarizeRestartSentinel, mi as readRestartSentinel, ra as peekSystemEvents, ts as readTailscaleStatusJson, xo as normalizeControlUiBasePath, z as buildChannelSummary } from "./reply-B034LmuD.js";
5
5
  import { w as parseAgentSessionKey } from "./session-key-LmCHAJTQ.js";
6
6
  import { n as DEFAULT_MODEL, r as DEFAULT_PROVIDER, t as DEFAULT_CONTEXT_TOKENS } from "./defaults-CzImVi0V.js";
7
7
  import { g as resolveStorePath } from "./chat-envelope-D_wSv26N.js";
@@ -19,9 +19,9 @@ import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./servi
19
19
  import { t as formatRuntimeStatusWithDetails } from "./runtime-status-S9nJA1dv.js";
20
20
  import { t as readLastGatewayErrorLine } from "./diagnostics-BkyuWtqz.js";
21
21
  import { t as renderTable } from "./table-DQLeG14F.js";
22
- import { o as probeGateway, r as resolveGatewayProbeAuth$1, t as runSecurityAudit } from "./audit-B2R6WwpA.js";
23
- import { l as getLastGatewayStartupTraceSnapshot, t as formatHealthChannelLines } from "./health-DkKBhl0x.js";
24
- import { t as resolveHeartbeatSummaryForAgent } from "./heartbeat-runner-B9_owa4e.js";
22
+ import { o as probeGateway, r as resolveGatewayProbeAuth$1, t as runSecurityAudit } from "./audit-DPnCY1UL.js";
23
+ import { l as getLastGatewayStartupTraceSnapshot, t as formatHealthChannelLines } from "./health-kF4U3o3b.js";
24
+ import { t as resolveHeartbeatSummaryForAgent } from "./heartbeat-runner-CJP5uO8S.js";
25
25
  import { d as formatUpdateChannelLabel, h as resolveEffectiveUpdateChannel, i as formatGitInstallLabel, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-xTT04LKM.js";
26
26
  import { t as resolveNodeService } from "./node-service-DhGH8GuH.js";
27
27
  import { t as collectChannelStatusIssues } from "./channels-status-issues-DYs3uRFt.js";
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { f as enableSystemdUserLinger, p as readSystemdUserLingerStatus, r as isSystemdUserServiceAvailable } from "./systemd-CmxDYXvt.js";
3
- import { n as note } from "./note-DrwZGnSu.js";
3
+ import { n as note } from "./note-DwkETqd-.js";
4
4
 
5
5
  //#region src/commands/systemd-linger.ts
6
6
  var systemd_linger_exports = /* @__PURE__ */ __exportAll({
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { f as enableSystemdUserLinger, p as readSystemdUserLingerStatus, r as isSystemdUserServiceAvailable } from "./systemd-B8OPQXFR.js";
3
- import { n as note } from "./note-CLUeye9D.js";
3
+ import { n as note } from "./note-rV2vspIo.js";
4
4
 
5
5
  //#region src/commands/systemd-linger.ts
6
6
  var systemd_linger_exports = /* @__PURE__ */ __exportAll({
@@ -1,6 +1,6 @@
1
1
  import { Dn as loadConfig, bl as VERSION, d as resolveDefaultAgentId, df as GATEWAY_CLIENT_CAPS, ld as stripAnsi$1, lp as listThinkingLevelLabels, mf as GATEWAY_CLIENT_NAMES, pf as GATEWAY_CLIENT_MODES, sp as formatThinkingLevels, ud as visibleWidth } from "./agent-scope-DHrLr5OF.js";
2
2
  import { E as resolveResponseUsageMode, a as listChatCommands, o as listChatCommandsForConfig, w as normalizeUsageDisplay } from "./commands-registry-BRvZQ1jh.js";
3
- import { Z as formatRawAssistantErrorForUi, cr as resolveToolDisplay, sr as formatToolDetail } from "./reply-C-KlztgC.js";
3
+ import { Z as formatRawAssistantErrorForUi, cr as resolveToolDisplay, sr as formatToolDetail } from "./reply-B034LmuD.js";
4
4
  import { c as normalizeMainKey, r as buildAgentMainSessionKey, s as normalizeAgentId, w as parseAgentSessionKey } from "./session-key-LmCHAJTQ.js";
5
5
  import { i as stripLeadingInboundMetadata } from "./chat-envelope-D_wSv26N.js";
6
6
  import { t as redactSensitiveUrl } from "./redact-sensitive-url-B0RJQqO7.js";
@@ -1,5 +1,5 @@
1
1
  import { Cf as GATEWAY_CLIENT_MODES, Gu as resolveDefaultAgentId, Hc as formatThinkingLevels, Su as visibleWidth, Wc as listThinkingLevelLabels, Xt as loadConfig, Yc as VERSION, wf as GATEWAY_CLIENT_NAMES, xf as GATEWAY_CLIENT_CAPS, xu as stripAnsi$1 } from "./env-C77feXxI.js";
2
- import { Ti as resolveToolDisplay, kn as formatRawAssistantErrorForUi, wi as formatToolDetail } from "./model-catalog--SvucuO6.js";
2
+ import { Ti as resolveToolDisplay, kn as formatRawAssistantErrorForUi, wi as formatToolDetail } from "./model-catalog-ex4Cpln_.js";
3
3
  import { H as normalizeMainKey, L as buildAgentMainSessionKey, V as normalizeAgentId, it as parseAgentSessionKey, o as stripLeadingInboundMetadata } from "./entry.js";
4
4
  import { t as redactSensitiveUrl } from "./redact-sensitive-url-BW03TVj8.js";
5
5
  import { a as listChatCommands, o as listChatCommandsForConfig, x as resolveResponseUsageMode, y as normalizeUsageDisplay } from "./commands-registry-DFSYQtVC.js";
@@ -2,7 +2,7 @@ import "./paths-C9FmTW1x.js";
2
2
  import { U as theme } from "./agent-paths-DmOVZE7g.js";
3
3
  import "./agent-scope-DHrLr5OF.js";
4
4
  import "./commands-registry-BRvZQ1jh.js";
5
- import "./reply-C-KlztgC.js";
5
+ import "./reply-B034LmuD.js";
6
6
  import { d as defaultRuntime } from "./errors-Dx3S3Nrp.js";
7
7
  import "./send-C5_fB8YQ.js";
8
8
  import "./send-jxmRy65D.js";
@@ -37,7 +37,7 @@ import "./ssrf-Blf4NrHS.js";
37
37
  import "./outbound-attachment-CsXJwFsg.js";
38
38
  import "./fetch-CnCPOuq7.js";
39
39
  import "./delivery-queue-DKRjVFlq.js";
40
- import "./deps-DXHMO1Yj.js";
40
+ import "./deps-BKAIBkcE.js";
41
41
  import "./memory-DDpj0IVA.js";
42
42
  import "./memory-search-BwYkW6_V.js";
43
43
  import "./manager-BmONwMiP.js";
@@ -74,9 +74,9 @@ import "./progress-DZRfIFVb.js";
74
74
  import "./replies-Do40G8fO.js";
75
75
  import "./skills-remote-BghdrdFV.js";
76
76
  import "./skill-commands-QW8zKXC_.js";
77
- import "./prompt-style-Wxki8rmI.js";
77
+ import "./prompt-style-CWAacuMq.js";
78
78
  import "./pairing-labels-D2yOKhoV.js";
79
- import { t as runTui } from "./tui-BTgZ8oh1.js";
79
+ import { t as runTui } from "./tui-CF9NTWgo.js";
80
80
 
81
81
  //#region src/cli/tui-cli.ts
82
82
  function registerTuiCli(program) {
@@ -2,7 +2,7 @@ import "./env-C77feXxI.js";
2
2
  import { H as theme } from "./agent-paths-BI1hx-tF.js";
3
3
  import "./send-D7X0_iFp.js";
4
4
  import "./send-BFEd4vCM.js";
5
- import "./model-catalog--SvucuO6.js";
5
+ import "./model-catalog-ex4Cpln_.js";
6
6
  import "./github-copilot-token-A9DiaCB0.js";
7
7
  import { A as defaultRuntime } from "./entry.js";
8
8
  import "./reply-prefix-TUhpEtvr.js";
@@ -45,7 +45,7 @@ import "./send-C-su1wPZ.js";
45
45
  import "./outbound-attachment-Bh4FmcYg.js";
46
46
  import "./fetch-BVvWzHT_.js";
47
47
  import "./delivery-queue-55Cityuq.js";
48
- import "./deps-5vuaH16V.js";
48
+ import "./deps-BWo3ls9h.js";
49
49
  import "./frontmatter-D2UNJikU.js";
50
50
  import "./skills-Dis31awJ.js";
51
51
  import "./skills-remote-CIAB0AXm.js";
@@ -72,9 +72,9 @@ import "./cli-utils-XevKf-tr.js";
72
72
  import "./help-format-B2DRdx98.js";
73
73
  import "./progress-DkVYFLij.js";
74
74
  import "./replies-FXlmpJVO.js";
75
- import "./prompt-style-DxKPs6E0.js";
75
+ import "./prompt-style-Rmj3c-Ir.js";
76
76
  import "./pairing-labels-BCM1S2e_.js";
77
- import { t as runTui } from "./tui-DCimzH-j.js";
77
+ import { t as runTui } from "./tui-CLXEsHbW.js";
78
78
 
79
79
  //#region src/cli/tui-cli.ts
80
80
  function registerTuiCli(program) {
@@ -2,7 +2,7 @@ import { _ as resolveStateDir, u as resolveGatewayPort } from "./paths-C9FmTW1x.
2
2
  import { U as theme, v as pathExists } from "./agent-paths-DmOVZE7g.js";
3
3
  import { $l as runCommandWithTimeout, Mn as writeConfigFile, co as parseSemver, dd as formatCliCommand, fd as replaceCliName, kn as readConfigFileSnapshot, pd as resolveCliName, po as resolveFasedAgentPackageRoot } from "./agent-scope-DHrLr5OF.js";
4
4
  import "./commands-registry-BRvZQ1jh.js";
5
- import { gi as trimLogTail } from "./reply-C-KlztgC.js";
5
+ import { gi as trimLogTail } from "./reply-B034LmuD.js";
6
6
  import { d as defaultRuntime } from "./errors-Dx3S3Nrp.js";
7
7
  import "./send-C5_fB8YQ.js";
8
8
  import "./send-jxmRy65D.js";
@@ -37,7 +37,7 @@ import "./ssrf-Blf4NrHS.js";
37
37
  import "./outbound-attachment-CsXJwFsg.js";
38
38
  import "./fetch-CnCPOuq7.js";
39
39
  import "./delivery-queue-DKRjVFlq.js";
40
- import "./deps-DXHMO1Yj.js";
40
+ import "./deps-BKAIBkcE.js";
41
41
  import "./memory-DDpj0IVA.js";
42
42
  import "./memory-search-BwYkW6_V.js";
43
43
  import "./manager-BmONwMiP.js";
@@ -75,35 +75,35 @@ import "./progress-DZRfIFVb.js";
75
75
  import "./replies-Do40G8fO.js";
76
76
  import "./skills-remote-BghdrdFV.js";
77
77
  import "./skill-commands-QW8zKXC_.js";
78
- import { a as stylePromptMessage } from "./prompt-style-Wxki8rmI.js";
78
+ import { i as stylePromptMessage } from "./prompt-style-CWAacuMq.js";
79
79
  import "./pairing-labels-D2yOKhoV.js";
80
- import "./program-context-CRYL81pY.js";
80
+ import "./program-context-CaLlkx1k.js";
81
81
  import "./skills-status-BWP08hYK.js";
82
82
  import { n as inheritOptionFromParent } from "./command-options-DEPpN8NK.js";
83
- import { r as installCompletion } from "./completion-cli-Cszwcu14.js";
83
+ import { r as installCompletion } from "./completion-cli-RlpZaXwm.js";
84
84
  import "./managed-up-BykEd-7K.js";
85
85
  import "./daemon-install-helpers-xM3QqMXu.js";
86
86
  import "./systemd-CmxDYXvt.js";
87
87
  import { t as resolveGatewayService } from "./service-Bsg622jp.js";
88
88
  import "./service-audit-BRLbvcxT.js";
89
89
  import "./shared-Cg_Qr7wd.js";
90
- import { a as terminateStaleGatewayPids, i as renderRestartDiagnostics, o as waitForGatewayHealthyRestart, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-D99T8qck.js";
90
+ import { a as terminateStaleGatewayPids, i as renderRestartDiagnostics, o as waitForGatewayHealthyRestart, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-cyqRsnTF.js";
91
91
  import "./diagnostics-BkyuWtqz.js";
92
92
  import { t as renderTable } from "./table-DQLeG14F.js";
93
- import "./health-DkKBhl0x.js";
94
- import "./heartbeat-runner-B9_owa4e.js";
93
+ import "./health-kF4U3o3b.js";
94
+ import "./heartbeat-runner-CJP5uO8S.js";
95
95
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, d as formatUpdateChannelLabel, g as resolveUpdateChannelDisplay, h as resolveEffectiveUpdateChannel, m as normalizeUpdateChannel, n as compareSemverStrings, r as fetchNpmTagVersion, s as DEFAULT_GIT_CHANNEL, t as checkUpdateStatus, u as channelToNpmTag } from "./update-check-xTT04LKM.js";
96
96
  import "./logging-Dv2wthF_.js";
97
97
  import "./installs-DDbnXe4x.js";
98
98
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-Dew6hqdf.js";
99
99
  import "./channels-status-issues-DYs3uRFt.js";
100
100
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-BPiwyBsT.js";
101
- import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-DA8lIKi7.js";
102
- import "./note-DrwZGnSu.js";
103
- import "./doctor-config-flow-Cd9O0xNE.js";
104
- import "./systemd-linger-9E60sw1j.js";
101
+ import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-CUbpiOBD.js";
102
+ import "./note-DwkETqd-.js";
103
+ import "./doctor-config-flow-Ceaz-Gkk.js";
104
+ import "./systemd-linger-BTw_D-6k.js";
105
105
  import "./health-format-BGbDYfmf.js";
106
- import { a as ensureCompletionCacheExists, i as checkShellCompletionStatus, n as doctorCommand, r as runPostUpdateDoctorRepair, t as selectStyled } from "./prompt-select-styled-Ixt2Vxqr.js";
106
+ import { a as ensureCompletionCacheExists, i as checkShellCompletionStatus, n as doctorCommand, r as runPostUpdateDoctorRepair, t as selectStyled } from "./prompt-select-styled-DVwrrZSb.js";
107
107
  import os from "node:os";
108
108
  import path from "node:path";
109
109
  import fs from "node:fs/promises";
@@ -2,7 +2,7 @@ import { Cu as formatCliCommand, Qt as readConfigFileSnapshot, Tu as resolveCliN
2
2
  import { H as theme, _ as pathExists } from "./agent-paths-BI1hx-tF.js";
3
3
  import "./send-D7X0_iFp.js";
4
4
  import "./send-BFEd4vCM.js";
5
- import { Kr as trimLogTail } from "./model-catalog--SvucuO6.js";
5
+ import { Kr as trimLogTail } from "./model-catalog-ex4Cpln_.js";
6
6
  import "./github-copilot-token-A9DiaCB0.js";
7
7
  import { A as defaultRuntime, Ct as resolveStateDir, gt as resolveGatewayPort } from "./entry.js";
8
8
  import "./reply-prefix-TUhpEtvr.js";
@@ -45,7 +45,7 @@ import "./send-C-su1wPZ.js";
45
45
  import "./outbound-attachment-Bh4FmcYg.js";
46
46
  import "./fetch-BVvWzHT_.js";
47
47
  import "./delivery-queue-55Cityuq.js";
48
- import "./deps-5vuaH16V.js";
48
+ import "./deps-BWo3ls9h.js";
49
49
  import "./frontmatter-D2UNJikU.js";
50
50
  import "./skills-Dis31awJ.js";
51
51
  import "./skills-remote-CIAB0AXm.js";
@@ -73,13 +73,13 @@ import "./cli-utils-XevKf-tr.js";
73
73
  import { t as formatHelpExamples } from "./help-format-B2DRdx98.js";
74
74
  import "./progress-DkVYFLij.js";
75
75
  import "./replies-FXlmpJVO.js";
76
- import { a as stylePromptMessage } from "./prompt-style-DxKPs6E0.js";
76
+ import { i as stylePromptMessage } from "./prompt-style-Rmj3c-Ir.js";
77
77
  import "./pairing-labels-BCM1S2e_.js";
78
78
  import "./skills-status-Uo2v4O19.js";
79
79
  import { n as inheritOptionFromParent } from "./command-options-j8s8APBQ.js";
80
- import { r as installCompletion } from "./completion-cli-cirX46xi.js";
81
- import "./register.subclis-D76pTHAo.js";
82
- import "./command-registry-DH2g-1VS.js";
80
+ import { r as installCompletion } from "./completion-cli-Btcmy2ZS.js";
81
+ import "./register.subclis-C3yGp0vO.js";
82
+ import "./command-registry-Bs12xiCA.js";
83
83
  import "./program-context-CDFrVtWb.js";
84
84
  import "./managed-up-DhYefvn4.js";
85
85
  import "./daemon-install-helpers-BB0qUcut.js";
@@ -87,23 +87,23 @@ import "./systemd-B8OPQXFR.js";
87
87
  import { t as resolveGatewayService } from "./service-2JBjv-ge.js";
88
88
  import "./service-audit-COK5O0cM.js";
89
89
  import "./shared-CACaO8zY.js";
90
- import { a as terminateStaleGatewayPids, i as renderRestartDiagnostics, o as waitForGatewayHealthyRestart, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-DwEfnmS3.js";
90
+ import { a as terminateStaleGatewayPids, i as renderRestartDiagnostics, o as waitForGatewayHealthyRestart, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-DiuXEPjO.js";
91
91
  import "./diagnostics-CqDqfqR_.js";
92
92
  import { t as renderTable } from "./table-C0Mj2A8W.js";
93
- import "./health-CK5_7SB-.js";
94
- import "./heartbeat-runner-C_SzC_tK.js";
93
+ import "./health-DW5NMpNI.js";
94
+ import "./heartbeat-runner-BnDruNG2.js";
95
95
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, d as formatUpdateChannelLabel, g as resolveUpdateChannelDisplay, h as resolveEffectiveUpdateChannel, m as normalizeUpdateChannel, n as compareSemverStrings, r as fetchNpmTagVersion, s as DEFAULT_GIT_CHANNEL, t as checkUpdateStatus, u as channelToNpmTag } from "./update-check-B8tvVfAm.js";
96
96
  import "./logging-DZ32I_SP.js";
97
97
  import "./installs-Cha8QIzO.js";
98
98
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-D4rhRm3D.js";
99
99
  import "./channels-status-issues-BSIStb_F.js";
100
100
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-BZhzEFaJ.js";
101
- import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-YRzVDxMy.js";
102
- import "./note-CLUeye9D.js";
103
- import "./doctor-config-flow-4WutpMTV.js";
104
- import "./systemd-linger-BYFLOJbt.js";
101
+ import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-kVl9uX8I.js";
102
+ import "./note-rV2vspIo.js";
103
+ import "./doctor-config-flow-B-I0osH5.js";
104
+ import "./systemd-linger-BlmGMvvA.js";
105
105
  import "./health-format-DEsFwYbP.js";
106
- import { a as ensureCompletionCacheExists, i as checkShellCompletionStatus, n as doctorCommand, r as runPostUpdateDoctorRepair, t as selectStyled } from "./prompt-select-styled-BzqepcY0.js";
106
+ import { a as ensureCompletionCacheExists, i as checkShellCompletionStatus, n as doctorCommand, r as runPostUpdateDoctorRepair, t as selectStyled } from "./prompt-select-styled-Cj_SHqRt.js";
107
107
  import { spawn, spawnSync } from "node:child_process";
108
108
  import os from "node:os";
109
109
  import path from "node:path";
@@ -1,6 +1,6 @@
1
1
  import { v as pathExists } from "./agent-paths-DmOVZE7g.js";
2
2
  import { $l as runCommandWithTimeout } from "./agent-scope-DHrLr5OF.js";
3
- import { To as resolveControlUiDistIndexPathForRoot, gi as trimLogTail, wo as resolveControlUiDistIndexHealth } from "./reply-C-KlztgC.js";
3
+ import { To as resolveControlUiDistIndexPathForRoot, gi as trimLogTail, wo as resolveControlUiDistIndexHealth } from "./reply-B034LmuD.js";
4
4
  import { c as DEFAULT_PACKAGE_CHANNEL, f as isBetaTag, l as DEV_BRANCH, n as compareSemverStrings, o as detectPackageManager$1, p as isStableTag, s as DEFAULT_GIT_CHANNEL, u as channelToNpmTag } from "./update-check-xTT04LKM.js";
5
5
  import os from "node:os";
6
6
  import path from "node:path";
@@ -1,6 +1,6 @@
1
1
  import { md as runCommandWithTimeout } from "./env-C77feXxI.js";
2
2
  import { _ as pathExists } from "./agent-paths-BI1hx-tF.js";
3
- import { Ja as resolveControlUiDistIndexPathForRoot, Kr as trimLogTail, qa as resolveControlUiDistIndexHealth } from "./model-catalog--SvucuO6.js";
3
+ import { Ja as resolveControlUiDistIndexPathForRoot, Kr as trimLogTail, qa as resolveControlUiDistIndexHealth } from "./model-catalog-ex4Cpln_.js";
4
4
  import { c as DEFAULT_PACKAGE_CHANNEL, f as isBetaTag, l as DEV_BRANCH, n as compareSemverStrings, o as detectPackageManager$1, p as isStableTag, s as DEFAULT_GIT_CHANNEL, u as channelToNpmTag } from "./update-check-B8tvVfAm.js";
5
5
  import os from "node:os";
6
6
  import path from "node:path";
@@ -2,7 +2,7 @@ import "./paths-C9FmTW1x.js";
2
2
  import "./agent-paths-DmOVZE7g.js";
3
3
  import { Gu as WA_WEB_AUTH_DIR, Xu as pickWebChannel, nd as webAuthExists, qu as logWebSelfId } from "./agent-scope-DHrLr5OF.js";
4
4
  import "./commands-registry-BRvZQ1jh.js";
5
- import "./reply-C-KlztgC.js";
5
+ import "./reply-B034LmuD.js";
6
6
  import "./errors-Dx3S3Nrp.js";
7
7
  import "./send-C5_fB8YQ.js";
8
8
  import "./send-jxmRy65D.js";
@@ -37,7 +37,7 @@ import "./ssrf-Blf4NrHS.js";
37
37
  import "./outbound-attachment-CsXJwFsg.js";
38
38
  import "./fetch-CnCPOuq7.js";
39
39
  import "./delivery-queue-DKRjVFlq.js";
40
- import "./deps-DXHMO1Yj.js";
40
+ import "./deps-BKAIBkcE.js";
41
41
  import "./memory-DDpj0IVA.js";
42
42
  import "./memory-search-BwYkW6_V.js";
43
43
  import "./manager-BmONwMiP.js";
@@ -74,9 +74,9 @@ import "./progress-DZRfIFVb.js";
74
74
  import "./replies-Do40G8fO.js";
75
75
  import "./skills-remote-BghdrdFV.js";
76
76
  import "./skill-commands-QW8zKXC_.js";
77
- import "./prompt-style-Wxki8rmI.js";
77
+ import "./prompt-style-CWAacuMq.js";
78
78
  import "./pairing-labels-D2yOKhoV.js";
79
- import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-DRJ_lg4d.js";
79
+ import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-BYwefJub.js";
80
80
  import { n as sendMessageWhatsApp } from "./outbound-DIee7LFn.js";
81
81
  import { i as waitForWaConnection, t as createWaSocket } from "./session-hHLfAOAa.js";
82
82
  import { t as loginWeb } from "./login-C4GMmboz.js";
@@ -2,7 +2,7 @@ import { $ as recordSessionMetaFromInbound, $o as clamp, As as getChildLogger, D
2
2
  import "./github-copilot-token-CNsqwfnE.js";
3
3
  import "./send-CFSRf7De.js";
4
4
  import "./send-gtmn6YeH.js";
5
- import { A as formatDurationPrecise, C as resolveInboundDebounceMs, D as getReplyFromConfig, E as createDedupeCache, J as hasControlCommand, O as normalizeGroupActivation, R as registerUnhandledRejectionHandler, S as createInboundDebouncer, T as resolveEnvelopeFormatOptions, X as buildMentionRegexes, Y as shouldComputeCommandAuthorized, Z as normalizeMentionText, _ as resolveDmGroupAccessWithCommandGate, b as dispatchReplyWithBufferedBlockDispatcher, c as buildPairingReply, d as buildHistoryContextFromEntries, f as recordPendingHistoryEntryIfEnabled, g as readStoreAllowFromForDmPolicy, h as warnMissingProviderGroupPolicyFallbackOnce, j as enqueueSystemEvent, k as parseActivationCommand, l as resolveMentionGating, m as resolveOpenProviderRuntimeGroupPolicy, o as computeBackoff, p as resolveDefaultGroupPolicy, s as sleepWithAbort, u as DEFAULT_GROUP_HISTORY_LIMIT, v as resolveDmGroupAccessWithLists, w as formatInboundEnvelope, y as shouldAckReactionForWhatsApp } from "./pi-embedded-BS0sTNPV.js";
5
+ import { A as formatDurationPrecise, C as resolveInboundDebounceMs, D as getReplyFromConfig, E as createDedupeCache, J as hasControlCommand, O as normalizeGroupActivation, R as registerUnhandledRejectionHandler, S as createInboundDebouncer, T as resolveEnvelopeFormatOptions, X as buildMentionRegexes, Y as shouldComputeCommandAuthorized, Z as normalizeMentionText, _ as resolveDmGroupAccessWithCommandGate, b as dispatchReplyWithBufferedBlockDispatcher, c as buildPairingReply, d as buildHistoryContextFromEntries, f as recordPendingHistoryEntryIfEnabled, g as readStoreAllowFromForDmPolicy, h as warnMissingProviderGroupPolicyFallbackOnce, j as enqueueSystemEvent, k as parseActivationCommand, l as resolveMentionGating, m as resolveOpenProviderRuntimeGroupPolicy, o as computeBackoff, p as resolveDefaultGroupPolicy, s as sleepWithAbort, u as DEFAULT_GROUP_HISTORY_LIMIT, v as resolveDmGroupAccessWithLists, w as formatInboundEnvelope, y as shouldAckReactionForWhatsApp } from "./pi-embedded-CeuBUTjd.js";
6
6
  import { c as resolveIdentityNamePrefix, l as resolveMessagePrefix, t as createReplyPrefixOptions } from "./reply-prefix-Bitnsmpd.js";
7
7
  import "./diagnostic-_BiQ6GgD.js";
8
8
  import "./diagnostic-session-state-CL_QxyRg.js";
@@ -10,7 +10,7 @@ import { t as redactIdentifier } from "./redact-identifier-CA9VAhZA.js";
10
10
  import { J as toLocationContext, q as formatLocationText, tt as upsertChannelPairingRequest } from "./send-C3B8eaL_.js";
11
11
  import { m as getAgentScopedMediaLocalRoots, n as loadWebMedia } from "./media-B1OiuFFn.js";
12
12
  import "./pi-model-discovery-DsJSYjlQ.js";
13
- import "./paths-DuymR5Rg.js";
13
+ import "./paths-Bzz-O3FX.js";
14
14
  import "./ssrf-9SwDSKOO.js";
15
15
  import { n as redactSensitiveUrlLikeString } from "./redact-sensitive-url-DAsCH1Zm.js";
16
16
  import "./path-alias-guards-B_y00xGw.js";
@@ -2,7 +2,7 @@ import { au as logWebSelfId, cu as pickWebChannel, mu as webAuthExists, ru as WA
2
2
  import "./agent-paths-BI1hx-tF.js";
3
3
  import "./send-D7X0_iFp.js";
4
4
  import "./send-BFEd4vCM.js";
5
- import "./model-catalog--SvucuO6.js";
5
+ import "./model-catalog-ex4Cpln_.js";
6
6
  import "./github-copilot-token-A9DiaCB0.js";
7
7
  import "./reply-prefix-TUhpEtvr.js";
8
8
  import "./memory-2keYbXkc.js";
@@ -44,7 +44,7 @@ import "./send-C-su1wPZ.js";
44
44
  import "./outbound-attachment-Bh4FmcYg.js";
45
45
  import "./fetch-BVvWzHT_.js";
46
46
  import "./delivery-queue-55Cityuq.js";
47
- import "./deps-5vuaH16V.js";
47
+ import "./deps-BWo3ls9h.js";
48
48
  import "./frontmatter-D2UNJikU.js";
49
49
  import "./skills-Dis31awJ.js";
50
50
  import "./skills-remote-CIAB0AXm.js";
@@ -71,11 +71,11 @@ import "./cli-utils-XevKf-tr.js";
71
71
  import "./help-format-B2DRdx98.js";
72
72
  import "./progress-DkVYFLij.js";
73
73
  import "./replies-FXlmpJVO.js";
74
- import "./prompt-style-DxKPs6E0.js";
74
+ import "./prompt-style-Rmj3c-Ir.js";
75
75
  import "./pairing-labels-BCM1S2e_.js";
76
76
  import { n as sendMessageWhatsApp } from "./outbound-J0QDqY1V.js";
77
77
  import { i as waitForWaConnection, t as createWaSocket } from "./session-CU97gi8v.js";
78
- import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-B_R-iuZ6.js";
78
+ import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-Do7PfpgZ.js";
79
79
  import { t as loginWeb } from "./login-CuawnITW.js";
80
80
 
81
81
  export { WA_WEB_AUTH_DIR, createWaSocket, logWebSelfId, loginWeb, monitorWebChannel, monitorWebInbox, pickWebChannel, sendMessageWhatsApp, waitForWaConnection, webAuthExists };
@@ -2,7 +2,7 @@ import { $ as loadSessionStore, $a as DEFAULT_MAIN_KEY, Es as shouldLogVerbose,
2
2
  import "./github-copilot-token-DYrFvncE.js";
3
3
  import "./send-vR6HwT94.js";
4
4
  import "./send-BQMxv218.js";
5
- import { A as formatDurationPrecise, C as resolveInboundDebounceMs, D as getReplyFromConfig, E as createDedupeCache, J as hasControlCommand, O as normalizeGroupActivation, R as registerUnhandledRejectionHandler, S as createInboundDebouncer, T as resolveEnvelopeFormatOptions, X as buildMentionRegexes, Y as shouldComputeCommandAuthorized, Z as normalizeMentionText, _ as resolveDmGroupAccessWithCommandGate, b as dispatchReplyWithBufferedBlockDispatcher, c as buildPairingReply, d as buildHistoryContextFromEntries, f as recordPendingHistoryEntryIfEnabled, g as readStoreAllowFromForDmPolicy, h as warnMissingProviderGroupPolicyFallbackOnce, j as enqueueSystemEvent, k as parseActivationCommand, l as resolveMentionGating, m as resolveOpenProviderRuntimeGroupPolicy, o as computeBackoff, p as resolveDefaultGroupPolicy, s as sleepWithAbort, u as DEFAULT_GROUP_HISTORY_LIMIT, v as resolveDmGroupAccessWithLists, w as formatInboundEnvelope, y as shouldAckReactionForWhatsApp } from "./pi-embedded-IQzv6URS.js";
5
+ import { A as formatDurationPrecise, C as resolveInboundDebounceMs, D as getReplyFromConfig, E as createDedupeCache, J as hasControlCommand, O as normalizeGroupActivation, R as registerUnhandledRejectionHandler, S as createInboundDebouncer, T as resolveEnvelopeFormatOptions, X as buildMentionRegexes, Y as shouldComputeCommandAuthorized, Z as normalizeMentionText, _ as resolveDmGroupAccessWithCommandGate, b as dispatchReplyWithBufferedBlockDispatcher, c as buildPairingReply, d as buildHistoryContextFromEntries, f as recordPendingHistoryEntryIfEnabled, g as readStoreAllowFromForDmPolicy, h as warnMissingProviderGroupPolicyFallbackOnce, j as enqueueSystemEvent, k as parseActivationCommand, l as resolveMentionGating, m as resolveOpenProviderRuntimeGroupPolicy, o as computeBackoff, p as resolveDefaultGroupPolicy, s as sleepWithAbort, u as DEFAULT_GROUP_HISTORY_LIMIT, v as resolveDmGroupAccessWithLists, w as formatInboundEnvelope, y as shouldAckReactionForWhatsApp } from "./pi-embedded-Bnuo5tPq.js";
6
6
  import "./diagnostic-D6XQAXl4.js";
7
7
  import "./diagnostic-session-state-CexmAKza.js";
8
8
  import { t as redactIdentifier } from "./redact-identifier-Cy6Tnhkn.js";
@@ -1,6 +1,6 @@
1
1
  import "./github-copilot-token-Dy7Y_jbI.js";
2
2
  import { As as shouldLogVerbose, Ba as resolveGroupSessionKey, Ci as webAuthExists, Co as DEFAULT_MAIN_KEY, Cs as toWhatsappJid, D as readSessionUpdatedAt, E as loadSessionStore, Eo as buildGroupHistoryKey, Ia as resolveChannelGroupPolicy, Is as getChildLogger, La as resolveChannelGroupRequireMention, O as recordSessionMetaFromInbound, Oo as normalizeAgentId, Os as logVerbose, _i as pickWebChannel, as as clamp, di as resolveWhatsAppAccount, fi as WA_WEB_AUTH_DIR, fs as isSelfChatMode, ft as resolveStorePath, gs as resolveJidToE164, k as updateLastRoute, mi as logWebSelfId, ms as normalizeE164, n as createSubsystemLogger, ns as formatCliCommand, pi as getWebAuthAgeMs, ps as jidToE164, qo as defaultRuntime, vt as loadConfig, wo as buildAgentMainSessionKey, xs as sleep, yi as readWebSelfId } from "./paths-OUJyk-5R.js";
3
- import { $ as parseActivationCommand, C as createInboundDebouncer, D as createDedupeCache, E as resolveEnvelopeFormatOptions, G as shouldComputeCommandAuthorized, J as registerUnhandledRejectionHandler, K as buildMentionRegexes, O as getReplyFromConfig, Q as normalizeGroupActivation, T as formatInboundEnvelope, W as hasControlCommand, _ as resolveDmGroupAccessWithCommandGate, b as shouldAckReactionForWhatsApp, c as buildPairingReply, d as buildHistoryContextFromEntries, et as formatDurationPrecise, f as recordPendingHistoryEntryIfEnabled, g as readStoreAllowFromForDmPolicy, h as warnMissingProviderGroupPolicyFallbackOnce, l as resolveMentionGating, m as resolveOpenProviderRuntimeGroupPolicy, o as computeBackoff, p as resolveDefaultGroupPolicy, q as normalizeMentionText, s as sleepWithAbort, tt as enqueueSystemEvent, u as DEFAULT_GROUP_HISTORY_LIMIT, v as resolveDmGroupAccessWithLists, w as resolveInboundDebounceMs, x as dispatchReplyWithBufferedBlockDispatcher } from "./auth-DtTjcdsn.js";
3
+ import { $ as parseActivationCommand, C as createInboundDebouncer, D as createDedupeCache, E as resolveEnvelopeFormatOptions, G as shouldComputeCommandAuthorized, J as registerUnhandledRejectionHandler, K as buildMentionRegexes, O as getReplyFromConfig, Q as normalizeGroupActivation, T as formatInboundEnvelope, W as hasControlCommand, _ as resolveDmGroupAccessWithCommandGate, b as shouldAckReactionForWhatsApp, c as buildPairingReply, d as buildHistoryContextFromEntries, et as formatDurationPrecise, f as recordPendingHistoryEntryIfEnabled, g as readStoreAllowFromForDmPolicy, h as warnMissingProviderGroupPolicyFallbackOnce, l as resolveMentionGating, m as resolveOpenProviderRuntimeGroupPolicy, o as computeBackoff, p as resolveDefaultGroupPolicy, q as normalizeMentionText, s as sleepWithAbort, tt as enqueueSystemEvent, u as DEFAULT_GROUP_HISTORY_LIMIT, v as resolveDmGroupAccessWithLists, w as resolveInboundDebounceMs, x as dispatchReplyWithBufferedBlockDispatcher } from "./auth-BbQxXxtt.js";
4
4
  import "./send-D96gGRQz.js";
5
5
  import "./send-BFoI9HuU.js";
6
6
  import "./skill-commands-DvoCSQnx.js";
@@ -1,5 +1,5 @@
1
1
  import { p as getActivePluginRegistry } from "./env-C77feXxI.js";
2
- import { c as loadFasedAgentPlugins, qn as createWebSearchProviderToolDefinition } from "./model-catalog--SvucuO6.js";
2
+ import { c as loadFasedAgentPlugins, qn as createWebSearchProviderToolDefinition } from "./model-catalog-ex4Cpln_.js";
3
3
 
4
4
  //#region src/plugins/web-search-providers.shared.ts
5
5
  function compareWebSearchProvidersAlphabetically(left, right) {
@@ -1,5 +1,5 @@
1
1
  import { U as getActivePluginRegistry } from "./agent-scope-DHrLr5OF.js";
2
- import { Nt as loadFasedAgentPlugins, gr as createWebSearchProviderToolDefinition } from "./reply-C-KlztgC.js";
2
+ import { Nt as loadFasedAgentPlugins, gr as createWebSearchProviderToolDefinition } from "./reply-B034LmuD.js";
3
3
 
4
4
  //#region src/plugins/web-search-providers.shared.ts
5
5
  function compareWebSearchProvidersAlphabetically(left, right) {
@@ -27,6 +27,50 @@ network. The intended pattern is loopback-first: keep the gateway on
27
27
  - keep `gateway.bind: "loopback"` unless you need a direct tailnet bind
28
28
  - use `funnel` only when you truly need public ingress
29
29
 
30
+ ## Other VPNs and Mullvad
31
+
32
+ For Fased hosted setup, do not run another VPN beside Tailscale while verifying
33
+ dashboard and SSH access. Shut down Mullvad, Proton VPN, NordVPN, corporate VPN
34
+ clients, browser VPNs, and device-level VPN apps before you start the hosted
35
+ installer or before you confirm Tailscale SSH. Other VPNs often change firewall
36
+ rules, DNS behavior, or routes in ways that break MagicDNS, `tailscale ping`,
37
+ or `ssh app@YOUR_VPS_TAILSCALE_NAME`.
38
+
39
+ If you need Mullvad privacy while using Tailscale, use Tailscale's paid
40
+ **Mullvad VPN add-on**. In Tailscale docs this is called **Mullvad exit nodes**:
41
+ Mullvad servers appear as Tailscale exit nodes in your tailnet. This is not a
42
+ Fased plugin and not a local package to install.
43
+
44
+ What it supports:
45
+
46
+ - **Supported VPN provider:** Mullvad only.
47
+ - **Not covered:** Proton VPN, NordVPN, corporate VPNs, browser VPNs, or other
48
+ VPN providers.
49
+ - **Where to enable:** Tailscale admin console.
50
+ - **Where to choose a region/server:** the Tailscale client, after the device is
51
+ granted Mullvad access.
52
+
53
+ Basic setup:
54
+
55
+ 1. Open the Tailscale admin console.
56
+ 2. Go to **Settings > General**.
57
+ 3. Scroll to **Mullvad VPN** and select **Configure**.
58
+ 4. Complete the checkout flow for Mullvad licenses.
59
+ 5. Add the devices that should use Mullvad exit nodes, or manage access through
60
+ the tailnet policy file with the `mullvad` node attribute.
61
+ 6. On the local computer, open the Tailscale client and select a Mullvad exit
62
+ node.
63
+
64
+ For current Mullvad regions and servers, use the Mullvad server list linked
65
+ from Tailscale's Mullvad exit-node documentation. If your location is not
66
+ available there, the Tailscale add-on will not make it available in Fased.
67
+
68
+ References:
69
+
70
+ - Tailscale: [Can I use Tailscale alongside other VPNs?](https://tailscale.com/docs/reference/faq/other-vpns)
71
+ - Tailscale: [Mullvad exit nodes](https://tailscale.com/docs/features/exit-nodes/mullvad-exit-nodes)
72
+ - Mullvad: [Servers](https://mullvad.net/servers)
73
+
30
74
  ## First-time setup
31
75
 
32
76
  For a hosted VPS, use the normal hosted installer. It starts Tailscale on the
@@ -152,9 +152,15 @@ recovery options and VPS provider console access working.
152
152
  That is the computer where you will open the dashboard and run SSH checks.
153
153
  Before you start the remote VPS installer, shut down local VPNs such as
154
154
  Mullvad, Proton VPN, NordVPN, corporate VPN clients, and browser/device VPN
155
- apps. Other VPNs can override DNS, firewall rules, or the `100.64.0.0/10`
156
- address range that Tailscale uses. Re-enable them only after Tailscale SSH
157
- and the dashboard work, and use split tunneling if that VPN must stay on.
155
+ apps. For Fased hosted setup, do not run another VPN beside Tailscale while
156
+ verifying dashboard and SSH access. Other VPNs can override DNS, firewall
157
+ rules, or the `100.64.0.0/10` address range that Tailscale uses.
158
+
159
+ If you need Mullvad-style privacy while using Tailscale, use Tailscale's
160
+ paid Mullvad VPN add-on instead of running the Mullvad app beside
161
+ Tailscale. That add-on supports Mullvad only; it does not cover Proton,
162
+ NordVPN, corporate VPN clients, or other VPN providers. See
163
+ [Other VPNs and Mullvad](/gateway/tailscale#other-vpns-and-mullvad).
158
164
 
159
165
  <Tabs>
160
166
  <Tab title="Windows">
@@ -325,8 +331,14 @@ recovery options and VPS provider console access working.
325
331
  cannot connect to local `tailscaled`, the local Tailscale service is not
326
332
  running; start it and sign in before continuing. A separate VPN on your own
327
333
  computer can interfere with Tailscale DNS or routing. Turn the other VPN off
328
- for the cleanest setup. If it must stay on, use the `100.x.x.x` Tailscale IP
329
- instead of the hostname.
334
+ for hosted setup. If it must stay on later, use the `100.x.x.x` Tailscale IP
335
+ instead of the hostname and configure split tunneling in that VPN.
336
+
337
+ If the VPN you want is Mullvad, prefer Tailscale's paid Mullvad VPN add-on
338
+ instead of running the Mullvad desktop/mobile VPN app beside Tailscale. The
339
+ add-on is enabled in the Tailscale admin console, then granted to devices;
340
+ it supports Mullvad only. See
341
+ [Other VPNs and Mullvad](/gateway/tailscale#other-vpns-and-mullvad).
330
342
 
331
343
  If `tailscale ping 100.x.x.x` works but
332
344
  `ssh app@YOUR_VPS_TAILSCALE_NAME` fails with a hostname/DNS error,
@@ -605,6 +617,15 @@ Use this order for a new install:
605
617
  Successful installation means Fased is installed. It does not replace the
606
618
  setup checks for chat apps, services, wallets, mining, or network roles.
607
619
 
620
+ For a hosted VPS, keep your local computer signed into Tailscale whenever you
621
+ need the hosted dashboard or `ssh app@YOUR_VPS_TAILSCALE_NAME`. If the
622
+ dashboard or SSH stops working after you re-enable another VPN, turn that VPN
623
+ off and test `tailscale status`, `tailscale ping`, and the `100.x.x.x`
624
+ Tailscale IP. For Mullvad, use Tailscale's paid Mullvad VPN add-on/Mullvad exit
625
+ nodes instead of running the Mullvad VPN app beside Tailscale. The add-on is
626
+ Mullvad-only; other VPN providers still need their own split-tunnel or firewall
627
+ workaround.
628
+
608
629
  ## Troubleshooting: `fased` not found
609
630
 
610
631
  <Accordion title="PATH diagnosis and fix">