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.
- package/dist/{APEv2Parser-Ba7yIvMy.js → APEv2Parser-CQZ2oGz-.js} +5 -5
- package/dist/{AbstractID3Parser-Cf2LaaLC.js → AbstractID3Parser-C-7q8rrD.js} +6 -6
- package/dist/{AiffParser-Cvx7vIj0.js → AiffParser-Cn8SBV-Z.js} +7 -7
- package/dist/{AsfParser-Bth1euSE.js → AsfParser-CoFe_l42.js} +6 -6
- package/dist/{DsdiffParser-Djnj5Jvy.js → DsdiffParser-Bm1hLHc0.js} +7 -7
- package/dist/{DsfParser-BQpFZzaT.js → DsfParser-CfEPvF1O.js} +7 -7
- package/dist/{FlacParser-DE4FjCdI.js → FlacParser-Bs6Pkx37.js} +7 -7
- package/dist/{ID3v1Parser-3ia97CSy.js → ID3v1Parser-Cb4WQDuj.js} +5 -5
- package/dist/{ID3v2Parser-UNJu2sI-.js → ID3v2Parser-0vs-_wxB.js} +6 -6
- package/dist/{ID3v2Token-DK6kpMKy.js → ID3v2Token-f446IQwP.js} +2 -2
- package/dist/{MP4Parser-BBDtQSXB.js → MP4Parser-s-GySkIU.js} +9 -9
- package/dist/{MatroskaParser-DAHp428F.js → MatroskaParser-C1hIY-G2.js} +6 -6
- package/dist/{MpegParser-iMWZ_SV9.js → MpegParser-D-wO6d-x.js} +7 -7
- package/dist/{MusepackParser-CO4rWQod.js → MusepackParser-C65CQBcT.js} +7 -7
- package/dist/{OggParser-Ch-yEZw-.js → OggParser-xoWjq9MC.js} +8 -8
- package/dist/{Util-B_52glhk.js → Util-CLkatdtN.js} +3 -3
- package/dist/{WavPackParser-D0DsAM2G.js → WavPackParser-BwNYQnde.js} +6 -6
- package/dist/{WaveParser-CADBh0bK.js → WaveParser-DirYR7f2.js} +8 -8
- package/dist/accounts-DumyUvSJ.js +125 -0
- package/dist/{acp-cli-B0oDXivn.js → acp-cli-kskPi80c.js} +28 -27
- package/dist/{admin-unlock-CjZRxHxf.js → admin-unlock-CDnzQ2kS.js} +4 -4
- package/dist/{archive-CUIu8SAN.js → archive-v5c_oZ0M.js} +1 -1
- package/dist/{audio-decode-C_GJII_g.js → audio-decode-Ch3D2H1P.js} +6 -6
- package/dist/{audio-recovery-B79LVKSU.js → audio-recovery-C9f1IYxd.js} +15 -14
- package/dist/{audit-C9kPnb6f.js → audit-CdSf5yc6.js} +19 -19
- package/dist/{auth-X5uq6vRI.js → auth-Bv7GrJIF.js} +2 -2
- package/dist/{auth-health-FPMBFAsj.js → auth-health-Bf0KV9dc.js} +1 -1
- package/dist/{accounts-C1p6Cppc.js → auth-store-B2FaPoSI.js} +18 -112
- package/dist/{bonjour-discovery-3LKAHtHL.js → bonjour-discovery-C601-zWo.js} +2 -2
- package/dist/build-info.json +3 -3
- package/dist/{ca-director-BZlhiXCn.js → ca-director-Cj4rkY2x.js} +18 -18
- package/dist/{call-CqDndKP3.js → call-D9x2Oink.js} +8 -8
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{canvas-state-C3YRnkNr.js → canvas-state-Oz4Obrxj.js} +2 -2
- package/dist/{capture-service-DD-fGV_g.js → capture-service-x5KflO52.js} +11 -10
- package/dist/channel-auth-73FQh9tw.js +162 -0
- package/dist/{channel-options-D0QGvmil.js → channel-options-BO7KFBkh.js} +5 -5
- package/dist/{channel-selection-Di4awirs.js → channel-selection-Dj_CMzvz.js} +2 -2
- package/dist/{channel-summary-DNu96QpK.js → channel-summary-CBEmDyZF.js} +4 -4
- package/dist/{channels-cli-BxOzCyM9.js → channels-cli-CqD6eUNX.js} +111 -107
- package/dist/{channels-status-issues-CGTJwSbx.js → channels-status-issues-BUOqiSuy.js} +1 -1
- package/dist/{chrome-CRoiYOwt.js → chrome-B1HAd3Al.js} +7 -6
- package/dist/{clack-prompter-clPzQ9p-.js → clack-prompter-DI8b5Pl-.js} +5 -5
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/cli-C0n-zgcl.js +134 -0
- package/dist/{cli-auto-update-Fy66y_VY.js → cli-auto-update-CWErkzCK.js} +10 -9
- package/dist/{client-Dzt29zIp.js → client-izHEJfss.js} +4 -4
- package/dist/{command-format-DOYW_19_.js → command-format-CW3d4lnG.js} +1 -1
- package/dist/{common-DDNLy4f0.js → common-g3KrUsDG.js} +2 -2
- package/dist/{companions-D-uSZqiI.js → companions-DOFb9Qnj.js} +1 -1
- package/dist/{completion-cli-CnAgvf3H.js → completion-cli-K8Ntq43i.js} +1 -1
- package/dist/{config-55EPjg8B.js → config-DkjBRbqs.js} +1 -1
- package/dist/{config-guard-K9XgRTDS.js → config-guard-qNjpWyqh.js} +54 -53
- package/dist/{configure-BNdKNcFL.js → configure-DN6Q8CDB.js} +21 -21
- package/dist/connect-DFIg7P1v.js +205 -0
- package/dist/{context-digest-Br8pwgY-.js → context-digest-CjHi0Y7g.js} +21 -20
- package/dist/{control-service-DQ32SBGJ.js → control-service-RpKA-_F0.js} +5 -5
- package/dist/{control-ui-assets-D4o4damy.js → control-ui-assets-D2wZfVim.js} +3 -3
- package/dist/{core-BlHif_ps.js → core-CeDpMYqo.js} +4 -4
- package/dist/{cron-cli-B7PghB4q.js → cron-cli-wtbQqot6.js} +33 -31
- package/dist/{daemon-cli-DdySqCD6.js → daemon-cli-Cyae4A7P.js} +24 -23
- package/dist/{daemon-runtime-DIgqhoVa.js → daemon-runtime-Cw8HN1z_.js} +5 -5
- package/dist/{deliver-uOIbsOCt.js → deliver-ClVjz43p.js} +12 -11
- package/dist/{deps-CNr0CXJR.js → deps-CVjDioW-.js} +2 -2
- package/dist/{devices-cli-Cu-yCMqM.js → devices-cli-DwveHngR.js} +25 -24
- package/dist/{diagnostics-6vXdnH8k.js → diagnostics-Db0yQkCa.js} +1 -1
- package/dist/{directory-cli-DstkgbDm.js → directory-cli-BXkyZjke.js} +28 -26
- package/dist/{dispatcher-BHYC2Mdu.js → dispatcher-D7EzbSw7.js} +1 -1
- package/dist/{dist-Pt-v-K0u.js → dist-ButgT5Gk.js} +5 -5
- package/dist/{dist-Ck6BZtRQ.js → dist-D2ZXRCQL.js} +6 -6
- package/dist/{dist-3zY5f01M.js → dist-De2BpLLK.js} +22 -22
- package/dist/{dist-UoOHg1p0.js → dist-DsdylfIW.js} +1 -1
- package/dist/{dist-cjs-BEAwDaaU.js → dist-cjs-B46jZvHR.js} +6 -6
- package/dist/{dist-cjs-BJYy2Uqb.js → dist-cjs-BATrBklJ.js} +1 -1
- package/dist/{dist-cjs-BNz9SzpQ.js → dist-cjs-BCXeXC0s.js} +2 -2
- package/dist/{dist-cjs-BzLua_ko.js → dist-cjs-BZIxvyyU.js} +11 -11
- package/dist/{dist-cjs-kBOJ196l.js → dist-cjs-BbzAggWT.js} +13 -13
- package/dist/{dist-cjs-Du3syY2f.js → dist-cjs-C8pwHZPt.js} +6 -6
- package/dist/{dist-cjs-JmgVfA8J.js → dist-cjs-CgNW7rsM.js} +2 -2
- package/dist/{dist-cjs-D9zWZLJo.js → dist-cjs-DIUV7iyC.js} +10 -10
- package/dist/{dist-cjs-C1qVVHND.js → dist-cjs-DSUoo7Hz.js} +1 -1
- package/dist/{dist-cjs-D8BOnVEk.js → dist-cjs-Dbma9Rg0.js} +5 -5
- package/dist/{dist-cjs-BVRU5Qt8.js → dist-cjs-DpY0BfdE.js} +6 -6
- package/dist/{dist-cjs-DN_VwS5V.js → dist-cjs-DuP7bijj.js} +1 -1
- package/dist/{dist-cjs-Du0zR-Ai.js → dist-cjs-iuUWDGbR.js} +2 -2
- package/dist/{dist-cjs-D2RXwDOe.js → dist-cjs-n19fPEyx.js} +3 -3
- package/dist/{dns-cli-C18PVD14.js → dns-cli-6Xd6yB_s.js} +23 -22
- package/dist/{docs-cli-BTLH5vYy.js → docs-cli-Di4KF_zE.js} +20 -19
- package/dist/{doctor-Co47_2NL.js → doctor-CYGTkAl0.js} +44 -43
- package/dist/{doctor-completion-BQuJ38kv.js → doctor-completion-BmQxtaJp.js} +6 -6
- package/dist/{dotenv-d4aPJ7q2.js → dotenv-sFSCefLS.js} +1 -1
- package/dist/{ensure-local-gateway-Xk7ir7zS.js → ensure-local-gateway-DL9v_WFE.js} +5 -5
- package/dist/entry.js +9 -8
- package/dist/{env-C2ovlUPG.js → env-BEtXFLod.js} +2 -2
- package/dist/{event-streams-R6AXkEMn.js → event-streams-ZjOK6A9_.js} +1 -1
- package/dist/{exec-f0H7lrAS.js → exec-C3toirSW.js} +2 -2
- package/dist/{exec-approvals-cli-CV8HbMJS.js → exec-approvals-cli-CU__ZvF-.js} +32 -31
- package/dist/{exec-approvals-evaluate-Mqaz3DKH.js → exec-approvals-evaluate-BYtiDK0u.js} +2 -2
- package/dist/{exec-approvals-io-Dzpqn78T.js → exec-approvals-io-CFVKuSeR.js} +1 -1
- package/dist/extension-api.js +88 -85
- package/dist/{first-run-Bfh6lhfa.js → first-run-CFgztpNJ.js} +2 -2
- package/dist/{flac-C4DRRmjE.js → flac-BvxXqQ1i.js} +0 -0
- package/dist/{gateway-cli-BpSWIzPr.js → gateway-cli-Bw46AFDg.js} +318 -265
- package/dist/gateway-client.js +8 -7
- package/dist/{gateway-rpc-DwTpsQgX.js → gateway-rpc-Dsim6rTp.js} +3 -3
- package/dist/{github-copilot-auth-BEsuL6VZ.js → github-copilot-auth-W7sylWjb.js} +11 -11
- package/dist/globals-4hwkGgXA.js +221 -0
- package/dist/{gmail-setup-utils-kVh_mWJI.js → gmail-setup-utils-By51E-G_.js} +3 -3
- package/dist/{graphics-terminal-setup-eucacjsj.js → graphics-terminal-setup-CPrRp08U.js} +8 -7
- package/dist/{health-format-BFZbZLTC.js → health-format-BbpMt6U1.js} +18 -17
- package/dist/{help-format-Bz-E4Xsi.js → help-format-DaracUAB.js} +1 -1
- package/dist/helpers-Bf_7MMN1.js +12 -0
- package/dist/{hooks-cli-E4SEBBSJ.js → hooks-cli-Y2YRhPHM.js} +93 -90
- package/dist/{hooks-status-Cr0qf9U9.js → hooks-status-NwL9AkZD.js} +5 -5
- package/dist/{identify-D9fBKIKv.js → identify-CHP8NQh2.js} +2 -2
- package/dist/{image-BQrsvGIN.js → image-Xhv1WbJY.js} +6 -6
- package/dist/{image-ops-5RRlAQ0c.js → image-ops-C45aI2Og.js} +3 -3
- package/dist/index.js +143 -139
- package/dist/{installs-PogP5yqW.js → installs-DYxVB0wb.js} +5 -5
- package/dist/{io-BiSyGUoT.js → io-lVJPpZa9.js} +7 -7
- package/dist/{koi-Cjk48UJ2.js → koi-B-adVRJ0.js} +18 -18
- package/dist/{koi-event-bridge-DeLARijk.js → koi-event-bridge-DcS7JxM8.js} +2 -2
- package/dist/{koi-scope-C15QLwY-.js → koi-scope-Cagum3pM.js} +6 -6
- package/dist/{koi-utterance-trigger-DBXY1dq5.js → koi-utterance-trigger-DEVLYg_A.js} +1 -1
- package/dist/{ledger-cli-DjgehGEF.js → ledger-cli-1TD3AiqE.js} +1 -1
- package/dist/{lib-CbWkbLty.js → lib-B1krrDBw.js} +3 -3
- package/dist/{lib-DGjy3PZ_.js → lib-CqBTO5i4.js} +24 -24
- package/dist/{lib-JFtVlWtn.js → lib-DUQWl06-.js} +1 -1
- package/dist/{lib-9wRl5N4X.js → lib-yPXHDJsX.js} +1 -1
- package/dist/{links-BY_N2dMU.js → links-BqdU0TFi.js} +1 -1
- package/dist/{logger-Door90g0.js → logger-aJ6leLZh.js} +2 -1
- package/dist/{logging-C3sRv-iX.js → logging-B2js4Jgc.js} +1 -1
- package/dist/{login-JCFx5Pzl.js → login-oFK0z7-J.js} +11 -11
- package/dist/{login-qr-DAZi8Nkf.js → login-qr-DPn0cTK-.js} +14 -12
- package/dist/{logs-cli-B64FQ0sG.js → logs-cli-DmTobA9e.js} +28 -27
- package/dist/{manager-DH-1An5c.js → manager-BVWrev6y.js} +9 -9
- package/dist/{manifest-registry-Y19rtw98.js → manifest-registry-Ckw3Vy2p.js} +1 -1
- package/dist/{message-DLdOmEc7.js → message-BGysnvPK.js} +10 -255
- package/dist/{message-channel-Cy9b1PGA.js → message-channel-CaFjzGb5.js} +1 -1
- package/dist/{model-selection-CKLFiLpY.js → model-selection-CmKBBKeL.js} +17 -17
- package/dist/{models-cli-ZJ_KPSlL.js → models-cli-BvE3ukyD.js} +97 -94
- package/dist/{models-config-DoNNjXe6.js → models-config-CmUg-3zr.js} +2 -2
- package/dist/{mpg123-decoder-ChMVLi_j.js → mpg123-decoder-B8VURVkf.js} +0 -0
- package/dist/{multipart-parser-C4YpL2Da.js → multipart-parser-notKFbBp.js} +1 -1
- package/dist/{net-CtMv6JrN.js → net-Cfif-CzD.js} +1 -1
- package/dist/{node-cli-D4giluTo.js → node-cli-D6ZR8rGu.js} +44 -43
- package/dist/{node-service-Bb6tgGQx.js → node-service-FpI5_Kev.js} +2 -2
- package/dist/{nodes-cli-ChTsJXUH.js → nodes-cli-BJ3UifXn.js} +31 -30
- package/dist/{nodes-screen-Bq-MvKAS.js → nodes-screen-Cceyy2v6.js} +1 -1
- package/dist/{note-PNq_JEQe.js → note-Dgsh9TJE.js} +2 -2
- package/dist/nylas-U2wHlPwX.js +269 -0
- package/dist/{ogg-opus-decoder-rGN6IMJw.js → ogg-opus-decoder-BPruHiaR.js} +0 -0
- package/dist/{ogg-vorbis-BPcbvdod.js → ogg-vorbis-niFy7Gax.js} +0 -0
- package/dist/{onboard-channels-C7E-puRC.js → onboard-channels-DXgzUduh.js} +10 -10
- package/dist/{onboard-helpers-nDN4y46S.js → onboard-helpers-o1U-dn2n.js} +12 -12
- package/dist/{onboard-skills-BdvkU1bg.js → onboard-skills-D2PuvOlq.js} +16 -16
- package/dist/{onboarding-sBRViahV.js → onboarding-KjPht-vT.js} +47 -46
- package/dist/{opus-ml-BMchJC0t.js → opus-ml-C1IgeK4A.js} +0 -0
- package/dist/{pairing-cli-bpewtve0.js → pairing-cli-BKTkyxLs.js} +28 -26
- package/dist/{pairing-labels-BuxC93RD.js → pairing-labels-CaaA_Kt-.js} +1 -1
- package/dist/{pairing-store-CAfuV0tG.js → pairing-store-BJq_rv5S.js} +2 -2
- package/dist/{path-env-CnhsG0TT.js → path-env-1_C-JRUU.js} +2 -2
- package/dist/{paths-CizQHpAk.js → paths-6OemP7gm.js} +1 -1
- package/dist/{photon_rs-BV1jsHW1.js → photon_rs-DGS5hX8b.js} +1 -1
- package/dist/{pi-embedded-helpers-DFn976W-.js → pi-embedded-helpers-BnsMD0to.js} +4 -4
- package/dist/{pi-model-discovery-BUOhjZaJ.js → pi-model-discovery-IRS5Bhx-.js} +1 -1
- package/dist/{pi-tool-definition-adapter-BjyavKfi.js → pi-tool-definition-adapter-D9igP7jU.js} +4 -4
- package/dist/{pi-tools.policy-BFFg8jIe.js → pi-tools.policy-DDff0t8l.js} +6 -6
- package/dist/{platform-billing-BjToqDnR.js → platform-billing-D8f18ubj.js} +1 -1
- package/dist/{plugin-auto-enable-7Sq0kaQq.js → plugin-auto-enable-D5QYYZDH.js} +5 -5
- package/dist/{plugin-registry-Dz7tFOeN.js → plugin-registry-Dd3gYaF4.js} +4 -4
- package/dist/plugin-sdk/index.js +7 -7
- package/dist/{plugins-CD53Y-wp.js → plugins-C450DgVP.js} +12 -6
- package/dist/{plugins-cli-CuSEtiZR.js → plugins-cli-CXwGKG5Z.js} +94 -91
- package/dist/{ports-B03Y1yyv.js → ports-C6-lHXUM.js} +2 -2
- package/dist/{proactive-eval-BQcSSk5h.js → proactive-eval-BCMSOwxK.js} +11 -11
- package/dist/{program-CfMxAtmt.js → program-BvCROCKp.js} +12 -11
- package/dist/{progress-B8PPYDDC.js → progress-QVvXnEt-.js} +2 -2
- package/dist/{prompt-style-CJRaWg4h.js → prompt-style-DUZn5AjO.js} +1 -1
- package/dist/{pw-ai-YPXPbYy6.js → pw-ai-BkS6uRkc.js} +10 -9
- package/dist/{qmd-manager-ZItBTBzr.js → qmd-manager-56XH3jlC.js} +13 -12
- package/dist/{register.subclis-D0eQnEI6.js → register.subclis-D4icX3hP.js} +35 -35
- package/dist/{registry-xBtEGPIj.js → registry-BDi8qkVO.js} +1 -1
- package/dist/{reply-D63OCD4n.js → reply-CDp9q1Vc.js} +105 -102
- package/dist/{restart-sentinel-CDgY6TKs.js → restart-sentinel-B3dQ684O.js} +1 -1
- package/dist/{rich-wmQhKBIx.js → rich-BaT-R-Bj.js} +1 -1
- package/dist/{routes-DXSsSe_K.js → routes-C_GpVEDZ.js} +6 -6
- package/dist/{rpc-Cq7TWXCW.js → rpc-YhAQzNlL.js} +3 -3
- package/dist/{run-code-tool-Cr01FqsJ.js → run-code-tool-NbWgGyDu.js} +1 -1
- package/dist/run-main-q7BkaqXe.js +273 -0
- package/dist/{runner-Dv3coC2q.js → runner-CpnbA-2N.js} +13 -13
- package/dist/{runtime-guard-qFkyrhAB.js → runtime-guard-QJDAE0ub.js} +1 -1
- package/dist/{sandbox-cli-B199VfMw.js → sandbox-cli-terA6EM2.js} +41 -39
- package/dist/{sandbox-B-lCuykD.js → sandbox-zPcju-bV.js} +12 -12
- package/dist/{security-cli-BIn7mAm0.js → security-cli-B5qTCPSE.js} +49 -47
- package/dist/{server-context-CNfswlAM.js → server-context-Dej8i418.js} +6 -6
- package/dist/{server-node-events-2YS7Vdsp.js → server-node-events-DuXlBGXC.js} +92 -89
- package/dist/{service-D1-PnhZe.js → service-Bz3BLFuQ.js} +3 -3
- package/dist/{service-audit-BVZGmzLW.js → service-audit-CijWRKqR.js} +4 -4
- package/dist/{session-cost-usage-C71VC_PD.js → session-cost-usage-Nmd8bPic.js} +2 -2
- package/dist/{sessions-DnPG9BI4.js → sessions-BZBtTQCk.js} +10 -10
- package/dist/{shared-CHxb6-Fi.js → shared-B3rppGQN.js} +4 -4
- package/dist/{shared-tNGHWtW-.js → shared-CZVRangM.js} +6 -5
- package/dist/{signin-TesaorA1.js → signin-CvHnO52D.js} +8 -8
- package/dist/{skills-cli-GT4yy2a4.js → skills-cli-EiZ6YlCl.js} +29 -28
- package/dist/{skills-status-sMAyGPXV.js → skills-status-DzGR295b.js} +4 -4
- package/dist/{skills-C_t45j3T.js → skills-w4q7XySt.js} +6 -6
- package/dist/{sqlite-Ctl23tcn.js → sqlite-C0QbeU3t.js} +1 -1
- package/dist/{src-Xm2tVyWL.js → src-B1X0ChaP.js} +2 -2
- package/dist/{sso-oidc-BhUPsnaI.js → sso-oidc-BE_eNisy.js} +8 -8
- package/dist/{status-pq91F0kp.js → status-D2sLFE9B.js} +4 -1
- package/dist/{status-DFwHiX7z.js → status-unalYyJY.js} +4 -4
- package/dist/{sts-CaZ-4Vb6.js → sts-D_bZA39E.js} +8 -8
- package/dist/{subsystem-nnRnHSFk.js → subsystem-gU4M25gl.js} +3 -220
- package/dist/{surface-tool-CAcZRxFq.js → surface-tool-DqCgANSk.js} +4 -4
- package/dist/{system-cli-BD9fmtCg.js → system-cli-B-e40tyP.js} +26 -25
- package/dist/{system-prompt-snippet-CVkVKHlK.js → system-prompt-snippet-BPa9MMNP.js} +1 -1
- package/dist/{systemd-DZP4s4qd.js → systemd-5f0_yK5K.js} +3 -3
- package/dist/{systemd-hints-CMiNS6NK.js → systemd-hints-CALsumZt.js} +1 -1
- package/dist/{systemd-linger-DHSd9ikR.js → systemd-linger-sox_shlO.js} +2 -2
- package/dist/{table-DIfWcies.js → table-SaWmGh81.js} +2 -2
- package/dist/{tailscale-BOh3Z_vn.js → tailscale-BX7pFm3E.js} +3 -2
- package/dist/{tool-display-DvcBjgri.js → tool-display-Dg79vOSW.js} +2 -2
- package/dist/{tool-images-BIkTcSan.js → tool-images-BscwczCb.js} +2 -2
- package/dist/tui-cli-DtHxmn2U.js +96 -0
- package/dist/{tui-D-n6UhuD.js → tui-eV0dj-x4.js} +30 -30
- package/dist/{tui-shell-DOjzcOig.js → tui-shell-BNyj67Rq.js} +9 -9
- package/dist/{update-DrQupmGI.js → update-CXkUTz34.js} +3 -3
- package/dist/{update-cli-9PXRA3S_.js → update-cli-CT9T8iOX.js} +121 -118
- package/dist/{update-runner-DHNkj8-z.js → update-runner-DbYE4uWc.js} +4 -4
- package/dist/{usage-reporter-CpMmHkw7.js → usage-reporter-Bx9Nr7UM.js} +1 -1
- package/dist/{utilities-Dr7XUab8.js → utilities-L898lIwo.js} +1 -1
- package/dist/{utils-B1LOScGi.js → utils-BTCspqG1.js} +1 -1
- package/dist/{voices-cli-DXqGMgtw.js → voices-cli-B-U91QQ3.js} +5 -4
- package/dist/{webhooks-cli-BLPA1MZB.js → webhooks-cli-D3K-2gZv.js} +28 -27
- package/dist/{widearea-dns-BjWuJvtM.js → widearea-dns-zHPAPSiI.js} +1 -1
- package/dist/{ws-log-BzGMbHM2.js → ws-log-K0TDamKG.js} +4 -3
- package/dist/{zen-surface-DJHZWAux.js → zen-surface-DBpHONnk.js} +2 -2
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +10 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +10 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +10 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +10 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +10 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +10 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +10 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/dist/channel-auth-DCGvsTTl.js +0 -349
- package/dist/cli-BdW7rq8F.js +0 -131
- package/dist/helpers-4BXRutqw.js +0 -10
- package/dist/run-main-DGjB32Pl.js +0 -269
- package/dist/tui-cli-DdsPOyEw.js +0 -94
- /package/dist/{BasicParser--n6FLqcE.js → BasicParser-Ctdj2OB-.js} +0 -0
- /package/dist/{action-ledger-CJ4wxgFj.js → action-ledger-CZm1RLNd.js} +0 -0
- /package/dist/{ansi-By7x1TI7.js → ansi-aRwLYlzD.js} +0 -0
- /package/dist/{billing-alerts-DW7RyxM5.js → billing-alerts-CL95zVcj.js} +0 -0
- /package/dist/{boolean-D-3joTkO.js → boolean-B7w0pBkV.js} +0 -0
- /package/dist/{brew-CqrvYCjs.js → brew-BV6cdBLU.js} +0 -0
- /package/dist/{capture-cli-BF1NY1RT.js → capture-cli-DF6O2JDT.js} +0 -0
- /package/dist/{cli-utils-D4mTRuWj.js → cli-utils-uAyQZBvv.js} +0 -0
- /package/dist/{client-Gv_mpZR7.js → client-DBrkrrrl.js} +0 -0
- /package/dist/{codec-parser-T4JNCFj4.js → codec-parser-B5mYLNyt.js} +0 -0
- /package/dist/{constants-UedXN8EP.js → constants-BxOshTSm.js} +0 -0
- /package/dist/{core-CJWRLYUu.js → core-D6njtn4x.js} +0 -0
- /package/dist/{declarations-izhxPnzy.js → declarations-BCFE6K8P.js} +0 -0
- /package/dist/{device-identity-CnlyT2Si.js → device-identity-pxZl9iT8.js} +0 -0
- /package/dist/{dist-B01d37B6.js → dist-D6Sv3llW.js} +0 -0
- /package/dist/{dist-cjs-C8lX5Xs0.js → dist-cjs-CXWR2P_v.js} +0 -0
- /package/dist/{dist-cjs-CHDKNo5p.js → dist-cjs-Do92MAUg.js} +0 -0
- /package/dist/{dist-cjs-DTH4CtR9.js → dist-cjs-eWAaYfPE.js} +0 -0
- /package/dist/{esm-CZZtQIhc.js → esm-BFVtSKFu.js} +0 -0
- /package/dist/{esm-kUSIWN2f.js → esm-DDykDtll.js} +0 -0
- /package/dist/{esm-shims-CZxOEdhX.js → esm-shims-DCx9WpXg.js} +0 -0
- /package/dist/{event-log-WbPUNukH.js → event-log-8Gy24Q8h.js} +0 -0
- /package/dist/{format-DtciOWIX.js → format-D-VAp4B3.js} +0 -0
- /package/dist/{from-Dfzfv9uw.js → from-DlxtjhdR.js} +0 -0
- /package/dist/{github-copilot-token-BqhLBQWA.js → github-copilot-token-BlwFn4nA.js} +0 -0
- /package/dist/{helpers-CI2sc-CB.js → helpers-Dano2vlT.js} +0 -0
- /package/dist/{is-main-CQX7mFIJ.js → is-main-K-6EEb_n.js} +0 -0
- /package/dist/{koi-events-DVxTOxY3.js → koi-events-D5PuKPcz.js} +0 -0
- /package/dist/{lib-C0cU2Bav.js → lib-Dinb6tv6.js} +0 -0
- /package/dist/{live-broadcast-CifQ8Lzc.js → live-broadcast-BIlUXK-0.js} +0 -0
- /package/dist/{logging-BQKv640H.js → logging-q4KyMmY-.js} +0 -0
- /package/dist/{native-window-CMnOFmyK.js → native-window-DumLjKeL.js} +0 -0
- /package/dist/{node-pairing-WRkSoKg6.js → node-pairing-CYNP1g4x.js} +0 -0
- /package/dist/{node-pty-gtBUnxUN.js → node-pty-DvuSPjhQ.js} +0 -0
- /package/dist/{node-wav-CwlOpKY0.js → node-wav-kZ_sIssA.js} +0 -0
- /package/dist/{package-DhcmafWY.js → package-DKdaLkus.js} +0 -0
- /package/dist/{parse-log-line-BFXEIELd.js → parse-log-line-wGjegDXe.js} +0 -0
- /package/dist/{parse-C-X5VUYI.js → parse-lztFbXu9.js} +0 -0
- /package/dist/{parse-timeout-kGl8Fsas.js → parse-timeout-CIqovswJ.js} +0 -0
- /package/dist/{pdf-BohVLTJL.js → pdf-B52QHMdD.js} +0 -0
- /package/dist/{permissions-cli-DXadkGgv.js → permissions-cli-Dnf0d1au.js} +0 -0
- /package/dist/{profile-utils-Ls8shSxv.js → profile-utils-yCmvj13C.js} +0 -0
- /package/dist/{prompts-BC5TXS0_.js → prompts-CNzp9M83.js} +0 -0
- /package/dist/{proxy-from-env-BCOB9yxp.js → proxy-from-env-BI6o-lgV.js} +0 -0
- /package/dist/{qoa-format-BboMlPJa.js → qoa-format-HAraj5c4.js} +0 -0
- /package/dist/{readability-C_v10IzL.js → readability-CkKLYpoQ.js} +0 -0
- /package/dist/{readiness-CCfUXab4.js → readiness-DjdWO9Fm.js} +0 -0
- /package/dist/{redact-ClVwO7Nn.js → redact-ZAoMZTIY.js} +0 -0
- /package/dist/{runtime-koi-overlay-DeKEFkkl.js → runtime-koi-overlay-BS4Nza1K.js} +0 -0
- /package/dist/{satisfies-DCdzcNI3.js → satisfies-D2Taq9gG.js} +0 -0
- /package/dist/{session-key-B2OXLVi_.js → session-key-BIl6GRQN.js} +0 -0
- /package/dist/{skill-scanner-CLckczzl.js → skill-scanner-b9MamBYt.js} +0 -0
- /package/dist/{skykoi-root-Dsv6eLbL.js → skykoi-root-Uqb_vFtv.js} +0 -0
- /package/dist/{source-map--hgaz8qG.js → source-map-_40euoWs.js} +0 -0
- /package/dist/{sqlite-vec-B9Q87Em9.js → sqlite-vec-D70r8h9V.js} +0 -0
- /package/dist/{src-BJiPQPqV.js → src-DR4wHj_N.js} +0 -0
- /package/dist/{streams-cli-DOF8VfLc.js → streams-cli-Buk4KNUn.js} +0 -0
- /package/dist/{tailnet-7u3DZ0jI.js → tailnet-CxR_pUEt.js} +0 -0
- /package/dist/{theme-CX-D7gOR.js → theme-Ql6JHKzG.js} +0 -0
- /package/dist/{tokens-DznGfpjQ.js → tokens-Duj-iWBS.js} +0 -0
- /package/dist/{tool-policy-CjSq72TW.js → tool-policy-BH452tj4.js} +0 -0
- /package/dist/{transcript-events-DNNIRVG1.js → transcript-events-CMT5U7Om.js} +0 -0
- /package/dist/{transcript-tools-BByi9l-4.js → transcript-tools-Dy472a2E.js} +0 -0
- /package/dist/{tslib.es6-17x8-pNU.js → tslib.es6-CmFrSJr0.js} +0 -0
- /package/dist/{types-DO4kgbma.js → types-BAAOnG0s.js} +0 -0
- /package/dist/{uint8array-extras-DBV0kdwr.js → uint8array-extras-LUxDELMC.js} +0 -0
- /package/dist/{version-B_FpLmDY.js → version-BM8pEsQj.js} +0 -0
- /package/dist/{warnings-Daj0i4A6.js → warnings-C2KFRM58.js} +0 -0
- /package/dist/{ws-D3TuFv3E.js → ws-C7lNTRNL.js} +0 -0
- /package/dist/{wsl-3CioBf4_.js → wsl-Dk7vKTAv.js} +0 -0
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
import "./subsystem-
|
|
1
|
+
import "./subsystem-gU4M25gl.js";
|
|
2
2
|
import "./paths-VdmjGGyc.js";
|
|
3
|
-
import "./
|
|
4
|
-
import "./
|
|
5
|
-
import "./
|
|
6
|
-
import "./
|
|
7
|
-
import "./
|
|
8
|
-
import "./
|
|
9
|
-
import
|
|
10
|
-
import "./
|
|
11
|
-
import "./dist-
|
|
12
|
-
import "./
|
|
13
|
-
import "./
|
|
14
|
-
import "./
|
|
15
|
-
import
|
|
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-
|
|
3
|
-
import { n as runExec } from "./exec-
|
|
4
|
-
import { l as resolveKoiWorkspaceDir, r as resolveDefaultKoiId } from "./koi-scope-
|
|
5
|
-
import { t as formatCliCommand } from "./command-format-
|
|
6
|
-
import { D as INCLUDE_KEY, O as MAX_INCLUDE_DEPTH, r as createConfigIO } from "./io-
|
|
7
|
-
import { a as MANIFEST_KEY } from "./manifest-registry-
|
|
8
|
-
import { n as listChannelPlugins } from "./plugins-
|
|
9
|
-
import { d as resolveSandboxToolPolicyForKoi, l as resolveSandboxConfigForKoi } from "./sandbox-
|
|
10
|
-
import { s as resolveToolProfilePolicy } from "./tool-policy-
|
|
11
|
-
import { i as loadWorkspaceSkillEntries } from "./skills-
|
|
12
|
-
import { i as resolveBrowserConfig, o as resolveProfile } from "./server-context-
|
|
13
|
-
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-
|
|
14
|
-
import { n as GatewayClient } from "./client-
|
|
15
|
-
import { t as buildGatewayConnectionDetails } from "./call-
|
|
16
|
-
import { i as readChannelAllowFromStore } from "./pairing-store-
|
|
17
|
-
import { c as resolveNativeSkillsEnabled, n as isToolAllowedByPolicies, s as resolveNativeCommandsEnabled } from "./pi-tools.policy-
|
|
18
|
-
import {
|
|
19
|
-
import { t as scanDirectoryWithSummary } from "./skill-scanner-
|
|
20
|
-
import { i as resolveGatewayAuth } from "./auth-
|
|
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-
|
|
2
|
-
import { c as readTailscaleWhoisIdentity } from "./tailscale-
|
|
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,12 +1,26 @@
|
|
|
1
|
-
import {
|
|
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 {
|
|
4
|
-
import {
|
|
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
|
-
|
|
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-
|
|
3
|
-
import { n as resolveWideAreaDiscoveryDomain } from "./widearea-dns-
|
|
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 });
|
package/dist/build-info.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { I as listThinkingLevelLabels, L as listThinkingLevels, P as formatThinkingLevels, m as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-
|
|
2
|
-
import {
|
|
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-
|
|
5
|
-
import { l as resolveKoiWorkspaceDir, r as resolveDefaultKoiId } from "./koi-scope-
|
|
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-
|
|
7
|
-
import { a as clearBillingAlert, i as classifyBillingFailure, o as reportBillingAlert } from "./billing-alerts-
|
|
8
|
-
import { i as loadConfig } from "./io-
|
|
9
|
-
import { I as listChannelDocks, O as canonicalizeMainSessionAlias, U as buildGroupDisplayName, _ as normalizeSessionDeliveryFields, i as loadSessionStore, j as resolveMainSessionKey } from "./sessions-
|
|
10
|
-
import { t as ensureSKYKOIModelsJson } from "./models-config-
|
|
11
|
-
import { O as visibleWidth } from "./dist-
|
|
12
|
-
import { o as resolveStorePath, r as resolveSessionTranscriptPath } from "./paths-
|
|
13
|
-
import { n as SILENT_REPLY_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-
|
|
14
|
-
import { a as formatTokenCount, n as extractToolCallNames, r as hasToolCall } from "./transcript-tools-
|
|
15
|
-
import { n as readSkykoiEnvVar } from "./dotenv-
|
|
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-
|
|
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-
|
|
18
|
-
import { a as CA_FAMILIES, i as sendNativeIntent, t as hasNativeWindow } from "./native-window-
|
|
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-
|
|
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-
|
|
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-
|
|
5
|
-
import { i as loadConfig } from "./io-
|
|
6
|
-
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-
|
|
7
|
-
import { r as loadOrCreateDeviceIdentity } from "./device-identity-
|
|
8
|
-
import { t as pickPrimaryTailnetIPv4 } from "./tailnet-
|
|
9
|
-
import { Ot as PROTOCOL_VERSION, Pt as normalizeFingerprint, n as GatewayClient } from "./client-
|
|
10
|
-
import { a as pickPrimaryLanIPv4 } from "./net-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
1
|
+
import "./subsystem-gU4M25gl.js";
|
|
2
2
|
import "./paths-VdmjGGyc.js";
|
|
3
|
-
import "./
|
|
4
|
-
import "./
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import "./
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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 {
|
|
2
|
-
import { t as isTruthyEnvValue } from "./env-
|
|
3
|
-
import { n as listChannelPlugins } from "./plugins-
|
|
4
|
-
import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-
|
|
5
|
-
import { t as ensurePluginRegistryLoaded } from "./plugin-registry-
|
|
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-
|
|
2
|
-
import { c as listDeliverableMessageChannels, l as normalizeMessageChannel } from "./message-channel-
|
|
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-
|
|
2
|
-
import { t as DEFAULT_ACCOUNT_ID } from "./session-key-
|
|
3
|
-
import { i as loadConfig } from "./io-
|
|
4
|
-
import { n as listChannelPlugins } from "./plugins-
|
|
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";
|