@symerian/symi 2.7.7 → 2.7.9

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 (410) hide show
  1. package/dist/{acp-cli-DLsBwWlS.js → acp-cli-DwKj-AqM.js} +3 -3
  2. package/dist/{acp-cli-CeN5gs7J.js → acp-cli-lkOF8AeX.js} +3 -3
  3. package/dist/{agents-CCeOMXJF.js → agents-Qr0BDw_h.js} +7 -7
  4. package/dist/{agents.config-AdyGWyGd.js → agents.config-D0ih9tP3.js} +1 -1
  5. package/dist/{agents.config-B8-mSnnL.js → agents.config-DIjsIDbS.js} +1 -1
  6. package/dist/{audio-preflight-BUoEMkmr.js → audio-preflight-D0nJ1LEt.js} +7 -7
  7. package/dist/{audio-preflight-3Wa38hZz.js → audio-preflight-DJXj9QP9.js} +13 -13
  8. package/dist/{audio-preflight-Bsa1_iU3.js → audio-preflight-D_g9Duqw.js} +7 -7
  9. package/dist/{audio-preflight-C45lDI-t.js → audio-preflight-DfALITTK.js} +13 -13
  10. package/dist/{audit-DD5qcj2W.js → audit-DVUHZrf4.js} +7 -7
  11. package/dist/{audit-G3JpLuYZ.js → audit-DgAM_dWL.js} +7 -7
  12. package/dist/{auth-choice-B97lJuV1.js → auth-choice-DhI8MW-5.js} +4 -4
  13. package/dist/{auth-choice-BkF4yNXk.js → auth-choice-PdYn-qiM.js} +4 -4
  14. package/dist/{banner-kmyj39fQ.js → banner-BQhYK_Ag.js} +1 -1
  15. package/dist/{browser-cli-LlkXk8qz.js → browser-cli-CQKRSqbb.js} +4 -4
  16. package/dist/{browser-cli-DPAw_dFl.js → browser-cli-ClxJjz9C.js} +4 -4
  17. package/dist/build-info.json +3 -3
  18. package/dist/bundled/boot-md/handler.js +16 -16
  19. package/dist/bundled/session-memory/handler.js +16 -16
  20. package/dist/{call-ple9aZCT.js → call-BrRWr7Lj.js} +2 -1
  21. package/dist/{call-CtiVeyeQ.js → call-CVqBgwrx.js} +2 -1
  22. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  23. package/dist/{catalog-NQ4pj9RI.js → catalog-DX1l43Ru.js} +1 -1
  24. package/dist/{catalog-DLQFKucJ.js → catalog-buoA8ik4.js} +1 -1
  25. package/dist/{channel-options-7M72jx9S.js → channel-options-CFwo8sFR.js} +2 -2
  26. package/dist/{channel-options-CWyYAyJ8.js → channel-options-ZHpChVVk.js} +2 -2
  27. package/dist/{channel-web-DNYIZGo5.js → channel-web-UmRhDGhI.js} +7 -7
  28. package/dist/{channels-cli-BbbQhLVm.js → channels-cli-CRDgQtex.js} +34 -34
  29. package/dist/{channels-cli-CIApZn8b.js → channels-cli-rzQvsXSw.js} +35 -35
  30. package/dist/{chrome-CDPH3KAn.js → chrome-BJvuH-NZ.js} +1 -1
  31. package/dist/{chrome-Cs57nwfJ.js → chrome-BUT--ob3.js} +1 -1
  32. package/dist/{chrome-PSMCM7XH.js → chrome-C08Z0XAa.js} +1 -1
  33. package/dist/{chrome-CWdu8vA2.js → chrome-D2ohnA09.js} +1 -1
  34. package/dist/cli/daemon-cli.js +1 -1
  35. package/dist/{cli-BdYpv3II.js → cli-CC9jaj6w.js} +28 -28
  36. package/dist/{cli-Chwue7dC.js → cli-DN6fX0Xu.js} +29 -29
  37. package/dist/{command-registry-X9-mDiVG.js → command-registry-qqb2gJ4P.js} +11 -11
  38. package/dist/{completion-cli-CKRgTAVA.js → completion-cli-BX_yaiom.js} +1 -1
  39. package/dist/{completion-cli-C6CUvtmX.js → completion-cli-g-Vdnude.js} +2 -2
  40. package/dist/{config-1z3NlJzC.js → config-BAVNLbja.js} +1 -1
  41. package/dist/{config-CnQmFG2h.js → config-BkZ9HOKT.js} +1 -1
  42. package/dist/{config-XZ7orePK.js → config-DXt3pc08.js} +1 -1
  43. package/dist/{config-Cz_ObCzY.js → config-PXAJCHa5.js} +1 -1
  44. package/dist/{config-cli-CsqLGGPo.js → config-cli-CnFTSv-1.js} +3 -3
  45. package/dist/{config-cli-mWb-8dem.js → config-cli-CsCvDCZV.js} +3 -3
  46. package/dist/{config-guard-C7V44mcM.js → config-guard-CJ4iAPK5.js} +2 -2
  47. package/dist/{config-guard-NmACsPTr.js → config-guard-DsOhmFl6.js} +6 -6
  48. package/dist/{config-validation-Cp9cMMJA.js → config-validation-BvAfeukQ.js} +1 -1
  49. package/dist/{config-validation-DpNRQ6U4.js → config-validation-CY8IJG3b.js} +1 -1
  50. package/dist/{configure-C-0GLJbj.js → configure-BYd07Mo5.js} +10 -10
  51. package/dist/{configure-cN-Og45p.js → configure-CAuW3YmR.js} +10 -10
  52. package/dist/{control-service-CSbQSkSn.js → control-service-Ce4HMDRY.js} +4 -4
  53. package/dist/{control-service-Cqck1Zry.js → control-service-D0IdaeI8.js} +4 -4
  54. package/dist/control-ui/css/style.css +213 -6
  55. package/dist/control-ui/index.html +24 -2
  56. package/dist/control-ui/js/connections.js +193 -40
  57. package/dist/{cron-cli-CnWIltKL.js → cron-cli--z6DSGhk.js} +4 -4
  58. package/dist/{cron-cli-DLn4ynWB.js → cron-cli-DZJZ_EvY.js} +4 -4
  59. package/dist/{daemon-cli-DGXcyiDn.js → daemon-cli-B9yneKpO.js} +6 -6
  60. package/dist/{daemon-cli-BUO3va5K.js → daemon-cli-bwFAShzf.js} +6 -6
  61. package/dist/daemon-cli.js +3 -1
  62. package/dist/{daemon-runtime-BetFDUaM.js → daemon-runtime-BT1zC2PU.js} +1 -1
  63. package/dist/{daemon-runtime-CbbrW5g3.js → daemon-runtime-BV78EN62.js} +1 -1
  64. package/dist/{deliver-BLNOhQLM.js → deliver-B36OzmeP.js} +2 -2
  65. package/dist/{deliver-DFAium1x.js → deliver-BLt_liXS.js} +3 -3
  66. package/dist/{deliver-DGSxISab.js → deliver-CLZGlRZt.js} +2 -2
  67. package/dist/{deliver-Co2XquFO.js → deliver-lG9ITE8w.js} +3 -3
  68. package/dist/{devices-cli-BvMSzdXp.js → devices-cli-fVRpoa9z.js} +3 -3
  69. package/dist/{devices-cli-CCyr0lUw.js → devices-cli-oqibXYae.js} +3 -3
  70. package/dist/{directory-cli-JgFtCkve.js → directory-cli-CQ5O6Z5j.js} +2 -2
  71. package/dist/{directory-cli-CtA0O-ho.js → directory-cli-Ca5P3Bdg.js} +2 -2
  72. package/dist/{dns-cli-ClxFzTrN.js → dns-cli-7lxNoNVz.js} +2 -2
  73. package/dist/{dns-cli-XEIAfGBW.js → dns-cli-HQ5yjLoE.js} +2 -2
  74. package/dist/{docs-cli-BB4yLXGO.js → docs-cli-BOa4OKW4.js} +2 -2
  75. package/dist/{docs-cli-qE-blOLC.js → docs-cli-Dol0VaNr.js} +2 -2
  76. package/dist/{doctor-completion-9YerM5WQ.js → doctor-completion-Cqce5h2X.js} +1 -1
  77. package/dist/{doctor-completion-CctxaDOf.js → doctor-completion-Dqfl4aR1.js} +1 -1
  78. package/dist/{doctor-config-flow-C7EIHqIm.js → doctor-config-flow-C81j0-sE.js} +3 -3
  79. package/dist/{doctor-config-flow-COCO8sJB.js → doctor-config-flow-CN8seKLA.js} +3 -3
  80. package/dist/entry.js +1 -1
  81. package/dist/{exec-approvals-cli-SLQmCzAk.js → exec-approvals-cli-BpOqYXNL.js} +5 -5
  82. package/dist/{exec-approvals-cli-Be49SVlp.js → exec-approvals-cli-DjGZKQbZ.js} +5 -5
  83. package/dist/extensionAPI.js +16 -16
  84. package/dist/{gateway-cli-DFwW91fW.js → gateway-cli-BUqL_Yh6.js} +49 -48
  85. package/dist/{gateway-cli-EspQMxcD.js → gateway-cli-DA1fRZ5w.js} +50 -49
  86. package/dist/{gateway-rpc-D1Oid7kh.js → gateway-rpc-Bp0KNJtL.js} +1 -1
  87. package/dist/{gateway-rpc-BPldxGhH.js → gateway-rpc-XT8cFwtz.js} +1 -1
  88. package/dist/{glass-ui-ws-C9slRAdq.js → glass-ui-ws-BzBtCYP7.js} +39 -39
  89. package/dist/{glass-ui-ws-BCAruY1k.js → glass-ui-ws-Cm-WtdFI.js} +40 -40
  90. package/dist/{health-CUAawozd.js → health-Bx8UUqFA.js} +5 -5
  91. package/dist/{health-uSVTJefC.js → health-C7HtwYDj.js} +5 -5
  92. package/dist/{hooks-cli-NOol1x2D.js → hooks-cli-5G9JN39f.js} +29 -29
  93. package/dist/{hooks-cli-1hn9EEhc.js → hooks-cli-DtVT3wM_.js} +30 -30
  94. package/dist/{image-9tqGkUqf.js → image-BHhzdmbq.js} +2 -2
  95. package/dist/{image-Dopj30W7.js → image-BnO8X_hj.js} +2 -2
  96. package/dist/{image-DFxGwWA7.js → image-DXco5IYt.js} +2 -2
  97. package/dist/{image-Bd9ilPV9.js → image-D_qN_IxA.js} +2 -2
  98. package/dist/index.js +38 -38
  99. package/dist/{lifecycle-core-AeKXuI87.js → lifecycle-core-B9EgW7Tg.js} +2 -2
  100. package/dist/{lifecycle-core-Dpd8ty8k.js → lifecycle-core-JD8GNX_f.js} +2 -2
  101. package/dist/llm-slug-generator.js +16 -16
  102. package/dist/{login-CQTjtlgX.js → login-BgJLYdBR.js} +2 -2
  103. package/dist/{login-CPDAMiNc.js → login-CksRbu5D.js} +2 -2
  104. package/dist/{login-BKjGtdQb.js → login-DiorUpLk.js} +2 -2
  105. package/dist/{login-qr-BnV3nWaD.js → login-qr-B0SnFKfa.js} +3 -3
  106. package/dist/{login-qr-4Pmnupol.js → login-qr-BkwojQSe.js} +3 -3
  107. package/dist/{login-qr-Ca_QjL8s.js → login-qr-COIr6FGZ.js} +3 -3
  108. package/dist/{login-qr-BkqlPQja.js → login-qr-De_4jYaF.js} +3 -3
  109. package/dist/{login-KF21s52V.js → login-tgA4RM8O.js} +2 -2
  110. package/dist/{logs-cli-wAogU3fl.js → logs-cli-gU7p7zX0.js} +4 -4
  111. package/dist/{logs-cli-BLyCHsIE.js → logs-cli-tJPD_Dps.js} +4 -4
  112. package/dist/{manifest-registry-C4BxOMWX.js → manifest-registry-BDSRH8nU.js} +2 -1
  113. package/dist/{manifest-registry-yb7sAlu4.js → manifest-registry-CBCGTsIb.js} +2 -1
  114. package/dist/{manifest-registry-Czr39pxG.js → manifest-registry-D5bnO5uA.js} +2 -1
  115. package/dist/{manifest-registry-D-mTF1cj.js → manifest-registry-DWdYdchb.js} +2 -1
  116. package/dist/{memory-cli-MMLg1Ccf.js → memory-cli-AoMrHA5O.js} +1 -1
  117. package/dist/{memory-cli-CY3CHJS9.js → memory-cli-Bf2sefbp.js} +1 -1
  118. package/dist/{model-catalog-BkurhUo7.js → model-catalog-DKGSg6jF.js} +2 -2
  119. package/dist/{model-catalog-Bkny3qg9.js → model-catalog-Dex2EDUJ.js} +2 -2
  120. package/dist/{model-picker-CkXMb7R4.js → model-picker-D-n-rWyt.js} +2 -2
  121. package/dist/{model-picker-Bl_c2WTt.js → model-picker-RQfDGgfM.js} +2 -2
  122. package/dist/{models-CYqsDjad.js → models-DQthIpnz.js} +8 -8
  123. package/dist/{models-cli-CmU3OOJG.js → models-cli-D8zc0jSg.js} +32 -32
  124. package/dist/{models-cli-mOTgaVlj.js → models-cli-UaHeUaJq.js} +31 -31
  125. package/dist/{models-config-C7LKdahT.js → models-config-B91ShhoT.js} +1 -1
  126. package/dist/{models-config-CPAA0Wkr.js → models-config-J1x_DaPn.js} +1 -1
  127. package/dist/{node-cli-BJ1yRo3F.js → node-cli-jdFJpJym.js} +10 -10
  128. package/dist/{node-cli-dsjkpZpf.js → node-cli-jnHMAtfE.js} +10 -10
  129. package/dist/{nodes-cli-BxLO-rv5.js → nodes-cli-6vHqlpLI.js} +4 -4
  130. package/dist/{nodes-cli-D1Fz0Q2m.js → nodes-cli-DxHMNlWq.js} +4 -4
  131. package/dist/{onboard-Cf49_nCM.js → onboard-C1GtzpAc.js} +7 -7
  132. package/dist/{onboard-channels-CrQDcwVv.js → onboard-channels-CUUTFx1F.js} +3 -3
  133. package/dist/{onboard-channels-CIP2VRJ-.js → onboard-channels-HyGv2y5c.js} +3 -3
  134. package/dist/{onboard-custom-BVNvbjaX.js → onboard-custom-B1paBymW.js} +2 -2
  135. package/dist/{onboard-custom-MKL2uerp.js → onboard-custom-B3CBlZe5.js} +2 -2
  136. package/dist/{onboard-helpers-09M-gWu4.js → onboard-helpers-7H_XiJt-.js} +2 -2
  137. package/dist/{onboard-helpers-B1El5sBR.js → onboard-helpers-CPSKXD5k.js} +2 -2
  138. package/dist/{onboard-remote-DD3wt16B.js → onboard-remote-BlCdyTsP.js} +1 -1
  139. package/dist/{onboard-remote-C9Ftkn3-.js → onboard-remote-DFavRxQ6.js} +1 -1
  140. package/dist/{onboard-skills-kU_Yop1T.js → onboard-skills-CssuFDjw.js} +3 -3
  141. package/dist/{onboard-skills-dmWPtzui.js → onboard-skills-DVtfVPsB.js} +3 -3
  142. package/dist/{onboard-TK9M_DAs.js → onboard-sl1Xputw.js} +7 -7
  143. package/dist/{onboarding-BQUTtbxF.js → onboarding-B4qg0ZYp.js} +10 -10
  144. package/dist/{onboarding-CfG_bJab.js → onboarding-C89rTOOy.js} +10 -10
  145. package/dist/{onboarding.finalize-Dv8-c9UZ.js → onboarding.finalize-CGk4vov2.js} +36 -36
  146. package/dist/{onboarding.finalize-DycOefUd.js → onboarding.finalize-ClJ1HBVt.js} +34 -34
  147. package/dist/{onboarding.gateway-config-LqxG8IjE.js → onboarding.gateway-config-TM8ERKyn.js} +5 -5
  148. package/dist/{onboarding.gateway-config-dLlNI0HQ.js → onboarding.gateway-config-vGTQDqA6.js} +5 -5
  149. package/dist/{outbound-DHoZh3-b.js → outbound-CX-uuDet.js} +1 -1
  150. package/dist/{outbound-BdTCdEPw.js → outbound-Ct6vGE68.js} +1 -1
  151. package/dist/{outbound-neBb4qTL.js → outbound-D6GeeR8F.js} +1 -1
  152. package/dist/{outbound-BfHd69Dr.js → outbound-XakUc977.js} +1 -1
  153. package/dist/{pairing-cli-DOtEC7pl.js → pairing-cli-C8KSZlA7.js} +2 -2
  154. package/dist/{pairing-cli-CG57JnkE.js → pairing-cli-DmISXPhp.js} +2 -2
  155. package/dist/{pi-embedded-lpIsgmb9.js → pi-embedded-BaNpG0Aq.js} +60 -36
  156. package/dist/{pi-embedded-helpers-Bhi5wJBG.js → pi-embedded-helpers-BET359cH.js} +6 -6
  157. package/dist/{pi-embedded-helpers-DaWb-3Gv.js → pi-embedded-helpers-DSscUmkR.js} +1 -1
  158. package/dist/{pi-embedded-helpers-CU7jP5wD.js → pi-embedded-helpers-DcN8GHTt.js} +6 -6
  159. package/dist/{pi-embedded-helpers-BqeG6ogg.js → pi-embedded-helpers-DpOccVre.js} +1 -1
  160. package/dist/{pi-tools.policy-DN0wUEFa.js → pi-tools.policy-BpN-v9bT.js} +2 -2
  161. package/dist/{pi-tools.policy-jD4uEUBo.js → pi-tools.policy-DOVQ8dDx.js} +2 -2
  162. package/dist/{plugin-auto-enable-Dcki5Acl.js → plugin-auto-enable-BsGorrCZ.js} +1 -1
  163. package/dist/{plugin-auto-enable-hvfjAaew.js → plugin-auto-enable-BvmQklg-.js} +1 -1
  164. package/dist/{plugin-registry-BtHWHT4p.js → plugin-registry-7MeuYUTG.js} +2 -2
  165. package/dist/{plugin-registry-1jm5tMNl.js → plugin-registry-Dx8MaVaX.js} +2 -2
  166. package/dist/plugin-sdk/{accounts-BtaOa4z_.js → accounts-BToL3HlP.js} +1 -1
  167. package/dist/plugin-sdk/{accounts-Ddm33hQm.js → accounts-D9zGZU5t.js} +3 -3
  168. package/dist/plugin-sdk/{accounts-s-AdhXVR.js → accounts-Dtszw3Zn.js} +1 -1
  169. package/dist/plugin-sdk/{active-listener-BgwYQkdI.js → active-listener-BRYwA2Ic.js} +1 -1
  170. package/dist/plugin-sdk/{agent-scope-CYYpcO9W.js → agent-scope-C3gMMKCU.js} +2 -2
  171. package/dist/plugin-sdk/agents/pi-embedded-runner/email-capability-prompt.d.ts +11 -0
  172. package/dist/plugin-sdk/{api-key-rotation-DGJZ8SVa.js → api-key-rotation-CBsLb_4V.js} +1 -1
  173. package/dist/plugin-sdk/{audio-preflight-BG_wJSnx.js → audio-preflight-B-Laxbmb.js} +24 -24
  174. package/dist/plugin-sdk/{bindings-C7hRtgYW.js → bindings-BbwoUGPx.js} +2 -2
  175. package/dist/plugin-sdk/{channel-activity-DoC1xtDu.js → channel-activity-Ji7f0gqq.js} +1 -1
  176. package/dist/plugin-sdk/{channel-web-D8iVDOP9.js → channel-web-C6_r-2VI.js} +22 -22
  177. package/dist/plugin-sdk/{chrome-D5HOVhVd.js → chrome-D9kN9org.js} +3 -3
  178. package/dist/plugin-sdk/{chunk-Dw2XBYXv.js → chunk-jvk9axTQ.js} +1 -1
  179. package/dist/plugin-sdk/{command-format-GKSevep4.js → command-format-DSdvQ_M5.js} +1 -1
  180. package/dist/plugin-sdk/{commands-registry-Be2qTyJK.js → commands-registry-By2smfUF.js} +4 -4
  181. package/dist/plugin-sdk/{config-B0RNG4KH.js → config-BzupW6LN.js} +9 -9
  182. package/dist/plugin-sdk/{deliver-BgipoVt6.js → deliver-CNuL0O4P.js} +10 -10
  183. package/dist/plugin-sdk/{diagnostic-W5975qL9.js → diagnostic-EyuCSUXO.js} +1 -1
  184. package/dist/plugin-sdk/{image-F536ZrNo.js → image-BmU8yYnz.js} +4 -4
  185. package/dist/plugin-sdk/{image-ops-BlQR__MN.js → image-ops-Bnp6LXEx.js} +1 -1
  186. package/dist/plugin-sdk/index.js +54 -54
  187. package/dist/plugin-sdk/{ir-BJ6BHE5b.js → ir-Fb3qpcis.js} +4 -4
  188. package/dist/plugin-sdk/{local-roots-BHLNSI8U.js → local-roots-Ckk1QfzI.js} +3 -3
  189. package/dist/plugin-sdk/{login-zRvF566v.js → login-eqtXmx21.js} +7 -7
  190. package/dist/plugin-sdk/{login-qr-DnVmgDSL.js → login-qr-Cbt9KlK3.js} +9 -9
  191. package/dist/plugin-sdk/{manager-UQQc8UDq.js → manager-Dc9yVyTt.js} +8 -8
  192. package/dist/plugin-sdk/{manifest-registry-CPnHl_K3.js → manifest-registry-hy3Bn-r9.js} +3 -2
  193. package/dist/plugin-sdk/{markdown-tables-BoYFajMu.js → markdown-tables-Dfaqilz6.js} +1 -1
  194. package/dist/plugin-sdk/{message-channel-COTAJzHd.js → message-channel-BdI5Ra9S.js} +1 -1
  195. package/dist/plugin-sdk/{model-selection-Bbs4XGPG.js → model-selection-CtVwtb6y.js} +4 -4
  196. package/dist/plugin-sdk/{outbound-ComvEv1j.js → outbound-ZcDVYNoy.js} +7 -7
  197. package/dist/plugin-sdk/{outbound-attachment-CqhMcNuS.js → outbound-attachment-DJ3CI92h.js} +2 -2
  198. package/dist/plugin-sdk/{pi-auth-json-B_aZna6j.js → pi-auth-json-r2U9wDoc.js} +1 -1
  199. package/dist/plugin-sdk/{pi-embedded-helpers-C-iQL8fR.js → pi-embedded-helpers-BCNFLt_H.js} +17 -17
  200. package/dist/plugin-sdk/{plugins-BNByVCIH.js → plugins-BbAvhC25.js} +4 -4
  201. package/dist/plugin-sdk/{pw-ai-oafsM7Z6.js → pw-ai-B3jHOSti.js} +8 -8
  202. package/dist/plugin-sdk/{qmd-manager-BZvD_Hd3.js → qmd-manager-C6GM0Qik.js} +4 -4
  203. package/dist/plugin-sdk/{registry-D0xTnUWt.js → registry--_pGht6S.js} +2 -2
  204. package/dist/plugin-sdk/{replies-Df8hdWHU.js → replies-DkGqfiO4.js} +3 -3
  205. package/dist/plugin-sdk/{reply-BSU5u23A.js → reply-CIDYJYie.js} +105 -81
  206. package/dist/plugin-sdk/{reply-prefix-uxfMZW4p.js → reply-prefix-BHuV5t70.js} +1 -1
  207. package/dist/plugin-sdk/{resolve-outbound-target-BiyAyTWz.js → resolve-outbound-target-BkCUbYGV.js} +2 -2
  208. package/dist/plugin-sdk/{resolve-route-B3CCBumQ.js → resolve-route-D3JH_D2N.js} +3 -3
  209. package/dist/plugin-sdk/{retry-CwQ_iIj8.js → retry-ilSJqnz9.js} +1 -1
  210. package/dist/plugin-sdk/{runner-BlEQTSlO.js → runner-WzrwRCvL.js} +9 -9
  211. package/dist/plugin-sdk/{send-DjUL-5e8.js → send-7NqCWP0r.js} +7 -7
  212. package/dist/plugin-sdk/{send-NmhuhIk0.js → send-BGE1fXlm.js} +6 -6
  213. package/dist/plugin-sdk/{send-DSaRu7CO.js → send-BP5pSPaZ.js} +6 -6
  214. package/dist/plugin-sdk/{send-BGYE1Ojf.js → send-FFUmNt0K.js} +10 -10
  215. package/dist/plugin-sdk/{send-4CJD3HN9.js → send-ZhAe1nXO.js} +10 -10
  216. package/dist/plugin-sdk/{session-CrxOeAtT.js → session-8vfTL_H6.js} +4 -4
  217. package/dist/plugin-sdk/{skill-commands-DSDv-F1f.js → skill-commands-DF3ouLEu.js} +5 -5
  218. package/dist/plugin-sdk/{skills-_yTP47Cd.js → skills-C9DbB-Kp.js} +7 -7
  219. package/dist/plugin-sdk/{sqlite-CxAR5ttJ.js → sqlite-Cq_7Cg4E.js} +1 -1
  220. package/dist/plugin-sdk/{store-BdrNabcU.js → store-Do3t33-c.js} +2 -2
  221. package/dist/plugin-sdk/{subsystem-B2uDN3TV.js → subsystem-Coz2AgU8.js} +1 -1
  222. package/dist/plugin-sdk/{tables-DNwXwNFa.js → tables-DR0NmBeH.js} +1 -1
  223. package/dist/plugin-sdk/{target-errors-Paro1BjP.js → target-errors-B7YyMnIi.js} +2 -2
  224. package/dist/plugin-sdk/{thinking-CXqf7WTe.js → thinking-DCNUIAHY.js} +5 -5
  225. package/dist/plugin-sdk/{tokens-bC3UVmVH.js → tokens-CWMflosr.js} +1 -1
  226. package/dist/plugin-sdk/{tool-images-HJ2sfZDV.js → tool-images-D7Lno-TE.js} +2 -2
  227. package/dist/plugin-sdk/{tool-loop-detection-Dthxc7SC.js → tool-loop-detection-BAUvBvAO.js} +2 -2
  228. package/dist/plugin-sdk/web-CHKraWl6.js +66 -0
  229. package/dist/plugin-sdk/{whatsapp-actions-C_Yw2LhH.js → whatsapp-actions-0DfquiaD.js} +21 -21
  230. package/dist/{plugins-cli-uIEn-Rls.js → plugins-cli-bblxpPhT.js} +31 -31
  231. package/dist/{plugins-cli-DZAESODm.js → plugins-cli-oatWFlGr.js} +30 -30
  232. package/dist/{program-BDFBNGBK.js → program-B4MbPh6k.js} +37 -37
  233. package/dist/{program-context-CIIYbXwz.js → program-context-BfdA1JM9.js} +39 -39
  234. package/dist/{prompt-select-styled-Drqp3Q79.js → prompt-select-styled-DNhjvdZL.js} +15 -15
  235. package/dist/{prompt-select-styled-C5haNrfL.js → prompt-select-styled-bMJTZkj7.js} +15 -15
  236. package/dist/{provider-auth-helpers-rSnpzVFU.js → provider-auth-helpers-CezJXPrZ.js} +2 -2
  237. package/dist/{provider-auth-helpers-C90hxnuP.js → provider-auth-helpers-D9BOiQMP.js} +2 -2
  238. package/dist/{push-apns-DhAfcmF5.js → push-apns-CL2MBhWP.js} +1 -1
  239. package/dist/{push-apns-ze6w0evQ.js → push-apns-DUWtWoB-.js} +1 -1
  240. package/dist/{pw-ai-ePWNGOSp.js → pw-ai-B476LzSK.js} +3 -3
  241. package/dist/{pw-ai-seGb-ko0.js → pw-ai-DE8wmtet.js} +3 -3
  242. package/dist/{pw-ai-BeOKbmWW.js → pw-ai-Df3SCnGC.js} +3 -3
  243. package/dist/{pw-ai-P5lOraHd.js → pw-ai-VRkM0Qt0.js} +3 -3
  244. package/dist/{qr-cli-BIl334kM.js → qr-cli-Bgejiz98.js} +2 -2
  245. package/dist/{qr-cli-CGO65wLz.js → qr-cli-D_7jTOhP.js} +2 -2
  246. package/dist/{register.agent-Bpm5Fh13.js → register.agent-B-v1ixge.js} +39 -39
  247. package/dist/{register.agent-BirwyJVS.js → register.agent-Dms0oymW.js} +37 -37
  248. package/dist/{register.configure-BQet1kco.js → register.configure-CVct6y53.js} +44 -44
  249. package/dist/{register.configure-C5UDp3N5.js → register.configure-MY0P8ucP.js} +43 -43
  250. package/dist/{register.maintenance-DYkT5jnV.js → register.maintenance-Ciblsa6H.js} +40 -40
  251. package/dist/{register.maintenance-UfVK3mjx.js → register.maintenance-DpSSW9tp.js} +42 -42
  252. package/dist/{register.message-CKq6NCSm.js → register.message-Csn-WBH0.js} +30 -30
  253. package/dist/{register.message-C3SzLAgk.js → register.message-FsBEsQeD.js} +29 -29
  254. package/dist/{register.onboard-B9a9EHLC.js → register.onboard-BQ-ciW9l.js} +36 -36
  255. package/dist/{register.onboard-D9Cm7LZb.js → register.onboard-MIhaldvp.js} +35 -35
  256. package/dist/{register.setup-ybjh7_q_.js → register.setup-DCTamI7u.js} +35 -35
  257. package/dist/{register.setup-ycd7a2ur.js → register.setup-M0O0Tp-n.js} +36 -36
  258. package/dist/{register.status-health-sessions-2QNhX3pX.js → register.status-health-sessions-Drc5WQGq.js} +33 -33
  259. package/dist/{register.status-health-sessions-BryhDGnZ.js → register.status-health-sessions-DzKtjfA-.js} +35 -35
  260. package/dist/{register.subclis-Dxm9Un5O.js → register.subclis-Btg8-Nnf.js} +29 -29
  261. package/dist/{replies-DFjjnJ3D.js → replies-BVeiOxGr.js} +1 -1
  262. package/dist/{replies-B-xLfipR.js → replies-BWgZR_w5.js} +1 -1
  263. package/dist/{replies-j1a_GMFx.js → replies-CNJXJgMU.js} +1 -1
  264. package/dist/{replies-BQj0lY4W.js → replies-CsUBFXf6.js} +1 -1
  265. package/dist/{reply-WdyooxLc.js → reply-B0azB7WR.js} +70 -47
  266. package/dist/{routes-CRgMkkG0.js → routes-2b4mQUhe.js} +3 -3
  267. package/dist/{routes-K5Fj1g7Q.js → routes-C8PNEZ8b.js} +3 -3
  268. package/dist/{rpc-BWtktGFm.js → rpc-CHb_JvbM.js} +1 -1
  269. package/dist/{rpc-P3TWbEaf.js → rpc-Cog-Z1rx.js} +1 -1
  270. package/dist/{run-main-CijnQAcO.js → run-main-DfxDXt2d.js} +49 -49
  271. package/dist/{runner-ef6nFMvq.js → runner-BVgCl6yZ.js} +2 -2
  272. package/dist/{runner-DOVS95oz.js → runner-CSdQSvE8.js} +3 -3
  273. package/dist/{runner-B59C4Wdw.js → runner-C_BlQ2fG.js} +3 -3
  274. package/dist/{runner-B97ZHSOs.js → runner-D5nFF9E6.js} +2 -2
  275. package/dist/{sandbox-LreyCjoX.js → sandbox-BOVopTqv.js} +6 -6
  276. package/dist/{sandbox-DiPHRUDK.js → sandbox-CDxHBl3I.js} +6 -6
  277. package/dist/{sandbox-cli-Cb7iGM1l.js → sandbox-cli-0eu7BCa8.js} +8 -8
  278. package/dist/{sandbox-cli-B7p0Hp3r.js → sandbox-cli-BpfYaZBG.js} +8 -8
  279. package/dist/{security-cli-DqVGrNy5.js → security-cli-B5s73Le2.js} +11 -11
  280. package/dist/{security-cli-DALRwIjj.js → security-cli-CzWHkrqD.js} +11 -11
  281. package/dist/{send-DAbxpmwe.js → send-AbhXOS2H.js} +1 -1
  282. package/dist/{send-Dc09jNH2.js → send-B7aHpAco.js} +1 -1
  283. package/dist/{send-cpH_yqHj.js → send-B9_a63ZG.js} +1 -1
  284. package/dist/{send-B3j7hxxO.js → send-BKhluIbb.js} +1 -1
  285. package/dist/{send-brznOT92.js → send-BahPjsMR.js} +1 -1
  286. package/dist/{send-Co9egPXG.js → send-BcvVKfh2.js} +1 -1
  287. package/dist/{send-CkIwAjAB.js → send-BuJyyJe7.js} +1 -1
  288. package/dist/{send-BhKkBArw.js → send-C0K_2AUP.js} +1 -1
  289. package/dist/{send-CXuAFSJP.js → send-CBcCKe5w.js} +1 -1
  290. package/dist/{send-CuuFC05i.js → send-CCmxHtaA.js} +1 -1
  291. package/dist/{send-DlsuAlpS.js → send-CaUqpyyp.js} +1 -1
  292. package/dist/{send-EHiP2shE.js → send-D8AIYNR_.js} +1 -1
  293. package/dist/{send-Djb958bI.js → send-DFftzTHo.js} +1 -1
  294. package/dist/{send-BZZ4_x4c.js → send-Dmb0z8Yy.js} +1 -1
  295. package/dist/{send-C2rS0q26.js → send-DnsTDCll.js} +1 -1
  296. package/dist/{send-BMoIcGXM.js → send-H2g9Eaud.js} +1 -1
  297. package/dist/{send-CmP1lu-b.js → send-Yzy50T1h.js} +1 -1
  298. package/dist/{send-cM1DDAnI.js → send-pFcMiyew.js} +1 -1
  299. package/dist/{send-BlSnzj96.js → send-vqwluhp3.js} +1 -1
  300. package/dist/{send-Dkhr43v-.js → send-xTfsDEE2.js} +1 -1
  301. package/dist/{server-context-B4j3P5K6.js → server-context-BBaojT7U.js} +5 -5
  302. package/dist/{server-context-2Vn21Z8T.js → server-context-C2gfYdh8.js} +5 -5
  303. package/dist/{server-methods-Db4Zr1Uh.js → server-methods-BcBroG6v.js} +118 -20
  304. package/dist/{server-methods-DcQq8SQr.js → server-methods-OJbQNjOJ.js} +119 -21
  305. package/dist/{server-node-events-C_v8BnlG.js → server-node-events-AVxH5dXs.js} +29 -29
  306. package/dist/{server-node-events-CaL-a5Ml.js → server-node-events-Ba9K9DB9.js} +30 -30
  307. package/dist/{session-C33JrUuB.js → session-BGKShBIy.js} +1 -1
  308. package/dist/{session-DLof5lJz.js → session-BTLA3Rm7.js} +1 -1
  309. package/dist/{session-L_LqHxcV.js → session-BuAvI2u-.js} +1 -1
  310. package/dist/{session-BddH7QoH.js → session-tLyG4haq.js} +1 -1
  311. package/dist/{session-utils-Ch5rIQbz.js → session-utils-BPXkhuNM.js} +3 -3
  312. package/dist/{sessions-oOAi4H3s.js → sessions-BPD85pWA.js} +1 -1
  313. package/dist/{sessions-C8h-0oVK.js → sessions-BeYHj0gr.js} +1 -1
  314. package/dist/{sessions-RfQP0zIn.js → sessions-NTd36-CO.js} +3 -3
  315. package/dist/{shared-CF9jxSQs.js → shared-D8j919CK.js} +1 -1
  316. package/dist/{shared-DxlCJeK_.js → shared-DdGOSL9s.js} +1 -1
  317. package/dist/{skill-commands-CIkcmGzD.js → skill-commands-BMu-U3SX.js} +1 -1
  318. package/dist/{skill-commands-BVeV_mpq.js → skill-commands-BSJONVkt.js} +1 -1
  319. package/dist/{skill-commands-Cg_ajTBC.js → skill-commands-CkqZdod4.js} +1 -1
  320. package/dist/{skill-commands-eaynYuR6.js → skill-commands-D1hG6Ikz.js} +1 -1
  321. package/dist/{skills-6jdJQ5ZL.js → skills-BG8FpqDp.js} +1 -1
  322. package/dist/{skills-Bs0AW1g3.js → skills-CXxrn_e2.js} +1 -1
  323. package/dist/{skills-hAdgFdrv.js → skills-D_oCiaQn.js} +1 -1
  324. package/dist/{skills-BNpGMnp-.js → skills-XEbTRNYL.js} +1 -1
  325. package/dist/{skills-cli-o6AfvfLb.js → skills-cli-BIURlIkS.js} +6 -6
  326. package/dist/{skills-cli-Cf7sLA5e.js → skills-cli-DBDVQeo4.js} +6 -6
  327. package/dist/{skills-install-CWVdJkLn.js → skills-install-D8JjjETa.js} +1 -1
  328. package/dist/{skills-install-1ZdwGTnh.js → skills-install-Por3jP0P.js} +1 -1
  329. package/dist/{skills-status-C3ptXwnh.js → skills-status-CKmK1hOo.js} +1 -1
  330. package/dist/{skills-status-DKXJ-tbi.js → skills-status-DODCG6UU.js} +1 -1
  331. package/dist/{status-BSd4QQZY.js → status-CpWkGj5h.js} +2 -2
  332. package/dist/{status-BddhZm3Y.js → status-DNxAYvxM.js} +2 -2
  333. package/dist/{status-B17aJsTi.js → status-RlJA2XzQ.js} +11 -11
  334. package/dist/{status-DALZR6Rh.js → status-Ut-dfDT0.js} +12 -12
  335. package/dist/{status.update-DEn_vM2K.js → status.update-BGSQrlxW.js} +1 -1
  336. package/dist/{status.update-DFx1sm1w.js → status.update-C1I_7XIo.js} +1 -1
  337. package/dist/{subagent-registry-DLyi3sgU.js → subagent-registry-CsYeP8wc.js} +71 -48
  338. package/dist/{system-cli-DjQq8evF.js → system-cli-D3CVv1ab.js} +4 -4
  339. package/dist/{system-cli-BfQs2bCu.js → system-cli-rpyy5jcw.js} +4 -4
  340. package/dist/{systemd-hints-CitUdPEJ.js → systemd-hints-BWjICrbb.js} +1 -1
  341. package/dist/{systemd-hints-nyPn6fDv.js → systemd-hints-G9M4s_fF.js} +1 -1
  342. package/dist/{tui-D1JLyFne.js → tui-DfPeXwah.js} +4 -4
  343. package/dist/{tui-D1DDOQ5b.js → tui-LZPdrFmK.js} +4 -4
  344. package/dist/{tui-cli-9g2Fi07C.js → tui-cli-Bm3TJgXf.js} +11 -11
  345. package/dist/{tui-cli-D9jJkoxe.js → tui-cli-DFXZ7r1F.js} +11 -11
  346. package/dist/{unified-runner-Dxj9fcQO.js → unified-runner-BojeuKIk.js} +60 -36
  347. package/dist/{update-DEMKx4eC.js → update-BWwyHVQj.js} +1 -1
  348. package/dist/{update-Ya0e-JnM.js → update-DdQCEAVD.js} +1 -1
  349. package/dist/{update-cli-C0D0gizK.js → update-cli-Cb12PjyN.js} +44 -44
  350. package/dist/{update-cli-CqLTiVU8.js → update-cli-Cm4ftHhu.js} +46 -46
  351. package/dist/{update-runner-DnEVHl6G.js → update-runner-BE6kDMsw.js} +1 -1
  352. package/dist/{update-runner-DRxTynZP.js → update-runner-Cv6hDgKV.js} +1 -1
  353. package/dist/{web-1apyUJY6.js → web-BOv3xM7W.js} +32 -32
  354. package/dist/{web-BTM-eHmT.js → web-CYf5I3aU.js} +32 -32
  355. package/dist/{web-DRQN-o-U.js → web-Dxkxcp7P.js} +19 -19
  356. package/dist/{web-CpLsElI8.js → web-f1xT-H2y.js} +19 -19
  357. package/dist/{webhooks-cli-CVYW5w5y.js → webhooks-cli-UuxPLc9l.js} +3 -3
  358. package/dist/{webhooks-cli-Bgc_FCJP.js → webhooks-cli-YK0wXLCn.js} +3 -3
  359. package/dist/{whatsapp-actions-BWd0ZXyg.js → whatsapp-actions-3wS2mDjT.js} +3 -3
  360. package/dist/{whatsapp-actions-doS0R248.js → whatsapp-actions-CiXMwRR8.js} +3 -3
  361. package/dist/{whatsapp-actions-BA9n6KQd.js → whatsapp-actions-DyfuVva4.js} +3 -3
  362. package/dist/{whatsapp-actions-DqA8SCfH.js → whatsapp-actions-qetg6Gkh.js} +3 -3
  363. package/dist/{with-timeout-Cei98OCY.js → with-timeout-BIXdW2Bg.js} +1 -1
  364. package/dist/{with-timeout-DLKss9E3.js → with-timeout-emS7y-kf.js} +1 -1
  365. package/docs/connections/email.md +143 -0
  366. package/docs/connections/msteams.md +80 -0
  367. package/docs/connections/slack.md +91 -0
  368. package/extensions/bluebubbles/package.json +1 -1
  369. package/extensions/copilot-proxy/package.json +1 -1
  370. package/extensions/diagnostics-otel/package.json +1 -1
  371. package/extensions/discord/package.json +1 -1
  372. package/extensions/feishu/package.json +1 -1
  373. package/extensions/google-antigravity-auth/package.json +1 -1
  374. package/extensions/google-gemini-cli-auth/package.json +1 -1
  375. package/extensions/googlechat/package.json +1 -1
  376. package/extensions/imessage/package.json +1 -1
  377. package/extensions/irc/package.json +1 -1
  378. package/extensions/learning-loop/package.json +1 -1
  379. package/extensions/line/package.json +1 -1
  380. package/extensions/llm-task/package.json +1 -1
  381. package/extensions/matrix/CHANGELOG.md +12 -0
  382. package/extensions/matrix/package.json +1 -1
  383. package/extensions/mattermost/package.json +1 -1
  384. package/extensions/memory-core/package.json +1 -1
  385. package/extensions/memory-lancedb/package.json +1 -1
  386. package/extensions/minimax-portal-auth/package.json +1 -1
  387. package/extensions/msteams/CHANGELOG.md +12 -0
  388. package/extensions/msteams/package.json +1 -1
  389. package/extensions/nextcloud-talk/package.json +1 -1
  390. package/extensions/nostr/CHANGELOG.md +12 -0
  391. package/extensions/nostr/package.json +1 -1
  392. package/extensions/open-prose/package.json +1 -1
  393. package/extensions/outlook/package.json +1 -1
  394. package/extensions/pipeline/package.json +1 -1
  395. package/extensions/signal/package.json +1 -1
  396. package/extensions/slack/package.json +1 -1
  397. package/extensions/telegram/package.json +1 -1
  398. package/extensions/tlon/package.json +1 -1
  399. package/extensions/twitch/CHANGELOG.md +12 -0
  400. package/extensions/twitch/package.json +1 -1
  401. package/extensions/voice-call/CHANGELOG.md +12 -0
  402. package/extensions/voice-call/package.json +1 -1
  403. package/extensions/whatsapp/package.json +1 -1
  404. package/extensions/zalo/CHANGELOG.md +12 -0
  405. package/extensions/zalo/package.json +1 -1
  406. package/extensions/zalouser/CHANGELOG.md +12 -0
  407. package/extensions/zalouser/package.json +1 -1
  408. package/package.json +1 -1
  409. package/skills/connect-email/SKILL.md +141 -0
  410. package/dist/plugin-sdk/web-C9dYYAlm.js +0 -66
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { n as loadConfig } from "./config-CnQmFG2h.js";
2
+ import { n as loadConfig } from "./config-BkZ9HOKT.js";
3
3
  import { v as mediaKindFromMime } from "./image-ops-C7CauEK8.js";
