skykoi 2026.3.413 → 2026.3.415

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 (351) hide show
  1. package/dist/{APEv2Parser-Ba7yIvMy.js → APEv2Parser-CQZ2oGz-.js} +5 -5
  2. package/dist/{AbstractID3Parser-Cf2LaaLC.js → AbstractID3Parser-C-7q8rrD.js} +6 -6
  3. package/dist/{AiffParser-Cvx7vIj0.js → AiffParser-Cn8SBV-Z.js} +7 -7
  4. package/dist/{AsfParser-Bth1euSE.js → AsfParser-CoFe_l42.js} +6 -6
  5. package/dist/{DsdiffParser-Djnj5Jvy.js → DsdiffParser-Bm1hLHc0.js} +7 -7
  6. package/dist/{DsfParser-BQpFZzaT.js → DsfParser-CfEPvF1O.js} +7 -7
  7. package/dist/{FlacParser-DE4FjCdI.js → FlacParser-Bs6Pkx37.js} +7 -7
  8. package/dist/{ID3v1Parser-3ia97CSy.js → ID3v1Parser-Cb4WQDuj.js} +5 -5
  9. package/dist/{ID3v2Parser-UNJu2sI-.js → ID3v2Parser-0vs-_wxB.js} +6 -6
  10. package/dist/{ID3v2Token-DK6kpMKy.js → ID3v2Token-f446IQwP.js} +2 -2
  11. package/dist/{MP4Parser-BBDtQSXB.js → MP4Parser-s-GySkIU.js} +9 -9
  12. package/dist/{MatroskaParser-DAHp428F.js → MatroskaParser-C1hIY-G2.js} +6 -6
  13. package/dist/{MpegParser-iMWZ_SV9.js → MpegParser-D-wO6d-x.js} +7 -7
  14. package/dist/{MusepackParser-CO4rWQod.js → MusepackParser-C65CQBcT.js} +7 -7
  15. package/dist/{OggParser-Ch-yEZw-.js → OggParser-xoWjq9MC.js} +8 -8
  16. package/dist/{Util-B_52glhk.js → Util-CLkatdtN.js} +3 -3
  17. package/dist/{WavPackParser-D0DsAM2G.js → WavPackParser-BwNYQnde.js} +6 -6
  18. package/dist/{WaveParser-CADBh0bK.js → WaveParser-DirYR7f2.js} +8 -8
  19. package/dist/accounts-DumyUvSJ.js +125 -0
  20. package/dist/{acp-cli-B0oDXivn.js → acp-cli-kskPi80c.js} +28 -27
  21. package/dist/{admin-unlock-CjZRxHxf.js → admin-unlock-CDnzQ2kS.js} +4 -4
  22. package/dist/{archive-CUIu8SAN.js → archive-v5c_oZ0M.js} +1 -1
  23. package/dist/{audio-decode-C_GJII_g.js → audio-decode-Ch3D2H1P.js} +6 -6
  24. package/dist/{audio-recovery-B79LVKSU.js → audio-recovery-C9f1IYxd.js} +15 -14
  25. package/dist/{audit-C9kPnb6f.js → audit-CdSf5yc6.js} +19 -19
  26. package/dist/{auth-X5uq6vRI.js → auth-Bv7GrJIF.js} +2 -2
  27. package/dist/{auth-health-FPMBFAsj.js → auth-health-Bf0KV9dc.js} +1 -1
  28. package/dist/{accounts-C1p6Cppc.js → auth-store-B2FaPoSI.js} +18 -112
  29. package/dist/{bonjour-discovery-3LKAHtHL.js → bonjour-discovery-C601-zWo.js} +2 -2
  30. package/dist/build-info.json +3 -3
  31. package/dist/{ca-director-BZlhiXCn.js → ca-director-Cj4rkY2x.js} +18 -18
  32. package/dist/{call-CqDndKP3.js → call-D9x2Oink.js} +8 -8
  33. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  34. package/dist/{canvas-state-C3YRnkNr.js → canvas-state-Oz4Obrxj.js} +2 -2
  35. package/dist/{capture-service-DD-fGV_g.js → capture-service-x5KflO52.js} +11 -10
  36. package/dist/channel-auth-73FQh9tw.js +162 -0
  37. package/dist/{channel-options-D0QGvmil.js → channel-options-BO7KFBkh.js} +5 -5
  38. package/dist/{channel-selection-Di4awirs.js → channel-selection-Dj_CMzvz.js} +2 -2
  39. package/dist/{channel-summary-DNu96QpK.js → channel-summary-CBEmDyZF.js} +4 -4
  40. package/dist/{channels-cli-BxOzCyM9.js → channels-cli-CqD6eUNX.js} +111 -107
  41. package/dist/{channels-status-issues-CGTJwSbx.js → channels-status-issues-BUOqiSuy.js} +1 -1
  42. package/dist/{chrome-CRoiYOwt.js → chrome-B1HAd3Al.js} +7 -6
  43. package/dist/{clack-prompter-clPzQ9p-.js → clack-prompter-DI8b5Pl-.js} +5 -5
  44. package/dist/cli/daemon-cli.js +1 -1
  45. package/dist/cli-C0n-zgcl.js +134 -0
  46. package/dist/{cli-auto-update-Fy66y_VY.js → cli-auto-update-CWErkzCK.js} +10 -9
  47. package/dist/{client-Dzt29zIp.js → client-izHEJfss.js} +4 -4
  48. package/dist/{command-format-DOYW_19_.js → command-format-CW3d4lnG.js} +1 -1
  49. package/dist/{common-DDNLy4f0.js → common-g3KrUsDG.js} +2 -2
  50. package/dist/{companions-D-uSZqiI.js → companions-DOFb9Qnj.js} +1 -1
  51. package/dist/{completion-cli-CnAgvf3H.js → completion-cli-K8Ntq43i.js} +1 -1
  52. package/dist/{config-55EPjg8B.js → config-DkjBRbqs.js} +1 -1
  53. package/dist/{config-guard-K9XgRTDS.js → config-guard-qNjpWyqh.js} +54 -53
  54. package/dist/{configure-BNdKNcFL.js → configure-DN6Q8CDB.js} +21 -21
  55. package/dist/connect-DFIg7P1v.js +205 -0
  56. package/dist/{context-digest-Br8pwgY-.js → context-digest-CjHi0Y7g.js} +21 -20
  57. package/dist/{control-service-DQ32SBGJ.js → control-service-RpKA-_F0.js} +5 -5
  58. package/dist/{control-ui-assets-D4o4damy.js → control-ui-assets-D2wZfVim.js} +3 -3
  59. package/dist/{core-BlHif_ps.js → core-CeDpMYqo.js} +4 -4
  60. package/dist/{cron-cli-B7PghB4q.js → cron-cli-wtbQqot6.js} +33 -31
  61. package/dist/{daemon-cli-DdySqCD6.js → daemon-cli-Cyae4A7P.js} +24 -23
  62. package/dist/{daemon-runtime-DIgqhoVa.js → daemon-runtime-Cw8HN1z_.js} +5 -5
  63. package/dist/{deliver-uOIbsOCt.js → deliver-ClVjz43p.js} +12 -11
  64. package/dist/{deps-CNr0CXJR.js → deps-CVjDioW-.js} +2 -2
  65. package/dist/{devices-cli-Cu-yCMqM.js → devices-cli-DwveHngR.js} +25 -24
  66. package/dist/{diagnostics-6vXdnH8k.js → diagnostics-Db0yQkCa.js} +1 -1
  67. package/dist/{directory-cli-DstkgbDm.js → directory-cli-BXkyZjke.js} +28 -26
  68. package/dist/{dispatcher-BHYC2Mdu.js → dispatcher-D7EzbSw7.js} +1 -1
  69. package/dist/{dist-Pt-v-K0u.js → dist-ButgT5Gk.js} +5 -5
  70. package/dist/{dist-Ck6BZtRQ.js → dist-D2ZXRCQL.js} +6 -6
  71. package/dist/{dist-3zY5f01M.js → dist-De2BpLLK.js} +22 -22
  72. package/dist/{dist-UoOHg1p0.js → dist-DsdylfIW.js} +1 -1
  73. package/dist/{dist-cjs-BEAwDaaU.js → dist-cjs-B46jZvHR.js} +6 -6
  74. package/dist/{dist-cjs-BJYy2Uqb.js → dist-cjs-BATrBklJ.js} +1 -1
  75. package/dist/{dist-cjs-BNz9SzpQ.js → dist-cjs-BCXeXC0s.js} +2 -2
  76. package/dist/{dist-cjs-BzLua_ko.js → dist-cjs-BZIxvyyU.js} +11 -11
  77. package/dist/{dist-cjs-kBOJ196l.js → dist-cjs-BbzAggWT.js} +13 -13
  78. package/dist/{dist-cjs-Du3syY2f.js → dist-cjs-C8pwHZPt.js} +6 -6
  79. package/dist/{dist-cjs-JmgVfA8J.js → dist-cjs-CgNW7rsM.js} +2 -2
  80. package/dist/{dist-cjs-D9zWZLJo.js → dist-cjs-DIUV7iyC.js} +10 -10
  81. package/dist/{dist-cjs-C1qVVHND.js → dist-cjs-DSUoo7Hz.js} +1 -1
  82. package/dist/{dist-cjs-D8BOnVEk.js → dist-cjs-Dbma9Rg0.js} +5 -5
  83. package/dist/{dist-cjs-BVRU5Qt8.js → dist-cjs-DpY0BfdE.js} +6 -6
  84. package/dist/{dist-cjs-DN_VwS5V.js → dist-cjs-DuP7bijj.js} +1 -1
  85. package/dist/{dist-cjs-Du0zR-Ai.js → dist-cjs-iuUWDGbR.js} +2 -2
  86. package/dist/{dist-cjs-D2RXwDOe.js → dist-cjs-n19fPEyx.js} +3 -3
  87. package/dist/{dns-cli-C18PVD14.js → dns-cli-6Xd6yB_s.js} +23 -22
  88. package/dist/{docs-cli-BTLH5vYy.js → docs-cli-Di4KF_zE.js} +20 -19
  89. package/dist/{doctor-Co47_2NL.js → doctor-CYGTkAl0.js} +44 -43
  90. package/dist/{doctor-completion-BQuJ38kv.js → doctor-completion-BmQxtaJp.js} +6 -6
  91. package/dist/{dotenv-d4aPJ7q2.js → dotenv-sFSCefLS.js} +1 -1
  92. package/dist/{ensure-local-gateway-Xk7ir7zS.js → ensure-local-gateway-DL9v_WFE.js} +5 -5
  93. package/dist/entry.js +9 -8
  94. package/dist/{env-C2ovlUPG.js → env-BEtXFLod.js} +2 -2
  95. package/dist/{event-streams-R6AXkEMn.js → event-streams-ZjOK6A9_.js} +1 -1
  96. package/dist/{exec-f0H7lrAS.js → exec-C3toirSW.js} +2 -2
  97. package/dist/{exec-approvals-cli-CV8HbMJS.js → exec-approvals-cli-CU__ZvF-.js} +32 -31
  98. package/dist/{exec-approvals-evaluate-Mqaz3DKH.js → exec-approvals-evaluate-BYtiDK0u.js} +2 -2
  99. package/dist/{exec-approvals-io-Dzpqn78T.js → exec-approvals-io-CFVKuSeR.js} +1 -1
  100. package/dist/extension-api.js +88 -85
  101. package/dist/{first-run-Bfh6lhfa.js → first-run-CFgztpNJ.js} +2 -2
  102. package/dist/{flac-C4DRRmjE.js → flac-BvxXqQ1i.js} +0 -0
  103. package/dist/{gateway-cli-BpSWIzPr.js → gateway-cli-Bw46AFDg.js} +318 -265
  104. package/dist/gateway-client.js +8 -7
  105. package/dist/{gateway-rpc-DwTpsQgX.js → gateway-rpc-Dsim6rTp.js} +3 -3
  106. package/dist/{github-copilot-auth-BEsuL6VZ.js → github-copilot-auth-W7sylWjb.js} +11 -11
  107. package/dist/globals-4hwkGgXA.js +221 -0
  108. package/dist/{gmail-setup-utils-kVh_mWJI.js → gmail-setup-utils-By51E-G_.js} +3 -3
  109. package/dist/{graphics-terminal-setup-eucacjsj.js → graphics-terminal-setup-CPrRp08U.js} +8 -7
  110. package/dist/{health-format-BFZbZLTC.js → health-format-BbpMt6U1.js} +18 -17
  111. package/dist/{help-format-Bz-E4Xsi.js → help-format-DaracUAB.js} +1 -1
  112. package/dist/helpers-Bf_7MMN1.js +12 -0
  113. package/dist/{hooks-cli-E4SEBBSJ.js → hooks-cli-Y2YRhPHM.js} +93 -90
  114. package/dist/{hooks-status-Cr0qf9U9.js → hooks-status-NwL9AkZD.js} +5 -5
  115. package/dist/{identify-D9fBKIKv.js → identify-CHP8NQh2.js} +2 -2
  116. package/dist/{image-BQrsvGIN.js → image-Xhv1WbJY.js} +6 -6
  117. package/dist/{image-ops-5RRlAQ0c.js → image-ops-C45aI2Og.js} +3 -3
  118. package/dist/index.js +143 -139
  119. package/dist/{installs-PogP5yqW.js → installs-DYxVB0wb.js} +5 -5
  120. package/dist/{io-BiSyGUoT.js → io-lVJPpZa9.js} +7 -7
  121. package/dist/{koi-Cjk48UJ2.js → koi-B-adVRJ0.js} +18 -18
  122. package/dist/{koi-event-bridge-DeLARijk.js → koi-event-bridge-DcS7JxM8.js} +2 -2
  123. package/dist/{koi-scope-C15QLwY-.js → koi-scope-Cagum3pM.js} +6 -6
  124. package/dist/{koi-utterance-trigger-DBXY1dq5.js → koi-utterance-trigger-DEVLYg_A.js} +1 -1
  125. package/dist/{ledger-cli-DjgehGEF.js → ledger-cli-1TD3AiqE.js} +1 -1
  126. package/dist/{lib-CbWkbLty.js → lib-B1krrDBw.js} +3 -3
  127. package/dist/{lib-DGjy3PZ_.js → lib-CqBTO5i4.js} +24 -24
  128. package/dist/{lib-JFtVlWtn.js → lib-DUQWl06-.js} +1 -1
  129. package/dist/{lib-9wRl5N4X.js → lib-yPXHDJsX.js} +1 -1
  130. package/dist/{links-BY_N2dMU.js → links-BqdU0TFi.js} +1 -1
  131. package/dist/{logger-Door90g0.js → logger-aJ6leLZh.js} +2 -1
  132. package/dist/{logging-C3sRv-iX.js → logging-B2js4Jgc.js} +1 -1
  133. package/dist/{login-JCFx5Pzl.js → login-oFK0z7-J.js} +11 -11
  134. package/dist/{login-qr-DAZi8Nkf.js → login-qr-DPn0cTK-.js} +14 -12
  135. package/dist/{logs-cli-B64FQ0sG.js → logs-cli-DmTobA9e.js} +28 -27
  136. package/dist/{manager-DH-1An5c.js → manager-BVWrev6y.js} +9 -9
  137. package/dist/{manifest-registry-Y19rtw98.js → manifest-registry-Ckw3Vy2p.js} +1 -1
  138. package/dist/{message-DLdOmEc7.js → message-BGysnvPK.js} +10 -255
  139. package/dist/{message-channel-Cy9b1PGA.js → message-channel-CaFjzGb5.js} +1 -1
  140. package/dist/{model-selection-CKLFiLpY.js → model-selection-CmKBBKeL.js} +17 -17
  141. package/dist/{models-cli-ZJ_KPSlL.js → models-cli-BvE3ukyD.js} +97 -94
  142. package/dist/{models-config-DoNNjXe6.js → models-config-CmUg-3zr.js} +2 -2
  143. package/dist/{mpg123-decoder-ChMVLi_j.js → mpg123-decoder-B8VURVkf.js} +0 -0
  144. package/dist/{multipart-parser-C4YpL2Da.js → multipart-parser-notKFbBp.js} +1 -1
  145. package/dist/{net-CtMv6JrN.js → net-Cfif-CzD.js} +1 -1
  146. package/dist/{node-cli-D4giluTo.js → node-cli-D6ZR8rGu.js} +44 -43
  147. package/dist/{node-service-Bb6tgGQx.js → node-service-FpI5_Kev.js} +2 -2
  148. package/dist/{nodes-cli-ChTsJXUH.js → nodes-cli-BJ3UifXn.js} +31 -30
  149. package/dist/{nodes-screen-Bq-MvKAS.js → nodes-screen-Cceyy2v6.js} +1 -1
  150. package/dist/{note-PNq_JEQe.js → note-Dgsh9TJE.js} +2 -2
  151. package/dist/nylas-U2wHlPwX.js +269 -0
  152. package/dist/{ogg-opus-decoder-rGN6IMJw.js → ogg-opus-decoder-BPruHiaR.js} +0 -0
  153. package/dist/{ogg-vorbis-BPcbvdod.js → ogg-vorbis-niFy7Gax.js} +0 -0
  154. package/dist/{onboard-channels-C7E-puRC.js → onboard-channels-DXgzUduh.js} +10 -10
  155. package/dist/{onboard-helpers-nDN4y46S.js → onboard-helpers-o1U-dn2n.js} +12 -12
  156. package/dist/{onboard-skills-BdvkU1bg.js → onboard-skills-D2PuvOlq.js} +16 -16
  157. package/dist/{onboarding-sBRViahV.js → onboarding-KjPht-vT.js} +47 -46
  158. package/dist/{opus-ml-BMchJC0t.js → opus-ml-C1IgeK4A.js} +0 -0
  159. package/dist/{pairing-cli-bpewtve0.js → pairing-cli-BKTkyxLs.js} +28 -26
  160. package/dist/{pairing-labels-BuxC93RD.js → pairing-labels-CaaA_Kt-.js} +1 -1
  161. package/dist/{pairing-store-CAfuV0tG.js → pairing-store-BJq_rv5S.js} +2 -2
  162. package/dist/{path-env-CnhsG0TT.js → path-env-1_C-JRUU.js} +2 -2
  163. package/dist/{paths-CizQHpAk.js → paths-6OemP7gm.js} +1 -1
  164. package/dist/{photon_rs-BV1jsHW1.js → photon_rs-DGS5hX8b.js} +1 -1
  165. package/dist/{pi-embedded-helpers-DFn976W-.js → pi-embedded-helpers-BnsMD0to.js} +4 -4
  166. package/dist/{pi-model-discovery-BUOhjZaJ.js → pi-model-discovery-IRS5Bhx-.js} +1 -1
  167. package/dist/{pi-tool-definition-adapter-BjyavKfi.js → pi-tool-definition-adapter-D9igP7jU.js} +4 -4
  168. package/dist/{pi-tools.policy-BFFg8jIe.js → pi-tools.policy-DDff0t8l.js} +6 -6
  169. package/dist/{platform-billing-BjToqDnR.js → platform-billing-D8f18ubj.js} +1 -1
  170. package/dist/{plugin-auto-enable-7Sq0kaQq.js → plugin-auto-enable-D5QYYZDH.js} +5 -5
  171. package/dist/{plugin-registry-Dz7tFOeN.js → plugin-registry-Dd3gYaF4.js} +4 -4
  172. package/dist/plugin-sdk/index.js +7 -7
  173. package/dist/{plugins-CD53Y-wp.js → plugins-C450DgVP.js} +12 -6
  174. package/dist/{plugins-cli-CuSEtiZR.js → plugins-cli-CXwGKG5Z.js} +94 -91
  175. package/dist/{ports-B03Y1yyv.js → ports-C6-lHXUM.js} +2 -2
  176. package/dist/{proactive-eval-BQcSSk5h.js → proactive-eval-BCMSOwxK.js} +11 -11
  177. package/dist/{program-CfMxAtmt.js → program-BvCROCKp.js} +12 -11
  178. package/dist/{progress-B8PPYDDC.js → progress-QVvXnEt-.js} +2 -2
  179. package/dist/{prompt-style-CJRaWg4h.js → prompt-style-DUZn5AjO.js} +1 -1
  180. package/dist/{pw-ai-YPXPbYy6.js → pw-ai-BkS6uRkc.js} +10 -9
  181. package/dist/{qmd-manager-ZItBTBzr.js → qmd-manager-56XH3jlC.js} +13 -12
  182. package/dist/{register.subclis-D0eQnEI6.js → register.subclis-D4icX3hP.js} +35 -35
  183. package/dist/{registry-xBtEGPIj.js → registry-BDi8qkVO.js} +1 -1
  184. package/dist/{reply-D63OCD4n.js → reply-CDp9q1Vc.js} +105 -102
  185. package/dist/{restart-sentinel-CDgY6TKs.js → restart-sentinel-B3dQ684O.js} +1 -1
  186. package/dist/{rich-wmQhKBIx.js → rich-BaT-R-Bj.js} +1 -1
  187. package/dist/{routes-DXSsSe_K.js → routes-C_GpVEDZ.js} +6 -6
  188. package/dist/{rpc-Cq7TWXCW.js → rpc-YhAQzNlL.js} +3 -3
  189. package/dist/{run-code-tool-Cr01FqsJ.js → run-code-tool-NbWgGyDu.js} +1 -1
  190. package/dist/run-main-q7BkaqXe.js +273 -0
  191. package/dist/{runner-Dv3coC2q.js → runner-CpnbA-2N.js} +13 -13
  192. package/dist/{runtime-guard-qFkyrhAB.js → runtime-guard-QJDAE0ub.js} +1 -1
  193. package/dist/{sandbox-cli-B199VfMw.js → sandbox-cli-terA6EM2.js} +41 -39
  194. package/dist/{sandbox-B-lCuykD.js → sandbox-zPcju-bV.js} +12 -12
  195. package/dist/{security-cli-BIn7mAm0.js → security-cli-B5qTCPSE.js} +49 -47
  196. package/dist/{server-context-CNfswlAM.js → server-context-Dej8i418.js} +6 -6
  197. package/dist/{server-node-events-2YS7Vdsp.js → server-node-events-DuXlBGXC.js} +92 -89
  198. package/dist/{service-D1-PnhZe.js → service-Bz3BLFuQ.js} +3 -3
  199. package/dist/{service-audit-BVZGmzLW.js → service-audit-CijWRKqR.js} +4 -4
  200. package/dist/{session-cost-usage-C71VC_PD.js → session-cost-usage-Nmd8bPic.js} +2 -2
  201. package/dist/{sessions-DnPG9BI4.js → sessions-BZBtTQCk.js} +10 -10
  202. package/dist/{shared-CHxb6-Fi.js → shared-B3rppGQN.js} +4 -4
  203. package/dist/{shared-tNGHWtW-.js → shared-CZVRangM.js} +6 -5
  204. package/dist/{signin-TesaorA1.js → signin-CvHnO52D.js} +8 -8
  205. package/dist/{skills-cli-GT4yy2a4.js → skills-cli-EiZ6YlCl.js} +29 -28
  206. package/dist/{skills-status-sMAyGPXV.js → skills-status-DzGR295b.js} +4 -4
  207. package/dist/{skills-C_t45j3T.js → skills-w4q7XySt.js} +6 -6
  208. package/dist/{sqlite-Ctl23tcn.js → sqlite-C0QbeU3t.js} +1 -1
  209. package/dist/{src-Xm2tVyWL.js → src-B1X0ChaP.js} +2 -2
  210. package/dist/{sso-oidc-BhUPsnaI.js → sso-oidc-BE_eNisy.js} +8 -8
  211. package/dist/{status-pq91F0kp.js → status-D2sLFE9B.js} +4 -1
  212. package/dist/{status-DFwHiX7z.js → status-unalYyJY.js} +4 -4
  213. package/dist/{sts-CaZ-4Vb6.js → sts-D_bZA39E.js} +8 -8
  214. package/dist/{subsystem-nnRnHSFk.js → subsystem-gU4M25gl.js} +3 -220
  215. package/dist/{surface-tool-CAcZRxFq.js → surface-tool-DqCgANSk.js} +4 -4
  216. package/dist/{system-cli-BD9fmtCg.js → system-cli-B-e40tyP.js} +26 -25
  217. package/dist/{system-prompt-snippet-CVkVKHlK.js → system-prompt-snippet-BPa9MMNP.js} +1 -1
  218. package/dist/{systemd-DZP4s4qd.js → systemd-5f0_yK5K.js} +3 -3
  219. package/dist/{systemd-hints-CMiNS6NK.js → systemd-hints-CALsumZt.js} +1 -1
  220. package/dist/{systemd-linger-DHSd9ikR.js → systemd-linger-sox_shlO.js} +2 -2
  221. package/dist/{table-DIfWcies.js → table-SaWmGh81.js} +2 -2
  222. package/dist/{tailscale-BOh3Z_vn.js → tailscale-BX7pFm3E.js} +3 -2
  223. package/dist/{tool-display-DvcBjgri.js → tool-display-Dg79vOSW.js} +2 -2
  224. package/dist/{tool-images-BIkTcSan.js → tool-images-BscwczCb.js} +2 -2
  225. package/dist/tui-cli-DtHxmn2U.js +96 -0
  226. package/dist/{tui-D-n6UhuD.js → tui-eV0dj-x4.js} +30 -30
  227. package/dist/{tui-shell-DOjzcOig.js → tui-shell-BNyj67Rq.js} +9 -9
  228. package/dist/{update-DrQupmGI.js → update-CXkUTz34.js} +3 -3
  229. package/dist/{update-cli-9PXRA3S_.js → update-cli-CT9T8iOX.js} +121 -118
  230. package/dist/{update-runner-DHNkj8-z.js → update-runner-DbYE4uWc.js} +4 -4
  231. package/dist/{usage-reporter-CpMmHkw7.js → usage-reporter-Bx9Nr7UM.js} +1 -1
  232. package/dist/{utilities-Dr7XUab8.js → utilities-L898lIwo.js} +1 -1
  233. package/dist/{utils-B1LOScGi.js → utils-BTCspqG1.js} +1 -1
  234. package/dist/{voices-cli-DXqGMgtw.js → voices-cli-B-U91QQ3.js} +5 -4
  235. package/dist/{webhooks-cli-BLPA1MZB.js → webhooks-cli-D3K-2gZv.js} +28 -27
  236. package/dist/{widearea-dns-BjWuJvtM.js → widearea-dns-zHPAPSiI.js} +1 -1
  237. package/dist/{ws-log-BzGMbHM2.js → ws-log-K0TDamKG.js} +4 -3
  238. package/dist/{zen-surface-DJHZWAux.js → zen-surface-DBpHONnk.js} +2 -2
  239. package/extensions/bluebubbles/package.json +1 -1
  240. package/extensions/copilot-proxy/package.json +1 -1
  241. package/extensions/diagnostics-otel/package.json +1 -1
  242. package/extensions/discord/package.json +1 -1
  243. package/extensions/feishu/package.json +1 -1
  244. package/extensions/google-antigravity-auth/package.json +1 -1
  245. package/extensions/google-gemini-cli-auth/package.json +1 -1
  246. package/extensions/googlechat/package.json +1 -1
  247. package/extensions/imessage/package.json +1 -1
  248. package/extensions/line/package.json +1 -1
  249. package/extensions/llm-task/package.json +1 -1
  250. package/extensions/lobster/package.json +1 -1
  251. package/extensions/matrix/CHANGELOG.md +10 -0
  252. package/extensions/matrix/package.json +1 -1
  253. package/extensions/mattermost/package.json +1 -1
  254. package/extensions/memory-core/package.json +1 -1
  255. package/extensions/memory-lancedb/package.json +1 -1
  256. package/extensions/minimax-portal-auth/package.json +1 -1
  257. package/extensions/msteams/CHANGELOG.md +10 -0
  258. package/extensions/msteams/package.json +1 -1
  259. package/extensions/nextcloud-talk/package.json +1 -1
  260. package/extensions/nostr/CHANGELOG.md +10 -0
  261. package/extensions/nostr/package.json +1 -1
  262. package/extensions/open-prose/package.json +1 -1
  263. package/extensions/signal/package.json +1 -1
  264. package/extensions/slack/package.json +1 -1
  265. package/extensions/telegram/package.json +1 -1
  266. package/extensions/tlon/package.json +1 -1
  267. package/extensions/twitch/CHANGELOG.md +10 -0
  268. package/extensions/twitch/package.json +1 -1
  269. package/extensions/voice-call/CHANGELOG.md +10 -0
  270. package/extensions/voice-call/package.json +1 -1
  271. package/extensions/whatsapp/package.json +1 -1
  272. package/extensions/zalo/CHANGELOG.md +10 -0
  273. package/extensions/zalo/package.json +1 -1
  274. package/extensions/zalouser/CHANGELOG.md +10 -0
  275. package/extensions/zalouser/package.json +1 -1
  276. package/package.json +1 -1
  277. package/dist/channel-auth-DCGvsTTl.js +0 -349
  278. package/dist/cli-BdW7rq8F.js +0 -131
  279. package/dist/helpers-4BXRutqw.js +0 -10
  280. package/dist/run-main-DGjB32Pl.js +0 -269
  281. package/dist/tui-cli-DdsPOyEw.js +0 -94
  282. /package/dist/{BasicParser--n6FLqcE.js → BasicParser-Ctdj2OB-.js} +0 -0
  283. /package/dist/{action-ledger-CJ4wxgFj.js → action-ledger-CZm1RLNd.js} +0 -0
  284. /package/dist/{ansi-By7x1TI7.js → ansi-aRwLYlzD.js} +0 -0
  285. /package/dist/{billing-alerts-DW7RyxM5.js → billing-alerts-CL95zVcj.js} +0 -0
  286. /package/dist/{boolean-D-3joTkO.js → boolean-B7w0pBkV.js} +0 -0
  287. /package/dist/{brew-CqrvYCjs.js → brew-BV6cdBLU.js} +0 -0
  288. /package/dist/{capture-cli-BF1NY1RT.js → capture-cli-DF6O2JDT.js} +0 -0
  289. /package/dist/{cli-utils-D4mTRuWj.js → cli-utils-uAyQZBvv.js} +0 -0
  290. /package/dist/{client-Gv_mpZR7.js → client-DBrkrrrl.js} +0 -0
  291. /package/dist/{codec-parser-T4JNCFj4.js → codec-parser-B5mYLNyt.js} +0 -0
  292. /package/dist/{constants-UedXN8EP.js → constants-BxOshTSm.js} +0 -0
  293. /package/dist/{core-CJWRLYUu.js → core-D6njtn4x.js} +0 -0
  294. /package/dist/{declarations-izhxPnzy.js → declarations-BCFE6K8P.js} +0 -0
  295. /package/dist/{device-identity-CnlyT2Si.js → device-identity-pxZl9iT8.js} +0 -0
  296. /package/dist/{dist-B01d37B6.js → dist-D6Sv3llW.js} +0 -0
  297. /package/dist/{dist-cjs-C8lX5Xs0.js → dist-cjs-CXWR2P_v.js} +0 -0
  298. /package/dist/{dist-cjs-CHDKNo5p.js → dist-cjs-Do92MAUg.js} +0 -0
  299. /package/dist/{dist-cjs-DTH4CtR9.js → dist-cjs-eWAaYfPE.js} +0 -0
  300. /package/dist/{esm-CZZtQIhc.js → esm-BFVtSKFu.js} +0 -0
  301. /package/dist/{esm-kUSIWN2f.js → esm-DDykDtll.js} +0 -0
  302. /package/dist/{esm-shims-CZxOEdhX.js → esm-shims-DCx9WpXg.js} +0 -0
  303. /package/dist/{event-log-WbPUNukH.js → event-log-8Gy24Q8h.js} +0 -0
  304. /package/dist/{format-DtciOWIX.js → format-D-VAp4B3.js} +0 -0
  305. /package/dist/{from-Dfzfv9uw.js → from-DlxtjhdR.js} +0 -0
  306. /package/dist/{github-copilot-token-BqhLBQWA.js → github-copilot-token-BlwFn4nA.js} +0 -0
  307. /package/dist/{helpers-CI2sc-CB.js → helpers-Dano2vlT.js} +0 -0
  308. /package/dist/{is-main-CQX7mFIJ.js → is-main-K-6EEb_n.js} +0 -0
  309. /package/dist/{koi-events-DVxTOxY3.js → koi-events-D5PuKPcz.js} +0 -0
  310. /package/dist/{lib-C0cU2Bav.js → lib-Dinb6tv6.js} +0 -0
  311. /package/dist/{live-broadcast-CifQ8Lzc.js → live-broadcast-BIlUXK-0.js} +0 -0
  312. /package/dist/{logging-BQKv640H.js → logging-q4KyMmY-.js} +0 -0
  313. /package/dist/{native-window-CMnOFmyK.js → native-window-DumLjKeL.js} +0 -0
  314. /package/dist/{node-pairing-WRkSoKg6.js → node-pairing-CYNP1g4x.js} +0 -0
  315. /package/dist/{node-pty-gtBUnxUN.js → node-pty-DvuSPjhQ.js} +0 -0
  316. /package/dist/{node-wav-CwlOpKY0.js → node-wav-kZ_sIssA.js} +0 -0
  317. /package/dist/{package-DhcmafWY.js → package-DKdaLkus.js} +0 -0
  318. /package/dist/{parse-log-line-BFXEIELd.js → parse-log-line-wGjegDXe.js} +0 -0
  319. /package/dist/{parse-C-X5VUYI.js → parse-lztFbXu9.js} +0 -0
  320. /package/dist/{parse-timeout-kGl8Fsas.js → parse-timeout-CIqovswJ.js} +0 -0
  321. /package/dist/{pdf-BohVLTJL.js → pdf-B52QHMdD.js} +0 -0
  322. /package/dist/{permissions-cli-DXadkGgv.js → permissions-cli-Dnf0d1au.js} +0 -0
  323. /package/dist/{profile-utils-Ls8shSxv.js → profile-utils-yCmvj13C.js} +0 -0
  324. /package/dist/{prompts-BC5TXS0_.js → prompts-CNzp9M83.js} +0 -0
  325. /package/dist/{proxy-from-env-BCOB9yxp.js → proxy-from-env-BI6o-lgV.js} +0 -0
  326. /package/dist/{qoa-format-BboMlPJa.js → qoa-format-HAraj5c4.js} +0 -0
  327. /package/dist/{readability-C_v10IzL.js → readability-CkKLYpoQ.js} +0 -0
  328. /package/dist/{readiness-CCfUXab4.js → readiness-DjdWO9Fm.js} +0 -0
  329. /package/dist/{redact-ClVwO7Nn.js → redact-ZAoMZTIY.js} +0 -0
  330. /package/dist/{runtime-koi-overlay-DeKEFkkl.js → runtime-koi-overlay-BS4Nza1K.js} +0 -0
  331. /package/dist/{satisfies-DCdzcNI3.js → satisfies-D2Taq9gG.js} +0 -0
  332. /package/dist/{session-key-B2OXLVi_.js → session-key-BIl6GRQN.js} +0 -0
  333. /package/dist/{skill-scanner-CLckczzl.js → skill-scanner-b9MamBYt.js} +0 -0
  334. /package/dist/{skykoi-root-Dsv6eLbL.js → skykoi-root-Uqb_vFtv.js} +0 -0
  335. /package/dist/{source-map--hgaz8qG.js → source-map-_40euoWs.js} +0 -0
  336. /package/dist/{sqlite-vec-B9Q87Em9.js → sqlite-vec-D70r8h9V.js} +0 -0
  337. /package/dist/{src-BJiPQPqV.js → src-DR4wHj_N.js} +0 -0
  338. /package/dist/{streams-cli-DOF8VfLc.js → streams-cli-Buk4KNUn.js} +0 -0
  339. /package/dist/{tailnet-7u3DZ0jI.js → tailnet-CxR_pUEt.js} +0 -0
  340. /package/dist/{theme-CX-D7gOR.js → theme-Ql6JHKzG.js} +0 -0
  341. /package/dist/{tokens-DznGfpjQ.js → tokens-Duj-iWBS.js} +0 -0
  342. /package/dist/{tool-policy-CjSq72TW.js → tool-policy-BH452tj4.js} +0 -0
  343. /package/dist/{transcript-events-DNNIRVG1.js → transcript-events-CMT5U7Om.js} +0 -0
  344. /package/dist/{transcript-tools-BByi9l-4.js → transcript-tools-Dy472a2E.js} +0 -0
  345. /package/dist/{tslib.es6-17x8-pNU.js → tslib.es6-CmFrSJr0.js} +0 -0
  346. /package/dist/{types-DO4kgbma.js → types-BAAOnG0s.js} +0 -0
  347. /package/dist/{uint8array-extras-DBV0kdwr.js → uint8array-extras-LUxDELMC.js} +0 -0
  348. /package/dist/{version-B_FpLmDY.js → version-BM8pEsQj.js} +0 -0
  349. /package/dist/{warnings-Daj0i4A6.js → warnings-C2KFRM58.js} +0 -0
  350. /package/dist/{ws-D3TuFv3E.js → ws-C7lNTRNL.js} +0 -0
  351. /package/dist/{wsl-3CioBf4_.js → wsl-Dk7vKTAv.js} +0 -0
