skykoi 2026.3.415 → 2026.3.417

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 (313) hide show
  1. package/dist/{APEv2Parser-CQZ2oGz-.js → APEv2Parser-SmqanW0H.js} +2 -2
  2. package/dist/{AbstractID3Parser-C-7q8rrD.js → AbstractID3Parser-bCQkeSom.js} +4 -4
  3. package/dist/{AiffParser-Cn8SBV-Z.js → AiffParser-DjrWvyRx.js} +3 -3
  4. package/dist/{AsfParser-CoFe_l42.js → AsfParser-B_E9lVhV.js} +4 -4
  5. package/dist/{DsdiffParser-Bm1hLHc0.js → DsdiffParser-DE9e_mIj.js} +3 -3
  6. package/dist/{DsfParser-CfEPvF1O.js → DsfParser-DpZ8iYTl.js} +4 -4
  7. package/dist/{FlacParser-Bs6Pkx37.js → FlacParser-8pXQewEG.js} +5 -5
  8. package/dist/{ID3v1Parser-Cb4WQDuj.js → ID3v1Parser-DAWPkE0z.js} +3 -3
  9. package/dist/{ID3v2Parser-0vs-_wxB.js → ID3v2Parser-C3Orzadd.js} +4 -4
  10. package/dist/{ID3v2Token-f446IQwP.js → ID3v2Token-DSDS6UA5.js} +1 -1
  11. package/dist/{MP4Parser-s-GySkIU.js → MP4Parser-CI7txQ0x.js} +5 -5
  12. package/dist/{MatroskaParser-C1hIY-G2.js → MatroskaParser-BftJGj5p.js} +2 -2
  13. package/dist/{MpegParser-D-wO6d-x.js → MpegParser-B9VLLa2F.js} +3 -3
  14. package/dist/{MusepackParser-C65CQBcT.js → MusepackParser-B8Nylrrl.js} +4 -4
  15. package/dist/{OggParser-xoWjq9MC.js → OggParser-gI_Bb9Xi.js} +4 -4
  16. package/dist/{Util-CLkatdtN.js → Util-BFwPcBw2.js} +1 -1
  17. package/dist/{WavPackParser-BwNYQnde.js → WavPackParser-1pjYuQac.js} +2 -2
  18. package/dist/{WaveParser-DirYR7f2.js → WaveParser-C33mKha9.js} +4 -4
  19. package/dist/{acp-cli-kskPi80c.js → acp-cli-C56r_8Lj.js} +13 -13
  20. package/dist/{admin-unlock-CDnzQ2kS.js → admin-unlock-DJRF9TiS.js} +3 -3
  21. package/dist/{archive-v5c_oZ0M.js → archive-3kJM-RnF.js} +1 -1
  22. package/dist/{audio-decode-Ch3D2H1P.js → audio-decode-DP1Jkkiw.js} +6 -6
  23. package/dist/{audio-recovery-C9f1IYxd.js → audio-recovery-SmensYPx.js} +3 -3
  24. package/dist/{audit-CdSf5yc6.js → audit-n4-mIgEB.js} +11 -11
  25. package/dist/{auth-Bv7GrJIF.js → auth-DcBX6MJZ.js} +2 -2
  26. package/dist/{auth-health-Bf0KV9dc.js → auth-health-xMFe60vn.js} +1 -1
  27. package/dist/{bonjour-discovery-C601-zWo.js → bonjour-discovery-C3TCSnsw.js} +1 -1
  28. package/dist/build-info.json +3 -3
  29. package/dist/{ca-director-Cj4rkY2x.js → ca-director-CX8CLJlH.js} +206 -20
  30. package/dist/{call-D9x2Oink.js → call-BEVX8c7Z.js} +5 -5
  31. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  32. package/dist/{canvas-state-Oz4Obrxj.js → canvas-state-Bq4301XX.js} +2 -2
  33. package/dist/{capture-service-x5KflO52.js → capture-service-B3REw--j.js} +25 -10
  34. package/dist/{channel-auth-73FQh9tw.js → channel-auth-DZRHFKcd.js} +6 -6
  35. package/dist/{channel-options-BO7KFBkh.js → channel-options-vJu7vK4F.js} +2 -2
  36. package/dist/{channel-summary-CBEmDyZF.js → channel-summary-DWF4XIW6.js} +1 -1
  37. package/dist/{channels-cli-CqD6eUNX.js → channels-cli-SCdE-Ie-.js} +81 -80
  38. package/dist/{clack-prompter-DI8b5Pl-.js → clack-prompter-B8vgSXns.js} +4 -4
  39. package/dist/cli/daemon-cli.js +1 -1
  40. package/dist/{cli-C0n-zgcl.js → cli-BCjVYen8.js} +60 -59
  41. package/dist/{cli-auto-update-CWErkzCK.js → cli-auto-update-BhhAK4_s.js} +3 -3
  42. package/dist/{client-izHEJfss.js → client-BiLNqlII.js} +1 -1
  43. package/dist/{common-g3KrUsDG.js → common-D4jgEdRW.js} +2 -2
  44. package/dist/{completion-cli-K8Ntq43i.js → completion-cli-D6NvIHy1.js} +1 -1
  45. package/dist/{config-DkjBRbqs.js → config-Dtw8d1oB.js} +1 -1
  46. package/dist/{config-guard-qNjpWyqh.js → config-guard-D6W7sJwi.js} +42 -42
  47. package/dist/{configure-DN6Q8CDB.js → configure-MqoBk3ZA.js} +17 -17
  48. package/dist/{connect-DFIg7P1v.js → connect-BapV23cV.js} +1 -1
  49. package/dist/{context-digest-CjHi0Y7g.js → context-digest-BZhtn50t.js} +7 -7
  50. package/dist/{control-service-RpKA-_F0.js → control-service-CGicvFxv.js} +3 -3
  51. package/dist/{cron-cli-wtbQqot6.js → cron-cli-ByZhnj0N.js} +13 -13
  52. package/dist/{daemon-cli-Cyae4A7P.js → daemon-cli-C2fPdVmL.js} +17 -17
  53. package/dist/{daemon-runtime-Cw8HN1z_.js → daemon-runtime-BCgA9PFA.js} +3 -3
  54. package/dist/{deliver-ClVjz43p.js → deliver-DIExvjND.js} +5 -5
  55. package/dist/{deps-CVjDioW-.js → deps-CQfXzOo6.js} +2 -2
  56. package/dist/{devices-cli-DwveHngR.js → devices-cli-BtDI5l9Y.js} +10 -10
  57. package/dist/{diagnostics-Db0yQkCa.js → diagnostics-VjGrBFy1.js} +1 -1
  58. package/dist/{directory-cli-BXkyZjke.js → directory-cli-CzjlrJAJ.js} +9 -9
  59. package/dist/{dispatcher-D7EzbSw7.js → dispatcher-CWMz7Cyv.js} +1 -1
  60. package/dist/{dist-D2ZXRCQL.js → dist-B_3AAR3q.js} +3 -3
  61. package/dist/{dist-ButgT5Gk.js → dist-EVZCJXU2.js} +2 -2
  62. package/dist/{dist-cjs-DIUV7iyC.js → dist-cjs-B8z3ncj-.js} +2 -2
  63. package/dist/{dist-cjs-Dbma9Rg0.js → dist-cjs-BvdDM2q1.js} +2 -2
  64. package/dist/{dist-cjs-DpY0BfdE.js → dist-cjs-C23yOCo2.js} +3 -3
  65. package/dist/{dist-cjs-BbzAggWT.js → dist-cjs-C351KziI.js} +8 -8
  66. package/dist/{dist-cjs-B46jZvHR.js → dist-cjs-DI5BLGTw.js} +1 -1
  67. package/dist/{dist-cjs-BZIxvyyU.js → dist-cjs-DJqZDNhx.js} +3 -3
  68. package/dist/{dist-cjs-C8pwHZPt.js → dist-cjs-d_7HJfDW.js} +1 -1
  69. package/dist/{dist-De2BpLLK.js → dist-kkQpvYsv.js} +65 -47
  70. package/dist/{dns-cli-6Xd6yB_s.js → dns-cli-BzfesjlG.js} +9 -9
  71. package/dist/{docs-cli-Di4KF_zE.js → docs-cli-CLHjjIPD.js} +6 -6
  72. package/dist/{doctor-CYGTkAl0.js → doctor-Cu7CoLyP.js} +32 -32
  73. package/dist/{doctor-completion-BmQxtaJp.js → doctor-completion-DK15LWZe.js} +3 -3
  74. package/dist/{ensure-local-gateway-DL9v_WFE.js → ensure-local-gateway-CEtQeEN3.js} +5 -5
  75. package/dist/entry.js +1 -1
  76. package/dist/{exec-approvals-cli-CU__ZvF-.js → exec-approvals-cli-okD3-GrW.js} +17 -17
  77. package/dist/{exec-approvals-evaluate-BYtiDK0u.js → exec-approvals-evaluate-BV8VYXsc.js} +1 -1
  78. package/dist/extension-api.js +60 -59
  79. package/dist/{first-run-CFgztpNJ.js → first-run-Apj_hLx-.js} +1 -1
  80. package/dist/{flac-BvxXqQ1i.js → flac-DNZtHkIC.js} +0 -0
  81. package/dist/{gateway-cli-Bw46AFDg.js → gateway-cli-D0B0hz2u.js} +164 -139
  82. package/dist/gateway-client.js +2 -2
  83. package/dist/{gateway-rpc-Dsim6rTp.js → gateway-rpc-B2Zl68Pc.js} +2 -2
  84. package/dist/{github-copilot-auth-W7sylWjb.js → github-copilot-auth-BxMpu61Q.js} +6 -6
  85. package/dist/{gmail-setup-utils-By51E-G_.js → gmail-setup-utils-D2Ea1lxQ.js} +1 -1
  86. package/dist/{graphics-terminal-setup-CPrRp08U.js → graphics-terminal-setup-TQvrnfna.js} +2 -2
  87. package/dist/{health-format-BbpMt6U1.js → health-format-C1I7fGDR.js} +8 -8
  88. package/dist/{hooks-cli-Y2YRhPHM.js → hooks-cli-CcRkXhcY.js} +64 -63
  89. package/dist/{hooks-status-NwL9AkZD.js → hooks-status-zBq0Dt0N.js} +1 -1
  90. package/dist/{identify-CHP8NQh2.js → identify-BoluV5CV.js} +82 -11
  91. package/dist/{image-Xhv1WbJY.js → image-DPbV_lIw.js} +5 -5
  92. package/dist/{image-ops-C45aI2Og.js → image-ops-IWejMbO7.js} +1 -1
  93. package/dist/index.js +115 -114
  94. package/dist/{installs-DYxVB0wb.js → installs-BMe47UM8.js} +2 -2
  95. package/dist/{sqlite-C0QbeU3t.js → internal-1qVqywRm.js} +1 -11
  96. package/dist/{io-lVJPpZa9.js → io-Du6-MSB2.js} +1 -1
  97. package/dist/{koi-B-adVRJ0.js → koi-BM7jpV3i.js} +12 -12
  98. package/dist/{koi-event-bridge-DcS7JxM8.js → koi-event-bridge-B37C7wQS.js} +2 -2
  99. package/dist/{koi-utterance-trigger-DEVLYg_A.js → koi-utterance-trigger-Blwlrtt3.js} +1 -1
  100. package/dist/ledger-BdUzGXai.js +325 -0
  101. package/dist/{ledger-cli-1TD3AiqE.js → ledger-cli-zbITxCII.js} +1 -1
  102. package/dist/ledger-facts-CmILTIzD.js +192 -0
  103. package/dist/ledger-ingest-BLIbTWu2.js +559 -0
  104. package/dist/ledger-semantic-Cqz5-rFE.js +198 -0
  105. package/dist/{lib-CqBTO5i4.js → lib-BhsGQdyF.js} +19 -19
  106. package/dist/{lib-B1krrDBw.js → lib-CF0okPTi.js} +1 -1
  107. package/dist/{lib-yPXHDJsX.js → lib-DvjhnWTO.js} +1 -1
  108. package/dist/{login-oFK0z7-J.js → login-DmEyH9jI.js} +6 -6
  109. package/dist/{login-qr-DPn0cTK-.js → login-qr-BRr7dXxg.js} +5 -5
  110. package/dist/{logs-cli-DmTobA9e.js → logs-cli-C72hqLnQ.js} +12 -12
  111. package/dist/{manager-BVWrev6y.js → manager-C3d_9Tmg.js} +4 -3
  112. package/dist/{message-BGysnvPK.js → message-BwP571QX.js} +5 -5
  113. package/dist/{model-selection-CmKBBKeL.js → model-selection-BJ3LRxcJ.js} +4 -4
  114. package/dist/{models-cli-BvE3ukyD.js → models-cli-t7HEOMOY.js} +68 -67
  115. package/dist/{models-config-CmUg-3zr.js → models-config-DdIU7G3Y.js} +2 -2
  116. package/dist/{mpg123-decoder-B8VURVkf.js → mpg123-decoder-PuBGeW1X.js} +0 -0
  117. package/dist/{multipart-parser-notKFbBp.js → multipart-parser-mVErCYU5.js} +1 -1
  118. package/dist/{net-Cfif-CzD.js → net-ovBD7YwM.js} +1 -1
  119. package/dist/{node-cli-D6ZR8rGu.js → node-cli-DGzeemhs.js} +23 -23
  120. package/dist/{node-service-FpI5_Kev.js → node-service-DzB6xdXK.js} +2 -2
  121. package/dist/{nodes-cli-BJ3UifXn.js → nodes-cli-DCQJ6_hy.js} +16 -16
  122. package/dist/{note-Dgsh9TJE.js → note-8tBKXM3Y.js} +1 -1
  123. package/dist/{nylas-U2wHlPwX.js → nylas-CGpgSprO.js} +1 -1
  124. package/dist/{ogg-opus-decoder-BPruHiaR.js → ogg-opus-decoder-BQ5jS4jY.js} +0 -0
  125. package/dist/{ogg-vorbis-niFy7Gax.js → ogg-vorbis-NjQY-FLq.js} +0 -0
  126. package/dist/{onboard-channels-DXgzUduh.js → onboard-channels-BWtszAkD.js} +5 -5
  127. package/dist/{onboard-helpers-o1U-dn2n.js → onboard-helpers-D69_1Asy.js} +6 -6
  128. package/dist/{onboard-skills-D2PuvOlq.js → onboard-skills-DZJj6hsm.js} +12 -12
  129. package/dist/{onboarding-KjPht-vT.js → onboarding-gRDmO4sx.js} +34 -34
  130. package/dist/{opus-ml-C1IgeK4A.js → opus-ml-CbNjkbR4.js} +0 -0
  131. package/dist/{pairing-cli-BKTkyxLs.js → pairing-cli-B3jAbF8F.js} +9 -9
  132. package/dist/{pairing-labels-CaaA_Kt-.js → pairing-labels-C7dPUUMw.js} +1 -1
  133. package/dist/{path-env-1_C-JRUU.js → path-env-CzqxPBGM.js} +1 -1
  134. package/dist/{photon_rs-DGS5hX8b.js → photon_rs--v9n3BQJ.js} +1 -1
  135. package/dist/{pi-embedded-helpers-BnsMD0to.js → pi-embedded-helpers-epijF7kQ.js} +2 -2
  136. package/dist/{pi-model-discovery-IRS5Bhx-.js → pi-model-discovery-aBaiPknt.js} +1 -1
  137. package/dist/{pi-tool-definition-adapter-D9igP7jU.js → pi-tool-definition-adapter-CiCAVx0w.js} +1 -1
  138. package/dist/{pi-tools.policy-DDff0t8l.js → pi-tools.policy-J2VkiSCU.js} +3 -2
  139. package/dist/{platform-billing-D8f18ubj.js → platform-billing-fV9sjjQz.js} +1 -1
  140. package/dist/{plugin-auto-enable-D5QYYZDH.js → plugin-auto-enable-DI7yF7Cc.js} +1 -1
  141. package/dist/{plugin-registry-Dd3gYaF4.js → plugin-registry-B2zHjscw.js} +2 -2
  142. package/dist/plugin-sdk/capture/capture-store.d.ts +8 -0
  143. package/dist/plugin-sdk/capture/proactive/addressing.d.ts +1 -1
  144. package/dist/plugin-sdk/capture/proactive/fast-responder.d.ts +3 -0
  145. package/dist/plugin-sdk/capture/proactive/second-opinion.d.ts +56 -0
  146. package/dist/plugin-sdk/index.js +56 -569
  147. package/dist/plugin-sdk/koi/tools/recall-tool.d.ts +4 -0
  148. package/dist/plugin-sdk/memory/ledger-facts.d.ts +37 -0
  149. package/dist/plugin-sdk/memory/ledger-semantic.d.ts +28 -0
  150. package/dist/plugin-sdk/memory/ledger.d.ts +77 -0
  151. package/dist/plugin-sdk/{pi-model-discovery-lynj0LAO.js → pi-model-discovery-CbZNnPh6.js} +50 -32
  152. package/dist/{plugins-cli-CXwGKG5Z.js → plugins-cli-DoBH8Ldm.js} +66 -65
  153. package/dist/{proactive-eval-BCMSOwxK.js → proactive-eval-JjYdFbQK.js} +39 -15
  154. package/dist/{program-BvCROCKp.js → program-BWG09WVa.js} +6 -6
  155. package/dist/{pw-ai-BkS6uRkc.js → pw-ai-xVUhg2oB.js} +1 -1
  156. package/dist/{qmd-manager-56XH3jlC.js → qmd-manager-D0o600Wg.js} +2 -1
  157. package/dist/{register.subclis-D4icX3hP.js → register.subclis-Bsy5VQWO.js} +34 -34
  158. package/dist/{reply-CDp9q1Vc.js → reply-Dx4BNpWV.js} +166 -639
  159. package/dist/resume-on-boot-BPfSfdNX.js +216 -0
  160. package/dist/{routes-C_GpVEDZ.js → routes-Ca8LqLcf.js} +3 -3
  161. package/dist/{rpc-YhAQzNlL.js → rpc-CMZMmrCO.js} +2 -2
  162. package/dist/{run-code-tool-NbWgGyDu.js → run-code-tool-BRJqCFtn.js} +1 -1
  163. package/dist/{run-main-q7BkaqXe.js → run-main-BqWJQ9UJ.js} +120 -119
  164. package/dist/{runner-CpnbA-2N.js → runner-BhG9BJX6.js} +10 -10
  165. package/dist/{sandbox-zPcju-bV.js → sandbox-D6wJcx47.js} +5 -5
  166. package/dist/{sandbox-cli-terA6EM2.js → sandbox-cli-uYxxbKBs.js} +14 -14
  167. package/dist/{security-cli-B5qTCPSE.js → security-cli-DolP28hs.js} +22 -22
  168. package/dist/{server-context-Dej8i418.js → server-context-CX441p0h.js} +3 -3
  169. package/dist/{server-node-events-DuXlBGXC.js → server-node-events-CoT51Acr.js} +63 -62
  170. package/dist/{service-Bz3BLFuQ.js → service-CJCq4R_b.js} +2 -2
  171. package/dist/{service-audit-CijWRKqR.js → service-audit-D34KRkhd.js} +4 -4
  172. package/dist/{session-cost-usage-Nmd8bPic.js → session-cost-usage-BHaRWnZF.js} +1 -1
  173. package/dist/{sessions-BZBtTQCk.js → sessions-Bp3n5YA_.js} +2 -2
  174. package/dist/{shared-B3rppGQN.js → shared-DurMbV0y.js} +2 -2
  175. package/dist/{shared-CZVRangM.js → shared-Dx-5oS7g.js} +3 -3
  176. package/dist/{signin-CvHnO52D.js → signin-krIfJL7l.js} +3 -3
  177. package/dist/{skills-w4q7XySt.js → skills-Dz6W5j0d.js} +1 -1
  178. package/dist/{skills-cli-EiZ6YlCl.js → skills-cli-C0bJZmza.js} +10 -10
  179. package/dist/{skills-status-DzGR295b.js → skills-status-DDdqOMvi.js} +2 -2
  180. package/dist/sqlite-CcncYUtk.js +12 -0
  181. package/dist/{src-B1X0ChaP.js → src-ucgcl6Si.js} +2 -2
  182. package/dist/{sso-oidc-BE_eNisy.js → sso-oidc-DDPPB4nX.js} +3 -3
  183. package/dist/{status-unalYyJY.js → status-CEKcgj0D.js} +2 -2
  184. package/dist/{sts-D_bZA39E.js → sts-C27MKuOB.js} +3 -3
  185. package/dist/{surface-tool-DqCgANSk.js → surface-tool-lPNzOXy0.js} +3 -3
  186. package/dist/{system-cli-B-e40tyP.js → system-cli-ChCEIpDP.js} +11 -11
  187. package/dist/{system-prompt-snippet-BPa9MMNP.js → system-prompt-snippet-CRxJI8kA.js} +1 -1
  188. package/dist/{systemd-5f0_yK5K.js → systemd-cESLgm7E.js} +1 -1
  189. package/dist/{systemd-linger-sox_shlO.js → systemd-linger-Bk6j0ocU.js} +2 -2
  190. package/dist/{tool-images-BscwczCb.js → tool-images-wgRd-_EF.js} +1 -1
  191. package/dist/{tui-eV0dj-x4.js → tui-CCuqycQT.js} +32 -20
  192. package/dist/{tui-cli-DtHxmn2U.js → tui-cli-C0C18k8a.js} +42 -39
  193. package/dist/{tui-shell-BNyj67Rq.js → tui-shell-DsFpUP_D.js} +142 -7
  194. package/dist/{update-CXkUTz34.js → update-D6nbBYbC.js} +1 -1
  195. package/dist/{update-cli-CT9T8iOX.js → update-cli-nZ8I2m8E.js} +91 -90
  196. package/dist/{update-runner-DbYE4uWc.js → update-runner-DVmXSVML.js} +3 -3
  197. package/dist/{usage-reporter-Bx9Nr7UM.js → usage-reporter-DLs6PDXg.js} +1 -1
  198. package/dist/{utilities-L898lIwo.js → utilities-BrSKHnYL.js} +1 -1
  199. package/dist/{voices-cli-B-U91QQ3.js → voices-cli-Cbe-vIZU.js} +1 -1
  200. package/dist/{webhooks-cli-D3K-2gZv.js → webhooks-cli-CA99LCQ2.js} +9 -9
  201. package/dist/{zen-surface-DBpHONnk.js → zen-surface-Bs0QlPVj.js} +1 -1
  202. package/extensions/bluebubbles/package.json +1 -1
  203. package/extensions/copilot-proxy/package.json +1 -1
  204. package/extensions/diagnostics-otel/node_modules/.bin/acorn +21 -0
  205. package/extensions/diagnostics-otel/package.json +1 -1
  206. package/extensions/discord/package.json +1 -1
  207. package/extensions/feishu/package.json +1 -1
  208. package/extensions/google-antigravity-auth/package.json +1 -1
  209. package/extensions/google-gemini-cli-auth/package.json +1 -1
  210. package/extensions/googlechat/package.json +1 -1
  211. package/extensions/imessage/package.json +1 -1
  212. package/extensions/line/package.json +1 -1
  213. package/extensions/llm-task/package.json +1 -1
  214. package/extensions/lobster/package.json +1 -1
  215. package/extensions/matrix/CHANGELOG.md +10 -0
  216. package/extensions/matrix/package.json +1 -1
  217. package/extensions/mattermost/package.json +1 -1
  218. package/extensions/memory-core/package.json +1 -1
  219. package/extensions/memory-lancedb/node_modules/.bin/arrow2csv +21 -0
  220. package/extensions/memory-lancedb/package.json +1 -1
  221. package/extensions/minimax-portal-auth/package.json +1 -1
  222. package/extensions/msteams/CHANGELOG.md +10 -0
  223. package/extensions/msteams/package.json +1 -1
  224. package/extensions/nextcloud-talk/package.json +1 -1
  225. package/extensions/nostr/CHANGELOG.md +10 -0
  226. package/extensions/nostr/node_modules/.bin/tsc +21 -0
  227. package/extensions/nostr/node_modules/.bin/tsserver +21 -0
  228. package/extensions/nostr/package.json +1 -1
  229. package/extensions/open-prose/package.json +1 -1
  230. package/extensions/signal/package.json +1 -1
  231. package/extensions/slack/package.json +1 -1
  232. package/extensions/telegram/package.json +1 -1
  233. package/extensions/tlon/package.json +1 -1
  234. package/extensions/twitch/CHANGELOG.md +10 -0
  235. package/extensions/twitch/package.json +1 -1
  236. package/extensions/voice-call/CHANGELOG.md +10 -0
  237. package/extensions/voice-call/package.json +1 -1
  238. package/extensions/whatsapp/package.json +1 -1
  239. package/extensions/zalo/CHANGELOG.md +10 -0
  240. package/extensions/zalo/package.json +1 -1
  241. package/extensions/zalouser/CHANGELOG.md +10 -0
  242. package/extensions/zalouser/package.json +1 -1
  243. package/package.json +2 -2
  244. /package/dist/{BasicParser-Ctdj2OB-.js → BasicParser-DrWaYfWv.js} +0 -0
  245. /package/dist/{action-ledger-CZm1RLNd.js → action-ledger-DCDXcaiT.js} +0 -0
  246. /package/dist/{brew-BV6cdBLU.js → brew-Bl5dSKJe.js} +0 -0
  247. /package/dist/{capture-cli-DF6O2JDT.js → capture-cli-O-24LrIG.js} +0 -0
  248. /package/dist/{channel-selection-Dj_CMzvz.js → channel-selection-JDc1W7hU.js} +0 -0
  249. /package/dist/{channels-status-issues-BUOqiSuy.js → channels-status-issues-CUjFhxft.js} +0 -0
  250. /package/dist/{cli-utils-uAyQZBvv.js → cli-utils-D2X_bDLt.js} +0 -0
  251. /package/dist/{codec-parser-B5mYLNyt.js → codec-parser-CAv34q9N.js} +0 -0
  252. /package/dist/{companions-DOFb9Qnj.js → companions-Bvb-HAcp.js} +0 -0
  253. /package/dist/{constants-BxOshTSm.js → constants--Vfv4XxQ.js} +0 -0
  254. /package/dist/{control-ui-assets-D2wZfVim.js → control-ui-assets-D9TU_kVS.js} +0 -0
  255. /package/dist/{declarations-BCFE6K8P.js → declarations-DiOSCyC-.js} +0 -0
  256. /package/dist/{device-identity-pxZl9iT8.js → device-identity-DS1vsPIW.js} +0 -0
  257. /package/dist/{dist-cjs-n19fPEyx.js → dist-cjs-C59lYOdT.js} +0 -0
  258. /package/dist/{dist-cjs-iuUWDGbR.js → dist-cjs-DUyUHlvJ.js} +0 -0
  259. /package/dist/{dotenv-sFSCefLS.js → dotenv-DnO0eRof.js} +0 -0
  260. /package/dist/{esm-BFVtSKFu.js → esm-K3yRBWgD.js} +0 -0
  261. /package/dist/{esm-shims-DCx9WpXg.js → esm-shims-BmqjA11f.js} +0 -0
  262. /package/dist/{event-log-8Gy24Q8h.js → event-log-Dfu6U72C.js} +0 -0
  263. /package/dist/{event-streams-ZjOK6A9_.js → event-streams-BwDnM1IB.js} +0 -0
  264. /package/dist/{exec-approvals-io-CFVKuSeR.js → exec-approvals-io-Bw_4e0C3.js} +0 -0
  265. /package/dist/{format-D-VAp4B3.js → format-CD82V1wH.js} +0 -0
  266. /package/dist/{from-DlxtjhdR.js → from-DPcGvM1R.js} +0 -0
  267. /package/dist/{help-format-DaracUAB.js → help-format-CRF38mZD.js} +0 -0
  268. /package/dist/{helpers-Dano2vlT.js → helpers-6_MYSJEW.js} +0 -0
  269. /package/dist/{helpers-Bf_7MMN1.js → helpers-Jz6ppAYo.js} +0 -0
  270. /package/dist/{is-main-K-6EEb_n.js → is-main-B8W6VsR-.js} +0 -0
  271. /package/dist/{koi-events-D5PuKPcz.js → koi-events-CTUrswrV.js} +0 -0
  272. /package/dist/{links-BqdU0TFi.js → links-B-3YwG1H.js} +0 -0
  273. /package/dist/{live-broadcast-BIlUXK-0.js → live-broadcast-wTVs5Lzq.js} +0 -0
  274. /package/dist/{logging-B2js4Jgc.js → logging-DBZsukx5.js} +0 -0
  275. /package/dist/{native-window-DumLjKeL.js → native-window-C_txmQ01.js} +0 -0
  276. /package/dist/{node-pairing-CYNP1g4x.js → node-pairing-Bj3AI8zP.js} +0 -0
  277. /package/dist/{node-pty-DvuSPjhQ.js → node-pty-LGt8VkP5.js} +0 -0
  278. /package/dist/{node-wav-kZ_sIssA.js → node-wav-BLqEPoTa.js} +0 -0
  279. /package/dist/{nodes-screen-Cceyy2v6.js → nodes-screen-BOR_MJdR.js} +0 -0
  280. /package/dist/{package-DKdaLkus.js → package-BpZAR57N.js} +0 -0
  281. /package/dist/{pairing-store-BJq_rv5S.js → pairing-store-5XKyDoU_.js} +0 -0
  282. /package/dist/{parse-lztFbXu9.js → parse-CPZl2n13.js} +0 -0
  283. /package/dist/{parse-log-line-wGjegDXe.js → parse-log-line-BtnrcIoi.js} +0 -0
  284. /package/dist/{parse-timeout-CIqovswJ.js → parse-timeout-DhzruDDW.js} +0 -0
  285. /package/dist/{pdf-B52QHMdD.js → pdf-Csqt3I9u.js} +0 -0
  286. /package/dist/{permissions-cli-Dnf0d1au.js → permissions-cli-1zbwgs_K.js} +0 -0
  287. /package/dist/{ports-C6-lHXUM.js → ports-DknbMlUw.js} +0 -0
  288. /package/dist/{progress-QVvXnEt-.js → progress-CxDBFZz4.js} +0 -0
  289. /package/dist/{prompt-style-DUZn5AjO.js → prompt-style-N11TfIHe.js} +0 -0
  290. /package/dist/{prompts-CNzp9M83.js → prompts-OFJRqDDg.js} +0 -0
  291. /package/dist/{proxy-from-env-BI6o-lgV.js → proxy-from-env-BUzvwibb.js} +0 -0
  292. /package/dist/{qoa-format-HAraj5c4.js → qoa-format-D42wySzF.js} +0 -0
  293. /package/dist/{readability-CkKLYpoQ.js → readability-DQSf8ukO.js} +0 -0
  294. /package/dist/{readiness-DjdWO9Fm.js → readiness-6yLyHAf_.js} +0 -0
  295. /package/dist/{registry-BDi8qkVO.js → registry-D-gnHADJ.js} +0 -0
  296. /package/dist/{restart-sentinel-B3dQ684O.js → restart-sentinel-CcKTmaz7.js} +0 -0
  297. /package/dist/{rich-BaT-R-Bj.js → rich-t60oVsBn.js} +0 -0
  298. /package/dist/{runtime-guard-QJDAE0ub.js → runtime-guard-DLzsEGzz.js} +0 -0
  299. /package/dist/{satisfies-D2Taq9gG.js → satisfies-B0N-0Ebw.js} +0 -0
  300. /package/dist/{skill-scanner-b9MamBYt.js → skill-scanner-wcRvvBRm.js} +0 -0
  301. /package/dist/{source-map-_40euoWs.js → source-map-CrKDPXhx.js} +0 -0
  302. /package/dist/{sqlite-vec-D70r8h9V.js → sqlite-vec-DdpJSklK.js} +0 -0
  303. /package/dist/{status-D2sLFE9B.js → status-q8odUh8K.js} +0 -0
  304. /package/dist/{streams-cli-Buk4KNUn.js → streams-cli-DhojOTpL.js} +0 -0
  305. /package/dist/{systemd-hints-CALsumZt.js → systemd-hints-jbbKRhsl.js} +0 -0
  306. /package/dist/{table-SaWmGh81.js → table-OVCv6p-k.js} +0 -0
  307. /package/dist/{tailnet-CxR_pUEt.js → tailnet-CzyAUePY.js} +0 -0
  308. /package/dist/{tailscale-BX7pFm3E.js → tailscale-B049NW4V.js} +0 -0
  309. /package/dist/{transcript-tools-Dy472a2E.js → transcript-tools-BhRPjkKE.js} +0 -0
  310. /package/dist/{types-BAAOnG0s.js → types-BfUUk5a0.js} +0 -0
  311. /package/dist/{widearea-dns-zHPAPSiI.js → widearea-dns-jzceKRQ2.js} +0 -0
  312. /package/dist/{ws-log-K0TDamKG.js → ws-log-CK3PFL3C.js} +0 -0
  313. /package/dist/{wsl-Dk7vKTAv.js → wsl-DtWC8IsN.js} +0 -0