4
4
  import { n as resolveSignalAccount } from "./accounts-BuZxOb3B.js";
5
5
  import { n as resolveMarkdownTableMode } from "./markdown-tables-Dnj2LQUc.js";
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { ht as danger, n as isTruthyEnvValue, o as createSubsystemLogger, yt as logVerbose } from "./entry.js";
3
- import { i as loadConfig } from "./config-XZ7orePK.js";
3
+ import { i as loadConfig } from "./config-DXt3pc08.js";
4
4
  import { u as resolveTelegramAccount } from "./plugins-CwSlLxM8.js";
5
5
  import { h as normalizeMimeType, p as isGifMedia, u as getFileExtension, v as mediaKindFromMime } from "./image-ops-CUkaZz2F.js";
6
6
  import { n as redactSensitiveText } from "./redact-B40lik2B.js";
@@ -3,7 +3,7 @@ import { lt as resolvePreferredSymiTmpDir } from "./registry-BhoUuugi.js";
3
3
  import { _ as resolveDiscordAccount, v as normalizeDiscordToken } from "./plugins-71oIavrF.js";
4
4
  import { a as requireTargetKind, i as parseTargetPrefixes, n as ensureTargetId, r as parseTargetMention, t as buildMessagingTarget } from "./targets-DmSpDM4F.js";