@@ -1,18 +1,19 @@
1
- import "./subsystem-nnRnHSFk.js";
1
+ import "./subsystem-gU4M25gl.js";
2
2
  import "./paths-VdmjGGyc.js";
3
- import "./theme-CX-D7gOR.js";
4
- import "./ansi-By7x1TI7.js";
5
- import "./utils-B1LOScGi.js";
6
- import "./logger-Door90g0.js";
7
- import "./exec-f0H7lrAS.js";
8
- import "./koi-scope-C15QLwY-.js";
9
- import { H as resolveEnvApiKey } from "./model-selection-CKLFiLpY.js";
10
- import "./dist-3zY5f01M.js";
11
- import "./dist-cjs-D9zWZLJo.js";
12
- import "./boolean-D-3joTkO.js";
13
- import "./env-C2ovlUPG.js";
14
- import "./github-copilot-token-BqhLBQWA.js";
15
- import { i as classifyBillingFailure, o as reportBillingAlert } from "./billing-alerts-DW7RyxM5.js";
3
+ import "./globals-4hwkGgXA.js";
4
+ import "./theme-Ql6JHKzG.js";
5
+ import "./ansi-aRwLYlzD.js";
6
+ import "./utils-BTCspqG1.js";
7
+ import "./logger-aJ6leLZh.js";
8
+ import "./exec-C3toirSW.js";
9
+ import "./koi-scope-Cagum3pM.js";
10
+ import { H as resolveEnvApiKey } from "./model-selection-CmKBBKeL.js";
11
+ import "./dist-De2BpLLK.js";
12
+ import "./dist-cjs-DIUV7iyC.js";
13
+ import "./boolean-B7w0pBkV.js";
14
+ import "./env-BEtXFLod.js";
15
+ import "./github-copilot-token-BlwFn4nA.js";
16
+ import { i as classifyBillingFailure, o as reportBillingAlert } from "./billing-alerts-CL95zVcj.js";
16
17
  import { appendFileSync, existsSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
17
18
  import { join } from "node:path";
18
19
  import { homedir } from "node:os";
@@ -1,23 +1,23 @@
1
1
  import { g as resolveStateDir, m as resolveOAuthDir, o as resolveConfigPath } from "./paths-VdmjGGyc.js";
2
- import { l as normalizeKoiId } from "./session-key-B2OXLVi_.js";
3
- import { n as runExec } from "./exec-f0H7lrAS.js";
4
- import { l as resolveKoiWorkspaceDir, r as resolveDefaultKoiId } from "./koi-scope-C15QLwY-.js";
5
- import { t as formatCliCommand } from "./command-format-DOYW_19_.js";
6
- import { D as INCLUDE_KEY, O as MAX_INCLUDE_DEPTH, r as createConfigIO } from "./io-BiSyGUoT.js";
7
- import { a as MANIFEST_KEY } from "./manifest-registry-Y19rtw98.js";
8
- import { n as listChannelPlugins } from "./plugins-CD53Y-wp.js";
9
- import { d as resolveSandboxToolPolicyForKoi, l as resolveSandboxConfigForKoi } from "./sandbox-B-lCuykD.js";
10
- import { s as resolveToolProfilePolicy } from "./tool-policy-CjSq72TW.js";
11
- import { i as loadWorkspaceSkillEntries } from "./skills-C_t45j3T.js";
12
- import { i as resolveBrowserConfig, o as resolveProfile } from "./server-context-CNfswlAM.js";
13
- import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-Cy9b1PGA.js";
14
- import { n as GatewayClient } from "./client-Dzt29zIp.js";
15
- import { t as buildGatewayConnectionDetails } from "./call-CqDndKP3.js";
16
- import { i as readChannelAllowFromStore } from "./pairing-store-CAfuV0tG.js";
17
- import { c as resolveNativeSkillsEnabled, n as isToolAllowedByPolicies, s as resolveNativeCommandsEnabled } from "./pi-tools.policy-BFFg8jIe.js";
18
- import { t as resolveChannelDefaultAccountId } from "./helpers-4BXRutqw.js";
19
- import { t as scanDirectoryWithSummary } from "./skill-scanner-CLckczzl.js";
20
- import { i as resolveGatewayAuth } from "./auth-X5uq6vRI.js";
2
+ import { l as normalizeKoiId } from "./session-key-BIl6GRQN.js";
3
+ import { n as runExec } from "./exec-C3toirSW.js";
4
+ import { l as resolveKoiWorkspaceDir, r as resolveDefaultKoiId } from "./koi-scope-Cagum3pM.js";
5
+ import { t as formatCliCommand } from "./command-format-CW3d4lnG.js";
6
+ import { D as INCLUDE_KEY, O as MAX_INCLUDE_DEPTH, r as createConfigIO } from "./io-lVJPpZa9.js";
7
+ import { a as MANIFEST_KEY } from "./manifest-registry-Ckw3Vy2p.js";
8
+ import { n as listChannelPlugins } from "./plugins-C450DgVP.js";
9
+ import { d as resolveSandboxToolPolicyForKoi, l as resolveSandboxConfigForKoi } from "./sandbox-zPcju-bV.js";
10
+ import { s as resolveToolProfilePolicy } from "./tool-policy-BH452tj4.js";
11
+ import { i as loadWorkspaceSkillEntries } from "./skills-w4q7XySt.js";
12
+ import { i as resolveBrowserConfig, o as resolveProfile } from "./server-context-Dej8i418.js";
13
+ import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-CaFjzGb5.js";
14
+ import { n as GatewayClient } from "./client-izHEJfss.js";
15
+ import { t as buildGatewayConnectionDetails } from "./call-D9x2Oink.js";
16
+ import { i as readChannelAllowFromStore } from "./pairing-store-BJq_rv5S.js";
17
+ import { c as resolveNativeSkillsEnabled, n as isToolAllowedByPolicies, s as resolveNativeCommandsEnabled } from "./pi-tools.policy-DDff0t8l.js";
18
+ import { n as resolveChannelDefaultAccountId } from "./helpers-Bf_7MMN1.js";
19
+ import { t as scanDirectoryWithSummary } from "./skill-scanner-b9MamBYt.js";
20
+ import { i as resolveGatewayAuth } from "./auth-Bv7GrJIF.js";
21
21
  import path from "node:path";
22
22
  import JSON5 from "json5";
23
23
  import os from "node:os";
@@ -1,5 +1,5 @@
1
- import { i as parseForwardedForClientIp, r as isTrustedProxyAddress, s as resolveGatewayClientIp } from "./net-CtMv6JrN.js";
2
- import { c as readTailscaleWhoisIdentity } from "./tailscale-BOh3Z_vn.js";
1
+ import { i as parseForwardedForClientIp, r as isTrustedProxyAddress, s as resolveGatewayClientIp } from "./net-Cfif-CzD.js";
2
+ import { c as readTailscaleWhoisIdentity } from "./tailscale-BX7pFm3E.js";
3
3
  import { timingSafeEqual } from "node:crypto";
4
4
 
5
5
  //#region src/gateway/auth.ts
@@ -1,4 +1,4 @@
1
- import { ft as resolveAuthProfileDisplayLabel } from "./model-selection-CKLFiLpY.js";
1
+ import { ft as resolveAuthProfileDisplayLabel } from "./model-selection-CmKBBKeL.js";
2
2
 
3
3
  //#region src/koi/auth-health.ts
4
4
  const DEFAULT_OAUTH_WARN_MS = 1440 * 60 * 1e3;
@@ -1,12 +1,26 @@
1
- import { S as getChildLogger, b as success, p as info, s as defaultRuntime } from "./subsystem-nnRnHSFk.js";
1
+ import { r as __exportAll } from "./chunk-D_gEzPfs.js";
2
+ import { s as defaultRuntime } from "./subsystem-gU4M25gl.js";
2
3
  import { m as resolveOAuthDir } from "./paths-VdmjGGyc.js";
3
- import { c as normalizeAccountId, t as DEFAULT_ACCOUNT_ID } from "./session-key-B2OXLVi_.js";
4
- import { h as resolveUserPath, u as jidToE164 } from "./utils-B1LOScGi.js";
4
+ import { d as getChildLogger, l as success, n as info } from "./globals-4hwkGgXA.js";
5
+ import { t as DEFAULT_ACCOUNT_ID } from "./session-key-BIl6GRQN.js";
6
+ import { h as resolveUserPath, u as jidToE164 } from "./utils-BTCspqG1.js";
5
7
  import fs from "node:fs";
6
8
  import path from "node:path";
7
9
  import fs$1 from "node:fs/promises";
8
10
 
9
11
  //#region src/web/auth-store.ts
12
+ var auth_store_exports = /* @__PURE__ */ __exportAll({
13
+ getWebAuthAgeMs: () => getWebAuthAgeMs,
14
+ hasWebCredsSync: () => hasWebCredsSync,
15
+ logWebSelfId: () => logWebSelfId,
16
+ logoutWeb: () => logoutWeb,
17
+ maybeRestoreCredsFromBackup: () => maybeRestoreCredsFromBackup,
18
+ readWebSelfId: () => readWebSelfId,
19
+ resolveDefaultWebAuthDir: () => resolveDefaultWebAuthDir,
20
+ resolveWebCredsBackupPath: () => resolveWebCredsBackupPath,
21
+ resolveWebCredsPath: () => resolveWebCredsPath,
22
+ webAuthExists: () => webAuthExists
23
+ });
10
24
  function resolveDefaultWebAuthDir() {
11
25
  return path.join(resolveOAuthDir(), "whatsapp", DEFAULT_ACCOUNT_ID);
12
26
  }
@@ -140,112 +154,4 @@ function logWebSelfId(authDir = resolveDefaultWebAuthDir(), runtime = defaultRun
140
154
  }
141
155
 
142
156
  //#endregion
143
- //#region src/web/accounts.ts
144
- function listConfiguredAccountIds(cfg) {
145
- const accounts = cfg.channels?.whatsapp?.accounts;
146
- if (!accounts || typeof accounts !== "object") return [];
147
- return Object.keys(accounts).filter(Boolean);
148
- }
149
- function listWhatsAppAuthDirs(cfg) {
150
- const oauthDir = resolveOAuthDir();
151
- const whatsappDir = path.join(oauthDir, "whatsapp");
152
- const authDirs = new Set([oauthDir, path.join(whatsappDir, DEFAULT_ACCOUNT_ID)]);
153
- const accountIds = listConfiguredAccountIds(cfg);
154
- for (const accountId of accountIds) authDirs.add(resolveWhatsAppAuthDir({
155
- cfg,
156
- accountId
157
- }).authDir);
158
- try {
159
- const entries = fs.readdirSync(whatsappDir, { withFileTypes: true });
160
- for (const entry of entries) {
161
- if (!entry.isDirectory()) continue;
162
- authDirs.add(path.join(whatsappDir, entry.name));
163
- }
164
- } catch {}
165
- return Array.from(authDirs);
166
- }
167
- function hasAnyWhatsAppAuth(cfg) {
168
- return listWhatsAppAuthDirs(cfg).some((authDir) => hasWebCredsSync(authDir));
169
- }
170
- function listWhatsAppAccountIds(cfg) {
171
- const ids = listConfiguredAccountIds(cfg);
172
- if (ids.length === 0) return [DEFAULT_ACCOUNT_ID];
173
- return ids.toSorted((a, b) => a.localeCompare(b));
174
- }
175
- function resolveDefaultWhatsAppAccountId(cfg) {
176
- const ids = listWhatsAppAccountIds(cfg);
177
- if (ids.includes(DEFAULT_ACCOUNT_ID)) return DEFAULT_ACCOUNT_ID;
178
- return ids[0] ?? DEFAULT_ACCOUNT_ID;
179
- }
180
- function resolveAccountConfig(cfg, accountId) {
181
- const accounts = cfg.channels?.whatsapp?.accounts;
182
- if (!accounts || typeof accounts !== "object") return;
183
- return accounts[accountId];
184
- }
185
- function resolveDefaultAuthDir(accountId) {
186
- return path.join(resolveOAuthDir(), "whatsapp", normalizeAccountId(accountId));
187
- }
188
- function resolveLegacyAuthDir() {
189
- return resolveOAuthDir();
190
- }
191
- function legacyAuthExists(authDir) {
192
- try {
193
- return fs.existsSync(path.join(authDir, "creds.json"));
194
- } catch {
195
- return false;
196
- }
197
- }
198
- function resolveWhatsAppAuthDir(params) {
199
- const accountId = params.accountId.trim() || DEFAULT_ACCOUNT_ID;
200
- const configured = resolveAccountConfig(params.cfg, accountId)?.authDir?.trim();
201
- if (configured) return {
202
- authDir: resolveUserPath(configured),
203
- isLegacy: false
204
- };
205
- const defaultDir = resolveDefaultAuthDir(accountId);
206
- if (accountId === DEFAULT_ACCOUNT_ID) {
207
- const legacyDir = resolveLegacyAuthDir();
208
- if (legacyAuthExists(legacyDir) && !legacyAuthExists(defaultDir)) return {
209
- authDir: legacyDir,
210
- isLegacy: true
211
- };
212
- }
213
- return {
214
- authDir: defaultDir,
215
- isLegacy: false
216
- };
217
- }
218
- function resolveWhatsAppAccount(params) {
219
- const rootCfg = params.cfg.channels?.whatsapp;
220
- const accountId = params.accountId?.trim() || resolveDefaultWhatsAppAccountId(params.cfg);
221
- const accountCfg = resolveAccountConfig(params.cfg, accountId);
222
- const enabled = accountCfg?.enabled !== false;
223
- const { authDir, isLegacy } = resolveWhatsAppAuthDir({
224
- cfg: params.cfg,
225
- accountId
226
- });
227
- return {
228
- accountId,
229
- name: accountCfg?.name?.trim() || void 0,
230
- enabled,
231
- sendReadReceipts: accountCfg?.sendReadReceipts ?? rootCfg?.sendReadReceipts ?? true,
232
- messagePrefix: accountCfg?.messagePrefix ?? rootCfg?.messagePrefix ?? params.cfg.messages?.messagePrefix,
233
- authDir,
234
- isLegacyAuthDir: isLegacy,
235
- selfChatMode: accountCfg?.selfChatMode ?? rootCfg?.selfChatMode,
236
- dmPolicy: accountCfg?.dmPolicy ?? rootCfg?.dmPolicy,
237
- allowFrom: accountCfg?.allowFrom ?? rootCfg?.allowFrom,
238
- groupAllowFrom: accountCfg?.groupAllowFrom ?? rootCfg?.groupAllowFrom,
239
- groupPolicy: accountCfg?.groupPolicy ?? rootCfg?.groupPolicy,
240
- textChunkLimit: accountCfg?.textChunkLimit ?? rootCfg?.textChunkLimit,
241
- chunkMode: accountCfg?.chunkMode ?? rootCfg?.chunkMode,
242
- mediaMaxMb: accountCfg?.mediaMaxMb ?? rootCfg?.mediaMaxMb,
243
- blockStreaming: accountCfg?.blockStreaming ?? rootCfg?.blockStreaming,
244
- ackReaction: accountCfg?.ackReaction ?? rootCfg?.ackReaction,
245
- groups: accountCfg?.groups ?? rootCfg?.groups,
246
- debounceMs: accountCfg?.debounceMs ?? rootCfg?.debounceMs
247
- };
248
- }
249
-
250
- //#endregion
251
- export { logoutWeb as a, resolveDefaultWebAuthDir as c, webAuthExists as d, logWebSelfId as i, resolveWebCredsBackupPath as l, resolveWhatsAppAccount as n, maybeRestoreCredsFromBackup as o, getWebAuthAgeMs as r, readWebSelfId as s, hasAnyWhatsAppAuth as t, resolveWebCredsPath as u };
157
+ export { logoutWeb as a, resolveDefaultWebAuthDir as c, webAuthExists as d, logWebSelfId as i, resolveWebCredsBackupPath as l, getWebAuthAgeMs as n, maybeRestoreCredsFromBackup as o, hasWebCredsSync as r, readWebSelfId as s, auth_store_exports as t, resolveWebCredsPath as u };
@@ -1,6 +1,6 @@
1
1
  import { r as __exportAll } from "./chunk-D_gEzPfs.js";
2
- import { t as runCommandWithTimeout } from "./exec-f0H7lrAS.js";
3
- import { n as resolveWideAreaDiscoveryDomain } from "./widearea-dns-BjWuJvtM.js";
2
+ import { t as runCommandWithTimeout } from "./exec-C3toirSW.js";
3
+ import { n as resolveWideAreaDiscoveryDomain } from "./widearea-dns-zHPAPSiI.js";
4
4
 
5
5
  //#region src/infra/bonjour-discovery.ts
6
6
  var bonjour_discovery_exports = /* @__PURE__ */ __exportAll({ discoverGatewayBeacons: () => discoverGatewayBeacons });
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.3.413",
3
- "commit": "7aca16f5f011343d666f42ed37d08ff22210b553",
4
- "builtAt": "2026-07-07T18:24:40.401Z"
2
+ "version": "2026.3.415",
3
+ "commit": "20a31a87dc6567ca6d202618d3ce1e886287b178",
4
+ "builtAt": "2026-07-07T19:11:04.477Z"
5
5
  }