@@ -1,30 +1,30 @@
1
- import { I as listThinkingLevelLabels, L as listThinkingLevels, P as formatThinkingLevels, m as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-BnsMD0to.js";
1
+ import { I as listThinkingLevelLabels, L as listThinkingLevels, P as formatThinkingLevels, m as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-epijF7kQ.js";
2
2
  import { S as getActivePluginRegistry, t as createSubsystemLogger } from "./subsystem-gU4M25gl.js";
3
3
  import { g as resolveStateDir } from "./paths-VdmjGGyc.js";
4
4
  import { a as buildKoiMainSessionKey, l as normalizeKoiId, u as normalizeMainKey, v as parseKoiSessionKey } from "./session-key-BIl6GRQN.js";
5
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";
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-BJ3LRxcJ.js";
7
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";
8
+ import { i as loadConfig } from "./io-Du6-MSB2.js";
9
+ import { I as listChannelDocks, O as canonicalizeMainSessionAlias, U as buildGroupDisplayName, _ as normalizeSessionDeliveryFields, i as loadSessionStore, j as resolveMainSessionKey } from "./sessions-Bp3n5YA_.js";
10
+ import { t as ensureSKYKOIModelsJson } from "./models-config-DdIU7G3Y.js";
11
11
  import { O as visibleWidth } from "./dist-D6Sv3llW.js";
12
12
  import { o as resolveStorePath, r as resolveSessionTranscriptPath } from "./paths-6OemP7gm.js";
13
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
- import fs, { closeSync, existsSync, openSync, readSync, statSync } from "node:fs";
20
- import path, { join } from "node:path";
21
- import os, { homedir } from "node:os";
14
+ import { a as formatTokenCount, n as extractToolCallNames, r as hasToolCall } from "./transcript-tools-BhRPjkKE.js";
15
+ import { n as readSkykoiEnvVar } from "./dotenv-DnO0eRof.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-t60oVsBn.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-BoluV5CV.js";
18
+ import { a as CA_FAMILIES, i as sendNativeIntent, t as hasNativeWindow } from "./native-window-C_txmQ01.js";
19
+ import fs, { closeSync, copyFileSync, existsSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, statSync, unlinkSync } from "node:fs";
20
+ import path, { basename, join } from "node:path";
21
+ import os, { homedir, tmpdir } from "node:os";
22
22
 
23
23
  //#region src/koi/context.ts
24
24
  const MODEL_CACHE = /* @__PURE__ */ new Map();
25
25
  (async () => {
26
26
  try {
27
- const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-IRS5Bhx-.js").then((n) => n.r);
27
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-aBaiPknt.js").then((n) => n.r);
28
28
  await ensureSKYKOIModelsJson(loadConfig());
29
29
  const koiDir = resolveSKYKOIKoiDir();
30
30
  const models = discoverModels(discoverAuthStorage(koiDir), koiDir).getAll();
@@ -1772,6 +1772,187 @@ function listSessionsFromStore(params) {
1772
1772
  };
1773
1773
  }
1774
1774
 
1775
+ //#endregion
1776
+ //#region src/capture/proactive/second-opinion.ts
1777
+ /**
1778
+ * Second-opinion re-transcription for DIRECT koi addresses.
1779
+ *
1780
+ * In a noisy room the realtime STT reliably catches the wake word (context
1781
+ * biasing) but garbles the QUESTION — 2026-07-07 the owner asked "Koi, where
1782
+ * does that water live?" and the live stream delivered "Koi, what is it?
1783
+ * What are the." The koi then confidently answers a question that was never
1784
+ * asked. The SAME audio re-run through Whisper recovered the real question,
1785
+ * so: when the owner addresses the koi, re-transcribe just that utterance's
1786
+ * audio through Groq Whisper (concurrently with the context load — no added
1787
+ * latency) and hand BOTH hearings to the responder.
1788
+ *
1789
+ * Audio sources, in order:
1790
+ * 1. the per-utterance PCM clip (precise, but the voice-ID bridge deletes
1791
+ * clips seconds after embedding — often already gone by eval time),
1792
+ * 2. the 60s rolling WAV buffer chunk covering the utterance timestamp
1793
+ * (lives 24h; upload the chunk, keep only segments overlapping the
1794
+ * utterance window).
1795
+ */
1796
+ const GROQ_STT_URL = "https://api.groq.com/openai/v1/audio/transcriptions";
1797
+ const GROQ_STT_MODEL = "whisper-large-v3-turbo";
1798
+ const DEFAULT_TIMEOUT_MS = 2500;
1799
+ const CHUNK_SPAN_MS = 65e3;
1800
+ /** mic ts is stamped at utterance END; look back far enough to cover a long
1801
+ * question but no further — the window path is UNSEPARATED room audio and
1802
+ * every extra second invites another speaker's words in. */
1803
+ const UTT_LOOKBACK_MS = 8e3;
1804
+ const UTT_LOOKAHEAD_MS = 1500;
1805
+ const DEFAULT_BUFFER_DIR = join(homedir(), ".skykoi/capture/audio-buffer");
1806
+ const SNAPSHOT_DIR = join(tmpdir(), "skykoi-utt-snapshots");
1807
+ const SNAPSHOT_MAX_AGE_MS = 10 * 6e4;
1808
+ /**
1809
+ * Preserve the DIARIZED per-utterance clip the moment its trigger arrives.
1810
+ * The voice-ID bridge reaps clips seconds after embedding, so by eval time
1811
+ * the precise single-speaker audio is usually gone and the second opinion
1812
+ * would fall back to UNSEPARATED room audio — losing exactly what Soniox's
1813
+ * diarization+endpointing provides. Copy is a few hundred KB; stale
1814
+ * snapshots are pruned on each call. Returns the snapshot path, or null.
1815
+ */
1816
+ function snapshotClip(audioPath) {
1817
+ if (!audioPath?.endsWith(".pcm")) return null;
1818
+ try {
1819
+ mkdirSync(SNAPSHOT_DIR, { recursive: true });
1820
+ const now = Date.now();
1821
+ for (const name of readdirSync(SNAPSHOT_DIR)) {
1822
+ const p = join(SNAPSHOT_DIR, name);
1823
+ try {
1824
+ if (now - statSync(p).mtimeMs > SNAPSHOT_MAX_AGE_MS) unlinkSync(p);
1825
+ } catch {}
1826
+ }
1827
+ const dest = join(SNAPSHOT_DIR, `${now}-${basename(audioPath)}`);
1828
+ copyFileSync(audioPath, dest);
1829
+ return dest;
1830
+ } catch {
1831
+ return null;
1832
+ }
1833
+ }
1834
+ /** Wrap raw 16 kHz mono s16le PCM (the daemon's clip format) in a WAV header. */
1835
+ function wavFromPcm16(pcm, sampleRate = 16e3) {
1836
+ const header = Buffer.alloc(44);
1837
+ header.write("RIFF", 0);
1838
+ header.writeUInt32LE(36 + pcm.length, 4);
1839
+ header.write("WAVE", 8);
1840
+ header.write("fmt ", 12);
1841
+ header.writeUInt32LE(16, 16);
1842
+ header.writeUInt16LE(1, 20);
1843
+ header.writeUInt16LE(1, 22);
1844
+ header.writeUInt32LE(sampleRate, 24);
1845
+ header.writeUInt32LE(sampleRate * 2, 28);
1846
+ header.writeUInt16LE(2, 32);
1847
+ header.writeUInt16LE(16, 34);
1848
+ header.write("data", 36);
1849
+ header.writeUInt32LE(pcm.length, 40);
1850
+ return Buffer.concat([header, pcm]);
1851
+ }
1852
+ /** Find the rolling-buffer chunk whose 60s window covers `ts`. */
1853
+ function findBufferChunk(ts, dir = DEFAULT_BUFFER_DIR) {
1854
+ let names;
1855
+ try {
1856
+ names = readdirSync(dir);
1857
+ } catch {
1858
+ return null;
1859
+ }
1860
+ let best = null;
1861
+ for (const name of names) {
1862
+ const m = name.match(/^mic-(\d+)\.wav$/);
1863
+ if (!m) continue;
1864
+ const startMs = Number(m[1]);
1865
+ if (startMs <= ts && ts <= startMs + CHUNK_SPAN_MS) {
1866
+ if (!best || startMs > best.startMs) best = {
1867
+ path: join(dir, name),
1868
+ startMs
1869
+ };
1870
+ }
1871
+ }
1872
+ return best;
1873
+ }
1874
+ const normalize = (t) => t.toLowerCase().replace(/['’]/g, "").replace(/[^a-z0-9 ]+/g, " ").replace(/\s+/g, " ").trim();
1875
+ async function groqTranscribe(audio, filename, groqKey, fetchImpl, signal) {
1876
+ const form = new FormData();
1877
+ form.append("file", new Blob([new Uint8Array(audio)], { type: "audio/wav" }), filename);
1878
+ form.append("model", GROQ_STT_MODEL);
1879
+ form.append("response_format", "verbose_json");
1880
+ try {
1881
+ const res = await fetchImpl(GROQ_STT_URL, {
1882
+ method: "POST",
1883
+ headers: { authorization: `Bearer ${groqKey}` },
1884
+ body: form,
1885
+ signal
1886
+ });
1887
+ if (!res.ok) return null;
1888
+ return await res.json();
1889
+ } catch {
1890
+ return null;
1891
+ }
1892
+ }
1893
+ /**
1894
+ * Re-transcribe the addressed utterance's audio and return the alternate
1895
+ * hearing when it MATERIALLY differs from the realtime transcript. Returns
1896
+ * null when the second engine agrees, the audio is gone, or Groq is
1897
+ * unavailable — callers treat null as "nothing to add".
1898
+ */
1899
+ async function secondOpinionTranscript(opts) {
1900
+ const groqKey = opts.apiKey ?? resolveEnvApiKey("groq")?.apiKey;
1901
+ if (!groqKey) return null;
1902
+ const fetchImpl = opts.fetchImpl ?? fetch;
1903
+ const controller = new AbortController();
1904
+ const timer = setTimeout(() => controller.abort(), opts.timeoutMs ?? DEFAULT_TIMEOUT_MS);
1905
+ try {
1906
+ let alt = null;
1907
+ if (opts.audioPath?.endsWith(".pcm")) {
1908
+ let pcm = null;
1909
+ try {
1910
+ pcm = readFileSync(opts.audioPath);
1911
+ } catch {
1912
+ pcm = null;
1913
+ }
1914
+ if (pcm && pcm.length > 0) {
1915
+ const text = (await groqTranscribe(wavFromPcm16(pcm), "utterance.wav", groqKey, fetchImpl, controller.signal))?.text?.trim();
1916
+ if (text) alt = {
1917
+ text,
1918
+ source: "clip"
1919
+ };
1920
+ }
1921
+ }
1922
+ if (!alt) {
1923
+ const chunk = findBufferChunk(opts.ts, opts.bufferDir);
1924
+ if (!chunk) return null;
1925
+ let wav;
1926
+ try {
1927
+ wav = readFileSync(chunk.path);
1928
+ } catch {
1929
+ return null;
1930
+ }
1931
+ const data = await groqTranscribe(wav, "window.wav", groqKey, fetchImpl, controller.signal);
1932
+ if (!data) return null;
1933
+ const parts = [];
1934
+ for (const s of data.segments ?? []) {
1935
+ const text = (s.text ?? "").trim();
1936
+ if (!text) continue;
1937
+ if (typeof s.no_speech_prob === "number" && s.no_speech_prob > .6) continue;
1938
+ const startAbs = chunk.startMs + Math.round((s.start ?? 0) * 1e3);
1939
+ const endAbs = chunk.startMs + Math.round((s.end ?? s.start ?? 0) * 1e3);
1940
+ if (startAbs <= opts.ts + UTT_LOOKAHEAD_MS && endAbs >= opts.ts - UTT_LOOKBACK_MS) parts.push(text);
1941
+ }
1942
+ const text = parts.join(" ").trim();
1943
+ if (text) alt = {
1944
+ text,
1945
+ source: "window"
1946
+ };
1947
+ }
1948
+ if (!alt) return null;
1949
+ if (normalize(alt.text) === normalize(opts.text)) return null;
1950
+ return alt;
1951
+ } finally {
1952
+ clearTimeout(timer);
1953
+ }
1954
+ }
1955
+
1775
1956
  //#endregion
1776
1957
  //#region src/capture/proactive/notifications.ts
1777
1958
  /**
@@ -2072,15 +2253,20 @@ function checkAudioFile() {
2072
2253
  log$1.info(`mic addressing: blocked (${decision.reason}): "${text.slice(0, 80)}"`);
2073
2254
  continue;
2074
2255
  }
2075
- lastEngagementAt = ts;
2256
+ if (decision.mode !== "vocative-rescue") lastEngagementAt = ts;
2076
2257
  log$1.debug(`mic addressing: eligible (${decision.mode}): "${text.slice(0, 60)}"`);
2258
+ const data = {
2259
+ ...evt,
2260
+ addressingMode: decision.mode
2261
+ };
2262
+ if ((decision.mode === "wake" || decision.mode === "vocative-rescue") && typeof evt.audioPath === "string") {
2263
+ const snap = snapshotClip(evt.audioPath);
2264
+ if (snap) data.audioSnapshotPath = snap;
2265
+ }
2077
2266
  pendingTriggers.push({
2078
2267
  source: "audio",
2079
2268
  ts,
2080
- data: {
2081
- ...evt,
2082
- addressingMode: decision.mode
2083
- }
2269
+ data
2084
2270
  });
2085
2271
  }
2086
2272
  }
@@ -3546,4 +3732,4 @@ var CaDirector = class {
3546
3732
  const caDirector = new CaDirector();
3547
3733
 
3548
3734
  //#endregion
3549
- export { resolveSessionTranscriptCandidates as $, readConversationTail as A, pendingTriggers as B, resolveKoiDisplayName as C, getSlashCommands as D, builtinCommandNames as E, extractChatMessage as F, loadCombinedSessionStoreForGateway as G, tailLines as H, formatTriggersForEval as I, resolveSessionModelRef as J, loadSessionEntry as K, initTailOffsets as L, readDurableDigest as M, AUDIO_LIVE_FILE as N, helpRich as O, INPUT_LIVE_FILE as P, readSessionPreviewItemsFromTranscript as Q, isDirectKoiInvocation as R, resolveFinalAssistantText as S, aliasCommandsFor as T, listKoisForGateway as U, pollTriggerSources as V, listSessionsFromStore as W, capArrayByJsonBytes as X, archiveFileOnDisk as Y, readSessionMessages as Z, formatContextUsageLine as _, createNarrator as a, findCommandByNativeName as at, isCommandMessage as b, routeFastLane as c, listNativeCommandSpecs as ct, summarizeForVoice as d, parseCommandArgs as dt, stripEnvelopeFromMessages as et, asString as f, resolveCommandArgChoices as ft, extractThinkingFromMessage as g, lookupContextTokens as gt, extractTextFromMessage as h, shouldHandleTextCommands as ht, buildDigest as i, buildCommandTextFromArgs as it, readConversationTurns as j, parseCommand as k, saveFastModeEnabled as l, listNativeCommandSpecsForConfig as lt, extractContentFromMessage as m, serializeCommandArgs as mt, caDirector as n, readVoiceMode as nt, filterAllowedCommands as o, listChatCommands as ot, composeThinkingAndContent as p, resolveCommandArgMenu as pt, resolveGatewaySessionStoreTarget as q, resolveIntent as r, writeVoiceMode as rt, loadFastModeEnabled as s, listChatCommandsForConfig as st, MOOD_PRESETS as t, VOICE_MODES as tt, splitSentences as u, normalizeCommandBody as ut, friendlyToolLabel as v, stripSilentControlTokens as w, parseMessageTime as x, isChannelInboundEcho as y, isTriggerEvent as z };
3735
+ export { readSessionPreviewItemsFromTranscript as $, readConversationTail as A, pendingTriggers as B, resolveKoiDisplayName as C, getSlashCommands as D, builtinCommandNames as E, extractChatMessage as F, listSessionsFromStore as G, tailLines as H, formatTriggersForEval as I, resolveGatewaySessionStoreTarget as J, loadCombinedSessionStoreForGateway as K, initTailOffsets as L, readDurableDigest as M, AUDIO_LIVE_FILE as N, helpRich as O, INPUT_LIVE_FILE as P, readSessionMessages as Q, isDirectKoiInvocation as R, resolveFinalAssistantText as S, aliasCommandsFor as T, secondOpinionTranscript as U, pollTriggerSources as V, listKoisForGateway as W, archiveFileOnDisk as X, resolveSessionModelRef as Y, capArrayByJsonBytes as Z, formatContextUsageLine as _, lookupContextTokens as _t, createNarrator as a, buildCommandTextFromArgs as at, isCommandMessage as b, routeFastLane as c, listChatCommandsForConfig as ct, summarizeForVoice as d, normalizeCommandBody as dt, resolveSessionTranscriptCandidates as et, asString as f, parseCommandArgs as ft, extractThinkingFromMessage as g, shouldHandleTextCommands as gt, extractTextFromMessage as h, serializeCommandArgs as ht, buildDigest as i, writeVoiceMode as it, readConversationTurns as j, parseCommand as k, saveFastModeEnabled as l, listNativeCommandSpecs as lt, extractContentFromMessage as m, resolveCommandArgMenu as mt, caDirector as n, VOICE_MODES as nt, filterAllowedCommands as o, findCommandByNativeName as ot, composeThinkingAndContent as p, resolveCommandArgChoices as pt, loadSessionEntry as q, resolveIntent as r, readVoiceMode as rt, loadFastModeEnabled as s, listChatCommands as st, MOOD_PRESETS as t, stripEnvelopeFromMessages as tt, splitSentences as u, listNativeCommandSpecsForConfig as ut, friendlyToolLabel as v, stripSilentControlTokens as w, parseMessageTime as x, isChannelInboundEcho as y, isTriggerEvent as z };
@@ -2,12 +2,12 @@ import { r as __exportAll } from "./chunk-D_gEzPfs.js";
2
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
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";
5
+ import { i as loadConfig } from "./io-Du6-MSB2.js";
6
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";
7
+ import { r as loadOrCreateDeviceIdentity } from "./device-identity-DS1vsPIW.js";
8
+ import { t as pickPrimaryTailnetIPv4 } from "./tailnet-CzyAUePY.js";
9
+ import { Ot as PROTOCOL_VERSION, Pt as normalizeFingerprint, n as GatewayClient } from "./client-BiLNqlII.js";
10
+ import { a as pickPrimaryLanIPv4 } from "./net-ovBD7YwM.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
- ce6729c7f614f90c2b64bcd491874215d657d2662d836756285710e6dc38013d
1
+ 4f6371efbc50d586457838a1bc712f5f2fa41397e77ef742adca8c68223b4fbb
@@ -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-DumLjKeL.js";
3
+ import { t as hasNativeWindow } from "./native-window-C_txmQ01.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-yPXHDJsX.js").then((m) => /* @__PURE__ */ __toESM(m.default, 1))).default;
335
+ const sharp = (await import("./lib-DvjhnWTO.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;
@@ -4,8 +4,11 @@ import "./globals-4hwkGgXA.js";
4
4
  import "./theme-Ql6JHKzG.js";
5
5
  import "./ansi-aRwLYlzD.js";
6
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";
7
+ import "./warnings-C2KFRM58.js";
8
+ import "./sqlite-CcncYUtk.js";
9
+ import "./ledger-BdUzGXai.js";
10
+ import { _ as pushCaptureEvent, b as sweepTmpDbOrphans, d as drainEvents, f as flushToDisk, g as isPrivateMode, h as isAudioMuted, l as DominantSpeakerTracker, n as resolveVoiceIdentity, u as EchoTracker } from "./identify-BoluV5CV.js";
11
+ import "./registry-D-gnHADJ.js";
9
12
  import { closeSync, copyFileSync, existsSync, openSync, readFileSync, readSync, statSync, unlinkSync, watch, writeFileSync } from "node:fs";
10
13
  import { dirname, extname, join, relative } from "node:path";
11
14
  import { homedir } from "node:os";
@@ -831,8 +834,13 @@ function querySqlite$1(dbPath, query) {
831
834
  } catch {
832
835
  return "";
833
836
  } finally {
834
- try {
835
- unlinkSync(tmp);
837
+ for (const suffix of [
838
+ "",
839
+ "-shm",
840
+ "-wal",
841
+ "-journal"
842
+ ]) try {
843
+ unlinkSync(tmp + suffix);
836
844
  } catch {}
837
845
  }
838
846
  }
@@ -1349,8 +1357,13 @@ function querySqlite(dbPath, query) {
1349
1357
  } catch {
1350
1358
  return "";
1351
1359
  } finally {
1352
- try {
1353
- unlinkSync(tmp);
1360
+ for (const suffix of [
1361
+ "",
1362
+ "-shm",
1363
+ "-wal",
1364
+ "-journal"
1365
+ ]) try {
1366
+ unlinkSync(tmp + suffix);
1354
1367
  } catch {}
1355
1368
  }
1356
1369
  }
@@ -2090,6 +2103,8 @@ async function startCaptureService(opts) {
2090
2103
  let stopped = false;
2091
2104
  let lastTerminalSnapshot = [];
2092
2105
  let lastProcessSnapshot = null;
2106
+ const reaped = sweepTmpDbOrphans();
2107
+ if (reaped > 0) console.error(`[capture] reaped ${reaped} orphaned _tmp_ sqlite file(s)`);
2093
2108
  try {
2094
2109
  const inputHandle = await startInputCapture();
2095
2110
  stops.push(inputHandle.stop);
@@ -2206,14 +2221,14 @@ async function startCaptureService(opts) {
2206
2221
  console.error(`[capture] Audio capture failed to start: ${err}`);
2207
2222
  }
2208
2223
  try {
2209
- const { startAudioRecovery } = await import("./audio-recovery-C9f1IYxd.js");
2224
+ const { startAudioRecovery } = await import("./audio-recovery-SmensYPx.js");
2210
2225
  const recoveryHandle = startAudioRecovery();
2211
2226
  stops.push(recoveryHandle.stop);
2212
2227
  } catch (err) {
2213
2228
  console.error(`[capture] Audio recovery failed to start: ${err}`);
2214
2229
  }
2215
2230
  try {
2216
- const { reportUsage } = await import("./usage-reporter-Bx9Nr7UM.js").then((n) => n.n);
2231
+ const { reportUsage } = await import("./usage-reporter-DLs6PDXg.js").then((n) => n.n);
2217
2232
  const audioLive = join(homedir(), ".skykoi", "capture", "audio-live.jsonl");
2218
2233
  const HEARING_TICK_MS = 5 * 6e4;
2219
2234
  const hearingTimer = setInterval(() => {
@@ -2231,14 +2246,14 @@ async function startCaptureService(opts) {
2231
2246
  console.error(`[capture] hearing meter failed to start: ${err}`);
2232
2247
  }
2233
2248
  try {
2234
- const { startVoiceId } = await import("./identify-CHP8NQh2.js").then((n) => n.t);
2249
+ const { startVoiceId } = await import("./identify-BoluV5CV.js").then((n) => n.t);
2235
2250
  const voiceIdHandle = startVoiceId();
2236
2251
  stops.push(voiceIdHandle.stop);
2237
2252
  } catch (err) {
2238
2253
  console.error(`[capture] Voice-ID failed to start: ${err}`);
2239
2254
  }
2240
2255
  try {
2241
- const { startProactiveEval } = await import("./proactive-eval-BCMSOwxK.js").then((n) => n.t);
2256
+ const { startProactiveEval } = await import("./proactive-eval-JjYdFbQK.js").then((n) => n.t);
2242
2257
  const proactiveHandle = startProactiveEval();
2243
2258
  stops.push(proactiveHandle.stop);
2244
2259
  } catch (err) {
@@ -1,14 +1,14 @@
1
1
  import { m as DEFAULT_CHAT_CHANNEL, s as defaultRuntime } from "./subsystem-gU4M25gl.js";
2
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";
3
+ import { i as loadConfig } from "./io-Du6-MSB2.js";
4
4
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-C450DgVP.js";
5
5
  import { d as webAuthExists, s as readWebSelfId } from "./auth-store-B2FaPoSI.js";
6
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";
7
+ import { t as sendMessage } from "./message-BwP571QX.js";
8
+ import { c as nylasConfigured, g as sendMessage$1, l as nylasLinked, m as readNylasGrant } from "./nylas-CGpgSprO.js";
9
+ import { n as resolveChannelDefaultAccountId } from "./helpers-Jz6ppAYo.js";
10
+ import { t as ensureLocalGatewayRunning } from "./ensure-local-gateway-CEtQeEN3.js";
11
+ import { n as runNylasConnect } from "./connect-BapV23cV.js";
12
12
  import { execFile } from "node:child_process";
13
13
 
14
14
  //#region src/cli/channel-auth.ts
@@ -1,8 +1,8 @@
1
1
  import { p as CHAT_CHANNEL_ORDER } from "./subsystem-gU4M25gl.js";
2
2
  import { t as isTruthyEnvValue } from "./env-BEtXFLod.js";
3
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";
4
+ import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-DI7yF7Cc.js";
5
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-B2zHjscw.js";
6
6
 
7
7
  //#region src/cli/channel-options.ts
8
8
  function dedupe(values) {
@@ -1,6 +1,6 @@
1
1
  import { r as theme } from "./theme-Ql6JHKzG.js";
2
2
  import { t as DEFAULT_ACCOUNT_ID } from "./session-key-BIl6GRQN.js";
3
- import { i as loadConfig } from "./io-lVJPpZa9.js";
3
+ import { i as loadConfig } from "./io-Du6-MSB2.js";
4
4
  import { n as listChannelPlugins } from "./plugins-C450DgVP.js";
5
5
  import { createRequire } from "node:module";
6
6
  import fs from "node:fs";
@@ -1,5 +1,5 @@
1
- import "./pi-embedded-helpers-BnsMD0to.js";
2
- import { Dt as fetchChannelPermissionsDiscord, Et as parseDiscordTarget, G as formatUsageReportLines, W as loadProviderUsageSummary, zt as createSlackWebClient } from "./reply-CDp9q1Vc.js";
1
+ import "./pi-embedded-helpers-epijF7kQ.js";
2
+ import { Dt as fetchChannelPermissionsDiscord, Et as parseDiscordTarget, G as formatUsageReportLines, W as loadProviderUsageSummary, zt as createSlackWebClient } from "./reply-Dx4BNpWV.js";
3
3
  import { s as defaultRuntime } from "./subsystem-gU4M25gl.js";
4
4
  import "./paths-VdmjGGyc.js";
5
5
  import { p as getResolvedLoggerSettings, t as danger } from "./globals-4hwkGgXA.js";
@@ -10,106 +10,107 @@ import "./utils-BTCspqG1.js";
10
10
  import "./logger-aJ6leLZh.js";
11
11
  import "./exec-C3toirSW.js";
12
12
  import { l as resolveKoiWorkspaceDir, r as resolveDefaultKoiId } from "./koi-scope-Cagum3pM.js";
13
- import { st as loadAuthProfileStore } from "./model-selection-CmKBBKeL.js";
14
- import "./dist-De2BpLLK.js";
15
- import "./dist-cjs-DIUV7iyC.js";
13
+ import { st as loadAuthProfileStore } from "./model-selection-BJ3LRxcJ.js";
14
+ import "./dist-kkQpvYsv.js";
15
+ import "./dist-cjs-B8z3ncj-.js";
16
16
  import { t as formatCliCommand } from "./command-format-CW3d4lnG.js";
17
17
  import "./boolean-B7w0pBkV.js";
18
18
  import "./env-BEtXFLod.js";
19
19
  import "./github-copilot-token-BlwFn4nA.js";
20
20
  import "./billing-alerts-CL95zVcj.js";
21
21
  import "./version-BM8pEsQj.js";
22
- import { c as writeConfigFile, i as loadConfig, o as readConfigFileSnapshot } from "./io-lVJPpZa9.js";
22
+ import { c as writeConfigFile, i as loadConfig, o as readConfigFileSnapshot } from "./io-Du6-MSB2.js";
23
23
  import "./manifest-registry-Ckw3Vy2p.js";
24
- import "./config-DkjBRbqs.js";
24
+ import "./config-Dtw8d1oB.js";
25
25
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-C450DgVP.js";
26
- import "./sessions-BZBtTQCk.js";
27
- import "./image-Xhv1WbJY.js";
28
- import "./models-config-CmUg-3zr.js";
29
- import "./dist-ButgT5Gk.js";
26
+ import "./sessions-Bp3n5YA_.js";
27
+ import "./image-DPbV_lIw.js";
28
+ import "./models-config-DdIU7G3Y.js";
29
+ import "./dist-EVZCJXU2.js";
30
30
  import "./dist-D6Sv3llW.js";
31
31
  import "./lib-Dinb6tv6.js";
32
32
  import "./src-DR4wHj_N.js";
33
33
  import "./core-CeDpMYqo.js";
34
- import "./pi-model-discovery-IRS5Bhx-.js";
35
- import "./sandbox-zPcju-bV.js";
34
+ import "./pi-model-discovery-aBaiPknt.js";
35
+ import "./sandbox-D6wJcx47.js";
36
36
  import "./chrome-B1HAd3Al.js";
37
- import "./skills-w4q7XySt.js";
38
- import "./routes-C_GpVEDZ.js";
39
- import "./server-context-Dej8i418.js";
40
- import "./image-ops-C45aI2Og.js";
37
+ import "./skills-Dz6W5j0d.js";
38
+ import "./routes-Ca8LqLcf.js";
39
+ import "./server-context-CX441p0h.js";
40
+ import "./image-ops-IWejMbO7.js";
41
41
  import "./message-channel-CaFjzGb5.js";
42
42
  import "./logging-q4KyMmY-.js";
43
43
  import "./auth-store-B2FaPoSI.js";
44
44
  import "./accounts-DumyUvSJ.js";
45
45
  import "./paths-6OemP7gm.js";
46
- import "./tool-images-BscwczCb.js";
46
+ import "./tool-images-wgRd-_EF.js";
47
47
  import "./redact-ZAoMZTIY.js";
48
48
  import "./tool-display-Dg79vOSW.js";
49
- import "./deliver-ClVjz43p.js";
50
- import "./ca-director-Cj4rkY2x.js";
51
- import "./dispatcher-D7EzbSw7.js";
49
+ import "./deliver-DIExvjND.js";
50
+ import "./ca-director-CX8CLJlH.js";
51
+ import "./dispatcher-CWMz7Cyv.js";
52
52
  import "./dist-DsdylfIW.js";
53
- import "./platform-billing-D8f18ubj.js";
54
- import "./usage-reporter-Bx9Nr7UM.js";
55
- import "./pi-tool-definition-adapter-D9igP7jU.js";
56
- import "./manager-BVWrev6y.js";
57
- import "./sqlite-C0QbeU3t.js";
53
+ import "./platform-billing-fV9sjjQz.js";
54
+ import "./usage-reporter-DLs6PDXg.js";
55
+ import "./pi-tool-definition-adapter-CiCAVx0w.js";
56
+ import "./manager-C3d_9Tmg.js";
58
57
  import "./warnings-C2KFRM58.js";
59
- import "./common-g3KrUsDG.js";
60
- import "./proxy-from-env-BI6o-lgV.js";
61
- import "./login-qr-DPn0cTK-.js";
62
- import "./message-BGysnvPK.js";
63
- import "./device-identity-pxZl9iT8.js";
64
- import "./client-izHEJfss.js";
65
- import { n as callGateway } from "./call-D9x2Oink.js";
66
- import "./koi-events-D5PuKPcz.js";
67
- import "./pairing-store-BJq_rv5S.js";
68
- import { t as formatDocsLink } from "./links-BqdU0TFi.js";
69
- import { n as runCommandWithRuntime } from "./cli-utils-uAyQZBvv.js";
70
- import { n as withProgress } from "./progress-QVvXnEt-.js";
71
- import "./node-pairing-CYNP1g4x.js";
72
- import "./pi-tools.policy-DDff0t8l.js";
73
- import "./onboard-helpers-o1U-dn2n.js";
74
- import "./prompt-style-DUZn5AjO.js";
75
- import "./pairing-labels-CaaA_Kt-.js";
76
- import "./satisfies-D2Taq9gG.js";
77
- import "./session-cost-usage-Nmd8bPic.js";
78
- import { n as formatAge } from "./channel-summary-CBEmDyZF.js";
79
- import "./control-service-RpKA-_F0.js";
80
- import "./surface-tool-DqCgANSk.js";
81
- import "./restart-sentinel-B3dQ684O.js";
82
- import "./dotenv-sFSCefLS.js";
83
- import "./nylas-U2wHlPwX.js";
84
- import { n as resolveMessageChannelSelection } from "./channel-selection-Dj_CMzvz.js";
85
- import "./zen-surface-DBpHONnk.js";
86
- import "./rich-BaT-R-Bj.js";
87
- import "./proactive-eval-BCMSOwxK.js";
88
- import "./identify-CHP8NQh2.js";
89
- import "./registry-BDi8qkVO.js";
90
- import "./native-window-DumLjKeL.js";
91
- import "./action-ledger-CZm1RLNd.js";
92
- import "./event-log-8Gy24Q8h.js";
93
- import { n as resolveChannelDefaultAccountId } from "./helpers-Bf_7MMN1.js";
94
- import "./note-Dgsh9TJE.js";
95
- import { t as createClackPrompter } from "./clack-prompter-DI8b5Pl-.js";
96
- import { i as reloadOnboardingPluginRegistry, n as setupChannels, r as ensureOnboardingPluginInstalled } from "./onboard-channels-DXgzUduh.js";
97
- import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-D5QYYZDH.js";
98
- import "./archive-v5c_oZ0M.js";
99
- import "./skill-scanner-b9MamBYt.js";
100
- import "./installs-DYxVB0wb.js";
101
- import "./service-Bz3BLFuQ.js";
102
- import "./systemd-5f0_yK5K.js";
103
- import "./diagnostics-Db0yQkCa.js";
104
- import { t as collectChannelStatusIssues } from "./channels-status-issues-BUOqiSuy.js";
105
- import { n as hasExplicitOptions } from "./plugin-registry-Dd3gYaF4.js";
106
- import "./daemon-runtime-Cw8HN1z_.js";
107
- import "./ensure-local-gateway-DL9v_WFE.js";
108
- import "./connect-DFIg7P1v.js";
109
- import { n as runChannelLoginAll, r as runChannelLogout, t as runChannelLogin } from "./channel-auth-73FQh9tw.js";
110
- import { t as formatCliChannelOptions } from "./channel-options-BO7KFBkh.js";
111
- import { t as buildChannelAccountSnapshot } from "./status-D2sLFE9B.js";
112
- import { t as parseLogLine } from "./parse-log-line-wGjegDXe.js";
58
+ import "./sqlite-CcncYUtk.js";
59
+ import "./common-D4jgEdRW.js";
60
+ import "./proxy-from-env-BUzvwibb.js";
61
+ import "./login-qr-BRr7dXxg.js";
62
+ import "./message-BwP571QX.js";
63
+ import "./device-identity-DS1vsPIW.js";
64
+ import "./client-BiLNqlII.js";
65
+ import { n as callGateway } from "./call-BEVX8c7Z.js";
66
+ import "./koi-events-CTUrswrV.js";
67
+ import "./pairing-store-5XKyDoU_.js";
68
+ import { t as formatDocsLink } from "./links-B-3YwG1H.js";
69
+ import { n as runCommandWithRuntime } from "./cli-utils-D2X_bDLt.js";
70
+ import { n as withProgress } from "./progress-CxDBFZz4.js";
71
+ import "./node-pairing-Bj3AI8zP.js";
72
+ import "./pi-tools.policy-J2VkiSCU.js";
73
+ import "./onboard-helpers-D69_1Asy.js";
74
+ import "./prompt-style-N11TfIHe.js";
75
+ import "./pairing-labels-C7dPUUMw.js";
76
+ import "./satisfies-B0N-0Ebw.js";
77
+ import "./session-cost-usage-BHaRWnZF.js";
78
+ import { n as formatAge } from "./channel-summary-DWF4XIW6.js";
79
+ import "./control-service-CGicvFxv.js";
80
+ import "./surface-tool-lPNzOXy0.js";
81
+ import "./ledger-BdUzGXai.js";
82
+ import "./restart-sentinel-CcKTmaz7.js";
83
+ import "./dotenv-DnO0eRof.js";
84
+ import "./nylas-CGpgSprO.js";
85
+ import { n as resolveMessageChannelSelection } from "./channel-selection-JDc1W7hU.js";
86
+ import "./zen-surface-Bs0QlPVj.js";
87
+ import "./rich-t60oVsBn.js";
88
+ import "./proactive-eval-JjYdFbQK.js";
89
+ import "./identify-BoluV5CV.js";
90
+ import "./registry-D-gnHADJ.js";
91
+ import "./native-window-C_txmQ01.js";
92
+ import "./action-ledger-DCDXcaiT.js";
93
+ import "./event-log-Dfu6U72C.js";
94
+ import { n as resolveChannelDefaultAccountId } from "./helpers-Jz6ppAYo.js";
95
+ import "./note-8tBKXM3Y.js";
96
+ import { t as createClackPrompter } from "./clack-prompter-B8vgSXns.js";
97
+ import { i as reloadOnboardingPluginRegistry, n as setupChannels, r as ensureOnboardingPluginInstalled } from "./onboard-channels-BWtszAkD.js";
98
+ import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-DI7yF7Cc.js";
99
+ import "./archive-3kJM-RnF.js";
100
+ import "./skill-scanner-wcRvvBRm.js";
101
+ import "./installs-BMe47UM8.js";
102
+ import "./service-CJCq4R_b.js";
103
+ import "./systemd-cESLgm7E.js";
104
+ import "./diagnostics-VjGrBFy1.js";
105
+ import { t as collectChannelStatusIssues } from "./channels-status-issues-CUjFhxft.js";
106
+ import { n as hasExplicitOptions } from "./plugin-registry-B2zHjscw.js";
107
+ import "./daemon-runtime-BCgA9PFA.js";
108
+ import "./ensure-local-gateway-CEtQeEN3.js";
109
+ import "./connect-BapV23cV.js";
110
+ import { n as runChannelLoginAll, r as runChannelLogout, t as runChannelLogin } from "./channel-auth-DZRHFKcd.js";
111
+ import { t as formatCliChannelOptions } from "./channel-options-vJu7vK4F.js";
112
+ import { t as buildChannelAccountSnapshot } from "./status-q8odUh8K.js";
113
+ import { t as parseLogLine } from "./parse-log-line-BtnrcIoi.js";
113
114
  import fs from "node:fs/promises";
114
115
 
115
116
  //#region src/commands/channels/add-mutators.ts