5
5
  import { b as maxBytesForKind, f as extensionForMime } from "./image-ops-ByaQt43P.js";
6
- import { n as loadConfig } from "./config-1z3NlJzC.js";
6
+ import { n as loadConfig } from "./config-BAVNLbja.js";
7
7
  import { n as retryAsync, t as resolveRetryConfig } from "./retry-QGp0jvVi.js";
8
8
  import { c as resolveChunkMode, i as chunkMarkdownTextWithMode } from "./chunk-DTMTDXwE.js";
9
9
  import { n as resolveMarkdownTableMode } from "./markdown-tables-DawaaZEe.js";
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { M as logVerbose, O as danger } from "./utils-B-0b9bGM.js";
3
3
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
4
4
  import { t as isTruthyEnvValue } from "./env-DPCHYPeH.js";
5
- import { i as loadConfig } from "./config-Cz_ObCzY.js";
5
+ import { i as loadConfig } from "./config-PXAJCHa5.js";
6
6
  import { n as redactSensitiveText } from "./redact-f-Q-hFt_.js";
7
7
  import { n as formatErrorMessage, r as formatUncaughtError, t as extractErrorCode } from "./errors-BF3TeRH2.js";
8
8
  import { h as normalizeMimeType, p as isGifMedia, u as getFileExtension, v as mediaKindFromMime } from "./image-ops-1OJMSAUX.js";
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { ot as resolveUserPath, tt as normalizeE164 } from "./entry.js";
3
- import { i as loadConfig } from "./config-XZ7orePK.js";
3
+ import { i as loadConfig } from "./config-DXt3pc08.js";
4
4
  import { v as mediaKindFromMime } from "./image-ops-CUkaZz2F.js";