@@ -1,21 +1,21 @@
1
- import { I as listThinkingLevelLabels, L as listThinkingLevels, P as formatThinkingLevels, m as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-DFn976W-.js";
2
- import { L as getActivePluginRegistry, t as createSubsystemLogger } from "./subsystem-nnRnHSFk.js";
1
+ import { I as listThinkingLevelLabels, L as listThinkingLevels, P as formatThinkingLevels, m as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-BnsMD0to.js";
2
+ import { S as getActivePluginRegistry, t as createSubsystemLogger } from "./subsystem-gU4M25gl.js";
3
3
  import { g as resolveStateDir } from "./paths-VdmjGGyc.js";
4
- import { a as buildKoiMainSessionKey, l as normalizeKoiId, u as normalizeMainKey, v as parseKoiSessionKey } from "./session-key-B2OXLVi_.js";
5
- import { l as resolveKoiWorkspaceDir, r as resolveDefaultKoiId } from "./koi-scope-C15QLwY-.js";
6
- import { H as resolveEnvApiKey, St as DEFAULT_PROVIDER, bt as DEFAULT_CONTEXT_TOKENS, d as resolveConfiguredModelRef, dt as resolveSKYKOIKoiDir, f as resolveDefaultModelForKoi, xt as DEFAULT_MODEL } from "./model-selection-CKLFiLpY.js";
7
- import { a as clearBillingAlert, i as classifyBillingFailure, o as reportBillingAlert } from "./billing-alerts-DW7RyxM5.js";
8
- import { i as loadConfig } from "./io-BiSyGUoT.js";
9
- import { I as listChannelDocks, O as canonicalizeMainSessionAlias, U as buildGroupDisplayName, _ as normalizeSessionDeliveryFields, i as loadSessionStore, j as resolveMainSessionKey } from "./sessions-DnPG9BI4.js";
10
- import { t as ensureSKYKOIModelsJson } from "./models-config-DoNNjXe6.js";
11
- import { O as visibleWidth } from "./dist-B01d37B6.js";
12
- import { o as resolveStorePath, r as resolveSessionTranscriptPath } from "./paths-CizQHpAk.js";
13
- import { n as SILENT_REPLY_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-DznGfpjQ.js";
14
- import { a as formatTokenCount, n as extractToolCallNames, r as hasToolCall } from "./transcript-tools-BByi9l-4.js";
15
- import { n as readSkykoiEnvVar } from "./dotenv-d4aPJ7q2.js";
16
- import { a as R, d as panel, i as HUES, n as BOLD, p as rule, r as DIM, t as ACCENT } from "./rich-wmQhKBIx.js";
17
- import { a as containsKoiMention, c as noteMicSpeaker, g as isPrivateMode, h as isAudioMuted, i as classifyMicAddressing, n as resolveVoiceIdentity, o as getAmbientSnapshot, p as getAllEvents, r as WEARER_MATCH_CONFIDENCE, s as isWakeAddress, u as EchoTracker } from "./identify-D9fBKIKv.js";
18
- import { a as CA_FAMILIES, i as sendNativeIntent, t as hasNativeWindow } from "./native-window-CMnOFmyK.js";
4
+ import { a as buildKoiMainSessionKey, l as normalizeKoiId, u as normalizeMainKey, v as parseKoiSessionKey } from "./session-key-BIl6GRQN.js";
5
+ import { l as resolveKoiWorkspaceDir, r as resolveDefaultKoiId } from "./koi-scope-Cagum3pM.js";
6
+ import { H as resolveEnvApiKey, St as DEFAULT_PROVIDER, bt as DEFAULT_CONTEXT_TOKENS, d as resolveConfiguredModelRef, dt as resolveSKYKOIKoiDir, f as resolveDefaultModelForKoi, xt as DEFAULT_MODEL } from "./model-selection-CmKBBKeL.js";
7
+ import { a as clearBillingAlert, i as classifyBillingFailure, o as reportBillingAlert } from "./billing-alerts-CL95zVcj.js";
8
+ import { i as loadConfig } from "./io-lVJPpZa9.js";
9
+ import { I as listChannelDocks, O as canonicalizeMainSessionAlias, U as buildGroupDisplayName, _ as normalizeSessionDeliveryFields, i as loadSessionStore, j as resolveMainSessionKey } from "./sessions-BZBtTQCk.js";
10
+ import { t as ensureSKYKOIModelsJson } from "./models-config-CmUg-3zr.js";
11
+ import { O as visibleWidth } from "./dist-D6Sv3llW.js";
12
+ import { o as resolveStorePath, r as resolveSessionTranscriptPath } from "./paths-6OemP7gm.js";
13
+ import { n as SILENT_REPLY_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-Duj-iWBS.js";
14
+ import { a as formatTokenCount, n as extractToolCallNames, r as hasToolCall } from "./transcript-tools-Dy472a2E.js";
15
+ import { n as readSkykoiEnvVar } from "./dotenv-sFSCefLS.js";
16
+ import { a as R, d as panel, i as HUES, n as BOLD, p as rule, r as DIM, t as ACCENT } from "./rich-BaT-R-Bj.js";
17
+ import { a as containsKoiMention, c as noteMicSpeaker, g as isPrivateMode, h as isAudioMuted, i as classifyMicAddressing, n as resolveVoiceIdentity, o as getAmbientSnapshot, p as getAllEvents, r as WEARER_MATCH_CONFIDENCE, s as isWakeAddress, u as EchoTracker } from "./identify-CHP8NQh2.js";
18
+ import { a as CA_FAMILIES, i as sendNativeIntent, t as hasNativeWindow } from "./native-window-DumLjKeL.js";
19
19
  import fs, { closeSync, existsSync, openSync, readSync, statSync } from "node:fs";
20
20
  import path, { join } from "node:path";
21
21
  import os, { homedir } from "node:os";
@@ -24,7 +24,7 @@ import os, { homedir } from "node:os";
24
24
  const MODEL_CACHE = /* @__PURE__ */ new Map();
25
25
  (async () => {
26
26
  try {
27
- const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-BUOhjZaJ.js").then((n) => n.r);
27
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-IRS5Bhx-.js").then((n) => n.r);
28
28
  await ensureSKYKOIModelsJson(loadConfig());
29
29
  const koiDir = resolveSKYKOIKoiDir();
30
30
  const models = discoverModels(discoverAuthStorage(koiDir), koiDir).getAll();
@@ -1,13 +1,13 @@
1
1
  import { r as __exportAll } from "./chunk-D_gEzPfs.js";
2
- import { t as createSubsystemLogger } from "./subsystem-nnRnHSFk.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-gU4M25gl.js";
3
3
  import { g as resolveStateDir, o as resolveConfigPath, u as resolveGatewayPort } from "./paths-VdmjGGyc.js";
4
- import { h as resolveUserPath, s as ensureDir, t as CONFIG_DIR, v as shortenHomeInString } from "./utils-B1LOScGi.js";
5
- import { i as loadConfig } from "./io-BiSyGUoT.js";
6
- import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-Cy9b1PGA.js";
7
- import { r as loadOrCreateDeviceIdentity } from "./device-identity-CnlyT2Si.js";
8
- import { t as pickPrimaryTailnetIPv4 } from "./tailnet-7u3DZ0jI.js";
9
- import { Ot as PROTOCOL_VERSION, Pt as normalizeFingerprint, n as GatewayClient } from "./client-Dzt29zIp.js";
10
- import { a as pickPrimaryLanIPv4 } from "./net-CtMv6JrN.js";
4
+ import { h as resolveUserPath, s as ensureDir, t as CONFIG_DIR, v as shortenHomeInString } from "./utils-BTCspqG1.js";
5
+ import { i as loadConfig } from "./io-lVJPpZa9.js";
6
+ import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-CaFjzGb5.js";
7
+ import { r as loadOrCreateDeviceIdentity } from "./device-identity-pxZl9iT8.js";
8
+ import { t as pickPrimaryTailnetIPv4 } from "./tailnet-CxR_pUEt.js";
9
+ import { Ot as PROTOCOL_VERSION, Pt as normalizeFingerprint, n as GatewayClient } from "./client-izHEJfss.js";
10
+ import { a as pickPrimaryLanIPv4 } from "./net-Cfif-CzD.js";
11
11
  import path from "node:path";
12
12
  import { promisify } from "node:util";
13
13
  import fs from "node:fs/promises";
@@ -1 +1 @@
1
- 268a6b9221634e9da4445bdfa72f69105ffb6d1c02dcd4a93185dbc8161b172f
1
+ ce6729c7f614f90c2b64bcd491874215d657d2662d836756285710e6dc38013d
@@ -1,6 +1,6 @@
1
1
  import { o as __toESM } from "./chunk-D_gEzPfs.js";
2
2
  import { g as resolveStateDir } from "./paths-VdmjGGyc.js";
3
- import { t as hasNativeWindow } from "./native-window-CMnOFmyK.js";
3
+ import { t as hasNativeWindow } from "./native-window-DumLjKeL.js";
4
4
  import fs from "node:fs";
5
5
  import path from "node:path";
6
6
  import os from "node:os";
@@ -332,7 +332,7 @@ var GraphicsMedia = class {
332
332
  }
333
333
  /** Resample decoded RGBA frames to the region's exact pixel size. */
334
334
  async load(rgbaFrames, delays) {
335
- const sharp = (await import("./lib-9wRl5N4X.js").then((m) => /* @__PURE__ */ __toESM(m.default, 1))).default;
335
+ const sharp = (await import("./lib-yPXHDJsX.js").then((m) => /* @__PURE__ */ __toESM(m.default, 1))).default;
336
336
  const { pxW, pxH } = this.regionPixels();
337
337
  this.pxW = pxW;
338
338
  this.pxH = pxH;
@@ -1,10 +1,11 @@
1
- import "./subsystem-nnRnHSFk.js";
1
+ import "./subsystem-gU4M25gl.js";
2
2
  import "./paths-VdmjGGyc.js";
3
- import "./theme-CX-D7gOR.js";
4
- import "./ansi-By7x1TI7.js";
5
- import { a as clearBillingAlert, i as classifyBillingFailure, o as reportBillingAlert } from "./billing-alerts-DW7RyxM5.js";
6
- import { _ as pushCaptureEvent, d as drainEvents, f as flushToDisk, g as isPrivateMode, h as isAudioMuted, l as DominantSpeakerTracker, n as resolveVoiceIdentity, u as EchoTracker } from "./identify-D9fBKIKv.js";
7
- import "./registry-xBtEGPIj.js";
3
+ import "./globals-4hwkGgXA.js";
4
+ import "./theme-Ql6JHKzG.js";
5
+ import "./ansi-aRwLYlzD.js";
6
+ import { a as clearBillingAlert, i as classifyBillingFailure, o as reportBillingAlert } from "./billing-alerts-CL95zVcj.js";
7
+ import { _ as pushCaptureEvent, d as drainEvents, f as flushToDisk, g as isPrivateMode, h as isAudioMuted, l as DominantSpeakerTracker, n as resolveVoiceIdentity, u as EchoTracker } from "./identify-CHP8NQh2.js";
8
+ import "./registry-BDi8qkVO.js";
8
9
  import { closeSync, copyFileSync, existsSync, openSync, readFileSync, readSync, statSync, unlinkSync, watch, writeFileSync } from "node:fs";
9
10
  import { dirname, extname, join, relative } from "node:path";
10
11
  import { homedir } from "node:os";
@@ -2205,14 +2206,14 @@ async function startCaptureService(opts) {
2205
2206
  console.error(`[capture] Audio capture failed to start: ${err}`);
2206
2207
  }
2207
2208
  try {
2208
- const { startAudioRecovery } = await import("./audio-recovery-B79LVKSU.js");
2209
+ const { startAudioRecovery } = await import("./audio-recovery-C9f1IYxd.js");
2209
2210
  const recoveryHandle = startAudioRecovery();
2210
2211
  stops.push(recoveryHandle.stop);
2211
2212
  } catch (err) {
2212
2213
  console.error(`[capture] Audio recovery failed to start: ${err}`);
2213
2214
  }
2214
2215
  try {
2215
- const { reportUsage } = await import("./usage-reporter-CpMmHkw7.js").then((n) => n.n);
2216
+ const { reportUsage } = await import("./usage-reporter-Bx9Nr7UM.js").then((n) => n.n);
2216
2217
  const audioLive = join(homedir(), ".skykoi", "capture", "audio-live.jsonl");
2217
2218
  const HEARING_TICK_MS = 5 * 6e4;
2218
2219
  const hearingTimer = setInterval(() => {
@@ -2230,14 +2231,14 @@ async function startCaptureService(opts) {
2230
2231
  console.error(`[capture] hearing meter failed to start: ${err}`);
2231
2232
  }
2232
2233
  try {
2233
- const { startVoiceId } = await import("./identify-D9fBKIKv.js").then((n) => n.t);
2234
+ const { startVoiceId } = await import("./identify-CHP8NQh2.js").then((n) => n.t);
2234
2235
  const voiceIdHandle = startVoiceId();
2235
2236
  stops.push(voiceIdHandle.stop);
2236
2237
  } catch (err) {
2237
2238
  console.error(`[capture] Voice-ID failed to start: ${err}`);
2238
2239
  }
2239
2240
  try {
2240
- const { startProactiveEval } = await import("./proactive-eval-BQcSSk5h.js").then((n) => n.t);
2241
+ const { startProactiveEval } = await import("./proactive-eval-BCMSOwxK.js").then((n) => n.t);
2241
2242
  const proactiveHandle = startProactiveEval();
2242
2243
  stops.push(proactiveHandle.stop);
2243
2244
  } catch (err) {
@@ -0,0 +1,162 @@
1
+ import { m as DEFAULT_CHAT_CHANNEL, s as defaultRuntime } from "./subsystem-gU4M25gl.js";
2
+ import { l as success, n as info, s as setVerbose, t as danger } from "./globals-4hwkGgXA.js";
3
+ import { i as loadConfig } from "./io-lVJPpZa9.js";
4
+ import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-C450DgVP.js";
5
+ import { d as webAuthExists, s as readWebSelfId } from "./auth-store-B2FaPoSI.js";
6
+ import { r as resolveWhatsAppAccount } from "./accounts-DumyUvSJ.js";
7
+ import { t as sendMessage } from "./message-BGysnvPK.js";
8
+ import { c as nylasConfigured, g as sendMessage$1, l as nylasLinked, m as readNylasGrant } from "./nylas-U2wHlPwX.js";
9
+ import { n as resolveChannelDefaultAccountId } from "./helpers-Bf_7MMN1.js";
10
+ import { t as ensureLocalGatewayRunning } from "./ensure-local-gateway-DL9v_WFE.js";
11
+ import { n as runNylasConnect } from "./connect-DFIg7P1v.js";
12
+ import { execFile } from "node:child_process";
13
+
14
+ //#region src/cli/channel-auth.ts
15
+ async function runChannelLogin(opts, runtime = defaultRuntime) {
16
+ const channelInput = opts.channel ?? DEFAULT_CHAT_CHANNEL;
17
+ const channelId = normalizeChannelId(channelInput);
18
+ if (!channelId) throw new Error(`Unsupported channel: ${channelInput}`);
19
+ const plugin = getChannelPlugin(channelId);
20
+ if (!plugin?.auth?.login) throw new Error(`Channel ${channelId} does not support login`);
21
+ setVerbose(Boolean(opts.verbose));
22
+ const cfg = loadConfig();
23
+ const accountId = opts.account?.trim() || resolveChannelDefaultAccountId({
24
+ plugin,
25
+ cfg
26
+ });
27
+ await plugin.auth.login({
28
+ cfg,
29
+ accountId,
30
+ runtime,
31
+ verbose: Boolean(opts.verbose),
32
+ channelInput
33
+ });
34
+ }
35
+ /**
36
+ * After a connection is freshly made, message the USER on that very channel so
37
+ * they SEE it works — a self-test confirmation on each. Only fires for accounts
38
+ * that were not already linked before this run (so re-runs never spam). Always
39
+ * best-effort and silent on failure; never blocks setup.
40
+ */
41
+ async function sendConnectionSelfTests(runtime, newlyConnected) {
42
+ const cfg = loadConfig();
43
+ if (newlyConnected.whatsapp) try {
44
+ const account = resolveWhatsAppAccount({ cfg });
45
+ if (await webAuthExists(account.authDir)) {
46
+ const self = readWebSelfId(account.authDir);
47
+ const to = self.e164 ?? self.jid;
48
+ if (to) {
49
+ await sendMessage({
50
+ cfg,
51
+ channel: "whatsapp",
52
+ to,
53
+ content: "✅ SkyKoi is connected here. Just ask me and I can message or reply for you on WhatsApp.",
54
+ bestEffort: true
55
+ });
56
+ runtime.log(success("Sent you a WhatsApp confirmation so you can see it works."));
57
+ }
58
+ }
59
+ } catch (err) {
60
+ runtime.log(info(`(WhatsApp confirmation skipped: ${err?.message ?? err})`));
61
+ }
62
+ if (newlyConnected.email) try {
63
+ const grant = readNylasGrant();
64
+ if (grant?.email) {
65
+ await sendMessage$1({
66
+ to: [{ email: grant.email }],
67
+ subject: "✅ SkyKoi is connected",
68
+ body: "Your email and calendar are connected. Just ask me to read, reply, send, or schedule and I'll handle it."
69
+ });
70
+ runtime.log(success("Sent you an email confirmation so you can see it works."));
71
+ }
72
+ } catch (err) {
73
+ runtime.log(info(`(Email confirmation skipped: ${err?.message ?? err})`));
74
+ }
75
+ }
76
+ /**
77
+ * Link EVERY channel that supports an interactive login (QR / pairing), one
78
+ * after another in a single pass, then restart the gateway exactly ONCE so all
79
+ * the freshly-linked sessions come online together. This is the setup-time
80
+ * "connect everything" flow: the user scans each channel's QR back-to-back and
81
+ * only pays a single restart at the very end, instead of one restart per
82
+ * channel. Channels that are already linked skip themselves quickly (their
83
+ * login is idempotent), and a failure on one channel never blocks the rest.
84
+ * After the restart, each NEWLY connected account messages the user on itself as
85
+ * a visible "it works" confirmation.
86
+ */
87
+ async function runChannelLoginAll(opts = {}, runtime = defaultRuntime) {
88
+ setVerbose(Boolean(opts.verbose));
89
+ const cfg = loadConfig();
90
+ const waLinkedBefore = await webAuthExists(resolveWhatsAppAccount({ cfg }).authDir);
91
+ const emailLinkedBefore = nylasLinked();
92
+ const linkable = listChannelPlugins().filter((plugin) => plugin.auth?.login);
93
+ if (linkable.length === 0) {
94
+ runtime.log(info("No channels support interactive linking right now."));
95
+ return;
96
+ }
97
+ runtime.log(info(`Linking ${linkable.length} channel(s) back-to-back — the gateway restarts once at the very end, not per channel.`));
98
+ for (const plugin of linkable) {
99
+ const login = plugin.auth?.login;
100
+ if (!login) continue;
101
+ const label = plugin.meta.label || plugin.id;
102
+ const accountId = resolveChannelDefaultAccountId({
103
+ plugin,
104
+ cfg
105
+ });
106
+ runtime.log(info(`\n──────── ${label} ────────`));
107
+ try {
108
+ await login({
109
+ cfg,
110
+ accountId,
111
+ runtime,
112
+ verbose: Boolean(opts.verbose),
113
+ channelInput: plugin.id
114
+ });
115
+ } catch (err) {
116
+ const message = err?.message ?? String(err);
117
+ runtime.log(danger(`${label}: ${message} (skipping, will keep going)`));
118
+ }
119
+ }
120
+ if (nylasLinked()) runtime.log(info("\n──────── Email & Calendar ────────\nAlready linked."));
121
+ else if (nylasConfigured()) {
122
+ runtime.log(info("\n──────── Email & Calendar (Gmail / Outlook / iCloud) ────────"));
123
+ const res = await runNylasConnect({ log: (m) => runtime.log(info(m)) });
124
+ if (!res.ok) runtime.log(danger(`Email link skipped: ${res.error} (you can rerun later)`));
125
+ } else runtime.log(info("\n──────── Email & Calendar ────────\nNot set up yet — skipping."));
126
+ runtime.log(info("\nAll channels processed. Restarting the gateway once so the new sessions come online…"));
127
+ await new Promise((resolve) => {
128
+ execFile("pkill", ["-f", "skykoi-gateway"], { windowsHide: true }, () => resolve());
129
+ });
130
+ await new Promise((resolve) => setTimeout(resolve, 1500));
131
+ const result = await ensureLocalGatewayRunning();
132
+ if (result.ok) {
133
+ runtime.log(success("Gateway restarted — your channels are linked and ready to send."));
134
+ await new Promise((resolve) => setTimeout(resolve, 5e3));
135
+ await sendConnectionSelfTests(runtime, {
136
+ whatsapp: !waLinkedBefore,
137
+ email: !emailLinkedBefore
138
+ });
139
+ } else runtime.log(danger(`Gateway restart issue: ${result.error}. Try \`koi gateway run\`.`));
140
+ }
141
+ async function runChannelLogout(opts, runtime = defaultRuntime) {
142
+ const channelInput = opts.channel ?? DEFAULT_CHAT_CHANNEL;
143
+ const channelId = normalizeChannelId(channelInput);
144
+ if (!channelId) throw new Error(`Unsupported channel: ${channelInput}`);
145
+ const plugin = getChannelPlugin(channelId);
146
+ if (!plugin?.gateway?.logoutAccount) throw new Error(`Channel ${channelId} does not support logout`);
147
+ const cfg = loadConfig();
148
+ const accountId = opts.account?.trim() || resolveChannelDefaultAccountId({
149
+ plugin,
150
+ cfg
151
+ });
152
+ const account = plugin.config.resolveAccount(cfg, accountId);
153
+ await plugin.gateway.logoutAccount({
154
+ cfg,
155
+ accountId,
156
+ account,
157
+ runtime
158
+ });
159
+ }
160
+
161
+ //#endregion
162
+ export { runChannelLoginAll as n, runChannelLogout as r, runChannelLogin as t };
@@ -1,8 +1,8 @@
1
- import { O as CHAT_CHANNEL_ORDER } from "./subsystem-nnRnHSFk.js";
2
- import { t as isTruthyEnvValue } from "./env-C2ovlUPG.js";
3
- import { n as listChannelPlugins } from "./plugins-CD53Y-wp.js";
4
- import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-7Sq0kaQq.js";
5
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-Dz7tFOeN.js";
1
+ import { p as CHAT_CHANNEL_ORDER } from "./subsystem-gU4M25gl.js";
2
+ import { t as isTruthyEnvValue } from "./env-BEtXFLod.js";
3
+ import { n as listChannelPlugins } from "./plugins-C450DgVP.js";
4
+ import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-D5QYYZDH.js";
5
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-Dd3gYaF4.js";
6
6
 
7
7
  //#region src/cli/channel-options.ts
8
8
  function dedupe(values) {
@@ -1,5 +1,5 @@
1
- import { n as listChannelPlugins } from "./plugins-CD53Y-wp.js";
2
- import { c as listDeliverableMessageChannels, l as normalizeMessageChannel } from "./message-channel-Cy9b1PGA.js";
1
+ import { n as listChannelPlugins } from "./plugins-C450DgVP.js";
2
+ import { c as listDeliverableMessageChannels, l as normalizeMessageChannel } from "./message-channel-CaFjzGb5.js";
3
3
 
4
4
  //#region src/infra/outbound/channel-selection.ts
5
5
  const getMessageChannels = () => listDeliverableMessageChannels();
@@ -1,7 +1,7 @@
1
- import { r as theme } from "./theme-CX-D7gOR.js";
2
- import { t as DEFAULT_ACCOUNT_ID } from "./session-key-B2OXLVi_.js";
3
- import { i as loadConfig } from "./io-BiSyGUoT.js";
4
- import { n as listChannelPlugins } from "./plugins-CD53Y-wp.js";
1
+ import { r as theme } from "./theme-Ql6JHKzG.js";
2
+ import { t as DEFAULT_ACCOUNT_ID } from "./session-key-BIl6GRQN.js";
3
+ import { i as loadConfig } from "./io-lVJPpZa9.js";
4
+ import { n as listChannelPlugins } from "./plugins-C450DgVP.js";
5
5
  import { createRequire } from "node:module";
6
6
  import fs from "node:fs";
7
7
  import path from "node:path";