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,151 +1,154 @@
1
1
  import { o as __toESM } from "./chunk-D_gEzPfs.js";
2
- import { B as normalizeThinkLevel, F as formatXHighModelHint, H as normalizeVerboseLevel, P as formatThinkingLevels, R as normalizeElevatedLevel, V as normalizeUsageDisplay, W as supportsXHighThinking, z as normalizeReasoningLevel } from "./pi-embedded-helpers-DFn976W-.js";
3
- import { $ as recordRemoteNodeInfo, $t as isTtsEnabled, A as scheduleGatewaySigusr1Restart, An as DEFAULT_INPUT_FILE_MAX_CHARS, At as formatZonedTimestamp, B as requestHeartbeatNow, Bn as extractImageContentFromSource, Cn as applyVerboseOverride, D as authorizeGatewaySigusr1Restart, En as isSystemEventContextChanged, F as normalizeOptionalKoiId, Fn as DEFAULT_INPUT_PDF_MAX_PAGES, Ft as initSubkoiRegistry, Gt as resolveUserTimezone, H as getPluginToolMeta, Ht as resolveKoiIdentity, I as normalizeOptionalText, In as DEFAULT_INPUT_PDF_MAX_PIXELS, J as handleSlackHttpRequest, Jt as registerInternalHook, Kt as clearInternalHooks, L as normalizePayloadToSystemText, Ln as DEFAULT_INPUT_PDF_MIN_TEXT_CHARS, M as normalizeCronJobCreate, Mn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Mt as stopSubkoisForRequester, N as normalizeCronJobPatch, Nn as DEFAULT_INPUT_IMAGE_MIMES, Nt as findSubkoiRunByChildSessionKey, O as consumeGatewaySigusr1RestartAuthorization, On as loadModelCatalog, Ot as dispatchInboundMessage, P as inferLegacyName, Pn as DEFAULT_INPUT_MAX_REDIRECTS, Pt as findSubkoiRunByRunId, Q as primeRemoteSkillsCache, Qt as getTtsProvider, R as normalizeRequiredName, Rn as DEFAULT_INPUT_TIMEOUT_MS, S as resetDirectoryCache, Sn as applyModelOverrideToSessionEntry, T as runWithModelFallback, Tn as enqueueSystemEvent, Tt as getChannelActivity, U as loadSKYKOIPlugins, Un as resolveKoiTimeoutMs, Ut as formatUserTime, Vn as normalizeMimeList, W as loadProviderUsageSummary, Wt as resolveUserTimeFormat, Xt as OPENAI_TTS_MODELS, Yt as triggerInternalHook, Z as getRemoteSkillEligibility, Zt as OPENAI_TTS_VOICES, _ as resolveAnnounceTargetFromKey, _t as buildHistoryContextFromEntries, a as normalizeSendPolicy, an as resolveTtsProviderOrder, at as buildSafeExternalPrompt, b as resolveOutboundSessionRoute, bn as stripHeartbeatToken, bt as getLastHeartbeatEvent, c as runEmbeddedPiKoi, cn as textToSpeech, ct as isExternalHookSession, dn as setCommandLaneConcurrency, en as isTtsProviderConfigured, et as refreshRemoteBinsForConnectedNodes, f as waitForEmbeddedPiRunEnd, fn as CommandLane, ft as createReplyPrefixOptions, g as createSKYKOITools, gn as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, h as initRuntimeContext, hn as isDiagnosticsEnabled, ht as registerUnhandledRejectionHandler, i as runCliKoi, in as resolveTtsPrefsPath, it as registerSkillsChangeListener, j as setGatewaySigusr1RestartPolicy, jn as DEFAULT_INPUT_FILE_MIMES, jt as isAbortTrigger, k as isGatewaySigusr1RestartExternallyAllowed, kn as DEFAULT_INPUT_FILE_MAX_BYTES, kt as createReplyDispatcher, l as getLastSystemPrompt, mn as stopDiagnosticHeartbeat, n as getCliSessionId, nn as resolveTtsAutoMode, nt as setSkillsRemoteRegistry, o as resolveSendPolicy, on as setTtsEnabled, ot as detectSuspiciousPatterns, pn as startDiagnosticHeartbeat, pt as normalizeGroupActivation, qt as createInternalHookEvent, r as setCliSessionId, rn as resolveTtsConfig, rt as getSkillsSnapshotVersion, s as clearSessionQueues, sn as setTtsProvider, st as getHookType, tn as resolveTtsApiKey, tt as refreshRemoteNodeBins, u as abortEmbeddedPiRun, vt as resolveHeartbeatVisibility, w as readRecentActivity, wn as parseVerboseOverride, xt as onHeartbeatEvent, y as ensureOutboundSessionEntry, z as migrateLegacyCronPayload, zn as extractFileContentFromSource } from "./reply-D63OCD4n.js";
4
- import { C as getLogger, D as CHANNEL_IDS, L as getActivePluginRegistry, S as getChildLogger, a as setConsoleTimestampPrefix, i as setConsoleSubsystemFilter, k as DEFAULT_CHAT_CHANNEL, n as runtimeForLogger, s as defaultRuntime, t as createSubsystemLogger, v as setVerbose, w as getResolvedLoggerSettings } from "./subsystem-nnRnHSFk.js";
2
+ import { B as normalizeThinkLevel, F as formatXHighModelHint, H as normalizeVerboseLevel, P as formatThinkingLevels, R as normalizeElevatedLevel, V as normalizeUsageDisplay, W as supportsXHighThinking, z as normalizeReasoningLevel } from "./pi-embedded-helpers-BnsMD0to.js";
3
+ import { $ as recordRemoteNodeInfo, $t as isTtsEnabled, A as scheduleGatewaySigusr1Restart, An as DEFAULT_INPUT_FILE_MAX_CHARS, At as formatZonedTimestamp, B as requestHeartbeatNow, Bn as extractImageContentFromSource, Cn as applyVerboseOverride, D as authorizeGatewaySigusr1Restart, En as isSystemEventContextChanged, F as normalizeOptionalKoiId, Fn as DEFAULT_INPUT_PDF_MAX_PAGES, Ft as initSubkoiRegistry, Gt as resolveUserTimezone, H as getPluginToolMeta, Ht as resolveKoiIdentity, I as normalizeOptionalText, In as DEFAULT_INPUT_PDF_MAX_PIXELS, J as handleSlackHttpRequest, Jt as registerInternalHook, Kt as clearInternalHooks, L as normalizePayloadToSystemText, Ln as DEFAULT_INPUT_PDF_MIN_TEXT_CHARS, M as normalizeCronJobCreate, Mn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Mt as stopSubkoisForRequester, N as normalizeCronJobPatch, Nn as DEFAULT_INPUT_IMAGE_MIMES, Nt as findSubkoiRunByChildSessionKey, O as consumeGatewaySigusr1RestartAuthorization, On as loadModelCatalog, Ot as dispatchInboundMessage, P as inferLegacyName, Pn as DEFAULT_INPUT_MAX_REDIRECTS, Pt as findSubkoiRunByRunId, Q as primeRemoteSkillsCache, Qt as getTtsProvider, R as normalizeRequiredName, Rn as DEFAULT_INPUT_TIMEOUT_MS, S as resetDirectoryCache, Sn as applyModelOverrideToSessionEntry, T as runWithModelFallback, Tn as enqueueSystemEvent, Tt as getChannelActivity, U as loadSKYKOIPlugins, Un as resolveKoiTimeoutMs, Ut as formatUserTime, Vn as normalizeMimeList, W as loadProviderUsageSummary, Wt as resolveUserTimeFormat, Xt as OPENAI_TTS_MODELS, Yt as triggerInternalHook, Z as getRemoteSkillEligibility, Zt as OPENAI_TTS_VOICES, _ as resolveAnnounceTargetFromKey, _t as buildHistoryContextFromEntries, a as normalizeSendPolicy, an as resolveTtsProviderOrder, at as buildSafeExternalPrompt, b as resolveOutboundSessionRoute, bn as stripHeartbeatToken, bt as getLastHeartbeatEvent, c as runEmbeddedPiKoi, cn as textToSpeech, ct as isExternalHookSession, dn as setCommandLaneConcurrency, en as isTtsProviderConfigured, et as refreshRemoteBinsForConnectedNodes, f as waitForEmbeddedPiRunEnd, fn as CommandLane, ft as createReplyPrefixOptions, g as createSKYKOITools, gn as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, h as initRuntimeContext, hn as isDiagnosticsEnabled, ht as registerUnhandledRejectionHandler, i as runCliKoi, in as resolveTtsPrefsPath, it as registerSkillsChangeListener, j as setGatewaySigusr1RestartPolicy, jn as DEFAULT_INPUT_FILE_MIMES, jt as isAbortTrigger, k as isGatewaySigusr1RestartExternallyAllowed, kn as DEFAULT_INPUT_FILE_MAX_BYTES, kt as createReplyDispatcher, l as getLastSystemPrompt, mn as stopDiagnosticHeartbeat, n as getCliSessionId, nn as resolveTtsAutoMode, nt as setSkillsRemoteRegistry, o as resolveSendPolicy, on as setTtsEnabled, ot as detectSuspiciousPatterns, pn as startDiagnosticHeartbeat, pt as normalizeGroupActivation, qt as createInternalHookEvent, r as setCliSessionId, rn as resolveTtsConfig, rt as getSkillsSnapshotVersion, s as clearSessionQueues, sn as setTtsProvider, st as getHookType, tn as resolveTtsApiKey, tt as refreshRemoteNodeBins, u as abortEmbeddedPiRun, vt as resolveHeartbeatVisibility, w as readRecentActivity, wn as parseVerboseOverride, xt as onHeartbeatEvent, y as ensureOutboundSessionEntry, z as migrateLegacyCronPayload, zn as extractFileContentFromSource } from "./reply-CDp9q1Vc.js";
4
+ import { S as getActivePluginRegistry, a as setConsoleTimestampPrefix, f as CHANNEL_IDS, i as setConsoleSubsystemFilter, m as DEFAULT_CHAT_CHANNEL, n as runtimeForLogger, s as defaultRuntime, t as createSubsystemLogger } from "./subsystem-gU4M25gl.js";
5
5
  import { g as resolveStateDir, i as isNixMode, l as resolveGatewayLockDir, o as resolveConfigPath, r as STATE_DIR, t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-VdmjGGyc.js";
6
- import { n as isRich, r as theme, t as colorize } from "./theme-CX-D7gOR.js";
7
- import "./ansi-By7x1TI7.js";
8
- import { _ as isSubkoiSessionKey, a as buildKoiMainSessionKey, d as resolveKoiIdFromSessionKey, l as normalizeKoiId, m as toKoiRequestSessionKey, n as DEFAULT_KOI_ID, t as DEFAULT_ACCOUNT_ID, u as normalizeMainKey, v as parseKoiSessionKey } from "./session-key-B2OXLVi_.js";
9
- import { C as truncateUtf16Safe, b as sleep, f as resolveConfigDir, h as resolveUserPath, s as ensureDir, t as CONFIG_DIR, y as shortenHomePath } from "./utils-B1LOScGi.js";
10
- import { i as logWarn, t as logDebug } from "./logger-Door90g0.js";
11
- import { n as runExec, t as runCommandWithTimeout } from "./exec-f0H7lrAS.js";
12
- import { t as resolveSKYKOIPackageRoot } from "./skykoi-root-Dsv6eLbL.js";
13
- import { E as resolveWorkspaceTemplateDir, S as ensureKoiWorkspace, T as resolveDefaultKoiWorkspaceDir, _ as DEFAULT_MEMORY_ALT_FILENAME, a as resolveKoiDir, b as DEFAULT_TOOLS_FILENAME, f as DEFAULT_BOOTSTRAP_FILENAME, h as DEFAULT_KOIS_FILENAME, i as resolveKoiConfig, l as resolveKoiWorkspaceDir, m as DEFAULT_IDENTITY_FILENAME, n as listKoiIds, o as resolveKoiModelFallbacksOverride, p as DEFAULT_HEARTBEAT_FILENAME, r as resolveDefaultKoiId, u as resolveSessionKoiId, v as DEFAULT_MEMORY_FILENAME, x as DEFAULT_USER_FILENAME, y as DEFAULT_SOUL_FILENAME } from "./koi-scope-C15QLwY-.js";
14
- import { St as DEFAULT_PROVIDER, V as resolveAwsSdkEnvVarName, a as isCliProvider, bt as DEFAULT_CONTEXT_TOKENS, d as resolveConfiguredModelRef, f as resolveDefaultModelForKoi, h as resolveThinkingDefault, i as getModelRefStatus, l as resolveAllowedModelRef, p as resolveHooksGmailModel, st as loadAuthProfileStore, xt as DEFAULT_MODEL } from "./model-selection-CKLFiLpY.js";
15
- import "./dist-3zY5f01M.js";
16
- import "./dist-cjs-D9zWZLJo.js";
17
- import { t as formatCliCommand } from "./command-format-DOYW_19_.js";
18
- import "./boolean-D-3joTkO.js";
19
- import { n as logAcceptedEnvOption, t as isTruthyEnvValue } from "./env-C2ovlUPG.js";
20
- import "./github-copilot-token-BqhLBQWA.js";
21
- import "./billing-alerts-DW7RyxM5.js";
22
- import { t as VERSION } from "./version-B_FpLmDY.js";
23
- import { A as resolveKoiMaxConcurrent, E as applyLegacyMigrations, a as parseConfigJson5, c as writeConfigFile, i as loadConfig, j as resolveSubkoiMaxConcurrent, l as validateConfigObjectWithPlugins, n as cleanupStaleConfigTmpFiles, o as readConfigFileSnapshot, r as createConfigIO, s as resolveConfigSnapshotHash, t as backupConfigBeforeRestart, u as SKYKOISchema } from "./io-BiSyGUoT.js";
24
- import { o as isTestDefaultMemorySlotDisabled } from "./manifest-registry-Y19rtw98.js";
25
- import { n as migrateLegacyConfig } from "./config-55EPjg8B.js";
26
- import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CD53Y-wp.js";
27
- import { A as resolveKoiMainSessionKey, M as resolveMainSessionKeyFromConfig, P as snapshotSessionOrigin, _ as normalizeSessionDeliveryFields, h as mergeDeliveryContext, i as loadSessionStore, j as resolveMainSessionKey, k as resolveExplicitKoiSessionKey, l as updateSessionStore, p as deliveryContextFromSession } from "./sessions-DnPG9BI4.js";
28
- import "./image-BQrsvGIN.js";
29
- import "./models-config-DoNNjXe6.js";
30
- import { d as CURRENT_SESSION_VERSION } from "./dist-Pt-v-K0u.js";
31
- import "./dist-B01d37B6.js";
32
- import "./lib-C0cU2Bav.js";
33
- import "./src-BJiPQPqV.js";
34
- import "./core-BlHif_ps.js";
35
- import "./pi-model-discovery-BUOhjZaJ.js";
36
- import "./sandbox-B-lCuykD.js";
37
- import { c as stripPluginOnlyAllowlist, i as expandPolicyWithPluginGroups, n as buildPluginToolGroups, o as normalizeToolName, r as collectExplicitAllowlist, s as resolveToolProfilePolicy } from "./tool-policy-CjSq72TW.js";
38
- import { T as formatErrorMessage, d as inspectPortUsage, l as ensurePortAvailable, p as formatPortDiagnostics } from "./chrome-CRoiYOwt.js";
39
- import { d as hasBinary, i as loadWorkspaceSkillEntries, r as buildWorkspaceSkillSnapshot } from "./skills-C_t45j3T.js";
40
- import { r as saveMediaBuffer } from "./routes-DXSsSe_K.js";
41
- import { n as movePathToTrash } from "./server-context-CNfswlAM.js";
42
- import { o as detectMime } from "./image-ops-5RRlAQ0c.js";
43
- import { t as rawDataToString } from "./ws-D3TuFv3E.js";
44
- import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, p as GATEWAY_CLIENT_IDS, r as isGatewayCliClient, s as isWebchatClient, t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-Cy9b1PGA.js";
45
- import "./logging-BQKv640H.js";
46
- import "./accounts-C1p6Cppc.js";
47
- import { a as resolveSessionTranscriptsDirForKoi, n as resolveSessionFilePath, o as resolveStorePath, r as resolveSessionTranscriptPath } from "./paths-CizQHpAk.js";
48
- import "./tool-images-BIkTcSan.js";
49
- import "./redact-ClVwO7Nn.js";
50
- import "./tool-display-DvcBjgri.js";
51
- import { o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-uOIbsOCt.js";
52
- import { $ as resolveSessionTranscriptCandidates, G as loadCombinedSessionStoreForGateway, J as resolveSessionModelRef, K as loadSessionEntry, Q as readSessionPreviewItemsFromTranscript, U as listKoisForGateway, W as listSessionsFromStore, X as capArrayByJsonBytes, Y as archiveFileOnDisk, Z as readSessionMessages, et as stripEnvelopeFromMessages, gt as lookupContextTokens, nt as readVoiceMode, q as resolveGatewaySessionStoreTarget, rt as writeVoiceMode, tt as VOICE_MODES } from "./ca-director-BZlhiXCn.js";
53
- import { n as getMachineDisplayName, t as createBrowserRouteDispatcher } from "./dispatcher-BHYC2Mdu.js";
54
- import "./dist-UoOHg1p0.js";
55
- import "./platform-billing-BjToqDnR.js";
56
- import "./usage-reporter-CpMmHkw7.js";
57
- import "./pi-tool-definition-adapter-BjyavKfi.js";
58
- import "./manager-DH-1An5c.js";
59
- import "./sqlite-Ctl23tcn.js";
60
- import "./warnings-Daj0i4A6.js";
61
- import "./common-DDNLy4f0.js";
62
- import "./proxy-from-env-BCOB9yxp.js";
63
- import "./login-qr-DAZi8Nkf.js";
64
- import { D as normalizePollInput, _ as nylasLinked, a as resolveOutboundTarget, b as readMessages, o as resolveSessionDeliveryTarget, x as readNylasGrant } from "./message-DLdOmEc7.js";
65
- import { i as normalizeDevicePublicKeyBase64Url, s as verifyDeviceSignature, t as deriveDeviceIdFromPublicKey } from "./device-identity-CnlyT2Si.js";
66
- import { n as pickPrimaryTailnetIPv6, t as pickPrimaryTailnetIPv4 } from "./tailnet-7u3DZ0jI.js";
67
- import { $ as validateNodePairListParams, A as validateExecApprovalResolveParams, At as errorShape, B as validateKoiIdentityParams, C as validateCronUpdateParams, Ct as validateWebLoginWaitParams, D as validateDeviceTokenRevokeParams, Dt as validateWizardStatusParams, E as validateDevicePairRejectParams, Et as validateWizardStartParams, F as validateKoiCreateParams, G as validateLogsTailParams, H as validateKoiParams, I as validateKoiDeleteParams, J as validateNodeEventParams, K as validateModelsListParams, L as validateKoiFilesGetParams, M as validateExecApprovalsNodeGetParams, Mt as parseSessionLabel, N as validateExecApprovalsNodeSetParams, Nt as buildDeviceAuthPayload, O as validateDeviceTokenRotateParams, Ot as PROTOCOL_VERSION, P as validateExecApprovalsSetParams, Q as validateNodePairApproveParams, R as validateKoiFilesListParams, S as validateCronStatusParams, St as validateWebLoginStartParams, T as validateDevicePairListParams, Tt as validateWizardNextParams, U as validateKoiUpdateParams, V as validateKoiListParams, W as validateKoiWaitParams, X as validateNodeInvokeResultParams, Y as validateNodeInvokeParams, Z as validateNodeListParams, _ as validateCronAddParams, _t as validateSkillsStatusParams, a as validateChannelsLogoutParams, at as validateRequestFrame, b as validateCronRunParams, bt as validateUpdateRunParams, c as validateChatHistoryParams, ct as validateSessionsDeleteParams, d as validateConfigApplyParams, dt as validateSessionsPreviewParams, et as validateNodePairRejectParams, f as validateConfigGetParams, ft as validateSessionsResetParams, g as validateConnectParams, gt as validateSkillsInstallParams, h as validateConfigSetParams, ht as validateSkillsBinsParams, i as formatValidationErrors, it as validatePollParams, j as validateExecApprovalsGetParams, k as validateExecApprovalRequestParams, kt as ErrorCodes, l as validateChatInjectParams, lt as validateSessionsListParams, m as validateConfigSchemaParams, mt as validateSessionsUsageParams, n as GatewayClient, nt as validateNodePairVerifyParams, o as validateChannelsStatusParams, ot as validateSendParams, p as validateConfigPatchParams, pt as validateSessionsResolveParams, q as validateNodeDescribeParams, rt as validateNodeRenameParams, s as validateChatAbortParams, st as validateSessionsCompactParams, tt as validateNodePairRequestParams, u as validateChatSendParams, ut as validateSessionsPatchParams, v as validateCronListParams, vt as validateSkillsUpdateParams, w as validateDevicePairApproveParams, wt as validateWizardCancelParams, x as validateCronRunsParams, xt as validateWakeParams, y as validateCronRemoveParams, yt as validateTalkModeParams, z as validateKoiFilesSetParams } from "./client-Dzt29zIp.js";
68
- import { n as callGateway, s as loadGatewayTlsRuntime$1 } from "./call-CqDndKP3.js";
69
- import { c as resolveGatewayListenHosts, n as isLoopbackHost$2, o as resolveGatewayBindHost, r as isTrustedProxyAddress, s as resolveGatewayClientIp, t as isLoopbackAddress } from "./net-CtMv6JrN.js";
70
- import { a as onKoiEvent, i as getKoiRunContext, n as emitKoiEvent, o as registerKoiRunContext, t as clearKoiRunContext } from "./koi-events-DVxTOxY3.js";
71
- import "./pairing-store-CAfuV0tG.js";
72
- import { t as formatDocsLink } from "./links-BY_N2dMU.js";
73
- import { n as runCommandWithRuntime } from "./cli-utils-D4mTRuWj.js";
74
- import { n as withProgress } from "./progress-B8PPYDDC.js";
75
- import { a as renamePairedNode, c as verifyNodeToken, d as writeJSONAtomic, i as rejectNodePairing, l as createLock, n as listNodePairing, o as requestNodePairing, s as updatePairedNodeMetadata, t as approveNodePairing, u as readJSON } from "./node-pairing-WRkSoKg6.js";
76
- import { a as resolveSubkoiToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-BFFg8jIe.js";
77
- import { S as resolveAssistantAvatarUrl, b as buildControlUiAvatarUrl, c as handleReset, x as normalizeControlUiBasePath, y as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-nDN4y46S.js";
78
- import "./prompt-style-CJRaWg4h.js";
79
- import "./pairing-labels-BuxC93RD.js";
80
- import "./satisfies-DCdzcNI3.js";
81
- import { i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, s as hasNonzeroUsage, t as discoverAllSessions } from "./session-cost-usage-C71VC_PD.js";
82
- import "./channel-summary-DNu96QpK.js";
83
- import { a as formatTokenCount, o as formatUsd } from "./transcript-tools-BByi9l-4.js";
84
- import { i as readExecApprovalsSnapshot, o as resolveExecApprovalsSocketPath, r as normalizeExecApprovals, s as saveExecApprovals, t as ensureExecApprovals } from "./exec-approvals-io-Dzpqn78T.js";
85
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-DQ32SBGJ.js";
86
- import { c as onCanvasChange, i as canvasUri, l as replaceCanvasResource, o as getCanvasResource, s as listCanvasUris } from "./surface-tool-CAcZRxFq.js";
87
- import { t as parseAbsoluteTimeMs } from "./parse-C-X5VUYI.js";
88
- import { a as summarizeRestartSentinel, n as formatDoctorNonInteractiveHint, r as formatRestartSentinelMessage, s as writeRestartSentinel, t as consumeRestartSentinel } from "./restart-sentinel-CDgY6TKs.js";
89
- import { n as readSkykoiEnvVar } from "./dotenv-d4aPJ7q2.js";
90
- import { n as resolveMessageChannelSelection } from "./channel-selection-Di4awirs.js";
91
- import "./zen-surface-DJHZWAux.js";
92
- import "./rich-wmQhKBIx.js";
93
- import { n as isProactiveSleeping, r as setProactiveSleep } from "./proactive-eval-BQcSSk5h.js";
94
- import { g as isPrivateMode, h as isAudioMuted, v as setAudioMuted, y as setPrivateMode } from "./identify-D9fBKIKv.js";
95
- import "./registry-xBtEGPIj.js";
96
- import "./native-window-CMnOFmyK.js";
97
- import { t as liveBroadcast } from "./live-broadcast-CifQ8Lzc.js";
98
- import "./action-ledger-CJ4wxgFj.js";
99
- import { i as readEventsSince, n as clearEventLogForSession, o as subscribeAll, r as hydrateSession, t as appendEvent } from "./event-log-WbPUNukH.js";
100
- import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-CNr0CXJR.js";
101
- import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-BOh3Z_vn.js";
102
- import { t as ensureSKYKOICliOnPath } from "./path-env-CnhsG0TT.js";
103
- import { t as forceFreePortAndWait } from "./ports-B03Y1yyv.js";
104
- import { t as resolveChannelDefaultAccountId } from "./helpers-4BXRutqw.js";
105
- import "./logging-C3sRv-iX.js";
106
- import "./note-PNq_JEQe.js";
107
- import { t as WizardCancelledError } from "./prompts-BC5TXS0_.js";
108
- import { c as loadKoiIdentity, d as loadKoiIdentityFromWorkspace, i as applyKoiConfig, l as pruneKoiConfig, o as findKoiEntryIndex, r as getStatusSummary, s as listKoiEntries, t as runOnboardingWizard } from "./onboarding-sBRViahV.js";
109
- import { n as installSkill } from "./onboard-skills-BdvkU1bg.js";
110
- import "./github-copilot-auth-BEsuL6VZ.js";
111
- import "./onboard-channels-C7E-puRC.js";
112
- import { r as buildChannelUiCatalog, t as applyPluginAutoEnable } from "./plugin-auto-enable-7Sq0kaQq.js";
113
- import "./archive-CUIu8SAN.js";
114
- import "./skill-scanner-CLckczzl.js";
115
- import "./installs-PogP5yqW.js";
116
- import { c as startHeartbeatRunner, n as formatHealthChannelLines, o as runHeartbeatOnce, r as getHealthSnapshot, s as setHeartbeatsEnabled } from "./health-format-BFZbZLTC.js";
117
- import { c as compareSemverStrings, d as resolveNpmChannelTag, g as normalizeUpdateChannel, l as fetchNpmLatestVersion, p as DEFAULT_PACKAGE_CHANNEL, s as checkUpdateStatus, t as runGatewayUpdate } from "./update-runner-DHNkj8-z.js";
118
- import { i as resolveGatewayAuth, n as authorizeGatewayConnect, r as isLocalDirectRequest, t as assertGatewayAuthConfigured } from "./auth-X5uq6vRI.js";
119
- import { i as probeGateway } from "./audit-C9kPnb6f.js";
120
- import "./table-DIfWcies.js";
121
- import { t as buildWorkspaceSkillStatus } from "./skills-status-sMAyGPXV.js";
122
- import "./service-D1-PnhZe.js";
123
- import { p as resolveGatewayStateDir } from "./systemd-DZP4s4qd.js";
124
- import "./diagnostics-6vXdnH8k.js";
125
- import "./node-service-Bb6tgGQx.js";
126
- import "./channels-status-issues-CGTJwSbx.js";
127
- import "./doctor-completion-BQuJ38kv.js";
128
- import "./register.subclis-D0eQnEI6.js";
129
- import { a as createOutboundSendDeps$1, i as resolveKoiOutboundTarget, r as resolveKoiDeliveryPlan, t as koiCommand } from "./koi-Cjk48UJ2.js";
130
- import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-D4o4damy.js";
131
- import "./daemon-runtime-DIgqhoVa.js";
132
- import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-BjWuJvtM.js";
133
- import { n as discoverGatewayBeacons } from "./bonjour-discovery-3LKAHtHL.js";
134
- import "./ensure-local-gateway-Xk7ir7zS.js";
135
- import "./completion-cli-CnAgvf3H.js";
136
- import "./service-audit-BVZGmzLW.js";
137
- import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-Cr0qf9U9.js";
138
- import "./tui-D-n6UhuD.js";
139
- import "./canvas-state-C3YRnkNr.js";
140
- import { t as buildChannelAccountSnapshot } from "./status-pq91F0kp.js";
141
- import "./shared-tNGHWtW-.js";
142
- import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-DdySqCD6.js";
143
- import { a as toOptionString, i as parsePort$1, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-CHxb6-Fi.js";
144
- import { i as setGatewayWsLogStyle, n as logWs, r as summarizeKoiEventForWsLog, t as formatForLog } from "./ws-log-BzGMbHM2.js";
145
- import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-kVh_mWJI.js";
146
- import { a as findCompanionByName, i as findCompanionById, o as getCachedCompanions, r as fetchCompanions, t as applyCompanions } from "./companions-D-uSZqiI.js";
147
- import { n as isReady, r as markReadyStep, t as awaitReady } from "./readiness-CCfUXab4.js";
148
- import { t as runNodeHost } from "./runner-Dv3coC2q.js";
6
+ import { d as getChildLogger, f as getLogger, p as getResolvedLoggerSettings, s as setVerbose } from "./globals-4hwkGgXA.js";
7
+ import { n as isRich, r as theme, t as colorize } from "./theme-Ql6JHKzG.js";
8
+ import "./ansi-aRwLYlzD.js";
9
+ import { _ as isSubkoiSessionKey, a as buildKoiMainSessionKey, d as resolveKoiIdFromSessionKey, l as normalizeKoiId, m as toKoiRequestSessionKey, n as DEFAULT_KOI_ID, t as DEFAULT_ACCOUNT_ID, u as normalizeMainKey, v as parseKoiSessionKey } from "./session-key-BIl6GRQN.js";
10
+ import { C as truncateUtf16Safe, b as sleep, f as resolveConfigDir, h as resolveUserPath, s as ensureDir, t as CONFIG_DIR, y as shortenHomePath } from "./utils-BTCspqG1.js";
11
+ import { i as logWarn, t as logDebug } from "./logger-aJ6leLZh.js";
12
+ import { n as runExec, t as runCommandWithTimeout } from "./exec-C3toirSW.js";
13
+ import { t as resolveSKYKOIPackageRoot } from "./skykoi-root-Uqb_vFtv.js";
14
+ import { E as resolveWorkspaceTemplateDir, S as ensureKoiWorkspace, T as resolveDefaultKoiWorkspaceDir, _ as DEFAULT_MEMORY_ALT_FILENAME, a as resolveKoiDir, b as DEFAULT_TOOLS_FILENAME, f as DEFAULT_BOOTSTRAP_FILENAME, h as DEFAULT_KOIS_FILENAME, i as resolveKoiConfig, l as resolveKoiWorkspaceDir, m as DEFAULT_IDENTITY_FILENAME, n as listKoiIds, o as resolveKoiModelFallbacksOverride, p as DEFAULT_HEARTBEAT_FILENAME, r as resolveDefaultKoiId, u as resolveSessionKoiId, v as DEFAULT_MEMORY_FILENAME, x as DEFAULT_USER_FILENAME, y as DEFAULT_SOUL_FILENAME } from "./koi-scope-Cagum3pM.js";
15
+ import { St as DEFAULT_PROVIDER, V as resolveAwsSdkEnvVarName, a as isCliProvider, bt as DEFAULT_CONTEXT_TOKENS, d as resolveConfiguredModelRef, f as resolveDefaultModelForKoi, h as resolveThinkingDefault, i as getModelRefStatus, l as resolveAllowedModelRef, p as resolveHooksGmailModel, st as loadAuthProfileStore, xt as DEFAULT_MODEL } from "./model-selection-CmKBBKeL.js";
16
+ import "./dist-De2BpLLK.js";
17
+ import "./dist-cjs-DIUV7iyC.js";
18
+ import { t as formatCliCommand } from "./command-format-CW3d4lnG.js";
19
+ import "./boolean-B7w0pBkV.js";
20
+ import { n as logAcceptedEnvOption, t as isTruthyEnvValue } from "./env-BEtXFLod.js";
21
+ import "./github-copilot-token-BlwFn4nA.js";
22
+ import "./billing-alerts-CL95zVcj.js";
23
+ import { t as VERSION } from "./version-BM8pEsQj.js";
24
+ import { A as resolveKoiMaxConcurrent, E as applyLegacyMigrations, a as parseConfigJson5, c as writeConfigFile, i as loadConfig, j as resolveSubkoiMaxConcurrent, l as validateConfigObjectWithPlugins, n as cleanupStaleConfigTmpFiles, o as readConfigFileSnapshot, r as createConfigIO, s as resolveConfigSnapshotHash, t as backupConfigBeforeRestart, u as SKYKOISchema } from "./io-lVJPpZa9.js";
25
+ import { o as isTestDefaultMemorySlotDisabled } from "./manifest-registry-Ckw3Vy2p.js";
26
+ import { n as migrateLegacyConfig } from "./config-DkjBRbqs.js";
27
+ import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-C450DgVP.js";
28
+ import { A as resolveKoiMainSessionKey, M as resolveMainSessionKeyFromConfig, P as snapshotSessionOrigin, _ as normalizeSessionDeliveryFields, h as mergeDeliveryContext, i as loadSessionStore, j as resolveMainSessionKey, k as resolveExplicitKoiSessionKey, l as updateSessionStore, p as deliveryContextFromSession } from "./sessions-BZBtTQCk.js";
29
+ import "./image-Xhv1WbJY.js";
30
+ import "./models-config-CmUg-3zr.js";
31
+ import { d as CURRENT_SESSION_VERSION } from "./dist-ButgT5Gk.js";
32
+ import "./dist-D6Sv3llW.js";
33
+ import "./lib-Dinb6tv6.js";
34
+ import "./src-DR4wHj_N.js";
35
+ import "./core-CeDpMYqo.js";
36
+ import "./pi-model-discovery-IRS5Bhx-.js";
37
+ import "./sandbox-zPcju-bV.js";
38
+ import { c as stripPluginOnlyAllowlist, i as expandPolicyWithPluginGroups, n as buildPluginToolGroups, o as normalizeToolName, r as collectExplicitAllowlist, s as resolveToolProfilePolicy } from "./tool-policy-BH452tj4.js";
39
+ import { T as formatErrorMessage, d as inspectPortUsage, l as ensurePortAvailable, p as formatPortDiagnostics } from "./chrome-B1HAd3Al.js";
40
+ import { d as hasBinary, i as loadWorkspaceSkillEntries, r as buildWorkspaceSkillSnapshot } from "./skills-w4q7XySt.js";
41
+ import { r as saveMediaBuffer } from "./routes-C_GpVEDZ.js";
42
+ import { n as movePathToTrash } from "./server-context-Dej8i418.js";
43
+ import { o as detectMime } from "./image-ops-C45aI2Og.js";
44
+ import { t as rawDataToString } from "./ws-C7lNTRNL.js";
45
+ import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, p as GATEWAY_CLIENT_IDS, r as isGatewayCliClient, s as isWebchatClient, t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-CaFjzGb5.js";
46
+ import "./logging-q4KyMmY-.js";
47
+ import "./auth-store-B2FaPoSI.js";
48
+ import "./accounts-DumyUvSJ.js";
49
+ import { a as resolveSessionTranscriptsDirForKoi, n as resolveSessionFilePath, o as resolveStorePath, r as resolveSessionTranscriptPath } from "./paths-6OemP7gm.js";
50
+ import "./tool-images-BscwczCb.js";
51
+ import "./redact-ZAoMZTIY.js";
52
+ import "./tool-display-Dg79vOSW.js";
53
+ import { o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-ClVjz43p.js";
54
+ import { $ as resolveSessionTranscriptCandidates, G as loadCombinedSessionStoreForGateway, J as resolveSessionModelRef, K as loadSessionEntry, Q as readSessionPreviewItemsFromTranscript, U as listKoisForGateway, W as listSessionsFromStore, X as capArrayByJsonBytes, Y as archiveFileOnDisk, Z as readSessionMessages, et as stripEnvelopeFromMessages, gt as lookupContextTokens, nt as readVoiceMode, q as resolveGatewaySessionStoreTarget, rt as writeVoiceMode, tt as VOICE_MODES } from "./ca-director-Cj4rkY2x.js";
55
+ import { n as getMachineDisplayName, t as createBrowserRouteDispatcher } from "./dispatcher-D7EzbSw7.js";
56
+ import "./dist-DsdylfIW.js";
57
+ import "./platform-billing-D8f18ubj.js";
58
+ import "./usage-reporter-Bx9Nr7UM.js";
59
+ import "./pi-tool-definition-adapter-D9igP7jU.js";
60
+ import "./manager-BVWrev6y.js";
61
+ import "./sqlite-C0QbeU3t.js";
62
+ import "./warnings-C2KFRM58.js";
63
+ import "./common-g3KrUsDG.js";
64
+ import "./proxy-from-env-BI6o-lgV.js";
65
+ import "./login-qr-DPn0cTK-.js";
66
+ import { a as resolveOutboundTarget, o as resolveSessionDeliveryTarget, u as normalizePollInput } from "./message-BGysnvPK.js";
67
+ import { i as normalizeDevicePublicKeyBase64Url, s as verifyDeviceSignature, t as deriveDeviceIdFromPublicKey } from "./device-identity-pxZl9iT8.js";
68
+ import { n as pickPrimaryTailnetIPv6, t as pickPrimaryTailnetIPv4 } from "./tailnet-CxR_pUEt.js";
69
+ import { $ as validateNodePairListParams, A as validateExecApprovalResolveParams, At as errorShape, B as validateKoiIdentityParams, C as validateCronUpdateParams, Ct as validateWebLoginWaitParams, D as validateDeviceTokenRevokeParams, Dt as validateWizardStatusParams, E as validateDevicePairRejectParams, Et as validateWizardStartParams, F as validateKoiCreateParams, G as validateLogsTailParams, H as validateKoiParams, I as validateKoiDeleteParams, J as validateNodeEventParams, K as validateModelsListParams, L as validateKoiFilesGetParams, M as validateExecApprovalsNodeGetParams, Mt as parseSessionLabel, N as validateExecApprovalsNodeSetParams, Nt as buildDeviceAuthPayload, O as validateDeviceTokenRotateParams, Ot as PROTOCOL_VERSION, P as validateExecApprovalsSetParams, Q as validateNodePairApproveParams, R as validateKoiFilesListParams, S as validateCronStatusParams, St as validateWebLoginStartParams, T as validateDevicePairListParams, Tt as validateWizardNextParams, U as validateKoiUpdateParams, V as validateKoiListParams, W as validateKoiWaitParams, X as validateNodeInvokeResultParams, Y as validateNodeInvokeParams, Z as validateNodeListParams, _ as validateCronAddParams, _t as validateSkillsStatusParams, a as validateChannelsLogoutParams, at as validateRequestFrame, b as validateCronRunParams, bt as validateUpdateRunParams, c as validateChatHistoryParams, ct as validateSessionsDeleteParams, d as validateConfigApplyParams, dt as validateSessionsPreviewParams, et as validateNodePairRejectParams, f as validateConfigGetParams, ft as validateSessionsResetParams, g as validateConnectParams, gt as validateSkillsInstallParams, h as validateConfigSetParams, ht as validateSkillsBinsParams, i as formatValidationErrors, it as validatePollParams, j as validateExecApprovalsGetParams, k as validateExecApprovalRequestParams, kt as ErrorCodes, l as validateChatInjectParams, lt as validateSessionsListParams, m as validateConfigSchemaParams, mt as validateSessionsUsageParams, n as GatewayClient, nt as validateNodePairVerifyParams, o as validateChannelsStatusParams, ot as validateSendParams, p as validateConfigPatchParams, pt as validateSessionsResolveParams, q as validateNodeDescribeParams, rt as validateNodeRenameParams, s as validateChatAbortParams, st as validateSessionsCompactParams, tt as validateNodePairRequestParams, u as validateChatSendParams, ut as validateSessionsPatchParams, v as validateCronListParams, vt as validateSkillsUpdateParams, w as validateDevicePairApproveParams, wt as validateWizardCancelParams, x as validateCronRunsParams, xt as validateWakeParams, y as validateCronRemoveParams, yt as validateTalkModeParams, z as validateKoiFilesSetParams } from "./client-izHEJfss.js";
70
+ import { n as callGateway, s as loadGatewayTlsRuntime$1 } from "./call-D9x2Oink.js";
71
+ import { c as resolveGatewayListenHosts, n as isLoopbackHost$2, o as resolveGatewayBindHost, r as isTrustedProxyAddress, s as resolveGatewayClientIp, t as isLoopbackAddress } from "./net-Cfif-CzD.js";
72
+ import { a as onKoiEvent, i as getKoiRunContext, n as emitKoiEvent, o as registerKoiRunContext, t as clearKoiRunContext } from "./koi-events-D5PuKPcz.js";
73
+ import "./pairing-store-BJq_rv5S.js";
74
+ import { t as formatDocsLink } from "./links-BqdU0TFi.js";
75
+ import { n as runCommandWithRuntime } from "./cli-utils-uAyQZBvv.js";
76
+ import { n as withProgress } from "./progress-QVvXnEt-.js";
77
+ import { a as renamePairedNode, c as verifyNodeToken, d as writeJSONAtomic, i as rejectNodePairing, l as createLock, n as listNodePairing, o as requestNodePairing, s as updatePairedNodeMetadata, t as approveNodePairing, u as readJSON } from "./node-pairing-CYNP1g4x.js";
78
+ import { a as resolveSubkoiToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-DDff0t8l.js";
79
+ import { S as resolveAssistantAvatarUrl, b as buildControlUiAvatarUrl, c as handleReset, x as normalizeControlUiBasePath, y as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-o1U-dn2n.js";
80
+ import "./prompt-style-DUZn5AjO.js";
81
+ import "./pairing-labels-CaaA_Kt-.js";
82
+ import "./satisfies-D2Taq9gG.js";
83
+ import { i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, s as hasNonzeroUsage, t as discoverAllSessions } from "./session-cost-usage-Nmd8bPic.js";
84
+ import "./channel-summary-CBEmDyZF.js";
85
+ import { a as formatTokenCount, o as formatUsd } from "./transcript-tools-Dy472a2E.js";
86
+ import { i as readExecApprovalsSnapshot, o as resolveExecApprovalsSocketPath, r as normalizeExecApprovals, s as saveExecApprovals, t as ensureExecApprovals } from "./exec-approvals-io-CFVKuSeR.js";
87
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-RpKA-_F0.js";
88
+ import { c as onCanvasChange, i as canvasUri, l as replaceCanvasResource, o as getCanvasResource, s as listCanvasUris } from "./surface-tool-DqCgANSk.js";
89
+ import { t as parseAbsoluteTimeMs } from "./parse-lztFbXu9.js";
90
+ import { a as summarizeRestartSentinel, n as formatDoctorNonInteractiveHint, r as formatRestartSentinelMessage, s as writeRestartSentinel, t as consumeRestartSentinel } from "./restart-sentinel-B3dQ684O.js";
91
+ import { n as readSkykoiEnvVar } from "./dotenv-sFSCefLS.js";
92
+ import { l as nylasLinked, m as readNylasGrant, p as readMessages } from "./nylas-U2wHlPwX.js";
93
+ import { n as resolveMessageChannelSelection } from "./channel-selection-Dj_CMzvz.js";
94
+ import "./zen-surface-DBpHONnk.js";
95
+ import "./rich-BaT-R-Bj.js";
96
+ import { n as isProactiveSleeping, r as setProactiveSleep } from "./proactive-eval-BCMSOwxK.js";
97
+ import { g as isPrivateMode, h as isAudioMuted, v as setAudioMuted, y as setPrivateMode } from "./identify-CHP8NQh2.js";
98
+ import "./registry-BDi8qkVO.js";
99
+ import "./native-window-DumLjKeL.js";
100
+ import { t as liveBroadcast } from "./live-broadcast-BIlUXK-0.js";
101
+ import "./action-ledger-CZm1RLNd.js";
102
+ import { i as readEventsSince, n as clearEventLogForSession, o as subscribeAll, r as hydrateSession, t as appendEvent } from "./event-log-8Gy24Q8h.js";
103
+ import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-CVjDioW-.js";
104
+ import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-BX7pFm3E.js";
105
+ import { t as ensureSKYKOICliOnPath } from "./path-env-1_C-JRUU.js";
106
+ import { t as forceFreePortAndWait } from "./ports-C6-lHXUM.js";
107
+ import { n as resolveChannelDefaultAccountId } from "./helpers-Bf_7MMN1.js";
108
+ import "./logging-B2js4Jgc.js";
109
+ import "./note-Dgsh9TJE.js";
110
+ import { t as WizardCancelledError } from "./prompts-CNzp9M83.js";
111
+ import { c as loadKoiIdentity, d as loadKoiIdentityFromWorkspace, i as applyKoiConfig, l as pruneKoiConfig, o as findKoiEntryIndex, r as getStatusSummary, s as listKoiEntries, t as runOnboardingWizard } from "./onboarding-KjPht-vT.js";
112
+ import { n as installSkill } from "./onboard-skills-D2PuvOlq.js";
113
+ import "./github-copilot-auth-W7sylWjb.js";
114
+ import "./onboard-channels-DXgzUduh.js";
115
+ import { r as buildChannelUiCatalog, t as applyPluginAutoEnable } from "./plugin-auto-enable-D5QYYZDH.js";
116
+ import "./archive-v5c_oZ0M.js";
117
+ import "./skill-scanner-b9MamBYt.js";
118
+ import "./installs-DYxVB0wb.js";
119
+ import { c as startHeartbeatRunner, n as formatHealthChannelLines, o as runHeartbeatOnce, r as getHealthSnapshot, s as setHeartbeatsEnabled } from "./health-format-BbpMt6U1.js";
120
+ import { c as compareSemverStrings, d as resolveNpmChannelTag, g as normalizeUpdateChannel, l as fetchNpmLatestVersion, p as DEFAULT_PACKAGE_CHANNEL, s as checkUpdateStatus, t as runGatewayUpdate } from "./update-runner-DbYE4uWc.js";
121
+ import { i as resolveGatewayAuth, n as authorizeGatewayConnect, r as isLocalDirectRequest, t as assertGatewayAuthConfigured } from "./auth-Bv7GrJIF.js";
122
+ import { i as probeGateway } from "./audit-CdSf5yc6.js";
123
+ import "./table-SaWmGh81.js";
124
+ import { t as buildWorkspaceSkillStatus } from "./skills-status-DzGR295b.js";
125
+ import "./service-Bz3BLFuQ.js";
126
+ import { p as resolveGatewayStateDir } from "./systemd-5f0_yK5K.js";
127
+ import "./diagnostics-Db0yQkCa.js";
128
+ import "./node-service-FpI5_Kev.js";
129
+ import "./channels-status-issues-BUOqiSuy.js";
130
+ import "./doctor-completion-BmQxtaJp.js";
131
+ import "./register.subclis-D4icX3hP.js";
132
+ import { a as createOutboundSendDeps$1, i as resolveKoiOutboundTarget, r as resolveKoiDeliveryPlan, t as koiCommand } from "./koi-B-adVRJ0.js";
133
+ import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-D2wZfVim.js";
134
+ import "./daemon-runtime-Cw8HN1z_.js";
135
+ import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-zHPAPSiI.js";
136
+ import { n as discoverGatewayBeacons } from "./bonjour-discovery-C601-zWo.js";
137
+ import "./ensure-local-gateway-DL9v_WFE.js";
138
+ import "./completion-cli-K8Ntq43i.js";
139
+ import "./service-audit-CijWRKqR.js";
140
+ import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-NwL9AkZD.js";
141
+ import "./tui-eV0dj-x4.js";
142
+ import "./canvas-state-Oz4Obrxj.js";
143
+ import { t as buildChannelAccountSnapshot } from "./status-D2sLFE9B.js";
144
+ import "./shared-CZVRangM.js";
145
+ import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-Cyae4A7P.js";
146
+ import { a as toOptionString, i as parsePort$1, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-B3rppGQN.js";
147
+ import { i as setGatewayWsLogStyle, n as logWs, r as summarizeKoiEventForWsLog, t as formatForLog } from "./ws-log-K0TDamKG.js";
148
+ import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-By51E-G_.js";
149
+ import { a as findCompanionByName, i as findCompanionById, o as getCachedCompanions, r as fetchCompanions, t as applyCompanions } from "./companions-DOFb9Qnj.js";
150
+ import { n as isReady, r as markReadyStep, t as awaitReady } from "./readiness-DjdWO9Fm.js";
151
+ import { t as runNodeHost } from "./runner-CpnbA-2N.js";
149
152
  import process$1 from "node:process";
150
153
  import { fileURLToPath, pathToFileURL } from "node:url";
151
154
  import chalk from "chalk";
@@ -4635,7 +4638,7 @@ function serviceSummary(label, svc) {
4635
4638
  }
4636
4639
  async function startGatewayBonjourAdvertiser(opts) {
4637
4640
  if (isDisabledByEnv$1()) return { stop: async () => {} };
4638
- const { getResponder, Protocol } = await import("./lib-CbWkbLty.js").then((m) => /* @__PURE__ */ __toESM(m.default, 1));
4641
+ const { getResponder, Protocol } = await import("./lib-B1krrDBw.js").then((m) => /* @__PURE__ */ __toESM(m.default, 1));
4639
4642
  const responder = getResponder();
4640
4643
  const hostname = (process.env.SKYKOI_MDNS_HOSTNAME?.trim() || "skykoi").replace(/\.local$/i, "").split(".")[0].trim() || "skykoi";
4641
4644
  const instanceName = typeof opts.instanceName === "string" && opts.instanceName.trim() ? opts.instanceName.trim() : `${hostname} (SKYKOI)`;
@@ -4948,7 +4951,7 @@ var MeshDiscovery = class {
4948
4951
  }
4949
4952
  async runMdnsProbe() {
4950
4953
  try {
4951
- const { discoverGatewayBeacons } = await import("./bonjour-discovery-3LKAHtHL.js").then((n) => n.t);
4954
+ const { discoverGatewayBeacons } = await import("./bonjour-discovery-C601-zWo.js").then((n) => n.t);
4952
4955
  const beacons = await discoverGatewayBeacons({ timeoutMs: 5e3 });
4953
4956
  for (const beacon of beacons) {
4954
4957
  if (!beacon.host) continue;
@@ -7329,7 +7332,7 @@ const koiHandlers = {
7329
7332
  gatewayToken,
7330
7333
  log: context.logGateway
7331
7334
  });
7332
- const { resolveKoiConfig } = await import("./koi-scope-C15QLwY-.js").then((n) => n.t);
7335
+ const { resolveKoiConfig } = await import("./koi-scope-Cagum3pM.js").then((n) => n.t);
7333
7336
  await applyCompanions({
7334
7337
  cfg,
7335
7338
  hostKoiId,
@@ -8985,8 +8988,8 @@ const chatHandlers = {
8985
8988
  const { cfg, storePath, entry } = loadSessionEntry(sessionKey);
8986
8989
  const sessionId = entry?.sessionId;
8987
8990
  const hostMessages = sessionId && storePath ? readSessionMessages(sessionId, storePath, entry?.sessionFile) : [];
8988
- const { getRuntimeKoiOverlay } = await import("./runtime-koi-overlay-DeKEFkkl.js").then((n) => n.n);
8989
- const { resolveSessionTranscriptPath } = await import("./sessions-DnPG9BI4.js").then((n) => n.t);
8991
+ const { getRuntimeKoiOverlay } = await import("./runtime-koi-overlay-BS4Nza1K.js").then((n) => n.n);
8992
+ const { resolveSessionTranscriptPath } = await import("./sessions-BZBtTQCk.js").then((n) => n.t);
8990
8993
  const fsMod = await import("node:fs");
8991
8994
  const companionEntries = sessionId ? getRuntimeKoiOverlay() : [];
8992
8995
  const companionMessages = [];
@@ -9186,7 +9189,7 @@ const chatHandlers = {
9186
9189
  companionsRefreshed = true;
9187
9190
  context.logGateway.info(`chat.send: ${reason} — forcing companion refresh`);
9188
9191
  try {
9189
- const { fetchCompanions, applyCompanions } = await import("./companions-D-uSZqiI.js").then((n) => n.n);
9192
+ const { fetchCompanions, applyCompanions } = await import("./companions-DOFb9Qnj.js").then((n) => n.n);
9190
9193
  const platformUrl = cfg.gateway?.mesh?.platformUrl || process.env.SKYKOI_APP_URL;
9191
9194
  const hostKoiId = cfg.gateway?.mesh?.koiId || process.env.SKYKOI_KOI_ID;
9192
9195
  const gatewayToken = cfg.gateway?.auth?.token || process.env.SKYKOI_GATEWAY_TOKEN;
@@ -9197,7 +9200,7 @@ const chatHandlers = {
9197
9200
  gatewayToken,
9198
9201
  log: context.logGateway
9199
9202
  });
9200
- const { resolveKoiConfig } = await import("./koi-scope-C15QLwY-.js").then((n) => n.t);
9203
+ const { resolveKoiConfig } = await import("./koi-scope-Cagum3pM.js").then((n) => n.t);
9201
9204
  await applyCompanions({
9202
9205
  cfg,
9203
9206
  hostKoiId,
@@ -12167,7 +12170,7 @@ const nodeHandlers = {
12167
12170
  const p = params;
12168
12171
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
12169
12172
  await respondUnavailableOnThrow(respond, async () => {
12170
- const { handleNodeEvent } = await import("./server-node-events-2YS7Vdsp.js");
12173
+ const { handleNodeEvent } = await import("./server-node-events-DuXlBGXC.js");
12171
12174
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
12172
12175
  await handleNodeEvent({
12173
12176
  deps: context.deps,
@@ -14307,7 +14310,7 @@ const usageHandlers = {
14307
14310
  const rawSessionId = parsed?.rest ?? key;
14308
14311
  const sessionId = entry?.sessionId ?? rawSessionId;
14309
14312
  const sessionFile = entry?.sessionFile ?? resolveSessionFilePath(rawSessionId, entry, { koiId });
14310
- const { loadSessionLogs } = await import("./session-cost-usage-C71VC_PD.js").then((n) => n.a);
14313
+ const { loadSessionLogs } = await import("./session-cost-usage-Nmd8bPic.js").then((n) => n.a);
14311
14314
  respond(true, { logs: await loadSessionLogs({
14312
14315
  sessionId,
14313
14316
  sessionEntry: entry,
@@ -15655,7 +15658,7 @@ function normalizeKoiPayload(payload, opts) {
15655
15658
  async function startBrowserControlServerIfEnabled() {
15656
15659
  if (isTruthyEnvValue(process.env.SKYKOI_SKIP_BROWSER_CONTROL_SERVER)) return null;
15657
15660
  const override = process.env.SKYKOI_BROWSER_CONTROL_MODULE?.trim();
15658
- const mod = override ? await import(override) : await import("./control-service-DQ32SBGJ.js").then((n) => n.t);
15661
+ const mod = override ? await import(override) : await import("./control-service-RpKA-_F0.js").then((n) => n.t);
15659
15662
  const start = typeof mod.startBrowserControlServiceFromConfig === "function" ? mod.startBrowserControlServiceFromConfig : mod.startBrowserControlServerFromConfig;
15660
15663
  const stop = typeof mod.stopBrowserControlService === "function" ? mod.stopBrowserControlService : mod.stopBrowserControlServer;
15661
15664
  if (!start) return null;
@@ -18920,7 +18923,7 @@ function createGatewayHttpServer(opts) {
18920
18923
  if (String(req.headers.upgrade ?? "").toLowerCase() === "websocket") return;
18921
18924
  try {
18922
18925
  if (req.method === "GET" && (req.url === "/__SKYKOI__/ready" || req.url?.startsWith("/__SKYKOI__/ready?"))) {
18923
- const { readinessSnapshot } = await import("./readiness-CCfUXab4.js").then((n) => n.i);
18926
+ const { readinessSnapshot } = await import("./readiness-DjdWO9Fm.js").then((n) => n.i);
18924
18927
  const snap = readinessSnapshot();
18925
18928
  const status = snap.ready ? 200 : 503;
18926
18929
  res.writeHead(status, {
@@ -19095,36 +19098,37 @@ function createGatewayHooksRequestHandler(params) {
19095
19098
 
19096
19099
  //#endregion
19097
19100
  //#region src/gateway/connect-page.ts
19098
- const CHANNELS = [
19099
- {
19100
- id: "email",
19101
- name: "Email + Calendar",
19102
- blurb: "Gmail / Google Workspace sign-in — mail, calendar, contacts"
19103
- },
19101
+ const TOKEN_CHANNELS = [
19104
19102
  {
19105
19103
  id: "imessage",
19106
- name: "iMessage",
19107
- blurb: "Your Messages app on this Mac"
19104
+ label: "iMessage",
19105
+ blurb: "Messages app on this Mac (imsg + Full Disk Access)"
19108
19106
  },
19109
19107
  {
19110
19108
  id: "telegram",
19111
- name: "Telegram",
19112
- blurb: "Bot token flow"
19109
+ label: "Telegram",
19110
+ blurb: "Bot token from @BotFather",
19111
+ tokenUrl: "https://t.me/botfather",
19112
+ tokenUrlLabel: "Open @BotFather"
19113
19113
  },
19114
19114
  {
19115
19115
  id: "discord",
19116
- name: "Discord",
19117
- blurb: "Bot token flow"
19116
+ label: "Discord",
19117
+ blurb: "Bot token from the Developer Portal",
19118
+ tokenUrl: "https://discord.com/developers/applications",
19119
+ tokenUrlLabel: "Developer Portal"
19118
19120
  },
19119
19121
  {
19120
19122
  id: "slack",
19121
- name: "Slack",
19122
- blurb: "Workspace app tokens"
19123
+ label: "Slack",
19124
+ blurb: "Workspace app tokens (xoxb + xapp)",
19125
+ tokenUrl: "https://api.slack.com/apps",
19126
+ tokenUrlLabel: "Slack Apps"
19123
19127
  },
19124
19128
  {
19125
19129
  id: "signal",
19126
- name: "Signal",
19127
- blurb: "Link as a companion device"
19130
+ label: "Signal",
19131
+ blurb: "Link this Mac as a companion device"
19128
19132
  }
19129
19133
  ];
19130
19134
  function isLoopback(req) {
@@ -19136,76 +19140,106 @@ function json(res, code, body) {
19136
19140
  res.setHeader("Content-Type", "application/json");
19137
19141
  res.end(JSON.stringify(body));
19138
19142
  }
19139
- function page() {
19140
- return `<!doctype html><html><head><meta charset="utf-8"><title>Connect your accounts — SkyKoi</title>
19141
- <meta name="viewport" content="width=device-width,initial-scale=1">
19142
- <style>
19143
- :root{color-scheme:dark}
19144
- body{margin:0;background:#0a0d15;color:#e4eaf5;font:16px/1.5 -apple-system,system-ui,sans-serif;padding:40px 20px}
19145
- .wrap{max-width:860px;margin:0 auto}
19146
- h1{font-size:26px;margin:0 0 6px}
19147
- .sub{color:#8a92a6;margin:0 0 28px}
19148
- .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
19149
- .card{background:#121828;border:1px solid #232c45;border-radius:14px;padding:18px}
19150
- .card.wa{grid-column:1/-1;display:flex;gap:26px;align-items:center;flex-wrap:wrap;border-color:#2a5f46}
19151
- .head{display:flex;justify-content:space-between;align-items:center}
19152
- .name{font-weight:600}
19153
- .dot{width:10px;height:10px;border-radius:50%;background:#4a5570}
19154
- .dot.ok{background:#4ade80;box-shadow:0 0 10px #4ade8088}
19155
- p{color:#8a92a6;font-size:13px;margin:8px 0 14px}
19156
- button{background:#26355e;color:#e4eaf5;border:0;border-radius:9px;padding:10px 16px;font-size:14px;cursor:pointer}
19157
- button:hover{background:#31447a}
19158
- .qr{width:216px;height:216px;border-radius:12px;background:#fff;padding:10px;box-sizing:border-box}
19159
- .steps{font-size:14px;color:#aeb6c8;margin:0;padding-left:18px}
19160
- .steps li{margin:6px 0}
19161
- .ok-big{color:#4ade80;font-weight:700;font-size:18px}
19162
- .hint{display:block;color:#66708a;margin-top:8px;font-size:12px}
19163
- </style></head><body><div class="wrap">
19164
- <h1>Connect your accounts</h1>
19165
- <p class="sub">Link everything your koi works with. WhatsApp scans right here — the rest open a guided sign-in.</p>
19166
- <div class="card wa">
19167
- <div>
19168
- <div class="head"><span class="name">WhatsApp</span><span class="dot" id="dot-whatsapp"></span></div>
19169
- <ol class="steps">
19170
- <li>Open WhatsApp on your phone</li>
19171
- <li>Settings <b>Linked devices</b> <b>Link a device</b></li>
19172
- <li>Scan this code</li>
19173
- </ol>
19174
- <div id="wa-state" class="hint">generating code…</div>
19175
- </div>
19176
- <img class="qr" id="wa-qr" alt="WhatsApp QR" style="display:none">
19177
- <div class="ok-big" id="wa-ok" style="display:none">✓ Linked — your koi can see WhatsApp now</div>
19178
- </div>
19179
- <div class="grid">${CHANNELS.map((c) => `
19180
- <div class="card" id="card-${c.id}">
19181
- <div class="head"><span class="name">${c.name}</span><span class="dot" id="dot-${c.id}"></span></div>
19182
- <p>${c.blurb}</p>
19183
- <button onclick="runFlow('${c.id}', this)">Connect ${c.name}</button>
19184
- <small class="hint" id="hint-${c.id}"></small>
19185
- </div>`).join("\n")}</div>
19186
- </div>
19187
- <script>
19188
- async function waLoop(){
19189
- const img=document.getElementById('wa-qr'),st=document.getElementById('wa-state'),ok=document.getElementById('wa-ok'),dot=document.getElementById('dot-whatsapp');
19190
- try{
19191
- const r=await fetch('/connect/api/whatsapp/start',{method:'POST'});
19192
- const d=await r.json();
19193
- if(d.linked){img.style.display='none';ok.style.display='block';st.textContent='';dot.classList.add('ok');return}
19194
- if(d.qrDataUrl){img.src=d.qrDataUrl;img.style.display='block';st.textContent='waiting for your scan… (code refreshes automatically)'}
19195
- const w=await fetch('/connect/api/whatsapp/wait',{method:'POST'});
19196
- const wd=await w.json();
19197
- if(wd.linked){img.style.display='none';ok.style.display='block';st.textContent='';dot.classList.add('ok');return}
19198
- }catch(e){st.textContent='hiccup — retrying…'}
19199
- setTimeout(waLoop,1500);
19200
- }
19201
- async function runFlow(id,btn){
19202
- btn.textContent='Opening…';
19203
- await fetch('/connect/api/run?channel='+id,{method:'POST'});
19204
- document.getElementById('hint-'+id).textContent='A Terminal window opened with the '+id+' sign-in — finish there, then come back.';
19205
- setTimeout(()=>{btn.textContent='Connect'},4000);
19206
- }
19207
- waLoop();
19208
- <\/script></body></html>`;
19143
+ async function buildStatus() {
19144
+ const { loadConfig } = await import("./config-DkjBRbqs.js").then((n) => n.t);
19145
+ const cfg = loadConfig();
19146
+ let waLinked = false;
19147
+ try {
19148
+ const { resolveWhatsAppAccount } = await import("./accounts-DumyUvSJ.js").then((n) => n.t);
19149
+ const { webAuthExists } = await import("./auth-store-B2FaPoSI.js").then((n) => n.t);
19150
+ waLinked = await webAuthExists(resolveWhatsAppAccount({ cfg }).authDir);
19151
+ } catch {}
19152
+ let email = {
19153
+ configured: false,
19154
+ linked: false
19155
+ };
19156
+ try {
19157
+ const nylas = await import("./nylas-U2wHlPwX.js").then((n) => n.u);
19158
+ const linked = nylas.nylasLinked();
19159
+ email = {
19160
+ configured: nylas.nylasConfigured(),
19161
+ linked,
19162
+ email: linked ? nylas.readNylasGrant()?.email ?? void 0 : void 0
19163
+ };
19164
+ } catch {}
19165
+ const rawChannels = cfg.channels ?? {};
19166
+ const channels = [];
19167
+ for (const meta of TOKEN_CHANNELS) {
19168
+ const entry = {
19169
+ ...meta,
19170
+ configured: false
19171
+ };
19172
+ try {
19173
+ const { getChannelPlugin, normalizeChannelId } = await import("./plugins-C450DgVP.js").then((n) => n.i);
19174
+ const { resolveChannelDefaultAccountId } = await import("./helpers-Bf_7MMN1.js").then((n) => n.t);
19175
+ const { buildChannelAccountSnapshot } = await import("./status-D2sLFE9B.js").then((n) => n.n);
19176
+ const id = normalizeChannelId(meta.id);
19177
+ const plugin = id ? getChannelPlugin(id) : void 0;
19178
+ if (plugin) {
19179
+ const snap = await buildChannelAccountSnapshot({
19180
+ plugin,
19181
+ cfg,
19182
+ accountId: resolveChannelDefaultAccountId({
19183
+ plugin,
19184
+ cfg
19185
+ })
19186
+ });
19187
+ entry.configured = snap.configured === true;
19188
+ entry.enabled = snap.enabled;
19189
+ } else {
19190
+ entry.configured = Boolean(rawChannels[meta.id]);
19191
+ entry.enabled = rawChannels[meta.id]?.enabled;
19192
+ }
19193
+ } catch {
19194
+ entry.configured = Boolean(rawChannels[meta.id]);
19195
+ entry.enabled = rawChannels[meta.id]?.enabled;
19196
+ }
19197
+ channels.push(entry);
19198
+ }
19199
+ return {
19200
+ whatsapp: { linked: waLinked },
19201
+ email,
19202
+ channels
19203
+ };
19204
+ }
19205
+ let emailAuthUrlInFlight = null;
19206
+ async function startEmailAuth() {
19207
+ const nylas = await import("./nylas-U2wHlPwX.js").then((n) => n.u);
19208
+ if (!nylas.nylasConfigured()) return { configured: false };
19209
+ if (nylas.nylasLinked()) return {
19210
+ configured: true,
19211
+ linked: true,
19212
+ email: nylas.readNylasGrant()?.email ?? void 0
19213
+ };
19214
+ if (emailAuthUrlInFlight) return {
19215
+ configured: true,
19216
+ authUrl: emailAuthUrlInFlight
19217
+ };
19218
+ const { runNylasConnect } = await import("./connect-DFIg7P1v.js").then((n) => n.t);
19219
+ const authUrl = await new Promise((resolve) => {
19220
+ const timer = setTimeout(() => resolve(null), 1e4);
19221
+ runNylasConnect({
19222
+ openBrowser: false,
19223
+ log: () => {},
19224
+ onAuthUrl: (url) => {
19225
+ emailAuthUrlInFlight = url;
19226
+ clearTimeout(timer);
19227
+ resolve(url);
19228
+ }
19229
+ }).catch(() => void 0).finally(() => {
19230
+ emailAuthUrlInFlight = null;
19231
+ clearTimeout(timer);
19232
+ resolve(null);
19233
+ });
19234
+ });
19235
+ if (!authUrl) return {
19236
+ configured: true,
19237
+ error: "Could not start the sign-in flow — try again in a few seconds."
19238
+ };
19239
+ return {
19240
+ configured: true,
19241
+ authUrl
19242
+ };
19209
19243
  }
19210
19244
  function createConnectPageHandler(opts) {
19211
19245
  return async (req, res) => {
@@ -19218,13 +19252,17 @@ function createConnectPageHandler(opts) {
19218
19252
  }
19219
19253
  try {
19220
19254
  if (url.pathname === "/connect") {
19221
- res.statusCode = 200;
19222
- res.setHeader("Content-Type", "text/html; charset=utf-8");
19223
- res.end(page());
19255
+ res.statusCode = 302;
19256
+ res.setHeader("Location", "https://koi.skykoi.com/connect");
19257
+ res.end();
19258
+ return true;
19259
+ }
19260
+ if (url.pathname === "/connect/api/status") {
19261
+ json(res, 200, await buildStatus());
19224
19262
  return true;
19225
19263
  }
19226
19264
  if (url.pathname === "/connect/api/whatsapp/start" && req.method === "POST") {
19227
- const { startWebLoginWithQr } = await import("./login-qr-DAZi8Nkf.js").then((n) => n.t);
19265
+ const { startWebLoginWithQr } = await import("./login-qr-DPn0cTK-.js").then((n) => n.t);
19228
19266
  const result = await startWebLoginWithQr({ timeoutMs: 2e4 });
19229
19267
  json(res, 200, {
19230
19268
  linked: !result.qrDataUrl && /already|linked|connected/i.test(result.message ?? ""),
@@ -19233,25 +19271,40 @@ function createConnectPageHandler(opts) {
19233
19271
  return true;
19234
19272
  }
19235
19273
  if (url.pathname === "/connect/api/whatsapp/wait" && req.method === "POST") {
19236
- const { waitForWebLogin } = await import("./login-qr-DAZi8Nkf.js").then((n) => n.t);
19274
+ const { waitForWebLogin } = await import("./login-qr-DPn0cTK-.js").then((n) => n.t);
19237
19275
  json(res, 200, { linked: (await waitForWebLogin({ timeoutMs: 55e3 })).connected === true });
19238
19276
  return true;
19239
19277
  }
19278
+ if (url.pathname === "/connect/api/email/start" && req.method === "POST") {
19279
+ json(res, 200, await startEmailAuth());
19280
+ return true;
19281
+ }
19240
19282
  if (url.pathname === "/connect/api/run" && req.method === "POST") {
19241
19283
  const channel = (url.searchParams.get("channel") ?? "").replace(/[^a-z]/g, "").slice(0, 20);
19242
19284
  if (!channel) {
19243
19285
  json(res, 400, { error: "channel required" });
19244
19286
  return true;
19245
19287
  }
19246
- if (process.platform === "darwin") execFile("osascript", [
19247
- "-e",
19248
- `tell application "Terminal" to do script "koi channels login ${channel}"`,
19249
- "-e",
19250
- "tell application \"Terminal\" to activate"
19251
- ]);
19252
- json(res, 200, {
19253
- ok: true,
19254
- command: `koi channels login ${channel}`
19288
+ let command = "koi channels add";
19289
+ try {
19290
+ const { getChannelPlugin, normalizeChannelId } = await import("./plugins-C450DgVP.js").then((n) => n.i);
19291
+ const id = normalizeChannelId(channel);
19292
+ if ((id ? getChannelPlugin(id) : void 0)?.auth?.login) command = `koi channels login ${channel}`;
19293
+ } catch {}
19294
+ if (process.platform === "darwin") {
19295
+ execFile("osascript", [
19296
+ "-e",
19297
+ `tell application "Terminal" to do script "${command}"`,
19298
+ "-e",
19299
+ "tell application \"Terminal\" to activate"
19300
+ ]);
19301
+ json(res, 200, {
19302
+ ok: true,
19303
+ command
19304
+ });
19305
+ } else json(res, 200, {
19306
+ ok: false,
19307
+ error: `Run \`${command}\` in a terminal to continue.`
19255
19308
  });
19256
19309
  return true;
19257
19310
  }
@@ -20167,8 +20220,8 @@ async function startGatewaySidecars(params) {
20167
20220
  const localPort = Number(process.env.SKYKOI_GATEWAY_PORT) || 18789;
20168
20221
  (async () => {
20169
20222
  try {
20170
- const { loadOrCreateDeviceIdentity } = await import("./device-identity-CnlyT2Si.js").then((n) => n.n);
20171
- const { requestNodePairing, approveNodePairing, getPairedNode } = await import("./node-pairing-WRkSoKg6.js").then((n) => n.r);
20223
+ const { loadOrCreateDeviceIdentity } = await import("./device-identity-pxZl9iT8.js").then((n) => n.n);
20224
+ const { requestNodePairing, approveNodePairing, getPairedNode } = await import("./node-pairing-CYNP1g4x.js").then((n) => n.r);
20172
20225
  const nodeId = loadOrCreateDeviceIdentity().deviceId;
20173
20226
  if (!await getPairedNode(nodeId)) {
20174
20227
  const { request } = await requestNodePairing({
@@ -20234,7 +20287,7 @@ async function startGatewaySidecars(params) {
20234
20287
  let nodeGatewayPort;
20235
20288
  let nodeGatewayTls = false;
20236
20289
  if (discoveryUrl) {
20237
- const { resolveDiscoveryUrl } = await import("./call-CqDndKP3.js").then((n) => n.r);
20290
+ const { resolveDiscoveryUrl } = await import("./call-D9x2Oink.js").then((n) => n.r);
20238
20291
  let resolved = await resolveDiscoveryUrl(discoveryUrl, remoteToken);
20239
20292
  if (!resolved && params.cfg.gateway?.auth?.token && params.cfg.gateway.auth.token !== remoteToken) resolved = await resolveDiscoveryUrl(discoveryUrl, params.cfg.gateway.auth.token);
20240
20293
  if (resolved) {
@@ -21581,15 +21634,15 @@ async function startGatewayServer(port = 18789, opts = {}) {
21581
21634
  const heartbeatUnsub = onHeartbeatEvent((evt) => {
21582
21635
  broadcast("heartbeat", evt, { dropIfSlow: true });
21583
21636
  });
21584
- const sessionBridgeUnsub = (await import("./koi-event-bridge-DeLARijk.js")).startKoiEventBridge();
21637
+ const sessionBridgeUnsub = (await import("./koi-event-bridge-DcS7JxM8.js")).startKoiEventBridge();
21585
21638
  const sessionBroadcasterUnsub = bindSessionBroadcaster(broadcast, nodeSendToSession);
21586
- (await import("./live-broadcast-CifQ8Lzc.js").then((n) => n.n)).setLiveBroadcast(broadcast);
21639
+ (await import("./live-broadcast-BIlUXK-0.js").then((n) => n.n)).setLiveBroadcast(broadcast);
21587
21640
  const activityWatcherStop = startActivityWatcher({
21588
21641
  broadcast,
21589
21642
  sessionKey: "koi:main:main"
21590
21643
  });
21591
21644
  try {
21592
- const { restoreSurfacesFromDisk } = await import("./surface-tool-CAcZRxFq.js").then((n) => n.r);
21645
+ const { restoreSurfacesFromDisk } = await import("./surface-tool-DqCgANSk.js").then((n) => n.r);
21593
21646
  const restored = restoreSurfacesFromDisk();
21594
21647
  if (restored > 0) console.log(`[surface] restored ${restored} surface(s) from disk`);
21595
21648
  } catch (err) {
@@ -21598,7 +21651,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
21598
21651
  let captureServiceStop = null;
21599
21652
  (async () => {
21600
21653
  try {
21601
- const { startCaptureService } = await import("./capture-service-DD-fGV_g.js");
21654
+ const { startCaptureService } = await import("./capture-service-x5KflO52.js");
21602
21655
  captureServiceStop = (await startCaptureService()).stop;
21603
21656
  console.log("[capture] Device capture service started");
21604
21657
  } catch (err) {
@@ -21686,7 +21739,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
21686
21739
  broadcast,
21687
21740
  context: gatewayRequestContext
21688
21741
  });
21689
- utteranceTriggerUnsub = (await import("./koi-utterance-trigger-DBXY1dq5.js")).startKoiUtteranceTrigger({
21742
+ utteranceTriggerUnsub = (await import("./koi-utterance-trigger-DEVLYg_A.js")).startKoiUtteranceTrigger({
21690
21743
  chatSendHandler: coreGatewayHandlers["chat.send"],
21691
21744
  context: gatewayRequestContext,
21692
21745
  selfKoiId: process.env.SKYKOI_KOI_ID