5
5
  import { t as resolveIMessageAccount } from "./accounts-D51FXYdA.js";
6
6
  import { n as resolveMarkdownTableMode } from "./markdown-tables-D82z_Ahc.js";
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { Nt as resolvePreferredSymiTmpDir } from "./entry.js";
3
- import { i as loadConfig } from "./config-XZ7orePK.js";
3
+ import { i as loadConfig } from "./config-DXt3pc08.js";
4
4
  import { v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-CwSlLxM8.js";
5
5
  import { a as requireTargetKind, i as parseTargetPrefixes, n as ensureTargetId, r as parseTargetMention, t as buildMessagingTarget } from "./targets-DJmA1jvy.js";
6
6
  import { _ as maxBytesForKind, l as extensionForMime } from "./image-ops-CUkaZz2F.js";
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { M as logVerbose } from "./utils-B-0b9bGM.js";
3
- import { i as loadConfig } from "./config-Cz_ObCzY.js";
3
+ import { i as loadConfig } from "./config-PXAJCHa5.js";
4
4
  import { f as resolveSlackAccount, h as resolveSlackBotToken } from "./plugins-DKDeQZF0.js";
5
5
  import { a as requireTargetKind, i as parseTargetPrefixes, n as ensureTargetId, r as parseTargetMention, t as buildMessagingTarget } from "./targets-bG1Q8FzV.js";
6
6
  import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit } from "./chunk-1dhPX1NK.js";
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { dt as resolvePreferredSymiTmpDir } from "./registry-DYq1AYOv.js";
3
- import { n as loadConfig } from "./config-CnQmFG2h.js";
3
+ import { n as loadConfig } from "./config-BkZ9HOKT.js";
4
4
  import { _ as maxBytesForKind, l as extensionForMime } from "./image-ops-C7CauEK8.js";
5
5
  import { _ as resolveDiscordAccount, v as normalizeDiscordToken } from "./plugins-BzmbgY7s.js";
6
6
  import { a as requireTargetKind, i as parseTargetPrefixes, n as ensureTargetId, r as parseTargetMention, t as buildMessagingTarget } from "./targets-DGkXkFPj.js";
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { i as loadConfig } from "./config-Cz_ObCzY.js";
2
+ import { i as loadConfig } from "./config-PXAJCHa5.js";
3
3
  import { v as mediaKindFromMime } from "./image-ops-1OJMSAUX.js";
4
4
  import { n as resolveSignalAccount } from "./accounts-DyJN4_vR.js";
5
5
  import { n as fetchWithTimeout } from "./fetch-timeout-Db3da8yR.js";
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { I as resolveUserPath, M as normalizeE164 } from "./registry-DYq1AYOv.js";
3
- import { n as loadConfig } from "./config-CnQmFG2h.js";
3
+ import { n as loadConfig } from "./config-BkZ9HOKT.js";
4
4
  import { v as mediaKindFromMime } from "./image-ops-C7CauEK8.js";
5
5
  import { t as resolveIMessageAccount } from "./accounts-3dCrO3oZ.js";
6
6
  import { n as resolveMarkdownTableMode } from "./markdown-tables-Dnj2LQUc.js";
@@ -4,7 +4,7 @@ import { G as danger, J as logVerbose, L as safeParseJson } from "./registry-DYq
4
4
  import { t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
5
5
  import { p as withFileLock$1 } from "./auth-profiles-C2vj6htZ.js";
6
6
  import { t as isTruthyEnvValue } from "./env-BDXYbTKj.js";
7
- import { n as loadConfig } from "./config-CnQmFG2h.js";
7
+ import { n as loadConfig } from "./config-BkZ9HOKT.js";
8
8
  import { t as redactSensitiveText } from "./redact-BDMXB06K.js";
9
9
  import { n as formatErrorMessage, r as formatUncaughtError, t as extractErrorCode } from "./errors-XIsvXeC-.js";
10
10
  import { h as normalizeMimeType, p as isGifMedia, u as getFileExtension, v as mediaKindFromMime } from "./image-ops-C7CauEK8.js";
@@ -1,7 +1,7 @@
1
1
  import { Ut as resolveGatewayPort } from "./entry.js";
2
- import { i as loadConfig, l as writeConfigFile, r as createConfigIO } from "./config-XZ7orePK.js";
2
+ import { i as loadConfig, l as writeConfigFile, r as createConfigIO } from "./config-DXt3pc08.js";
3
3
  import { n as isLoopbackHost } from "./net-DZ5Ayk-W.js";
4
- import { A as DEFAULT_SYMI_BROWSER_PROFILE_NAME, D as DEFAULT_BROWSER_EVALUATE_ENABLED, E as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, O as DEFAULT_SYMI_BROWSER_COLOR, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, k as DEFAULT_SYMI_BROWSER_ENABLED, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, v as fetchOk, x as ensureChromeExtensionRelayServer } from "./chrome-CWdu8vA2.js";
4
+ import { A as DEFAULT_SYMI_BROWSER_PROFILE_NAME, D as DEFAULT_BROWSER_EVALUATE_ENABLED, E as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, O as DEFAULT_SYMI_BROWSER_COLOR, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, k as DEFAULT_SYMI_BROWSER_ENABLED, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, v as fetchOk, x as ensureChromeExtensionRelayServer } from "./chrome-D2ohnA09.js";
5
5
  import { a as resolveGatewayAuth } from "./auth-BfDMhFAj.js";
6
6
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-Ba_ROWsq.js";
7
7
  import { t as SsrFBlockedError } from "./ssrf-Ixuyn7h8.js";
@@ -152,7 +152,7 @@ function isModuleNotFoundError(err) {
152
152
  }
153
153
  async function loadPwAiModule(mode) {
154
154
  try {
155
- return await import("./pw-ai-P5lOraHd.js");
155
+ return await import("./pw-ai-VRkM0Qt0.js");
156
156
  } catch (err) {
157
157
  if (mode === "soft") return null;
158
158
  if (isModuleNotFoundError(err)) return null;
@@ -775,11 +775,11 @@ function createProfileContext(opts, profile) {
775
775
  const userDataDir = resolveSymiUserDataDir(profile.name);
776
776
  const profileState = getProfileState();
777
777
  if (await isHttpReachable(300) && !profileState.running) try {
778
- await (await import("./pw-ai-P5lOraHd.js")).closePlaywrightBrowserConnection();
778
+ await (await import("./pw-ai-VRkM0Qt0.js")).closePlaywrightBrowserConnection();
779
779
  } catch {}
780
780
  if (profileState.running) await stopRunningBrowser();
781
781
  try {
782
- await (await import("./pw-ai-P5lOraHd.js")).closePlaywrightBrowserConnection();
782
+ await (await import("./pw-ai-VRkM0Qt0.js")).closePlaywrightBrowserConnection();
783
783
  } catch {}
784
784
  if (!fs.existsSync(userDataDir)) return {
785
785
  moved: false,
@@ -1,6 +1,6 @@
1
1
  import { u as resolveGatewayPort } from "./paths-Cqn-zk3M.js";
2
- import { i as loadConfig, l as writeConfigFile, r as createConfigIO } from "./config-Cz_ObCzY.js";
3
- import { A as DEFAULT_SYMI_BROWSER_PROFILE_NAME, D as DEFAULT_BROWSER_EVALUATE_ENABLED, E as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, O as DEFAULT_SYMI_BROWSER_COLOR, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, k as DEFAULT_SYMI_BROWSER_ENABLED, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, v as fetchOk, x as ensureChromeExtensionRelayServer } from "./chrome-CDPH3KAn.js";
2
+ import { i as loadConfig, l as writeConfigFile, r as createConfigIO } from "./config-PXAJCHa5.js";
3
+ import { A as DEFAULT_SYMI_BROWSER_PROFILE_NAME, D as DEFAULT_BROWSER_EVALUATE_ENABLED, E as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, O as DEFAULT_SYMI_BROWSER_COLOR, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, k as DEFAULT_SYMI_BROWSER_ENABLED, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, v as fetchOk, x as ensureChromeExtensionRelayServer } from "./chrome-BJvuH-NZ.js";
4
4
  import { r as isLoopbackHost } from "./ws-C7EXRv8z.js";
5
5
  import { a as resolveGatewayAuth } from "./auth-B741uFtk.js";
6
6
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-BF3TeRH2.js";
@@ -152,7 +152,7 @@ function isModuleNotFoundError(err) {
152
152
  }
153
153
  async function loadPwAiModule(mode) {
154
154
  try {
155
- return await import("./pw-ai-BeOKbmWW.js");
155
+ return await import("./pw-ai-Df3SCnGC.js");
156
156
  } catch (err) {
157
157
  if (mode === "soft") return null;
158
158
  if (isModuleNotFoundError(err)) return null;
@@ -775,11 +775,11 @@ function createProfileContext(opts, profile) {
775
775
  const userDataDir = resolveSymiUserDataDir(profile.name);
776
776
  const profileState = getProfileState();
777
777
  if (await isHttpReachable(300) && !profileState.running) try {
778
- await (await import("./pw-ai-BeOKbmWW.js")).closePlaywrightBrowserConnection();
778
+ await (await import("./pw-ai-Df3SCnGC.js")).closePlaywrightBrowserConnection();
779
779
  } catch {}
780
780
  if (profileState.running) await stopRunningBrowser();
781
781
  try {
782
- await (await import("./pw-ai-BeOKbmWW.js")).closePlaywrightBrowserConnection();
782
+ await (await import("./pw-ai-Df3SCnGC.js")).closePlaywrightBrowserConnection();
783
783
  } catch {}
784
784
  if (!fs.existsSync(userDataDir)) return {
785
785
  moved: false,
@@ -1,7 +1,7 @@
1
1
  import { g as resolveStateDir, t as CONFIG_PATH } from "./paths-Cqn-zk3M.js";
2
2
  import { D as isPlainObject, U as getResolvedLoggerSettings, r as clamp, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
3
  import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-EAliFiVK.js";
4
- import { $n as OPENAI_TTS_MODELS, Bn as registerAgentRunContext, Bt as abortEmbeddedPiRun, C as ensureOutboundSessionEntry, Et as agentCommand, Ft as normalizeSendPolicy, G as normalizeCronJobPatch, Gn as resolveTtsApiKey, H as writeRestartSentinel, Hn as getTtsProvider, Ht as waitForEmbeddedPiRunEnd, It as resolveSendPolicy, Jn as resolveTtsPrefsPath, Kn as resolveTtsAutoMode, L as formatDoctorNonInteractiveHint, Mn as listSubagentRunsForRequester, Mt as resolveOutboundTarget, N as scheduleGatewaySigusr1Restart, Ot as resolveAgentDeliveryPlan, Pr as resolveAgentTimeoutMs, Qn as textToSpeech, Rt as createOutboundSendDeps, Sr as isSystemEventContextChanged, Tn as stopSubagentsForRequester, Un as isTtsEnabled, Vn as resolveUserTimezone, W as normalizeCronJobCreate, Wn as isTtsProviderConfigured, Xn as setTtsEnabled, Yn as resolveTtsProviderOrder, Zn as setTtsProvider, _ as loadCombinedSessionStoreForGateway, at as persistBrowserProxyFiles, b as resolveGatewaySessionStoreTarget, br as parseVerboseOverride, c as clearSessionQueues, er as OPENAI_TTS_VOICES, ft as loadSymiPlugins, g as listSessionsFromStore, gt as loadProviderUsageSummary, h as listAgentsForGateway, in as unbindThreadBindingsBySessionKey, it as applyBrowserProxyPaths, jn as listDescendantRunsForRequester, kt as resolveAgentOutboundTarget, mn as createReplyDispatcher, mt as normalizeGroupActivation, n as BARE_SESSION_RESET_PROMPT, p as canonicalizeSpawnedByForAgent, pn as dispatchInboundMessage, qn as resolveTtsConfig, v as loadSessionEntry, vr as applyModelOverrideToSessionEntry, w as resolveOutboundSessionRoute, wn as isAbortTrigger, x as resolveSessionModelRef, xn as formatZonedTimestamp, xr as enqueueSystemEvent, y as pruneLegacyStoreKeys, yr as applyVerboseOverride, zn as onAgentEvent } from "./reply-WdyooxLc.js";
4
+ import { $n as OPENAI_TTS_MODELS, Bn as registerAgentRunContext, Bt as abortEmbeddedPiRun, C as ensureOutboundSessionEntry, Et as agentCommand, Ft as normalizeSendPolicy, G as normalizeCronJobPatch, Gn as resolveTtsApiKey, H as writeRestartSentinel, Hn as getTtsProvider, Ht as waitForEmbeddedPiRunEnd, It as resolveSendPolicy, Jn as resolveTtsPrefsPath, Kn as resolveTtsAutoMode, L as formatDoctorNonInteractiveHint, Mn as listSubagentRunsForRequester, Mt as resolveOutboundTarget, N as scheduleGatewaySigusr1Restart, Ot as resolveAgentDeliveryPlan, Pr as resolveAgentTimeoutMs, Qn as textToSpeech, Rt as createOutboundSendDeps, Sr as isSystemEventContextChanged, Tn as stopSubagentsForRequester, Un as isTtsEnabled, Vn as resolveUserTimezone, W as normalizeCronJobCreate, Wn as isTtsProviderConfigured, Xn as setTtsEnabled, Yn as resolveTtsProviderOrder, Zn as setTtsProvider, _ as loadCombinedSessionStoreForGateway, at as persistBrowserProxyFiles, b as resolveGatewaySessionStoreTarget, br as parseVerboseOverride, c as clearSessionQueues, er as OPENAI_TTS_VOICES, ft as loadSymiPlugins, g as listSessionsFromStore, gt as loadProviderUsageSummary, h as listAgentsForGateway, in as unbindThreadBindingsBySessionKey, it as applyBrowserProxyPaths, jn as listDescendantRunsForRequester, kt as resolveAgentOutboundTarget, mn as createReplyDispatcher, mt as normalizeGroupActivation, n as BARE_SESSION_RESET_PROMPT, p as canonicalizeSpawnedByForAgent, pn as dispatchInboundMessage, qn as resolveTtsConfig, v as loadSessionEntry, vr as applyModelOverrideToSessionEntry, w as resolveOutboundSessionRoute, wn as isAbortTrigger, x as resolveSessionModelRef, xn as formatZonedTimestamp, xr as enqueueSystemEvent, y as pruneLegacyStoreKeys, yr as applyVerboseOverride, zn as onAgentEvent } from "./reply-B0azB7WR.js";
5
5
  import { S as parseAgentSessionKey, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, o as classifySessionKeyShape, s as normalizeAgentId, t as DEFAULT_AGENT_ID, x as isSubagentSessionKey } from "./session-key-DCt45XZa.js";
6
6
  import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
7
7
  import { C as createInternalHookEvent, T as triggerInternalHook, d as getActivePluginRegistry, r as DEFAULT_CHAT_CHANNEL, t as CHANNEL_IDS } from "./registry-Cja8eT7G.js";
@@ -9,44 +9,44 @@ import { f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-D9v
9
9
  import { C as ensureAgentWorkspace, S as DEFAULT_USER_FILENAME, T as isWorkspaceOnboardingCompleted, _ as DEFAULT_MEMORY_ALT_FILENAME, b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, g as DEFAULT_IDENTITY_FILENAME, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, n as listAgentIds, p as DEFAULT_AGENTS_FILENAME, t as listAgentEntries, v as DEFAULT_MEMORY_FILENAME, x as DEFAULT_TOOLS_FILENAME, y as DEFAULT_SYMICORE_FILENAME } from "./agent-scope-CgUHAtCo.js";
10
10
  import { Bt as normalizeSecretInput, _ as resolveSubagentConfiguredModelSelection, d as resolveAllowedModelRef, m as resolveDefaultModelForAgent, y as resolveThinkingDefault } from "./model-selection-C-eIBa0H.js";
11
11
  import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, i as isGatewayMessageChannel, l as normalizeMessageChannel, n as isDeliverableMessageChannel, t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-aT-I_DTX.js";
12
- import { H as VERSION, N as applyMergePatch, P as applyLegacyMigrations, S as sensitive, U as resolveRuntimeServiceVersion, a as parseConfigJson5, c as resolveConfigSnapshotHash, d as SymiSchema, i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, s as readConfigFileSnapshotForWrite, u as validateConfigObjectWithPlugins } from "./config-Cz_ObCzY.js";
12
+ import { H as VERSION, N as applyMergePatch, P as applyLegacyMigrations, S as sensitive, U as resolveRuntimeServiceVersion, a as parseConfigJson5, c as resolveConfigSnapshotHash, d as SymiSchema, i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, s as readConfigFileSnapshotForWrite, u as validateConfigObjectWithPlugins } from "./config-PXAJCHa5.js";
13
13
  import { c as pickPrimaryLanIPv4 } from "./ws-C7EXRv8z.js";
14
- import { i as loadWorkspaceSkillEntries } from "./skills-6jdJQ5ZL.js";
14
+ import { i as loadWorkspaceSkillEntries } from "./skills-BG8FpqDp.js";
15
15
  import { t as movePathToTrash } from "./trash-DcMh1i4B.js";
16
- import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, G as snapshotSessionOrigin, H as resolveMainSessionKey, O as stripEnvelopeFromMessages, S as archiveSessionTranscripts, T as readSessionPreviewItemsFromTranscript, U as resolveMainSessionKeyFromConfig, V as resolveExplicitAgentSessionKey, d as updateSessionStore, o as loadSessionStore, t as extractDeliveryInfo, w as readSessionMessages, x as archiveFileOnDisk, y as normalizeSessionDeliveryFields } from "./sessions-C8h-0oVK.js";
16
+ import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, G as snapshotSessionOrigin, H as resolveMainSessionKey, O as stripEnvelopeFromMessages, S as archiveSessionTranscripts, T as readSessionPreviewItemsFromTranscript, U as resolveMainSessionKeyFromConfig, V as resolveExplicitAgentSessionKey, d as updateSessionStore, o as loadSessionStore, t as extractDeliveryInfo, w as readSessionMessages, x as archiveFileOnDisk, y as normalizeSessionDeliveryFields } from "./sessions-BeYHj0gr.js";
17
17
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-DKDeQZF0.js";
18
18
  import { n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-CyhzMxFA.js";
19
19
  import { i as normalizeInputProvenance } from "./input-provenance-BzbXHcaD.js";
20
- import { n as createBrowserRouteDispatcher } from "./with-timeout-DLKss9E3.js";
21
- import { C as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-Co2XquFO.js";
20
+ import { n as createBrowserRouteDispatcher } from "./with-timeout-emS7y-kf.js";
21
+ import { C as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-lG9ITE8w.js";
22
22
  import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-CE2YmmsD.js";
23
23
  import { $ as validateNodePairRejectParams, A as validateCronStatusParams, At as validateWizardNextParams, B as validateExecApprovalsGetParams, C as validateConfigSetParams, Ct as validateTalkConfigParams, D as validateCronRemoveParams, Dt as validateWebLoginStartParams, E as validateCronListParams, Et as validateWakeParams, F as validateDevicePairRemoveParams, Ft as errorShape, G as validateModelsListParams, H as validateExecApprovalsNodeSetParams, Ht as listDevicePairing, I as validateDeviceTokenRevokeParams, J as validateNodeInvokeParams, Jt as summarizeDeviceTokens, K as validateNodeDescribeParams, Kt as revokeDeviceToken, L as validateDeviceTokenRotateParams, Lt as parseSessionLabel, M as validateDevicePairApproveParams, Mt as validateWizardStatusParams, N as validateDevicePairListParams, O as validateCronRunParams, Ot as validateWebLoginWaitParams, P as validateDevicePairRejectParams, Pt as ErrorCodes, Q as validateNodePairListParams, S as validateConfigSchemaParams, St as validateSkillsUpdateParams, T as validateCronAddParams, Tt as validateUpdateRunParams, U as validateExecApprovalsSetParams, Ut as rejectDevicePairing, V as validateExecApprovalsNodeGetParams, W as validateLogsTailParams, Wt as removePairedDevice, X as validateNodeListParams, Y as validateNodeInvokeResultParams, Z as validateNodePairApproveParams, _ as validateChatInjectParams, _t as validateSessionsRestoreParams, a as validateAgentWaitParams, b as validateConfigGetParams, bt as validateSkillsInstallParams, c as validateAgentsFilesGetParams, ct as validateSessionsCompactParams, d as validateAgentsListParams, dt as validateSessionsFavoriteFileParams, et as validateNodePairRequestParams, f as validateAgentsUpdateParams, ft as validateSessionsListParams, g as validateChatHistoryParams, gt as validateSessionsResolveParams, h as validateChatAbortParams, ht as validateSessionsResetParams, i as validateAgentParams, it as validatePushTestParams, j as validateCronUpdateParams, jt as validateWizardStartParams, k as validateCronRunsParams, kt as validateWizardCancelParams, l as validateAgentsFilesListParams, lt as validateSessionsDeleteFileParams, m as validateChannelsStatusParams, mt as validateSessionsPreviewParams, n as formatValidationErrors, nt as validateNodeRenameParams, o as validateAgentsCreateParams, ot as validateSendParams, p as validateChannelsLogoutParams, pt as validateSessionsPatchParams, q as validateNodeEventParams, qt as rotateDeviceToken, r as validateAgentIdentityParams, rt as validatePollParams, s as validateAgentsDeleteParams, st as validateSessionsAdoptFileParams, tt as validateNodePairVerifyParams, u as validateAgentsFilesSetParams, ut as validateSessionsDeleteParams, v as validateChatSendParams, vt as validateSessionsUsageParams, wt as validateTalkModeParams, x as validateConfigPatchParams, xt as validateSkillsStatusParams, y as validateConfigApplyParams, yt as validateSkillsBinsParams, zt as approveDevicePairing } from "./client-B8xmq-Pw.js";
24
- import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-CtiVeyeQ.js";
24
+ import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-CVqBgwrx.js";
25
25
  import { c as writeJsonAtomic, o as createAsyncLock, s as readJsonFile } from "./pairing-token-CX3NN_qj.js";
26
26
  import { n as normalizePollInput } from "./polls-DhH5YkzN.js";
27
27
  import { t as getChannelActivity } from "./channel-activity-BOiuJS3t.js";
28
- import { _ as requestNodePairing, g as renamePairedNode, h as rejectNodePairing, m as listNodePairing, o as getRemoteSkillEligibility, p as approveNodePairing, y as verifyNodeToken } from "./skill-commands-CIkcmGzD.js";
28
+ import { _ as requestNodePairing, g as renamePairedNode, h as rejectNodePairing, m as listNodePairing, o as getRemoteSkillEligibility, p as approveNodePairing, y as verifyNodeToken } from "./skill-commands-BMu-U3SX.js";
29
29
  import { t as listAgentWorkspaceDirs } from "./workspace-dirs-GpkFi6Kw.js";
30
30
  import { i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, t as discoverAllSessions } from "./session-cost-usage-BXAI7CNH.js";
31
- import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-B1El5sBR.js";
31
+ import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-CPSKXD5k.js";
32
32
  import { a as mergeExecApprovalsSocketDefaults, c as readExecApprovalsSnapshot, p as saveExecApprovals, r as ensureExecApprovals, s as normalizeExecApprovals } from "./exec-approvals-DXM2pQYL.js";
33
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-Cqck1Zry.js";
33
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-D0IdaeI8.js";
34
34
  import { i as parseAbsoluteTimeMs } from "./stagger-CvFURHzt.js";
35
35
  import { r as getLastHeartbeatEvent } from "./heartbeat-visibility-ChEo5Zvk.js";
36
- import { t as buildChannelUiCatalog } from "./catalog-NQ4pj9RI.js";
37
- import { t as buildWorkspaceSkillStatus } from "./skills-status-C3ptXwnh.js";
36
+ import { t as buildChannelUiCatalog } from "./catalog-DX1l43Ru.js";
37
+ import { t as buildWorkspaceSkillStatus } from "./skills-status-CKmK1hOo.js";
38
38
  import { t as WizardCancelledError } from "./prompts-CfOu9uZi.js";
39
39
  import { t as resolveChannelDefaultAccountId } from "./helpers-DnjQ73f_.js";
40
40
  import { t as buildChannelAccountSnapshot } from "./status-klsFDD3M.js";
41
- import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-DD5qcj2W.js";
42
- import { n as getStatusSummary } from "./status-B17aJsTi.js";
43
- import { s as setHeartbeatsEnabled } from "./health-CUAawozd.js";
41
+ import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-DVUHZrf4.js";
42
+ import { n as getStatusSummary } from "./status-RlJA2XzQ.js";
43
+ import { s as setHeartbeatsEnabled } from "./health-Bx8UUqFA.js";
44
44
  import { m as normalizeUpdateChannel } from "./update-check-7EzEjSzb.js";
45
- import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-ze6w0evQ.js";
46
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-AdyGWyGd.js";
45
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-DUWtWoB-.js";
46
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-D0ih9tP3.js";
47
47
  import { t as resolveSystemRunCommand } from "./system-run-command-B_qw8CXP.js";
48
- import { t as installSkill } from "./skills-install-CWVdJkLn.js";
49
- import { t as runGatewayUpdate } from "./update-runner-DRxTynZP.js";
48
+ import { t as installSkill } from "./skills-install-D8JjjETa.js";
49
+ import { t as runGatewayUpdate } from "./update-runner-Cv6hDgKV.js";
50
50
  import * as fs$2 from "node:fs";
51
51
  import fs from "node:fs";
52
52
  import * as os$1 from "node:os";
@@ -3367,6 +3367,45 @@ const browserHandlers = { "browser.request": async ({ params, respond, context }
3367
3367
 
3368
3368
  //#endregion
3369
3369
  //#region src/gateway/server-methods/channels.ts
3370
+ function readOutlookConnectionState() {
3371
+ const home = process.env.HOME || process.env.USERPROFILE;
3372
+ if (!home) return {
3373
+ configured: false,
3374
+ connected: false
3375
+ };
3376
+ const credsPath = path.join(home, ".symi", "credentials", "outlook.json");
3377
+ let raw;
3378
+ try {
3379
+ raw = fs.readFileSync(credsPath, "utf-8");
3380
+ } catch {
3381
+ return {
3382
+ configured: false,
3383
+ connected: false
3384
+ };
3385
+ }
3386
+ let creds;
3387
+ try {
3388
+ creds = JSON.parse(raw);
3389
+ } catch {
3390
+ return {
3391
+ configured: true,
3392
+ connected: false
3393
+ };
3394
+ }
3395
+ const expires = typeof creds.expires === "number" ? creds.expires : 0;
3396
+ const hasRefresh = typeof creds.refresh === "string" && creds.refresh.length > 0;
3397
+ const notExpired = Date.now() < expires;
3398
+ const connected = notExpired || hasRefresh;
3399
+ const tokenState = notExpired ? "valid" : hasRefresh ? "expired-will-refresh" : "expired-no-refresh";
3400
+ return {
3401
+ configured: true,
3402
+ connected,
3403
+ email: typeof creds.email === "string" ? creds.email : void 0,
3404
+ displayName: typeof creds.displayName === "string" ? creds.displayName : void 0,
3405
+ tokenState,
3406
+ updatedAt: typeof creds.updatedAt === "string" ? creds.updatedAt : void 0
3407
+ };
3408
+ }
3370
3409
  async function logoutChannelAccount(params) {
3371
3410
  const resolvedAccountId = params.accountId?.trim() || params.plugin.config.defaultAccountId?.(params.cfg) || params.plugin.config.listAccountIds(params.cfg)[0] || DEFAULT_ACCOUNT_ID;
3372
3411
  const account = params.plugin.config.resolveAccount(params.cfg, resolvedAccountId);
@@ -3505,6 +3544,7 @@ const channelsHandlers = {
3505
3544
  accountsMap[plugin.id] = accounts;
3506
3545
  defaultAccountIdMap[plugin.id] = defaultAccountId;
3507
3546
  }
3547
+ channelsMap.outlook = readOutlookConnectionState();
3508
3548
  respond(true, payload, void 0);
3509
3549
  },
3510
3550
  "channels.logout": async ({ params, respond, context }) => {
@@ -6338,6 +6378,63 @@ const deviceHandlers = {
6338
6378
  }
6339
6379
  };
6340
6380
 
6381
+ //#endregion
6382
+ //#region src/gateway/server-methods/docs.ts
6383
+ /**
6384
+ * Whitelist of doc keys the Glass UI docs viewer can fetch. Each value is a
6385
+ * path relative to the Symi package root. Keys are exposed over the RPC;
6386
+ * paths are not — so the client cannot request arbitrary files.
6387
+ *
6388
+ * Docs here are the short viewer-specific copies at docs/connections/*.md.
6389
+ * The longer MDX-flavoured docs at docs/channels/*.md are intended for the
6390
+ * hosted Mintlify site and are not served through this endpoint because
6391
+ * marked.js in the browser cannot render Mintlify components.
6392
+ */
6393
+ const DOCS_WHITELIST = {
6394
+ email: "docs/connections/email.md",
6395
+ slack: "docs/connections/slack.md",
6396
+ msteams: "docs/connections/msteams.md"
6397
+ };
6398
+ const docsHandlers = { "docs.get": async ({ params, respond }) => {
6399
+ const rawKey = params.key;
6400
+ if (typeof rawKey !== "string" || !rawKey.trim()) {
6401
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "docs.get requires a string `key` param"));
6402
+ return;
6403
+ }
6404
+ const key = rawKey.trim();
6405
+ const relPath = DOCS_WHITELIST[key];
6406
+ if (!relPath) {
6407
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, `unknown docs key: ${key} (allowed: ${Object.keys(DOCS_WHITELIST).join(", ")})`));
6408
+ return;
6409
+ }
6410
+ const packageRoot = await resolveSymiPackageRoot({
6411
+ cwd: process.cwd(),
6412
+ argv1: process.argv[1],
6413
+ moduleUrl: import.meta.url
6414
+ });
6415
+ if (!packageRoot) {
6416
+ respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, "could not resolve Symi package root"));
6417
+ return;
6418
+ }
6419
+ const fullPath = path.join(packageRoot, relPath);
6420
+ let markdown;
6421
+ try {
6422
+ markdown = await fs$1.readFile(fullPath, "utf-8");
6423
+ } catch (err) {
6424
+ if (err?.code === "ENOENT") {
6425
+ respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, `docs file not bundled in this Symi install: ${relPath}`));
6426
+ return;
6427
+ }
6428
+ respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, `failed to read docs file: ${String(err)}`));
6429
+ return;
6430
+ }
6431
+ respond(true, {
6432
+ key,
6433
+ path: relPath,
6434
+ markdown
6435
+ }, void 0);
6436
+ } };
6437
+
6341
6438
  //#endregion
6342
6439
  //#region src/gateway/server-methods/exec-approvals.ts
6343
6440
  function requireApprovalsBaseHash(params, snapshot, respond) {
@@ -7327,7 +7424,7 @@ const nodeHandlers = {
7327
7424
  const p = params;
7328
7425
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
7329
7426
  await respondUnavailableOnThrow(respond, async () => {
7330
- const { handleNodeEvent } = await import("./server-node-events-C_v8BnlG.js");
7427
+ const { handleNodeEvent } = await import("./server-node-events-AVxH5dXs.js");
7331
7428
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
7332
7429
  await handleNodeEvent({
7333
7430
  deps: context.deps,
@@ -9333,6 +9430,7 @@ const coreGatewayHandlers = {
9333
9430
  ...chatHandlers,
9334
9431
  ...cronHandlers,
9335
9432
  ...deviceHandlers,
9433
+ ...docsHandlers,
9336
9434
  ...execApprovalsHandlers,
9337
9435
  ...webHandlers,
9338
9436
  ...modelsHandlers,
@@ -3,48 +3,48 @@ import { Et as normalizeSecretInput, G as resolveSubagentConfiguredModelSelectio
3
3
  import { S as parseAgentSessionKey, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, o as classifySessionKeyShape, s as normalizeAgentId, t as DEFAULT_AGENT_ID, x as isSubagentSessionKey } from "./session-key-DjZ7Z1hW.js";
4
4
  import { t as resolveSymiPackageRoot } from "./symi-root-BNuQ4lAT.js";
5
5
  import { C as ensureAgentWorkspace, S as DEFAULT_USER_FILENAME, T as isWorkspaceOnboardingCompleted, _ as DEFAULT_MEMORY_ALT_FILENAME, b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, g as DEFAULT_IDENTITY_FILENAME, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, n as listAgentIds, p as DEFAULT_AGENTS_FILENAME, t as listAgentEntries, v as DEFAULT_MEMORY_FILENAME, x as DEFAULT_TOOLS_FILENAME, y as DEFAULT_SYMICORE_FILENAME } from "./agent-scope-D-jRCY0d.js";
6
- import { i as loadWorkspaceSkillEntries } from "./skills-hAdgFdrv.js";
7
- import { t as buildWorkspaceSkillStatus } from "./skills-status-DKXJ-tbi.js";
8
- import { H as VERSION, N as applyMergePatch, P as applyLegacyMigrations, S as sensitive, U as resolveRuntimeServiceVersion, a as parseConfigJson5, c as resolveConfigSnapshotHash, d as SymiSchema, i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, s as readConfigFileSnapshotForWrite, u as validateConfigObjectWithPlugins } from "./config-XZ7orePK.js";
6
+ import { i as loadWorkspaceSkillEntries } from "./skills-D_oCiaQn.js";
7
+ import { t as buildWorkspaceSkillStatus } from "./skills-status-DODCG6UU.js";
8
+ import { H as VERSION, N as applyMergePatch, P as applyLegacyMigrations, S as sensitive, U as resolveRuntimeServiceVersion, a as parseConfigJson5, c as resolveConfigSnapshotHash, d as SymiSchema, i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, s as readConfigFileSnapshotForWrite, u as validateConfigObjectWithPlugins } from "./config-DXt3pc08.js";
9
9
  import { $ as validateNodePairRejectParams, A as validateCronStatusParams, At as validateWizardNextParams, B as validateExecApprovalsGetParams, C as validateConfigSetParams, Ct as validateTalkConfigParams, D as validateCronRemoveParams, Dt as validateWebLoginStartParams, E as validateCronListParams, Et as validateWakeParams, F as validateDevicePairRemoveParams, Ft as errorShape, G as validateModelsListParams, H as validateExecApprovalsNodeSetParams, Ht as listDevicePairing, I as validateDeviceTokenRevokeParams, J as validateNodeInvokeParams, Jt as summarizeDeviceTokens, K as validateNodeDescribeParams, Kt as revokeDeviceToken, L as validateDeviceTokenRotateParams, Lt as parseSessionLabel, M as validateDevicePairApproveParams, Mt as validateWizardStatusParams, N as validateDevicePairListParams, O as validateCronRunParams, Ot as validateWebLoginWaitParams, P as validateDevicePairRejectParams, Pt as ErrorCodes, Q as validateNodePairListParams, S as validateConfigSchemaParams, St as validateSkillsUpdateParams, T as validateCronAddParams, Tt as validateUpdateRunParams, U as validateExecApprovalsSetParams, Ut as rejectDevicePairing, V as validateExecApprovalsNodeGetParams, W as validateLogsTailParams, Wt as removePairedDevice, X as validateNodeListParams, Y as validateNodeInvokeResultParams, Z as validateNodePairApproveParams, _ as validateChatInjectParams, _t as validateSessionsRestoreParams, a as validateAgentWaitParams, b as validateConfigGetParams, bt as validateSkillsInstallParams, c as validateAgentsFilesGetParams, ct as validateSessionsCompactParams, d as validateAgentsListParams, dt as validateSessionsFavoriteFileParams, et as validateNodePairRequestParams, f as validateAgentsUpdateParams, ft as validateSessionsListParams, g as validateChatHistoryParams, gt as validateSessionsResolveParams, h as validateChatAbortParams, ht as validateSessionsResetParams, i as validateAgentParams, it as validatePushTestParams, j as validateCronUpdateParams, jt as validateWizardStartParams, k as validateCronRunsParams, kt as validateWizardCancelParams, l as validateAgentsFilesListParams, lt as validateSessionsDeleteFileParams, m as validateChannelsStatusParams, mt as validateSessionsPreviewParams, n as formatValidationErrors, nt as validateNodeRenameParams, o as validateAgentsCreateParams, ot as validateSendParams, p as validateChannelsLogoutParams, pt as validateSessionsPatchParams, q as validateNodeEventParams, qt as rotateDeviceToken, r as validateAgentIdentityParams, rt as validatePollParams, s as validateAgentsDeleteParams, st as validateSessionsAdoptFileParams, tt as validateNodePairVerifyParams, u as validateAgentsFilesSetParams, ut as validateSessionsDeleteParams, v as validateChatSendParams, vt as validateSessionsUsageParams, wt as validateTalkModeParams, x as validateConfigPatchParams, xt as validateSkillsStatusParams, y as validateConfigApplyParams, yt as validateSkillsBinsParams, zt as approveDevicePairing } from "./client-qUlxXXVJ.js";
10
- import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-ple9aZCT.js";
10
+ import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-BrRWr7Lj.js";
11
11
  import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, i as isGatewayMessageChannel, l as normalizeMessageChannel, n as isDeliverableMessageChannel, t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-C9dERklz.js";
12
12
  import { c as writeJsonAtomic, o as createAsyncLock, s as readJsonFile } from "./pairing-token-Byh6drgn.js";
13
13
  import { s as pickPrimaryLanIPv4 } from "./net-DZ5Ayk-W.js";
14
14
  import { i as normalizeInputProvenance } from "./input-provenance-D0lNkCf6.js";
15
- import { $n as resolveTtsAutoMode, B as dispatchInboundMessage, C as resolveAgentDeliveryPlan, Cn as enqueueSystemEvent, Cr as onAgentEvent, D as createOutboundSendDeps, Dt as normalizeCronJobPatch, Et as normalizeCronJobCreate, G as BARE_SESSION_RESET_PROMPT, Gn as stopSubagentsForRequester, Gt as persistBrowserProxyFiles, In as resolveAgentTimeoutMs, Jn as resolveUserTimezone, Qn as resolveTtsApiKey, Sn as parseVerboseOverride, V as createReplyDispatcher, Vn as formatZonedTimestamp, Wn as isAbortTrigger, Wt as applyBrowserProxyPaths, Xn as isTtsEnabled, Y as abortEmbeddedPiRun, Yn as getTtsProvider, Z as waitForEmbeddedPiRunEnd, Zn as isTtsProviderConfigured, Zt as scheduleGatewaySigusr1Restart, a as listSubagentRunsForRequester, ar as textToSpeech, bn as applyModelOverrideToSessionEntry, c as clearSessionQueues, ct as resolveOutboundSessionRoute, dt as resolveOutboundTarget, en as unbindThreadBindingsBySessionKey, er as resolveTtsConfig, hn as resolveSendPolicy, i as listDescendantRunsForRequester, ir as setTtsProvider, m as loadSymiPlugins, mn as normalizeSendPolicy, nr as resolveTtsProviderOrder, or as OPENAI_TTS_MODELS, rn as loadProviderUsageSummary, rr as setTtsEnabled, sr as OPENAI_TTS_VOICES, st as ensureOutboundSessionEntry, tn as normalizeGroupActivation, tr as resolveTtsPrefsPath, w as resolveAgentOutboundTarget, wn as isSystemEventContextChanged, wr as registerAgentRunContext, wt as writeRestartSentinel, x as agentCommand, xn as applyVerboseOverride, yt as formatDoctorNonInteractiveHint } from "./subagent-registry-DLyi3sgU.js";
16
- import { F as resolveMainSessionKey, I as resolveMainSessionKeyFromConfig, J as normalizeSessionDeliveryFields, N as resolveAgentMainSessionKey, P as resolveExplicitAgentSessionKey, R as snapshotSessionOrigin, S as stripEnvelopeFromMessages, _ as capArrayByJsonBytes, d as updateSessionStore, g as archiveSessionTranscripts, h as archiveFileOnDisk, o as loadSessionStore, t as extractDeliveryInfo, v as readSessionMessages, x as resolveSessionTranscriptCandidates, y as readSessionPreviewItemsFromTranscript } from "./sessions-oOAi4H3s.js";
15
+ import { $n as resolveTtsAutoMode, B as dispatchInboundMessage, C as resolveAgentDeliveryPlan, Cn as enqueueSystemEvent, Cr as onAgentEvent, D as createOutboundSendDeps, Dt as normalizeCronJobPatch, Et as normalizeCronJobCreate, G as BARE_SESSION_RESET_PROMPT, Gn as stopSubagentsForRequester, Gt as persistBrowserProxyFiles, In as resolveAgentTimeoutMs, Jn as resolveUserTimezone, Qn as resolveTtsApiKey, Sn as parseVerboseOverride, V as createReplyDispatcher, Vn as formatZonedTimestamp, Wn as isAbortTrigger, Wt as applyBrowserProxyPaths, Xn as isTtsEnabled, Y as abortEmbeddedPiRun, Yn as getTtsProvider, Z as waitForEmbeddedPiRunEnd, Zn as isTtsProviderConfigured, Zt as scheduleGatewaySigusr1Restart, a as listSubagentRunsForRequester, ar as textToSpeech, bn as applyModelOverrideToSessionEntry, c as clearSessionQueues, ct as resolveOutboundSessionRoute, dt as resolveOutboundTarget, en as unbindThreadBindingsBySessionKey, er as resolveTtsConfig, hn as resolveSendPolicy, i as listDescendantRunsForRequester, ir as setTtsProvider, m as loadSymiPlugins, mn as normalizeSendPolicy, nr as resolveTtsProviderOrder, or as OPENAI_TTS_MODELS, rn as loadProviderUsageSummary, rr as setTtsEnabled, sr as OPENAI_TTS_VOICES, st as ensureOutboundSessionEntry, tn as normalizeGroupActivation, tr as resolveTtsPrefsPath, w as resolveAgentOutboundTarget, wn as isSystemEventContextChanged, wr as registerAgentRunContext, wt as writeRestartSentinel, x as agentCommand, xn as applyVerboseOverride, yt as formatDoctorNonInteractiveHint } from "./subagent-registry-CsYeP8wc.js";
16
+ import { F as resolveMainSessionKey, I as resolveMainSessionKeyFromConfig, J as normalizeSessionDeliveryFields, N as resolveAgentMainSessionKey, P as resolveExplicitAgentSessionKey, R as snapshotSessionOrigin, S as stripEnvelopeFromMessages, _ as capArrayByJsonBytes, d as updateSessionStore, g as archiveSessionTranscripts, h as archiveFileOnDisk, o as loadSessionStore, t as extractDeliveryInfo, v as readSessionMessages, x as resolveSessionTranscriptCandidates, y as readSessionPreviewItemsFromTranscript } from "./sessions-BPD85pWA.js";
17
17
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
18
- import { n as createBrowserRouteDispatcher } from "./with-timeout-Cei98OCY.js";
19
- import { C as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-DFAium1x.js";
18
+ import { n as createBrowserRouteDispatcher } from "./with-timeout-BIXdW2Bg.js";
19
+ import { C as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-BLt_liXS.js";
20
20
  import { t as movePathToTrash } from "./trash-CWQQXWX3.js";
21
21
  import { n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-DNdWAq7b.js";
22
22
  import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-8sKPnzpp.js";
23
23
  import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-BUN71nd5.js";
24
- import { a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent } from "./session-utils-Ch5rIQbz.js";
25
- import { _ as requestNodePairing, g as renamePairedNode, h as rejectNodePairing, m as listNodePairing, o as getRemoteSkillEligibility, p as approveNodePairing, y as verifyNodeToken } from "./skill-commands-BVeV_mpq.js";
24
+ import { a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent } from "./session-utils-BPXkhuNM.js";
25
+ import { _ as requestNodePairing, g as renamePairedNode, h as rejectNodePairing, m as listNodePairing, o as getRemoteSkillEligibility, p as approveNodePairing, y as verifyNodeToken } from "./skill-commands-BSJONVkt.js";
26
26
  import { t as listAgentWorkspaceDirs } from "./workspace-dirs-CPNL2Acu.js";
27
27
  import { a as mergeExecApprovalsSocketDefaults, c as readExecApprovalsSnapshot, p as saveExecApprovals, r as ensureExecApprovals, s as normalizeExecApprovals } from "./exec-approvals-BhFq_Iv9.js";
28
28
  import { i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, t as discoverAllSessions } from "./session-cost-usage-C-v6E-Lz.js";
29
29
  import { t as getChannelActivity } from "./channel-activity-myOnmDZi.js";
30
30
  import { n as normalizePollInput } from "./polls-DXeUmcgz.js";
31
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-CSbQSkSn.js";
31
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-Ce4HMDRY.js";
32
32
  import { i as parseAbsoluteTimeMs } from "./stagger-CQar2eKe.js";
33
- import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-09M-gWu4.js";
33
+ import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-7H_XiJt-.js";
34
34
  import { r as getLastHeartbeatEvent } from "./heartbeat-visibility-B8TDjqpW.js";
35
- import { t as buildChannelUiCatalog } from "./catalog-DLQFKucJ.js";
35
+ import { t as buildChannelUiCatalog } from "./catalog-buoA8ik4.js";
36
36
  import { t as WizardCancelledError } from "./prompts-m1IJwIAx.js";
37
37
  import { t as resolveChannelDefaultAccountId } from "./helpers-cLP5YLeQ.js";
38
38
  import { t as buildChannelAccountSnapshot } from "./status-BUedPCLb.js";
39
- import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-G3JpLuYZ.js";
40
- import { r as getStatusSummary } from "./status-DALZR6Rh.js";
41
- import { c as setHeartbeatsEnabled } from "./health-uSVTJefC.js";
39
+ import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-DgAM_dWL.js";
40
+ import { r as getStatusSummary } from "./status-Ut-dfDT0.js";
41
+ import { c as setHeartbeatsEnabled } from "./health-C7HtwYDj.js";
42
42
  import { m as normalizeUpdateChannel } from "./update-check-ZdimP1aU.js";
43
- import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-DhAfcmF5.js";
44
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-B8-mSnnL.js";
43
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-CL2MBhWP.js";
44
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DIjsIDbS.js";
45
45
  import { t as resolveSystemRunCommand } from "./system-run-command-ByVa3txU.js";
46
- import { t as installSkill } from "./skills-install-1ZdwGTnh.js";
47
- import { t as runGatewayUpdate } from "./update-runner-DnEVHl6G.js";
46
+ import { t as installSkill } from "./skills-install-Por3jP0P.js";
47
+ import { t as runGatewayUpdate } from "./update-runner-BE6kDMsw.js";
48
48
  import { spawnSync } from "node:child_process";
49
49
  import * as os$1 from "node:os";
50
50
  import os from "node:os";
@@ -3365,6 +3365,45 @@ const browserHandlers = { "browser.request": async ({ params, respond, context }
3365
3365
 
3366
3366
  //#endregion
3367
3367
  //#region src/gateway/server-methods/channels.ts
3368
+ function readOutlookConnectionState() {
3369
+ const home = process.env.HOME || process.env.USERPROFILE;
3370
+ if (!home) return {
3371
+ configured: false,
3372
+ connected: false
3373
+ };
3374
+ const credsPath = path.join(home, ".symi", "credentials", "outlook.json");
3375
+ let raw;
3376
+ try {
3377
+ raw = fs.readFileSync(credsPath, "utf-8");
3378
+ } catch {
3379
+ return {
3380
+ configured: false,
3381
+ connected: false
3382
+ };
3383
+ }
3384
+ let creds;
3385
+ try {
3386
+ creds = JSON.parse(raw);
3387
+ } catch {
3388
+ return {
3389
+ configured: true,
3390
+ connected: false
3391
+ };
3392
+ }
3393
+ const expires = typeof creds.expires === "number" ? creds.expires : 0;
3394
+ const hasRefresh = typeof creds.refresh === "string" && creds.refresh.length > 0;
3395
+ const notExpired = Date.now() < expires;
3396
+ const connected = notExpired || hasRefresh;
3397
+ const tokenState = notExpired ? "valid" : hasRefresh ? "expired-will-refresh" : "expired-no-refresh";
3398
+ return {
3399
+ configured: true,
3400
+ connected,
3401
+ email: typeof creds.email === "string" ? creds.email : void 0,
3402
+ displayName: typeof creds.displayName === "string" ? creds.displayName : void 0,
3403
+ tokenState,
3404
+ updatedAt: typeof creds.updatedAt === "string" ? creds.updatedAt : void 0
3405
+ };
3406
+ }
3368
3407
  async function logoutChannelAccount(params) {
3369
3408
  const resolvedAccountId = params.accountId?.trim() || params.plugin.config.defaultAccountId?.(params.cfg) || params.plugin.config.listAccountIds(params.cfg)[0] || DEFAULT_ACCOUNT_ID;
3370
3409
  const account = params.plugin.config.resolveAccount(params.cfg, resolvedAccountId);
@@ -3503,6 +3542,7 @@ const channelsHandlers = {
3503
3542
  accountsMap[plugin.id] = accounts;
3504
3543
  defaultAccountIdMap[plugin.id] = defaultAccountId;
3505
3544
  }
3545
+ channelsMap.outlook = readOutlookConnectionState();
3506
3546
  respond(true, payload, void 0);
3507
3547
  },
3508
3548
  "channels.logout": async ({ params, respond, context }) => {
@@ -6336,6 +6376,63 @@ const deviceHandlers = {
6336
6376
  }
6337
6377
  };
6338
6378
 
6379
+ //#endregion
6380
+ //#region src/gateway/server-methods/docs.ts
6381
+ /**
6382
+ * Whitelist of doc keys the Glass UI docs viewer can fetch. Each value is a
6383
+ * path relative to the Symi package root. Keys are exposed over the RPC;
6384
+ * paths are not — so the client cannot request arbitrary files.
6385
+ *
6386
+ * Docs here are the short viewer-specific copies at docs/connections/*.md.
6387
+ * The longer MDX-flavoured docs at docs/channels/*.md are intended for the
6388
+ * hosted Mintlify site and are not served through this endpoint because
6389
+ * marked.js in the browser cannot render Mintlify components.
6390
+ */
6391
+ const DOCS_WHITELIST = {
6392
+ email: "docs/connections/email.md",
6393
+ slack: "docs/connections/slack.md",
6394
+ msteams: "docs/connections/msteams.md"
6395
+ };
6396
+ const docsHandlers = { "docs.get": async ({ params, respond }) => {
6397
+ const rawKey = params.key;
6398
+ if (typeof rawKey !== "string" || !rawKey.trim()) {
6399
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, "docs.get requires a string `key` param"));
6400
+ return;
6401
+ }
6402
+ const key = rawKey.trim();
6403
+ const relPath = DOCS_WHITELIST[key];
6404
+ if (!relPath) {
6405
+ respond(false, void 0, errorShape(ErrorCodes.INVALID_REQUEST, `unknown docs key: ${key} (allowed: ${Object.keys(DOCS_WHITELIST).join(", ")})`));
6406
+ return;
6407
+ }
6408
+ const packageRoot = await resolveSymiPackageRoot({
6409
+ cwd: process.cwd(),
6410
+ argv1: process.argv[1],
6411
+ moduleUrl: import.meta.url
6412
+ });
6413
+ if (!packageRoot) {
6414
+ respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, "could not resolve Symi package root"));
6415
+ return;
6416
+ }
6417
+ const fullPath = path.join(packageRoot, relPath);
6418
+ let markdown;
6419
+ try {
6420
+ markdown = await fs$1.readFile(fullPath, "utf-8");
6421
+ } catch (err) {
6422
+ if (err?.code === "ENOENT") {
6423
+ respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, `docs file not bundled in this Symi install: ${relPath}`));
6424
+ return;
6425
+ }
6426
+ respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, `failed to read docs file: ${String(err)}`));
6427
+ return;
6428
+ }
6429
+ respond(true, {
6430
+ key,
6431
+ path: relPath,
6432
+ markdown
6433
+ }, void 0);
6434
+ } };
6435
+
6339
6436
  //#endregion
6340
6437
  //#region src/gateway/server-methods/exec-approvals.ts
6341
6438
  function requireApprovalsBaseHash(params, snapshot, respond) {
@@ -7325,7 +7422,7 @@ const nodeHandlers = {
7325
7422
  const p = params;
7326
7423
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
7327
7424
  await respondUnavailableOnThrow(respond, async () => {
7328
- const { handleNodeEvent } = await import("./server-node-events-CaL-a5Ml.js");
7425
+ const { handleNodeEvent } = await import("./server-node-events-Ba9K9DB9.js");
7329
7426
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
7330
7427
  await handleNodeEvent({
7331
7428
  deps: context.deps,
@@ -9331,6 +9428,7 @@ const coreGatewayHandlers = {
9331
9428
  ...chatHandlers,
9332
9429
  ...cronHandlers,
9333
9430
  ...deviceHandlers,
9431
+ ...docsHandlers,
9334
9432
  ...execApprovalsHandlers,
9335
9433
  ...webHandlers,
9336
9434
  ...modelsHandlers,